@intentic/machine 1.345.0 → 1.347.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 (113) hide show
  1. package/README.md +100 -135
  2. package/dist/device/commands.d.ts +6 -1
  3. package/dist/device/commands.d.ts.map +1 -1
  4. package/dist/device/commands.js +19 -7
  5. package/dist/device/commands.js.map +1 -1
  6. package/dist/device/grant.d.ts +2 -1
  7. package/dist/device/grant.d.ts.map +1 -1
  8. package/dist/device/router.d.ts +2 -1
  9. package/dist/device/router.d.ts.map +1 -1
  10. package/dist/device/sandbox-rounds/keeper.js +1 -1
  11. package/dist/device/sandbox-rounds/keeper.js.map +1 -1
  12. package/dist/device/tools/agent.d.ts.map +1 -1
  13. package/dist/device/tools/agent.js +7 -7
  14. package/dist/device/tools/agent.js.map +1 -1
  15. package/dist/device/tools/ic-binary.d.ts +1 -0
  16. package/dist/device/tools/ic-binary.d.ts.map +1 -1
  17. package/dist/device/tools/ic-binary.js +29 -1
  18. package/dist/device/tools/ic-binary.js.map +1 -1
  19. package/dist/device/tools/os/settings.js +3 -3
  20. package/dist/device/tools/os/settings.js.map +1 -1
  21. package/dist/device/tools/sandboxes.d.ts +1 -0
  22. package/dist/device/tools/sandboxes.d.ts.map +1 -1
  23. package/dist/device/tools/sandboxes.js +7 -2
  24. package/dist/device/tools/sandboxes.js.map +1 -1
  25. package/dist/install.d.ts +9 -1
  26. package/dist/install.d.ts.map +1 -1
  27. package/dist/install.js +28 -4
  28. package/dist/install.js.map +1 -1
  29. package/dist/resident/resident.d.ts.map +1 -1
  30. package/dist/resident/resident.js +1 -2
  31. package/dist/resident/resident.js.map +1 -1
  32. package/dist/status.d.ts.map +1 -1
  33. package/dist/status.js +1 -8
  34. package/dist/status.js.map +1 -1
  35. package/dist/sync/commands.d.ts +1 -9
  36. package/dist/sync/commands.d.ts.map +1 -1
  37. package/dist/sync/commands.js +48 -89
  38. package/dist/sync/commands.js.map +1 -1
  39. package/dist/sync/config.d.ts +21 -25
  40. package/dist/sync/config.d.ts.map +1 -1
  41. package/dist/sync/config.js +76 -35
  42. package/dist/sync/config.js.map +1 -1
  43. package/dist/sync/endpoint.d.ts +1 -1
  44. package/dist/sync/endpoint.d.ts.map +1 -1
  45. package/dist/sync/endpoint.js +2 -3
  46. package/dist/sync/endpoint.js.map +1 -1
  47. package/dist/sync/folders.d.ts.map +1 -1
  48. package/dist/sync/folders.js.map +1 -1
  49. package/dist/sync/gone-watch.d.ts +0 -1
  50. package/dist/sync/gone-watch.d.ts.map +1 -1
  51. package/dist/sync/gone-watch.js +16 -53
  52. package/dist/sync/gone-watch.js.map +1 -1
  53. package/dist/sync/holds.d.ts +30 -0
  54. package/dist/sync/holds.d.ts.map +1 -0
  55. package/dist/sync/holds.js +117 -0
  56. package/dist/sync/holds.js.map +1 -0
  57. package/dist/sync/low-disk.d.ts +2 -9
  58. package/dist/sync/low-disk.d.ts.map +1 -1
  59. package/dist/sync/low-disk.js +10 -38
  60. package/dist/sync/low-disk.js.map +1 -1
  61. package/dist/sync/mirror.d.ts +1 -4
  62. package/dist/sync/mirror.d.ts.map +1 -1
  63. package/dist/sync/mirror.js +57 -161
  64. package/dist/sync/mirror.js.map +1 -1
  65. package/dist/sync/mutagen-env.d.ts +1 -3
  66. package/dist/sync/mutagen-env.d.ts.map +1 -1
  67. package/dist/sync/mutagen-env.js +2 -12
  68. package/dist/sync/mutagen-env.js.map +1 -1
  69. package/dist/sync/mutagen-move.d.ts +3 -1
  70. package/dist/sync/mutagen-move.d.ts.map +1 -1
  71. package/dist/sync/mutagen-move.js +30 -22
  72. package/dist/sync/mutagen-move.js.map +1 -1
  73. package/dist/sync/mutagen.d.ts +4 -9
  74. package/dist/sync/mutagen.d.ts.map +1 -1
  75. package/dist/sync/mutagen.js +11 -71
  76. package/dist/sync/mutagen.js.map +1 -1
  77. package/dist/sync/project/project-commands.d.ts +0 -3
  78. package/dist/sync/project/project-commands.d.ts.map +1 -1
  79. package/dist/sync/project/project-commands.js +3 -2
  80. package/dist/sync/project/project-commands.js.map +1 -1
  81. package/dist/sync/project/project-delivery.d.ts.map +1 -1
  82. package/dist/sync/project/project-delivery.js +3 -3
  83. package/dist/sync/project/project-delivery.js.map +1 -1
  84. package/dist/sync/project/project-transfer.d.ts +4 -0
  85. package/dist/sync/project/project-transfer.d.ts.map +1 -1
  86. package/dist/sync/project/project-transfer.js +9 -2
  87. package/dist/sync/project/project-transfer.js.map +1 -1
  88. package/dist/sync/report.d.ts.map +1 -1
  89. package/dist/sync/report.js +16 -10
  90. package/dist/sync/report.js.map +1 -1
  91. package/dist/sync/retire.d.ts.map +1 -1
  92. package/dist/sync/retire.js +1 -2
  93. package/dist/sync/retire.js.map +1 -1
  94. package/dist/sync/tunnel.d.ts +4 -3
  95. package/dist/sync/tunnel.d.ts.map +1 -1
  96. package/dist/sync/tunnel.js +107 -42
  97. package/dist/sync/tunnel.js.map +1 -1
  98. package/dist/sync/uninstall.d.ts.map +1 -1
  99. package/dist/sync/uninstall.js +1 -1
  100. package/dist/sync/uninstall.js.map +1 -1
  101. package/dist/sync/wake.d.ts +3 -0
  102. package/dist/sync/wake.d.ts.map +1 -0
  103. package/dist/sync/wake.js +43 -0
  104. package/dist/sync/wake.js.map +1 -0
  105. package/package.json +9 -9
  106. package/dist/sync/attach-commands.d.ts +0 -39
  107. package/dist/sync/attach-commands.d.ts.map +0 -1
  108. package/dist/sync/attach-commands.js +0 -164
  109. package/dist/sync/attach-commands.js.map +0 -1
  110. package/dist/sync/swap-pause.d.ts +0 -10
  111. package/dist/sync/swap-pause.d.ts.map +0 -1
  112. package/dist/sync/swap-pause.js +0 -29
  113. package/dist/sync/swap-pause.js.map +0 -1
@@ -0,0 +1,117 @@
1
+ import { join } from "node:path";
2
+ import { pathExists, writeFileAtomic } from "@intentic/base/fs";
3
+ import { baseDir } from "../config.js";
4
+ import { pairingKey, pairingSlugs, updateState } from "./config.js";
5
+ import { pauseSessions, readAllSessions, resumeSessions, syncSessionNames } from "./mutagen.js";
6
+ import { operationRunning } from "./project/project-transfer.js";
7
+ export const UNREACHABLE_HOLD_MS = 60 * 60_000;
8
+ export const syncHolds = (pairing, now) => {
9
+ if (pairing.mode !== "sync") {
10
+ return [];
11
+ }
12
+ const held = [
13
+ ["owner", pairing.ownerPausedAt !== undefined],
14
+ ["gone", pairing.goneSince !== undefined],
15
+ ["container-missing", pairing.containerAway === "missing"],
16
+ ["container-trashed", pairing.containerAway === "trashed"],
17
+ ["swap", pairing.swapSince !== undefined],
18
+ ["unreachable", pairing.unreachableSince !== undefined && now - pairing.unreachableSince >= UNREACHABLE_HOLD_MS],
19
+ ["low-disk", pairing.lowDisk !== undefined],
20
+ ["transfer", pairing.transferSince !== undefined],
21
+ ];
22
+ return held.flatMap(([hold, holds]) => (holds ? [hold] : []));
23
+ };
24
+ export const syncHeld = (pairing, now) => syncHolds(pairing, now).length > 0;
25
+ export const HOLD_WORDS = {
26
+ owner: "you paused it",
27
+ gone: "its sandbox is said to be gone",
28
+ "container-missing": "its container is not on this machine's Docker engine",
29
+ "container-trashed": "its sandbox sits in ic's trash",
30
+ swap: "its sandbox is being swapped on this machine",
31
+ unreachable: "its sandbox has not answered for an hour",
32
+ "low-disk": "the drive under its folder is nearly full",
33
+ transfer: "a bring-back, restore or delivery is writing into its folder",
34
+ };
35
+ const disagreeing = (pairing, live, now) => {
36
+ const held = syncHeld(pairing, now);
37
+ const own = new Set(syncSessionNames(pairing));
38
+ const names = live.flatMap((session) => (session.name !== undefined && own.has(session.name) && (session.paused === true) !== held ? [session.name] : []));
39
+ return { held, names: [...new Set(names)] };
40
+ };
41
+ export const holdSessions = async (mutagen, pairings, say, now = Date.now()) => {
42
+ const live = readAllSessions(mutagen);
43
+ if (live === undefined) {
44
+ return new Set();
45
+ }
46
+ const adopted = await letGoOfDeadTransfers(await adoptOwnerPauses(pairings, live, now));
47
+ const behind = new Set();
48
+ for (const pairing of adopted) {
49
+ const { held, names } = disagreeing(pairing, live, now);
50
+ if (names.length === 0) {
51
+ continue;
52
+ }
53
+ const took = held ? pauseSessions(mutagen, names) : await resumeSessions(mutagen, names);
54
+ if (!took) {
55
+ behind.add(pairingKey(pairing));
56
+ say(` ${pairingKey(pairing)}: Mutagen did not take the ${held ? "pause" : "resume"} of its file sync; trying again next pass.`);
57
+ }
58
+ }
59
+ return behind;
60
+ };
61
+ const letGoOfDeadTransfers = async (pairings) => {
62
+ const dead = new Map();
63
+ for (const pairing of pairings) {
64
+ if (pairing.transferSince !== undefined && !(await operationRunning(baseDir, pairingKey(pairing)))) {
65
+ dead.set(pairingKey(pairing), pairing.transferSince);
66
+ }
67
+ }
68
+ if (dead.size === 0) {
69
+ return pairings;
70
+ }
71
+ const lifted = (held) => held.transferSince !== undefined && dead.get(pairingKey(held)) === held.transferSince;
72
+ await updateState((state) => ({ pairings: state.pairings.map((held) => (lifted(held) ? { ...held, transferSince: undefined } : held)) }));
73
+ return pairings.map((held) => (lifted(held) ? { ...held, transferSince: undefined } : held));
74
+ };
75
+ const adoptedPath = join(baseDir, "sync-owner-pauses-adopted");
76
+ export const markOwnerPausesAdopted = async () => await writeFileAtomic(adoptedPath, `${new Date().toISOString()}\n`);
77
+ export const adoptOwnerPauses = async (pairings, live, now) => {
78
+ if (await pathExists(adoptedPath)) {
79
+ return pairings;
80
+ }
81
+ const owned = new Set(pairings.filter((pairing) => disagreeing(pairing, live, now).names.length > 0 && !syncHeld(pairing, now)).map(pairingKey));
82
+ await declareOwnerPauses(owned, now);
83
+ await markOwnerPausesAdopted();
84
+ return pairings.map((pairing) => (owned.has(pairingKey(pairing)) ? { ...pairing, ownerPausedAt: now } : pairing));
85
+ };
86
+ export const declareOwnerPauses = async (keys, now) => {
87
+ if (keys.size > 0) {
88
+ await updateState((state) => ({
89
+ pairings: state.pairings.map((held) => (keys.has(pairingKey(held)) && held.ownerPausedAt === undefined ? { ...held, ownerPausedAt: now } : held)),
90
+ }));
91
+ }
92
+ };
93
+ export const PROBATION_HOLD_MS = 15 * 60_000;
94
+ export const recordOf = (pairing, records) => {
95
+ const slugs = pairingSlugs(pairing.sandboxUrl);
96
+ return records.find((record) => slugs.includes(record.slug));
97
+ };
98
+ export const swapBegan = (record, since, now) => record?.phase === undefined ? since : (record.at ?? since ?? now);
99
+ export const holdsSync = (record, since, now, answering) => {
100
+ if (record?.phase === "cutover") {
101
+ return true;
102
+ }
103
+ const began = swapBegan(record, since, now);
104
+ if (began === undefined) {
105
+ return false;
106
+ }
107
+ return now - began < PROBATION_HOLD_MS || (record?.phase !== undefined && !answering);
108
+ };
109
+ export const swapStep = (pairing, holds, began) => {
110
+ if (!holds) {
111
+ return pairing.swapSince === undefined ? undefined : "settled";
112
+ }
113
+ return pairing.swapSince === began ? undefined : "began";
114
+ };
115
+ export const RELEASE_FORWARDS_MS = 10 * 60_000;
116
+ export const shouldReleaseForwards = (unreachableForMs, mirrored) => unreachableForMs >= RELEASE_FORWARDS_MS && mirrored > 0;
117
+ //# sourceMappingURL=holds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"holds.js","sourceRoot":"","sources":["../../src/sync/holds.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Log } from "@intentic/local-agent";
2
- import { type LowDiskPause, type Pairing } from "./config.js";
2
+ import { type LowDiskReading, type Pairing } from "./config.js";
3
3
  export declare const FLOOR_MIN_BYTES: number;
4
4
  export declare const FLOOR_MAX_BYTES: number;
5
5
  export declare const RESUME_MARGIN_BYTES: number;
@@ -14,12 +14,5 @@ export declare const readDisk: (dir: string) => Promise<DiskReading | undefined>
14
14
  export declare const writesToDisk: (pairing: Pairing) => pairing is Pairing & {
15
15
  readonly localDir: string;
16
16
  };
17
- export interface LowDiskSeams {
18
- readonly read: (dir: string) => Promise<DiskReading | undefined>;
19
- readonly pause: (pairing: Pairing) => readonly string[] | undefined;
20
- readonly resume: (names: readonly string[]) => Promise<boolean>;
21
- readonly resumeAll: (pairing: Pairing) => Promise<boolean>;
22
- readonly record: (key: string, pause: LowDiskPause | undefined) => Promise<void>;
23
- }
24
- export declare const guardDisks: (mutagen: string, pairings: readonly Pairing[], tick: number, say: Log, seams?: LowDiskSeams) => Promise<ReadonlySet<string>>;
17
+ export declare const guardDisks: (pairings: readonly Pairing[], say: Log, read?: (dir: string) => Promise<DiskReading | undefined>, record?: (key: string, reading: LowDiskReading | undefined) => Promise<void>) => Promise<ReadonlySet<string>>;
25
18
  //# sourceMappingURL=low-disk.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"low-disk.d.ts","sourceRoot":"","sources":["../../src/sync/low-disk.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAoB,KAAK,YAAY,EAAE,KAAK,OAAO,EAAoD,MAAM,aAAa,CAAC;AAYlI,eAAO,MAAM,eAAe,QAAU,CAAC;AACvC,eAAO,MAAM,eAAe,QAAW,CAAC;AACxC,eAAO,MAAM,mBAAmB,QAAU,CAAC;AAM3C,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,SAAS,eAAgB,MAAM,KAAG,MAAwF,CAAC;AAExI,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAK/D,eAAO,MAAM,WAAW,YAAa,WAAW,GAAG,SAAS,UAAU,OAAO,KAAG,WAS/E,CAAC;AAIF,eAAO,MAAM,QAAQ,QAAe,MAAM,KAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAY3E,CAAC;AAIF,eAAO,MAAM,YAAY,YAAa,OAAO,KAAG,OAAO,IAAI,OAAO,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAIlB,CAAC;AAU/E,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAEjE,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAEpE,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhE,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpF;AAyDD,eAAO,MAAM,UAAU,YACV,MAAM,YACL,SAAS,OAAO,EAAE,QACtB,MAAM,OACP,GAAG,UACD,YAAY,KACpB,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAS7B,CAAC"}
1
+ {"version":3,"file":"low-disk.d.ts","sourceRoot":"","sources":["../../src/sync/low-disk.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAoB,KAAK,cAAc,EAAE,KAAK,OAAO,EAA4C,MAAM,aAAa,CAAC;AAW5H,eAAO,MAAM,eAAe,QAAU,CAAC;AACvC,eAAO,MAAM,eAAe,QAAW,CAAC;AACxC,eAAO,MAAM,mBAAmB,QAAU,CAAC;AAE3C,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,SAAS,eAAgB,MAAM,KAAG,MAAwF,CAAC;AAExI,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAK/D,eAAO,MAAM,WAAW,YAAa,WAAW,GAAG,SAAS,UAAU,OAAO,KAAG,WAS/E,CAAC;AAIF,eAAO,MAAM,QAAQ,QAAe,MAAM,KAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAY3E,CAAC;AAIF,eAAO,MAAM,YAAY,YAAa,OAAO,KAAG,OAAO,IAAI,OAAO,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAGlB,CAAC;AA+B/E,eAAO,MAAM,UAAU,aACT,SAAS,OAAO,EAAE,OACvB,GAAG,SACF,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,WAC/C,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,KAC5E,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAS7B,CAAC"}
@@ -1,14 +1,12 @@
1
1
  import { statfs } from "node:fs/promises";
2
2
  import { dirname } from "node:path";
3
3
  import { errnoCode } from "@intentic/base/errors";
4
- import { isProjectPairing, pairingKey, projectDirection, setFileSyncLowDisk } from "./config.js";
5
- import { pauseRunningSessions, resumeNamedSessions, resumeWatcherPausedSync } from "./mutagen.js";
4
+ import { isProjectPairing, pairingKey, projectDirection, setLowDisk } from "./config.js";
6
5
  const GIB = 1024 ** 3;
7
6
  const FLOOR_SHARE = 0.02;
8
7
  export const FLOOR_MIN_BYTES = 5 * GIB;
9
8
  export const FLOOR_MAX_BYTES = 20 * GIB;
10
9
  export const RESUME_MARGIN_BYTES = 2 * GIB;
11
- const REASSERT_EVERY_TICKS = 12;
12
10
  export const diskFloor = (totalBytes) => Math.min(Math.max(totalBytes * FLOOR_SHARE, FLOOR_MIN_BYTES), FLOOR_MAX_BYTES);
13
11
  export const lowDiskStep = (reading, paused) => {
14
12
  if (reading === undefined) {
@@ -35,54 +33,28 @@ export const readDisk = async (dir) => {
35
33
  };
36
34
  export const writesToDisk = (pairing) => pairing.mode === "sync" &&
37
35
  pairing.localDir !== undefined &&
38
- pairing.projectsHost !== true &&
39
36
  !(isProjectPairing(pairing) && projectDirection(pairing) === "to-sandbox");
40
- const otherwiseHeld = (pairing) => pairing.fileSyncAutoPaused === true || pairing.fileSyncSwapPaused === true || pairing.fileSyncPausedFor !== undefined;
41
37
  const gigabytes = (bytes) => `${(bytes / GIB).toFixed(1)} GB`;
42
- const mutagenSeams = (mutagen) => ({
43
- read: readDisk,
44
- pause: (pairing) => pauseRunningSessions(mutagen, pairing),
45
- resume: async (names) => await resumeNamedSessions(mutagen, names),
46
- resumeAll: async (pairing) => await resumeWatcherPausedSync(mutagen, pairing),
47
- record: setFileSyncLowDisk,
48
- });
49
- const guardOne = async (seams, pairing, tick, say) => {
38
+ const guardOne = async (read, pairing, say, record) => {
50
39
  const key = pairingKey(pairing);
51
- const reading = await seams.read(pairing.localDir);
52
- const held = pairing.fileSyncLowDisk;
53
- const step = lowDiskStep(reading, held !== undefined);
40
+ const reading = await read(pairing.localDir);
41
+ const step = lowDiskStep(reading, pairing.lowDisk !== undefined);
54
42
  if (step === "pause" && reading !== undefined) {
55
- const paused = seams.pause(pairing) ?? [];
56
- await seams.record(key, { since: Date.now(), ...reading, paused });
57
- say(` ${key}: the drive holding ${pairing.localDir} has ${gigabytes(reading.freeBytes)} free, under its floor of ${gigabytes(diskFloor(reading.totalBytes))}; paused file sync and the git bridge until it has room again.`);
43
+ await record(key, { since: Date.now(), ...reading });
44
+ say(` ${key}: the drive holding ${pairing.localDir} has ${gigabytes(reading.freeBytes)} free, under its floor of ${gigabytes(diskFloor(reading.totalBytes))}; file sync and the git bridge hold still until it has room again.`);
58
45
  return true;
59
46
  }
60
47
  if (step === "resume" && reading !== undefined) {
61
- const lifted = { ...pairing, fileSyncLowDisk: undefined };
62
- const resumed = otherwiseHeld(lifted) || (held?.paused === undefined ? await seams.resumeAll(lifted) : await seams.resume(held.paused));
63
- if (!resumed) {
64
- say(` ${key}: the drive holding ${pairing.localDir} has room again, but Mutagen did not take the resume of its file sync; trying again.`);
65
- return true;
66
- }
67
- await seams.record(key, undefined);
48
+ await record(key, undefined);
68
49
  say(` ${key}: the drive holding ${pairing.localDir} has ${gigabytes(reading.freeBytes)} free again; file sync and the git bridge carry on.`);
69
50
  return false;
70
51
  }
71
- if (step === "hold") {
72
- if (tick % REASSERT_EVERY_TICKS === 0 && held !== undefined) {
73
- const added = (seams.pause(pairing) ?? []).filter((name) => held.paused?.includes(name) !== true);
74
- if (added.length > 0 && held.paused !== undefined) {
75
- await seams.record(key, { ...held, paused: [...held.paused, ...added] });
76
- }
77
- }
78
- return true;
79
- }
80
- return false;
52
+ return step === "hold";
81
53
  };
82
- export const guardDisks = async (mutagen, pairings, tick, say, seams = mutagenSeams(mutagen)) => {
54
+ export const guardDisks = async (pairings, say, read = readDisk, record = setLowDisk) => {
83
55
  const held = new Set();
84
56
  for (const pairing of pairings.filter(writesToDisk)) {
85
- if (await guardOne(seams, pairing, tick, say)) {
57
+ if (await guardOne(read, pairing, say, record)) {
86
58
  held.add(pairingKey(pairing));
87
59
  }
88
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"low-disk.js","sourceRoot":"","sources":["../../src/sync/low-disk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAmC,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAClI,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AASlG,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC;AACtB,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,GAAG,GAAG,CAAC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,GAAG,CAAC;AAI3C,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAOhC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,UAAkB,EAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,WAAW,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC,CAAC;AAOxI,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAgC,EAAE,MAAe,EAAe,EAAE;IAC1F,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACpC,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACxD,CAAC;IACD,OAAO,OAAO,CAAC,SAAS,IAAI,KAAK,GAAG,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AAChF,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,GAAW,EAAoC,EAAE;IAC5E,KAAK,IAAI,EAAE,GAAG,GAAG,GAAI,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/B,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;gBACtD,OAAO,SAAS,CAAC;YACrB,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAsD,EAAE,CACjG,OAAO,CAAC,IAAI,KAAK,MAAM;IACvB,OAAO,CAAC,QAAQ,KAAK,SAAS;IAC9B,OAAO,CAAC,YAAY,KAAK,IAAI;IAC7B,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,KAAK,YAAY,CAAC,CAAC;AAG/E,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAW,EAAE,CAChD,OAAO,CAAC,kBAAkB,KAAK,IAAI,IAAI,OAAO,CAAC,kBAAkB,KAAK,IAAI,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS,CAAC;AAE1H,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAe9E,MAAM,YAAY,GAAG,CAAC,OAAe,EAAgB,EAAE,CAAC,CAAC;IACrD,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC;IAClE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC;IAC7E,MAAM,EAAE,kBAAkB;CAC7B,CAAC,CAAC;AAKH,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAmB,EAAE,OAAgD,EAAE,IAAY,EAAE,GAAQ,EAAoB,EAAE;IACvI,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC;IACrC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC;IACtD,IAAI,IAAI,KAAK,OAAO,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAE5C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACnE,GAAG,CACC,KAAK,GAAG,uBAAuB,OAAO,CAAC,QAAQ,QAAQ,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,6BAA6B,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,gEAAgE,CAC3N,CAAC;QACF,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;QAI1D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACxI,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,GAAG,uBAAuB,OAAO,CAAC,QAAQ,sFAAsF,CAAC,CAAC;YAC3I,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACnC,GAAG,CAAC,KAAK,GAAG,uBAAuB,OAAO,CAAC,QAAQ,QAAQ,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,qDAAqD,CAAC,CAAC;QAC9I,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAGlB,IAAI,IAAI,GAAG,oBAAoB,KAAK,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAClG,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChD,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7E,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC3B,OAAe,EACf,QAA4B,EAC5B,IAAY,EACZ,GAAQ,EACR,KAAK,GAAiB,YAAY,CAAC,OAAO,CAAC,EACf,EAAE;IAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAElD,IAAI,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC"}
1
+ {"version":3,"file":"low-disk.js","sourceRoot":"","sources":["../../src/sync/low-disk.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@ import { type PortSummary } from "@intentic/sandbox-contract/schemas/ports";
3
3
  import { type MirroredPort, type Pairing, type SkippedPort } from "./config.js";
4
4
  import type { SwapRecord } from "../device/sandbox-rounds/swap-records.js";
5
5
  import { type PublishedPorts } from "./docker-ports.js";
6
- export declare const shouldAutoPauseFileSync: (unreachableForMs: number) => boolean;
7
6
  export declare const pollBackoffMs: (unreachableForMs: number) => number;
8
7
  interface Unreachable {
9
8
  readonly since: number;
@@ -37,9 +36,7 @@ export declare const reportCarriers: <T extends {
37
36
  }>(dialed: readonly T[], unsupported: ReadonlySet<string>) => T[];
38
37
  export declare const unpreparedSetups: (pairings: readonly Pairing[], prepared: ReadonlySet<string>) => Pairing[];
39
38
  export declare const markPrepared: (prepared: Set<string>, pairing: Pairing) => void;
40
- export declare const readyToPrepare: (setups: readonly Pairing[], firstCopyAhead: (pairing: Pairing) => boolean, announce: (pairing: Pairing) => Promise<boolean>) => Promise<Pairing[]>;
41
- export declare const holdSyncDuringSwaps: (mutagen: string, pairings: readonly Pairing[], unreachable: ReadonlyMap<string, Unreachable>, say: Log, read?: () => Promise<readonly SwapRecord[]>) => Promise<ReadonlySet<string>>;
42
- export declare const pollingPairings: (pairings: readonly Pick<Pairing, "sandboxId" | "key">[]) => ReadonlySet<string>;
39
+ export declare const holdSyncDuringSwaps: (pairings: readonly Pairing[], unreachable: ReadonlyMap<string, Unreachable>, say: Log, read?: () => Promise<readonly SwapRecord[]>, record?: (key: string, since: number | undefined) => Promise<void>) => Promise<ReadonlySet<string>>;
43
40
  export declare const WATCHER_STALL_MS: number;
44
41
  export declare const watcherStalled: (progress: number, now: number) => boolean;
45
42
  export declare const runMirrorWatch: (log: Log) => Promise<void>;
@@ -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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"}