@indigoai-us/hq-cloud 6.15.96 → 6.15.98
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/dist/bin/sync-runner-company.d.ts.map +1 -1
- package/dist/bin/sync-runner-company.js +13 -6
- package/dist/bin/sync-runner-company.js.map +1 -1
- package/dist/bin/sync-runner-company.test.js +74 -0
- package/dist/bin/sync-runner-company.test.js.map +1 -1
- package/dist/bin/sync-runner-planning.d.ts.map +1 -1
- package/dist/bin/sync-runner-planning.js +10 -2
- package/dist/bin/sync-runner-planning.js.map +1 -1
- package/dist/bin/sync-runner-watch-loop.d.ts +7 -2
- package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
- package/dist/bin/sync-runner-watch-loop.js +104 -34
- package/dist/bin/sync-runner-watch-loop.js.map +1 -1
- package/dist/bin/sync-runner.d.ts.map +1 -1
- package/dist/bin/sync-runner.js +44 -8
- package/dist/bin/sync-runner.js.map +1 -1
- package/dist/bin/sync-runner.test.js +127 -1
- package/dist/bin/sync-runner.test.js.map +1 -1
- package/dist/cli/share.d.ts.map +1 -1
- package/dist/cli/share.js +78 -13
- package/dist/cli/share.js.map +1 -1
- package/dist/cli/share.test.js +84 -1
- package/dist/cli/share.test.js.map +1 -1
- package/dist/cli/sync.d.ts +4 -1
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +47 -5
- package/dist/cli/sync.js.map +1 -1
- package/dist/cognito-auth.d.ts +32 -0
- package/dist/cognito-auth.d.ts.map +1 -1
- package/dist/cognito-auth.js +46 -1
- package/dist/cognito-auth.js.map +1 -1
- package/dist/cognito-auth.test.js +49 -0
- package/dist/cognito-auth.test.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/outposts/self-deploy.d.ts.map +1 -1
- package/dist/outposts/self-deploy.js +7 -5
- package/dist/outposts/self-deploy.js.map +1 -1
- package/dist/outposts/self-deploy.test.js +3 -2
- package/dist/outposts/self-deploy.test.js.map +1 -1
- package/dist/sync/area-ledger-auto-migration.d.ts +55 -0
- package/dist/sync/area-ledger-auto-migration.d.ts.map +1 -0
- package/dist/sync/area-ledger-auto-migration.js +167 -0
- package/dist/sync/area-ledger-auto-migration.js.map +1 -0
- package/dist/sync/area-ledger-auto-migration.test.d.ts +2 -0
- package/dist/sync/area-ledger-auto-migration.test.d.ts.map +1 -0
- package/dist/sync/area-ledger-auto-migration.test.js +229 -0
- package/dist/sync/area-ledger-auto-migration.test.js.map +1 -0
- package/dist/sync/feature-flags.d.ts +68 -15
- package/dist/sync/feature-flags.d.ts.map +1 -1
- package/dist/sync/feature-flags.js +98 -21
- package/dist/sync/feature-flags.js.map +1 -1
- package/dist/sync/feature-flags.test.js +77 -3
- package/dist/sync/feature-flags.test.js.map +1 -1
- package/dist/sync/index.d.ts +2 -2
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +1 -1
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/sync-work.d.ts +1 -1
- package/dist/sync/sync-work.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-deploy.test.js","sourceRoot":"","sources":["../../src/outposts/self-deploy.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"self-deploy.test.js","sourceRoot":"","sources":["../../src/outposts/self-deploy.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Watch-mode auto-migration from the personal v3 journal to AreaLedger.
|
|
3
|
+
*
|
|
4
|
+
* Manual conversion remains `src/bin/area-ledger-migration.ts`. This scheduler
|
|
5
|
+
* is the background path for a box that already has an authorized realtime
|
|
6
|
+
* event-sync session: copy/catch-up runs as a low-priority chore, and cutover
|
|
7
|
+
* happens only after clean parity under the exclusive operation lock.
|
|
8
|
+
*
|
|
9
|
+
* Failures never propagate to the caller. Abandoned or composed-back manifests
|
|
10
|
+
* are left to {@link AreaLedgerMigration}'s state machine — this module does
|
|
11
|
+
* not force a cutover from an unready phase.
|
|
12
|
+
*/
|
|
13
|
+
import { AreaLedgerMigration, type LayoutPhase, type LayoutState } from "./area-ledger-migration.js";
|
|
14
|
+
import type { FeatureSwitch } from "./feature-flags.js";
|
|
15
|
+
import type { SyncJournal } from "../types.js";
|
|
16
|
+
export declare const AREA_AUTO_MIGRATION_STARTED_EVENT = "area_migration_started";
|
|
17
|
+
export declare const AREA_AUTO_MIGRATION_COMPLETED_EVENT = "area_migration_completed";
|
|
18
|
+
export declare const AREA_AUTO_MIGRATION_SOURCE = "sync-runner";
|
|
19
|
+
export declare const AREA_AUTO_MIGRATION_RETRY_MIN_MS = 1000;
|
|
20
|
+
export declare const AREA_AUTO_MIGRATION_RETRY_MAX_MS: number;
|
|
21
|
+
export type AreaAutoMigrationPassStatus = "skipped" | "copied" | "cut-over" | "parity-mismatch" | "lock-busy" | "error";
|
|
22
|
+
export interface AreaAutoMigrationBridge {
|
|
23
|
+
copyAndCatchUp(): {
|
|
24
|
+
state: Pick<LayoutState, "phase">;
|
|
25
|
+
};
|
|
26
|
+
verifyParity(legacy: SyncJournal): unknown;
|
|
27
|
+
cutOver(): Pick<LayoutState, "phase">;
|
|
28
|
+
readLegacyJournal(): SyncJournal;
|
|
29
|
+
}
|
|
30
|
+
export interface AreaAutoMigrationDeps {
|
|
31
|
+
now(): number;
|
|
32
|
+
hasActiveRealtimeSession(): boolean;
|
|
33
|
+
areaStorageSwitch(): FeatureSwitch;
|
|
34
|
+
readPhase(): LayoutPhase | undefined;
|
|
35
|
+
/** True once a personal-vault v3 journal exists to copy. */
|
|
36
|
+
hasLegacyJournal(): boolean;
|
|
37
|
+
createMigration(): AreaAutoMigrationBridge;
|
|
38
|
+
withExclusiveLock<T>(fn: () => T): T;
|
|
39
|
+
enqueueChore(run: () => void): void;
|
|
40
|
+
log(message: string): void;
|
|
41
|
+
emitTelemetry(eventName: typeof AREA_AUTO_MIGRATION_STARTED_EVENT | typeof AREA_AUTO_MIGRATION_COMPLETED_EVENT): void;
|
|
42
|
+
/** Fired after a durable area-authoritative cutover. */
|
|
43
|
+
onCutOver?: () => void;
|
|
44
|
+
}
|
|
45
|
+
export interface AreaAutoMigrationScheduler {
|
|
46
|
+
/** Called once per watch-loop tick. Never throws. */
|
|
47
|
+
onTick(): void;
|
|
48
|
+
}
|
|
49
|
+
export declare function openPersonalVaultAreaMigration(hqRoot: string, stateDir: string, journalSlug: string): {
|
|
50
|
+
migration: AreaLedgerMigration;
|
|
51
|
+
readLegacyJournal: () => SyncJournal;
|
|
52
|
+
};
|
|
53
|
+
export declare function readPersonalVaultLayoutPhase(stateDir: string, journalSlug: string): LayoutPhase | undefined;
|
|
54
|
+
export declare function createAreaAutoMigrationScheduler(deps: AreaAutoMigrationDeps): AreaAutoMigrationScheduler;
|
|
55
|
+
//# sourceMappingURL=area-ledger-auto-migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"area-ledger-auto-migration.d.ts","sourceRoot":"","sources":["../../src/sync/area-ledger-auto-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EACL,mBAAmB,EAEnB,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AAKpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,eAAO,MAAM,iCAAiC,2BAA2B,CAAC;AAC1E,eAAO,MAAM,mCAAmC,6BAA6B,CAAC;AAC9E,eAAO,MAAM,0BAA0B,gBAAgB,CAAC;AAExD,eAAO,MAAM,gCAAgC,OAAQ,CAAC;AACtD,eAAO,MAAM,gCAAgC,QAAa,CAAC;AAO3D,MAAM,MAAM,2BAA2B,GACnC,SAAS,GACT,QAAQ,GACR,UAAU,GACV,iBAAiB,GACjB,WAAW,GACX,OAAO,CAAC;AAEZ,MAAM,WAAW,uBAAuB;IACtC,cAAc,IAAI;QAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IACxD,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAC3C,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtC,iBAAiB,IAAI,WAAW,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,IAAI,MAAM,CAAC;IACd,wBAAwB,IAAI,OAAO,CAAC;IACpC,iBAAiB,IAAI,aAAa,CAAC;IACnC,SAAS,IAAI,WAAW,GAAG,SAAS,CAAC;IACrC,4DAA4D;IAC5D,gBAAgB,IAAI,OAAO,CAAC;IAC5B,eAAe,IAAI,uBAAuB,CAAC;IAC3C,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACrC,YAAY,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACpC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,CACX,SAAS,EACL,OAAO,iCAAiC,GACxC,OAAO,mCAAmC,GAC7C,IAAI,CAAC;IACR,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,qDAAqD;IACrD,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB;IAAE,SAAS,EAAE,mBAAmB,CAAC;IAAC,iBAAiB,EAAE,MAAM,WAAW,CAAA;CAAE,CAe1E;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,WAAW,GAAG,SAAS,CAEzB;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,qBAAqB,GAC1B,0BAA0B,CAwH5B"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Watch-mode auto-migration from the personal v3 journal to AreaLedger.
|
|
3
|
+
*
|
|
4
|
+
* Manual conversion remains `src/bin/area-ledger-migration.ts`. This scheduler
|
|
5
|
+
* is the background path for a box that already has an authorized realtime
|
|
6
|
+
* event-sync session: copy/catch-up runs as a low-priority chore, and cutover
|
|
7
|
+
* happens only after clean parity under the exclusive operation lock.
|
|
8
|
+
*
|
|
9
|
+
* Failures never propagate to the caller. Abandoned or composed-back manifests
|
|
10
|
+
* are left to {@link AreaLedgerMigration}'s state machine — this module does
|
|
11
|
+
* not force a cutover from an unready phase.
|
|
12
|
+
*/
|
|
13
|
+
import { AreaLedgerMigration, readAreaLayoutState, } from "./area-ledger-migration.js";
|
|
14
|
+
import { AreaResolver, inspectPersonalVaultAreaScope, } from "./area-resolver.js";
|
|
15
|
+
import { openJournalStateStoreForMigration } from "../journal.js";
|
|
16
|
+
export const AREA_AUTO_MIGRATION_STARTED_EVENT = "area_migration_started";
|
|
17
|
+
export const AREA_AUTO_MIGRATION_COMPLETED_EVENT = "area_migration_completed";
|
|
18
|
+
export const AREA_AUTO_MIGRATION_SOURCE = "sync-runner";
|
|
19
|
+
export const AREA_AUTO_MIGRATION_RETRY_MIN_MS = 1_000;
|
|
20
|
+
export const AREA_AUTO_MIGRATION_RETRY_MAX_MS = 5 * 60_000;
|
|
21
|
+
const CUTOVER_PHASES = new Set([
|
|
22
|
+
"catching-up",
|
|
23
|
+
"cutover-ready",
|
|
24
|
+
]);
|
|
25
|
+
export function openPersonalVaultAreaMigration(hqRoot, stateDir, journalSlug) {
|
|
26
|
+
const resolver = AreaResolver.forPersonalVault(inspectPersonalVaultAreaScope(hqRoot));
|
|
27
|
+
const legacyStore = openJournalStateStoreForMigration(journalSlug);
|
|
28
|
+
const migration = new AreaLedgerMigration({
|
|
29
|
+
rootDir: stateDir,
|
|
30
|
+
journalSlug,
|
|
31
|
+
resolver,
|
|
32
|
+
legacyStore,
|
|
33
|
+
});
|
|
34
|
+
return {
|
|
35
|
+
migration,
|
|
36
|
+
readLegacyJournal: () => legacyStore.getState().journal,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function readPersonalVaultLayoutPhase(stateDir, journalSlug) {
|
|
40
|
+
return readAreaLayoutState(stateDir, journalSlug)?.phase;
|
|
41
|
+
}
|
|
42
|
+
export function createAreaAutoMigrationScheduler(deps) {
|
|
43
|
+
let executing = false;
|
|
44
|
+
let done = false;
|
|
45
|
+
let started = false;
|
|
46
|
+
let nextAttemptAt = 0;
|
|
47
|
+
let failureStreak = 0;
|
|
48
|
+
const backoffMs = () => {
|
|
49
|
+
const shift = Math.min(failureStreak, 8);
|
|
50
|
+
return Math.min(AREA_AUTO_MIGRATION_RETRY_MAX_MS, AREA_AUTO_MIGRATION_RETRY_MIN_MS * 2 ** shift);
|
|
51
|
+
};
|
|
52
|
+
const scheduleRetry = (failed) => {
|
|
53
|
+
if (failed)
|
|
54
|
+
failureStreak += 1;
|
|
55
|
+
else
|
|
56
|
+
failureStreak = 0;
|
|
57
|
+
nextAttemptAt = deps.now() + (failed ? backoffMs() : AREA_AUTO_MIGRATION_RETRY_MIN_MS);
|
|
58
|
+
};
|
|
59
|
+
const executePass = () => {
|
|
60
|
+
if (executing)
|
|
61
|
+
return "skipped";
|
|
62
|
+
executing = true;
|
|
63
|
+
try {
|
|
64
|
+
if (!started) {
|
|
65
|
+
started = true;
|
|
66
|
+
try {
|
|
67
|
+
deps.emitTelemetry(AREA_AUTO_MIGRATION_STARTED_EVENT);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
deps.log(`area-ledger auto-migration start telemetry failed: ${describe(error)}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const bridge = deps.createMigration();
|
|
74
|
+
const copied = bridge.copyAndCatchUp();
|
|
75
|
+
const phase = copied.state.phase;
|
|
76
|
+
if (phase === "area-authoritative") {
|
|
77
|
+
done = true;
|
|
78
|
+
return "cut-over";
|
|
79
|
+
}
|
|
80
|
+
if (!CUTOVER_PHASES.has(phase)) {
|
|
81
|
+
scheduleRetry(false);
|
|
82
|
+
return "copied";
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
bridge.verifyParity(bridge.readLegacyJournal());
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
deps.log(`area-ledger auto-migration parity mismatch; deferring cutover: ${describe(error)}`);
|
|
89
|
+
scheduleRetry(true);
|
|
90
|
+
return "parity-mismatch";
|
|
91
|
+
}
|
|
92
|
+
let cutOver;
|
|
93
|
+
try {
|
|
94
|
+
cutOver = deps.withExclusiveLock(() => bridge.cutOver());
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
deps.log(`area-ledger auto-migration cutover failed: ${describe(error)}`);
|
|
98
|
+
scheduleRetry(true);
|
|
99
|
+
return "lock-busy";
|
|
100
|
+
}
|
|
101
|
+
if (cutOver.phase === "area-authoritative") {
|
|
102
|
+
done = true;
|
|
103
|
+
try {
|
|
104
|
+
deps.emitTelemetry(AREA_AUTO_MIGRATION_COMPLETED_EVENT);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
deps.log(`area-ledger auto-migration completion telemetry failed: ${describe(error)}`);
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
deps.onCutOver?.();
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
deps.log(`area-ledger auto-migration post-cutover hook failed: ${describe(error)}`);
|
|
114
|
+
}
|
|
115
|
+
return "cut-over";
|
|
116
|
+
}
|
|
117
|
+
scheduleRetry(false);
|
|
118
|
+
return "copied";
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
executing = false;
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
const shouldRun = () => {
|
|
125
|
+
if (done || executing)
|
|
126
|
+
return false;
|
|
127
|
+
if (deps.areaStorageSwitch() === "off")
|
|
128
|
+
return false;
|
|
129
|
+
if (!deps.hasActiveRealtimeSession())
|
|
130
|
+
return false;
|
|
131
|
+
if (deps.readPhase() === "area-authoritative") {
|
|
132
|
+
done = true;
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
if (deps.readPhase() === undefined && !deps.hasLegacyJournal())
|
|
136
|
+
return false;
|
|
137
|
+
if (deps.now() < nextAttemptAt)
|
|
138
|
+
return false;
|
|
139
|
+
return true;
|
|
140
|
+
};
|
|
141
|
+
return {
|
|
142
|
+
onTick() {
|
|
143
|
+
try {
|
|
144
|
+
if (!shouldRun())
|
|
145
|
+
return;
|
|
146
|
+
nextAttemptAt = deps.now() + AREA_AUTO_MIGRATION_RETRY_MIN_MS;
|
|
147
|
+
deps.enqueueChore(() => {
|
|
148
|
+
try {
|
|
149
|
+
executePass();
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
deps.log(`area-ledger auto-migration failed: ${describe(error)}`);
|
|
153
|
+
scheduleRetry(true);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
deps.log(`area-ledger auto-migration schedule failed: ${describe(error)}`);
|
|
159
|
+
scheduleRetry(true);
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
function describe(error) {
|
|
165
|
+
return error instanceof Error ? error.message : String(error);
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=area-ledger-auto-migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"area-ledger-auto-migration.js","sourceRoot":"","sources":["../../src/sync/area-ledger-auto-migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"area-ledger-auto-migration.test.d.ts","sourceRoot":"","sources":["../../src/sync/area-ledger-auto-migration.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { AREA_AUTO_MIGRATION_COMPLETED_EVENT, AREA_AUTO_MIGRATION_RETRY_MAX_MS, AREA_AUTO_MIGRATION_STARTED_EVENT, createAreaAutoMigrationScheduler, } from "./area-ledger-auto-migration.js";
|
|
3
|
+
function emptyJournal() {
|
|
4
|
+
return { version: "2", lastSync: "", files: {}, pulls: [] };
|
|
5
|
+
}
|
|
6
|
+
function makeBridge(overrides = {}) {
|
|
7
|
+
return {
|
|
8
|
+
copyAndCatchUp: () => ({ state: { phase: "catching-up" } }),
|
|
9
|
+
verifyParity: () => ({ rowCount: 0 }),
|
|
10
|
+
cutOver: () => ({ phase: "area-authoritative" }),
|
|
11
|
+
readLegacyJournal: () => emptyJournal(),
|
|
12
|
+
...overrides,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function makeDeps(overrides = {}) {
|
|
16
|
+
const chores = overrides.chores ?? [];
|
|
17
|
+
const realtime = overrides.realtime ?? { value: true };
|
|
18
|
+
const phase = overrides.phase ?? { value: undefined };
|
|
19
|
+
const areaStorage = overrides.areaStorage ?? { value: "auto" };
|
|
20
|
+
return {
|
|
21
|
+
now: () => 0,
|
|
22
|
+
hasActiveRealtimeSession: () => realtime.value,
|
|
23
|
+
areaStorageSwitch: () => areaStorage.value,
|
|
24
|
+
readPhase: () => phase.value,
|
|
25
|
+
hasLegacyJournal: () => true,
|
|
26
|
+
createMigration: () => makeBridge(),
|
|
27
|
+
withExclusiveLock: (fn) => fn(),
|
|
28
|
+
enqueueChore: (run) => {
|
|
29
|
+
chores.push(run);
|
|
30
|
+
},
|
|
31
|
+
log: () => undefined,
|
|
32
|
+
emitTelemetry: () => undefined,
|
|
33
|
+
...overrides,
|
|
34
|
+
chores,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function drain(chores) {
|
|
38
|
+
while (chores.length > 0)
|
|
39
|
+
chores.shift()();
|
|
40
|
+
}
|
|
41
|
+
describe("area-ledger auto-migration scheduler", () => {
|
|
42
|
+
it("does not start migration without an active realtime session", () => {
|
|
43
|
+
const createMigration = vi.fn(() => makeBridge());
|
|
44
|
+
const enqueueChore = vi.fn();
|
|
45
|
+
const deps = makeDeps({
|
|
46
|
+
hasActiveRealtimeSession: () => false,
|
|
47
|
+
createMigration,
|
|
48
|
+
enqueueChore,
|
|
49
|
+
});
|
|
50
|
+
const scheduler = createAreaAutoMigrationScheduler(deps);
|
|
51
|
+
scheduler.onTick();
|
|
52
|
+
expect(enqueueChore).not.toHaveBeenCalled();
|
|
53
|
+
expect(createMigration).not.toHaveBeenCalled();
|
|
54
|
+
});
|
|
55
|
+
it("enqueues a catch-up chore when realtime is live and the layout is still legacy", () => {
|
|
56
|
+
const copyAndCatchUp = vi.fn(() => ({ state: { phase: "catching-up" } }));
|
|
57
|
+
const chores = [];
|
|
58
|
+
const scheduler = createAreaAutoMigrationScheduler(makeDeps({
|
|
59
|
+
chores,
|
|
60
|
+
readPhase: () => "legacy-authoritative",
|
|
61
|
+
createMigration: () => makeBridge({
|
|
62
|
+
copyAndCatchUp,
|
|
63
|
+
verifyParity: () => {
|
|
64
|
+
throw new Error("not yet");
|
|
65
|
+
},
|
|
66
|
+
}),
|
|
67
|
+
}));
|
|
68
|
+
scheduler.onTick();
|
|
69
|
+
expect(chores).toHaveLength(1);
|
|
70
|
+
drain(chores);
|
|
71
|
+
expect(copyAndCatchUp).toHaveBeenCalledTimes(1);
|
|
72
|
+
});
|
|
73
|
+
it("cuts over only after clean parity and only under the exclusive lock", () => {
|
|
74
|
+
let insideLock = false;
|
|
75
|
+
const lockCalls = [];
|
|
76
|
+
const cutOver = vi.fn(() => {
|
|
77
|
+
expect(insideLock).toBe(true);
|
|
78
|
+
return { phase: "area-authoritative" };
|
|
79
|
+
});
|
|
80
|
+
const verifyParity = vi.fn(() => ({ rowCount: 0 }));
|
|
81
|
+
const chores = [];
|
|
82
|
+
const emitTelemetry = vi.fn();
|
|
83
|
+
const scheduler = createAreaAutoMigrationScheduler(makeDeps({
|
|
84
|
+
chores,
|
|
85
|
+
emitTelemetry,
|
|
86
|
+
createMigration: () => makeBridge({ verifyParity, cutOver }),
|
|
87
|
+
withExclusiveLock: (fn) => {
|
|
88
|
+
lockCalls.push(true);
|
|
89
|
+
insideLock = true;
|
|
90
|
+
try {
|
|
91
|
+
return fn();
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
insideLock = false;
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
}));
|
|
98
|
+
scheduler.onTick();
|
|
99
|
+
drain(chores);
|
|
100
|
+
expect(verifyParity).toHaveBeenCalledTimes(1);
|
|
101
|
+
expect(lockCalls).toEqual([true]);
|
|
102
|
+
expect(cutOver).toHaveBeenCalledTimes(1);
|
|
103
|
+
expect(emitTelemetry.mock.calls.map((call) => call[0])).toEqual([
|
|
104
|
+
AREA_AUTO_MIGRATION_STARTED_EVENT,
|
|
105
|
+
AREA_AUTO_MIGRATION_COMPLETED_EVENT,
|
|
106
|
+
]);
|
|
107
|
+
scheduler.onTick();
|
|
108
|
+
expect(chores).toHaveLength(0);
|
|
109
|
+
});
|
|
110
|
+
it("does not cut over on a parity mismatch and retries catch-up later", () => {
|
|
111
|
+
const cutOver = vi.fn();
|
|
112
|
+
let lockCalls = 0;
|
|
113
|
+
const copyAndCatchUp = vi.fn(() => ({ state: { phase: "catching-up" } }));
|
|
114
|
+
const chores = [];
|
|
115
|
+
let now = 0;
|
|
116
|
+
const scheduler = createAreaAutoMigrationScheduler(makeDeps({
|
|
117
|
+
chores,
|
|
118
|
+
now: () => now,
|
|
119
|
+
createMigration: () => makeBridge({
|
|
120
|
+
copyAndCatchUp,
|
|
121
|
+
cutOver,
|
|
122
|
+
verifyParity: () => {
|
|
123
|
+
throw new Error("area-ledger migration: row-set parity failed");
|
|
124
|
+
},
|
|
125
|
+
}),
|
|
126
|
+
withExclusiveLock: (fn) => {
|
|
127
|
+
lockCalls += 1;
|
|
128
|
+
return fn();
|
|
129
|
+
},
|
|
130
|
+
}));
|
|
131
|
+
scheduler.onTick();
|
|
132
|
+
drain(chores);
|
|
133
|
+
expect(copyAndCatchUp).toHaveBeenCalledTimes(1);
|
|
134
|
+
expect(lockCalls).toBe(0);
|
|
135
|
+
expect(cutOver).not.toHaveBeenCalled();
|
|
136
|
+
scheduler.onTick();
|
|
137
|
+
expect(chores).toHaveLength(0);
|
|
138
|
+
now += AREA_AUTO_MIGRATION_RETRY_MAX_MS;
|
|
139
|
+
scheduler.onTick();
|
|
140
|
+
expect(chores).toHaveLength(1);
|
|
141
|
+
drain(chores);
|
|
142
|
+
expect(copyAndCatchUp).toHaveBeenCalledTimes(2);
|
|
143
|
+
expect(cutOver).not.toHaveBeenCalled();
|
|
144
|
+
});
|
|
145
|
+
it("contains chore errors so they never propagate to the caller", () => {
|
|
146
|
+
const log = vi.fn();
|
|
147
|
+
const chores = [];
|
|
148
|
+
const scheduler = createAreaAutoMigrationScheduler(makeDeps({
|
|
149
|
+
chores,
|
|
150
|
+
log,
|
|
151
|
+
createMigration: () => {
|
|
152
|
+
throw new Error("store locked");
|
|
153
|
+
},
|
|
154
|
+
}));
|
|
155
|
+
expect(() => scheduler.onTick()).not.toThrow();
|
|
156
|
+
expect(() => drain(chores)).not.toThrow();
|
|
157
|
+
expect(log).toHaveBeenCalledWith(expect.stringContaining("area-ledger auto-migration failed"));
|
|
158
|
+
});
|
|
159
|
+
it("respects an already area-authoritative (composed-back) manifest", () => {
|
|
160
|
+
const enqueueChore = vi.fn();
|
|
161
|
+
const createMigration = vi.fn(() => makeBridge());
|
|
162
|
+
const scheduler = createAreaAutoMigrationScheduler(makeDeps({
|
|
163
|
+
enqueueChore,
|
|
164
|
+
createMigration,
|
|
165
|
+
readPhase: () => "area-authoritative",
|
|
166
|
+
}));
|
|
167
|
+
scheduler.onTick();
|
|
168
|
+
expect(enqueueChore).not.toHaveBeenCalled();
|
|
169
|
+
expect(createMigration).not.toHaveBeenCalled();
|
|
170
|
+
});
|
|
171
|
+
it("does not force cutover from an abandoned legacy-authoritative phase", () => {
|
|
172
|
+
const cutOver = vi.fn();
|
|
173
|
+
let lockCalls = 0;
|
|
174
|
+
const copyAndCatchUp = vi.fn(() => ({
|
|
175
|
+
state: { phase: "legacy-authoritative" },
|
|
176
|
+
}));
|
|
177
|
+
const chores = [];
|
|
178
|
+
const scheduler = createAreaAutoMigrationScheduler(makeDeps({
|
|
179
|
+
chores,
|
|
180
|
+
readPhase: () => "legacy-authoritative",
|
|
181
|
+
createMigration: () => makeBridge({ copyAndCatchUp, cutOver }),
|
|
182
|
+
withExclusiveLock: (fn) => {
|
|
183
|
+
lockCalls += 1;
|
|
184
|
+
return fn();
|
|
185
|
+
},
|
|
186
|
+
}));
|
|
187
|
+
scheduler.onTick();
|
|
188
|
+
drain(chores);
|
|
189
|
+
expect(copyAndCatchUp).toHaveBeenCalledTimes(1);
|
|
190
|
+
expect(lockCalls).toBe(0);
|
|
191
|
+
expect(cutOver).not.toHaveBeenCalled();
|
|
192
|
+
});
|
|
193
|
+
it("does not mint an area layout before a personal-vault journal exists", () => {
|
|
194
|
+
const enqueueChore = vi.fn();
|
|
195
|
+
const scheduler = createAreaAutoMigrationScheduler(makeDeps({
|
|
196
|
+
enqueueChore,
|
|
197
|
+
readPhase: () => undefined,
|
|
198
|
+
hasLegacyJournal: () => false,
|
|
199
|
+
}));
|
|
200
|
+
scheduler.onTick();
|
|
201
|
+
expect(enqueueChore).not.toHaveBeenCalled();
|
|
202
|
+
});
|
|
203
|
+
it("honors the area-storage kill switch", () => {
|
|
204
|
+
const enqueueChore = vi.fn();
|
|
205
|
+
const scheduler = createAreaAutoMigrationScheduler(makeDeps({
|
|
206
|
+
enqueueChore,
|
|
207
|
+
areaStorageSwitch: () => "off",
|
|
208
|
+
hasActiveRealtimeSession: () => true,
|
|
209
|
+
readPhase: () => "legacy-authoritative",
|
|
210
|
+
}));
|
|
211
|
+
scheduler.onTick();
|
|
212
|
+
expect(enqueueChore).not.toHaveBeenCalled();
|
|
213
|
+
});
|
|
214
|
+
it("does not call cutOver when the exclusive lock is not acquired", () => {
|
|
215
|
+
const cutOver = vi.fn();
|
|
216
|
+
const chores = [];
|
|
217
|
+
const scheduler = createAreaAutoMigrationScheduler(makeDeps({
|
|
218
|
+
chores,
|
|
219
|
+
createMigration: () => makeBridge({ cutOver }),
|
|
220
|
+
withExclusiveLock: () => {
|
|
221
|
+
throw new Error("Refusing to start area-ledger-migration");
|
|
222
|
+
},
|
|
223
|
+
}));
|
|
224
|
+
scheduler.onTick();
|
|
225
|
+
drain(chores);
|
|
226
|
+
expect(cutOver).not.toHaveBeenCalled();
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
//# sourceMappingURL=area-ledger-auto-migration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"area-ledger-auto-migration.test.js","sourceRoot":"","sources":["../../src/sync/area-ledger-auto-migration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +1,95 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Local control for the dormant event-sync wiring
|
|
2
|
+
* Local control for the dormant event-sync wiring, area storage, and the
|
|
3
|
+
* parallel coordinator.
|
|
3
4
|
*
|
|
4
5
|
* U15 removes client-side positive selectors. Environment values, tenant IDs,
|
|
5
|
-
* and cached identity cannot grant authority; the authenticated
|
|
6
|
-
* inventory is the sole positive authority. This module preserves only
|
|
7
|
-
* operator's local off-switch.
|
|
6
|
+
* and cached identity cannot grant event-sync authority; the authenticated
|
|
7
|
+
* server inventory is the sole positive authority. This module preserves only
|
|
8
|
+
* the operator's local off-switch for event sync.
|
|
9
|
+
*
|
|
10
|
+
* HQ_SYNC_AREA_STORAGE and HQ_SYNC_PARALLEL_COORDINATOR are tri-state kill
|
|
11
|
+
* switches, not opt-in canaries:
|
|
12
|
+
*
|
|
13
|
+
* - explicit truthy ("1", "true", "yes", "on") → force enable
|
|
14
|
+
* - explicit falsy ("0", "false", "no", "off") → force disable
|
|
15
|
+
* - unset, empty, "auto", or any other value → AUTO
|
|
16
|
+
*
|
|
17
|
+
* AUTO cannot be decided from the environment alone. Area storage is enabled
|
|
18
|
+
* iff the durable layout phase for that journal is `area-authoritative`
|
|
19
|
+
* (`resolveAreaLayoutAuthority` returns `"areas"`). The parallel coordinator
|
|
20
|
+
* follows effective area storage (post-cutover). Feature-flag resolution is
|
|
21
|
+
* often consulted where the journal slug or state dir is not in hand, so
|
|
22
|
+
* {@link resolveParallelSyncRollout} stays env-pure: its booleans are force-on
|
|
23
|
+
* only, and AUTO is applied by {@link resolveAreaStorageEnabled} /
|
|
24
|
+
* {@link resolveParallelCoordinatorEnabled} / {@link resolveEffectiveParallelSyncRollout}
|
|
25
|
+
* at call sites that already know the layout authority.
|
|
8
26
|
*/
|
|
9
27
|
/** A local-only kill switch. Any other value is deliberately non-authorizing. */
|
|
10
28
|
export declare const EVENT_SYNC_LOCAL_DISABLE_ENV_VAR = "HQ_SYNC_EVENT_SYNC";
|
|
11
29
|
/**
|
|
12
|
-
*
|
|
30
|
+
* Tri-state control for coordinator-owned realtime/chore admission.
|
|
13
31
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
32
|
+
* Default AUTO enables the parallel coordinator iff area storage is
|
|
33
|
+
* effectively enabled (post-cutover). Explicit falsy force-disables.
|
|
16
34
|
*/
|
|
17
35
|
export declare const PARALLEL_COORDINATOR_ENV_VAR = "HQ_SYNC_PARALLEL_COORDINATOR";
|
|
18
36
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
37
|
+
* Tri-state control for the area-backed journal layout.
|
|
38
|
+
*
|
|
39
|
+
* Default AUTO enables area storage iff the durable layout phase is
|
|
40
|
+
* `area-authoritative`. Explicit falsy force-disables.
|
|
22
41
|
*/
|
|
23
42
|
export declare const AREA_STORAGE_ENV_VAR = "HQ_SYNC_AREA_STORAGE";
|
|
43
|
+
/** Env-only parse of the area-storage / parallel-coordinator kill switches. */
|
|
44
|
+
export type FeatureSwitch = "on" | "off" | "auto";
|
|
24
45
|
export type ParallelSyncRollout = {
|
|
46
|
+
areaStorage: FeatureSwitch;
|
|
47
|
+
parallelExecution: FeatureSwitch;
|
|
48
|
+
/**
|
|
49
|
+
* Force-on only. AUTO remains false so this helper can stay env-pure;
|
|
50
|
+
* apply {@link resolveAreaStorageEnabled} where the journal authority is known.
|
|
51
|
+
*/
|
|
25
52
|
areaStorageEnabled: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Force-on only. AUTO remains false so this helper can stay env-pure;
|
|
55
|
+
* apply {@link resolveParallelCoordinatorEnabled} after area storage is resolved.
|
|
56
|
+
*/
|
|
26
57
|
parallelExecutionEnabled: boolean;
|
|
27
58
|
/** The binary/layout path selected when the execution kill switch is off. */
|
|
28
59
|
executionMode: "parallel" | "dual-layout-serialized-bridge";
|
|
29
60
|
};
|
|
30
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* Parse a tri-state kill switch. Only the documented truthy/falsy tokens
|
|
63
|
+
* force a side; everything else, including unset, is AUTO.
|
|
64
|
+
*/
|
|
65
|
+
export declare function parseFeatureSwitch(value: string | undefined): FeatureSwitch;
|
|
66
|
+
/** True only for an explicit force-on value. AUTO is not enabled at this layer. */
|
|
31
67
|
export declare function isParallelCoordinatorEnabled(value: string | undefined): boolean;
|
|
32
|
-
/**
|
|
68
|
+
/** True only for an explicit force-on value. AUTO is not enabled at this layer. */
|
|
33
69
|
export declare function isAreaStorageEnabled(value: string | undefined): boolean;
|
|
34
70
|
/**
|
|
35
|
-
* Resolve
|
|
36
|
-
*
|
|
37
|
-
|
|
71
|
+
* Resolve area storage once the durable layout authority is known.
|
|
72
|
+
* AUTO follows `"areas"`; `"on"` force-enables; `"off"` is the kill switch.
|
|
73
|
+
*/
|
|
74
|
+
export declare function resolveAreaStorageEnabled(areaStorage: FeatureSwitch, authority: "legacy" | "areas"): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Resolve the parallel coordinator once effective area storage is known.
|
|
77
|
+
* AUTO follows area storage (post-cutover); `"on"` force-enables; `"off"`
|
|
78
|
+
* is the kill switch.
|
|
79
|
+
*/
|
|
80
|
+
export declare function resolveParallelCoordinatorEnabled(parallelExecution: FeatureSwitch, areaStorageEnabled: boolean): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Resolve the two independently-operated rollout controls from the environment
|
|
83
|
+
* only. AUTO is reported on the switch fields; the booleans stay force-on so
|
|
84
|
+
* this helper remains pure where no journal state dir is in hand.
|
|
38
85
|
*/
|
|
39
86
|
export declare function resolveParallelSyncRollout(env?: Record<string, string | undefined>): ParallelSyncRollout;
|
|
87
|
+
/**
|
|
88
|
+
* Apply AUTO using a known layout authority. Env parse stays identical to
|
|
89
|
+
* {@link resolveParallelSyncRollout}; only the booleans and executionMode
|
|
90
|
+
* change to the phase-dependent decision.
|
|
91
|
+
*/
|
|
92
|
+
export declare function resolveEffectiveParallelSyncRollout(authority: "legacy" | "areas", env?: Record<string, string | undefined>): ParallelSyncRollout;
|
|
40
93
|
/**
|
|
41
94
|
* Compatibility seam consumed by the existing emitter. Production event-sync
|
|
42
95
|
* supplies it only after authenticated server inventory has granted access.
|