@intentic/machine 1.331.0 → 1.332.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 (230) hide show
  1. package/README.md +56 -4
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +1 -1
  4. package/dist/app.js.map +1 -1
  5. package/dist/autostart/autostart.js +1 -1
  6. package/dist/autostart/autostart.js.map +1 -1
  7. package/dist/cli-ui.d.ts +10 -0
  8. package/dist/cli-ui.d.ts.map +1 -0
  9. package/dist/cli-ui.js +62 -0
  10. package/dist/cli-ui.js.map +1 -0
  11. package/dist/commands.d.ts.map +1 -1
  12. package/dist/commands.js +61 -26
  13. package/dist/commands.js.map +1 -1
  14. package/dist/daemon-base.d.ts +1 -0
  15. package/dist/daemon-base.d.ts.map +1 -1
  16. package/dist/daemon-base.js +21 -18
  17. package/dist/daemon-base.js.map +1 -1
  18. package/dist/device/audit.d.ts.map +1 -1
  19. package/dist/device/audit.js.map +1 -1
  20. package/dist/device/commands.d.ts +8 -6
  21. package/dist/device/commands.d.ts.map +1 -1
  22. package/dist/device/commands.js +64 -42
  23. package/dist/device/commands.js.map +1 -1
  24. package/dist/device/connection.d.ts.map +1 -1
  25. package/dist/device/connection.js +2 -3
  26. package/dist/device/connection.js.map +1 -1
  27. package/dist/device/grant.d.ts +7 -0
  28. package/dist/device/grant.d.ts.map +1 -1
  29. package/dist/device/loopback-catch.d.ts.map +1 -1
  30. package/dist/device/loopback-catch.js +1 -1
  31. package/dist/device/loopback-catch.js.map +1 -1
  32. package/dist/device/mcp.d.ts.map +1 -1
  33. package/dist/device/mcp.js +19 -0
  34. package/dist/device/mcp.js.map +1 -1
  35. package/dist/device/policy.d.ts.map +1 -1
  36. package/dist/device/policy.js +3 -5
  37. package/dist/device/policy.js.map +1 -1
  38. package/dist/device/router.d.ts +7 -0
  39. package/dist/device/router.d.ts.map +1 -1
  40. package/dist/device/router.js +17 -5
  41. package/dist/device/router.js.map +1 -1
  42. package/dist/device/sandbox-cli.d.ts +12 -1
  43. package/dist/device/sandbox-cli.d.ts.map +1 -1
  44. package/dist/device/sandbox-cli.js +90 -18
  45. package/dist/device/sandbox-cli.js.map +1 -1
  46. package/dist/device/sandbox-rounds/keeper.d.ts +28 -1
  47. package/dist/device/sandbox-rounds/keeper.d.ts.map +1 -1
  48. package/dist/device/sandbox-rounds/keeper.js +115 -18
  49. package/dist/device/sandbox-rounds/keeper.js.map +1 -1
  50. package/dist/device/sandbox-rounds/sleep.d.ts +52 -0
  51. package/dist/device/sandbox-rounds/sleep.d.ts.map +1 -0
  52. package/dist/device/sandbox-rounds/sleep.js +115 -0
  53. package/dist/device/sandbox-rounds/sleep.js.map +1 -0
  54. package/dist/device/tools/agent.js +1 -1
  55. package/dist/device/tools/agent.js.map +1 -1
  56. package/dist/device/tools/android.d.ts.map +1 -1
  57. package/dist/device/tools/android.js +7 -62
  58. package/dist/device/tools/android.js.map +1 -1
  59. package/dist/device/tools/describe.d.ts +6 -0
  60. package/dist/device/tools/describe.d.ts.map +1 -1
  61. package/dist/device/tools/describe.js +30 -9
  62. package/dist/device/tools/describe.js.map +1 -1
  63. package/dist/device/tools/ic-binary.d.ts +7 -0
  64. package/dist/device/tools/ic-binary.d.ts.map +1 -1
  65. package/dist/device/tools/ic-binary.js +16 -8
  66. package/dist/device/tools/ic-binary.js.map +1 -1
  67. package/dist/device/tools/logs/logs.d.ts +30 -0
  68. package/dist/device/tools/logs/logs.d.ts.map +1 -0
  69. package/dist/device/tools/logs/logs.js +147 -0
  70. package/dist/device/tools/logs/logs.js.map +1 -0
  71. package/dist/device/tools/programs/artifacts.d.ts.map +1 -1
  72. package/dist/device/tools/programs/artifacts.js +5 -10
  73. package/dist/device/tools/programs/artifacts.js.map +1 -1
  74. package/dist/device/tools/programs/{tunnel.d.ts → device-tunnel.d.ts} +1 -1
  75. package/dist/device/tools/programs/device-tunnel.d.ts.map +1 -0
  76. package/dist/device/tools/programs/{tunnel.js → device-tunnel.js} +1 -1
  77. package/dist/device/tools/programs/device-tunnel.js.map +1 -0
  78. package/dist/device/tools/programs/isolated.d.ts +0 -1
  79. package/dist/device/tools/programs/isolated.d.ts.map +1 -1
  80. package/dist/device/tools/programs/isolated.js +8 -10
  81. package/dist/device/tools/programs/isolated.js.map +1 -1
  82. package/dist/device/tools/programs/programs.d.ts.map +1 -1
  83. package/dist/device/tools/programs/programs.js +87 -35
  84. package/dist/device/tools/programs/programs.js.map +1 -1
  85. package/dist/device/tools/sandboxes.d.ts.map +1 -1
  86. package/dist/device/tools/sandboxes.js +11 -10
  87. package/dist/device/tools/sandboxes.js.map +1 -1
  88. package/dist/device/tools/shell.d.ts +3 -4
  89. package/dist/device/tools/shell.d.ts.map +1 -1
  90. package/dist/device/tools/shell.js +24 -86
  91. package/dist/device/tools/shell.js.map +1 -1
  92. package/dist/engine-env.d.ts +15 -0
  93. package/dist/engine-env.d.ts.map +1 -0
  94. package/dist/engine-env.js +80 -0
  95. package/dist/engine-env.js.map +1 -0
  96. package/dist/environments/commands.d.ts +7 -1
  97. package/dist/environments/commands.d.ts.map +1 -1
  98. package/dist/environments/commands.js +37 -31
  99. package/dist/environments/commands.js.map +1 -1
  100. package/dist/environments/machine-upgrade.d.ts +8 -1
  101. package/dist/environments/machine-upgrade.d.ts.map +1 -1
  102. package/dist/environments/machine-upgrade.js +35 -26
  103. package/dist/environments/machine-upgrade.js.map +1 -1
  104. package/dist/environments/machine.d.ts +5 -4
  105. package/dist/environments/machine.d.ts.map +1 -1
  106. package/dist/environments/machine.js +13 -16
  107. package/dist/environments/machine.js.map +1 -1
  108. package/dist/environments/wsl.d.ts.map +1 -1
  109. package/dist/environments/wsl.js +4 -7
  110. package/dist/environments/wsl.js.map +1 -1
  111. package/dist/install.d.ts.map +1 -1
  112. package/dist/install.js +28 -30
  113. package/dist/install.js.map +1 -1
  114. package/dist/resident/last-exit.d.ts +40 -0
  115. package/dist/resident/last-exit.d.ts.map +1 -0
  116. package/dist/resident/last-exit.js +147 -0
  117. package/dist/resident/last-exit.js.map +1 -0
  118. package/dist/resident/log-roll.d.ts +8 -0
  119. package/dist/resident/log-roll.d.ts.map +1 -0
  120. package/dist/resident/log-roll.js +30 -0
  121. package/dist/resident/log-roll.js.map +1 -0
  122. package/dist/{resident.d.ts → resident/resident.d.ts} +1 -1
  123. package/dist/resident/resident.d.ts.map +1 -0
  124. package/dist/{resident.js → resident/resident.js} +52 -27
  125. package/dist/resident/resident.js.map +1 -0
  126. package/dist/{supervision.d.ts → resident/supervision.d.ts} +7 -3
  127. package/dist/resident/supervision.d.ts.map +1 -0
  128. package/dist/{supervision.js → resident/supervision.js} +17 -14
  129. package/dist/resident/supervision.js.map +1 -0
  130. package/dist/resident/watchdog.d.ts +24 -0
  131. package/dist/resident/watchdog.d.ts.map +1 -0
  132. package/dist/resident/watchdog.js +69 -0
  133. package/dist/resident/watchdog.js.map +1 -0
  134. package/dist/status.d.ts +14 -8
  135. package/dist/status.d.ts.map +1 -1
  136. package/dist/status.js +141 -107
  137. package/dist/status.js.map +1 -1
  138. package/dist/sync/attach-commands.d.ts +1 -1
  139. package/dist/sync/attach-commands.d.ts.map +1 -1
  140. package/dist/sync/attach-commands.js +19 -12
  141. package/dist/sync/attach-commands.js.map +1 -1
  142. package/dist/sync/commands.d.ts +6 -3
  143. package/dist/sync/commands.d.ts.map +1 -1
  144. package/dist/sync/commands.js +149 -113
  145. package/dist/sync/commands.js.map +1 -1
  146. package/dist/sync/exec.d.ts +9 -0
  147. package/dist/sync/exec.d.ts.map +1 -1
  148. package/dist/sync/exec.js +21 -22
  149. package/dist/sync/exec.js.map +1 -1
  150. package/dist/sync/folders.d.ts.map +1 -1
  151. package/dist/sync/folders.js +3 -14
  152. package/dist/sync/folders.js.map +1 -1
  153. package/dist/sync/forget-command.d.ts +1 -1
  154. package/dist/sync/forget-command.d.ts.map +1 -1
  155. package/dist/sync/forget-command.js +10 -7
  156. package/dist/sync/forget-command.js.map +1 -1
  157. package/dist/sync/git-bridge.d.ts.map +1 -1
  158. package/dist/sync/git-bridge.js +4 -2
  159. package/dist/sync/git-bridge.js.map +1 -1
  160. package/dist/sync/local-sandboxes.d.ts.map +1 -1
  161. package/dist/sync/local-sandboxes.js +2 -4
  162. package/dist/sync/local-sandboxes.js.map +1 -1
  163. package/dist/sync/mirror.d.ts.map +1 -1
  164. package/dist/sync/mirror.js +7 -16
  165. package/dist/sync/mirror.js.map +1 -1
  166. package/dist/sync/mutagen.d.ts.map +1 -1
  167. package/dist/sync/mutagen.js +33 -37
  168. package/dist/sync/mutagen.js.map +1 -1
  169. package/dist/sync/project/project-commands.d.ts +7 -2
  170. package/dist/sync/project/project-commands.d.ts.map +1 -1
  171. package/dist/sync/project/project-commands.js +110 -46
  172. package/dist/sync/project/project-commands.js.map +1 -1
  173. package/dist/sync/project/project-files.d.ts +4 -6
  174. package/dist/sync/project/project-files.d.ts.map +1 -1
  175. package/dist/sync/project/project-files.js +4 -6
  176. package/dist/sync/project/project-files.js.map +1 -1
  177. package/dist/sync/project/project-local.d.ts.map +1 -1
  178. package/dist/sync/project/project-local.js +3 -19
  179. package/dist/sync/project/project-local.js.map +1 -1
  180. package/dist/sync/project/project-remote.js +4 -4
  181. package/dist/sync/project/project-transfer.d.ts +13 -30
  182. package/dist/sync/project/project-transfer.d.ts.map +1 -1
  183. package/dist/sync/project/project-transfer.js +1 -1
  184. package/dist/sync/project/project-transfer.js.map +1 -1
  185. package/dist/sync/retire.d.ts.map +1 -1
  186. package/dist/sync/retire.js +3 -3
  187. package/dist/sync/retire.js.map +1 -1
  188. package/dist/sync/siblings.d.ts.map +1 -1
  189. package/dist/sync/siblings.js +3 -6
  190. package/dist/sync/siblings.js.map +1 -1
  191. package/dist/sync/ssh.d.ts +1 -1
  192. package/dist/sync/ssh.d.ts.map +1 -1
  193. package/dist/sync/ssh.js +8 -7
  194. package/dist/sync/ssh.js.map +1 -1
  195. package/dist/sync/swap-pause.d.ts.map +1 -1
  196. package/dist/sync/swap-pause.js +2 -2
  197. package/dist/sync/swap-pause.js.map +1 -1
  198. package/dist/upgrade.d.ts +7 -0
  199. package/dist/upgrade.d.ts.map +1 -1
  200. package/dist/upgrade.js +24 -13
  201. package/dist/upgrade.js.map +1 -1
  202. package/dist/upkeep/doctor.d.ts +4 -2
  203. package/dist/upkeep/doctor.d.ts.map +1 -1
  204. package/dist/upkeep/doctor.js +40 -26
  205. package/dist/upkeep/doctor.js.map +1 -1
  206. package/dist/upkeep/login.js +1 -1
  207. package/dist/upkeep/login.js.map +1 -1
  208. package/dist/upkeep/retention.d.ts +6 -0
  209. package/dist/upkeep/retention.d.ts.map +1 -1
  210. package/dist/upkeep/retention.js +55 -3
  211. package/dist/upkeep/retention.js.map +1 -1
  212. package/dist/upkeep/retired.js +1 -1
  213. package/dist/upkeep/retired.js.map +1 -1
  214. package/dist/upkeep/second-ic.d.ts.map +1 -1
  215. package/dist/upkeep/second-ic.js +4 -6
  216. package/dist/upkeep/second-ic.js.map +1 -1
  217. package/dist/upkeep/trash.d.ts.map +1 -1
  218. package/dist/upkeep/trash.js +5 -6
  219. package/dist/upkeep/trash.js.map +1 -1
  220. package/package.json +9 -9
  221. package/dist/device/tools/programs/tunnel.d.ts.map +0 -1
  222. package/dist/device/tools/programs/tunnel.js.map +0 -1
  223. package/dist/resident.d.ts.map +0 -1
  224. package/dist/resident.js.map +0 -1
  225. package/dist/supervision.d.ts.map +0 -1
  226. package/dist/supervision.js.map +0 -1
  227. package/dist/watchdog.d.ts +0 -13
  228. package/dist/watchdog.d.ts.map +0 -1
  229. package/dist/watchdog.js +0 -38
  230. package/dist/watchdog.js.map +0 -1
package/README.md CHANGED
@@ -156,7 +156,7 @@ flowchart LR
156
156
  has no meaning for is still refused. `reshape-later` and the old `reshape` op stay only for pages and daemons from
157
157
  before `set-shape` (v1.312.0 and older), and go in v1.314.0.
158
158
  - Every path under the user's home goes through `homeDir()` from [local-agent](../local-agent), which follows a `HOME`
159
- set after startup; a test holds the sources to it.
159
+ set after startup; a check holds the sources to it ([home-dir](../../_tools/checks/home-dir.mjs)).
160
160
  - Scopes are enforced here and nowhere else: the sandbox only asks, and a refusal names the switch that is off.
161
161
  Files stay inside the configured roots, writes need their own switch, and every call is appended to
162
162
  `~/.intentic/machine/audit.jsonl`, set aside as `audit.jsonl.1` once it reaches 8 MB (2026-10-05: it grew without
@@ -629,6 +629,11 @@ clock.
629
629
  lasting ledger of its own repairs.
630
630
  - **The log** (`~/.intentic/machine/machine.log`, like every round): what ic is doing as it does it, and each
631
631
  sandbox's verdict when it changes (a standing `healthy` or `needs-you` is said once per stretch; `fixed` always).
632
+ A restart of one sandbox is said whole: ic's finding ("Restarting the sandbox, because Daemon health: …"), what made
633
+ the keeper run ic (its sweep, or this agent's link down since when), its side of the computer and the failed check
634
+ ids. The same goes into the container as `/history/logs/restart-intent.json` (`{at, by: "keeper", host, side, action,
635
+ reason, checks}`, read by the daemon at boot) through a `docker exec` of at most three seconds that the restart never
636
+ waits on; ic may write its own over it.
632
637
  - **Where.** Every environment runs its own keeper, since `ic sandbox fix` knows only the sandboxes its own ic keeps
633
638
  records of; a WSL distro's shares the Windows side's Docker Desktop. Each keeper sweeps only while its environment
634
639
  keeps a sandbox of its own: one the listing names without `keptElsewhere`, or one its ic still has a record of that
@@ -652,6 +657,28 @@ clock.
652
657
  retiring as before was rejected, since a machine whose last link was revoked kept its sandbox down after every
653
658
  reboot).
654
659
 
660
+ ### Sleep and wake
661
+
662
+ (2026-10-10) A PC holding a dozen sandboxes, one or two of them in use, kept every one up: about 1.4 GB each on rog.
663
+ The keeper now puts an unneeded sandbox to sleep and wakes it when somebody opens it
664
+ ([`device/sandbox-rounds/sleep.ts`](src/device/sandbox-rounds/sleep.ts)).
665
+
666
+ - **Sleep.** Right after each sweep the keeper runs `ic sandbox sleep --idle <minutes> --json --source agent`. ic stops,
667
+ through Docker (so `--restart unless-stopped` leaves it down), every running sandbox of this side whose daemon has
668
+ said for that long that nobody needs it: no editor connected, nothing in flight, no terminal typed in, nobody
669
+ connected to one of its apps (`quietSince` in its work signal), and no promised wake due within the stretch. ic
670
+ records it asleep and reports `asleep: true` to the platform, so the editor can say so. A sleeping sandbox's dead link
671
+ is never a repair: the keeper leaves it alone, and `ic sandbox fix` finds it healthy.
672
+ - **Wake.** The platform never calls a machine. A browser that finds the sandbox asleep asks the platform to wake it,
673
+ and this agent's wake round asks the platform for such requests (`ic sandbox wakes --json --source agent`, one request
674
+ for every sleeper on this side, each under its own report key), starting each one asked for through `ic sandbox
675
+ start`. It asks every fifteen seconds while anything sleeps, and every five minutes otherwise, to catch a sleep made
676
+ by hand. It runs whatever the keeper's switch says, so a sandbox asleep when the keeper was switched off still wakes.
677
+ - **The setting** is this environment's `sandboxSleepMinutes` in `machine.json`: absent means 30, `0` means never. Set
678
+ it with `intentic-machine sandbox sleep-after <minutes|off>` and read it with `sleep-after status`.
679
+ `intentic-machine sandbox sleep <slug>` puts one sandbox to sleep now. An `ic` without the verbs is said once and
680
+ nothing sleeps.
681
+
655
682
  ### Upkeep
656
683
 
657
684
  What older releases left on a device, and the stores with no bound, are put right by a reconciler that ships with each
@@ -681,6 +708,8 @@ login entries once and then stood in for every later cleanup too (2026-10-05).
681
708
  - `~/.intentic/machine/trash` entries older than 30 days, by the stamp in their name (a moved folder keeps its old
682
709
  times), deleted; a name with no stamp is left and reported;
683
710
  - `audit.jsonl` set aside at 8 MB;
711
+ - what programs started with `app_start` printed (`runs/<sandbox>/.logs`), after 14 days or past the newest 100 per
712
+ sandbox, never a run `apps.json` still holds as running;
684
713
  - the install command's half downloads in `bin/` (`*.part`, `*.part-<release>`) older than a day, never while an
685
714
  upgrade runs;
686
715
  - a second `ic` found first on PATH (a root install's `/usr/local/bin/ic`), reported with both versions, since only
@@ -697,7 +726,7 @@ login entries once and then stood in for every later cleanup too (2026-10-05).
697
726
  ### The hang watchdog
698
727
 
699
728
  Every supervisor of this agent restarts it when it exits, and none can tell a hung agent from a busy one
700
- ([`watchdog.ts`](src/watchdog.ts), 2026-10-05). So the agent watches its own event loop from a Worker thread, which has
729
+ ([`watchdog.ts`](src/resident/watchdog.ts), 2026-10-05). So the agent watches its own event loop from a Worker thread, which has
701
730
  a loop of its own: the main loop pings it every five seconds, and after three minutes without a ping the Worker writes
702
731
  `event loop stalled for N s; exiting so the supervisor restarts the agent` to the log (straight to fd 2, where every
703
732
  supervisor sends it) and kills the process with SIGKILL. Checks of its own held apart by far more than their
@@ -708,11 +737,34 @@ laptop's sleep found the last ping minutes old and killed a healthy agent). That
708
737
  launcher passes to the logon task, and the Windows side restarts a distro's agent that stopped. The Worker is made from
709
738
  source text, so the compiled binary needs no second file; both it and the SIGKILL were checked under
710
739
  `bun build --compile`. Like any crash, a stall counts toward a new release's trial ([`agent-trial.ts`](src/agent-trial.ts)).
740
+ The stall is read on the monotonic clock, and the wall clock running ten seconds or more ahead of it between two checks
741
+ (Linux's monotonic clock stops while the machine sleeps, so only the wall clock shows the time away) is a sleep too:
742
+ either kind is logged as `watchdog: the agent was paused for N s (suspected sleep/resume, …)` and never counted, and a
743
+ real stall within ten minutes of one says how long after it came (2026-10-11).
744
+
745
+ ### Why the agent before ended
746
+
747
+ Every way out of the agent writes `~/.intentic/machine/last-exit.json` ([`last-exit.ts`](src/resident/last-exit.ts)):
748
+ its own exits (a signal, a takeover, nothing to serve, an uncaught error), the watchdog's kill from its Worker, and
749
+ whoever stops it from outside (`run --stop`, a restart, an update) before the signal, since Windows runs none of the
750
+ agent's handlers then. The record is keyed by pid and only an open one is closed, so the stopper's reason is not
751
+ overwritten by the signal that carries it out. The next agent says it in `machine.log` at start and in `describe`; a
752
+ record left open is told apart by the machine's boot time against the last-alive stamp the agent writes each tick.
753
+
754
+ ### The agent's own logs
755
+
756
+ `machine.log` is checked every ten minutes and, at 8 MB, copied to `machine.log.1` and cut in place
757
+ ([`log-roll.ts`](src/resident/log-roll.ts)): the supervisor holds it open for appending, so a rename would leave its
758
+ lines going to the `.1` (or fail on Windows). The `device_logs` tool ([`tools/logs/logs.ts`](src/device/tools/logs/logs.ts))
759
+ lists `machine.log`(`.1`), `machine-update.log`, `audit.jsonl`(`.1`) and ic's per-run logs (`$INTENTIC_LOG_DIR`, else
760
+ `~/.intentic/logs`, newest first), and tails one by name, never by path: the last MB, with `grep`, `lines`, and for
761
+ the audit `tool` and `failedOnly`. It is gated like `sandbox_logs`. `describe` names the `ic` that answers (path,
762
+ version, file time) and the `IC_*`/`INTENTIC_*` variables in the agent's environment, secrets by length only.
711
763
 
712
764
  ## Key files
713
765
 
714
766
  - [src/commands.ts](src/commands.ts) — the CLI: `device`, `sync`, `sandbox`, `run`, `status`, `doctor`, `upgrade`, `updates`, `uninstall`.
715
- - [src/resident.ts](src/resident.ts) — the resident process that holds links, pairings and WSL distros.
767
+ - [src/resident/resident.ts](src/resident/resident.ts) — the resident process that holds links, pairings and WSL distros; `supervision.ts` beside it starts and stops it through whatever restarts this environment's agent.
716
768
  - [src/device/mcp.ts](src/device/mcp.ts) — every tool a sandbox can call on this device.
717
769
  - [src/device/policy.ts](src/device/policy.ts) — scope checks and the file-root boundary.
718
770
  - [src/sync/endpoint.ts](src/sync/endpoint.ts) — how a pairing reaches its sandbox: the tunnelled sshd (`tunnel.ts`), or Docker for a project on this machine.
@@ -721,7 +773,7 @@ source text, so the compiled binary needs no second file; both it and the SIGKIL
721
773
  - [src/sync/gone.ts](src/sync/gone.ts) — when a paired sandbox counts as gone; `gone-watch.ts` acts on it, `retire.ts` retires its pairings, `forget-command.ts` is `sync forget`.
722
774
  - [src/environments/machine.ts](src/environments/machine.ts) — the Windows root and its WSL children.
723
775
  - [src/upkeep/manifest.ts](src/upkeep/manifest.ts) — what the device upkeep finds and puts right; `reconcile.ts` runs it.
724
- - [src/watchdog.ts](src/watchdog.ts) — the agent's own hang watchdog.
776
+ - [src/resident/watchdog.ts](src/resident/watchdog.ts) — the agent's own hang watchdog.
725
777
 
726
778
  ## Commands
727
779
 
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,GAAG,6EAgBf,CAAC"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,GAAG,6EAiBf,CAAC"}
package/dist/app.js CHANGED
@@ -10,7 +10,7 @@ export const app = buildApplication(commands, {
10
10
  text: {
11
11
  ...text_en,
12
12
  formatException: agentException,
13
- exceptionWhileRunningCommand: (exc) => `FAILED: ${agentException(exc)}`,
13
+ exceptionWhileRunningCommand: (exc) => `error: ${agentException(exc)}`,
14
14
  },
15
15
  },
16
16
  });
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAM/C,MAAM,CAAC,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,EAAE;IACtC,IAAI,EAAE,kBAAkB;IAGxB,WAAW,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE;IAChD,OAAO,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE;IAG/C,YAAY,EAAE;QACV,IAAI,EAAE;YACF,GAAG,OAAO;YACV,eAAe,EAAE,cAAc;YAC/B,4BAA4B,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,WAAW,cAAc,CAAC,GAAG,CAAC,EAAE;SACnF;KACJ;CACJ,CACJ,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAM/C,MAAM,CAAC,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,EAAE;IACtC,IAAI,EAAE,kBAAkB;IAGxB,WAAW,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE;IAChD,OAAO,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE;IAI/C,YAAY,EAAE;QACV,IAAI,EAAE;YACF,GAAG,OAAO;YACV,eAAe,EAAE,cAAc;YAC/B,4BAA4B,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,UAAU,cAAc,CAAC,GAAG,CAAC,EAAE;SAClF;KACJ;CACJ,CACJ,CAAC"}
@@ -8,6 +8,6 @@ export const MACHINE_AUTOSTART = {
8
8
  launchAgent: { label: "dev.intentic.machine" },
9
9
  detachedArgs: ["run"],
10
10
  foregroundArgs: ["run", "--foreground"],
11
- failureNote: (reason) => `note: couldn't register this machine's agent to start at login (${reason}); it runs until this machine restarts, then re-run \`intentic-machine run\`. Logs: ${runLogPath}`,
11
+ failureNote: (reason) => `Couldn't register this device's agent to start at login (${reason}); it runs until this device restarts, and starts again with intentic-machine run. Its log is ${runLogPath}.`,
12
12
  };
13
13
  //# sourceMappingURL=autostart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"autostart.js","sourceRoot":"","sources":["../../src/autostart/autostart.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,MAAM,CAAC,MAAM,iBAAiB,GAAkB;IAC5C,EAAE,EAAE,kBAAkB;IACtB,eAAe,EAAE,iBAAiB;IAClC,WAAW,EAAE,wBAAwB;IACrC,cAAc,EAAE,yFAAyF;IAEzG,OAAO,EAAE,UAAU;IACnB,WAAW,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE;IAC9C,YAAY,EAAE,CAAC,KAAK,CAAC;IACrB,cAAc,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;IACvC,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CACpB,mEAAmE,MAAM,uFAAuF,UAAU,EAAE;CACnL,CAAC"}
1
+ {"version":3,"file":"autostart.js","sourceRoot":"","sources":["../../src/autostart/autostart.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,MAAM,CAAC,MAAM,iBAAiB,GAAkB;IAC5C,EAAE,EAAE,kBAAkB;IACtB,eAAe,EAAE,iBAAiB;IAClC,WAAW,EAAE,wBAAwB;IACrC,cAAc,EAAE,yFAAyF;IAEzG,OAAO,EAAE,UAAU;IACnB,WAAW,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE;IAC9C,YAAY,EAAE,CAAC,KAAK,CAAC;IACrB,cAAc,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;IACvC,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CACpB,4DAA4D,MAAM,iGAAiG,UAAU,GAAG;CACvL,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type Ui, type UiProcess } from "@intentic/local-agent";
2
+ import { buildCommand as stricliBuildCommand, type CommandContext } from "@stricli/core";
3
+ export declare const sandboxUrlOf: (url: string | undefined, sandbox: string | undefined, failed: string) => string;
4
+ export type Narration = Pick<Ui, "note" | "warn">;
5
+ export declare const machineUi: (process: UiProcess) => Ui;
6
+ export declare const answeringUi: (process: UiProcess, json: boolean) => Ui;
7
+ export declare const failRun: (context: CommandContext, error: unknown) => void;
8
+ export declare const markFailed: (context: CommandContext) => void;
9
+ export declare const buildCommand: typeof stricliBuildCommand;
10
+ //# sourceMappingURL=cli-ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-ui.d.ts","sourceRoot":"","sources":["../src/cli-ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,KAAK,cAAc,EAAuB,MAAM,eAAe,CAAC;AAW9G,eAAO,MAAM,YAAY,QAAS,MAAM,GAAG,SAAS,WAAW,MAAM,GAAG,SAAS,UAAU,MAAM,KAAG,MASnG,CAAC;AAGF,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAKlD,eAAO,MAAM,SAAS,YAAa,SAAS,KAAG,EAQ9C,CAAC;AAQF,eAAO,MAAM,WAAW,YAAa,SAAS,QAAQ,OAAO,KAAG,EAc/D,CAAC;AAOF,eAAO,MAAM,OAAO,YAAa,cAAc,SAAS,OAAO,KAAG,IAGjE,CAAC;AAGF,eAAO,MAAM,UAAU,YAAa,cAAc,KAAG,IAIpD,CAAC;AAGF,eAAO,MAAM,YAAY,EAgBnB,OAAO,mBAAmB,CAAC"}
package/dist/cli-ui.js ADDED
@@ -0,0 +1,62 @@
1
+ import { agentException, createUi, explain } from "@intentic/local-agent";
2
+ import { buildCommand as stricliBuildCommand } from "@stricli/core";
3
+ import { MACHINE_VERSION } from "./version.js";
4
+ export const sandboxUrlOf = (url, sandbox, failed) => {
5
+ if (url !== undefined && sandbox !== undefined && url !== sandbox) {
6
+ throw new Error(explain(failed, `--url and --sandbox name two different sandboxes (${url}, ${sandbox}).`, "give one of them."));
7
+ }
8
+ const named = url ?? sandbox;
9
+ if (named === undefined || named.trim() === "") {
10
+ throw new Error(explain(failed, "no sandbox was named.", "pass --sandbox with the sandbox's address."));
11
+ }
12
+ return named;
13
+ };
14
+ const opened = new WeakMap();
15
+ export const machineUi = (process) => {
16
+ const known = opened.get(process);
17
+ if (known !== undefined) {
18
+ return known;
19
+ }
20
+ const ui = createUi(process, { stamp: `intentic-machine ${MACHINE_VERSION}` });
21
+ opened.set(process, ui);
22
+ return ui;
23
+ };
24
+ const aside = new WeakMap();
25
+ export const answeringUi = (process, json) => {
26
+ if (!json) {
27
+ return machineUi(process);
28
+ }
29
+ const known = aside.get(process);
30
+ if (known !== undefined) {
31
+ return known;
32
+ }
33
+ const ui = createUi({ stdout: process.stderr, stderr: process.stderr, env: process.env }, { stamp: `intentic-machine ${MACHINE_VERSION}` });
34
+ aside.set(process, ui);
35
+ return ui;
36
+ };
37
+ export const failRun = (context, error) => {
38
+ machineUi(context.process).fail(agentException(error));
39
+ markFailed(context);
40
+ };
41
+ export const markFailed = (context) => {
42
+ context.process.exitCode = 1;
43
+ };
44
+ export const buildCommand = ((builder) => {
45
+ if (!("func" in builder)) {
46
+ return stricliBuildCommand(builder);
47
+ }
48
+ const inner = builder.func;
49
+ return stricliBuildCommand({
50
+ ...builder,
51
+ async func(...args) {
52
+ try {
53
+ return await inner.apply(this, args);
54
+ }
55
+ catch (error) {
56
+ failRun(this, error);
57
+ return undefined;
58
+ }
59
+ },
60
+ });
61
+ });
62
+ //# sourceMappingURL=cli-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-ui.js","sourceRoot":"","sources":["../src/cli-ui.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAuGjF,eAAO,MAAM,QAAQ,kDAqBnB,CAAC"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAoJnE,eAAO,MAAM,QAAQ,kDAqBnB,CAAC"}
package/dist/commands.js CHANGED
@@ -1,16 +1,20 @@
1
- import { buildCommand, buildRouteMap } from "@stricli/core";
1
+ import { explain } from "@intentic/local-agent";
2
+ import { buildRouteMap } from "@stricli/core";
3
+ import { buildCommand, machineUi } from "./cli-ui.js";
4
+ import { runLogPath } from "./config.js";
2
5
  import { deviceCommands, deviceUninstall } from "./device/commands.js";
3
6
  import { sandboxRoutes } from "./device/sandbox-cli.js";
4
7
  import { environmentRoutes, updates } from "./environments/commands.js";
5
8
  import { realMachineIo, upgradeMachine } from "./environments/machine-upgrade.js";
6
- import { runForeground } from "./resident.js";
7
- import { readResident, restartResident, stopResident } from "./supervision.js";
9
+ import { runForeground } from "./resident/resident.js";
10
+ import { readResident, restartResident, stopResident } from "./resident/supervision.js";
8
11
  import { status } from "./status.js";
9
12
  import { syncCommands, syncUninstall } from "./sync/commands.js";
10
13
  import { doctor } from "./upkeep/doctor.js";
14
+ import { upgradeLanded, upgradeStop } from "./upgrade.js";
11
15
  import { MACHINE_VERSION } from "./version.js";
12
16
  const run = buildCommand({
13
- docs: { brief: "Restart this machine's agent: sandbox connections, file sync, port mirroring (setup starts it for you)" },
17
+ docs: { brief: "Restart this device's agent: sandbox connections, file sync, port mirroring (setup starts it for you)" },
14
18
  parameters: {
15
19
  flags: {
16
20
  foreground: { kind: "boolean", brief: "Run the agent in this terminal instead of the background" },
@@ -18,20 +22,26 @@ const run = buildCommand({
18
22
  },
19
23
  },
20
24
  async func(flags) {
21
- const out = (message) => void this.process.stdout.write(`${message}\n`);
25
+ if (flags.foreground) {
26
+ await runForeground((message) => void this.process.stdout.write(`[${new Date().toISOString()}] ${message}\n`));
27
+ return;
28
+ }
29
+ const ui = machineUi(this.process);
22
30
  if (flags.stop) {
31
+ ui.act("Stopping the background agent");
23
32
  const pid = await stopResident();
24
- out(pid === undefined ? "not running." : `stopped (pid ${pid}).`);
25
- out("It comes back at your next sign-in, and sooner if this machine's supervisor notices it gone. `intentic-machine uninstall` is what stops it for good.");
33
+ ui.note("It comes back at your next sign-in, and sooner if this device's supervisor notices it gone.");
34
+ ui.done(pid === undefined ? "The background agent was not running." : `Stopped the background agent (pid ${pid}).`);
35
+ ui.later([["stop it for good", "intentic-machine uninstall"]]);
26
36
  return;
27
37
  }
28
- if (!flags.foreground) {
29
- await restartResident(out);
30
- const held = await readResident();
31
- out(held === undefined ? "the agent did not come back up: check its log." : `running (pid ${held.pid}, ${held.build ?? "unknown build"}).`);
32
- return;
38
+ ui.act("Restarting the background agent");
39
+ await restartResident(ui.note);
40
+ const held = await readResident();
41
+ if (held === undefined) {
42
+ throw new Error(explain("The background agent did not come back up.", `it stopped while starting; its log is ${runLogPath}.`, "intentic-machine run --foreground"));
33
43
  }
34
- await runForeground((message) => void this.process.stdout.write(`[${new Date().toISOString()}] ${message}\n`));
44
+ ui.done(`Restarted the background agent (pid ${held.pid}, ${held.build ?? "unknown build"}).`);
35
45
  },
36
46
  });
37
47
  const version = buildCommand({
@@ -43,34 +53,59 @@ const version = buildCommand({
43
53
  },
44
54
  });
45
55
  const upgrade = buildCommand({
46
- docs: { brief: "Upgrade the agent on this whole machine (Windows and every WSL distro on it) to the newest release" },
56
+ docs: { brief: "Update the agent on this whole device (Windows and every WSL distro on it) to the newest release" },
47
57
  parameters: {
48
58
  flags: {
49
59
  force: {
50
60
  kind: "boolean",
51
- brief: "Install the published agent even over one built from source, or onto a release this machine rolled back from (both otherwise left alone)",
61
+ brief: "Install the published agent even over one built from source, or onto a release this device rolled back from (both otherwise left alone)",
52
62
  },
53
63
  level: { kind: "boolean", brief: "Bring every side to the newest release one of them already runs, without asking for a newer one", default: false, hidden: true },
54
64
  },
55
65
  },
56
66
  async func(flags) {
57
- const out = (message) => void this.process.stdout.write(`${message}\n`);
58
- if (!(await upgradeMachine(realMachineIo(flags, out), flags, out))) {
59
- process.exitCode = 1;
60
- }
67
+ const ui = machineUi(this.process);
68
+ ui.act("Updating the agent on this device");
69
+ await upgradeMachine(realMachineIo(flags, ui.note), flags, ui.note, (ending) => upgradeEnded(ui, ending));
61
70
  },
62
71
  });
72
+ const upgradeEnded = (ui, ending) => {
73
+ if (ending.landed) {
74
+ ui.done(ending.said);
75
+ if (ending.outcome?.kind === "current" && ending.outcome.later !== undefined) {
76
+ ui.later([ending.outcome.later]);
77
+ }
78
+ return;
79
+ }
80
+ if (ending.delegated === true) {
81
+ ui.close();
82
+ process.exitCode = 1;
83
+ return;
84
+ }
85
+ if (ending.legsFailed.length > 0 && (ending.outcome === undefined || upgradeLanded(ending.outcome))) {
86
+ throw new Error(explain("The agent was not updated on every side of this device.", `${ending.legsFailed.join(", ")} did not finish; the lines above say why.`, "intentic-machine upgrade"));
87
+ }
88
+ if (ending.outcome === undefined) {
89
+ throw new Error(explain("The agent was not updated.", "the release channel did not answer, and nothing was changed.", "check the network, then run the same command again."));
90
+ }
91
+ const stop = upgradeStop(ending.outcome);
92
+ throw new Error(explain(stop.headline, stop.problem, stop.fix));
93
+ };
63
94
  const uninstall = buildCommand({
64
95
  docs: { brief: "Remove this environment's agent: every sandbox link, every sync pairing, the login entry" },
65
96
  parameters: {},
66
97
  async func() {
67
- const out = (message) => void this.process.stdout.write(`${message}\n`);
68
- await syncUninstall(out, undefined, { forGood: true });
69
- await deviceUninstall(out, undefined, { forGood: true });
98
+ const ui = machineUi(this.process);
99
+ ui.act("Removing the agent from this device");
100
+ ui.note(await syncUninstall(ui, undefined, { forGood: true }));
101
+ ui.note(await deviceUninstall(ui, undefined, { forGood: true }));
70
102
  const still = await readResident();
71
- out(still === undefined
72
- ? "Nothing intentic stays resident here."
73
- : `The agent keeps running (pid ${still.pid}) only to keep this PC's WSL distros running; uninstall inside each of them to remove it entirely.`);
103
+ if (still === undefined) {
104
+ ui.done("Removed the agent. Nothing intentic stays running on this device.");
105
+ return;
106
+ }
107
+ ui.note("Run the uninstall inside each of this device's WSL distros to remove it entirely.");
108
+ ui.done(`Removed this side's links. The agent keeps running (pid ${still.pid}) only to keep this device's WSL distros running.`);
74
109
  },
75
110
  });
76
111
  export const commands = buildRouteMap({
@@ -81,7 +116,7 @@ export const commands = buildRouteMap({
81
116
  }),
82
117
  sync: buildRouteMap({
83
118
  routes: syncCommands,
84
- docs: { brief: "Mirror a sandbox's files and ports onto this machine (the Desktop sync card)" },
119
+ docs: { brief: "Mirror a sandbox's files and ports onto this device (the Desktop sync card)" },
85
120
  }),
86
121
  sandbox: sandboxRoutes,
87
122
  environment: environmentRoutes,
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export declare const resolveDaemonBase: (sandboxUrl: string, fetchImpl?: FetchIm
11
11
  export interface WarmingAsk {
12
12
  readonly doing: string;
13
13
  readonly expired: string;
14
+ readonly say?: Log | undefined;
14
15
  readonly attempts?: number | undefined;
15
16
  readonly delayMs?: number | undefined;
16
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-base.d.ts","sourceRoot":"","sources":["../src/daemon-base.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAajD,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAG5F,eAAO,MAAM,UAAU,eAAgB,MAAM,KAAG,MAAM,GAAG,SAGxD,CAAC;AAIF,eAAO,MAAM,cAAc,eAAgB,MAAM,KAAG,SAAS,MAAM,EASlE,CAAC;AAIF,eAAO,MAAM,eAAe,SAAgB,MAAM,cAAc,MAAM,cAAa,SAAS,KAAW,OAAO,CAAC,OAAO,CAWrH,CAAC;AAIF,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CAC3B;AAID,eAAO,MAAM,iBAAiB,eAAsB,MAAM,cAAa,SAAS,KAAW,OAAO,CAAC,UAAU,CAc5G,CAAC;AAEF,MAAM,WAAW,UAAU;IAEvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAGD,eAAO,MAAM,gBAAgB,eAAsB,MAAM,QAAQ,MAAM,QAAQ,WAAW,OAAO,UAAU,KAAG,OAAO,CAAC,QAAQ,CAqB7H,CAAC;AAMF,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAI5C,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAUD,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAID,eAAO,MAAM,iBAAiB,QAAS,GAAG,cAAa,SAAS,QAAe,MAAM,MAAM,KAAc,WA8BxG,CAAC;AAGF,MAAM,WAAW,MAAM,CAAC,CAAC,SAAS,YAAY;IAC1C,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAGD,eAAO,MAAM,cAAc,GAAU,CAAC,SAAS,YAAY,YAAY,SAAS,CAAC,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,CAC7B,CAAC"}
1
+ {"version":3,"file":"daemon-base.d.ts","sourceRoot":"","sources":["../src/daemon-base.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAcjD,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAG5F,eAAO,MAAM,UAAU,eAAgB,MAAM,KAAG,MAAM,GAAG,SAGxD,CAAC;AAIF,eAAO,MAAM,cAAc,eAAgB,MAAM,KAAG,SAAS,MAAM,EASlE,CAAC;AAIF,eAAO,MAAM,eAAe,SAAgB,MAAM,cAAc,MAAM,cAAa,SAAS,KAAW,OAAO,CAAC,OAAO,CAWrH,CAAC;AAIF,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CAC3B;AAID,eAAO,MAAM,iBAAiB,eAAsB,MAAM,cAAa,SAAS,KAAW,OAAO,CAAC,UAAU,CAc5G,CAAC;AAEF,MAAM,WAAW,UAAU;IAEvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAMD,eAAO,MAAM,gBAAgB,eAAsB,MAAM,QAAQ,MAAM,QAAQ,WAAW,OAAO,UAAU,KAAG,OAAO,CAAC,QAAQ,CA0B7H,CAAC;AAMF,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAI5C,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAUD,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAID,eAAO,MAAM,iBAAiB,QAAS,GAAG,cAAa,SAAS,QAAe,MAAM,MAAM,KAAc,WA8BxG,CAAC;AAGF,MAAM,WAAW,MAAM,CAAC,CAAC,SAAS,YAAY;IAC1C,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAGD,eAAO,MAAM,cAAc,GAAU,CAAC,SAAS,YAAY,YAAY,SAAS,CAAC,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,CAC7B,CAAC"}
@@ -1,5 +1,6 @@
1
- import { sleep } from "@intentic/base/async";
1
+ import { anySignal } from "@intentic/base/async";
2
2
  import { SANDBOX_ID, sandboxIdFromUrl } from "@intentic/sandbox-contract";
3
+ import { redeemWhileWarming } from "@intentic/sandbox-contract/pairing-redeem";
3
4
  import { localDaemonUrlInsecure } from "@intentic/sandbox-run";
4
5
  const PROBE_TIMEOUT_MS = 1500;
5
6
  export const daemonIdOf = (sandboxUrl) => {
@@ -41,26 +42,28 @@ export const resolveDaemonBase = async (sandboxUrl, fetchImpl = fetch) => {
41
42
  }
42
43
  return { base: sandboxUrl.replace(/\/$/, ""), local: false };
43
44
  };
45
+ const REDEEM_ATTEMPT_TIMEOUT_MS = 30_000;
44
46
  export const postWhileWarming = async (sandboxUrl, path, init, ask) => {
45
- const { doing, expired, attempts = 10, delayMs = 3000 } = ask;
46
- for (let attempt = 1;; attempt++) {
47
+ const { doing, expired, say = () => undefined, attempts = 10, delayMs = 3000 } = ask;
48
+ const outcome = await redeemWhileWarming(async (_attempt, signal) => {
47
49
  const { base } = await resolveDaemonBase(sandboxUrl);
48
- const response = await fetch(`${base}${path}`, { ...init, method: "POST" }).catch((error) => {
49
- if (attempt >= attempts) {
50
- throw error;
51
- }
52
- return undefined;
53
- });
54
- if (response?.status === 401) {
55
- throw new Error(expired);
56
- }
57
- if (response !== undefined && (response.status < 500 || attempt >= attempts)) {
58
- return response;
59
- }
60
- const why = response === undefined ? "the sandbox isn't reachable yet" : `the sandbox is warming up (HTTP ${response.status})`;
61
- process.stderr.write(`${doing}: ${why}, retrying (${attempt}/${attempts})…\n`);
62
- await sleep(delayMs);
50
+ return fetch(`${base}${path}`, { ...init, method: "POST", signal: anySignal(signal, init.signal ?? undefined) });
51
+ }, {
52
+ attempts,
53
+ delayMs,
54
+ timeoutMs: REDEEM_ATTEMPT_TIMEOUT_MS,
55
+ onRetry: (attempt, why) => {
56
+ const said = why.kind === "unreachable" ? "the sandbox isn't reachable yet" : `the sandbox is warming up (HTTP ${why.status})`;
57
+ say(`${doing}: ${said}, retrying (${attempt}/${attempts})…`);
58
+ },
59
+ });
60
+ if (outcome.kind === "unreachable") {
61
+ throw outcome.error;
62
+ }
63
+ if (outcome.response.status === 401) {
64
+ throw new Error(expired);
63
65
  }
66
+ return outcome.response;
64
67
  };
65
68
  export const PROMOTION_INTERVAL_MS = 60_000;
66
69
  export const createDaemonBases = (log, fetchImpl = fetch, now = Date.now) => {
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-base.js","sourceRoot":"","sources":["../src/daemon-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon-base.js","sourceRoot":"","sources":["../src/daemon-base.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/device/audit.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,gBAAgB,QAAmB,CAAC;AA0BjD,eAAO,MAAM,SAAS,UAAgB,MAAM,UAAqB,MAAM,KAAsB,OAAO,CAAC,OAAO,CAAyD,CAAC;AAEtK,eAAO,MAAM,KAAK,UAAiB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC,IAAI,CAY9F,CAAC"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/device/audit.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,gBAAgB,QAAmB,CAAC;AA0BjD,eAAO,MAAM,SAAS,UAAgB,MAAM,UAAqB,MAAM,KAAsB,OAAO,CAAC,OAAO,CAAyD,CAAC;AAEtK,eAAO,MAAM,KAAK,UAAiB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC,IAAI,CAa9F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/device/audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAUxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD,IAAI,KAAK,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;AAC7C,MAAM,MAAM,GAAG,KAAK,EAAK,IAAsB,EAAc,EAAE;IAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,KAAK,GAAG,IAAI,CAAC,IAAI,CACb,GAAG,EAAE,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,SAAS,CAClB,CAAC;IACF,OAAO,MAAM,IAAI,CAAC;AACtB,CAAC,CAAC;AAGF,MAAM,OAAO,GAAG,KAAK,EAAE,IAAY,EAAE,KAAa,EAAoB,EAAE;IAEpE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAC9B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EACnB,GAAG,EAAE,CAAC,CAAC,CACV,CAAC;IACF,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAI,GAAW,SAAS,EAAE,KAAK,GAAW,gBAAgB,EAAoB,EAAE,CAAC,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAEtK,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,KAAoD,EAAiB,EAAE;IAC/F,IAAI,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE;YACpB,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAEvD,MAAM,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAC9D,MAAM,UAAU,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACtI,CAAC,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,OAAO,SAAS,KAAK,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7G,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/device/audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAUxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD,IAAI,KAAK,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;AAC7C,MAAM,MAAM,GAAG,KAAK,EAAK,IAAsB,EAAc,EAAE;IAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,KAAK,GAAG,IAAI,CAAC,IAAI,CACb,GAAG,EAAE,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,SAAS,CAClB,CAAC;IACF,OAAO,MAAM,IAAI,CAAC;AACtB,CAAC,CAAC;AAGF,MAAM,OAAO,GAAG,KAAK,EAAE,IAAY,EAAE,KAAa,EAAoB,EAAE;IAEpE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAC9B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EACnB,GAAG,EAAE,CAAC,CAAC,CACV,CAAC;IACF,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAI,GAAW,SAAS,EAAE,KAAK,GAAW,gBAAgB,EAAoB,EAAE,CAAC,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAEtK,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,KAAoD,EAAiB,EAAE;IAC/F,IAAI,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE;YACpB,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAEvD,MAAM,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAC9D,MAAM,UAAU,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACtI,CAAC,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAGb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,OAAO,SAAS,KAAK,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7G,CAAC;AACL,CAAC,CAAC"}
@@ -1,13 +1,15 @@
1
- import { type Log } from "@intentic/local-agent";
2
- import { type CommandContext } from "@stricli/core";
3
- export declare const enroll: (sandboxUrl: string, pairToken: string) => Promise<{
1
+ import { type Log, type Ui } from "@intentic/local-agent";
2
+ import type { CommandContext } from "@stricli/core";
3
+ import { type Narration } from "../cli-ui.js";
4
+ export declare const enroll: (sandboxUrl: string, pairToken: string, say?: Log) => Promise<{
4
5
  id: string;
5
6
  token: string;
6
7
  }>;
7
- export declare const deviceUninstall: (out: Log, sandbox?: string, { forGood }?: {
8
+ export declare const linkNamed: (urls: readonly string[], value: string) => string;
9
+ export declare const deviceUninstall: (say: Narration, sandbox?: string, { forGood }?: {
8
10
  readonly forGood?: boolean;
9
- }) => Promise<void>;
10
- export declare const dropUnreachableLinks: (out: Log) => Promise<void>;
11
+ }) => Promise<string>;
12
+ export declare const dropUnreachableLinks: (ui: Ui) => Promise<void>;
11
13
  export declare const deviceCommands: {
12
14
  setup: import("@stricli/core").Command<CommandContext>;
13
15
  uninstall: import("@stricli/core").Command<CommandContext>;
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/device/commands.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,GAAG,EAA0B,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAQlE,eAAO,MAAM,MAAM,eAAsB,MAAM,aAAa,MAAM,KAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAgBzG,CAAC;AAmGF,eAAO,MAAM,eAAe,QAAe,GAAG,YAAY,MAAM,gBAAuB;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KAAQ,OAAO,CAAC,IAAI,CAyBxI,CAAC;AAgBF,eAAO,MAAM,oBAAoB,QAAe,GAAG,KAAG,OAAO,CAAC,IAAI,CA0BjE,CAAC;AAEF,eAAO,MAAM,cAAc;;;;CAAgE,CAAC"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/device/commands.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,GAAG,EAAiB,KAAK,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAElF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAA2B,KAAK,SAAS,EAAgB,MAAM,cAAc,CAAC;AAUrF,eAAO,MAAM,MAAM,eAAsB,MAAM,aAAa,MAAM,QAAQ,GAAG,KAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAoBpH,CAAC;AAmHF,eAAO,MAAM,SAAS,SAAU,SAAS,MAAM,EAAE,SAAS,MAAM,KAAG,MASlE,CAAC;AAKF,eAAO,MAAM,eAAe,QAAe,SAAS,YAAY,MAAM,gBAAuB;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KAAQ,OAAO,CAAC,MAAM,CAsBhJ,CAAC;AAeF,eAAO,MAAM,oBAAoB,OAAc,EAAE,KAAG,OAAO,CAAC,IAAI,CA2B/D,CAAC;AAEF,eAAO,MAAM,cAAc;;;;CAAgE,CAAC"}