@router-agent/runtime 0.0.0-stage → 0.3.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/claude.d.ts +51 -0
- package/dist/agents/claude.js +270 -0
- package/dist/agents/claude.js.map +1 -0
- package/dist/agents/codex.d.ts +36 -0
- package/dist/agents/codex.js +292 -0
- package/dist/agents/codex.js.map +1 -0
- package/dist/agents/profile.d.ts +39 -0
- package/dist/agents/profile.js +2 -0
- package/dist/agents/profile.js.map +1 -0
- package/dist/agents/registry.d.ts +21 -0
- package/dist/agents/registry.js +78 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/errors.d.ts +4 -0
- package/dist/errors.js +9 -0
- package/dist/errors.js.map +1 -0
- package/dist/evidence-gate.d.ts +78 -0
- package/dist/evidence-gate.js +196 -0
- package/dist/evidence-gate.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/naming.d.ts +23 -0
- package/dist/naming.js +40 -0
- package/dist/naming.js.map +1 -0
- package/dist/orca/commands.js +60 -0
- package/dist/orca/commands.js.map +1 -0
- package/dist/orca/index.js +452 -0
- package/dist/orca/index.js.map +1 -0
- package/dist/orca/options.js +33 -0
- package/dist/orca/options.js.map +1 -0
- package/dist/orca/report-poller.js +143 -0
- package/dist/orca/report-poller.js.map +1 -0
- package/dist/permissions/acp.d.ts +21 -0
- package/dist/permissions/acp.js +73 -0
- package/dist/permissions/acp.js.map +1 -0
- package/dist/permissions.d.ts +1 -0
- package/dist/permissions.js +2 -0
- package/dist/permissions.js.map +1 -0
- package/dist/plugins/loader.d.ts +46 -0
- package/dist/plugins/loader.js +117 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/types.d.ts +52 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/port.d.ts +295 -0
- package/dist/port.js +17 -0
- package/dist/port.js.map +1 -0
- package/dist/registry.d.ts +13 -0
- package/dist/registry.js +35 -0
- package/dist/registry.js.map +1 -0
- package/dist/report-poller.d.ts +58 -0
- package/dist/report-poller.js +130 -0
- package/dist/report-poller.js.map +1 -0
- package/dist/resume.d.ts +52 -0
- package/dist/resume.js +109 -0
- package/dist/resume.js.map +1 -0
- package/dist/runtimes/acp/admin.js +470 -0
- package/dist/runtimes/acp/admin.js.map +1 -0
- package/dist/runtimes/acp/agents.js +167 -0
- package/dist/runtimes/acp/agents.js.map +1 -0
- package/dist/runtimes/acp/detect.js +379 -0
- package/dist/runtimes/acp/detect.js.map +1 -0
- package/dist/runtimes/acp/index.js +633 -0
- package/dist/runtimes/acp/index.js.map +1 -0
- package/dist/runtimes/acp/install.js +264 -0
- package/dist/runtimes/acp/install.js.map +1 -0
- package/dist/runtimes/acp/permissions.js +83 -0
- package/dist/runtimes/acp/permissions.js.map +1 -0
- package/dist/runtimes/acp/protocol.js +207 -0
- package/dist/runtimes/acp/protocol.js.map +1 -0
- package/dist/runtimes/acp-agents.d.ts +85 -0
- package/dist/runtimes/acp-agents.js +167 -0
- package/dist/runtimes/acp-agents.js.map +1 -0
- package/dist/runtimes/acp-detect-utils.d.ts +4 -0
- package/dist/runtimes/acp-detect-utils.js +35 -0
- package/dist/runtimes/acp-detect-utils.js.map +1 -0
- package/dist/runtimes/builtin-options.d.ts +3 -0
- package/dist/runtimes/builtin-options.js +44 -0
- package/dist/runtimes/builtin-options.js.map +1 -0
- package/dist/runtimes/catalog.d.ts +31 -0
- package/dist/runtimes/catalog.js +75 -0
- package/dist/runtimes/catalog.js.map +1 -0
- package/dist/runtimes/claude-code/index.js +544 -0
- package/dist/runtimes/claude-code/index.js.map +1 -0
- package/dist/runtimes/claude-code/inject.js +71 -0
- package/dist/runtimes/claude-code/inject.js.map +1 -0
- package/dist/runtimes/codex/client.js +203 -0
- package/dist/runtimes/codex/client.js.map +1 -0
- package/dist/runtimes/codex/detect.js +240 -0
- package/dist/runtimes/codex/detect.js.map +1 -0
- package/dist/runtimes/codex/index.js +1066 -0
- package/dist/runtimes/codex/index.js.map +1 -0
- package/dist/runtimes/herdr/agents.js +38 -0
- package/dist/runtimes/herdr/agents.js.map +1 -0
- package/dist/runtimes/herdr/commands.js +68 -0
- package/dist/runtimes/herdr/commands.js.map +1 -0
- package/dist/runtimes/herdr/index.js +712 -0
- package/dist/runtimes/herdr/index.js.map +1 -0
- package/dist/runtimes/herdr/options.js +29 -0
- package/dist/runtimes/herdr/options.js.map +1 -0
- package/dist/runtimes/herdr/server.js +75 -0
- package/dist/runtimes/herdr/server.js.map +1 -0
- package/dist/runtimes/options.d.ts +60 -0
- package/dist/runtimes/options.js +89 -0
- package/dist/runtimes/options.js.map +1 -0
- package/dist/spec/contract.md +120 -0
- package/dist/spec/index.d.ts +35 -0
- package/dist/spec/index.js +59 -0
- package/dist/spec/index.js.map +1 -0
- package/dist/spec/prompt-mode.md +176 -0
- package/dist/spec/reader.d.ts +5 -0
- package/dist/spec/reader.js +32 -0
- package/dist/spec/reader.js.map +1 -0
- package/dist/status.d.ts +8 -0
- package/dist/status.js +22 -0
- package/dist/status.js.map +1 -0
- package/dist/workspaces/git-worktree.d.ts +44 -0
- package/dist/workspaces/git-worktree.js +183 -0
- package/dist/workspaces/git-worktree.js.map +1 -0
- package/dist/workspaces/overview.d.ts +66 -0
- package/dist/workspaces/overview.js +12 -0
- package/dist/workspaces/overview.js.map +1 -0
- package/package.json +36 -4
- package/README.md +0 -3
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ACP Agent 静态目录。
|
|
3
|
+
*
|
|
4
|
+
* 这里只放纯常量与纯函数,不能依赖任何 Node 内置模块 —— Web 面板会把它
|
|
5
|
+
* 一起打进前端包。探测、安装、spawn 等 Node-only 逻辑放在 detect.ts / install.ts。
|
|
6
|
+
*/
|
|
7
|
+
export interface AcpAgentRequirement {
|
|
8
|
+
/** 外部依赖命令,例如 codex。 */
|
|
9
|
+
command: string;
|
|
10
|
+
label: string;
|
|
11
|
+
/** 最低版本;仅作提示,真正兼容性以能力探测 / 完整握手为准。 */
|
|
12
|
+
minVersion?: string;
|
|
13
|
+
/** 能力探测参数,例如 ['app-server', '--help'];退出 0 视为具备该能力。 */
|
|
14
|
+
capabilityArgs?: readonly string[];
|
|
15
|
+
hint: string;
|
|
16
|
+
}
|
|
17
|
+
export interface AcpAgentMeta {
|
|
18
|
+
/** Agent 短 id,用于安装目录名(不能含冒号,Windows 文件名要合法)。 */
|
|
19
|
+
id: string;
|
|
20
|
+
/** 运行时 id,写入 runtime.default / runtime.projects / runtime.options。 */
|
|
21
|
+
runtimeId: string;
|
|
22
|
+
/** 产品名(自然大小写);Web 面板按首字母大写展示,CLI 与文档保持原样。 */
|
|
23
|
+
name: string;
|
|
24
|
+
label: string;
|
|
25
|
+
hint: string;
|
|
26
|
+
/** PATH 上的命令名;managed 安装时也是 node_modules/.bin 下的文件名。 */
|
|
27
|
+
command: string;
|
|
28
|
+
args: readonly string[];
|
|
29
|
+
/** 可由 ra 按需安装的 npm 包;缺省表示只能由用户自行安装。 */
|
|
30
|
+
package?: {
|
|
31
|
+
name: string;
|
|
32
|
+
version: string;
|
|
33
|
+
};
|
|
34
|
+
/** npm 包(ACP 扩展)的官方页面;Web 卡片用它跳转。 */
|
|
35
|
+
packageUrl?: string;
|
|
36
|
+
/** 底层 CLI;用于 Web 区分「安装 CLI」与「安装 ACP 扩展」。 */
|
|
37
|
+
cli?: {
|
|
38
|
+
command: string;
|
|
39
|
+
label: string;
|
|
40
|
+
installUrl: string;
|
|
41
|
+
};
|
|
42
|
+
/** 工具本身支持 ACP 时的官方安装页(没有独立 ACP 扩展)。 */
|
|
43
|
+
installUrl?: string;
|
|
44
|
+
/** 版本探测参数;默认 ['--version']。 */
|
|
45
|
+
probeArgs?: readonly string[];
|
|
46
|
+
/** 外部依赖检查。 */
|
|
47
|
+
requires?: readonly AcpAgentRequirement[];
|
|
48
|
+
/** 传给 Agent 的默认环境变量。 */
|
|
49
|
+
env?: Readonly<Record<string, string>>;
|
|
50
|
+
/** 登录命令(交互式);Web 只展示提示,不代跑。 */
|
|
51
|
+
login?: {
|
|
52
|
+
command: string;
|
|
53
|
+
args: readonly string[];
|
|
54
|
+
hint: string;
|
|
55
|
+
/** 非交互登录状态检查;退出 0 视为已登录。 */
|
|
56
|
+
check?: {
|
|
57
|
+
command: string;
|
|
58
|
+
args: readonly string[];
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
/** 无法在线安装时的提示。 */
|
|
62
|
+
installHint?: string;
|
|
63
|
+
/** 已测 / 文档声明的 session/load 能力。 */
|
|
64
|
+
loadSession?: boolean;
|
|
65
|
+
/** L0 版本探测不足以确认 ACP 模式,需要 `ra runtime check` 完整握手。 */
|
|
66
|
+
verifyRequired?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* 已有原生运行时替代品:Web 面板不再把它作为可选运行时展示,
|
|
69
|
+
* 但运行时 id、配置与已装扩展全部保留,老配置继续可用。
|
|
70
|
+
*/
|
|
71
|
+
deprecated?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export declare const ACP_AGENTS: readonly AcpAgentMeta[];
|
|
74
|
+
/** 按 agent id 或 runtime id 查目录项。 */
|
|
75
|
+
export declare function acpAgentOf(idOrRuntimeId: string): AcpAgentMeta | undefined;
|
|
76
|
+
/** 是否是目录内的动态 ACP 运行时 id(不含旧的通用 `acp`)。 */
|
|
77
|
+
export declare function isAcpRuntimeId(id: string): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* 是否是已有原生运行时替代品的 ACP 运行时(Claude Code / Codex)。
|
|
80
|
+
*
|
|
81
|
+
* 这类运行时 id 依旧合法、依旧能派工,只是 Web 面板不再把它们列为可选项。
|
|
82
|
+
*/
|
|
83
|
+
export declare function isDeprecatedAcpRuntimeId(id: string): boolean;
|
|
84
|
+
/** agent id → runtime id;未知 id 返回 null。 */
|
|
85
|
+
export declare function acpRuntimeIdOf(idOrRuntimeId: string): string | null;
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ACP Agent 静态目录。
|
|
3
|
+
*
|
|
4
|
+
* 这里只放纯常量与纯函数,不能依赖任何 Node 内置模块 —— Web 面板会把它
|
|
5
|
+
* 一起打进前端包。探测、安装、spawn 等 Node-only 逻辑放在 detect.ts / install.ts。
|
|
6
|
+
*/
|
|
7
|
+
export const ACP_AGENTS = [
|
|
8
|
+
{
|
|
9
|
+
id: 'claude',
|
|
10
|
+
runtimeId: 'acp-claude',
|
|
11
|
+
name: 'Claude Code',
|
|
12
|
+
label: 'Claude Code (ACP)',
|
|
13
|
+
hint: '通过 claude-agent-acp 接入,支持断线后 session/load 恢复',
|
|
14
|
+
command: 'claude-agent-acp',
|
|
15
|
+
args: [],
|
|
16
|
+
package: { name: '@agentclientprotocol/claude-agent-acp', version: '0.101.0' },
|
|
17
|
+
packageUrl: 'https://www.npmjs.com/package/@agentclientprotocol/claude-agent-acp',
|
|
18
|
+
cli: {
|
|
19
|
+
command: 'claude',
|
|
20
|
+
label: 'Claude Code CLI',
|
|
21
|
+
installUrl: 'https://docs.claude.com/en/docs/claude-code/setup',
|
|
22
|
+
},
|
|
23
|
+
probeArgs: ['--version'],
|
|
24
|
+
env: { CLAUDE_AGENT_ACP_PROTOCOL: 'v1' },
|
|
25
|
+
login: { command: 'claude', args: [], hint: '先完成 Claude Code 登录(claude 能正常对话)' },
|
|
26
|
+
loadSession: true,
|
|
27
|
+
// 已有 claude-code 内置运行时,Web 面板不再把它作为可选项展示。
|
|
28
|
+
deprecated: true,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: 'codex',
|
|
32
|
+
runtimeId: 'acp-codex',
|
|
33
|
+
name: 'Codex',
|
|
34
|
+
label: 'Codex (ACP)',
|
|
35
|
+
hint: 'baldaworks codex-acp;依赖本机 codex CLI,不支持断线恢复',
|
|
36
|
+
command: 'codex-acp',
|
|
37
|
+
args: ['--message-streaming'],
|
|
38
|
+
package: { name: 'codex-acp', version: '1.11.0' },
|
|
39
|
+
packageUrl: 'https://www.npmjs.com/package/codex-acp',
|
|
40
|
+
cli: {
|
|
41
|
+
command: 'codex',
|
|
42
|
+
label: 'OpenAI Codex CLI',
|
|
43
|
+
installUrl: 'https://github.com/openai/codex',
|
|
44
|
+
},
|
|
45
|
+
probeArgs: ['version'],
|
|
46
|
+
requires: [
|
|
47
|
+
{
|
|
48
|
+
command: 'codex',
|
|
49
|
+
label: 'Codex CLI',
|
|
50
|
+
capabilityArgs: ['app-server', '--help'],
|
|
51
|
+
hint: '需要本机安装 codex CLI,且版本包含 app-server 子命令',
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
login: {
|
|
55
|
+
command: 'codex-acp',
|
|
56
|
+
args: ['login'],
|
|
57
|
+
hint: '先运行 codex-acp login',
|
|
58
|
+
check: { command: 'codex', args: ['login', 'status'] },
|
|
59
|
+
},
|
|
60
|
+
loadSession: false,
|
|
61
|
+
// 已有 codex-app 内置运行时,Web 面板不再把它作为可选项展示。
|
|
62
|
+
deprecated: true,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
id: 'opencode',
|
|
66
|
+
runtimeId: 'acp-opencode',
|
|
67
|
+
name: 'OpenCode',
|
|
68
|
+
label: 'OpenCode',
|
|
69
|
+
hint: 'opencode acp 原生 ACP 模式',
|
|
70
|
+
command: 'opencode',
|
|
71
|
+
args: ['acp'],
|
|
72
|
+
probeArgs: ['--version'],
|
|
73
|
+
installHint: 'brew install opencode(或参考 opencode 官方安装说明)',
|
|
74
|
+
installUrl: 'https://opencode.ai/docs/',
|
|
75
|
+
cli: { command: 'opencode', label: 'OpenCode CLI', installUrl: 'https://opencode.ai/docs/' },
|
|
76
|
+
verifyRequired: true,
|
|
77
|
+
loadSession: true,
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
id: 'gemini',
|
|
81
|
+
runtimeId: 'acp-gemini',
|
|
82
|
+
name: 'Gemini CLI',
|
|
83
|
+
label: 'Gemini CLI',
|
|
84
|
+
hint: 'gemini --acp 实验性 ACP 模式',
|
|
85
|
+
command: 'gemini',
|
|
86
|
+
args: ['--acp'],
|
|
87
|
+
probeArgs: ['--version'],
|
|
88
|
+
installHint: 'npm i -g @google/gemini-cli',
|
|
89
|
+
installUrl: 'https://github.com/google-gemini/gemini-cli',
|
|
90
|
+
cli: { command: 'gemini', label: 'Gemini CLI', installUrl: 'https://github.com/google-gemini/gemini-cli' },
|
|
91
|
+
verifyRequired: true,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: 'copilot',
|
|
95
|
+
runtimeId: 'acp-copilot',
|
|
96
|
+
name: 'GitHub Copilot CLI',
|
|
97
|
+
label: 'GitHub Copilot CLI',
|
|
98
|
+
hint: 'copilot --acp --stdio',
|
|
99
|
+
command: 'copilot',
|
|
100
|
+
args: ['--acp', '--stdio'],
|
|
101
|
+
probeArgs: ['--version'],
|
|
102
|
+
installHint: '参考 GitHub Copilot CLI 官方安装说明',
|
|
103
|
+
installUrl: 'https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli',
|
|
104
|
+
cli: {
|
|
105
|
+
command: 'copilot',
|
|
106
|
+
label: 'GitHub Copilot CLI',
|
|
107
|
+
installUrl: 'https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli',
|
|
108
|
+
},
|
|
109
|
+
verifyRequired: true,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
id: 'cursor',
|
|
113
|
+
runtimeId: 'acp-cursor',
|
|
114
|
+
name: 'Cursor CLI',
|
|
115
|
+
label: 'Cursor CLI',
|
|
116
|
+
hint: 'cursor-agent acp;旧版本可能没有 acp 子命令',
|
|
117
|
+
command: 'cursor-agent',
|
|
118
|
+
args: ['acp'],
|
|
119
|
+
probeArgs: ['--version'],
|
|
120
|
+
installHint: '升级 cursor-agent 到支持 acp 子命令的版本',
|
|
121
|
+
installUrl: 'https://cursor.com/cli',
|
|
122
|
+
cli: { command: 'cursor-agent', label: 'Cursor CLI', installUrl: 'https://cursor.com/cli' },
|
|
123
|
+
verifyRequired: true,
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
id: 'goose',
|
|
127
|
+
runtimeId: 'acp-goose',
|
|
128
|
+
name: 'Goose',
|
|
129
|
+
label: 'Goose',
|
|
130
|
+
hint: 'goose acp 原生 ACP 模式',
|
|
131
|
+
command: 'goose',
|
|
132
|
+
args: ['acp'],
|
|
133
|
+
probeArgs: ['--version'],
|
|
134
|
+
installHint: 'brew install block-goose-cli(或参考 Goose 官方安装说明)',
|
|
135
|
+
installUrl: 'https://block.github.io/goose/docs/getting-started/installation',
|
|
136
|
+
cli: {
|
|
137
|
+
command: 'goose',
|
|
138
|
+
label: 'Goose CLI',
|
|
139
|
+
installUrl: 'https://block.github.io/goose/docs/getting-started/installation',
|
|
140
|
+
},
|
|
141
|
+
verifyRequired: true,
|
|
142
|
+
},
|
|
143
|
+
];
|
|
144
|
+
/** 按 agent id 或 runtime id 查目录项。 */
|
|
145
|
+
export function acpAgentOf(idOrRuntimeId) {
|
|
146
|
+
const value = idOrRuntimeId.trim();
|
|
147
|
+
return ACP_AGENTS.find(agent => agent.id === value || agent.runtimeId === value);
|
|
148
|
+
}
|
|
149
|
+
/** 是否是目录内的动态 ACP 运行时 id(不含旧的通用 `acp`)。 */
|
|
150
|
+
export function isAcpRuntimeId(id) {
|
|
151
|
+
const value = id.trim();
|
|
152
|
+
return ACP_AGENTS.some(agent => agent.runtimeId === value);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* 是否是已有原生运行时替代品的 ACP 运行时(Claude Code / Codex)。
|
|
156
|
+
*
|
|
157
|
+
* 这类运行时 id 依旧合法、依旧能派工,只是 Web 面板不再把它们列为可选项。
|
|
158
|
+
*/
|
|
159
|
+
export function isDeprecatedAcpRuntimeId(id) {
|
|
160
|
+
const value = id.trim();
|
|
161
|
+
return ACP_AGENTS.some(agent => agent.runtimeId === value && agent.deprecated === true);
|
|
162
|
+
}
|
|
163
|
+
/** agent id → runtime id;未知 id 返回 null。 */
|
|
164
|
+
export function acpRuntimeIdOf(idOrRuntimeId) {
|
|
165
|
+
return acpAgentOf(idOrRuntimeId)?.runtimeId ?? null;
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=acp-agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-agents.js","sourceRoot":"","sources":["../../../../../packages/runtime/src/runtimes/acp-agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** 在 PATH 里解析命令;支持 Windows 的 PATHEXT。返回绝对路径。 */
|
|
2
|
+
export declare function resolveExecutable(command: string, env: NodeJS.ProcessEnv): string | undefined;
|
|
3
|
+
/** 从 `--version` 输出里提取 x.y.z;找不到返回 undefined。 */
|
|
4
|
+
export declare function parseVersion(text: string): string | undefined;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 运行时共用的可执行文件解析与版本提取(纯函数,不 spawn)。
|
|
3
|
+
* ACP 插件与其它运行时插件都从这里取同一份语义。
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync } from 'node:fs';
|
|
6
|
+
import { delimiter, isAbsolute, join } from 'node:path';
|
|
7
|
+
/** 在 PATH 里解析命令;支持 Windows 的 PATHEXT。返回绝对路径。 */
|
|
8
|
+
export function resolveExecutable(command, env) {
|
|
9
|
+
const value = command.trim();
|
|
10
|
+
if (!value)
|
|
11
|
+
return undefined;
|
|
12
|
+
if (isAbsolute(value) || value.includes('/') || value.includes('\\')) {
|
|
13
|
+
return existsSync(value) ? value : undefined;
|
|
14
|
+
}
|
|
15
|
+
const pathValue = env.PATH ?? env.Path ?? '';
|
|
16
|
+
const extensions = process.platform === 'win32'
|
|
17
|
+
? ['', '.cmd', '.exe', '.bat']
|
|
18
|
+
: [''];
|
|
19
|
+
for (const dir of pathValue.split(delimiter)) {
|
|
20
|
+
if (!dir)
|
|
21
|
+
continue;
|
|
22
|
+
for (const ext of extensions) {
|
|
23
|
+
const candidate = join(dir, `${value}${ext}`);
|
|
24
|
+
if (existsSync(candidate))
|
|
25
|
+
return candidate;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
/** 从 `--version` 输出里提取 x.y.z;找不到返回 undefined。 */
|
|
31
|
+
export function parseVersion(text) {
|
|
32
|
+
const match = /(\d+\.\d+\.\d+(?:[-+][\w.-]+)?)/.exec(text);
|
|
33
|
+
return match?.[1];
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=acp-detect-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-detect-utils.js","sourceRoot":"","sources":["../../../../../packages/runtime/src/runtimes/acp-detect-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEvD,gDAAgD;AAChD,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,GAAsB;IACvE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IAC5B,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9C,CAAC;IACD,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC7C,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC9B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACR,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,GAAG;YAAE,SAAQ;QAClB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,EAAE,CAAC,CAAA;YAC7C,IAAI,UAAU,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAA;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1D,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export const ORCA_OPTION_SPEC = {
|
|
2
|
+
runtimeId: 'orca',
|
|
3
|
+
fields: [
|
|
4
|
+
{
|
|
5
|
+
key: 'agent',
|
|
6
|
+
label: '执行 Agent',
|
|
7
|
+
kind: 'select',
|
|
8
|
+
default: 'claude',
|
|
9
|
+
options: [
|
|
10
|
+
{ value: 'claude', label: 'claude · Claude Code' },
|
|
11
|
+
{ value: 'codex', label: 'codex · Codex' },
|
|
12
|
+
{ value: 'opencode', label: 'opencode · OpenCode' },
|
|
13
|
+
{ value: 'devin', label: 'devin · Devin' },
|
|
14
|
+
{ value: 'antigravity', label: 'antigravity · Antigravity' },
|
|
15
|
+
],
|
|
16
|
+
hint: 'Orca 在工单 worktree 里启动哪个 Agent;默认 Claude Code',
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
};
|
|
20
|
+
export const HERDR_OPTION_SPEC = {
|
|
21
|
+
runtimeId: 'herdr',
|
|
22
|
+
fields: [
|
|
23
|
+
{
|
|
24
|
+
key: 'agent',
|
|
25
|
+
label: '执行 Agent',
|
|
26
|
+
kind: 'select',
|
|
27
|
+
default: 'claude',
|
|
28
|
+
options: [
|
|
29
|
+
{ value: 'claude', label: 'claude · Claude Code' },
|
|
30
|
+
{ value: 'codex', label: 'codex · Codex' },
|
|
31
|
+
{ value: 'opencode', label: 'opencode · OpenCode' },
|
|
32
|
+
],
|
|
33
|
+
hint: 'Herdr 在工单 worktree 里启动哪个 Agent;默认 Claude Code',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
key: 'model',
|
|
37
|
+
label: '模型',
|
|
38
|
+
kind: 'text',
|
|
39
|
+
placeholder: '留空则用 Agent 自己的默认模型',
|
|
40
|
+
hint: '传给 Agent 的模型名;不同 Agent 的参数名由 adapter 自己映射',
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=builtin-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin-options.js","sourceRoot":"","sources":["../../../../../packages/runtime/src/runtimes/builtin-options.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE;QACN;YACE,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,sBAAsB,EAAE;gBAClD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE;gBAC1C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,qBAAqB,EAAE;gBACnD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE;gBAC1C,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,2BAA2B,EAAE;aAC7D;YACD,IAAI,EAAE,8CAA8C;SACrD;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,SAAS,EAAE,OAAO;IAClB,MAAM,EAAE;QACN;YACE,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,sBAAsB,EAAE;gBAClD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE;gBAC1C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,qBAAqB,EAAE;aACpD;YACD,IAAI,EAAE,+CAA+C;SACtD;QACD;YACE,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,oBAAoB;YACjC,IAAI,EAAE,2CAA2C;SAClD;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export declare const ORCA_RUNTIME_ID = "orca";
|
|
2
|
+
export declare const CLAUDE_CODE_RUNTIME_ID = "claude-code";
|
|
3
|
+
export declare const ACP_RUNTIME_ID = "acp";
|
|
4
|
+
export declare const CODEX_APP_RUNTIME_ID = "codex-app";
|
|
5
|
+
export declare const HERDR_RUNTIME_ID = "herdr";
|
|
6
|
+
export interface WorkerRuntimeMeta {
|
|
7
|
+
id: string;
|
|
8
|
+
/** 产品名(自然大小写);Web 面板按首字母大写展示,CLI 与文档保持原样。 */
|
|
9
|
+
name: string;
|
|
10
|
+
label: string;
|
|
11
|
+
hint: string;
|
|
12
|
+
/** 不能由 ra 自动安装时的界面引导文案。 */
|
|
13
|
+
installHint?: string;
|
|
14
|
+
/** CLI 的官方安装/下载页;Web 卡片直接跳转,不再展示易变的安装命令。 */
|
|
15
|
+
installUrl?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const WORKER_RUNTIMES: readonly WorkerRuntimeMeta[];
|
|
18
|
+
export declare const WORKER_RUNTIME_IDS: readonly string[];
|
|
19
|
+
/** 兼容旧配置与旧工单:claude-cli 已改名为 claude-code。 */
|
|
20
|
+
export declare const LEGACY_CLAUDE_CODE_RUNTIME_ID = "claude-cli";
|
|
21
|
+
export declare const LEGACY_RUNTIME_IDS: Readonly<Record<string, string>>;
|
|
22
|
+
/** 把历史 runtime id 归一成当前 id;未知 id 原样返回,交给注册表报错。 */
|
|
23
|
+
export declare function normalizeRuntimeId(id: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* 是否是已知的 worker runtime id。
|
|
26
|
+
*
|
|
27
|
+
* 包含内置运行时(orca / claude-code / codex-app / acp)和 ACP 目录里的动态运行时
|
|
28
|
+
* (acp-claude / acp-codex / ...)。未知值让配置校验直接拒绝,避免拼错后
|
|
29
|
+
* 启动期才炸。
|
|
30
|
+
*/
|
|
31
|
+
export declare function isWorkerRuntimeId(id: string): boolean;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker 运行时清单:配置校验、Web 面板下拉、CLI 提示共用这一份。
|
|
3
|
+
*
|
|
4
|
+
* 这里只放纯常量,不能依赖任何 Node 内置模块 —— Web 面板会把它一起打进前端包。
|
|
5
|
+
*/
|
|
6
|
+
import { ACP_AGENTS } from './acp-agents.js';
|
|
7
|
+
export const ORCA_RUNTIME_ID = 'orca';
|
|
8
|
+
export const CLAUDE_CODE_RUNTIME_ID = 'claude-code';
|
|
9
|
+
export const ACP_RUNTIME_ID = 'acp';
|
|
10
|
+
export const CODEX_APP_RUNTIME_ID = 'codex-app';
|
|
11
|
+
export const HERDR_RUNTIME_ID = 'herdr';
|
|
12
|
+
export const WORKER_RUNTIMES = [
|
|
13
|
+
{
|
|
14
|
+
id: ORCA_RUNTIME_ID,
|
|
15
|
+
name: 'Orca',
|
|
16
|
+
label: 'orca · Orca worktree + 终端',
|
|
17
|
+
hint: '通过 Orca 创建 worktree 并启动 Agent 终端(默认跟随 Orca 配置),交互与状态读取走 Orca',
|
|
18
|
+
installHint: '从 Orca 官方发布页下载安装,并确保 orca CLI 在 PATH 中',
|
|
19
|
+
installUrl: 'https://github.com/stablyai/orca/releases',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: CLAUDE_CODE_RUNTIME_ID,
|
|
23
|
+
name: 'Claude Code',
|
|
24
|
+
label: 'claude-code · git worktree + claude --bg',
|
|
25
|
+
hint: '直接调用 Claude Code CLI 的后台会话;项目 repo 需要填本地仓库绝对路径',
|
|
26
|
+
installHint: '参考 Claude Code 官方安装说明',
|
|
27
|
+
installUrl: 'https://docs.claude.com/en/docs/claude-code/setup',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
id: CODEX_APP_RUNTIME_ID,
|
|
31
|
+
name: 'Codex App',
|
|
32
|
+
label: 'codex-app · Codex App Server',
|
|
33
|
+
hint: '直连 Codex App Server;优先使用 Codex App 内置 CLI,桌面端可见同一 thread',
|
|
34
|
+
installHint: '安装 Codex App(macOS/Windows)或 Codex CLI;ra 会优先使用 Codex App 内置的版本',
|
|
35
|
+
installUrl: 'https://chatgpt.com/codex',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: ACP_RUNTIME_ID,
|
|
39
|
+
name: 'ACP',
|
|
40
|
+
label: 'acp · 任意 ACP Agent',
|
|
41
|
+
hint: '通过 ACP 协议接入其它 Agent;启用前需要在 runtime.options.acp 配置 command',
|
|
42
|
+
installHint: '在 config.yaml 的 runtime.options.acp 下配置 command 与 args,然后重启服务',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: HERDR_RUNTIME_ID,
|
|
46
|
+
name: 'Herdr',
|
|
47
|
+
label: 'herdr · git worktree + Herdr 终端',
|
|
48
|
+
hint: '检出由 ra 用 git worktree 建,Herdr 只开终端窗口跑 Agent;状态来自 Herdr 的 Agent 检测',
|
|
49
|
+
installHint: '从 Herdr 官方发布页下载安装,并确保 herdr CLI 在 PATH 中',
|
|
50
|
+
installUrl: 'https://github.com/herdrdev/herdr/releases',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
export const WORKER_RUNTIME_IDS = WORKER_RUNTIMES.map(runtime => runtime.id);
|
|
54
|
+
/** 兼容旧配置与旧工单:claude-cli 已改名为 claude-code。 */
|
|
55
|
+
export const LEGACY_CLAUDE_CODE_RUNTIME_ID = 'claude-cli';
|
|
56
|
+
export const LEGACY_RUNTIME_IDS = {
|
|
57
|
+
[LEGACY_CLAUDE_CODE_RUNTIME_ID]: CLAUDE_CODE_RUNTIME_ID,
|
|
58
|
+
};
|
|
59
|
+
/** 把历史 runtime id 归一成当前 id;未知 id 原样返回,交给注册表报错。 */
|
|
60
|
+
export function normalizeRuntimeId(id) {
|
|
61
|
+
const value = id.trim();
|
|
62
|
+
return LEGACY_RUNTIME_IDS[value] ?? value;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 是否是已知的 worker runtime id。
|
|
66
|
+
*
|
|
67
|
+
* 包含内置运行时(orca / claude-code / codex-app / acp)和 ACP 目录里的动态运行时
|
|
68
|
+
* (acp-claude / acp-codex / ...)。未知值让配置校验直接拒绝,避免拼错后
|
|
69
|
+
* 启动期才炸。
|
|
70
|
+
*/
|
|
71
|
+
export function isWorkerRuntimeId(id) {
|
|
72
|
+
const value = normalizeRuntimeId(id);
|
|
73
|
+
return WORKER_RUNTIME_IDS.includes(value) || ACP_AGENTS.some(agent => agent.runtimeId === value);
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../../../packages/runtime/src/runtimes/catalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAA;AACrC,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAA;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAA;AACnC,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAA;AAC/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAA;AAcvC,MAAM,CAAC,MAAM,eAAe,GAAiC;IAC3D;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,2BAA2B;QAClC,IAAI,EAAE,8DAA8D;QACpE,WAAW,EAAE,wCAAwC;QACrD,UAAU,EAAE,2CAA2C;KACxD;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,0CAA0C;QACjD,IAAI,EAAE,gDAAgD;QACtD,WAAW,EAAE,uBAAuB;QACpC,UAAU,EAAE,mDAAmD;KAChE;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,8BAA8B;QACrC,IAAI,EAAE,0DAA0D;QAChE,WAAW,EAAE,iEAAiE;QAC9E,UAAU,EAAE,2BAA2B;KACxC;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,2DAA2D;QACjE,WAAW,EAAE,+DAA+D;KAC7E;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,iCAAiC;QACxC,IAAI,EAAE,mEAAmE;QACzE,WAAW,EAAE,0CAA0C;QACvD,UAAU,EAAE,4CAA4C;KACzD;CACF,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAsB,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AAE/F,6CAA6C;AAC7C,MAAM,CAAC,MAAM,6BAA6B,GAAG,YAAY,CAAA;AAEzD,MAAM,CAAC,MAAM,kBAAkB,GAAqC;IAClE,CAAC,6BAA6B,CAAC,EAAE,sBAAsB;CACxD,CAAA;AAED,kDAAkD;AAClD,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;IACvB,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAA;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,MAAM,KAAK,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAA;IACpC,OAAO,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,CAAA;AAClG,CAAC"}
|