agentspeak-cli 0.8.0 → 0.9.0

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 (77) hide show
  1. package/dist/adapters/claude.d.ts +13 -0
  2. package/dist/adapters/claude.d.ts.map +1 -0
  3. package/dist/adapters/claude.js +32 -0
  4. package/dist/adapters/claude.js.map +1 -0
  5. package/dist/adapters/cursor-agent.d.ts +10 -0
  6. package/dist/adapters/cursor-agent.d.ts.map +1 -0
  7. package/dist/adapters/cursor-agent.js +29 -0
  8. package/dist/adapters/cursor-agent.js.map +1 -0
  9. package/dist/adapters/echo.d.ts +17 -0
  10. package/dist/adapters/echo.d.ts.map +1 -0
  11. package/dist/adapters/echo.js +39 -0
  12. package/dist/adapters/echo.js.map +1 -0
  13. package/dist/adapters/hermes.d.ts +10 -0
  14. package/dist/adapters/hermes.d.ts.map +1 -0
  15. package/dist/adapters/hermes.js +33 -0
  16. package/dist/adapters/hermes.js.map +1 -0
  17. package/dist/adapters/index.d.ts +69 -0
  18. package/dist/adapters/index.d.ts.map +1 -0
  19. package/dist/adapters/index.js +106 -0
  20. package/dist/adapters/index.js.map +1 -0
  21. package/dist/adapters/openclaw.d.ts +10 -0
  22. package/dist/adapters/openclaw.d.ts.map +1 -0
  23. package/dist/adapters/openclaw.js +32 -0
  24. package/dist/adapters/openclaw.js.map +1 -0
  25. package/dist/adapters/shell-helper.d.ts +32 -0
  26. package/dist/adapters/shell-helper.d.ts.map +1 -0
  27. package/dist/adapters/shell-helper.js +99 -0
  28. package/dist/adapters/shell-helper.js.map +1 -0
  29. package/dist/adapters/stdin.d.ts +13 -0
  30. package/dist/adapters/stdin.d.ts.map +1 -0
  31. package/dist/adapters/stdin.js +72 -0
  32. package/dist/adapters/stdin.js.map +1 -0
  33. package/dist/api.d.ts +1 -0
  34. package/dist/api.d.ts.map +1 -1
  35. package/dist/api.js.map +1 -1
  36. package/dist/auto-shim.d.ts +38 -0
  37. package/dist/auto-shim.d.ts.map +1 -0
  38. package/dist/auto-shim.js +136 -0
  39. package/dist/auto-shim.js.map +1 -0
  40. package/dist/commands/handle-turn.d.ts +23 -8
  41. package/dist/commands/handle-turn.d.ts.map +1 -1
  42. package/dist/commands/handle-turn.js +119 -24
  43. package/dist/commands/handle-turn.js.map +1 -1
  44. package/dist/commands/identity.d.ts +28 -0
  45. package/dist/commands/identity.d.ts.map +1 -0
  46. package/dist/commands/identity.js +104 -0
  47. package/dist/commands/identity.js.map +1 -0
  48. package/dist/commands/inbox.d.ts +20 -0
  49. package/dist/commands/inbox.d.ts.map +1 -0
  50. package/dist/commands/inbox.js +41 -0
  51. package/dist/commands/inbox.js.map +1 -0
  52. package/dist/commands/init.d.ts +7 -0
  53. package/dist/commands/init.d.ts.map +1 -1
  54. package/dist/commands/init.js +35 -1
  55. package/dist/commands/init.js.map +1 -1
  56. package/dist/commands/mcp.d.ts +30 -0
  57. package/dist/commands/mcp.d.ts.map +1 -0
  58. package/dist/commands/mcp.js +195 -0
  59. package/dist/commands/mcp.js.map +1 -0
  60. package/dist/commands/register.d.ts.map +1 -1
  61. package/dist/commands/register.js +14 -1
  62. package/dist/commands/register.js.map +1 -1
  63. package/dist/commands/run.d.ts +29 -0
  64. package/dist/commands/run.d.ts.map +1 -1
  65. package/dist/commands/run.js +193 -12
  66. package/dist/commands/run.js.map +1 -1
  67. package/dist/exec.d.ts +44 -4
  68. package/dist/exec.d.ts.map +1 -1
  69. package/dist/exec.js +69 -5
  70. package/dist/exec.js.map +1 -1
  71. package/dist/index.js +103 -61
  72. package/dist/index.js.map +1 -1
  73. package/dist/state.d.ts +36 -0
  74. package/dist/state.d.ts.map +1 -1
  75. package/dist/state.js +64 -0
  76. package/dist/state.js.map +1 -1
  77. package/package.json +5 -2
@@ -2,6 +2,9 @@ import { api, ApiError, getMeetingStatus, pollMyTurn } from '../api.js';
2
2
  import { runShim } from '../exec.js';
3
3
  import { startHeartbeat } from '../heartbeat.js';
4
4
  import { loadCurrentMeetingId, loadMeeting } from '../state.js';
5
+ import { resolveAdapter, } from '../adapters/index.js';
6
+ import { autoShimPaths } from '../auto-shim.js';
7
+ import { existsSync } from 'node:fs';
5
8
  const TERMINAL_STATUSES = new Set(['completed', 'expired', 'cancelled', 'closed']);
6
9
  const SIGNAL_DONE_MARKER = /<!--\s*agentspeak:signal=done\s*-->/i;
7
10
  function ts() {
@@ -31,6 +34,94 @@ function marker(stream, name, attrs) {
31
34
  .join(' ');
32
35
  stream.write(`[${name} ${parts}]\n`);
33
36
  }
37
+ /**
38
+ * Build a synthetic TurnEnvelope for the pre-attach smoke test.
39
+ *
40
+ * Real-shape fields (taskId, turnNumber, meetingId, agentId,
41
+ * instructions, previousTurns) so a shim that does naive JSON.parse
42
+ * survives, plus a top-level `agentspeak.smokeTest: true` flag so a
43
+ * shim CAN short-circuit and emit a literal "[ok]" instead of paying
44
+ * for a real LLM call. Shims that ignore the flag still exercise the
45
+ * full reply path, which is also fine.
46
+ */
47
+ function buildSmokeEnvelope(meetingId, agentId) {
48
+ return {
49
+ taskId: 'smoke',
50
+ turnNumber: 0,
51
+ meetingId,
52
+ agentId,
53
+ role: 'proposer',
54
+ instructions: 'AgentSpeak shim smoke test. Reply with the literal text [ok] (or any non-empty markdown). ' +
55
+ 'Do not call out to an LLM if you can short-circuit on agentspeak.smokeTest === true.',
56
+ previousTurns: [],
57
+ agentspeak: { smokeTest: true, version: '0.9.0' },
58
+ };
59
+ }
60
+ function resolveBridge(opts) {
61
+ if (opts.via && opts.exec) {
62
+ throw new Error('--via and --exec are mutually exclusive; pick a built-in adapter (--via) ' +
63
+ 'or your own shim (--exec ./reply.sh), not both.');
64
+ }
65
+ if (opts.via) {
66
+ const descriptor = resolveAdapter(opts.via);
67
+ return { kind: 'via', label: `--via ${descriptor.name}`, descriptor };
68
+ }
69
+ if (opts.exec) {
70
+ return { kind: 'exec', label: `--exec ${opts.exec}`, exec: opts.exec };
71
+ }
72
+ // Zero-config path: fall back to the hardened auto-shim that
73
+ // `agentspeak-cli init` writes into ~/.agentspeak/reply.sh. This is
74
+ // what makes `npx agentspeak-cli join <invite>` work for an agent
75
+ // that did `init` and then never authored anything else.
76
+ if (!opts.defaultReply) {
77
+ const { posixPath } = autoShimPaths();
78
+ if (existsSync(posixPath)) {
79
+ return { kind: 'exec', label: `--exec ${posixPath} (auto-shim)`, exec: posixPath };
80
+ }
81
+ }
82
+ return null;
83
+ }
84
+ async function runBridge(bridge, envelope, opts) {
85
+ if (bridge.kind === 'via') {
86
+ return bridge.descriptor.adapter({
87
+ envelope,
88
+ smokeTest: opts.smokeTest,
89
+ timeoutMs: opts.timeoutMs,
90
+ });
91
+ }
92
+ const r = await runShim(bridge.exec, envelope, {
93
+ timeoutMs: opts.timeoutMs,
94
+ teeStderr: !opts.smokeTest,
95
+ env: opts.smokeTest ? { AGENTSPEAK_SMOKE_TEST: '1' } : undefined,
96
+ });
97
+ return r;
98
+ }
99
+ /**
100
+ * Pre-attach bridge smoke test. Run the resolved bridge ONCE with a
101
+ * synthetic envelope before entering the polling loop. If it exits
102
+ * non-zero or produces empty output, we refuse to attach so we don't
103
+ * pollute the real meeting with "shim exited N" turns.
104
+ *
105
+ * This catches the entire failure mode that stalled
106
+ * meet_xmT7T3CapHPTCSUCaropuw: both Hermes' and OpenClaw's reply.sh
107
+ * were broken (exit 1 / exit 127) but the loop happily attached, took
108
+ * three turns, and submitted three useless artifacts before the
109
+ * coordinator triggered a similarity-loop recap.
110
+ */
111
+ async function runBridgeSmokeTest(bridge, meetingId, agentId, timeoutMs) {
112
+ const envelope = buildSmokeEnvelope(meetingId, agentId);
113
+ const result = await runBridge(bridge, envelope, { timeoutMs, smokeTest: true });
114
+ const stdoutBytes = result.stdout.trim().length;
115
+ const ok = result.exitCode === 0 && stdoutBytes > 0 && !result.timedOut;
116
+ return {
117
+ ok,
118
+ durationMs: result.durationMs,
119
+ bytes: stdoutBytes,
120
+ exitCode: result.exitCode,
121
+ stderr: result.stderr,
122
+ timedOut: result.timedOut,
123
+ };
124
+ }
34
125
  /**
35
126
  * One-shot presence handshake. POSTs the join-time nonce so the
36
127
  * coordinator can stamp `presenceConfirmedAt` on the participant row.
@@ -105,9 +196,17 @@ export async function cmdRun(opts) {
105
196
  process.off('SIGTERM', onSig);
106
197
  };
107
198
  logLine(process.stdout, `run: attached to ${meetingId} as ${state.agentId}; will reply automatically until the meeting closes`);
108
- if (!opts.exec && !opts.defaultReply) {
109
- logLine(process.stderr, 'WARNING: no --exec shim and no --default-reply; using a safe-default acknowledgement reply. ' +
110
- 'Production bots should pass --exec ./reply.sh that authors the turn body.');
199
+ let bridge;
200
+ try {
201
+ bridge = resolveBridge(opts);
202
+ }
203
+ catch (err) {
204
+ logLine(process.stderr, err instanceof Error ? err.message : String(err));
205
+ return 2;
206
+ }
207
+ if (!bridge && !opts.defaultReply) {
208
+ logLine(process.stderr, 'WARNING: no --via preset, no --exec shim, and no --default-reply; using a safe-default acknowledgement reply. ' +
209
+ 'Production bots should pass --via <preset> or --exec ./reply.sh that authors the turn body.');
111
210
  }
112
211
  // Presence handshake: prove the loop is real, not a ghost-join.
113
212
  // This must happen before we enter the polling loop so the dashboard
@@ -124,8 +223,66 @@ export async function cmdRun(opts) {
124
223
  'the loop will still attempt to handle turns, but the dashboard may flag this agent as "ghost-joined". ' +
125
224
  'If turns never come through, re-run `agentspeak-cli join <invite>` from THIS shell.');
126
225
  }
226
+ // Pre-attach bridge smoke test. Refuse to enter the polling loop if
227
+ // the resolved bridge (--via adapter or --exec shim) is broken — see
228
+ // runBridgeSmokeTest doc for why. Skipped if --skip-shim-smoke is
229
+ // passed or the loop is running with a static --default-reply.
230
+ if (bridge && !opts.skipShimSmoke) {
231
+ const smokeTimeoutMs = opts.smokeTimeoutMs ?? 30_000;
232
+ process.stdout.write(`[agentspeak ${ts()}] running pre-attach smoke test (${bridge.label}, timeout ${Math.round(smokeTimeoutMs / 1000)}s)\n`);
233
+ const smoke = await runBridgeSmokeTest(bridge, meetingId, state.agentId, smokeTimeoutMs);
234
+ if (smoke.ok) {
235
+ marker(process.stdout, 'SHIM-OK', {
236
+ bridge: bridge.label,
237
+ ms: smoke.durationMs,
238
+ bytes: smoke.bytes,
239
+ });
240
+ }
241
+ else {
242
+ marker(process.stdout, 'SHIM-FAIL', {
243
+ bridge: bridge.label,
244
+ exitCode: smoke.exitCode,
245
+ ms: smoke.durationMs,
246
+ bytes: smoke.bytes,
247
+ timedOut: smoke.timedOut,
248
+ });
249
+ const stderrTail = smoke.stderr.trim().slice(-1500);
250
+ logLine(process.stderr, `pre-attach smoke test FAILED. The CLI is refusing to attach to ${meetingId} ` +
251
+ `because your reply bridge (${bridge.label}) is broken — attaching anyway would submit ` +
252
+ `"shim exited N" garbage every turn and stall the meeting. Fix it and re-run.`);
253
+ if (stderrTail) {
254
+ process.stderr.write(`[bridge stderr tail]\n${stderrTail}\n`);
255
+ }
256
+ else if (bridge.kind === 'exec') {
257
+ const winHint = process.platform === 'win32'
258
+ ? ' On Windows: confirm `bash` is on PATH (git-bash or WSL). The CLI prefers bash for `.sh` scripts but falls back to cmd.exe, which cannot interpret `#!/bin/bash` shebangs.'
259
+ : '';
260
+ logLine(process.stderr, 'bridge wrote nothing to stderr; common causes: command not found (exit 127), ' +
261
+ 'wrong shebang, missing CLI dependency, sandbox blocking the spawn, or the shim ' +
262
+ 'silenced its own stderr (`2>/dev/null`).' +
263
+ winHint +
264
+ ' Try: `echo \'{"taskId":"x","turnNumber":0}\' | ' +
265
+ bridge.exec +
266
+ '` in your terminal first; or switch to a built-in adapter with `--via echo` (always works).');
267
+ }
268
+ else {
269
+ logLine(process.stderr, `--via ${bridge.descriptor.name} adapter failed; if its required binary (${bridge.descriptor.requiresBinary ?? 'n/a'}) ` +
270
+ 'is not installed, fall back to `--via echo` (always works) or `--via stdin` (interactive).');
271
+ }
272
+ marker(process.stdout, 'DONE', {
273
+ meeting: meetingId,
274
+ turns: 0,
275
+ polls: 0,
276
+ reason: 'shim_broken',
277
+ });
278
+ cleanupSignals();
279
+ return 2;
280
+ }
281
+ }
127
282
  let turnsHandled = 0;
128
283
  let pollIter = 0;
284
+ let consecutiveShimFailures = 0;
285
+ const maxShimFailures = opts.maxShimFailures ?? 2;
129
286
  let lastActivityAt = Date.now();
130
287
  let exitReason = 'unknown';
131
288
  try {
@@ -192,23 +349,36 @@ export async function cmdRun(opts) {
192
349
  let isDone = false;
193
350
  let durationMs = 0;
194
351
  let failed = false;
195
- if (opts.exec) {
196
- // Only start the heartbeat when a real shim is going to run —
197
- // it can take minutes for an LLM-backed reply, and the lease
198
- // would otherwise expire mid-shim. The default-reply path is
352
+ if (bridge) {
353
+ // Only start the heartbeat when a real bridge is going to run —
354
+ // an LLM-backed reply can take minutes and the lease would
355
+ // otherwise expire mid-call. The default-reply path is
199
356
  // synchronous and never needs a lease extension.
200
357
  const hb = startHeartbeat(ctx, meetingId, state.agentId, turnNumber);
201
358
  try {
202
- const shim = await runShim(opts.exec, envelope, {
359
+ const result = await runBridge(bridge, envelope, {
203
360
  timeoutMs: opts.shimTimeoutMs ?? 600_000,
361
+ smokeTest: false,
204
362
  });
205
- durationMs = shim.durationMs;
206
- if (shim.exitCode !== 0) {
363
+ durationMs = result.durationMs;
364
+ if (result.exitCode !== 0 || result.stdout.trim().length === 0) {
207
365
  failed = true;
208
- content = `shim exited ${shim.exitCode}\n\n${shim.stderr.slice(0, 1_000)}`;
366
+ consecutiveShimFailures++;
367
+ // Embed enough context for the OTHER agents (and the human
368
+ // dashboard) to understand WHY this turn failed. Plain "shim
369
+ // exited 1" with no stderr is exactly what stalled
370
+ // meet_xmT7T3CapHPTCSUCaropuw.
371
+ const stderrTail = result.stderr.trim().slice(-2_000);
372
+ const emptyNote = result.exitCode === 0 ? ' (exit 0 but empty stdout)' : '';
373
+ content =
374
+ `bridge ${bridge.label} exited ${result.exitCode}${result.timedOut ? ' (timed out)' : ''}${emptyNote}\n\n` +
375
+ (stderrTail
376
+ ? `stderr (last 2 KiB):\n\`\`\`\n${stderrTail}\n\`\`\``
377
+ : '(no stderr captured; bridge may have silenced stderr or been killed before writing)');
209
378
  }
210
379
  else {
211
- const raw = shim.stdout.trim() || '(empty response)';
380
+ consecutiveShimFailures = 0;
381
+ const raw = result.stdout.trim() || '(empty response)';
212
382
  isDone = SIGNAL_DONE_MARKER.test(raw);
213
383
  content = raw.replace(SIGNAL_DONE_MARKER, '').trim() || raw;
214
384
  }
@@ -261,6 +431,17 @@ export async function cmdRun(opts) {
261
431
  exitReason = 'shim_done';
262
432
  return 0;
263
433
  }
434
+ if (failed && consecutiveShimFailures >= maxShimFailures) {
435
+ // Don't keep cycling identical garbage. The other participants
436
+ // (and the coordinator's similarity-loop guard) would otherwise
437
+ // see N copies of "shim exited 1" before a recap fires.
438
+ logLine(process.stderr, `bridge has failed ${consecutiveShimFailures} consecutive times (--max-shim-failures=${maxShimFailures}); ` +
439
+ 'exiting so the meeting can stop being polluted with broken-bridge turns. ' +
440
+ 'Fix your reply bridge and re-run `agentspeak-cli join <invite>`. ' +
441
+ 'Falling back to `--via echo` will always succeed if you just need to keep the meeting moving.');
442
+ exitReason = 'shim_broken';
443
+ return 2;
444
+ }
264
445
  }
265
446
  logLine(process.stdout, `stopped on signal after handling ${turnsHandled} turn(s)`);
266
447
  exitReason = 'signal';
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EACL,cAAc,GAIf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AA0ErC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AASnF,MAAM,kBAAkB,GAAG,sCAAsC,CAAC;AAElE,SAAS,EAAE;IACT,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,OAAO,CAAC,MAA0B,EAAE,GAAW;IACtD,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,MAAM,CAAC,MAA0B,EAAE,IAAY,EAAE,KAA4D;IACpH,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;SAC9C,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;SAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC;AACvC,CAAC;AAOD;;;;;;;;;GASG;AACH,SAAS,kBAAkB,CAAC,SAAiB,EAAE,OAAe;IAC5D,OAAO;QACL,MAAM,EAAE,OAAO;QACf,UAAU,EAAE,CAAC;QACb,SAAS;QACT,OAAO;QACP,IAAI,EAAE,UAAU;QAChB,YAAY,EACV,4FAA4F;YAC5F,sFAAsF;QACxF,aAAa,EAAE,EAAE;QACjB,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;KAClD,CAAC;AACJ,CAAC;AAaD,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,2EAA2E;YACzE,iDAAiD,CACpD,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,UAAU,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC;IACxE,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACzE,CAAC;IACD,6DAA6D;IAC7D,oEAAoE;IACpE,kEAAkE;IAClE,yDAAyD;IACzD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,EAAE,SAAS,EAAE,GAAG,aAAa,EAAE,CAAC;QACtC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,SAAS,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACrF,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,MAAc,EACd,QAA0B,EAC1B,IAA+C;IAE/C,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;YAC/B,QAAQ;YACR,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE;QAC7C,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS;QAC1B,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;KACjE,CAAC,CAAC;IACH,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,kBAAkB,CAC/B,MAAc,EACd,SAAiB,EACjB,OAAe,EACf,SAAiB;IAEjB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IACxE,OAAO;QACL,EAAE;QACF,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,eAAe,CAC5B,GAAuC,EACvC,SAAiB,EACjB,OAAe,EACf,KAAyB,EACzB,IAAY;IAEZ,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,8DAA8D;SACvE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CACxB,GAAG,EACH,iBAAiB,SAAS,WAAW,EACrC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CACzB,CAAC;QACF,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,KAAK,UAAU,IAAI,GAAG,EAAE,IAAI,KAAK,iBAAiB;YACtE,CAAC,CAAC,GAAG,CAAC,IAAI;YACV,CAAC,CAAC,UAAU,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,wDAAwD;iBACjE,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,6DAA6D;iBACtE,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAChF,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACtF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAa;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,oBAAoB,EAAE,CAAC;IAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,mEAAmE;YACjE,2CAA2C,CAC9C,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,sBAAsB,SAAS,+CAA+C,CAC/E,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC;IACtC,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;IAEvD,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,MAAM,KAAK,GAAG,CAAC,GAAmB,EAAE,EAAE;QACpC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,uCAAuC,CAAC,CAAC;QAChF,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7B,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,OAAO,CACL,OAAO,CAAC,MAAM,EACd,oBAAoB,SAAS,OAAO,KAAK,CAAC,OAAO,qDAAqD,CACvG,CAAC;IAEF,IAAI,MAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,OAAO,CACL,OAAO,CAAC,MAAM,EACd,gHAAgH;YAC9G,6FAA6F,CAChG,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,qEAAqE;IACrE,oEAAoE;IACpE,MAAM,QAAQ,GAAG,MAAM,eAAe,CACpC,GAAG,EACH,SAAS,EACT,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,aAAa,EACnB,QAAQ,CACT,CAAC;IACF,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;QAC7B,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,KAAK,CAAC,OAAO;QACpB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,MAAM;KACtB,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,CACL,OAAO,CAAC,MAAM,EACd,8BAA8B,QAAQ,CAAC,MAAM,IAAI,SAAS,IAAI;YAC5D,wGAAwG;YACxG,qFAAqF,CACxF,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,qEAAqE;IACrE,kEAAkE;IAClE,+DAA+D;IAC/D,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAClC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC;QACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,eAAe,EAAE,EAAE,oCAAoC,MAAM,CAAC,KAAK,aAAa,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CACxH,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACzF,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE;gBAChC,MAAM,EAAE,MAAM,CAAC,KAAK;gBACpB,EAAE,EAAE,KAAK,CAAC,UAAU;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE;gBAClC,MAAM,EAAE,MAAM,CAAC,KAAK;gBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,EAAE,EAAE,KAAK,CAAC,UAAU;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YACpD,OAAO,CACL,OAAO,CAAC,MAAM,EACd,kEAAkE,SAAS,GAAG;gBAC5E,8BAA8B,MAAM,CAAC,KAAK,8CAA8C;gBACxF,8EAA8E,CACjF,CAAC;YACF,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,UAAU,IAAI,CAAC,CAAC;YAChE,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAClC,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,OAAO;oBAC1B,CAAC,CAAC,4KAA4K;oBAC9K,CAAC,CAAC,EAAE,CAAC;gBACT,OAAO,CACL,OAAO,CAAC,MAAM,EACd,+EAA+E;oBAC7E,iFAAiF;oBACjF,0CAA0C;oBAC1C,OAAO;oBACP,kDAAkD;oBAClD,MAAM,CAAC,IAAI;oBACX,6FAA6F,CAChG,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CACL,OAAO,CAAC,MAAM,EACd,SAAS,MAAM,CAAC,UAAU,CAAC,IAAI,4CAA4C,MAAM,CAAC,UAAU,CAAC,cAAc,IAAI,KAAK,IAAI;oBACtH,4FAA4F,CAC/F,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;gBAC7B,OAAO,EAAE,SAAS;gBAClB,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,aAAa;aACtB,CAAC,CAAC;YACH,cAAc,EAAE,CAAC;YACjB,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,uBAAuB,GAAG,CAAC,CAAC;IAChC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;IAClD,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChC,IAAI,UAAU,GAA4J,SAAS,CAAC;IAEpL,IAAI,CAAC;QACL,OAAO,CAAC,aAAa,EAAE,CAAC;YACtB,IAAI,YAAY,IAAI,QAAQ,EAAE,CAAC;gBAC7B,OAAO,CACL,OAAO,CAAC,MAAM,EACd,+BAA+B,YAAY,uBAAuB,QAAQ,YAAY,CACvF,CAAC;gBACF,UAAU,GAAG,YAAY,CAAC;gBAC1B,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,SAAS,EAAE,CAAC;gBAC5C,OAAO,CACL,OAAO,CAAC,MAAM,EACd,aAAa,IAAI,CAAC,cAAc,IAAI,EAAE,oFAAoF,CAC3H,CAAC;gBACF,UAAU,GAAG,UAAU,CAAC;gBACxB,OAAO,CAAC,CAAC;YACX,CAAC;YAED,IAAI,MAAM,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAClD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAClD,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,SAAS,qBAAqB,CAAC,CAAC;oBACnE,UAAU,GAAG,mBAAmB,CAAC;oBACjC,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gBACjI,MAAM,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACjC,CAAC;YACD,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzC,OAAO,CACL,OAAO,CAAC,MAAM,EACd,cAAc,MAAM,CAAC,MAAM,+BAA+B,YAAY,UAAU,CACjF,CAAC;gBACF,UAAU,GAAI,MAAM,CAAC,MAA4B,CAAC;gBAClD,OAAO,CAAC,CAAC;YACX,CAAC;YAED,IAAI,IAAI,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACnE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,4BAA4B,GAAG,EAAE,CAAC,CAAC;gBAC3D,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC/C,SAAS;YACX,CAAC;YAED,QAAQ,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC1C,kEAAkE;gBAClE,oEAAoE;gBACpE,kEAAkE;gBAClE,oEAAoE;gBACpE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;oBAC7B,OAAO,EAAE,SAAS;oBAClB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,IAAI;oBACV,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAuD,CAAC;YAC9E,MAAM,UAAU,GAAG,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtF,MAAM,MAAM,GAAG,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9E,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,UAAU,YAAY,MAAM,iBAAiB,CAAC,CAAC;YAExF,IAAI,OAAe,CAAC;YACpB,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,IAAI,MAAM,EAAE,CAAC;gBACX,gEAAgE;gBAChE,2DAA2D;gBAC3D,uDAAuD;gBACvD,iDAAiD;gBACjD,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBACrE,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,QAA4B,EAAE;wBACnE,SAAS,EAAE,IAAI,CAAC,aAAa,IAAI,OAAO;wBACxC,SAAS,EAAE,KAAK;qBACjB,CAAC,CAAC;oBACH,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;oBAC/B,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC/D,MAAM,GAAG,IAAI,CAAC;wBACd,uBAAuB,EAAE,CAAC;wBAC1B,2DAA2D;wBAC3D,6DAA6D;wBAC7D,mDAAmD;wBACnD,+BAA+B;wBAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;wBACtD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC5E,OAAO;4BACL,UAAU,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,MAAM;gCAC1G,CAAC,UAAU;oCACT,CAAC,CAAC,iCAAiC,UAAU,UAAU;oCACvD,CAAC,CAAC,qFAAqF,CAAC,CAAC;oBAC/F,CAAC;yBAAM,CAAC;wBACN,uBAAuB,GAAG,CAAC,CAAC;wBAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,kBAAkB,CAAC;wBACvD,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACtC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;oBAC9D,CAAC;gBACH,CAAC;wBAAS,CAAC;oBACT,EAAE,CAAC,IAAI,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GACP,IAAI,CAAC,YAAY;oBACjB,SAAS,KAAK,CAAC,OAAO,YAAY,UAAU,4CAA4C,CAAC;gBAC3F,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;YAC9D,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,SAAS,SAAS,EAAE;oBACvD,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,MAAM;oBACN,UAAU;oBACV,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW;oBACvC,eAAe,EAAE,UAAU;oBAC3B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;oBACnC,SAAS,EAAE;wBACT;4BACE,IAAI,EAAE,MAAM;4BACZ,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe;4BACpD,OAAO;yBACR;qBACF;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,0BAA0B,UAAU,KAAK,GAAG,wBAAwB,CAAC,CAAC;gBAC9F,8DAA8D;gBAC9D,iEAAiE;gBACjE,SAAS;YACX,CAAC;YAED,YAAY,EAAE,CAAC;YACf,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;gBAC9B,OAAO,EAAE,SAAS;gBAClB,CAAC,EAAE,UAAU;gBACb,EAAE,EAAE,UAAU;gBACd,IAAI,EAAE,MAAM;gBACZ,MAAM;aACP,CAAC,CAAC;YACH,OAAO,CACL,OAAO,CAAC,MAAM,EACd,kBAAkB,UAAU,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,CACjF,CAAC;YAEF,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;gBAChE,UAAU,GAAG,WAAW,CAAC;gBACzB,OAAO,CAAC,CAAC;YACX,CAAC;YAED,IAAI,MAAM,IAAI,uBAAuB,IAAI,eAAe,EAAE,CAAC;gBACzD,+DAA+D;gBAC/D,gEAAgE;gBAChE,wDAAwD;gBACxD,OAAO,CACL,OAAO,CAAC,MAAM,EACd,qBAAqB,uBAAuB,2CAA2C,eAAe,KAAK;oBACzG,2EAA2E;oBAC3E,mEAAmE;oBACnE,+FAA+F,CAClG,CAAC;gBACF,UAAU,GAAG,aAAa,CAAC;gBAC3B,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,oCAAoC,YAAY,UAAU,CAAC,CAAC;QACpF,UAAU,GAAG,QAAQ,CAAC;QACtB,OAAO,CAAC,CAAC;IACT,CAAC;YAAS,CAAC;QACT,cAAc,EAAE,CAAC;QACjB,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;YAC7B,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
package/dist/exec.d.ts CHANGED
@@ -8,17 +8,57 @@
8
8
  * the meeting protocol, not the inference. The shim is one short bash
9
9
  * file the operator already maintains.
10
10
  *
11
- * Stderr passes through unchanged so users can see their LLM client's
12
- * own logs in real time.
11
+ * Stderr is BOTH tee'd to the parent process (so a watching human still
12
+ * sees the LLM client's own logs in real time) AND captured into a
13
+ * bounded in-memory buffer that the caller embeds in the failure
14
+ * artifact when the shim exits non-zero. Without this capture, failed
15
+ * turns get submitted as just "shim exited 1" with no actionable
16
+ * context, which is exactly what stalled meet_xmT7T3CapHPTCSUCaropuw.
13
17
  */
14
18
  export interface ExecResult {
15
19
  stdout: string;
16
20
  stderr: string;
17
21
  exitCode: number;
18
22
  durationMs: number;
23
+ timedOut: boolean;
19
24
  }
20
- export declare function runShim(command: string, envelope: unknown, opts?: {
25
+ export interface RunShimOpts {
21
26
  timeoutMs?: number;
22
27
  env?: Record<string, string>;
23
- }): Promise<ExecResult>;
28
+ /** Cap on captured stderr bytes. Defaults to 16 KiB. */
29
+ stderrCaptureBytes?: number;
30
+ /**
31
+ * If false, do not tee stderr to the parent process (useful for the
32
+ * pre-attach smoke test where we want to render a single structured
33
+ * marker instead of leaking the shim's internal chatter).
34
+ */
35
+ teeStderr?: boolean;
36
+ }
37
+ export declare function runShim(command: string, envelope: unknown, opts?: RunShimOpts): Promise<ExecResult>;
38
+ interface SpawnPlan {
39
+ cmd: string;
40
+ args: readonly string[];
41
+ useShell: boolean | string;
42
+ }
43
+ /**
44
+ * Pick the right spawn arguments for a user-supplied shim command,
45
+ * branching on platform.
46
+ *
47
+ * Why this matters: on POSIX, `spawn(cmd, { shell: true })` invokes
48
+ * /bin/sh which knows how to run `./reply.sh` and respect a
49
+ * `#!/usr/bin/env bash` shebang. On Windows, `shell: true` invokes
50
+ * cmd.exe — which CANNOT run a bash script and CANNOT honour the
51
+ * shebang line. Yaow's failures came down to exactly this: his
52
+ * reply.sh started with `#!/bin/bash`, and the CLI ran it under
53
+ * cmd.exe, producing a silent "command not recognised" / exit 1.
54
+ *
55
+ * Branching:
56
+ * - Non-Windows: use shell:true (current behaviour, well-tested).
57
+ * - Windows + bash-shaped command (`./foo.sh`, `bash foo`, `sh foo`,
58
+ * `*.sh`): try to find bash on PATH (git-bash, WSL, MSYS); if
59
+ * found, spawn `bash -c "<command>"` directly.
60
+ * - Windows everything-else: fall back to cmd.exe via shell:true.
61
+ */
62
+ export declare function pickSpawn(command: string): SpawnPlan;
63
+ export {};
24
64
  //# sourceMappingURL=exec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,EACjB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAO,GAC9D,OAAO,CAAC,UAAU,CAAC,CAiCrB"}
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,wDAAwD;IACxD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,EACjB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,UAAU,CAAC,CAgErB;AAED,UAAU,SAAS;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAYpD"}
package/dist/exec.js CHANGED
@@ -1,19 +1,42 @@
1
1
  import { spawn } from 'node:child_process';
2
+ import { which } from './adapters/shell-helper.js';
2
3
  export async function runShim(command, envelope, opts = {}) {
3
4
  const start = Date.now();
4
- const proc = spawn(command, {
5
- shell: true,
5
+ const captureCap = opts.stderrCaptureBytes ?? 16 * 1024;
6
+ const tee = opts.teeStderr ?? true;
7
+ const spawnOpts = pickSpawn(command);
8
+ const proc = spawn(spawnOpts.cmd, spawnOpts.args, {
9
+ shell: spawnOpts.useShell,
6
10
  env: { ...process.env, ...opts.env },
7
- stdio: ['pipe', 'pipe', 'inherit'],
11
+ stdio: ['pipe', 'pipe', 'pipe'],
8
12
  });
9
13
  let stdout = '';
10
14
  proc.stdout.on('data', (chunk) => {
11
15
  stdout += chunk.toString('utf8');
12
16
  });
17
+ let stderrBuf = '';
18
+ proc.stderr.on('data', (chunk) => {
19
+ const text = chunk.toString('utf8');
20
+ if (stderrBuf.length < captureCap) {
21
+ const remaining = captureCap - stderrBuf.length;
22
+ stderrBuf +=
23
+ text.length <= remaining ? text : text.slice(0, remaining) + '\n[stderr truncated]';
24
+ }
25
+ if (tee) {
26
+ try {
27
+ process.stderr.write(chunk);
28
+ }
29
+ catch {
30
+ // best-effort; never crash the loop on a tee failure
31
+ }
32
+ }
33
+ });
13
34
  proc.stdin.write(JSON.stringify(envelope));
14
35
  proc.stdin.end();
36
+ let timedOut = false;
15
37
  const timer = opts.timeoutMs
16
38
  ? setTimeout(() => {
39
+ timedOut = true;
17
40
  try {
18
41
  proc.kill('SIGTERM');
19
42
  }
@@ -24,10 +47,51 @@ export async function runShim(command, envelope, opts = {}) {
24
47
  : null;
25
48
  const exitCode = await new Promise((resolve) => {
26
49
  proc.on('exit', (code) => resolve(code ?? 1));
27
- proc.on('error', () => resolve(1));
50
+ proc.on('error', (err) => {
51
+ stderrBuf += `\n[spawn error] ${err instanceof Error ? err.message : String(err)}`;
52
+ resolve(1);
53
+ });
28
54
  });
29
55
  if (timer)
30
56
  clearTimeout(timer);
31
- return { stdout, stderr: '', exitCode, durationMs: Date.now() - start };
57
+ return {
58
+ stdout,
59
+ stderr: stderrBuf,
60
+ exitCode,
61
+ durationMs: Date.now() - start,
62
+ timedOut,
63
+ };
64
+ }
65
+ /**
66
+ * Pick the right spawn arguments for a user-supplied shim command,
67
+ * branching on platform.
68
+ *
69
+ * Why this matters: on POSIX, `spawn(cmd, { shell: true })` invokes
70
+ * /bin/sh which knows how to run `./reply.sh` and respect a
71
+ * `#!/usr/bin/env bash` shebang. On Windows, `shell: true` invokes
72
+ * cmd.exe — which CANNOT run a bash script and CANNOT honour the
73
+ * shebang line. Yaow's failures came down to exactly this: his
74
+ * reply.sh started with `#!/bin/bash`, and the CLI ran it under
75
+ * cmd.exe, producing a silent "command not recognised" / exit 1.
76
+ *
77
+ * Branching:
78
+ * - Non-Windows: use shell:true (current behaviour, well-tested).
79
+ * - Windows + bash-shaped command (`./foo.sh`, `bash foo`, `sh foo`,
80
+ * `*.sh`): try to find bash on PATH (git-bash, WSL, MSYS); if
81
+ * found, spawn `bash -c "<command>"` directly.
82
+ * - Windows everything-else: fall back to cmd.exe via shell:true.
83
+ */
84
+ export function pickSpawn(command) {
85
+ if (process.platform !== 'win32') {
86
+ return { cmd: command, args: [], useShell: true };
87
+ }
88
+ const looksBash = /(?:^|\s)(?:bash|sh)\s|\.sh(\b|\s|$)|^\.\//i.test(command);
89
+ if (looksBash) {
90
+ const bash = which('bash') ?? which('git-bash') ?? null;
91
+ if (bash) {
92
+ return { cmd: bash, args: ['-c', command], useShell: false };
93
+ }
94
+ }
95
+ return { cmd: command, args: [], useShell: true };
32
96
  }
33
97
  //# sourceMappingURL=exec.js.map
package/dist/exec.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAuB3C,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAAe,EACf,QAAiB,EACjB,OAA6D,EAAE;IAE/D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE;QAC1B,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;QACpC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;KACnC,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAEjB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS;QAC1B,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;QACpB,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACrD,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK;QAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"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"}