@router-agent/runtime 0.3.31 → 0.3.32

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.
Files changed (43) hide show
  1. package/package.json +3 -3
  2. package/dist/orca/commands.js +0 -60
  3. package/dist/orca/commands.js.map +0 -1
  4. package/dist/orca/index.js +0 -452
  5. package/dist/orca/index.js.map +0 -1
  6. package/dist/orca/options.js +0 -33
  7. package/dist/orca/options.js.map +0 -1
  8. package/dist/orca/report-poller.js +0 -143
  9. package/dist/orca/report-poller.js.map +0 -1
  10. package/dist/runtimes/acp/admin.js +0 -470
  11. package/dist/runtimes/acp/admin.js.map +0 -1
  12. package/dist/runtimes/acp/agents.js +0 -167
  13. package/dist/runtimes/acp/agents.js.map +0 -1
  14. package/dist/runtimes/acp/detect.js +0 -379
  15. package/dist/runtimes/acp/detect.js.map +0 -1
  16. package/dist/runtimes/acp/index.js +0 -633
  17. package/dist/runtimes/acp/index.js.map +0 -1
  18. package/dist/runtimes/acp/install.js +0 -264
  19. package/dist/runtimes/acp/install.js.map +0 -1
  20. package/dist/runtimes/acp/permissions.js +0 -83
  21. package/dist/runtimes/acp/permissions.js.map +0 -1
  22. package/dist/runtimes/acp/protocol.js +0 -207
  23. package/dist/runtimes/acp/protocol.js.map +0 -1
  24. package/dist/runtimes/claude-code/index.js +0 -544
  25. package/dist/runtimes/claude-code/index.js.map +0 -1
  26. package/dist/runtimes/claude-code/inject.js +0 -71
  27. package/dist/runtimes/claude-code/inject.js.map +0 -1
  28. package/dist/runtimes/codex/client.js +0 -203
  29. package/dist/runtimes/codex/client.js.map +0 -1
  30. package/dist/runtimes/codex/detect.js +0 -240
  31. package/dist/runtimes/codex/detect.js.map +0 -1
  32. package/dist/runtimes/codex/index.js +0 -1066
  33. package/dist/runtimes/codex/index.js.map +0 -1
  34. package/dist/runtimes/herdr/agents.js +0 -38
  35. package/dist/runtimes/herdr/agents.js.map +0 -1
  36. package/dist/runtimes/herdr/commands.js +0 -68
  37. package/dist/runtimes/herdr/commands.js.map +0 -1
  38. package/dist/runtimes/herdr/index.js +0 -712
  39. package/dist/runtimes/herdr/index.js.map +0 -1
  40. package/dist/runtimes/herdr/options.js +0 -29
  41. package/dist/runtimes/herdr/options.js.map +0 -1
  42. package/dist/runtimes/herdr/server.js +0 -75
  43. package/dist/runtimes/herdr/server.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@router-agent/runtime",
3
- "version": "0.3.31",
3
+ "version": "0.3.32",
4
4
  "type": "module",
5
5
  "description": "Worker 运行时 SDK:端口、注册表、插件协议与共享工具",
6
6
  "license": "MIT",
@@ -31,8 +31,8 @@
31
31
  "registry": "https://registry.npmjs.org/"
32
32
  },
33
33
  "dependencies": {
34
- "@router-agent/core": "0.3.31",
35
- "@router-agent/infra": "0.3.31",
34
+ "@router-agent/core": "0.3.32",
35
+ "@router-agent/infra": "0.3.32",
36
36
  "zod": "4.4.3"
37
37
  }
38
38
  }
@@ -1,60 +0,0 @@
1
- export function worktreeCreate(opts) {
2
- return [
3
- 'worktree', 'create',
4
- '--repo', repoSelector(opts.repo),
5
- '--name', opts.name,
6
- ...(opts.baseBranch ? ['--base-branch', opts.baseBranch] : []),
7
- ...(opts.branch ? ['--branch', opts.branch] : []),
8
- ...(opts.agent ? ['--agent', opts.agent] : []),
9
- // 必须是终端 surface:chat 会话不在 terminal list 里,send/close/inspect 都用不了。
10
- '--surface', 'terminal',
11
- '--prompt', opts.prompt,
12
- '--no-parent',
13
- '--setup', 'skip',
14
- '--json',
15
- ];
16
- }
17
- /**
18
- * 配置里可以写 Orca 的 displayName(如 `teamwork-repos`),
19
- * 也可以直接写完整选择器(`id:xxx` / `name:xxx` / `path:/abs`)。
20
- */
21
- export function repoSelector(repo) {
22
- const trimmed = repo.trim();
23
- if (/^(id|name|path):/.test(trimmed))
24
- return trimmed;
25
- return `name:${trimmed}`;
26
- }
27
- export function terminalSend(handle, text) {
28
- return ['terminal', 'send', '--terminal', handle, '--text', text, '--enter', '--json'];
29
- }
30
- export function terminalClose(handle) {
31
- return ['terminal', 'close', '--terminal', handle];
32
- }
33
- export function terminalList() {
34
- return ['terminal', 'list', '--json'];
35
- }
36
- /** 读取渲染屏幕的尾部行;--screen 比默认的累计流更适合看「现在在做什么」。 */
37
- export function terminalRead(handle, opts = {}) {
38
- return ['terminal', 'read', '--terminal', handle, '--screen', '--limit', String(opts.limit ?? 60), '--json'];
39
- }
40
- export function worktreeShow(selector) {
41
- return ['worktree', 'show', '--worktree', selector, '--json'];
42
- }
43
- export function worktreeRemove(selector, opts = {}) {
44
- return [
45
- 'worktree', 'rm',
46
- '--worktree', selector,
47
- // 默认不强删:脏工作区由 Orca 拒绝,避免误删未提交改动。
48
- ...(opts.force ? ['--force'] : []),
49
- '--json',
50
- ];
51
- }
52
- export function agentLaunch(opts) {
53
- return [
54
- 'agent', 'launch',
55
- ...(opts.agent ? ['--agent', opts.agent] : []),
56
- '--worktree', opts.worktree,
57
- '--prompt', opts.prompt,
58
- ];
59
- }
60
- //# sourceMappingURL=commands.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../../packages/runtime/src/orca/commands.ts"],"names":[],"mappings":"AAsBA,MAAM,UAAU,cAAc,CAAC,IAAmB;IAChD,OAAO;QACL,UAAU,EAAE,QAAQ;QACpB,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,QAAQ,EAAE,IAAI,CAAC,IAAI;QACnB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,mEAAmE;QACnE,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,IAAI,CAAC,MAAM;QACvB,aAAa;QACb,SAAS,EAAE,MAAM;QACjB,QAAQ;KACT,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAC3B,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAA;IACpD,OAAO,QAAQ,OAAO,EAAE,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,IAAY;IACvD,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;AACxF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;AACvC,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,OAA2B,EAAE;IACxE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAA;AAC9G,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAC/D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,OAA4B,EAAE;IAC7E,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,QAAQ;QACtB,iCAAiC;QACjC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,QAAQ;KACT,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAA0D;IACpF,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,YAAY,EAAE,IAAI,CAAC,QAAQ;QAC3B,UAAU,EAAE,IAAI,CAAC,MAAM;KACxB,CAAA;AACH,CAAC"}
@@ -1,452 +0,0 @@
1
- import { mkdirSync, writeFileSync, existsSync } from 'node:fs';
2
- import { dirname, join } from 'node:path';
3
- import { buildWorkerPrompt } from '../spec/index.js';
4
- import { workBranch, worktreeName } from '../naming.js';
5
- import { resolveSession } from '../agents/registry.js';
6
- import { runtimeOptionDefault } from '../runtimes/options.js';
7
- import { ORCA_RUNTIME_ID } from '../runtimes/catalog.js';
8
- import { agentLaunch, terminalClose, terminalList, terminalRead, terminalSend, worktreeCreate, worktreeRemove, worktreeShow, } from './commands.js';
9
- export class OrcaCommandError extends Error {
10
- detail;
11
- constructor(detail) {
12
- super(formatCommandFailure(detail));
13
- this.name = 'OrcaCommandError';
14
- this.detail = detail;
15
- }
16
- }
17
- /** 把一次失败整理成便于日志与消息展示的一行。 */
18
- export function formatCommandFailure(detail) {
19
- const parts = [`orca:command-failed(${detail.command}): exit=${detail.code}`];
20
- if (detail.orcaCode)
21
- parts.push(`code=${detail.orcaCode}`);
22
- if (detail.orcaMessage)
23
- parts.push(`message=${detail.orcaMessage}`);
24
- if (detail.orcaCause)
25
- parts.push(`cause=${detail.orcaCause}`);
26
- if (detail.orcaOperationId)
27
- parts.push(`operationId=${detail.orcaOperationId}`);
28
- if (!detail.orcaCode && !detail.orcaMessage && detail.stdoutTail)
29
- parts.push(`stdout=${detail.stdoutTail}`);
30
- if (detail.stderrTail)
31
- parts.push(`stderr=${detail.stderrTail}`);
32
- return parts.join(' | ');
33
- }
34
- /** 从 argv 生成脱敏摘要:跳过长文本参数,保留可复现的关键选项。 */
35
- export function summarizeArgs(args) {
36
- const out = [];
37
- for (let i = 0; i < args.length; i += 1) {
38
- const arg = args[i];
39
- if (arg === '--prompt') {
40
- const value = args[i + 1] ?? '';
41
- out.push(`--prompt <${value.length} chars>`);
42
- i += 1;
43
- continue;
44
- }
45
- const next = args[i + 1];
46
- if (arg.startsWith('--') && next !== undefined && !next.startsWith('--')) {
47
- out.push(`${arg} ${next}`);
48
- i += 1;
49
- continue;
50
- }
51
- out.push(arg);
52
- }
53
- return out.join(' ');
54
- }
55
- export function describeCommandFailure(argv, res) {
56
- const command = argv.slice(0, 2).join(' ');
57
- const args = summarizeArgs(argv.slice(2));
58
- let orcaCode;
59
- let orcaMessage;
60
- let orcaCause;
61
- let orcaOperationId;
62
- let stdoutTail = '';
63
- try {
64
- const parsed = JSON.parse(res.stdout);
65
- if (parsed?.error) {
66
- if (parsed.error.code)
67
- orcaCode = String(parsed.error.code);
68
- if (parsed.error.message)
69
- orcaMessage = String(parsed.error.message);
70
- const data = parsed.error.data;
71
- if (data) {
72
- if (typeof data.cause === 'string') {
73
- // cause 可能是带堆栈的多行文本,只留第一行有效信息。
74
- const first = data.cause.split('\n').map((line) => line.trim()).find(Boolean);
75
- if (first)
76
- orcaCause = first.slice(0, 300);
77
- }
78
- if (typeof data.operationId === 'string' && data.operationId)
79
- orcaOperationId = data.operationId;
80
- }
81
- }
82
- else {
83
- stdoutTail = res.stdout.slice(0, 300);
84
- }
85
- }
86
- catch {
87
- stdoutTail = res.stdout.slice(0, 300);
88
- }
89
- return {
90
- command,
91
- code: res.code,
92
- ...(orcaCode ? { orcaCode } : {}),
93
- ...(orcaMessage ? { orcaMessage } : {}),
94
- ...(orcaCause ? { orcaCause } : {}),
95
- ...(orcaOperationId ? { orcaOperationId } : {}),
96
- args,
97
- stdoutTail,
98
- stderrTail: res.stderr.slice(0, 300),
99
- };
100
- }
101
- /** 解析 `orca worktree create --json` 的返回;不同 Orca 版本字段不同。 */
102
- export function parseCreateResult(stdout) {
103
- let json;
104
- try {
105
- json = JSON.parse(stdout);
106
- }
107
- catch {
108
- throw new Error(`orca:invalid-json: ${stdout.slice(0, 200)}`);
109
- }
110
- const root = json;
111
- if (root.ok === false) {
112
- throw new Error(`orca:create-failed: ${root.error?.message ?? JSON.stringify(root).slice(0, 200)}`);
113
- }
114
- const result = (root.result ?? root);
115
- const handle = result.launch?.outcome?.handle ?? result.agentTerminalHandle ?? result.terminalHandle ?? result.terminal?.handle;
116
- if (!handle)
117
- throw new Error(`orca:create-failed: 返回中没有 terminal handle: ${stdout.slice(0, 200)}`);
118
- const workdir = result.worktree?.path ?? result.worktreePath ?? result.path;
119
- const branch = result.worktree?.branch ?? result.branch;
120
- return {
121
- handle: String(handle),
122
- ...(workdir ? { workdir: String(workdir) } : {}),
123
- // Orca 分支名可能是 `refs/heads/xxx`;若同名分支已存在还会自动加数字后缀,回读一次保证记录准确。
124
- ...(branch ? { branch: String(branch).replace(/^refs\/heads\//, '') } : {}),
125
- };
126
- }
127
- /** Orca 的 linkedPR / linkedGitLabMR 状态归一化;GitLab 用 opened/locked 表示未关闭。 */
128
- function normalizeLinkedState(state) {
129
- const value = String(state ?? '').trim().toLowerCase();
130
- if (value === 'merged')
131
- return 'merged';
132
- if (value === 'closed')
133
- return 'closed';
134
- if (value === 'open' || value === 'opened' || value === 'locked')
135
- return 'open';
136
- return undefined;
137
- }
138
- export class OrcaRuntime {
139
- id = 'orca';
140
- capabilities = {
141
- agent: { liveStatus: true, processExit: false, output: true, activity: true, structuredInput: true, nudge: true },
142
- workspace: { cleanup: true, prLink: true, discovery: true },
143
- };
144
- runner;
145
- workersDir;
146
- home;
147
- agent;
148
- claudeProjectsDir;
149
- constructor(opts) {
150
- this.runner = opts.runner;
151
- this.workersDir = opts.workersDir;
152
- this.home = opts.home;
153
- // Orca 的 --prompt 必须配 --agent,没有「不传」这种形态,因此这里必须落到一个具体值。
154
- this.agent = String(opts.agent || runtimeOptionDefault(ORCA_RUNTIME_ID, 'agent') || '').trim();
155
- this.claudeProjectsDir = opts.claudeProjectsDir;
156
- }
157
- async start(ctx) {
158
- const statePath = ctx.report?.statePath ?? join(this.workersDir, ctx.ticket.id, 'state.json');
159
- const eventsPath = ctx.report?.eventsPath ?? join(this.workersDir, ctx.ticket.id, 'events.log');
160
- const name = worktreeName(ctx.ticket);
161
- // 每张工单自带 repo/branch(多项目派工);缺了说明是脏数据,直接报错不猜。
162
- const repo = ctx.ticket.repo;
163
- // 工单上的 branch 是「起始分支」;worktree 自己的工作分支由工单号 + 标题语义生成。
164
- const baseBranch = ctx.ticket.branch;
165
- const branch = workBranch(ctx.ticket);
166
- if (!repo)
167
- throw new Error('orca:missing-repo: 工单没有指定仓库,拒绝创建 worktree');
168
- if (!baseBranch)
169
- throw new Error('orca:missing-branch: 工单没有指定起始分支,拒绝创建 worktree');
170
- const prompt = ctx.brief?.contract ?? buildWorkerPrompt({
171
- ticket: ctx.ticket,
172
- mandateScope: ctx.ticket.title,
173
- statePath,
174
- eventsPath,
175
- repo,
176
- branch: baseBranch,
177
- workBranch: branch,
178
- workdir: ctx.workdir,
179
- ...(this.home ? { home: this.home } : {}),
180
- });
181
- const res = await this.run(worktreeCreate({
182
- repo,
183
- name,
184
- prompt,
185
- branch,
186
- ...(baseBranch ? { baseBranch } : {}),
187
- ...(this.agent ? { agent: this.agent } : {}),
188
- }));
189
- const parsed = parseCreateResult(res.stdout);
190
- const workdir = parsed.workdir ?? ctx.workdir;
191
- if (!workdir)
192
- throw new Error('orca:workdir-missing: worktree create 没有返回路径');
193
- this.writeMeta(ctx, {
194
- handle: parsed.handle,
195
- workdir,
196
- statePath,
197
- eventsPath,
198
- repo,
199
- branch: baseBranch,
200
- workBranch: parsed.branch ?? branch,
201
- ...(this.agent ? { agent: this.agent } : {}),
202
- });
203
- return {
204
- handle: parsed.handle,
205
- workdir,
206
- ...(parsed.branch ? { branch: parsed.branch } : { branch }),
207
- };
208
- }
209
- async deliver(ref, inputs, _opts) {
210
- const handle = this.handleOf(ref);
211
- const accepted = [];
212
- for (const input of inputs) {
213
- if (!input.text.trim())
214
- continue;
215
- await this.run(terminalSend(handle, renderInput(input)));
216
- accepted.push(input.id);
217
- }
218
- return { status: 'accepted', inputIds: accepted };
219
- }
220
- async registerContext(ref, items) {
221
- const text = renderContext(items);
222
- if (!text)
223
- return;
224
- await this.run(terminalSend(this.handleOf(ref), text));
225
- }
226
- async stop(ref, reason) {
227
- void reason;
228
- await this.run(terminalClose(this.handleOf(ref)));
229
- }
230
- async nudge(ref) {
231
- await this.run(terminalSend(this.handleOf(ref), 'status?'));
232
- }
233
- /** 中立活性:把 Orca 终端字段映射成 AgentStatus;查询失败返回 null。 */
234
- async status(ref) {
235
- const handle = this.handleOf(ref);
236
- let info;
237
- try {
238
- info = await this.inspect(handle);
239
- }
240
- catch {
241
- return null;
242
- }
243
- if (!info)
244
- return { alive: false, phase: 'lost', acceptingInput: false, detail: { source: 'orca' } };
245
- if (!info.connected) {
246
- return { alive: false, phase: 'lost', acceptingInput: false, detail: { source: 'orca', connected: false, orphaned: info.orphaned } };
247
- }
248
- if (info.orphaned && !info.writable) {
249
- return {
250
- alive: false,
251
- phase: 'unknown',
252
- acceptingInput: false,
253
- ...(info.lastOutputAt ? { lastActivityAt: info.lastOutputAt } : {}),
254
- detail: { source: 'orca', orphaned: true, writable: false },
255
- };
256
- }
257
- return {
258
- alive: true,
259
- phase: 'running',
260
- acceptingInput: info.writable,
261
- ...(info.lastOutputAt ? { lastActivityAt: info.lastOutputAt } : {}),
262
- detail: { source: 'orca', orphaned: info.orphaned, writable: info.writable },
263
- };
264
- }
265
- /** 输出尾部:等价于旧的 read()。 */
266
- async output(ref, opts = {}) {
267
- return this.read(this.handleOf(ref), opts);
268
- }
269
- /** 结构化活动:优先读 Agent 自己的会话记录;没有 workdir 时返回 null。 */
270
- async activity(query) {
271
- const workdir = query.ref.workdir;
272
- if (!workdir)
273
- return null;
274
- return this.session(workdir, query.opts ?? {});
275
- }
276
- async inspectWorkspace(ref) {
277
- const selector = ref.workspaceRef ?? `path:${ref.workdir}`;
278
- const worktree = await this.inspectWorktree(selector);
279
- if (!worktree)
280
- return null;
281
- const linked = (worktree.linkedPR ?? worktree.linkedGitLabMR ?? worktree.worktree?.linkedPR);
282
- const branch = String(worktree.branch ?? worktree.worktree?.branch ?? '').replace(/^refs\/heads\//, '');
283
- const linkedState = normalizeLinkedState(linked?.state);
284
- return {
285
- workdir: String(worktree.path ?? worktree.worktree?.path ?? ref.workdir),
286
- branch,
287
- ...(linked && Number(linked.number ?? linked.iid) > 0
288
- ? {
289
- linkedPr: {
290
- number: Number(linked.number ?? linked.iid),
291
- url: String(linked.url ?? linked.webUrl ?? ''),
292
- ...(linkedState ? { state: linkedState } : {}),
293
- },
294
- }
295
- : {}),
296
- };
297
- }
298
- async removeWorkspace(ref) {
299
- const selector = ref.workspaceRef ?? `path:${ref.workdir}`;
300
- await this.removeWorktree(selector);
301
- }
302
- async listRepos() {
303
- const res = await this.run(['repo', 'list', '--json']);
304
- const parsed = parseJsonOrThrow(res.stdout);
305
- const result = (parsed.result ?? parsed);
306
- const list = result.repos ?? result.rows ?? result.items ?? (Array.isArray(result) ? result : []);
307
- return (Array.isArray(list) ? list : []).map((item) => ({
308
- name: String(item.displayName ?? item.name ?? ''),
309
- path: String(item.path ?? ''),
310
- ...(item.kind ? { kind: String(item.kind) } : {}),
311
- }));
312
- }
313
- /** 旧接口:保留给兼容调用与单测。 */
314
- async inspect(handle) {
315
- const res = await this.run(terminalList());
316
- const parsed = parseJsonOrThrow(res.stdout);
317
- const terminals = extractTerminals(parsed);
318
- const found = terminals.find(t => String(t.handle) === handle);
319
- return found ? normalizeTerminal(found) : null;
320
- }
321
- /** 读取终端渲染屏幕的尾部输出;失败(终端已销毁 / 旧版 Orca)时交给调用方跳过本轮巡检。 */
322
- async read(handle, opts = {}) {
323
- const res = await this.run(terminalRead(handle, opts));
324
- const parsed = parseJsonOrThrow(res.stdout);
325
- const raw = parsed.result?.terminal ?? parsed.terminal;
326
- if (!raw)
327
- return null;
328
- const status = raw.status === 'running' || raw.status === 'exited' ? raw.status : 'unknown';
329
- const lines = Array.isArray(raw.tail) ? raw.tail.map((line) => String(line)) : [];
330
- return { status, lines, ...(raw.source ? { source: String(raw.source) } : {}) };
331
- }
332
- /**
333
- * 优先读 Agent 自己的结构化会话记录(按配置的 Agent 选读取器),
334
- * 比终端屏幕干净得多;找不到时返回 null,由调用方退回 read()。
335
- */
336
- async session(workdir, opts = {}) {
337
- const resolved = resolveSession(workdir, this.agent, {
338
- ...(this.claudeProjectsDir ? { roots: { claude: this.claudeProjectsDir } } : {}),
339
- });
340
- if (!resolved)
341
- return null;
342
- return resolved.reader.read(workdir, opts);
343
- }
344
- async inspectWorktree(selector) {
345
- const res = await this.run(worktreeShow(selector));
346
- const parsed = parseJsonOrThrow(res.stdout);
347
- const result = parsed.result ?? parsed;
348
- return (result.worktree ?? result);
349
- }
350
- async removeWorktree(selector, opts = {}) {
351
- await this.run(worktreeRemove(selector, opts));
352
- }
353
- async relaunchAgent(worktree, prompt) {
354
- await this.run(agentLaunch({ worktree, prompt, ...(this.agent ? { agent: this.agent } : {}) }));
355
- }
356
- handleOf(ref) {
357
- return typeof ref === 'string' ? ref : ref.handle;
358
- }
359
- async run(argv) {
360
- const res = await this.runner.run(argv);
361
- if (res.code !== 0) {
362
- throw new OrcaCommandError(describeCommandFailure(argv, res));
363
- }
364
- return res;
365
- }
366
- writeMeta(ctx, extra) {
367
- const dir = join(this.workersDir, ctx.ticket.id);
368
- mkdirSync(dir, { recursive: true });
369
- const metaPath = join(dir, 'meta.json');
370
- const meta = {
371
- schemaVersion: 2,
372
- ticketId: ctx.ticket.id,
373
- assignmentId: ctx.assignment.id,
374
- handle: extra.handle,
375
- workdir: extra.workdir,
376
- statePath: extra.statePath,
377
- eventsPath: extra.eventsPath,
378
- repo: extra.repo,
379
- /** 起始分支(base branch)。 */
380
- branch: extra.branch,
381
- /** worktree 自己实际使用的工作分支。 */
382
- workBranch: extra.workBranch,
383
- /** 派工时用的 Agent;没配时留空,表示跟随 Orca 自己的默认。 */
384
- ...(extra.agent ? { agent: extra.agent } : {}),
385
- runtime: this.id,
386
- status: 'running',
387
- startedAt: new Date().toISOString(),
388
- };
389
- writeFileSync(metaPath, `${JSON.stringify(meta, null, 2)}\n`, 'utf8');
390
- if (!existsSync(extra.eventsPath))
391
- writeFileSync(extra.eventsPath, '', 'utf8');
392
- mkdirSync(dirname(metaPath), { recursive: true });
393
- }
394
- }
395
- /**
396
- * 投递时带上输入 id:worker 只有看到 id 才能写进 acked_inputs,Router 才不会重投。
397
- */
398
- export function renderInput(input) {
399
- return `【Router 输入 ${input.id}】\n${input.text}`;
400
- }
401
- function renderContext(items) {
402
- const lines = [];
403
- for (const item of items) {
404
- if (item.kind === 'system-prompt')
405
- lines.push(item.text);
406
- else if (item.kind === 'file')
407
- lines.push(`# 文件 ${item.path}\n${item.content}`);
408
- else if (item.kind === 'env')
409
- lines.push(`${item.key}=${item.value}`);
410
- else
411
- lines.push(`# 目录 ${item.path}`);
412
- }
413
- return lines.join('\n\n');
414
- }
415
- function parseJsonOrThrow(stdout) {
416
- try {
417
- return JSON.parse(stdout);
418
- }
419
- catch {
420
- throw new Error(`orca:invalid-json: ${stdout.slice(0, 200)}`);
421
- }
422
- }
423
- function extractTerminals(parsed) {
424
- const root = parsed;
425
- const result = root.result ?? root;
426
- const list = result.terminals ?? result.rows ?? result.items ?? (Array.isArray(result) ? result : []);
427
- return Array.isArray(list) ? list : [];
428
- }
429
- function normalizeTerminal(raw) {
430
- return {
431
- handle: String(raw.handle ?? ''),
432
- connected: Boolean(raw.connected),
433
- writable: Boolean(raw.writable),
434
- orphaned: Boolean(raw.orphaned),
435
- lastOutputAt: toIsoTime(raw.lastOutputAt),
436
- worktreePath: String(raw.worktreePath ?? ''),
437
- branch: String(raw.branch ?? ''),
438
- };
439
- }
440
- /** Orca 的 lastOutputAt 实测是毫秒时间戳数字,也兼容 ISO 字符串与秒级时间戳。 */
441
- export function toIsoTime(value) {
442
- if (value === null || value === undefined || value === '')
443
- return '';
444
- if (typeof value === 'number' || (typeof value === 'string' && /^\d+$/.test(value))) {
445
- const n = Number(value);
446
- const ms = n > 1e12 ? n : n > 1e9 ? n * 1000 : 0;
447
- return ms > 0 ? new Date(ms).toISOString() : '';
448
- }
449
- const parsed = Date.parse(String(value));
450
- return Number.isFinite(parsed) ? new Date(parsed).toISOString() : '';
451
- }
452
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/runtime/src/orca/index.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- /**
2
- * Orca 运行时的可配置项声明。
3
- *
4
- * 只放纯常量(面板会把它打进前端包)。这里声明的是「ra 允许覆盖什么」,
5
- * 具体的命令行参数由 Orca adapter 自己映射,声明本身不含任何 Orca 逻辑。
6
- */
7
- import { ORCA_RUNTIME_ID } from '../runtimes/catalog.js';
8
- /**
9
- * Orca 支持的 TUI Agent(与 `orca agent-context` 里的 `--agent` 取值一致)。
10
- *
11
- * Orca 的 `worktree create --prompt` 必须同时给 `--agent`,没有「不传」这种形态,
12
- * 所以这里给一个显式默认值;用户可以覆盖成其它 Agent。
13
- */
14
- export const ORCA_OPTION_SPEC = {
15
- runtimeId: ORCA_RUNTIME_ID,
16
- fields: [
17
- {
18
- key: 'agent',
19
- label: '执行 Agent',
20
- kind: 'select',
21
- default: 'claude',
22
- options: [
23
- { value: 'claude', label: 'claude · Claude Code' },
24
- { value: 'codex', label: 'codex · Codex' },
25
- { value: 'opencode', label: 'opencode · OpenCode' },
26
- { value: 'devin', label: 'devin · Devin' },
27
- { value: 'antigravity', label: 'antigravity · Antigravity' },
28
- ],
29
- hint: 'Orca 在工单 worktree 里启动哪个 Agent;默认 Claude Code',
30
- },
31
- ],
32
- };
33
- //# sourceMappingURL=options.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../../packages/runtime/src/orca/options.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAGxD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,SAAS,EAAE,eAAe;IAC1B,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"}