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
@@ -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"}
@@ -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
- /** Per-agent timeout in ms. Override or set env var (upper-case name + _TIMEOUT_MS). */
81
- protected get timeoutMs(): number;
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;AAiF1E,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,wFAAwF;IACxF,SAAS,KAAK,SAAS,IAAI,MAAM,CAEhC;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;CA6LrH"}
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"}
@@ -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 DEFAULT_TIMEOUT_MS = 30 * 60 * 1000;
15
- /** Resolve per-agent timeout: env var AGENT_TIMEOUT_MS or class default */
16
- function resolveTimeout(envKey, fallback) {
17
- const raw = process.env[envKey];
18
- if (raw) {
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 > 0)
39
+ if (Number.isFinite(n) && n >= 0)
21
40
  return n;
22
- rootLogger.warn({ event: 'agent.timeout.invalid', raw, envKey, fallback }, `Invalid timeout env "${envKey}=${raw}", using default ${Math.round(fallback / 60000)}min`);
41
+ rootLogger.warn({ event: 'agent.idle-timeout.invalid', raw, envKey }, `Invalid idle timeout env "${envKey}=${raw}", trying next source / default`);
23
42
  }
24
- return fallback;
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
- /** Per-agent timeout in ms. Override or set env var (upper-case name + _TIMEOUT_MS). */
156
- get timeoutMs() {
157
- return resolveTimeout(`${this.name.toUpperCase()}_TIMEOUT_MS`, DEFAULT_TIMEOUT_MS);
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 timeout = this.timeoutMs;
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
- const timer = setTimeout(() => {
205
- timedOut = true;
206
- try {
207
- proc.kill('SIGTERM');
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(timeout / 60000);
320
- rootLogger.warn({ component: `agent.${this.name}`, agent: this.name, timeoutMs: timeout }, `[${this.name}] timeout after ${mins}min`);
321
- yield `\n\n⚠️ 处理超时(已超过 ${mins} 分钟)`;
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
- clearTimeout(timer);
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":"AAAA,sDAAsD;AACtD,EAAE;AACF,0DAA0D;AAC1D,oEAAoE;AACpE,2EAA2E;AAC3E,0CAA0C;AAC1C,qEAAqE;AACrE,EAAE;AACF,yDAAyD;AACzD,wEAAwE;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,aAAa,CAAA;AAElD,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAEzC,2EAA2E;AAC3E,SAAS,cAAc,CAAC,MAAc,EAAE,QAAgB;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC3B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAA;QACzC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EACvE,wBAAwB,MAAM,IAAI,GAAG,oBAAoB,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;IAC/F,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU;IACN,OAAO,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA;IACnC,OAAO,GAAG,EAAE,CAAA;IAEpB,IAAI,CAAC,KAAa;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAA;QAEvB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACjC,kEAAkE;YAClE,qCAAqC;YACrC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAA;YACvB,OAAO,EAAE,CAAA;QACX,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACzE,MAAM,GAAG,GAAa,EAAE,CAAA;QACxB,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YACpC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAAE,MAAK;YACpB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;YAC/B,KAAK,GAAG,EAAE,GAAG,CAAC,CAAA;QAChB,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAC3D,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAEhC,MAAM,GAAG,GAAa,EAAE,CAAA;QACxB,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YACpC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAAE,MAAK;YACpB,IAAI,EAAE,GAAG,KAAK;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;YAC/C,KAAK,GAAG,EAAE,GAAG,CAAC,CAAA;QAChB,CAAC;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QACpD,OAAO,GAAG,CAAA;IACZ,CAAC;CACF;AA8BD,MAAM,OAAgB,SAAS;IAI7B,2CAA2C;IAC3C,IAAc,WAAW,KAAa,OAAO,IAAI,CAAC,IAAI,CAAA,CAAC,CAAC;IAUxD;;;;;;OAMG;IACO,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,IAAmB;QAChE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAA;IAC/C,CAAC;IAKD;;;;;;;OAOG;IACO,YAAY,CAAC,MAAe,EAAE,KAAoB,IAA8B,CAAC;IAE3F,yGAAyG;IAC/F,WAAW,CAAC,KAAa,EAAE,OAAe,EAAE,aAAqB;QACzE,OAAO,IAAI,CAAA,CAAC,kBAAkB;IAChC,CAAC;IAED,0DAA0D;IAChD,mBAAmB;QAC3B,OAAO,GAAG,IAAI,CAAC,IAAI,oCAAoC,CAAA;IACzD,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;YAC7E,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;YAC/C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,WAAW;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACnC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAA;IAC9C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,CAAC,UAAU,CAAC,UAAkB,EAAE,MAAc,EAAE,OAAuB,EAAE,IAAoB;QACjG,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,EACrG,IAAI,IAAI,CAAC,IAAI,cAAc,CAAC,CAAA;QAC9B,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACpE,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;IAClE,CAAC;IAED;;;OAGG;IACO,qBAAqB,CAAC,MAAc,EAAE,OAAuB;QACrE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,MAAM,CAAA;QACf,CAAC;QACD,MAAM,WAAW,GAAG,OAAO;aACxB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;aAC7E,IAAI,CAAC,MAAM,CAAC,CAAA;QACf,OAAO,mCAAmC,WAAW,wBAAwB,MAAM,EAAE,CAAA;IACvF,CAAC;IAED,wFAAwF;IACxF,IAAc,SAAS;QACrB,OAAO,cAAc,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAA;IACpF,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,MAAoB;QAC/D,IAAI,GAAG,GAAG,EAAE,CAAA;QACZ,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YAC/D,GAAG,IAAI,KAAK,CAAA;QACd,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,CAAC,WAAW,CAAC,MAAc,EAAE,MAAoB,EAAE,OAAsB,EAAE;QACzF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAA;QAE9B,2EAA2E;QAC3E,0EAA0E;QAC1E,sEAAsE;QACtE,yEAAyE;QACzE,4EAA4E;QAC5E,IAAI,IAAe,CAAA;QACjB,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAEhD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE;YACnD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;YACrE,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAA;QAEF,MAAM,GAAG,GAAG,IAAI,UAAU,EAAE,CAAA;QAC5B,MAAM,SAAS,GAAG,IAAI,UAAU,EAAE,CAAA;QAClC,IAAI,WAAW,GAAG,EAAE,CAAA;QACpB,IAAI,YAAY,GAAG,EAAE,CAAA;QACrB,IAAI,aAAa,GAAa,EAAE,CAAA;QAChC,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,IAAI,QAAQ,GAAkB,IAAI,CAAA;QAClC,IAAI,UAAU,GAAiB,IAAI,CAAA;QACnC,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,OAAO,GAAG,KAAK,CAAA;QAEnB,uEAAuE;QACvE,sDAAsD;QACtD,IAAI,MAAM,GAAwB,IAAI,CAAA;QACtC,MAAM,IAAI,GAAG,GAAkB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG,MAAM,GAAG,OAAO,CAAA,CAAC,CAAC,CAAC,CAAA;QAChF,MAAM,IAAI,GAAG,GAAS,EAAE,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA,CAAC,CAAC,CAAA;QAEnE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,QAAQ,GAAG,IAAI,CAAA;YACf,IAAI,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACnD,IAAI,EAAE,CAAA;QACR,CAAC,EAAE,OAAO,CAAC,CAAA;QAEX,IAAI,SAAS,GAAyC,IAAI,CAAA;QAC1D,MAAM,YAAY,GAAG,GAAS,EAAE;YAC9B,IAAI,SAAS;gBAAE,OAAM;YACrB,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC1B,IAAI,CAAC;oBAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACrD,CAAC,EAAE,IAAI,CAAC,CAAA;QACV,CAAC,CAAA;QAED,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,OAAO,GAAG,IAAI,CAAA;YACd,IAAI,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACnD,YAAY,EAAE,CAAA;YACd,IAAI,EAAE,CAAA;QACR,CAAC,CAAA;QACD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAA;YACX,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3D,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAAE,SAAQ;gBAC1B,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;oBAC9B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAiC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC9F,MAAM,CAAC,GAAG,KAAgC,CAAA;wBAC1C,YAAY,GAAI,CAAC,CAAC,KAAgB,IAAK,CAAC,CAAC,OAAkB,IAAI,aAAa,CAAA;wBAC5E,wDAAwD;wBACxD,SAAQ;oBACV,CAAC;oBACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;oBACpC,IAAI,IAAI;wBAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACpC,CAAC;gBAAC,MAAM,CAAC;oBACP,+DAA+D;oBAC/D,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAA;gBACjC,CAAC;YACH,CAAC;YACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,EAAE,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACvC,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC9B,sEAAsE;YACtE,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBAChB,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,UAAU,CAAC,CAAA;gBAC/G,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,UAAU,GAAG,GAAG,CAAA;YAChB,MAAM,GAAG,IAAI,CAAA;YACb,IAAI,EAAE,CAAA;QACR,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,QAAQ,GAAG,IAAI,CAAA;YACf,MAAM,GAAG,IAAI,CAAA;YACb,kCAAkC;YAClC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;gBACrC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBAChB,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,UAAU,CAAC,CAAA;gBAC/G,CAAC;YACH,CAAC;YACD,yDAAyD;YACzD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;oBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;oBACpC,IAAI,IAAI;wBAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACpC,CAAC;gBAAC,MAAM,CAAC;oBACP,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC1B,CAAC;YACH,CAAC;YACD,IAAI,EAAE,CAAA;QACR,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/B,MAAM,IAAI,EAAE,CAAA;oBACZ,IAAI,OAAO;wBAAE,MAAK;oBAClB,IAAI,QAAQ;wBAAE,MAAK;gBACrB,CAAC;gBACD,4CAA4C;gBAC5C,MAAM,GAAG,GAAG,aAAa,CAAA;gBACzB,aAAa,GAAG,EAAE,CAAA;gBAClB,KAAK,MAAM,CAAC,IAAI,GAAG;oBAAE,MAAM,CAAC,CAAA;YAC9B,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAA;gBACxC,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EACvF,IAAI,IAAI,CAAC,IAAI,mBAAmB,IAAI,KAAK,CAAC,CAAA;gBAC5C,MAAM,mBAAmB,IAAI,MAAM,CAAA;gBACnC,OAAM;YACR,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,wBAAwB,CAAC,CAAA;gBAC7G,MAAM,gBAAgB,CAAA;gBACtB,OAAM;YACR,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,UAAU,CAAA;YAClB,CAAC;YAED,UAAU,CAAC,IAAI,CAAC;gBACd,SAAS,EAAE,SAAS,IAAI,CAAC,IAAI,EAAE;gBAC/B,KAAK,EAAE,IAAI,CAAC,IAAI;gBAChB,QAAQ;aACT,EAAE,IAAI,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAA;YAEnC,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;gBACtE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACtB,MAAM,QAAQ,CAAA;oBACd,OAAM;gBACR,CAAC;gBACD,IAAI,MAAM,GAAG,EAAE,CAAA;gBACf,IAAI,YAAY;oBAAE,MAAM,GAAG,YAAY,CAAA;gBACvC,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBACrE,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;gBAC7B,CAAC;gBACD,MAAM,GAAG,IAAI,CAAC,IAAI,iBAAiB,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;YAC9E,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,IAAI,SAAS;gBAAE,YAAY,CAAC,SAAS,CAAC,CAAA;YACtC,IAAI,MAAM;gBAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACxD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC;oBAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;gBAAC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACxC,8DAA8D;oBAC9D,gEAAgE;oBAChE,MAAM,EAAE,yBAAyB,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;oBAClE,yBAAyB,EAAE,CAAA;oBAC3B,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EACrF,IAAI,IAAI,CAAC,IAAI,sBAAsB,CAAC,CAAA;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
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
- private readonly approvalTimeoutMs;
84
- private readonly autoAllowGraceMs;
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":"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"}
1
+ {"version":3,"file":"approval-bus.d.ts","sourceRoot":"","sources":["../../src/core/approval-bus.ts"],"names":[],"mappings":"AAkDA,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AA8CD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB;;;;mDAI+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;0DAEsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;6CAEyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;mEACmE;AACnE,MAAM,MAAM,QAAQ,GAChB;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GACzF;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1C,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,UAAU,CAAA;IACf;;;iDAG6C;IAC7C,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAChC;AAED,+DAA+D;AAC/D,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzE;;2DAE2D;AAC3D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAA;IACnB;;;0CAGsC;IACtC,YAAY,EAAE,OAAO,CAAA;CACtB;AAED;;;mEAGmE;AACnE,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,SAAS,GACT,oBAAoB,GACpB,gBAAgB,GAChB,UAAU,GACV,gBAAgB,CAAA;AAEpB;;;0EAG0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;IACrB,KAAK,EAAE,eAAe,CAAA;CACvB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAA;AAE7D,4EAA4E;AAC5E,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvF;AA0CD,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;uEACmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,UAAU,CAAsB;IACxC;4EACwE;IACxE,SAAgB,iBAAiB,EAAE,MAAM,CAAA;IACzC,SAAgB,gBAAgB,EAAE,MAAM,CAAA;IAExC,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,WAAW,CAAqC;IACxD,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,kBAAkB,CAAkC;IAC5D;;;8EAG0E;IAC1E,OAAO,CAAC,iBAAiB,CAAiC;IAE1D;;;wCAGoC;IACpC,OAAO,CAAC,gCAAgC,CAAoB;IAE5D;;;;;OAKG;IACH,OAAO,CAAC,eAAe,CAOtB;gBAEW,IAAI,GAAE,kBAAuB;IAKzC,yCAAyC;IACzC,WAAW,CAAC,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI;IAI7C;;;;+EAI2E;IAC3E,qBAAqB,CAAC,CAAC,EAAE,kBAAkB,GAAG,IAAI,GAAG,IAAI;IAIzD,2CAA2C;IACrC,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqC3C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC3B,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI;IAIjD,2CAA2C;IAC3C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASlC;;;8CAG0C;IAC1C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInC;;;;8CAI0C;IAC1C,WAAW,IAAI,OAAO;IAItB;;;;;;;;;;;OAWG;IACH;;;uEAGmE;IACnE,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI;IAOpE;;;;OAIG;IACH,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI;IAM7E,OAAO,CAAC,cAAc;IAkBtB;;qFAEiF;IACjF,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI1C,+DAA+D;IAC/D,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAIvC;mFAC+E;IAC/E,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKhD;;uBAEmB;IACnB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAMnE;qDACiD;IACjD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIzC;yCACqC;IACrC,gBAAgB,IAAI,MAAM,EAAE;IAI5B,wBAAwB;IACxB,aAAa,IAAI,MAAM,GAAG,IAAI;IAE9B;;;;;;;OAOG;IACH,UAAU,IAAI;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,MAAM,CAAA;QACrB,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,MAAM,CAAA;QACpB,WAAW,EAAE,MAAM,CAAA;QACnB,aAAa,EAAE,MAAM,CAAA;QACrB,wBAAwB,EAAE,MAAM,CAAA;KACjC;IAYD;;;;;;;;;;OAUG;IACH,WAAW,IAAI,KAAK,CAAC;QACnB,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;QAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC9B,WAAW,EAAE,MAAM,CAAA;QACnB,SAAS,EAAE,OAAO,CAAA;QAClB,YAAY,EAAE,MAAM,CAAA;QACpB,KAAK,EAAE,MAAM,CAAA;KACd,CAAC;IAwBF,OAAO,CAAC,gBAAgB;YAuDV,UAAU;IAoCxB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;YACW,SAAS;IA8DvB,OAAO,CAAC,aAAa;IAqBrB;;;;;;;;;;;;;;;OAeG;YACW,cAAc;IA4D5B,OAAO,CAAC,kBAAkB;IAa1B;;;;;;;;OAQG;YACW,UAAU;IAoDxB,OAAO,CAAC,cAAc;YAaR,cAAc;IAsC5B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,wBAAwB,CAAC,KAAK,EAAE;QACpC,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;QAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC9B,0EAA0E;QAC1E,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,GAAG,EAAE,UAAU,CAAA;QACf,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAA;KACvC,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BjB;;;;OAIG;YACW,gBAAgB;IA8G9B,OAAO,CAAC,aAAa;IAqFrB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,YAAY;CA8BrB;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgB/D;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CA0DzF;AAWD,mDAAmD;AACnD,eAAO,MAAM,WAAW,aAAoB,CAAA"}