feat(plan): add experimental plan flag (#16650)

This commit is contained in:
Jerop Kipruto
2026-01-14 19:55:10 -05:00
committed by GitHub
parent ae198029bc
commit 5bdfe1a1fa
8 changed files with 66 additions and 0 deletions
+1
View File
@@ -706,6 +706,7 @@ export async function loadCliConfig(
extensionLoader: extensionManager,
enableExtensionReloading: settings.experimental?.extensionReloading,
enableAgents: settings.experimental?.enableAgents,
plan: settings.experimental?.plan,
skillsSupport: settings.experimental?.skills,
disabledSkills: settings.skills?.disabled,
experimentalJitContext: settings.experimental?.jitContext,
@@ -357,6 +357,19 @@ describe('SettingsSchema', () => {
);
});
it('should have plan setting in schema', () => {
const setting = getSettingsSchema().experimental.properties.plan;
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(true);
expect(setting.description).toBe(
'Enable planning features (Plan Mode and tools).',
);
});
it('should have hooks.notifications setting in schema', () => {
const setting = getSettingsSchema().hooks.properties.notifications;
expect(setting).toBeDefined();
@@ -1540,6 +1540,15 @@ const SETTINGS_SCHEMA = {
},
},
},
plan: {
type: 'boolean',
label: 'Plan',
category: 'Experimental',
requiresRestart: true,
default: false,
description: 'Enable planning features (Plan Mode and tools).',
showInDialog: true,
},
},
},
+23
View File
@@ -1924,6 +1924,29 @@ describe('Config Quota & Preview Model Access', () => {
expect(config.getModel()).toBe(PREVIEW_GEMINI_MODEL);
});
});
describe('isPlanEnabled', () => {
it('should return false by default', () => {
const config = new Config(baseParams);
expect(config.isPlanEnabled()).toBe(false);
});
it('should return true when plan is enabled', () => {
const config = new Config({
...baseParams,
plan: true,
});
expect(config.isPlanEnabled()).toBe(true);
});
it('should return false when plan is explicitly disabled', () => {
const config = new Config({
...baseParams,
plan: false,
});
expect(config.isPlanEnabled()).toBe(false);
});
});
});
describe('Config JIT Initialization', () => {
+7
View File
@@ -380,6 +380,7 @@ export interface ConfigParameters {
adminSkillsEnabled?: boolean;
experimentalJitContext?: boolean;
disableLLMCorrection?: boolean;
plan?: boolean;
onModelChange?: (model: string) => void;
mcpEnabled?: boolean;
extensionsEnabled?: boolean;
@@ -531,6 +532,7 @@ export class Config {
private readonly experimentalJitContext: boolean;
private readonly disableLLMCorrection: boolean;
private readonly planEnabled: boolean;
private contextManager?: ContextManager;
private terminalBackground: string | undefined = undefined;
private remoteAdminSettings: GeminiCodeAssistSetting | undefined;
@@ -602,6 +604,7 @@ export class Config {
this.enableAgents = params.enableAgents ?? false;
this.agents = params.agents ?? {};
this.disableLLMCorrection = params.disableLLMCorrection ?? false;
this.planEnabled = params.plan ?? false;
this.skillsSupport = params.skillsSupport ?? false;
this.disabledSkills = params.disabledSkills ?? [];
this.adminSkillsEnabled = params.adminSkillsEnabled ?? true;
@@ -1469,6 +1472,10 @@ export class Config {
return this.disableLLMCorrection;
}
isPlanEnabled(): boolean {
return this.planEnabled;
}
isAgentsEnabled(): boolean {
return this.enableAgents;
}