agentspeak-cli 0.8.1 → 0.9.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.
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 +7 -0
  64. package/dist/commands/run.d.ts.map +1 -1
  65. package/dist/commands/run.js +104 -47
  66. package/dist/commands/run.js.map +1 -1
  67. package/dist/exec.d.ts +26 -0
  68. package/dist/exec.d.ts.map +1 -1
  69. package/dist/exec.js +59 -2
  70. package/dist/exec.js.map +1 -1
  71. package/dist/index.js +97 -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 +4 -1
@@ -0,0 +1,104 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { decodeIdentityBlob, encodeIdentityBlob, home, loadIdentity, saveIdentity, } from '../state.js';
4
+ export async function cmdIdentity(opts) {
5
+ const action = (opts.action ?? 'show').toLowerCase();
6
+ switch (action) {
7
+ case 'export':
8
+ return doExport(opts);
9
+ case 'import':
10
+ return doImport(opts);
11
+ case 'show':
12
+ case 'whoami':
13
+ return doShow(opts);
14
+ default:
15
+ process.stderr.write(`unknown identity action "${opts.action}". ` +
16
+ 'Use one of: export | import <blob> | show.\n');
17
+ return 2;
18
+ }
19
+ }
20
+ function doExport(opts) {
21
+ const id = loadIdentity();
22
+ if (!id) {
23
+ process.stderr.write('no identity registered yet. Run `agentspeak-cli init --base-url <url>` first.\n');
24
+ return 2;
25
+ }
26
+ const blob = encodeIdentityBlob(id);
27
+ if (opts.json) {
28
+ process.stdout.write(JSON.stringify({ ok: true, agentId: id.agentId, baseUrl: id.baseUrl, blob, blobBytes: blob.length }, null, 2) + '\n');
29
+ return 0;
30
+ }
31
+ // Stable contract: the FIRST line of stdout is exactly the blob,
32
+ // no prefix, no trailing context. Sandboxed parents grep for
33
+ // `^([A-Za-z0-9+/=_-]+)$` on line 1 to pluck it back out.
34
+ process.stdout.write(blob + '\n');
35
+ process.stderr.write(`\n[identity export] agent ${id.agentId} on ${id.baseUrl} — ${blob.length} bytes.\n` +
36
+ 'Stash this blob in your context, then prefix the next sandboxed call with\n' +
37
+ ' agentspeak-cli handle-turn --identity <blob> --via echo\n' +
38
+ 'or re-import it once with\n' +
39
+ ` agentspeak-cli identity import ${blob.slice(0, 12)}...\n`);
40
+ return 0;
41
+ }
42
+ function doImport(opts) {
43
+ if (!opts.blob) {
44
+ process.stderr.write('agentspeak-cli identity import <blob>: <blob> argument is required.\n');
45
+ return 2;
46
+ }
47
+ let id;
48
+ try {
49
+ id = decodeIdentityBlob(opts.blob);
50
+ }
51
+ catch (err) {
52
+ process.stderr.write(`failed to decode identity blob: ${err instanceof Error ? err.message : String(err)}\n`);
53
+ return 2;
54
+ }
55
+ const target = join(home(), 'identity.json');
56
+ if (existsSync(target) && !opts.force) {
57
+ process.stderr.write(`identity.json already exists at ${target}. ` +
58
+ 'Pass --force to overwrite (you will lose the existing identity).\n');
59
+ return 2;
60
+ }
61
+ saveIdentity(id);
62
+ if (opts.json) {
63
+ process.stdout.write(JSON.stringify({ ok: true, imported: id.agentId, baseUrl: id.baseUrl }, null, 2) + '\n');
64
+ }
65
+ else {
66
+ process.stdout.write(`Imported identity ${id.agentId} (${id.name}) on ${id.baseUrl}.\n` +
67
+ `Saved to ${target} (chmod 600).\n`);
68
+ }
69
+ return 0;
70
+ }
71
+ function doShow(opts) {
72
+ const id = loadIdentity();
73
+ if (!id) {
74
+ if (opts.json) {
75
+ process.stdout.write(JSON.stringify({ ok: false, identity: null }, null, 2) + '\n');
76
+ }
77
+ else {
78
+ process.stdout.write('no identity registered.\n');
79
+ }
80
+ return 0;
81
+ }
82
+ if (opts.json) {
83
+ process.stdout.write(JSON.stringify({
84
+ ok: true,
85
+ identity: {
86
+ agentId: id.agentId,
87
+ baseUrl: id.baseUrl,
88
+ name: id.name,
89
+ agentType: id.agentType,
90
+ registeredAt: id.registeredAt,
91
+ hasClientNonce: !!id.clientNonce,
92
+ },
93
+ }, null, 2) + '\n');
94
+ return 0;
95
+ }
96
+ process.stdout.write(`agentId ${id.agentId}\n` +
97
+ `name ${id.name}\n` +
98
+ `baseUrl ${id.baseUrl}\n` +
99
+ `type ${id.agentType ?? 'generic'}\n` +
100
+ `since ${id.registeredAt}\n` +
101
+ `nonce ${id.clientNonce ? 'set (deterministic id)' : 'absent (legacy random id)'}\n`);
102
+ return 0;
103
+ }
104
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/commands/identity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * `agentspeak-cli inbox` — list meetings with a turn currently
3
+ * assigned to me. Phase 5 of the reliable-bridge plan.
4
+ *
5
+ * The intended workflow for sandboxed runtimes (Python execute_code,
6
+ * ephemeral container per tool call, etc.):
7
+ *
8
+ * 1. agentspeak-cli identity export # one-time, stash in context
9
+ * 2. agentspeak-cli inbox --identity <blob> # see what needs doing
10
+ * 3. agentspeak-cli handle-turn --identity <blob> --meeting <id> --via echo
11
+ *
12
+ * Outputs human-readable text by default, JSON with --json for parents
13
+ * that script around it.
14
+ */
15
+ export interface InboxOpts {
16
+ identityBlob?: string;
17
+ json?: boolean;
18
+ }
19
+ export declare function cmdInbox(opts: InboxOpts): Promise<number>;
20
+ //# sourceMappingURL=inbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,SAAS;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAgBD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAmD/D"}
@@ -0,0 +1,41 @@
1
+ import { api, ApiError } from '../api.js';
2
+ import { resolveIdentity } from '../state.js';
3
+ export async function cmdInbox(opts) {
4
+ const identity = resolveIdentity(opts.identityBlob);
5
+ if (!identity) {
6
+ process.stderr.write('agentspeak-cli inbox: no identity available. Pass --identity <blob>, ' +
7
+ 'set AGENTSPEAK_IDENTITY, or run `agentspeak-cli init` first.\n');
8
+ return 2;
9
+ }
10
+ let res;
11
+ try {
12
+ res = await api.get({ baseUrl: identity.baseUrl, token: identity.coordinatorToken }, '/api/agents/me/inbox');
13
+ }
14
+ catch (err) {
15
+ if (err instanceof ApiError && err.status === 404) {
16
+ process.stderr.write('agentspeak-cli inbox: coordinator does not implement /api/agents/me/inbox ' +
17
+ '(pre-0.9.0 deploy). Pass --meeting <id> directly to handle-turn instead.\n');
18
+ return 1;
19
+ }
20
+ throw err;
21
+ }
22
+ if (opts.json) {
23
+ process.stdout.write(JSON.stringify(res, null, 2) + '\n');
24
+ return 0;
25
+ }
26
+ if (res.pendingTurns.length === 0) {
27
+ process.stdout.write('No pending turns. Nothing to do right now.\n');
28
+ return 0;
29
+ }
30
+ for (const t of res.pendingTurns) {
31
+ process.stdout.write(`${t.meetingId} turn ${t.turnNumber} action=${t.action} status=${t.status} ` +
32
+ `assigned=${t.assignedAt}` +
33
+ (t.leaseExpiresAt ? ` leaseExpires=${t.leaseExpiresAt}` : '') +
34
+ (t.meetingTitle ? ` (${t.meetingTitle})` : '') +
35
+ '\n');
36
+ }
37
+ process.stdout.write(`\n${res.pendingTurns.length} pending turn(s). Handle one with:\n` +
38
+ ` agentspeak-cli handle-turn --meeting ${res.pendingTurns[0].meetingId} --via echo\n`);
39
+ return 0;
40
+ }
41
+ //# sourceMappingURL=inbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAoC9C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAe;IAC5C,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uEAAuE;YACrE,gEAAgE,CACnE,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,GAAkB,CAAC;IACvB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CACjB,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,gBAAgB,EAAE,EAC/D,sBAAsB,CACvB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4EAA4E;gBAC1E,4EAA4E,CAC/E,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC1D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,UAAU,YAAY,CAAC,CAAC,MAAM,YAAY,CAAC,CAAC,MAAM,IAAI;YAC9E,YAAY,CAAC,CAAC,UAAU,EAAE;YAC1B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,IAAI,CACP,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,GAAG,CAAC,YAAY,CAAC,MAAM,sCAAsC;QAChE,0CAA0C,GAAG,CAAC,YAAY,CAAC,CAAC,CAAE,CAAC,SAAS,eAAe,CAC1F,CAAC;IACF,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -25,6 +25,13 @@ export interface InitOpts {
25
25
  exec?: string;
26
26
  /** When true, skip the tutorial run after registering. */
27
27
  skipTutorial?: boolean;
28
+ /**
29
+ * When true, overwrite an existing auto-shim. Default false: a
30
+ * customised reply.sh is left alone so re-running `init` is safe.
31
+ */
32
+ forceShim?: boolean;
33
+ /** When true, skip the auto-shim writer entirely. Rarely useful. */
34
+ skipShim?: boolean;
28
35
  /**
29
36
  * If false, do NOT auto-write SKILL.md files. Default true: the
30
37
  * CLI writes them itself so the candidate agent does ZERO extra
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAmC7D"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAmE7D"}
@@ -1,4 +1,6 @@
1
1
  import { loadIdentity } from '../state.js';
2
+ import { writeAutoShim } from '../auto-shim.js';
3
+ import { runShim } from '../exec.js';
2
4
  import { cmdRegister } from './register.js';
3
5
  import { cmdTutorial } from './tutorial.js';
4
6
  export async function cmdInit(opts) {
@@ -17,11 +19,43 @@ export async function cmdInit(opts) {
17
19
  json: false,
18
20
  });
19
21
  }
22
+ // 2. Auto-shim. Write a hardened reply.sh + reply.cmd into
23
+ // ~/.agentspeak/ so the agent never has to author one from scratch
24
+ // and the next `agentspeak-cli join` Just Works without --exec.
25
+ if (!opts.skipShim) {
26
+ try {
27
+ const r = writeAutoShim({ force: opts.forceShim });
28
+ if (r.written) {
29
+ log(`Wrote auto-shim ${r.posixPath}` + (r.cmdPath ? ` (+ ${r.cmdPath} for cmd.exe)` : ''));
30
+ }
31
+ else if (r.reused) {
32
+ log(`Reusing existing auto-shim ${r.posixPath} (pass --force-shim to overwrite).`);
33
+ }
34
+ // Smoke-test the shim immediately so a misconfigured environment
35
+ // (no node? no bash?) is caught here, NOT inside someone's first
36
+ // real meeting.
37
+ const smoke = await runShim(r.posixPath, { agentspeak: { smokeTest: true } }, {
38
+ timeoutMs: 10_000,
39
+ teeStderr: false,
40
+ });
41
+ if (smoke.exitCode === 0 && smoke.stdout.trim().length > 0) {
42
+ log(`[SHIM-OK ${r.posixPath} ms=${smoke.durationMs} bytes=${smoke.stdout.trim().length}]`);
43
+ }
44
+ else {
45
+ log(`[SHIM-FAIL ${r.posixPath} exitCode=${smoke.exitCode}] ` +
46
+ 'auto-shim smoke test failed — `agentspeak-cli join` will need --via <preset> until this is fixed. ' +
47
+ (smoke.stderr.trim() ? 'stderr: ' + smoke.stderr.trim().slice(-400) : ''));
48
+ }
49
+ }
50
+ catch (err) {
51
+ log('warn: could not write auto-shim: ' + (err instanceof Error ? err.message : String(err)));
52
+ }
53
+ }
20
54
  if (opts.skipTutorial) {
21
55
  log('Skipping tutorial (--skip-tutorial).');
22
56
  return 0;
23
57
  }
24
- // 2. Tutorial. Wake config is OPTIONAL — the tutor routes mark
58
+ // 3. Tutorial. Wake config is OPTIONAL — the tutor routes mark
25
59
  // wake_choice / wake_test as deferred-pass when no transport is set.
26
60
  log('Running mandatory onboarding tutorial (no questions, no LLM key, no Discord setup required)...');
27
61
  log('Push wake transport is OPTIONAL and can be set later at /setup-wake.');
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAyC5C,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAc;IAC1C,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAErE,kEAAkE;IAClE,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QAClD,GAAG,CAAC,6BAA6B,QAAQ,CAAC,OAAO,OAAO,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,+BAA+B,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC;QACtD,MAAM,WAAW,CAAC;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,GAAG,CAAC,sCAAsC,CAAC,CAAC;QAC5C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,+DAA+D;IAC/D,qEAAqE;IACrE,GAAG,CAAC,gGAAgG,CAAC,CAAC;IACtG,GAAG,CAAC,sEAAsE,CAAC,CAAC;IAC5E,OAAO,WAAW,CAAC;QACjB,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAE,KAAK;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * `agentspeak-cli mcp serve` — expose AgentSpeak as an MCP server.
3
+ *
4
+ * Phase 7 of the reliable-bridge plan. The bridge problem (how does
5
+ * an LLM agent author replies to a meeting) has a well-known answer
6
+ * in the MCP world: the LLM's runtime IS the protocol client, and
7
+ * the meeting is exposed as MCP tools that the LLM calls natively.
8
+ * No shim authoring, no per-turn shell exec, no file persistence.
9
+ *
10
+ * Drop a `.mcp.json` snippet into Claude Code / Cursor pointing at
11
+ * `agentspeak-cli mcp serve` and the agent gets these tools:
12
+ *
13
+ * meeting_inbox — list pending turns (calls /api/agents/me/inbox).
14
+ * meeting_pull — fetch the next assigned turn for a meeting.
15
+ * meeting_submit — post a reply for an assigned turn.
16
+ * meeting_status — full meeting status (transcript, participants).
17
+ * meeting_join — join a meeting via invite URL.
18
+ * meeting_create — coordinator-token-gated meeting creation.
19
+ *
20
+ * Identity is loaded from ~/.agentspeak/identity.json (or
21
+ * --identity <blob> / AGENTSPEAK_IDENTITY) and used as the bearer for
22
+ * every coordinator call. Stdio transport: each MCP message arrives
23
+ * on stdin, each reply goes out on stdout, exactly as the SDK
24
+ * specifies.
25
+ */
26
+ export interface McpServeOpts {
27
+ identityBlob?: string;
28
+ }
29
+ export declare function cmdMcpServe(opts: McpServeOpts): Promise<number>;
30
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAwFrE"}
@@ -0,0 +1,195 @@
1
+ import { api, ApiError } from '../api.js';
2
+ import { resolveIdentity } from '../state.js';
3
+ export async function cmdMcpServe(opts) {
4
+ const identity = resolveIdentity(opts.identityBlob);
5
+ if (!identity) {
6
+ process.stderr.write('agentspeak-cli mcp serve: no identity available. Run `agentspeak-cli init` first ' +
7
+ 'or pass --identity <blob>.\n');
8
+ return 2;
9
+ }
10
+ // Lazy-load the MCP SDK so plain `agentspeak-cli help` / `init` don't
11
+ // pay the cold-start cost. Required for fast `npx -y` UX.
12
+ let McpServerCtor;
13
+ let StdioServerTransportCtor;
14
+ let CallToolRequestSchemaSym;
15
+ let ListToolsRequestSchemaSym;
16
+ try {
17
+ const serverMod = await import('@modelcontextprotocol/sdk/server/index.js');
18
+ const stdioMod = await import('@modelcontextprotocol/sdk/server/stdio.js');
19
+ const typesMod = await import('@modelcontextprotocol/sdk/types.js');
20
+ McpServerCtor = serverMod.Server;
21
+ StdioServerTransportCtor = stdioMod
22
+ .StdioServerTransport;
23
+ CallToolRequestSchemaSym = typesMod.CallToolRequestSchema;
24
+ ListToolsRequestSchemaSym = typesMod.ListToolsRequestSchema;
25
+ }
26
+ catch (err) {
27
+ process.stderr.write('agentspeak-cli mcp serve: failed to load @modelcontextprotocol/sdk. ' +
28
+ 'Reinstall the CLI (`npm i -g agentspeak-cli@latest`) so the SDK is bundled.\n' +
29
+ (err instanceof Error ? err.message + '\n' : ''));
30
+ return 2;
31
+ }
32
+ const tools = buildToolList();
33
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
34
+ const server = new McpServerCtor({ name: 'agentspeak', version: '0.9.0' }, { capabilities: { tools: {} } });
35
+ server.setRequestHandler(ListToolsRequestSchemaSym, async () => ({
36
+ tools: tools.map((t) => ({ name: t.name, description: t.description, inputSchema: t.input })),
37
+ }));
38
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
+ server.setRequestHandler(CallToolRequestSchemaSym, async (req) => {
40
+ const tool = tools.find((t) => t.name === req.params.name);
41
+ if (!tool) {
42
+ return {
43
+ content: [{ type: 'text', text: `unknown tool: ${req.params.name}` }],
44
+ isError: true,
45
+ };
46
+ }
47
+ try {
48
+ const result = await tool.handler(identity, req.params.arguments ?? {});
49
+ return {
50
+ content: [{ type: 'text', text: typeof result === 'string' ? result : JSON.stringify(result, null, 2) }],
51
+ };
52
+ }
53
+ catch (err) {
54
+ return {
55
+ content: [
56
+ {
57
+ type: 'text',
58
+ text: err instanceof ApiError
59
+ ? `${err.status} from coordinator: ${err.body.slice(0, 500)}`
60
+ : err instanceof Error
61
+ ? err.message
62
+ : String(err),
63
+ },
64
+ ],
65
+ isError: true,
66
+ };
67
+ }
68
+ });
69
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
+ const transport = new StdioServerTransportCtor();
71
+ await server.connect(transport);
72
+ process.stderr.write(`[agentspeak-mcp] serving as ${identity.agentId} on ${identity.baseUrl} via stdio\n`);
73
+ // The MCP SDK keeps the process alive on the transport. Resolve only
74
+ // when the transport closes.
75
+ return await new Promise((resolve) => {
76
+ transport.onclose = () => resolve(0);
77
+ });
78
+ }
79
+ function ctxFor(identity) {
80
+ return { baseUrl: identity.baseUrl, token: identity.coordinatorToken };
81
+ }
82
+ function buildToolList() {
83
+ return [
84
+ {
85
+ name: 'meeting_inbox',
86
+ description: 'List meetings that currently have a turn assigned to you. The right call to start every wake-driven loop.',
87
+ input: { type: 'object', properties: {}, additionalProperties: false },
88
+ handler: async (id) => api.get(ctxFor(id), '/api/agents/me/inbox'),
89
+ },
90
+ {
91
+ name: 'meeting_pull',
92
+ description: 'Fetch the currently-assigned turn envelope for a meeting (HTTP 204 if no turn is assigned). Long-polls for `wait` seconds (default 0).',
93
+ input: {
94
+ type: 'object',
95
+ properties: {
96
+ meetingId: { type: 'string' },
97
+ wait: { type: 'number', minimum: 0, maximum: 60, default: 0 },
98
+ },
99
+ required: ['meetingId'],
100
+ },
101
+ handler: async (id, args) => {
102
+ const meetingId = String(args.meetingId);
103
+ const wait = typeof args.wait === 'number' ? args.wait : 0;
104
+ return api.get(ctxFor(id), `/api/meetings/${encodeURIComponent(meetingId)}/my_turn?agentId=${encodeURIComponent(id.agentId)}&wait=${wait}`);
105
+ },
106
+ },
107
+ {
108
+ name: 'meeting_submit',
109
+ description: 'Submit a reply for an assigned turn. Pass `signal: "done"` to mark the meeting closed.',
110
+ input: {
111
+ type: 'object',
112
+ properties: {
113
+ meetingId: { type: 'string' },
114
+ taskId: { type: 'string' },
115
+ turnNumber: { type: 'number' },
116
+ body: { type: 'string', description: 'Reply markdown.' },
117
+ status: {
118
+ type: 'string',
119
+ enum: ['completed', 'failed'],
120
+ default: 'completed',
121
+ },
122
+ signal: { type: 'string', description: 'Set to "done" to close the meeting.' },
123
+ },
124
+ required: ['meetingId', 'taskId', 'turnNumber', 'body'],
125
+ },
126
+ handler: async (id, args) => {
127
+ const meetingId = String(args.meetingId);
128
+ return api.post(ctxFor(id), `/api/meetings/${encodeURIComponent(meetingId)}/submit`, {
129
+ agentId: id.agentId,
130
+ taskId: args.taskId,
131
+ turnNumber: args.turnNumber,
132
+ status: args.status ?? 'completed',
133
+ signal: args.signal,
134
+ artifacts: [
135
+ {
136
+ type: 'text',
137
+ contentType: 'text/markdown',
138
+ content: args.body,
139
+ },
140
+ ],
141
+ });
142
+ },
143
+ },
144
+ {
145
+ name: 'meeting_status',
146
+ description: 'Full meeting status: participants, transcript, current turn, deadline.',
147
+ input: {
148
+ type: 'object',
149
+ properties: { meetingId: { type: 'string' } },
150
+ required: ['meetingId'],
151
+ },
152
+ handler: async (id, args) => {
153
+ const meetingId = String(args.meetingId);
154
+ return api.get(ctxFor(id), `/api/meetings/${encodeURIComponent(meetingId)}/status`);
155
+ },
156
+ },
157
+ {
158
+ name: 'meeting_join',
159
+ description: 'Join a meeting using an invite token.',
160
+ input: {
161
+ type: 'object',
162
+ properties: {
163
+ meetingId: { type: 'string' },
164
+ inviteToken: { type: 'string', description: 'The token after `inv_` in the invite URL.' },
165
+ role: { type: 'string' },
166
+ },
167
+ required: ['meetingId', 'inviteToken'],
168
+ },
169
+ handler: async (id, args) => {
170
+ const meetingId = String(args.meetingId);
171
+ const inviteToken = String(args.inviteToken);
172
+ return api.post(ctxFor(id), `/api/meetings/${encodeURIComponent(meetingId)}/join`, { agentId: id.agentId, role: args.role }, { headers: { 'x-invite-token': inviteToken } });
173
+ },
174
+ },
175
+ {
176
+ name: 'meeting_create',
177
+ description: 'Create a meeting. Requires the agent to be a coordinator.',
178
+ input: {
179
+ type: 'object',
180
+ properties: {
181
+ title: { type: 'string' },
182
+ context: { type: 'object' },
183
+ allowOpenJoin: { type: 'boolean', default: false },
184
+ },
185
+ required: ['title', 'context'],
186
+ },
187
+ handler: async (id, args) => api.post(ctxFor(id), '/api/meetings', {
188
+ title: args.title,
189
+ context: args.context,
190
+ allowOpenJoin: args.allowOpenJoin ?? false,
191
+ }),
192
+ },
193
+ ];
194
+ }
195
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/commands/register.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE1D;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC9C,4FAA4F;IAC5F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAqDvE"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/commands/register.ts"],"names":[],"mappings":"AAGA,OAAO,EAA8B,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC9C,4FAA4F;IAC5F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmEvE"}
@@ -1,10 +1,21 @@
1
+ import { randomBytes } from 'node:crypto';
1
2
  import { hostname } from 'node:os';
2
3
  import { api } from '../api.js';
3
- import { saveIdentity } from '../state.js';
4
+ import { loadIdentity, saveIdentity } from '../state.js';
4
5
  export async function cmdRegister(opts) {
5
6
  const name = opts.name ?? `${hostname()}-cli`;
6
7
  const agentType = opts.agentType ?? 'generic';
7
8
  const gatewayUrl = opts.gatewayUrl ?? 'https://agentspeak.invalid/cli';
9
+ // Persist a deterministic-identity nonce on first run. Same nonce
10
+ // forever -> same agent_id forever, even if a sandboxed runtime
11
+ // wipes ~/.agentspeak/identity.json between tool calls (the
12
+ // identity export/import round-trip carries this nonce so the
13
+ // re-register call resolves to the same agent row instead of
14
+ // burning a fresh participant + invite use).
15
+ const existing = loadIdentity();
16
+ const clientNonce = existing?.clientNonce && existing.baseUrl === opts.baseUrl
17
+ ? existing.clientNonce
18
+ : randomBytes(32).toString('hex');
8
19
  const stubCard = {
9
20
  schemaVersion: '1.0',
10
21
  agentId: `agent_pending_${Date.now().toString(36)}`,
@@ -26,6 +37,7 @@ export async function cmdRegister(opts) {
26
37
  const res = await api.post({ baseUrl: opts.baseUrl, token: '' }, '/api/agents/register', {
27
38
  agentCard: stubCard,
28
39
  skipProbe: true,
40
+ clientNonce,
29
41
  });
30
42
  const identity = {
31
43
  baseUrl: opts.baseUrl,
@@ -34,6 +46,7 @@ export async function cmdRegister(opts) {
34
46
  name,
35
47
  agentType,
36
48
  registeredAt: res.createdAt,
49
+ clientNonce,
37
50
  };
38
51
  saveIdentity(identity);
39
52
  if (opts.json) {
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/commands/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAC;AAuB1D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAkB;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,QAAQ,EAAE,MAAM,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,gCAAgC,CAAC;IAEvE,MAAM,QAAQ,GAAG;QACf,aAAa,EAAE,KAAc;QAC7B,OAAO,EAAE,iBAAiB,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QACnD,SAAS;QACT,IAAI;QACJ,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,UAAU;QACf,YAAY,EAAE;YACZ,YAAY,EAAE,KAAK;YACnB,YAAY,EAAE,IAAI;YAClB,iBAAiB,EAAE,KAAK;YACxB,kBAAkB,EAAE,CAAC;YACrB,gBAAgB,EAAE,KAAK;SACxB;QACD,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QACxF,SAAS,EAAE,EAAE,QAAQ,EAAE,uBAAuB,EAAE;QAChD,WAAW,EAAE,2DAA2D;KACzE,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAIvB,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,sBAAsB,EAAE;QAC/D,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAa;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,IAAI;QACJ,SAAS;QACT,YAAY,EAAE,GAAG,CAAC,SAAS;KAC5B,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEvB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,cAAc,IAAI,OAAO,GAAG,CAAC,OAAO,OAAO,IAAI,CAAC,OAAO,IAAI;YACzD,8DAA8D;YAC9D,sBAAsB,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,qCAAqC,CAC/F,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/commands/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAC;AAuBxE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAkB;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,QAAQ,EAAE,MAAM,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,gCAAgC,CAAC;IAEvE,kEAAkE;IAClE,gEAAgE;IAChE,4DAA4D;IAC5D,8DAA8D;IAC9D,6DAA6D;IAC7D,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,WAAW,GACf,QAAQ,EAAE,WAAW,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO;QACxD,CAAC,CAAC,QAAQ,CAAC,WAAW;QACtB,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEtC,MAAM,QAAQ,GAAG;QACf,aAAa,EAAE,KAAc;QAC7B,OAAO,EAAE,iBAAiB,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QACnD,SAAS;QACT,IAAI;QACJ,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,UAAU;QACf,YAAY,EAAE;YACZ,YAAY,EAAE,KAAK;YACnB,YAAY,EAAE,IAAI;YAClB,iBAAiB,EAAE,KAAK;YACxB,kBAAkB,EAAE,CAAC;YACrB,gBAAgB,EAAE,KAAK;SACxB;QACD,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QACxF,SAAS,EAAE,EAAE,QAAQ,EAAE,uBAAuB,EAAE;QAChD,WAAW,EAAE,2DAA2D;KACzE,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAIvB,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,sBAAsB,EAAE;QAC/D,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,IAAI;QACf,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAa;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,IAAI;QACJ,SAAS;QACT,YAAY,EAAE,GAAG,CAAC,SAAS;QAC3B,WAAW;KACZ,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEvB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,cAAc,IAAI,OAAO,GAAG,CAAC,OAAO,OAAO,IAAI,CAAC,OAAO,IAAI;YACzD,8DAA8D;YAC9D,sBAAsB,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,qCAAqC,CAC/F,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -32,6 +32,13 @@
32
32
  export interface RunOpts {
33
33
  meetingId?: string;
34
34
  exec?: string;
35
+ /**
36
+ * `--via <preset>` — use a built-in reply adapter instead of an
37
+ * `--exec` shell shim. Mutually exclusive with `exec`. Resolved via
38
+ * `resolveAdapter()` from `packages/cli/src/adapters/`. See
39
+ * `describeAdapters()` for the supported list.
40
+ */
41
+ via?: string;
35
42
  defaultReply?: string;
36
43
  shimTimeoutMs?: number;
37
44
  pollWaitSeconds?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,MAAM,WAAW,OAAO;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAuKD,wBAAsB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA6T3D"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,MAAM,WAAW,OAAO;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA6ND,wBAAsB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAmV3D"}