remote-pi 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -0
- package/dist/daemon/client.js +5 -2
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/control_protocol.d.ts +68 -0
- package/dist/daemon/control_protocol.js.map +1 -1
- package/dist/daemon/cron_log.d.ts +45 -0
- package/dist/daemon/cron_log.js +72 -0
- package/dist/daemon/cron_log.js.map +1 -0
- package/dist/daemon/cron_registry.d.ts +80 -0
- package/dist/daemon/cron_registry.js +194 -0
- package/dist/daemon/cron_registry.js.map +1 -0
- package/dist/daemon/id.d.ts +6 -0
- package/dist/daemon/id.js +6 -0
- package/dist/daemon/id.js.map +1 -1
- package/dist/daemon/install.d.ts +9 -2
- package/dist/daemon/install.js +54 -10
- package/dist/daemon/install.js.map +1 -1
- package/dist/daemon/registry.d.ts +17 -1
- package/dist/daemon/registry.js +34 -4
- package/dist/daemon/registry.js.map +1 -1
- package/dist/daemon/rpc_child.d.ts +64 -1
- package/dist/daemon/rpc_child.js +164 -8
- package/dist/daemon/rpc_child.js.map +1 -1
- package/dist/daemon/supervisor.d.ts +44 -0
- package/dist/daemon/supervisor.js +265 -22
- package/dist/daemon/supervisor.js.map +1 -1
- package/dist/index.d.ts +68 -11
- package/dist/index.js +0 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/mesh_server.js +19 -10
- package/dist/mcp/mesh_server.js.map +1 -1
- package/dist/pairing/qr.d.ts +8 -1
- package/dist/pairing/qr.js +13 -3
- package/dist/pairing/qr.js.map +1 -1
- package/dist/protocol/codec.js +1 -0
- package/dist/protocol/codec.js.map +1 -1
- package/dist/protocol/types.d.ts +11 -0
- package/dist/rooms.d.ts +20 -0
- package/dist/rooms.js +35 -0
- package/dist/rooms.js.map +1 -1
- package/dist/session/address.d.ts +49 -0
- package/dist/session/address.js +58 -0
- package/dist/session/address.js.map +1 -0
- package/dist/session/broker.d.ts +79 -3
- package/dist/session/broker.js +155 -28
- package/dist/session/broker.js.map +1 -1
- package/dist/session/broker_remote.d.ts +30 -10
- package/dist/session/broker_remote.js +77 -39
- package/dist/session/broker_remote.js.map +1 -1
- package/dist/session/cwd_lock.d.ts +7 -2
- package/dist/session/cwd_lock.js +39 -9
- package/dist/session/cwd_lock.js.map +1 -1
- package/dist/session/global_config.d.ts +12 -2
- package/dist/session/global_config.js +16 -3
- package/dist/session/global_config.js.map +1 -1
- package/dist/session/ipc.d.ts +27 -0
- package/dist/session/ipc.js +22 -0
- package/dist/session/ipc.js.map +1 -0
- package/dist/session/leader_election.js +8 -2
- package/dist/session/leader_election.js.map +1 -1
- package/dist/session/local_config.d.ts +36 -6
- package/dist/session/local_config.js +103 -28
- package/dist/session/local_config.js.map +1 -1
- package/dist/session/mesh_message.d.ts +20 -0
- package/dist/session/mesh_message.js +28 -0
- package/dist/session/mesh_message.js.map +1 -0
- package/dist/session/mesh_node.d.ts +15 -1
- package/dist/session/mesh_node.js +26 -5
- package/dist/session/mesh_node.js.map +1 -1
- package/dist/session/peer.d.ts +19 -2
- package/dist/session/peer.js +45 -9
- package/dist/session/peer.js.map +1 -1
- package/dist/session/tools.js +14 -12
- package/dist/session/tools.js.map +1 -1
- package/package.json +2 -1
- package/service-templates/task-scheduler.xml.template +38 -0
- package/skills/agent-network/SKILL.md +63 -26
|
@@ -2,11 +2,15 @@ import { existsSync, mkdirSync, unlinkSync } from "node:fs";
|
|
|
2
2
|
import { createConnection, createServer } from "node:net";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
import { dirname, join } from "node:path";
|
|
5
|
-
import { addDaemon, listDaemons, removeDaemon } from "./registry.js";
|
|
5
|
+
import { addDaemon, listDaemons, migrateRegistryNames, removeDaemon } from "./registry.js";
|
|
6
6
|
import { daemonIdForCwd } from "./id.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { defaultAgentName } from "../session/local_config.js";
|
|
8
|
+
import { ipcAddress, usesNamedPipe } from "../session/ipc.js";
|
|
9
|
+
import { EXIT_DAEMON_FRESH_SESSION, RpcChild } from "./rpc_child.js";
|
|
9
10
|
import { encodeReply, parseRequest, } from "./control_protocol.js";
|
|
11
|
+
import { Cron } from "croner";
|
|
12
|
+
import { addJob as addCronJob, getJob as getCronJob, listJobs as listCronJobs, nextRunFor, recordRun, removeJob as removeCronJob, setJobEnabled, validateSchedule, } from "./cron_registry.js";
|
|
13
|
+
import { appendCronLog, readCronLog } from "./cron_log.js";
|
|
10
14
|
/**
|
|
11
15
|
* Central process that owns the daemon fleet (plan/26).
|
|
12
16
|
*
|
|
@@ -33,7 +37,8 @@ const SUPERVISOR_SOCK_NAME = "supervisor.sock";
|
|
|
33
37
|
const RESTART_BACKOFFS_MS = [1_000, 5_000, 30_000, 5 * 60_000];
|
|
34
38
|
function supervisorSockPath() {
|
|
35
39
|
const root = process.env["REMOTE_PI_HOME"] || homedir();
|
|
36
|
-
|
|
40
|
+
// POSIX → ~/.pi/remote/supervisor.sock; Windows → per-user named pipe (plan/40).
|
|
41
|
+
return ipcAddress("supervisor", join(root, ".pi", "remote", SUPERVISOR_SOCK_NAME));
|
|
37
42
|
}
|
|
38
43
|
/** Thrown by `start()` when another live supervisor already holds the UDS.
|
|
39
44
|
* Prevents a second supervisor from orphaning the first's children. */
|
|
@@ -63,10 +68,19 @@ function _probeSupervisor(path) {
|
|
|
63
68
|
sock.once("error", () => { clearTimeout(timer); done(false); });
|
|
64
69
|
});
|
|
65
70
|
}
|
|
71
|
+
export function decideFireAction(o) {
|
|
72
|
+
if (!o.running)
|
|
73
|
+
return o.wake ? "wake_and_send" : "skip_down";
|
|
74
|
+
if (o.skipIfBusy && o.busy)
|
|
75
|
+
return "skip_busy";
|
|
76
|
+
return "send";
|
|
77
|
+
}
|
|
66
78
|
export class Supervisor {
|
|
67
79
|
opts;
|
|
68
80
|
server = null;
|
|
69
81
|
children = new Map();
|
|
82
|
+
/** Live croner schedules, keyed by cron job id (plan/39). */
|
|
83
|
+
cronJobs = new Map();
|
|
70
84
|
shuttingDown = false;
|
|
71
85
|
constructor(opts) {
|
|
72
86
|
this.opts = opts;
|
|
@@ -74,12 +88,22 @@ export class Supervisor {
|
|
|
74
88
|
/** Bind the control UDS + spawn all registered daemons. */
|
|
75
89
|
async start() {
|
|
76
90
|
this._mkdirParent();
|
|
91
|
+
// Backfill folder-derived names into legacy registry entries (pre-name
|
|
92
|
+
// field) so every daemon has a stable name to inject via env.
|
|
93
|
+
migrateRegistryNames();
|
|
77
94
|
await this._bindUds();
|
|
78
95
|
this._spawnAllFromRegistry();
|
|
96
|
+
// Cron (plan/39): schedule all enabled jobs, then run any missed catchup.
|
|
97
|
+
this._reconcileCron();
|
|
98
|
+
this._runCatchup();
|
|
79
99
|
}
|
|
80
100
|
/** Graceful shutdown: stop all children, close UDS. */
|
|
81
101
|
async stop() {
|
|
82
102
|
this.shuttingDown = true;
|
|
103
|
+
// Stop all cron schedules (plan/39) so no fire races with teardown.
|
|
104
|
+
for (const c of this.cronJobs.values())
|
|
105
|
+
c.stop();
|
|
106
|
+
this.cronJobs.clear();
|
|
83
107
|
// Cancel pending restart timers first so they don't race with stop().
|
|
84
108
|
for (const slot of this.children.values()) {
|
|
85
109
|
if (slot.restartTimer !== null) {
|
|
@@ -96,32 +120,41 @@ export class Supervisor {
|
|
|
96
120
|
});
|
|
97
121
|
this.server = null;
|
|
98
122
|
// Best-effort: clear the socket file so a next supervisor bind succeeds.
|
|
99
|
-
|
|
100
|
-
|
|
123
|
+
// Windows named pipes have no file (auto-removed on exit) → nothing to do.
|
|
124
|
+
if (!usesNamedPipe()) {
|
|
125
|
+
try {
|
|
126
|
+
unlinkSync(supervisorSockPath());
|
|
127
|
+
}
|
|
128
|
+
catch { /* ignored */ }
|
|
101
129
|
}
|
|
102
|
-
catch { /* ignored */ }
|
|
103
130
|
}
|
|
104
131
|
// ── UDS binding ──────────────────────────────────────────────────────────
|
|
105
132
|
_mkdirParent() {
|
|
133
|
+
// A named pipe has no parent directory to create (the addr is `\\.\pipe\…`).
|
|
134
|
+
if (usesNamedPipe())
|
|
135
|
+
return;
|
|
106
136
|
mkdirSync(dirname(supervisorSockPath()), { recursive: true });
|
|
107
137
|
}
|
|
108
138
|
async _bindUds() {
|
|
109
139
|
const path = supervisorSockPath();
|
|
110
|
-
|
|
111
|
-
//
|
|
112
|
-
//
|
|
113
|
-
// supervisor's children — they'd
|
|
114
|
-
//
|
|
115
|
-
// fails (stale socket from a
|
|
116
|
-
|
|
140
|
+
const pipe = usesNamedPipe();
|
|
141
|
+
// Single-instance guard. PROBE first: a live supervisor answering the
|
|
142
|
+
// connect means we must NOT start a second one. Stealing the socket
|
|
143
|
+
// (unlink + bind) would orphan the running supervisor's children — they'd
|
|
144
|
+
// keep running, unreachable by the CLI. Only on POSIX, when the probe
|
|
145
|
+
// fails (stale socket from a crash), do we unlink + bind. On Windows there
|
|
146
|
+
// is no file: always probe, never unlink (the pipe self-cleans on exit).
|
|
147
|
+
if (pipe || existsSync(path)) {
|
|
117
148
|
const alive = await _probeSupervisor(path);
|
|
118
149
|
if (alive) {
|
|
119
150
|
throw new SupervisorAlreadyRunningError(path);
|
|
120
151
|
}
|
|
121
|
-
|
|
122
|
-
|
|
152
|
+
if (!pipe) {
|
|
153
|
+
try {
|
|
154
|
+
unlinkSync(path);
|
|
155
|
+
}
|
|
156
|
+
catch { /* will throw on bind if still held */ }
|
|
123
157
|
}
|
|
124
|
-
catch { /* will throw on bind if still held */ }
|
|
125
158
|
}
|
|
126
159
|
const server = createServer((socket) => this._onConnection(socket));
|
|
127
160
|
await new Promise((resolve, reject) => {
|
|
@@ -161,10 +194,18 @@ export class Supervisor {
|
|
|
161
194
|
case "start_all": return this._opStartAll();
|
|
162
195
|
case "start": return this._opStart(req.id);
|
|
163
196
|
case "stop_all": return this._opStopAll();
|
|
197
|
+
case "stop": return this._opStop(req.id);
|
|
164
198
|
case "restart_all": return this._opRestartAll();
|
|
199
|
+
case "restart": return this._opRestart(req.id);
|
|
165
200
|
case "send": return this._opSend(req.id, req.text);
|
|
166
201
|
case "register": return this._opRegister(req.cwd);
|
|
167
202
|
case "unregister": return this._opUnregister(req.id);
|
|
203
|
+
case "cron_add": return this._opCronAdd(req);
|
|
204
|
+
case "cron_list": return this._opCronList();
|
|
205
|
+
case "cron_remove": return this._opCronRemove(req.job_id);
|
|
206
|
+
case "cron_enable": return this._opCronEnable(req.job_id, req.enabled);
|
|
207
|
+
case "cron_run": return this._opCronRun(req.job_id);
|
|
208
|
+
case "cron_log": return this._opCronLog(req.job_id, req.tail);
|
|
168
209
|
default: {
|
|
169
210
|
const unknown = req.op;
|
|
170
211
|
return { ok: false, error: `unknown op: ${unknown}` };
|
|
@@ -176,8 +217,7 @@ export class Supervisor {
|
|
|
176
217
|
const registry = listDaemons();
|
|
177
218
|
return registry.map((entry) => {
|
|
178
219
|
const slot = this.children.get(entry.id);
|
|
179
|
-
const
|
|
180
|
-
const name = cfg.agent_name ?? defaultAgentName(entry.cwd);
|
|
220
|
+
const name = entry.name ?? defaultAgentName(entry.cwd);
|
|
181
221
|
const info = {
|
|
182
222
|
id: entry.id,
|
|
183
223
|
cwd: entry.cwd,
|
|
@@ -220,7 +260,7 @@ export class Supervisor {
|
|
|
220
260
|
if (slot && slot.child.state === "running") {
|
|
221
261
|
return { ok: true, data: { id, state: slot.child.state, started: false } };
|
|
222
262
|
}
|
|
223
|
-
this._spawnEntry(entry.id, entry.cwd);
|
|
263
|
+
this._spawnEntry(entry.id, entry.cwd, entry.name);
|
|
224
264
|
const state = this.children.get(id)?.child.state ?? "starting";
|
|
225
265
|
return { ok: true, data: { id, state, started: true } };
|
|
226
266
|
}
|
|
@@ -241,6 +281,43 @@ export class Supervisor {
|
|
|
241
281
|
}
|
|
242
282
|
return { ok: true, data: { stopped, already_stopped: already } };
|
|
243
283
|
}
|
|
284
|
+
/** Stop a single registered daemon by id. Idempotent: a daemon that isn't
|
|
285
|
+
* running returns `stopped: false`. Unknown id → ok:false. Mirrors the
|
|
286
|
+
* per-id semantics of `_opStart`. Cancels any pending restart backoff so a
|
|
287
|
+
* deliberate stop stays stopped. */
|
|
288
|
+
async _opStop(id) {
|
|
289
|
+
const entry = listDaemons().find((d) => d.id === id);
|
|
290
|
+
if (!entry)
|
|
291
|
+
return { ok: false, error: `no daemon with id ${id}` };
|
|
292
|
+
const slot = this.children.get(id);
|
|
293
|
+
if (!slot || slot.child.state !== "running") {
|
|
294
|
+
return { ok: true, data: { id, state: slot?.child.state ?? "stopped", stopped: false } };
|
|
295
|
+
}
|
|
296
|
+
if (slot.restartTimer !== null) {
|
|
297
|
+
clearTimeout(slot.restartTimer);
|
|
298
|
+
slot.restartTimer = null;
|
|
299
|
+
}
|
|
300
|
+
await slot.child.stop();
|
|
301
|
+
return { ok: true, data: { id, state: slot.child.state, stopped: true } };
|
|
302
|
+
}
|
|
303
|
+
/** Restart a single registered daemon by id (stop-if-running, then spawn).
|
|
304
|
+
* Unknown id → ok:false. Resets the crash backoff. */
|
|
305
|
+
async _opRestart(id) {
|
|
306
|
+
const entry = listDaemons().find((d) => d.id === id);
|
|
307
|
+
if (!entry)
|
|
308
|
+
return { ok: false, error: `no daemon with id ${id}` };
|
|
309
|
+
const slot = this.children.get(id);
|
|
310
|
+
if (slot && slot.child.state === "running") {
|
|
311
|
+
if (slot.restartTimer !== null) {
|
|
312
|
+
clearTimeout(slot.restartTimer);
|
|
313
|
+
slot.restartTimer = null;
|
|
314
|
+
}
|
|
315
|
+
await slot.child.stop();
|
|
316
|
+
}
|
|
317
|
+
this._spawnEntry(entry.id, entry.cwd, entry.name);
|
|
318
|
+
const state = this.children.get(id)?.child.state ?? "starting";
|
|
319
|
+
return { ok: true, data: { id, state, restarted: true } };
|
|
320
|
+
}
|
|
244
321
|
async _opRestartAll() {
|
|
245
322
|
const stopReply = await this._opStopAll();
|
|
246
323
|
if (!stopReply.ok)
|
|
@@ -290,13 +367,163 @@ export class Supervisor {
|
|
|
290
367
|
return { ok: false, error: e.message };
|
|
291
368
|
}
|
|
292
369
|
}
|
|
370
|
+
// ── Cron ops + engine (plan/39) ────────────────────────────────────────────
|
|
371
|
+
_opCronAdd(req) {
|
|
372
|
+
const v = validateSchedule(req.schedule, req.tz);
|
|
373
|
+
if (!v.ok)
|
|
374
|
+
return { ok: false, error: v.error ?? "invalid schedule" };
|
|
375
|
+
const input = { daemon_id: req.daemon_id, schedule: req.schedule, prompt: req.prompt };
|
|
376
|
+
if (req.tz !== undefined)
|
|
377
|
+
input.tz = req.tz;
|
|
378
|
+
if (req.skip_if_busy !== undefined)
|
|
379
|
+
input.skip_if_busy = req.skip_if_busy;
|
|
380
|
+
if (req.wake !== undefined)
|
|
381
|
+
input.wake = req.wake;
|
|
382
|
+
if (req.catchup !== undefined)
|
|
383
|
+
input.catchup = req.catchup;
|
|
384
|
+
const job = addCronJob(input);
|
|
385
|
+
this._scheduleCron(job);
|
|
386
|
+
return { ok: true, data: { job: this._jobView(job) } };
|
|
387
|
+
}
|
|
388
|
+
_opCronList() {
|
|
389
|
+
const jobs = listCronJobs().map((j) => this._jobView(j));
|
|
390
|
+
return { ok: true, data: { jobs } };
|
|
391
|
+
}
|
|
392
|
+
_opCronRemove(jobId) {
|
|
393
|
+
const removed = removeCronJob(jobId);
|
|
394
|
+
this._stopCron(jobId);
|
|
395
|
+
return { ok: true, data: { removed } };
|
|
396
|
+
}
|
|
397
|
+
_opCronEnable(jobId, enabled) {
|
|
398
|
+
const updated = setJobEnabled(jobId, enabled);
|
|
399
|
+
if (updated) {
|
|
400
|
+
this._stopCron(jobId);
|
|
401
|
+
const job = getCronJob(jobId);
|
|
402
|
+
if (enabled && job)
|
|
403
|
+
this._scheduleCron(job);
|
|
404
|
+
}
|
|
405
|
+
return { ok: true, data: { job_id: jobId, enabled, updated } };
|
|
406
|
+
}
|
|
407
|
+
async _opCronRun(jobId) {
|
|
408
|
+
if (!getCronJob(jobId))
|
|
409
|
+
return { ok: false, error: `no cron job with id ${jobId}` };
|
|
410
|
+
const result = await this.fireJob(jobId, { manual: true });
|
|
411
|
+
return { ok: true, data: { job_id: jobId, result } };
|
|
412
|
+
}
|
|
413
|
+
_opCronLog(jobId, tail) {
|
|
414
|
+
const opts = {};
|
|
415
|
+
if (jobId !== undefined)
|
|
416
|
+
opts.jobId = jobId;
|
|
417
|
+
if (tail !== undefined)
|
|
418
|
+
opts.tail = tail;
|
|
419
|
+
return { ok: true, data: { entries: readCronLog(opts) } };
|
|
420
|
+
}
|
|
421
|
+
_jobView(job) {
|
|
422
|
+
const next = nextRunFor(job);
|
|
423
|
+
return { ...job, next_run: next ? next.toISOString() : null };
|
|
424
|
+
}
|
|
425
|
+
/** Rebuild all live `Cron` schedules from the registry (enabled jobs only).
|
|
426
|
+
* Called on start; mutations reconcile incrementally via _scheduleCron/_stopCron. */
|
|
427
|
+
_reconcileCron() {
|
|
428
|
+
for (const c of this.cronJobs.values())
|
|
429
|
+
c.stop();
|
|
430
|
+
this.cronJobs.clear();
|
|
431
|
+
for (const job of listCronJobs()) {
|
|
432
|
+
if (job.enabled)
|
|
433
|
+
this._scheduleCron(job);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
_scheduleCron(job) {
|
|
437
|
+
this._stopCron(job.id);
|
|
438
|
+
try {
|
|
439
|
+
const opts = job.tz ? { timezone: job.tz, name: job.id } : { name: job.id };
|
|
440
|
+
const cron = new Cron(job.schedule, opts, () => { void this.fireJob(job.id); });
|
|
441
|
+
this.cronJobs.set(job.id, cron);
|
|
442
|
+
}
|
|
443
|
+
catch (e) {
|
|
444
|
+
process.stderr.write(`[remote-pi-supervisord] cron schedule failed for ${job.id}: ${String(e)}\n`);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
_stopCron(jobId) {
|
|
448
|
+
const c = this.cronJobs.get(jobId);
|
|
449
|
+
if (c) {
|
|
450
|
+
c.stop();
|
|
451
|
+
this.cronJobs.delete(jobId);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
/** Detail 2: on start, run a catchup job once if its previous scheduled run
|
|
455
|
+
* was missed while the supervisor was down. Opt-in (`catchup`), at most 1×. */
|
|
456
|
+
_runCatchup() {
|
|
457
|
+
for (const job of listCronJobs()) {
|
|
458
|
+
if (!job.enabled || !job.catchup)
|
|
459
|
+
continue;
|
|
460
|
+
try {
|
|
461
|
+
const cron = new Cron(job.schedule, job.tz ? { timezone: job.tz } : {});
|
|
462
|
+
const prev = cron.previousRun();
|
|
463
|
+
cron.stop();
|
|
464
|
+
if (!prev)
|
|
465
|
+
continue;
|
|
466
|
+
const lastRunMs = job.last_run ? Date.parse(job.last_run) : 0;
|
|
467
|
+
if (prev.getTime() > lastRunMs)
|
|
468
|
+
void this.fireJob(job.id, { manual: true });
|
|
469
|
+
}
|
|
470
|
+
catch { /* skip a malformed schedule */ }
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Fires a cron job: resolves the daemon, decides the action (decideFireAction),
|
|
475
|
+
* acts, and records the outcome — ALWAYS one `last_status` update + one JSONL
|
|
476
|
+
* line, for both fires and skips. Returns the result. `manual` bypasses the
|
|
477
|
+
* disabled-skip (used by `cron run` + catchup).
|
|
478
|
+
*/
|
|
479
|
+
async fireJob(jobId, opts = {}) {
|
|
480
|
+
const job = getCronJob(jobId);
|
|
481
|
+
if (!job)
|
|
482
|
+
return "missing";
|
|
483
|
+
let result;
|
|
484
|
+
if (!job.enabled && !opts.manual) {
|
|
485
|
+
result = "skipped_disabled";
|
|
486
|
+
}
|
|
487
|
+
else {
|
|
488
|
+
const slot = this.children.get(job.daemon_id);
|
|
489
|
+
const running = !!slot && slot.child.state === "running";
|
|
490
|
+
let busy = false;
|
|
491
|
+
if (running && job.skip_if_busy)
|
|
492
|
+
busy = await slot.child.refreshBusy();
|
|
493
|
+
const action = decideFireAction({ running, busy, wake: job.wake, skipIfBusy: job.skip_if_busy });
|
|
494
|
+
if (action === "skip_down") {
|
|
495
|
+
result = "skipped_down";
|
|
496
|
+
}
|
|
497
|
+
else if (action === "skip_busy") {
|
|
498
|
+
result = "skipped_busy";
|
|
499
|
+
}
|
|
500
|
+
else if (action === "wake_and_send") {
|
|
501
|
+
const entry = listDaemons().find((d) => d.id === job.daemon_id);
|
|
502
|
+
if (!entry) {
|
|
503
|
+
result = "skipped_down";
|
|
504
|
+
}
|
|
505
|
+
else {
|
|
506
|
+
this._spawnEntry(entry.id, entry.cwd, entry.name);
|
|
507
|
+
const woke = this.children.get(job.daemon_id);
|
|
508
|
+
result = woke && woke.child.sendPrompt(job.prompt) ? "woke_and_delivered" : "deliver_failed";
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
else {
|
|
512
|
+
result = slot.child.sendPrompt(job.prompt) ? "delivered" : "deliver_failed";
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
const at = new Date().toISOString();
|
|
516
|
+
recordRun(job.id, at, result);
|
|
517
|
+
appendCronLog({ job_id: job.id, daemon_id: job.daemon_id, schedule: job.schedule, result, prompt: job.prompt });
|
|
518
|
+
return result;
|
|
519
|
+
}
|
|
293
520
|
// ── Child lifecycle ──────────────────────────────────────────────────────
|
|
294
521
|
_spawnAllFromRegistry() {
|
|
295
522
|
for (const entry of listDaemons()) {
|
|
296
|
-
this._spawnEntry(entry.id, entry.cwd);
|
|
523
|
+
this._spawnEntry(entry.id, entry.cwd, entry.name);
|
|
297
524
|
}
|
|
298
525
|
}
|
|
299
|
-
_spawnEntry(id, cwd) {
|
|
526
|
+
_spawnEntry(id, cwd, name) {
|
|
300
527
|
// Clean up any prior slot (e.g. crashed + waiting for backoff).
|
|
301
528
|
const existing = this.children.get(id);
|
|
302
529
|
if (existing) {
|
|
@@ -307,9 +534,17 @@ export class Supervisor {
|
|
|
307
534
|
if (existing.child.state === "running")
|
|
308
535
|
void existing.child.stop();
|
|
309
536
|
}
|
|
537
|
+
// Build the daemon's config and inject it via REMOTE_PI_DIRECT_CONFIG —
|
|
538
|
+
// no per-cwd config file needed. The daemon scopes by (cwd, name) like any
|
|
539
|
+
// agent (plan/38); relay on.
|
|
540
|
+
const config = {
|
|
541
|
+
agent_name: name ?? defaultAgentName(cwd),
|
|
542
|
+
auto_start_relay: true,
|
|
543
|
+
};
|
|
310
544
|
const childOpts = {
|
|
311
545
|
extensionPath: this.opts.extensionPath,
|
|
312
546
|
cwd,
|
|
547
|
+
config,
|
|
313
548
|
};
|
|
314
549
|
if (this.opts.piBin !== undefined)
|
|
315
550
|
childOpts.piBin = this.opts.piBin;
|
|
@@ -329,6 +564,14 @@ export class Supervisor {
|
|
|
329
564
|
// Clean shutdown (e.g. via `stop_all`). Don't auto-restart.
|
|
330
565
|
return;
|
|
331
566
|
}
|
|
567
|
+
if (evt.code === EXIT_DAEMON_FRESH_SESSION) {
|
|
568
|
+
// App-triggered daemon `/new`: this is an intentional recycle, not a
|
|
569
|
+
// crash. Restart immediately and don't burn the crash backoff budget.
|
|
570
|
+
slot.restartAttempt = 0;
|
|
571
|
+
slot.child.noteRestart();
|
|
572
|
+
slot.child.spawn();
|
|
573
|
+
return;
|
|
574
|
+
}
|
|
332
575
|
// Crash: schedule restart with backoff. After exhausting the schedule
|
|
333
576
|
// we give up and stay in `crashed`.
|
|
334
577
|
if (slot.restartAttempt >= RESTART_BACKOFFS_MS.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../src/daemon/supervisor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../src/daemon/supervisor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -33,6 +33,17 @@ import type { ExtensionContext, ExtensionFactory } from "@earendil-works/pi-codi
|
|
|
33
33
|
import type { ClientMessage, SessionHistoryEvent } from "./protocol/types.js";
|
|
34
34
|
import { PlainPeerChannel } from "./transport/peer_channel.js";
|
|
35
35
|
export type RemoteState = "idle" | "started";
|
|
36
|
+
/** Relay connectivity as seen by an RPC client (Cockpit). Derived from
|
|
37
|
+
* `_state` + `_relay`: "disconnected" = relay off (idle); "connected" = live
|
|
38
|
+
* WS; "reconnecting" = was on, WS dropped, retrying. Surfaced via the
|
|
39
|
+
* `remote-pi:relay-state` custom message (see `_emitRelayState`). */
|
|
40
|
+
export type RelayConnectivity = "connected" | "reconnecting" | "disconnected";
|
|
41
|
+
/** Sentinel prefix for a transparent control message an RPC client sends on the
|
|
42
|
+
* `prompt` channel (stdin). The `input` hook intercepts it, runs the action,
|
|
43
|
+
* and swallows it (`action:"handled"`) so it never becomes an LLM turn or a
|
|
44
|
+
* transcript entry. Starts with NUL so it can't collide with real user input
|
|
45
|
+
* and doesn't begin with "/" (which would route to the command parser). */
|
|
46
|
+
export declare const CTRL_PREFIX = "\0remote-pi-ctrl:";
|
|
36
47
|
type BufferMsg = {
|
|
37
48
|
role: "user" | "assistant" | "toolResult" | string;
|
|
38
49
|
content?: unknown;
|
|
@@ -62,6 +73,17 @@ type BufferMsg = {
|
|
|
62
73
|
export declare function _connectForTest(ctx: unknown): Promise<void>;
|
|
63
74
|
/** Test-only: tear everything down (mirrors `/remote-pi stop`). */
|
|
64
75
|
export declare function _stopForTest(ctx: unknown): Promise<void>;
|
|
76
|
+
/** Test-only: read/reset the `_disposed` flag. In production it's per-module
|
|
77
|
+
* and never reset (a disposed instance is discarded), but tests share one
|
|
78
|
+
* module across cases, so they reset it to avoid cross-test pollution. */
|
|
79
|
+
export declare function _getDisposedForTest(): boolean;
|
|
80
|
+
export declare function _setDisposedForTest(v: boolean): void;
|
|
81
|
+
/** Test-only: true when this instance holds a live local-mesh node. */
|
|
82
|
+
export declare function _hasMeshNodeForTest(): boolean;
|
|
83
|
+
/** Test-only: the effective (possibly `#N`-suffixed) name the cwd-lock reserved. */
|
|
84
|
+
export declare function _getLockedNameForTest(): string | null;
|
|
85
|
+
/** Test-only: release + clear the cwd lock (the lock normally survives stop). */
|
|
86
|
+
export declare function _resetCwdLockForTest(): void;
|
|
65
87
|
/**
|
|
66
88
|
* Test-only: relay-only startup, no UDS mesh join. Replaces the old
|
|
67
89
|
* `remote-pi relay start` handler that some tests captured to bring up
|
|
@@ -93,6 +115,14 @@ export declare function _getState(): "idle" | "started" | "paired";
|
|
|
93
115
|
export declare function _getActivePeerCountForTest(): number;
|
|
94
116
|
/** Test-only: true if a specific peer (base64 std) has an attached channel. */
|
|
95
117
|
export declare function _hasActivePeerForTest(appPeerIdStd: string): boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Handle a transparent control command from an RPC client (Cockpit), received
|
|
120
|
+
* as a `CTRL_PREFIX`-tagged input the `input` hook swallowed. Toggles the relay
|
|
121
|
+
* WITHOUT leaving the local mesh (relay-only: `_cmdStart` up / `_goIdle` down),
|
|
122
|
+
* then emits the fresh state. `relay:status` just re-emits (no change) so the
|
|
123
|
+
* client can sync its button after (re)attaching to the RPC stream.
|
|
124
|
+
*/
|
|
125
|
+
export declare function _handleControl(cmd: string): Promise<void>;
|
|
96
126
|
/**
|
|
97
127
|
* Per-owner disconnect callback. Fires when one specific owner's channel
|
|
98
128
|
* detaches (e.g. relay told us the peer is gone). Other owners' channels
|
|
@@ -107,17 +137,6 @@ export declare function _hasActivePeerForTest(appPeerIdStd: string): boolean;
|
|
|
107
137
|
export declare function _onPeerDisconnect(appPeerId?: string): void;
|
|
108
138
|
declare const extension: ExtensionFactory;
|
|
109
139
|
export default extension;
|
|
110
|
-
/**
|
|
111
|
-
* Per-channel router. Replaces the W2D-pre `routeClientMessage` which
|
|
112
|
-
* implicitly used the `_peerChannel` singleton for replies. Each
|
|
113
|
-
* PlainPeerChannel now carries its own `sender` and passes it here so
|
|
114
|
-
* sender-specific responses (cancelled, pong, session_history) flow back
|
|
115
|
-
* through the right wire instead of being broadcast.
|
|
116
|
-
*
|
|
117
|
-
* Broadcast messages (user_input mirror, agent_chunk, tool_*) still use
|
|
118
|
-
* `_broadcastToActive` from the SDK event handlers; this router only
|
|
119
|
-
* handles incoming app→pi requests.
|
|
120
|
-
*/
|
|
121
140
|
export declare function _routeClientMessageFrom(sender: PlainPeerChannel, msg: ClientMessage, ctx: Pick<ExtensionContext, "abort">): void;
|
|
122
141
|
/**
|
|
123
142
|
* Backward-compatible shim for legacy callers + tests that didn't track
|
|
@@ -135,3 +154,41 @@ export declare function routeClientMessage(msg: ClientMessage, ctx: Pick<Extensi
|
|
|
135
154
|
* Stable id for user_input is `sync_<timestamp>`.
|
|
136
155
|
*/
|
|
137
156
|
export declare function _mapAgentMessagesToEvents(messages: BufferMsg[]): SessionHistoryEvent[];
|
|
157
|
+
/**
|
|
158
|
+
* `remote-pi restart-supervisor` — restarts the `pi-supervisord` PROCESS
|
|
159
|
+
* (not the daemons). The supervisor is a long-running Node process with no
|
|
160
|
+
* hot-reload, so after a `dist` rebuild the old code keeps running until the
|
|
161
|
+
* process is restarted. The Cockpit "Restart supervisor" button shells out to
|
|
162
|
+
* this; the OS-specific restart lives here so the app stays cross-platform.
|
|
163
|
+
*
|
|
164
|
+
* Restarting the supervisor re-spawns every daemon as a side effect. Exits 0
|
|
165
|
+
* on success, non-zero on failure (the Cockpit detects failure by exit code).
|
|
166
|
+
*/
|
|
167
|
+
/** One step of a restart sequence. `ignoreFailure` steps (e.g. `schtasks /End`
|
|
168
|
+
* when the task isn't running) don't abort the sequence. */
|
|
169
|
+
export interface RestartStep {
|
|
170
|
+
cmd: string;
|
|
171
|
+
args: string[];
|
|
172
|
+
ignoreFailure?: boolean;
|
|
173
|
+
}
|
|
174
|
+
/** Pure: the OS command sequence that restarts the supervisor service, or null
|
|
175
|
+
* when the platform isn't supported. Most platforms are 1 step; Windows is 2
|
|
176
|
+
* (`schtasks /End` then `/Run`). Exported for tests. */
|
|
177
|
+
export declare function _restartSupervisorCommand(platform: NodeJS.Platform, uid: number): RestartStep[] | null;
|
|
178
|
+
/**
|
|
179
|
+
* Read-only probe of the local UDS broker for the mesh roster, backing
|
|
180
|
+
* `remote-pi peers`. Opens a raw connection to `sockPath`, sends a single
|
|
181
|
+
* unregistered `list_peers` request, and resolves with the peer names from the
|
|
182
|
+
* broker's reply (local UDS peers + cross-PC `<pc>:<peer>` entries).
|
|
183
|
+
*
|
|
184
|
+
* The probe deliberately does NOT register as a peer: the broker answers
|
|
185
|
+
* observer probes without assigning a name or broadcasting peer_joined/left
|
|
186
|
+
* (see Broker._tryObserverProbe), so a shell query never perturbs the mesh —
|
|
187
|
+
* no phantom peer flashes in anyone's roster, local or cross-PC.
|
|
188
|
+
*
|
|
189
|
+
* Resolves null when no broker is reachable (connection refused / no socket
|
|
190
|
+
* file — i.e. no Pi or daemon is leading the mesh on this machine), or on
|
|
191
|
+
* timeout, so the caller can print an "offline" message instead of an empty
|
|
192
|
+
* roster.
|
|
193
|
+
*/
|
|
194
|
+
export declare function probeListPeers(sockPath: string, timeoutMs?: number): Promise<string[] | null>;
|
package/dist/index.js
CHANGED
|
Binary file
|