feat: Add enableAgents experimental flag (#14371)

Co-authored-by: Abhi <43648792+abhipatel12@users.noreply.github.com>
This commit is contained in:
Adam Weidman
2025-12-03 12:53:06 -08:00
committed by GitHub
parent eb3312e7ba
commit 153d01a01e
6 changed files with 40 additions and 0 deletions
+5
View File
@@ -767,6 +767,11 @@ their corresponding top-level category object in your `settings.json` file.
#### `experimental` #### `experimental`
- **`experimental.enableAgents`** (boolean):
- **Description:** Enable local and remote subagents.
- **Default:** `false`
- **Requires restart:** Yes
- **`experimental.extensionManagement`** (boolean): - **`experimental.extensionManagement`** (boolean):
- **Description:** Enable extension management features. - **Description:** Enable extension management features.
- **Default:** `true` - **Default:** `true`
+1
View File
@@ -639,6 +639,7 @@ export async function loadCliConfig(
enabledExtensions: argv.extensions, enabledExtensions: argv.extensions,
extensionLoader: extensionManager, extensionLoader: extensionManager,
enableExtensionReloading: settings.experimental?.extensionReloading, enableExtensionReloading: settings.experimental?.extensionReloading,
enableAgents: settings.experimental?.enableAgents,
enableModelAvailabilityService: enableModelAvailabilityService:
settings.experimental?.isModelAvailabilityServiceEnabled, settings.experimental?.isModelAvailabilityServiceEnabled,
experimentalJitContext: settings.experimental?.jitContext, experimentalJitContext: settings.experimental?.jitContext,
@@ -346,6 +346,17 @@ describe('SettingsSchema', () => {
).toBe('Enable preview features (e.g., preview models).'); ).toBe('Enable preview features (e.g., preview models).');
}); });
it('should have enableAgents setting in schema', () => {
const setting = getSettingsSchema().experimental.properties.enableAgents;
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 local and remote subagents.');
});
it('should have isModelAvailabilityServiceEnabled setting in schema', () => { it('should have isModelAvailabilityServiceEnabled setting in schema', () => {
const setting = const setting =
getSettingsSchema().experimental.properties getSettingsSchema().experimental.properties
@@ -1285,6 +1285,15 @@ const SETTINGS_SCHEMA = {
description: 'Setting to enable experimental features', description: 'Setting to enable experimental features',
showInDialog: false, showInDialog: false,
properties: { properties: {
enableAgents: {
type: 'boolean',
label: 'Enable Agents',
category: 'Experimental',
requiresRestart: true,
default: false,
description: 'Enable local and remote subagents.',
showInDialog: false,
},
extensionManagement: { extensionManagement: {
type: 'boolean', type: 'boolean',
label: 'Extension Management', label: 'Extension Management',
+7
View File
@@ -320,6 +320,7 @@ export interface ConfigParameters {
[K in HookEventName]?: HookDefinition[]; [K in HookEventName]?: HookDefinition[];
} & { disabled?: string[] }); } & { disabled?: string[] });
previewFeatures?: boolean; previewFeatures?: boolean;
enableAgents?: boolean;
enableModelAvailabilityService?: boolean; enableModelAvailabilityService?: boolean;
experimentalJitContext?: boolean; experimentalJitContext?: boolean;
} }
@@ -441,6 +442,7 @@ export class Config {
private previewModelFallbackMode = false; private previewModelFallbackMode = false;
private previewModelBypassMode = false; private previewModelBypassMode = false;
private readonly enableModelAvailabilityService: boolean; private readonly enableModelAvailabilityService: boolean;
private readonly enableAgents: boolean;
private readonly experimentalJitContext: boolean; private readonly experimentalJitContext: boolean;
private contextManager?: ContextManager; private contextManager?: ContextManager;
@@ -504,6 +506,7 @@ export class Config {
this.model = params.model; this.model = params.model;
this.enableModelAvailabilityService = this.enableModelAvailabilityService =
params.enableModelAvailabilityService ?? false; params.enableModelAvailabilityService ?? false;
this.enableAgents = params.enableAgents ?? false;
this.experimentalJitContext = params.experimentalJitContext ?? false; this.experimentalJitContext = params.experimentalJitContext ?? false;
this.modelAvailabilityService = new ModelAvailabilityService(); this.modelAvailabilityService = new ModelAvailabilityService();
this.previewFeatures = params.previewFeatures ?? undefined; this.previewFeatures = params.previewFeatures ?? undefined;
@@ -1211,6 +1214,10 @@ export class Config {
return this.enableModelAvailabilityService; return this.enableModelAvailabilityService;
} }
isAgentsEnabled(): boolean {
return this.enableAgents;
}
getNoBrowser(): boolean { getNoBrowser(): boolean {
return this.noBrowser; return this.noBrowser;
} }
+7
View File
@@ -1258,6 +1258,13 @@
"default": {}, "default": {},
"type": "object", "type": "object",
"properties": { "properties": {
"enableAgents": {
"title": "Enable Agents",
"description": "Enable local and remote subagents.",
"markdownDescription": "Enable local and remote subagents.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `false`",
"default": false,
"type": "boolean"
},
"extensionManagement": { "extensionManagement": {
"title": "Extension Management", "title": "Extension Management",
"description": "Enable extension management features.", "description": "Enable extension management features.",