@intentic/machine 1.342.0 → 1.344.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 +44 -5
- package/dist/device/grant.d.ts +17 -0
- package/dist/device/grant.d.ts.map +1 -1
- package/dist/device/router.d.ts +17 -0
- package/dist/device/router.d.ts.map +1 -1
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +22 -1
- package/dist/status.js.map +1 -1
- package/dist/sync/commands.d.ts +2 -1
- package/dist/sync/commands.d.ts.map +1 -1
- package/dist/sync/commands.js +22 -63
- package/dist/sync/commands.js.map +1 -1
- package/dist/sync/config.d.ts +19 -1
- package/dist/sync/config.d.ts.map +1 -1
- package/dist/sync/config.js +19 -4
- package/dist/sync/config.js.map +1 -1
- package/dist/sync/exec.d.ts +17 -0
- package/dist/sync/exec.d.ts.map +1 -1
- package/dist/sync/exec.js +56 -2
- package/dist/sync/exec.js.map +1 -1
- package/dist/sync/git-bridge.d.ts +35 -3
- package/dist/sync/git-bridge.d.ts.map +1 -1
- package/dist/sync/git-bridge.js +201 -16
- package/dist/sync/git-bridge.js.map +1 -1
- package/dist/sync/low-disk.d.ts +25 -0
- package/dist/sync/low-disk.d.ts.map +1 -0
- package/dist/sync/low-disk.js +98 -0
- package/dist/sync/low-disk.js.map +1 -0
- package/dist/sync/mirror.d.ts.map +1 -1
- package/dist/sync/mirror.js +64 -20
- package/dist/sync/mirror.js.map +1 -1
- package/dist/sync/mutagen-env.d.ts +9 -0
- package/dist/sync/mutagen-env.d.ts.map +1 -0
- package/dist/sync/mutagen-env.js +25 -0
- package/dist/sync/mutagen-env.js.map +1 -0
- package/dist/sync/mutagen-move.d.ts +53 -0
- package/dist/sync/mutagen-move.d.ts.map +1 -0
- package/dist/sync/mutagen-move.js +206 -0
- package/dist/sync/mutagen-move.js.map +1 -0
- package/dist/sync/mutagen.d.ts +9 -5
- package/dist/sync/mutagen.d.ts.map +1 -1
- package/dist/sync/mutagen.js +58 -44
- package/dist/sync/mutagen.js.map +1 -1
- package/dist/sync/project/project-remote.d.ts.map +1 -1
- package/dist/sync/project/project-remote.js +2 -1
- package/dist/sync/project/project-remote.js.map +1 -1
- package/dist/sync/report.d.ts.map +1 -1
- package/dist/sync/report.js +13 -3
- package/dist/sync/report.js.map +1 -1
- package/dist/sync/uninstall.d.ts +9 -0
- package/dist/sync/uninstall.d.ts.map +1 -0
- package/dist/sync/uninstall.js +75 -0
- package/dist/sync/uninstall.js.map +1 -0
- package/dist/upkeep/login.d.ts +0 -9
- package/dist/upkeep/login.d.ts.map +1 -1
- package/dist/upkeep/login.js +12 -59
- package/dist/upkeep/login.js.map +1 -1
- package/package.json +9 -9
package/dist/sync/config.d.ts
CHANGED
|
@@ -6,7 +6,6 @@ export declare const sshDir: string;
|
|
|
6
6
|
export declare const sshConfigName = "intentic-machine.conf";
|
|
7
7
|
export declare const sshConfigPath: string;
|
|
8
8
|
export declare const userSshConfigPath: string;
|
|
9
|
-
export declare const mutagenDaemonLogPath: string;
|
|
10
9
|
export declare const mirrorHeartbeatPath: string;
|
|
11
10
|
export interface MirroredPort {
|
|
12
11
|
readonly port: number;
|
|
@@ -51,6 +50,22 @@ export interface Pairing {
|
|
|
51
50
|
readonly fileSyncPausedFor?: WatcherPause | undefined;
|
|
52
51
|
readonly icSlug?: string | undefined;
|
|
53
52
|
readonly adoptFolder?: true | undefined;
|
|
53
|
+
readonly bridgeHolds?: readonly BridgeHold[] | undefined;
|
|
54
|
+
readonly fileSyncLowDisk?: LowDiskPause | undefined;
|
|
55
|
+
}
|
|
56
|
+
export type BridgeHoldReason = "stalled" | "too-long" | "shallow" | "failed";
|
|
57
|
+
export interface BridgeHold {
|
|
58
|
+
readonly repo: string;
|
|
59
|
+
readonly reason: BridgeHoldReason;
|
|
60
|
+
readonly failures: number;
|
|
61
|
+
readonly since: number;
|
|
62
|
+
readonly retryAt: number;
|
|
63
|
+
}
|
|
64
|
+
export interface LowDiskPause {
|
|
65
|
+
readonly since: number;
|
|
66
|
+
readonly freeBytes: number;
|
|
67
|
+
readonly totalBytes: number;
|
|
68
|
+
readonly paused?: readonly string[] | undefined;
|
|
54
69
|
}
|
|
55
70
|
export type GoneWitness = "edge" | "local";
|
|
56
71
|
export type WatcherPause = "gone" | "container-missing" | "container-trashed";
|
|
@@ -86,6 +101,9 @@ export declare const setFileSyncAutoPaused: (key: string, paused: boolean) => Pr
|
|
|
86
101
|
export declare const setFileSyncSwapPaused: (key: string, paused: boolean) => Promise<void>;
|
|
87
102
|
export declare const clearAdoptFolder: (key: string) => Promise<void>;
|
|
88
103
|
export declare const setFileSyncPausedFor: (key: string, reason: WatcherPause | undefined) => Promise<void>;
|
|
104
|
+
export declare const setFileSyncLowDisk: (key: string, pause: LowDiskPause | undefined) => Promise<void>;
|
|
105
|
+
export declare const setBridgeHold: (key: string, repo: string, hold: BridgeHold | undefined) => Promise<void>;
|
|
106
|
+
export declare const pruneBridgeHolds: (key: string, repos: readonly string[]) => Promise<void>;
|
|
89
107
|
export declare const updateSandboxPairings: (sandboxId: string, change: (held: Pairing) => Pairing) => Promise<void>;
|
|
90
108
|
export declare const setSandboxGone: (sandboxId: string, gone: {
|
|
91
109
|
readonly since: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/sync/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAU5E,eAAO,MAAM,UAAU,QAA8B,CAAC;AACtD,eAAO,MAAM,cAAc,QAA+B,CAAC;AAK3D,eAAO,MAAM,MAAM,QAA0B,CAAC;AAC9C,eAAO,MAAM,aAAa,0BAA0B,CAAC;AACrD,eAAO,MAAM,aAAa,QAA8B,CAAC;AACzD,eAAO,MAAM,iBAAiB,QAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/sync/config.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/config.js
CHANGED
|
@@ -13,7 +13,6 @@ export const sshDir = join(homeDir(), ".ssh");
|
|
|
13
13
|
export const sshConfigName = "intentic-machine.conf";
|
|
14
14
|
export const sshConfigPath = join(sshDir, sshConfigName);
|
|
15
15
|
export const userSshConfigPath = join(sshDir, "config");
|
|
16
|
-
export const mutagenDaemonLogPath = join(baseDir, "mutagen-daemon.log");
|
|
17
16
|
export const mirrorHeartbeatPath = join(baseDir, "mirror.tick");
|
|
18
17
|
export const isSandboxContainerName = (name) => name !== undefined &&
|
|
19
18
|
name.startsWith(SANDBOX_CONTAINER_PREFIX) &&
|
|
@@ -109,10 +108,15 @@ export const readState = async () => {
|
|
|
109
108
|
assertPairings(parsed.pairings);
|
|
110
109
|
return { pairings: parsed.pairings };
|
|
111
110
|
};
|
|
111
|
+
let writing = Promise.resolve();
|
|
112
112
|
export const updateState = async (mutate) => {
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
const run = writing.then(async () => {
|
|
114
|
+
const next = mutate(await readState());
|
|
115
|
+
assertPairings(next.pairings);
|
|
116
|
+
await writeSecretFile(configPath, baseDir, JSON.stringify(next, undefined, 2));
|
|
117
|
+
});
|
|
118
|
+
writing = run.catch(() => undefined);
|
|
119
|
+
await run;
|
|
116
120
|
};
|
|
117
121
|
export const upsertPairing = async (pairing) => await updateState((state) => ({ pairings: withPairing(state.pairings, pairing) }));
|
|
118
122
|
export const withPairing = (pairings, pairing) => [
|
|
@@ -138,6 +142,17 @@ export const setFileSyncAutoPaused = async (key, paused) => await updatePairing(
|
|
|
138
142
|
export const setFileSyncSwapPaused = async (key, paused) => await updatePairing(key, (held) => ({ ...held, fileSyncSwapPaused: paused ? true : undefined }));
|
|
139
143
|
export const clearAdoptFolder = async (key) => await updatePairing(key, (held) => ({ ...held, adoptFolder: undefined }));
|
|
140
144
|
export const setFileSyncPausedFor = async (key, reason) => await updatePairing(key, (held) => ({ ...held, fileSyncPausedFor: reason }));
|
|
145
|
+
export const setFileSyncLowDisk = async (key, pause) => await updatePairing(key, (held) => ({ ...held, fileSyncLowDisk: pause }));
|
|
146
|
+
export const setBridgeHold = async (key, repo, hold) => await updatePairing(key, (held) => {
|
|
147
|
+
const { bridgeHolds = [], ...rest } = held;
|
|
148
|
+
const next = [...bridgeHolds.filter((entry) => entry.repo !== repo), ...(hold === undefined ? [] : [hold])];
|
|
149
|
+
return next.length === 0 ? rest : { ...rest, bridgeHolds: next };
|
|
150
|
+
});
|
|
151
|
+
export const pruneBridgeHolds = async (key, repos) => await updatePairing(key, (held) => {
|
|
152
|
+
const { bridgeHolds = [], ...rest } = held;
|
|
153
|
+
const next = bridgeHolds.filter((entry) => repos.includes(entry.repo));
|
|
154
|
+
return next.length === 0 ? rest : { ...rest, bridgeHolds: next };
|
|
155
|
+
});
|
|
141
156
|
export const updateSandboxPairings = async (sandboxId, change) => await updateState((state) => ({ pairings: state.pairings.map((held) => (held.sandboxId === sandboxId ? change(held) : held)) }));
|
|
142
157
|
export const setSandboxGone = async (sandboxId, gone) => await updateSandboxPairings(sandboxId, (held) => ({
|
|
143
158
|
...held,
|
package/dist/sync/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/sync/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/sync/config.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/exec.d.ts
CHANGED
|
@@ -7,7 +7,24 @@ export declare const CHILD_TIMEOUT_MS: number;
|
|
|
7
7
|
export declare const runProcess: (command: string, args: readonly string[], options?: {
|
|
8
8
|
readonly cwd?: string | undefined;
|
|
9
9
|
readonly timeoutMs?: number | undefined;
|
|
10
|
+
readonly env?: NodeJS.ProcessEnv | undefined;
|
|
10
11
|
}) => Promise<ExecResult>;
|
|
12
|
+
export type WatchedEnding = "exited" | "stalled" | "ceiling" | "stopped";
|
|
13
|
+
export interface WatchedResult extends ExecResult {
|
|
14
|
+
readonly ending: WatchedEnding;
|
|
15
|
+
}
|
|
16
|
+
export interface WatchedOptions {
|
|
17
|
+
readonly cwd?: string | undefined;
|
|
18
|
+
readonly env?: NodeJS.ProcessEnv | undefined;
|
|
19
|
+
readonly quietMs: number;
|
|
20
|
+
readonly quietAfter?: {
|
|
21
|
+
readonly said: RegExp;
|
|
22
|
+
readonly quietMs: number;
|
|
23
|
+
} | undefined;
|
|
24
|
+
readonly ceilingMs: number;
|
|
25
|
+
readonly signal?: AbortSignal | undefined;
|
|
26
|
+
}
|
|
27
|
+
export declare const runWatched: (command: string, args: readonly string[], options: WatchedOptions) => Promise<WatchedResult>;
|
|
11
28
|
export interface SyncExecResult extends ExecResult {
|
|
12
29
|
readonly error?: Error;
|
|
13
30
|
}
|
package/dist/sync/exec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/sync/exec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/sync/exec.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,UAAU;IAEvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAKD,eAAO,MAAM,gBAAgB,QAAc,CAAC;AAM5C,eAAO,MAAM,UAAU,YACV,MAAM,QACT,SAAS,MAAM,EAAE,YACd;IAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAA;CAAE,KACtI,OAAO,CAAC,UAAU,CASpB,CAAC;AAIF,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC7C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;CAClC;AAaD,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAElC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACtF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CAC7C;AAKD,eAAO,MAAM,UAAU,YAAmB,MAAM,QAAQ,SAAS,MAAM,EAAE,WAAW,cAAc,KAAG,OAAO,CAAC,aAAa,CAgDzH,CAAC;AAIF,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CAC1B;AAKD,eAAO,MAAM,cAAc,YACd,MAAM,QACT,SAAS,MAAM,EAAE,WACd;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,KACnJ,cAeF,CAAC"}
|
package/dist/sync/exec.js
CHANGED
|
@@ -1,15 +1,69 @@
|
|
|
1
1
|
import { runBounded, runBoundedSync } from "@intentic/base/process";
|
|
2
|
+
import { childEnv } from "./mutagen-env.js";
|
|
2
3
|
export const CHILD_TIMEOUT_MS = 10 * 60_000;
|
|
3
4
|
export const runProcess = async (command, args, options = {}) => {
|
|
4
|
-
const result = await runBounded(command, args, {
|
|
5
|
+
const result = await runBounded(command, args, {
|
|
6
|
+
cwd: options.cwd,
|
|
7
|
+
env: childEnv(command, options.env),
|
|
8
|
+
timeoutMs: options.timeoutMs ?? CHILD_TIMEOUT_MS,
|
|
9
|
+
});
|
|
5
10
|
const failure = result.spawnError?.message ?? "";
|
|
6
11
|
return { status: result.exitCode, stdout: result.stdout.text, stderr: `${result.stderr.text}${failure}` };
|
|
7
12
|
};
|
|
13
|
+
const QUIET_CHECK_MS = 5_000;
|
|
14
|
+
const SAID_TAIL_CHARS = 512;
|
|
15
|
+
export const runWatched = async (command, args, options) => {
|
|
16
|
+
const stop = new AbortController();
|
|
17
|
+
const relay = () => stop.abort();
|
|
18
|
+
if (options.signal?.aborted === true) {
|
|
19
|
+
stop.abort();
|
|
20
|
+
}
|
|
21
|
+
options.signal?.addEventListener("abort", relay, { once: true });
|
|
22
|
+
let heard = Date.now();
|
|
23
|
+
let allowance = options.quietMs;
|
|
24
|
+
let stalled = false;
|
|
25
|
+
const quiet = setInterval(() => {
|
|
26
|
+
if (Date.now() - heard >= allowance) {
|
|
27
|
+
stalled = true;
|
|
28
|
+
stop.abort();
|
|
29
|
+
}
|
|
30
|
+
}, Math.min(QUIET_CHECK_MS, options.quietMs));
|
|
31
|
+
const later = options.quietAfter;
|
|
32
|
+
let tail = "";
|
|
33
|
+
const mark = (chunk) => {
|
|
34
|
+
heard = Date.now();
|
|
35
|
+
if (later !== undefined && allowance !== later.quietMs) {
|
|
36
|
+
tail = `${tail}${chunk.toString()}`.slice(-SAID_TAIL_CHARS);
|
|
37
|
+
if (later.said.test(tail)) {
|
|
38
|
+
allowance = later.quietMs;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
try {
|
|
43
|
+
const result = await runBounded(command, args, {
|
|
44
|
+
cwd: options.cwd,
|
|
45
|
+
env: options.env,
|
|
46
|
+
timeoutMs: options.ceilingMs,
|
|
47
|
+
signal: stop.signal,
|
|
48
|
+
onSpawn: (child) => {
|
|
49
|
+
child.stdout?.on("data", mark);
|
|
50
|
+
child.stderr?.on("data", mark);
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
const failure = result.spawnError?.message ?? "";
|
|
54
|
+
const ending = result.timedOut ? "ceiling" : stalled ? "stalled" : result.aborted ? "stopped" : "exited";
|
|
55
|
+
return { status: result.exitCode, stdout: result.stdout.text, stderr: `${result.stderr.text}${failure}`, ending };
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
clearInterval(quiet);
|
|
59
|
+
options.signal?.removeEventListener("abort", relay);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
8
62
|
export const runProcessSync = (command, args, options) => {
|
|
9
63
|
const result = runBoundedSync(command, args, {
|
|
10
64
|
timeoutMs: options.timeoutMs,
|
|
11
65
|
cwd: options.cwd,
|
|
12
|
-
env: options.env,
|
|
66
|
+
env: childEnv(command, options.env),
|
|
13
67
|
output: options.quiet === true ? "ignore" : "pipe",
|
|
14
68
|
});
|
|
15
69
|
const stopped = result.timedOut
|
package/dist/sync/exec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/sync/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/sync/exec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,45 @@
|
|
|
1
1
|
import type { Log } from "@intentic/local-agent";
|
|
2
|
-
import { type Pairing } from "./config.js";
|
|
2
|
+
import { type BridgeHold, type BridgeHoldReason, type Pairing } from "./config.js";
|
|
3
3
|
export interface BridgeExec {
|
|
4
4
|
readonly run: (command: string, args: readonly string[], cwd?: string) => Promise<string | undefined>;
|
|
5
|
+
readonly fetch: (args: readonly string[], cwd: string, signal?: AbortSignal) => Promise<FetchResult>;
|
|
5
6
|
readonly exists: (path: string) => boolean;
|
|
6
7
|
}
|
|
8
|
+
export type FetchOutcome = "fetched" | "stopped" | BridgeHoldReason;
|
|
9
|
+
export interface FetchResult {
|
|
10
|
+
readonly outcome: FetchOutcome;
|
|
11
|
+
readonly stderr: string;
|
|
12
|
+
}
|
|
7
13
|
export declare const realBridgeExec: BridgeExec;
|
|
14
|
+
export declare const nextHold: (repo: string, previous: BridgeHold | undefined, reason: BridgeHoldReason, now: number) => BridgeHold;
|
|
15
|
+
export declare const failureReason: (stderr: string) => BridgeHoldReason;
|
|
16
|
+
export interface BridgeMemory {
|
|
17
|
+
readonly held: (repo: string) => BridgeHold | undefined;
|
|
18
|
+
readonly record: (repo: string, hold: BridgeHold | undefined) => Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export interface PackTemp {
|
|
21
|
+
readonly name: string;
|
|
22
|
+
readonly size: number;
|
|
23
|
+
readonly modifiedAt: number;
|
|
24
|
+
}
|
|
25
|
+
export interface PackFs {
|
|
26
|
+
readonly temps: (packDir: string) => Promise<readonly PackTemp[]>;
|
|
27
|
+
readonly remove: (path: string) => Promise<boolean>;
|
|
28
|
+
readonly settle: () => Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
export declare const STALE_TEMP_MS: number;
|
|
31
|
+
export declare const strandedTemps: (first: readonly PackTemp[], second: readonly PackTemp[], before: ReadonlySet<string>, now: number) => PackTemp[];
|
|
32
|
+
export interface BridgeOptions {
|
|
33
|
+
readonly memory?: BridgeMemory | undefined;
|
|
34
|
+
readonly packs?: PackFs | undefined;
|
|
35
|
+
readonly signal?: AbortSignal | undefined;
|
|
36
|
+
readonly now?: (() => number) | undefined;
|
|
37
|
+
}
|
|
8
38
|
export declare const listSandboxRepos: (exec: BridgeExec, alias: string) => Promise<string[] | undefined>;
|
|
9
|
-
export declare const bridgeRepo: (exec: BridgeExec, alias: string, localDir: string, repo: string, log: Log) => Promise<void>;
|
|
10
|
-
export declare const runGitBridge: (exec: BridgeExec, pairing: Pairing, log: Log, known: readonly string[] | undefined
|
|
39
|
+
export declare const bridgeRepo: (exec: BridgeExec, alias: string, localDir: string, repo: string, log: Log, options?: BridgeOptions) => Promise<void>;
|
|
40
|
+
export declare const runGitBridge: (exec: BridgeExec, pairing: Pairing, log: Log, known: readonly string[] | undefined, options?: Pick<BridgeOptions, "signal" | "packs" | "now"> & {
|
|
41
|
+
readonly memory?: BridgeMemory | undefined;
|
|
42
|
+
}) => Promise<readonly string[] | undefined>;
|
|
11
43
|
export interface UnbridgeFs {
|
|
12
44
|
readonly subdirs: (dir: string) => Promise<readonly string[]>;
|
|
13
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-bridge.d.ts","sourceRoot":"","sources":["../../src/sync/git-bridge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"git-bridge.d.ts","sourceRoot":"","sources":["../../src/sync/git-bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/git-bridge.js
CHANGED
|
@@ -1,20 +1,132 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
|
-
import { readdir } from "node:fs/promises";
|
|
3
|
-
import { join } from "node:path";
|
|
2
|
+
import { readdir, rm, stat } from "node:fs/promises";
|
|
3
|
+
import { join, resolve } from "node:path";
|
|
4
|
+
import { setTimeout as sleep } from "node:timers/promises";
|
|
4
5
|
import { HISTORY_ROOT, STATE_DIR } from "@intentic/constants";
|
|
5
6
|
import { GIT_GLOBAL_ARGS } from "@intentic/base/git";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
7
|
+
import { untranslatedEnv } from "@intentic/base/process";
|
|
8
|
+
import { isProjectPairing, pairingKey, pruneBridgeHolds, setBridgeHold } from "./config.js";
|
|
9
|
+
import { runProcess, runWatched } from "./exec.js";
|
|
8
10
|
import { sshAlias } from "./ssh.js";
|
|
9
11
|
const EXEC_TIMEOUT_MS = 120_000;
|
|
12
|
+
const FETCH_QUIET_MS = 3 * 60_000;
|
|
13
|
+
const FETCH_CEILING_MS = 3 * 60 * 60_000;
|
|
14
|
+
const TRANSFER_DONE = /(?:Receiving objects|Resolving deltas): 100%/;
|
|
15
|
+
const FETCH_SETTLING_QUIET_MS = 30 * 60_000;
|
|
10
16
|
export const realBridgeExec = {
|
|
11
17
|
run: async (command, args, cwd) => {
|
|
12
18
|
const argv = command === "git" ? [...GIT_GLOBAL_ARGS, ...args] : args;
|
|
13
19
|
const result = await runProcess(command, argv, { cwd, timeoutMs: EXEC_TIMEOUT_MS });
|
|
14
20
|
return result.status === 0 ? result.stdout : undefined;
|
|
15
21
|
},
|
|
22
|
+
fetch: async (args, cwd, signal) => {
|
|
23
|
+
const result = await runWatched("git", [...GIT_GLOBAL_ARGS, ...args], {
|
|
24
|
+
cwd,
|
|
25
|
+
env: untranslatedEnv(process.env),
|
|
26
|
+
quietMs: FETCH_QUIET_MS,
|
|
27
|
+
quietAfter: { said: TRANSFER_DONE, quietMs: FETCH_SETTLING_QUIET_MS },
|
|
28
|
+
ceilingMs: FETCH_CEILING_MS,
|
|
29
|
+
signal,
|
|
30
|
+
});
|
|
31
|
+
const outcome = result.ending === "stalled"
|
|
32
|
+
? "stalled"
|
|
33
|
+
: result.ending === "ceiling"
|
|
34
|
+
? "too-long"
|
|
35
|
+
: result.ending === "stopped"
|
|
36
|
+
? "stopped"
|
|
37
|
+
: result.status === 0
|
|
38
|
+
? "fetched"
|
|
39
|
+
: "failed";
|
|
40
|
+
return { outcome, stderr: result.stderr };
|
|
41
|
+
},
|
|
16
42
|
exists: existsSync,
|
|
17
43
|
};
|
|
44
|
+
const MINUTE = 60_000;
|
|
45
|
+
const HOUR = 60 * MINUTE;
|
|
46
|
+
const DAY = 24 * HOUR;
|
|
47
|
+
const WAITS = {
|
|
48
|
+
stalled: { first: 10 * MINUTE, most: 12 * HOUR },
|
|
49
|
+
failed: { first: 10 * MINUTE, most: 12 * HOUR },
|
|
50
|
+
"too-long": { first: 12 * HOUR, most: 2 * DAY },
|
|
51
|
+
shallow: { first: DAY, most: 7 * DAY },
|
|
52
|
+
};
|
|
53
|
+
export const nextHold = (repo, previous, reason, now) => {
|
|
54
|
+
const failures = (previous?.failures ?? 0) + 1;
|
|
55
|
+
const { first, most } = WAITS[reason];
|
|
56
|
+
const wait = Math.min(first * 2 ** Math.min(failures - 1, 20), most);
|
|
57
|
+
return { repo, reason, failures, since: previous?.since ?? now, retryAt: now + wait };
|
|
58
|
+
};
|
|
59
|
+
export const failureReason = (stderr) => (/shallow/i.test(stderr) ? "shallow" : "failed");
|
|
60
|
+
const forgetfulMemory = { held: () => undefined, record: async () => { } };
|
|
61
|
+
const pairingMemory = (pairing) => {
|
|
62
|
+
const holds = new Map((pairing.bridgeHolds ?? []).map((hold) => [hold.repo, hold]));
|
|
63
|
+
return {
|
|
64
|
+
held: (repo) => holds.get(repo),
|
|
65
|
+
record: async (repo, hold) => {
|
|
66
|
+
if (hold === undefined && !holds.has(repo)) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (hold === undefined) {
|
|
70
|
+
holds.delete(repo);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
holds.set(repo, hold);
|
|
74
|
+
}
|
|
75
|
+
await setBridgeHold(pairingKey(pairing), repo, hold);
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
export const STALE_TEMP_MS = HOUR;
|
|
80
|
+
const SETTLE_MS = 2_000;
|
|
81
|
+
const realPackFs = {
|
|
82
|
+
temps: async (packDir) => {
|
|
83
|
+
const names = await readdir(packDir).catch(() => []);
|
|
84
|
+
const temps = [];
|
|
85
|
+
for (const name of names.filter((entry) => entry.startsWith("tmp_"))) {
|
|
86
|
+
const info = await stat(join(packDir, name)).catch(() => undefined);
|
|
87
|
+
if (info?.isFile() === true) {
|
|
88
|
+
temps.push({ name, size: info.size, modifiedAt: info.mtimeMs });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return temps;
|
|
92
|
+
},
|
|
93
|
+
remove: async (path) => await rm(path, { force: true }).then(() => true, () => false),
|
|
94
|
+
settle: async () => await sleep(SETTLE_MS),
|
|
95
|
+
};
|
|
96
|
+
export const strandedTemps = (first, second, before, now) => {
|
|
97
|
+
const again = new Map(second.map((temp) => [temp.name, temp]));
|
|
98
|
+
return first.filter((temp) => {
|
|
99
|
+
const later = again.get(temp.name);
|
|
100
|
+
const still = later !== undefined && later.size === temp.size && later.modifiedAt === temp.modifiedAt;
|
|
101
|
+
return still && (!before.has(temp.name) || now - temp.modifiedAt >= STALE_TEMP_MS);
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
const clearStranded = async (packs, packDir, before, now) => {
|
|
105
|
+
const first = await packs.temps(packDir);
|
|
106
|
+
if (!first.some((temp) => !before.has(temp.name) || now - temp.modifiedAt >= STALE_TEMP_MS)) {
|
|
107
|
+
return 0;
|
|
108
|
+
}
|
|
109
|
+
await packs.settle();
|
|
110
|
+
let freed = 0;
|
|
111
|
+
for (const temp of strandedTemps(first, await packs.temps(packDir), before, now)) {
|
|
112
|
+
if (await packs.remove(join(packDir, temp.name))) {
|
|
113
|
+
freed += temp.size;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return freed;
|
|
117
|
+
};
|
|
118
|
+
const sweptAt = new Map();
|
|
119
|
+
const gigabytes = (bytes) => `${(bytes / 1024 ** 3).toFixed(1)} GB`;
|
|
120
|
+
const untilWhen = (at, now) => {
|
|
121
|
+
const minutes = Math.max(1, Math.round((at - now) / MINUTE));
|
|
122
|
+
return minutes < 120 ? `${minutes} minutes` : `${Math.round(minutes / 60)} hours`;
|
|
123
|
+
};
|
|
124
|
+
const HOLD_SAID = {
|
|
125
|
+
stalled: "the fetch stopped moving",
|
|
126
|
+
"too-long": `the fetch was still running after ${FETCH_CEILING_MS / HOUR} hours`,
|
|
127
|
+
shallow: "the sandbox's copy is a shallow clone, which this folder's full history cannot take",
|
|
128
|
+
failed: "git refused the fetch",
|
|
129
|
+
};
|
|
18
130
|
const SEGMENT = /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/;
|
|
19
131
|
const isSafeRepoId = (id) => {
|
|
20
132
|
const segments = id.split("/");
|
|
@@ -30,15 +142,68 @@ export const listSandboxRepos = async (exec, alias) => {
|
|
|
30
142
|
.map((line) => decodeURIComponent(line.trim()))
|
|
31
143
|
.filter((id) => id !== "" && id !== "root" && isSafeRepoId(id));
|
|
32
144
|
};
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
145
|
+
const packDirOf = async (exec, dir) => {
|
|
146
|
+
const out = (await exec.run("git", ["rev-parse", "--git-path", "objects/pack"], dir))?.trim();
|
|
147
|
+
return out === undefined || out === "" ? undefined : resolve(dir, out);
|
|
148
|
+
};
|
|
149
|
+
const sandboxIsShallow = async (exec, alias, repo) => {
|
|
150
|
+
const gitDir = `${HISTORY_ROOT}/gits/${encodeURIComponent(repo)}`;
|
|
151
|
+
const said = (await exec.run("ssh", ["-o", "BatchMode=yes", alias, "git", `--git-dir=${gitDir}`, "rev-parse", "--is-shallow-repository"]))?.trim();
|
|
152
|
+
return said === "true" ? true : said === "false" ? false : undefined;
|
|
153
|
+
};
|
|
154
|
+
const sweepLeftovers = async (seams, dir, repo) => {
|
|
155
|
+
const { exec, packs, now, log } = seams;
|
|
156
|
+
const at = now();
|
|
157
|
+
if (at - (sweptAt.get(dir) ?? Number.NEGATIVE_INFINITY) < STALE_TEMP_MS) {
|
|
36
158
|
return;
|
|
37
159
|
}
|
|
160
|
+
sweptAt.set(dir, at);
|
|
161
|
+
const packDir = await packDirOf(exec, dir);
|
|
162
|
+
if (packDir === undefined) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
const freed = await clearStranded(packs, packDir, new Set((await packs.temps(packDir)).map((temp) => temp.name)), at);
|
|
166
|
+
if (freed > 0) {
|
|
167
|
+
log(` ${repo}: removed ${gigabytes(freed)} of half-received git packs an earlier fetch left behind`);
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
const fetchFromSandbox = async (seams, dir, repo, branch, head, hold) => {
|
|
171
|
+
const { exec, packs, memory, now, log } = seams;
|
|
172
|
+
const shallowOk = head === undefined || (await exec.run("git", ["rev-parse", "--is-shallow-repository"], dir))?.trim() === "true";
|
|
173
|
+
if (!shallowOk && (await sandboxIsShallow(exec, seams.alias, repo)) === true) {
|
|
174
|
+
const next = nextHold(repo, hold, "shallow", now());
|
|
175
|
+
await memory.record(repo, next);
|
|
176
|
+
log(` ${repo}: not fetched from the sandbox (${HOLD_SAID.shallow}); asking again in ${untilWhen(next.retryAt, now())}`);
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
const packDir = await packDirOf(exec, dir);
|
|
180
|
+
const before = new Set(packDir === undefined ? [] : (await packs.temps(packDir)).map((temp) => temp.name));
|
|
181
|
+
const refspec = `+refs/heads/${branch}:refs/remotes/sandbox/${branch}`;
|
|
182
|
+
const fetched = await exec.fetch(["fetch", "--progress", ...(shallowOk ? ["--update-shallow"] : []), "sandbox", refspec], dir, seams.signal);
|
|
183
|
+
if (fetched.outcome === "fetched") {
|
|
184
|
+
if (hold !== undefined) {
|
|
185
|
+
log(` ${repo}: fetched from the sandbox again, after ${hold.failures === 1 ? "one try" : `${hold.failures} tries`} that did not finish`);
|
|
186
|
+
}
|
|
187
|
+
await memory.record(repo, undefined);
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
const freed = packDir === undefined ? 0 : await clearStranded(packs, packDir, before, now());
|
|
191
|
+
const cleared = freed > 0 ? `; removed the ${gigabytes(freed)} it had received so far` : "";
|
|
192
|
+
if (fetched.outcome === "stopped") {
|
|
193
|
+
log(` ${repo}: fetch from the sandbox stopped${cleared}`);
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
const reason = fetched.outcome === "failed" ? failureReason(fetched.stderr) : fetched.outcome;
|
|
197
|
+
const next = nextHold(repo, hold, reason, now());
|
|
198
|
+
await memory.record(repo, next);
|
|
199
|
+
log(` ${repo}: fetch from the sandbox did not finish (${HOLD_SAID[reason]})${cleared}; trying again in ${untilWhen(next.retryAt, now())}`);
|
|
200
|
+
return false;
|
|
201
|
+
};
|
|
202
|
+
const prepareClone = async (exec, alias, dir, repo, log) => {
|
|
38
203
|
const url = `${alias}:/history/gits/${encodeURIComponent(repo)}`;
|
|
39
204
|
if (!exec.exists(join(dir, ".git"))) {
|
|
40
205
|
if ((await exec.run("git", ["init", "-q"], dir)) === undefined) {
|
|
41
|
-
return;
|
|
206
|
+
return false;
|
|
42
207
|
}
|
|
43
208
|
log(` ${repo}: initialized, this repo's history now follows the sandbox`);
|
|
44
209
|
}
|
|
@@ -47,13 +212,22 @@ export const bridgeRepo = async (exec, alias, localDir, repo, log) => {
|
|
|
47
212
|
}
|
|
48
213
|
const current = (await exec.run("git", ["remote", "get-url", "sandbox"], dir))?.trim();
|
|
49
214
|
if (current === undefined) {
|
|
50
|
-
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
215
|
+
return (await exec.run("git", ["remote", "add", "sandbox", url], dir)) !== undefined;
|
|
53
216
|
}
|
|
54
|
-
|
|
217
|
+
if (current !== url) {
|
|
55
218
|
await exec.run("git", ["remote", "set-url", "sandbox", url], dir);
|
|
56
219
|
}
|
|
220
|
+
return true;
|
|
221
|
+
};
|
|
222
|
+
export const bridgeRepo = async (exec, alias, localDir, repo, log, options = {}) => {
|
|
223
|
+
const memory = options.memory ?? forgetfulMemory;
|
|
224
|
+
const packs = options.packs ?? realPackFs;
|
|
225
|
+
const now = options.now ?? Date.now;
|
|
226
|
+
const dir = join(localDir, repo);
|
|
227
|
+
if (!exec.exists(dir) || !(await prepareClone(exec, alias, dir, repo, log))) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
await sweepLeftovers({ exec, packs, now, log }, dir, repo);
|
|
57
231
|
const symref = (await exec.run("git", ["ls-remote", "--symref", "sandbox", "HEAD"], dir)) ?? "";
|
|
58
232
|
const branch = /^ref:\s+refs\/heads\/(\S+)\s+HEAD/m.exec(symref)?.[1];
|
|
59
233
|
const remoteTip = /^([0-9a-f]+)\s+HEAD\s*$/m.exec(symref)?.[1];
|
|
@@ -68,10 +242,14 @@ export const bridgeRepo = async (exec, alias, localDir, repo, log) => {
|
|
|
68
242
|
if (head !== undefined && installed !== head) {
|
|
69
243
|
await exec.run("git", ["update-ref", bridged, head], dir);
|
|
70
244
|
}
|
|
245
|
+
await memory.record(repo, undefined);
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
const hold = memory.held(repo);
|
|
249
|
+
if (hold !== undefined && now() < hold.retryAt) {
|
|
71
250
|
return;
|
|
72
251
|
}
|
|
73
|
-
if ((await exec
|
|
74
|
-
log(` ${repo}: fetch from the sandbox failed, will retry next pass`);
|
|
252
|
+
if (!(await fetchFromSandbox({ exec, alias, packs, memory, now, log, signal: options.signal }, dir, repo, branch, head, hold))) {
|
|
75
253
|
return;
|
|
76
254
|
}
|
|
77
255
|
const tip = (await exec.run("git", ["rev-parse", "-q", "--verify", `refs/remotes/sandbox/${branch}`], dir))?.trim();
|
|
@@ -108,7 +286,7 @@ export const bridgeRepo = async (exec, alias, localDir, repo, log) => {
|
|
|
108
286
|
log(` ${repo}: fast-forwarded ${branch} to ${tip.slice(0, 8)}`);
|
|
109
287
|
}
|
|
110
288
|
};
|
|
111
|
-
export const runGitBridge = async (exec, pairing, log, known) => {
|
|
289
|
+
export const runGitBridge = async (exec, pairing, log, known, options = {}) => {
|
|
112
290
|
if (pairing.mode !== "sync" || pairing.localDir === undefined || isProjectPairing(pairing)) {
|
|
113
291
|
return undefined;
|
|
114
292
|
}
|
|
@@ -118,8 +296,15 @@ export const runGitBridge = async (exec, pairing, log, known) => {
|
|
|
118
296
|
log(` ${pairing.sandboxId}: git bridge couldn't list the sandbox's repos, will retry next pass`);
|
|
119
297
|
return undefined;
|
|
120
298
|
}
|
|
299
|
+
if (known === undefined && (pairing.bridgeHolds ?? []).some((hold) => !repos.includes(hold.repo))) {
|
|
300
|
+
await pruneBridgeHolds(pairingKey(pairing), repos);
|
|
301
|
+
}
|
|
302
|
+
const memory = options.memory ?? pairingMemory(pairing);
|
|
121
303
|
for (const repo of repos) {
|
|
122
|
-
|
|
304
|
+
if (options.signal?.aborted === true) {
|
|
305
|
+
break;
|
|
306
|
+
}
|
|
307
|
+
await bridgeRepo(exec, alias, pairing.localDir, repo, log, { ...options, memory });
|
|
123
308
|
}
|
|
124
309
|
return repos;
|
|
125
310
|
};
|