Skip to content

Conversation

@HavenDV
Copy link
Contributor

@HavenDV HavenDV commented Sep 22, 2025

Summary by CodeRabbit

  • New Features
    • Public Assistant management: create, update, and run assistants with new properties (visibility, budget levels, type, response language).
    • Expanded tools: file search, web search, HTTP/MCP tools, plus MCP service discovery.
    • Enhanced runs: structured RAG and dynamic planning options.
    • New endpoint to retrieve a vector store by ID.
  • Error Handling
    • Clearer assistant run error reporting.
  • Compatibility
    • Standardized schemas/enums and consolidated tool resource definitions for greater consistency across the API.

@coderabbitai
Copy link

coderabbitai bot commented Sep 22, 2025

Walkthrough

Adds 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

Cohort / File(s) Summary of Changes
Assistant management API
src/libs/AI21/openapi.yaml
Added POST /studio/v1/assistants (CreateAssistantRequest), PATCH /studio/v1/assistants/{assistant_id} (ModifyAssistantRequest), POST /studio/v1/assistants/{assistant_id}/run (RunAssistantRequest); introduced AssistantType, Visibility, BudgetLevel, RunOptimization; extended Assistant schema (requirements, budget, visibility, assistant_type, response_language).
MCP discovery and types
src/libs/AI21/openapi.yaml
Added POST /studio/v1/mcp/discover; introduced MCPDefinition, MCPDiscoveryResponse, MCPTool, MCPToolResource; added headers/server_url/server_label fields where applicable.
Vector store retrieval
src/libs/AI21/openapi.yaml
Added GET /studio/v1/demos/regulations/vector-store/{vector_store_id} with 200/422 responses and parameter/schema definitions; optional vector_store_id included in related upload body.
ToolDefinition refactor
src/libs/AI21/openapi.yaml
Replaced ToolDefinition references with language_studio_api_server__data_types__execution_engine__ToolDefinition (oneOf with discriminator: HTTPToolResource, MCPToolResource, FileSearchToolResource, WebSearchToolResource). Updated ToolResource (renamed from ToolResources). Added HTTPToolEndpoint/HTTPToolFunction/HTTPToolFunctionParameters.
RAG and requirements
src/libs/AI21/openapi.yaml
Added structured RAG fields (e.g., retrieval_strategy, max_documents) to relevant payloads; introduced language_studio_api_server__data_types__assistant__Requirement and ...execution_engine__Requirement.
Run/Result surfaces
src/libs/AI21/openapi.yaml
Introduced RunAssistantRequest with options (input, verbose, output_type, include, structured_rag_enabled, dynamic_planning_enabled, response_language including unset). Extended MaestroRunResult with error: MaestroRunError.
Enums and language defaults
src/libs/AI21/openapi.yaml
Added/updated enums: AssistantType, Visibility, BudgetLevel, RunOptimization; expanded response_language options (including unset); aligned defaults across public schemas.
Schema alignments and shims
src/libs/AI21/openapi.yaml
Updated DetectSchemaRequest/Response, OrgSchema, and related types to integrate new resource/tool structures; adjusted HTTPValidationError references to tool-specific constructs.

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
Loading
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
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60–90 minutes

Poem

I twitch my ears at schemas new,
Assistants born, then taught to do;
MCPs discovered, tools in tow,
Discriminators all in a row.
If errors hop, Maestro will know—
I thump approval: onward, go! 🐇✨

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title Check ❓ Inconclusive The title "feat:@coderabbitai" is non‑descriptive and reads like a tag or handle rather than a concise summary of the changes in this PR; the changes add many Assistant/MCP endpoints and schema updates to openapi.yaml, but the title does not convey that scope or the primary change. Because it doesn't meaningfully describe the main change, the title is inconclusive for reviewers scanning history. Please replace the title with a short, specific sentence that summarizes the primary change, for example: "Add Assistant and MCP APIs to OpenAPI spec (create/modify/run assistants; MCP discovery and tool resources)". Ensure the title is concise, avoids tags/handles, and highlights the principal change so reviewers can quickly understand the PR's purpose.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch bot/update-openapi_202509220155

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot enabled auto-merge September 22, 2025 01:56
@coderabbitai coderabbitai bot changed the title feat:@coderabbitai feat:Update AI21 OpenAPI: Assistant endpoints, MCP API, vector GET, tools Sep 22, 2025
Copy link

@coderabbitai coderabbitai bot left a 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: medium

Also 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

📥 Commits

Reviewing files that changed from the base of the PR and between fed30ee and 47c5874.

⛔ Files ignored due to path filters (136)
  • src/libs/AI21/Generated/AI21..JsonSerializerContext.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Ai21Api.GetVectorStoreStudioV1DemosRegulationsVectorStoreVectorStoreIdGet.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Ai21Api.McpToolDiscoveryStudioV1McpDiscoverPost.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Ai21Api.UploadCheckComplianceStudioV1DemosRegulationsUploadCheckCompliancePost.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Ai21Api.V1ConversationalRag.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Ai21Api.V1CreateAssistant.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Ai21Api.V1MaestroRun.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Ai21Api.V1ModifyAssistant.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Ai21Api.V1RunAssistant.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.IAi21Api.GetVectorStoreStudioV1DemosRegulationsVectorStoreVectorStoreIdGet.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.IAi21Api.McpToolDiscoveryStudioV1McpDiscoverPost.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.IAi21Api.UploadCheckComplianceStudioV1DemosRegulationsUploadCheckCompliancePost.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.IAi21Api.V1ConversationalRag.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.IAi21Api.V1CreateAssistant.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.IAi21Api.V1MaestroRun.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.IAi21Api.V1ModifyAssistant.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.IAi21Api.V1RunAssistant.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.IJambaCompleteClient.V1ChatComplete.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JambaCompleteClient.V1ChatComplete.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.AssistantResponseLanguage.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.AssistantResponseLanguageNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.AssistantType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.AssistantTypeNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.BudgetLevel.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.BudgetLevelNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.FileSearchToolResourceLabelsFilterMode.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.FileSearchToolResourceLabelsFilterModeNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.FileSearchToolResourceResponseLanguage.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.FileSearchToolResourceResponseLanguageNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.FileSearchToolResourceType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.FileSearchToolResourceTypeNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.HTTPToolFunctionParametersType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.HTTPToolFunctionParametersTypeNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.HTTPToolResourceType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.HTTPToolResourceTypeNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.LanguageStudioApiServerDataTypesChatToolDefinitionType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.LanguageStudioApiServerDataTypesChatToolDefinitionTypeNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.LanguageStudioApiServerDataTypesExecutionEngineToolDefinition.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.LanguageStudioApiServerDataTypesExecutionEngineToolDefinitionDiscriminatorType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.LanguageStudioApiServerDataTypesExecutionEngineToolDefinitionDiscriminatorTypeNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.MCPToolResourceType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.MCPToolResourceTypeNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.ModifyAssistantRequestResponseLanguage.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.ModifyAssistantRequestResponseLanguageNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.RunAssistantRequestResponseLanguage.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.RunAssistantRequestResponseLanguageNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.RunOptimization.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.RunOptimizationNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.Visibility.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.VisibilityNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.WebSearchToolResourceType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.WebSearchToolResourceTypeNullable.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonSerializerContextTypes.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.Assistant.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.AssistantResponseLanguage.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.AssistantType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.BodyUploadCheckComplianceStudioV1DemosRegulationsUploadCheckCompliancePost.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.BudgetLevel.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.ChatRequest.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.ConversationalRagConfig.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.ConversationalRagConfigResponseLanguage.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.ConversationalRagConfigRetrievalStrategy.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.CreateAssistantRequest.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.CreateAssistantRequest.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.CreateAssistantRequestToolResources.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.CreateAssistantRequestToolResources.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.CreateMaestroRunsPayload.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.CreateMaestroRunsPayloadResponseLanguage.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.FileSearchToolResource.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.FileSearchToolResource.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.FileSearchToolResourceLabelsFilterMode.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.FileSearchToolResourceResponseLanguage.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.FileSearchToolResourceType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.GetVectorStoreStudioV1DemosRegulationsVectorStoreVectorStoreIdGetResponse.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.GetVectorStoreStudioV1DemosRegulationsVectorStoreVectorStoreIdGetResponse.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolEndpoint.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolEndpoint.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolEndpointHeaders.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolEndpointHeaders.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolFunction.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolFunction.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParamProperties.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParamProperties.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParameters.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParameters.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParametersProperties.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParametersProperties.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParametersType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolResource.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolResource.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.HTTPToolResourceType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesAssistantRequirement.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesAssistantRequirement.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesChatToolDefinition.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesChatToolDefinition.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesChatToolDefinitionType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesExecutionEngineRequirement.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesExecutionEngineRequirement.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesExecutionEngineToolDefinition.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesExecutionEngineToolDefinition.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesExecutionEngineToolDefinitionDiscriminator.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesExecutionEngineToolDefinitionDiscriminator.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesExecutionEngineToolDefinitionDiscriminatorType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MCPDefinition.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MCPDefinition.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MCPDefinitionHeaders.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MCPDefinitionHeaders.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MCPDiscoveryResponse.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MCPDiscoveryResponse.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MCPTool.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MCPTool.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MCPToolInputSchema.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MCPToolInputSchema.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MCPToolResource.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MCPToolResource.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MCPToolResourceHeaders.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MCPToolResourceHeaders.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MCPToolResourceType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MaestroRunError.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MaestroRunError.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.MaestroRunResult.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.ModifyAssistantRequest.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.ModifyAssistantRequest.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.ModifyAssistantRequestResponseLanguage.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.RunAssistantRequest.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.RunAssistantRequest.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.RunAssistantRequestOutputType.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.RunAssistantRequestOutputType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.RunAssistantRequestResponseLanguage.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.RunOptimization.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.ToolResource.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.ToolResource.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.Visibility.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.WebSearchToolResource.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.WebSearchToolResource.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.WebSearchToolResourceType.g.cs is 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 codegen

Confirmed: 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.

Comment on lines +2132 to +2166
$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
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

❓ 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")
PY

Length 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.

Suggested change
$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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants