From 38fb6e710425bce7e1969de6bb1825f6d0255ace Mon Sep 17 00:00:00 2001 From: specter119 Date: Fri, 4 Sep 2026 10:37:53 +0800 Subject: [PATCH 1/3] fix: route Factory Droid through direct ACP Model: gpt-5.6-luna --- apps/cli/tests/agent-setting.test.ts | 28 ++++++++++++ packages/shared/src/acp/registry-generated.ts | 44 +++++++++---------- scripts/generate-acp-registry.mjs | 22 +++++++++- 3 files changed, 71 insertions(+), 23 deletions(-) diff --git a/apps/cli/tests/agent-setting.test.ts b/apps/cli/tests/agent-setting.test.ts index 76a3c861a..72514ea31 100644 --- a/apps/cli/tests/agent-setting.test.ts +++ b/apps/cli/tests/agent-setting.test.ts @@ -337,6 +337,34 @@ describe('resolveBuiltinACPSetting', () => { }); }); + it('uses the pinned direct ACP launch for Factory Droid', () => { + const agent = getRegistryAgent('factory-droid'); + + expect(agent.version).toBe('0.211.0'); + expect(agent.distribution.npx).toEqual({ + package: 'droid@0.211.0', + args: ['exec', '--output-format', 'acp'], + env: { + DROID_DISABLE_AUTO_UPDATE: 'true', + FACTORY_DROID_AUTO_UPDATE_ENABLED: 'false', + }, + }); + expect(resolveACPSetting({ cliType: 'registry', agentType: 'factory-droid' })).toEqual({ + status: { agent: 'Factory Droid@0.211.0', command: 'npx' }, + exec: { + command: 'npx', + args: ['--prefer-offline', '-y', 'droid@0.211.0', 'exec', '--output-format', 'acp'], + env: { + DROID_DISABLE_AUTO_UPDATE: 'true', + FACTORY_DROID_AUTO_UPDATE_ENABLED: 'false', + }, + }, + }); + expect(getAcpCapabilitySourceVersion({ cliType: 'registry', agentType: 'factory-droid' })).toBe( + 'factory-droid@0.211.0' + ); + }); + it('uses the hardcoded Interactive Claude registry provider with exact platform npx packages', () => { const agent = getRegistryAgent('claude-p'); const npx = agent.distribution.npx; diff --git a/packages/shared/src/acp/registry-generated.ts b/packages/shared/src/acp/registry-generated.ts index 62d9f81d6..cc6c128bc 100644 --- a/packages/shared/src/acp/registry-generated.ts +++ b/packages/shared/src/acp/registry-generated.ts @@ -7,7 +7,7 @@ import type { RegistryAcpAgent } from '../ai'; export const ACP_REGISTRY_SOURCE_URL = 'https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json'; export const ACP_REGISTRY_GENERATED_AT = '2026-08-31T14:29:21.079Z'; -export const EXCLUDED_REMOTE_REGISTRY_AGENT_IDS = ['claude-acp', 'claude-p', 'codex-acp', 'grok-build'] as const; +export const EXCLUDED_REMOTE_REGISTRY_AGENT_IDS = ['claude-acp', 'claude-p', 'codex-acp', 'factory-droid', 'grok-build'] as const; export const HARDCODED_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { @@ -35,6 +35,27 @@ export const HARDCODED_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ } } } + }, + { + id: 'factory-droid', + name: 'Factory Droid', + version: '0.211.0', + description: 'Factory Droid - AI coding agent powered by Factory AI', + icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/factory-droid.svg', + distribution: { + npx: { + package: 'droid@0.211.0', + args: [ + 'exec', + '--output-format', + 'acp' + ], + env: { + DROID_DISABLE_AUTO_UPDATE: 'true', + FACTORY_DROID_AUTO_UPDATE_ENABLED: 'false' + } + } + } } ]; @@ -415,27 +436,6 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ } } }, - { - id: 'factory-droid', - name: 'Factory Droid', - version: '0.208.2', - description: 'Factory Droid - AI coding agent powered by Factory AI', - icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/factory-droid.svg', - distribution: { - npx: { - package: 'droid@0.208.2', - args: [ - 'exec', - '--output-format', - 'acp-daemon' - ], - env: { - DROID_DISABLE_AUTO_UPDATE: 'true', - FACTORY_DROID_AUTO_UPDATE_ENABLED: 'false' - } - } - } - }, { id: 'fast-agent', name: 'fast-agent', diff --git a/scripts/generate-acp-registry.mjs b/scripts/generate-acp-registry.mjs index e76b08bcb..ffe0a5e6b 100644 --- a/scripts/generate-acp-registry.mjs +++ b/scripts/generate-acp-registry.mjs @@ -9,10 +9,12 @@ const EXCLUDED_REMOTE_REGISTRY_AGENT_IDS = new Set([ 'claude-acp', 'claude-p', 'codex-acp', + 'factory-droid', 'grok-build', ]); const OFFICIAL_NPM_REGISTRY = 'https://registry.npmjs.org/'; const INTERACTIVE_CLAUDE_ACP_VERSION = '0.1.5'; +const FACTORY_DROID_ACP_VERSION = '0.211.0'; const INTERACTIVE_CLAUDE_REGISTRY_AGENT = { id: 'claude-p', name: 'Interactive Claude', @@ -39,6 +41,23 @@ const INTERACTIVE_CLAUDE_REGISTRY_AGENT = { }, }, }; +const FACTORY_DROID_REGISTRY_AGENT = { + id: 'factory-droid', + name: 'Factory Droid', + version: FACTORY_DROID_ACP_VERSION, + description: 'Factory Droid - AI coding agent powered by Factory AI', + icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/factory-droid.svg', + distribution: { + npx: { + package: `droid@${FACTORY_DROID_ACP_VERSION}`, + args: ['exec', '--output-format', 'acp'], + env: { + DROID_DISABLE_AUTO_UPDATE: 'true', + FACTORY_DROID_AUTO_UPDATE_ENABLED: 'false', + }, + }, + }, +}; const LOCAL_REGISTRY_AGENTS = { 'amp-acp': { command: 'npx', @@ -317,10 +336,11 @@ import type { RegistryAcpAgent } from '../ai'; export const ACP_REGISTRY_SOURCE_URL = '${REGISTRY_URL}'; export const ACP_REGISTRY_GENERATED_AT = '${generatedAt}'; -export const EXCLUDED_REMOTE_REGISTRY_AGENT_IDS = ['claude-acp', 'claude-p', 'codex-acp', 'grok-build'] as const; +export const EXCLUDED_REMOTE_REGISTRY_AGENT_IDS = ['claude-acp', 'claude-p', 'codex-acp', 'factory-droid', 'grok-build'] as const; export const HARDCODED_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = ${toTsObjectLiteral([ INTERACTIVE_CLAUDE_REGISTRY_AGENT, + FACTORY_DROID_REGISTRY_AGENT, ])}; const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = ${toTsObjectLiteral(normalized)}; From ab58a137988e285fae0e7d297f4625534d841c4f Mon Sep 17 00:00:00 2001 From: specter119 Date: Fri, 4 Sep 2026 22:18:44 +0800 Subject: [PATCH 2/3] fix: source Factory Droid ACP version from registry --- apps/cli/tests/agent-setting.test.ts | 29 ++-- packages/shared/src/acp/registry-generated.ts | 138 +++++++++--------- scripts/generate-acp-registry.mjs | 42 +++--- 3 files changed, 103 insertions(+), 106 deletions(-) diff --git a/apps/cli/tests/agent-setting.test.ts b/apps/cli/tests/agent-setting.test.ts index 72514ea31..39a0988b4 100644 --- a/apps/cli/tests/agent-setting.test.ts +++ b/apps/cli/tests/agent-setting.test.ts @@ -337,31 +337,26 @@ describe('resolveBuiltinACPSetting', () => { }); }); - it('uses the pinned direct ACP launch for Factory Droid', () => { + it('uses the direct ACP launch from the Factory Droid registry entry', () => { const agent = getRegistryAgent('factory-droid'); + const npx = agent.distribution.npx; + if (!npx) { + throw new Error('Expected Factory Droid to have an npx distribution'); + } - expect(agent.version).toBe('0.211.0'); - expect(agent.distribution.npx).toEqual({ - package: 'droid@0.211.0', - args: ['exec', '--output-format', 'acp'], - env: { - DROID_DISABLE_AUTO_UPDATE: 'true', - FACTORY_DROID_AUTO_UPDATE_ENABLED: 'false', - }, - }); + expect(npx.package).toBe(`droid@${agent.version}`); + expect(npx.args).toEqual(expect.arrayContaining(['exec', '--output-format', 'acp'])); + expect(npx.args).not.toContain('acp-daemon'); expect(resolveACPSetting({ cliType: 'registry', agentType: 'factory-droid' })).toEqual({ - status: { agent: 'Factory Droid@0.211.0', command: 'npx' }, + status: { agent: `Factory Droid@${agent.version}`, command: 'npx' }, exec: { command: 'npx', - args: ['--prefer-offline', '-y', 'droid@0.211.0', 'exec', '--output-format', 'acp'], - env: { - DROID_DISABLE_AUTO_UPDATE: 'true', - FACTORY_DROID_AUTO_UPDATE_ENABLED: 'false', - }, + args: ['--prefer-offline', '-y', npx.package, ...(npx.args ?? [])], + env: npx.env, }, }); expect(getAcpCapabilitySourceVersion({ cliType: 'registry', agentType: 'factory-droid' })).toBe( - 'factory-droid@0.211.0' + `factory-droid@${agent.version}` ); }); diff --git a/packages/shared/src/acp/registry-generated.ts b/packages/shared/src/acp/registry-generated.ts index cc6c128bc..e8764d76a 100644 --- a/packages/shared/src/acp/registry-generated.ts +++ b/packages/shared/src/acp/registry-generated.ts @@ -1,13 +1,13 @@ /* eslint-disable */ // This file is auto-generated by scripts/generate-acp-registry.mjs // Source: https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json -// Generated at: 2026-08-31T14:29:21.079Z +// Generated at: 2026-09-04T14:16:45.105Z import type { RegistryAcpAgent } from '../ai'; export const ACP_REGISTRY_SOURCE_URL = 'https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json'; -export const ACP_REGISTRY_GENERATED_AT = '2026-08-31T14:29:21.079Z'; -export const EXCLUDED_REMOTE_REGISTRY_AGENT_IDS = ['claude-acp', 'claude-p', 'codex-acp', 'factory-droid', 'grok-build'] as const; +export const ACP_REGISTRY_GENERATED_AT = '2026-09-04T14:16:45.105Z'; +export const EXCLUDED_REMOTE_REGISTRY_AGENT_IDS = ['claude-acp', 'claude-p', 'codex-acp', 'grok-build'] as const; export const HARDCODED_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { @@ -35,27 +35,6 @@ export const HARDCODED_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ } } } - }, - { - id: 'factory-droid', - name: 'Factory Droid', - version: '0.211.0', - description: 'Factory Droid - AI coding agent powered by Factory AI', - icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/factory-droid.svg', - distribution: { - npx: { - package: 'droid@0.211.0', - args: [ - 'exec', - '--output-format', - 'acp' - ], - env: { - DROID_DISABLE_AUTO_UPDATE: 'true', - FACTORY_DROID_AUTO_UPDATE_ENABLED: 'false' - } - } - } } ]; @@ -97,35 +76,35 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'antigravity-acp', name: 'Google Antigravity', - version: '1.0.0', + version: '1.1.1', description: 'Google’s AI coding agent', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/antigravity-acp.svg', distribution: { binary: { 'darwin-aarch64': { - archive: 'https://dl.google.com/agy-extensions/releases/macos/agy-acp-server-agy_acp_server_20260818_01_RC01-darwin-arm64.zip', + archive: 'https://dl.google.com/agy-extensions/releases/macos/agy-acp-server-agy_acp_server_1.1.1-darwin-arm64.zip', cmd: './agy_acp_server.par' }, 'linux-x86_64': { - archive: 'https://dl.google.com/agy-extensions/releases/linux/agy-acp-server-agy_acp_server_20260818_01_RC01-linux-x86_64.zip', + archive: 'https://dl.google.com/agy-extensions/releases/linux/agy-acp-server-agy_acp_server_1.1.1-linux-x86_64.zip', cmd: './agy_acp_server.par', args: [ '--uid=' ] }, 'linux-aarch64': { - archive: 'https://dl.google.com/agy-extensions/releases/linux/agy-acp-server-agy_acp_server_20260818_01_RC01-linux-arm64.zip', + archive: 'https://dl.google.com/agy-extensions/releases/linux/agy-acp-server-agy_acp_server_1.1.1-linux-arm64.zip', cmd: './agy_acp_server.par', args: [ '--uid=' ] }, 'windows-x86_64': { - archive: 'https://dl.google.com/agy-extensions/releases/windows/agy-acp-server-agy_acp_server_20260818_01_RC01-windows-x86_64.zip', + archive: 'https://dl.google.com/agy-extensions/releases/windows/agy-acp-server-agy_acp_server_1.1.1-windows-x86_64.zip', cmd: './agy_acp_server.exe' }, 'windows-aarch64': { - archive: 'https://dl.google.com/agy-extensions/releases/windows/agy-acp-server-agy_acp_server_20260818_01_RC01-windows-arm64.zip', + archive: 'https://dl.google.com/agy-extensions/releases/windows/agy-acp-server-agy_acp_server_1.1.1-windows-arm64.zip', cmd: './agy_acp_server.exe' } } @@ -164,12 +143,12 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'cline', name: 'Cline', - version: '3.0.60', + version: '3.0.61', description: 'Autonomous coding agent CLI - capable of creating/editing files, running commands, using the browser, and more', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/cline.svg', distribution: { npx: { - package: 'cline@3.0.60', + package: 'cline@3.0.61', args: [ '--acp' ] @@ -179,12 +158,12 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'codebuddy-code', name: 'Codebuddy Code', - version: '2.142.0', + version: '2.143.1', description: 'Tencent Cloud\'s official intelligent coding tool', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/codebuddy-code.svg', distribution: { npx: { - package: '@tencent-ai/codebuddy-code@2.142.0', + package: '@tencent-ai/codebuddy-code@2.143.1', args: [ '--acp' ] @@ -326,7 +305,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'cursor', name: 'Cursor', - version: '2026.08.11', + version: '2026.08.31', description: 'Cursor\'s coding agent', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/cursor.svg', distribution: { @@ -356,48 +335,48 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'devin', name: 'Devin', - version: '3000.6.7', + version: '3000.6.14', description: 'Devin CLI coding agent by Cognition', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/devin.svg', distribution: { binary: { 'darwin-aarch64': { - archive: 'https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-aarch64-apple-darwin.tar.gz', + archive: 'https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-aarch64-apple-darwin.tar.gz', cmd: './bin/devin', args: [ 'acp' ] }, 'darwin-x86_64': { - archive: 'https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-x86_64-apple-darwin.tar.gz', + archive: 'https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-x86_64-apple-darwin.tar.gz', cmd: './bin/devin', args: [ 'acp' ] }, 'linux-aarch64': { - archive: 'https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-aarch64-unknown-linux.tar.gz', + archive: 'https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-aarch64-unknown-linux.tar.gz', cmd: './bin/devin', args: [ 'acp' ] }, 'linux-x86_64': { - archive: 'https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-x86_64-unknown-linux.tar.gz', + archive: 'https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-x86_64-unknown-linux.tar.gz', cmd: './bin/devin', args: [ 'acp' ] }, 'windows-aarch64': { - archive: 'https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-aarch64-pc-windows.zip', + archive: 'https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-aarch64-pc-windows.zip', cmd: './bin\\devin.exe', args: [ 'acp' ] }, 'windows-x86_64': { - archive: 'https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-x86_64-pc-windows.zip', + archive: 'https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-x86_64-pc-windows.zip', cmd: './bin\\devin.exe', args: [ 'acp' @@ -409,12 +388,12 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'dimcode', name: 'DimCode', - version: '0.3.22', + version: '0.3.28', description: 'A coding agent that puts leading models at your command.', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/dimcode.svg', distribution: { npx: { - package: 'dimcode@0.3.22', + package: 'dimcode@0.3.28', args: [ 'acp' ] @@ -424,18 +403,39 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'dirac', name: 'Dirac', - version: '0.5.2', + version: '0.5.6', description: 'Reduces API costs by more than 50%, produces better and faster work. Uses Hash anchored parallel edits, AST manipulation and a whole lot of neat optimizations. Fully Open Source.', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/dirac.svg', distribution: { npx: { - package: 'dirac-cli@0.5.2', + package: 'dirac-cli@0.5.6', args: [ '--acp' ] } } }, + { + id: 'factory-droid', + name: 'Factory Droid', + version: '0.212.0', + description: 'Factory Droid - AI coding agent powered by Factory AI', + icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/factory-droid.svg', + distribution: { + npx: { + package: 'droid@0.212.0', + args: [ + 'exec', + '--output-format', + 'acp' + ], + env: { + DROID_DISABLE_AUTO_UPDATE: 'true', + FACTORY_DROID_AUTO_UPDATE_ENABLED: 'false' + } + } + } + }, { id: 'fast-agent', name: 'fast-agent', @@ -457,12 +457,12 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'gemini', name: 'Gemini CLI', - version: '0.57.0', + version: '0.58.0', description: 'Google\'s official CLI for Gemini', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/gemini.svg', distribution: { npx: { - package: '@google/gemini-cli@0.57.0', + package: '@google/gemini-cli@0.58.0', args: [ '--acp' ] @@ -487,19 +487,19 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'glm-acp-agent', name: 'GLM Agent', - version: '1.7.0', + version: '1.8.0', description: 'ACP agent powered by Zhipu AI\'s GLM Coding Plan models (glm-5.1, glm-5-turbo, glm-4.7, glm-4.5-air). Supports streaming, tool calls, mid-session model switching, image input via Z.AI Coding Plan Vision MCP, and session load/fork/resume with on-disk persistence.', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/glm-acp-agent.svg', distribution: { npx: { - package: 'glm-acp-agent@1.7.0' + package: 'glm-acp-agent@1.8.0' } } }, { id: 'goose', name: 'goose', - version: '1.48.0', + version: '1.49.0', description: 'A local, extensible, open source AI agent that automates engineering tasks', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/goose.svg', distribution: { @@ -517,13 +517,13 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'harn', name: 'Harn', - version: '0.10.124', + version: '0.10.128', description: 'Harn runs .harn agent pipelines as a native ACP coding agent over stdio.', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/harn.svg', distribution: { binary: { 'darwin-aarch64': { - archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.124/harn-aarch64-apple-darwin.tar.gz', + archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.128/harn-aarch64-apple-darwin.tar.gz', cmd: './harn', args: [ 'serve', @@ -531,7 +531,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ ] }, 'darwin-x86_64': { - archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.124/harn-x86_64-apple-darwin.tar.gz', + archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.128/harn-x86_64-apple-darwin.tar.gz', cmd: './harn', args: [ 'serve', @@ -539,7 +539,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ ] }, 'linux-aarch64': { - archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.124/harn-aarch64-unknown-linux-gnu.tar.gz', + archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.128/harn-aarch64-unknown-linux-gnu.tar.gz', cmd: './harn', args: [ 'serve', @@ -547,7 +547,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ ] }, 'linux-x86_64': { - archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.124/harn-x86_64-unknown-linux-gnu.tar.gz', + archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.128/harn-x86_64-unknown-linux-gnu.tar.gz', cmd: './harn', args: [ 'serve', @@ -555,7 +555,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ ] }, 'windows-x86_64': { - archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.124/harn-x86_64-pc-windows-msvc.zip', + archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.128/harn-x86_64-pc-windows-msvc.zip', cmd: 'harn.exe', args: [ 'serve', @@ -568,7 +568,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'junie', name: 'Junie', - version: '3032.2.0', + version: '3123.3.0', description: 'AI Coding Agent by JetBrains', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/junie.svg', distribution: { @@ -586,47 +586,47 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'kilo', name: 'Kilo', - version: '7.5.6', + version: '7.5.9', description: 'The open source coding agent', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/kilo.svg', distribution: { npx: { - package: '@kilocode/cli@7.5.6', + package: '@kilocode/cli@7.5.9', args: [ 'acp' ] }, binary: { 'darwin-aarch64': { - archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.6/kilo-darwin-arm64.zip', + archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.9/kilo-darwin-arm64.zip', cmd: './kilo', args: [ 'acp' ] }, 'darwin-x86_64': { - archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.6/kilo-darwin-x64.zip', + archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.9/kilo-darwin-x64.zip', cmd: './kilo', args: [ 'acp' ] }, 'linux-aarch64': { - archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.6/kilo-linux-arm64.tar.gz', + archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.9/kilo-linux-arm64.tar.gz', cmd: './kilo', args: [ 'acp' ] }, 'linux-x86_64': { - archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.6/kilo-linux-x64.tar.gz', + archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.9/kilo-linux-x64.tar.gz', cmd: './kilo', args: [ 'acp' ] }, 'windows-x86_64': { - archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.6/kilo-windows-x64.zip', + archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.9/kilo-windows-x64.zip', cmd: './kilo.exe', args: [ 'acp' @@ -638,7 +638,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'kimi', name: 'Kimi CLI', - version: '1.49.0', + version: '1.50.0', description: 'Moonshot AI\'s coding assistant', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/kimi.svg', distribution: { @@ -723,7 +723,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'opencode', name: 'OpenCode', - version: '1.18.25', + version: '1.18.27', description: 'The open source coding agent', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/opencode.svg', distribution: { @@ -821,12 +821,12 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'qwen-code', name: 'Qwen Code', - version: '0.22.3', + version: '0.23.0', description: 'Alibaba\'s Qwen coding assistant', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/qwen-code.svg', distribution: { npx: { - package: '@qwen-code/qwen-code@0.22.3', + package: '@qwen-code/qwen-code@0.23.0', args: [ '--acp', '--experimental-skills' diff --git a/scripts/generate-acp-registry.mjs b/scripts/generate-acp-registry.mjs index ffe0a5e6b..59ebabb52 100644 --- a/scripts/generate-acp-registry.mjs +++ b/scripts/generate-acp-registry.mjs @@ -9,12 +9,10 @@ const EXCLUDED_REMOTE_REGISTRY_AGENT_IDS = new Set([ 'claude-acp', 'claude-p', 'codex-acp', - 'factory-droid', 'grok-build', ]); const OFFICIAL_NPM_REGISTRY = 'https://registry.npmjs.org/'; const INTERACTIVE_CLAUDE_ACP_VERSION = '0.1.5'; -const FACTORY_DROID_ACP_VERSION = '0.211.0'; const INTERACTIVE_CLAUDE_REGISTRY_AGENT = { id: 'claude-p', name: 'Interactive Claude', @@ -41,21 +39,12 @@ const INTERACTIVE_CLAUDE_REGISTRY_AGENT = { }, }, }; -const FACTORY_DROID_REGISTRY_AGENT = { - id: 'factory-droid', - name: 'Factory Droid', - version: FACTORY_DROID_ACP_VERSION, - description: 'Factory Droid - AI coding agent powered by Factory AI', - icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/factory-droid.svg', - distribution: { - npx: { - package: `droid@${FACTORY_DROID_ACP_VERSION}`, - args: ['exec', '--output-format', 'acp'], - env: { - DROID_DISABLE_AUTO_UPDATE: 'true', - FACTORY_DROID_AUTO_UPDATE_ENABLED: 'false', - }, - }, +// Keep Factory Droid's version, package, and metadata sourced from the registry, +// but avoid the daemon wrapper that breaks MCP forwarding to the child CLI. +const REGISTRY_AGENT_ARGUMENT_REPLACEMENTS = { + 'factory-droid': { + from: 'acp-daemon', + to: 'acp', }, }; const LOCAL_REGISTRY_AGENTS = { @@ -208,6 +197,20 @@ function normalizeDistribution(value) { : null; } +function replaceRegistryAgentArguments(id, distribution) { + const replacement = REGISTRY_AGENT_ARGUMENT_REPLACEMENTS[id]; + const args = distribution.npx?.args; + if (!replacement || !args) return distribution; + + return { + ...distribution, + npx: { + ...distribution.npx, + args: args.map((arg) => (arg === replacement.from ? replacement.to : arg)), + }, + }; +} + function normalizeRegistryAgent(agent) { if (!isRecord(agent)) return null; const id = typeof agent.id === 'string' ? agent.id.trim() : ''; @@ -235,7 +238,7 @@ function normalizeRegistryAgent(agent) { version, description: typeof agent.description === 'string' ? agent.description : undefined, icon: typeof agent.icon === 'string' ? agent.icon : undefined, - distribution, + distribution: replaceRegistryAgentArguments(id, distribution), }; } @@ -336,11 +339,10 @@ import type { RegistryAcpAgent } from '../ai'; export const ACP_REGISTRY_SOURCE_URL = '${REGISTRY_URL}'; export const ACP_REGISTRY_GENERATED_AT = '${generatedAt}'; -export const EXCLUDED_REMOTE_REGISTRY_AGENT_IDS = ['claude-acp', 'claude-p', 'codex-acp', 'factory-droid', 'grok-build'] as const; +export const EXCLUDED_REMOTE_REGISTRY_AGENT_IDS = ['claude-acp', 'claude-p', 'codex-acp', 'grok-build'] as const; export const HARDCODED_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = ${toTsObjectLiteral([ INTERACTIVE_CLAUDE_REGISTRY_AGENT, - FACTORY_DROID_REGISTRY_AGENT, ])}; const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = ${toTsObjectLiteral(normalized)}; From a2b7b5b47c36249cc42d485b33c03767b5a8f9f5 Mon Sep 17 00:00:00 2001 From: specter119 Date: Fri, 4 Sep 2026 22:27:27 +0800 Subject: [PATCH 3/3] fix: simplify Factory Droid registry override --- packages/shared/src/acp/registry-generated.ts | 94 +++++++++---------- scripts/generate-acp-registry.mjs | 30 ++---- 2 files changed, 54 insertions(+), 70 deletions(-) diff --git a/packages/shared/src/acp/registry-generated.ts b/packages/shared/src/acp/registry-generated.ts index e8764d76a..656fe186a 100644 --- a/packages/shared/src/acp/registry-generated.ts +++ b/packages/shared/src/acp/registry-generated.ts @@ -1,12 +1,12 @@ /* eslint-disable */ // This file is auto-generated by scripts/generate-acp-registry.mjs // Source: https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json -// Generated at: 2026-09-04T14:16:45.105Z +// Generated at: 2026-08-31T14:29:21.079Z import type { RegistryAcpAgent } from '../ai'; export const ACP_REGISTRY_SOURCE_URL = 'https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json'; -export const ACP_REGISTRY_GENERATED_AT = '2026-09-04T14:16:45.105Z'; +export const ACP_REGISTRY_GENERATED_AT = '2026-08-31T14:29:21.079Z'; export const EXCLUDED_REMOTE_REGISTRY_AGENT_IDS = ['claude-acp', 'claude-p', 'codex-acp', 'grok-build'] as const; export const HARDCODED_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ @@ -76,35 +76,35 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'antigravity-acp', name: 'Google Antigravity', - version: '1.1.1', + version: '1.0.0', description: 'Google’s AI coding agent', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/antigravity-acp.svg', distribution: { binary: { 'darwin-aarch64': { - archive: 'https://dl.google.com/agy-extensions/releases/macos/agy-acp-server-agy_acp_server_1.1.1-darwin-arm64.zip', + archive: 'https://dl.google.com/agy-extensions/releases/macos/agy-acp-server-agy_acp_server_20260818_01_RC01-darwin-arm64.zip', cmd: './agy_acp_server.par' }, 'linux-x86_64': { - archive: 'https://dl.google.com/agy-extensions/releases/linux/agy-acp-server-agy_acp_server_1.1.1-linux-x86_64.zip', + archive: 'https://dl.google.com/agy-extensions/releases/linux/agy-acp-server-agy_acp_server_20260818_01_RC01-linux-x86_64.zip', cmd: './agy_acp_server.par', args: [ '--uid=' ] }, 'linux-aarch64': { - archive: 'https://dl.google.com/agy-extensions/releases/linux/agy-acp-server-agy_acp_server_1.1.1-linux-arm64.zip', + archive: 'https://dl.google.com/agy-extensions/releases/linux/agy-acp-server-agy_acp_server_20260818_01_RC01-linux-arm64.zip', cmd: './agy_acp_server.par', args: [ '--uid=' ] }, 'windows-x86_64': { - archive: 'https://dl.google.com/agy-extensions/releases/windows/agy-acp-server-agy_acp_server_1.1.1-windows-x86_64.zip', + archive: 'https://dl.google.com/agy-extensions/releases/windows/agy-acp-server-agy_acp_server_20260818_01_RC01-windows-x86_64.zip', cmd: './agy_acp_server.exe' }, 'windows-aarch64': { - archive: 'https://dl.google.com/agy-extensions/releases/windows/agy-acp-server-agy_acp_server_1.1.1-windows-arm64.zip', + archive: 'https://dl.google.com/agy-extensions/releases/windows/agy-acp-server-agy_acp_server_20260818_01_RC01-windows-arm64.zip', cmd: './agy_acp_server.exe' } } @@ -143,12 +143,12 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'cline', name: 'Cline', - version: '3.0.61', + version: '3.0.60', description: 'Autonomous coding agent CLI - capable of creating/editing files, running commands, using the browser, and more', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/cline.svg', distribution: { npx: { - package: 'cline@3.0.61', + package: 'cline@3.0.60', args: [ '--acp' ] @@ -158,12 +158,12 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'codebuddy-code', name: 'Codebuddy Code', - version: '2.143.1', + version: '2.142.0', description: 'Tencent Cloud\'s official intelligent coding tool', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/codebuddy-code.svg', distribution: { npx: { - package: '@tencent-ai/codebuddy-code@2.143.1', + package: '@tencent-ai/codebuddy-code@2.142.0', args: [ '--acp' ] @@ -305,7 +305,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'cursor', name: 'Cursor', - version: '2026.08.31', + version: '2026.08.11', description: 'Cursor\'s coding agent', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/cursor.svg', distribution: { @@ -335,48 +335,48 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'devin', name: 'Devin', - version: '3000.6.14', + version: '3000.6.7', description: 'Devin CLI coding agent by Cognition', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/devin.svg', distribution: { binary: { 'darwin-aarch64': { - archive: 'https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-aarch64-apple-darwin.tar.gz', + archive: 'https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-aarch64-apple-darwin.tar.gz', cmd: './bin/devin', args: [ 'acp' ] }, 'darwin-x86_64': { - archive: 'https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-x86_64-apple-darwin.tar.gz', + archive: 'https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-x86_64-apple-darwin.tar.gz', cmd: './bin/devin', args: [ 'acp' ] }, 'linux-aarch64': { - archive: 'https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-aarch64-unknown-linux.tar.gz', + archive: 'https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-aarch64-unknown-linux.tar.gz', cmd: './bin/devin', args: [ 'acp' ] }, 'linux-x86_64': { - archive: 'https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-x86_64-unknown-linux.tar.gz', + archive: 'https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-x86_64-unknown-linux.tar.gz', cmd: './bin/devin', args: [ 'acp' ] }, 'windows-aarch64': { - archive: 'https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-aarch64-pc-windows.zip', + archive: 'https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-aarch64-pc-windows.zip', cmd: './bin\\devin.exe', args: [ 'acp' ] }, 'windows-x86_64': { - archive: 'https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-x86_64-pc-windows.zip', + archive: 'https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-x86_64-pc-windows.zip', cmd: './bin\\devin.exe', args: [ 'acp' @@ -388,12 +388,12 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'dimcode', name: 'DimCode', - version: '0.3.28', + version: '0.3.22', description: 'A coding agent that puts leading models at your command.', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/dimcode.svg', distribution: { npx: { - package: 'dimcode@0.3.28', + package: 'dimcode@0.3.22', args: [ 'acp' ] @@ -403,12 +403,12 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'dirac', name: 'Dirac', - version: '0.5.6', + version: '0.5.2', description: 'Reduces API costs by more than 50%, produces better and faster work. Uses Hash anchored parallel edits, AST manipulation and a whole lot of neat optimizations. Fully Open Source.', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/dirac.svg', distribution: { npx: { - package: 'dirac-cli@0.5.6', + package: 'dirac-cli@0.5.2', args: [ '--acp' ] @@ -457,12 +457,12 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'gemini', name: 'Gemini CLI', - version: '0.58.0', + version: '0.57.0', description: 'Google\'s official CLI for Gemini', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/gemini.svg', distribution: { npx: { - package: '@google/gemini-cli@0.58.0', + package: '@google/gemini-cli@0.57.0', args: [ '--acp' ] @@ -487,19 +487,19 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'glm-acp-agent', name: 'GLM Agent', - version: '1.8.0', + version: '1.7.0', description: 'ACP agent powered by Zhipu AI\'s GLM Coding Plan models (glm-5.1, glm-5-turbo, glm-4.7, glm-4.5-air). Supports streaming, tool calls, mid-session model switching, image input via Z.AI Coding Plan Vision MCP, and session load/fork/resume with on-disk persistence.', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/glm-acp-agent.svg', distribution: { npx: { - package: 'glm-acp-agent@1.8.0' + package: 'glm-acp-agent@1.7.0' } } }, { id: 'goose', name: 'goose', - version: '1.49.0', + version: '1.48.0', description: 'A local, extensible, open source AI agent that automates engineering tasks', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/goose.svg', distribution: { @@ -517,13 +517,13 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'harn', name: 'Harn', - version: '0.10.128', + version: '0.10.124', description: 'Harn runs .harn agent pipelines as a native ACP coding agent over stdio.', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/harn.svg', distribution: { binary: { 'darwin-aarch64': { - archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.128/harn-aarch64-apple-darwin.tar.gz', + archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.124/harn-aarch64-apple-darwin.tar.gz', cmd: './harn', args: [ 'serve', @@ -531,7 +531,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ ] }, 'darwin-x86_64': { - archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.128/harn-x86_64-apple-darwin.tar.gz', + archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.124/harn-x86_64-apple-darwin.tar.gz', cmd: './harn', args: [ 'serve', @@ -539,7 +539,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ ] }, 'linux-aarch64': { - archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.128/harn-aarch64-unknown-linux-gnu.tar.gz', + archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.124/harn-aarch64-unknown-linux-gnu.tar.gz', cmd: './harn', args: [ 'serve', @@ -547,7 +547,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ ] }, 'linux-x86_64': { - archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.128/harn-x86_64-unknown-linux-gnu.tar.gz', + archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.124/harn-x86_64-unknown-linux-gnu.tar.gz', cmd: './harn', args: [ 'serve', @@ -555,7 +555,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ ] }, 'windows-x86_64': { - archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.128/harn-x86_64-pc-windows-msvc.zip', + archive: 'https://github.com/burin-labs/harn/releases/download/v0.10.124/harn-x86_64-pc-windows-msvc.zip', cmd: 'harn.exe', args: [ 'serve', @@ -568,7 +568,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'junie', name: 'Junie', - version: '3123.3.0', + version: '3032.2.0', description: 'AI Coding Agent by JetBrains', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/junie.svg', distribution: { @@ -586,47 +586,47 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'kilo', name: 'Kilo', - version: '7.5.9', + version: '7.5.6', description: 'The open source coding agent', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/kilo.svg', distribution: { npx: { - package: '@kilocode/cli@7.5.9', + package: '@kilocode/cli@7.5.6', args: [ 'acp' ] }, binary: { 'darwin-aarch64': { - archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.9/kilo-darwin-arm64.zip', + archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.6/kilo-darwin-arm64.zip', cmd: './kilo', args: [ 'acp' ] }, 'darwin-x86_64': { - archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.9/kilo-darwin-x64.zip', + archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.6/kilo-darwin-x64.zip', cmd: './kilo', args: [ 'acp' ] }, 'linux-aarch64': { - archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.9/kilo-linux-arm64.tar.gz', + archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.6/kilo-linux-arm64.tar.gz', cmd: './kilo', args: [ 'acp' ] }, 'linux-x86_64': { - archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.9/kilo-linux-x64.tar.gz', + archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.6/kilo-linux-x64.tar.gz', cmd: './kilo', args: [ 'acp' ] }, 'windows-x86_64': { - archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.9/kilo-windows-x64.zip', + archive: 'https://github.com/Kilo-Org/kilocode/releases/download/v7.5.6/kilo-windows-x64.zip', cmd: './kilo.exe', args: [ 'acp' @@ -638,7 +638,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'kimi', name: 'Kimi CLI', - version: '1.50.0', + version: '1.49.0', description: 'Moonshot AI\'s coding assistant', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/kimi.svg', distribution: { @@ -723,7 +723,7 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'opencode', name: 'OpenCode', - version: '1.18.27', + version: '1.18.25', description: 'The open source coding agent', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/opencode.svg', distribution: { @@ -821,12 +821,12 @@ const REMOTE_REGISTRY_ACP_AGENTS: RegistryAcpAgent[] = [ { id: 'qwen-code', name: 'Qwen Code', - version: '0.23.0', + version: '0.22.3', description: 'Alibaba\'s Qwen coding assistant', icon: 'https://cdn.agentclientprotocol.com/registry/v1/latest/qwen-code.svg', distribution: { npx: { - package: '@qwen-code/qwen-code@0.23.0', + package: '@qwen-code/qwen-code@0.22.3', args: [ '--acp', '--experimental-skills' diff --git a/scripts/generate-acp-registry.mjs b/scripts/generate-acp-registry.mjs index 59ebabb52..4bdbe04d2 100644 --- a/scripts/generate-acp-registry.mjs +++ b/scripts/generate-acp-registry.mjs @@ -39,14 +39,6 @@ const INTERACTIVE_CLAUDE_REGISTRY_AGENT = { }, }, }; -// Keep Factory Droid's version, package, and metadata sourced from the registry, -// but avoid the daemon wrapper that breaks MCP forwarding to the child CLI. -const REGISTRY_AGENT_ARGUMENT_REPLACEMENTS = { - 'factory-droid': { - from: 'acp-daemon', - to: 'acp', - }, -}; const LOCAL_REGISTRY_AGENTS = { 'amp-acp': { command: 'npx', @@ -197,20 +189,6 @@ function normalizeDistribution(value) { : null; } -function replaceRegistryAgentArguments(id, distribution) { - const replacement = REGISTRY_AGENT_ARGUMENT_REPLACEMENTS[id]; - const args = distribution.npx?.args; - if (!replacement || !args) return distribution; - - return { - ...distribution, - npx: { - ...distribution.npx, - args: args.map((arg) => (arg === replacement.from ? replacement.to : arg)), - }, - }; -} - function normalizeRegistryAgent(agent) { if (!isRecord(agent)) return null; const id = typeof agent.id === 'string' ? agent.id.trim() : ''; @@ -232,13 +210,19 @@ function normalizeRegistryAgent(agent) { return null; } + if (id === 'factory-droid' && distribution.npx?.args) { + distribution.npx.args = distribution.npx.args.map((arg) => + arg === 'acp-daemon' ? 'acp' : arg + ); + } + return { id, name, version, description: typeof agent.description === 'string' ? agent.description : undefined, icon: typeof agent.icon === 'string' ? agent.icon : undefined, - distribution: replaceRegistryAgentArguments(id, distribution), + distribution, }; }