From 85c31ad2da57f2e7905ac64541f132aa0220749b Mon Sep 17 00:00:00 2001 From: mkorwel Date: Wed, 11 Feb 2026 17:43:37 -0600 Subject: [PATCH] feat(cli): add --experimental-agent-harness command line flag #18267 --- packages/cli/src/config/config.ts | 9 ++++++++- packages/cli/src/gemini.test.tsx | 1 + packages/core/src/agents/harness.test.ts | 8 ++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index 640212b061..50c10eec2a 100755 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -78,6 +78,7 @@ export interface CliArgs { allowedMcpServerNames: string[] | undefined; allowedTools: string[] | undefined; experimentalAcp: boolean | undefined; + experimentalAgentHarness: boolean | undefined; extensions: string[] | undefined; listExtensions: boolean | undefined; resume: string | typeof RESUME_LATEST | undefined; @@ -162,6 +163,10 @@ export async function parseArguments( type: 'boolean', description: 'Starts the agent in ACP mode', }) + .option('experimental-agent-harness', { + type: 'boolean', + description: 'Enable the new unified agent harness', + }) .option('allowed-mcp-server-names', { type: 'array', string: true, @@ -788,7 +793,9 @@ export async function loadCliConfig( extensionLoader: extensionManager, enableExtensionReloading: settings.experimental?.extensionReloading, enableAgents: settings.experimental?.enableAgents, - enableAgentHarness: settings.experimental?.enableAgentHarness, + enableAgentHarness: + argv.experimentalAgentHarness ?? + settings.experimental?.enableAgentHarness, plan: settings.experimental?.plan, enableEventDrivenScheduler: true, skillsSupport: settings.skills?.enabled ?? true, diff --git a/packages/cli/src/gemini.test.tsx b/packages/cli/src/gemini.test.tsx index 2e55c9b25d..62cb010d68 100644 --- a/packages/cli/src/gemini.test.tsx +++ b/packages/cli/src/gemini.test.tsx @@ -467,6 +467,7 @@ describe('gemini.tsx main function kitty protocol', () => { allowedMcpServerNames: undefined, allowedTools: undefined, experimentalAcp: undefined, + experimentalAgentHarness: undefined, extensions: undefined, listExtensions: undefined, includeDirectories: undefined, diff --git a/packages/core/src/agents/harness.test.ts b/packages/core/src/agents/harness.test.ts index 72682f9f0b..199c388cc0 100644 --- a/packages/core/src/agents/harness.test.ts +++ b/packages/core/src/agents/harness.test.ts @@ -10,7 +10,11 @@ import { makeFakeConfig } from '../test-utils/config.js'; import { GeminiChat, StreamEventType } from '../core/geminiChat.js'; import { GeminiEventType, type ServerGeminiStreamEvent } from '../core/turn.js'; import { z } from 'zod'; -import { type LocalAgentDefinition, AgentTerminateMode } from './types.js'; +import { + type LocalAgentDefinition, + AgentTerminateMode, + type AgentDefinition, +} from './types.js'; import { scheduleAgentTools } from './agent-scheduler.js'; import { logAgentFinish } from '../telemetry/loggers.js'; import { type Config } from '../config/config.js'; @@ -72,7 +76,7 @@ describe('AgentHarness', () => { const harness = new AgentHarness({ config: mockConfig, - + definition: definition as unknown as AgentDefinition, inputs: {}, });