@indigoai-us/hq-cloud 6.15.95 → 6.15.97

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.
Files changed (69) hide show
  1. package/dist/bin/sync-runner-watch-loop.d.ts +7 -2
  2. package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
  3. package/dist/bin/sync-runner-watch-loop.js +104 -34
  4. package/dist/bin/sync-runner-watch-loop.js.map +1 -1
  5. package/dist/bin/sync-runner.d.ts.map +1 -1
  6. package/dist/bin/sync-runner.js +3 -4
  7. package/dist/bin/sync-runner.js.map +1 -1
  8. package/dist/bin/sync-runner.test.js +9 -0
  9. package/dist/bin/sync-runner.test.js.map +1 -1
  10. package/dist/cli/share.d.ts.map +1 -1
  11. package/dist/cli/share.js +30 -7
  12. package/dist/cli/share.js.map +1 -1
  13. package/dist/cli/share.test.js +47 -1
  14. package/dist/cli/share.test.js.map +1 -1
  15. package/dist/cli/sync.d.ts +4 -1
  16. package/dist/cli/sync.d.ts.map +1 -1
  17. package/dist/cli/sync.js.map +1 -1
  18. package/dist/index.d.ts +2 -2
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/outposts/self-deploy.d.ts.map +1 -1
  23. package/dist/outposts/self-deploy.js +7 -5
  24. package/dist/outposts/self-deploy.js.map +1 -1
  25. package/dist/outposts/self-deploy.test.js +3 -2
  26. package/dist/outposts/self-deploy.test.js.map +1 -1
  27. package/dist/sync/area-ledger-auto-migration.d.ts +55 -0
  28. package/dist/sync/area-ledger-auto-migration.d.ts.map +1 -0
  29. package/dist/sync/area-ledger-auto-migration.js +167 -0
  30. package/dist/sync/area-ledger-auto-migration.js.map +1 -0
  31. package/dist/sync/area-ledger-auto-migration.test.d.ts +2 -0
  32. package/dist/sync/area-ledger-auto-migration.test.d.ts.map +1 -0
  33. package/dist/sync/area-ledger-auto-migration.test.js +229 -0
  34. package/dist/sync/area-ledger-auto-migration.test.js.map +1 -0
  35. package/dist/sync/event-sync.d.ts +11 -3
  36. package/dist/sync/event-sync.d.ts.map +1 -1
  37. package/dist/sync/event-sync.js +189 -101
  38. package/dist/sync/event-sync.js.map +1 -1
  39. package/dist/sync/event-sync.test.js +140 -0
  40. package/dist/sync/event-sync.test.js.map +1 -1
  41. package/dist/sync/feature-flags.d.ts +68 -15
  42. package/dist/sync/feature-flags.d.ts.map +1 -1
  43. package/dist/sync/feature-flags.js +98 -21
  44. package/dist/sync/feature-flags.js.map +1 -1
  45. package/dist/sync/feature-flags.test.js +145 -4
  46. package/dist/sync/feature-flags.test.js.map +1 -1
  47. package/dist/sync/index.d.ts +2 -2
  48. package/dist/sync/index.d.ts.map +1 -1
  49. package/dist/sync/index.js +1 -1
  50. package/dist/sync/index.js.map +1 -1
  51. package/dist/sync/push-transport.d.ts +18 -0
  52. package/dist/sync/push-transport.d.ts.map +1 -1
  53. package/dist/sync/push-transport.js +40 -0
  54. package/dist/sync/push-transport.js.map +1 -1
  55. package/dist/sync/state-store.d.ts +2 -2
  56. package/dist/sync/state-store.d.ts.map +1 -1
  57. package/dist/sync/state-store.js +186 -68
  58. package/dist/sync/state-store.js.map +1 -1
  59. package/dist/sync/state-store.test.js +72 -1
  60. package/dist/sync/state-store.test.js.map +1 -1
  61. package/dist/sync/sync-work.d.ts +1 -1
  62. package/dist/sync/sync-work.d.ts.map +1 -1
  63. package/dist/watcher.d.ts +4 -0
  64. package/dist/watcher.d.ts.map +1 -1
  65. package/dist/watcher.js +31 -6
  66. package/dist/watcher.js.map +1 -1
  67. package/dist/watcher.test.js +53 -0
  68. package/dist/watcher.test.js.map +1 -1
  69. package/package.json +1 -1
@@ -155,7 +155,7 @@ describe("hq outposts self-deploy", () => {
155
155
  call.args[1] === "/usr/local/bin/outpost-sync.sh");
156
156
  const scriptContents = String(scriptWrite?.options?.input);
157
157
  expect(scriptContents).toContain("hq auth refresh");
158
- expect(scriptContents).toContain(`npx -y --package=@indigoai-us/hq-cloud@6.15.82 hq-sync-runner \\
158
+ expect(scriptContents).toContain(`npx -y --package=@indigoai-us/hq-cloud@6.15.97 hq-sync-runner \\
159
159
  --companies \\
160
160
  --direction both \\
161
161
  --on-conflict keep \\
@@ -166,7 +166,8 @@ describe("hq outposts self-deploy", () => {
166
166
  expect(scriptContents).not.toContain("@latest");
167
167
  expect(scriptContents).toContain("hq-layout-compatibility");
168
168
  expect(scriptContents).toContain("--pin dual-layout");
169
- expect(scriptContents).toContain('HQ_SYNC_PARALLEL_COORDINATOR="${HQ_SYNC_PARALLEL_COORDINATOR:-off}"');
169
+ expect(scriptContents).toContain('HQ_SYNC_PARALLEL_COORDINATOR="${HQ_SYNC_PARALLEL_COORDINATOR:-auto}"');
170
+ expect(scriptContents).toContain('HQ_SYNC_AREA_STORAGE="${HQ_SYNC_AREA_STORAGE:-auto}"');
170
171
  // An Outpost cannot opt itself into V2. Eligibility is fail-closed at the
171
172
  // server; this launcher must not introduce a local realtime bypass.
172
173
  expect(scriptContents).not.toMatch(/--(?:enable-)?realtime(?:-sync)?\b/);
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=area-ledger-auto-migration.test.d.ts.map
@@ -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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"}
@@ -30,7 +30,7 @@
30
30
  * every path here; event delivery is best-effort by design.
31
31
  */
32
32
  import { SQSClient } from "@aws-sdk/client-sqs";
33
- import { HttpPushTransport, type AuthTokenSource } from "./push-transport.js";
33
+ import { HttpPushTransport, RealtimeUnavailableError, type AuthTokenSource } from "./push-transport.js";
34
34
  import { type PushReceiver, type RealtimeWakeSource, type SqsClientLike, type SyncBatchEngineFn, type SyncEngineFn } from "./push-receiver.js";
35
35
  import { type Clock, type TreeChangeBatch } from "../watcher.js";
36
36
  import { type CloudTelemetryClient, type TelemetryClaims } from "../telemetry-events.js";
@@ -103,6 +103,8 @@ export interface RefreshingSqsClientOptions {
103
103
  buildSqs?: (resp: SubscribeSyncResponse) => SqsClientLike;
104
104
  /** Clock seam (tests). Default `Date.now`. */
105
105
  now?: () => number;
106
+ /** Receives a deliberate server denial before it reaches the receiver loop. */
107
+ onRealtimeUnavailable?: (error: RealtimeUnavailableError) => void;
106
108
  }
107
109
  /**
108
110
  * An {@link SqsClientLike} that owns the vended-credential lifecycle:
@@ -156,6 +158,8 @@ export interface StartEventSyncOptions {
156
158
  retryMaxMs?: number;
157
159
  /** Test seam for full-jitter event-sync startup retries. */
158
160
  retryRandom?: () => number;
161
+ /** Test seam for the poll-only realtime-eligibility recheck interval. */
162
+ realtimeUnavailableRecheckMs?: number;
159
163
  /** Override the per-path trailing-publish interval. */
160
164
  publishMinIntervalMs?: number;
161
165
  /** Existing runner state directory for restart-durable publish suppression. */
@@ -191,6 +195,8 @@ export interface EventSyncHandles {
191
195
  /** Startup retry defaults: full jitter over a 30s → 10min exponential cap. */
192
196
  export declare const DEFAULT_EVENT_SYNC_RETRY_INITIAL_MS = 30000;
193
197
  export declare const DEFAULT_EVENT_SYNC_RETRY_MAX_MS: number;
198
+ /** Poll-only accounts recheck server realtime eligibility at this interval. */
199
+ export declare const DEFAULT_EVENT_SYNC_REALTIME_UNAVAILABLE_RECHECK_MS: number;
194
200
  /** Every v2 signal has identical correctness semantics: schedule one drain. */
195
201
  export type RealtimeDrainSignal = "watcher" | "wake" | "high-water" | "reconnect" | "retry";
196
202
  export interface UnifiedRealtimeSchedulerOptions {
@@ -226,8 +232,10 @@ export declare function createUnifiedRealtimeScheduler(options: UnifiedRealtimeS
226
232
  /**
227
233
  * Bring up the publish + receive legs. A failed initial subscribe deliberately
228
234
  * keeps the watch runner poll-only, but returns an offline handle that retries
229
- * the complete startup sequence forever. Once it succeeds, the same handle
230
- * forwards publishes and disposes the live legs just like an immediate start.
235
+ * the complete startup sequence. A coded realtime-unavailable denial instead
236
+ * stays poll-only and only rechecks eligibility on a long cadence. Once a
237
+ * retry succeeds, the same handle forwards publishes and disposes the live
238
+ * legs just like an immediate start.
231
239
  */
232
240
  export declare function startEventSync(opts: StartEventSyncOptions): Promise<EventSyncHandles>;
233
241
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"event-sync.d.ts","sourceRoot":"","sources":["../../src/sync/event-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-sync.d.ts","sourceRoot":"","sources":["../../src/sync/event-sync.ts"],"names":[],"mappings":"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"}