agim-cli 1.1.0 → 1.1.1

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.
@@ -15,6 +15,28 @@
15
15
  // Claude/Codex/OpenCode reports back to the user verbatim. No IM y/n
16
16
  // card appears.
17
17
  //
18
+ // DESIGN — split by tool intent, not field name:
19
+ //
20
+ // - Bash actually EXECUTES shell — its `command` is an action. Match
21
+ // against BASH_DANGER_PATTERNS (systemctl, pkill, agim restart, ...).
22
+ //
23
+ // - Edit/Write/NotebookEdit author CONTENT — their `new_string` /
24
+ // `content` is text being written to a file, not a command being run.
25
+ // Shell-literal patterns (`systemctl restart agim` as a string in a
26
+ // doc, i18n string, comment, this very file) MUST NOT trip the guard;
27
+ // blocking them would mean operators can't debrand / refactor /
28
+ // document their own service. Match only CODE_DANGER_PATTERNS — JS
29
+ // code that DYNAMICALLY signals our pid (process.kill).
30
+ //
31
+ // - Other tools (Read, Grep, Glob, MCP tools) read or query — no shell
32
+ // execution, no content authoring. Skip the scan entirely.
33
+ //
34
+ // Earlier versions stringified the whole input as a catch-all haystack;
35
+ // that scanned removal-side fields like Edit.old_string and made the
36
+ // guard block edits that *delete* the dangerous literal from a file —
37
+ // the very edits a debrand needs. The split below removes that footgun
38
+ // and the broader "shell literal in a doc trips the guard" class with it.
39
+ //
18
40
  // LIMITATIONS:
19
41
  // 1. When IMHUB_DANGEROUSLY_SKIP_PERMISSIONS=1 (Claude only), no approval
20
42
  // request is ever generated — Claude runs Bash directly. Layer 2
@@ -33,11 +55,11 @@
33
55
  // closes the loop fully for Claude (default-permission mode) and
34
56
  // OpenCode (bus-mode).
35
57
  const PROCESS_NAMES = '(agim|im-hub-pro|im-hub|dist/cli\\.js)';
36
- /** Patterns that, when matched against a tool's input, force a deny.
37
- * Tested against the Bash command string OR a stringified form of the
38
- * tool input for non-Bash tools (Edit/Write that try to mutate
39
- * systemd-unit files). Ordering doesn't matter first match wins. */
40
- const SELF_PROTECT_PATTERNS = [
58
+ /** Patterns matched against Bash's `command` field. These describe *actions*
59
+ * the shell would actually take they must NOT be applied to text being
60
+ * written into a file, because the exact same string can appear as a
61
+ * legitimate literal in docs / i18n / source code. */
62
+ const BASH_DANGER_PATTERNS = [
41
63
  {
42
64
  regex: new RegExp(`\\b(systemctl|service)\\s+(restart|stop|kill|reload|disable)\\s+${PROCESS_NAMES}`),
43
65
  reason: 'systemctl restart/stop on the Agim service',
@@ -47,9 +69,6 @@ const SELF_PROTECT_PATTERNS = [
47
69
  reason: 'pkill / killall targeting the Agim service',
48
70
  },
49
71
  {
50
- // kill <pid> where pid happens to be our own — checked dynamically by the
51
- // caller; we also match the literal command-name pattern for the case
52
- // where the LLM does `kill $(pgrep agim)` etc.
53
72
  regex: new RegExp(`\\bkill\\b[^|;&]*\\$\\(\\s*pgrep[^)]*${PROCESS_NAMES}`),
54
73
  reason: 'kill $(pgrep agim)',
55
74
  },
@@ -61,9 +80,15 @@ const SELF_PROTECT_PATTERNS = [
61
80
  regex: /\bnpm\s+(restart|stop)\b/,
62
81
  reason: 'npm restart/stop',
63
82
  },
83
+ ];
84
+ /** Patterns matched against Edit/Write content fields (`new_string`,
85
+ * `content`, `new_source`). These describe code that would dynamically
86
+ * signal a process — i.e. the script, once written and executed, would
87
+ * kill agim. Pure shell-literal patterns deliberately don't appear here:
88
+ * a `.md` file mentioning `systemctl restart agim` is documentation, not
89
+ * a weapon. */
90
+ const CODE_DANGER_PATTERNS = [
64
91
  {
65
- // Process.kill JS call in Edit/Write tools — captures attempts to write
66
- // a script that signals our PID.
67
92
  regex: /process\.kill\s*\(\s*[^,)]+,\s*['"]SIG(TERM|KILL|INT|HUP)['"]?\s*\)/,
68
93
  reason: 'process.kill() targeting an Agim signal',
69
94
  },
@@ -77,43 +102,52 @@ const REDIRECT_TEMPLATE = (reason) => '🛑 检测到尝试通过工具调用重
77
102
  ' · 浏览器打开 web 控制台 → Safety 卡片 → Restart\n' +
78
103
  ' · 终端运行 `agim restart`';
79
104
  /** Examine a tool-use request from an agent (Claude/Codex/OpenCode MCP
80
- * sidecar relays them all through approval-bus). Returns a deny reason
81
- * if it matches a self-protect pattern, otherwise null. */
105
+ * sidecar relays them all through approval-bus). Returns a deny reason
106
+ * if it matches a self-protect pattern, otherwise null. Dispatch is
107
+ * strictly tool-name based — see the DESIGN block above. */
82
108
  export function checkToolUse(toolName, input) {
83
- // Reduce the tool input to a single string for pattern matching. Bash
84
- // tools usually carry `command`, Edit/Write carry file contents / paths.
85
- const haystacks = [];
86
- if (typeof input.command === 'string')
87
- haystacks.push(input.command);
88
- if (typeof input.content === 'string')
89
- haystacks.push(input.content);
90
- if (typeof input.new_string === 'string')
91
- haystacks.push(input.new_string);
92
- if (typeof input.file_path === 'string')
93
- haystacks.push(input.file_path);
94
- // Stringify the whole input as a fallback so we still catch weird shapes.
95
- try {
96
- haystacks.push(JSON.stringify(input));
97
- }
98
- catch { /* ignore */ }
99
- for (const hay of haystacks) {
100
- for (const { regex, reason } of SELF_PROTECT_PATTERNS) {
101
- if (regex.test(hay)) {
109
+ if (toolName === 'Bash') {
110
+ const cmd = input.command;
111
+ if (typeof cmd !== 'string' || cmd.length === 0)
112
+ return null;
113
+ for (const { regex, reason } of BASH_DANGER_PATTERNS) {
114
+ if (regex.test(cmd))
102
115
  return { deny: true, message: REDIRECT_TEMPLATE(reason) };
103
- }
104
116
  }
105
- }
106
- // Bonus: if input contains the literal current PID and looks like a kill
107
- // command, deny covers `kill 3001362` or `kill -9 3001362`.
108
- const ourPid = String(process.pid);
109
- for (const hay of haystacks) {
110
- if (/\bkill\b/.test(hay) && hay.includes(ourPid)) {
117
+ // PID dynamic check — `kill 3001362`, `kill -9 3001362`, etc.
118
+ const ourPid = String(process.pid);
119
+ if (/\bkill\b/.test(cmd) && cmd.includes(ourPid)) {
111
120
  return { deny: true, message: REDIRECT_TEMPLATE(`kill ${ourPid} (our pid)`) };
112
121
  }
122
+ return null;
123
+ }
124
+ if (toolName === 'Edit' || toolName === 'Write' || toolName === 'NotebookEdit') {
125
+ const candidates = [];
126
+ if (typeof input.new_string === 'string')
127
+ candidates.push(input.new_string);
128
+ if (typeof input.content === 'string')
129
+ candidates.push(input.content);
130
+ if (typeof input.new_source === 'string')
131
+ candidates.push(input.new_source);
132
+ if (candidates.length === 0)
133
+ return null;
134
+ const ourPid = String(process.pid);
135
+ for (const hay of candidates) {
136
+ for (const { regex, reason } of CODE_DANGER_PATTERNS) {
137
+ if (regex.test(hay))
138
+ return { deny: true, message: REDIRECT_TEMPLATE(reason) };
139
+ }
140
+ // Author-time PID kill — `process.kill(<ourPid>, 'SIGTERM')`. Narrower
141
+ // than the Bash `\bkill\b` check because we don't want to match the
142
+ // word "kill" appearing in arbitrary prose / code comments.
143
+ if (/process\.kill/.test(hay) && hay.includes(ourPid)) {
144
+ return { deny: true, message: REDIRECT_TEMPLATE(`process.kill(${ourPid}) (our pid)`) };
145
+ }
146
+ }
147
+ return null;
113
148
  }
114
- // Suppress unused-var lint for toolName kept in signature for future
115
- // tool-type-aware decisions (Edit-of-/etc/systemd/system/agim.service etc.)
116
- void toolName;
149
+ // Read, Grep, Glob, LS, NotebookRead, WebFetch, WebSearch, all MCP tools:
150
+ // no shell execution, no content authoring → nothing to defend against.
117
151
  return null;
118
152
  }
119
153
  //# sourceMappingURL=self-protect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"self-protect.js","sourceRoot":"","sources":["../../src/core/self-protect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"self-protect.js","sourceRoot":"","sources":["../../src/core/self-protect.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-http-adapter.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/opencode/opencode-http-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode-http-adapter.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/opencode/opencode-http-adapter.ts"],"names":[],"mappings":"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"}
@@ -26,8 +26,10 @@
26
26
  // the adapter falls back to auto-`once` so non-IM call paths (web,
27
27
  // scheduler) keep working.
28
28
  // 5. Exits cleanly on `session.status: idle` for the right session,
29
- // surfaces `session.error`, and is bounded by OPENCODE_TIMEOUT_MS
30
- // (default 30 min).
29
+ // surfaces `session.error`, and is bounded by an idle watchdog
30
+ // (OPENCODE_IDLE_TIMEOUT_MS / IMHUB_AGENT_IDLE_TIMEOUT_MS, default
31
+ // 60 min, 0 = disabled) that fires only when the daemon goes
32
+ // completely silent — slow human approvals don't count.
31
33
  //
32
34
  // Selection: env IMHUB_OPENCODE_DRIVER=http picks this; anything else (incl
33
35
  // unset) picks the stdio adapter. See ./index.ts factory.
@@ -45,7 +47,11 @@ import { logger as rootLogger } from '../../../core/logger.js';
45
47
  import { opencodeServe as defaultServe } from './serve-manager.js';
46
48
  import { approvalBus as defaultApprovalBus } from '../../../core/approval-bus.js';
47
49
  const log = rootLogger.child({ component: 'agent.opencode.http' });
48
- const DEFAULT_TIMEOUT_MS = 30 * 60 * 1000;
50
+ // Idle (no-SSE-event) timeout matches the semantics in agent-base.ts: the
51
+ // watchdog re-arms on every event the daemon emits, so slow human-in-the-loop
52
+ // approvals don't count against the budget; only true silence does. Override
53
+ // via OPENCODE_IDLE_TIMEOUT_MS or IMHUB_AGENT_IDLE_TIMEOUT_MS; set 0 to disable.
54
+ const DEFAULT_IDLE_TIMEOUT_MS = 60 * 60 * 1000;
49
55
  export class OpenCodeHttpAdapter extends OpenCodeAdapter {
50
56
  serve;
51
57
  fetchImpl;
@@ -239,18 +245,29 @@ export class OpenCodeHttpAdapter extends OpenCodeAdapter {
239
245
  const t = setTimeout(() => { sse.close(); }, 500);
240
246
  t.unref?.();
241
247
  });
242
- const timeoutMs = resolveTimeout();
243
- const timeoutAt = Date.now() + timeoutMs;
248
+ const idleTimeout = resolveIdleTimeout();
249
+ let watchdogTimedOut = false;
250
+ // Idle watchdog: re-armed on every SSE event. Without this, an SSE that
251
+ // truly hangs (no events at all) would block the for-await forever — the
252
+ // old in-loop `Date.now() > timeoutAt` only fired when an event arrived.
253
+ let watchdog = null;
254
+ const armWatchdog = () => {
255
+ if (idleTimeout <= 0)
256
+ return;
257
+ if (watchdog)
258
+ clearTimeout(watchdog);
259
+ watchdog = setTimeout(() => {
260
+ watchdogTimedOut = true;
261
+ sse.close(); // unblocks the for-await
262
+ }, idleTimeout);
263
+ };
264
+ armWatchdog();
244
265
  let surfacedError = null;
245
266
  const yieldedPartIds = new Set();
246
267
  let sseYieldedAnyText = false;
247
268
  try {
248
269
  for await (const event of sse) {
249
- if (Date.now() > timeoutAt) {
250
- log.warn({ event: 'opencode.http.timeout', sessionID, timeoutMs }, 'http adapter timed out');
251
- yield `\n\n⚠️ 处理超时(已超过 ${Math.round(timeoutMs / 60000)} 分钟)`;
252
- return;
253
- }
270
+ armWatchdog();
254
271
  if (event.type === 'permission.asked') {
255
272
  this.routeAsk(event, baseUrl, sessionID, callOpts);
256
273
  continue;
@@ -273,8 +290,16 @@ export class OpenCodeHttpAdapter extends OpenCodeAdapter {
273
290
  }
274
291
  }
275
292
  finally {
293
+ if (watchdog)
294
+ clearTimeout(watchdog);
276
295
  sse.close();
277
296
  }
297
+ if (watchdogTimedOut) {
298
+ const mins = Math.round(idleTimeout / 60000);
299
+ log.warn({ event: 'opencode.http.idle-timeout', sessionID, idleTimeoutMs: idleTimeout, reason: 'idle' }, `opencode HTTP idle for ${mins}min — assumed hang, terminated`);
300
+ yield `\n\n⚠️ opencode 子进程 ${mins} 分钟无任何输出,强制超时(可能 hang 或网络挂起)`;
301
+ return;
302
+ }
278
303
  const result = await promptPromise;
279
304
  if (result && typeof result === 'object' && 'error' in result) {
280
305
  log.warn({ event: 'opencode.http.prompt_failed', err: String(result.error) }, 'prompt POST failed');
@@ -608,14 +633,20 @@ function decisionToOpencodeReply(decision) {
608
633
  ? { reply: 'reject', message: decision.message }
609
634
  : { reply: 'reject' };
610
635
  }
611
- function resolveTimeout() {
612
- const raw = process.env.OPENCODE_TIMEOUT_MS;
613
- if (raw) {
636
+ function resolveIdleTimeout() {
637
+ const sources = [
638
+ ['OPENCODE_IDLE_TIMEOUT_MS', process.env.OPENCODE_IDLE_TIMEOUT_MS],
639
+ ['IMHUB_AGENT_IDLE_TIMEOUT_MS', process.env.IMHUB_AGENT_IDLE_TIMEOUT_MS],
640
+ ];
641
+ for (const [envKey, raw] of sources) {
642
+ if (raw === undefined)
643
+ continue;
614
644
  const n = parseInt(raw, 10);
615
- if (Number.isFinite(n) && n > 0)
645
+ if (Number.isFinite(n) && n >= 0)
616
646
  return n;
647
+ log.warn({ event: 'opencode.http.idle-timeout.invalid', raw, envKey }, `Invalid idle timeout env "${envKey}=${raw}", trying next source / default`);
617
648
  }
618
- return DEFAULT_TIMEOUT_MS;
649
+ return DEFAULT_IDLE_TIMEOUT_MS;
619
650
  }
620
651
  async function safeText(res) {
621
652
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-http-adapter.js","sourceRoot":"","sources":["../../../../src/plugins/agents/opencode/opencode-http-adapter.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,EAAE;AACF,mBAAmB;AACnB,iFAAiF;AACjF,0EAA0E;AAC1E,sEAAsE;AACtE,wEAAwE;AACxE,8EAA8E;AAC9E,EAAE;AACF,iCAAiC;AACjC,uEAAuE;AACvE,wEAAwE;AACxE,oEAAoE;AACpE,iDAAiD;AACjD,4EAA4E;AAC5E,mCAAmC;AACnC,kEAAkE;AAClE,iEAAiE;AACjE,2EAA2E;AAC3E,0EAA0E;AAC1E,oBAAoB;AACpB,wEAAwE;AACxE,sEAAsE;AACtE,uEAAuE;AACvE,wEAAwE;AACxE,wEAAwE;AACxE,gCAAgC;AAChC,sEAAsE;AACtE,uEAAuE;AACvE,yBAAyB;AACzB,EAAE;AACF,4EAA4E;AAC5E,0DAA0D;AAC1D,EAAE;AACF,0EAA0E;AAC1E,2EAA2E;AAC3E,sEAAsE;AACtE,EAAE;AACF,wEAAwE;AACxE,2EAA2E;AAC3E,kDAAkD;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAA6B,aAAa,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC7F,OAAO,EAAE,WAAW,IAAI,kBAAkB,EAAmC,MAAM,+BAA+B,CAAA;AAElH,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,CAAA;AAElE,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AA2DzC,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IACrC,KAAK,CAAsB;IAC3B,SAAS,CAAc;IACxC,sDAAsD;IACrC,WAAW,CAAoB;IAChD;;;;qEAIiE;IAChD,cAAc,GAAG,IAAI,GAAG,EAAU,CAAA;IAEnD,YAAY,OAA2B,EAAE;QACvC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,YAAY,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAA;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI;YAC1C,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,kBAAkB,CAAC,CAAA;QAC5C,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,EACpF,4FAA4F,CAAC,CAAA;IACjG,CAAC;IAED;;;;;;;;OAQG;IACH,gBAAgB,CAAC,KAAoB,EAAE,SAAiB,EAAE,IAAmB;QAC3E,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAA;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;QAEvB,4EAA4E;QAC5E,wEAAwE;QACxE,gCAAgC;QAChC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,SAAS,CAAA;QACvE,IAAI,GAAG,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjC,IAAI,CAAC;gBAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,kDAAkD,CAAC,CAAC;QACjG,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,IAAI,IAAI,EAAE,CAAC;YAClD,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAsE,EAAE,CAAA;gBACnF,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;gBAC1F,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK,QAAQ;oBAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAA;gBACjF,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,QAAQ;oBAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;gBACpF,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;oBACvG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACjB,IAAI,CAAC;4BAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAC,iCAAiC,CAAC,CAAC;oBACzE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,kEAAkE;YAClE,uEAAuE;YACvE,8CAA8C;YAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,SAAS,CAAA;YAC3E,IACE,IAAI,CAAC,IAAI,KAAK,MAAM;gBACpB,IAAI,CAAC,IAAI;gBACT,IAAI,CAAC,IAAI,EAAE,GAAG;gBACd,QAAQ,KAAK,SAAS,EACtB,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAA;YAC7C,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAA;IACX,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,KAAoB,EAAE,SAAiB;QACjD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;YAAE,OAAO,KAAK,CAAA;QACjD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAA;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,SAAS,CAAA;QACpD,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;QACnC,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,KAAK,MAAM,CAAA;IAC7E,CAAC;IAED,YAAY,CAAC,KAAoB,EAAE,SAAiB;QAClD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe;YAAE,OAAO,IAAI,CAAA;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAA;QACpC,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAC9C,MAAM,CAAC,GAAG,KAAK,CAAC,KAA4C,CAAA;QAC5D,IAAI,GAAG,GAAG,eAAe,CAAA;QACzB,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;gBAAE,GAAG,GAAG,CAAC,CAAC,IAAI,CAAA;YAC5C,MAAM,IAAI,GAAG,CAAC,CAAC,IAA2C,CAAA;YAC1D,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;gBAAE,GAAG,GAAG,IAAI,CAAC,OAAO,CAAA;QAClE,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IACvB,CAAC;IAED,yBAAyB,CAAC,MAAc,EAAE,OAAuB;QAC/D,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAA;QACnD,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;IAEQ,KAAK,CAAC,CAAC,UAAU,CACxB,UAAkB,EAClB,MAAc,EACd,OAAuB,EACvB,IAAoB;QAEpB,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAA;QAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAA;QAEhD,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAA;QACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YACvD,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACrE,CAAC;YACD,yEAAyE;YACzE,uEAAuE;YACvE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACpC,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC7B,wEAAwE;YACxE,uEAAuE;YACvE,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,uEAAuE;YACvE,iEAAiE;QACnE,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,kEAAkE;YAClE,iEAAiE;YACjE,mEAAmE;YACnE,oEAAoE;YACpE,mCAAmC;YACnC,EAAE;YACF,iEAAiE;YACjE,iEAAiE;YACjE,+DAA+D;YAC/D,+CAA+C;YAC/C,MAAM,aAAa,GAAG,SAAS,CAAA;YAC/B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;YACtC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBAC/D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;gBACzC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oCAAoC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAA;YACvG,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,GAAG,CAAC,IAAI,CACN,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EACtH,YAAY,CACb,CAAA;QAED,2EAA2E;QAC3E,yEAAyE;QACzE,4EAA4E;QAC5E,MAAM,gBAAgB,GAAG,QAAQ,CAAC,kBAAkB;YAClD,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAEnD,sEAAsE;QACtE,oEAAoE;QACpE,sEAAsE;QACtE,qEAAqE;QACrE,sEAAsE;QACtE,qEAAqE;QACrE,qDAAqD;QACrD,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAA;QAC5D,MAAM,WAAW,GAAG,gBAAgB;YAClC,CAAC,CAAC,GAAG,gBAAgB,OAAO,gBAAgB,EAAE;YAC9C,CAAC,CAAC,gBAAgB,CAAA;QAEpB,0DAA0D;QAC1D,EAAE;QACF,yEAAyE;QACzE,wEAAwE;QACxE,yEAAyE;QACzE,yEAAyE;QACzE,yEAAyE;QACzE,sEAAsE;QACtE,wEAAwE;QACxE,0EAA0E;QAC1E,mEAAmE;QACnE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC;aAC7E,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAY,CAAA,CAAC,CAAA;QAErG,yEAAyE;QACzE,sEAAsE;QACtE,oEAAoE;QACpE,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE;YACzB,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC,EAAE,GAAG,CAAC,CAE/C;YAAC,CAAuC,CAAC,KAAK,EAAE,EAAE,CAAA;QACrD,CAAC,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,cAAc,EAAE,CAAA;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QAExC,IAAI,aAAa,GAAkB,IAAI,CAAA;QACvC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAA;QACxC,IAAI,iBAAiB,GAAG,KAAK,CAAA;QAE7B,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;oBAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,wBAAwB,CAAC,CAAA;oBAC5F,MAAM,mBAAmB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAA;oBAC5D,OAAM;gBACR,CAAC;gBAED,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;oBACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;oBAClD,SAAQ;gBACV,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;gBACpD,IAAI,QAAQ,EAAE,CAAC;oBACb,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAA;oBAC9B,SAAQ;gBACV,CAAC;gBAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;gBAC1E,IAAI,IAAI,EAAE,CAAC;oBACT,IAAI,MAAM;wBAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;oBACtC,iBAAiB,GAAG,IAAI,CAAA;oBACxB,MAAM,IAAI,CAAA;gBACZ,CAAC;gBAED,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;oBACvC,MAAK;gBACP,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,GAAG,CAAC,KAAK,EAAE,CAAA;QACb,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAA;QAClC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YAC9D,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAA;YACnG,MAAM,oBAAoB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;YAChD,OAAM;QACR,CAAC;QAED,uEAAuE;QACvE,yEAAyE;QACzE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,EAAE,CAAC;YACjE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAA;YACxE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACvB,GAAG,CAAC,IAAI,CACN,EAAE,KAAK,EAAE,iCAAiC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,EAC9E,iEAAiE,CAClE,CAAA;gBACH,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,OAAO;oBAAE,MAAM,IAAI,CAAA;YACxC,CAAC;QACH,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,2BAA2B,aAAa,EAAE,CAAA;QAClD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CACf,IAA6B,EAC7B,cAA2B,EAC3B,IAAmB;QAEnB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QAEzD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAsE,EAAE,CAAA;YACnF,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1E,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;YAChC,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK,QAAQ;gBAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAA;YAC3F,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,QAAQ;gBAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;YAC9F,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACvG,IAAI,CAAC;oBAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,SAAQ;YAClC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAQ;YACrE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG;gBAAE,SAAQ;YAC7B,IAAI,IAAI,CAAC,EAAE,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,SAAQ;YACpD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,yEAAyE;IAEzE;;;;;;;;;;;;;OAaG;IACK,QAAQ,CAAC,KAAoB,EAAE,OAAe,EAAE,WAAmB,EAAE,IAAmB;QAC9F,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAA;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAA;QACtB,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAM;QAErC,MAAM,QAAQ,GAAG,GAAS,EAAE;YAC1B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBAClE,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YACnF,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAA;QAC5B,MAAM,SAAS,GAAG,GAAG,EAAE,WAAW,EAAE;eAC/B,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;eAC7D,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;QAElE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,QAAQ,EAAE,CAAA;YACV,OAAM;QACR,CAAC;QAED,MAAM,GAAG,GAAG;YACV,QAAQ,EAAE,IAAI,CAAC,QAAkB;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAkB;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;SAChC,CAAA;QACD,MAAM,QAAQ,GAAG,CAAC,QAAkB,EAAQ,EAAE;YAC5C,MAAM,IAAI,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAA;YAC9C,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBACpF,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YAChF,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,GAAG,EAAE,wBAAwB,CAAC;YAC5B,KAAK,EAAE,WAAW,EAAG,uDAAuD;YAC5E,KAAK;YACL,QAAQ,EAAE,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY;YAChF,KAAK,EAAE;gBACL,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;aAChF;YACD,GAAG;YACH,QAAQ;SACT,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACxB,sEAAsE;YACtE,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sCAAsC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YACpF,QAAQ,EAAE,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;OAMG;IACK,mBAAmB;QACzB,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;QACxE,MAAM,GAAG,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAc,EAAE,CAAC,CAAA;QAC1F,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,EAAE,CAAA;QAC9B,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACpF,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;QACxD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA,CAAE,mBAAmB;IACvE,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,SAAiB;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC1C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM,CAAE,YAAY;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,YAAY,SAAS,EAAE,EAAE;YAClE,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;SAC9C,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;QACvE,CAAC;QACD,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAChC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,QAAQ,EAAE,EAC/G,yCAAyC,CAAC,CAAA;IAC9C,CAAC;IAED,2EAA2E;IAEnE,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,IAAmB;QAC9D,2DAA2D;QAC3D,EAAE;QACF,0BAA0B;QAC1B,wEAAwE;QACxE,qEAAqE;QACrE,iEAAiE;QACjE,oDAAoD;QACpD,EAAE;QACF,iCAAiC;QACjC,kEAAkE;QAClE,mEAAmE;QACnE,0BAA0B;QAC1B,sEAAsE;QACtE,qEAAqE;QACrE,iEAAiE;QACjE,mEAAmE;QACnE,4CAA4C;QAC5C,+DAA+D;QAC/D,oEAAoE;QACpE,8CAA8C;QAC9C,EAAE;QACF,sEAAsE;QACtE,2BAA2B;QAC3B,4BAA4B;QAC5B,0CAA0C;QAC1C,gDAAgD;QAChD,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,cAAc;SACtB,CAAA;QACD,yEAAyE;QACzE,oEAAoE;QACpE,6DAA6D;QAC7D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAA;QACrB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC9C,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,UAAU,EAAE;YACrD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,CAAC,MAAM,IAAI,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC9F,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAqB,CAAA;QAChD,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;QACvE,GAAG,CAAC,IAAI,CACN;YACE,KAAK,EAAE,+BAA+B;YACtC,SAAS,EAAE,IAAI,CAAC,EAAE;YAClB,GAAG,EAAE,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC;SACvC,EACD,iBAAiB,CAClB,CAAA;QACD,OAAO,IAAI,CAAC,EAAE,CAAA;IAChB,CAAC;IAEO,KAAK,CAAC,UAAU,CACtB,OAAe,EACf,SAAiB,EACjB,MAAc,EACd,IAAmB;QAEnB,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SACxC,CAAA;QACD,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACvC,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC7C,2EAA2E;QAC3E,2EAA2E;QAC3E,oEAAoE;QACpE,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAA;QACtC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,YAAY,SAAS,UAAU,EAAE;YAC1E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,MAAM,IAAI,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACtF,CAAC;QACD,sEAAsE;QACtE,uEAAuE;QACvE,qEAAqE;QACrE,IAAI,CAAC;YACH,OAAO,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAA;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,OAAe,EACf,SAAiB,EACjB,KAAmC,EACnC,OAAgB;QAEhB,MAAM,IAAI,GAA4B,EAAE,KAAK,EAAE,CAAA;QAC/C,IAAI,KAAK,KAAK,QAAQ,IAAI,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACzD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,eAAe,SAAS,QAAQ,EAAE;YAC3E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,OAAe;QAC3C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,QAAQ,EAAE;YACnD,OAAO,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;SACzC,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;QACrE,CAAC;QACD,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH;;;;;;;;;;;GAWG;AACH,SAAS,yBAAyB,CAAC,IAAmB;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;IAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;IAChC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAA;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;IACrE,OAAO;QACL,gCAAgC;QAChC,mEAAmE;QACnE,oEAAoE;QACpE,yDAAyD;QACzD,uEAAuE;QACvE,sEAAsE;QACtE,EAAE;QACF,oBAAoB,GAAG,EAAE;QACzB,EAAE;QACF,4DAA4D;QAC5D,EAAE;QACF,oEAAoE;QACpE,4DAA4D;QAC5D,uEAAuE;QACvE,uEAAuE;QACvE,0DAA0D;KAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAkB;IACjD,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;IAC3D,OAAO,QAAQ,CAAC,OAAO;QACrB,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE;QAChD,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;AACzB,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAA;IAC3C,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;IAC3C,CAAC;IACD,OAAO,kBAAkB,CAAA;AAC3B,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAa;IACnC,IAAI,CAAC;QAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAA;IAAC,CAAC;AACrE,CAAC;AAkBD,MAAM,OAAO,WAAW;IACd,MAAM,CAAe;IACrB,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;IAClC,GAAG,GAAG,EAAE,CAAA;IACR,MAAM,GAAG,KAAK,CAAA;IAEtB,YAAY,IAAmC;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAA8B,CAAA;IAC5D,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,MAAM;YAAE,OAAM;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC;YAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YAChD,IAAI,IAAI;gBAAE,OAAM;YAChB,IAAI,CAAC,KAAK;gBAAE,SAAQ;YACpB,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YACxD,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBACpC,IAAI,GAAG,KAAK,CAAC,CAAC;oBAAE,MAAK;gBACrB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;gBACpC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;gBAClC,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;gBAChC,IAAI,GAAG;oBAAE,MAAM,GAAG,CAAA;YACpB,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAA;QACtC,CAAC;IACH,CAAC;IACD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IACzB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAkB,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"opencode-http-adapter.js","sourceRoot":"","sources":["../../../../src/plugins/agents/opencode/opencode-http-adapter.ts"],"names":[],"mappings":"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"}
@@ -141,6 +141,16 @@
141
141
  adminConfirmRemove: 'Remove admin {p}:{u}?',
142
142
  adminPublicBindWarn: '⚠️ Web is bound publicly — admin editor disabled to prevent random visitors from granting themselves access. Bind to 127.0.0.1 to enable.',
143
143
  adminBootstrapHint: 'Bootstrap token exists at {path}. Run `cat` on the server, then send `/setup admin <token>` in IM to self-onboard.',
144
+
145
+ // ── Approval policy (timeout default) ─────────────────────
146
+ approvalPolicyTitle: 'Approval Policy',
147
+ approvalPolicyHint: 'What does Agim do when a tool-use approval times out (no IM reply within the budget)? Default deny is strict; switch to allow when you\'ll be away from IM and want the agent to keep moving.',
148
+ approvalTimeoutDefaultLabel: 'On approval timeout',
149
+ approvalTimeoutDeny: 'Deny (default — strict, human in the loop)',
150
+ approvalTimeoutAllow: 'Allow (user-away mode — agent proceeds silently)',
151
+ approvalPolicySave: 'Save',
152
+ approvalPolicySaved: 'Saved — applies to the next pending approval, no restart needed.',
153
+ approvalPolicyLoadFailed: 'Failed to load approval policy',
144
154
  },
145
155
  zh: {
146
156
  title: 'Agim — 设置',
@@ -268,6 +278,16 @@
268
278
  adminConfirmRemove: '移除管理员 {p}:{u}?',
269
279
  adminPublicBindWarn: '⚠️ web 控制台目前监听公开地址 — 为防止陌生访问者擅自给自己加 admin,此编辑器已禁用。绑回 127.0.0.1 后启用。',
270
280
  adminBootstrapHint: '检测到一次性 token 文件在 {path}。在服务器上 `cat` 该文件取 token,然后在 IM 里发 /setup admin <token> 即可把自己设为 admin。',
281
+
282
+ // ── 审批策略 (超时默认决策) ───────────────────────────────
283
+ approvalPolicyTitle: '审批策略',
284
+ approvalPolicyHint: '当工具调用审批超时(IM 端没在限定时间内回复)时 Agim 该怎么办?默认 deny 严格、人在回路;切到 allow 是"出门模式",让 agent 继续跑、不卡你。',
285
+ approvalTimeoutDefaultLabel: '审批超时时',
286
+ approvalTimeoutDeny: '拒绝(默认 — 严格,人工把关)',
287
+ approvalTimeoutAllow: '放行(出门模式 — agent 静默继续)',
288
+ approvalPolicySave: '保存',
289
+ approvalPolicySaved: '已保存 — 下一个挂起的审批起就生效,无需重启。',
290
+ approvalPolicyLoadFailed: '加载审批策略失败',
271
291
  },
272
292
  };
273
293
  function t(key) { return T[window.__lang][key] || T.en[key] || key; }
@@ -709,6 +729,7 @@
709
729
  <h1>${t('h1')}</h1>
710
730
  ${renderServiceCard()}
711
731
  ${renderSafetyCard()}
732
+ ${renderApprovalPolicyCard()}
712
733
  ${renderAgentsCard()}
713
734
  ${renderMessengersCard()}
714
735
  ${renderAcpCard()}
@@ -721,6 +742,8 @@
721
742
  void loadServiceStatus();
722
743
  // Admin allowlist list — loads via /api/admin-allowlist.
723
744
  void loadAdminList();
745
+ // Approval policy (IMHUB_TIMEOUT_DEFAULT) — loaded via /api/env.
746
+ void loadApprovalPolicy();
724
747
  }
725
748
 
726
749
  // ==========================================
@@ -840,6 +863,69 @@
840
863
  `;
841
864
  }
842
865
 
866
+ // ==========================================
867
+ // Approval Policy card — IMHUB_TIMEOUT_DEFAULT (deny|allow).
868
+ // Hot-reloads via process.env mutation in handlePutEnv, no restart.
869
+ // ==========================================
870
+ function renderApprovalPolicyCard() {
871
+ return `
872
+ <div class="card">
873
+ <h2>${t('approvalPolicyTitle')}</h2>
874
+ <div class="hint" style="margin-bottom:10px">${t('approvalPolicyHint')}</div>
875
+ <div style="margin-bottom:8px">
876
+ <label for="approval-timeout-default">${t('approvalTimeoutDefaultLabel')}</label>
877
+ <select id="approval-timeout-default">
878
+ <option value="deny">${t('approvalTimeoutDeny')}</option>
879
+ <option value="allow">${t('approvalTimeoutAllow')}</option>
880
+ </select>
881
+ </div>
882
+ <div class="actions">
883
+ <button type="button" class="btn btn-primary" id="approval-policy-save">${t('approvalPolicySave')}</button>
884
+ <span id="approval-policy-status" class="hint" style="margin-left:10px"></span>
885
+ </div>
886
+ </div>
887
+ `;
888
+ }
889
+
890
+ async function loadApprovalPolicy() {
891
+ const sel = document.getElementById('approval-timeout-default');
892
+ const status = document.getElementById('approval-policy-status');
893
+ if (!sel) return;
894
+ try {
895
+ const res = await authFetch('/api/env?reveal=1');
896
+ if (!res.ok) throw new Error('HTTP ' + res.status);
897
+ const data = await res.json();
898
+ const v = (data.env && typeof data.env.IMHUB_TIMEOUT_DEFAULT === 'string')
899
+ ? data.env.IMHUB_TIMEOUT_DEFAULT.toLowerCase()
900
+ : 'deny';
901
+ sel.value = v === 'allow' ? 'allow' : 'deny';
902
+ } catch (err) {
903
+ if (status) status.textContent = t('approvalPolicyLoadFailed');
904
+ }
905
+ }
906
+
907
+ async function saveApprovalPolicy() {
908
+ const sel = document.getElementById('approval-timeout-default');
909
+ const status = document.getElementById('approval-policy-status');
910
+ if (!sel || !status) return;
911
+ const v = sel.value === 'allow' ? 'allow' : 'deny';
912
+ try {
913
+ // authFetch is a thin fetch wrapper that doesn't check res.ok — a
914
+ // 5xx from the server still resolves the promise. Without this guard
915
+ // the UI would lie ("已保存") on a failed write.
916
+ const res = await authFetch('/api/env', {
917
+ method: 'PUT',
918
+ headers: { 'Content-Type': 'application/json' },
919
+ body: JSON.stringify({ updates: { IMHUB_TIMEOUT_DEFAULT: v } }),
920
+ });
921
+ if (!res.ok) throw new Error('HTTP ' + res.status);
922
+ status.textContent = t('approvalPolicySaved');
923
+ setTimeout(() => { status.textContent = ''; }, 4000);
924
+ } catch (err) {
925
+ status.textContent = t('saveFailed');
926
+ }
927
+ }
928
+
843
929
  // ==========================================
844
930
  // Agents card
845
931
  // ==========================================
@@ -1346,6 +1432,9 @@
1346
1432
  document.getElementById('svc-stop')?.addEventListener('click', () => svcAction('stop'));
1347
1433
  document.getElementById('svc-start')?.addEventListener('click', () => svcAction('start'));
1348
1434
 
1435
+ // Approval Policy card — IMHUB_TIMEOUT_DEFAULT toggle.
1436
+ document.getElementById('approval-policy-save')?.addEventListener('click', saveApprovalPolicy);
1437
+
1349
1438
  // Add admin (Safety card → Admin Allowlist).
1350
1439
  document.getElementById('admin-add')?.addEventListener('click', async () => {
1351
1440
  const platform = (document.getElementById('admin-platform')?.value || '').trim();
@@ -1544,6 +1544,11 @@ const ENV_EDITABLE_KEYS = [
1544
1544
  // Safety card toggle — drives the Claude --dangerously-skip-permissions
1545
1545
  // branch in plugins/agents/claude-code/index.ts. Not a secret, plain '1'/'0'.
1546
1546
  'IMHUB_DANGEROUSLY_SKIP_PERMISSIONS',
1547
+ // Approval Policy card — 'allow' | 'deny' (default deny). Decides what the
1548
+ // approval bus does when a tool-use prompt times out with no human reply.
1549
+ // Hot-reload: handlePutEnv mutates process.env so approval-bus picks up the
1550
+ // new value on the next timer fire, no restart needed.
1551
+ 'IMHUB_TIMEOUT_DEFAULT',
1547
1552
  ];
1548
1553
  const SECRET_KEYS = new Set(['IMHUB_SMTP_PASS', 'IMHUB_BAIDU_MAP_AK']);
1549
1554
  function maskSecret(v) {
@@ -1594,6 +1599,17 @@ async function handlePutEnv(req, res) {
1594
1599
  }
1595
1600
  const { updateEnvFile } = await import('../cli-ui/env-file.js');
1596
1601
  updateEnvFile(safe);
1602
+ // Hot-reload: mutate process.env so modules that re-read on use (e.g.
1603
+ // approval-bus's isTimeoutDefaultAllow) pick up the change without
1604
+ // waiting for a service restart. Modules that capture at module load
1605
+ // (most SMTP / Baidu callers) still need a restart to see the new value
1606
+ // — that's a per-module decision, not enforced here.
1607
+ for (const [k, v] of Object.entries(safe)) {
1608
+ if (v === null)
1609
+ delete process.env[k];
1610
+ else
1611
+ process.env[k] = v;
1612
+ }
1597
1613
  sendJson(res, 200, { ok: true, updated: Object.keys(safe) });
1598
1614
  }
1599
1615
  catch (err) {