@intentic/machine 1.330.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/dist/status.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { plural } from "@intentic/base/format";
2
2
  import { WORKSPACE_ROOT } from "@intentic/constants";
3
- import { buildCommand } from "@stricli/core";
3
+ import { buildCommand, machineUi } from "./cli-ui.js";
4
4
  import { agentBuildSkew, agentStalled } from "@intentic/sandbox-contract";
5
5
  import { auditPath, readLinks, readLinkStates } from "./device/config.js";
6
6
  import { PAUSE_HOTKEY, readPausedAt } from "./device/indicator.js";
7
7
  import { runLogPath } from "./config.js";
8
8
  import { heldDistros } from "./environments/machine.js";
9
- import { readResidentPid } from "./resident.js";
10
- import { readResident } from "./supervision.js";
9
+ import { readResidentPid } from "./resident/resident.js";
10
+ import { readResident } from "./resident/supervision.js";
11
11
  import { registeredDistro } from "./environments/wsl.js";
12
12
  import { pairingKey, readState } from "./sync/config.js";
13
13
  import { existingSyncSessions, runMutagen, syncSessionNames } from "./sync/mutagen.js";
@@ -64,23 +64,27 @@ export const deviceStatus = async (mutagen) => {
64
64
  sync,
65
65
  };
66
66
  };
67
- const portLine = (port) => {
67
+ export const portItem = (port) => {
68
68
  const what = port.command ?? "unknown process";
69
69
  if (port.state === "mirrored") {
70
- return ` localhost:${port.port} ← ${port.sandboxId} (${what})`;
70
+ return { tone: "ok", name: `localhost:${port.port} ← ${port.sandboxId}`, meta: what };
71
71
  }
72
- const reason = port.heldBy === undefined ? "something else on this machine has the port" : `${port.heldBy} has it`;
73
- return ` localhost:${port.port}, NOT mirrored from ${port.sandboxId}: ${reason} (${what})`;
72
+ const reason = port.heldBy === undefined ? "something else on this device has the port" : `${port.heldBy} has it`;
73
+ return { tone: "warn", name: `localhost:${port.port}`, meta: `not mirrored from ${port.sandboxId}: ${reason} (${what})` };
74
74
  };
75
75
  const reportedKind = (pairing) => pairing.remoteDir === undefined || pairing.remoteDir === WORKSPACE_ROOT ? { sandboxId: pairing.sandboxId } : { sandboxId: pairing.sandboxId, project: true };
76
76
  const fileSyncState = (pairing) => [
77
- pairing.paused === true ? "paused" : (pairing.mutagenStatus ?? "NO FILE-SYNC SESSION, this folder is not syncing"),
78
- pairing.conflicts === undefined || pairing.conflicts === 0 ? undefined : plural(pairing.conflicts, "conflict"),
77
+ pairing.paused === true ? ["warn", "paused"] : pairing.mutagenStatus === undefined ? ["fail", "no file-sync session, this folder is not syncing"] : ["ok", pairing.mutagenStatus],
78
+ pairing.conflicts === undefined || pairing.conflicts === 0 ? undefined : ["fail", plural(pairing.conflicts, "conflict")],
79
79
  pairing.paused === true || reportedKind(pairing).project === true
80
80
  ? undefined
81
- : `backup ${pairing.backupStatus ?? "NOT RUNNING, this sandbox's own state is not being copied here"}`,
81
+ : pairing.backupStatus === undefined
82
+ ? ["fail", "backup not running, this sandbox's own state is not being copied here"]
83
+ : ["ok", `backup ${pairing.backupStatus}`],
82
84
  ];
83
85
  const CONFLICT_LINES_MAX = 8;
86
+ export const CONFLICTS_SAID = "Both ends changed these since they last agreed, so neither copy was overwritten and they have stopped syncing.";
87
+ export const CONFLICTS_SETTLED = "Resolve one by making both copies the same, or both gone; the session picks it up on its next pass.";
84
88
  const HERE = {
85
89
  created: "created here",
86
90
  modified: "changed here",
@@ -93,182 +97,212 @@ const IN_SANDBOX = {
93
97
  deleted: "deleted in the sandbox",
94
98
  untracked: "build output left in the sandbox",
95
99
  };
96
- const conflictLine = (conflict) => {
97
- const what = conflict.path === "" ? "(the folder itself)" : conflict.path;
100
+ const conflictItem = (conflict) => {
98
101
  const sides = [
99
102
  conflict.local === undefined ? undefined : HERE[conflict.local],
100
103
  conflict.sandbox === undefined ? undefined : IN_SANDBOX[conflict.sandbox],
101
104
  ].filter((side) => side !== undefined);
102
- return ` ${what}${sides.length === 0 ? "" : ` (${sides.join(", ")})`}`;
105
+ return { tone: "fail", name: conflict.path === "" ? "the folder itself" : conflict.path, meta: sides.join(", ") };
103
106
  };
104
- export const conflictLines = (pairing) => {
107
+ export const conflictItems = (pairing) => {
105
108
  const conflicts = pairing.conflictedPaths ?? [];
106
109
  if (conflicts.length === 0) {
107
110
  return [];
108
111
  }
109
112
  const shown = conflicts.slice(0, CONFLICT_LINES_MAX);
110
113
  const rest = (pairing.conflicts ?? conflicts.length) - shown.length;
111
- return [
112
- " Both ends changed these since they last agreed, so neither copy was overwritten and they have stopped syncing:",
113
- ...shown.map(conflictLine),
114
- ...(rest > 0 ? [` … and ${rest} more`] : []),
115
- " Resolve one by making both copies the same (or both gone); the session picks it up on its next pass.",
116
- ];
114
+ return [...shown.map(conflictItem), ...(rest > 0 ? [{ tone: "skip", name: `… and ${rest} more` }] : [])];
117
115
  };
118
- export const pairingLine = (pairing) => {
116
+ const WORST = ["fail", "warn", "ok"];
117
+ export const pairingItem = (pairing) => {
119
118
  if (pairing.projectsHost === true) {
120
- return ` ${pairing.sandboxId} (this computer's sandbox: folders attach to it)${pairing.mirroring === "off" ? " [port mirroring OFF]" : ""}`;
119
+ return {
120
+ tone: pairing.mirroring === "off" ? "warn" : "ok",
121
+ name: pairing.sandboxId,
122
+ meta: `this device's sandbox: folders attach to it${pairing.mirroring === "off" ? " · port mirroring off" : ""}`,
123
+ };
121
124
  }
122
- const folder = pairing.localDir ?? "(no folder)";
123
- const where = pairing.mode === "sync" ? (reportedKind(pairing).project === true ? `${folder} ↔ ${pairing.remoteDir}` : folder) : "(ports only)";
125
+ const folder = pairing.localDir ?? "no folder";
126
+ const where = pairing.mode === "sync" ? (reportedKind(pairing).project === true ? `${folder} ↔ ${pairing.remoteDir}` : folder) : "ports only";
124
127
  const state = [
125
- pairing.mirroring === "off" ? "port mirroring OFF" : undefined,
128
+ pairing.mirroring === "off" ? ["warn", "port mirroring off"] : undefined,
126
129
  ...(pairing.mode === "sync" ? fileSyncState(pairing) : []),
127
- pairing.deliver === "auto" ? "landed work delivered here" : undefined,
130
+ pairing.deliver === "auto" ? ["ok", "landed work delivered here"] : undefined,
128
131
  ].filter((part) => part !== undefined);
129
- return ` ${pairing.sandboxId} ${where}${state.length === 0 ? "" : ` [${state.join(", ")}]`}`;
132
+ const tone = WORST.find((worst) => state.some(([said]) => said === worst)) ?? "ok";
133
+ return { tone, name: pairing.sandboxId, meta: [where, ...state.map(([, text]) => text)].join(" · ") };
130
134
  };
131
- export const agentLine = (agent, now) => {
135
+ export const agentItem = (agent, now) => {
132
136
  if (!agent.running) {
133
- return "Agent: NOT running, file syncing and port mirroring are both stopped. Run `intentic-machine run` to restart it.";
137
+ return { tone: "fail", name: "agent", meta: "not running: file sync and port mirroring are stopped" };
134
138
  }
135
139
  const since = agent.lastTickAt === undefined ? undefined : now - agent.lastTickAt;
136
140
  if (agentStalled(agent, now) && since !== undefined) {
137
- return `Agent: sync STALLED (pid ${agent.pid}), the process is alive but its last full pass finished ${plural(Math.round(since / 60_000), "minute")} ago, so port mirroring, the git bridge and any file sync it has not created are stopped. Restart it with \`intentic-machine run --stop\` then \`intentic-machine run\`, and check ${runLogPath}.`;
141
+ return {
142
+ tone: "fail",
143
+ name: "agent",
144
+ meta: `sync stalled (pid ${agent.pid}): its last full pass was ${plural(Math.round(since / 60_000), "minute")} ago`,
145
+ };
138
146
  }
139
147
  return since === undefined
140
- ? `Agent: running (pid ${agent.pid}), no completed sync pass reported yet (a pass finishes within seconds of startup; an agent older than this one never reports them).`
141
- : `Agent: running (pid ${agent.pid}), last sync pass ${Math.round(since / 1000)}s ago`;
148
+ ? { tone: "ok", name: "agent", meta: `running (pid ${agent.pid}), no sync pass reported yet` }
149
+ : { tone: "ok", name: "agent", meta: `running (pid ${agent.pid}), last sync pass ${Math.round(since / 1000)}s ago` };
142
150
  };
143
- export const buildSkewLine = (report) => {
151
+ export const agentNote = (agent, now) => {
152
+ if (!agent.running) {
153
+ return undefined;
154
+ }
155
+ if (agent.lastTickAt === undefined) {
156
+ return "A pass finishes within seconds of startup; an agent older than this one never reports them.";
157
+ }
158
+ return agentStalled(agent, now)
159
+ ? "The process is alive, but port mirroring, the git bridge and any file sync it has not created yet are stopped."
160
+ : undefined;
161
+ };
162
+ export const buildSkewItem = (report) => {
144
163
  const skew = agentBuildSkew(report.agent);
145
164
  if (skew === undefined) {
146
165
  return undefined;
147
166
  }
148
167
  const which = skew.running === undefined
149
- ? `Agent: running a build older than the ${skew.installed} installed on this machine (too old to report its own version)`
150
- : `Agent: running ${skew.running}, but ${skew.installed} is installed on this machine`;
151
- return `${which} — the agent keeps the build it started with. Restart it with \`intentic-machine run --stop\` then \`intentic-machine run\`.`;
168
+ ? `running a build older than the ${skew.installed} installed on this device, too old to report its own version`
169
+ : `running ${skew.running}, but ${skew.installed} is installed on this device`;
170
+ return { tone: "warn", name: "agent build", meta: which };
152
171
  };
153
- export const machineLine = (distro, supervisor, children) => {
172
+ export const placeLine = (distro, supervisor, children) => {
154
173
  if (distro !== undefined) {
155
174
  return supervisor === "windows"
156
- ? `Machine: the WSL distro ${distro}, kept running and upgraded together with this PC's Windows side.`
157
- : `Machine: the WSL distro ${distro}, running on its own: no agent on this PC's Windows side keeps it up.`;
175
+ ? `the WSL distro ${distro}, kept running and updated together with this device's Windows side`
176
+ : `the WSL distro ${distro}, running on its own: no agent on this device's Windows side keeps it up`;
158
177
  }
159
- return children.length === 0 ? undefined : `Machine: this PC's Windows side, keeping ${children.join(", ")} running and upgraded to the same release.`;
178
+ return children.length === 0 ? undefined : `this device's Windows side, keeping ${children.join(", ")} running and updated to the same release`;
160
179
  };
161
- export const linkLine = (link) => {
180
+ export const linkItem = (link) => {
162
181
  switch (link.state) {
163
182
  case "open":
164
- return ` ${link.sandboxUrl} connected as ${link.id}`;
183
+ return { tone: "ok", name: link.sandboxUrl, meta: `connected as ${link.id}` };
165
184
  case "connecting":
166
- return ` ${link.sandboxUrl} NOT connected (retrying) as ${link.id}`;
185
+ return { tone: "warn", name: link.sandboxUrl, meta: `not connected (retrying) as ${link.id}` };
167
186
  case "closed":
168
- return ` ${link.sandboxUrl} NOT connected as ${link.id}`;
187
+ return { tone: "fail", name: link.sandboxUrl, meta: `not connected as ${link.id}` };
169
188
  default:
170
- return ` ${link.sandboxUrl} linked as ${link.id} (this machine's agent doesn't report whether the link is up)`;
189
+ return { tone: "skip", name: link.sandboxUrl, meta: `linked as ${link.id}, not known whether the link is up` };
171
190
  }
172
191
  };
173
- const printReport = (report, out) => {
192
+ export const grantLine = (link) => `Last granted by the sandbox: commands ${link.scopes.shell}, writes ${link.scopes.write}, screen ${link.scopes.screen}; folders ${link.scopes.roots ?? "your home folder"}.`;
193
+ const RESTART = ["restart the agent", "intentic-machine run"];
194
+ const drawSync = (ui, report) => {
195
+ const later = [];
174
196
  if (report.pairings.length > 0) {
175
- out("");
176
- out(`Paired sandboxes (${report.pairings.length}):`);
197
+ ui.section(`paired sandboxes (${report.pairings.length})`);
198
+ ui.items(report.pairings.map(pairingItem));
177
199
  for (const pairing of report.pairings) {
178
- out(pairingLine(pairing));
179
- for (const line of conflictLines(pairing)) {
180
- out(line);
200
+ const stuck = conflictItems(pairing);
201
+ if (stuck.length > 0) {
202
+ ui.section(`${plural(pairing.conflicts ?? stuck.length, "conflict")} in ${pairing.localDir ?? pairing.sandboxId}`);
203
+ ui.note(CONFLICTS_SAID);
204
+ ui.items(stuck);
205
+ ui.note(CONFLICTS_SETTLED);
181
206
  }
182
207
  }
183
208
  }
184
209
  if (report.ports.length > 0) {
185
- out("");
186
- out(`Ports (${report.ports.length}):`);
187
- for (const port of report.ports) {
188
- out(portLine(port));
189
- }
210
+ ui.section(`ports (${report.ports.length})`);
211
+ ui.items(report.ports.map(portItem));
190
212
  }
191
213
  for (const sandboxId of new Set(report.pairings.filter((held) => held.mirroring === "off").map((held) => held.sandboxId))) {
192
- out(` ${sandboxId}: port mirroring is OFF here. Put its ports back with \`intentic-machine sync mirror on --sandbox ${sandboxId}\`.`);
214
+ later.push([`mirror ${sandboxId} again`, `intentic-machine sync mirror on --sandbox ${sandboxId}`]);
193
215
  }
216
+ return later;
194
217
  };
195
- const printLinks = (links, out) => {
196
- if (links.length === 0) {
197
- return;
218
+ const drawSessions = async (ui, mutagen, verbose) => {
219
+ const syncing = (await readState()).pairings.filter((pairing) => pairing.mode === "sync" && pairing.projectsHost !== true);
220
+ const wanted = syncing.flatMap((pairing) => syncSessionNames(pairing));
221
+ const live = new Set(syncing.length === 0 ? [] : existingSyncSessions(mutagen, wanted));
222
+ const missing = syncing.filter((held) => !syncSessionNames(held).every((name) => live.has(name)));
223
+ if (missing.length > 0) {
224
+ ui.section("file sync");
225
+ ui.items(missing.map((pairing) => ({
226
+ tone: "fail",
227
+ name: pairingKey(pairing),
228
+ meta: `${pairing.localDir ?? "its folder"} is not syncing: no file-sync session exists on this device`,
229
+ })));
230
+ ui.note("The agent retries every few minutes. If it stays this way the sandbox is unreachable, and the agent's log says why.");
198
231
  }
199
- out("");
200
- out(`Linked sandboxes (${links.length}):`);
201
- for (const link of links) {
202
- out(linkLine(link));
203
- out(` permissions (last pushed by the sandbox): commands ${link.scopes.shell}, writes ${link.scopes.write}, screen ${link.scopes.screen}; folders ${link.scopes.roots ?? "(your home folder)"}`);
232
+ if (!verbose) {
233
+ return;
204
234
  }
205
- };
206
- const printMutagen = async (mutagen, out) => {
207
- const syncing = (await readState()).pairings.filter((pairing) => pairing.mode === "sync" && pairing.projectsHost !== true);
208
- if (syncing.length > 0) {
209
- out("");
210
- out("File sync:");
211
- const wanted = syncing.flatMap((pairing) => syncSessionNames(pairing));
212
- const live = new Set(existingSyncSessions(mutagen, wanted));
235
+ ui.section("mutagen");
236
+ ui.suspend();
237
+ try {
213
238
  if (live.size > 0) {
214
239
  runMutagen(mutagen, ["sync", "list", ...wanted.filter((name) => live.has(name))]);
215
240
  }
216
- for (const pairing of syncing.filter((held) => !syncSessionNames(held).every((name) => live.has(name)))) {
217
- out(` ${pairingKey(pairing)}: no file-sync session exists on this machine, ${pairing.localDir ?? "its folder"} is NOT syncing. The agent retries every few minutes; if it stays this way the sandbox is unreachable (check ${runLogPath}).`);
218
- }
241
+ runMutagen(mutagen, ["forward", "list"]);
242
+ }
243
+ finally {
244
+ ui.resume();
219
245
  }
220
- out("");
221
- out("Port mirroring:");
222
- runMutagen(mutagen, ["forward", "list"]);
223
246
  };
224
- const NOTHING_CONNECTED = [
225
- "Nothing is connected: this machine is not linked to a sandbox and syncs no folder.",
226
- "Connect it from a sandbox's chat — the Connect-this-device card, or the Desktop sync card.",
227
- ];
228
247
  export const status = buildCommand({
229
- docs: { brief: "Show what this machine's agent is connected to, syncing, and mirroring, and whether it is alive" },
248
+ docs: { brief: "Show what this device's agent is connected to, syncing, and mirroring, and whether it is alive" },
230
249
  parameters: {
231
250
  flags: {
232
- json: { kind: "boolean", brief: "Emit the machine status as JSON (what the desktop app's tray and screen read)" },
251
+ json: { kind: "boolean", brief: "Emit the device status as JSON (what the desktop app's tray and screen read)" },
252
+ verbose: { kind: "boolean", brief: "Also print Mutagen's own session and forward listings", default: false },
233
253
  },
234
254
  },
235
255
  async func(flags) {
236
- const out = (message) => void this.process.stdout.write(`${message}\n`);
237
256
  const mutagen = await pairedMutagen();
238
257
  const report = await deviceStatus(mutagen);
239
258
  if (flags.json) {
240
- out(JSON.stringify(report));
259
+ this.process.stdout.write(`${JSON.stringify(report)}\n`);
241
260
  return;
242
261
  }
262
+ const ui = machineUi(this.process);
263
+ ui.report("intentic · this device", report.summary === "nothing connected" ? undefined : report.summary.toLowerCase());
243
264
  if (report.device.links.length === 0 && report.sync.pairings.length === 0) {
244
- for (const line of NOTHING_CONNECTED) {
245
- out(line);
246
- }
265
+ ui.quiet("Nothing is connected. Connect this device from a card in a sandbox's chat.");
247
266
  return;
248
267
  }
249
- out(report.summary);
250
- out("");
251
- out(`intentic-machine v${report.version}`);
252
- out(agentLine(report.sync.agent, Date.now()));
253
- const [distro, held, children] = await Promise.all([registeredDistro(), readResident(), heldDistros().catch(() => [])]);
254
- const where = machineLine(distro, held?.supervisor, children);
255
- if (where !== undefined) {
256
- out(where);
268
+ ui.plain(report.summary);
269
+ ui.plain(`intentic-machine ${report.version}`);
270
+ const later = [];
271
+ const agent = agentItem(report.sync.agent, Date.now());
272
+ const skew = buildSkewItem(report.sync);
273
+ ui.items(skew === undefined ? [agent] : [agent, skew]);
274
+ const why = agentNote(report.sync.agent, Date.now());
275
+ if (why !== undefined) {
276
+ ui.note(why);
257
277
  }
258
- const skew = buildSkewLine(report.sync);
259
278
  if (skew !== undefined) {
260
- out(skew);
279
+ ui.note("The agent keeps the build it started with until it restarts.");
280
+ }
281
+ if (agent.tone === "fail" || skew !== undefined) {
282
+ later.push(RESTART);
261
283
  }
262
- out(`Logs: ${runLogPath}`);
263
- out(`Audit: ${auditPath}`);
264
- if (report.device.pausedAt !== undefined) {
265
- out(`Mouse and keyboard: PAUSED by the person at this computer since ${report.device.pausedAt}. Agents are refused until ${PAUSE_HOTKEY} is pressed while their notice is on screen.`);
284
+ const [distro, held, children] = await Promise.all([registeredDistro(), readResident(), heldDistros().catch(() => [])]);
285
+ const place = placeLine(distro, held?.supervisor, children);
286
+ ui.fields([
287
+ ...(place === undefined ? [] : [["device", place]]),
288
+ ["logs", runLogPath],
289
+ ["audit", auditPath],
290
+ ...(report.device.pausedAt === undefined
291
+ ? []
292
+ : [["mouse and keyboard", `paused since ${report.device.pausedAt}, until ${PAUSE_HOTKEY} is pressed while an agent's notice is on screen`]]),
293
+ ]);
294
+ if (report.device.links.length > 0) {
295
+ ui.section(`linked sandboxes (${report.device.links.length})`);
296
+ for (const link of report.device.links) {
297
+ ui.items([linkItem(link)]);
298
+ ui.note(grantLine(link));
299
+ }
266
300
  }
267
- printLinks(report.device.links, out);
268
- printReport(report.sync, out);
301
+ later.push(...drawSync(ui, report.sync));
269
302
  if (mutagen !== undefined) {
270
- await printMutagen(mutagen, out);
303
+ await drawSessions(ui, mutagen, flags.verbose);
271
304
  }
305
+ ui.later(later);
272
306
  },
273
307
  });
274
308
  //# sourceMappingURL=status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type Log } from "@intentic/local-agent";
2
- import { type CommandContext } from "@stricli/core";
2
+ import type { CommandContext } from "@stricli/core";
3
3
  import { type Pairing } from "./config.js";
4
4
  import { type Siblings } from "./siblings.js";
5
5
  export interface AttachAsk {
@@ -1 +1 @@
1
- {"version":3,"file":"attach-commands.d.ts","sourceRoot":"","sources":["../../src/sync/attach-commands.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAGlE,OAAO,EAAkC,KAAK,OAAO,EAAyE,MAAM,aAAa,CAAC;AAMlJ,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAW9D,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAElB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAGD,MAAM,WAAW,WAAW;IAExB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC/C;AAMD,eAAO,MAAM,eAAe,aAAc,SAAS,OAAO,EAAE,cAAc,MAAM,KAAG,OAAO,GAAG,SAG5F,CAAC;AAkCF,eAAO,MAAM,UAAU,aAAoB,SAAS,OAAO,EAAE,OAAO,SAAS,UAAS,WAAW,KAAQ,OAAO,CAAC,OAAO,CAyDvH,CAAC;AAKF,eAAO,MAAM,YAAY,QAChB,SAAS,OACT,GAAG,UACD,WAAW,GAAG;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,KAC5E,OAAO,CAAC,YAAY,CAQtB,CAAC;AAGF,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE;AAcD,eAAO,MAAM,YAAY,QAAe,MAAM,GAAG,SAAS,YAAY,MAAM,UAAS,WAAW,KAAQ,OAAO,CAAC,YAAY,CAe3H,CAAC;AA4DF,eAAO,MAAM,cAAc;;;CAAqB,CAAC"}
1
+ {"version":3,"file":"attach-commands.d.ts","sourceRoot":"","sources":["../../src/sync/attach-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,OAAO,EAAkC,KAAK,OAAO,EAAyE,MAAM,aAAa,CAAC;AAOlJ,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAW9D,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAElB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAGD,MAAM,WAAW,WAAW;IAExB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC/C;AAMD,eAAO,MAAM,eAAe,aAAc,SAAS,OAAO,EAAE,cAAc,MAAM,KAAG,OAAO,GAAG,SAG5F,CAAC;AAkCF,eAAO,MAAM,UAAU,aAAoB,SAAS,OAAO,EAAE,OAAO,SAAS,UAAS,WAAW,KAAQ,OAAO,CAAC,OAAO,CAuDvH,CAAC;AAKF,eAAO,MAAM,YAAY,QAChB,SAAS,OACT,GAAG,UACD,WAAW,GAAG;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,KAC5E,OAAO,CAAC,YAAY,CAQtB,CAAC;AAGF,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE;AAeD,eAAO,MAAM,YAAY,QAAe,MAAM,GAAG,SAAS,YAAY,MAAM,UAAS,WAAW,KAAQ,OAAO,CAAC,YAAY,CAe3H,CAAC;AAwEF,eAAO,MAAM,cAAc;;;CAAqB,CAAC"}
@@ -1,13 +1,13 @@
1
- import { spawnSync } from "node:child_process";
2
1
  import { rm } from "node:fs/promises";
3
2
  import { resolve } from "node:path";
4
3
  import { homeDir } from "@intentic/local-agent";
5
4
  import { isProjectDirName, projectRemoteDir } from "@intentic/sandbox-contract";
6
- import { buildCommand } from "@stricli/core";
5
+ import { buildCommand } from "../cli-ui.js";
7
6
  import { baseDir } from "../config.js";
8
- import { ensureResident } from "../resident.js";
7
+ import { ensureResident } from "../resident/resident.js";
9
8
  import { attachedKey, isAttachedPairing, pairingKey, pairingTransport, readState, removePairing, upsertPairing } from "./config.js";
10
9
  import { transportFor } from "./endpoint.js";
10
+ import { runProcess } from "./exec.js";
11
11
  import { canonicalFolder, folderRefusal, overlappingPairing, sameFolder } from "./folders.js";
12
12
  import { ensureMutagen, existingSyncSessions, MUTAGEN_CALL_TIMEOUT_MS, syncSessionNames } from "./mutagen.js";
13
13
  import { answer, projectPairingFor } from "./project/project-commands.js";
@@ -23,7 +23,7 @@ const expandedFolder = (dir) => resolve(dir.replace(/^~(?=[\\/]|$)/, homeDir()))
23
23
  const asked = (ask) => {
24
24
  const missing = (value) => value === undefined || value.trim() === "";
25
25
  if (missing(ask.sandboxUrl)) {
26
- throw new Error("pass --sandbox-url with the address of this computer's sandbox");
26
+ throw new Error("pass --sandbox (or --sandbox-url) with the address of this device's sandbox");
27
27
  }
28
28
  if (missing(ask.dir)) {
29
29
  throw new Error("pass --dir with the folder to attach");
@@ -40,13 +40,13 @@ const refuseOverlap = async (folder, key, host, pairings) => {
40
40
  }
41
41
  throw new Error(clash.sandboxId === host.sandboxId && isAttachedPairing(clash)
42
42
  ? `${folder} overlaps ${clash.localDir}, which is already attached as ${clash.remoteDir ?? "a folder of this sandbox"}: one folder is one sync. Detach that one first, or pick a folder that neither is, holds nor sits inside it.`
43
- : `${folder} overlaps ${clash.localDir}, which already syncs with ${clash.sandboxId}: two syncs over one folder overwrite each other's files. Choose a folder that neither is, holds nor sits inside one this machine syncs (\`intentic-machine status\` lists them).`);
43
+ : `${folder} overlaps ${clash.localDir}, which already syncs with ${clash.sandboxId}: two syncs over one folder overwrite each other's files. Choose a folder that neither is, holds nor sits inside one this device syncs; intentic-machine status lists them.`);
44
44
  };
45
45
  export const planAttach = async (pairings, ask, seams = {}) => {
46
46
  const { sandboxUrl, dir, name } = asked(ask);
47
47
  const host = projectsHostFor(pairings, sandboxUrl);
48
48
  if (host === undefined) {
49
- throw new Error(`this computer's sandbox is not set up for folders yet: no sandbox at ${sandboxUrl} was enrolled here with \`intentic-machine sync setup --projects-host\``);
49
+ throw new Error(`this device's sandbox is not set up for folders yet: no sandbox at ${sandboxUrl} was enrolled here as the sandbox folders attach to (sync setup --projects-host)`);
50
50
  }
51
51
  if (!isProjectDirName(name)) {
52
52
  throw new Error(`${JSON.stringify(name)} cannot name a folder in the sandbox: a name starts with a letter or digit, holds only letters, digits, ".", "_" and "-", is at most 64 characters, and is not one the sandbox keeps for itself`);
@@ -62,7 +62,7 @@ export const planAttach = async (pairings, ask, seams = {}) => {
62
62
  const remoteDir = projectRemoteDir(name);
63
63
  const sameName = pairings.find((pairing) => pairingKey(pairing) === key);
64
64
  if (sameName?.localDir !== undefined && !sameFolder(await canonicalFolder(sameName.localDir), folder)) {
65
- throw new Error(`${sameName.localDir} is already attached as ${remoteDir}; detach it first (\`intentic-machine sync detach --dir ${JSON.stringify(sameName.localDir)}\`) or pick another name`);
65
+ throw new Error(`${sameName.localDir} is already attached as ${remoteDir}; detach it first, or pick another name`);
66
66
  }
67
67
  await refuseOverlap(folder, key, host, pairings);
68
68
  const across = await refuseAcrossPc(wanted, seams.siblings);
@@ -99,7 +99,7 @@ const terminateSessions = async (names) => {
99
99
  const mutagen = await ensureMutagen();
100
100
  const live = existingSyncSessions(mutagen, names);
101
101
  for (const batch of live === undefined ? names.map((name) => [name]) : live.length > 0 ? [live] : []) {
102
- spawnSync(mutagen, ["sync", "terminate", ...batch], { stdio: "ignore", windowsHide: true, timeout: MUTAGEN_CALL_TIMEOUT_MS });
102
+ await runProcess(mutagen, ["sync", "terminate", ...batch], { timeoutMs: MUTAGEN_CALL_TIMEOUT_MS });
103
103
  }
104
104
  };
105
105
  export const detachFolder = async (dir, stateDir, seams = {}) => {
@@ -108,7 +108,7 @@ export const detachFolder = async (dir, stateDir, seams = {}) => {
108
108
  }
109
109
  const pairing = await projectPairingFor((await readState()).pairings, dir);
110
110
  if (!isAttachedPairing(pairing)) {
111
- throw new Error(`${pairing.localDir} has a sandbox of its own (${pairing.sandboxId}), not attached to this computer's: \`intentic-machine sync uninstall --sandbox ${pairing.sandboxId}\` unpairs it`);
111
+ throw new Error(`${pairing.localDir} has a sandbox of its own (${pairing.sandboxId}) rather than being attached to this device's; unpair it with sync uninstall --sandbox ${pairing.sandboxId}`);
112
112
  }
113
113
  const key = pairingKey(pairing);
114
114
  await removePairing(key);
@@ -126,14 +126,18 @@ const attach = buildCommand({
126
126
  optional: true,
127
127
  brief: "This computer's sandbox, as `sync setup --projects-host` enrolled it",
128
128
  },
129
+ sandbox: { kind: "parsed", parse: String, optional: true, brief: "The same as --sandbox-url" },
129
130
  dir: { kind: "parsed", parse: String, optional: true, brief: "The folder to attach" },
130
131
  name: { kind: "parsed", parse: String, optional: true, brief: "Its name in the sandbox: it becomes /work/<name>" },
131
132
  json: { kind: "boolean", brief: "Print one JSON object, `ok` first (what the desktop app reads)" },
132
133
  },
133
134
  },
134
135
  async func(flags) {
135
- const log = (message) => void (flags.json ? this.process.stderr : this.process.stdout).write(`${message}\n`);
136
- await answer(this, flags.json, async () => await attachFolder(flags, log), (result) => `Attached ${result.folder} as ${result.remoteDir}. Its first copy into the sandbox starts within a few seconds (\`intentic-machine status\` shows when it is done); landed work comes back into it by itself, a restore point first.`);
136
+ await answer(this, flags.json, async (ui) => await attachFolder({ ...flags, sandboxUrl: flags.sandboxUrl ?? flags.sandbox }, ui.note), (result, ui) => {
137
+ ui.note("Its first copy into the sandbox starts within a few seconds. Landed work comes back into it by itself, a restore point first.");
138
+ ui.done(`Attached ${result.folder} as ${result.remoteDir}.`);
139
+ ui.later([["see when the copy is done", "intentic-machine status"]]);
140
+ }, { doing: "Attaching the folder to this device's sandbox", failed: "The folder was not attached." });
137
141
  },
138
142
  });
139
143
  const detach = buildCommand({
@@ -145,7 +149,10 @@ const detach = buildCommand({
145
149
  },
146
150
  },
147
151
  async func(flags) {
148
- await answer(this, flags.json, async () => await detachFolder(flags.dir, baseDir), (result) => `Detached ${result.folder}: it no longer syncs with the sandbox. Its restore points are kept.`);
152
+ await answer(this, flags.json, async () => await detachFolder(flags.dir, baseDir), (result, ui) => {
153
+ ui.note("It no longer syncs with the sandbox. Its restore points are kept.");
154
+ ui.done(`Detached ${result.folder}.`);
155
+ }, { doing: "Detaching the folder", failed: "The folder was not detached." });
149
156
  },
150
157
  });
151
158
  export const attachCommands = { attach, detach };
@@ -1 +1 @@
1
- {"version":3,"file":"attach-commands.js","sourceRoot":"","sources":["../../src/sync/attach-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attach-commands.js","sourceRoot":"","sources":["../../src/sync/attach-commands.ts"],"names":[],"mappings":"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"}