@yefengr/remote-pi 0.7.4 → 0.7.6

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 (165) hide show
  1. package/README.md +81 -586
  2. package/dist/bin/supervisord.js +4 -5
  3. package/dist/bin/supervisord.js.map +1 -1
  4. package/dist/config.d.ts +1 -1
  5. package/dist/config.js +2 -2
  6. package/dist/daemon/cli-links.d.ts +30 -0
  7. package/dist/daemon/cli-links.js +134 -0
  8. package/dist/daemon/cli-links.js.map +1 -0
  9. package/dist/daemon/commands.d.ts +27 -0
  10. package/dist/daemon/commands.js +295 -0
  11. package/dist/daemon/commands.js.map +1 -0
  12. package/dist/daemon/control_protocol.d.ts +53 -31
  13. package/dist/daemon/control_protocol.js +8 -31
  14. package/dist/daemon/control_protocol.js.map +1 -1
  15. package/dist/daemon/cron_log.d.ts +2 -23
  16. package/dist/daemon/cron_log.js +10 -25
  17. package/dist/daemon/cron_log.js.map +1 -1
  18. package/dist/daemon/cron_registry.d.ts +3 -40
  19. package/dist/daemon/cron_registry.js +58 -103
  20. package/dist/daemon/cron_registry.js.map +1 -1
  21. package/dist/daemon/install-runtime.d.ts +10 -0
  22. package/dist/daemon/install-runtime.js +81 -0
  23. package/dist/daemon/install-runtime.js.map +1 -0
  24. package/dist/daemon/install.d.ts +3 -63
  25. package/dist/daemon/install.js +5 -289
  26. package/dist/daemon/install.js.map +1 -1
  27. package/dist/daemon/preflight.d.ts +51 -0
  28. package/dist/daemon/preflight.js +136 -0
  29. package/dist/daemon/preflight.js.map +1 -0
  30. package/dist/daemon/registry.d.ts +33 -45
  31. package/dist/daemon/registry.js +171 -117
  32. package/dist/daemon/registry.js.map +1 -1
  33. package/dist/daemon/rpc_child.d.ts +92 -146
  34. package/dist/daemon/rpc_child.js +336 -263
  35. package/dist/daemon/rpc_child.js.map +1 -1
  36. package/dist/daemon/status.d.ts +45 -0
  37. package/dist/daemon/status.js +87 -0
  38. package/dist/daemon/status.js.map +1 -0
  39. package/dist/daemon/supervisor-ipc.d.ts +2 -0
  40. package/dist/daemon/supervisor-ipc.js +20 -0
  41. package/dist/daemon/supervisor-ipc.js.map +1 -0
  42. package/dist/daemon/supervisor.d.ts +48 -71
  43. package/dist/daemon/supervisor.js +430 -420
  44. package/dist/daemon/supervisor.js.map +1 -1
  45. package/dist/extension_ui_bridge.d.ts +4 -3
  46. package/dist/extension_ui_bridge.js +10 -0
  47. package/dist/extension_ui_bridge.js.map +1 -1
  48. package/dist/index.d.ts +25 -230
  49. package/dist/index.js +515 -5553
  50. package/dist/index.js.map +1 -1
  51. package/dist/pairing/crypto.d.ts +8 -1
  52. package/dist/pairing/crypto.js +56 -6
  53. package/dist/pairing/crypto.js.map +1 -1
  54. package/dist/pairing/owner_storage.d.ts +42 -0
  55. package/dist/pairing/owner_storage.js +207 -0
  56. package/dist/pairing/owner_storage.js.map +1 -0
  57. package/dist/pairing/qr.d.ts +3 -42
  58. package/dist/pairing/qr.js +9 -59
  59. package/dist/pairing/qr.js.map +1 -1
  60. package/dist/pairing/storage.d.ts +3 -45
  61. package/dist/pairing/storage.js +10 -223
  62. package/dist/pairing/storage.js.map +1 -1
  63. package/dist/protocol/types.d.ts +1 -1
  64. package/dist/protocol/v2/schemas.d.ts +1 -1
  65. package/dist/protocol/v2/schemas.js +1 -1
  66. package/dist/protocol/v2/schemas.js.map +1 -1
  67. package/dist/runtime/owner_router.d.ts +16 -0
  68. package/dist/runtime/owner_router.js +37 -0
  69. package/dist/runtime/owner_router.js.map +1 -0
  70. package/dist/session/ipc.d.ts +1 -22
  71. package/dist/session/ipc.js +4 -11
  72. package/dist/session/ipc.js.map +1 -1
  73. package/dist/session/local_config.d.ts +4 -47
  74. package/dist/session/local_config.js +19 -101
  75. package/dist/session/local_config.js.map +1 -1
  76. package/dist/transport/peer_channel.d.ts +25 -39
  77. package/dist/transport/peer_channel.js +74 -131
  78. package/dist/transport/peer_channel.js.map +1 -1
  79. package/dist/transport/relay_client.d.ts +26 -70
  80. package/dist/transport/relay_client.js +37 -106
  81. package/dist/transport/relay_client.js.map +1 -1
  82. package/docs/daemon.md +91 -207
  83. package/package.json +21 -17
  84. package/dist/daemon/id.d.ts +0 -24
  85. package/dist/daemon/id.js +0 -36
  86. package/dist/daemon/id.js.map +0 -1
  87. package/dist/mcp/mesh_result.d.ts +0 -10
  88. package/dist/mcp/mesh_result.js +0 -42
  89. package/dist/mcp/mesh_result.js.map +0 -1
  90. package/dist/mcp/mesh_server.d.ts +0 -16
  91. package/dist/mcp/mesh_server.js +0 -327
  92. package/dist/mcp/mesh_server.js.map +0 -1
  93. package/dist/mesh/canonical.d.ts +0 -30
  94. package/dist/mesh/canonical.js +0 -61
  95. package/dist/mesh/canonical.js.map +0 -1
  96. package/dist/mesh/client.d.ts +0 -18
  97. package/dist/mesh/client.js +0 -125
  98. package/dist/mesh/client.js.map +0 -1
  99. package/dist/mesh/encoding.d.ts +0 -38
  100. package/dist/mesh/encoding.js +0 -216
  101. package/dist/mesh/encoding.js.map +0 -1
  102. package/dist/mesh/self_revoke.d.ts +0 -73
  103. package/dist/mesh/self_revoke.js +0 -401
  104. package/dist/mesh/self_revoke.js.map +0 -1
  105. package/dist/mesh/siblings.d.ts +0 -49
  106. package/dist/mesh/siblings.js +0 -159
  107. package/dist/mesh/siblings.js.map +0 -1
  108. package/dist/mesh/types.d.ts +0 -34
  109. package/dist/mesh/types.js +0 -11
  110. package/dist/mesh/types.js.map +0 -1
  111. package/dist/mesh/verify.d.ts +0 -17
  112. package/dist/mesh/verify.js +0 -86
  113. package/dist/mesh/verify.js.map +0 -1
  114. package/dist/rooms.d.ts +0 -29
  115. package/dist/rooms.js +0 -57
  116. package/dist/rooms.js.map +0 -1
  117. package/dist/session/bridge.d.ts +0 -37
  118. package/dist/session/bridge.js +0 -130
  119. package/dist/session/bridge.js.map +0 -1
  120. package/dist/session/broker.d.ts +0 -189
  121. package/dist/session/broker.js +0 -507
  122. package/dist/session/broker.js.map +0 -1
  123. package/dist/session/broker_remote.d.ts +0 -74
  124. package/dist/session/broker_remote.js +0 -583
  125. package/dist/session/broker_remote.js.map +0 -1
  126. package/dist/session/cwd_lock.d.ts +0 -33
  127. package/dist/session/cwd_lock.js +0 -126
  128. package/dist/session/cwd_lock.js.map +0 -1
  129. package/dist/session/envelope.d.ts +0 -33
  130. package/dist/session/envelope.js +0 -117
  131. package/dist/session/envelope.js.map +0 -1
  132. package/dist/session/global_config.d.ts +0 -33
  133. package/dist/session/global_config.js +0 -73
  134. package/dist/session/global_config.js.map +0 -1
  135. package/dist/session/leader_election.d.ts +0 -32
  136. package/dist/session/leader_election.js +0 -106
  137. package/dist/session/leader_election.js.map +0 -1
  138. package/dist/session/mesh_node.d.ts +0 -116
  139. package/dist/session/mesh_node.js +0 -573
  140. package/dist/session/mesh_node.js.map +0 -1
  141. package/dist/session/peer.d.ts +0 -139
  142. package/dist/session/peer.js +0 -451
  143. package/dist/session/peer.js.map +0 -1
  144. package/dist/session/peer_inventory.d.ts +0 -13
  145. package/dist/session/peer_inventory.js +0 -48
  146. package/dist/session/peer_inventory.js.map +0 -1
  147. package/dist/session/peer_limits.d.ts +0 -9
  148. package/dist/session/peer_limits.js +0 -21
  149. package/dist/session/peer_limits.js.map +0 -1
  150. package/dist/session/setup_wizard.d.ts +0 -39
  151. package/dist/session/setup_wizard.js +0 -63
  152. package/dist/session/setup_wizard.js.map +0 -1
  153. package/dist/session/tools.d.ts +0 -24
  154. package/dist/session/tools.js +0 -252
  155. package/dist/session/tools.js.map +0 -1
  156. package/dist/session/wizard.d.ts +0 -13
  157. package/dist/session/wizard.js +0 -20
  158. package/dist/session/wizard.js.map +0 -1
  159. package/dist/transport/pi_forward_client.d.ts +0 -29
  160. package/dist/transport/pi_forward_client.js +0 -62
  161. package/dist/transport/pi_forward_client.js.map +0 -1
  162. package/dist/ui/footer.d.ts +0 -32
  163. package/dist/ui/footer.js +0 -34
  164. package/dist/ui/footer.js.map +0 -1
  165. package/skills/agent-network/SKILL.md +0 -310
@@ -1,9 +1,10 @@
1
- import { execFileSync } from "node:child_process";
2
- import { chmodSync, existsSync, lstatSync, mkdirSync, readFileSync, readlinkSync, symlinkSync, unlinkSync, writeFileSync } from "node:fs";
3
- import { delimiter } from "node:path";
4
- import { homedir, platform, tmpdir, userInfo } from "node:os";
1
+ import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
2
+ import { homedir, platform, userInfo } from "node:os";
5
3
  import { dirname, join, resolve } from "node:path";
6
4
  import { fileURLToPath } from "node:url";
5
+ import { execCommand as _exec, execElevatedWindows as _execElevatedWindows, tryExecCommand as _tryExec } from "./install-runtime.js";
6
+ export { buildElevatedCmd } from "./install-runtime.js";
7
+ export { buildCmdShim, isOnPath, linkCliBinaries, unlinkCliBinaries, userLocalBinDir, } from "./cli-links.js";
7
8
  export function detectPlatform() {
8
9
  switch (platform()) {
9
10
  case "darwin": return "macos";
@@ -259,289 +260,4 @@ export function uninstallService() {
259
260
  log.push(`(label: ${LAUNCHD_LABEL})`);
260
261
  return { platform: plat, unitPath, removed, log };
261
262
  }
262
- // ── Internals ──────────────────────────────────────────────────────────────
263
- function _exec(cmd, args, log) {
264
- try {
265
- const out = execFileSync(cmd, args, { encoding: "utf8", stdio: ["ignore", "pipe", "pipe"] });
266
- if (out.trim())
267
- log.push(`$ ${cmd} ${args.join(" ")}\n${out.trim()}`);
268
- else
269
- log.push(`$ ${cmd} ${args.join(" ")}`);
270
- }
271
- catch (e) {
272
- const err = e;
273
- const stderr = typeof err.stderr === "string" ? err.stderr : err.stderr?.toString() ?? "";
274
- throw new Error(`\`${cmd} ${args.join(" ")}\` exited ${err.status ?? "?"}\n${stderr.trim() || err.message}`);
275
- }
276
- }
277
- /** Like _exec but swallows errors — used for cleanup steps where failure
278
- * is expected (e.g., "unload" before "load" when nothing was loaded). */
279
- function _tryExec(cmd, args, log) {
280
- try {
281
- _exec(cmd, args, log);
282
- }
283
- catch { /* expected, suppress */ }
284
- }
285
- // ── Windows elevation (plan/40) ────────────────────────────────────────────
286
- //
287
- // `schtasks /Create` and `/Delete` register/remove the task in the root folder,
288
- // which requires administrator rights. We can't elevate the current Node
289
- // process, so we render the schtasks sequence into a temp `.cmd`, run it
290
- // through an elevated `cmd.exe` via PowerShell `Start-Process -Verb RunAs`
291
- // (one UAC prompt), and read the output back from a log file the script
292
- // redirects into.
293
- /**
294
- * Build the batch script run elevated. Each command line redirects its output
295
- * to `logFile` so the (separate, elevated) process's output can be read back by
296
- * the parent. Control-flow lines (`if`/`exit`/`rem`/`@`) run bare — redirecting
297
- * them would swallow the exit code. Pure + exported for tests.
298
- */
299
- export function buildElevatedCmd(lines, logFile) {
300
- const redirect = ` >> "${logFile}" 2>&1`;
301
- const body = lines.map((ln) => /^\s*(if|exit|rem|@)/i.test(ln) ? ln : ln + redirect);
302
- return ["@echo off", ...body].join("\r\n") + "\r\n";
303
- }
304
- function _readIfExists(p) {
305
- try {
306
- return readFileSync(p, "utf8");
307
- }
308
- catch {
309
- return "";
310
- }
311
- }
312
- /**
313
- * Run a schtasks command sequence elevated (UAC). Throws a clear error when the
314
- * prompt is declined or the task operation fails (`Start-Process -Verb RunAs`
315
- * throws → PowerShell exits non-zero → `execFileSync` throws). Captured schtasks
316
- * output is appended to `log` either way.
317
- */
318
- function _execElevatedWindows(lines, log) {
319
- const base = join(tmpdir(), `remote-pi-elevate-${process.pid}`);
320
- const cmdPath = `${base}.cmd`;
321
- const logFile = `${base}.log`;
322
- writeFileSync(cmdPath, buildElevatedCmd(lines, logFile));
323
- try {
324
- unlinkSync(logFile);
325
- }
326
- catch { /* none yet */ }
327
- let thrown = null;
328
- try {
329
- execFileSync("powershell", [
330
- "-NoProfile", "-NonInteractive", "-Command",
331
- `$p = Start-Process -FilePath cmd.exe -ArgumentList '/c','"${cmdPath}"' ` +
332
- "-Verb RunAs -Wait -PassThru -WindowStyle Hidden; exit $p.ExitCode",
333
- ], { stdio: ["ignore", "pipe", "pipe"] });
334
- }
335
- catch (e) {
336
- thrown = e;
337
- }
338
- const out = _readIfExists(logFile).trim();
339
- if (out)
340
- log.push(out);
341
- try {
342
- unlinkSync(cmdPath);
343
- }
344
- catch { /* best-effort */ }
345
- try {
346
- unlinkSync(logFile);
347
- }
348
- catch { /* best-effort */ }
349
- if (thrown) {
350
- throw new Error("administrator privileges required — the UAC prompt was declined or the " +
351
- "schtasks operation failed. Run the command again and accept the Windows " +
352
- `elevation prompt.${out ? `\n${out}` : ""}`);
353
- }
354
- }
355
- export function userLocalBinDir(home = homedir()) {
356
- return join(home, ".local", "bin");
357
- }
358
- /**
359
- * Check whether `dir` is on `process.env.PATH`. Tolerates trailing
360
- * slashes and relative entries (which we treat as not matching — `~/.local/bin`
361
- * is always absolute on our end).
362
- */
363
- export function isOnPath(dir, envPath = process.env["PATH"] ?? "") {
364
- const target = dir.replace(/\/+$/, "");
365
- return envPath.split(delimiter).some((entry) => entry.replace(/\/+$/, "") === target);
366
- }
367
- /**
368
- * Create (or refresh) the `remote-pi` + `pi-supervisord` symlinks in
369
- * `~/.local/bin/`. Idempotent — replaces stale links pointing at old
370
- * extension paths (Pi can reinstall the extension to a different hash dir
371
- * on upgrades, so this MUST overwrite).
372
- *
373
- * Returns `onPath: false` when `~/.local/bin` isn't in the user's `$PATH`.
374
- * The caller is responsible for surfacing the shell-rc instruction —
375
- * we don't edit the user's shell config files automatically.
376
- */
377
- export function linkCliBinaries(home = homedir(), paths = {}, opts = {}) {
378
- const binDir = userLocalBinDir(home);
379
- // Windows (plan/40): no POSIX symlinks. Installing via Pi (`pi install
380
- // npm:@yefengr/remote-pi`) never reaches PATH, so write real `.cmd` shims into
381
- // `~/.local/bin` and add that dir to the user's PATH (HKCU — no admin).
382
- if (platform() === "win32") {
383
- return _linkCliBinariesWindows(home, binDir, paths, opts);
384
- }
385
- const log = [];
386
- mkdirSync(binDir, { recursive: true });
387
- log.push(`ensured ${binDir}`);
388
- const remotePi = paths.remotePi ?? findRemotePiScript();
389
- const supervisord = paths.supervisord ?? findSupervisorScript();
390
- if (!existsSync(remotePi)) {
391
- throw new Error(`remote-pi script not found at ${remotePi}. ` +
392
- "Run `pnpm build` (dev) or reinstall the extension.");
393
- }
394
- if (!existsSync(supervisord)) {
395
- throw new Error(`supervisor script not found at ${supervisord}. ` +
396
- "Run `pnpm build` (dev) or reinstall the extension.");
397
- }
398
- // tsc strips the executable bit on its outputs; the shebang at the top
399
- // of dist/index.js means the file IS a valid interpreter target once
400
- // chmod +x is applied. Same for supervisord.js (no shebang — we rely
401
- // on `node` resolving via the symlink at exec time).
402
- try {
403
- chmodSync(remotePi, 0o755);
404
- }
405
- catch { /* best-effort */ }
406
- try {
407
- chmodSync(supervisord, 0o755);
408
- }
409
- catch { /* best-effort */ }
410
- const links = [
411
- { name: "remote-pi", path: join(binDir, "remote-pi"), target: remotePi },
412
- { name: "pi-supervisord", path: join(binDir, "pi-supervisord"), target: supervisord },
413
- ];
414
- for (const link of links) {
415
- _replaceSymlink(link.path, link.target, log);
416
- }
417
- const onPath = isOnPath(binDir);
418
- if (!onPath) {
419
- log.push(`WARNING: ${binDir} is not on $PATH. ` +
420
- `Add this line to your shell rc (~/.zshrc, ~/.bashrc, etc.): ` +
421
- `export PATH="$HOME/.local/bin:$PATH"`);
422
- }
423
- return { binDir, links, onPath, log };
424
- }
425
- /**
426
- * Windows variant of `linkCliBinaries`: writes `remote-pi.cmd` +
427
- * `pi-supervisord.cmd` shims into `~/.local/bin` and ensures that dir is on the
428
- * user's PATH (User scope — no admin). `opts.node` overrides the node binary
429
- * (tests); `opts.mutatePath === false` skips the real PATH mutation (tests).
430
- */
431
- function _linkCliBinariesWindows(home, binDir, paths, opts) {
432
- void home;
433
- const log = [];
434
- mkdirSync(binDir, { recursive: true });
435
- log.push(`ensured ${binDir}`);
436
- const node = opts.node ?? findNodeBinary();
437
- const remotePi = paths.remotePi ?? findRemotePiScript();
438
- const supervisord = paths.supervisord ?? findSupervisorScript();
439
- if (!existsSync(remotePi)) {
440
- throw new Error(`remote-pi script not found at ${remotePi}. ` +
441
- "Run `pnpm build` (dev) or reinstall the extension.");
442
- }
443
- if (!existsSync(supervisord)) {
444
- throw new Error(`supervisor script not found at ${supervisord}. ` +
445
- "Run `pnpm build` (dev) or reinstall the extension.");
446
- }
447
- const links = [
448
- { name: "remote-pi.cmd", path: join(binDir, "remote-pi.cmd"), target: remotePi },
449
- { name: "pi-supervisord.cmd", path: join(binDir, "pi-supervisord.cmd"), target: supervisord },
450
- ];
451
- for (const link of links) {
452
- writeFileSync(link.path, buildCmdShim(node, link.target));
453
- log.push(`wrote ${link.path}`);
454
- }
455
- const onPath = isOnPath(binDir);
456
- if (!onPath && opts.mutatePath !== false) {
457
- try {
458
- _addUserPath(binDir);
459
- log.push(`added ${binDir} to your user PATH — open a NEW terminal for \`remote-pi\` to resolve.`);
460
- }
461
- catch (e) {
462
- log.push(`WARNING: ${binDir} is not on PATH and auto-add failed (${String(e)}). ` +
463
- `Add it manually: setx PATH "%PATH%;${binDir}"`);
464
- }
465
- }
466
- return { binDir, links, onPath, log };
467
- }
468
- /** A Windows `.cmd` shim that forwards all args to `node "<target>"`. Pure. */
469
- export function buildCmdShim(node, target) {
470
- return `@echo off\r\n"${node}" "${target}" %*\r\n`;
471
- }
472
- /**
473
- * Append `dir` to the User-scope PATH via PowerShell (HKCU\Environment — no
474
- * admin). Idempotent: skips when `dir` is already an exact PATH segment. Single-
475
- * quoted PS literal (backslashes are literal in PS single quotes) with embedded
476
- * `'` doubled.
477
- */
478
- function _addUserPath(dir) {
479
- const lit = `'${dir.replace(/'/g, "''")}'`;
480
- execFileSync("powershell", [
481
- "-NoProfile", "-NonInteractive", "-Command",
482
- `$d = ${lit}; ` +
483
- "$p = [Environment]::GetEnvironmentVariable('Path','User'); " +
484
- "if (-not $p) { $p = '' }; " +
485
- "$parts = $p.Split(';') | Where-Object { $_ -ne '' }; " +
486
- "if ($parts -notcontains $d) { " +
487
- "[Environment]::SetEnvironmentVariable('Path', (($parts + $d) -join ';'), 'User') }",
488
- ], { stdio: ["ignore", "pipe", "pipe"] });
489
- }
490
- export function unlinkCliBinaries(home = homedir()) {
491
- const binDir = userLocalBinDir(home);
492
- const log = [];
493
- // Windows shims are `.cmd` files (linkCliBinaries writes those); POSIX uses
494
- // extensionless symlinks. Match what was actually created on this platform.
495
- const names = platform() === "win32"
496
- ? ["remote-pi.cmd", "pi-supervisord.cmd"]
497
- : ["remote-pi", "pi-supervisord"];
498
- const removed = [];
499
- for (const name of names) {
500
- const path = join(binDir, name);
501
- let existed = false;
502
- try {
503
- // lstatSync (not stat) so a symlink targeting a deleted file still
504
- // resolves — we want to remove the LINK itself, not chase it.
505
- lstatSync(path);
506
- existed = true;
507
- }
508
- catch { /* not present */ }
509
- if (existed) {
510
- try {
511
- unlinkSync(path);
512
- log.push(`removed ${path}`);
513
- }
514
- catch (e) {
515
- log.push(`failed to remove ${path}: ${String(e)}`);
516
- existed = false;
517
- }
518
- }
519
- removed.push({ name, path, existed });
520
- }
521
- return { binDir, removed, log };
522
- }
523
- /**
524
- * Atomic-ish symlink replace. Idiomatic recipe — `symlinkSync` errors
525
- * with `EEXIST` if the path is already a symlink/file, so we remove
526
- * first. Race window between unlink and symlink is irrelevant for a
527
- * single-user install command (no concurrent writers).
528
- */
529
- function _replaceSymlink(linkPath, target, log) {
530
- let existing = null;
531
- try {
532
- existing = readlinkSync(linkPath);
533
- }
534
- catch { /* not a symlink, or doesn't exist */ }
535
- if (existing === target) {
536
- log.push(`symlink ${linkPath} → ${target} (unchanged)`);
537
- return;
538
- }
539
- // Either it doesn't exist, or it points elsewhere. Remove + recreate.
540
- try {
541
- unlinkSync(linkPath);
542
- }
543
- catch { /* fine if absent */ }
544
- symlinkSync(target, linkPath);
545
- log.push(`symlink ${linkPath} → ${target}`);
546
- }
547
263
  //# sourceMappingURL=install.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/daemon/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/daemon/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { type AgentSessionRuntimeDiagnostic, type Extension } from "@earendil-works/pi-coding-agent";
2
+ export type PreflightBlockedCode = "remote_pi_extension_missing" | "duplicate_remote_pi_extension" | "extension_diagnostic" | "preflight_failed";
3
+ export type DaemonPreflightResult = {
4
+ ok: true;
5
+ } | {
6
+ ok: false;
7
+ code: PreflightBlockedCode;
8
+ message: string;
9
+ /** Safe package identities only; never raw paths, URLs, or diagnostics. */
10
+ sources?: string[];
11
+ };
12
+ export interface PreflightServices {
13
+ diagnostics: readonly AgentSessionRuntimeDiagnostic[];
14
+ resourceLoader: {
15
+ getExtensions(): {
16
+ extensions: readonly Extension[];
17
+ errors: readonly {
18
+ path: string;
19
+ error: string;
20
+ }[];
21
+ };
22
+ };
23
+ settingsManager?: {
24
+ drainErrors(): readonly unknown[];
25
+ };
26
+ modelRegistry?: {
27
+ getError(): string | undefined;
28
+ };
29
+ }
30
+ export interface DaemonPreflightOptions {
31
+ cwd: string;
32
+ agentDir?: string;
33
+ /** Tests inject discovery; production always uses Pi's SDK service factory. */
34
+ discover?: (options: {
35
+ cwd: string;
36
+ agentDir: string;
37
+ }) => Promise<PreflightServices>;
38
+ /** Tests may substitute the installed Remote Pi package root. */
39
+ packageRoot?: string;
40
+ }
41
+ /**
42
+ * Classifies already-discovered Pi services. Kept pure with injected service
43
+ * data so source identity and blocked-state rules have deterministic tests.
44
+ */
45
+ export declare function evaluateDaemonPreflight(services: PreflightServices, packageRoot?: string): DaemonPreflightResult;
46
+ /**
47
+ * Runs the same SettingsManager/package/resource discovery Pi performs before
48
+ * RPC startup. It creates services only: no AgentSession or model runtime is
49
+ * created, and the SDK exposes no service-level dispose operation to call.
50
+ */
51
+ export declare function runDaemonPreflight(options: DaemonPreflightOptions): Promise<DaemonPreflightResult>;
@@ -0,0 +1,136 @@
1
+ import { existsSync, readFileSync, statSync } from "node:fs";
2
+ import { dirname, relative, resolve } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { createAgentSessionServices, getAgentDir, } from "@earendil-works/pi-coding-agent";
5
+ const REMOTE_PI_PACKAGE = "@yefengr/remote-pi";
6
+ let offlineDiscoveryDepth = 0;
7
+ let previousOfflineValue;
8
+ /**
9
+ * Pi 0.79's resource loader can install missing configured packages unless
10
+ * PI_OFFLINE is set. The guard is reference-counted because supervisors can
11
+ * preflight separate entries concurrently. Discovery remains local-only.
12
+ */
13
+ async function withOfflineDiscovery(action) {
14
+ if (offlineDiscoveryDepth === 0) {
15
+ previousOfflineValue = process.env["PI_OFFLINE"];
16
+ process.env["PI_OFFLINE"] = "1";
17
+ }
18
+ offlineDiscoveryDepth += 1;
19
+ try {
20
+ return await action();
21
+ }
22
+ finally {
23
+ offlineDiscoveryDepth -= 1;
24
+ if (offlineDiscoveryDepth === 0) {
25
+ if (previousOfflineValue === undefined)
26
+ delete process.env["PI_OFFLINE"];
27
+ else
28
+ process.env["PI_OFFLINE"] = previousOfflineValue;
29
+ previousOfflineValue = undefined;
30
+ }
31
+ }
32
+ }
33
+ function packageNameAt(path) {
34
+ let current = path;
35
+ try {
36
+ if (!statSync(current).isDirectory())
37
+ current = dirname(current);
38
+ }
39
+ catch {
40
+ current = dirname(current);
41
+ }
42
+ while (true) {
43
+ const manifest = resolve(current, "package.json");
44
+ if (existsSync(manifest)) {
45
+ try {
46
+ const parsed = JSON.parse(readFileSync(manifest, "utf8"));
47
+ return typeof parsed.name === "string" ? parsed.name : undefined;
48
+ }
49
+ catch {
50
+ return undefined;
51
+ }
52
+ }
53
+ const parent = dirname(current);
54
+ if (parent === current)
55
+ return undefined;
56
+ current = parent;
57
+ }
58
+ }
59
+ function isRemotePiPackageSource(source) {
60
+ if (!source)
61
+ return false;
62
+ const spec = source.startsWith("npm:") ? source.slice("npm:".length) : source;
63
+ return spec === REMOTE_PI_PACKAGE || spec.startsWith(`${REMOTE_PI_PACKAGE}@`);
64
+ }
65
+ function isPathWithin(path, root) {
66
+ const child = resolve(path);
67
+ const parent = resolve(root);
68
+ const remainder = relative(parent, child);
69
+ return remainder === "" || (!remainder.startsWith("..") && !remainder.includes("../"));
70
+ }
71
+ function installedPackageRoot() {
72
+ return resolve(dirname(fileURLToPath(import.meta.url)), "../..");
73
+ }
74
+ function isRemotePiExtension(extension, packageRoot) {
75
+ if (isRemotePiPackageSource(extension.sourceInfo.source))
76
+ return true;
77
+ if (extension.sourceInfo.baseDir && packageNameAt(extension.sourceInfo.baseDir) === REMOTE_PI_PACKAGE)
78
+ return true;
79
+ if (packageNameAt(extension.resolvedPath) === REMOTE_PI_PACKAGE)
80
+ return true;
81
+ return isPathWithin(extension.resolvedPath, packageRoot) && packageNameAt(packageRoot) === REMOTE_PI_PACKAGE;
82
+ }
83
+ function safeSource(extension) {
84
+ const scope = extension.sourceInfo.scope === "project" || extension.sourceInfo.scope === "user"
85
+ ? extension.sourceInfo.scope
86
+ : "temporary";
87
+ return `${scope}:package:${REMOTE_PI_PACKAGE}`;
88
+ }
89
+ /**
90
+ * Classifies already-discovered Pi services. Kept pure with injected service
91
+ * data so source identity and blocked-state rules have deterministic tests.
92
+ */
93
+ export function evaluateDaemonPreflight(services, packageRoot = installedPackageRoot()) {
94
+ const extensions = services.resourceLoader.getExtensions();
95
+ const diagnosticErrors = services.diagnostics.filter((diagnostic) => diagnostic.type === "error");
96
+ if (extensions.errors.length > 0 || diagnosticErrors.length > 0) {
97
+ return {
98
+ ok: false,
99
+ code: "extension_diagnostic",
100
+ message: `Pi reported ${extensions.errors.length + diagnosticErrors.length} extension diagnostic error(s)`,
101
+ };
102
+ }
103
+ if ((services.settingsManager?.drainErrors().length ?? 0) > 0 || services.modelRegistry?.getError()) {
104
+ return { ok: false, code: "preflight_failed", message: "Pi settings or model configuration is invalid" };
105
+ }
106
+ const remoteExtensions = extensions.extensions.filter((extension) => isRemotePiExtension(extension, packageRoot));
107
+ if (remoteExtensions.length === 0) {
108
+ return { ok: false, code: "remote_pi_extension_missing", message: "No configured Remote Pi Extension was discovered" };
109
+ }
110
+ if (remoteExtensions.length > 1) {
111
+ return {
112
+ ok: false,
113
+ code: "duplicate_remote_pi_extension",
114
+ message: `Found ${remoteExtensions.length} configured Remote Pi Extension sources`,
115
+ sources: remoteExtensions.map(safeSource),
116
+ };
117
+ }
118
+ return { ok: true };
119
+ }
120
+ /**
121
+ * Runs the same SettingsManager/package/resource discovery Pi performs before
122
+ * RPC startup. It creates services only: no AgentSession or model runtime is
123
+ * created, and the SDK exposes no service-level dispose operation to call.
124
+ */
125
+ export async function runDaemonPreflight(options) {
126
+ try {
127
+ const agentDir = options.agentDir ?? getAgentDir();
128
+ const discover = options.discover ?? (async ({ cwd, agentDir: resolvedAgentDir }) => createAgentSessionServices({ cwd, agentDir: resolvedAgentDir }));
129
+ const services = await withOfflineDiscovery(() => discover({ cwd: options.cwd, agentDir }));
130
+ return evaluateDaemonPreflight(services, options.packageRoot);
131
+ }
132
+ catch {
133
+ return { ok: false, code: "preflight_failed", message: "Pi SDK resource discovery failed" };
134
+ }
135
+ }
136
+ //# sourceMappingURL=preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/daemon/preflight.ts"],"names":[],"mappings":"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"}
@@ -1,63 +1,51 @@
1
+ /** Persisted desired lifecycle for a daemon registration. */
2
+ export type DesiredState = "running" | "stopped";
3
+ /** Versioned daemon registry v2. Do not silently coerce an older shape. */
1
4
  export interface DaemonEntry {
2
- /** Absolute realpath of the cwd this daemon manages. */
5
+ /** Stable opaque endpoint identity. Never derived from cwd. */
6
+ id: string;
7
+ /** Absolute filesystem realpath captured at registration time. */
3
8
  cwd: string;
4
- /**
5
- * Display name (mesh `agent_name`). Persisted here because the supervisor
6
- * now injects the daemon's config via `REMOTE_PI_DIRECT_CONFIG` at spawn
7
- * instead of reading a per-cwd `.pi/remote-pi/config.json`. Legacy entries
8
- * (cwd only) fall back to `defaultAgentName(cwd)`.
9
- */
10
- name?: string;
9
+ name: string;
10
+ desired_state: DesiredState;
11
+ /** Epoch milliseconds. */
12
+ created_at: number;
11
13
  }
12
14
  export interface DaemonRegistry {
15
+ version: 2;
13
16
  daemons: DaemonEntry[];
14
17
  }
18
+ export type RegistryErrorCode = "registry_schema_invalid" | "registry_schema_unsupported";
15
19
  /**
16
- * Normalizes a user-provided path: expands `~`/`~/...`, resolves relative
17
- * components against `process.cwd()`, and runs `realpath` to canonicalize
18
- * symlinks. Throws if the resulting path doesn't exist on disk.
19
- *
20
- * `/remote-pi create` always stores normalized paths so two registrations
21
- * of the same logical folder via different aliases produce a single entry.
20
+ * A malformed or old registry is an operator-visible error, not an empty
21
+ * registry. Treating it as empty could overwrite valid registrations on the
22
+ * next save, which is destructive.
22
23
  */
24
+ export declare class RegistrySchemaError extends Error {
25
+ readonly code: RegistryErrorCode;
26
+ constructor(code: RegistryErrorCode, message: string);
27
+ }
28
+ /** Canonicalizes a supplied cwd and rejects nonexistent paths. */
23
29
  export declare function normalizeCwd(input: string): string;
24
- /** Reads the registry, returning an empty one when the file is absent. */
30
+ /** Missing file is empty v2; every existing file must be valid v2. */
25
31
  export declare function loadRegistry(): DaemonRegistry;
26
- export declare function saveRegistry(reg: DaemonRegistry): void;
27
- /**
28
- * Adds a daemon entry. Refuses duplicates (same normalized cwd already
29
- * present). Returns the derived id + normalized cwd so the caller can
30
- * report it back to the user.
31
- */
32
- export declare function addDaemon(rawCwd: string, name?: string): {
33
- id: string;
34
- cwd: string;
35
- name: string;
36
- };
37
- /**
38
- * Removes the daemon entry whose derived id matches `id`. Returns the
39
- * removed cwd (if any). Does NOT touch the cwd's local config — `create`
40
- * the same cwd later restores the registration idempotently.
41
- */
32
+ /** Validates before atomically replacing the on-disk registry. */
33
+ export declare function saveRegistry(registry: DaemonRegistry): void;
34
+ /** Explicit registration always starts in the desired running state. */
35
+ export declare function addDaemon(rawCwd: string, name?: string): DaemonEntry;
42
36
  export declare function removeDaemon(id: string): {
43
37
  removed: boolean;
44
38
  cwd?: string;
45
39
  };
46
- /** Snapshot of all registered daemons with derived ids. Order matches the
47
- * file's insertion order first-registered first. */
48
- export declare function listDaemons(): Array<{
49
- id: string;
50
- cwd: string;
51
- name: string;
52
- }>;
40
+ /** Finds a registration by canonical cwd for external lifecycle integrations. */
41
+ export declare function findDaemonByCwd(rawCwd: string): DaemonEntry | undefined;
42
+ /** Persists intended lifecycle independently from process state. */
43
+ export declare function setDaemonDesiredState(id: string, desiredState: DesiredState): DaemonEntry | undefined;
44
+ /** Returns v2 entries in insertion order. */
45
+ export declare function listDaemons(): DaemonEntry[];
53
46
  /**
54
- * One-shot migration: backfill `name` (folder-derived) into legacy entries
55
- * that predate the name field, persisting the change to `daemons.json`.
56
- * Idempotent — writes only when something was missing. Returns how many
57
- * entries were backfilled. The supervisor runs this on start.
47
+ * Backward compatible export name only. v2 deliberately has no in-place
48
+ * migration: an old registry must be explicitly replaced by its operator.
58
49
  */
59
50
  export declare function migrateRegistryNames(): number;
60
- /** Test/diag-only: returns the on-disk path. Exported so tests can poke
61
- * at it (e.g. tmpdir override is done via env, but for now the path is
62
- * hardcoded to ~/.pi/remote/daemons.json). */
63
51
  export declare function registryPath(): string;