remote-pi 0.4.3 → 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.
Files changed (71) hide show
  1. package/README.md +33 -0
  2. package/dist/daemon/client.js +5 -2
  3. package/dist/daemon/client.js.map +1 -1
  4. package/dist/daemon/control_protocol.d.ts +68 -0
  5. package/dist/daemon/control_protocol.js.map +1 -1
  6. package/dist/daemon/cron_log.d.ts +45 -0
  7. package/dist/daemon/cron_log.js +72 -0
  8. package/dist/daemon/cron_log.js.map +1 -0
  9. package/dist/daemon/cron_registry.d.ts +80 -0
  10. package/dist/daemon/cron_registry.js +194 -0
  11. package/dist/daemon/cron_registry.js.map +1 -0
  12. package/dist/daemon/id.d.ts +6 -0
  13. package/dist/daemon/id.js +6 -0
  14. package/dist/daemon/id.js.map +1 -1
  15. package/dist/daemon/install.d.ts +9 -2
  16. package/dist/daemon/install.js +54 -10
  17. package/dist/daemon/install.js.map +1 -1
  18. package/dist/daemon/registry.d.ts +17 -1
  19. package/dist/daemon/registry.js +34 -4
  20. package/dist/daemon/registry.js.map +1 -1
  21. package/dist/daemon/rpc_child.d.ts +60 -0
  22. package/dist/daemon/rpc_child.js +150 -5
  23. package/dist/daemon/rpc_child.js.map +1 -1
  24. package/dist/daemon/supervisor.d.ts +44 -0
  25. package/dist/daemon/supervisor.js +256 -21
  26. package/dist/daemon/supervisor.js.map +1 -1
  27. package/dist/index.d.ts +68 -11
  28. package/dist/index.js +0 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/mcp/mesh_server.js +18 -9
  31. package/dist/mcp/mesh_server.js.map +1 -1
  32. package/dist/pairing/qr.d.ts +8 -1
  33. package/dist/pairing/qr.js +13 -3
  34. package/dist/pairing/qr.js.map +1 -1
  35. package/dist/protocol/codec.js +1 -0
  36. package/dist/protocol/codec.js.map +1 -1
  37. package/dist/protocol/types.d.ts +11 -0
  38. package/dist/rooms.d.ts +20 -0
  39. package/dist/rooms.js +35 -0
  40. package/dist/rooms.js.map +1 -1
  41. package/dist/session/broker.d.ts +79 -3
  42. package/dist/session/broker.js +155 -28
  43. package/dist/session/broker.js.map +1 -1
  44. package/dist/session/broker_remote.d.ts +30 -10
  45. package/dist/session/broker_remote.js +77 -39
  46. package/dist/session/broker_remote.js.map +1 -1
  47. package/dist/session/cwd_lock.d.ts +7 -2
  48. package/dist/session/cwd_lock.js +39 -9
  49. package/dist/session/cwd_lock.js.map +1 -1
  50. package/dist/session/global_config.d.ts +12 -2
  51. package/dist/session/global_config.js +16 -3
  52. package/dist/session/global_config.js.map +1 -1
  53. package/dist/session/ipc.d.ts +27 -0
  54. package/dist/session/ipc.js +22 -0
  55. package/dist/session/ipc.js.map +1 -0
  56. package/dist/session/leader_election.js +8 -2
  57. package/dist/session/leader_election.js.map +1 -1
  58. package/dist/session/local_config.d.ts +36 -6
  59. package/dist/session/local_config.js +103 -28
  60. package/dist/session/local_config.js.map +1 -1
  61. package/dist/session/mesh_node.d.ts +15 -1
  62. package/dist/session/mesh_node.js +26 -5
  63. package/dist/session/mesh_node.js.map +1 -1
  64. package/dist/session/peer.d.ts +19 -2
  65. package/dist/session/peer.js +45 -9
  66. package/dist/session/peer.js.map +1 -1
  67. package/dist/session/tools.js +14 -12
  68. package/dist/session/tools.js.map +1 -1
  69. package/package.json +2 -1
  70. package/service-templates/task-scheduler.xml.template +38 -0
  71. package/skills/agent-network/SKILL.md +63 -26
@@ -1,7 +1,75 @@
1
- import { spawn } from "node:child_process";
1
+ import { execFileSync, spawn } from "node:child_process";
2
2
  import { EventEmitter } from "node:events";
3
3
  import { defaultAgentName, loadLocalConfig } from "../session/local_config.js";
4
4
  export const EXIT_DAEMON_FRESH_SESSION = 42;
5
+ /**
6
+ * Resolve the `pi` executable for `spawn` (plan/40, decision C). On Windows a
7
+ * bare `pi` is actually `pi.cmd`/`pi.ps1`, and `spawn` won't find it without an
8
+ * extension → resolve the real path via `where` (rather than `shell:true`,
9
+ * which risks shell injection). An explicit path or an already-suffixed name is
10
+ * used as-is. POSIX returns the name unchanged. Best-effort: if `where` fails,
11
+ * fall back to the bare name (spawn will surface ENOENT honestly).
12
+ */
13
+ export function resolvePiBin(piBin, plat = process.platform) {
14
+ if (plat !== "win32")
15
+ return piBin;
16
+ if (piBin.includes("\\") || piBin.includes("/") || /\.[a-z0-9]+$/i.test(piBin))
17
+ return piBin;
18
+ try {
19
+ const out = execFileSync("where", [piBin], { encoding: "utf8" });
20
+ const first = out.split(/\r?\n/).map((l) => l.trim()).filter(Boolean)[0];
21
+ if (first)
22
+ return first;
23
+ }
24
+ catch {
25
+ /* `where` unavailable or `pi` not found — fall back to the bare name */
26
+ }
27
+ return piBin;
28
+ }
29
+ /**
30
+ * Maps an RPC stdout line to a busy-state transition: `message_start` → true
31
+ * (a message is streaming), `message_end` → false. Other lines → null (no
32
+ * change). Pure + exported for tests.
33
+ *
34
+ * NOTE (plan/39 detail 1): the Pi RPC stream has NO turn-level event — only
35
+ * per-message start/end (and `response{command:"prompt"}` is emitted at
36
+ * PREFLIGHT, i.e. turn START, not end). So this passive flag reflects
37
+ * "a message is being produced right now"; the authoritative turn-busy signal
38
+ * is `get_state.isStreaming` (see `RpcChild.refreshBusy`).
39
+ */
40
+ export function busyTransition(line) {
41
+ let obj;
42
+ try {
43
+ obj = JSON.parse(line);
44
+ }
45
+ catch {
46
+ return null;
47
+ }
48
+ const t = obj?.type;
49
+ if (t === "message_start")
50
+ return true;
51
+ if (t === "message_end")
52
+ return false;
53
+ return null;
54
+ }
55
+ /** Parses a `get_state` RPC response line, returning its id + isStreaming. */
56
+ function parseGetStateResponse(line) {
57
+ let obj;
58
+ try {
59
+ obj = JSON.parse(line);
60
+ }
61
+ catch {
62
+ return null;
63
+ }
64
+ const o = obj;
65
+ if (o.type !== "response" || o.command !== "get_state")
66
+ return null;
67
+ const data = o.data;
68
+ return {
69
+ id: typeof o.id === "string" ? o.id : undefined,
70
+ isStreaming: typeof data?.isStreaming === "boolean" ? data.isStreaming : undefined,
71
+ };
72
+ }
5
73
  /**
6
74
  * CLI args for the daemon's `pi --mode rpc` child.
7
75
  *
@@ -18,10 +86,22 @@ export const EXIT_DAEMON_FRESH_SESSION = 42;
18
86
  * same stable name in the picker/app instead of an auto-generated one. The
19
87
  * daemon's name is set at registration (`remote-pi create <cwd> --name "…"`).
20
88
  * Omitted when no name resolves, so the arg list stays minimal.
89
+ *
90
+ * `--approve` is mandatory for a daemon (pi ≥0.79 project trust): RPC mode is
91
+ * non-interactive, so without an override Pi resolves an untrusted project
92
+ * folder (any folder with `.pi/` or CLAUDE.md/AGENTS.md) to NOT trusted and
93
+ * silently skips its `.pi/settings.json` (model/provider/keys), instructions,
94
+ * resources and project extensions — the daemon then comes up with no model
95
+ * and fails on the first turn. The operator already authorized this folder by
96
+ * registering/launching a daemon in it, so `--approve` (trust-for-this-run) is
97
+ * the correct non-interactive stance. (Does NOT affect the separate "extension
98
+ * loaded twice" conflict, which comes from the extension being BOTH installed
99
+ * in ~/.pi/agent/extensions or cwd/.pi/extensions AND passed via `-e`.)
21
100
  */
22
101
  export function rpcSpawnArgs(extensionPath, sessionName, useContinue = true) {
23
102
  return [
24
103
  "--mode", "rpc",
104
+ "--approve",
25
105
  ...(useContinue ? ["--continue"] : []),
26
106
  ...(sessionName ? ["--name", sessionName] : []),
27
107
  "-e", extensionPath,
@@ -43,11 +123,19 @@ export class RpcChild extends EventEmitter {
43
123
  forceFreshSessionOnNextSpawn = false;
44
124
  /** Accumulates partial stdout lines while waiting for `\n`. */
45
125
  stdoutBuf = "";
126
+ /** Passive busy flag derived from the RPC stream (message_start/end). Hint
127
+ * only; `refreshBusy` syncs it authoritatively via get_state.isStreaming. */
128
+ _busy = false;
129
+ /** In-flight `get_state` requests, keyed by request id. */
130
+ _statePending = new Map();
46
131
  constructor(opts) {
47
132
  super();
48
133
  this.opts = opts;
49
134
  }
50
135
  get state() { return this._state; }
136
+ /** Passive busy hint from the stream. Prefer `refreshBusy()` for an
137
+ * authoritative check before acting on it (cron skip_if_busy). */
138
+ get isBusy() { return this._busy; }
51
139
  get pid() { return this.child?.pid; }
52
140
  get restartCount() { return this._restartCount; }
53
141
  get uptimeMs() {
@@ -61,12 +149,14 @@ export class RpcChild extends EventEmitter {
61
149
  if (this.child)
62
150
  return;
63
151
  this._stopping = false; // fresh start — a later signal IS a real crash
152
+ this._busy = false;
64
153
  this._state = "starting";
65
- const piBin = this.opts.piBin ?? "pi";
154
+ const piBin = resolvePiBin(this.opts.piBin ?? "pi");
66
155
  // Name the (single) daemon session after the daemon's configured identity,
67
156
  // so it shows up stably instead of an auto-generated name on each restart.
68
- const sessionName = loadLocalConfig(this.opts.cwd).agent_name
69
- ?? defaultAgentName(this.opts.cwd);
157
+ // Prefer the supervisor-injected config; fall back to the on-disk file.
158
+ const cfg = this.opts.config ?? loadLocalConfig(this.opts.cwd);
159
+ const sessionName = cfg.agent_name ?? defaultAgentName(this.opts.cwd);
70
160
  const useContinue = !this.forceFreshSessionOnNextSpawn;
71
161
  this.forceFreshSessionOnNextSpawn = false;
72
162
  const args = rpcSpawnArgs(this.opts.extensionPath, sessionName, useContinue);
@@ -76,6 +166,8 @@ export class RpcChild extends EventEmitter {
76
166
  // Mandatory daemon marker — `_cmdRoot` in index.ts can use this to
77
167
  // bail early if local config is missing (no wizard in RPC mode).
78
168
  REMOTE_PI_DAEMON: "1",
169
+ // Inject the daemon config inline so the child needs no config file.
170
+ ...(this.opts.config ? { REMOTE_PI_DIRECT_CONFIG: JSON.stringify(this.opts.config) } : {}),
79
171
  };
80
172
  const child = spawn(piBin, args, {
81
173
  cwd: this.opts.cwd,
@@ -154,9 +246,56 @@ export class RpcChild extends EventEmitter {
154
246
  this.stdoutBuf = this.stdoutBuf.slice(nl + 1);
155
247
  if (!line.trim())
156
248
  continue;
157
- this.emit("stdout", line);
249
+ this._handleStdoutLine(line);
158
250
  }
159
251
  }
252
+ _handleStdoutLine(line) {
253
+ const t = busyTransition(line);
254
+ if (t !== null)
255
+ this._busy = t;
256
+ const gs = parseGetStateResponse(line);
257
+ if (gs && gs.id) {
258
+ const pending = this._statePending.get(gs.id);
259
+ if (pending) {
260
+ clearTimeout(pending.timer);
261
+ this._statePending.delete(gs.id);
262
+ if (typeof gs.isStreaming === "boolean")
263
+ this._busy = gs.isStreaming;
264
+ pending.resolve(this._busy);
265
+ }
266
+ }
267
+ this.emit("stdout", line);
268
+ }
269
+ /**
270
+ * Authoritative busy check: queries the child's `get_state` and syncs
271
+ * `_busy` to `isStreaming`. Resolves the passive flag on timeout (no
272
+ * response) or when the child isn't running. Used by the cron `skip_if_busy`
273
+ * gate, where a false "not busy" would pile a prompt onto a live turn.
274
+ */
275
+ async refreshBusy(timeoutMs = 1500) {
276
+ if (this._state !== "running" || !this.child?.stdin)
277
+ return this._busy;
278
+ const id = `gs-${Date.now()}-${Math.round(Math.random() * 1e6)}`;
279
+ return new Promise((resolve) => {
280
+ const timer = setTimeout(() => {
281
+ this._statePending.delete(id);
282
+ resolve(this._busy);
283
+ }, timeoutMs);
284
+ this._statePending.set(id, { resolve, timer });
285
+ try {
286
+ this.child.stdin.write(JSON.stringify({ id, type: "get_state" }) + "\n");
287
+ }
288
+ catch {
289
+ clearTimeout(timer);
290
+ this._statePending.delete(id);
291
+ resolve(this._busy);
292
+ }
293
+ });
294
+ }
295
+ /** Test-only: feed a raw stdout line through the same handler. */
296
+ _ingestStdoutForTest(line) {
297
+ this._handleStdoutLine(line);
298
+ }
160
299
  _onExit(code, signal) {
161
300
  // Daemon app-action `/new`: child exits with a private code, supervisor
162
301
  // restarts it, and the next spawn omits --continue once to create a fresh
@@ -169,6 +308,12 @@ export class RpcChild extends EventEmitter {
169
308
  this._state = isCrash ? "crashed" : "stopped";
170
309
  this.child = null;
171
310
  this._startedAt = null;
311
+ this._busy = false;
312
+ for (const p of this._statePending.values()) {
313
+ clearTimeout(p.timer);
314
+ p.resolve(false);
315
+ }
316
+ this._statePending.clear();
172
317
  this.emit("exit", { code, signal, isCrash });
173
318
  }
174
319
  /** Bumps the restart counter — called by the supervisor when it
@@ -1 +1 @@
1
- {"version":3,"file":"rpc_child.js","sourceRoot":"","sources":["../../src/daemon/rpc_child.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rpc_child.js","sourceRoot":"","sources":["../../src/daemon/rpc_child.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type CronResult } from "./cron_log.js";
1
2
  /** Thrown by `start()` when another live supervisor already holds the UDS.
2
3
  * Prevents a second supervisor from orphaning the first's children. */
3
4
  export declare class SupervisorAlreadyRunningError extends Error {
@@ -12,10 +13,21 @@ export interface SupervisorOptions {
12
13
  /** Override the `pi` binary path. Defaults to "pi" on PATH. */
13
14
  piBin?: string;
14
15
  }
16
+ /** Pure decision for `fireJob` (plan/39) — picks the action from the daemon's
17
+ * liveness/busy state + the job's flags. Tested in isolation for all 4 ramos. */
18
+ export type FireAction = "send" | "wake_and_send" | "skip_down" | "skip_busy";
19
+ export declare function decideFireAction(o: {
20
+ running: boolean;
21
+ busy: boolean;
22
+ wake: boolean;
23
+ skipIfBusy: boolean;
24
+ }): FireAction;
15
25
  export declare class Supervisor {
16
26
  private readonly opts;
17
27
  private server;
18
28
  private readonly children;
29
+ /** Live croner schedules, keyed by cron job id (plan/39). */
30
+ private readonly cronJobs;
19
31
  private shuttingDown;
20
32
  constructor(opts: SupervisorOptions);
21
33
  /** Bind the control UDS + spawn all registered daemons. */
@@ -34,10 +46,42 @@ export declare class Supervisor {
34
46
  * immediately instead of waiting for the next supervisor restart. */
35
47
  private _opStart;
36
48
  private _opStopAll;
49
+ /** Stop a single registered daemon by id. Idempotent: a daemon that isn't
50
+ * running returns `stopped: false`. Unknown id → ok:false. Mirrors the
51
+ * per-id semantics of `_opStart`. Cancels any pending restart backoff so a
52
+ * deliberate stop stays stopped. */
53
+ private _opStop;
54
+ /** Restart a single registered daemon by id (stop-if-running, then spawn).
55
+ * Unknown id → ok:false. Resets the crash backoff. */
56
+ private _opRestart;
37
57
  private _opRestartAll;
38
58
  private _opSend;
39
59
  private _opRegister;
40
60
  private _opUnregister;
61
+ private _opCronAdd;
62
+ private _opCronList;
63
+ private _opCronRemove;
64
+ private _opCronEnable;
65
+ private _opCronRun;
66
+ private _opCronLog;
67
+ private _jobView;
68
+ /** Rebuild all live `Cron` schedules from the registry (enabled jobs only).
69
+ * Called on start; mutations reconcile incrementally via _scheduleCron/_stopCron. */
70
+ private _reconcileCron;
71
+ private _scheduleCron;
72
+ private _stopCron;
73
+ /** Detail 2: on start, run a catchup job once if its previous scheduled run
74
+ * was missed while the supervisor was down. Opt-in (`catchup`), at most 1×. */
75
+ private _runCatchup;
76
+ /**
77
+ * Fires a cron job: resolves the daemon, decides the action (decideFireAction),
78
+ * acts, and records the outcome — ALWAYS one `last_status` update + one JSONL
79
+ * line, for both fires and skips. Returns the result. `manual` bypasses the
80
+ * disabled-skip (used by `cron run` + catchup).
81
+ */
82
+ fireJob(jobId: string, opts?: {
83
+ manual?: boolean;
84
+ }): Promise<CronResult | "missing">;
41
85
  private _spawnAllFromRegistry;
42
86
  private _spawnEntry;
43
87
  private _onChildExit;