@indigoai-us/hq-cloud 6.15.5 → 6.15.7

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 (50) hide show
  1. package/dist/bin/journal-repair.d.ts +12 -0
  2. package/dist/bin/journal-repair.d.ts.map +1 -0
  3. package/dist/bin/journal-repair.js +46 -0
  4. package/dist/bin/journal-repair.js.map +1 -0
  5. package/dist/bin/journal-repair.test.d.ts +2 -0
  6. package/dist/bin/journal-repair.test.d.ts.map +1 -0
  7. package/dist/bin/journal-repair.test.js +53 -0
  8. package/dist/bin/journal-repair.test.js.map +1 -0
  9. package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
  10. package/dist/bin/sync-runner-watch-loop.js +37 -4
  11. package/dist/bin/sync-runner-watch-loop.js.map +1 -1
  12. package/dist/bin/sync-runner.d.ts +10 -1
  13. package/dist/bin/sync-runner.d.ts.map +1 -1
  14. package/dist/bin/sync-runner.js +43 -1
  15. package/dist/bin/sync-runner.js.map +1 -1
  16. package/dist/bin/sync-runner.test.js +344 -66
  17. package/dist/bin/sync-runner.test.js.map +1 -1
  18. package/dist/cli/rescue-exec-bit-preserve.test.js +8 -0
  19. package/dist/cli/rescue-exec-bit-preserve.test.js.map +1 -1
  20. package/dist/journal.d.ts +34 -0
  21. package/dist/journal.d.ts.map +1 -1
  22. package/dist/journal.js +82 -13
  23. package/dist/journal.js.map +1 -1
  24. package/dist/journal.test.js +117 -1
  25. package/dist/journal.test.js.map +1 -1
  26. package/dist/lib/net-errors.d.ts.map +1 -1
  27. package/dist/lib/net-errors.js +4 -0
  28. package/dist/lib/net-errors.js.map +1 -1
  29. package/dist/machine-auth.test.js +7 -1
  30. package/dist/machine-auth.test.js.map +1 -1
  31. package/dist/object-io.d.ts +21 -0
  32. package/dist/object-io.d.ts.map +1 -1
  33. package/dist/object-io.js +229 -77
  34. package/dist/object-io.js.map +1 -1
  35. package/dist/object-io.test.js +211 -1
  36. package/dist/object-io.test.js.map +1 -1
  37. package/dist/s3.d.ts.map +1 -1
  38. package/dist/s3.js +62 -0
  39. package/dist/s3.js.map +1 -1
  40. package/dist/s3.test.js +126 -0
  41. package/dist/s3.test.js.map +1 -1
  42. package/dist/sync/state-store.d.ts +52 -0
  43. package/dist/sync/state-store.d.ts.map +1 -1
  44. package/dist/sync/state-store.js +411 -99
  45. package/dist/sync/state-store.js.map +1 -1
  46. package/dist/sync/state-store.test.js +188 -1
  47. package/dist/sync/state-store.test.js.map +1 -1
  48. package/dist/types.d.ts +8 -0
  49. package/dist/types.d.ts.map +1 -1
  50. package/package.json +2 -1
@@ -61,6 +61,7 @@ describe.skipIf(!toolsAvailable)("rescue restores +x on shipped shebang scripts"
61
61
  let shimDir;
62
62
  let floorSha;
63
63
  let env;
64
+ let previousUmask;
64
65
  const gitAt = (cwd, epoch, ...args) => execFileSync("git", args, {
65
66
  cwd,
66
67
  stdio: ["ignore", "pipe", "pipe"],
@@ -79,6 +80,11 @@ describe.skipIf(!toolsAvailable)("rescue restores +x on shipped shebang scripts"
79
80
  const isExec = (p) => (fs.statSync(p).mode & 0o111) !== 0;
80
81
  const mode = (p) => fs.statSync(p).mode & 0o777;
81
82
  beforeAll(() => {
83
+ // git checkout of 100644 respects process umask. Hosts with umask 0077
84
+ // materialize 0600, and restoreShebangExecBits then yields 0700 — still
85
+ // correct +x, but not the 0755 this regression pins. Pin a conventional
86
+ // 0022 umask for the fixture so the exact mode assertion is stable.
87
+ previousUmask = process.umask(0o022);
82
88
  workDir = fs.mkdtempSync(path.join(os.tmpdir(), "hq-rescue-exec-"));
83
89
  // --- "upstream" repo ----------------------------------------------------
84
90
  upstream = path.join(workDir, "upstream");
@@ -149,6 +155,8 @@ exec ${JSON.stringify(realGit)} "$@"
149
155
  afterAll(() => {
150
156
  if (workDir)
151
157
  fs.rmSync(workDir, { recursive: true, force: true });
158
+ if (previousUmask !== undefined)
159
+ process.umask(previousUmask);
152
160
  });
153
161
  it("restores +x on a shebang script shipped as 0644 (the bug)", () => {
154
162
  const f = path.join(hqRoot, "core/scripts/needs-exec.sh");
@@ -1 +1 @@
1
- {"version":3,"file":"rescue-exec-bit-preserve.test.js","sourceRoot":"","sources":["../../src/cli/rescue-exec-bit-preserve.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rescue-exec-bit-preserve.test.js","sourceRoot":"","sources":["../../src/cli/rescue-exec-bit-preserve.test.ts"],"names":[],"mappings":"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"}
package/dist/journal.d.ts CHANGED
@@ -13,6 +13,7 @@
13
13
  * `HQ_STATE_DIR` (if set) or `~/.hq`.
14
14
  */
15
15
  import type { SyncJournal, JournalEntry, PullRecord } from "./types.js";
16
+ import { type StateStoreRecoveryProgress } from "./sync/state-store.js";
16
17
  /** Tombstone retention. 30 days in milliseconds — roughly two release cycles. */
17
18
  export declare const TOMBSTONE_TTL_MS: number;
18
19
  /** Current journal schema version written by all v2-aware writers. */
@@ -153,6 +154,39 @@ export declare function migrateToV2(journal: SyncJournal): SyncJournal;
153
154
  * after the write will see the v2 shape.
154
155
  */
155
156
  export declare function writeJournal(slug: string, journal: SyncJournal): void;
157
+ export interface JournalRepairResult {
158
+ slug: string;
159
+ recoveredGeneration: number;
160
+ recoveredWalBytes: number;
161
+ firstCompactGeneration: number;
162
+ currentGeneration: number;
163
+ }
164
+ export type JournalMaintenanceResult = {
165
+ status: "missing" | "not-needed";
166
+ slug: string;
167
+ } | ({
168
+ status: "repaired";
169
+ slug: string;
170
+ } & Omit<JournalRepairResult, "slug">);
171
+ export interface JournalMaintenanceOptions {
172
+ onProgress?: (event: StateStoreRecoveryProgress) => void;
173
+ /** Override the ordinary 16 MiB threshold (primarily for scaled tests). */
174
+ maxWalBytesBeforeCompaction?: number;
175
+ }
176
+ /**
177
+ * Startup maintenance for one journal shard. The StateStore preflight is a
178
+ * metadata-only no-op for healthy generations; oversized WALs (or stale large
179
+ * snapshots with a replacement frame) are recovered once and atomically
180
+ * replaced by two compact copies.
181
+ */
182
+ export declare function repairJournalStateIfNeeded(slug: string, options?: JournalMaintenanceOptions): JournalMaintenanceResult;
183
+ /**
184
+ * Recover one journal shard through the streaming reader, durably write two
185
+ * compact copies, and only then prune its oversized history. Callers must
186
+ * quiesce sync first so an in-flight journal object cannot later overwrite the
187
+ * freshly recovered state.
188
+ */
189
+ export declare function repairJournalState(slug: string): JournalRepairResult;
156
190
  export declare function hashFile(filePath: string): string;
157
191
  /**
158
192
  * Marker prepended to a symlink's target string before hashing for the
@@ -1 +1 @@
1
- {"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"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"}
package/dist/journal.js CHANGED
@@ -17,7 +17,7 @@ import * as os from "os";
17
17
  import * as path from "path";
18
18
  import * as crypto from "crypto";
19
19
  import { toPosixKey } from "./s3.js";
20
- import { StateStore } from "./sync/state-store.js";
20
+ import { StateStore, } from "./sync/state-store.js";
21
21
  /** Tombstone retention. 30 days in milliseconds — roughly two release cycles. */
22
22
  export const TOMBSTONE_TTL_MS = 30 * 24 * 60 * 60 * 1000;
23
23
  /** Current journal schema version written by all v2-aware writers. */
@@ -32,6 +32,7 @@ const JOURNAL_FILE_PREFIX = "sync-journal.";
32
32
  const JOURNAL_FILE_SUFFIX = ".json";
33
33
  const JOURNAL_LAST_GOOD_SUFFIX = ".last-good";
34
34
  const JOURNAL_WAL_RECORD_TYPE = 1;
35
+ const JOURNAL_DELTA_RECORD_TYPE = 2;
35
36
  /**
36
37
  * Where per-company journals are stored. Honors `HQ_STATE_DIR` for tests and
37
38
  * non-standard installs; otherwise falls back to `~/.hq`.
@@ -144,22 +145,52 @@ function emptyJournal() {
144
145
  function journalScopeId(slug) {
145
146
  return `journal:${sanitizeSlug(slug)}`;
146
147
  }
147
- function openJournalStore(slug, initialJournal) {
148
- return StateStore.open({
148
+ function journalStoreOptions(slug, initialJournal) {
149
+ return {
149
150
  rootDir: getStateDir(),
150
151
  scopeId: journalScopeId(slug),
151
152
  initialState: { journal: initialJournal },
152
153
  reduce: (state, record) => {
153
- if (record.type !== JOURNAL_WAL_RECORD_TYPE) {
154
- throw new Error(`journal: unexpected v3 WAL record type ${record.type}`);
154
+ if (record.type === JOURNAL_WAL_RECORD_TYPE) {
155
+ const payload = record.payload;
156
+ if (!payload || typeof payload !== "object" || !isJournal(payload.journal)) {
157
+ throw new Error("journal: v3 WAL record has an invalid journal payload");
158
+ }
159
+ return { ...state, journal: payload.journal };
155
160
  }
156
- const payload = record.payload;
157
- if (!payload || typeof payload !== "object" || !isJournal(payload.journal)) {
158
- throw new Error("journal: v3 WAL record has an invalid journal payload");
161
+ if (record.type === JOURNAL_DELTA_RECORD_TYPE) {
162
+ if (!isJournalDelta(record.payload)) {
163
+ throw new Error("journal: v3 WAL record has an invalid journal delta");
164
+ }
165
+ const files = { ...state.journal.files };
166
+ for (const key of record.payload.deletes)
167
+ delete files[key];
168
+ Object.assign(files, record.payload.upserts);
169
+ return {
170
+ journal: {
171
+ version: record.payload.version,
172
+ lastSync: record.payload.lastSync,
173
+ files,
174
+ pulls: record.payload.pulls,
175
+ },
176
+ };
159
177
  }
160
- return { ...state, journal: payload.journal };
178
+ throw new Error(`journal: unexpected v3 WAL record type ${record.type}`);
161
179
  },
162
- });
180
+ };
181
+ }
182
+ function openJournalStore(slug, initialJournal) {
183
+ return StateStore.open(journalStoreOptions(slug, initialJournal));
184
+ }
185
+ function isJournalDelta(value) {
186
+ if (typeof value !== "object" || value === null)
187
+ return false;
188
+ const delta = value;
189
+ return delta.version === "2" &&
190
+ typeof delta.lastSync === "string" &&
191
+ typeof delta.upserts === "object" && delta.upserts !== null &&
192
+ Array.isArray(delta.deletes) && delta.deletes.every((key) => typeof key === "string") &&
193
+ Array.isArray(delta.pulls);
163
194
  }
164
195
  function isJournal(value) {
165
196
  return typeof value === "object" && value !== null &&
@@ -314,13 +345,15 @@ export function migrateToV2(journal) {
314
345
  export function writeJournal(slug, journal) {
315
346
  migrateToV2(journal);
316
347
  const store = openJournalStore(slug, journal);
317
- // The initial v2 → v3 migration is a durable snapshot. Every normal write
318
- // thereafter is one framed append + fdatasync, never a whole-journal rewrite.
348
+ // Journal writes stay readable by the declared 6.15.0 rollback target: each
349
+ // update is a compact snapshot generation with a header-only WAL. Type-2
350
+ // delta records remain readable for recovery compatibility but are not
351
+ // emitted until the rollback floor itself understands them.
319
352
  if (store.wasCreated) {
320
353
  writeLegacyJournalMirror(slug, journal);
321
354
  }
322
355
  else {
323
- store.append(JOURNAL_WAL_RECORD_TYPE, { journal });
356
+ store.replaceState({ journal });
324
357
  // The JSON file remains a compatibility mirror for shipped CLI/status
325
358
  // consumers that have not moved to StateStore yet. It is never used for
326
359
  // recovery once a v3 generation exists; the framed WAL above is the sole
@@ -329,6 +362,42 @@ export function writeJournal(slug, journal) {
329
362
  writeLegacyJournalMirror(slug, journal);
330
363
  }
331
364
  }
365
+ /**
366
+ * Startup maintenance for one journal shard. The StateStore preflight is a
367
+ * metadata-only no-op for healthy generations; oversized WALs (or stale large
368
+ * snapshots with a replacement frame) are recovered once and atomically
369
+ * replaced by two compact copies.
370
+ */
371
+ export function repairJournalStateIfNeeded(slug, options = {}) {
372
+ const safeSlug = sanitizeSlug(slug);
373
+ const storeOptions = journalStoreOptions(safeSlug, emptyJournal());
374
+ if (options.maxWalBytesBeforeCompaction !== undefined) {
375
+ storeOptions.maxWalBytesBeforeCompaction = options.maxWalBytesBeforeCompaction;
376
+ }
377
+ const result = StateStore.repairIfNeeded(storeOptions, { onProgress: options.onProgress });
378
+ if (result.status !== "repaired")
379
+ return { status: result.status, slug: safeSlug };
380
+ // Recovery authority remains the framed store. Refresh the compatibility
381
+ // JSON only after two compact generations are durable; this reopens a tiny
382
+ // compact snapshot, never the oversized WAL that was just pruned.
383
+ writeLegacyJournalMirror(safeSlug, openJournalStore(safeSlug, emptyJournal()).getState().journal);
384
+ return { slug: safeSlug, ...result };
385
+ }
386
+ /**
387
+ * Recover one journal shard through the streaming reader, durably write two
388
+ * compact copies, and only then prune its oversized history. Callers must
389
+ * quiesce sync first so an in-flight journal object cannot later overwrite the
390
+ * freshly recovered state.
391
+ */
392
+ export function repairJournalState(slug) {
393
+ const safeSlug = sanitizeSlug(slug);
394
+ const repaired = StateStore.repairIfNeeded(journalStoreOptions(safeSlug, emptyJournal()), { force: true });
395
+ if (repaired.status !== "repaired") {
396
+ throw new Error(`journal: no v3 state exists for ${safeSlug}`);
397
+ }
398
+ writeLegacyJournalMirror(safeSlug, openJournalStore(safeSlug, emptyJournal()).getState().journal);
399
+ return { slug: safeSlug, ...repaired };
400
+ }
332
401
  /**
333
402
  * Keep the v2-shaped filename as a compatibility mirror for older CLI/status
334
403
  * surfaces. The v3 state store is authoritative after migration; this mirror
@@ -1 +1 @@
1
- {"version":3,"file":"journal.js","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"journal.js","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,8 @@ import { describe, it, expect, beforeEach, afterEach } from "vitest";
9
9
  import * as fs from "fs";
10
10
  import * as os from "os";
11
11
  import * as path from "path";
12
- import { getJournalPath, getStateDir, readJournal, writeJournal, updateEntry, PrematureJournalEntryError, migrateToV2, normalizeJournalKeys, appendPullRecord, lastPullRecord, tombstoneEntry, isTombstone, gcTombstones, generatePullId, TOMBSTONE_TTL_MS, MAX_PULLS_PER_COMPANY, PERSONAL_VAULT_JOURNAL_SLUG, migratePersonalVaultJournal, listJournals, markLocalDeleteIntent, } from "./journal.js";
12
+ import { getJournalPath, getStateDir, readJournal, writeJournal, updateEntry, PrematureJournalEntryError, migrateToV2, normalizeJournalKeys, appendPullRecord, lastPullRecord, tombstoneEntry, isTombstone, gcTombstones, generatePullId, TOMBSTONE_TTL_MS, MAX_PULLS_PER_COMPANY, PERSONAL_VAULT_JOURNAL_SLUG, migratePersonalVaultJournal, repairJournalStateIfNeeded, listJournals, markLocalDeleteIntent, } from "./journal.js";
13
+ import { StateStore } from "./sync/state-store.js";
13
14
  describe("journal", () => {
14
15
  let stateDir;
15
16
  beforeEach(() => {
@@ -99,6 +100,80 @@ describe("journal", () => {
99
100
  expect(recovered.files["docs/stable.md"]).toEqual(lastGood.files["docs/stable.md"]);
100
101
  expect(recovered.pulls).toEqual([]);
101
102
  });
103
+ it("replays full-journal WAL records written by pre-delta releases", () => {
104
+ const legacy = StateStore.open({
105
+ rootDir: stateDir,
106
+ scopeId: "journal:indigo",
107
+ initialState: {
108
+ journal: { version: "2", lastSync: "initial", files: {}, pulls: [] },
109
+ },
110
+ reduce: (_state, record) => record.payload,
111
+ });
112
+ legacy.append(1, {
113
+ journal: {
114
+ version: "2",
115
+ lastSync: "legacy-full-record",
116
+ files: {
117
+ "knowledge/legacy.md": {
118
+ hash: "legacy",
119
+ size: 6,
120
+ syncedAt: "2026-08-17T00:00:00.000Z",
121
+ direction: "down",
122
+ },
123
+ },
124
+ pulls: [],
125
+ },
126
+ });
127
+ expect(readJournal("indigo")).toMatchObject({
128
+ lastSync: "legacy-full-record",
129
+ files: { "knowledge/legacy.md": { hash: "legacy" } },
130
+ });
131
+ });
132
+ it("auto-repairs old full records before publishing rollback-readable updates", () => {
133
+ const files = Object.fromEntries(Array.from({ length: 400 }, (_, index) => [
134
+ `knowledge/${index}.md`,
135
+ {
136
+ hash: `hash-${index}-${"x".repeat(64)}`,
137
+ size: index,
138
+ syncedAt: "2026-08-17T00:00:00.000Z",
139
+ direction: "down",
140
+ remoteEtag: `etag-${index}`,
141
+ kind: "file",
142
+ },
143
+ ]));
144
+ const legacyJournal = {
145
+ version: "2",
146
+ lastSync: "legacy",
147
+ files,
148
+ pulls: [],
149
+ };
150
+ const legacy = StateStore.open({
151
+ rootDir: stateDir,
152
+ scopeId: "journal:indigo",
153
+ initialState: { journal: { version: "2", lastSync: "initial", files: {}, pulls: [] } },
154
+ maxWalBytesBeforeCompaction: 1024 * 1024,
155
+ reduce: (_state, record) => record.payload,
156
+ });
157
+ legacy.append(1, { journal: legacyJournal });
158
+ const result = repairJournalStateIfNeeded("indigo", {
159
+ maxWalBytesBeforeCompaction: 32 * 1024,
160
+ });
161
+ expect(result.status).toBe("repaired");
162
+ expect(readJournal("indigo")).toEqual(legacyJournal);
163
+ const changed = structuredClone(legacyJournal);
164
+ changed.lastSync = "delta";
165
+ changed.files["knowledge/10.md"].hash = "updated";
166
+ delete changed.files["knowledge/399.md"];
167
+ writeJournal("indigo", changed);
168
+ expect(readJournal("indigo")).toEqual(changed);
169
+ expect(JSON.parse(fs.readFileSync(getJournalPath("indigo"), "utf8"))).toEqual(changed);
170
+ const storeDir = path.dirname(fs.readdirSync(path.join(stateDir, "sync-state-v3"), { recursive: true })
171
+ .map(String)
172
+ .map((name) => path.join(stateDir, "sync-state-v3", name))
173
+ .find((name) => /snapshot-\d+\.bin$/.test(name)));
174
+ expect(fs.readdirSync(storeDir).filter((name) => name.startsWith("snapshot-"))).toHaveLength(2);
175
+ expect(fs.readdirSync(storeDir).filter((name) => name.startsWith("wal-"))).toHaveLength(2);
176
+ });
102
177
  it("R-F08: surfaces primary IO errors instead of masking them with last-good", () => {
103
178
  const journalPath = getJournalPath("indigo");
104
179
  fs.mkdirSync(journalPath);
@@ -141,6 +216,47 @@ describe("journal", () => {
141
216
  expect(JSON.parse(fs.readFileSync(getJournalPath("indigo"), "utf8"))).toMatchObject({ version: "2", lastSync: "two" });
142
217
  expect(readJournal("indigo").lastSync).toBe("two");
143
218
  });
219
+ it("publishes header-only generations readable by the rollback reducer", () => {
220
+ const files = Object.fromEntries(Array.from({ length: 1_000 }, (_, index) => [
221
+ `knowledge/${index}.md`,
222
+ { hash: `hash-${index}`, size: index, syncedAt: "2026-08-17T00:00:00.000Z", direction: "up" },
223
+ ]));
224
+ const initial = {
225
+ version: "2",
226
+ lastSync: "one",
227
+ files,
228
+ pulls: [],
229
+ };
230
+ writeJournal("indigo", initial);
231
+ const changed = structuredClone(initial);
232
+ changed.lastSync = "two";
233
+ changed.files["knowledge/500.md"] = {
234
+ hash: "changed",
235
+ size: 500,
236
+ syncedAt: "2026-08-17T00:01:00.000Z",
237
+ direction: "down",
238
+ };
239
+ delete changed.files["knowledge/999.md"];
240
+ writeJournal("indigo", changed);
241
+ const storeRoot = path.join(stateDir, "sync-state-v3");
242
+ const storeDir = path.join(storeRoot, fs.readdirSync(storeRoot)[0]);
243
+ const walSizes = fs.readdirSync(storeDir)
244
+ .filter((name) => /^wal-\d+\.bin$/.test(name))
245
+ .map((name) => fs.statSync(path.join(storeDir, name)).size);
246
+ expect(walSizes).toEqual([80, 80]);
247
+ expect(readJournal("indigo")).toEqual(changed);
248
+ const rollbackReader = StateStore.open({
249
+ rootDir: stateDir,
250
+ scopeId: "journal:indigo",
251
+ initialState: { journal: { version: "2", lastSync: "", files: {}, pulls: [] } },
252
+ reduce: (_state, record) => {
253
+ if (record.type !== 1)
254
+ throw new Error(`rollback reader rejects type ${record.type}`);
255
+ return record.payload;
256
+ },
257
+ });
258
+ expect(rollbackReader.getState().journal).toEqual(changed);
259
+ });
144
260
  });
145
261
  describe("updateEntry", () => {
146
262
  it("stamps lastSync and the per-file syncedAt", () => {