From c8540b5744eb3ae64a082928433df42154a0371e Mon Sep 17 00:00:00 2001 From: Adam Weidman <65992621+adamfweidman@users.noreply.github.com> Date: Mon, 24 Nov 2025 17:26:47 -0800 Subject: [PATCH] feat(config): add isModelAvailabilityServiceEnabled setting (#13777) --- docs/get-started/configuration.md | 5 +++++ packages/cli/src/config/config.ts | 2 ++ packages/cli/src/config/settingsSchema.test.ts | 15 +++++++++++++++ packages/cli/src/config/settingsSchema.ts | 9 +++++++++ packages/core/src/config/config.ts | 8 ++++++++ schemas/settings.schema.json | 7 +++++++ 6 files changed, 46 insertions(+) diff --git a/docs/get-started/configuration.md b/docs/get-started/configuration.md index 5167bce6d6..0335f2b889 100644 --- a/docs/get-started/configuration.md +++ b/docs/get-started/configuration.md @@ -772,6 +772,11 @@ their corresponding top-level category object in your `settings.json` file. - **Default:** `false` - **Requires restart:** Yes +- **`experimental.isModelAvailabilityServiceEnabled`** (boolean): + - **Description:** Enable model routing using new availability service. + - **Default:** `false` + - **Requires restart:** Yes + - **`experimental.codebaseInvestigatorSettings.enabled`** (boolean): - **Description:** Enable the Codebase Investigator agent. - **Default:** `true` diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index c4c56424a5..c4b0fd4f63 100755 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -636,6 +636,8 @@ export async function loadCliConfig( enabledExtensions: argv.extensions, extensionLoader: extensionManager, enableExtensionReloading: settings.experimental?.extensionReloading, + enableModelAvailabilityService: + settings.experimental?.isModelAvailabilityServiceEnabled, noBrowser: !!process.env['NO_BROWSER'], summarizeToolOutput: settings.model?.summarizeToolOutput, ideMode, diff --git a/packages/cli/src/config/settingsSchema.test.ts b/packages/cli/src/config/settingsSchema.test.ts index c8350a94c1..db3cdf2d02 100644 --- a/packages/cli/src/config/settingsSchema.test.ts +++ b/packages/cli/src/config/settingsSchema.test.ts @@ -345,6 +345,21 @@ describe('SettingsSchema', () => { getSettingsSchema().general.properties.previewFeatures.description, ).toBe('Enable preview features (e.g., preview models).'); }); + + it('should have isModelAvailabilityServiceEnabled setting in schema', () => { + const setting = + getSettingsSchema().experimental.properties + .isModelAvailabilityServiceEnabled; + expect(setting).toBeDefined(); + expect(setting.type).toBe('boolean'); + expect(setting.category).toBe('Experimental'); + expect(setting.default).toBe(false); + expect(setting.requiresRestart).toBe(true); + expect(setting.showInDialog).toBe(false); + expect(setting.description).toBe( + 'Enable model routing using new availability service.', + ); + }); }); it('has JSON schema definitions for every referenced ref', () => { diff --git a/packages/cli/src/config/settingsSchema.ts b/packages/cli/src/config/settingsSchema.ts index 0fcae7874a..b2b1abcc4b 100644 --- a/packages/cli/src/config/settingsSchema.ts +++ b/packages/cli/src/config/settingsSchema.ts @@ -1291,6 +1291,15 @@ const SETTINGS_SCHEMA = { 'Enables extension loading/unloading within the CLI session.', showInDialog: false, }, + isModelAvailabilityServiceEnabled: { + type: 'boolean', + label: 'Enable Model Availability Service', + category: 'Experimental', + requiresRestart: true, + default: false, + description: 'Enable model routing using new availability service.', + showInDialog: false, + }, codebaseInvestigatorSettings: { type: 'object', label: 'Codebase Investigator Settings', diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index d646b2feb1..fb767e666d 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -305,6 +305,7 @@ export interface ConfigParameters { [K in HookEventName]?: HookDefinition[]; }; previewFeatures?: boolean; + enableModelAvailabilityService?: boolean; } export class Config { @@ -420,6 +421,7 @@ export class Config { private previewModelFallbackMode = false; private previewModelBypassMode = false; + private readonly enableModelAvailabilityService: boolean; constructor(params: ConfigParameters) { this.sessionId = params.sessionId; @@ -477,6 +479,8 @@ export class Config { this.fileDiscoveryService = params.fileDiscoveryService ?? null; this.bugCommand = params.bugCommand; this.model = params.model; + this.enableModelAvailabilityService = + params.enableModelAvailabilityService ?? false; this.previewFeatures = params.previewFeatures ?? undefined; this.maxSessionTurns = params.maxSessionTurns ?? -1; this.experimentalZedIntegration = @@ -1140,6 +1144,10 @@ export class Config { return this.enableExtensionReloading; } + isModelAvailabilityServiceEnabled(): boolean { + return this.enableModelAvailabilityService; + } + getNoBrowser(): boolean { return this.noBrowser; } diff --git a/schemas/settings.schema.json b/schemas/settings.schema.json index 9d63ae5a97..b365112aee 100644 --- a/schemas/settings.schema.json +++ b/schemas/settings.schema.json @@ -1259,6 +1259,13 @@ "default": false, "type": "boolean" }, + "isModelAvailabilityServiceEnabled": { + "title": "Enable Model Availability Service", + "description": "Enable model routing using new availability service.", + "markdownDescription": "Enable model routing using new availability service.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `false`", + "default": false, + "type": "boolean" + }, "codebaseInvestigatorSettings": { "title": "Codebase Investigator Settings", "description": "Configuration for Codebase Investigator.",