agentspeak-cli 0.9.0 → 0.10.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 (39) hide show
  1. package/dist/adapters/claude.d.ts +2 -1
  2. package/dist/adapters/claude.d.ts.map +1 -1
  3. package/dist/adapters/claude.js +11 -0
  4. package/dist/adapters/claude.js.map +1 -1
  5. package/dist/adapters/cursor-agent.d.ts +2 -1
  6. package/dist/adapters/cursor-agent.d.ts.map +1 -1
  7. package/dist/adapters/cursor-agent.js +11 -0
  8. package/dist/adapters/cursor-agent.js.map +1 -1
  9. package/dist/adapters/hermes.d.ts +4 -8
  10. package/dist/adapters/hermes.d.ts.map +1 -1
  11. package/dist/adapters/hermes.js +62 -10
  12. package/dist/adapters/hermes.js.map +1 -1
  13. package/dist/adapters/index.d.ts +14 -0
  14. package/dist/adapters/index.d.ts.map +1 -1
  15. package/dist/adapters/index.js +12 -6
  16. package/dist/adapters/index.js.map +1 -1
  17. package/dist/adapters/openclaw.d.ts +4 -8
  18. package/dist/adapters/openclaw.d.ts.map +1 -1
  19. package/dist/adapters/openclaw.js +58 -9
  20. package/dist/adapters/openclaw.js.map +1 -1
  21. package/dist/adapters/shell-helper.d.ts +16 -0
  22. package/dist/adapters/shell-helper.d.ts.map +1 -1
  23. package/dist/adapters/shell-helper.js +48 -0
  24. package/dist/adapters/shell-helper.js.map +1 -1
  25. package/dist/auto-shim.d.ts +19 -0
  26. package/dist/auto-shim.d.ts.map +1 -1
  27. package/dist/auto-shim.js +84 -33
  28. package/dist/auto-shim.js.map +1 -1
  29. package/dist/commands/mcp.js +1 -1
  30. package/dist/commands/mcp.js.map +1 -1
  31. package/dist/commands/run.d.ts.map +1 -1
  32. package/dist/commands/run.js +100 -20
  33. package/dist/commands/run.js.map +1 -1
  34. package/dist/exec.d.ts.map +1 -1
  35. package/dist/exec.js +24 -1
  36. package/dist/exec.js.map +1 -1
  37. package/dist/index.js +1 -1
  38. package/dist/index.js.map +1 -1
  39. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import type { Adapter } from './index.js';
1
+ import type { Adapter, ProbeResult } from './index.js';
2
2
  /**
3
3
  * `--via claude` — Anthropic Claude Code CLI.
4
4
  *
@@ -10,4 +10,5 @@ import type { Adapter } from './index.js';
10
10
  * pass the pre-attach gate.
11
11
  */
12
12
  export declare const claudeAdapter: Adapter;
13
+ export declare function claudeProbe(): Promise<ProbeResult>;
13
14
  //# sourceMappingURL=claude.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,YAAY,CAAC;AAGzD;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,OAmB3B,CAAC"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAiB,WAAW,EAAE,MAAM,YAAY,CAAC;AAGtE;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,OAmB3B,CAAC;AAEF,wBAAsB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAWxD"}
@@ -26,6 +26,17 @@ export const claudeAdapter = async (ctx) => {
26
26
  timeoutMs: ctx.timeoutMs,
27
27
  });
28
28
  };
29
+ export async function claudeProbe() {
30
+ const bin = which('claude');
31
+ if (!bin) {
32
+ return {
33
+ ok: false,
34
+ detail: 'claude binary not found on PATH. ' +
35
+ 'Install with `npm i -g @anthropic-ai/claude-code`, or pass --via echo / --via stdin.',
36
+ };
37
+ }
38
+ return { ok: true, detail: `found claude at ${bin}; will use \`claude -p\` per turn.` };
39
+ }
29
40
  function ok(body, start) {
30
41
  return { stdout: body, stderr: '', exitCode: 0, durationMs: Date.now() - start, timedOut: false };
31
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,aAAa,GAAY,KAAK,EAAE,GAAG,EAAE,EAAE;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,aAAa,CAClB,QAAQ,EACR,GAAG,EACH,iGAAiG,CAClG,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;QACd,GAAG;QACH,IAAI,EAAE,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnD,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,SAAS,EAAE,CAAC,IAAY,EAAE,KAAa;IACrC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACpG,CAAC"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,aAAa,GAAY,KAAK,EAAE,GAAG,EAAE,EAAE;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,aAAa,CAClB,QAAQ,EACR,GAAG,EACH,iGAAiG,CAClG,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;QACd,GAAG;QACH,IAAI,EAAE,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnD,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EACJ,mCAAmC;gBACnC,sFAAsF;SACzF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,GAAG,oCAAoC,EAAE,CAAC;AAC1F,CAAC;AAED,SAAS,EAAE,CAAC,IAAY,EAAE,KAAa;IACrC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACpG,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Adapter } from './index.js';
1
+ import type { Adapter, ProbeResult } from './index.js';
2
2
  /**
3
3
  * `--via cursor-agent` — Cursor Agent CLI.
4
4
  *
@@ -7,4 +7,5 @@ import type { Adapter } from './index.js';
7
7
  * Cursor account and selected model — no API key plumbing required.
8
8
  */
9
9
  export declare const cursorAgentAdapter: Adapter;
10
+ export declare function cursorAgentProbe(): Promise<ProbeResult>;
10
11
  //# sourceMappingURL=cursor-agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-agent.d.ts","sourceRoot":"","sources":["../../src/adapters/cursor-agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,YAAY,CAAC;AAGzD;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,OAmBhC,CAAC"}
1
+ {"version":3,"file":"cursor-agent.d.ts","sourceRoot":"","sources":["../../src/adapters/cursor-agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAiB,WAAW,EAAE,MAAM,YAAY,CAAC;AAGtE;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,OAmBhC,CAAC;AAEF,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC,CAW7D"}
@@ -23,6 +23,17 @@ export const cursorAgentAdapter = async (ctx) => {
23
23
  timeoutMs: ctx.timeoutMs,
24
24
  });
25
25
  };
26
+ export async function cursorAgentProbe() {
27
+ const bin = which('cursor-agent');
28
+ if (!bin) {
29
+ return {
30
+ ok: false,
31
+ detail: 'cursor-agent binary not found on PATH. ' +
32
+ 'Enable it via Cursor > Settings > Agent CLI, then re-run.',
33
+ };
34
+ }
35
+ return { ok: true, detail: `found cursor-agent at ${bin}; will use \`cursor-agent --print\` per turn.` };
36
+ }
26
37
  function ok(body, start) {
27
38
  return { stdout: body, stderr: '', exitCode: 0, durationMs: Date.now() - start, timedOut: false };
28
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-agent.js","sourceRoot":"","sources":["../../src/adapters/cursor-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAY,KAAK,EAAE,GAAG,EAAE,EAAE;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,aAAa,CAClB,cAAc,EACd,GAAG,EACH,iFAAiF,CAClF,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;QACd,GAAG;QACH,IAAI,EAAE,CAAC,SAAS,CAAC;QACjB,WAAW,EAAE,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnD,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,SAAS,EAAE,CAAC,IAAY,EAAE,KAAa;IACrC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACpG,CAAC"}
1
+ {"version":3,"file":"cursor-agent.js","sourceRoot":"","sources":["../../src/adapters/cursor-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAY,KAAK,EAAE,GAAG,EAAE,EAAE;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,aAAa,CAClB,cAAc,EACd,GAAG,EACH,iFAAiF,CAClF,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;QACd,GAAG;QACH,IAAI,EAAE,CAAC,SAAS,CAAC;QACjB,WAAW,EAAE,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnD,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EACJ,yCAAyC;gBACzC,2DAA2D;SAC9D,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,yBAAyB,GAAG,+CAA+C,EAAE,CAAC;AAC3G,CAAC;AAED,SAAS,EAAE,CAAC,IAAY,EAAE,KAAa;IACrC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACpG,CAAC"}
@@ -1,10 +1,6 @@
1
- import type { Adapter } from './index.js';
2
- /**
3
- * `--via hermes` — Hermes runtime CLI bridge.
4
- *
5
- * Invocation: `hermes prompt` reads the prompt on stdin and prints the
6
- * agent's reply. Detection prefers `which hermes` and falls back to
7
- * `$HERMES_HOME/bin/hermes` so a pinned-install runtime still works.
8
- */
1
+ import type { Adapter, ProbeResult } from './index.js';
9
2
  export declare const hermesAdapter: Adapter;
3
+ export declare function hermesProbe(): Promise<ProbeResult>;
4
+ /** Test-only: clear the cached verb between unit tests. */
5
+ export declare function __resetCachedVerb(): void;
10
6
  //# sourceMappingURL=hermes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hermes.d.ts","sourceRoot":"","sources":["../../src/adapters/hermes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,YAAY,CAAC;AAGzD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,OAuB3B,CAAC"}
1
+ {"version":3,"file":"hermes.d.ts","sourceRoot":"","sources":["../../src/adapters/hermes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAiB,WAAW,EAAE,MAAM,YAAY,CAAC;AA+BtE,eAAO,MAAM,aAAa,EAAE,OAiC3B,CAAC;AAEF,wBAAsB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAqBxD;AAMD,2DAA2D;AAC3D,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
@@ -1,33 +1,85 @@
1
1
  import { renderPromptFromEnvelope } from './index.js';
2
- import { binaryMissing, shellOut, which } from './shell-helper.js';
2
+ import { binaryMissing, pickSubcommand, probeHelp, shellOut, which } from './shell-helper.js';
3
3
  /**
4
4
  * `--via hermes` — Hermes runtime CLI bridge.
5
5
  *
6
- * Invocation: `hermes prompt` reads the prompt on stdin and prints the
7
- * agent's reply. Detection prefers `which hermes` and falls back to
8
- * `$HERMES_HOME/bin/hermes` so a pinned-install runtime still works.
6
+ * Hermes does NOT ship a `prompt` subcommand (the previous adapter
7
+ * version assumed it did, which silently passed every smoke test and
8
+ * exit-2'd every real turn see meet_qgCvGEsNjmUiY0hUwR9F6w). The
9
+ * actual surface is `hermes chat`. We probe `--help` once on attach
10
+ * and pick the first matching subcommand from KNOWN_VERBS so future
11
+ * Hermes versions that rename the chat command keep working.
9
12
  */
13
+ const KNOWN_VERBS = ['chat', 'prompt', 'reply', 'message'];
14
+ let cachedVerb = null;
15
+ function locateBinary() {
16
+ let bin = which('hermes');
17
+ if (!bin && process.env.HERMES_HOME) {
18
+ bin = `${process.env.HERMES_HOME.replace(/\/$/, '')}/bin/hermes`;
19
+ }
20
+ return bin;
21
+ }
22
+ async function detectVerb(bin) {
23
+ if (cachedVerb)
24
+ return cachedVerb;
25
+ const help = await probeHelp(bin);
26
+ cachedVerb = pickSubcommand(help, KNOWN_VERBS);
27
+ return cachedVerb;
28
+ }
10
29
  export const hermesAdapter = async (ctx) => {
11
30
  const start = Date.now();
12
31
  if (ctx.smokeTest) {
13
32
  return ok('[smoke ok]', start);
14
33
  }
15
- let bin = which('hermes');
16
- if (!bin && process.env.HERMES_HOME) {
17
- const candidate = `${process.env.HERMES_HOME.replace(/\/$/, '')}/bin/hermes`;
18
- bin = candidate;
19
- }
34
+ const bin = locateBinary();
20
35
  if (!bin) {
21
36
  return binaryMissing('hermes', ctx, 'Set HERMES_HOME or put the `hermes` binary on PATH; or pass --via stdin / --via echo.');
22
37
  }
38
+ const verb = await detectVerb(bin);
39
+ if (!verb) {
40
+ return {
41
+ stdout: '',
42
+ stderr: `hermes adapter: this Hermes install does not expose any subcommand AgentSpeak knows how to drive ` +
43
+ `(tried: ${KNOWN_VERBS.join(', ')}). Run \`hermes --help\` to see the actual subcommand list, ` +
44
+ `then pass --via stdin and pipe the prompt yourself, or open an issue at ` +
45
+ `https://github.com/PhilipAD/agentspeak/issues with your hermes --help output.`,
46
+ exitCode: 127,
47
+ durationMs: Date.now() - start,
48
+ timedOut: false,
49
+ };
50
+ }
23
51
  return shellOut({
24
52
  bin,
25
- args: ['prompt'],
53
+ args: [verb],
26
54
  promptStdin: renderPromptFromEnvelope(ctx.envelope),
27
55
  timeoutMs: ctx.timeoutMs,
28
56
  });
29
57
  };
58
+ export async function hermesProbe() {
59
+ const bin = locateBinary();
60
+ if (!bin) {
61
+ return {
62
+ ok: false,
63
+ detail: 'hermes binary not found on PATH and HERMES_HOME unset. ' +
64
+ 'Install hermes-cli or pass --via stdin / --via echo.',
65
+ };
66
+ }
67
+ const verb = await detectVerb(bin);
68
+ if (!verb) {
69
+ return {
70
+ ok: false,
71
+ detail: `hermes is installed at ${bin} but its --help output does not advertise any of the ` +
72
+ `subcommands AgentSpeak knows how to drive (${KNOWN_VERBS.join(', ')}). ` +
73
+ `Switch to --via stdin or pipe through your own --exec shim.`,
74
+ };
75
+ }
76
+ return { ok: true, detail: `found hermes at ${bin}; will use \`hermes ${verb}\` per turn.` };
77
+ }
30
78
  function ok(body, start) {
31
79
  return { stdout: body, stderr: '', exitCode: 0, durationMs: Date.now() - start, timedOut: false };
32
80
  }
81
+ /** Test-only: clear the cached verb between unit tests. */
82
+ export function __resetCachedVerb() {
83
+ cachedVerb = null;
84
+ }
33
85
  //# sourceMappingURL=hermes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/adapters/hermes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAY,KAAK,EAAE,GAAG,EAAE,EAAE;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC;QAC7E,GAAG,GAAG,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,aAAa,CAClB,QAAQ,EACR,GAAG,EACH,uFAAuF,CACxF,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;QACd,GAAG;QACH,IAAI,EAAE,CAAC,QAAQ,CAAC;QAChB,WAAW,EAAE,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnD,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,SAAS,EAAE,CAAC,IAAY,EAAE,KAAa;IACrC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACpG,CAAC"}
1
+ {"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/adapters/hermes.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,11 @@ export interface AdapterResult {
44
44
  timedOut: boolean;
45
45
  }
46
46
  export type Adapter = (ctx: AdapterCtx) => Promise<AdapterResult>;
47
+ export interface ProbeResult {
48
+ ok: boolean;
49
+ /** Human-readable explanation: "found hermes at /usr/bin/hermes; will use `hermes chat`". */
50
+ detail: string;
51
+ }
47
52
  export interface AdapterDescriptor {
48
53
  name: string;
49
54
  summary: string;
@@ -54,6 +59,15 @@ export interface AdapterDescriptor {
54
59
  */
55
60
  requiresBinary?: string;
56
61
  adapter: Adapter;
62
+ /**
63
+ * Optional pre-attach probe. Called by cmdRun's smoke-test gate INSTEAD
64
+ * of running the adapter with `smokeTest=true`. Adapters that shell out
65
+ * to a third-party binary (hermes/openclaw/claude/cursor-agent) MUST
66
+ * implement this so the pre-attach gate verifies the right subcommand
67
+ * actually exists — preventing the "smoke OK, every real turn fails"
68
+ * trap.
69
+ */
70
+ probe?: () => Promise<ProbeResult>;
57
71
  }
58
72
  export declare const ADAPTERS: Record<string, AdapterDescriptor>;
59
73
  export declare function resolveAdapter(name: string): AdapterDescriptor;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,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,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAElE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAuCtD,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAQ9D;AAED,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAOzC;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAoCtE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,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,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,6FAA6F;IAC7F,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;CACpC;AAED,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CA6CtD,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAQ9D;AAED,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAOzC;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAoCtE"}
@@ -1,9 +1,9 @@
1
1
  import { echoAdapter } from './echo.js';
2
2
  import { stdinAdapter } from './stdin.js';
3
- import { claudeAdapter } from './claude.js';
4
- import { cursorAgentAdapter } from './cursor-agent.js';
5
- import { hermesAdapter } from './hermes.js';
6
- import { openclawAdapter } from './openclaw.js';
3
+ import { claudeAdapter, claudeProbe } from './claude.js';
4
+ import { cursorAgentAdapter, cursorAgentProbe } from './cursor-agent.js';
5
+ import { hermesAdapter, hermesProbe } from './hermes.js';
6
+ import { openclawAdapter, openclawProbe } from './openclaw.js';
7
7
  export const ADAPTERS = {
8
8
  echo: {
9
9
  name: 'echo',
@@ -21,24 +21,30 @@ export const ADAPTERS = {
21
21
  summary: 'Exec `claude -p` (Anthropic Claude Code CLI). Requires the `claude` binary on PATH.',
22
22
  requiresBinary: 'claude',
23
23
  adapter: claudeAdapter,
24
+ probe: claudeProbe,
24
25
  },
25
26
  'cursor-agent': {
26
27
  name: 'cursor-agent',
27
28
  summary: 'Exec `cursor-agent --print`. Requires the `cursor-agent` binary on PATH.',
28
29
  requiresBinary: 'cursor-agent',
29
30
  adapter: cursorAgentAdapter,
31
+ probe: cursorAgentProbe,
30
32
  },
31
33
  hermes: {
32
34
  name: 'hermes',
33
- summary: 'Exec `hermes prompt` (Hermes runtime CLI). Requires `hermes` on PATH or HERMES_HOME set.',
35
+ summary: 'Exec `hermes <chat|prompt|reply>` (Hermes runtime CLI; verb auto-detected from --help). ' +
36
+ 'Requires `hermes` on PATH or HERMES_HOME set.',
34
37
  requiresBinary: 'hermes',
35
38
  adapter: hermesAdapter,
39
+ probe: hermesProbe,
36
40
  },
37
41
  openclaw: {
38
42
  name: 'openclaw',
39
- summary: 'Exec `openclaw prompt` (OpenClaw runtime CLI). Requires `openclaw` on PATH or OPENCLAW_HOME set.',
43
+ summary: 'Exec `openclaw <chat|run|prompt>` (OpenClaw runtime CLI; verb auto-detected from --help). ' +
44
+ 'Requires `openclaw` on PATH or OPENCLAW_HOME set.',
40
45
  requiresBinary: 'openclaw',
41
46
  adapter: openclawAdapter,
47
+ probe: openclawProbe,
42
48
  },
43
49
  };
44
50
  export function resolveAdapter(name) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,6 @@
1
- import type { Adapter } from './index.js';
2
- /**
3
- * `--via openclaw` — OpenClaw runtime CLI bridge.
4
- *
5
- * Invocation: `openclaw prompt` reads the prompt on stdin and prints the
6
- * agent's reply. Falls back to `$OPENCLAW_HOME/bin/openclaw` when the
7
- * binary is not on PATH (mirrors the hermes adapter).
8
- */
1
+ import type { Adapter, ProbeResult } from './index.js';
9
2
  export declare const openclawAdapter: Adapter;
3
+ export declare function openclawProbe(): Promise<ProbeResult>;
4
+ /** Test-only: clear the cached verb between unit tests. */
5
+ export declare function __resetCachedVerb(): void;
10
6
  //# sourceMappingURL=openclaw.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../src/adapters/openclaw.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,YAAY,CAAC;AAGzD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,OAsB7B,CAAC"}
1
+ {"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../src/adapters/openclaw.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAiB,WAAW,EAAE,MAAM,YAAY,CAAC;AA4BtE,eAAO,MAAM,eAAe,EAAE,OAgC7B,CAAC;AAEF,wBAAsB,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC,CAqB1D;AAMD,2DAA2D;AAC3D,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
@@ -1,32 +1,81 @@
1
1
  import { renderPromptFromEnvelope } from './index.js';
2
- import { binaryMissing, shellOut, which } from './shell-helper.js';
2
+ import { binaryMissing, pickSubcommand, probeHelp, shellOut, which } from './shell-helper.js';
3
3
  /**
4
4
  * `--via openclaw` — OpenClaw runtime CLI bridge.
5
5
  *
6
- * Invocation: `openclaw prompt` reads the prompt on stdin and prints the
7
- * agent's reply. Falls back to `$OPENCLAW_HOME/bin/openclaw` when the
8
- * binary is not on PATH (mirrors the hermes adapter).
6
+ * Like hermes, OpenClaw's exact subcommand verb varies by version
7
+ * (`run`, `chat`, `prompt`, ...). Probe `--help` once on attach and pick
8
+ * the first match, so a future rename does not silently break.
9
9
  */
10
+ const KNOWN_VERBS = ['chat', 'run', 'prompt', 'reply', 'message'];
11
+ let cachedVerb = null;
12
+ function locateBinary() {
13
+ let bin = which('openclaw');
14
+ if (!bin && process.env.OPENCLAW_HOME) {
15
+ bin = `${process.env.OPENCLAW_HOME.replace(/\/$/, '')}/bin/openclaw`;
16
+ }
17
+ return bin;
18
+ }
19
+ async function detectVerb(bin) {
20
+ if (cachedVerb)
21
+ return cachedVerb;
22
+ const help = await probeHelp(bin);
23
+ cachedVerb = pickSubcommand(help, KNOWN_VERBS);
24
+ return cachedVerb;
25
+ }
10
26
  export const openclawAdapter = async (ctx) => {
11
27
  const start = Date.now();
12
28
  if (ctx.smokeTest) {
13
29
  return ok('[smoke ok]', start);
14
30
  }
15
- let bin = which('openclaw');
16
- if (!bin && process.env.OPENCLAW_HOME) {
17
- bin = `${process.env.OPENCLAW_HOME.replace(/\/$/, '')}/bin/openclaw`;
18
- }
31
+ const bin = locateBinary();
19
32
  if (!bin) {
20
33
  return binaryMissing('openclaw', ctx, 'Set OPENCLAW_HOME or put the `openclaw` binary on PATH; or pass --via stdin / --via echo.');
21
34
  }
35
+ const verb = await detectVerb(bin);
36
+ if (!verb) {
37
+ return {
38
+ stdout: '',
39
+ stderr: `openclaw adapter: this OpenClaw install does not expose any subcommand AgentSpeak knows how to drive ` +
40
+ `(tried: ${KNOWN_VERBS.join(', ')}). Run \`openclaw --help\` to see the actual subcommand list, ` +
41
+ `then pass --via stdin and pipe the prompt yourself.`,
42
+ exitCode: 127,
43
+ durationMs: Date.now() - start,
44
+ timedOut: false,
45
+ };
46
+ }
22
47
  return shellOut({
23
48
  bin,
24
- args: ['prompt'],
49
+ args: [verb],
25
50
  promptStdin: renderPromptFromEnvelope(ctx.envelope),
26
51
  timeoutMs: ctx.timeoutMs,
27
52
  });
28
53
  };
54
+ export async function openclawProbe() {
55
+ const bin = locateBinary();
56
+ if (!bin) {
57
+ return {
58
+ ok: false,
59
+ detail: 'openclaw binary not found on PATH and OPENCLAW_HOME unset. ' +
60
+ 'Install openclaw-cli or pass --via stdin / --via echo.',
61
+ };
62
+ }
63
+ const verb = await detectVerb(bin);
64
+ if (!verb) {
65
+ return {
66
+ ok: false,
67
+ detail: `openclaw is installed at ${bin} but its --help output does not advertise any of the ` +
68
+ `subcommands AgentSpeak knows how to drive (${KNOWN_VERBS.join(', ')}). ` +
69
+ `Switch to --via stdin or pipe through your own --exec shim.`,
70
+ };
71
+ }
72
+ return { ok: true, detail: `found openclaw at ${bin}; will use \`openclaw ${verb}\` per turn.` };
73
+ }
29
74
  function ok(body, start) {
30
75
  return { stdout: body, stderr: '', exitCode: 0, durationMs: Date.now() - start, timedOut: false };
31
76
  }
77
+ /** Test-only: clear the cached verb between unit tests. */
78
+ export function __resetCachedVerb() {
79
+ cachedVerb = null;
80
+ }
32
81
  //# sourceMappingURL=openclaw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../src/adapters/openclaw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAY,KAAK,EAAE,GAAG,EAAE,EAAE;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5B,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACtC,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC;IACvE,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,aAAa,CAClB,UAAU,EACV,GAAG,EACH,2FAA2F,CAC5F,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;QACd,GAAG;QACH,IAAI,EAAE,CAAC,QAAQ,CAAC;QAChB,WAAW,EAAE,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnD,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,SAAS,EAAE,CAAC,IAAY,EAAE,KAAa;IACrC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACpG,CAAC"}
1
+ {"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../src/adapters/openclaw.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,22 @@ export interface ShellOutOpts {
23
23
  * error capture stay identical.
24
24
  */
25
25
  export declare function shellOut(opts: ShellOutOpts): Promise<AdapterResult>;
26
+ /**
27
+ * Run a binary with `--help` and return its captured stdout+stderr.
28
+ * Used by built-in adapters to discover the real subcommand verb on the
29
+ * installed runtime instead of assuming a hard-coded one. Hermes ships
30
+ * `chat` (no `prompt`); OpenClaw ships `run`, etc. Probing once on
31
+ * attach prevents the "looks fine in smoke test, fails on every real
32
+ * turn" failure mode that burned Yaow's invite on inv_fIs8aYZYBw9FVMI9CRBJ1Q.
33
+ */
34
+ export declare function probeHelp(bin: string, timeoutMs?: number): Promise<string>;
35
+ /**
36
+ * Pick the first subcommand from `candidates` that appears in the
37
+ * binary's `--help` output. Returns null if none match — the caller
38
+ * should surface a clear "this runtime does not expose any of the
39
+ * subcommands AgentSpeak knows how to drive" error.
40
+ */
41
+ export declare function pickSubcommand(help: string, candidates: readonly string[]): string | null;
26
42
  /**
27
43
  * Standardised "binary not found" failure surfaced by every shell-out
28
44
  * adapter so the smoke test's [SHIM-FAIL] hint can recommend the right
@@ -1 +1 @@
1
- {"version":3,"file":"shell-helper.d.ts","sourceRoot":"","sources":["../../src/adapters/shell-helper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAehD;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CA6CzE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAYzF"}
1
+ {"version":3,"file":"shell-helper.d.ts","sourceRoot":"","sources":["../../src/adapters/shell-helper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAehD;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CA6CzE;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAwB9E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAMzF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAYzF"}
@@ -79,6 +79,54 @@ export async function shellOut(opts) {
79
79
  clearTimeout(timer);
80
80
  return { stdout, stderr, exitCode, durationMs: Date.now() - start, timedOut };
81
81
  }
82
+ /**
83
+ * Run a binary with `--help` and return its captured stdout+stderr.
84
+ * Used by built-in adapters to discover the real subcommand verb on the
85
+ * installed runtime instead of assuming a hard-coded one. Hermes ships
86
+ * `chat` (no `prompt`); OpenClaw ships `run`, etc. Probing once on
87
+ * attach prevents the "looks fine in smoke test, fails on every real
88
+ * turn" failure mode that burned Yaow's invite on inv_fIs8aYZYBw9FVMI9CRBJ1Q.
89
+ */
90
+ export async function probeHelp(bin, timeoutMs = 5000) {
91
+ const start = Date.now();
92
+ const proc = spawn(bin, ['--help'], { stdio: ['ignore', 'pipe', 'pipe'] });
93
+ let buf = '';
94
+ proc.stdout.on('data', (c) => {
95
+ buf += c.toString('utf8');
96
+ });
97
+ proc.stderr.on('data', (c) => {
98
+ buf += c.toString('utf8');
99
+ });
100
+ const timer = setTimeout(() => {
101
+ try {
102
+ proc.kill('SIGKILL');
103
+ }
104
+ catch {
105
+ // ignore
106
+ }
107
+ }, timeoutMs);
108
+ await new Promise((resolve) => {
109
+ proc.on('exit', () => resolve());
110
+ proc.on('error', () => resolve());
111
+ });
112
+ clearTimeout(timer);
113
+ void start;
114
+ return buf;
115
+ }
116
+ /**
117
+ * Pick the first subcommand from `candidates` that appears in the
118
+ * binary's `--help` output. Returns null if none match — the caller
119
+ * should surface a clear "this runtime does not expose any of the
120
+ * subcommands AgentSpeak knows how to drive" error.
121
+ */
122
+ export function pickSubcommand(help, candidates) {
123
+ for (const c of candidates) {
124
+ const re = new RegExp(`(?:^|[\\s,'"\\(\\|\\[])${c}(?=[\\s,'"\\)\\|\\]]|$)`, 'm');
125
+ if (re.test(help))
126
+ return c;
127
+ }
128
+ return null;
129
+ }
82
130
  /**
83
131
  * Standardised "binary not found" failure surfaced by every shell-out
84
132
  * adapter so the smoke test's [SHIM-FAIL] hint can recommend the right
@@ -1 +1 @@
1
- {"version":3,"file":"shell-helper.js","sourceRoot":"","sources":["../../src/adapters/shell-helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell-helper.js","sourceRoot":"","sources":["../../src/adapters/shell-helper.ts"],"names":[],"mappings":"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"}
@@ -35,4 +35,23 @@ export declare function autoShimPaths(): {
35
35
  export declare function writeAutoShim(opts?: {
36
36
  force?: boolean;
37
37
  }): AutoShimResult;
38
+ /**
39
+ * Hardened reply shim. Lines marked with `# EDIT ME` are the only
40
+ * places the operator should change to wire in their LLM client. The
41
+ * smoke-test short-circuit MUST stay above the EDIT ME block so the
42
+ * cmdRun pre-attach gate continues to pass even with a half-written
43
+ * customisation.
44
+ */
45
+ /**
46
+ * After this many DEFAULT (unedited) replies, the auto-shim self-quits
47
+ * the meeting with `signal=done`. This is the fix for Ernesto's
48
+ * similarity-loop trap (meet_qgCvGEsNjmUiY0hUwR9F6w): an unedited
49
+ * auto-shim repeatedly emitted "[ack] turn N" content which the
50
+ * coordinator's similarity detector quickly flagged as a recap-worthy
51
+ * loop. Self-quitting on turn 3 means a user who hasn't wired in their
52
+ * LLM yet still leaves the meeting in a clean `completed` state with
53
+ * an explanatory final turn, instead of triggering a recap and
54
+ * stalling everyone else.
55
+ */
56
+ export declare const AUTO_SHIM_SELF_QUIT_AFTER = 3;
38
57
  //# sourceMappingURL=auto-shim.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auto-shim.d.ts","sourceRoot":"","sources":["../src/auto-shim.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,aAAa,IAAI;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAMtE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,cAAc,CA4B5E"}
1
+ {"version":3,"file":"auto-shim.d.ts","sourceRoot":"","sources":["../src/auto-shim.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,aAAa,IAAI;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAMtE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,cAAc,CA4B5E;AAED;;;;;;GAMG;AACH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAC"}