@intentic/machine 1.344.0 → 1.346.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 +185 -154
- package/dist/autostart/autostart.d.ts +0 -1
- package/dist/autostart/autostart.d.ts.map +1 -1
- package/dist/autostart/autostart.js +3 -9
- package/dist/autostart/autostart.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +4 -21
- package/dist/commands.js.map +1 -1
- package/dist/device/commands.d.ts +8 -2
- package/dist/device/commands.d.ts.map +1 -1
- package/dist/device/commands.js +23 -9
- package/dist/device/commands.js.map +1 -1
- package/dist/device/connection.d.ts.map +1 -1
- package/dist/device/connection.js +27 -9
- package/dist/device/connection.js.map +1 -1
- package/dist/device/grant.d.ts +244 -1
- package/dist/device/grant.d.ts.map +1 -1
- package/dist/device/mcp.d.ts.map +1 -1
- package/dist/device/mcp.js +25 -8
- package/dist/device/mcp.js.map +1 -1
- package/dist/device/router.d.ts +469 -226
- package/dist/device/router.d.ts.map +1 -1
- package/dist/device/router.js +18 -10
- package/dist/device/router.js.map +1 -1
- package/dist/device/sandbox-rounds/keeper.d.ts +4 -1
- package/dist/device/sandbox-rounds/keeper.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/keeper.js +13 -7
- package/dist/device/sandbox-rounds/keeper.js.map +1 -1
- package/dist/device/sandbox-rounds/sleep.d.ts +15 -2
- package/dist/device/sandbox-rounds/sleep.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/sleep.js +68 -13
- package/dist/device/sandbox-rounds/sleep.js.map +1 -1
- package/dist/device/tools/agent.d.ts +15 -0
- package/dist/device/tools/agent.d.ts.map +1 -1
- package/dist/device/tools/agent.js +75 -19
- package/dist/device/tools/agent.js.map +1 -1
- package/dist/device/tools/android.d.ts +1 -1
- package/dist/device/tools/android.d.ts.map +1 -1
- package/dist/device/tools/android.js +17 -8
- package/dist/device/tools/android.js.map +1 -1
- package/dist/device/tools/browser.d.ts.map +1 -1
- package/dist/device/tools/browser.js +3 -5
- package/dist/device/tools/browser.js.map +1 -1
- package/dist/device/tools/ic-binary.d.ts +2 -1
- package/dist/device/tools/ic-binary.d.ts.map +1 -1
- package/dist/device/tools/ic-binary.js +34 -4
- 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/programs/app-wait-tools.d.ts +12 -0
- package/dist/device/tools/programs/app-wait-tools.d.ts.map +1 -0
- package/dist/device/tools/programs/app-wait-tools.js +60 -0
- package/dist/device/tools/programs/app-wait-tools.js.map +1 -0
- package/dist/device/tools/programs/app-wait.d.ts +19 -0
- package/dist/device/tools/programs/app-wait.d.ts.map +1 -0
- package/dist/device/tools/programs/app-wait.js +89 -0
- package/dist/device/tools/programs/app-wait.js.map +1 -0
- package/dist/device/tools/programs/file-changes.d.ts +2 -0
- package/dist/device/tools/programs/file-changes.d.ts.map +1 -0
- package/dist/device/tools/programs/file-changes.js +19 -0
- package/dist/device/tools/programs/file-changes.js.map +1 -0
- package/dist/device/tools/programs/programs.d.ts +12 -0
- package/dist/device/tools/programs/programs.d.ts.map +1 -1
- package/dist/device/tools/programs/programs.js +13 -12
- package/dist/device/tools/programs/programs.js.map +1 -1
- package/dist/device/tools/programs/stop-all.d.ts +10 -0
- package/dist/device/tools/programs/stop-all.d.ts.map +1 -0
- package/dist/device/tools/programs/stop-all.js +52 -0
- package/dist/device/tools/programs/stop-all.js.map +1 -0
- package/dist/device/tools/sandboxes.d.ts +2 -0
- package/dist/device/tools/sandboxes.d.ts.map +1 -1
- package/dist/device/tools/sandboxes.js +11 -3
- package/dist/device/tools/sandboxes.js.map +1 -1
- package/dist/device/tools/shell.d.ts +1 -1
- package/dist/device/tools/shell.d.ts.map +1 -1
- package/dist/install.d.ts +15 -1
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +35 -6
- package/dist/install.js.map +1 -1
- package/dist/keyring/app-commands.d.ts +15 -0
- package/dist/keyring/app-commands.d.ts.map +1 -0
- package/dist/keyring/app-commands.js +247 -0
- package/dist/keyring/app-commands.js.map +1 -0
- package/dist/keyring/commands.d.ts +1 -1
- package/dist/keyring/commands.d.ts.map +1 -1
- package/dist/keyring/commands.js +26 -32
- package/dist/keyring/commands.js.map +1 -1
- package/dist/keyring/git-helper.d.ts +8 -0
- package/dist/keyring/git-helper.d.ts.map +1 -0
- package/dist/keyring/git-helper.js +60 -0
- package/dist/keyring/git-helper.js.map +1 -0
- package/dist/keyring/keyring-status.d.ts +8 -1
- package/dist/keyring/keyring-status.d.ts.map +1 -1
- package/dist/keyring/keyring-status.js +39 -4
- package/dist/keyring/keyring-status.js.map +1 -1
- package/dist/keyring/native-host-install.d.ts +28 -0
- package/dist/keyring/native-host-install.d.ts.map +1 -0
- package/dist/keyring/native-host-install.js +99 -0
- package/dist/keyring/native-host-install.js.map +1 -0
- package/dist/keyring/relay.d.ts +5 -1
- package/dist/keyring/relay.d.ts.map +1 -1
- package/dist/keyring/relay.js +16 -0
- package/dist/keyring/relay.js.map +1 -1
- package/dist/keyring/sandbox-push.d.ts +4 -0
- package/dist/keyring/sandbox-push.d.ts.map +1 -0
- package/dist/keyring/sandbox-push.js +21 -0
- package/dist/keyring/sandbox-push.js.map +1 -0
- package/dist/keyring/service.d.ts +11 -5
- package/dist/keyring/service.d.ts.map +1 -1
- package/dist/keyring/service.js +34 -51
- package/dist/keyring/service.js.map +1 -1
- package/dist/resident/resident.d.ts +1 -0
- package/dist/resident/resident.d.ts.map +1 -1
- package/dist/resident/resident.js +9 -1
- 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/binary/mutagen-binary.d.ts +4 -0
- package/dist/sync/binary/mutagen-binary.d.ts.map +1 -0
- package/dist/sync/binary/mutagen-binary.js +65 -0
- package/dist/sync/binary/mutagen-binary.js.map +1 -0
- package/dist/sync/commands.d.ts +1 -9
- package/dist/sync/commands.d.ts.map +1 -1
- package/dist/sync/commands.js +49 -84
- 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/forget-command.js +1 -1
- package/dist/sync/forget-command.js.map +1 -1
- package/dist/sync/gone-watch.d.ts +1 -1
- package/dist/sync/gone-watch.d.ts.map +1 -1
- package/dist/sync/gone-watch.js +16 -40
- 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 -45
- package/dist/sync/low-disk.js.map +1 -1
- package/dist/sync/mirror.d.ts +2 -3
- package/dist/sync/mirror.d.ts.map +1 -1
- package/dist/sync/mirror.js +61 -160
- 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 +31 -22
- package/dist/sync/mutagen-move.js.map +1 -1
- package/dist/sync/mutagen.d.ts +6 -12
- package/dist/sync/mutagen.d.ts.map +1 -1
- package/dist/sync/mutagen.js +17 -144
- 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 +5 -3
- 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 +5 -4
- 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 +18 -11
- 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 +4 -3
- 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/dist/uninstall/command.d.ts +3 -0
- package/dist/uninstall/command.d.ts.map +1 -0
- package/dist/uninstall/command.js +40 -0
- package/dist/uninstall/command.js.map +1 -0
- package/dist/uninstall/distros.d.ts +8 -0
- package/dist/uninstall/distros.d.ts.map +1 -0
- package/dist/uninstall/distros.js +103 -0
- package/dist/uninstall/distros.js.map +1 -0
- package/dist/uninstall/plan.d.ts +23 -0
- package/dist/uninstall/plan.d.ts.map +1 -0
- package/dist/uninstall/plan.js +71 -0
- package/dist/uninstall/plan.js.map +1 -0
- package/dist/uninstall/purge.d.ts +3 -0
- package/dist/uninstall/purge.d.ts.map +1 -0
- package/dist/uninstall/purge.js +79 -0
- package/dist/uninstall/purge.js.map +1 -0
- package/dist/uninstall/steps.d.ts +12 -0
- package/dist/uninstall/steps.d.ts.map +1 -0
- package/dist/uninstall/steps.js +200 -0
- package/dist/uninstall/steps.js.map +1 -0
- package/dist/uninstall/sweep.d.ts +12 -0
- package/dist/uninstall/sweep.d.ts.map +1 -0
- package/dist/uninstall/sweep.js +90 -0
- package/dist/uninstall/sweep.js.map +1 -0
- package/dist/uninstall/tally.d.ts +14 -0
- package/dist/uninstall/tally.d.ts.map +1 -0
- package/dist/uninstall/tally.js +25 -0
- package/dist/uninstall/tally.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 -163
- 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":"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"}
|
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[]) => void;
|
|
21
|
-
readonly resumeAll: (pairing: Pairing) => void;
|
|
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,61 +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: (names) => {
|
|
46
|
-
resumeNamedSessions(mutagen, names);
|
|
47
|
-
},
|
|
48
|
-
resumeAll: (pairing) => {
|
|
49
|
-
resumeWatcherPausedSync(mutagen, pairing);
|
|
50
|
-
},
|
|
51
|
-
record: setFileSyncLowDisk,
|
|
52
|
-
});
|
|
53
|
-
const guardOne = async (seams, pairing, tick, say) => {
|
|
38
|
+
const guardOne = async (read, pairing, say, record) => {
|
|
54
39
|
const key = pairingKey(pairing);
|
|
55
|
-
const reading = await
|
|
56
|
-
const
|
|
57
|
-
const step = lowDiskStep(reading, held !== undefined);
|
|
40
|
+
const reading = await read(pairing.localDir);
|
|
41
|
+
const step = lowDiskStep(reading, pairing.lowDisk !== undefined);
|
|
58
42
|
if (step === "pause" && reading !== undefined) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
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.`);
|
|
62
45
|
return true;
|
|
63
46
|
}
|
|
64
47
|
if (step === "resume" && reading !== undefined) {
|
|
65
|
-
await
|
|
66
|
-
const lifted = { ...pairing, fileSyncLowDisk: undefined };
|
|
67
|
-
if (!otherwiseHeld(lifted)) {
|
|
68
|
-
if (held?.paused === undefined) {
|
|
69
|
-
seams.resumeAll(lifted);
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
seams.resume(held.paused);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
48
|
+
await record(key, undefined);
|
|
75
49
|
say(` ${key}: the drive holding ${pairing.localDir} has ${gigabytes(reading.freeBytes)} free again; file sync and the git bridge carry on.`);
|
|
76
50
|
return false;
|
|
77
51
|
}
|
|
78
|
-
|
|
79
|
-
if (tick % REASSERT_EVERY_TICKS === 0 && held !== undefined) {
|
|
80
|
-
const added = (seams.pause(pairing) ?? []).filter((name) => held.paused?.includes(name) !== true);
|
|
81
|
-
if (added.length > 0 && held.paused !== undefined) {
|
|
82
|
-
await seams.record(key, { ...held, paused: [...held.paused, ...added] });
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return true;
|
|
86
|
-
}
|
|
87
|
-
return false;
|
|
52
|
+
return step === "hold";
|
|
88
53
|
};
|
|
89
|
-
export const guardDisks = async (
|
|
54
|
+
export const guardDisks = async (pairings, say, read = readDisk, record = setLowDisk) => {
|
|
90
55
|
const held = new Set();
|
|
91
56
|
for (const pairing of pairings.filter(writesToDisk)) {
|
|
92
|
-
if (await guardOne(
|
|
57
|
+
if (await guardOne(read, pairing, say, record)) {
|
|
93
58
|
held.add(pairingKey(pairing));
|
|
94
59
|
}
|
|
95
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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Log } from "@intentic/local-agent";
|
|
2
2
|
import { type PortSummary } from "@intentic/sandbox-contract/schemas/ports";
|
|
3
3
|
import { type MirroredPort, type Pairing, type SkippedPort } from "./config.js";
|
|
4
|
+
import type { SwapRecord } from "../device/sandbox-rounds/swap-records.js";
|
|
4
5
|
import { type PublishedPorts } from "./docker-ports.js";
|
|
5
|
-
export declare const shouldAutoPauseFileSync: (unreachableForMs: number) => boolean;
|
|
6
6
|
export declare const pollBackoffMs: (unreachableForMs: number) => number;
|
|
7
7
|
interface Unreachable {
|
|
8
8
|
readonly since: number;
|
|
@@ -36,8 +36,7 @@ export declare const reportCarriers: <T extends {
|
|
|
36
36
|
}>(dialed: readonly T[], unsupported: ReadonlySet<string>) => T[];
|
|
37
37
|
export declare const unpreparedSetups: (pairings: readonly Pairing[], prepared: ReadonlySet<string>) => Pairing[];
|
|
38
38
|
export declare const markPrepared: (prepared: Set<string>, pairing: Pairing) => void;
|
|
39
|
-
export declare const
|
|
40
|
-
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>>;
|
|
41
40
|
export declare const WATCHER_STALL_MS: number;
|
|
42
41
|
export declare const watcherStalled: (progress: number, now: number) => boolean;
|
|
43
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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"}
|