@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.
- package/README.md +100 -135
- package/dist/device/commands.d.ts +6 -1
- package/dist/device/commands.d.ts.map +1 -1
- package/dist/device/commands.js +19 -7
- package/dist/device/commands.js.map +1 -1
- package/dist/device/grant.d.ts +2 -1
- package/dist/device/grant.d.ts.map +1 -1
- package/dist/device/router.d.ts +2 -1
- package/dist/device/router.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/keeper.js +1 -1
- package/dist/device/sandbox-rounds/keeper.js.map +1 -1
- package/dist/device/tools/agent.d.ts.map +1 -1
- package/dist/device/tools/agent.js +7 -7
- package/dist/device/tools/agent.js.map +1 -1
- package/dist/device/tools/ic-binary.d.ts +1 -0
- package/dist/device/tools/ic-binary.d.ts.map +1 -1
- package/dist/device/tools/ic-binary.js +29 -1
- package/dist/device/tools/ic-binary.js.map +1 -1
- package/dist/device/tools/os/settings.js +3 -3
- package/dist/device/tools/os/settings.js.map +1 -1
- package/dist/device/tools/sandboxes.d.ts +1 -0
- package/dist/device/tools/sandboxes.d.ts.map +1 -1
- package/dist/device/tools/sandboxes.js +7 -2
- package/dist/device/tools/sandboxes.js.map +1 -1
- package/dist/install.d.ts +9 -1
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +28 -4
- package/dist/install.js.map +1 -1
- package/dist/resident/resident.d.ts.map +1 -1
- package/dist/resident/resident.js +1 -2
- package/dist/resident/resident.js.map +1 -1
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +1 -8
- package/dist/status.js.map +1 -1
- package/dist/sync/commands.d.ts +1 -9
- package/dist/sync/commands.d.ts.map +1 -1
- package/dist/sync/commands.js +48 -89
- package/dist/sync/commands.js.map +1 -1
- package/dist/sync/config.d.ts +21 -25
- package/dist/sync/config.d.ts.map +1 -1
- package/dist/sync/config.js +76 -35
- package/dist/sync/config.js.map +1 -1
- package/dist/sync/endpoint.d.ts +1 -1
- package/dist/sync/endpoint.d.ts.map +1 -1
- package/dist/sync/endpoint.js +2 -3
- package/dist/sync/endpoint.js.map +1 -1
- package/dist/sync/folders.d.ts.map +1 -1
- package/dist/sync/folders.js.map +1 -1
- package/dist/sync/gone-watch.d.ts +0 -1
- package/dist/sync/gone-watch.d.ts.map +1 -1
- package/dist/sync/gone-watch.js +16 -53
- package/dist/sync/gone-watch.js.map +1 -1
- package/dist/sync/holds.d.ts +30 -0
- package/dist/sync/holds.d.ts.map +1 -0
- package/dist/sync/holds.js +117 -0
- package/dist/sync/holds.js.map +1 -0
- package/dist/sync/low-disk.d.ts +2 -9
- package/dist/sync/low-disk.d.ts.map +1 -1
- package/dist/sync/low-disk.js +10 -38
- package/dist/sync/low-disk.js.map +1 -1
- package/dist/sync/mirror.d.ts +1 -4
- package/dist/sync/mirror.d.ts.map +1 -1
- package/dist/sync/mirror.js +57 -161
- package/dist/sync/mirror.js.map +1 -1
- package/dist/sync/mutagen-env.d.ts +1 -3
- package/dist/sync/mutagen-env.d.ts.map +1 -1
- package/dist/sync/mutagen-env.js +2 -12
- package/dist/sync/mutagen-env.js.map +1 -1
- package/dist/sync/mutagen-move.d.ts +3 -1
- package/dist/sync/mutagen-move.d.ts.map +1 -1
- package/dist/sync/mutagen-move.js +30 -22
- package/dist/sync/mutagen-move.js.map +1 -1
- package/dist/sync/mutagen.d.ts +4 -9
- package/dist/sync/mutagen.d.ts.map +1 -1
- package/dist/sync/mutagen.js +11 -71
- package/dist/sync/mutagen.js.map +1 -1
- package/dist/sync/project/project-commands.d.ts +0 -3
- package/dist/sync/project/project-commands.d.ts.map +1 -1
- package/dist/sync/project/project-commands.js +3 -2
- package/dist/sync/project/project-commands.js.map +1 -1
- package/dist/sync/project/project-delivery.d.ts.map +1 -1
- package/dist/sync/project/project-delivery.js +3 -3
- package/dist/sync/project/project-delivery.js.map +1 -1
- package/dist/sync/project/project-transfer.d.ts +4 -0
- package/dist/sync/project/project-transfer.d.ts.map +1 -1
- package/dist/sync/project/project-transfer.js +9 -2
- package/dist/sync/project/project-transfer.js.map +1 -1
- package/dist/sync/report.d.ts.map +1 -1
- package/dist/sync/report.js +16 -10
- package/dist/sync/report.js.map +1 -1
- package/dist/sync/retire.d.ts.map +1 -1
- package/dist/sync/retire.js +1 -2
- package/dist/sync/retire.js.map +1 -1
- package/dist/sync/tunnel.d.ts +4 -3
- package/dist/sync/tunnel.d.ts.map +1 -1
- package/dist/sync/tunnel.js +107 -42
- package/dist/sync/tunnel.js.map +1 -1
- package/dist/sync/uninstall.d.ts.map +1 -1
- package/dist/sync/uninstall.js +1 -1
- package/dist/sync/uninstall.js.map +1 -1
- package/dist/sync/wake.d.ts +3 -0
- package/dist/sync/wake.d.ts.map +1 -0
- package/dist/sync/wake.js +43 -0
- package/dist/sync/wake.js.map +1 -0
- package/package.json +9 -9
- package/dist/sync/attach-commands.d.ts +0 -39
- package/dist/sync/attach-commands.d.ts.map +0 -1
- package/dist/sync/attach-commands.js +0 -164
- package/dist/sync/attach-commands.js.map +0 -1
- package/dist/sync/swap-pause.d.ts +0 -10
- package/dist/sync/swap-pause.d.ts.map +0 -1
- package/dist/sync/swap-pause.js +0 -29
- 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":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIhE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAgB,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAoB,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClH,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAkBjE,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,MAAM,CAAC;AAI/C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,GAAW,EAAoB,EAAE;IACzE,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAgC;QACtC,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC;QAC9C,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC;QACzC,CAAC,mBAAmB,EAAE,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC;QAC1D,CAAC,mBAAmB,EAAE,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC;QAC1D,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC;QACzC,CAAC,aAAa,EAAE,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,GAAG,GAAG,OAAO,CAAC,gBAAgB,IAAI,mBAAmB,CAAC;QAChH,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC;QAC3C,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC;KACpD,CAAC;IACF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAgB,EAAE,GAAW,EAAW,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAGvG,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,gCAAgC;IACtC,mBAAmB,EAAE,sDAAsD;IAC3E,mBAAmB,EAAE,gCAAgC;IACrD,IAAI,EAAE,8CAA8C;IACpD,WAAW,EAAE,0CAA0C;IACvD,UAAU,EAAE,2CAA2C;IACvD,QAAQ,EAAE,8DAA8D;CACzB,CAAC;AAQpD,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAE,IAA4B,EAAE,GAAW,EAAgB,EAAE;IAC9F,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3J,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,OAAe,EAAE,QAA4B,EAAE,GAAQ,EAAE,GAAG,GAAW,IAAI,CAAC,GAAG,EAAE,EAAgC,EAAE;IAClJ,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,MAAM,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACxD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,SAAS;QACb,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzF,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YAChC,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,8BAA8B,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,4CAA4C,CAAC,CAAC;QACrI,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAKF,MAAM,oBAAoB,GAAG,KAAK,EAAE,QAA4B,EAA+B,EAAE;IAC7F,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAE7B,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACjG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QACzD,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,IAAa,EAAW,EAAE,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC;IACjI,MAAM,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1I,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjG,CAAC,CAAC;AAMF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,IAAmB,EAAE,CAAC,MAAM,eAAe,CAAC,WAAW,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAIrI,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,QAA4B,EAAE,IAA4B,EAAE,GAAW,EAA+B,EAAE;IAC3I,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IACjJ,MAAM,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACrC,MAAM,sBAAsB,EAAE,CAAC;IAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACtH,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,IAAyB,EAAE,GAAW,EAAiB,EAAE;IAC9F,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAChB,MAAM,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACpJ,CAAC,CAAC,CAAC;IACR,CAAC;AACL,CAAC,CAAC;AAiBF,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,GAAG,MAAM,CAAC;AAG7C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAgB,EAAE,OAA8B,EAA0B,EAAE;IACjG,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAA8B,EAAE,KAAyB,EAAE,GAAW,EAAsB,EAAE,CACpH,MAAM,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC;AAItE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAA8B,EAAE,KAAyB,EAAE,GAAW,EAAE,SAAkB,EAAW,EAAE;IAC7H,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,GAAG,KAAK,GAAG,iBAAiB,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1F,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAmC,EAAE,KAAc,EAAE,KAAyB,EAAmC,EAAE;IACxI,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,CAAC;IACD,OAAO,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AAC7D,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,MAAM,CAAC;AAE/C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,gBAAwB,EAAE,QAAgB,EAAW,EAAE,CAAC,gBAAgB,IAAI,mBAAmB,IAAI,QAAQ,GAAG,CAAC,CAAC"}
|
package/dist/sync/low-disk.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Log } from "@intentic/local-agent";
|
|
2
|
-
import { type
|
|
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
|
|
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,
|
|
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"}
|
package/dist/sync/low-disk.js
CHANGED
|
@@ -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,
|
|
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
|
|
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
|
|
52
|
-
const
|
|
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
|
-
|
|
56
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
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(
|
|
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,
|
|
1
|
+
{"version":3,"file":"low-disk.js","sourceRoot":"","sources":["../../src/sync/low-disk.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/mirror.d.ts
CHANGED
|
@@ -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
|
|
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":"
|
|
1
|
+
{"version":3,"file":"mirror.d.ts","sourceRoot":"","sources":["../../src/sync/mirror.ts"],"names":[],"mappings":"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"}
|