-
-
Notifications
You must be signed in to change notification settings - Fork 1
feat:Expand Studio API: new endpoints, tool/MCP schemas, Assistant updates #169
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 Studio API in Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor Client
participant API as Studio API
participant Store as Data Store
rect rgba(230,245,255,0.6)
note over Client,API: Create Assistant
Client->>API: POST /studio/v1/assistants (CreateAssistantRequest)
API->>Store: Persist Assistant {requirements, budget, visibility}
Store-->>API: Assistant
API-->>Client: 201 Assistant
end
rect rgba(240,255,240,0.6)
note over Client,API: Modify Assistant
Client->>API: PATCH /studio/v1/assistants/{assistant_id} (ModifyAssistantRequest)
API->>Store: Update Assistant fields
Store-->>API: Updated Assistant
API-->>Client: 200 Assistant
end
sequenceDiagram
autonumber
actor Client
participant API as Studio API
participant MCP as MCP Adapter
rect rgba(255,245,230,0.6)
note over Client,API: MCP Tool Discovery
Client->>API: POST /studio/v1/mcp/discover (MCPDefinition)
API->>MCP: Discover tools/endpoints
MCP-->>API: MCPDiscoveryResponse (MCPTool list)
API-->>Client: 200 MCPDiscoveryResponse
end
sequenceDiagram
autonumber
actor Client
participant API as Studio API
participant Vec as Vector Store
rect rgba(245,240,255,0.6)
note over Client,API: Retrieve Vector Store (Demos/Regulations)
Client->>API: GET /studio/v1/demos/regulations/vector-store/{id}
API->>Vec: Fetch by ID
Vec-->>API: Vector Store
API-->>Client: 200 Vector Store
end
sequenceDiagram
autonumber
participant Runner as Maestro Runner
participant API as Studio API
rect rgba(255,250,230,0.6)
note over Runner,API: Tool Selection via Discriminator
Runner->>API: Submit MaestroRunsPayload.tools
alt HTTPToolResource
API-->>Runner: Validate HTTPToolFunction/Endpoint
else MCPToolResource
API-->>Runner: Validate MCPTool
else FileSearchToolResource
API-->>Runner: Validate File search config
else WebSearchToolResource
API-->>Runner: Validate Web search config
end
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: 2
🧹 Nitpick comments (10)
src/libs/AI21/openapi.yaml (10)
1018-1043: Add 404 and clean response title for Vector Store GET.
- Missing 404 for unknown vector_store_id.
- Response title has duplicated spaces; minor polish.
Apply:
responses: '200': description: Successful Response content: application/json: schema: - title: Response Get Vector Store Studio V1 Demos Regulations Vector Store Vector Store Id Get + title: Get Vector Store Response type: object + '404': + description: Vector store not found + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError'
1520-1541: Prefer 201 Created for Create Assistant.Creation endpoint should return 201; consider Location header.
- responses: - '200': + responses: + '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/Assistant' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError'
1589-1617: PATCH surface looks fine; add 404/409.
- Add 404 for unknown assistant_id.
- Optional: 409 for version/ETag conflicts (if applicable).
responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/Assistant' + '404': + description: Assistant not found + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + '409': + description: Conflict
1917-1939: MCP discover: tighten response/error handling.Add 400 for invalid MCPDefinition; optional 502/504 depending on upstream behavior.
responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MCPDiscoveryResponse' + '400': + description: Invalid MCP definition + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError'
2258-2261: Fix mismatched description for vector_store_id.This is under “regulations upload-check-compliance”, but says “RFI processing”.
- description: Vector store ID to use for RFI processing + description: Vector store ID to use for regulations compliance checks
2677-2680: ConversationalRagConfig: add bounds/defaults.
- max_documents lacks min/max; set sensible constraints.
- retrieval_similarity_threshold elsewhere is [0.0,1.0]; mirror here if reused.
retrieval_strategy: allOf: - $ref: '#/components/schemas/RetrievalStrategy' default: segments + max_documents: + title: Max Documents + type: integer + minimum: 1 + maximum: 1000 retrieval_similarity_threshold: title: Retrieval Similarity Threshold type: number - default: 0 + minimum: 0.0 + maximum: 1.0 + default: 0.0 response_language: title: Response Language enum: - arabic - dutch - english - french - german - hebrew - italian - portuguese - spanish - unset type: string default: unsetAlso applies to: 2681-2683, 2707-2710
2850-2862: Discriminator robustness: requiretypein each tool resource.For reliable oneOf discrimination, make
typerequired in HTTPToolResource, MCPToolResource, FileSearchToolResource, WebSearchToolResource.HTTPToolResource: title: HTTPToolResource - required: - - function - - endpoint + required: + - type + - function + - endpoint ... MCPToolResource: title: MCPToolResource - required: - - server_label - - server_url + required: + - type + - server_label + - server_url ... FileSearchToolResource: title: FileSearchToolResource - type: object + type: object + required: + - type ... WebSearchToolResource: title: WebSearchToolResource - type: object + type: object + required: + - typeAlso applies to: 3435-3449, 3682-3694, 3269-3279, 4382-4391
3269-3325: FileSearchToolResource: add bounds and formats.
- retrieval_similarity_threshold should be [0.0,1.0].
- file_ids likely UUIDs.
- max_neighbors minimum 1.
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 ... max_neighbors: title: Max Neighbors type: integer + minimum: 1
3370-3373: Add URI formats and header value typing.
- Mark URL fields with format: uri.
- Constrain headers objects to string values.
HTTPToolEndpoint: properties: url: title: Url - type: string + type: string + format: uri headers: title: Headers - type: object + type: object + additionalProperties: + type: string ... MCPDefinition: properties: server_url: title: Server Url - type: string + type: string + format: uri headers: title: Headers - type: object + type: object + additionalProperties: + type: string ... MCPToolResource: properties: server_url: title: Server Url - type: string + type: string + format: uri headers: title: Headers - type: object + type: object + additionalProperties: + type: string ... WebSearchToolResource: properties: urls: title: Urls type: array items: - type: string + type: string + format: uriAlso applies to: 3374-3376, 3642-3645, 3648-3650, 3698-3700, 3701-3703, 4392-4396
3859-3899: ModifyAssistantRequest: fix tools typing to enum array.Mirrors the CreateAssistantRequest fix.
tools: title: Tools type: array items: - type: object - additionalProperties: - $ref: '#/components/schemas/AssistantTool' + $ref: '#/components/schemas/AssistantTool'
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (111)
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.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.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.CreateMaestroRunsPayloadToolDiscriminatorType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.CreateMaestroRunsPayloadToolDiscriminatorTypeNullable.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.MCPToolResourceType.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.MCPToolResourceTypeNullable.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.ToolsItem.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.BodyUploadCheckComplianceStudioV1DemosRegulationsUploadCheckCompliancePost.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.BudgetLevel.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.CreateAssistantRequestTool.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreateAssistantRequestTool.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.CreateMaestroRunsPayloadToolDiscriminator.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreateMaestroRunsPayloadToolDiscriminator.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreateMaestroRunsPayloadToolDiscriminatorType.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.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.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.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.ModifyAssistantRequestTool.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ModifyAssistantRequestTool.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.ToolsItem.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ToolsItem.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(20 hunks)
🔇 Additional comments (9)
src/libs/AI21/openapi.yaml (9)
2107-2119: LGTM: Assistant fields (requirements, budget, visibility).Defaults and refs are consistent with enums.
2297-2303: LGTM: BudgetLevel enum.Names and casing match defaults used elsewhere.
2863-2864: LGTM: MaestroRun tool_resources now typed via ToolResource.This aligns with the new specialized resources.
2917-2920: LGTM: response_language adds 'unset' with default.Consistent with FileSearchToolResource.
3637-3707: LGTM: MCP types.Shapes are reasonable and minimal.
4252-4259: LGTM: ToolResource wrapper.Clear split between file_search and web_search.
4376-4381: LGTM: Visibility enum.Matches Assistant defaults.
4382-4399: WebSearchToolResource: consider defaults.
- Add default false to fallback_to_web.
- Optional: require urls or document behavior when empty.
[raise_nitpick_refactor]
fallback_to_web: title: Fallback To Web type: boolean + default: false
4542-4558: LGTM: Requirement types.Assistant vs execution_engine variants are clearly separated.
Also applies to: 4559-4574
| CreateAssistantRequest: | ||
| 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: | ||
| type: object | ||
| additionalProperties: | ||
| $ref: '#/components/schemas/AssistantTool' | ||
| 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 |
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.
CreateAssistantRequest: fix tools, tool_resources, and optimization typing; consider visibility.
- tools should be array of enum strings, not array of arbitrary objects.
- tool_resources should mirror AssistantToolResource.
- optimization should reuse RunOptimization enum.
- Expose visibility at creation for parity with Modify/Assistant.
CreateAssistantRequest:
title: CreateAssistantRequest
required:
- name
type: object
properties:
name:
title: Name
type: string
description:
title: Description
type: string
- optimization:
- title: Optimization
- 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:
- type: object
- additionalProperties:
- $ref: '#/components/schemas/AssistantTool'
+ type: array
+ items:
+ $ref: '#/components/schemas/AssistantTool'
tool_resources:
- title: Tool Resources
- type: object
+ $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📝 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.
| CreateAssistantRequest: | |
| 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: | |
| type: object | |
| additionalProperties: | |
| $ref: '#/components/schemas/AssistantTool' | |
| 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 | |
| CreateAssistantRequest: | |
| 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/AssistantTool' | |
| 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 |
🤖 Prompt for AI Agents
In src/libs/AI21/openapi.yaml around lines 2783 to 2824, update
CreateAssistantRequest: change tools from an array of arbitrary objects to an
array of enum strings (use the existing AssistantTool enum/schema reference),
change tool_resources to reference the AssistantToolResource schema (mirror its
structure via $ref), change optimization to reuse the RunOptimization
enum/schema via $ref, and add a visibility property matching the same
type/schema used by Modify/Assistant (expose visibility at creation for parity).
| title: HTTPToolEndpoint | ||
| required: | ||
| - url | ||
| type: object | ||
| properties: | ||
| url: | ||
| title: Url | ||
| type: string | ||
| headers: | ||
| title: Headers | ||
| type: object | ||
| HTTPToolFunction: |
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.
HTTPToolFunctionParameters: incorrect placement of additionalProperties.
You defined additionalProperties as a data field. It should be a schema constraint at the object level.
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
+ additionalProperties: falseAlso applies to: 3393-3449
🤖 Prompt for AI Agents
In src/libs/AI21/openapi.yaml around lines 3365-3376 (and similarly lines
3393-3449), the YAML places additionalProperties as if it were a property inside
the properties block (a data field) for HTTPToolFunctionParameters; instead,
move additionalProperties out of the properties map and make it a schema-level
constraint alongside type and properties (e.g., under the object schema add
additionalProperties: true or additionalProperties: { type: string } or
additionalProperties: false as appropriate). Remove the incorrect nested
additionalProperties entries and add the correct additionalProperties key at the
same indentation level as type/properties for those object schemas so they
correctly control whether extra keys are allowed and what their schema is.
Summary by CodeRabbit
New Features
Refactor