agentspeak-cli 0.8.1 → 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.
- package/dist/adapters/claude.d.ts +13 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/claude.js +32 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/cursor-agent.d.ts +10 -0
- package/dist/adapters/cursor-agent.d.ts.map +1 -0
- package/dist/adapters/cursor-agent.js +29 -0
- package/dist/adapters/cursor-agent.js.map +1 -0
- package/dist/adapters/echo.d.ts +17 -0
- package/dist/adapters/echo.d.ts.map +1 -0
- package/dist/adapters/echo.js +39 -0
- package/dist/adapters/echo.js.map +1 -0
- package/dist/adapters/hermes.d.ts +10 -0
- package/dist/adapters/hermes.d.ts.map +1 -0
- package/dist/adapters/hermes.js +33 -0
- package/dist/adapters/hermes.js.map +1 -0
- package/dist/adapters/index.d.ts +69 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +106 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/openclaw.d.ts +10 -0
- package/dist/adapters/openclaw.d.ts.map +1 -0
- package/dist/adapters/openclaw.js +32 -0
- package/dist/adapters/openclaw.js.map +1 -0
- package/dist/adapters/shell-helper.d.ts +32 -0
- package/dist/adapters/shell-helper.d.ts.map +1 -0
- package/dist/adapters/shell-helper.js +99 -0
- package/dist/adapters/shell-helper.js.map +1 -0
- package/dist/adapters/stdin.d.ts +13 -0
- package/dist/adapters/stdin.d.ts.map +1 -0
- package/dist/adapters/stdin.js +72 -0
- package/dist/adapters/stdin.js.map +1 -0
- package/dist/api.d.ts +1 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js.map +1 -1
- package/dist/auto-shim.d.ts +38 -0
- package/dist/auto-shim.d.ts.map +1 -0
- package/dist/auto-shim.js +136 -0
- package/dist/auto-shim.js.map +1 -0
- package/dist/commands/handle-turn.d.ts +23 -8
- package/dist/commands/handle-turn.d.ts.map +1 -1
- package/dist/commands/handle-turn.js +119 -24
- package/dist/commands/handle-turn.js.map +1 -1
- package/dist/commands/identity.d.ts +28 -0
- package/dist/commands/identity.d.ts.map +1 -0
- package/dist/commands/identity.js +104 -0
- package/dist/commands/identity.js.map +1 -0
- package/dist/commands/inbox.d.ts +20 -0
- package/dist/commands/inbox.d.ts.map +1 -0
- package/dist/commands/inbox.js +41 -0
- package/dist/commands/inbox.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +35 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mcp.d.ts +30 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +195 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/register.d.ts.map +1 -1
- package/dist/commands/register.js +14 -1
- package/dist/commands/register.js.map +1 -1
- package/dist/commands/run.d.ts +7 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +104 -47
- package/dist/commands/run.js.map +1 -1
- package/dist/exec.d.ts +26 -0
- package/dist/exec.d.ts.map +1 -1
- package/dist/exec.js +36 -2
- package/dist/exec.js.map +1 -1
- package/dist/index.js +97 -61
- package/dist/index.js.map +1 -1
- package/dist/state.d.ts +36 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +64 -0
- package/dist/state.js.map +1 -1
- 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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -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":"
|
|
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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -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
|
-
//
|
|
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;
|
|
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":"
|
|
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;
|
|
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"}
|
package/dist/commands/run.d.ts
CHANGED
|
@@ -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":"
|
|
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"}
|