agim-cli 1.1.1 → 1.1.3

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 (76) hide show
  1. package/CHANGELOG.md +147 -0
  2. package/README.md +8 -1
  3. package/README.zh-CN.md +8 -1
  4. package/dist/cli.js +265 -30
  5. package/dist/cli.js.map +1 -1
  6. package/dist/core/a2a.d.ts +55 -0
  7. package/dist/core/a2a.d.ts.map +1 -0
  8. package/dist/core/a2a.js +254 -0
  9. package/dist/core/a2a.js.map +1 -0
  10. package/dist/core/approval-bus.d.ts +40 -0
  11. package/dist/core/approval-bus.d.ts.map +1 -1
  12. package/dist/core/approval-bus.js +125 -0
  13. package/dist/core/approval-bus.js.map +1 -1
  14. package/dist/core/approval-router.d.ts.map +1 -1
  15. package/dist/core/approval-router.js +31 -2
  16. package/dist/core/approval-router.js.map +1 -1
  17. package/dist/core/artifacts.d.ts +86 -0
  18. package/dist/core/artifacts.d.ts.map +1 -0
  19. package/dist/core/artifacts.js +306 -0
  20. package/dist/core/artifacts.js.map +1 -0
  21. package/dist/core/commands/a2a.d.ts +3 -0
  22. package/dist/core/commands/a2a.d.ts.map +1 -0
  23. package/dist/core/commands/a2a.js +162 -0
  24. package/dist/core/commands/a2a.js.map +1 -0
  25. package/dist/core/commands/job.d.ts.map +1 -1
  26. package/dist/core/commands/job.js +11 -2
  27. package/dist/core/commands/job.js.map +1 -1
  28. package/dist/core/commands/outbox.d.ts +3 -0
  29. package/dist/core/commands/outbox.d.ts.map +1 -0
  30. package/dist/core/commands/outbox.js +92 -0
  31. package/dist/core/commands/outbox.js.map +1 -0
  32. package/dist/core/job-board.d.ts +122 -1
  33. package/dist/core/job-board.d.ts.map +1 -1
  34. package/dist/core/job-board.js +432 -21
  35. package/dist/core/job-board.js.map +1 -1
  36. package/dist/core/job-recovery.d.ts +48 -0
  37. package/dist/core/job-recovery.d.ts.map +1 -0
  38. package/dist/core/job-recovery.js +185 -0
  39. package/dist/core/job-recovery.js.map +1 -0
  40. package/dist/core/message-sink.d.ts +63 -0
  41. package/dist/core/message-sink.d.ts.map +1 -0
  42. package/dist/core/message-sink.js +296 -0
  43. package/dist/core/message-sink.js.map +1 -0
  44. package/dist/core/outbox.d.ts +71 -0
  45. package/dist/core/outbox.d.ts.map +1 -0
  46. package/dist/core/outbox.js +301 -0
  47. package/dist/core/outbox.js.map +1 -0
  48. package/dist/core/reminders.d.ts.map +1 -1
  49. package/dist/core/reminders.js +12 -1
  50. package/dist/core/reminders.js.map +1 -1
  51. package/dist/core/restart-completion.d.ts.map +1 -1
  52. package/dist/core/restart-completion.js +18 -1
  53. package/dist/core/restart-completion.js.map +1 -1
  54. package/dist/core/router.d.ts +8 -0
  55. package/dist/core/router.d.ts.map +1 -1
  56. package/dist/core/router.js +16 -0
  57. package/dist/core/router.js.map +1 -1
  58. package/dist/core/types.d.ts +22 -0
  59. package/dist/core/types.d.ts.map +1 -1
  60. package/dist/plugins/agents/claude-code/index.d.ts.map +1 -1
  61. package/dist/plugins/agents/claude-code/index.js +5 -0
  62. package/dist/plugins/agents/claude-code/index.js.map +1 -1
  63. package/dist/plugins/agents/claude-code/mcp-approval-server.d.ts +46 -0
  64. package/dist/plugins/agents/claude-code/mcp-approval-server.d.ts.map +1 -1
  65. package/dist/plugins/agents/claude-code/mcp-approval-server.js +158 -0
  66. package/dist/plugins/agents/claude-code/mcp-approval-server.js.map +1 -1
  67. package/dist/plugins/agents/codex/index.d.ts.map +1 -1
  68. package/dist/plugins/agents/codex/index.js +5 -0
  69. package/dist/plugins/agents/codex/index.js.map +1 -1
  70. package/dist/plugins/agents/opencode/opencode-stdio-adapter.d.ts.map +1 -1
  71. package/dist/plugins/agents/opencode/opencode-stdio-adapter.js +5 -0
  72. package/dist/plugins/agents/opencode/opencode-stdio-adapter.js.map +1 -1
  73. package/dist/web/server.d.ts.map +1 -1
  74. package/dist/web/server.js +28 -16
  75. package/dist/web/server.js.map +1 -1
  76. package/package.json +1 -1
@@ -0,0 +1,306 @@
1
+ // A2A Layer 2 — shared artifact pool.
2
+ //
3
+ // Each A2A inline job gets a dedicated directory under
4
+ // `~/.agim/artifacts/<jobId>/`, split into:
5
+ //
6
+ // _agim-input/ — files copied here by callAgentByName before the callee
7
+ // runs. Read-only by convention (we don't enforce mode).
8
+ // _agim-output/ — files the callee writes here become visible to the
9
+ // caller in callAgentByName's return value.
10
+ //
11
+ // Lifecycle is bound to the inline-job row: when job-board's retention
12
+ // sweep prunes a row, pruneArtifacts() removes its directory too.
13
+ //
14
+ // Trust model is single-host: every agent runs as the same user, so we
15
+ // don't sandbox file access. We do enforce size + count caps so a runaway
16
+ // callee can't blow up the disk.
17
+ //
18
+ // Why one central tree (~/.agim/artifacts/) instead of per-agent cwd:
19
+ // - callers and callees can use absolute paths consistently
20
+ // - retention sits next to jobs.db and audit.db, easy to back up / wipe
21
+ // - doesn't pollute ~/.agim-workspaces/<agent>/ which is long-term memory
22
+ // - mirrors the file/jobs.db split — workspace cwds are conceptual
23
+ // home directories, artifacts/ is per-call scratch.
24
+ import { mkdir, copyFile, link, readFile, writeFile, readdir, stat, rm } from 'node:fs/promises';
25
+ import { existsSync } from 'node:fs';
26
+ import { join, isAbsolute, dirname, basename } from 'node:path';
27
+ import { logger as rootLogger } from './logger.js';
28
+ import { AGIM_HOME } from './agim-paths.js';
29
+ const log = rootLogger.child({ component: 'a2a.artifacts' });
30
+ const ROOT = join(AGIM_HOME, 'artifacts');
31
+ // ─── env-tunable caps ───────────────────────────────────────────────
32
+ const DEFAULT_MAX_FILE_BYTES = 50 * 1024 * 1024; // 50 MB
33
+ const DEFAULT_MAX_JOB_BYTES = 200 * 1024 * 1024; // 200 MB
34
+ const DEFAULT_MAX_FILES = 200;
35
+ function resolveMaxFileBytes() {
36
+ const raw = process.env.IMHUB_A2A_ARTIFACT_MAX_BYTES_PER_FILE;
37
+ if (raw) {
38
+ const n = parseInt(raw, 10);
39
+ if (Number.isFinite(n) && n > 0)
40
+ return n;
41
+ }
42
+ return DEFAULT_MAX_FILE_BYTES;
43
+ }
44
+ function resolveMaxJobBytes() {
45
+ const raw = process.env.IMHUB_A2A_ARTIFACT_MAX_BYTES_PER_JOB;
46
+ if (raw) {
47
+ const n = parseInt(raw, 10);
48
+ if (Number.isFinite(n) && n > 0)
49
+ return n;
50
+ }
51
+ return DEFAULT_MAX_JOB_BYTES;
52
+ }
53
+ function resolveMaxFiles() {
54
+ const raw = process.env.IMHUB_A2A_ARTIFACT_MAX_FILES_PER_JOB;
55
+ if (raw) {
56
+ const n = parseInt(raw, 10);
57
+ if (Number.isFinite(n) && n > 0)
58
+ return n;
59
+ }
60
+ return DEFAULT_MAX_FILES;
61
+ }
62
+ /** Resolve the on-disk dirs for a job. Does NOT create them. Pure path math. */
63
+ export function getArtifactsDir(jobId) {
64
+ const jobDir = join(ROOT, String(jobId));
65
+ return {
66
+ jobDir,
67
+ inputDir: join(jobDir, '_agim-input'),
68
+ outputDir: join(jobDir, '_agim-output'),
69
+ };
70
+ }
71
+ /** Make sure all three dirs exist; idempotent. */
72
+ export async function ensureArtifactsDir(jobId) {
73
+ const dirs = getArtifactsDir(jobId);
74
+ await mkdir(dirs.inputDir, { recursive: true });
75
+ await mkdir(dirs.outputDir, { recursive: true });
76
+ return dirs;
77
+ }
78
+ /** Copy the caller-supplied inputs into the callee's _agim-input/.
79
+ * Resolution rules:
80
+ * - `fromAbsolutePath` — copyFile from disk; absolute paths only (reject
81
+ * anything with a relative segment to avoid CWD-dependent surprises).
82
+ * - `fromCallerOutput` — pull from <ROOT>/<callerJobId>/_agim-output/<name>.
83
+ * - `content` — write the string verbatim (UTF-8).
84
+ * All three honor the per-file size cap. After every write the running
85
+ * per-job byte+count totals are re-checked; on overflow we throw + leave
86
+ * the partial state for the caller to inspect on failure.
87
+ * Uses hard links when source/destination share a device — near-zero
88
+ * cost for read-only inputs. Falls back to copy on EXDEV. */
89
+ export async function copyInputs(jobId, inputs, callerJobId) {
90
+ if (!inputs.length)
91
+ return [];
92
+ const dirs = await ensureArtifactsDir(jobId);
93
+ const maxFile = resolveMaxFileBytes();
94
+ const maxJob = resolveMaxJobBytes();
95
+ const maxFiles = resolveMaxFiles();
96
+ const written = [];
97
+ let totalBytes = 0;
98
+ for (const inp of inputs) {
99
+ if (written.length >= maxFiles) {
100
+ throw new Error(`artifacts: too many input files (max ${maxFiles})`);
101
+ }
102
+ const inputName = inp.name; // capture for the final 'never' branch
103
+ if (!inputName || inputName.includes('/') || inputName.includes('\\') || inputName === '..') {
104
+ throw new Error(`artifacts: input filename invalid (no slashes / no '..'): ${JSON.stringify(inputName)}`);
105
+ }
106
+ const dest = join(dirs.inputDir, inputName);
107
+ let bytes = 0;
108
+ if ('fromAbsolutePath' in inp) {
109
+ if (!isAbsolute(inp.fromAbsolutePath)) {
110
+ throw new Error(`artifacts: fromAbsolutePath must be absolute: ${inp.fromAbsolutePath}`);
111
+ }
112
+ const st = await stat(inp.fromAbsolutePath);
113
+ if (!st.isFile())
114
+ throw new Error(`artifacts: source not a regular file: ${inp.fromAbsolutePath}`);
115
+ if (st.size > maxFile)
116
+ throw new Error(`artifacts: ${inp.name} exceeds per-file cap (${st.size} > ${maxFile})`);
117
+ bytes = st.size;
118
+ try {
119
+ await link(inp.fromAbsolutePath, dest);
120
+ }
121
+ catch (err) {
122
+ // EEXIST (file already there from a prior copyInputs of same name)
123
+ // and EXDEV (cross-device) both fall back to plain copy.
124
+ await copyFile(inp.fromAbsolutePath, dest);
125
+ void err;
126
+ }
127
+ }
128
+ else if ('fromCallerOutput' in inp) {
129
+ if (typeof callerJobId !== 'number' || callerJobId <= 0) {
130
+ throw new Error(`artifacts: fromCallerOutput requires a callerJobId`);
131
+ }
132
+ const callerDirs = getArtifactsDir(callerJobId);
133
+ const src = join(callerDirs.outputDir, inp.fromCallerOutput);
134
+ if (!existsSync(src)) {
135
+ throw new Error(`artifacts: caller output '${inp.fromCallerOutput}' not found (job ${callerJobId})`);
136
+ }
137
+ const st = await stat(src);
138
+ if (st.size > maxFile)
139
+ throw new Error(`artifacts: ${inp.name} exceeds per-file cap (${st.size} > ${maxFile})`);
140
+ bytes = st.size;
141
+ try {
142
+ await link(src, dest);
143
+ }
144
+ catch {
145
+ await copyFile(src, dest);
146
+ }
147
+ }
148
+ else if ('content' in inp) {
149
+ const buf = Buffer.from(inp.content, 'utf-8');
150
+ if (buf.length > maxFile) {
151
+ throw new Error(`artifacts: ${inp.name} content exceeds per-file cap (${buf.length} > ${maxFile})`);
152
+ }
153
+ bytes = buf.length;
154
+ await writeFile(dest, buf);
155
+ }
156
+ else {
157
+ throw new Error(`artifacts: input '${inputName}' missing fromAbsolutePath / fromCallerOutput / content`);
158
+ }
159
+ totalBytes += bytes;
160
+ if (totalBytes > maxJob) {
161
+ throw new Error(`artifacts: per-job byte cap exceeded (${totalBytes} > ${maxJob})`);
162
+ }
163
+ written.push({ name: inputName, bytes });
164
+ }
165
+ return written;
166
+ }
167
+ /** List everything the callee left under _agim-output/. */
168
+ export async function listOutputs(jobId) {
169
+ const { outputDir } = getArtifactsDir(jobId);
170
+ if (!existsSync(outputDir))
171
+ return [];
172
+ let names;
173
+ try {
174
+ names = await readdir(outputDir);
175
+ }
176
+ catch {
177
+ return [];
178
+ }
179
+ const out = [];
180
+ for (const name of names) {
181
+ try {
182
+ const st = await stat(join(outputDir, name));
183
+ if (st.isFile()) {
184
+ out.push({ name, bytes: st.size, mtime: st.mtime.toISOString() });
185
+ }
186
+ }
187
+ catch { /* skip transient errors */ }
188
+ }
189
+ out.sort((a, b) => a.name.localeCompare(b.name));
190
+ return out;
191
+ }
192
+ /** Read a single output file (for /a2a tree or future Web UI download). */
193
+ export async function readOutput(jobId, name) {
194
+ if (name.includes('/') || name === '..')
195
+ return null;
196
+ const { outputDir } = getArtifactsDir(jobId);
197
+ const p = join(outputDir, name);
198
+ if (!existsSync(p))
199
+ return null;
200
+ try {
201
+ return await readFile(p);
202
+ }
203
+ catch {
204
+ return null;
205
+ }
206
+ }
207
+ /** Drop the whole <jobId>/ tree. Safe on missing dirs. */
208
+ export async function pruneArtifacts(jobId) {
209
+ const { jobDir } = getArtifactsDir(jobId);
210
+ try {
211
+ await rm(jobDir, { recursive: true, force: true });
212
+ }
213
+ catch (err) {
214
+ log.warn({ event: 'artifacts.prune_failed', jobId, err: err instanceof Error ? err.message : String(err) }, `pruneArtifacts(${jobId}) failed`);
215
+ }
216
+ }
217
+ /** Drop dirs for every jobId in the given list. Called by job-board's
218
+ * retention sweep with rows it just deleted. */
219
+ export async function pruneArtifactsBatch(jobIds) {
220
+ if (!jobIds.length)
221
+ return 0;
222
+ let n = 0;
223
+ for (const id of jobIds) {
224
+ await pruneArtifacts(id);
225
+ n++;
226
+ }
227
+ return n;
228
+ }
229
+ /** Compute per-job totals (used by tests + future /a2a stats extension). */
230
+ export async function statJob(jobId) {
231
+ const dirs = getArtifactsDir(jobId);
232
+ const inputs = [];
233
+ const outputs = await listOutputs(jobId);
234
+ if (existsSync(dirs.inputDir)) {
235
+ for (const name of await readdir(dirs.inputDir)) {
236
+ try {
237
+ const st = await stat(join(dirs.inputDir, name));
238
+ if (st.isFile())
239
+ inputs.push({ name, bytes: st.size });
240
+ }
241
+ catch { /* ignore */ }
242
+ }
243
+ }
244
+ const bytes = inputs.reduce((s, f) => s + f.bytes, 0) + outputs.reduce((s, f) => s + f.bytes, 0);
245
+ return { files: inputs.length + outputs.length, bytes, outputs, inputs };
246
+ }
247
+ /** Build the [A2A workspace] preamble the callee sees prefixed to its
248
+ * prompt. We use a clearly-tagged block so the model treats it as
249
+ * agim metadata and doesn't blur it with the user's intent. */
250
+ export function buildEnvelope(opts) {
251
+ const dirs = getArtifactsDir(opts.jobId);
252
+ const lines = [
253
+ '[A2A workspace]',
254
+ `Your dedicated artifacts directory for this run:`,
255
+ ` ${dirs.outputDir}/`,
256
+ '',
257
+ ];
258
+ if (opts.inputs.length > 0) {
259
+ lines.push(`Input files placed by the caller (under ${dirs.inputDir}/):`);
260
+ for (const f of opts.inputs) {
261
+ lines.push(` - ${f.name}\t(${formatBytes(f.bytes)})`);
262
+ }
263
+ lines.push(`Read with absolute paths.`);
264
+ lines.push('');
265
+ }
266
+ if (opts.expectOutputs && opts.expectOutputs.length > 0) {
267
+ lines.push(`Expected outputs (place in ${dirs.outputDir}/):`);
268
+ for (const name of opts.expectOutputs)
269
+ lines.push(` - ${name}`);
270
+ lines.push('');
271
+ }
272
+ lines.push(`Anything you write under ${dirs.outputDir}/ will be visible`);
273
+ lines.push(`to the caller after you return.`);
274
+ lines.push('');
275
+ lines.push('---');
276
+ return lines.join('\n');
277
+ }
278
+ function formatBytes(n) {
279
+ if (n < 1024)
280
+ return `${n} B`;
281
+ if (n < 1024 * 1024)
282
+ return `${(n / 1024).toFixed(1)} KB`;
283
+ if (n < 1024 * 1024 * 1024)
284
+ return `${(n / 1024 / 1024).toFixed(1)} MB`;
285
+ return `${(n / 1024 / 1024 / 1024).toFixed(2)} GB`;
286
+ }
287
+ // ─── test-only ──────────────────────────────────────────────────────
288
+ /** Test hook: wipe ALL artifacts. Production code must never call this. */
289
+ export async function _wipeAllForTests() {
290
+ try {
291
+ await rm(ROOT, { recursive: true, force: true });
292
+ }
293
+ catch { /* ignore */ }
294
+ }
295
+ /** Internal exports for tests. */
296
+ export const _internal = {
297
+ ROOT,
298
+ formatBytes,
299
+ resolveMaxFileBytes,
300
+ resolveMaxJobBytes,
301
+ resolveMaxFiles,
302
+ };
303
+ // Reference unused-by-design helpers so eslint / tsc-noUnused don't whine.
304
+ void dirname;
305
+ void basename;
306
+ //# sourceMappingURL=artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/core/artifacts.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;AAkJhD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,MAAM,CAAC,CAmCjB"}
@@ -0,0 +1,162 @@
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
+ import { listOutputs } from '../artifacts.js';
15
+ const log = rootLogger.child({ component: 'cmd.a2a' });
16
+ /** Open a read-only handle. /a2a is a viewer — we don't want to take the
17
+ * same connection job-board.ts uses for writes. better-sqlite3 supports
18
+ * multiple connections to the same db in WAL mode. */
19
+ function openReadOnly() {
20
+ try {
21
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
22
+ const Database = require('better-sqlite3');
23
+ const d = new Database(join(AGIM_HOME, 'jobs.db'), { readonly: true, fileMustExist: true });
24
+ d.pragma('journal_mode = WAL');
25
+ return d;
26
+ }
27
+ catch (err) {
28
+ log.debug({ err: err instanceof Error ? err.message : String(err) }, 'a2a read-only open failed');
29
+ return null;
30
+ }
31
+ }
32
+ function fmtStats(d) {
33
+ // Two ways a row is "A2A":
34
+ // - kind='inline' AND parent_id IS NOT NULL (the callee row)
35
+ // - status IN (...) groupings
36
+ const total = d.prepare("SELECT COUNT(*) AS n FROM jobs WHERE kind='inline' AND parent_id IS NOT NULL").get().n;
37
+ if (total === 0) {
38
+ return '🔗 A2A 暂无记录。';
39
+ }
40
+ const byStatus = d.prepare("SELECT status, COUNT(*) AS n FROM jobs WHERE kind='inline' AND parent_id IS NOT NULL GROUP BY status").all();
41
+ 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();
42
+ const maxDepth = d.prepare("SELECT MAX(call_depth) AS m FROM jobs WHERE kind='inline' AND parent_id IS NOT NULL").get().m ?? 0;
43
+ 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;
44
+ const lines = [
45
+ `🔗 A2A · 共 ${total} 次调用 · 近 24h ${recent24h} 次 · 最深 ${maxDepth} 层`,
46
+ '',
47
+ '按状态:',
48
+ ...byStatus.map((s) => ` ${s.status}: ${s.n}`),
49
+ '',
50
+ '按 callee agent (Top 5):',
51
+ ...byAgent.map((a) => ` ${a.agent}: ${a.n}`),
52
+ '',
53
+ '/a2a recent [N] 最近 N 次(默认 5)',
54
+ '/a2a tree <id> 打印调用链',
55
+ ];
56
+ return lines.join('\n');
57
+ }
58
+ function fmtRecent(d, n) {
59
+ const rows = d.prepare(`SELECT id, agent, parent_id, call_depth, status,
60
+ substr(prompt, 1, 50) AS prompt,
61
+ started_at, completed_at
62
+ FROM jobs
63
+ WHERE kind='inline' AND parent_id IS NOT NULL
64
+ ORDER BY id DESC
65
+ LIMIT ?`).all(n);
66
+ if (rows.length === 0)
67
+ return '🔗 A2A 暂无记录。';
68
+ const lines = [`🔗 A2A 最近 ${rows.length} 次:`];
69
+ for (const r of rows) {
70
+ const icon = r.status === 'delivered' || r.status === 'completed' ? '✅' :
71
+ r.status === 'failed' ? '❌' :
72
+ r.status === 'running' ? '🔄' :
73
+ r.status === 'cancelled' ? '🚫' : '⏳';
74
+ const depth = '↳'.repeat(Math.min(r.call_depth, 5));
75
+ const dur = r.started_at && r.completed_at
76
+ ? `${Math.round((new Date(`${r.completed_at}Z`).getTime() - new Date(`${r.started_at}Z`).getTime()) / 1000)}s`
77
+ : '—';
78
+ lines.push(` ${icon} #${r.id} ${depth}${r.agent} (←#${r.parent_id ?? '?'}) [${r.status}·${dur}] ${r.prompt}${r.prompt.length >= 50 ? '…' : ''}`);
79
+ }
80
+ return lines.join('\n');
81
+ }
82
+ async function fmtTree(d, rootId) {
83
+ const root = d.prepare(`SELECT * FROM jobs WHERE id = ?`).get(rootId);
84
+ if (!root)
85
+ return `❌ 未找到 jobs #${rootId}。`;
86
+ // Walk down (children of rootId, grandchildren, ...).
87
+ const lines = [];
88
+ const visited = new Set();
89
+ async function walk(id, depth) {
90
+ if (visited.has(id) || depth > 10)
91
+ return;
92
+ visited.add(id);
93
+ const row = d.prepare('SELECT * FROM jobs WHERE id = ?').get(id);
94
+ if (!row)
95
+ return;
96
+ const indent = ' '.repeat(depth);
97
+ const icon = row.status === 'delivered' || row.status === 'completed' ? '✅' :
98
+ row.status === 'failed' ? '❌' :
99
+ row.status === 'running' ? '🔄' : '⏳';
100
+ const preview = row.prompt.replace(/\n/g, ' ').slice(0, 60);
101
+ lines.push(`${indent}${icon} #${row.id} ${row.agent} [${row.status}] ${preview}${row.prompt.length > 60 ? '…' : ''}`);
102
+ // L2 — show output files alongside the row. Cheap fs hit; tree is a
103
+ // diagnostic command, not on the hot path.
104
+ const outs = await listOutputs(row.id);
105
+ for (const f of outs) {
106
+ lines.push(`${indent} 📎 ${f.name} (${fmtBytes(f.bytes)})`);
107
+ }
108
+ const children = d.prepare(`SELECT id FROM jobs WHERE parent_id = ? ORDER BY id`).all(id);
109
+ for (const c of children)
110
+ await walk(c.id, depth + 1);
111
+ }
112
+ await walk(rootId, 0);
113
+ return [`🌳 A2A 调用树 (root #${rootId}):`, '', ...lines].join('\n');
114
+ }
115
+ function fmtBytes(n) {
116
+ if (n < 1024)
117
+ return `${n} B`;
118
+ if (n < 1024 * 1024)
119
+ return `${(n / 1024).toFixed(1)} KB`;
120
+ return `${(n / 1024 / 1024).toFixed(1)} MB`;
121
+ }
122
+ export async function handleA2ACommand(args, _ctx) {
123
+ const parts = args.trim().split(/\s+/).filter(Boolean);
124
+ const sub = parts[0] || 'stats';
125
+ const d = openReadOnly();
126
+ if (!d)
127
+ return '❌ A2A 数据不可用(jobs.db 未初始化或不存在)。';
128
+ try {
129
+ switch (sub) {
130
+ case 'stats':
131
+ case 's':
132
+ return fmtStats(d);
133
+ case 'recent':
134
+ case 'r':
135
+ case 'list':
136
+ case 'ls': {
137
+ const n = Math.max(1, Math.min(parseInt(parts[1] || '5', 10) || 5, 30));
138
+ return fmtRecent(d, n);
139
+ }
140
+ case 'tree':
141
+ case 't': {
142
+ const id = parseInt(parts[1] || '', 10);
143
+ if (!Number.isFinite(id) || id <= 0)
144
+ return '用法: /a2a tree <id>';
145
+ return await fmtTree(d, id);
146
+ }
147
+ default:
148
+ return [
149
+ `❓ 未知子命令: ${sub}`,
150
+ '',
151
+ '可用: /a2a · /a2a recent [N] · /a2a tree <id>',
152
+ ].join('\n');
153
+ }
154
+ }
155
+ finally {
156
+ try {
157
+ d.close();
158
+ }
159
+ catch { /* ignore */ }
160
+ }
161
+ }
162
+ //# sourceMappingURL=a2a.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a.js","sourceRoot":"","sources":["../../../src/core/commands/a2a.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/core/commands/job.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAchD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAyK1C"}
1
+ {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/core/commands/job.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAoBhD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CA6K1C"}
@@ -4,8 +4,13 @@ import { sessionManager } from '../session.js';
4
4
  import { AgentBase } from '../agent-base.js';
5
5
  import { createJob, getJob, listJobs, cancelJob, runJob, getJobStats } from '../job-board.js';
6
6
  import { workspaceRegistry } from '../workspace.js';
7
+ const JOB_STATUS_ICON = {
8
+ pending: '⏳', running: '🔄', completed: '✅', delivered: '📬',
9
+ failed: '❌', cancelled: '🚫',
10
+ interrupted: '⚠️', replaced: '🔁', abandoned: '🗑',
11
+ };
7
12
  function formatJob(j) {
8
- const icon = { pending: '⏳', running: '🔄', completed: '✅', failed: '❌', cancelled: '🚫' }[j.status] || '❓';
13
+ const icon = JOB_STATUS_ICON[j.status] || '❓';
9
14
  const ts = new Date(`${j.created_at}Z`).toLocaleTimeString('zh-CN', { hour: '2-digit', minute: '2-digit' });
10
15
  const preview = j.prompt.substring(0, 50) + (j.prompt.length > 50 ? '...' : '');
11
16
  return `${icon} #${j.id} ${j.agent}: ${preview} [${j.status}] · ${ts}`;
@@ -77,7 +82,11 @@ Agent: ${agent.name}
77
82
  const job = getJob(id, ownerOpts);
78
83
  if (!job)
79
84
  return `❌ 未找到任务 #${id}。`;
80
- const statusLabel = { pending: '⏳ 待执行', running: '🔄 运行中', completed: '✅ 已完成', failed: '❌ 失败', cancelled: '🚫 已取消' };
85
+ const statusLabel = {
86
+ pending: '⏳ 待执行', running: '🔄 运行中', completed: '✅ 已完成', delivered: '📬 已送达',
87
+ failed: '❌ 失败', cancelled: '🚫 已取消',
88
+ interrupted: '⚠️ 已中断', replaced: '🔁 已重发', abandoned: '🗑 已归档',
89
+ };
81
90
  let msg = `📋 **任务 #${job.id}**
82
91
 
83
92
  Agent: ${job.agent}
@@ -1 +1 @@
1
- {"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/core/commands/job.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/core/commands/job.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { RouteContext } from '../router.js';
2
+ export declare function handleOutboxCommand(args: string, _ctx: RouteContext): Promise<string>;
3
+ //# sourceMappingURL=outbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../../src/core/commands/outbox.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AA+BhD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,MAAM,CAAC,CAgDjB"}