agentspeak-cli 0.10.0 → 0.10.2
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/commands/handle-turn.d.ts +10 -0
- package/dist/commands/handle-turn.d.ts.map +1 -1
- package/dist/commands/handle-turn.js +24 -0
- package/dist/commands/handle-turn.js.map +1 -1
- package/dist/commands/inbox.d.ts +9 -0
- package/dist/commands/inbox.d.ts.map +1 -1
- package/dist/commands/inbox.js +59 -9
- package/dist/commands/inbox.js.map +1 -1
- package/dist/commands/join.d.ts +20 -0
- package/dist/commands/join.d.ts.map +1 -1
- package/dist/commands/join.js +60 -2
- package/dist/commands/join.js.map +1 -1
- package/dist/commands/mcp.js +1 -1
- package/dist/commands/run.js +1 -1
- package/dist/index.js +86 -15
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -31,6 +31,16 @@ export interface HandleTurnOpts {
|
|
|
31
31
|
* Falls back to AGENTSPEAK_IDENTITY env var, then to disk.
|
|
32
32
|
*/
|
|
33
33
|
identityBlob?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Inline reply text composed by the LLM tool-caller in THIS tool
|
|
36
|
+
* call. Skill v21+ recommends this as the canonical bridge for LLM
|
|
37
|
+
* tool-callers (Hermes chat, Cursor agent, sandboxed Python, etc.):
|
|
38
|
+
* the LLM composes the reply with its own brain, passes it via
|
|
39
|
+
* --reply, and submits in one shot. Mutually exclusive with
|
|
40
|
+
* --exec / --via. Use a literal "<!-- agentspeak:signal=done -->"
|
|
41
|
+
* anywhere in the body to close the meeting from your side.
|
|
42
|
+
*/
|
|
43
|
+
reply?: string;
|
|
34
44
|
shimTimeoutMs?: number;
|
|
35
45
|
/** Wait this many seconds for the turn (default 5 — push race tolerance). */
|
|
36
46
|
waitSeconds?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-turn.d.ts","sourceRoot":"","sources":["../../src/commands/handle-turn.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"handle-turn.d.ts","sourceRoot":"","sources":["../../src/commands/handle-turn.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAqKzE"}
|
|
@@ -62,6 +62,30 @@ export async function cmdHandleTurn(opts) {
|
|
|
62
62
|
const turnNumber = typeof envelope.turnNumber === 'number' ? envelope.turnNumber : -1;
|
|
63
63
|
const taskId = typeof envelope.taskId === 'string' ? envelope.taskId : '';
|
|
64
64
|
process.stdout.write(`[agentspeak] handle-turn: ${meetingId} turn ${turnNumber} — running bridge\n`);
|
|
65
|
+
// Inline-reply fast path. When --reply is passed we skip the bridge
|
|
66
|
+
// entirely: the LLM tool-caller has already composed the reply text
|
|
67
|
+
// in this very tool call. This is the canonical bridge for skill v21
|
|
68
|
+
// LLM tool-callers (no shim, no --via, no shell-out, no IPC needed).
|
|
69
|
+
if (typeof opts.reply === 'string' && opts.reply.length > 0) {
|
|
70
|
+
if (opts.via || opts.exec) {
|
|
71
|
+
process.stderr.write('agentspeak-cli handle-turn: --reply takes precedence over --via/--exec; the bridge will be skipped.\n');
|
|
72
|
+
}
|
|
73
|
+
const SIGNAL_DONE_MARKER = /<!--\s*agentspeak:signal=done\s*-->/i;
|
|
74
|
+
const raw = opts.reply.trim();
|
|
75
|
+
const isDone = SIGNAL_DONE_MARKER.test(raw);
|
|
76
|
+
const content = raw.replace(SIGNAL_DONE_MARKER, '').trim() || raw;
|
|
77
|
+
await api.post(ctx, `/api/meetings/${meetingId}/submit`, {
|
|
78
|
+
agentId: state.agentId,
|
|
79
|
+
taskId,
|
|
80
|
+
turnNumber,
|
|
81
|
+
status: 'completed',
|
|
82
|
+
executionTimeMs: 0,
|
|
83
|
+
signal: isDone ? 'done' : undefined,
|
|
84
|
+
artifacts: [{ type: 'text', contentType: 'text/markdown', content }],
|
|
85
|
+
});
|
|
86
|
+
process.stdout.write(`[agentspeak] handle-turn: submitted turn ${turnNumber} via --reply (${content.length} chars${isDone ? ', signal=done' : ''})\n`);
|
|
87
|
+
return 0;
|
|
88
|
+
}
|
|
65
89
|
const bridge = resolveBridge(opts);
|
|
66
90
|
if (!bridge) {
|
|
67
91
|
process.stderr.write('agentspeak-cli handle-turn: no reply bridge configured. Pass --via <preset> or ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-turn.js","sourceRoot":"","sources":["../../src/commands/handle-turn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,YAAY,EACZ,WAAW,GAGZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAA6C,MAAM,sBAAsB,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"handle-turn.js","sourceRoot":"","sources":["../../src/commands/handle-turn.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/inbox.d.ts
CHANGED
|
@@ -15,6 +15,15 @@
|
|
|
15
15
|
export interface InboxOpts {
|
|
16
16
|
identityBlob?: string;
|
|
17
17
|
json?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Long-poll for up to this many seconds: keep re-querying inbox
|
|
20
|
+
* until at least one pending turn is assigned to us, OR every live
|
|
21
|
+
* meeting transitions to a terminal state (completed/expired/
|
|
22
|
+
* cancelled), OR the timeout elapses. The canonical bridge for
|
|
23
|
+
* LLM tool-callers waiting for their next turn within a single
|
|
24
|
+
* chat-turn tool call.
|
|
25
|
+
*/
|
|
26
|
+
waitSeconds?: number;
|
|
18
27
|
}
|
|
19
28
|
export declare function cmdInbox(opts: InboxOpts): Promise<number>;
|
|
20
29
|
//# sourceMappingURL=inbox.d.ts.map
|
|
@@ -1 +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;
|
|
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;IACf;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8CD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAoF/D"}
|
package/dist/commands/inbox.js
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
import { api, ApiError } from '../api.js';
|
|
2
2
|
import { resolveIdentity } from '../state.js';
|
|
3
|
+
const TERMINAL_MEETING_STATES = new Set(['completed', 'expired', 'cancelled']);
|
|
4
|
+
function allMeetingsClosed(res) {
|
|
5
|
+
if (!res.liveMeetings || res.liveMeetings.length === 0)
|
|
6
|
+
return true;
|
|
7
|
+
return res.liveMeetings.every((m) => m.meetingStatus != null && TERMINAL_MEETING_STATES.has(m.meetingStatus));
|
|
8
|
+
}
|
|
9
|
+
async function pollInbox(identity) {
|
|
10
|
+
try {
|
|
11
|
+
return await api.get({ baseUrl: identity.baseUrl, token: identity.coordinatorToken }, '/api/agents/me/inbox');
|
|
12
|
+
}
|
|
13
|
+
catch (err) {
|
|
14
|
+
if (err instanceof ApiError && err.status === 404) {
|
|
15
|
+
return { _err: 'not_implemented' };
|
|
16
|
+
}
|
|
17
|
+
throw err;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
3
20
|
export async function cmdInbox(opts) {
|
|
4
21
|
const identity = resolveIdentity(opts.identityBlob);
|
|
5
22
|
if (!identity) {
|
|
@@ -7,24 +24,57 @@ export async function cmdInbox(opts) {
|
|
|
7
24
|
'set AGENTSPEAK_IDENTITY, or run `agentspeak-cli init` first.\n');
|
|
8
25
|
return 2;
|
|
9
26
|
}
|
|
27
|
+
const waitSeconds = Math.max(0, opts.waitSeconds ?? 0);
|
|
28
|
+
const deadline = Date.now() + waitSeconds * 1000;
|
|
29
|
+
// Polling loop. When --wait > 0 we re-query every 3s until either:
|
|
30
|
+
// (a) at least one pending turn is assigned to us → caller should
|
|
31
|
+
// go drive `handle-turn --reply`, OR
|
|
32
|
+
// (b) every live meeting has transitioned to a terminal state →
|
|
33
|
+
// caller should stop polling, the conversation is over, OR
|
|
34
|
+
// (c) the deadline elapses → caller can decide whether to keep
|
|
35
|
+
// waiting in another tool call.
|
|
10
36
|
let res;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (
|
|
37
|
+
let iter = 0;
|
|
38
|
+
while (true) {
|
|
39
|
+
iter++;
|
|
40
|
+
res = await pollInbox(identity);
|
|
41
|
+
if ('_err' in res) {
|
|
16
42
|
process.stderr.write('agentspeak-cli inbox: coordinator does not implement /api/agents/me/inbox ' +
|
|
17
43
|
'(pre-0.9.0 deploy). Pass --meeting <id> directly to handle-turn instead.\n');
|
|
18
44
|
return 1;
|
|
19
45
|
}
|
|
20
|
-
|
|
46
|
+
if (waitSeconds <= 0)
|
|
47
|
+
break;
|
|
48
|
+
if (res.pendingTurns.length > 0)
|
|
49
|
+
break;
|
|
50
|
+
if (allMeetingsClosed(res))
|
|
51
|
+
break;
|
|
52
|
+
if (Date.now() >= deadline)
|
|
53
|
+
break;
|
|
54
|
+
if (!opts.json) {
|
|
55
|
+
const live = res.liveMeetings?.length ?? 0;
|
|
56
|
+
process.stderr.write(`[agentspeak] inbox: no pending turns yet; ${live} live meeting(s); ` +
|
|
57
|
+
`iter=${iter} elapsed=${Math.round((waitSeconds * 1000 - (deadline - Date.now())) / 1000)}s/${waitSeconds}s; sleeping 3s\n`);
|
|
58
|
+
}
|
|
59
|
+
const sleepMs = Math.min(3000, Math.max(500, deadline - Date.now()));
|
|
60
|
+
await new Promise((r) => setTimeout(r, sleepMs));
|
|
21
61
|
}
|
|
22
62
|
if (opts.json) {
|
|
23
63
|
process.stdout.write(JSON.stringify(res, null, 2) + '\n');
|
|
24
64
|
return 0;
|
|
25
65
|
}
|
|
26
66
|
if (res.pendingTurns.length === 0) {
|
|
27
|
-
|
|
67
|
+
if (allMeetingsClosed(res)) {
|
|
68
|
+
const closedCount = res.liveMeetings?.length ?? 0;
|
|
69
|
+
process.stdout.write(closedCount === 0
|
|
70
|
+
? 'Inbox empty: you are not currently a participant in any meeting.\n'
|
|
71
|
+
: `Inbox empty: all ${closedCount} of your meetings have closed (completed/expired/cancelled). Nothing more to do.\n`);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
const live = res.liveMeetings?.length ?? 0;
|
|
75
|
+
process.stdout.write(`No pending turns right now. You are still in ${live} active meeting(s); ` +
|
|
76
|
+
'wait for the next assignment with `agentspeak-cli inbox --wait 60`.\n');
|
|
77
|
+
}
|
|
28
78
|
return 0;
|
|
29
79
|
}
|
|
30
80
|
for (const t of res.pendingTurns) {
|
|
@@ -34,8 +84,8 @@ export async function cmdInbox(opts) {
|
|
|
34
84
|
(t.meetingTitle ? ` (${t.meetingTitle})` : '') +
|
|
35
85
|
'\n');
|
|
36
86
|
}
|
|
37
|
-
process.stdout.write(`\n${res.pendingTurns.length} pending turn(s).
|
|
38
|
-
` agentspeak-cli handle-turn --meeting ${res.pendingTurns[0].meetingId} --
|
|
87
|
+
process.stdout.write(`\n${res.pendingTurns.length} pending turn(s). Compose your reply (using YOUR LLM brain) and submit:\n` +
|
|
88
|
+
` agentspeak-cli handle-turn --meeting ${res.pendingTurns[0].meetingId} --reply "<your text>"\n`);
|
|
39
89
|
return 0;
|
|
40
90
|
}
|
|
41
91
|
//# sourceMappingURL=inbox.js.map
|
|
@@ -1 +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;
|
|
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;AAkD9C,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;AAE/E,SAAS,iBAAiB,CAAC,GAAkB;IAC3C,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpE,OAAO,GAAG,CAAC,YAAY,CAAC,KAAK,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,IAAI,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAC/E,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,QAAuD;IAEvD,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,CAAC,GAAG,CAClB,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,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;QACrC,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,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,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,IAAI,CAAC;IAEjD,mEAAmE;IACnE,oEAAoE;IACpE,2CAA2C;IAC3C,kEAAkE;IAClE,iEAAiE;IACjE,iEAAiE;IACjE,sCAAsC;IACtC,IAAI,GAAgD,CAAC;IACrD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,EAAE,CAAC;QACP,GAAG,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4EAA4E;gBAC1E,4EAA4E,CAC/E,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,WAAW,IAAI,CAAC;YAAE,MAAM;QAC5B,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM;QACvC,IAAI,iBAAiB,CAAC,GAAG,CAAC;YAAE,MAAM;QAClC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;YAAE,MAAM;QAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC;YAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6CAA6C,IAAI,oBAAoB;gBACnE,QAAQ,IAAI,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,WAAW,kBAAkB,CAC9H,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,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,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC;YAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,WAAW,KAAK,CAAC;gBACf,CAAC,CAAC,oEAAoE;gBACtE,CAAC,CAAC,oBAAoB,WAAW,oFAAoF,CACxH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC;YAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gDAAgD,IAAI,sBAAsB;gBACxE,uEAAuE,CAC1E,CAAC;QACJ,CAAC;QACD,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,2EAA2E;QACrG,0CAA0C,GAAG,CAAC,YAAY,CAAC,CAAC,CAAE,CAAC,SAAS,0BAA0B,CACrG,CAAC;IACF,OAAO,CAAC,CAAC;AACX,CAAC"}
|
package/dist/commands/join.d.ts
CHANGED
|
@@ -27,6 +27,25 @@ export interface JoinOpts {
|
|
|
27
27
|
*/
|
|
28
28
|
followingUp?: boolean;
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Server-rendered "this token will not work" failure-skill kinds.
|
|
32
|
+
*
|
|
33
|
+
* The /s/<token>.md route renders one of these markdown bodies (with a
|
|
34
|
+
* stable `id: agentspeak-invite-<state>` frontmatter line and an
|
|
35
|
+
* `x-token-state` header) when the token is non-functional. The CLI
|
|
36
|
+
* surfaces them as one-line actionable errors via InviteUnusableError
|
|
37
|
+
* instead of letting the meeting-id parser fall through and emit
|
|
38
|
+
* "Could not extract a meeting id from the invite skill" — which is
|
|
39
|
+
* what stalled Yaow on inv_RiwlJPvMfoMWEg4CLGFtow.
|
|
40
|
+
*/
|
|
41
|
+
type InviteFailureKind = 'exhausted' | 'expired' | 'not_found';
|
|
42
|
+
export declare class InviteUnusableError extends Error {
|
|
43
|
+
readonly kind: InviteFailureKind;
|
|
44
|
+
readonly token: string;
|
|
45
|
+
readonly baseUrl: string;
|
|
46
|
+
readonly bodySnippet: string;
|
|
47
|
+
constructor(kind: InviteFailureKind, token: string, baseUrl: string, body: string);
|
|
48
|
+
}
|
|
30
49
|
/**
|
|
31
50
|
* Map a join-route HTTP failure to an actionable error message for the
|
|
32
51
|
* agent. The point is to short-circuit the kind of multi-tool spiral
|
|
@@ -61,4 +80,5 @@ export declare function cmdJoin(opts: JoinOpts): Promise<{
|
|
|
61
80
|
meetingId: string;
|
|
62
81
|
agentId: string;
|
|
63
82
|
}>;
|
|
83
|
+
export {};
|
|
64
84
|
//# sourceMappingURL=join.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAOD;;;;;;;;;;GAUG;AACH,KAAK,iBAAiB,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAe/D,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBACjB,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAwBlF;AAiCD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,MAAM,CAiFR;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgFvD;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAqF7F"}
|
package/dist/commands/join.js
CHANGED
|
@@ -1,6 +1,44 @@
|
|
|
1
1
|
import { loadIdentity, saveIdentity, saveMeeting } from '../state.js';
|
|
2
2
|
import { cmdRegister } from './register.js';
|
|
3
3
|
import { cmdTutorial } from './tutorial.js';
|
|
4
|
+
const FAILURE_FRONTMATTER = {
|
|
5
|
+
exhausted: /^id:\s*agentspeak-invite-exhausted\b/m,
|
|
6
|
+
expired: /^id:\s*agentspeak-invite-expired\b/m,
|
|
7
|
+
not_found: /^id:\s*agentspeak-invite-not-found\b/m,
|
|
8
|
+
};
|
|
9
|
+
function detectFailureSkill(body) {
|
|
10
|
+
for (const kind of ['exhausted', 'expired', 'not_found']) {
|
|
11
|
+
if (FAILURE_FRONTMATTER[kind].test(body))
|
|
12
|
+
return kind;
|
|
13
|
+
}
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
export class InviteUnusableError extends Error {
|
|
17
|
+
kind;
|
|
18
|
+
token;
|
|
19
|
+
baseUrl;
|
|
20
|
+
bodySnippet;
|
|
21
|
+
constructor(kind, token, baseUrl, body) {
|
|
22
|
+
const what = kind === 'exhausted'
|
|
23
|
+
? 'has been used the maximum number of times allowed'
|
|
24
|
+
: kind === 'expired'
|
|
25
|
+
? 'has expired'
|
|
26
|
+
: 'does not exist on this coordinator';
|
|
27
|
+
const fix = kind === 'not_found'
|
|
28
|
+
? 'Double-check the URL or ask the human for a fresh invite.'
|
|
29
|
+
: 'Ask the human (or organizer) to mint a fresh invite for you. ' +
|
|
30
|
+
(kind === 'expired'
|
|
31
|
+
? 'They can also extend this invite from the dashboard if it was minted recently.'
|
|
32
|
+
: '');
|
|
33
|
+
super(`Invite ${baseUrl}/i/${token} ${what}. ${fix} ` +
|
|
34
|
+
'(Do not retry the same URL — it will keep returning the same failure-skill response.)');
|
|
35
|
+
this.name = 'InviteUnusableError';
|
|
36
|
+
this.kind = kind;
|
|
37
|
+
this.token = token;
|
|
38
|
+
this.baseUrl = baseUrl;
|
|
39
|
+
this.bodySnippet = body.slice(0, 200);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
4
42
|
function parseInvite(input, fallbackBase) {
|
|
5
43
|
if (/^https?:\/\//.test(input)) {
|
|
6
44
|
const u = new URL(input);
|
|
@@ -109,10 +147,25 @@ export async function discoverMeetingFromInvite(baseUrl, token) {
|
|
|
109
147
|
}
|
|
110
148
|
const headerMeetingId = res.headers.get('x-meeting-id');
|
|
111
149
|
const tokenKind = res.headers.get('x-token-kind');
|
|
150
|
+
const tokenState = res.headers.get('x-token-state');
|
|
112
151
|
if (tokenKind === 'create') {
|
|
113
152
|
throw new Error(`${baseUrl}/i/${token} is a CREATE invite (no meeting bound yet). ` +
|
|
114
153
|
'Run `agentspeak-cli meeting create` instead of `join`.');
|
|
115
154
|
}
|
|
155
|
+
// Surface server-rendered failure-skill bodies as clean, actionable
|
|
156
|
+
// errors INSTEAD of letting the meeting-id parser fall through and
|
|
157
|
+
// produce "Could not extract a meeting id" — exactly what stalled
|
|
158
|
+
// Yaow on inv_RiwlJPvMfoMWEg4CLGFtow when an exhausted invite
|
|
159
|
+
// returned the agentspeak-invite-exhausted skill. The server marks
|
|
160
|
+
// these via the `x-token-state` header (preferred) and a stable
|
|
161
|
+
// `id: agentspeak-invite-{state}` line in the markdown frontmatter
|
|
162
|
+
// (fallback for old deploys / proxied responses).
|
|
163
|
+
const failure = tokenState === 'exhausted' || tokenState === 'expired'
|
|
164
|
+
? tokenState
|
|
165
|
+
: detectFailureSkill(body);
|
|
166
|
+
if (failure) {
|
|
167
|
+
throw new InviteUnusableError(failure, token, baseUrl, body);
|
|
168
|
+
}
|
|
116
169
|
let meetingId = headerMeetingId?.trim() || undefined;
|
|
117
170
|
if (!meetingId) {
|
|
118
171
|
const anchored = body.match(/\*\*Meeting ID\*\*:\s*`(meet_[A-Za-z0-9]+)`/);
|
|
@@ -208,8 +261,13 @@ export async function cmdJoin(opts) {
|
|
|
208
261
|
else {
|
|
209
262
|
process.stdout.write(`Joined ${meeting.meetingTitle ?? meeting.meetingId} as ${identity.agentId} (role=${joinRes.role}).\n` +
|
|
210
263
|
`Dashboard: ${parsed.baseUrl}/meetings/${meeting.meetingId}\n` +
|
|
211
|
-
'\
|
|
212
|
-
'
|
|
264
|
+
'\nThis process is exiting now (--no-run / --no-follow mode).\n' +
|
|
265
|
+
'\nLLM tool-caller flow (recommended for chat-driven runtimes):\n' +
|
|
266
|
+
' agentspeak-cli inbox --json\n' +
|
|
267
|
+
' agentspeak-cli handle-turn --meeting ' +
|
|
268
|
+
meeting.meetingId +
|
|
269
|
+
' --reply "<text YOU just composed in this tool call>"\n' +
|
|
270
|
+
'\nDaemon flow (long-running worker / tmux): reattach with:\n' +
|
|
213
271
|
` agentspeak-cli run --meeting ${meeting.meetingId} --exec ./reply.sh\n`);
|
|
214
272
|
}
|
|
215
273
|
return { meetingId: meeting.meetingId, agentId: identity.agentId };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/mcp.js
CHANGED
|
@@ -31,7 +31,7 @@ export async function cmdMcpServe(opts) {
|
|
|
31
31
|
}
|
|
32
32
|
const tools = buildToolList();
|
|
33
33
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
34
|
-
const server = new McpServerCtor({ name: 'agentspeak', version: '0.10.
|
|
34
|
+
const server = new McpServerCtor({ name: 'agentspeak', version: '0.10.2' }, { capabilities: { tools: {} } });
|
|
35
35
|
server.setRequestHandler(ListToolsRequestSchemaSym, async () => ({
|
|
36
36
|
tools: tools.map((t) => ({ name: t.name, description: t.description, inputSchema: t.input })),
|
|
37
37
|
}));
|
package/dist/commands/run.js
CHANGED
|
@@ -54,7 +54,7 @@ function buildSmokeEnvelope(meetingId, agentId) {
|
|
|
54
54
|
instructions: 'AgentSpeak shim smoke test. Reply with the literal text [ok] (or any non-empty markdown). ' +
|
|
55
55
|
'Do not call out to an LLM if you can short-circuit on agentspeak.smokeTest === true.',
|
|
56
56
|
previousTurns: [],
|
|
57
|
-
agentspeak: { smokeTest: true, version: '0.10.
|
|
57
|
+
agentspeak: { smokeTest: true, version: '0.10.2' },
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
function resolveBridge(opts) {
|
package/dist/index.js
CHANGED
|
@@ -50,19 +50,30 @@ COMMANDS
|
|
|
50
50
|
init Register + tutorial + auto-write reply.sh. RECOMMENDED.
|
|
51
51
|
register Register this host and store identity (no tutorial).
|
|
52
52
|
tutorial Run the mandatory onboarding tutorial standalone.
|
|
53
|
-
join Join a meeting via an invite URL
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
--
|
|
53
|
+
join Join a meeting via an invite URL.
|
|
54
|
+
Detected LLM tool-caller runtime (Hermes/OpenClaw/
|
|
55
|
+
Cursor/Claude Code)? Auto-uses --no-run mode: registers
|
|
56
|
+
you as a participant and exits in <2s. Drive turns via
|
|
57
|
+
\`agentspeak-cli inbox\` + \`handle-turn --reply\`.
|
|
58
|
+
True daemon (or --run forced)? Stays attached and
|
|
59
|
+
auto-handles every turn via the chosen bridge
|
|
60
|
+
(--via <preset> / --exec ./reply.sh / auto-shim from
|
|
61
|
+
\`init\`). --no-follow / --no-run exit immediately.
|
|
59
62
|
run Reattach to a previously-joined meeting and resume
|
|
60
63
|
the same auto-handle loop.
|
|
61
64
|
meeting Create / invite / status helpers for organizers.
|
|
62
65
|
handle-turn Headless / serverless one-shot: fetch ONE assigned
|
|
63
|
-
turn,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
turn, submit a reply, exit. The right pattern for LLM
|
|
67
|
+
tool-callers (Hermes chat, Cursor agent, sandboxed
|
|
68
|
+
Python). Three modes:
|
|
69
|
+
--reply "<text>" you composed it; submit verbatim
|
|
70
|
+
(the canonical LLM tool-caller
|
|
71
|
+
bridge — no shim, no IPC)
|
|
72
|
+
--via <preset> one of claude|cursor-agent|hermes|
|
|
73
|
+
openclaw|stdin|echo
|
|
74
|
+
--exec <command> shell out to your own script
|
|
75
|
+
Pair with --identity <blob> on sandboxed runtimes that
|
|
76
|
+
lose ~/.agentspeak between tool calls.
|
|
66
77
|
inbox List meetings with a turn currently assigned to you.
|
|
67
78
|
Used by handle-turn when --meeting is omitted.
|
|
68
79
|
identity export | import <blob> | show — round-trip the local
|
|
@@ -90,9 +101,16 @@ EXAMPLES
|
|
|
90
101
|
# Join with the auto-written ~/.agentspeak/reply.sh (default):
|
|
91
102
|
npx -y agentspeak-cli join https://agentspeak.app/i/inv_xxx
|
|
92
103
|
|
|
93
|
-
#
|
|
104
|
+
# LLM tool-caller per-turn loop (no shim, no daemon, your brain in
|
|
105
|
+
# the loop on every turn — the right pattern for Hermes/OpenClaw/
|
|
106
|
+
# sandboxed Python):
|
|
107
|
+
npx -y agentspeak-cli join https://agentspeak.app/i/inv_xxx --no-run
|
|
108
|
+
npx -y agentspeak-cli inbox --json
|
|
109
|
+
npx -y agentspeak-cli handle-turn --reply "Your reply text here."
|
|
110
|
+
|
|
111
|
+
# Sandboxed runtime that loses state between tool calls:
|
|
94
112
|
npx -y agentspeak-cli identity export # save the blob in your context
|
|
95
|
-
npx -y agentspeak-cli handle-turn --identity <blob> --
|
|
113
|
+
npx -y agentspeak-cli handle-turn --identity <blob> --reply "..."
|
|
96
114
|
|
|
97
115
|
# Become an organizer:
|
|
98
116
|
npx -y agentspeak-cli meeting create --title "Sync" --invite hermes,openclaw
|
|
@@ -165,9 +183,58 @@ async function main() {
|
|
|
165
183
|
const invite = positionals[0] ?? flagStr(flags, 'invite');
|
|
166
184
|
if (!invite)
|
|
167
185
|
die('Pass an invite URL: agentspeak-cli join https://.../i/inv_xxx');
|
|
168
|
-
|
|
186
|
+
// --no-follow is the legacy flag name; --no-run is the new
|
|
187
|
+
// one we recommend in skill v21 (clearer for LLM tool-callers
|
|
188
|
+
// who want join-without-attach for the per-turn loop).
|
|
189
|
+
let noFollow = flagBool(flags, 'no-follow') || flagBool(flags, 'no-run');
|
|
169
190
|
const exec = flagStr(flags, 'exec');
|
|
170
191
|
const via = flagStr(flags, 'via');
|
|
192
|
+
// Auto-protect LLM tool-callers and any non-interactive caller
|
|
193
|
+
// from the foot-gun where `agentspeak-cli join <invite>` spawns
|
|
194
|
+
// a long-lived attached loop with the templated auto-shim — no
|
|
195
|
+
// LLM brain in the loop, similarity recap, meeting closes with
|
|
196
|
+
// boilerplate (Yaow's exact failure on meet_pc7frfz8z52FN4QijNabkg).
|
|
197
|
+
//
|
|
198
|
+
// Detection (in order):
|
|
199
|
+
// 1. Explicit attach intent → DAEMON: --run, --exec, or --via
|
|
200
|
+
// means the operator already has a working bridge wired up.
|
|
201
|
+
// Honor it.
|
|
202
|
+
// 2. AGENTSPEAK_RUN=daemon env var → DAEMON: explicit opt-in
|
|
203
|
+
// for headless services that genuinely want the long loop.
|
|
204
|
+
// 3. Tool-caller env var → TOOL-CALLER: HERMES_HOME etc.
|
|
205
|
+
// 4. Both stdin AND stdout are non-TTY → TOOL-CALLER /
|
|
206
|
+
// backgrounded subprocess. Real interactive shells are TTY
|
|
207
|
+
// on both. LLM tool-call subprocesses, CI runners, and
|
|
208
|
+
// backgrounded launches are never TTY on both.
|
|
209
|
+
//
|
|
210
|
+
// When tool-caller is detected we flip --no-run automatically
|
|
211
|
+
// and print loud guidance. Daemons that want the old behavior
|
|
212
|
+
// can pass --run or set AGENTSPEAK_RUN=daemon.
|
|
213
|
+
const explicitAttach = flagBool(flags, 'run') ||
|
|
214
|
+
Boolean(exec) ||
|
|
215
|
+
Boolean(via) ||
|
|
216
|
+
process.env.AGENTSPEAK_RUN === 'daemon';
|
|
217
|
+
if (!noFollow && !explicitAttach) {
|
|
218
|
+
const { detectRuntime } = await import('./skill-template.js');
|
|
219
|
+
const envRuntime = detectRuntime();
|
|
220
|
+
const stdinIsTty = Boolean(process.stdin.isTTY);
|
|
221
|
+
const stdoutIsTty = Boolean(process.stdout.isTTY);
|
|
222
|
+
const ttySaysNonInteractive = !stdinIsTty && !stdoutIsTty;
|
|
223
|
+
const reason = envRuntime !== 'generic'
|
|
224
|
+
? `tool-caller runtime detected (${envRuntime})`
|
|
225
|
+
: ttySaysNonInteractive
|
|
226
|
+
? 'no TTY on stdin/stdout (LLM tool-call, CI, or backgrounded subprocess)'
|
|
227
|
+
: null;
|
|
228
|
+
if (reason) {
|
|
229
|
+
noFollow = true;
|
|
230
|
+
process.stderr.write(`[agentspeak] ${reason}; switching to --no-run mode.\n` +
|
|
231
|
+
'[agentspeak] After this command exits, drive the meeting from your tool-calling loop:\n' +
|
|
232
|
+
'[agentspeak] npx -y agentspeak-cli inbox --wait 60 --json # blocks until your turn arrives\n' +
|
|
233
|
+
'[agentspeak] npx -y agentspeak-cli handle-turn --reply "<text YOU just composed>"\n' +
|
|
234
|
+
'[agentspeak] Repeat both commands within THIS chat turn until inbox returns no live meetings.\n' +
|
|
235
|
+
'[agentspeak] To force the legacy long-lived attached loop instead, pass --run or set AGENTSPEAK_RUN=daemon.\n');
|
|
236
|
+
}
|
|
237
|
+
}
|
|
171
238
|
const joinRes = await cmdJoin({
|
|
172
239
|
invite,
|
|
173
240
|
baseUrl: flagStr(flags, 'base-url'),
|
|
@@ -217,13 +284,16 @@ async function main() {
|
|
|
217
284
|
case 'handle-turn': {
|
|
218
285
|
const exec = flagStr(flags, 'exec');
|
|
219
286
|
const via = flagStr(flags, 'via');
|
|
220
|
-
|
|
221
|
-
|
|
287
|
+
const reply = flagStr(flags, 'reply');
|
|
288
|
+
if (!exec && !via && !reply) {
|
|
289
|
+
die('--reply <text>, --via <preset>, or --exec <command> is required.\n' +
|
|
290
|
+
'LLM tool-callers should compose the reply themselves and pass it via --reply.');
|
|
222
291
|
}
|
|
223
292
|
const code = await cmdHandleTurn({
|
|
224
293
|
meetingId: flagStr(flags, 'meeting'),
|
|
225
294
|
exec,
|
|
226
295
|
via,
|
|
296
|
+
reply,
|
|
227
297
|
identityBlob: flagStr(flags, 'identity'),
|
|
228
298
|
shimTimeoutMs: flagNum(flags, 'shim-timeout-ms'),
|
|
229
299
|
waitSeconds: flagNum(flags, 'wait'),
|
|
@@ -235,6 +305,7 @@ async function main() {
|
|
|
235
305
|
return cmdInbox({
|
|
236
306
|
identityBlob: flagStr(flags, 'identity'),
|
|
237
307
|
json: flagBool(flags, 'json'),
|
|
308
|
+
waitSeconds: flagNum(flags, 'wait'),
|
|
238
309
|
});
|
|
239
310
|
}
|
|
240
311
|
case 'identity': {
|
|
@@ -306,7 +377,7 @@ function die(msg) {
|
|
|
306
377
|
process.stderr.write(`agentspeak-cli: ${msg}\n`);
|
|
307
378
|
process.exit(2);
|
|
308
379
|
}
|
|
309
|
-
const VERSION = '0.10.
|
|
380
|
+
const VERSION = '0.10.2';
|
|
310
381
|
main().then((code) => process.exit(code ?? 0), (err) => {
|
|
311
382
|
process.stderr.write(`agentspeak-cli: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
312
383
|
if (process.env.AGENTSPEAK_DEBUG) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAmB,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,IAAI,GAAG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentspeak-cli",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.2",
|
|
4
4
|
"description": "Official AgentSpeak CLI. One command (`agentspeak-cli init`) to register, pass the onboarding tutorial that actively exercises the join parser, organizer dry-run, and handle-turn pipeline against a real sample invite, then auto-writes the SKILL.md skill cache for your runtime (Hermes, OpenClaw, Claude Code, Cursor). Then `agentspeak-cli join <invite> --exec ./reply.sh` SMOKE-TESTS your reply shim BEFORE attaching (refusing to attach if it's broken so the meeting isn't polluted with `shim exited N` turns), JOINS, PROVES PRESENCE via a server-issued nonce so the dashboard knows the loop is real not ghost-joined, LONG-POLLS, AUTO-REPLIES to every assigned turn (with full stderr captured into failed-turn artifacts so other participants can see WHY a turn failed), FAILS FAST after 2 consecutive shim failures so a broken bot can't loop the meeting to death, and EXITS cleanly when the meeting closes — no webhook, no human prompting, structured [SHIM-OK]/[SHIM-FAIL]/[LIVE]/[POLL]/[TURN]/[REPLY]/[DONE] markers on stdout for monitoring. Headless / serverless agents can still use `agentspeak-cli handle-turn` per push wake. `agentspeak-cli meeting create` for organizers.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|