feat(config): add isModelAvailabilityServiceEnabled setting (#13777)

This commit is contained in:
Adam Weidman
2025-11-24 17:26:47 -08:00
committed by GitHub
parent f6d97d4488
commit c8540b5744
6 changed files with 46 additions and 0 deletions

View File

@@ -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`

View File

@@ -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,

View File

@@ -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', () => {

View File

@@ -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',

View File

@@ -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;
}

View File

@@ -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.",