[mirror] feat: add general subagent model override#5
[mirror] feat: add general subagent model override#5yashwant86 wants to merge 6 commits intomm-base-24610from
Conversation
⚡ Risk Assessment —
|
| Files | Summary |
|---|---|
Database Layer: General Model Override Storagecoderd/database/queries/siteconfig.sqlcoderd/database/queries.sql.gocoderd/database/querier.go |
Adds GetChatGeneralModelOverride and UpsertChatGeneralModelOverride SQL queries and generated Go methods to persist general subagent model override in site_configs table. |
Authorization Layer: General Model Override Access Controlcoderd/database/dbauthz/dbauthz.go, dbauthz_test.go |
Wraps general model override database methods with RBAC authorization checks requiring DeploymentConfig read/update permissions, consistent with explore override pattern. |
Mock and Metrics: General Model Override Instrumentationcoderd/database/dbmock/dbmock.gocoderd/database/dbmetrics/querymetrics.go |
Adds mock and metrics instrumentation for GetChatGeneralModelOverride and UpsertChatGeneralModelOverride methods. |
HTTP API: Generalized Model Override Endpointscoderd/coderd.go, exp_chats.go |
Replaces explore-specific /explore-model-override endpoints with parameterized /agent-model-override/{context} routes supporting both general and explore contexts. Refactors validation and configuration logic into context-agnostic helpers. |
SDK: Model Override Type Definitions and Client Methodscodersdk/chats.gosite/src/api/typesGenerated.ts |
Replaces ChatExploreModelOverrideResponse and UpdateChatExploreModelOverrideRequest with ChatAgentModelOverrideResponse and UpdateChatAgentModelOverrideRequest supporting context parameter. Adds ChatAgentModelOverrideContext enum and validation helpers. |
Frontend API Client: Model Override Methodssite/src/api/api.ts |
Updates getChatExploreModelOverride and updateChatExploreModelOverride to getChatAgentModelOverride and updateChatAgentModelOverride accepting context parameter in URL path. |
Frontend UI: Generic Model Override Settings Componentsite/src/pages/AgentsPage/components/ExploreModelOverrideSettings.tsx, SubagentModelOverrideSettings.tsx |
Replaces explore-specific ExploreModelOverrideSettings with generic SubagentModelOverrideSettings component accepting title, description, and callbacks, supporting both general and explore overrides. |
Frontend Page: Agent Settings View and Containersite/src/pages/AgentsPage/AgentSettingsAgentsPageView.tsx, AgentSettingsAgentsPage.tsx |
Adds general model override section alongside explore override. Updates to use generic SubagentModelOverrideSettings and parameterized query/mutation hooks for both contexts. |
Frontend Stories: Model Override UI Test Casessite/src/pages/AgentsPage/AgentSettingsAgentsPageView.stories.tsx, AgentsPageView.stories.tsx |
Refactors Storybook stories to test both general and explore overrides with parameterized test data builders and shared test helpers. |
Subagent Runtime: Model Override Resolution and Applicationcoderd/x/chatd/subagent.go, subagent_catalog.go |
Refactors explore-specific model override resolution into context-agnostic resolveConfiguredModelOverride and resolveSubagentModelConfigID methods. Applies general override when spawning general-type subagents. Adds provider validation and ambient credentials support. |
Subagent Tests: Model Override Test Coveragecoderd/x/chatd/subagent_internal_test.gocoderd/exp_chats_test.go |
Adds comprehensive tests for general model override resolution, fallback on missing credentials/disabled providers, and ambient credentials support. Refactors test helpers to support parameterized model config creation and logging inspection. |
Sequence Diagram
sequenceDiagram
participant Admin as Admin User
participant UI as Frontend
participant API as HTTP API
participant DB as Database
participant Chatd as Chatd Server
Admin->>UI: Navigate to Agent Settings
UI->>API: GET /agent-model-override/general
API->>DB: GetChatGeneralModelOverride()
DB-->>API: stored_model_id or empty
API-->>UI: ChatAgentModelOverrideResponse
UI->>UI: Render General & Explore sections
Admin->>UI: Select model, click Save
UI->>API: PUT /agent-model-override/general {model_config_id}
API->>API: validateChatModelOverrideID()
API->>DB: UpsertChatGeneralModelOverride(model_id)
DB-->>API: success
API-->>UI: 204 No Content
UI->>UI: Refresh override data
Note over Chatd: Later: User spawns general subagent
Chatd->>DB: GetChatGeneralModelOverride()
DB-->>Chatd: model_id
Chatd->>Chatd: resolveConfiguredModelOverride()
Chatd->>DB: GetEnabledChatModelConfigByID(model_id)
DB-->>Chatd: ChatModelConfig or error
alt Model enabled and credentials available
Chatd->>Chatd: Use override model
else Model disabled or credentials missing
Chatd->>Chatd: Log info, fall back to parent model
end
Chatd->>DB: InsertChat(with resolved model_id)
DB-->>Chatd: Chat created
Dig Deeper With Commands
/review <file-path> <function-optional>/chat <file-path> "<question>"/roast <file-path>
Runs only when explicitly triggered.
Mirror of upstream coder#24610 for benchmark. Do not merge.
Summary by MergeMonkey