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.
- package/CHANGELOG.md +190 -0
- package/README.md +7 -1
- package/README.zh-CN.md +7 -1
- package/dist/cli-ui/i18n.d.ts +4 -4
- package/dist/cli-ui/i18n.js +4 -4
- package/dist/cli-ui/i18n.js.map +1 -1
- package/dist/cli.js +265 -30
- package/dist/cli.js.map +1 -1
- package/dist/core/a2a.d.ts +36 -0
- package/dist/core/a2a.d.ts.map +1 -0
- package/dist/core/a2a.js +203 -0
- package/dist/core/a2a.js.map +1 -0
- package/dist/core/agent-base.d.ts +5 -2
- package/dist/core/agent-base.d.ts.map +1 -1
- package/dist/core/agent-base.js +68 -24
- package/dist/core/agent-base.js.map +1 -1
- package/dist/core/approval-bus.d.ts +81 -2
- package/dist/core/approval-bus.d.ts.map +1 -1
- package/dist/core/approval-bus.js +273 -36
- package/dist/core/approval-bus.js.map +1 -1
- package/dist/core/approval-router.d.ts.map +1 -1
- package/dist/core/approval-router.js +221 -89
- package/dist/core/approval-router.js.map +1 -1
- package/dist/core/commands/a2a.d.ts +3 -0
- package/dist/core/commands/a2a.d.ts.map +1 -0
- package/dist/core/commands/a2a.js +148 -0
- package/dist/core/commands/a2a.js.map +1 -0
- package/dist/core/commands/approval.d.ts.map +1 -1
- package/dist/core/commands/approval.js +7 -5
- package/dist/core/commands/approval.js.map +1 -1
- package/dist/core/commands/builtin.js +2 -2
- package/dist/core/commands/builtin.js.map +1 -1
- package/dist/core/commands/job.d.ts.map +1 -1
- package/dist/core/commands/job.js +11 -2
- package/dist/core/commands/job.js.map +1 -1
- package/dist/core/commands/outbox.d.ts +3 -0
- package/dist/core/commands/outbox.d.ts.map +1 -0
- package/dist/core/commands/outbox.js +92 -0
- package/dist/core/commands/outbox.js.map +1 -0
- package/dist/core/job-board.d.ts +122 -1
- package/dist/core/job-board.d.ts.map +1 -1
- package/dist/core/job-board.js +404 -21
- package/dist/core/job-board.js.map +1 -1
- package/dist/core/job-recovery.d.ts +48 -0
- package/dist/core/job-recovery.d.ts.map +1 -0
- package/dist/core/job-recovery.js +185 -0
- package/dist/core/job-recovery.js.map +1 -0
- package/dist/core/message-sink.d.ts +63 -0
- package/dist/core/message-sink.d.ts.map +1 -0
- package/dist/core/message-sink.js +296 -0
- package/dist/core/message-sink.js.map +1 -0
- package/dist/core/outbox.d.ts +71 -0
- package/dist/core/outbox.d.ts.map +1 -0
- package/dist/core/outbox.js +301 -0
- package/dist/core/outbox.js.map +1 -0
- package/dist/core/reminders.d.ts.map +1 -1
- package/dist/core/reminders.js +12 -1
- package/dist/core/reminders.js.map +1 -1
- package/dist/core/restart-completion.d.ts.map +1 -1
- package/dist/core/restart-completion.js +18 -1
- package/dist/core/restart-completion.js.map +1 -1
- package/dist/core/router.d.ts +8 -0
- package/dist/core/router.d.ts.map +1 -1
- package/dist/core/router.js +16 -0
- package/dist/core/router.js.map +1 -1
- package/dist/core/self-protect.d.ts +3 -2
- package/dist/core/self-protect.d.ts.map +1 -1
- package/dist/core/self-protect.js +75 -41
- package/dist/core/self-protect.js.map +1 -1
- package/dist/core/types.d.ts +22 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/plugins/agents/claude-code/index.d.ts.map +1 -1
- package/dist/plugins/agents/claude-code/index.js +5 -0
- package/dist/plugins/agents/claude-code/index.js.map +1 -1
- package/dist/plugins/agents/claude-code/mcp-approval-server.d.ts +21 -0
- package/dist/plugins/agents/claude-code/mcp-approval-server.d.ts.map +1 -1
- package/dist/plugins/agents/claude-code/mcp-approval-server.js +106 -0
- package/dist/plugins/agents/claude-code/mcp-approval-server.js.map +1 -1
- package/dist/plugins/agents/codex/index.d.ts.map +1 -1
- package/dist/plugins/agents/codex/index.js +5 -0
- package/dist/plugins/agents/codex/index.js.map +1 -1
- package/dist/plugins/agents/opencode/opencode-http-adapter.d.ts.map +1 -1
- package/dist/plugins/agents/opencode/opencode-http-adapter.js +46 -15
- package/dist/plugins/agents/opencode/opencode-http-adapter.js.map +1 -1
- package/dist/plugins/agents/opencode/opencode-stdio-adapter.d.ts.map +1 -1
- package/dist/plugins/agents/opencode/opencode-stdio-adapter.js +5 -0
- package/dist/plugins/agents/opencode/opencode-stdio-adapter.js.map +1 -1
- package/dist/web/public/settings.html +89 -0
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +44 -16
- package/dist/web/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { RouteContext } from './router.js';
|
|
2
|
+
export declare const A2A_MAX_DEPTH_DEFAULT = 3;
|
|
3
|
+
export declare const A2A_TIMEOUT_MS_DEFAULT: number;
|
|
4
|
+
export declare function isA2AEnabled(): boolean;
|
|
5
|
+
export declare function getA2AMaxDepth(): number;
|
|
6
|
+
export declare function getA2ATimeoutMs(): number;
|
|
7
|
+
export interface CallAgentOpts {
|
|
8
|
+
/** Parent inline-job id (caller). NULL for top-level user calls. */
|
|
9
|
+
parentJobId?: number | null;
|
|
10
|
+
/** Caller's call_depth. New row will be set to caller + 1. */
|
|
11
|
+
callerDepth?: number;
|
|
12
|
+
/** Caller agent name (for self-call check). RouteContext doesn't carry
|
|
13
|
+
* this in its type today; bus.callAgent looks it up from RunContext
|
|
14
|
+
* + the audit log's per-run state. Optional — when unset we skip the
|
|
15
|
+
* self-call check; the depth ceiling still prevents runaway chains. */
|
|
16
|
+
callerAgent?: string;
|
|
17
|
+
/** Override timeout. Falls back to env / default. */
|
|
18
|
+
timeoutMs?: number;
|
|
19
|
+
}
|
|
20
|
+
export type CallAgentResult = {
|
|
21
|
+
ok: true;
|
|
22
|
+
result: string;
|
|
23
|
+
jobId: number;
|
|
24
|
+
agent: string;
|
|
25
|
+
durationMs: number;
|
|
26
|
+
} | {
|
|
27
|
+
ok: false;
|
|
28
|
+
error: string;
|
|
29
|
+
jobId?: number;
|
|
30
|
+
agent?: string;
|
|
31
|
+
};
|
|
32
|
+
/** Programmatic A2A entry. Invokes `agentName` with `prompt` under the
|
|
33
|
+
* given RouteContext. Does NOT touch session history, does NOT deliver
|
|
34
|
+
* to IM. Result is returned to the caller verbatim. */
|
|
35
|
+
export declare function callAgentByName(agentName: string, prompt: string, ctx: RouteContext, opts?: CallAgentOpts): Promise<CallAgentResult>;
|
|
36
|
+
//# sourceMappingURL=a2a.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a.d.ts","sourceRoot":"","sources":["../../src/core/a2a.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAc/C,eAAO,MAAM,qBAAqB,IAAI,CAAA;AACtC,eAAO,MAAM,sBAAsB,QAAiB,CAAA;AAEpD,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAOvC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAOxC;AAED,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;4EAGwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC/E;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEjE;;wDAEwD;AACxD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,YAAY,EACjB,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC,eAAe,CAAC,CA8H1B"}
|
package/dist/core/a2a.js
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
// Agent-to-Agent (A2A) — Layer 1.
|
|
2
|
+
//
|
|
3
|
+
// Lets one agent (claude-code / opencode / codex …) call another via the
|
|
4
|
+
// `mcp__imhub__call_agent` tool. This module owns the runtime side of
|
|
5
|
+
// that flow:
|
|
6
|
+
//
|
|
7
|
+
// bus.callAgent(runId, payload)
|
|
8
|
+
// → callAgentByName(name, prompt, ctx, { parentJobId, callDepth })
|
|
9
|
+
// 1. validate (depth, self-call, workspace whitelist, agent available)
|
|
10
|
+
// 2. createInlineJob(parent_id, call_depth = caller+1)
|
|
11
|
+
// 3. agent.sendPrompt(...) into an async generator
|
|
12
|
+
// 4. accumulate chunks with timeout
|
|
13
|
+
// 5. markJobCompleted / markJobFailed
|
|
14
|
+
// 6. write audit row (type='a2a')
|
|
15
|
+
// 7. return { ok, result, jobId, durationMs }
|
|
16
|
+
//
|
|
17
|
+
// What this module DOES NOT do:
|
|
18
|
+
// - Call sink.deliver. A2A results go back to the caller agent through
|
|
19
|
+
// the MCP tool return value, not to the user's IM thread. (Layer 2
|
|
20
|
+
// will let A2A optionally tee to IM via use_default_thread=true.)
|
|
21
|
+
// - Touch session.messages on the caller's thread. The callee's prompt
|
|
22
|
+
// and result are not part of the caller's chat history.
|
|
23
|
+
// - Handle interrupted/recovery (Phase 3 still applies because we use
|
|
24
|
+
// createInlineJob, which is automatically swept on restart).
|
|
25
|
+
import { registry } from './registry.js';
|
|
26
|
+
import { logger as rootLogger } from './logger.js';
|
|
27
|
+
import { workspaceRegistry } from './workspace.js';
|
|
28
|
+
import { createInlineJob, markJobRunning, markJobCompleted, markJobFailed, } from './job-board.js';
|
|
29
|
+
import { logInvocation } from './audit-log.js';
|
|
30
|
+
const log = rootLogger.child({ component: 'a2a' });
|
|
31
|
+
export const A2A_MAX_DEPTH_DEFAULT = 3;
|
|
32
|
+
export const A2A_TIMEOUT_MS_DEFAULT = 10 * 60 * 1000; // 10 min
|
|
33
|
+
export function isA2AEnabled() {
|
|
34
|
+
return process.env.IMHUB_A2A_ENABLED !== '0';
|
|
35
|
+
}
|
|
36
|
+
export function getA2AMaxDepth() {
|
|
37
|
+
const raw = process.env.IMHUB_A2A_MAX_DEPTH;
|
|
38
|
+
if (raw) {
|
|
39
|
+
const n = parseInt(raw, 10);
|
|
40
|
+
if (Number.isFinite(n) && n >= 0)
|
|
41
|
+
return n;
|
|
42
|
+
}
|
|
43
|
+
return A2A_MAX_DEPTH_DEFAULT;
|
|
44
|
+
}
|
|
45
|
+
export function getA2ATimeoutMs() {
|
|
46
|
+
const raw = process.env.IMHUB_A2A_TIMEOUT_DEFAULT_MS;
|
|
47
|
+
if (raw) {
|
|
48
|
+
const n = parseInt(raw, 10);
|
|
49
|
+
if (Number.isFinite(n) && n > 0)
|
|
50
|
+
return n;
|
|
51
|
+
}
|
|
52
|
+
return A2A_TIMEOUT_MS_DEFAULT;
|
|
53
|
+
}
|
|
54
|
+
/** Programmatic A2A entry. Invokes `agentName` with `prompt` under the
|
|
55
|
+
* given RouteContext. Does NOT touch session history, does NOT deliver
|
|
56
|
+
* to IM. Result is returned to the caller verbatim. */
|
|
57
|
+
export async function callAgentByName(agentName, prompt, ctx, opts = {}) {
|
|
58
|
+
if (!isA2AEnabled()) {
|
|
59
|
+
return { ok: false, error: 'A2A disabled (IMHUB_A2A_ENABLED=0)' };
|
|
60
|
+
}
|
|
61
|
+
const callerDepth = opts.callerDepth ?? 0;
|
|
62
|
+
const nextDepth = callerDepth + 1;
|
|
63
|
+
const maxDepth = getA2AMaxDepth();
|
|
64
|
+
if (nextDepth > maxDepth) {
|
|
65
|
+
log.warn({
|
|
66
|
+
event: 'a2a.depth_exceeded', agentName, callerDepth, maxDepth, threadId: ctx.threadId,
|
|
67
|
+
}, `call_agent rejected: depth ${nextDepth} > max ${maxDepth}`);
|
|
68
|
+
return { ok: false, error: `call depth exceeded (max=${maxDepth})` };
|
|
69
|
+
}
|
|
70
|
+
// self-call: would be vacuous recursion. Caller agent name comes through
|
|
71
|
+
// opts.callerAgent (bus knows it from the runId → RunContext lookup).
|
|
72
|
+
// When unset (non-bus entry points) we skip the check; the depth ceiling
|
|
73
|
+
// still prevents runaway chains.
|
|
74
|
+
if (opts.callerAgent && opts.callerAgent === agentName) {
|
|
75
|
+
log.warn({
|
|
76
|
+
event: 'a2a.self_call_rejected', agentName, threadId: ctx.threadId,
|
|
77
|
+
}, 'call_agent rejected: agent cannot call itself');
|
|
78
|
+
return { ok: false, error: `cannot call self (${agentName})` };
|
|
79
|
+
}
|
|
80
|
+
const target = registry.findAgent(agentName);
|
|
81
|
+
if (!target) {
|
|
82
|
+
return { ok: false, error: `agent not found: ${agentName}` };
|
|
83
|
+
}
|
|
84
|
+
// Workspace whitelist applies to A2A the same way it does to /job create.
|
|
85
|
+
// The caller's workspace is bound to ctx.userId; the callee must be
|
|
86
|
+
// listed in that workspace's agents[].
|
|
87
|
+
const ws = workspaceRegistry.resolve(ctx.userId || 'unknown');
|
|
88
|
+
if (!ws.hasAgent(target.name)) {
|
|
89
|
+
return {
|
|
90
|
+
ok: false, agent: target.name,
|
|
91
|
+
error: `agent "${target.name}" not in workspace "${ws.name}" whitelist`,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const threadKey = `${ctx.platform}:${ctx.channelId}:${ctx.threadId}`;
|
|
95
|
+
const jobId = createInlineJob({
|
|
96
|
+
agent: target.name,
|
|
97
|
+
prompt,
|
|
98
|
+
threadKey,
|
|
99
|
+
creatorId: ctx.userId ?? '',
|
|
100
|
+
workspaceId: ws.id,
|
|
101
|
+
parentId: opts.parentJobId ?? null,
|
|
102
|
+
callDepth: nextDepth,
|
|
103
|
+
});
|
|
104
|
+
markJobRunning(jobId);
|
|
105
|
+
const timeoutMs = opts.timeoutMs ?? getA2ATimeoutMs();
|
|
106
|
+
const started = Date.now();
|
|
107
|
+
log.info({
|
|
108
|
+
event: 'a2a.invoke_start',
|
|
109
|
+
callee: target.name, caller: opts.callerAgent ?? 'user',
|
|
110
|
+
jobId, parentJobId: opts.parentJobId ?? null,
|
|
111
|
+
callDepth: nextDepth, timeoutMs, threadId: ctx.threadId,
|
|
112
|
+
}, `A2A → ${target.name}`);
|
|
113
|
+
let result = '';
|
|
114
|
+
let outcome = 'completed';
|
|
115
|
+
let errMsg = '';
|
|
116
|
+
try {
|
|
117
|
+
const gen = target.sendPrompt(`a2a-${jobId}`, prompt, [], {
|
|
118
|
+
threadId: ctx.threadId,
|
|
119
|
+
platform: ctx.platform,
|
|
120
|
+
channelId: ctx.channelId,
|
|
121
|
+
userId: ctx.userId,
|
|
122
|
+
// A2A-L1: forward our own jobId + nextDepth so the callee's adapter
|
|
123
|
+
// stamps RunContext correctly. If the callee then fires
|
|
124
|
+
// mcp__imhub__call_agent itself, its bus.handleA2A sees
|
|
125
|
+
// callDepth = our nextDepth → +1 = grand-callee depth, and
|
|
126
|
+
// parent_id = jobId (our callee row).
|
|
127
|
+
parentJobId: jobId,
|
|
128
|
+
callDepth: nextDepth,
|
|
129
|
+
});
|
|
130
|
+
result = await accumulateWithTimeout(gen, timeoutMs);
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
outcome = err instanceof TimeoutError ? 'timeout' : 'failed';
|
|
134
|
+
errMsg = err instanceof Error ? err.message : String(err);
|
|
135
|
+
}
|
|
136
|
+
const durationMs = Date.now() - started;
|
|
137
|
+
if (outcome === 'completed') {
|
|
138
|
+
markJobCompleted(jobId, result);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
markJobFailed(jobId, errMsg || outcome);
|
|
142
|
+
}
|
|
143
|
+
// Audit. Same shape as the normal callAgentWithHistory invocations so
|
|
144
|
+
// /audit and per-user budgets see A2A traffic the same way. The
|
|
145
|
+
// `intent` slot carries 'a2a' for slicing.
|
|
146
|
+
try {
|
|
147
|
+
logInvocation({
|
|
148
|
+
traceId: ctx.traceId ?? '',
|
|
149
|
+
userId: ctx.userId ?? '',
|
|
150
|
+
platform: ctx.platform,
|
|
151
|
+
agent: target.name,
|
|
152
|
+
intent: 'a2a',
|
|
153
|
+
promptLen: prompt.length,
|
|
154
|
+
responseLen: result.length,
|
|
155
|
+
durationMs,
|
|
156
|
+
cost: 0,
|
|
157
|
+
success: outcome === 'completed',
|
|
158
|
+
error: outcome === 'completed' ? undefined : (errMsg || outcome),
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
log.debug({ event: 'a2a.audit_failed', err: String(err) }, 'audit write failed (continuing)');
|
|
163
|
+
}
|
|
164
|
+
if (outcome !== 'completed') {
|
|
165
|
+
log.warn({
|
|
166
|
+
event: 'a2a.invoke_end', outcome, jobId, durationMs, callee: target.name, err: errMsg,
|
|
167
|
+
}, `A2A → ${target.name} ${outcome}: ${errMsg}`);
|
|
168
|
+
return { ok: false, error: errMsg || outcome, jobId, agent: target.name };
|
|
169
|
+
}
|
|
170
|
+
log.info({
|
|
171
|
+
event: 'a2a.invoke_end', outcome: 'ok', jobId, durationMs, callee: target.name, resultLen: result.length,
|
|
172
|
+
}, `A2A → ${target.name} ok (${result.length} chars in ${durationMs}ms)`);
|
|
173
|
+
return { ok: true, result, jobId, agent: target.name, durationMs };
|
|
174
|
+
}
|
|
175
|
+
// ─── helpers ──────────────────────────────────────────────────────────
|
|
176
|
+
class TimeoutError extends Error {
|
|
177
|
+
constructor(ms) { super(`a2a timed out after ${ms}ms`); }
|
|
178
|
+
}
|
|
179
|
+
async function accumulateWithTimeout(gen, ms) {
|
|
180
|
+
let acc = '';
|
|
181
|
+
const deadline = Date.now() + ms;
|
|
182
|
+
// Drain the generator with a per-step race against a deadline check.
|
|
183
|
+
// We don't fight with the agent's internal stream — the timeout aborts
|
|
184
|
+
// the AGGREGATION; the underlying spawn keeps running and gets logged
|
|
185
|
+
// (caller's audit row gets outcome='timeout'). Future enhancement:
|
|
186
|
+
// pass an AbortSignal to the adapter so the child actually terminates.
|
|
187
|
+
while (true) {
|
|
188
|
+
if (Date.now() >= deadline)
|
|
189
|
+
throw new TimeoutError(ms);
|
|
190
|
+
const nextP = gen.next();
|
|
191
|
+
const timeoutP = new Promise((_, reject) => {
|
|
192
|
+
const t = setTimeout(() => reject(new TimeoutError(ms)), Math.max(0, deadline - Date.now()));
|
|
193
|
+
// Don't leak the timer when next() resolves first.
|
|
194
|
+
nextP.finally(() => clearTimeout(t)).catch(() => { });
|
|
195
|
+
});
|
|
196
|
+
const step = await Promise.race([nextP, timeoutP]);
|
|
197
|
+
if (step.done)
|
|
198
|
+
return acc;
|
|
199
|
+
if (typeof step.value === 'string')
|
|
200
|
+
acc += step.value;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=a2a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a.js","sourceRoot":"","sources":["../../src/core/a2a.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,8 +77,11 @@ export declare abstract class AgentBase implements AgentAdapter {
|
|
|
77
77
|
* Subclasses may override for custom formatting.
|
|
78
78
|
*/
|
|
79
79
|
protected buildContextualPrompt(prompt: string, history?: ChatMessage[]): string;
|
|
80
|
-
/**
|
|
81
|
-
|
|
80
|
+
/** Idle (no-stdout) timeout for the agent child process in ms. Override per
|
|
81
|
+
* agent via `${NAME}_IDLE_TIMEOUT_MS`, globally via `IMHUB_AGENT_IDLE_TIMEOUT_MS`,
|
|
82
|
+
* or set 0 to disable. Default 60 min — long enough to ride out an hour-long
|
|
83
|
+
* human-in-the-loop pause, short enough to reap a truly hung child. */
|
|
84
|
+
protected get idleTimeoutMs(): number;
|
|
82
85
|
/**
|
|
83
86
|
* Sync convenience wrapper: drain the streaming generator into a single
|
|
84
87
|
* string. Used by Job Board where the caller wants the final result.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-base.d.ts","sourceRoot":"","sources":["../../src/core/agent-base.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"agent-base.d.ts","sourceRoot":"","sources":["../../src/core/agent-base.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAmG1E,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrC;AAED,8BAAsB,SAAU,YAAW,YAAY;IACrD,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAA;IAEnC,2CAA2C;IAC3C,SAAS,KAAK,WAAW,IAAI,MAAM,CAAqB;IAExD;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE;IAE3E;;;;;;OAMG;cACa,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAIvF,sDAAsD;IACtD,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAEtD;;;;;;;OAOG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAEnE,yGAAyG;IACzG,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI3F,0DAA0D;IAC1D,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAIjC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQrC,qEAAqE;IAC/D,WAAW,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAMjE;;;;OAIG;IACI,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC;IAO5H;;;OAGG;IACH,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,GAAG,MAAM;IAUhF;;;4EAGwE;IACxE,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;IAED;;;OAGG;IACU,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAQnF;;;;OAIG;cACc,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,GAAE,aAAkB,GAAG,cAAc,CAAC,MAAM,CAAC;CAiNrH"}
|
package/dist/core/agent-base.js
CHANGED
|
@@ -11,17 +11,36 @@
|
|
|
11
11
|
import { StringDecoder } from 'node:string_decoder';
|
|
12
12
|
import { crossSpawn } from '../utils/cross-platform.js';
|
|
13
13
|
import { logger as rootLogger } from './logger.js';
|
|
14
|
-
const
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
const DEFAULT_IDLE_TIMEOUT_MS = 60 * 60 * 1000;
|
|
15
|
+
/**
|
|
16
|
+
* Idle (no-stdout) timeout for the agent child process.
|
|
17
|
+
*
|
|
18
|
+
* Previously a 30-min hard total-time cap that killed agents mid-conversation
|
|
19
|
+
* when a human took a long time to approve a tool call — "waiting on the
|
|
20
|
+
* user" is not "agent is dead", but the old setTimeout couldn't tell them
|
|
21
|
+
* apart. Switched to idle semantics: the watchdog arms a timer that resets
|
|
22
|
+
* on every stdout/stderr chunk, so slow human round-trips through the IM
|
|
23
|
+
* approval flow no longer count against the budget; only true silence
|
|
24
|
+
* (no events at all for `idleTimeout` ms) counts as hang.
|
|
25
|
+
*
|
|
26
|
+
* Priority: `${NAME}_IDLE_TIMEOUT_MS` > `IMHUB_AGENT_IDLE_TIMEOUT_MS` > default.
|
|
27
|
+
* Setting any of these to `0` disables the watchdog entirely (relies on the
|
|
28
|
+
* agent's internal timeouts plus manual termination).
|
|
29
|
+
*/
|
|
30
|
+
function resolveIdleTimeout(perAgentEnvKey) {
|
|
31
|
+
const sources = [
|
|
32
|
+
[perAgentEnvKey, process.env[perAgentEnvKey]],
|
|
33
|
+
['IMHUB_AGENT_IDLE_TIMEOUT_MS', process.env.IMHUB_AGENT_IDLE_TIMEOUT_MS],
|
|
34
|
+
];
|
|
35
|
+
for (const [envKey, raw] of sources) {
|
|
36
|
+
if (raw === undefined)
|
|
37
|
+
continue;
|
|
19
38
|
const n = parseInt(raw, 10);
|
|
20
|
-
if (Number.isFinite(n) && n
|
|
39
|
+
if (Number.isFinite(n) && n >= 0)
|
|
21
40
|
return n;
|
|
22
|
-
rootLogger.warn({ event: 'agent.timeout.invalid', raw, envKey
|
|
41
|
+
rootLogger.warn({ event: 'agent.idle-timeout.invalid', raw, envKey }, `Invalid idle timeout env "${envKey}=${raw}", trying next source / default`);
|
|
23
42
|
}
|
|
24
|
-
return
|
|
43
|
+
return DEFAULT_IDLE_TIMEOUT_MS;
|
|
25
44
|
}
|
|
26
45
|
/**
|
|
27
46
|
* Buffer line splitter that respects UTF-8 multi-byte boundaries.
|
|
@@ -152,9 +171,12 @@ export class AgentBase {
|
|
|
152
171
|
.join('\n\n');
|
|
153
172
|
return `Previous conversation context:\n${historyText}\n\nCurrent request: ${prompt}`;
|
|
154
173
|
}
|
|
155
|
-
/**
|
|
156
|
-
|
|
157
|
-
|
|
174
|
+
/** Idle (no-stdout) timeout for the agent child process in ms. Override per
|
|
175
|
+
* agent via `${NAME}_IDLE_TIMEOUT_MS`, globally via `IMHUB_AGENT_IDLE_TIMEOUT_MS`,
|
|
176
|
+
* or set 0 to disable. Default 60 min — long enough to ride out an hour-long
|
|
177
|
+
* human-in-the-loop pause, short enough to reap a truly hung child. */
|
|
178
|
+
get idleTimeoutMs() {
|
|
179
|
+
return resolveIdleTimeout(`${this.name.toUpperCase()}_IDLE_TIMEOUT_MS`);
|
|
158
180
|
}
|
|
159
181
|
/**
|
|
160
182
|
* Sync convenience wrapper: drain the streaming generator into a single
|
|
@@ -173,7 +195,7 @@ export class AgentBase {
|
|
|
173
195
|
* with cleanup of all timers and listeners.
|
|
174
196
|
*/
|
|
175
197
|
async *spawnStream(prompt, signal, opts = {}) {
|
|
176
|
-
const
|
|
198
|
+
const idleTimeout = this.idleTimeoutMs;
|
|
177
199
|
// prepareCommand returns a self-contained plan — args, optional extra env,
|
|
178
200
|
// optional cleanup. No instance state involved, so concurrent spawnStream
|
|
179
201
|
// calls cannot race each other. (Previously setupSpawn() would mutate
|
|
@@ -201,14 +223,11 @@ export class AgentBase {
|
|
|
201
223
|
let notify = null;
|
|
202
224
|
const wait = () => new Promise((resolve) => { notify = resolve; });
|
|
203
225
|
const ping = () => { const n = notify; notify = null; n?.(); };
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
catch { /* ignore */ }
|
|
210
|
-
ping();
|
|
211
|
-
}, timeout);
|
|
226
|
+
// Idle watchdog: re-armed every time stdout or stderr emits a chunk.
|
|
227
|
+
// Only fires when the child has been completely silent for `idleTimeout`
|
|
228
|
+
// ms — slow human approvals routed through the IM don't count, because
|
|
229
|
+
// when the approval finally returns the agent resumes and the next
|
|
230
|
+
// stdout chunk resets the timer. Pass idleTimeout=0 to disable.
|
|
212
231
|
let killTimer = null;
|
|
213
232
|
const scheduleKill = () => {
|
|
214
233
|
if (killTimer)
|
|
@@ -220,6 +239,28 @@ export class AgentBase {
|
|
|
220
239
|
catch { /* ignore */ }
|
|
221
240
|
}, 5000);
|
|
222
241
|
};
|
|
242
|
+
let idleTimer = null;
|
|
243
|
+
const armIdleTimer = () => {
|
|
244
|
+
if (idleTimeout <= 0)
|
|
245
|
+
return;
|
|
246
|
+
if (idleTimer)
|
|
247
|
+
clearTimeout(idleTimer);
|
|
248
|
+
idleTimer = setTimeout(() => {
|
|
249
|
+
timedOut = true;
|
|
250
|
+
try {
|
|
251
|
+
proc.kill('SIGTERM');
|
|
252
|
+
}
|
|
253
|
+
catch { /* ignore */ }
|
|
254
|
+
// Escalate to SIGKILL after 5s if the child ignores SIGTERM — matches
|
|
255
|
+
// the abort path. Without this, a process that's wedged in a signal-
|
|
256
|
+
// ignoring state (uninterruptible syscall, signal mask, ...) would
|
|
257
|
+
// never die and the spawnStream consumer would hang waiting for the
|
|
258
|
+
// close event that never comes.
|
|
259
|
+
scheduleKill();
|
|
260
|
+
ping();
|
|
261
|
+
}, idleTimeout);
|
|
262
|
+
};
|
|
263
|
+
armIdleTimer();
|
|
223
264
|
const onAbort = () => {
|
|
224
265
|
aborted = true;
|
|
225
266
|
try {
|
|
@@ -238,6 +279,7 @@ export class AgentBase {
|
|
|
238
279
|
}
|
|
239
280
|
}
|
|
240
281
|
proc.stdout?.on('data', (data) => {
|
|
282
|
+
armIdleTimer();
|
|
241
283
|
const lines = buf.push(data);
|
|
242
284
|
for (const line of lines) {
|
|
243
285
|
if (!line.trim())
|
|
@@ -264,6 +306,7 @@ export class AgentBase {
|
|
|
264
306
|
ping();
|
|
265
307
|
});
|
|
266
308
|
proc.stderr?.on('data', (data) => {
|
|
309
|
+
armIdleTimer();
|
|
267
310
|
stderrAccum += data.toString();
|
|
268
311
|
// Surface to root logger as warn — pino-aware, no console.error noise
|
|
269
312
|
for (const line of stderrBuf.push(data)) {
|
|
@@ -316,9 +359,9 @@ export class AgentBase {
|
|
|
316
359
|
yield c;
|
|
317
360
|
}
|
|
318
361
|
if (timedOut) {
|
|
319
|
-
const mins = Math.round(
|
|
320
|
-
rootLogger.warn({ component: `agent.${this.name}`, agent: this.name,
|
|
321
|
-
yield `\n\n⚠️
|
|
362
|
+
const mins = Math.round(idleTimeout / 60000);
|
|
363
|
+
rootLogger.warn({ component: `agent.${this.name}`, agent: this.name, idleTimeoutMs: idleTimeout, reason: 'idle' }, `[${this.name}] killed after ${mins}min of no stdout/stderr (likely hang)`);
|
|
364
|
+
yield `\n\n⚠️ agent 子进程 ${mins} 分钟无任何输出,强制超时(可能 hang 或网络挂起)`;
|
|
322
365
|
return;
|
|
323
366
|
}
|
|
324
367
|
if (aborted) {
|
|
@@ -350,7 +393,8 @@ export class AgentBase {
|
|
|
350
393
|
}
|
|
351
394
|
}
|
|
352
395
|
finally {
|
|
353
|
-
|
|
396
|
+
if (idleTimer)
|
|
397
|
+
clearTimeout(idleTimer);
|
|
354
398
|
if (killTimer)
|
|
355
399
|
clearTimeout(killTimer);
|
|
356
400
|
if (signal)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-base.js","sourceRoot":"","sources":["../../src/core/agent-base.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-base.js","sourceRoot":"","sources":["../../src/core/agent-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,23 @@
|
|
|
1
|
+
export declare function isTimeoutDefaultAllow(): boolean;
|
|
1
2
|
export interface RunContext {
|
|
2
3
|
threadId: string;
|
|
3
4
|
platform: string;
|
|
4
5
|
userId: string;
|
|
5
6
|
channelId: string;
|
|
7
|
+
/** A2A-L1: name of the agent this run is executing under (claude-code /
|
|
8
|
+
* opencode / codex / …). Adapters fill this when calling
|
|
9
|
+
* approvalBus.registerRun so bus.handleA2A can reject self-calls and
|
|
10
|
+
* audit can record the chain. Optional for legacy callers; the
|
|
11
|
+
* self-call check just no-ops when absent. */
|
|
12
|
+
callerAgent?: string;
|
|
13
|
+
/** A2A-L1: this run's own call_depth. 0 for user-originated runs;
|
|
14
|
+
* bumped to caller.callDepth+1 when an A2A invocation spawns a new
|
|
15
|
+
* agent run. Used to enforce IMHUB_A2A_MAX_DEPTH. */
|
|
16
|
+
callDepth?: number;
|
|
17
|
+
/** A2A-L1: id of the inline-jobs row that's tracking this run, when
|
|
18
|
+
* the run was spawned from another agent's mcp__imhub__call_agent
|
|
19
|
+
* call. Optional for top-level runs. */
|
|
20
|
+
parentJobId?: number;
|
|
6
21
|
}
|
|
7
22
|
/** Wire-format decision sent back to the sidecar. `autoAllowFurther` is
|
|
8
23
|
* internal-only — `sendDecision` strips it before serializing. */
|
|
@@ -80,8 +95,10 @@ export interface ApprovalBusOptions {
|
|
|
80
95
|
export declare class ApprovalBus {
|
|
81
96
|
private server;
|
|
82
97
|
private socketPath;
|
|
83
|
-
|
|
84
|
-
|
|
98
|
+
/** Public so renderers (approval-router plain-text prompt, future card
|
|
99
|
+
* variants) can show the actual budget instead of hardcoded "5 分钟". */
|
|
100
|
+
readonly approvalTimeoutMs: number;
|
|
101
|
+
readonly autoAllowGraceMs: number;
|
|
85
102
|
private runContexts;
|
|
86
103
|
private pendingById;
|
|
87
104
|
private pendingByThread;
|
|
@@ -218,6 +235,32 @@ export declare class ApprovalBus {
|
|
|
218
235
|
}>;
|
|
219
236
|
private handleConnection;
|
|
220
237
|
private handleLine;
|
|
238
|
+
/**
|
|
239
|
+
* Handle an A2A call RPC sent by the MCP sidecar. Wire format:
|
|
240
|
+
*
|
|
241
|
+
* {
|
|
242
|
+
* v: 1, type: 'a2a', reqId, runId,
|
|
243
|
+
* payload: { agent: string, prompt: string, timeoutMs?: number }
|
|
244
|
+
* }
|
|
245
|
+
*
|
|
246
|
+
* Response (sent via {@link sendA2AResult}):
|
|
247
|
+
*
|
|
248
|
+
* { v: 1, type: 'a2a.result', reqId,
|
|
249
|
+
* ok: true, result, jobId, agent, durationMs }
|
|
250
|
+
* | { v: 1, type: 'a2a.result', reqId,
|
|
251
|
+
* ok: false, error }
|
|
252
|
+
*
|
|
253
|
+
* Validation order:
|
|
254
|
+
* 1. reqId/runId/payload shape — wire-level
|
|
255
|
+
* 2. runId → RunContext (no _im_context fallback for A2A: a forged
|
|
256
|
+
* context could let a compromised callee escalate to a different
|
|
257
|
+
* user's workspace, and the cost is real money)
|
|
258
|
+
* 3. agent + prompt presence
|
|
259
|
+
* 4. self-call check (caller agent vs target agent)
|
|
260
|
+
* 5. depth check (handled inside a2a.callAgentByName)
|
|
261
|
+
*/
|
|
262
|
+
private handleA2A;
|
|
263
|
+
private sendA2AResult;
|
|
221
264
|
/**
|
|
222
265
|
* Handle a reminder RPC sent by the MCP sidecar (mcp-approval-server.ts).
|
|
223
266
|
* Same socket as approvals; different `type`. Two ways to identify the
|
|
@@ -295,6 +338,42 @@ export declare class ApprovalBus {
|
|
|
295
338
|
private removePending;
|
|
296
339
|
private sendDecision;
|
|
297
340
|
}
|
|
341
|
+
/**
|
|
342
|
+
* Translate a raw fingerprint string (e.g. `cmd:git+status`) into the
|
|
343
|
+
* human-readable form shown in IM receipts and `/approval` listings
|
|
344
|
+
* (e.g. `命令 git status`). The inverse of inputFingerprint()'s internal
|
|
345
|
+
* encoding — keep the scheme list in sync if you add new fingerprint
|
|
346
|
+
* variants.
|
|
347
|
+
*
|
|
348
|
+
* Unknown / legacy schemes pass through unchanged so the function is
|
|
349
|
+
* forward-compatible with future fingerprint additions and backward-
|
|
350
|
+
* compatible with rules created before the semantic split (no scheme).
|
|
351
|
+
*/
|
|
352
|
+
export declare function humanizeFingerprint(fingerprint: string): string;
|
|
353
|
+
/**
|
|
354
|
+
* Compute the auto-allow fingerprint — the "kind" of call that, when
|
|
355
|
+
* approved with `all`, covers future similar calls.
|
|
356
|
+
*
|
|
357
|
+
* Semantic per tool (rather than a uniform prefix slice) — fixes two
|
|
358
|
+
* footguns of the old prefix-based approach:
|
|
359
|
+
* 1. `Bash git status` and `git stash` collided at 5 chars but split at
|
|
360
|
+
* 10 — neither setting matched user intuition. We extract the first
|
|
361
|
+
* two tokens (`cmd:git+status` vs `cmd:git+stash`) so the family is
|
|
362
|
+
* narrow and predictable.
|
|
363
|
+
* 2. `Read /tmp/a.txt` and `Read /tmp/b.txt` got distinct fingerprints
|
|
364
|
+
* at any prefix length below the filename, forcing users to re-`all`
|
|
365
|
+
* every file. We key on dirname (`dir:/tmp`) so one approval covers
|
|
366
|
+
* the whole directory.
|
|
367
|
+
*
|
|
368
|
+
* Prefixes (`cmd:` / `dir:` / `host:` / `path:` / `pat:` / `query:` /
|
|
369
|
+
* `url:` / `raw:`) keep the key space disambiguated — rules from
|
|
370
|
+
* different schemes can never accidentally alias each other, and `raw:`
|
|
371
|
+
* preserves backward compatibility for unknown tools.
|
|
372
|
+
*
|
|
373
|
+
* EXPORTED for unit tests. Not part of the bus's public API; production
|
|
374
|
+
* call sites all live inside this module.
|
|
375
|
+
*/
|
|
376
|
+
export declare function inputFingerprint(toolName: string, input: Record<string, unknown>): string;
|
|
298
377
|
/** 进程级单例。agim 启动时 await approvalBus.start() 一次。 */
|
|
299
378
|
export declare const approvalBus: ApprovalBus;
|
|
300
379
|
//# sourceMappingURL=approval-bus.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval-bus.d.ts","sourceRoot":"","sources":["../../src/core/approval-bus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"approval-bus.d.ts","sourceRoot":"","sources":["../../src/core/approval-bus.ts"],"names":[],"mappings":"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"}
|