@intentic/machine 1.325.0 → 1.327.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 (271) hide show
  1. package/README.md +387 -33
  2. package/dist/commands.d.ts.map +1 -1
  3. package/dist/commands.js +2 -0
  4. package/dist/commands.js.map +1 -1
  5. package/dist/daemon-base.d.ts.map +1 -1
  6. package/dist/daemon-base.js +2 -3
  7. package/dist/daemon-base.js.map +1 -1
  8. package/dist/device/audit.d.ts +2 -0
  9. package/dist/device/audit.d.ts.map +1 -1
  10. package/dist/device/audit.js +23 -3
  11. package/dist/device/audit.js.map +1 -1
  12. package/dist/device/commands.d.ts +4 -0
  13. package/dist/device/commands.d.ts.map +1 -1
  14. package/dist/device/commands.js +7 -2
  15. package/dist/device/commands.js.map +1 -1
  16. package/dist/device/connection.d.ts +12 -1
  17. package/dist/device/connection.d.ts.map +1 -1
  18. package/dist/device/connection.js +77 -3
  19. package/dist/device/connection.js.map +1 -1
  20. package/dist/device/grant.d.ts +52 -0
  21. package/dist/device/grant.d.ts.map +1 -1
  22. package/dist/device/loopback-catch.d.ts +1 -1
  23. package/dist/device/loopback-catch.d.ts.map +1 -1
  24. package/dist/device/loopback-catch.js +5 -30
  25. package/dist/device/loopback-catch.js.map +1 -1
  26. package/dist/device/mcp.d.ts.map +1 -1
  27. package/dist/device/mcp.js +190 -30
  28. package/dist/device/mcp.js.map +1 -1
  29. package/dist/device/router.d.ts +52 -0
  30. package/dist/device/router.d.ts.map +1 -1
  31. package/dist/device/router.js +21 -0
  32. package/dist/device/router.js.map +1 -1
  33. package/dist/device/sandbox-rounds/auto-backup.d.ts +3 -1
  34. package/dist/device/sandbox-rounds/auto-backup.d.ts.map +1 -1
  35. package/dist/device/sandbox-rounds/auto-backup.js +14 -5
  36. package/dist/device/sandbox-rounds/auto-backup.js.map +1 -1
  37. package/dist/device/sandbox-rounds/auto-prepare.d.ts +3 -1
  38. package/dist/device/sandbox-rounds/auto-prepare.d.ts.map +1 -1
  39. package/dist/device/sandbox-rounds/auto-prepare.js +3 -3
  40. package/dist/device/sandbox-rounds/auto-prepare.js.map +1 -1
  41. package/dist/device/sandbox-rounds/in-flight.d.ts.map +1 -0
  42. package/dist/device/sandbox-rounds/in-flight.js.map +1 -0
  43. package/dist/device/sandbox-rounds/keeper.d.ts +26 -4
  44. package/dist/device/sandbox-rounds/keeper.d.ts.map +1 -1
  45. package/dist/device/sandbox-rounds/keeper.js +129 -31
  46. package/dist/device/sandbox-rounds/keeper.js.map +1 -1
  47. package/dist/device/sandbox-rounds/probation-watch.d.ts.map +1 -1
  48. package/dist/device/sandbox-rounds/probation-watch.js.map +1 -1
  49. package/dist/device/tools/android-parse.d.ts +69 -0
  50. package/dist/device/tools/android-parse.d.ts.map +1 -0
  51. package/dist/device/tools/android-parse.js +391 -0
  52. package/dist/device/tools/android-parse.js.map +1 -0
  53. package/dist/device/tools/android.d.ts +71 -0
  54. package/dist/device/tools/android.d.ts.map +1 -0
  55. package/dist/device/tools/android.js +534 -0
  56. package/dist/device/tools/android.js.map +1 -0
  57. package/dist/device/tools/apps.d.ts +3 -3
  58. package/dist/device/tools/apps.d.ts.map +1 -1
  59. package/dist/device/tools/apps.js +16 -6
  60. package/dist/device/tools/apps.js.map +1 -1
  61. package/dist/device/tools/describe.d.ts.map +1 -1
  62. package/dist/device/tools/describe.js +10 -5
  63. package/dist/device/tools/describe.js.map +1 -1
  64. package/dist/device/tools/device.d.ts +9 -15
  65. package/dist/device/tools/device.d.ts.map +1 -1
  66. package/dist/device/tools/device.js +34 -58
  67. package/dist/device/tools/device.js.map +1 -1
  68. package/dist/device/tools/elements.d.ts +13 -0
  69. package/dist/device/tools/elements.d.ts.map +1 -0
  70. package/dist/device/tools/elements.js +84 -0
  71. package/dist/device/tools/elements.js.map +1 -0
  72. package/dist/device/tools/ic-binary.d.ts +1 -0
  73. package/dist/device/tools/ic-binary.d.ts.map +1 -1
  74. package/dist/device/tools/ic-binary.js +40 -17
  75. package/dist/device/tools/ic-binary.js.map +1 -1
  76. package/dist/device/tools/sandboxes.d.ts +1 -1
  77. package/dist/device/tools/sandboxes.d.ts.map +1 -1
  78. package/dist/device/tools/sandboxes.js +9 -8
  79. package/dist/device/tools/sandboxes.js.map +1 -1
  80. package/dist/device/tools/shell.js +1 -1
  81. package/dist/device/tools/shell.js.map +1 -1
  82. package/dist/device/tools/view.d.ts +4 -0
  83. package/dist/device/tools/view.d.ts.map +1 -0
  84. package/dist/device/tools/view.js +4 -0
  85. package/dist/device/tools/view.js.map +1 -0
  86. package/dist/environments/children.js +1 -1
  87. package/dist/environments/children.js.map +1 -1
  88. package/dist/environments/commands.js +1 -1
  89. package/dist/environments/commands.js.map +1 -1
  90. package/dist/environments/crossing.d.ts +1 -1
  91. package/dist/environments/crossing.d.ts.map +1 -1
  92. package/dist/environments/machine.js +1 -1
  93. package/dist/environments/machine.js.map +1 -1
  94. package/dist/environments/wsl.d.ts.map +1 -0
  95. package/dist/environments/wsl.js.map +1 -0
  96. package/dist/resident.d.ts.map +1 -1
  97. package/dist/resident.js +14 -8
  98. package/dist/resident.js.map +1 -1
  99. package/dist/status.d.ts.map +1 -1
  100. package/dist/status.js +16 -13
  101. package/dist/status.js.map +1 -1
  102. package/dist/sync/attach-commands.d.ts +39 -0
  103. package/dist/sync/attach-commands.d.ts.map +1 -0
  104. package/dist/sync/attach-commands.js +152 -0
  105. package/dist/sync/attach-commands.js.map +1 -0
  106. package/dist/sync/commands.d.ts +8 -4
  107. package/dist/sync/commands.d.ts.map +1 -1
  108. package/dist/sync/commands.js +137 -79
  109. package/dist/sync/commands.js.map +1 -1
  110. package/dist/sync/config.d.ts +43 -9
  111. package/dist/sync/config.d.ts.map +1 -1
  112. package/dist/sync/config.js +86 -41
  113. package/dist/sync/config.js.map +1 -1
  114. package/dist/sync/endpoint.d.ts +8 -1
  115. package/dist/sync/endpoint.d.ts.map +1 -1
  116. package/dist/sync/endpoint.js +41 -1
  117. package/dist/sync/endpoint.js.map +1 -1
  118. package/dist/sync/environment.d.ts +11 -0
  119. package/dist/sync/environment.d.ts.map +1 -0
  120. package/dist/sync/environment.js +48 -0
  121. package/dist/sync/environment.js.map +1 -0
  122. package/dist/sync/exec.d.ts +1 -0
  123. package/dist/sync/exec.d.ts.map +1 -1
  124. package/dist/sync/exec.js +4 -5
  125. package/dist/sync/exec.js.map +1 -1
  126. package/dist/sync/folders.d.ts +3 -2
  127. package/dist/sync/folders.d.ts.map +1 -1
  128. package/dist/sync/folders.js +55 -2
  129. package/dist/sync/folders.js.map +1 -1
  130. package/dist/sync/forget-command.d.ts +22 -0
  131. package/dist/sync/forget-command.d.ts.map +1 -0
  132. package/dist/sync/forget-command.js +95 -0
  133. package/dist/sync/forget-command.js.map +1 -0
  134. package/dist/sync/git-bridge.d.ts +6 -0
  135. package/dist/sync/git-bridge.d.ts.map +1 -1
  136. package/dist/sync/git-bridge.js +64 -1
  137. package/dist/sync/git-bridge.js.map +1 -1
  138. package/dist/sync/gone-watch.d.ts +18 -0
  139. package/dist/sync/gone-watch.d.ts.map +1 -0
  140. package/dist/sync/gone-watch.js +142 -0
  141. package/dist/sync/gone-watch.js.map +1 -0
  142. package/dist/sync/gone.d.ts +22 -0
  143. package/dist/sync/gone.d.ts.map +1 -0
  144. package/dist/sync/gone.js +60 -0
  145. package/dist/sync/gone.js.map +1 -0
  146. package/dist/sync/local-sandboxes.d.ts +6 -0
  147. package/dist/sync/local-sandboxes.d.ts.map +1 -0
  148. package/dist/sync/local-sandboxes.js +26 -0
  149. package/dist/sync/local-sandboxes.js.map +1 -0
  150. package/dist/sync/mirror.d.ts +7 -0
  151. package/dist/sync/mirror.d.ts.map +1 -1
  152. package/dist/sync/mirror.js +434 -111
  153. package/dist/sync/mirror.js.map +1 -1
  154. package/dist/sync/mutagen.d.ts +50 -18
  155. package/dist/sync/mutagen.d.ts.map +1 -1
  156. package/dist/sync/mutagen.js +294 -80
  157. package/dist/sync/mutagen.js.map +1 -1
  158. package/dist/sync/project/adopt.d.ts +18 -0
  159. package/dist/sync/project/adopt.d.ts.map +1 -0
  160. package/dist/sync/project/adopt.js +86 -0
  161. package/dist/sync/project/adopt.js.map +1 -0
  162. package/dist/sync/{project-commands.d.ts → project/project-commands.d.ts} +4 -1
  163. package/dist/sync/project/project-commands.d.ts.map +1 -0
  164. package/dist/sync/{project-commands.js → project/project-commands.js} +10 -10
  165. package/dist/sync/project/project-commands.js.map +1 -0
  166. package/dist/sync/project/project-delivery.d.ts +23 -0
  167. package/dist/sync/project/project-delivery.d.ts.map +1 -0
  168. package/dist/sync/project/project-delivery.js +315 -0
  169. package/dist/sync/project/project-delivery.js.map +1 -0
  170. package/dist/sync/{project-files.d.ts → project/project-files.d.ts} +1 -1
  171. package/dist/sync/project/project-files.d.ts.map +1 -0
  172. package/dist/sync/{project-files.js → project/project-files.js} +5 -2
  173. package/dist/sync/project/project-files.js.map +1 -0
  174. package/dist/sync/{project-local.d.ts → project/project-local.d.ts} +1 -1
  175. package/dist/sync/project/project-local.d.ts.map +1 -0
  176. package/dist/sync/{project-local.js → project/project-local.js} +1 -1
  177. package/dist/sync/project/project-local.js.map +1 -0
  178. package/dist/sync/{project-remote.d.ts → project/project-remote.d.ts} +1 -1
  179. package/dist/sync/project/project-remote.d.ts.map +1 -0
  180. package/dist/sync/{project-remote.js → project/project-remote.js} +1 -1
  181. package/dist/sync/project/project-remote.js.map +1 -0
  182. package/dist/sync/{project-transfer.d.ts → project/project-transfer.d.ts} +20 -6
  183. package/dist/sync/project/project-transfer.d.ts.map +1 -0
  184. package/dist/sync/{project-transfer.js → project/project-transfer.js} +26 -23
  185. package/dist/sync/project/project-transfer.js.map +1 -0
  186. package/dist/sync/report.d.ts.map +1 -1
  187. package/dist/sync/report.js +13 -7
  188. package/dist/sync/report.js.map +1 -1
  189. package/dist/sync/restore-points.d.ts +15 -11
  190. package/dist/sync/restore-points.d.ts.map +1 -1
  191. package/dist/sync/restore-points.js +25 -24
  192. package/dist/sync/restore-points.js.map +1 -1
  193. package/dist/sync/retire.d.ts +14 -0
  194. package/dist/sync/retire.d.ts.map +1 -0
  195. package/dist/sync/retire.js +66 -0
  196. package/dist/sync/retire.js.map +1 -0
  197. package/dist/sync/siblings.d.ts +27 -0
  198. package/dist/sync/siblings.d.ts.map +1 -0
  199. package/dist/sync/siblings.js +112 -0
  200. package/dist/sync/siblings.js.map +1 -0
  201. package/dist/sync/ssh.d.ts +1 -0
  202. package/dist/sync/ssh.d.ts.map +1 -1
  203. package/dist/sync/ssh.js +37 -23
  204. package/dist/sync/ssh.js.map +1 -1
  205. package/dist/sync/tunnel.d.ts +6 -2
  206. package/dist/sync/tunnel.d.ts.map +1 -1
  207. package/dist/sync/tunnel.js +45 -48
  208. package/dist/sync/tunnel.js.map +1 -1
  209. package/dist/upkeep/doctor.d.ts +5 -0
  210. package/dist/upkeep/doctor.d.ts.map +1 -0
  211. package/dist/upkeep/doctor.js +73 -0
  212. package/dist/upkeep/doctor.js.map +1 -0
  213. package/dist/upkeep/entry.d.ts +26 -0
  214. package/dist/upkeep/entry.d.ts.map +1 -0
  215. package/dist/upkeep/entry.js +2 -0
  216. package/dist/upkeep/entry.js.map +1 -0
  217. package/dist/upkeep/login.d.ts +15 -0
  218. package/dist/upkeep/login.d.ts.map +1 -0
  219. package/dist/upkeep/login.js +128 -0
  220. package/dist/upkeep/login.js.map +1 -0
  221. package/dist/upkeep/manifest.d.ts +3 -0
  222. package/dist/upkeep/manifest.d.ts.map +1 -0
  223. package/dist/upkeep/manifest.js +6 -0
  224. package/dist/upkeep/manifest.js.map +1 -0
  225. package/dist/upkeep/reconcile.d.ts +45 -0
  226. package/dist/upkeep/reconcile.d.ts.map +1 -0
  227. package/dist/upkeep/reconcile.js +159 -0
  228. package/dist/upkeep/reconcile.js.map +1 -0
  229. package/dist/upkeep/retention.d.ts +10 -0
  230. package/dist/upkeep/retention.d.ts.map +1 -0
  231. package/dist/upkeep/retention.js +71 -0
  232. package/dist/upkeep/retention.js.map +1 -0
  233. package/dist/upkeep/retired.d.ts +12 -0
  234. package/dist/upkeep/retired.d.ts.map +1 -0
  235. package/dist/upkeep/retired.js +125 -0
  236. package/dist/upkeep/retired.js.map +1 -0
  237. package/dist/upkeep/second-ic.d.ts +4 -0
  238. package/dist/upkeep/second-ic.d.ts.map +1 -0
  239. package/dist/upkeep/second-ic.js +36 -0
  240. package/dist/upkeep/second-ic.js.map +1 -0
  241. package/dist/upkeep/trash.d.ts +9 -0
  242. package/dist/upkeep/trash.d.ts.map +1 -0
  243. package/dist/upkeep/trash.js +77 -0
  244. package/dist/upkeep/trash.js.map +1 -0
  245. package/dist/watchdog.d.ts +13 -0
  246. package/dist/watchdog.d.ts.map +1 -0
  247. package/dist/watchdog.js +38 -0
  248. package/dist/watchdog.js.map +1 -0
  249. package/package.json +9 -9
  250. package/dist/autostart/legacy-autostart.d.ts +0 -4
  251. package/dist/autostart/legacy-autostart.d.ts.map +0 -1
  252. package/dist/autostart/legacy-autostart.js +0 -33
  253. package/dist/autostart/legacy-autostart.js.map +0 -1
  254. package/dist/device/tools/in-flight.d.ts.map +0 -1
  255. package/dist/device/tools/in-flight.js.map +0 -1
  256. package/dist/sync/project-commands.d.ts.map +0 -1
  257. package/dist/sync/project-commands.js.map +0 -1
  258. package/dist/sync/project-files.d.ts.map +0 -1
  259. package/dist/sync/project-files.js.map +0 -1
  260. package/dist/sync/project-local.d.ts.map +0 -1
  261. package/dist/sync/project-local.js.map +0 -1
  262. package/dist/sync/project-remote.d.ts.map +0 -1
  263. package/dist/sync/project-remote.js.map +0 -1
  264. package/dist/sync/project-transfer.d.ts.map +0 -1
  265. package/dist/sync/project-transfer.js.map +0 -1
  266. package/dist/wsl.d.ts.map +0 -1
  267. package/dist/wsl.js.map +0 -1
  268. /package/dist/device/{tools → sandbox-rounds}/in-flight.d.ts +0 -0
  269. /package/dist/device/{tools → sandbox-rounds}/in-flight.js +0 -0
  270. /package/dist/{wsl.d.ts → environments/wsl.d.ts} +0 -0
  271. /package/dist/{wsl.js → environments/wsl.js} +0 -0
@@ -0,0 +1,95 @@
1
+ import { execFile } from "node:child_process";
2
+ import { promisify } from "node:util";
3
+ import { errorMessage } from "@intentic/base/errors";
4
+ import { buildCommand } from "@stricli/core";
5
+ import { z } from "zod";
6
+ import { agentInDistro } from "../environments/crossing.js";
7
+ import { heldDistros } from "../environments/machine.js";
8
+ import { WINDOWS_SIDE } from "../environments/wsl.js";
9
+ import { readState } from "./config.js";
10
+ import { ensureMutagen } from "./mutagen.js";
11
+ import { answer } from "./project/project-commands.js";
12
+ import { retireSandbox, sandboxesNamed } from "./retire.js";
13
+ const exec = promisify(execFile);
14
+ const DISTRO_TIMEOUT_MS = 120_000;
15
+ const RetiredSchema = z.object({ sandboxId: z.string(), pairings: z.array(z.string()), folders: z.array(z.string()) });
16
+ const DistroAnswerSchema = z.union([
17
+ z.object({ ok: z.literal(true), retired: z.array(RetiredSchema).catch([]) }),
18
+ z.object({ ok: z.literal(false), error: z.string() }),
19
+ ]);
20
+ const lastObject = (stdout) => {
21
+ const line = stdout
22
+ .split(/\r?\n/)
23
+ .map((text) => text.trim())
24
+ .findLast((text) => text.startsWith("{"));
25
+ try {
26
+ return line === undefined ? undefined : JSON.parse(line);
27
+ }
28
+ catch {
29
+ return undefined;
30
+ }
31
+ };
32
+ export const distroAnswer = (environment, status, stdout, stderr) => {
33
+ const parsed = DistroAnswerSchema.safeParse(lastObject(stdout));
34
+ if (parsed.success) {
35
+ return parsed.data.ok ? { environment, ok: true, retired: parsed.data.retired } : { environment, ok: false, error: parsed.data.error };
36
+ }
37
+ const said = `${stderr}${stdout}`.trim().split(/\r?\n/)[0] ?? "";
38
+ return { environment, ok: false, error: said === "" ? `its agent exited with ${status}` : said };
39
+ };
40
+ const forgetInDistro = async (distro, name) => {
41
+ const { command, args } = agentInDistro(distro, ["sync", "forget", name, "--here", "--json"]);
42
+ return await exec(command, [...args], { timeout: DISTRO_TIMEOUT_MS, windowsHide: true, env: { ...process.env, WSL_UTF8: "1" } }).then((ran) => distroAnswer(`wsl:${distro}`, 0, ran.stdout, ran.stderr), (error) => distroAnswer(`wsl:${distro}`, Number.isInteger(error.code) ? Number(error.code) : 1, error.stdout ?? "", error.stderr ?? errorMessage(error)));
43
+ };
44
+ export const forgetSandbox = async (name, log, { here = false, mutagen: resolve = ensureMutagen } = {}) => {
45
+ const ids = sandboxesNamed((await readState()).pairings, name);
46
+ const mutagen = ids.length === 0 ? undefined : await resolve().catch(() => undefined);
47
+ const retired = [];
48
+ for (const sandboxId of ids) {
49
+ const done = await retireSandbox(sandboxId, log, "forgotten by `intentic-machine sync forget`", { mutagen });
50
+ if (done !== undefined) {
51
+ retired.push(done);
52
+ }
53
+ }
54
+ if (!WINDOWS_SIDE || here) {
55
+ return { ok: true, retired };
56
+ }
57
+ const environments = await Promise.all((await heldDistros()).map(async (distro) => await forgetInDistro(distro, name)));
58
+ return { ok: true, retired, ...(environments.length === 0 ? {} : { environments }) };
59
+ };
60
+ export const forgotInWords = (name, forgot) => {
61
+ const lines = [
62
+ forgot.retired.length === 0
63
+ ? `Nothing paired in this environment is called ${name}.`
64
+ : forgot.retired
65
+ .map((entry) => `Forgot ${entry.sandboxId} (${entry.pairings.join(", ")})${entry.folders.length === 0 ? "" : `; kept ${entry.folders.join(", ")} and its restore points`}.`)
66
+ .join("\n"),
67
+ ...(forgot.environments ?? []).map((entry) => entry.ok
68
+ ? `${entry.environment}: ${(entry.retired ?? []).length === 0 ? "nothing paired there by that name" : `forgot ${(entry.retired ?? []).map((held) => held.sandboxId).join(", ")}`}.`
69
+ : `${entry.environment}: not asked (${entry.error ?? "no answer"}).`),
70
+ ];
71
+ return lines.join("\n");
72
+ };
73
+ export const forget = buildCommand({
74
+ docs: {
75
+ brief: "Retire every pairing of one sandbox now (by its slug or sandbox id), in every environment of this PC: its sessions, forwards, ssh entry and caches go; its folders and restore points stay",
76
+ },
77
+ parameters: {
78
+ flags: {
79
+ json: { kind: "boolean", brief: "Print one JSON object, `ok` first" },
80
+ here: {
81
+ kind: "boolean",
82
+ brief: "Only this environment, not the WSL distros a Windows side keeps (what the Windows side asks each distro)",
83
+ },
84
+ },
85
+ positional: {
86
+ kind: "tuple",
87
+ parameters: [{ brief: "The sandbox's slug (as ic names it) or its sandbox id", parse: String, placeholder: "sandbox" }],
88
+ },
89
+ },
90
+ async func(flags, name) {
91
+ const log = (message) => void (flags.json ? this.process.stderr : this.process.stdout).write(`${message}\n`);
92
+ await answer(this, flags.json, async () => await forgetSandbox(name, log, { here: flags.here }), (result) => forgotInWords(name, result));
93
+ },
94
+ });
95
+ //# sourceMappingURL=forget-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forget-command.js","sourceRoot":"","sources":["../../src/sync/forget-command.ts"],"names":[],"mappings":"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"}
@@ -8,4 +8,10 @@ export declare const realBridgeExec: BridgeExec;
8
8
  export declare const listSandboxRepos: (exec: BridgeExec, alias: string) => Promise<string[] | undefined>;
9
9
  export declare const bridgeRepo: (exec: BridgeExec, alias: string, localDir: string, repo: string, log: Log) => Promise<void>;
10
10
  export declare const runGitBridge: (exec: BridgeExec, pairing: Pairing, log: Log, known: readonly string[] | undefined) => Promise<readonly string[] | undefined>;
11
+ export interface UnbridgeFs {
12
+ readonly subdirs: (dir: string) => Promise<readonly string[]>;
13
+ }
14
+ export declare const bridgedRepoCandidates: (fs: UnbridgeFs, exec: BridgeExec, localDir: string) => Promise<string[]>;
15
+ export declare const unbridgeRepos: (exec: BridgeExec, fs: UnbridgeFs, alias: string, localDir: string) => Promise<number>;
16
+ export declare const realUnbridgeFs: UnbridgeFs;
11
17
  //# sourceMappingURL=git-bridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-bridge.d.ts","sourceRoot":"","sources":["../../src/sync/git-bridge.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAS7D,MAAM,WAAW,UAAU;IAEvB,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC9C;AAKD,eAAO,MAAM,cAAc,EAAE,UAM5B,CAAC;AAYF,eAAO,MAAM,gBAAgB,SAAgB,UAAU,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CASpG,CAAC;AAIF,eAAO,MAAM,UAAU,SAAgB,UAAU,SAAS,MAAM,YAAY,MAAM,QAAQ,MAAM,OAAO,GAAG,KAAG,OAAO,CAAC,IAAI,CAiGxH,CAAC;AAMF,eAAO,MAAM,YAAY,SACf,UAAU,WACP,OAAO,OACX,GAAG,SACD,SAAS,MAAM,EAAE,GAAG,SAAS,KACrC,OAAO,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,CAiBvC,CAAC"}
1
+ {"version":3,"file":"git-bridge.d.ts","sourceRoot":"","sources":["../../src/sync/git-bridge.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAS7D,MAAM,WAAW,UAAU;IAEvB,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC9C;AAKD,eAAO,MAAM,cAAc,EAAE,UAM5B,CAAC;AAYF,eAAO,MAAM,gBAAgB,SAAgB,UAAU,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CASpG,CAAC;AAIF,eAAO,MAAM,UAAU,SAAgB,UAAU,SAAS,MAAM,YAAY,MAAM,QAAQ,MAAM,OAAO,GAAG,KAAG,OAAO,CAAC,IAAI,CAiGxH,CAAC;AAMF,eAAO,MAAM,YAAY,SACf,UAAU,WACP,OAAO,OACX,GAAG,SACD,SAAS,MAAM,EAAE,GAAG,SAAS,KACrC,OAAO,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,CAiBvC,CAAC;AA0BF,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CACjE;AAED,eAAO,MAAM,qBAAqB,OAAc,UAAU,QAAQ,UAAU,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAuBhH,CAAC;AAIF,eAAO,MAAM,aAAa,SAAgB,UAAU,MAAM,UAAU,SAAS,MAAM,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,CAuBrH,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,UAM5B,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { existsSync } from "node:fs";
2
+ import { readdir } from "node:fs/promises";
2
3
  import { join } from "node:path";
3
- import { HISTORY_ROOT } from "@intentic/constants";
4
+ import { HISTORY_ROOT, STATE_DIR } from "@intentic/constants";
4
5
  import { isProjectPairing } from "./config.js";
5
6
  import { runProcess } from "./exec.js";
6
7
  import { sshAlias } from "./ssh.js";
@@ -120,4 +121,66 @@ export const runGitBridge = async (exec, pairing, log, known) => {
120
121
  }
121
122
  return repos;
122
123
  };
124
+ const UNBRIDGE_MAX_DIRS = 5_000;
125
+ const NEVER_A_BRIDGED_REPO = new Set([
126
+ "node_modules",
127
+ ".git",
128
+ "dist",
129
+ ".cache",
130
+ ".turbo",
131
+ ".next",
132
+ ".venv",
133
+ "venv",
134
+ ".pnpm-store",
135
+ STATE_DIR,
136
+ "refs",
137
+ ]);
138
+ export const bridgedRepoCandidates = async (fs, exec, localDir) => {
139
+ const found = [];
140
+ let frontier = [localDir];
141
+ let visited = 0;
142
+ for (let depth = 0; depth < 4 && frontier.length > 0 && visited < UNBRIDGE_MAX_DIRS; depth += 1) {
143
+ const next = [];
144
+ for (const dir of frontier) {
145
+ for (const name of await fs.subdirs(dir)) {
146
+ visited += 1;
147
+ if (NEVER_A_BRIDGED_REPO.has(name) || visited > UNBRIDGE_MAX_DIRS) {
148
+ continue;
149
+ }
150
+ const child = join(dir, name);
151
+ if (exec.exists(join(child, ".git"))) {
152
+ found.push(child);
153
+ }
154
+ next.push(child);
155
+ }
156
+ }
157
+ frontier = next;
158
+ }
159
+ return found;
160
+ };
161
+ export const unbridgeRepos = async (exec, fs, alias, localDir) => {
162
+ let touched = 0;
163
+ for (const dir of await bridgedRepoCandidates(fs, exec, localDir)) {
164
+ const url = (await exec.run("git", ["remote", "get-url", "sandbox"], dir))?.trim();
165
+ if (url === undefined || !url.startsWith(`${alias}:`)) {
166
+ continue;
167
+ }
168
+ await exec.run("git", ["remote", "remove", "sandbox"], dir);
169
+ const markers = (await exec.run("git", ["for-each-ref", "--format=%(refname)", "refs/intentic/bridged/"], dir)) ?? "";
170
+ for (const ref of markers
171
+ .split("\n")
172
+ .map((line) => line.trim())
173
+ .filter((line) => line.startsWith("refs/intentic/bridged/"))) {
174
+ await exec.run("git", ["update-ref", "-d", ref], dir);
175
+ }
176
+ touched += 1;
177
+ }
178
+ return touched;
179
+ };
180
+ export const realUnbridgeFs = {
181
+ subdirs: async (dir) => {
182
+ const entries = await readdir(dir, { withFileTypes: true }).catch(() => []);
183
+ return entries.filter((entry) => entry.isDirectory() && !entry.isSymbolicLink()).map((entry) => entry.name);
184
+ },
185
+ };
123
186
  //# sourceMappingURL=git-bridge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-bridge.js","sourceRoot":"","sources":["../../src/sync/git-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-bridge.js","sourceRoot":"","sources":["../../src/sync/git-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { Log } from "@intentic/local-agent";
2
+ import { type GoneWitness, type Pairing } from "./config.js";
3
+ import { containerState } from "./endpoint.js";
4
+ import { type LocalSandboxes } from "./local-sandboxes.js";
5
+ export interface FateSeams {
6
+ readonly mutagen: string;
7
+ readonly releaseForwards: (sandboxId: string) => Promise<unknown>;
8
+ readonly say: Log;
9
+ }
10
+ export declare const sandboxSaidGone: (seams: FateSeams, sandboxId: string, by: GoneWitness, now?: number) => Promise<void>;
11
+ export declare const sandboxAnswered: (seams: FateSeams, sandboxId: string) => Promise<void>;
12
+ export declare const localSlugsOf: (pairing: Pick<Pairing, "sandboxUrl" | "icSlug" | "container">) => string[];
13
+ export declare const checkKeptHere: (seams: FateSeams, pairings: readonly Pairing[], local: ReadonlySet<string>, read?: () => Promise<LocalSandboxes>, answering?: (sandboxId: string) => boolean) => Promise<void>;
14
+ export declare const checkContainers: (seams: FateSeams, pairings: readonly Pairing[], answering: (sandboxId: string) => boolean, { state, read, }?: {
15
+ readonly state?: typeof containerState;
16
+ readonly read?: () => Promise<LocalSandboxes>;
17
+ }) => Promise<void>;
18
+ //# sourceMappingURL=gone-watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gone-watch.d.ts","sourceRoot":"","sources":["../../src/sync/gone-watch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EACH,KAAK,WAAW,EAEhB,KAAK,OAAO,EAOf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,KAAK,cAAc,EAAsB,MAAM,sBAAsB,CAAC;AAU/E,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;CACrB;AAkCD,eAAO,MAAM,eAAe,UAAiB,SAAS,aAAa,MAAM,MAAM,WAAW,QAAO,MAAM,KAAgB,OAAO,CAAC,IAAI,CAqBlI,CAAC;AAIF,eAAO,MAAM,eAAe,UAAiB,SAAS,aAAa,MAAM,KAAG,OAAO,CAAC,IAAI,CASvF,CAAC;AAIF,eAAO,MAAM,YAAY,YAAa,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,QAAQ,GAAG,WAAW,CAAC,KAAG,MAAM,EAMlG,CAAC;AAkBF,eAAO,MAAM,aAAa,UACf,SAAS,YACN,SAAS,OAAO,EAAE,SACrB,WAAW,CAAC,MAAM,CAAC,SACpB,MAAM,OAAO,CAAC,cAAc,CAAC,cACxB,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,KAC1C,OAAO,CAAC,IAAI,CA6Bd,CAAC;AAKF,eAAO,MAAM,eAAe,UACjB,SAAS,YACN,SAAS,OAAO,EAAE,aACjB,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,qBAItC;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,cAAc,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAA;CAAE,KAC7F,OAAO,CAAC,IAAI,CAcd,CAAC"}
@@ -0,0 +1,142 @@
1
+ import { SANDBOX_CONTAINER_PREFIX } from "@intentic/sandbox-run";
2
+ import { moveSandboxToSsh, pairingKey, readState, setFileSyncPausedFor, setIcSlug, setSandboxGone, } from "./config.js";
3
+ import { containerState } from "./endpoint.js";
4
+ import { dockerStep, keptHere, localVerdict, retiresAt } from "./gone.js";
5
+ import { readLocalSandboxes } from "./local-sandboxes.js";
6
+ import { pauseRunningSync, resumeWatcherPausedSync } from "./mutagen.js";
7
+ import { pairingSlugs } from "./swap-pause.js";
8
+ const utcDay = (at) => new Date(at).toISOString().slice(0, 10);
9
+ const pauseFor = async (seams, pairing, reason) => {
10
+ if (pairing.fileSyncPausedFor !== undefined || !pauseRunningSync(seams.mutagen, pairing)) {
11
+ return false;
12
+ }
13
+ await setFileSyncPausedFor(pairingKey(pairing), reason);
14
+ return true;
15
+ };
16
+ const liftPauses = async (seams, pairings, reasons) => {
17
+ let lifted = 0;
18
+ for (const pairing of pairings.filter((held) => held.fileSyncPausedFor !== undefined && reasons.includes(held.fileSyncPausedFor))) {
19
+ resumeWatcherPausedSync(seams.mutagen, pairing);
20
+ await setFileSyncPausedFor(pairingKey(pairing), undefined);
21
+ lifted += 1;
22
+ }
23
+ return lifted;
24
+ };
25
+ const pairingsOf = async (sandboxId) => (await readState()).pairings.filter((pairing) => pairing.sandboxId === sandboxId);
26
+ export const sandboxSaidGone = async (seams, sandboxId, by, now = Date.now()) => {
27
+ const pairings = await pairingsOf(sandboxId);
28
+ const first = pairings[0];
29
+ if (first === undefined) {
30
+ return;
31
+ }
32
+ const marked = pairings.find((pairing) => pairing.goneSince !== undefined);
33
+ if (marked?.goneSince !== undefined) {
34
+ await setSandboxGone(first.sandboxId, { since: marked.goneSince, checkedAt: now, by: marked.goneBy ?? by });
35
+ return;
36
+ }
37
+ await setSandboxGone(first.sandboxId, { since: now, checkedAt: now, by });
38
+ for (const pairing of pairings) {
39
+ await pauseFor(seams, pairing, "gone");
40
+ }
41
+ await seams.releaseForwards(first.sandboxId);
42
+ const folders = pairings.flatMap((pairing) => (pairing.localDir === undefined ? [] : [pairing.localDir]));
43
+ seams.say(`${first.sandboxId}: ${by === "edge" ? "the platform says this sandbox no longer exists" : "this machine's ic no longer holds this sandbox, in its listing or in its trash"}. Paused its file sync, took its ports off localhost, and stopped dialling and reporting to it; it is asked again every hour. Unless it answers, its pairing is retired on ${utcDay(retiresAt(now))}${folders.length === 0 ? "" : `, keeping ${folders.join(", ")} and ${folders.length === 1 ? "its" : "their"} restore points`}.`);
44
+ };
45
+ export const sandboxAnswered = async (seams, sandboxId) => {
46
+ const pairings = await pairingsOf(sandboxId);
47
+ const first = pairings[0];
48
+ if (first === undefined || !pairings.some((pairing) => pairing.goneSince !== undefined)) {
49
+ return;
50
+ }
51
+ await setSandboxGone(first.sandboxId, undefined);
52
+ await liftPauses(seams, pairings, ["gone"]);
53
+ seams.say(`${first.sandboxId}: answers again, so it is not gone after all; its file sync is resumed and its ports come back with this pass.`);
54
+ };
55
+ export const localSlugsOf = (pairing) => [
56
+ ...new Set([
57
+ ...pairingSlugs(pairing.sandboxUrl),
58
+ ...(pairing.icSlug === undefined ? [] : [pairing.icSlug]),
59
+ ...(pairing.container?.startsWith(SANDBOX_CONTAINER_PREFIX) === true ? [pairing.container.slice(SANDBOX_CONTAINER_PREFIX.length)] : []),
60
+ ]),
61
+ ];
62
+ const bySandbox = (pairings) => {
63
+ const grouped = new Map();
64
+ for (const pairing of pairings) {
65
+ grouped.set(pairing.sandboxId, [...(grouped.get(pairing.sandboxId) ?? []), pairing]);
66
+ }
67
+ return grouped;
68
+ };
69
+ export const checkKeptHere = async (seams, pairings, local, read = readLocalSandboxes, answering = () => false) => {
70
+ const asked = [...bySandbox(pairings)].filter(([sandboxId, held]) => local.has(sandboxId) || held.some(keptHere));
71
+ if (asked.length === 0) {
72
+ return;
73
+ }
74
+ const answer = await read();
75
+ if (answer.listed === undefined) {
76
+ return;
77
+ }
78
+ for (const [sandboxId, held] of asked) {
79
+ const slugs = [...new Set(held.flatMap(localSlugsOf))];
80
+ const verdict = localVerdict(slugs, answer.listed, answer.trashed);
81
+ if (verdict === "here") {
82
+ const slug = slugs.find((candidate) => answer.listed?.includes(candidate));
83
+ if (slug !== undefined && held.some((pairing) => pairing.icSlug !== slug)) {
84
+ await setIcSlug(sandboxId, slug);
85
+ }
86
+ if (held.some((pairing) => pairing.goneBy === "local")) {
87
+ await sandboxAnswered(seams, sandboxId);
88
+ }
89
+ }
90
+ else if (verdict === "gone" && held.some(keptHere) && !answering(sandboxId)) {
91
+ await sandboxSaidGone(seams, sandboxId, "local");
92
+ }
93
+ }
94
+ };
95
+ export const checkContainers = async (seams, pairings, answering, { state = containerState, read = readLocalSandboxes, } = {}) => {
96
+ let local;
97
+ const askIc = async () => await (local ??= read());
98
+ for (const [sandboxId, held] of bySandbox(pairings)) {
99
+ const docker = held.find((pairing) => pairing.transport === "docker" && pairing.container !== undefined && pairing.goneSince === undefined);
100
+ if (docker?.container !== undefined) {
101
+ await followContainer(seams, { sandboxId, held, container: docker.container, docker }, await state(docker.container, docker.sandboxUrl), {
102
+ answering: answering(sandboxId),
103
+ askIc,
104
+ });
105
+ }
106
+ }
107
+ };
108
+ const followContainer = async (seams, sandbox, container, { answering, askIc }) => {
109
+ const { sandboxId, held, docker } = sandbox;
110
+ if (container === "serves") {
111
+ if ((await liftPauses(seams, held, ["container-missing", "container-trashed"])) > 0) {
112
+ seams.say(`${sandboxId}: ${sandbox.container} runs as this sandbox again; its file sync is resumed.`);
113
+ }
114
+ return;
115
+ }
116
+ const local = container === "missing" ? await askIc() : undefined;
117
+ const verdict = local === undefined ? "unknown" : localVerdict([...new Set(held.flatMap(localSlugsOf))], local.listed, local.trashed);
118
+ const step = dockerStep({ container, local: verdict, enrolled: docker.syncToken !== undefined, answering });
119
+ if (step === "gone") {
120
+ await sandboxSaidGone(seams, sandboxId, "local");
121
+ }
122
+ else if (step === "ssh") {
123
+ await moveSandboxToSsh(sandboxId);
124
+ seams.say(`${sandboxId}: ${sandbox.container} is no longer on this machine's Docker engine, but the sandbox still answers at ${docker.sandboxUrl}: its file sync moves to ssh, through the sandbox's own address.`);
125
+ }
126
+ else if (step === "pause-missing" || step === "pause-trashed") {
127
+ await pauseForContainer(seams, sandbox, step === "pause-trashed" ? "container-trashed" : "container-missing");
128
+ }
129
+ };
130
+ const pauseForContainer = async (seams, sandbox, reason) => {
131
+ let paused = 0;
132
+ for (const pairing of sandbox.held) {
133
+ paused += (await pauseFor(seams, pairing, reason)) ? 1 : 0;
134
+ }
135
+ if (paused === 0) {
136
+ return;
137
+ }
138
+ seams.say(reason === "container-trashed"
139
+ ? `${sandbox.sandboxId}: was removed from this machine and sits in ic's trash, so its file sync is paused. \`ic sandbox restore\` brings it back, and its file sync with it.`
140
+ : `${sandbox.sandboxId}: ${sandbox.container} is no longer on this machine's Docker engine and the sandbox is not answering, so its file sync is paused until it is back.`);
141
+ };
142
+ //# sourceMappingURL=gone-watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gone-watch.js","sourceRoot":"","sources":["../../src/sync/gone-watch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { Pairing } from "./config.js";
2
+ export declare const GONE_RETIRE_MS: number;
3
+ export declare const GONE_RECHECK_MS: number;
4
+ export declare const answeredGone: (response: Pick<Response, "ok" | "headers">) => boolean;
5
+ export declare class SandboxGoneError extends Error {
6
+ }
7
+ export type GoneStep = "wait" | "recheck" | "retire";
8
+ export declare const goneStep: (pairing: Pick<Pairing, "goneSince" | "goneCheckedAt">, now: number) => GoneStep | undefined;
9
+ export declare const retiresAt: (since: number) => number;
10
+ export type LocalVerdict = "here" | "trashed" | "gone" | "unknown";
11
+ export declare const localVerdict: (slugs: readonly string[], listed: readonly string[] | undefined, trashed: readonly string[] | undefined) => LocalVerdict;
12
+ export declare const keptHere: (pairing: Pick<Pairing, "transport" | "container" | "icSlug">) => boolean;
13
+ export declare const trashedSlugs: (listing: string) => string[];
14
+ export type ContainerState = "serves" | "stopped" | "missing" | "unknown";
15
+ export type DockerStep = "keep" | "ssh" | "pause-missing" | "pause-trashed" | "gone";
16
+ export declare const dockerStep: (args: {
17
+ readonly container: ContainerState;
18
+ readonly local: LocalVerdict;
19
+ readonly enrolled: boolean;
20
+ readonly answering: boolean;
21
+ }) => DockerStep;
22
+ //# sourceMappingURL=gone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gone.d.ts","sourceRoot":"","sources":["../../src/sync/gone.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAuB3C,eAAO,MAAM,cAAc,QAAuB,CAAC;AAInD,eAAO,MAAM,eAAe,QAAc,CAAC;AAI3C,eAAO,MAAM,YAAY,aAAc,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC,KAAG,OAMzE,CAAC;AAGF,qBAAa,gBAAiB,SAAQ,KAAK;CAAG;AAO9C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAErD,eAAO,MAAM,QAAQ,YAAa,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,eAAe,CAAC,OAAO,MAAM,KAAG,QAAQ,GAAG,SAUxG,CAAC;AAGF,eAAO,MAAM,SAAS,UAAW,MAAM,KAAG,MAAgC,CAAC;AAS3E,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnE,eAAO,MAAM,YAAY,UACd,SAAS,MAAM,EAAE,UAChB,SAAS,MAAM,EAAE,GAAG,SAAS,WAC5B,SAAS,MAAM,EAAE,GAAG,SAAS,KACvC,YAWF,CAAC;AAKF,eAAO,MAAM,QAAQ,YAAa,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC,KAAG,OACe,CAAC;AAKxG,eAAO,MAAM,YAAY,YAAa,MAAM,KAAG,MAAM,EAI/C,CAAC;AAcP,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAC1E,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,eAAe,GAAG,eAAe,GAAG,MAAM,CAAC;AAErF,eAAO,MAAM,UAAU,SAAU;IAC7B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC/B,KAAG,UAiBH,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { EDGE_VERDICT_HEADER, edgeVerdictIsFinal, edgeVerdictOf } from "@intentic/sandbox-contract";
2
+ export const GONE_RETIRE_MS = 7 * 24 * 60 * 60_000;
3
+ export const GONE_RECHECK_MS = 60 * 60_000;
4
+ export const answeredGone = (response) => {
5
+ if (response.ok) {
6
+ return false;
7
+ }
8
+ const verdict = edgeVerdictOf(response.headers.get(EDGE_VERDICT_HEADER));
9
+ return verdict !== undefined && edgeVerdictIsFinal(verdict);
10
+ };
11
+ export class SandboxGoneError extends Error {
12
+ }
13
+ export const goneStep = (pairing, now) => {
14
+ if (pairing.goneSince === undefined) {
15
+ return undefined;
16
+ }
17
+ const asked = pairing.goneCheckedAt ?? pairing.goneSince;
18
+ const current = now - asked < GONE_RECHECK_MS;
19
+ if (now - pairing.goneSince >= GONE_RETIRE_MS) {
20
+ return current ? "retire" : "recheck";
21
+ }
22
+ return current ? "wait" : "recheck";
23
+ };
24
+ export const retiresAt = (since) => since + GONE_RETIRE_MS;
25
+ export const localVerdict = (slugs, listed, trashed) => {
26
+ if (listed === undefined) {
27
+ return "unknown";
28
+ }
29
+ if (slugs.some((slug) => listed.includes(slug))) {
30
+ return "here";
31
+ }
32
+ if (trashed === undefined) {
33
+ return "unknown";
34
+ }
35
+ return slugs.some((slug) => trashed.includes(slug)) ? "trashed" : "gone";
36
+ };
37
+ export const keptHere = (pairing) => (pairing.transport === "docker" && pairing.container !== undefined) || pairing.icSlug !== undefined;
38
+ export const trashedSlugs = (listing) => listing.split(/\r?\n/).flatMap((line) => {
39
+ const match = /^removed\s+(\S+)\s+\(/.exec(line.trim());
40
+ return match?.[1] === undefined ? [] : [match[1]];
41
+ });
42
+ export const dockerStep = (args) => {
43
+ if (args.container !== "missing") {
44
+ return "keep";
45
+ }
46
+ switch (args.local) {
47
+ case "here":
48
+ return "keep";
49
+ case "trashed":
50
+ return "pause-trashed";
51
+ case "gone":
52
+ if (!args.answering) {
53
+ return "gone";
54
+ }
55
+ return args.enrolled ? "ssh" : "pause-missing";
56
+ case "unknown":
57
+ return args.enrolled && args.answering ? "ssh" : "pause-missing";
58
+ }
59
+ };
60
+ //# sourceMappingURL=gone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gone.js","sourceRoot":"","sources":["../../src/sync/gone.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface LocalSandboxes {
2
+ readonly listed: readonly string[] | undefined;
3
+ readonly trashed: readonly string[] | undefined;
4
+ }
5
+ export declare const readLocalSandboxes: () => Promise<LocalSandboxes>;
6
+ //# sourceMappingURL=local-sandboxes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-sandboxes.d.ts","sourceRoot":"","sources":["../../src/sync/local-sandboxes.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACnD;AAiBD,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,cAAc,CAWjE,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { execFile } from "node:child_process";
2
+ import { promisify } from "node:util";
3
+ import { homeDir } from "@intentic/local-agent";
4
+ import { icCandidates } from "../device/tools/ic-binary.js";
5
+ import { fleet } from "../device/tools/sandboxes.js";
6
+ import { trashedSlugs } from "./gone.js";
7
+ const exec = promisify(execFile);
8
+ const LIST_TIMEOUT_MS = 60_000;
9
+ const icListingText = async () => {
10
+ for (const binary of icCandidates(process.platform, homeDir())) {
11
+ const answer = await exec(binary, ["sandbox", "list"], { timeout: LIST_TIMEOUT_MS, windowsHide: true, maxBuffer: 4 * 1024 * 1024 }).then((ran) => ({ ran: true, stdout: ran.stdout }), (error) => (error.code === "ENOENT" ? undefined : { ran: false, stdout: "" }));
12
+ if (answer !== undefined) {
13
+ return answer.ran ? answer.stdout : undefined;
14
+ }
15
+ }
16
+ return undefined;
17
+ };
18
+ export const readLocalSandboxes = async () => {
19
+ const listed = await fleet({ current: false }).then((rows) => rows.map((row) => row.slug), () => undefined);
20
+ if (listed === undefined) {
21
+ return { listed: undefined, trashed: undefined };
22
+ }
23
+ const text = await icListingText();
24
+ return { listed, trashed: text === undefined ? undefined : trashedSlugs(text) };
25
+ };
26
+ //# sourceMappingURL=local-sandboxes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-sandboxes.js","sourceRoot":"","sources":["../../src/sync/local-sandboxes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAOzC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAGjC,MAAM,eAAe,GAAG,MAAM,CAAC;AAQ/B,MAAM,aAAa,GAAG,KAAK,IAAiC,EAAE;IAC1D,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAE7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,CACpI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAa,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,EACrD,CAAC,KAA4B,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAc,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAChH,CAAC;QACF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,IAA6B,EAAE;IAElE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAC/C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EACrC,GAAG,EAAE,CAAC,SAAS,CAClB,CAAC;IACF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC;IACnC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AACpF,CAAC,CAAC"}
@@ -31,8 +31,15 @@ export declare const recordedForwards: (pairings: readonly Pick<Pairing, "sandbo
31
31
  export declare const handOver: (holding: Map<number, string>, sandboxId: string, mirrored: readonly MirroredPort[]) => void;
32
32
  export declare const othersHolding: (holding: ReadonlyMap<number, string>, sandboxId: string) => ReadonlyMap<number, string>;
33
33
  export declare const busyLastPass: (pairing: Pick<Pairing, "skippedPorts">) => ReadonlySet<number>;
34
+ export declare const reportCarriers: <T extends {
35
+ readonly pairing: Pick<Pairing, "sandboxId" | "syncToken" | "goneSince">;
36
+ }>(dialed: readonly T[], unsupported: ReadonlySet<string>) => T[];
34
37
  export declare const unpreparedSetups: (pairings: readonly Pairing[], prepared: ReadonlySet<string>) => Pairing[];
35
38
  export declare const markPrepared: (prepared: Set<string>, pairing: Pairing) => void;
39
+ export declare const readyToPrepare: (setups: readonly Pairing[], firstCopyAhead: (pairing: Pairing) => boolean, announce: (pairing: Pairing) => Promise<boolean>) => Promise<Pairing[]>;
40
+ export declare const pollingPairings: (pairings: readonly Pick<Pairing, "sandboxId" | "key">[]) => ReadonlySet<string>;
41
+ export declare const WATCHER_STALL_MS: number;
42
+ export declare const watcherStalled: (progress: number, now: number) => boolean;
36
43
  export declare const runMirrorWatch: (log: Log) => Promise<void>;
37
44
  export declare const retirePairingMirror: (mutagen: string, sandboxId: string) => Promise<number>;
38
45
  export declare const retireMirroredPort: (mutagen: string, sandboxId: string, port: number) => Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"mirror.d.ts","sourceRoot":"","sources":["../../src/sync/mirror.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mirror.d.ts","sourceRoot":"","sources":["../../src/sync/mirror.ts"],"names":[],"mappings":"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"}