@indigoai-us/hq-cloud 6.15.20 → 6.15.21
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.d.ts +1 -1
- package/dist/bin/sync-runner.d.ts.map +1 -1
- package/dist/bin/sync-runner.js +37 -5
- package/dist/bin/sync-runner.js.map +1 -1
- package/dist/bin/sync-runner.test.js +77 -4
- package/dist/bin/sync-runner.test.js.map +1 -1
- package/dist/cli/share.test.js +140 -108
- package/dist/cli/share.test.js.map +1 -1
- package/dist/cli/sync.test.js +59 -47
- package/dist/cli/sync.test.js.map +1 -1
- package/dist/journal-delta-writes.test.d.ts +2 -0
- package/dist/journal-delta-writes.test.d.ts.map +1 -0
- package/dist/journal-delta-writes.test.js +140 -0
- package/dist/journal-delta-writes.test.js.map +1 -0
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +151 -24
- package/dist/journal.js.map +1 -1
- package/dist/journal.test.js +29 -11
- package/dist/journal.test.js.map +1 -1
- package/dist/outcome-telemetry.d.ts +7 -1
- package/dist/outcome-telemetry.d.ts.map +1 -1
- package/dist/outcome-telemetry.js +15 -9
- package/dist/outcome-telemetry.js.map +1 -1
- package/dist/outcome-telemetry.test.js +15 -0
- package/dist/outcome-telemetry.test.js.map +1 -1
- package/dist/skill-telemetry.d.ts +6 -1
- package/dist/skill-telemetry.d.ts.map +1 -1
- package/dist/skill-telemetry.js +14 -8
- package/dist/skill-telemetry.js.map +1 -1
- package/dist/skill-telemetry.test.js +43 -0
- package/dist/skill-telemetry.test.js.map +1 -1
- package/dist/telemetry.d.ts +7 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +67 -60
- package/dist/telemetry.js.map +1 -1
- package/dist/telemetry.test.js +12 -0
- package/dist/telemetry.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journal-delta-writes.test.d.ts","sourceRoot":"","sources":["../src/journal-delta-writes.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regression tests for the journal's write amplification.
|
|
3
|
+
*
|
|
4
|
+
* `writeJournal` used to do two full-file rewrites per update: a whole-state
|
|
5
|
+
* snapshot via `replaceState`, and a complete copy of the journal in the pre-v3
|
|
6
|
+
* JSON format. Measured on a live install, a vault tracking half a million
|
|
7
|
+
* files paid 178 MB for each of those, about three times a minute — roughly a
|
|
8
|
+
* gigabyte a minute to record edits worth a few hundred bytes.
|
|
9
|
+
*
|
|
10
|
+
* Both are gone. Updates now append a type-2 delta the store has always been
|
|
11
|
+
* able to read, and the JSON path holds a small locator instead of a copy.
|
|
12
|
+
*
|
|
13
|
+
* The property that matters most is the round trip. An entry left out of a
|
|
14
|
+
* delta is *asserted* to be unchanged, so a diff that is too lenient does not
|
|
15
|
+
* throw — it silently loses data. Every mutation shape below is therefore
|
|
16
|
+
* checked by reading the journal back and comparing it whole.
|
|
17
|
+
*/
|
|
18
|
+
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
19
|
+
import * as fs from "fs";
|
|
20
|
+
import * as os from "os";
|
|
21
|
+
import * as path from "path";
|
|
22
|
+
import { writeJournal, readJournal, getJournalPath, listJournals } from "./journal.js";
|
|
23
|
+
function entry(over = {}) {
|
|
24
|
+
return {
|
|
25
|
+
hash: "a".repeat(64),
|
|
26
|
+
size: 10,
|
|
27
|
+
syncedAt: "2026-01-01T00:00:00.000Z",
|
|
28
|
+
direction: "up",
|
|
29
|
+
...over,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function journal(files, lastSync = "t0") {
|
|
33
|
+
return { version: "2", lastSync, files, pulls: [] };
|
|
34
|
+
}
|
|
35
|
+
/** Serialized size of the file at the legacy journal path. */
|
|
36
|
+
function locatorBytes(slug) {
|
|
37
|
+
return fs.statSync(getJournalPath(slug)).size;
|
|
38
|
+
}
|
|
39
|
+
describe("journal delta writes", () => {
|
|
40
|
+
let stateDir;
|
|
41
|
+
beforeEach(() => {
|
|
42
|
+
stateDir = fs.mkdtempSync(path.join(os.tmpdir(), "hq-journal-delta-"));
|
|
43
|
+
process.env.HQ_STATE_DIR = stateDir;
|
|
44
|
+
});
|
|
45
|
+
afterEach(() => {
|
|
46
|
+
delete process.env.HQ_STATE_DIR;
|
|
47
|
+
fs.rmSync(stateDir, { recursive: true, force: true });
|
|
48
|
+
});
|
|
49
|
+
// --- the round trip, over every mutation shape --------------------------
|
|
50
|
+
it("round-trips an added file", () => {
|
|
51
|
+
writeJournal("acme", journal({ "a.md": entry() }));
|
|
52
|
+
const next = journal({ "a.md": entry(), "b.md": entry({ size: 20 }) }, "t1");
|
|
53
|
+
writeJournal("acme", next);
|
|
54
|
+
expect(readJournal("acme")).toEqual(next);
|
|
55
|
+
});
|
|
56
|
+
it("round-trips a modified file", () => {
|
|
57
|
+
writeJournal("acme", journal({ "a.md": entry() }));
|
|
58
|
+
const next = journal({ "a.md": entry({ hash: "b".repeat(64), size: 99 }) }, "t1");
|
|
59
|
+
writeJournal("acme", next);
|
|
60
|
+
expect(readJournal("acme")).toEqual(next);
|
|
61
|
+
});
|
|
62
|
+
it("round-trips a deleted file", () => {
|
|
63
|
+
writeJournal("acme", journal({ "a.md": entry(), "b.md": entry() }));
|
|
64
|
+
const next = journal({ "a.md": entry() }, "t1");
|
|
65
|
+
writeJournal("acme", next);
|
|
66
|
+
expect(readJournal("acme")).toEqual(next);
|
|
67
|
+
expect(readJournal("acme").files["b.md"]).toBeUndefined();
|
|
68
|
+
});
|
|
69
|
+
it("round-trips a change confined to an optional field", () => {
|
|
70
|
+
// The comparison must cover every property of an entry, not a hand-picked
|
|
71
|
+
// list — a change only to `remoteEtag` still has to reach the delta.
|
|
72
|
+
writeJournal("acme", journal({ "a.md": entry() }));
|
|
73
|
+
const next = journal({ "a.md": entry({ remoteEtag: "etag-1" }) }, "t1");
|
|
74
|
+
writeJournal("acme", next);
|
|
75
|
+
expect(readJournal("acme").files["a.md"]?.remoteEtag).toBe("etag-1");
|
|
76
|
+
});
|
|
77
|
+
it("round-trips removal of an optional field", () => {
|
|
78
|
+
writeJournal("acme", journal({ "a.md": entry({ mtimeMs: 5 }) }));
|
|
79
|
+
const next = journal({ "a.md": entry() }, "t1");
|
|
80
|
+
writeJournal("acme", next);
|
|
81
|
+
expect(readJournal("acme").files["a.md"]).not.toHaveProperty("mtimeMs");
|
|
82
|
+
});
|
|
83
|
+
it("round-trips lastSync on an otherwise unchanged journal", () => {
|
|
84
|
+
writeJournal("acme", journal({ "a.md": entry() }, "t0"));
|
|
85
|
+
writeJournal("acme", journal({ "a.md": entry() }, "t-later"));
|
|
86
|
+
expect(readJournal("acme").lastSync).toBe("t-later");
|
|
87
|
+
});
|
|
88
|
+
it("survives a long run of successive updates", () => {
|
|
89
|
+
writeJournal("acme", journal({}));
|
|
90
|
+
const files = {};
|
|
91
|
+
for (let i = 0; i < 40; i++) {
|
|
92
|
+
files[`f${i}.md`] = entry({ size: i });
|
|
93
|
+
if (i % 7 === 3)
|
|
94
|
+
delete files[`f${i - 1}.md`];
|
|
95
|
+
writeJournal("acme", journal({ ...files }, `t${i}`));
|
|
96
|
+
}
|
|
97
|
+
expect(readJournal("acme")).toEqual(journal({ ...files }, "t39"));
|
|
98
|
+
});
|
|
99
|
+
// --- the legacy JSON path is now a locator ------------------------------
|
|
100
|
+
it("keeps the legacy path tiny instead of copying the journal into it", () => {
|
|
101
|
+
const many = {};
|
|
102
|
+
for (let i = 0; i < 4000; i++) {
|
|
103
|
+
many[`knowledge/notes/file-${i}-${"x".repeat(60)}.md`] = entry();
|
|
104
|
+
}
|
|
105
|
+
writeJournal("big", journal(many));
|
|
106
|
+
writeJournal("big", journal({ ...many, "one-more.md": entry() }, "t1"));
|
|
107
|
+
// A full copy of this journal is hundreds of KB; the locator is bytes.
|
|
108
|
+
expect(locatorBytes("big")).toBeLessThan(4096);
|
|
109
|
+
// …and the real state is intact.
|
|
110
|
+
expect(Object.keys(readJournal("big").files)).toHaveLength(4001);
|
|
111
|
+
});
|
|
112
|
+
it("replaces a pre-existing full copy in place, reclaiming its space", () => {
|
|
113
|
+
// An install upgrading from the old format arrives with a full copy on
|
|
114
|
+
// disk. It must be overwritten by an ordinary write — not left to grow, and
|
|
115
|
+
// not requiring a separate cleanup step anyone has to remember to run.
|
|
116
|
+
writeJournal("upgraded", journal({ "a.md": entry() }));
|
|
117
|
+
const bulky = JSON.stringify(journal(Object.fromEntries(Array.from({ length: 3000 }, (_, i) => [`f${i}-${"y".repeat(60)}.md`, entry()]))));
|
|
118
|
+
fs.writeFileSync(getJournalPath("upgraded"), bulky);
|
|
119
|
+
expect(locatorBytes("upgraded")).toBeGreaterThan(100_000);
|
|
120
|
+
writeJournal("upgraded", journal({ "a.md": entry(), "b.md": entry() }, "t1"));
|
|
121
|
+
expect(locatorBytes("upgraded")).toBeLessThan(4096);
|
|
122
|
+
expect(Object.keys(readJournal("upgraded").files).sort()).toEqual(["a.md", "b.md"]);
|
|
123
|
+
});
|
|
124
|
+
it("still lets listJournals discover every slug", () => {
|
|
125
|
+
// The locator's remaining job: store directories are named by a one-way
|
|
126
|
+
// digest, so this filename is the only way to enumerate slugs.
|
|
127
|
+
writeJournal("alpha", journal({ "a.md": entry() }));
|
|
128
|
+
writeJournal("bravo", journal({ "b.md": entry() }));
|
|
129
|
+
writeJournal("charlie", journal({ "c.md": entry() }));
|
|
130
|
+
expect(listJournals().map((j) => j.slug)).toEqual(["alpha", "bravo", "charlie"]);
|
|
131
|
+
expect(listJournals().find((j) => j.slug === "bravo")?.journal.files).toHaveProperty("b.md");
|
|
132
|
+
});
|
|
133
|
+
it("does not rewrite the locator once it is in place", () => {
|
|
134
|
+
writeJournal("stable", journal({ "a.md": entry() }));
|
|
135
|
+
const first = fs.statSync(getJournalPath("stable")).mtimeMs;
|
|
136
|
+
writeJournal("stable", journal({ "a.md": entry(), "b.md": entry() }, "t1"));
|
|
137
|
+
expect(fs.statSync(getJournalPath("stable")).mtimeMs).toBe(first);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
//# sourceMappingURL=journal-delta-writes.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journal-delta-writes.test.js","sourceRoot":"","sources":["../src/journal-delta-writes.test.ts"],"names":[],"mappings":"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"}
|
package/dist/journal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EAIX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAIL,KAAK,0BAA0B,EAChC,MAAM,uBAAuB,CAAC;AAE/B,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,QAA2B,CAAC;AAEzD,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,EAAG,GAAY,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"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"}
|
package/dist/journal.js
CHANGED
|
@@ -33,6 +33,23 @@ const JOURNAL_FILE_SUFFIX = ".json";
|
|
|
33
33
|
const JOURNAL_LAST_GOOD_SUFFIX = ".last-good";
|
|
34
34
|
const JOURNAL_WAL_RECORD_TYPE = 1;
|
|
35
35
|
const JOURNAL_DELTA_RECORD_TYPE = 2;
|
|
36
|
+
/**
|
|
37
|
+
* Marks `sync-journal.<slug>.json` as a locator rather than a journal.
|
|
38
|
+
*
|
|
39
|
+
* That file used to hold a full copy of the journal in the pre-v3 format, kept
|
|
40
|
+
* so older clients could still read sync state. Those versions are no longer
|
|
41
|
+
* supported, and the copy was ruinously expensive: on a large vault a 178 MB
|
|
42
|
+
* `JSON.stringify` plus a 178 MB durable write on EVERY journal update, about
|
|
43
|
+
* three times a minute — roughly half a gigabyte a minute spent duplicating
|
|
44
|
+
* state the v3 store already owns.
|
|
45
|
+
*
|
|
46
|
+
* The filename still has one job. `listJournals` discovers which slugs exist by
|
|
47
|
+
* scanning for it, and it cannot discover them from the store instead: store
|
|
48
|
+
* directories are named by a one-way digest of the scope id. So the path stays
|
|
49
|
+
* and the contents shrink to a locator — a few dozen bytes naming where the
|
|
50
|
+
* real state lives.
|
|
51
|
+
*/
|
|
52
|
+
const JOURNAL_LOCATOR_SCHEMA = "hq-sync-journal-locator@1";
|
|
36
53
|
/**
|
|
37
54
|
* Where per-company journals are stored. Honors `HQ_STATE_DIR` for tests and
|
|
38
55
|
* non-standard installs; otherwise falls back to `~/.hq`.
|
|
@@ -136,6 +153,16 @@ export function readJournal(slug) {
|
|
|
136
153
|
else {
|
|
137
154
|
legacy = emptyJournal();
|
|
138
155
|
}
|
|
156
|
+
// A locator is a signpost, not a journal: it has no `files` map at all.
|
|
157
|
+
// Feeding one to `migrateToV2` yields an object that passes for a journal and
|
|
158
|
+
// then throws on first use, so it is treated as "nothing to migrate".
|
|
159
|
+
//
|
|
160
|
+
// Reaching here holding a locator means the store it points at is gone —
|
|
161
|
+
// removed out from under us, or a state dir that never had one. Seeding an
|
|
162
|
+
// empty journal is exactly what a fresh install does.
|
|
163
|
+
if (isJournalLocator(legacy)) {
|
|
164
|
+
legacy = emptyJournal();
|
|
165
|
+
}
|
|
139
166
|
migrateToV2(legacy);
|
|
140
167
|
return openJournalStore(slug, legacy).getState().journal;
|
|
141
168
|
}
|
|
@@ -345,22 +372,109 @@ export function migrateToV2(journal) {
|
|
|
345
372
|
export function writeJournal(slug, journal) {
|
|
346
373
|
migrateToV2(journal);
|
|
347
374
|
const store = openJournalStore(slug, journal);
|
|
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.
|
|
352
375
|
if (store.wasCreated) {
|
|
353
|
-
|
|
376
|
+
// The store was just seeded from this journal, so its state already matches
|
|
377
|
+
// and there is no delta to record. Only the locator is missing.
|
|
378
|
+
writeJournalLocator(slug);
|
|
379
|
+
return;
|
|
354
380
|
}
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
381
|
+
// Append what CHANGED, not the whole journal.
|
|
382
|
+
//
|
|
383
|
+
// This used to be `store.replaceState({ journal })`, which republishes the
|
|
384
|
+
// entire state as a fresh compact snapshot. On a vault tracking half a
|
|
385
|
+
// million files that is a 178 MB write to record an edit to one of them —
|
|
386
|
+
// and the measured cost was three of those a minute. The store has always
|
|
387
|
+
// been able to READ type-2 delta records; it simply never emitted them,
|
|
388
|
+
// because a client older than the delta reducer treats one as a fatal
|
|
389
|
+
// reducer error with no fallback to an earlier generation. Those clients are
|
|
390
|
+
// no longer supported, so the efficient path is now the only path.
|
|
391
|
+
//
|
|
392
|
+
// The WAL still compacts on its own schedule (record count or byte ceiling),
|
|
393
|
+
// so a full snapshot is written periodically rather than never — recovery
|
|
394
|
+
// stays bounded, it just no longer happens on every single update.
|
|
395
|
+
const delta = journalDelta(store.getState().journal, journal);
|
|
396
|
+
store.append(JOURNAL_DELTA_RECORD_TYPE, delta);
|
|
397
|
+
// The locator is immutable content, so it only needs writing if it is absent
|
|
398
|
+
// or still holds a pre-v3 full copy.
|
|
399
|
+
ensureJournalLocator(slug);
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Difference two journals into the delta record the store's reducer applies.
|
|
403
|
+
*
|
|
404
|
+
* Everything the reducer needs to reconstruct `next` from `previous` must be in
|
|
405
|
+
* here: an entry omitted from `upserts` is asserted to be unchanged, so a
|
|
406
|
+
* comparison that is too lenient loses data silently.
|
|
407
|
+
*/
|
|
408
|
+
function journalDelta(previous, next) {
|
|
409
|
+
const upserts = {};
|
|
410
|
+
for (const [key, entry] of Object.entries(next.files)) {
|
|
411
|
+
const before = previous.files[key];
|
|
412
|
+
// Value comparison, not identity: `previous` was just deserialized from the
|
|
413
|
+
// snapshot on disk, so nothing in it shares a reference with the caller's
|
|
414
|
+
// journal and an identity check would mark every file changed.
|
|
415
|
+
if (before !== undefined && sameEntry(before, entry))
|
|
416
|
+
continue;
|
|
417
|
+
upserts[key] = entry;
|
|
418
|
+
}
|
|
419
|
+
const deletes = [];
|
|
420
|
+
for (const key of Object.keys(previous.files)) {
|
|
421
|
+
if (!(key in next.files))
|
|
422
|
+
deletes.push(key);
|
|
423
|
+
}
|
|
424
|
+
return {
|
|
425
|
+
version: next.version === "1" ? JOURNAL_VERSION_CURRENT : next.version,
|
|
426
|
+
lastSync: next.lastSync,
|
|
427
|
+
upserts,
|
|
428
|
+
deletes,
|
|
429
|
+
pulls: next.pulls ?? [],
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Value equality for a journal entry.
|
|
434
|
+
*
|
|
435
|
+
* Deliberately compares the union of own keys rather than a hand-written list
|
|
436
|
+
* of fields. A field list silently stops covering any property added to
|
|
437
|
+
* `JournalEntry` later, and the failure mode of an under-covering comparison
|
|
438
|
+
* here is the worst kind: the change is judged absent, never lands in a delta,
|
|
439
|
+
* and the journal quietly diverges from what actually synced.
|
|
440
|
+
*/
|
|
441
|
+
function sameEntry(a, b) {
|
|
442
|
+
const keys = Object.keys(a);
|
|
443
|
+
if (keys.length !== Object.keys(b).length)
|
|
444
|
+
return false;
|
|
445
|
+
for (const key of keys) {
|
|
446
|
+
const left = a[key];
|
|
447
|
+
const right = b[key];
|
|
448
|
+
if (left === right)
|
|
449
|
+
continue;
|
|
450
|
+
if (typeof left === "object" && left !== null &&
|
|
451
|
+
typeof right === "object" && right !== null) {
|
|
452
|
+
if (JSON.stringify(left) !== JSON.stringify(right))
|
|
453
|
+
return false;
|
|
454
|
+
continue;
|
|
455
|
+
}
|
|
456
|
+
return false;
|
|
363
457
|
}
|
|
458
|
+
return true;
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Write the locator unless it is already in place.
|
|
462
|
+
*
|
|
463
|
+
* Reading a few dozen bytes to avoid an fsync is worth it on the hot path, and
|
|
464
|
+
* an install upgrading from the full pre-v3 mirror lands here with a 178 MB
|
|
465
|
+
* file that fails the check and is replaced by the small one.
|
|
466
|
+
*/
|
|
467
|
+
function ensureJournalLocator(slug) {
|
|
468
|
+
const journalPath = getJournalPath(slug);
|
|
469
|
+
try {
|
|
470
|
+
const raw = fs.readFileSync(journalPath, "utf-8");
|
|
471
|
+
if (raw.length <= 4096 && isJournalLocator(JSON.parse(raw)))
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
catch {
|
|
475
|
+
// Missing, unreadable or unparseable — write a fresh locator below.
|
|
476
|
+
}
|
|
477
|
+
writeJournalLocator(slug);
|
|
364
478
|
}
|
|
365
479
|
/**
|
|
366
480
|
* Startup maintenance for one journal shard. The StateStore preflight is a
|
|
@@ -380,7 +494,7 @@ export function repairJournalStateIfNeeded(slug, options = {}) {
|
|
|
380
494
|
// Recovery authority remains the framed store. Refresh the compatibility
|
|
381
495
|
// JSON only after two compact generations are durable; this reopens a tiny
|
|
382
496
|
// compact snapshot, never the oversized WAL that was just pruned.
|
|
383
|
-
|
|
497
|
+
writeJournalLocator(safeSlug);
|
|
384
498
|
return { slug: safeSlug, ...result };
|
|
385
499
|
}
|
|
386
500
|
/**
|
|
@@ -395,23 +509,36 @@ export function repairJournalState(slug) {
|
|
|
395
509
|
if (repaired.status !== "repaired") {
|
|
396
510
|
throw new Error(`journal: no v3 state exists for ${safeSlug}`);
|
|
397
511
|
}
|
|
398
|
-
|
|
512
|
+
writeJournalLocator(safeSlug);
|
|
399
513
|
return { slug: safeSlug, ...repaired };
|
|
400
514
|
}
|
|
515
|
+
/** True when a parsed file is a locator stub and carries no journal content. */
|
|
516
|
+
function isJournalLocator(value) {
|
|
517
|
+
return typeof value === "object" && value !== null &&
|
|
518
|
+
value.schema === JOURNAL_LOCATOR_SCHEMA;
|
|
519
|
+
}
|
|
401
520
|
/**
|
|
402
|
-
*
|
|
403
|
-
*
|
|
404
|
-
*
|
|
405
|
-
*
|
|
521
|
+
* Write the locator for `slug`, replacing whatever is there.
|
|
522
|
+
*
|
|
523
|
+
* On an install upgrading from the full mirror this overwrites the old file in
|
|
524
|
+
* place, so the megabytes are reclaimed by an ordinary write — nothing is
|
|
525
|
+
* deleted and no separate cleanup step has to be trusted to run.
|
|
406
526
|
*/
|
|
407
|
-
function
|
|
408
|
-
const
|
|
527
|
+
function writeJournalLocator(slug) {
|
|
528
|
+
const locator = {
|
|
529
|
+
schema: JOURNAL_LOCATOR_SCHEMA,
|
|
530
|
+
slug: sanitizeSlug(slug),
|
|
531
|
+
state: "sync-state-v3",
|
|
532
|
+
};
|
|
533
|
+
writeJournalFileAtomically(getJournalPath(slug), JSON.stringify(locator));
|
|
534
|
+
}
|
|
535
|
+
function writeJournalFileAtomically(journalPath, contents) {
|
|
409
536
|
fs.mkdirSync(path.dirname(journalPath), { recursive: true });
|
|
410
537
|
const temporary = path.join(path.dirname(journalPath), `.${path.basename(journalPath)}.${process.pid}.${crypto.randomBytes(6).toString("hex")}.tmp`);
|
|
411
538
|
let fd;
|
|
412
539
|
try {
|
|
413
540
|
fd = fs.openSync(temporary, "wx");
|
|
414
|
-
fs.writeFileSync(fd,
|
|
541
|
+
fs.writeFileSync(fd, contents);
|
|
415
542
|
fs.fdatasyncSync(fd);
|
|
416
543
|
fs.closeSync(fd);
|
|
417
544
|
fd = undefined;
|
|
@@ -421,8 +548,8 @@ function writeLegacyJournalMirror(slug, journal) {
|
|
|
421
548
|
try {
|
|
422
549
|
fs.rmSync(temporary, { force: true });
|
|
423
550
|
}
|
|
424
|
-
catch { /* preserve
|
|
425
|
-
throw new Error(`journal: failed to
|
|
551
|
+
catch { /* preserve the write failure */ }
|
|
552
|
+
throw new Error(`journal: failed to write ${journalPath}`, { cause: error });
|
|
426
553
|
}
|
|
427
554
|
finally {
|
|
428
555
|
if (fd !== undefined)
|
package/dist/journal.js.map
CHANGED
|
@@ -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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"}
|
package/dist/journal.test.js
CHANGED
|
@@ -166,7 +166,10 @@ describe("journal", () => {
|
|
|
166
166
|
delete changed.files["knowledge/399.md"];
|
|
167
167
|
writeJournal("indigo", changed);
|
|
168
168
|
expect(readJournal("indigo")).toEqual(changed);
|
|
169
|
-
|
|
169
|
+
// The legacy path is a locator, not a copy of the journal: the store is
|
|
170
|
+
// the only authority, and this file exists so `listJournals` can still
|
|
171
|
+
// enumerate slugs it cannot recover from a digest-named directory.
|
|
172
|
+
expect(JSON.parse(fs.readFileSync(getJournalPath("indigo"), "utf8"))).toMatchObject({ schema: "hq-sync-journal-locator@1", slug: "indigo" });
|
|
170
173
|
const storeDir = path.dirname(fs.readdirSync(path.join(stateDir, "sync-state-v3"), { recursive: true })
|
|
171
174
|
.map(String)
|
|
172
175
|
.map((name) => path.join(stateDir, "sync-state-v3", name))
|
|
@@ -207,13 +210,17 @@ describe("journal", () => {
|
|
|
207
210
|
expect(brandstage.files).toHaveProperty("b.md");
|
|
208
211
|
expect(brandstage.files).not.toHaveProperty("a.md");
|
|
209
212
|
});
|
|
210
|
-
it("migrates once, appends authoritative updates, and
|
|
213
|
+
it("migrates once, appends authoritative updates, and leaves the locator alone", () => {
|
|
211
214
|
const initial = { version: "2", lastSync: "one", files: {}, pulls: [] };
|
|
212
215
|
writeJournal("indigo", initial);
|
|
213
216
|
const locator = fs.readFileSync(getJournalPath("indigo"));
|
|
214
217
|
writeJournal("indigo", { version: "2", lastSync: "two", files: {}, pulls: [] });
|
|
215
|
-
|
|
216
|
-
|
|
218
|
+
// The locator is immutable content, so an update must not rewrite it.
|
|
219
|
+
// This used to be a full copy of the journal, republished on every write
|
|
220
|
+
// — 178 MB a time on a large vault, three times a minute.
|
|
221
|
+
expect(fs.readFileSync(getJournalPath("indigo"))).toEqual(locator);
|
|
222
|
+
expect(locator.byteLength).toBeLessThan(4096);
|
|
223
|
+
// The update itself still lands, in the store where it belongs.
|
|
217
224
|
expect(readJournal("indigo").lastSync).toBe("two");
|
|
218
225
|
});
|
|
219
226
|
it("publishes header-only generations readable by the rollback reducer", () => {
|
|
@@ -243,9 +250,19 @@ describe("journal", () => {
|
|
|
243
250
|
const walSizes = fs.readdirSync(storeDir)
|
|
244
251
|
.filter((name) => /^wal-\d+\.bin$/.test(name))
|
|
245
252
|
.map((name) => fs.statSync(path.join(storeDir, name)).size);
|
|
246
|
-
|
|
253
|
+
// The update is a delta APPENDED to the WAL, so the WAL carries a record
|
|
254
|
+
// rather than staying at its 80-byte header. That inversion is the whole
|
|
255
|
+
// change: a header-only WAL meant every update had republished the entire
|
|
256
|
+
// state as a fresh snapshot instead.
|
|
257
|
+
expect(walSizes.some((size) => size > 80)).toBe(true);
|
|
247
258
|
expect(readJournal("indigo")).toEqual(changed);
|
|
248
|
-
|
|
259
|
+
// A reader that understands ONLY the old full-state record type can no
|
|
260
|
+
// longer follow this journal. That is the deliberate trade: those client
|
|
261
|
+
// versions are no longer supported, and refusing to emit deltas for them
|
|
262
|
+
// is what cost a full snapshot per update. Asserted rather than dropped,
|
|
263
|
+
// so the day someone needs that compatibility back this test says why it
|
|
264
|
+
// went and what re-enabling it would mean.
|
|
265
|
+
expect(() => StateStore.open({
|
|
249
266
|
rootDir: stateDir,
|
|
250
267
|
scopeId: "journal:indigo",
|
|
251
268
|
initialState: { journal: { version: "2", lastSync: "", files: {}, pulls: [] } },
|
|
@@ -254,8 +271,7 @@ describe("journal", () => {
|
|
|
254
271
|
throw new Error(`rollback reader rejects type ${record.type}`);
|
|
255
272
|
return record.payload;
|
|
256
273
|
},
|
|
257
|
-
});
|
|
258
|
-
expect(rollbackReader.getState().journal).toEqual(changed);
|
|
274
|
+
})).toThrow(/rejects type 2|reducer rejected/);
|
|
259
275
|
});
|
|
260
276
|
});
|
|
261
277
|
describe("updateEntry", () => {
|
|
@@ -341,9 +357,11 @@ describe("journal", () => {
|
|
|
341
357
|
});
|
|
342
358
|
it("writeJournal upgrades v1 → v2 on disk", () => {
|
|
343
359
|
writeJournal("indigo", { version: "1", lastSync: "", files: {} });
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
360
|
+
// Read back through the store, which is where the journal now lives; the
|
|
361
|
+
// legacy path holds only a locator.
|
|
362
|
+
const stored = readJournal("indigo");
|
|
363
|
+
expect(stored.version).toBe("2");
|
|
364
|
+
expect(stored.pulls).toEqual([]);
|
|
347
365
|
});
|
|
348
366
|
it("normalizes backslash keys even on an already-v2 journal", () => {
|
|
349
367
|
// The landmine predates the v2 bump, so a poisoned journal can be v2.
|