Skip to content

Conversation

HavenDV
Copy link
Contributor

@HavenDV HavenDV commented Sep 20, 2025

Summary by CodeRabbit

  • New Features
    • Introduced Assistant APIs: create, modify, and run assistants, including budget, visibility, type, and response language options.
    • Added tool ecosystem support with HTTP, file search, web search, and MCP-based tools, plus discovery for MCP tools.
    • Expanded run/response payloads with optimization options and richer error reporting.
    • Added regulations demo endpoints: vector store retrieval and enhanced compliance upload supporting vector_store_id.
    • Published new enums and schemas to standardize assistant configuration, tool definitions, and execution results.

Copy link

coderabbitai bot commented Sep 20, 2025

Walkthrough

Adds multiple public API endpoints and expands the OpenAPI surface for assistants, tools, MCP discovery, and compliance workflows. Introduces new schemas, enums, and discriminator-based ToolDefinition variants. Updates Assistant entities and run payloads, integrates error handling, and extends an existing compliance endpoint with vector_store_id.

Changes

Cohort / File(s) Summary of changes
New/updated endpoints
src/libs/AI21/openapi.yaml
Added GET /studio/v1/demos/regulations/vector-store/{vector_store_id}; POST/PATCH/POST for /studio/v1/assistants and /run; POST /studio/v1/mcp/discover; extended POST /studio/v1/demos/regulations/upload-check-compliance to include vector_store_id.
Assistant schemas and requests
src/libs/AI21/openapi.yaml
Added CreateAssistantRequest, ModifyAssistantRequest, RunAssistantRequest; expanded Assistant with requirements, budget, visibility, assistant_type, response_language; added RunOptimization enum.
Tooling model refactor
src/libs/AI21/openapi.yaml
Introduced language_studio_api_server__data_types__execution_engine__ToolDefinition and chat variant; added discriminator-based ToolDefinition with HTTPToolResource/Endpoint/Function, MCPToolResource; replaced generic ToolDefinition refs across schemas.
MCP discovery and types
src/libs/AI21/openapi.yaml
Added MCPDefinition, MCPDiscoveryResponse, MCPTool, MCPToolResource; new POST /studio/v1/mcp/discover endpoint.
Run results and errors
src/libs/AI21/openapi.yaml
Added MaestroRunError and integrated into MaestroRunResult for error handling.
Tool resources
src/libs/AI21/openapi.yaml
Added/aliased ToolResource; added FileSearchToolResource and WebSearchToolResource; mapped into ToolDefinition unions.
Core enums and helpers
src/libs/AI21/openapi.yaml
Added BudgetLevel, Visibility, AssistantType, RunOptimization; introduced Requirement aliases under assistant and execution_engine namespaces.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Client
  participant API as Studio API
  participant Assist as Assistants Service
  participant Tools as Tools Resolver
  participant Exec as Execution Engine
  participant MCP as MCP Discovery

  rect rgba(230,245,255,0.6)
    note over Client,API: Create/Modify Assistant
    Client->>API: POST /studio/v1/assistants (CreateAssistantRequest)
    API->>Assist: Create assistant (requirements, tools, visibility, budget)
    Assist-->>API: Assistant
    API-->>Client: 200 Assistant

    Client->>API: PATCH /studio/v1/assistants/{id} (ModifyAssistantRequest)
    API->>Assist: Update assistant
    Assist-->>API: Assistant
    API-->>Client: 200 Assistant
  end

  rect rgba(235,255,235,0.6)
    note over Client,Exec: Run Assistant
    Client->>API: POST /studio/v1/assistants/{id}/run (RunAssistantRequest)
    API->>Assist: Fetch config (tools, optimization)
    Assist->>Tools: Resolve ToolDefinition (HTTP/MCP/File/Web)
    Tools->>Exec: Prepare execution plan
    Exec-->>API: MaestroRunResult | MaestroRunError
    API-->>Client: 200 Result or error payload
  end

  rect rgba(255,245,230,0.6)
    note over Client,MCP: MCP Tool Discovery
    Client->>API: POST /studio/v1/mcp/discover (MCPDefinition)
    API->>MCP: Discover tools
    MCP-->>API: MCPDiscoveryResponse (MCPTool, resources)
    API-->>Client: 200 DiscoveryResponse
  end

  rect rgba(250,250,255,0.6)
    note over Client,API: Compliance + Vector Store
    Client->>API: POST /studio/v1/demos/regulations/upload-check-compliance { ..., vector_store_id }
    API-->>Client: 200/422
    Client->>API: GET /studio/v1/demos/regulations/vector-store/{vector_store_id}
    API-->>Client: 200/422
  end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Poem

I twitch my ears at fresh endpoints’ tune,
Assistants gather under a waxing moon.
Tools now discriminate, neat and bright,
MCP maps stars for the run’s swift flight.
Vectors align, compliance in sight—
I thump with joy: ship night, hop light! 🐇✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Title Check ⚠️ Warning The PR title "feat:@coderabbitai" is not descriptive of the changeset and appears to be an author/bot tag rather than a summary of the work; the changes actually add many studio/assistant API endpoints and numerous new schemas (assistant create/modify/run, MCP/tool resources, HTTP tool definitions, etc.), none of which are reflected in the title. Because it does not convey the primary change, it fails the guideline that a title should clearly summarize the main change for a teammate scanning history. Please rename the PR to a concise, specific summary of the main change, for example "feat(studio): add assistants endpoints and MCP/tool schemas" or "feat(api): add assistant create/modify/run and tool-discovery types"; avoid author tags or emojis and keep it to a single clear sentence describing the primary change.
✅ 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_202509200920

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 20, 2025 09:21
@coderabbitai coderabbitai bot changed the title feat:@coderabbitai feat:Add public endpoints; expand OpenAPI for assistants, tools, compliance Sep 20, 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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/libs/AI21/openapi.yaml (1)

3496-3508: Typo in public schema name: Ignestion → Ingestion.

Spelling error propagates to $ref consumers; fix before release.

-    IgnestionBatchStatusCount:
-      title: IgnestionBatchStatusCount
+    IngestionBatchStatusCount:
+      title: IngestionBatchStatusCount
       required:
         - status
         - count

Also update the reference in IngestionBatchStatusResponse.statuses.items:

-            $ref: '#/components/schemas/IgnestionBatchStatusCount'
+            $ref: '#/components/schemas/IngestionBatchStatusCount'
🧹 Nitpick comments (14)
src/libs/AI21/openapi.yaml (14)

1018-1043: Add 404 and tighten param type for vector store GET.

  • Missing 404 response for unknown vector_store_id.
  • vector_store_id should declare format uuid.

Apply this diff:

       parameters:
         - name: vector_store_id
           in: path
           required: true
           schema:
             title: Vector Store Id
-            type: string
+            type: string
+            format: uuid
       responses:
-        '200':
+        '200':
           description: Successful Response
           content:
             application/json:
               schema:
                 title: Response Get Vector Store Studio V1 Demos Regulations Vector Store  Vector Store Id  Get
                 type: object
+        '404':
+          description: Not Found
         '422':
           description: Validation Error

1520-1541: Use 201 for resource creation and include standard auth errors.

Return 201 Created for POST and document 401/403.

-      responses:
-        '200':
+      responses:
+        '201':
           description: Successful Response
           content:
             application/json:
               schema:
                 $ref: '#/components/schemas/Assistant'
+        '401':
+          description: Unauthorized
+        '403':
+          description: Forbidden
         '422':
           description: Validation Error

1590-1617: PATCH Assistant: add 401/403 responses.

Consistent error surface across endpoints.

       responses:
         '200':
           description: Successful Response
           content:
             application/json:
               schema:
                 $ref: '#/components/schemas/Assistant'
+        '401':
+          description: Unauthorized
+        '403':
+          description: Forbidden
         '422':
           description: Validation Error

1619-1647: Run Assistant may be async → add 202; also add 401/403.

If execution can be long-running, expose 202 Accepted.

       responses:
         '200':
           description: Successful Response
           content:
             application/json:
               schema:
                 $ref: '#/components/schemas/MaestroRunResult'
+        '202':
+          description: Accepted - run started
+        '401':
+          description: Unauthorized
+        '403':
+          description: Forbidden
         '422':
           description: Validation Error

1947-1969: Capitalize summary and add standard auth errors.

“MCP” acronym capitalization + 401/403 responses.

-      summary: Mcp Tool Discovery
+      summary: MCP Tool Discovery
       operationId: mcp_tool_discovery_studio_v1_mcp_discover_post
...
-      responses:
+      responses:
         '200':
           description: Successful Response
           content:
             application/json:
               schema:
                 $ref: '#/components/schemas/MCPDiscoveryResponse'
+        '401':
+          description: Unauthorized
+        '403':
+          description: Forbidden
         '422':
           description: Validation Error

2135-2167: Align create/modify/read surfaces for Assistant (visibility, response_language, optimization).

  • Assistant has visibility/response_language; CreateAssistantRequest lacks visibility/response_language.
  • Assistant.optimization is string; ModifyAssistantRequest uses RunOptimization enum; mismatch.
 # In CreateAssistantRequest.properties (see lines 2835+)
       optimization:
-        title: Optimization
-        type: string
+        $ref: '#/components/schemas/RunOptimization'
...
+      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

Optional (for consistency): make Assistant.optimization also use RunOptimization in a follow-up.


2304-2308: Fix description: compliance vs RFI.

vector_store_id description mentions “RFI processing” on a compliance endpoint; update to “compliance check.”

-        description: Vector store ID to use for RFI processing
+        description: Vector store ID to use for compliance checking

2723-2756: Minor: add basic constraints.

Consider minimum: 1 for max_documents; enum default already set.

       max_documents:
         title: Max Documents
         type: integer
+        minimum: 1

2830-2873: CreateAssistantRequest: reuse AssistantToolResource and add missing fields.

  • tool_resources is untyped object; reuse AssistantToolResource.
  • Add visibility/response_language; use RunOptimization for optimization.
       optimization:
-        title: Optimization
-        type: string
+        $ref: '#/components/schemas/RunOptimization'
...
       tool_resources:
-        title: Tool Resources
-        type: object
+        $ref: '#/components/schemas/AssistantToolResource'
...
+      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

3307-3362: FileSearchToolResource: mirror defaults/constraints used elsewhere.

  • Add minimum: 1 to max_neighbors for parity with other specs.
  • Consider minimum: 0, maximum: 1.0 on retrieval_similarity_threshold.
       max_neighbors:
         title: Max Neighbors
         type: integer
+        minimum: 1
       retrieval_similarity_threshold:
         title: Retrieval Similarity Threshold
-        type: number
+        type: number
+        minimum: 0.0
+        maximum: 1.0

3674-3745: MCP schemas: add URL format hints.

Mark server_url as format uri for better client validation.

     MCPDefinition:
       title: MCPDefinition
       required:
         - server_url
       type: object
       properties:
         server_url:
           title: Server Url
-          type: string
+          type: string
+          format: uri

3753-3761: MaestroRunError: consider a machine-readable code.

Adding a short error code improves programmatic handling.

     MaestroRunError:
       title: MaestroRunError
       required:
         - message
       type: object
       properties:
+        code:
+          title: Code
+          type: string
         message:
           title: Message
           type: string

3907-3960: ModifyAssistantRequest: type consistency and completeness.

  • optimization uses RunOptimization (good). CreateAssistantRequest should match; Assistant.read model should too.
  • Consider allowing assistant_type modification if intended.

Would assistant_type be mutable? If not, please confirm and ignore.


4118-4166: RunAssistantRequest.include: constrain to known values.

Document allowed values via enum to avoid typos; current defaults imply a fixed set.

       include:
         title: Include
         type: array
         items:
-          type: string
+          type: string
+          enum:
+            - data_sources
+            - requirements_result
+            - requirements_result.metadata
         default:
           - data_sources
           - requirements_result
           - requirements_result.metadata
📜 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 d480fc9.

⛔ 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 (10)
src/libs/AI21/openapi.yaml (10)

2132-2132: ToolDefinition discriminator wiring looks correct.

Assistant.tools now points to execution_engine ToolDefinition with discriminator “type”. Good.


2344-2349: Enum addition LGTM.

BudgetLevel enum and defaults align with Assistant.default.


2898-2901: Maestro payload: good move to structured ToolResource.

This improves validation and client-gen.


3487-3495: HTTPValidationError: LGTM.

Matches common FastAPI-style validation error schema.


3790-3791: MaestroRunResult.error reference LGTM.

Non-breaking and clear error surface.


4348-4355: ToolResource wiring LGTM.

Alias cleanly exposes FileSearch/WebSearch resources.


4638-4654: Assistant Requirement schema LGTM.

Clear and minimal.


4655-4668: Chat ToolDefinition LGTM.

Matches function-style tools with discriminator.


4669-4684: Execution-engine Requirement LGTM.

Typed and includes is_mandatory.


4685-4698: Execution-engine ToolDefinition oneOf + discriminator LGTM.

Each variant exposes a type field; mapping is correct.

Comment on lines +3402 to +3486
title: HTTPToolEndpoint
required:
- url
type: object
properties:
detail:
title: Detail
type: array
items:
$ref: '#/components/schemas/ValidationError'
IgnestionBatchStatusCount:
title: IgnestionBatchStatusCount
url:
title: Url
type: string
headers:
title: Headers
type: object
HTTPToolFunction:
title: HTTPToolFunction
required:
- status
- count
- name
- description
- parameters
type: object
properties:
name:
title: Name
type: string
description:
title: Description
type: string
parameters:
$ref: '#/components/schemas/HTTPToolFunctionParameters'
HTTPToolFunctionParamProperties:
title: HTTPToolFunctionParamProperties
required:
- type
- description
type: object
properties:
type:
title: Type
type: string
description:
title: Description
type: string
HTTPToolFunctionParameters:
title: HTTPToolFunctionParameters
required:
- properties
- required
type: object
properties:
type:
title: Type
enum:
- object
type: string
default: object
properties:
title: Properties
type: object
additionalProperties:
$ref: '#/components/schemas/HTTPToolFunctionParamProperties'
required:
title: Required
type: array
items:
type: string
additionalProperties:
title: Additionalproperties
type: boolean
default: false
HTTPToolResource:
title: HTTPToolResource
required:
- function
- endpoint
type: object
properties:
type:
title: Type
enum:
- http
type: string
default: http
function:
$ref: '#/components/schemas/HTTPToolFunction'
endpoint:
$ref: '#/components/schemas/HTTPToolEndpoint'
HTTPValidationError:
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Fix JSON Schema misuse: additionalProperties is modeled as a property, not a schema constraint.

HTTPToolFunctionParameters currently defines a property named “additionalProperties” instead of the schema-level constraint. Move it to the schema level.

     HTTPToolFunctionParameters:
       title: HTTPToolFunctionParameters
       required:
         - properties
         - required
       type: object
+      additionalProperties: false
       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
🤖 Prompt for AI Agents
In src/libs/AI21/openapi.yaml around lines 3402 to 3486, the
HTTPToolFunctionParameters schema incorrectly models additionalProperties as a
named property inside properties instead of a schema-level constraint; remove
the "additionalProperties" entry from the properties object and add an
additionalProperties boolean field at the same level as type/properties/required
(for example additionalProperties: false or true as intended) so the schema
enforces/permits extra properties correctly.

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.

1 participant