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.
@@ -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
- function readExistingPid(pidPath) {
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
- const raw = readFileSync(pidPath, 'utf8').trim();
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 existingPid = readExistingPid(pidPath);
59
- if (existingPid && pidIsAlive(existingPid)) {
60
- return {
61
- started: false,
62
- reused: true,
63
- pid: existingPid,
64
- pidPath,
65
- logPath,
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 (existingPid) {
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
- const args = ['watch', '--ack', '--json', ...(opts.extraArgs ?? [])];
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
- writeFileSync(pidPath, `${child.pid}\n`, { encoding: 'utf8' });
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 pid = readExistingPid(pidPath);
137
- if (!pid) {
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 pid = readExistingPid(pidPath);
170
- if (!pid)
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}); ` +
@@ -1 +1 @@
1
- {"version":3,"file":"watch-daemon.js","sourceRoot":"","sources":["../src/watch-daemon.ts"],"names":[],"mappings":"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"}
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.12.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",