Skip to content

Conversation

@HavenDV
Copy link
Contributor

@HavenDV HavenDV commented Sep 15, 2025

Summary by CodeRabbit

  • New Features

    • Added Assistants API: create and modify assistants.
    • Introduced MCP tool discovery.
    • Added vector store retrieval for demos.
    • Added generation utilities for requirements and thread naming.
    • Expanded tool integrations: HTTP-based tools, MCP tools, file search, and web search.
    • Assistant objects now support requirements, budget levels (default medium), and visibility (default public).
  • Refactor

    • Renamed ToolResources to ToolResource.
    • Updated tools payload to a typed union across HTTP, MCP, file search, and web search resources.

@coderabbitai
Copy link

coderabbitai bot commented Sep 15, 2025

Walkthrough

Expanded Studio API in src/libs/AI21/openapi.yaml with new endpoints (assistants, MCP discovery, vector-store, generation utilities), added extensive tool and MCP schemas, renamed ToolResources to ToolResource, updated MaestroRunsPayload.tools to a discriminated union, and extended Assistant with requirements, budget, and visibility.

Changes

Cohort / File(s) Summary of Changes
New Endpoints
src/libs/AI21/openapi.yaml
Added: POST /studio/v1/assistants, PATCH /studio/v1/assistants/{assistant_id}, POST /studio/v1/mcp/discover, GET /studio/v1/demos/regulations/vector-store/{vector_store_id}, plus generation utilities POST /studio/v1/generation/requirements, POST /studio/v1/generation/thread-name.
Assistant Model Extensions
src/libs/AI21/openapi.yaml
Assistant schema updated with requirements, budget (BudgetLevel), and visibility (Visibility).
Tooling Schema Additions (HTTP, MCP, Search)
src/libs/AI21/openapi.yaml
Added HTTP tool types: HTTPToolEndpoint, HTTPToolFunction, HTTPToolFunctionParamProperties, HTTPToolFunctionParameters, HTTPToolResource. Added MCP types: MCPDefinition, MCPDiscoveryResponse, MCPTool, MCPToolResource. Added search tool resources: FileSearchToolResource, WebSearchToolResource.
Tool Resource Refactor
src/libs/AI21/openapi.yaml
Renamed ToolResources to ToolResource; updated references.
MaestroRunsPayload.tools Redesign
src/libs/AI21/openapi.yaml
Changed from object-with-nested file_search/web_search to oneOf union over HTTPToolResource, MCPToolResource, FileSearchToolResource, WebSearchToolResource with discriminator mappings.
Enumerations and Defaults
src/libs/AI21/openapi.yaml
Added enums: BudgetLevel, RunOptimization, Visibility; updated FileSearchToolResource.response_language to include unset.
Requirements Types
src/libs/AI21/openapi.yaml
Added language_studio_api_server__data_types__assistant__Requirement and ...execution_engine__Requirement.

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

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Poem

I twitch my whiskers at schemas anew,
Tools hop in—HTTP, MCP too!
Assistants don badges: budget, bright visibility,
A union of choices, with tidy agility.
Vector stores fetched, threads named just right—
I stamp my paws: what a structured delight! 🐇✨

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title Check ❓ Inconclusive The title "feat:@coderabbitai" is vague and does not describe the primary changes in this PR (which add multiple Studio API endpoints and many new OpenAPI schemas in src/libs/AI21/openapi.yaml). It reads like an automated tag or mention rather than a concise summary a reviewer can use to understand the main change. Because it provides no clear context about the feature additions, the title is insufficient for PR history or quick review. Please replace it with a concise, descriptive single-sentence title summarizing the main change. Suggested examples: "feat(studio-api): add assistants endpoints and MCP/tool schemas to openapi.yaml" or "feat: add Create/Modify Assistant endpoints, MCP discovery, and new tool resource schemas." Ensure the title clearly highlights the primary change so reviewers can understand the PR at a glance.
✅ 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_202509150635

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 15, 2025 06:36
@coderabbitai coderabbitai bot changed the title feat:@coderabbitai feat:Expand Studio API: new endpoints, tool/MCP schemas, Assistant updates Sep 15, 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: 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: unset

Also applies to: 2681-2683, 2707-2710


2850-2862: Discriminator robustness: require type in each tool resource.

For reliable oneOf discrimination, make type required 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:
+        - type

Also 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: uri

Also 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

📥 Commits

Reviewing files that changed from the base of the PR and between 3376f54 and 89da2f1.

⛔ Files ignored due to path filters (111)
  • 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.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.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.CreateMaestroRunsPayloadToolDiscriminatorType.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.JsonConverters.CreateMaestroRunsPayloadToolDiscriminatorTypeNullable.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.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.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.ToolsItem.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.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.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.CreateAssistantRequestTool.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.CreateAssistantRequestTool.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.CreateMaestroRunsPayloadToolDiscriminator.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.CreateMaestroRunsPayloadToolDiscriminator.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.CreateMaestroRunsPayloadToolDiscriminatorType.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.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.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.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.ModifyAssistantRequestTool.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.ModifyAssistantRequestTool.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.ToolsItem.Json.g.cs is excluded by !**/generated/**
  • src/libs/AI21/Generated/AI21.Models.ToolsItem.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 (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

Comment on lines +2783 to +2824
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
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

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.

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

Comment on lines +3365 to +3376
title: HTTPToolEndpoint
required:
- url
type: object
properties:
url:
title: Url
type: string
headers:
title: Headers
type: object
HTTPToolFunction:
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

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: false

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

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