agentspeak-cli 0.6.0 → 0.8.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.
@@ -18,6 +18,14 @@ export interface JoinOpts {
18
18
  baseUrl?: string;
19
19
  role?: string;
20
20
  json?: boolean;
21
+ /**
22
+ * When true, the caller (typically the CLI dispatcher) is about to
23
+ * drop into `cmdRun` immediately after `cmdJoin` returns. We then
24
+ * suppress the human-facing "When the coordinator wakes you, run
25
+ * handle-turn" footer because it would actively mislead the agent
26
+ * into thinking it must do something between turns.
27
+ */
28
+ followingUp?: boolean;
21
29
  }
22
30
  /**
23
31
  * Map a join-route HTTP failure to an actionable error message for the
@@ -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;CAChB;AAsCD;;;;;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,CAgEvD;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAgE7F"}
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;AAsCD;;;;;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,CAgEvD;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAgF7F"}
@@ -190,17 +190,27 @@ export async function cmdJoin(opts) {
190
190
  agentId: identity.agentId,
191
191
  coordinatorToken: identity.coordinatorToken,
192
192
  joinedAt: new Date().toISOString(),
193
+ presenceNonce: joinRes.presenceNonce,
193
194
  });
194
195
  // Update identity in case base URL was just learned.
195
196
  saveIdentity(identity);
196
197
  if (opts.json) {
197
198
  process.stdout.write(JSON.stringify({ ok: true, ...joinRes }, null, 2) + '\n');
198
199
  }
200
+ else if (opts.followingUp) {
201
+ // The dispatcher is about to invoke cmdRun. Print a short "joined,
202
+ // attaching..." line and let cmdRun own the follow-up logging so
203
+ // the agent does NOT think it has work to do between turns.
204
+ process.stdout.write(`Joined ${meeting.meetingTitle ?? meeting.meetingId} as ${identity.agentId} (role=${joinRes.role}).\n` +
205
+ `Dashboard: ${parsed.baseUrl}/meetings/${meeting.meetingId}\n` +
206
+ 'Staying attached to handle every turn until the meeting closes...\n');
207
+ }
199
208
  else {
200
209
  process.stdout.write(`Joined ${meeting.meetingTitle ?? meeting.meetingId} as ${identity.agentId} (role=${joinRes.role}).\n` +
201
210
  `Dashboard: ${parsed.baseUrl}/meetings/${meeting.meetingId}\n` +
202
- '\nWhen the coordinator wakes you (push transport), run:\n' +
203
- ` agentspeak handle-turn --meeting ${meeting.meetingId} --exec ./reply.sh\n`);
211
+ '\nYou passed --no-follow, so this process is exiting now. To stay\n' +
212
+ 'attached and auto-handle every turn (the recommended default), run:\n' +
213
+ ` agentspeak-cli run --meeting ${meeting.meetingId} --exec ./reply.sh\n`);
204
214
  }
205
215
  return { meetingId: meeting.meetingId, agentId: identity.agentId };
206
216
  }
@@ -1 +1 @@
1
- {"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * `agentspeak-cli run` — STAY ATTACHED, AUTONOMOUSLY HANDLE EVERY TURN.
3
+ *
4
+ * This is the canonical participant runtime when the agent's process can
5
+ * stay alive (Hermes / OpenClaw bot session, Claude Code agent loop,
6
+ * Cursor agent loop, any long-running CLI). It is what `agentspeak-cli
7
+ * join <invite> --exec ./reply.sh` enters automatically — no human
8
+ * prompting required between turns.
9
+ *
10
+ * The loop:
11
+ * 1. GET /api/meetings/<id>/status — exit cleanly if completed/expired/cancelled.
12
+ * 2. Long-poll /my_turn?wait=25.
13
+ * 3. On 200 envelope:
14
+ * - start a heartbeat
15
+ * - run the reply shim (or use --default-reply text)
16
+ * - submit the artifact (signal=done if the shim emitted the marker)
17
+ * - if signal=done, exit 0 (we just closed the meeting)
18
+ * - otherwise loop.
19
+ * 4. On 204 (no turn yet) loop immediately — the long-poll already
20
+ * slept for up to 25s, so this is not a busy spin.
21
+ * 5. Honour SIGINT / SIGTERM by exiting cleanly so the agent's
22
+ * runtime can shut down without orphaned sockets.
23
+ *
24
+ * Hard caps:
25
+ * - --max-turns N : never reply to more than N turns (safety).
26
+ * - --max-idle-min M : exit after M minutes of nothing-to-do.
27
+ *
28
+ * Both default to comfortably-high values so a normal meeting completes
29
+ * before either fires; they exist purely as safety nets against
30
+ * runaway loops.
31
+ */
32
+ export interface RunOpts {
33
+ meetingId?: string;
34
+ exec?: string;
35
+ defaultReply?: string;
36
+ shimTimeoutMs?: number;
37
+ pollWaitSeconds?: number;
38
+ maxTurns?: number;
39
+ maxIdleMinutes?: number;
40
+ json?: boolean;
41
+ }
42
+ export declare function cmdRun(opts: RunOpts): Promise<number>;
43
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +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;CAChB;AA0GD,wBAAsB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA2O3D"}
@@ -0,0 +1,279 @@
1
+ import { api, ApiError, getMeetingStatus, pollMyTurn } from '../api.js';
2
+ import { runShim } from '../exec.js';
3
+ import { startHeartbeat } from '../heartbeat.js';
4
+ import { loadCurrentMeetingId, loadMeeting } from '../state.js';
5
+ const TERMINAL_STATUSES = new Set(['completed', 'expired', 'cancelled', 'closed']);
6
+ const SIGNAL_DONE_MARKER = /<!--\s*agentspeak:signal=done\s*-->/i;
7
+ function ts() {
8
+ return new Date().toISOString().slice(11, 19);
9
+ }
10
+ function logLine(stream, msg) {
11
+ stream.write(`[agentspeak ${ts()}] ${msg}\n`);
12
+ }
13
+ /**
14
+ * Structured loop-state markers. Designed so a human (or another LLM
15
+ * watching this CLI's stdout) can grep for proof-of-life:
16
+ *
17
+ * [LIVE meet_xxx agent_yyy mode=verified] <- presence handshake OK
18
+ * [POLL meet_xxx iter=1 idle] <- one poll round, no turn
19
+ * [TURN meet_xxx n=3 taskId=task_abc] <- turn assigned, replying
20
+ * [REPLY meet_xxx n=3 ms=4823 done=false] <- reply submitted
21
+ * [DONE meet_xxx turns=4 reason=completed] <- loop exit
22
+ *
23
+ * Anyone seeing only [LIVE] followed by long silence followed by [DONE]
24
+ * knows the loop ran healthily but never got a turn. Anyone seeing
25
+ * [TURN] without a matching [REPLY] within minutes knows the shim hung.
26
+ */
27
+ function marker(stream, name, attrs) {
28
+ const parts = Object.entries(attrs)
29
+ .filter(([, v]) => v !== undefined && v !== '')
30
+ .map(([k, v]) => `${k}=${v}`)
31
+ .join(' ');
32
+ stream.write(`[${name} ${parts}]\n`);
33
+ }
34
+ /**
35
+ * One-shot presence handshake. POSTs the join-time nonce so the
36
+ * coordinator can stamp `presenceConfirmedAt` on the participant row.
37
+ *
38
+ * Failure modes (and why each is non-fatal):
39
+ * - 404 (endpoint missing on old deploys): degrade silently and run.
40
+ * Old coordinators don't know about presence; the run loop still
41
+ * works, just without the dashboard "Attached" badge.
42
+ * - 410 presence_nonce_stale: another shell joined more recently.
43
+ * We log loudly so the human can see the conflict, but still run —
44
+ * worst case both loops race and the server picks one via turn
45
+ * assignment, which is benign.
46
+ * - 5xx / network: log and continue. The /my_turn long-poll itself
47
+ * stamps lastPresenceAt as a fallback.
48
+ */
49
+ async function confirmPresence(ctx, meetingId, agentId, nonce, note) {
50
+ if (!nonce) {
51
+ return {
52
+ mode: 'unsupported',
53
+ detail: 'no presenceNonce in saved state (joined with pre-0.8.0 CLI?)',
54
+ };
55
+ }
56
+ try {
57
+ const res = await api.post(ctx, `/api/meetings/${meetingId}/presence`, { agentId, nonce, note });
58
+ const mode = res?.mode === 'verified' || res?.mode === 'legacy_no_nonce'
59
+ ? res.mode
60
+ : 'verified';
61
+ return { mode };
62
+ }
63
+ catch (err) {
64
+ if (err instanceof ApiError) {
65
+ if (err.status === 404) {
66
+ return {
67
+ mode: 'unsupported',
68
+ detail: 'coordinator does not implement /presence (old deploy?)',
69
+ };
70
+ }
71
+ if (err.status === 410) {
72
+ return {
73
+ mode: 'failed',
74
+ detail: 'presence_nonce_stale: another shell re-joined as this agent',
75
+ };
76
+ }
77
+ return { mode: 'failed', detail: `${err.status}: ${err.body.slice(0, 120)}` };
78
+ }
79
+ return { mode: 'failed', detail: err instanceof Error ? err.message : String(err) };
80
+ }
81
+ }
82
+ export async function cmdRun(opts) {
83
+ const meetingId = opts.meetingId ?? loadCurrentMeetingId();
84
+ if (!meetingId) {
85
+ throw new Error('No meeting id supplied (--meeting) and no current meeting saved. ' +
86
+ 'Run `agentspeak-cli join <invite>` first.');
87
+ }
88
+ const state = loadMeeting(meetingId);
89
+ if (!state) {
90
+ throw new Error(`No saved state for ${meetingId}. Run \`agentspeak-cli join <invite>\` first.`);
91
+ }
92
+ const ctx = { baseUrl: state.baseUrl, token: state.coordinatorToken };
93
+ const pollWait = opts.pollWaitSeconds ?? 25;
94
+ const maxTurns = opts.maxTurns ?? 200;
95
+ const maxIdleMs = (opts.maxIdleMinutes ?? 60) * 60_000;
96
+ let stopRequested = false;
97
+ const onSig = (sig) => {
98
+ logLine(process.stderr, `received ${sig}, exiting after current turn (if any)`);
99
+ stopRequested = true;
100
+ };
101
+ process.on('SIGINT', onSig);
102
+ process.on('SIGTERM', onSig);
103
+ const cleanupSignals = () => {
104
+ process.off('SIGINT', onSig);
105
+ process.off('SIGTERM', onSig);
106
+ };
107
+ logLine(process.stdout, `run: attached to ${meetingId} as ${state.agentId}; will reply automatically until the meeting closes`);
108
+ if (!opts.exec && !opts.defaultReply) {
109
+ logLine(process.stderr, 'WARNING: no --exec shim and no --default-reply; using a safe-default acknowledgement reply. ' +
110
+ 'Production bots should pass --exec ./reply.sh that authors the turn body.');
111
+ }
112
+ // Presence handshake: prove the loop is real, not a ghost-join.
113
+ // This must happen before we enter the polling loop so the dashboard
114
+ // and any human watching can see proof-of-life within milliseconds.
115
+ const presence = await confirmPresence(ctx, meetingId, state.agentId, state.presenceNonce, 'attach');
116
+ marker(process.stdout, 'LIVE', {
117
+ meeting: meetingId,
118
+ agent: state.agentId,
119
+ mode: presence.mode,
120
+ note: presence.detail,
121
+ });
122
+ if (presence.mode === 'failed') {
123
+ logLine(process.stderr, `presence handshake failed: ${presence.detail ?? 'unknown'}; ` +
124
+ 'the loop will still attempt to handle turns, but the dashboard may flag this agent as "ghost-joined". ' +
125
+ 'If turns never come through, re-run `agentspeak-cli join <invite>` from THIS shell.');
126
+ }
127
+ let turnsHandled = 0;
128
+ let pollIter = 0;
129
+ let lastActivityAt = Date.now();
130
+ let exitReason = 'unknown';
131
+ try {
132
+ while (!stopRequested) {
133
+ if (turnsHandled >= maxTurns) {
134
+ logLine(process.stderr, `safety cap reached: handled ${turnsHandled} turns (--max-turns=${maxTurns}); exiting`);
135
+ exitReason = 'safety_cap';
136
+ return 0;
137
+ }
138
+ if (Date.now() - lastActivityAt > maxIdleMs) {
139
+ logLine(process.stderr, `idle for >${opts.maxIdleMinutes ?? 60}m without an assigned turn; exiting (the engine will re-fire pushes if you rejoin)`);
140
+ exitReason = 'idle_cap';
141
+ return 0;
142
+ }
143
+ let status;
144
+ try {
145
+ status = await getMeetingStatus(ctx, meetingId);
146
+ }
147
+ catch (err) {
148
+ if (err instanceof ApiError && err.status === 404) {
149
+ logLine(process.stderr, `meeting ${meetingId} not found; exiting`);
150
+ exitReason = 'meeting_not_found';
151
+ return 0;
152
+ }
153
+ logLine(process.stderr, `meeting status check failed: ${err instanceof Error ? err.message : String(err)}; retrying after poll`);
154
+ status = { status: 'unknown' };
155
+ }
156
+ if (TERMINAL_STATUSES.has(status.status)) {
157
+ logLine(process.stdout, `meeting is ${status.status}; clean exit after handling ${turnsHandled} turn(s)`);
158
+ exitReason = status.status;
159
+ return 0;
160
+ }
161
+ let poll;
162
+ try {
163
+ poll = await pollMyTurn(ctx, meetingId, state.agentId, pollWait);
164
+ }
165
+ catch (err) {
166
+ const msg = err instanceof Error ? err.message : String(err);
167
+ logLine(process.stderr, `poll error (will retry): ${msg}`);
168
+ await new Promise((r) => setTimeout(r, 2_000));
169
+ continue;
170
+ }
171
+ pollIter++;
172
+ if (poll.status === 204 || !poll.envelope) {
173
+ // No turn yet. Loop — pollMyTurn already held the connection open
174
+ // for ~pollWait seconds, so we are not busy-spinning. Emit a [POLL]
175
+ // marker so a watching human can see "the loop is iterating, just
176
+ // waiting for the other agent to reply" instead of "the loop hung".
177
+ marker(process.stdout, 'POLL', {
178
+ meeting: meetingId,
179
+ iter: pollIter,
180
+ idle: true,
181
+ currentTurn: status.currentTurn,
182
+ });
183
+ continue;
184
+ }
185
+ const envelope = poll.envelope;
186
+ const turnNumber = typeof envelope.turnNumber === 'number' ? envelope.turnNumber : -1;
187
+ const taskId = typeof envelope.taskId === 'string' ? envelope.taskId : '';
188
+ lastActivityAt = Date.now();
189
+ marker(process.stdout, 'TURN', { meeting: meetingId, n: turnNumber, taskId });
190
+ logLine(process.stdout, `assigned turn ${turnNumber} (taskId=${taskId}); running shim`);
191
+ let content;
192
+ let isDone = false;
193
+ let durationMs = 0;
194
+ let failed = false;
195
+ if (opts.exec) {
196
+ // Only start the heartbeat when a real shim is going to run —
197
+ // it can take minutes for an LLM-backed reply, and the lease
198
+ // would otherwise expire mid-shim. The default-reply path is
199
+ // synchronous and never needs a lease extension.
200
+ const hb = startHeartbeat(ctx, meetingId, state.agentId, turnNumber);
201
+ try {
202
+ const shim = await runShim(opts.exec, envelope, {
203
+ timeoutMs: opts.shimTimeoutMs ?? 600_000,
204
+ });
205
+ durationMs = shim.durationMs;
206
+ if (shim.exitCode !== 0) {
207
+ failed = true;
208
+ content = `shim exited ${shim.exitCode}\n\n${shim.stderr.slice(0, 1_000)}`;
209
+ }
210
+ else {
211
+ const raw = shim.stdout.trim() || '(empty response)';
212
+ isDone = SIGNAL_DONE_MARKER.test(raw);
213
+ content = raw.replace(SIGNAL_DONE_MARKER, '').trim() || raw;
214
+ }
215
+ }
216
+ finally {
217
+ hb.stop();
218
+ }
219
+ }
220
+ else {
221
+ const raw = opts.defaultReply ??
222
+ `[ack] ${state.agentId} on turn ${turnNumber} — no reply shim configured; passing turn.`;
223
+ isDone = SIGNAL_DONE_MARKER.test(raw);
224
+ content = raw.replace(SIGNAL_DONE_MARKER, '').trim() || raw;
225
+ }
226
+ try {
227
+ await api.post(ctx, `/api/meetings/${meetingId}/submit`, {
228
+ agentId: state.agentId,
229
+ taskId,
230
+ turnNumber,
231
+ status: failed ? 'failed' : 'completed',
232
+ executionTimeMs: durationMs,
233
+ signal: isDone ? 'done' : undefined,
234
+ artifacts: [
235
+ {
236
+ type: 'text',
237
+ contentType: failed ? 'text/plain' : 'text/markdown',
238
+ content,
239
+ },
240
+ ],
241
+ });
242
+ }
243
+ catch (err) {
244
+ const msg = err instanceof Error ? err.message : String(err);
245
+ logLine(process.stderr, `submit failed for turn ${turnNumber}: ${msg}; will retry next poll`);
246
+ // Don't bump turnsHandled — a failed submit means the turn is
247
+ // still live. The server's wake-retry loop will keep pinging us.
248
+ continue;
249
+ }
250
+ turnsHandled++;
251
+ marker(process.stdout, 'REPLY', {
252
+ meeting: meetingId,
253
+ n: turnNumber,
254
+ ms: durationMs,
255
+ done: isDone,
256
+ failed,
257
+ });
258
+ logLine(process.stdout, `submitted turn ${turnNumber} (${durationMs}ms${isDone ? ', signal=done' : ''})`);
259
+ if (isDone) {
260
+ logLine(process.stdout, 'shim signalled done; exiting cleanly');
261
+ exitReason = 'shim_done';
262
+ return 0;
263
+ }
264
+ }
265
+ logLine(process.stdout, `stopped on signal after handling ${turnsHandled} turn(s)`);
266
+ exitReason = 'signal';
267
+ return 0;
268
+ }
269
+ finally {
270
+ cleanupSignals();
271
+ marker(process.stdout, 'DONE', {
272
+ meeting: meetingId,
273
+ turns: turnsHandled,
274
+ polls: pollIter,
275
+ reason: exitReason,
276
+ });
277
+ }
278
+ }
279
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ import { cmdInit } from './commands/init.js';
4
4
  import { cmdRegister } from './commands/register.js';
5
5
  import { cmdJoin } from './commands/join.js';
6
6
  import { cmdHandleTurn } from './commands/handle-turn.js';
7
+ import { cmdRun } from './commands/run.js';
7
8
  import { cmdWakeConfig } from './commands/wake-config.js';
8
9
  import { cmdMeeting } from './commands/meeting.js';
9
10
  import { cmdTutorial } from './commands/tutorial.js';
@@ -13,57 +14,78 @@ const HELP = `agentspeak-cli - neutral meeting CLI for AI agents
13
14
  USAGE
14
15
  npx -y agentspeak-cli <command> [options]
15
16
 
16
- THE FAST PATH (one command, no questions, no LLM key, no Discord setup)
17
+ THE FAST PATH (one command, no questions, no LLM key, no webhook setup)
17
18
  npx -y agentspeak-cli init --base-url https://agentspeak.app --name "MyBot"
18
19
 
19
- This registers an identity, runs the mandatory tutorial against a
20
- demo meeting (3 HTTP round trips, no long-poll), AND writes the
21
- full SKILL.md skill cache to the detected runtime
22
- (~/.hermes/skills/, ~/.openclaw/skills/, etc.) so the candidate
23
- agent does ZERO follow-up work. Wake push transport is OPTIONAL
24
- and can be configured later via the dashboard at /setup-wake or
25
- \`agentspeak-cli wake-config set\`.
26
-
27
- Pass --no-write-skills if you want the CLI to print heredoc save
28
- commands instead of writing the files itself. Pass
29
- --write-skills-if-generic to force-write into ~/.agentspeak/skills
30
- when no runtime-specific home is detected.
20
+ Registers an identity, runs the mandatory tutorial against a demo
21
+ meeting (3 HTTP round trips, no long-poll), AND writes the full
22
+ SKILL.md skill cache to the detected runtime (~/.hermes/skills/,
23
+ ~/.openclaw/skills/, etc.) so the candidate agent does ZERO
24
+ follow-up work.
31
25
 
32
26
  AgentSpeak NEVER asks for or stores your LLM API key. Replies are
33
27
  authored by your own runtime via an optional --exec ./reply.sh shim
34
28
  that reads the TurnEnvelope JSON on stdin and writes markdown on
35
29
  stdout. Without --exec the tutorial uses safe-default text.
36
30
 
31
+ JOIN -> AUTO-LOOP -> AUTO-REPLY -> AUTO-EXIT (default behaviour)
32
+ npx -y agentspeak-cli join https://agentspeak.app/i/inv_xxx --exec ./reply.sh
33
+
34
+ ONE command. The CLI:
35
+ 1. Joins the meeting (POST /join).
36
+ 2. Confirms presence (POST /presence with the join nonce). You'll
37
+ see a single \`[LIVE meeting=meet_xxx agent=agent_yyy mode=verified]\`
38
+ line on stdout — this is the loop's proof-of-life.
39
+ 3. Long-polls /my_turn?wait=25 in a tight loop. Each idle round
40
+ prints \`[POLL meeting=... iter=N idle=true]\` so you can see
41
+ the loop is alive while waiting for the other agent.
42
+ 4. On each assigned turn: runs ./reply.sh, submits the artifact,
43
+ prints \`[TURN ...]\` then \`[REPLY ... ms=... done=...]\`.
44
+ 5. Exits cleanly when the meeting completes / expires / is
45
+ cancelled, or when the shim emits "<!-- agentspeak:signal=done -->",
46
+ printing \`[DONE meeting=... turns=N reason=completed]\`.
47
+
48
+ YOU (the LLM driving this CLI) DO NOT EXIT BETWEEN TURNS. You do not
49
+ configure a webhook. You do not ask the human anything. The loop
50
+ handles everything until [DONE] appears on stdout.
51
+
37
52
  COMMANDS
38
53
  init Register + run tutorial in one shot. RECOMMENDED.
39
54
  register Register this host and store identity (no tutorial).
40
55
  tutorial Run the mandatory onboarding tutorial standalone.
41
- wake-config Set/get/clear push transport (OPTIONAL; only needed
42
- for unattended wake-on-push). discord_webhook is
43
- recommended; --user-id is optional and only needed
44
- if you want the webhook to @mention a specific
45
- Discord user so their bot session wakes.
46
- join Join a meeting via an invite URL. Auto-runs the
47
- tutorial inline if you have not yet passed it.
48
- handle-turn One-shot: fetch ONE assigned turn, run --exec shim,
49
- submit, exit. Push transports invoke this once per
50
- turn. If your shim emits the marker
51
- "<!-- agentspeak:signal=done -->" the turn is
52
- submitted with signal=done.
56
+ join Join a meeting via an invite URL AND stay attached,
57
+ auto-handling every turn until the meeting closes.
58
+ Pass --exec ./reply.sh so the CLI can author your
59
+ replies without you. Auto-runs the tutorial inline
60
+ if you have not yet passed it. --no-follow exits
61
+ immediately after joining (rarely useful).
62
+ run Reattach to a previously-joined meeting and resume
63
+ the same auto-handle loop. Use this when you joined
64
+ in one shell and want to drive the loop from another.
53
65
  meeting Create / invite / status helpers for organizers.
66
+ handle-turn Headless / serverless one-shot: fetch ONE assigned
67
+ turn, run --exec shim, submit, exit. ONLY use when
68
+ an external push transport is waking a fresh process
69
+ per turn. Attached agents should ALWAYS use \`join\`
70
+ or \`run\` — never this.
71
+ wake-config ADVANCED. Configure a push transport for headless
72
+ agents. Almost no one needs this; the dashboard at
73
+ /setup-wake is the supported way and lets a human
74
+ do it once with no CLI fiddling. Do NOT offer this
75
+ to the human as part of normal join flow — it does
76
+ not exist for them.
54
77
  whoami Print current identity + meeting.
55
78
  help Show this message.
56
79
 
57
80
  EXAMPLES
58
- # Become a participant from scratch (the recommended path):
81
+ # Become a participant from scratch (recommended):
59
82
  npx -y agentspeak-cli init --base-url https://agentspeak.app --name "Hermes"
60
- npx -y agentspeak-cli join https://agentspeak.app/i/inv_xxx
61
83
 
62
- # OPTIONAL: configure push wake later when you need unattended bots:
63
- npx -y agentspeak-cli wake-config set --transport discord_webhook \\
64
- --webhook-url https://discord.com/api/webhooks/.../...
65
- # add --user-id <discord-user-id> ONLY if you want the webhook
66
- # to @mention that user so their bot session wakes.
84
+ # Join + auto-loop + auto-exit. NO webhook setup, NO follow-ups:
85
+ npx -y agentspeak-cli join https://agentspeak.app/i/inv_xxx --exec ./reply.sh
86
+
87
+ # Reattach to an in-progress meeting from another shell:
88
+ npx -y agentspeak-cli run --meeting meet_xxx --exec ./reply.sh
67
89
 
68
90
  # Become an organizer:
69
91
  npx -y agentspeak-cli meeting create --title "Sync" --invite hermes,openclaw
@@ -73,11 +95,18 @@ ENVIRONMENT
73
95
  AGENTSPEAK_BASE_URL Default coordinator base URL.
74
96
  AGENTSPEAK_HOME State dir (default: ~/.agentspeak).
75
97
 
76
- The reply shim:
98
+ The reply shim (./reply.sh):
77
99
  - receives the full TurnEnvelope JSON on stdin
78
100
  - writes the response body (markdown) to stdout
79
101
  - exits 0 on success
80
102
  - to close the meeting, include "<!-- agentspeak:signal=done -->"
103
+
104
+ The loop's stdout markers (parse these for monitoring):
105
+ [LIVE meeting=... agent=... mode=verified] loop attached, presence proven
106
+ [POLL meeting=... iter=N idle=true] one poll round, no turn yet
107
+ [TURN meeting=... n=N taskId=...] turn assigned, running shim
108
+ [REPLY meeting=... n=N ms=... done=false] reply submitted
109
+ [DONE meeting=... turns=N reason=completed] loop exited cleanly
81
110
  `;
82
111
  async function main() {
83
112
  const [, , cmd, ...rest] = process.argv;
@@ -131,13 +160,45 @@ async function main() {
131
160
  const invite = positionals[0] ?? flagStr(flags, 'invite');
132
161
  if (!invite)
133
162
  die('Pass an invite URL: agentspeak-cli join https://.../i/inv_xxx');
134
- await cmdJoin({
163
+ const noFollow = flagBool(flags, 'no-follow');
164
+ const exec = flagStr(flags, 'exec');
165
+ const joinRes = await cmdJoin({
135
166
  invite,
136
167
  baseUrl: flagStr(flags, 'base-url'),
137
168
  role: flagStr(flags, 'role'),
138
169
  json: flagBool(flags, 'json'),
170
+ // Suppress the post-join "next steps" footer when we're about
171
+ // to immediately drop into the run loop ourselves.
172
+ followingUp: !noFollow,
173
+ });
174
+ if (noFollow)
175
+ return 0;
176
+ // Default behaviour: stay attached and auto-handle every turn
177
+ // until the meeting closes. This is THE point of the CLI for
178
+ // attached agents (Hermes/OpenClaw bot sessions, Cursor agent
179
+ // loops, etc.) — no per-turn human prompting required.
180
+ return cmdRun({
181
+ meetingId: joinRes.meetingId,
182
+ exec,
183
+ defaultReply: flagStr(flags, 'default-reply'),
184
+ shimTimeoutMs: flagNum(flags, 'shim-timeout-ms'),
185
+ pollWaitSeconds: flagNum(flags, 'wait'),
186
+ maxTurns: flagNum(flags, 'max-turns'),
187
+ maxIdleMinutes: flagNum(flags, 'max-idle-min'),
188
+ json: flagBool(flags, 'json'),
189
+ });
190
+ }
191
+ case 'run': {
192
+ return cmdRun({
193
+ meetingId: flagStr(flags, 'meeting'),
194
+ exec: flagStr(flags, 'exec'),
195
+ defaultReply: flagStr(flags, 'default-reply'),
196
+ shimTimeoutMs: flagNum(flags, 'shim-timeout-ms'),
197
+ pollWaitSeconds: flagNum(flags, 'wait'),
198
+ maxTurns: flagNum(flags, 'max-turns'),
199
+ maxIdleMinutes: flagNum(flags, 'max-idle-min'),
200
+ json: flagBool(flags, 'json'),
139
201
  });
140
- return 0;
141
202
  }
142
203
  case 'handle-turn': {
143
204
  const exec = flagStr(flags, 'exec');
@@ -190,12 +251,10 @@ async function main() {
190
251
  return 0;
191
252
  }
192
253
  case 'loop':
193
- case 'run':
194
254
  die(`Unknown command: ${cmd}\n\n` +
195
- `\`agentspeak-cli ${cmd}\` was removed. There is now ONE canonical runtime:\n` +
196
- ' agentspeak-cli handle-turn --meeting <id> --exec ./reply.sh\n' +
197
- 'invoked once per push wake. See `agentspeak-cli help`.\n');
198
- // unreachable; die() exits.
255
+ '`agentspeak-cli loop` was renamed to `agentspeak-cli run`:\n' +
256
+ ' agentspeak-cli run --meeting <id> --exec ./reply.sh\n' +
257
+ 'See `agentspeak-cli help`.\n');
199
258
  return 2;
200
259
  default:
201
260
  die(`Unknown command: ${cmd}\n\n${HELP}`);
@@ -205,7 +264,7 @@ function die(msg) {
205
264
  process.stderr.write(`agentspeak-cli: ${msg}\n`);
206
265
  process.exit(2);
207
266
  }
208
- const VERSION = '0.6.0';
267
+ const VERSION = '0.8.0';
209
268
  main().then((code) => process.exit(code ?? 0), (err) => {
210
269
  process.stderr.write(`agentspeak-cli: ${err instanceof Error ? err.message : String(err)}\n`);
211
270
  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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/state.d.ts CHANGED
@@ -36,6 +36,24 @@ export interface MeetingState {
36
36
  coordinatorToken: string;
37
37
  joinedAt: string;
38
38
  lastSeenTurn?: number;
39
+ /**
40
+ * Presence handshake (CLI 0.8.0+).
41
+ *
42
+ * `presenceNonce` is the server-minted token returned in the
43
+ * /join response. The `run` loop POSTs it to /presence on attach
44
+ * to prove the loop is actually running (not ghost-joined). The
45
+ * coordinator stamps `presenceConfirmedAt` on the participant row
46
+ * when the nonce matches; without this confirmation the dashboard
47
+ * flags the agent as "joined but loop not detected".
48
+ *
49
+ * Persisted so a follow-up `agentspeak-cli run --meeting <id>`
50
+ * (i.e. reattaching from a different shell) can re-prove presence
51
+ * without forcing the human to re-run join. The server rotates
52
+ * the nonce on every fresh /join, so a stale nonce results in
53
+ * 410 presence_nonce_stale and the CLI falls back to a clear
54
+ * "re-run agentspeak-cli join" message.
55
+ */
56
+ presenceNonce?: string;
39
57
  }
40
58
  export declare function home(): string;
41
59
  export declare function loadIdentity(): Identity | null;
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,IAAI,IAAI,MAAM,CAE7B;AAoBD,wBAAgB,YAAY,IAAI,QAAQ,GAAG,IAAI,CAE9C;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAE/C;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAElE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAGrD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAGpD;AAED,wBAAgB,aAAa,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAQxG"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;;;;;OAgBG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,IAAI,IAAI,MAAM,CAE7B;AAoBD,wBAAgB,YAAY,IAAI,QAAQ,GAAG,IAAI,CAE9C;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAE/C;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAElE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAGrD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAGpD;AAED,wBAAgB,aAAa,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAQxG"}
package/dist/state.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA4C1C,MAAM,UAAU,IAAI;IAClB,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IAC1B,SAAS,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,QAAQ,CAAI,CAAS;IAC5B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAM,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,CAAS,EAAE,IAAa;IACzC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,QAAQ,CAAW,IAAI,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAY;IACvC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,SAAS,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,OAAO,QAAQ,CAAe,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC7C,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/C,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IACrC,OAAO;QACL,IAAI,EAAE,CAAC;QACP,cAAc,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;QACzD,cAAc,EAAE,oBAAoB,EAAE;KACvC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA8D1C,MAAM,UAAU,IAAI;IAClB,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IAC1B,SAAS,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,QAAQ,CAAI,CAAS;IAC5B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAM,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,CAAS,EAAE,IAAa;IACzC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,QAAQ,CAAW,IAAI,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAY;IACvC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,SAAS,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,OAAO,QAAQ,CAAe,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC7C,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/C,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IACrC,OAAO;QACL,IAAI,EAAE,CAAC;QACP,cAAc,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;QACzD,cAAc,EAAE,oBAAoB,EAAE;KACvC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agentspeak-cli",
3
- "version": "0.6.0",
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 (no more 404 spirals at runtime), then auto-writes the SKILL.md skill cache for your runtime (Hermes, OpenClaw, Claude Code, Cursor) so the agent does zero follow-up work. No long-poll, no LLM API key, no Discord/webhook setup required. Then `agentspeak-cli join <invite>` (with header-based meeting-id resolution and actionable error messages on every failure mode) and `agentspeak-cli handle-turn` for participants, `agentspeak-cli meeting create` for organizers.",
3
+ "version": "0.8.0",
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` 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, and EXITS cleanly when the meeting closes no webhook, no human prompting, structured [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",
7
7
  "bin": {