-
-
Notifications
You must be signed in to change notification settings - Fork 1
feat:OpenAPI update: assistant lifecycle, MCP discovery, tool schemas #215
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
WalkthroughSingle OpenAPI spec updated to add assistant lifecycle and MCP discovery endpoints, introduce discriminated tool schemas (HTTP/MCP/File/Web), expand Assistant properties, add enums (AssistantType, BudgetLevel, Visibility, RunOptimization), define new tool/resource models, integrate Maestro run error handling, and add a vector-store demo endpoint with vector_store_id support. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor Client
participant API as Studio API
participant Assist as Assistant Service
participant Tools as Tool Registry (HTTP/MCP/File/Web)
participant Runner as Run Orchestrator
participant Maestro as Maestro Engine
rect rgba(230,245,255,0.6)
note over Client,API: Create Assistant
Client->>API: POST /studio/v1/assistants (CreateAssistantRequest)
API->>Assist: Validate + store assistant (schemas with ToolDefinition discriminator)
Assist-->>API: Assistant (assistant_type, budget, visibility, tools)
API-->>Client: 201 Assistant
end
rect rgba(235,255,235,0.6)
note over Client,API: Modify Assistant
Client->>API: PATCH /studio/v1/assistants/{id} (ModifyAssistantRequest)
API->>Assist: Update fields (requirements, tools, response_language, ...)
Assist-->>API: Updated Assistant
API-->>Client: 200 Assistant
end
rect rgba(255,245,230,0.6)
note over Client,Maestro: Run Assistant
Client->>API: POST /studio/v1/assistants/{id}/run (RunAssistantRequest + RunOptimization)
API->>Runner: Start run
Runner->>Tools: Resolve tool resources (HTTPTool/MCP/File/Web) via discriminator
alt Uses Maestro
Runner->>Maestro: Execute plan
Maestro-->>Runner: Result or MaestroRunError
else Non-Maestro
Runner-->>API: Run result
end
API-->>Client: 200 Run result (may include error field for MaestroRunError)
end
sequenceDiagram
autonumber
actor Client
participant API as Studio API
participant MCP as MCP Discovery
rect rgba(245,240,255,0.6)
note over Client,MCP: MCP Discovery
Client->>API: POST /studio/v1/mcp/discover
API->>MCP: Discover (MCPDefinition)
MCP-->>API: MCPDiscoveryResponse (MCPTool, MCPToolResource)
API-->>Client: 200 MCPDiscoveryResponse
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Poem
Pre-merge checks and finishing touches❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
✨ Finishing touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
🧹 Nitpick comments (2)
src/libs/AI21/openapi.yaml (2)
1018-1043: Define a proper response schema and fix the verbose title.The 200 response returns an untyped object with a noisy title. Prefer a dedicated schema (e.g., VectorStore) for codegen stability and readability.
Apply this diff and add the schema below:
- application/json: - schema: - title: Response Get Vector Store Studio V1 Demos Regulations Vector Store Vector Store Id Get - type: object + application/json: + schema: + $ref: '#/components/schemas/VectorStore'Add this schema (outside the hunk):
VectorStore: title: VectorStore type: object properties: id: type: string name: type: string stats: type: object
2305-2308: Correct vector_store_id description (wrong feature area).This is under regulations/compliance but mentions RFI.
- description: Vector store ID to use for RFI processing + description: Vector store ID to use for regulations compliance processing
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (136)
src/libs/AI21/Generated/AI21..JsonSerializerContext.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Ai21Api.GetVectorStoreStudioV1DemosRegulationsVectorStoreVectorStoreIdGet.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Ai21Api.McpToolDiscoveryStudioV1McpDiscoverPost.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Ai21Api.UploadCheckComplianceStudioV1DemosRegulationsUploadCheckCompliancePost.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Ai21Api.V1ConversationalRag.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Ai21Api.V1CreateAssistant.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Ai21Api.V1MaestroRun.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Ai21Api.V1ModifyAssistant.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Ai21Api.V1RunAssistant.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.IAi21Api.GetVectorStoreStudioV1DemosRegulationsVectorStoreVectorStoreIdGet.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.IAi21Api.McpToolDiscoveryStudioV1McpDiscoverPost.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.IAi21Api.UploadCheckComplianceStudioV1DemosRegulationsUploadCheckCompliancePost.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.IAi21Api.V1ConversationalRag.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.IAi21Api.V1CreateAssistant.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.IAi21Api.V1MaestroRun.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.IAi21Api.V1ModifyAssistant.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.IAi21Api.V1RunAssistant.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.IJambaCompleteClient.V1ChatComplete.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JambaCompleteClient.V1ChatComplete.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.AssistantResponseLanguage.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.AssistantResponseLanguageNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.AssistantType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.AssistantTypeNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.BudgetLevel.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.BudgetLevelNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.FileSearchToolResourceLabelsFilterMode.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.FileSearchToolResourceLabelsFilterModeNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.FileSearchToolResourceResponseLanguage.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.FileSearchToolResourceResponseLanguageNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.FileSearchToolResourceType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.FileSearchToolResourceTypeNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.HTTPToolFunctionParametersType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.HTTPToolFunctionParametersTypeNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.HTTPToolResourceType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.HTTPToolResourceTypeNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.LanguageStudioApiServerDataTypesChatToolDefinitionType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.LanguageStudioApiServerDataTypesChatToolDefinitionTypeNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.LanguageStudioApiServerDataTypesExecutionEngineToolDefinition.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.LanguageStudioApiServerDataTypesExecutionEngineToolDefinitionDiscriminatorType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.LanguageStudioApiServerDataTypesExecutionEngineToolDefinitionDiscriminatorTypeNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.MCPToolResourceType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.MCPToolResourceTypeNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.ModifyAssistantRequestResponseLanguage.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.ModifyAssistantRequestResponseLanguageNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.RunAssistantRequestResponseLanguage.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.RunAssistantRequestResponseLanguageNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.RunOptimization.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.RunOptimizationNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.Visibility.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.VisibilityNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.WebSearchToolResourceType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.WebSearchToolResourceTypeNullable.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonSerializerContextTypes.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.Assistant.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.AssistantResponseLanguage.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.AssistantType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.BodyUploadCheckComplianceStudioV1DemosRegulationsUploadCheckCompliancePost.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.BudgetLevel.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ChatRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ConversationalRagConfig.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ConversationalRagConfigResponseLanguage.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ConversationalRagConfigRetrievalStrategy.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreateAssistantRequest.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreateAssistantRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreateAssistantRequestToolResources.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreateAssistantRequestToolResources.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreateMaestroRunsPayload.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreateMaestroRunsPayloadResponseLanguage.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.FileSearchToolResource.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.FileSearchToolResource.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.FileSearchToolResourceLabelsFilterMode.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.FileSearchToolResourceResponseLanguage.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.FileSearchToolResourceType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.GetVectorStoreStudioV1DemosRegulationsVectorStoreVectorStoreIdGetResponse.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.GetVectorStoreStudioV1DemosRegulationsVectorStoreVectorStoreIdGetResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolEndpoint.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolEndpoint.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolEndpointHeaders.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolEndpointHeaders.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolFunction.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolFunction.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParamProperties.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParamProperties.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParameters.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParameters.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParametersProperties.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParametersProperties.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParametersType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolResource.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolResource.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolResourceType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesAssistantRequirement.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesAssistantRequirement.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesChatToolDefinition.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesChatToolDefinition.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesChatToolDefinitionType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesExecutionEngineRequirement.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesExecutionEngineRequirement.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesExecutionEngineToolDefinition.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesExecutionEngineToolDefinition.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesExecutionEngineToolDefinitionDiscriminator.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesExecutionEngineToolDefinitionDiscriminator.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesExecutionEngineToolDefinitionDiscriminatorType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPDefinition.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPDefinition.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPDefinitionHeaders.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPDefinitionHeaders.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPDiscoveryResponse.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPDiscoveryResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPTool.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPTool.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPToolInputSchema.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPToolInputSchema.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPToolResource.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPToolResource.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPToolResourceHeaders.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPToolResourceHeaders.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPToolResourceType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MaestroRunError.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MaestroRunError.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MaestroRunResult.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ModifyAssistantRequest.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ModifyAssistantRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ModifyAssistantRequestResponseLanguage.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.RunAssistantRequest.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.RunAssistantRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.RunAssistantRequestOutputType.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.RunAssistantRequestOutputType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.RunAssistantRequestResponseLanguage.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.RunOptimization.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ToolResource.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ToolResource.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.Visibility.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.WebSearchToolResource.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.WebSearchToolResource.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.WebSearchToolResourceType.g.csis excluded by!**/generated/**
📒 Files selected for processing (1)
src/libs/AI21/openapi.yaml(23 hunks)
🔇 Additional comments (6)
src/libs/AI21/openapi.yaml (6)
2472-2473: Good: Chat tools now use a typed ToolDefinition.Switching to language_studio_api_server__data_types__chat__ToolDefinition improves validation and codegen.
3307-3362: FileSearchToolResource looks coherent.Enum/type/discriminator align with ToolDefinition oneOf. Defaults are sensible.
3674-3745: MCP types look consistent.Minimal requireds, clear resource shape, and discriminator compatibility.
3907-3960: ModifyAssistantRequest consistency is good.Uses RunOptimization, AssistantToolResource, and enum fields; matches Assistant shape.
4118-4166: RunAssistantRequest is clear and narrowly scoped.Defaults/read-only choices align with MaestroRunResult; include list looks intentional.
4685-4698: Discriminated union for ToolDefinition is correct.type-based mapping matches sub-schemas; should work well with generators.
| title: CreateAssistantRequest | ||
| required: | ||
| - name | ||
| type: object | ||
| properties: | ||
| name: | ||
| title: Name | ||
| type: string | ||
| description: | ||
| title: Description | ||
| type: string | ||
| optimization: | ||
| title: Optimization | ||
| type: string | ||
| avatar: | ||
| title: Avatar | ||
| type: string | ||
| models: | ||
| title: Models | ||
| type: array | ||
| items: | ||
| type: string | ||
| tools: | ||
| title: Tools | ||
| type: array | ||
| items: | ||
| $ref: '#/components/schemas/language_studio_api_server__data_types__execution_engine__ToolDefinition' | ||
| tool_resources: | ||
| title: Tool Resources | ||
| type: object | ||
| requirements: | ||
| title: Requirements | ||
| type: array | ||
| items: | ||
| $ref: '#/components/schemas/language_studio_api_server__data_types__assistant__Requirement' | ||
| budget: | ||
| allOf: | ||
| - $ref: '#/components/schemas/BudgetLevel' | ||
| default: medium | ||
| assistant_type: | ||
| allOf: | ||
| - $ref: '#/components/schemas/AssistantType' | ||
| default: default | ||
| CreateMaestroRunsPayload: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Align CreateAssistantRequest with ModifyAssistantRequest/Assistant (types and fields).
Inconsistencies: optimization should use RunOptimization; tool_resources should match AssistantToolResource; visibility/response_language are missing but exist on Assistant.
Apply:
title: CreateAssistantRequest
@@
properties:
@@
- optimization:
- title: Optimization
- type: string
+ optimization:
+ $ref: '#/components/schemas/RunOptimization'
@@
- tool_resources:
- title: Tool Resources
- type: object
+ tool_resources:
+ $ref: '#/components/schemas/AssistantToolResource'
@@
budget:
allOf:
- $ref: '#/components/schemas/BudgetLevel'
default: medium
+ visibility:
+ allOf:
+ - $ref: '#/components/schemas/Visibility'
+ default: public
assistant_type:
allOf:
- $ref: '#/components/schemas/AssistantType'
default: default
+ response_language:
+ title: Response Language
+ enum: [arabic, dutch, english, french, german, hebrew, italian, portuguese, spanish, unset]
+ type: string
+ default: unset📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| title: CreateAssistantRequest | |
| required: | |
| - name | |
| type: object | |
| properties: | |
| name: | |
| title: Name | |
| type: string | |
| description: | |
| title: Description | |
| type: string | |
| optimization: | |
| title: Optimization | |
| type: string | |
| avatar: | |
| title: Avatar | |
| type: string | |
| models: | |
| title: Models | |
| type: array | |
| items: | |
| type: string | |
| tools: | |
| title: Tools | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/language_studio_api_server__data_types__execution_engine__ToolDefinition' | |
| tool_resources: | |
| title: Tool Resources | |
| type: object | |
| requirements: | |
| title: Requirements | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/language_studio_api_server__data_types__assistant__Requirement' | |
| budget: | |
| allOf: | |
| - $ref: '#/components/schemas/BudgetLevel' | |
| default: medium | |
| assistant_type: | |
| allOf: | |
| - $ref: '#/components/schemas/AssistantType' | |
| default: default | |
| CreateMaestroRunsPayload: | |
| title: CreateAssistantRequest | |
| required: | |
| - name | |
| type: object | |
| properties: | |
| name: | |
| title: Name | |
| type: string | |
| description: | |
| title: Description | |
| type: string | |
| optimization: | |
| $ref: '#/components/schemas/RunOptimization' | |
| avatar: | |
| title: Avatar | |
| type: string | |
| models: | |
| title: Models | |
| type: array | |
| items: | |
| type: string | |
| tools: | |
| title: Tools | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/language_studio_api_server__data_types__execution_engine__ToolDefinition' | |
| tool_resources: | |
| $ref: '#/components/schemas/AssistantToolResource' | |
| requirements: | |
| title: Requirements | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/language_studio_api_server__data_types__assistant__Requirement' | |
| budget: | |
| allOf: | |
| - $ref: '#/components/schemas/BudgetLevel' | |
| default: medium | |
| visibility: | |
| allOf: | |
| - $ref: '#/components/schemas/Visibility' | |
| default: public | |
| assistant_type: | |
| allOf: | |
| - $ref: '#/components/schemas/AssistantType' | |
| default: default | |
| response_language: | |
| title: Response Language | |
| enum: [arabic, dutch, english, french, german, hebrew, italian, portuguese, spanish, unset] | |
| type: string | |
| default: unset | |
| CreateMaestroRunsPayload: |
🤖 Prompt for AI Agents
In src/libs/AI21/openapi.yaml around lines 2830 to 2873, the
CreateAssistantRequest schema is inconsistent with
ModifyAssistantRequest/Assistant: change the optimization property to reference
the RunOptimization schema instead of plain string, update tool_resources to use
the AssistantToolResource schema (matching Assistant), and add the missing
visibility and response_language properties (with the same types/defaults as in
Assistant/ModifyAssistantRequest). Ensure models/tools/requirements remain
aligned to the corresponding schema refs and that any defaults (e.g.,
assistant_type, budget) match the Assistant definitions.
| title: HTTPToolEndpoint | ||
| required: | ||
| - url | ||
| type: object | ||
| properties: | ||
| detail: | ||
| title: Detail | ||
| type: array | ||
| items: | ||
| $ref: '#/components/schemas/ValidationError' | ||
| IgnestionBatchStatusCount: | ||
| title: IgnestionBatchStatusCount | ||
| url: | ||
| title: Url | ||
| type: string | ||
| headers: | ||
| title: Headers | ||
| type: object | ||
| HTTPToolFunction: | ||
| title: HTTPToolFunction | ||
| required: | ||
| - status | ||
| - count | ||
| - name | ||
| - description | ||
| - parameters | ||
| type: object | ||
| properties: | ||
| name: | ||
| title: Name | ||
| type: string | ||
| description: | ||
| title: Description | ||
| type: string | ||
| parameters: | ||
| $ref: '#/components/schemas/HTTPToolFunctionParameters' | ||
| HTTPToolFunctionParamProperties: | ||
| title: HTTPToolFunctionParamProperties | ||
| required: | ||
| - type | ||
| - description | ||
| type: object | ||
| properties: | ||
| type: | ||
| title: Type | ||
| type: string | ||
| description: | ||
| title: Description | ||
| type: string | ||
| HTTPToolFunctionParameters: | ||
| title: HTTPToolFunctionParameters | ||
| required: | ||
| - properties | ||
| - required | ||
| type: object | ||
| properties: | ||
| type: | ||
| title: Type | ||
| enum: | ||
| - object | ||
| type: string | ||
| default: object | ||
| properties: | ||
| title: Properties | ||
| type: object | ||
| additionalProperties: | ||
| $ref: '#/components/schemas/HTTPToolFunctionParamProperties' | ||
| required: | ||
| title: Required | ||
| type: array | ||
| items: | ||
| type: string | ||
| additionalProperties: | ||
| title: Additionalproperties | ||
| type: boolean | ||
| default: false | ||
| HTTPToolResource: | ||
| title: HTTPToolResource | ||
| required: | ||
| - function | ||
| - endpoint | ||
| type: object | ||
| properties: | ||
| type: | ||
| title: Type | ||
| enum: | ||
| - http | ||
| type: string | ||
| default: http | ||
| function: | ||
| $ref: '#/components/schemas/HTTPToolFunction' | ||
| endpoint: | ||
| $ref: '#/components/schemas/HTTPToolEndpoint' | ||
| HTTPValidationError: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❓ Verification inconclusive
HTTP tool family is well-structured.
Endpoint/function separation and parameter typing are clear. After fixing additionalProperties, this is solid.
Run an OpenAPI validator:
🏁 Script executed:
#!/bin/bash
pip -q install openapi-spec-validator prance >/dev/null 2>&1
python - <<'PY'
from openapi_spec_validator import validate_spec
import yaml, sys
with open('src/libs/AI21/openapi.yaml') as f:
spec=yaml.safe_load(f)
validate_spec(spec) # raises on error
print("openapi-spec-validator: OK")
PY
prance validate --no-cache src/libs/AI21/openapi.yamlLength of output: 606
OpenAPI validation failed — duplicate operationId in spec
HTTP tool family is well-structured; validator raised a blocking error.
- DuplicateOperationIDError: Operation ID 'v1_library_management' for GET /studio/v1/library/files/{file_id} is duplicated — make operationId values unique (search/rename the other occurrence) in src/libs/AI21/openapi.yaml.
- prance not found in the sandbox (prance: command not found). After fixing, re-run openapi-spec-validator and prance locally or add prance to dev deps.
🤖 Prompt for AI Agents
In src/libs/AI21/openapi.yaml around lines 3402 to 3486 there is a duplicate
operationId: 'v1_library_management' used for GET
/studio/v1/library/files/{file_id}; locate the other occurrence of this
operationId in the spec and rename one of them to a unique, descriptive
operationId (e.g., append _getFile or similar) and ensure any references or
client generation expectations are updated accordingly; then validate the
OpenAPI spec again (run openapi-spec-validator) and install/run prance locally
or add prance to devDependencies (e.g., add to package.json devDeps) so the spec
can be parsed in CI.
| title: HTTPToolFunctionParameters | ||
| required: | ||
| - properties | ||
| - required | ||
| type: object | ||
| properties: | ||
| type: | ||
| title: Type | ||
| enum: | ||
| - object | ||
| type: string | ||
| default: object | ||
| properties: | ||
| title: Properties | ||
| type: object | ||
| additionalProperties: | ||
| $ref: '#/components/schemas/HTTPToolFunctionParamProperties' | ||
| required: | ||
| title: Required | ||
| type: array | ||
| items: | ||
| type: string | ||
| additionalProperties: | ||
| title: Additionalproperties | ||
| type: boolean | ||
| default: false | ||
| HTTPToolResource: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix misuse of additionalProperties (currently a data property, not a schema rule).
You likely intended to disallow extraneous keys. In OpenAPI, additionalProperties is a schema-level field.
HTTPToolFunctionParameters:
title: HTTPToolFunctionParameters
required:
- properties
- required
type: object
+ additionalProperties: false
properties:
@@
- additionalProperties:
- title: Additionalproperties
- type: boolean
- default: false🤖 Prompt for AI Agents
In src/libs/AI21/openapi.yaml around lines 3443 to 3469, the schema
HTTPToolFunctionParameters incorrectly defines a data property named
"additionalProperties" under properties instead of using the OpenAPI
schema-level additionalProperties keyword to control extraneous keys; remove the
"additionalProperties" entry from the properties list (or rename it if it is
intended as actual data) and set additionalProperties: false (or appropriate
schema) at the same level as title/type/properties/required so the schema
prevents unknown properties.
| title: IgnestionBatchStatusCount | ||
| required: | ||
| - status | ||
| - count | ||
| type: object |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
🧩 Analysis chain
Typo in schema name: Ignestion → Ingestion (and update references).
Spelling error propagates to $ref and codegen names.
- IgnestionBatchStatusCount:
+ IngestionBatchStatusCount:
title: IgnestionBatchStatusCount
@@
- items:
- $ref: '#/components/schemas/IgnestionBatchStatusCount'
+ items:
+ $ref: '#/components/schemas/IngestionBatchStatusCount'Verify no remaining references:
Also applies to: 3525-3529
🏁 Script executed:
#!/bin/bash
rg -nP 'IgnestionBatchStatusCount|IngestionBatchStatusCount' -C2 src/libs/AI21/openapi.yamlLength of output: 422
Rename schema: IgnestionBatchStatusCount → IngestionBatchStatusCount
Typo confirmed — rename the schema key and update all $ref usages; also update the schema's title to match (affects generated types).
Locations: src/libs/AI21/openapi.yaml — lines 3495–3496 (definition) and 3528 ($ref).
- IgnestionBatchStatusCount:
+ IngestionBatchStatusCount:
title: IgnestionBatchStatusCount
@@
- items:
- $ref: '#/components/schemas/IgnestionBatchStatusCount'
+ items:
+ $ref: '#/components/schemas/IngestionBatchStatusCount'Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In src/libs/AI21/openapi.yaml around lines 3496-3500 (definition) and 3528
($ref), rename the schema key "IgnestionBatchStatusCount" to
"IngestionBatchStatusCount", update the schema's title to
"IngestionBatchStatusCount", and update all $ref usages (notably the ref at line
3528) to reference the new name; then regenerate or update any generated
types/usages in the codebase so they match the new schema name.
Summary by CodeRabbit