agim-cli 1.1.0 → 1.1.2

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 (92) hide show
  1. package/CHANGELOG.md +190 -0
  2. package/README.md +7 -1
  3. package/README.zh-CN.md +7 -1
  4. package/dist/cli-ui/i18n.d.ts +4 -4
  5. package/dist/cli-ui/i18n.js +4 -4
  6. package/dist/cli-ui/i18n.js.map +1 -1
  7. package/dist/cli.js +265 -30
  8. package/dist/cli.js.map +1 -1
  9. package/dist/core/a2a.d.ts +36 -0
  10. package/dist/core/a2a.d.ts.map +1 -0
  11. package/dist/core/a2a.js +203 -0
  12. package/dist/core/a2a.js.map +1 -0
  13. package/dist/core/agent-base.d.ts +5 -2
  14. package/dist/core/agent-base.d.ts.map +1 -1
  15. package/dist/core/agent-base.js +68 -24
  16. package/dist/core/agent-base.js.map +1 -1
  17. package/dist/core/approval-bus.d.ts +81 -2
  18. package/dist/core/approval-bus.d.ts.map +1 -1
  19. package/dist/core/approval-bus.js +273 -36
  20. package/dist/core/approval-bus.js.map +1 -1
  21. package/dist/core/approval-router.d.ts.map +1 -1
  22. package/dist/core/approval-router.js +221 -89
  23. package/dist/core/approval-router.js.map +1 -1
  24. package/dist/core/commands/a2a.d.ts +3 -0
  25. package/dist/core/commands/a2a.d.ts.map +1 -0
  26. package/dist/core/commands/a2a.js +148 -0
  27. package/dist/core/commands/a2a.js.map +1 -0
  28. package/dist/core/commands/approval.d.ts.map +1 -1
  29. package/dist/core/commands/approval.js +7 -5
  30. package/dist/core/commands/approval.js.map +1 -1
  31. package/dist/core/commands/builtin.js +2 -2
  32. package/dist/core/commands/builtin.js.map +1 -1
  33. package/dist/core/commands/job.d.ts.map +1 -1
  34. package/dist/core/commands/job.js +11 -2
  35. package/dist/core/commands/job.js.map +1 -1
  36. package/dist/core/commands/outbox.d.ts +3 -0
  37. package/dist/core/commands/outbox.d.ts.map +1 -0
  38. package/dist/core/commands/outbox.js +92 -0
  39. package/dist/core/commands/outbox.js.map +1 -0
  40. package/dist/core/job-board.d.ts +122 -1
  41. package/dist/core/job-board.d.ts.map +1 -1
  42. package/dist/core/job-board.js +404 -21
  43. package/dist/core/job-board.js.map +1 -1
  44. package/dist/core/job-recovery.d.ts +48 -0
  45. package/dist/core/job-recovery.d.ts.map +1 -0
  46. package/dist/core/job-recovery.js +185 -0
  47. package/dist/core/job-recovery.js.map +1 -0
  48. package/dist/core/message-sink.d.ts +63 -0
  49. package/dist/core/message-sink.d.ts.map +1 -0
  50. package/dist/core/message-sink.js +296 -0
  51. package/dist/core/message-sink.js.map +1 -0
  52. package/dist/core/outbox.d.ts +71 -0
  53. package/dist/core/outbox.d.ts.map +1 -0
  54. package/dist/core/outbox.js +301 -0
  55. package/dist/core/outbox.js.map +1 -0
  56. package/dist/core/reminders.d.ts.map +1 -1
  57. package/dist/core/reminders.js +12 -1
  58. package/dist/core/reminders.js.map +1 -1
  59. package/dist/core/restart-completion.d.ts.map +1 -1
  60. package/dist/core/restart-completion.js +18 -1
  61. package/dist/core/restart-completion.js.map +1 -1
  62. package/dist/core/router.d.ts +8 -0
  63. package/dist/core/router.d.ts.map +1 -1
  64. package/dist/core/router.js +16 -0
  65. package/dist/core/router.js.map +1 -1
  66. package/dist/core/self-protect.d.ts +3 -2
  67. package/dist/core/self-protect.d.ts.map +1 -1
  68. package/dist/core/self-protect.js +75 -41
  69. package/dist/core/self-protect.js.map +1 -1
  70. package/dist/core/types.d.ts +22 -0
  71. package/dist/core/types.d.ts.map +1 -1
  72. package/dist/plugins/agents/claude-code/index.d.ts.map +1 -1
  73. package/dist/plugins/agents/claude-code/index.js +5 -0
  74. package/dist/plugins/agents/claude-code/index.js.map +1 -1
  75. package/dist/plugins/agents/claude-code/mcp-approval-server.d.ts +21 -0
  76. package/dist/plugins/agents/claude-code/mcp-approval-server.d.ts.map +1 -1
  77. package/dist/plugins/agents/claude-code/mcp-approval-server.js +106 -0
  78. package/dist/plugins/agents/claude-code/mcp-approval-server.js.map +1 -1
  79. package/dist/plugins/agents/codex/index.d.ts.map +1 -1
  80. package/dist/plugins/agents/codex/index.js +5 -0
  81. package/dist/plugins/agents/codex/index.js.map +1 -1
  82. package/dist/plugins/agents/opencode/opencode-http-adapter.d.ts.map +1 -1
  83. package/dist/plugins/agents/opencode/opencode-http-adapter.js +46 -15
  84. package/dist/plugins/agents/opencode/opencode-http-adapter.js.map +1 -1
  85. package/dist/plugins/agents/opencode/opencode-stdio-adapter.d.ts.map +1 -1
  86. package/dist/plugins/agents/opencode/opencode-stdio-adapter.js +5 -0
  87. package/dist/plugins/agents/opencode/opencode-stdio-adapter.js.map +1 -1
  88. package/dist/web/public/settings.html +89 -0
  89. package/dist/web/server.d.ts.map +1 -1
  90. package/dist/web/server.js +44 -16
  91. package/dist/web/server.js.map +1 -1
  92. package/package.json +1 -1
@@ -5,9 +5,10 @@
5
5
  // pending 当作"用户改主意"自动 deny。
6
6
  //
7
7
  // 不知道 messenger 实现细节,只通过注入的 resolveMessenger 拿到 sendMessage/sendCard。
8
- import { approvalBus, } from './approval-bus.js';
8
+ import { approvalBus, humanizeFingerprint, isTimeoutDefaultAllow, } from './approval-bus.js';
9
9
  import { checkToolUse } from './self-protect.js';
10
10
  import { logger as rootLogger } from './logger.js';
11
+ import { sink } from './message-sink.js';
11
12
  const log = rootLogger.child({ component: 'approval-router' });
12
13
  /** Truncation limit for the plain-text approval prompt. Conservative because
13
14
  * some IMs (older WeChat clients) start chunking aggressively past ~500
@@ -79,60 +80,139 @@ function displayToolName(name) {
79
80
  return `${m[1]}: ${m[2]}`;
80
81
  return name;
81
82
  }
83
+ /** Human-readable byte count, no decimals for B, one for KB/MB. */
84
+ function formatBytes(n) {
85
+ if (n < 1024)
86
+ return `${n}B`;
87
+ if (n < 1024 * 1024)
88
+ return `${(n / 1024).toFixed(1)}KB`;
89
+ return `${(n / 1024 / 1024).toFixed(1)}MB`;
90
+ }
91
+ /** Pull a string field iff present and (optionally) short enough to inline
92
+ * next to the tool name in the header row. Returns null when the field is
93
+ * missing, non-string, multi-line, or longer than `max`. */
94
+ function inlineableField(v, max = 60) {
95
+ if (typeof v !== 'string')
96
+ return null;
97
+ if (v.length > max || v.includes('\n'))
98
+ return null;
99
+ return v;
100
+ }
101
+ /** Header-row "primary parameter" for common tools — file_path, URL, short
102
+ * pattern, or short Bash command. Returns null when the primary field is
103
+ * too long for the header; in that case the body block renders it as a
104
+ * separate labelled line. */
105
+ function primaryInlineParam(toolName, input) {
106
+ switch (toolName) {
107
+ case 'Read':
108
+ case 'NotebookRead':
109
+ case 'Edit':
110
+ case 'Write':
111
+ case 'NotebookEdit':
112
+ case 'LS':
113
+ return inlineableField(input.file_path) ?? inlineableField(input.path);
114
+ case 'Glob':
115
+ case 'Grep':
116
+ return inlineableField(input.pattern);
117
+ case 'WebFetch':
118
+ return inlineableField(input.url, 80);
119
+ case 'WebSearch':
120
+ return inlineableField(input.query, 80);
121
+ case 'Bash':
122
+ return inlineableField(input.command, 80);
123
+ }
124
+ return null;
125
+ }
82
126
  /**
83
- * Render the input payload as a multiline body. Known tools (Bash / Read /
84
- * Edit / Write / Grep / Glob / WebFetch) get a single labelled line for
85
- * their primary field. Unknown tools fall back to compact JSON, truncated.
127
+ * Render input fields as body lines that go between the header and the
128
+ * action row. Empty array = nothing to add (primary param already lives in
129
+ * the header). For big text fields (Write.content, Edit.new_string, long
130
+ * Bash commands) prepend a "(N 行·X KB)" hint so the user knows what
131
+ * they're approving even when the preview is truncated.
86
132
  *
87
- * The goal is "user can decide y/n in 1 second" — they shouldn't have to
88
- * mentally parse JSON for the most common tools.
133
+ * The goal is "user can decide y/n in 1 second" — short tools collapse to
134
+ * a 3-line message; only big fields get an expanded indented block.
89
135
  */
90
136
  function formatInputBody(toolName, input, maxLen) {
91
- // Single-field shortcuts for built-in claude-code tools.
92
- const single = (label, key) => {
93
- const v = input[key];
94
- if (typeof v !== 'string')
95
- return null;
96
- const truncated = v.length > maxLen ? `${v.slice(0, maxLen - 1)}…` : v;
97
- return `${label}:${truncated}`;
137
+ const lines = [];
138
+ const get = (k) => typeof input[k] === 'string' ? input[k] : null;
139
+ /** Render a big text field. Inline when it fits on one line; expand with
140
+ * size hint + 2-space indent when multi-line or long enough to deserve it. */
141
+ const big = (label, val) => {
142
+ const truncated = val.length > maxLen ? `${val.slice(0, maxLen - 1)}…` : val;
143
+ const cnt = val.split('\n').length;
144
+ const hint = (cnt > 1 || val.length > 100)
145
+ ? ` (${cnt} 行·${formatBytes(Buffer.byteLength(val, 'utf-8'))})`
146
+ : '';
147
+ if (truncated.includes('\n')) {
148
+ lines.push(`${label}${hint}:`);
149
+ for (const ln of truncated.split('\n'))
150
+ lines.push(` ${ln}`);
151
+ }
152
+ else {
153
+ lines.push(`${label}${hint}:${truncated}`);
154
+ }
98
155
  };
99
156
  switch (toolName) {
100
157
  case 'Bash': {
101
- const cmd = single('命令', 'command');
102
- if (cmd)
103
- return cmd;
104
- break;
158
+ const cmd = get('command');
159
+ if (cmd && (cmd.length > 80 || cmd.includes('\n')))
160
+ big('命令', cmd);
161
+ return lines;
105
162
  }
106
163
  case 'Read':
164
+ case 'NotebookRead':
165
+ case 'LS': {
166
+ const fp = get('file_path') ?? get('path');
167
+ if (fp && (fp.length > 60 || fp.includes('\n'))) {
168
+ lines.push(`路径:${fp.length > maxLen ? `${fp.slice(0, maxLen - 1)}…` : fp}`);
169
+ }
170
+ return lines;
171
+ }
107
172
  case 'Edit':
108
173
  case 'Write':
109
174
  case 'NotebookEdit': {
110
- const fp = single('路径', 'file_path');
111
- if (fp)
112
- return fp;
113
- break;
114
- }
115
- case 'Glob': {
116
- const p = single('Pattern', 'pattern');
117
- if (p)
118
- return p;
119
- break;
175
+ const fp = get('file_path');
176
+ const content = get('content') ?? get('new_string') ?? get('new_source');
177
+ if (fp && (fp.length > 60 || fp.includes('\n'))) {
178
+ lines.push(`路径:${fp.length > maxLen ? `${fp.slice(0, maxLen - 1)}…` : fp}`);
179
+ }
180
+ if (content)
181
+ big(toolName === 'Edit' ? '新内容' : '内容', content);
182
+ return lines;
120
183
  }
184
+ case 'Glob':
121
185
  case 'Grep': {
122
- const p = single('查找', 'pattern');
123
- if (p)
124
- return p;
125
- break;
186
+ const pat = get('pattern');
187
+ if (pat && (pat.length > 60 || pat.includes('\n')))
188
+ big('Pattern', pat);
189
+ const path = get('path');
190
+ if (path)
191
+ lines.push(`位置:${path}`);
192
+ const glob = get('glob') ?? get('output_mode');
193
+ if (glob)
194
+ lines.push(`Glob:${glob}`);
195
+ return lines;
196
+ }
197
+ case 'WebFetch': {
198
+ // Show the URL inline only when it fits the header; long URLs need
199
+ // their own line so the user can see what they're approving. A 250-char
200
+ // OAuth callback URL with no body would otherwise be approved blind.
201
+ const url = get('url');
202
+ if (url && (url.length > 80 || url.includes('\n'))) {
203
+ lines.push(`URL:${url.length > maxLen ? `${url.slice(0, maxLen - 1)}…` : url}`);
204
+ }
205
+ return lines;
126
206
  }
127
- case 'WebFetch':
128
207
  case 'WebSearch': {
129
- const u = single('URL', 'url') ?? single('Query', 'query');
130
- if (u)
131
- return u;
132
- break;
208
+ const query = get('query');
209
+ if (query && (query.length > 80 || query.includes('\n'))) {
210
+ lines.push(`查询:${query.length > maxLen ? `${query.slice(0, maxLen - 1)}…` : query}`);
211
+ }
212
+ return lines;
133
213
  }
134
214
  }
135
- // Fallback: JSON dump, but pretty-printed when small enough.
215
+ // Unknown tool — compact JSON dump, indented when multi-line.
136
216
  let s;
137
217
  try {
138
218
  const pretty = JSON.stringify(input, null, 2);
@@ -143,11 +223,15 @@ function formatInputBody(toolName, input, maxLen) {
143
223
  }
144
224
  if (s.length > maxLen)
145
225
  s = `${s.slice(0, maxLen - 1)}…`;
146
- // For multi-line JSON, indent so it visually groups under the "入参" label.
147
226
  if (s.includes('\n')) {
148
- return `入参:\n${s.split('\n').map((l) => ` ${l}`).join('\n')}`;
227
+ lines.push('入参:');
228
+ for (const ln of s.split('\n'))
229
+ lines.push(` ${ln}`);
230
+ }
231
+ else {
232
+ lines.push(`入参:${s}`);
149
233
  }
150
- return `入参:${s}`;
234
+ return lines;
151
235
  }
152
236
  /**
153
237
  * Render an approval request as a plain text message. We keep this format
@@ -160,30 +244,22 @@ function formatInputBody(toolName, input, maxLen) {
160
244
  */
161
245
  export function formatApprovalPrompt(n) {
162
246
  const tool = displayToolName(n.toolName);
247
+ const primary = primaryInlineParam(n.toolName, n.input);
163
248
  const body = formatInputBody(n.toolName, n.input, MAX_INPUT_PREVIEW);
249
+ const reqShort = n.reqId.slice(0, 8);
164
250
  if (n.autoAllow) {
165
251
  const sec = Math.round(n.autoAllow.graceMs / 1000);
166
- return [
167
- `⏱ 自动放行中(${sec}s 后执行)`,
168
- ``,
169
- `工具:${tool}`,
170
- body,
171
- ``,
172
- `回复 n 可拒绝并撤销规则`,
173
- `req ${n.reqId.slice(0, 8)}`,
174
- ].join('\n');
252
+ const header = primary ? `⏱ 自动放行 · ${tool} · ${primary}` : `⏱ 自动放行 · ${tool}`;
253
+ return [header, ...body, `${sec}s 后执行 · 回 n 拒绝并撤销规则 · req ${reqShort}`].join('\n');
175
254
  }
255
+ const mins = Math.max(1, Math.round(approvalBus.approvalTimeoutMs / 60000));
256
+ const fallback = isTimeoutDefaultAllow() ? '放行' : '拒绝';
257
+ const header = primary ? `🔐 审批 · ${tool} · ${primary}` : `🔐 审批 · ${tool}`;
176
258
  return [
177
- `🔐 需要审批`,
178
- ``,
179
- `工具:${tool}`,
180
- body,
181
- ``,
182
- `y 批准`,
183
- `n 拒绝`,
184
- `all 本会话同类自动放行`,
185
- ``,
186
- `5 分钟未回 = 拒绝 · req ${n.reqId.slice(0, 8)}`,
259
+ header,
260
+ ...body,
261
+ `y 批准 · n 拒绝 · all 同类放行`,
262
+ `${mins}min 未回 → ${fallback} · req ${reqShort}`,
187
263
  ].join('\n');
188
264
  }
189
265
  /**
@@ -235,7 +311,13 @@ export function install(opts) {
235
311
  // Throwing tells the bus to auto-deny this request.
236
312
  throw new Error(`no messenger for platform ${n.ctx.platform}`);
237
313
  }
238
- // Rich-card path (Telegram inline keyboard).
314
+ // Rich-card path (Telegram inline keyboard). Retry once with a short
315
+ // delay before falling back to plain text — the common failure mode is
316
+ // "Telegram adapter not started" during a bot reconnect (bot=null inside
317
+ // sendApprovalCard) or a transient 429, both of which clear in well
318
+ // under a second. Without the retry, the user gets a plain-text card
319
+ // every time the bot blips, even though the next attempt would've
320
+ // succeeded.
239
321
  if (m.sendApprovalCard) {
240
322
  const prompt = {
241
323
  reqId: n.reqId,
@@ -244,34 +326,63 @@ export function install(opts) {
244
326
  mode: n.autoAllow ? 'auto-allow' : 'normal',
245
327
  graceSeconds: n.autoAllow ? Math.round(n.autoAllow.graceMs / 1000) : undefined,
246
328
  };
247
- try {
248
- const { messageId } = await m.sendApprovalCard(n.ctx.threadId, prompt);
249
- activeCards.set(n.reqId, {
250
- platform: n.ctx.platform,
251
- threadId: n.ctx.threadId,
252
- messageId,
253
- });
254
- log.info({
255
- event: 'approval.router.card_sent',
256
- platform: n.ctx.platform,
257
- threadId: n.ctx.threadId,
258
- reqId: n.reqId,
259
- messageId,
260
- });
261
- return;
262
- }
263
- catch (err) {
264
- log.warn({
265
- event: 'approval.router.card_failed_fallback',
266
- err: String(err),
267
- reqId: n.reqId,
268
- }, 'sendApprovalCard threw; falling back to text path');
269
- // Fall through to text path
329
+ let lastErr = null;
330
+ for (let attempt = 0; attempt < 2; attempt++) {
331
+ try {
332
+ const { messageId } = await m.sendApprovalCard(n.ctx.threadId, prompt);
333
+ activeCards.set(n.reqId, {
334
+ platform: n.ctx.platform,
335
+ threadId: n.ctx.threadId,
336
+ messageId,
337
+ });
338
+ log.info({
339
+ event: 'approval.router.card_sent',
340
+ platform: n.ctx.platform,
341
+ threadId: n.ctx.threadId,
342
+ reqId: n.reqId,
343
+ messageId,
344
+ attempt,
345
+ });
346
+ return;
347
+ }
348
+ catch (err) {
349
+ lastErr = err;
350
+ if (attempt === 0) {
351
+ log.warn({
352
+ event: 'approval.router.card_retry',
353
+ err: String(err),
354
+ reqId: n.reqId,
355
+ platform: n.ctx.platform,
356
+ }, 'sendApprovalCard threw; retrying once in 200ms');
357
+ await new Promise((resolve) => setTimeout(resolve, 200));
358
+ }
359
+ }
270
360
  }
361
+ log.warn({
362
+ event: 'approval.router.card_failed_fallback',
363
+ err: String(lastErr),
364
+ reqId: n.reqId,
365
+ platform: n.ctx.platform,
366
+ }, 'sendApprovalCard threw twice; falling back to text path');
367
+ // Fall through to text path
271
368
  }
272
369
  // Text path (Feishu / WeChat / any adapter without sendApprovalCard).
370
+ // priority='high' so sink tries a sync send first; falls back to the
371
+ // outbox queue on failure (e.g. IM platform glitch). Approval prompts
372
+ // are time-sensitive — the user expects them to feel synchronous.
373
+ // We pass `adapter: m` so sink uses the already-resolved messenger
374
+ // (respects install({ resolveMessenger })'s injection hook used by
375
+ // tests + multi-tenant setups) instead of re-resolving via registry.
273
376
  const text = formatApprovalPrompt(n);
274
- await m.sendMessage(n.ctx.threadId, text);
377
+ await sink.deliver({
378
+ platform: n.ctx.platform,
379
+ channelId: n.ctx.channelId,
380
+ threadId: n.ctx.threadId,
381
+ payload: text,
382
+ kind: 'text',
383
+ priority: 'high',
384
+ adapter: m,
385
+ });
275
386
  log.info({ event: 'approval.router.prompt_sent', platform: n.ctx.platform, threadId: n.ctx.threadId, reqId: n.reqId });
276
387
  });
277
388
  const platforms = opts.buttonCallbackPlatforms ?? ['telegram', 'feishu', 'wechat', 'discord', 'web'];
@@ -422,7 +533,14 @@ async function handleButtonCallback(platform, cb) {
422
533
  const info = approvalBus.resolvePendingByReqId(parsed.reqId, decision);
423
534
  if (!info) {
424
535
  await cb.ack('请求已过期或已被处理');
425
- if (installed) {
536
+ // Race: if onBusResolution already handled this (auto-allow grace
537
+ // expired, ran cleanup, edited the card to its terminal state — e.g.
538
+ // 'allowed' or 'expired'), activeCards has already been pruned for
539
+ // this reqId. Re-editing now would overwrite the correct terminal
540
+ // state with 'expired' (e.g. an "allowed" card flips to "expired"
541
+ // because the user clicked ✅ a few hundred ms after grace fired).
542
+ // Skip the edit in that case — the card already shows the truth.
543
+ if (activeCards.has(parsed.reqId) && installed) {
426
544
  const m = installed.resolveMessenger(platform);
427
545
  if (m?.editApprovalCard) {
428
546
  await m.editApprovalCard(cb.threadId, cb.messageId, {
@@ -432,8 +550,8 @@ async function handleButtonCallback(platform, cb) {
432
550
  log.warn({ event: 'approval.router.expire_edit_failed', err: String(err) });
433
551
  });
434
552
  }
553
+ activeCards.delete(parsed.reqId);
435
554
  }
436
- activeCards.delete(parsed.reqId);
437
555
  return;
438
556
  }
439
557
  const ackText = decision.behavior === 'allow'
@@ -532,12 +650,12 @@ function sendReceiptIfAny(info, decision) {
532
650
  if (decision.behavior === 'allow' && decision.autoAllowFurther) {
533
651
  msg = [
534
652
  '✅ 已批准并启用自动放行',
535
- `规则:${info.toolName} 前缀 "${info.fingerprint}" 5s 内自动放行`,
653
+ `规则:${info.toolName} · ${humanizeFingerprint(info.fingerprint)} 5s 内自动放行`,
536
654
  '撤销:本会话回 n 单条 / /approval clear 清空',
537
655
  ].join('\n');
538
656
  }
539
657
  else if (decision.behavior === 'deny' && info.wasAutoAllow) {
540
- msg = `❌ 已拒绝并撤销自动放行规则:${info.toolName} "${info.fingerprint}"`;
658
+ msg = `❌ 已拒绝并撤销自动放行规则:${info.toolName} · ${humanizeFingerprint(info.fingerprint)}`;
541
659
  }
542
660
  if (!msg)
543
661
  return;
@@ -546,7 +664,21 @@ function sendReceiptIfAny(info, decision) {
546
664
  log.warn({ event: 'approval.router.receipt_no_messenger', platform: info.platform });
547
665
  return;
548
666
  }
549
- m.sendMessage(info.threadId, msg).catch((err) => {
667
+ // priority='high' to match the approval prompt itself: receipt should
668
+ // arrive immediately on the happy path. channelId is not part of
669
+ // ResolvedInfo today (only RunContext carries it) so we pass '' — that
670
+ // affects the outbox row's thread_key composite but not delivery routing.
671
+ // adapter: m bypasses sink's global-registry resolve, respecting
672
+ // install({ resolveMessenger })'s test-friendly indirection.
673
+ sink.deliver({
674
+ platform: info.platform,
675
+ channelId: '',
676
+ threadId: info.threadId,
677
+ payload: msg,
678
+ kind: 'text',
679
+ priority: 'high',
680
+ adapter: m,
681
+ }).catch((err) => {
550
682
  log.warn({ event: 'approval.router.receipt_failed', err: String(err) });
551
683
  });
552
684
  }
@@ -1 +1 @@
1
- {"version":3,"file":"approval-router.js","sourceRoot":"","sources":["../../src/core/approval-router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approval-router.js","sourceRoot":"","sources":["../../src/core/approval-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { RouteContext } from '../router.js';
2
+ export declare function handleA2ACommand(args: string, _ctx: RouteContext): Promise<string>;
3
+ //# sourceMappingURL=a2a.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a.d.ts","sourceRoot":"","sources":["../../../src/core/commands/a2a.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAqIhD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,MAAM,CAAC,CAmCjB"}
@@ -0,0 +1,148 @@
1
+ // /a2a — Agent-to-Agent observability.
2
+ //
3
+ // Subcommands:
4
+ // /a2a — same as `stats`
5
+ // /a2a stats — counts + summary of A2A invocations
6
+ // /a2a recent [N] — last N A2A rows
7
+ // /a2a tree <id> — print the call chain rooted at jobs.id (parent + children)
8
+ //
9
+ // Backed by jobs.db (kind='inline' rows whose parent_id is non-NULL OR
10
+ // whose intent='a2a' in audit).
11
+ import { join } from 'node:path';
12
+ import { logger as rootLogger } from '../logger.js';
13
+ import { AGIM_HOME } from '../agim-paths.js';
14
+ const log = rootLogger.child({ component: 'cmd.a2a' });
15
+ /** Open a read-only handle. /a2a is a viewer — we don't want to take the
16
+ * same connection job-board.ts uses for writes. better-sqlite3 supports
17
+ * multiple connections to the same db in WAL mode. */
18
+ function openReadOnly() {
19
+ try {
20
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
21
+ const Database = require('better-sqlite3');
22
+ const d = new Database(join(AGIM_HOME, 'jobs.db'), { readonly: true, fileMustExist: true });
23
+ d.pragma('journal_mode = WAL');
24
+ return d;
25
+ }
26
+ catch (err) {
27
+ log.debug({ err: err instanceof Error ? err.message : String(err) }, 'a2a read-only open failed');
28
+ return null;
29
+ }
30
+ }
31
+ function fmtStats(d) {
32
+ // Two ways a row is "A2A":
33
+ // - kind='inline' AND parent_id IS NOT NULL (the callee row)
34
+ // - status IN (...) groupings
35
+ const total = d.prepare("SELECT COUNT(*) AS n FROM jobs WHERE kind='inline' AND parent_id IS NOT NULL").get().n;
36
+ if (total === 0) {
37
+ return '🔗 A2A 暂无记录。';
38
+ }
39
+ const byStatus = d.prepare("SELECT status, COUNT(*) AS n FROM jobs WHERE kind='inline' AND parent_id IS NOT NULL GROUP BY status").all();
40
+ const byAgent = d.prepare("SELECT agent, COUNT(*) AS n FROM jobs WHERE kind='inline' AND parent_id IS NOT NULL GROUP BY agent ORDER BY n DESC LIMIT 5").all();
41
+ const maxDepth = d.prepare("SELECT MAX(call_depth) AS m FROM jobs WHERE kind='inline' AND parent_id IS NOT NULL").get().m ?? 0;
42
+ const recent24h = d.prepare("SELECT COUNT(*) AS n FROM jobs WHERE kind='inline' AND parent_id IS NOT NULL AND created_at >= datetime('now','-1 day')").get().n;
43
+ const lines = [
44
+ `🔗 A2A · 共 ${total} 次调用 · 近 24h ${recent24h} 次 · 最深 ${maxDepth} 层`,
45
+ '',
46
+ '按状态:',
47
+ ...byStatus.map((s) => ` ${s.status}: ${s.n}`),
48
+ '',
49
+ '按 callee agent (Top 5):',
50
+ ...byAgent.map((a) => ` ${a.agent}: ${a.n}`),
51
+ '',
52
+ '/a2a recent [N] 最近 N 次(默认 5)',
53
+ '/a2a tree <id> 打印调用链',
54
+ ];
55
+ return lines.join('\n');
56
+ }
57
+ function fmtRecent(d, n) {
58
+ const rows = d.prepare(`SELECT id, agent, parent_id, call_depth, status,
59
+ substr(prompt, 1, 50) AS prompt,
60
+ started_at, completed_at
61
+ FROM jobs
62
+ WHERE kind='inline' AND parent_id IS NOT NULL
63
+ ORDER BY id DESC
64
+ LIMIT ?`).all(n);
65
+ if (rows.length === 0)
66
+ return '🔗 A2A 暂无记录。';
67
+ const lines = [`🔗 A2A 最近 ${rows.length} 次:`];
68
+ for (const r of rows) {
69
+ const icon = r.status === 'delivered' || r.status === 'completed' ? '✅' :
70
+ r.status === 'failed' ? '❌' :
71
+ r.status === 'running' ? '🔄' :
72
+ r.status === 'cancelled' ? '🚫' : '⏳';
73
+ const depth = '↳'.repeat(Math.min(r.call_depth, 5));
74
+ const dur = r.started_at && r.completed_at
75
+ ? `${Math.round((new Date(`${r.completed_at}Z`).getTime() - new Date(`${r.started_at}Z`).getTime()) / 1000)}s`
76
+ : '—';
77
+ lines.push(` ${icon} #${r.id} ${depth}${r.agent} (←#${r.parent_id ?? '?'}) [${r.status}·${dur}] ${r.prompt}${r.prompt.length >= 50 ? '…' : ''}`);
78
+ }
79
+ return lines.join('\n');
80
+ }
81
+ function fmtTree(d, rootId) {
82
+ const root = d.prepare(`SELECT * FROM jobs WHERE id = ?`).get(rootId);
83
+ if (!root)
84
+ return `❌ 未找到 jobs #${rootId}。`;
85
+ // Walk down (children of rootId, grandchildren, ...).
86
+ const lines = [];
87
+ const visited = new Set();
88
+ function walk(id, depth) {
89
+ if (visited.has(id) || depth > 10)
90
+ return;
91
+ visited.add(id);
92
+ const row = d.prepare('SELECT * FROM jobs WHERE id = ?').get(id);
93
+ if (!row)
94
+ return;
95
+ const indent = ' '.repeat(depth);
96
+ const icon = row.status === 'delivered' || row.status === 'completed' ? '✅' :
97
+ row.status === 'failed' ? '❌' :
98
+ row.status === 'running' ? '🔄' : '⏳';
99
+ const preview = row.prompt.replace(/\n/g, ' ').slice(0, 60);
100
+ lines.push(`${indent}${icon} #${row.id} ${row.agent} [${row.status}] ${preview}${row.prompt.length > 60 ? '…' : ''}`);
101
+ const children = d.prepare(`SELECT id FROM jobs WHERE parent_id = ? ORDER BY id`).all(id);
102
+ for (const c of children)
103
+ walk(c.id, depth + 1);
104
+ }
105
+ walk(rootId, 0);
106
+ return [`🌳 A2A 调用树 (root #${rootId}):`, '', ...lines].join('\n');
107
+ }
108
+ export async function handleA2ACommand(args, _ctx) {
109
+ const parts = args.trim().split(/\s+/).filter(Boolean);
110
+ const sub = parts[0] || 'stats';
111
+ const d = openReadOnly();
112
+ if (!d)
113
+ return '❌ A2A 数据不可用(jobs.db 未初始化或不存在)。';
114
+ try {
115
+ switch (sub) {
116
+ case 'stats':
117
+ case 's':
118
+ return fmtStats(d);
119
+ case 'recent':
120
+ case 'r':
121
+ case 'list':
122
+ case 'ls': {
123
+ const n = Math.max(1, Math.min(parseInt(parts[1] || '5', 10) || 5, 30));
124
+ return fmtRecent(d, n);
125
+ }
126
+ case 'tree':
127
+ case 't': {
128
+ const id = parseInt(parts[1] || '', 10);
129
+ if (!Number.isFinite(id) || id <= 0)
130
+ return '用法: /a2a tree <id>';
131
+ return fmtTree(d, id);
132
+ }
133
+ default:
134
+ return [
135
+ `❓ 未知子命令: ${sub}`,
136
+ '',
137
+ '可用: /a2a · /a2a recent [N] · /a2a tree <id>',
138
+ ].join('\n');
139
+ }
140
+ }
141
+ finally {
142
+ try {
143
+ d.close();
144
+ }
145
+ catch { /* ignore */ }
146
+ }
147
+ }
148
+ //# sourceMappingURL=a2a.js.map