@indigoai-us/hq-cloud 6.14.18 → 6.14.19
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/.github/workflows/ci.yml +35 -0
- package/dist/bin/sync-runner-company.d.ts +7 -0
- package/dist/bin/sync-runner-company.d.ts.map +1 -1
- package/dist/bin/sync-runner-company.js +21 -1
- package/dist/bin/sync-runner-company.js.map +1 -1
- package/dist/bin/sync-runner-watch-loop.d.ts +10 -2
- package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
- package/dist/bin/sync-runner-watch-loop.js +201 -25
- package/dist/bin/sync-runner-watch-loop.js.map +1 -1
- package/dist/bin/sync-runner-watch-routes.d.ts +1 -1
- package/dist/bin/sync-runner-watch-routes.d.ts.map +1 -1
- package/dist/bin/sync-runner-watch-routes.js +14 -2
- package/dist/bin/sync-runner-watch-routes.js.map +1 -1
- package/dist/bin/sync-runner.d.ts +17 -2
- package/dist/bin/sync-runner.d.ts.map +1 -1
- package/dist/bin/sync-runner.js +22 -4
- package/dist/bin/sync-runner.js.map +1 -1
- package/dist/bin/sync-runner.test.js +495 -3
- package/dist/bin/sync-runner.test.js.map +1 -1
- package/dist/cli/rescue-core.js +27 -1
- package/dist/cli/rescue-core.js.map +1 -1
- package/dist/cli/rescue-drop-dir-symlink.test.d.ts +2 -0
- package/dist/cli/rescue-drop-dir-symlink.test.d.ts.map +1 -0
- package/dist/cli/rescue-drop-dir-symlink.test.js +206 -0
- package/dist/cli/rescue-drop-dir-symlink.test.js.map +1 -0
- package/dist/cli/share.d.ts +15 -0
- package/dist/cli/share.d.ts.map +1 -1
- package/dist/cli/share.js +100 -55
- package/dist/cli/share.js.map +1 -1
- package/dist/cli/share.test.js +119 -6
- package/dist/cli/share.test.js.map +1 -1
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +19 -25
- package/dist/cli/sync.js.map +1 -1
- package/dist/cli/sync.test.js +121 -0
- package/dist/cli/sync.test.js.map +1 -1
- package/dist/journal.d.ts +3 -1
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +13 -2
- package/dist/journal.js.map +1 -1
- package/dist/journal.test.js +26 -1
- package/dist/journal.test.js.map +1 -1
- package/dist/personal-vault.d.ts +12 -0
- package/dist/personal-vault.d.ts.map +1 -1
- package/dist/personal-vault.js +20 -0
- package/dist/personal-vault.js.map +1 -1
- package/dist/qmd-reindex.d.ts +88 -11
- package/dist/qmd-reindex.d.ts.map +1 -1
- package/dist/qmd-reindex.js +354 -65
- package/dist/qmd-reindex.js.map +1 -1
- package/dist/qmd-reindex.test.d.ts +4 -0
- package/dist/qmd-reindex.test.d.ts.map +1 -1
- package/dist/qmd-reindex.test.js +285 -3
- package/dist/qmd-reindex.test.js.map +1 -1
- package/dist/s3.d.ts +13 -0
- package/dist/s3.d.ts.map +1 -1
- package/dist/s3.js +34 -1
- package/dist/s3.js.map +1 -1
- package/dist/s3.test.js +60 -1
- package/dist/s3.test.js.map +1 -1
- package/dist/telemetry.d.ts +22 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +79 -0
- package/dist/telemetry.js.map +1 -1
- package/dist/telemetry.test.js +117 -1
- package/dist/telemetry.test.js.map +1 -1
- package/dist/watcher.d.ts +26 -1
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +75 -12
- package/dist/watcher.js.map +1 -1
- package/package.json +1 -1
- package/src/bin/sync-runner-company.ts +29 -1
- package/src/bin/sync-runner-watch-loop.ts +322 -32
- package/src/bin/sync-runner-watch-routes.ts +14 -1
- package/src/bin/sync-runner.test.ts +591 -6
- package/src/bin/sync-runner.ts +50 -5
- package/src/cli/rescue-core.ts +26 -1
- package/src/cli/rescue-drop-dir-symlink.test.ts +224 -0
- package/src/cli/share.test.ts +150 -6
- package/src/cli/share.ts +143 -48
- package/src/cli/sync.test.ts +150 -1
- package/src/cli/sync.ts +25 -29
- package/src/journal.test.ts +45 -0
- package/src/journal.ts +18 -1
- package/src/personal-vault.ts +23 -0
- package/src/qmd-reindex.test.ts +324 -4
- package/src/qmd-reindex.ts +414 -76
- package/src/s3.test.ts +79 -0
- package/src/s3.ts +48 -1
- package/src/telemetry.test.ts +128 -0
- package/src/telemetry.ts +80 -0
- package/src/watcher.ts +111 -14
- package/test/e2e/watcher-real-chokidar.test.ts +62 -2
- package/test/e2e/watcher-recursive-backend.test.ts +67 -1
package/.github/workflows/ci.yml
CHANGED
|
@@ -47,3 +47,38 @@ jobs:
|
|
|
47
47
|
- run: pnpm run typecheck
|
|
48
48
|
- name: Cross-tenant isolation E2E (blocking)
|
|
49
49
|
run: pnpm vitest run test/e2e/sync/cross-tenant-isolation.test.ts
|
|
50
|
+
|
|
51
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
52
|
+
# Integration suite (test/)
|
|
53
|
+
# ─────────────────────────────────────────────────────────────────────────
|
|
54
|
+
# `pnpm test` — and therefore the shared `ci` job, which runs the `coverage`
|
|
55
|
+
# script — is `vitest run src/`. It does NOT cover `test/`. Until this job
|
|
56
|
+
# existed, everything under `test/` ran only on whichever laptop last typed
|
|
57
|
+
# `pnpm test:e2e`, with one exception: cross-tenant-isolation, pinned above.
|
|
58
|
+
#
|
|
59
|
+
# That gap had teeth. `test/joiner-manifest-reconcile.integration.test.ts`
|
|
60
|
+
# is the regression guard for #214 (invited members being told they were
|
|
61
|
+
# solo). It is genuinely load-bearing — neutering the reconciler turns 4 of
|
|
62
|
+
# its 5 cases red — and it had never run in CI. A guard nothing executes is
|
|
63
|
+
# not a guard.
|
|
64
|
+
#
|
|
65
|
+
# The whole suite is ~4s and needs no credentials (share-sync self-skips
|
|
66
|
+
# without its laptop-mini fixture), so there is no reason to cherry-pick
|
|
67
|
+
# files. cross-tenant-isolation runs here too; that duplicate costs ~130ms
|
|
68
|
+
# and keeps this job free of exclusion logic that would silently rot. The
|
|
69
|
+
# blocking gate above stays a separate job on purpose — a watcher flake
|
|
70
|
+
# here must never be mistaken for a P0 tenant-isolation breach.
|
|
71
|
+
integration-tests:
|
|
72
|
+
runs-on: ubuntu-latest
|
|
73
|
+
steps:
|
|
74
|
+
- uses: actions/checkout@v4
|
|
75
|
+
- uses: pnpm/action-setup@v4
|
|
76
|
+
with:
|
|
77
|
+
version: 10
|
|
78
|
+
- uses: actions/setup-node@v4
|
|
79
|
+
with:
|
|
80
|
+
node-version: 22
|
|
81
|
+
cache: pnpm
|
|
82
|
+
- run: pnpm install --frozen-lockfile --config.minimumReleaseAge=1440
|
|
83
|
+
- name: Integration suite (test/)
|
|
84
|
+
run: pnpm run test:e2e
|
|
@@ -19,6 +19,12 @@ export interface CompanyFanoutResult {
|
|
|
19
19
|
path: string;
|
|
20
20
|
direction: "pull" | "push";
|
|
21
21
|
}>;
|
|
22
|
+
pushPathResults: Array<{
|
|
23
|
+
relativePath: string;
|
|
24
|
+
status: "accepted" | "refused";
|
|
25
|
+
operation: "delete" | "tombstone";
|
|
26
|
+
reason?: string;
|
|
27
|
+
}>;
|
|
22
28
|
}
|
|
23
29
|
export declare function executeCompanyFanout(options: {
|
|
24
30
|
plan: RunnerTarget[];
|
|
@@ -34,6 +40,7 @@ export declare function executeCompanyFanout(options: {
|
|
|
34
40
|
resolveDeletePolicy: () => DeletePropagationPolicy;
|
|
35
41
|
emit: (event: RunnerEvent) => void;
|
|
36
42
|
scopePaths?: string[];
|
|
43
|
+
deleteScopePaths?: string[];
|
|
37
44
|
telemetryClient?: CloudTelemetryClient | null;
|
|
38
45
|
telemetryClaims?: TelemetryClaims | null;
|
|
39
46
|
telemetrySessionId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-runner-company.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner-company.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAqB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAUhC,OAAO,KAAK,EACV,uBAAuB,EACvB,SAAS,EACT,WAAW,EACX,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC1C,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,YAAY,EAAE,KAAK,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;KAC5B,CAAC,CAAC;CACJ;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,kBAAkB,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;IACnD,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC9C,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"sync-runner-company.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner-company.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAqB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAUhC,OAAO,KAAK,EACV,uBAAuB,EACvB,SAAS,EACT,WAAW,EACX,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC1C,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,YAAY,EAAE,KAAK,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;KAC5B,CAAC,CAAC;IACH,eAAe,EAAE,KAAK,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;QAC/B,SAAS,EAAE,QAAQ,GAAG,WAAW,CAAC;QAClC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,kBAAkB,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;IACnD,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC9C,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAub/B"}
|
|
@@ -13,6 +13,7 @@ export async function executeCompanyFanout(options) {
|
|
|
13
13
|
const allConflicts = [];
|
|
14
14
|
const stateByCompany = new Map();
|
|
15
15
|
let meaningfulOutcomeCount = 0;
|
|
16
|
+
const pushPathResults = [];
|
|
16
17
|
for (const target of options.plan) {
|
|
17
18
|
const companyLabel = target.slug;
|
|
18
19
|
const state = createCompanyState(companyLabel);
|
|
@@ -189,7 +190,20 @@ export async function executeCompanyFanout(options) {
|
|
|
189
190
|
...(pushPrefixSet !== undefined
|
|
190
191
|
? { prefixSet: pushPrefixSet }
|
|
191
192
|
: {}),
|
|
193
|
+
...(options.deleteScopePaths?.length
|
|
194
|
+
? { deleteScopeRoots: options.deleteScopePaths }
|
|
195
|
+
: {}),
|
|
192
196
|
});
|
|
197
|
+
for (const result of pushResult.pathResults ?? []) {
|
|
198
|
+
pushPathResults.push({
|
|
199
|
+
relativePath: target.personalMode === true
|
|
200
|
+
? result.path
|
|
201
|
+
: `companies/${target.slug}/${result.path}`,
|
|
202
|
+
status: result.status,
|
|
203
|
+
operation: result.operation,
|
|
204
|
+
...(result.reason ? { reason: result.reason } : {}),
|
|
205
|
+
});
|
|
206
|
+
}
|
|
193
207
|
}
|
|
194
208
|
if (doPull && !pushResult.aborted) {
|
|
195
209
|
activePhase = "pull";
|
|
@@ -389,7 +403,13 @@ export async function executeCompanyFanout(options) {
|
|
|
389
403
|
}, { claims: options.telemetryClaims });
|
|
390
404
|
}
|
|
391
405
|
}
|
|
392
|
-
return {
|
|
406
|
+
return {
|
|
407
|
+
stateByCompany,
|
|
408
|
+
errors,
|
|
409
|
+
meaningfulOutcomeCount,
|
|
410
|
+
allConflicts,
|
|
411
|
+
pushPathResults,
|
|
412
|
+
};
|
|
393
413
|
}
|
|
394
414
|
function effectivePushPrefixSet(aclPrefixSet, scopePaths) {
|
|
395
415
|
if (scopePaths.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-runner-company.js","sourceRoot":"","sources":["../../src/bin/sync-runner-company.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync-runner-company.js","sourceRoot":"","sources":["../../src/bin/sync-runner-company.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { readJournal } from "../journal.js";
|
|
1
2
|
import type { TelemetryClaims } from "../telemetry-events.js";
|
|
2
|
-
import type { Direction, RunnerLoopDeps } from "./sync-runner.js";
|
|
3
|
+
import type { Direction, RunnerLoopDeps, RunnerPassOutcome } from "./sync-runner.js";
|
|
3
4
|
/**
|
|
4
5
|
* Map whole-box load to a poll interval in the [floor, ceil] range.
|
|
5
6
|
*
|
|
@@ -22,7 +23,7 @@ export interface ParsedLoopArgs {
|
|
|
22
23
|
direction?: Direction;
|
|
23
24
|
}
|
|
24
25
|
export interface WatchLoopRuntime {
|
|
25
|
-
runPassWithOperationLockAlreadyHeld: (passArgv: string[]) => Promise<number>;
|
|
26
|
+
runPassWithOperationLockAlreadyHeld: (passArgv: string[]) => Promise<number | RunnerPassOutcome>;
|
|
26
27
|
authRequiredPassExit: number;
|
|
27
28
|
defaultGetIdTokenClaims: () => ({
|
|
28
29
|
email?: string;
|
|
@@ -31,6 +32,13 @@ export interface WatchLoopRuntime {
|
|
|
31
32
|
apiUrl: string;
|
|
32
33
|
region: string;
|
|
33
34
|
}
|
|
35
|
+
type JournalFiles = ReturnType<typeof readJournal>["files"];
|
|
36
|
+
/**
|
|
37
|
+
* Select journal entries covered by one watcher delete. Exact file unlinks
|
|
38
|
+
* deliberately avoid enumeration; only directory unlinks expand descendants.
|
|
39
|
+
*/
|
|
40
|
+
export declare function journalEntriesForWatcherDelete(files: JournalFiles, key: string, kind: "unlink" | "unlinkDir"): Array<[string, JournalFiles[string]]>;
|
|
34
41
|
export declare function runOneShotWithOperationLock(argv: string[], parsed: ParsedLoopArgs, deps: RunnerLoopDeps, runtime: WatchLoopRuntime): Promise<number>;
|
|
35
42
|
export declare function runWatchLoop(argv: string[], parsed: ParsedLoopArgs, deps: RunnerLoopDeps, runtime: WatchLoopRuntime): Promise<number>;
|
|
43
|
+
export {};
|
|
36
44
|
//# sourceMappingURL=sync-runner-watch-loop.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-runner-watch-loop.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner-watch-loop.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync-runner-watch-loop.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner-watch-loop.ts"],"names":[],"mappings":"AAuBA,OAAO,EAIL,WAAW,EAEZ,MAAM,eAAe,CAAC;AAWvB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAS9D,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EAElB,MAAM,kBAAkB,CAAC;AAiB1B;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,MAA+B,EACxC,MAAM,GAAE,MAA8B,GACrC,MAAM,CAKR;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC,EAAE,CACnC,QAAQ,EAAE,MAAM,EAAE,KACf,OAAO,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe,CAAC,GAAG,IAAI,CAAC;IAC7E,qBAAqB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;AAE5D;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,QAAQ,GAAG,WAAW,GAC3B,KAAK,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CASvC;AAMD,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,MAAM,CAAC,CAksBjB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as os from "os";
|
|
2
2
|
import * as path from "path";
|
|
3
|
+
import * as fs from "fs";
|
|
3
4
|
import { inventoryManagedSnapshots } from "../backup-prune.js";
|
|
4
5
|
import { VaultClient } from "../index.js";
|
|
5
6
|
import { pickCanonicalPersonEntity } from "../vault-client.js";
|
|
@@ -9,6 +10,7 @@ import { TRANSIENT_NETWORK_EXIT } from "../lib/net-errors.js";
|
|
|
9
10
|
import { PARTIAL_SYNC_EXIT } from "../lib/exit-codes.js";
|
|
10
11
|
import { getOrCreateMachineId } from "../lib/machine-id.js";
|
|
11
12
|
import { TreeWatcher, systemClock, } from "../watcher.js";
|
|
13
|
+
import { clearLocalDeleteIntent, markLocalDeleteIntent, PERSONAL_VAULT_JOURNAL_SLUG, readJournal, writeJournal, } from "../journal.js";
|
|
12
14
|
import { NoopPushReceiver, } from "../sync/push-receiver.js";
|
|
13
15
|
import { resolveEventSync, startEventSync as defaultStartEventSync, } from "../sync/event-sync.js";
|
|
14
16
|
import { buildScopedDrainPullArgv, buildScopedPushArgv, buildTargetedPullArgv, routeChangeToTarget, routeKey, } from "./sync-runner-watch-routes.js";
|
|
@@ -39,12 +41,26 @@ export function adaptivePollMs(load1, cpuCount, floorMs = ADAPTIVE_POLL_FLOOR_MS
|
|
|
39
41
|
const ratio = Math.max(0, Math.min(1, saturation));
|
|
40
42
|
return Math.round(floorMs + ratio * (ceilMs - floorMs));
|
|
41
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Select journal entries covered by one watcher delete. Exact file unlinks
|
|
46
|
+
* deliberately avoid enumeration; only directory unlinks expand descendants.
|
|
47
|
+
*/
|
|
48
|
+
export function journalEntriesForWatcherDelete(files, key, kind) {
|
|
49
|
+
if (kind === "unlink") {
|
|
50
|
+
const entry = files[key];
|
|
51
|
+
return entry ? [[key, entry]] : [];
|
|
52
|
+
}
|
|
53
|
+
return Object.entries(files).filter(([candidate]) => key === "" || candidate === key || candidate.startsWith(`${key}/`));
|
|
54
|
+
}
|
|
55
|
+
function passExitCode(outcome) {
|
|
56
|
+
return typeof outcome === "number" ? outcome : outcome.exitCode;
|
|
57
|
+
}
|
|
42
58
|
export async function runOneShotWithOperationLock(argv, parsed, deps, runtime) {
|
|
43
59
|
const runOnce = deps.runPass ?? runtime.runPassWithOperationLockAlreadyHeld;
|
|
44
60
|
try {
|
|
45
|
-
return await withOperationLock(parsed.hqRoot, "sync", () => runOnce(argv), {
|
|
61
|
+
return passExitCode(await withOperationLock(parsed.hqRoot, "sync", () => runOnce(argv), {
|
|
46
62
|
timeoutSec: parsed.lockTimeoutSec,
|
|
47
|
-
});
|
|
63
|
+
}));
|
|
48
64
|
}
|
|
49
65
|
catch (err) {
|
|
50
66
|
if (err instanceof OperationLockedError) {
|
|
@@ -92,10 +108,14 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
92
108
|
return false;
|
|
93
109
|
if (a === "--scope-path")
|
|
94
110
|
return false;
|
|
111
|
+
if (a === "--delete-scope-path")
|
|
112
|
+
return false;
|
|
95
113
|
if (i > 0 && argv[i - 1] === "--poll-remote-ms")
|
|
96
114
|
return false;
|
|
97
115
|
if (i > 0 && argv[i - 1] === "--scope-path")
|
|
98
116
|
return false;
|
|
117
|
+
if (i > 0 && argv[i - 1] === "--delete-scope-path")
|
|
118
|
+
return false;
|
|
99
119
|
return true;
|
|
100
120
|
});
|
|
101
121
|
// Authoritative direction from parseArgs — never re-derive from argv (that
|
|
@@ -120,13 +140,14 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
120
140
|
throw err;
|
|
121
141
|
}
|
|
122
142
|
}
|
|
123
|
-
const runPassWithLock = async (passArgvForRun) => {
|
|
143
|
+
const runPassWithLock = async (passArgvForRun, prepare) => {
|
|
124
144
|
try {
|
|
125
145
|
const handle = acquireOperationLock(hqRoot, "sync", {
|
|
126
146
|
timeoutSec: 0,
|
|
127
147
|
onWaitStart: () => undefined,
|
|
128
148
|
});
|
|
129
149
|
try {
|
|
150
|
+
prepare?.();
|
|
130
151
|
return await runPass(passArgvForRun);
|
|
131
152
|
}
|
|
132
153
|
finally {
|
|
@@ -142,7 +163,10 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
142
163
|
}
|
|
143
164
|
}
|
|
144
165
|
try {
|
|
145
|
-
return await withOperationLock(hqRoot, "sync", () =>
|
|
166
|
+
return await withOperationLock(hqRoot, "sync", () => {
|
|
167
|
+
prepare?.();
|
|
168
|
+
return runPass(passArgvForRun);
|
|
169
|
+
}, { timeoutSec: parsed.lockTimeoutSec });
|
|
146
170
|
}
|
|
147
171
|
catch (err) {
|
|
148
172
|
if (err instanceof OperationLockedError) {
|
|
@@ -170,13 +194,13 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
170
194
|
const next = pendingPasses.shift();
|
|
171
195
|
if (!next)
|
|
172
196
|
return;
|
|
173
|
-
const current = startGuardedPass(next.argv);
|
|
197
|
+
const current = startGuardedPass(next.argv, next.prepare);
|
|
174
198
|
void current.then(next.resolve, next.reject);
|
|
175
199
|
};
|
|
176
|
-
const startGuardedPass = (passArgvForRun) => {
|
|
200
|
+
const startGuardedPass = (passArgvForRun, prepare) => {
|
|
177
201
|
const current = stopped
|
|
178
202
|
? Promise.resolve(0)
|
|
179
|
-
: runPassWithLock(passArgvForRun);
|
|
203
|
+
: runPassWithLock(passArgvForRun, prepare);
|
|
180
204
|
activePass = current;
|
|
181
205
|
void current
|
|
182
206
|
.finally(() => {
|
|
@@ -188,18 +212,19 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
188
212
|
.catch(() => undefined);
|
|
189
213
|
return current;
|
|
190
214
|
};
|
|
191
|
-
const runGuarded = (passArgvForRun) => {
|
|
215
|
+
const runGuarded = (passArgvForRun, prepare) => {
|
|
192
216
|
if (activePass === null && pendingPasses.length === 0) {
|
|
193
|
-
return startGuardedPass(passArgvForRun);
|
|
217
|
+
return startGuardedPass(passArgvForRun, prepare);
|
|
194
218
|
}
|
|
195
219
|
return new Promise((resolve, reject) => {
|
|
196
|
-
pendingPasses.push({ argv: passArgvForRun, resolve, reject });
|
|
220
|
+
pendingPasses.push({ argv: passArgvForRun, prepare, resolve, reject });
|
|
197
221
|
drainQueuedPasses();
|
|
198
222
|
});
|
|
199
223
|
};
|
|
200
224
|
let watcher = null;
|
|
201
225
|
let detachSignal = null;
|
|
202
226
|
const pendingWatcherPaths = new Map();
|
|
227
|
+
const pendingWatcherChanges = new Map();
|
|
203
228
|
let pendingWatcherOriginalBatch = null;
|
|
204
229
|
let pendingWatcherBareChange = false;
|
|
205
230
|
let pendingWatcherOverflowed = false;
|
|
@@ -216,6 +241,9 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
216
241
|
: null;
|
|
217
242
|
for (const [absolutePath, relativePath] of batch.paths.entries()) {
|
|
218
243
|
pendingWatcherPaths.set(absolutePath, relativePath);
|
|
244
|
+
const change = batch.changes?.get(absolutePath);
|
|
245
|
+
if (change)
|
|
246
|
+
pendingWatcherChanges.set(absolutePath, change);
|
|
219
247
|
}
|
|
220
248
|
if (batch.overflowed) {
|
|
221
249
|
pendingWatcherOverflowed = true;
|
|
@@ -226,7 +254,9 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
226
254
|
}
|
|
227
255
|
if (changedRelPath) {
|
|
228
256
|
pendingWatcherOriginalBatch = null;
|
|
229
|
-
|
|
257
|
+
const absolutePath = path.join(hqRoot, changedRelPath);
|
|
258
|
+
pendingWatcherPaths.set(absolutePath, changedRelPath);
|
|
259
|
+
pendingWatcherChanges.delete(absolutePath);
|
|
230
260
|
return;
|
|
231
261
|
}
|
|
232
262
|
pendingWatcherOriginalBatch = null;
|
|
@@ -238,6 +268,9 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
238
268
|
: pendingWatcherPaths.size > 0 || pendingWatcherOverflowed
|
|
239
269
|
? {
|
|
240
270
|
paths: new Map(pendingWatcherPaths),
|
|
271
|
+
...(pendingWatcherChanges.size > 0
|
|
272
|
+
? { changes: new Map(pendingWatcherChanges) }
|
|
273
|
+
: {}),
|
|
241
274
|
...(pendingWatcherOverflowed
|
|
242
275
|
? {
|
|
243
276
|
overflowed: true,
|
|
@@ -249,6 +282,7 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
249
282
|
: null;
|
|
250
283
|
const bare = pendingWatcherBareChange;
|
|
251
284
|
pendingWatcherPaths.clear();
|
|
285
|
+
pendingWatcherChanges.clear();
|
|
252
286
|
pendingWatcherOriginalBatch = null;
|
|
253
287
|
pendingWatcherBareChange = false;
|
|
254
288
|
pendingWatcherOverflowed = false;
|
|
@@ -262,6 +296,113 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
262
296
|
pendingWatcherPaths.set(absolutePath, relativePath);
|
|
263
297
|
}
|
|
264
298
|
};
|
|
299
|
+
const journalCoordinates = (relativePath) => {
|
|
300
|
+
const route = routeChangeToTarget(relativePath);
|
|
301
|
+
if (!route)
|
|
302
|
+
return null;
|
|
303
|
+
if (route.kind === "personal") {
|
|
304
|
+
return { slug: PERSONAL_VAULT_JOURNAL_SLUG, key: relativePath };
|
|
305
|
+
}
|
|
306
|
+
const prefix = `companies/${route.slug}`;
|
|
307
|
+
return {
|
|
308
|
+
slug: route.slug,
|
|
309
|
+
key: relativePath === prefix
|
|
310
|
+
? ""
|
|
311
|
+
: relativePath.slice(prefix.length + 1),
|
|
312
|
+
};
|
|
313
|
+
};
|
|
314
|
+
const captureLocalDeleteSnapshots = (relativePath, kind) => {
|
|
315
|
+
const coordinates = journalCoordinates(relativePath);
|
|
316
|
+
const route = routeChangeToTarget(relativePath);
|
|
317
|
+
if (!coordinates || !route)
|
|
318
|
+
return [];
|
|
319
|
+
const journal = readJournal(coordinates.slug);
|
|
320
|
+
const snapshots = [];
|
|
321
|
+
const captureEntry = (key, entry) => {
|
|
322
|
+
if (!entry?.remoteEtag || !entry.kind || entry.removedAt !== undefined) {
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
const snapshot = {
|
|
326
|
+
journalSlug: coordinates.slug,
|
|
327
|
+
journalPath: key,
|
|
328
|
+
deleteScopeRoot: coordinates.key,
|
|
329
|
+
absolutePath: route.kind === "company"
|
|
330
|
+
? path.join(hqRoot, "companies", route.slug, key)
|
|
331
|
+
: path.join(hqRoot, key),
|
|
332
|
+
remoteEtag: entry.remoteEtag,
|
|
333
|
+
localHash: entry.hash,
|
|
334
|
+
localKind: entry.kind,
|
|
335
|
+
};
|
|
336
|
+
if (markLocalDeleteIntent(journal, key, snapshot.localHash, snapshot.localKind, snapshot.remoteEtag)) {
|
|
337
|
+
snapshots.push(snapshot);
|
|
338
|
+
}
|
|
339
|
+
};
|
|
340
|
+
// Chokidar emits one unlink per file during rm -rf. Avoid walking the
|
|
341
|
+
// whole shard for every exact-key event; directory unlinks alone need
|
|
342
|
+
// descendant expansion.
|
|
343
|
+
for (const [key, entry] of journalEntriesForWatcherDelete(journal.files, coordinates.key, kind)) {
|
|
344
|
+
captureEntry(key, entry);
|
|
345
|
+
}
|
|
346
|
+
// Persist at observation time, before the debounced batch can queue
|
|
347
|
+
// behind an in-flight pull. The pull planner treats this current,
|
|
348
|
+
// version-bound intent as authoritative and will not resurrect the path.
|
|
349
|
+
if (snapshots.length > 0) {
|
|
350
|
+
writeJournal(coordinates.slug, journal);
|
|
351
|
+
}
|
|
352
|
+
return snapshots;
|
|
353
|
+
};
|
|
354
|
+
const prepareWatcherChanges = (changes) => {
|
|
355
|
+
const journals = new Map();
|
|
356
|
+
const dirty = new Set();
|
|
357
|
+
const journalFor = (slug) => {
|
|
358
|
+
const loaded = journals.get(slug);
|
|
359
|
+
if (loaded)
|
|
360
|
+
return loaded;
|
|
361
|
+
const journal = readJournal(slug);
|
|
362
|
+
journals.set(slug, journal);
|
|
363
|
+
return journal;
|
|
364
|
+
};
|
|
365
|
+
for (const [absolutePath, change] of changes.entries()) {
|
|
366
|
+
if (change.kind === "unlink" || change.kind === "unlinkDir") {
|
|
367
|
+
for (const snapshot of change.deleteSnapshots ?? []) {
|
|
368
|
+
let absent = false;
|
|
369
|
+
try {
|
|
370
|
+
fs.lstatSync(snapshot.absolutePath);
|
|
371
|
+
}
|
|
372
|
+
catch (err) {
|
|
373
|
+
const code = err && typeof err === "object" && "code" in err
|
|
374
|
+
? err.code
|
|
375
|
+
: undefined;
|
|
376
|
+
if (code !== "ENOENT")
|
|
377
|
+
continue;
|
|
378
|
+
absent = true;
|
|
379
|
+
}
|
|
380
|
+
if (!absent) {
|
|
381
|
+
if (clearLocalDeleteIntent(journalFor(snapshot.journalSlug), snapshot.journalPath)) {
|
|
382
|
+
dirty.add(snapshot.journalSlug);
|
|
383
|
+
}
|
|
384
|
+
continue;
|
|
385
|
+
}
|
|
386
|
+
if (markLocalDeleteIntent(journalFor(snapshot.journalSlug), snapshot.journalPath, snapshot.localHash, snapshot.localKind, snapshot.remoteEtag)) {
|
|
387
|
+
dirty.add(snapshot.journalSlug);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
continue;
|
|
391
|
+
}
|
|
392
|
+
const relativePath = path
|
|
393
|
+
.relative(hqRoot, absolutePath)
|
|
394
|
+
.split(path.sep)
|
|
395
|
+
.join("/");
|
|
396
|
+
const coordinates = journalCoordinates(relativePath);
|
|
397
|
+
if (coordinates &&
|
|
398
|
+
clearLocalDeleteIntent(journalFor(coordinates.slug), coordinates.key)) {
|
|
399
|
+
dirty.add(coordinates.slug);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
for (const slug of dirty) {
|
|
403
|
+
writeJournal(slug, journals.get(slug));
|
|
404
|
+
}
|
|
405
|
+
};
|
|
265
406
|
const groupBatchByRoute = (batch) => {
|
|
266
407
|
const grouped = new Map();
|
|
267
408
|
for (const [absolutePath, relativePath] of batch.paths.entries()) {
|
|
@@ -270,9 +411,23 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
270
411
|
continue;
|
|
271
412
|
const key = routeKey(route);
|
|
272
413
|
const existing = grouped.get(key) ??
|
|
273
|
-
{
|
|
414
|
+
{
|
|
415
|
+
route,
|
|
416
|
+
paths: new Map(),
|
|
417
|
+
changes: new Map(),
|
|
418
|
+
relPaths: [],
|
|
419
|
+
deleteScopeRoots: [],
|
|
420
|
+
};
|
|
274
421
|
existing.paths.set(absolutePath, relativePath);
|
|
422
|
+
const change = batch.changes?.get(absolutePath);
|
|
423
|
+
if (change)
|
|
424
|
+
existing.changes.set(absolutePath, change);
|
|
275
425
|
existing.relPaths = [...new Set([...existing.paths.values()])];
|
|
426
|
+
existing.deleteScopeRoots = [
|
|
427
|
+
...new Set([...existing.changes.values()].flatMap((item) => (item.deleteSnapshots ?? []).flatMap((snapshot) => snapshot.deleteScopeRoot === undefined
|
|
428
|
+
? []
|
|
429
|
+
: [snapshot.deleteScopeRoot]))),
|
|
430
|
+
];
|
|
276
431
|
grouped.set(key, existing);
|
|
277
432
|
}
|
|
278
433
|
return grouped;
|
|
@@ -286,11 +441,25 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
286
441
|
if (drainRunsPush && batch && batch.paths.size > 0) {
|
|
287
442
|
const grouped = groupBatchByRoute(batch);
|
|
288
443
|
for (const group of grouped.values()) {
|
|
289
|
-
const scopedArgv = buildScopedPushArgv(group.route, group.relPaths, passArgv);
|
|
444
|
+
const scopedArgv = buildScopedPushArgv(group.route, group.relPaths, passArgv, group.deleteScopeRoots);
|
|
290
445
|
try {
|
|
291
|
-
const result = await runGuarded(scopedArgv
|
|
292
|
-
|
|
293
|
-
|
|
446
|
+
const result = await runGuarded(scopedArgv, group.changes.size > 0
|
|
447
|
+
? () => prepareWatcherChanges(group.changes)
|
|
448
|
+
: undefined);
|
|
449
|
+
if (passExitCode(result) === 0) {
|
|
450
|
+
const refusedPaths = new Set(typeof result === "number"
|
|
451
|
+
? []
|
|
452
|
+
: (result.result?.pushPathResults ?? [])
|
|
453
|
+
.filter((pathResult) => pathResult.status === "refused")
|
|
454
|
+
.map((pathResult) => pathResult.relativePath));
|
|
455
|
+
publishBatchIfAvailable(new Map([...group.paths.entries()].filter(([absolutePath, relativePath]) => {
|
|
456
|
+
if (refusedPaths.has(relativePath))
|
|
457
|
+
return false;
|
|
458
|
+
if (group.changes.get(absolutePath)?.kind !== "unlinkDir") {
|
|
459
|
+
return true;
|
|
460
|
+
}
|
|
461
|
+
return ![...refusedPaths].some((refusedPath) => refusedPath.startsWith(`${relativePath}/`));
|
|
462
|
+
})));
|
|
294
463
|
}
|
|
295
464
|
else {
|
|
296
465
|
restorePendingWatcherPaths(group.paths);
|
|
@@ -304,7 +473,7 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
304
473
|
}
|
|
305
474
|
if (!drainRunsPull)
|
|
306
475
|
return 0;
|
|
307
|
-
return runGuarded(buildScopedDrainPullArgv(passArgv));
|
|
476
|
+
return passExitCode(await runGuarded(buildScopedDrainPullArgv(passArgv)));
|
|
308
477
|
};
|
|
309
478
|
let receiver = null;
|
|
310
479
|
let eventSync = null;
|
|
@@ -317,8 +486,14 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
317
486
|
debounceMs: opts.debounceMs,
|
|
318
487
|
clock: opts.clock,
|
|
319
488
|
personalMode: !companiesMode,
|
|
489
|
+
captureLocalDeleteSnapshots: opts.captureLocalDeleteSnapshots,
|
|
320
490
|
}));
|
|
321
|
-
watcher = createWatcher({
|
|
491
|
+
watcher = createWatcher({
|
|
492
|
+
hqRoot,
|
|
493
|
+
debounceMs,
|
|
494
|
+
clock,
|
|
495
|
+
captureLocalDeleteSnapshots,
|
|
496
|
+
});
|
|
322
497
|
watcher.onChange((changedRelPath, batch) => {
|
|
323
498
|
if (stopped)
|
|
324
499
|
return;
|
|
@@ -333,8 +508,8 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
333
508
|
return;
|
|
334
509
|
const targetedArgv = buildTargetedPullArgv(route, passArgv);
|
|
335
510
|
const result = await runGuarded(targetedArgv);
|
|
336
|
-
if (result !== 0) {
|
|
337
|
-
throw new Error(`targeted pull failed with exit code ${result}`);
|
|
511
|
+
if (passExitCode(result) !== 0) {
|
|
512
|
+
throw new Error(`targeted pull failed with exit code ${passExitCode(result)}`);
|
|
338
513
|
}
|
|
339
514
|
};
|
|
340
515
|
const createReceiver = deps.createReceiver ?? (() => new NoopPushReceiver());
|
|
@@ -435,13 +610,14 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
435
610
|
const result = shouldRunFull
|
|
436
611
|
? await runGuarded(passArgv)
|
|
437
612
|
: await runScopedDrain(pending.batch);
|
|
438
|
-
|
|
613
|
+
const exitCode = passExitCode(result);
|
|
614
|
+
if (exitCode === runtime.authRequiredPassExit) {
|
|
439
615
|
// The pass already emitted auth-error. Stop the unattended loop but
|
|
440
616
|
// keep the process exit successful so desktop/manual consumers treat
|
|
441
617
|
// this as a reauth state, not a crash.
|
|
442
618
|
return 0;
|
|
443
619
|
}
|
|
444
|
-
else if (
|
|
620
|
+
else if (exitCode === TRANSIENT_NETWORK_EXIT) {
|
|
445
621
|
// The machine was briefly offline (the discovery fetch failed after
|
|
446
622
|
// retries). That is NOT a crash — stay alive and retry on the next
|
|
447
623
|
// poll. Returning it here would exit the watcher and the menubar would
|
|
@@ -449,7 +625,7 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
449
625
|
// (HQ-SYNC-1W). Log to stderr so it still shows up as a breadcrumb.
|
|
450
626
|
process.stderr.write("hq-sync-runner: watch pass skipped — transient network failure; retrying next poll\n");
|
|
451
627
|
}
|
|
452
|
-
else if (
|
|
628
|
+
else if (exitCode === PARTIAL_SYNC_EXIT) {
|
|
453
629
|
// The pass completed but some per-file transfers threw. Also NOT a
|
|
454
630
|
// crash: the per-file errors were already emitted as ndjson `error`
|
|
455
631
|
// events (menubar breadcrumbs + journal), and exiting here just gets
|
|
@@ -459,8 +635,8 @@ export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
|
459
635
|
// on the next tick. A one-shot `hq sync` still exits 2.
|
|
460
636
|
process.stderr.write("hq-sync-runner: watch pass completed with per-file errors; staying alive, retrying next poll\n");
|
|
461
637
|
}
|
|
462
|
-
else if (
|
|
463
|
-
return
|
|
638
|
+
else if (exitCode !== 0) {
|
|
639
|
+
return exitCode;
|
|
464
640
|
}
|
|
465
641
|
if (Date.now() >= nextBackupPruneAt) {
|
|
466
642
|
// Advance before invoking: a failed/unavailable backstop cannot become
|