diff --git a/docs/cli/cli-reference.md b/docs/cli/cli-reference.md index c1599df69e..436dc5c264 100644 --- a/docs/cli/cli-reference.md +++ b/docs/cli/cli-reference.md @@ -37,8 +37,8 @@ and parameters. | `--sandbox` | `-s` | boolean | `false` | Run in a sandboxed environment for safer execution | | `--approval-mode` | - | string | `default` | Approval mode for tool execution. Choices: `default`, `auto_edit`, `yolo` | | `--yolo` | `-y` | boolean | `false` | **Deprecated.** Auto-approve all actions. Use `--approval-mode=yolo` instead. | -| `--experimental-acp` | - | boolean | - | Start in ACP (Agent Code Pilot) mode. **Experimental feature.** | -| `--experimental-zed-integration` | - | boolean | - | Run in Zed editor integration mode. **Experimental feature.** | +| `--acp` | - | boolean | - | Start in ACP (Agent Client Protocol) mode. | +| `--experimental-zed-integration` | - | boolean | - | **Deprecated.** Use `--acp` instead. Run in Zed editor integration mode. | | `--allowed-mcp-server-names` | - | array | - | Allowed MCP server names (comma-separated or multiple flags) | | `--allowed-tools` | - | array | - | **Deprecated.** Use the [Policy Engine](../reference/policy-engine.md) instead. Tools that are allowed to run without confirmation (comma-separated or multiple flags) | | `--extensions` | `-e` | array | - | List of extensions to use. If not provided, all extensions are enabled (comma-separated or multiple flags) | diff --git a/packages/cli/src/zed-integration/zedIntegration.test.ts b/packages/cli/src/acp/acp.test.ts similarity index 99% rename from packages/cli/src/zed-integration/zedIntegration.test.ts rename to packages/cli/src/acp/acp.test.ts index e8e5355dc0..d39294fb97 100644 --- a/packages/cli/src/zed-integration/zedIntegration.test.ts +++ b/packages/cli/src/acp/acp.test.ts @@ -14,7 +14,7 @@ import { type Mock, type Mocked, } from 'vitest'; -import { GeminiAgent, Session } from './zedIntegration.js'; +import { GeminiAgent, Session } from './acp.js'; import * as acp from '@agentclientprotocol/sdk'; import { AuthType, diff --git a/packages/cli/src/zed-integration/zedIntegration.ts b/packages/cli/src/acp/acp.ts similarity index 99% rename from packages/cli/src/zed-integration/zedIntegration.ts rename to packages/cli/src/acp/acp.ts index 98c9efdc75..741c278dfb 100644 --- a/packages/cli/src/zed-integration/zedIntegration.ts +++ b/packages/cli/src/acp/acp.ts @@ -61,7 +61,7 @@ import { loadCliConfig } from '../config/config.js'; import { runExitCleanup } from '../utils/cleanup.js'; import { SessionSelector } from '../utils/sessionUtils.js'; -export async function runZedIntegration( +export async function runAcp( config: Config, settings: LoadedSettings, argv: CliArgs, diff --git a/packages/cli/src/zed-integration/acpErrors.test.ts b/packages/cli/src/acp/acpErrors.test.ts similarity index 100% rename from packages/cli/src/zed-integration/acpErrors.test.ts rename to packages/cli/src/acp/acpErrors.test.ts diff --git a/packages/cli/src/zed-integration/acpErrors.ts b/packages/cli/src/acp/acpErrors.ts similarity index 100% rename from packages/cli/src/zed-integration/acpErrors.ts rename to packages/cli/src/acp/acpErrors.ts diff --git a/packages/cli/src/zed-integration/acpResume.test.ts b/packages/cli/src/acp/acpResume.test.ts similarity index 99% rename from packages/cli/src/zed-integration/acpResume.test.ts rename to packages/cli/src/acp/acpResume.test.ts index 54c04a0ff3..4918595a83 100644 --- a/packages/cli/src/zed-integration/acpResume.test.ts +++ b/packages/cli/src/acp/acpResume.test.ts @@ -13,7 +13,7 @@ import { type Mocked, type Mock, } from 'vitest'; -import { GeminiAgent } from './zedIntegration.js'; +import { GeminiAgent } from './acp.js'; import * as acp from '@agentclientprotocol/sdk'; import { ApprovalMode, diff --git a/packages/cli/src/zed-integration/fileSystemService.test.ts b/packages/cli/src/acp/fileSystemService.test.ts similarity index 100% rename from packages/cli/src/zed-integration/fileSystemService.test.ts rename to packages/cli/src/acp/fileSystemService.test.ts diff --git a/packages/cli/src/zed-integration/fileSystemService.ts b/packages/cli/src/acp/fileSystemService.ts similarity index 100% rename from packages/cli/src/zed-integration/fileSystemService.ts rename to packages/cli/src/acp/fileSystemService.ts diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index b478d67478..600cab3a75 100755 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -82,6 +82,8 @@ export interface CliArgs { allowedMcpServerNames: string[] | undefined; allowedTools: string[] | undefined; experimentalAcp: boolean | undefined; + experimentalZedIntegration: boolean | undefined; + acp: boolean | undefined; extensions: string[] | undefined; listExtensions: boolean | undefined; resume: string | typeof RESUME_LATEST | undefined; @@ -180,6 +182,16 @@ export async function parseArguments( .option('experimental-acp', { type: 'boolean', description: 'Starts the agent in ACP mode', + hidden: true, + }) + .option('experimental-zed-integration', { + type: 'boolean', + description: 'Run in Zed editor integration mode', + hidden: true, + }) + .option('acp', { + type: 'boolean', + description: 'Starts the agent in ACP mode', }) .option('allowed-mcp-server-names', { type: 'array', @@ -633,6 +645,8 @@ export async function loadCliConfig( const interactive = !!argv.promptInteractive || !!argv.experimentalAcp || + !!argv.experimentalZedIntegration || + !!argv.acp || (!isHeadlessMode({ prompt: argv.prompt, query: argv.query }) && !argv.isCommand); @@ -821,7 +835,16 @@ export async function loadCliConfig( bugCommand: settings.advanced?.bugCommand, model: resolvedModel, maxSessionTurns: settings.model?.maxSessionTurns, - experimentalZedIntegration: argv.experimentalAcp || false, + acp: + argv.acp || + argv.experimentalAcp || + argv.experimentalZedIntegration || + false, + experimentalZedIntegration: + argv.experimentalAcp || + argv.acp || + argv.experimentalZedIntegration || + false, listExtensions: argv.listExtensions || false, listSessions: argv.listSessions || false, deleteSession: argv.deleteSession, diff --git a/packages/cli/src/gemini.tsx b/packages/cli/src/gemini.tsx index 88f9f404cd..99a92600a8 100644 --- a/packages/cli/src/gemini.tsx +++ b/packages/cli/src/gemini.tsx @@ -79,7 +79,7 @@ import { type InitializationResult, } from './core/initializer.js'; import { validateAuthMethod } from './config/auth.js'; -import { runZedIntegration } from './zed-integration/zedIntegration.js'; +import { runAcp } from './acp/acp.js'; import { validateNonInteractiveAuth } from './validateNonInterActiveAuth.js'; import { checkForUpdates } from './ui/utils/updateCheck.js'; import { handleAutoUpdate } from './utils/handleAutoUpdate.js'; @@ -672,8 +672,8 @@ export async function main() { await getOauthClient(settings.merged.security.auth.selectedType, config); } - if (config.getExperimentalZedIntegration()) { - return runZedIntegration(config, settings, argv); + if (config.getAcp()) { + return runAcp(config, settings, argv); } let input = config.getQuestion(); diff --git a/packages/core/src/code_assist/oauth2.ts b/packages/core/src/code_assist/oauth2.ts index 31bc3c0e5e..bf4813847f 100644 --- a/packages/core/src/code_assist/oauth2.ts +++ b/packages/core/src/code_assist/oauth2.ts @@ -271,7 +271,7 @@ async function initOauthClient( await triggerPostAuthCallbacks(client.credentials); } else { - // In Zed integration, we skip the interactive consent and directly open the browser + // In ACP integration, we skip the interactive consent and directly open the browser if (!config.getExperimentalZedIntegration()) { const userConsent = await getConsentForOauth(''); if (!userConsent) { diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index 258bd78f93..97e0fd0225 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -504,6 +504,7 @@ export interface ConfigParameters { disableLoopDetection?: boolean; maxSessionTurns?: number; experimentalZedIntegration?: boolean; + acp?: boolean; listSessions?: boolean; deleteSession?: string; listExtensions?: boolean; @@ -699,6 +700,8 @@ export class Config implements McpContext { private readonly summarizeToolOutput: | Record | undefined; + private readonly acp: boolean = false; + /** @deprecated Use acp instead */ private readonly experimentalZedIntegration: boolean = false; private readonly loadMemoryFromIncludeDirectories: boolean = false; private readonly includeDirectoryTree: boolean = true; @@ -894,8 +897,8 @@ export class Config implements McpContext { DEFAULT_PROTECT_LATEST_TURN, }; this.maxSessionTurns = params.maxSessionTurns ?? -1; - this.experimentalZedIntegration = - params.experimentalZedIntegration ?? false; + this.acp = !!(params.acp || params.experimentalZedIntegration); + this.experimentalZedIntegration = this.acp; this.listSessions = params.listSessions ?? false; this.deleteSession = params.deleteSession; this.listExtensions = params.listExtensions ?? false; @@ -2205,8 +2208,13 @@ export class Config implements McpContext { return this.usageStatisticsEnabled; } + getAcp(): boolean { + return this.acp; + } + + /** @deprecated Use getAcp() instead */ getExperimentalZedIntegration(): boolean { - return this.experimentalZedIntegration; + return this.acp; } async waitForMcpInit(): Promise {