-
-
Notifications
You must be signed in to change notification settings - Fork 1
feat:Update AI21 OpenAPI: Assistant endpoints, MCP API, vector GET, tools #223
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
WalkthroughAdds new Assistant management endpoints and schemas, MCP discovery API and types, a vector-store GET path, extensive tool-definition refactors with discriminator-based ToolDefinition, new enums, Assistant schema fields, Maestro run error surface, and structured RAG/requirements fields, all within src/libs/AI21/openapi.yaml. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor Client
participant API as Studio API
participant Store as Assistant Store
participant Runner as Maestro Runner
rect rgb(237, 245, 253)
note over Client,API: Create Assistant
Client->>API: POST /studio/v1/assistants (CreateAssistantRequest)
API->>Store: Persist assistant (models/tools/resources/requirements)
Store-->>API: Assistant
API-->>Client: 200 Assistant / 422 HTTPValidationError
end
rect rgb(241, 250, 238)
note over Client,API: Modify Assistant
Client->>API: PATCH /studio/v1/assistants/{assistant_id} (ModifyAssistantRequest)
API->>Store: Update fields (name, visibility, budget, tools, ...)
Store-->>API: Assistant
API-->>Client: 200 Assistant / 422 HTTPValidationError
end
rect rgb(253, 243, 237)
note over Client,Runner: Run Assistant
Client->>API: POST /assistants/{assistant_id}/run (RunAssistantRequest)
API->>Runner: Start run (options: structured_rag, planning, language)
alt success
Runner-->>API: MaestroRunResult (output)
API-->>Client: 200 MaestroRunResult
else error
Runner-->>API: MaestroRunResult.error (MaestroRunError)
API-->>Client: 200 MaestroRunResult (error populated)
end
end
sequenceDiagram
autonumber
actor Client
participant API as Studio API
participant MCP as MCP Server
rect rgb(245, 240, 255)
note over Client,API: MCP Discovery
Client->>API: POST /studio/v1/mcp/discover (MCPDefinition)
API->>MCP: Discover tools/resources (server_url, headers)
MCP-->>API: MCPDiscoveryResponse (tools, resources)
API-->>Client: 200 MCPDiscoveryResponse / 422 HTTPValidationError
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60–90 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: 1
🧹 Nitpick comments (12)
src/libs/AI21/openapi.yaml (12)
1018-1043: Define a concrete schema and add a tag for the new Vector Store GET.200 returns an untyped object and the path lacks tags. Please reference a schema and tag the operation.
Apply this diff in-path:
'/studio/v1/demos/regulations/vector-store/{vector_store_id}': get: + tags: + - Regulations summary: Get Vector Store description: Get a vector store by ID. @@ 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 + schema: + $ref: '#/components/schemas/VectorStore'And add this schema under components/schemas (placement anywhere under components):
VectorStore: title: VectorStore type: object required: [id] properties: id: type: string title: Id name: type: string status: type: string created_at: type: string format: date-time
1521-1541: Add tags to Create Assistant for doc consistency.Most endpoints are tagged; add one here.
/studio/v1/assistants: get: @@ - post: + post: + tags: + - Assistants summary: Create Assistant
1590-1617: Add tags to Modify Assistant.'/studio/v1/assistants/{assistant_id}': @@ - patch: + patch: + tags: + - Assistants summary: Modify Assistant
1619-1647: Add tags to Run Assistant.'/studio/v1/assistants/{assistant_id}/run': - post: + post: + tags: + - Assistants summary: Run Assistant
1948-1969: Add tags to MCP discovery./studio/v1/mcp/discover: post: + tags: + - MCP summary: Mcp Tool Discovery
2304-2307: Fix copy: vector_store_id description mentions “RFI” on a Regulations endpoint.- description: Vector store ID to use for RFI processing + description: Vector store ID to use for regulations compliance processing
2282-2286: Normalize budget typing to BudgetLevel.Bodies use free-form string defaults like MEDIUM while BudgetLevel enum exists (low/medium/high). Align for consistency and strong typing.
# Body_process_rfi_document... - budget: - title: Budget - type: string - description: 'Budget level: LOW, MEDIUM, or HIGH' - default: MEDIUM + budget: + allOf: + - $ref: '#/components/schemas/BudgetLevel' + default: medium # Body_upload_check_compliance... - budget: - title: Budget - type: string - default: MEDIUM + budget: + allOf: + - $ref: '#/components/schemas/BudgetLevel' + default: mediumAlso applies to: 2301-2304, 2344-2349
3496-3500: Rename “IgnestionBatchStatusCount” ➜ “IngestionBatchStatusCount”.Public typo. Rename the schema and update its reference.
- IgnestionBatchStatusCount: + IngestionBatchStatusCount: title: IgnestionBatchStatusCount @@ - items: - $ref: '#/components/schemas/IgnestionBatchStatusCount' + items: + $ref: '#/components/schemas/IngestionBatchStatusCount'Also applies to: 3528-3528
2830-2873: CreateAssistantRequest gaps: add visibility/response_language and type tool_resources.
- Missing ability to set visibility and response_language at creation.
- tool_resources should reference the same schema used in Assistant (or ToolResource if you adopt that).
CreateAssistantRequest: @@ - tool_resources: - title: Tool Resources - type: object + tool_resources: + $ref: '#/components/schemas/ToolResource' @@ budget: allOf: - $ref: '#/components/schemas/BudgetLevel' default: medium + visibility: + allOf: + - $ref: '#/components/schemas/Visibility' + default: public + response_language: + title: Response Language + enum: [arabic,dutch,english,french,german,hebrew,italian,portuguese,spanish,unset] + type: string + default: unset
2103-2105: Make “optimization” consistently typed.Assistant and CreateAssistantRequest use string; ModifyAssistantRequest uses RunOptimization enum. Standardize on RunOptimization everywhere.
# Assistant.properties.optimization -optimization: - title: Optimization - type: string +optimization: + $ref: '#/components/schemas/RunOptimization' # CreateAssistantRequest.properties.optimization -optimization: - title: Optimization - type: string +optimization: + $ref: '#/components/schemas/RunOptimization'Also applies to: 3917-3918, 2842-2844
4118-4166: Document allowed values for include[].include defaults to nested keys (e.g., requirements_result.metadata). Expose the allowed set in description to avoid guesswork for clients.
include: title: Include type: array items: type: string + description: Allowed values: data_sources, requirements_result, requirements_result.metadata default: - data_sources - requirements_result - requirements_result.metadata
3307-3363: Add descriptions for new ToolResource fields.A few fields (e.g., labels_filter, urls, fallback_to_web) lack concise descriptions, which hurts SDK docs quality.
Example:
FileSearchToolResource: @@ labels_filter: - $ref: '#/components/schemas/QueryFilter' + $ref: '#/components/schemas/QueryFilter' + description: Structured filter over file labels; supports logical/comparison operators. WebSearchToolResource: @@ urls: title: Urls type: array items: type: string + description: Whitelist of domains/URLs to prefer when searching. fallback_to_web: title: Fallback To Web type: boolean + description: If true, run a general web search when no whitelisted URL matches.Also applies to: 4478-4495
📜 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 (2)
src/libs/AI21/openapi.yaml (2)
3487-3495: Confirm single HTTPValidationError definition.You reintroduced HTTPValidationError here. Ensure no duplicate conflicting definitions exist in downstream bundles.
2472-2472: oneOf+discriminator ToolDefinition — verify SDK codegenConfirmed: components/schemas/language_studio_api_server__data_types__execution_engine__ToolDefinition uses oneOf + discriminator (≈lines 4684–4697); chat's tools array references the chat ToolDefinition at line 2472. Run openapi-generator validate/generate for your target SDKs (e.g., typescript-fetch, java, python) and inspect generated models/serializers — some generators mishandle oneOf+discriminator or external $ref on OAS 3.0.x.
| $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 |
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
Unify tool_resources typing and confirm response_language default.
- Assistant.tool_resources references AssistantToolResource, while Create/Run surfaces use ToolResource. Pick one public shape to avoid client confusion; prefer ToolResource if that’s the intended typed surface.
- response_language defaulting to 'unset' is fine but ensure clients accept the literal 'unset' value vs omission.
Proposed change (Assistant):
tools:
title: Tools
type: array
items:
$ref: '#/components/schemas/language_studio_api_server__data_types__execution_engine__ToolDefinition'
- tool_resources:
- $ref: '#/components/schemas/AssistantToolResource'
+ tool_resources:
+ $ref: '#/components/schemas/ToolResource'To verify SDK impact and spec validity:
🏁 Script executed:
#!/bin/bash
pip -q install openapi-spec-validator pyyaml
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)
print("Spec OK")
# Check operationId uniqueness
seen=set(); dup=[]
for p in spec.get('paths',{}).values():
for m,o in p.items():
if not isinstance(o,dict): continue
oid=o.get('operationId')
if not oid: continue
if oid in seen: dup.append(oid)
seen.add(oid)
print("Duplicate operationIds:", dup if dup else "None")
PYLength of output: 787
Fix duplicate operationId; then unify tool_resources typing and confirm response_language default.
- Spec validation fails: Duplicate operationId 'v1_library_management' for GET /studio/v1/library/files/{file_id}. Resolve the duplicate(s) and re-run openapi-spec-validator before applying schema changes.
- Unify tool_resources typing — prefer ToolResource over AssistantToolResource to avoid client confusion. Change in src/libs/AI21/openapi.yaml (around lines 2132–2166):
tools:
title: Tools
type: array
items:
$ref: '#/components/schemas/language_studio_api_server__data_types__execution_engine__ToolDefinition'
- tool_resources:
- $ref: '#/components/schemas/AssistantToolResource'
+ tool_resources:
+ $ref: '#/components/schemas/ToolResource'- response_language defaulting to 'unset' is acceptable; ensure clients/SDKs accept the literal 'unset' value vs omission.
📝 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.
| $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 | |
| $ref: '#/components/schemas/language_studio_api_server__data_types__execution_engine__ToolDefinition' | |
| tool_resources: | |
| $ref: '#/components/schemas/ToolResource' | |
| 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 |
🤖 Prompt for AI Agents
In src/libs/AI21/openapi.yaml around lines 2132–2166: remove the duplicate
operationId 'v1_library_management' for GET /studio/v1/library/files/{file_id}
by locating the other operation with the same id and renaming one to a unique,
descriptive id (e.g., v1_library_get_file or similar), then re-run
openapi-spec-validator until no duplicates remain; change the tool_resources
schema reference from AssistantToolResource to ToolResource (update the $ref to
point to the canonical ToolResource schema and run schema/type-checks and client
regen); and confirm response_language default 'unset' is intentionally a literal
enum member—if clients/SDKs cannot accept the literal, either remove the default
or make the property nullable/optional and update clients accordingly, then
re-run validation and client generation.
Summary by CodeRabbit