-
-
Notifications
You must be signed in to change notification settings - Fork 1
feat:Expand OpenAPI: Assistants CRUD/run, MCP discovery, vector-store fetch #224
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
WalkthroughExpanded OpenAPI spec in a single file to add new endpoints (Assistants CRUD/run, MCP tool discovery, vector-store fetch), introduce and refactor public schemas (assistant, tools, MCP, HTTP tool types), augment existing request bodies with vector_store_id and run options, and update enums/configs and references to new language_studio_api_server__data_types__… definitions. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor Client
participant API as Studio API
participant Assist as Assistants Service
participant Exec as Execution Engine
rect rgba(220,240,255,0.4)
note over Client,API: Create Assistant
Client->>API: POST /studio/v1/assistants (CreateAssistantRequest)
API->>Assist: createAssistant(request)
Assist-->>API: Assistant
API-->>Client: 200 Assistant
end
rect rgba(235,255,235,0.4)
note over Client,API: Modify Assistant
Client->>API: PATCH /studio/v1/assistants/{id} (ModifyAssistantRequest)
API->>Assist: modifyAssistant(id, patch)
Assist-->>API: Assistant
API-->>Client: 200 Assistant
end
rect rgba(255,245,220,0.5)
note over Client,Exec: Run Assistant
Client->>API: POST /studio/v1/assistants/{id}/run (RunAssistantRequest)
API->>Exec: runAssistant(id, options, input)
alt Success
Exec-->>API: MaestroRunResult(result)
API-->>Client: 200 MaestroRunResult
else Error
Exec-->>API: MaestroRunResult(error: MaestroRunError)
API-->>Client: 200 MaestroRunResult
end
end
sequenceDiagram
autonumber
actor Client
participant API as Studio API
participant MCP as MCP Discovery
rect rgba(240,240,255,0.5)
note over Client,MCP: MCP Tool Discovery
Client->>API: POST /studio/v1/mcp/discover (MCPDefinition)
API->>MCP: discoverTools(definition)
MCP-->>API: MCPDiscoveryResponse (tools, resources)
API-->>Client: 200 MCPDiscoveryResponse
end
sequenceDiagram
autonumber
actor Client
participant API as Studio API
participant Vec as Vector Store Service
note over Client,Vec: Fetch Vector Store by ID
Client->>API: GET /studio/v1/demos/regulations/vector-store/{vector_store_id}
API->>Vec: getVectorStore(id)
Vec-->>API: VectorStore Object
API-->>Client: 200 Object
opt Validation error
API-->>Client: 422 HTTPValidationError
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45–75 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: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/libs/AI21/openapi.yaml (1)
3496-3508: Typo in schema name: Ignestion → Ingestion.Public schema name has a typo and is referenced below. Fix now to avoid client lock-in.
- IgnestionBatchStatusCount: + IngestionBatchStatusCount: title: IgnestionBatchStatusCount @@ - items: - $ref: '#/components/schemas/IgnestionBatchStatusCount' + items: + $ref: '#/components/schemas/IngestionBatchStatusCount'Also update the
title:to “IngestionBatchStatusCount”.Also applies to: 3525-3529
🧹 Nitpick comments (13)
src/libs/AI21/openapi.yaml (13)
1520-1541: Use 201 for creation + align request schema.
- POST should return 201 Created.
- Ensure CreateAssistantRequest uses the same enums/types as Assistant (see optimization/tool_resources below).
responses: - '200': + '201': description: Successful Response
1619-1647: Consider 202 for async run + streaming compatibility.If runs are asynchronous (MaestroRunResult with in_progress), prefer 202 Accepted. If streaming is supported, document SSE response content type.
responses: - '200': + '202': description: Successful Response
1947-1969: Validate MCP inputs and formats.
- Add
format: uritoMCPDefinition.server_url.- Clarify auth requirements and rate limits in endpoint description.
components: schemas: MCPDefinition: properties: server_url: - title: Server Url - type: string + title: Server Url + type: string + format: uri
2132-2167: Tooling/types consistency and safe defaults.
- Good switch to public ToolDefinition union.
Assistant.tool_resourcespoints to AssistantToolResource while other payloads use ToolResource; confirm intentional divergence.- Defaulting
visibility: publicmay leak assistants; considerprivate.-visibility: - allOf: - - $ref: '#/components/schemas/Visibility' - default: public +visibility: + allOf: + - $ref: '#/components/schemas/Visibility' + default: private
2304-2308: Description mentions RFI in Regulations schema.
Body_upload_check_compliance.vector_store_idsays “for RFI processing” but this endpoint is regulations/compliance.- description: Vector store ID to use for RFI processing + description: Vector store ID to use for compliance checks
2723-2756: Add bounds/validation for new retrieval fields.
- Provide min/max for
max_documents(e.g., minimum 1).retrieval_similarity_thresholdelsewhere uses 0–1; mirror here if applicable.max_documents: title: Max Documents - type: integer + type: integer + minimum: 1
3307-3363: Strengthen FileSearchToolResource validation.
file_idslikely UUIDs.retrieval_similarity_thresholdshould be 0.0–1.0 like other places.retrieval_similarity_threshold: title: Retrieval Similarity Threshold - type: number + type: number + minimum: 0.0 + maximum: 1.0 file_ids: title: File Ids type: array items: - type: string + type: string + format: uuid
3402-3486: HTTP tool schema: add URI formats and header typing.
- Add
format: urito endpoint URLs.- Consider
headersasadditionalProperties: { type: string }.HTTPToolEndpoint: properties: url: title: Url - type: string + type: string + format: uri headers: - title: Headers - type: object + title: Headers + type: object + additionalProperties: + type: string
2943-2957: Response language: consider null vs 'unset'.Using 'unset' as a sentinel is workable; alternatively allow omission or
nullable: trueto reduce enum churn.
3753-3791: Include error code/type for machine handling.
MaestroRunErroronly hasmessage. Considercodeanddetailsfor programmatic branching.MaestroRunError: properties: message: title: Message type: string + code: + title: Code + type: string + details: + title: Details + type: object
4118-4166: RunAssistantRequest input shape differs from Maestro.Here
inputis strictly an array of Message;CreateMaestroRunsPayload.inputallows string or array. Align or document why they differ to avoid UX confusion.- input: - type: array - items: - $ref: '#/components/schemas/Message' + input: + anyOf: + - type: array + items: + $ref: '#/components/schemas/Message' + - type: string
4478-4495: WebSearchToolResource: enforce URL formats and sensible default.
- Mark
urlsitems asformat: uri.- Add default
fallback_to_web: false(explicit).urls: title: Urls type: array items: - type: string + type: string + format: uri fallback_to_web: title: Fallback To Web type: boolean + default: false
4638-4654: Misleading description for Requirement.id.The copy-pasted “A unique ID for the request” is inaccurate for a requirement entity.
id: title: Id type: string - description: "A unique ID for the request (not the message)..." + description: "Unique identifier of the requirement."
📜 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 (3)
src/libs/AI21/openapi.yaml (3)
2888-2901: OK: Tool union reference.Good alignment to execution_engine ToolDefinition and dedicated ToolResource for Maestro.
4685-4698: Discriminator mapping: good structure.The oneOf + discriminator over type looks correct and future‑proof.
2469-2473: Chat tool definition reference: looks correct.The switch to public
chat::ToolDefinitionfor ChatRequest.tools is consistent.
| '/studio/v1/demos/regulations/vector-store/{vector_store_id}': | ||
| get: | ||
| summary: Get Vector Store | ||
| description: Get a vector store by ID. | ||
| operationId: get_vector_store_studio_v1_demos_regulations_vector_store__vector_store_id__get | ||
| parameters: | ||
| - name: vector_store_id | ||
| in: path | ||
| required: true | ||
| schema: | ||
| title: Vector Store Id | ||
| type: string | ||
| responses: | ||
| '200': | ||
| description: Successful Response | ||
| content: | ||
| application/json: | ||
| schema: | ||
| title: Response Get Vector Store Studio V1 Demos Regulations Vector Store Vector Store Id Get | ||
| type: object | ||
| '422': | ||
| description: Validation Error | ||
| content: | ||
| application/json: | ||
| schema: | ||
| $ref: '#/components/schemas/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.
Add 404 + tighten path param format.
- Include a 404 response for unknown vector_store_id.
- If IDs are UUIDs, add
format: uuidto the path param. - Consider a concrete object schema instead of anonymous
{}with a verbose title.
parameters:
- name: vector_store_id
in: path
required: true
schema:
title: Vector Store Id
- type: string
+ type: string
+ format: uuid
responses:
'200':
description: Successful Response
content:
application/json:
schema:
title: Response Get Vector Store Studio V1 Demos Regulations Vector Store Vector Store Id Get
type: object
+ '404':
+ description: Vector store not found
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HTTPValidationError'📝 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.
| '/studio/v1/demos/regulations/vector-store/{vector_store_id}': | |
| get: | |
| summary: Get Vector Store | |
| description: Get a vector store by ID. | |
| operationId: get_vector_store_studio_v1_demos_regulations_vector_store__vector_store_id__get | |
| parameters: | |
| - name: vector_store_id | |
| in: path | |
| required: true | |
| schema: | |
| title: Vector Store Id | |
| type: string | |
| responses: | |
| '200': | |
| description: Successful Response | |
| content: | |
| application/json: | |
| schema: | |
| title: Response Get Vector Store Studio V1 Demos Regulations Vector Store Vector Store Id Get | |
| type: object | |
| '422': | |
| description: Validation Error | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/HTTPValidationError' | |
| '/studio/v1/demos/regulations/vector-store/{vector_store_id}': | |
| get: | |
| summary: Get Vector Store | |
| description: Get a vector store by ID. | |
| operationId: get_vector_store_studio_v1_demos_regulations_vector_store__vector_store_id__get | |
| parameters: | |
| - name: vector_store_id | |
| in: path | |
| required: true | |
| schema: | |
| title: Vector Store Id | |
| type: string | |
| format: uuid | |
| responses: | |
| '200': | |
| description: Successful Response | |
| content: | |
| application/json: | |
| schema: | |
| title: Response Get Vector Store Studio V1 Demos Regulations Vector Store Vector Store Id Get | |
| type: object | |
| '404': | |
| description: Vector store not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/HTTPValidationError' | |
| '422': | |
| description: Validation Error | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/HTTPValidationError' |
🤖 Prompt for AI Agents
In src/libs/AI21/openapi.yaml around lines 1018 to 1043, the GET
/studio/v1/demos/regulations/vector-store/{vector_store_id} operation is missing
a 404 response for unknown IDs, the path parameter lacks a concrete format, and
the successful response uses an anonymous object schema with an overly verbose
title; add a '404' response with a descriptive schema (or reference) for "Not
Found", add format: uuid to the vector_store_id parameter if IDs are UUIDs
(otherwise specify the correct format or a pattern), and replace the anonymous
response schema with a concrete reusable schema reference (e.g.,
components/schemas/VectorStore) or define a clear object schema with properties
so the response is well-typed.
| summary: Modify Assistant | ||
| operationId: v1_modify_assistant | ||
| parameters: | ||
| - name: assistant_id | ||
| in: path | ||
| required: true | ||
| schema: | ||
| title: Assistant Id | ||
| type: string | ||
| requestBody: | ||
| content: | ||
| application/json: | ||
| schema: | ||
| $ref: '#/components/schemas/ModifyAssistantRequest' | ||
| required: true | ||
| responses: | ||
| '200': | ||
| description: Successful Response | ||
| content: | ||
| application/json: | ||
| schema: | ||
| $ref: '#/components/schemas/Assistant' | ||
| '422': | ||
| description: Validation Error | ||
| content: | ||
| application/json: | ||
| schema: | ||
| $ref: '#/components/schemas/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.
🛠️ Refactor suggestion
Mismatch: optimization type and tool_resources type.
ModifyAssistantRequest.optimization uses RunOptimization, but Assistant.optimization and CreateAssistantRequest.optimization are string. Also, CreateAssistantRequest.tool_resources is object while others use AssistantToolResource.
# In Assistant.properties.optimization
-optimization:
- title: Optimization
- type: string
+optimization:
+ $ref: '#/components/schemas/RunOptimization'
# In CreateAssistantRequest.properties.optimization
-optimization:
- title: Optimization
- type: string
+optimization:
+ $ref: '#/components/schemas/RunOptimization'
# In CreateAssistantRequest.properties.tool_resources
-tool_resources:
- title: Tool Resources
- type: object
+tool_resources:
+ $ref: '#/components/schemas/AssistantToolResource'📝 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.
| summary: Modify Assistant | |
| operationId: v1_modify_assistant | |
| parameters: | |
| - name: assistant_id | |
| in: path | |
| required: true | |
| schema: | |
| title: Assistant Id | |
| type: string | |
| requestBody: | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ModifyAssistantRequest' | |
| required: true | |
| responses: | |
| '200': | |
| description: Successful Response | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Assistant' | |
| '422': | |
| description: Validation Error | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/HTTPValidationError' | |
| # components/schemas/Assistant (properties) | |
| optimization: | |
| $ref: '#/components/schemas/RunOptimization' | |
| # components/schemas/CreateAssistantRequest (properties) | |
| optimization: | |
| $ref: '#/components/schemas/RunOptimization' | |
| tool_resources: | |
| $ref: '#/components/schemas/AssistantToolResource' |
🤖 Prompt for AI Agents
In src/libs/AI21/openapi.yaml around lines 1590 to 1617, the schemas are
inconsistent: ModifyAssistantRequest.optimization references RunOptimization
while Assistant.optimization and CreateAssistantRequest.optimization are plain
strings, and CreateAssistantRequest.tool_resources is a generic object while
other definitions use AssistantToolResource; make these types consistent across
the API by either changing ModifyAssistantRequest.optimization to type: string
(to match Assistant and CreateAssistantRequest) or converting Assistant and
CreateAssistantRequest.optimization to $ref:
'#/components/schemas/RunOptimization' (pick one approach project-wide), and
change CreateAssistantRequest.tool_resources to use $ref:
'#/components/schemas/AssistantToolResource' (or update the
AssistantToolResource schema to match the object shape), then update any
references and examples accordingly to keep all three schemas aligned.
| 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.
🛠️ Refactor suggestion
CreateAssistantRequest parity gaps.
- Missing
visibilityandresponse_languagepresent on Assistant/Modify. - See earlier note on
optimizationenum andtool_resourcesref.
properties:
+ visibility:
+ $ref: '#/components/schemas/Visibility'
+ response_language:
+ allOf:
+ - $ref: '#/components/schemas/Assistant.properties.response_language'Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In src/libs/AI21/openapi.yaml around lines 2830 to 2873, the
CreateAssistantRequest schema is missing fields and mismatches noted in the
review: add the visibility (string enum matching Assistant/Modify values) and
response_language (string, default/enum matching Assistant/Modify) properties to
the schema; update optimization to use the same enum definition used elsewhere
(replace plain string with a $ref to the existing Optimization enum or copy the
enum values) and change tool_resources from a generic object to the correct
referenced schema (use the same $ref used elsewhere for tool_resources); ensure
defaults match Assistant/Modify (e.g., assistant_type and budget already have
defaults) and validate the schema compiles with the rest of the spec.
Summary by CodeRabbit
New Features
Improvements