agentspeak-cli 0.12.0 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +3 -2
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +2 -1
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/watch.d.ts +58 -6
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +110 -1
- package/dist/commands/watch.js.map +1 -1
- package/dist/index.js +32 -7
- package/dist/index.js.map +1 -1
- package/dist/run-spawner.d.ts +99 -0
- package/dist/run-spawner.d.ts.map +1 -0
- package/dist/run-spawner.js +220 -0
- package/dist/run-spawner.js.map +1 -0
- package/dist/skill-template.d.ts +1 -1
- package/dist/skill-template.js +1 -1
- package/dist/version.d.ts +14 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +14 -0
- package/dist/version.js.map +1 -0
- package/dist/watch-daemon.d.ts +15 -0
- package/dist/watch-daemon.d.ts.map +1 -1
- package/dist/watch-daemon.js +106 -30
- package/dist/watch-daemon.js.map +1 -1
- package/package.json +1 -1
package/dist/watch-daemon.js
CHANGED
|
@@ -4,6 +4,7 @@ import { dirname, join } from 'node:path';
|
|
|
4
4
|
import { api, ApiError } from './api.js';
|
|
5
5
|
import { detectRuntime } from './skill-template.js';
|
|
6
6
|
import { home } from './state.js';
|
|
7
|
+
import { CLI_VERSION } from './version.js';
|
|
7
8
|
export function watchDaemonPaths() {
|
|
8
9
|
const dir = home();
|
|
9
10
|
return {
|
|
@@ -29,19 +30,51 @@ function pidIsAlive(pid) {
|
|
|
29
30
|
return false;
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Parse the watch pid file. Supports two on-disk formats:
|
|
35
|
+
*
|
|
36
|
+
* 1. Current (CLI >= 0.14.1): JSON `{ "pid": 1234, "cliVersion": "0.14.1" }`.
|
|
37
|
+
* Version-stamp lets us detect when the running daemon was spawned
|
|
38
|
+
* by an older CLI and restart it on upgrade.
|
|
39
|
+
* 2. Legacy (CLI <= 0.14.0): bare integer on one line.
|
|
40
|
+
* Returns `cliVersion: null` so the caller treats it as
|
|
41
|
+
* "unknown / assume stale" and triggers a restart.
|
|
42
|
+
*
|
|
43
|
+
* Returns null when the file is missing or unparseable (both cases are
|
|
44
|
+
* indistinguishable from "no daemon" downstream).
|
|
45
|
+
*/
|
|
46
|
+
function readPidFile(pidPath) {
|
|
33
47
|
if (!existsSync(pidPath))
|
|
34
48
|
return null;
|
|
49
|
+
let raw;
|
|
35
50
|
try {
|
|
36
|
-
|
|
37
|
-
const pid = Number.parseInt(raw, 10);
|
|
38
|
-
if (!Number.isFinite(pid) || pid <= 0)
|
|
39
|
-
return null;
|
|
40
|
-
return pid;
|
|
51
|
+
raw = readFileSync(pidPath, 'utf8').trim();
|
|
41
52
|
}
|
|
42
53
|
catch {
|
|
43
54
|
return null;
|
|
44
55
|
}
|
|
56
|
+
if (!raw)
|
|
57
|
+
return null;
|
|
58
|
+
if (raw.startsWith('{')) {
|
|
59
|
+
try {
|
|
60
|
+
const parsed = JSON.parse(raw);
|
|
61
|
+
const pid = typeof parsed.pid === 'number' ? parsed.pid : Number.NaN;
|
|
62
|
+
if (!Number.isFinite(pid) || pid <= 0)
|
|
63
|
+
return null;
|
|
64
|
+
const cliVersion = typeof parsed.cliVersion === 'string' ? parsed.cliVersion : null;
|
|
65
|
+
return { pid, cliVersion };
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const pid = Number.parseInt(raw, 10);
|
|
72
|
+
if (!Number.isFinite(pid) || pid <= 0)
|
|
73
|
+
return null;
|
|
74
|
+
return { pid, cliVersion: null };
|
|
75
|
+
}
|
|
76
|
+
function writePidFile(pidPath, record) {
|
|
77
|
+
writeFileSync(pidPath, JSON.stringify(record) + '\n', { encoding: 'utf8' });
|
|
45
78
|
}
|
|
46
79
|
/**
|
|
47
80
|
* Start `agentspeak-cli watch --ack --json` in the background if it
|
|
@@ -55,17 +88,39 @@ function readExistingPid(pidPath) {
|
|
|
55
88
|
export function ensureWatchRunning(opts = {}) {
|
|
56
89
|
const { pidPath, logPath } = watchDaemonPaths();
|
|
57
90
|
mkdirSync(dirname(pidPath), { recursive: true });
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
91
|
+
const expectedVersion = opts.cliVersion ?? CLI_VERSION;
|
|
92
|
+
const existing = readPidFile(pidPath);
|
|
93
|
+
let restartedForVersionMismatch = false;
|
|
94
|
+
let previousCliVersion;
|
|
95
|
+
if (existing && pidIsAlive(existing.pid)) {
|
|
96
|
+
// Version-stamped restart: upgrading the CLI via `npx -y
|
|
97
|
+
// agentspeak-cli@latest tutorial` only fixes future behavior if the
|
|
98
|
+
// long-lived daemon is also restarted. If the stamp matches, reuse.
|
|
99
|
+
// If it differs (or the pid file is the legacy bare-int format with
|
|
100
|
+
// unknown version), kill the old process and spawn a fresh one.
|
|
101
|
+
if (existing.cliVersion === expectedVersion) {
|
|
102
|
+
return {
|
|
103
|
+
started: false,
|
|
104
|
+
reused: true,
|
|
105
|
+
restartedForVersionMismatch: false,
|
|
106
|
+
pid: existing.pid,
|
|
107
|
+
previousCliVersion: existing.cliVersion,
|
|
108
|
+
pidPath,
|
|
109
|
+
logPath,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
previousCliVersion = existing.cliVersion;
|
|
113
|
+
try {
|
|
114
|
+
process.kill(existing.pid, 'SIGTERM');
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// If we can't signal (EPERM, ESRCH racing), fall through and let
|
|
118
|
+
// the pid-file unlink + respawn happen anyway. Duplicate daemons
|
|
119
|
+
// are harmless because ack is idempotent server-side.
|
|
120
|
+
}
|
|
121
|
+
restartedForVersionMismatch = true;
|
|
67
122
|
}
|
|
68
|
-
if (
|
|
123
|
+
if (existing) {
|
|
69
124
|
try {
|
|
70
125
|
unlinkSync(pidPath);
|
|
71
126
|
}
|
|
@@ -77,7 +132,9 @@ export function ensureWatchRunning(opts = {}) {
|
|
|
77
132
|
return {
|
|
78
133
|
started: false,
|
|
79
134
|
reused: false,
|
|
135
|
+
restartedForVersionMismatch,
|
|
80
136
|
pid: null,
|
|
137
|
+
previousCliVersion,
|
|
81
138
|
pidPath,
|
|
82
139
|
logPath,
|
|
83
140
|
reason: 'no_cli_entry',
|
|
@@ -90,7 +147,13 @@ export function ensureWatchRunning(opts = {}) {
|
|
|
90
147
|
writeFileSync(logPath, `\n[${new Date().toISOString()}] watch-daemon starting (cli=${cliEntry})\n`, { flag: 'a' });
|
|
91
148
|
}
|
|
92
149
|
catch { /* best-effort log header */ }
|
|
93
|
-
|
|
150
|
+
// `--auto-act` turns the daemon from a passive logger into an
|
|
151
|
+
// active dispatcher: invites → `join` + detached `run` loop per
|
|
152
|
+
// meeting, reopens → re-attach dormant loops. The operator can
|
|
153
|
+
// pass `--no-auto-act` via `extraArgs` to run a passive daemon
|
|
154
|
+
// (useful for debugging or when the LLM runtime polls the feed
|
|
155
|
+
// itself via `notifications_list`).
|
|
156
|
+
const args = ['watch', '--ack', '--json', '--auto-act', ...(opts.extraArgs ?? [])];
|
|
94
157
|
const child = spawn(nodeBinary, [cliEntry, ...args], {
|
|
95
158
|
detached: true,
|
|
96
159
|
stdio: ['ignore', logFd, logFd],
|
|
@@ -105,14 +168,16 @@ export function ensureWatchRunning(opts = {}) {
|
|
|
105
168
|
return {
|
|
106
169
|
started: false,
|
|
107
170
|
reused: false,
|
|
171
|
+
restartedForVersionMismatch,
|
|
108
172
|
pid: null,
|
|
173
|
+
previousCliVersion,
|
|
109
174
|
pidPath,
|
|
110
175
|
logPath,
|
|
111
176
|
reason: 'spawn_failed',
|
|
112
177
|
};
|
|
113
178
|
}
|
|
114
179
|
try {
|
|
115
|
-
|
|
180
|
+
writePidFile(pidPath, { pid: child.pid, cliVersion: expectedVersion });
|
|
116
181
|
}
|
|
117
182
|
catch {
|
|
118
183
|
// Even if we can't persist the pid, the daemon is running. We'll
|
|
@@ -122,7 +187,9 @@ export function ensureWatchRunning(opts = {}) {
|
|
|
122
187
|
return {
|
|
123
188
|
started: true,
|
|
124
189
|
reused: false,
|
|
190
|
+
restartedForVersionMismatch,
|
|
125
191
|
pid: child.pid,
|
|
192
|
+
previousCliVersion,
|
|
126
193
|
pidPath,
|
|
127
194
|
logPath,
|
|
128
195
|
};
|
|
@@ -133,24 +200,24 @@ export function ensureWatchRunning(opts = {}) {
|
|
|
133
200
|
*/
|
|
134
201
|
export function stopWatch() {
|
|
135
202
|
const { pidPath } = watchDaemonPaths();
|
|
136
|
-
const
|
|
137
|
-
if (!
|
|
203
|
+
const record = readPidFile(pidPath);
|
|
204
|
+
if (!record) {
|
|
138
205
|
return { stopped: false, pid: null, reason: 'no_pid_file' };
|
|
139
206
|
}
|
|
140
|
-
if (!pidIsAlive(pid)) {
|
|
207
|
+
if (!pidIsAlive(record.pid)) {
|
|
141
208
|
try {
|
|
142
209
|
unlinkSync(pidPath);
|
|
143
210
|
}
|
|
144
211
|
catch { /* best-effort */ }
|
|
145
|
-
return { stopped: false, pid, reason: 'already_dead' };
|
|
212
|
+
return { stopped: false, pid: record.pid, reason: 'already_dead' };
|
|
146
213
|
}
|
|
147
214
|
try {
|
|
148
|
-
process.kill(pid, 'SIGTERM');
|
|
215
|
+
process.kill(record.pid, 'SIGTERM');
|
|
149
216
|
}
|
|
150
217
|
catch (err) {
|
|
151
218
|
return {
|
|
152
219
|
stopped: false,
|
|
153
|
-
pid,
|
|
220
|
+
pid: record.pid,
|
|
154
221
|
reason: `kill_failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
155
222
|
};
|
|
156
223
|
}
|
|
@@ -158,18 +225,19 @@ export function stopWatch() {
|
|
|
158
225
|
unlinkSync(pidPath);
|
|
159
226
|
}
|
|
160
227
|
catch { /* best-effort */ }
|
|
161
|
-
return { stopped: true, pid };
|
|
228
|
+
return { stopped: true, pid: record.pid };
|
|
162
229
|
}
|
|
163
230
|
/**
|
|
164
231
|
* Report whether a daemon is currently running, for `watch status` /
|
|
165
232
|
* doctor-style introspection. Returns null when no pid file exists.
|
|
233
|
+
* `cliVersion` is null for legacy pid files written by CLI <= 0.14.0.
|
|
166
234
|
*/
|
|
167
235
|
export function watchStatus() {
|
|
168
236
|
const { pidPath } = watchDaemonPaths();
|
|
169
|
-
const
|
|
170
|
-
if (!
|
|
237
|
+
const record = readPidFile(pidPath);
|
|
238
|
+
if (!record)
|
|
171
239
|
return null;
|
|
172
|
-
return { pid, alive: pidIsAlive(pid) };
|
|
240
|
+
return { pid: record.pid, alive: pidIsAlive(record.pid), cliVersion: record.cliVersion };
|
|
173
241
|
}
|
|
174
242
|
/**
|
|
175
243
|
* Ensure the agent's wake_config advertises pull mode (when unset)
|
|
@@ -225,11 +293,19 @@ export async function ensurePullWakeAndWatcher(identity, runtimeHint, log) {
|
|
|
225
293
|
}
|
|
226
294
|
try {
|
|
227
295
|
const r = ensureWatchRunning();
|
|
228
|
-
if (r.started && r.pid) {
|
|
296
|
+
if (r.started && r.pid && r.restartedForVersionMismatch) {
|
|
297
|
+
// Important diagnostic: this is the path that fixes the
|
|
298
|
+
// "0.12.0 daemon still running after 0.14.1 upgrade" class of
|
|
299
|
+
// bugs where new dispatcher behavior never actually runs because
|
|
300
|
+
// the old daemon holds the pid file.
|
|
301
|
+
const from = r.previousCliVersion ?? '<legacy/unknown>';
|
|
302
|
+
log(`restarted background watch daemon pid=${r.pid} (was ${from}, now ${CLI_VERSION}) log=${r.logPath}`);
|
|
303
|
+
}
|
|
304
|
+
else if (r.started && r.pid) {
|
|
229
305
|
log(`started background watch daemon pid=${r.pid} log=${r.logPath}`);
|
|
230
306
|
}
|
|
231
307
|
else if (r.reused && r.pid) {
|
|
232
|
-
log(`reusing existing watch daemon pid=${r.pid}.`);
|
|
308
|
+
log(`reusing existing watch daemon pid=${r.pid} (cli=${r.previousCliVersion ?? '?'}).`);
|
|
233
309
|
}
|
|
234
310
|
else if (r.reason) {
|
|
235
311
|
log(`warn: did not start watch daemon (${r.reason}); ` +
|
package/dist/watch-daemon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch-daemon.js","sourceRoot":"","sources":["../src/watch-daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"watch-daemon.js","sourceRoot":"","sources":["../src/watch-daemon.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.
|
|
3
|
+
"version": "0.14.1",
|
|
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",
|