@hmbown/kytchen-storage 0.1.2 → 0.1.3

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.
@@ -1,14 +1,5 @@
1
1
  import type { CompactionSnapshot, RunEvent } from "@hmbown/kytchen-protocol";
2
2
  import type { SessionStore, ThreadRecord, TurnRecord } from "./types.js";
3
- /**
4
- * File-based session store using JSON files for durability.
5
- * Structure:
6
- * <root>/
7
- * threads/<threadId>.json — ThreadRecord
8
- * turns/<threadId>/<runId>.json — TurnRecord
9
- * events/<runId>.jsonl — Append-only event log (one JSON per line)
10
- * compactions/<threadId>.json — CompactionSnapshot[]
11
- */
12
3
  export declare class FileSessionStore implements SessionStore {
13
4
  private readonly rootDir;
14
5
  constructor(rootDir: string);
@@ -26,10 +17,29 @@ export declare class FileSessionStore implements SessionStore {
26
17
  getTurn(runId: string): Promise<TurnRecord | null>;
27
18
  getTurnsForThread(threadId: string): Promise<TurnRecord[]>;
28
19
  deleteTurn(threadId: string, runId: string): Promise<void>;
20
+ /**
21
+ * Each JSONL line is a checksummed envelope:
22
+ * {"event":<event>,"cs":"<sha256-hex>"}
23
+ * where `cs` is the SHA-256 of the compact JSON of `event`.
24
+ */
29
25
  appendEvent(runId: string, event: RunEvent): Promise<void>;
30
26
  getEvents(runId: string): Promise<RunEvent[]>;
31
27
  saveCompaction(snapshot: CompactionSnapshot): Promise<void>;
32
28
  getLatestCompaction(threadId: string): Promise<CompactionSnapshot | null>;
33
29
  getCompactionHistory(threadId: string): Promise<CompactionSnapshot[]>;
30
+ /**
31
+ * Walk all persisted files and verify their checksums.
32
+ *
33
+ * Returns counts of:
34
+ * - `valid` — files that exist and pass checksum validation (or are
35
+ * legacy files with no checksum, which are considered valid)
36
+ * - `corrupt` — files that exist but fail checksum validation
37
+ * - `missing` — files that were expected but could not be read
38
+ */
39
+ validateStore(): Promise<{
40
+ valid: number;
41
+ corrupt: number;
42
+ missing: number;
43
+ }>;
34
44
  }
35
45
  //# sourceMappingURL=file-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-store.d.ts","sourceRoot":"","sources":["../src/file-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEzE;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAE5C,OAAO,CAAC,UAAU;IAGlB,OAAO,CAAC,QAAQ;IAGhB,OAAO,CAAC,SAAS;IAGjB,OAAO,CAAC,cAAc;YAIR,SAAS;IAMjB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjD,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IASzD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3E,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAetC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7C,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAkBlD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAe1D,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1D,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAc7C,cAAc,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAKzE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;CAQ5E"}
1
+ {"version":3,"file":"file-store.d.ts","sourceRoot":"","sources":["../src/file-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAwEzE,qBAAa,gBAAiB,YAAW,YAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAE5C,OAAO,CAAC,UAAU;IAGlB,OAAO,CAAC,QAAQ;IAGhB,OAAO,CAAC,SAAS;IAGjB,OAAO,CAAC,cAAc;YAIR,SAAS;IAMjB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjD,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAczD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3E,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAqBtC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7C,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAsBlD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAqB1D,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhE;;;;OAIG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAmC7C,cAAc,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAKzE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAmB3E;;;;;;;;OAQG;IACG,aAAa,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAyGpF"}
@@ -1,4 +1,5 @@
1
1
  import { readFile, writeFile, mkdir, readdir, rm } from "node:fs/promises";
2
+ import { createHash } from "node:crypto";
2
3
  import { join } from "node:path";
3
4
  /**
4
5
  * File-based session store using JSON files for durability.
@@ -8,7 +9,53 @@ import { join } from "node:path";
8
9
  * turns/<threadId>/<runId>.json — TurnRecord
9
10
  * events/<runId>.jsonl — Append-only event log (one JSON per line)
10
11
  * compactions/<threadId>.json — CompactionSnapshot[]
12
+ *
13
+ * All JSON files are wrapped in a ChecksummedPayload envelope (version 1).
14
+ * JSONL event lines are wrapped per-line as {"event":<event>,"cs":"<hex>"}.
15
+ * Legacy files without a checksum field are read as-is for backward compatibility.
11
16
  */
17
+ /** SHA-256 hex checksum of a UTF-8 string. */
18
+ function computeChecksum(data) {
19
+ return createHash("sha256").update(data, "utf8").digest("hex");
20
+ }
21
+ /**
22
+ * Wrap an arbitrary value in a ChecksummedPayload envelope.
23
+ * `data` is the JSON-serialised form of the value; the checksum is computed
24
+ * over that exact string so the round-trip is deterministic.
25
+ */
26
+ function wrapPayload(value) {
27
+ const data = JSON.stringify(value, null, 2);
28
+ const checksum = computeChecksum(data);
29
+ const envelope = { data, checksum, version: 1 };
30
+ return JSON.stringify(envelope, null, 2);
31
+ }
32
+ /**
33
+ * Unwrap a ChecksummedPayload envelope and validate the checksum.
34
+ *
35
+ * - If the parsed JSON is a ChecksummedPayload (has `checksum` + `data`
36
+ * fields), the checksum is verified. On mismatch a warning is logged
37
+ * and `checksumValid` is set to `false`.
38
+ * - If the JSON has no `checksum` field it is treated as a legacy file and
39
+ * returned directly without validation.
40
+ *
41
+ * Returns `{ value, checksumValid }` where `value` is the unwrapped object
42
+ * and `checksumValid` is `true` (valid), `false` (corrupt), or `null`
43
+ * (legacy — no checksum present).
44
+ */
45
+ function unwrapPayload(raw, label) {
46
+ const outer = JSON.parse(raw);
47
+ // Legacy path: no checksum field → read as-is.
48
+ if (!("checksum" in outer)) {
49
+ return { value: outer, checksumValid: null };
50
+ }
51
+ const envelope = outer;
52
+ const expected = computeChecksum(envelope.data);
53
+ const checksumValid = envelope.checksum === expected;
54
+ if (!checksumValid) {
55
+ console.warn(`[FileSessionStore] Checksum mismatch for ${label}. File may be corrupt.`);
56
+ }
57
+ return { value: JSON.parse(envelope.data), checksumValid };
58
+ }
12
59
  export class FileSessionStore {
13
60
  rootDir;
14
61
  constructor(rootDir) {
@@ -33,12 +80,17 @@ export class FileSessionStore {
33
80
  async createThread(thread) {
34
81
  await this.ensureDir(this.threadsDir());
35
82
  const path = join(this.threadsDir(), `${thread.id}.json`);
36
- await writeFile(path, JSON.stringify(thread, null, 2));
83
+ await writeFile(path, wrapPayload(thread));
37
84
  }
38
85
  async getThread(threadId) {
39
86
  try {
40
87
  const raw = await readFile(join(this.threadsDir(), `${threadId}.json`), "utf-8");
41
- return JSON.parse(raw);
88
+ const { value, checksumValid } = unwrapPayload(raw, `thread:${threadId}`);
89
+ if (checksumValid === false) {
90
+ // Checksum failed — return null so callers don't use corrupt data.
91
+ return null;
92
+ }
93
+ return value;
42
94
  }
43
95
  catch {
44
96
  return null;
@@ -49,7 +101,7 @@ export class FileSessionStore {
49
101
  if (!existing)
50
102
  throw new Error(`Thread not found: ${threadId}`);
51
103
  const updated = { ...existing, ...patch, updatedAt: new Date().toISOString() };
52
- await writeFile(join(this.threadsDir(), `${threadId}.json`), JSON.stringify(updated, null, 2));
104
+ await writeFile(join(this.threadsDir(), `${threadId}.json`), wrapPayload(updated));
53
105
  }
54
106
  async listThreads() {
55
107
  try {
@@ -59,7 +111,13 @@ export class FileSessionStore {
59
111
  if (!file.endsWith(".json"))
60
112
  continue;
61
113
  const raw = await readFile(join(this.threadsDir(), file), "utf-8");
62
- threads.push(JSON.parse(raw));
114
+ const threadId = file.replace(/\.json$/, "");
115
+ const { value, checksumValid } = unwrapPayload(raw, `thread:${threadId}`);
116
+ if (checksumValid === false) {
117
+ // Skip corrupt entries in listings.
118
+ continue;
119
+ }
120
+ threads.push(value);
63
121
  }
64
122
  return threads.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
65
123
  }
@@ -86,7 +144,7 @@ export class FileSessionStore {
86
144
  async upsertTurn(turn) {
87
145
  await this.ensureDir(this.turnsDir(turn.threadId));
88
146
  const path = join(this.turnsDir(turn.threadId), `${turn.runId}.json`);
89
- await writeFile(path, JSON.stringify(turn, null, 2));
147
+ await writeFile(path, wrapPayload(turn));
90
148
  }
91
149
  async getTurn(runId) {
92
150
  // Need to scan turn directories since we index by runId
@@ -95,7 +153,11 @@ export class FileSessionStore {
95
153
  for (const threadId of threadDirs) {
96
154
  try {
97
155
  const raw = await readFile(join(this.turnsDir(threadId), `${runId}.json`), "utf-8");
98
- return JSON.parse(raw);
156
+ const { value, checksumValid } = unwrapPayload(raw, `turn:${runId}`);
157
+ if (checksumValid === false) {
158
+ return null;
159
+ }
160
+ return value;
99
161
  }
100
162
  catch {
101
163
  continue;
@@ -115,7 +177,13 @@ export class FileSessionStore {
115
177
  if (!file.endsWith(".json"))
116
178
  continue;
117
179
  const raw = await readFile(join(this.turnsDir(threadId), file), "utf-8");
118
- turns.push(JSON.parse(raw));
180
+ const runId = file.replace(/\.json$/, "");
181
+ const { value, checksumValid } = unwrapPayload(raw, `turn:${runId}`);
182
+ if (checksumValid === false) {
183
+ // Skip corrupt turns.
184
+ continue;
185
+ }
186
+ turns.push(value);
119
187
  }
120
188
  return turns.sort((a, b) => a.createdAt.localeCompare(b.createdAt));
121
189
  }
@@ -128,19 +196,43 @@ export class FileSessionStore {
128
196
  await rm(join(this.eventsDir(), `${runId}.jsonl`), { force: true });
129
197
  }
130
198
  // --- Events (append-only JSONL) ---
199
+ /**
200
+ * Each JSONL line is a checksummed envelope:
201
+ * {"event":<event>,"cs":"<sha256-hex>"}
202
+ * where `cs` is the SHA-256 of the compact JSON of `event`.
203
+ */
131
204
  async appendEvent(runId, event) {
132
205
  await this.ensureDir(this.eventsDir());
133
206
  const path = join(this.eventsDir(), `${runId}.jsonl`);
134
- const line = JSON.stringify(event) + "\n";
207
+ const eventJson = JSON.stringify(event);
208
+ const cs = computeChecksum(eventJson);
209
+ const line = JSON.stringify({ event, cs }) + "\n";
135
210
  await writeFile(path, line, { flag: "a" });
136
211
  }
137
212
  async getEvents(runId) {
138
213
  try {
139
214
  const raw = await readFile(join(this.eventsDir(), `${runId}.jsonl`), "utf-8");
140
- return raw
141
- .split("\n")
142
- .filter((line) => line.trim().length > 0)
143
- .map((line) => JSON.parse(line));
215
+ const events = [];
216
+ const lines = raw.split("\n").filter((line) => line.trim().length > 0);
217
+ for (const line of lines) {
218
+ const parsed = JSON.parse(line);
219
+ // Legacy path: line is a bare RunEvent (no `cs` field).
220
+ if (!("cs" in parsed)) {
221
+ events.push(parsed);
222
+ continue;
223
+ }
224
+ // Checksummed envelope.
225
+ const { event, cs } = parsed;
226
+ const expectedCs = computeChecksum(JSON.stringify(event));
227
+ if (cs !== expectedCs) {
228
+ console.warn(`[FileSessionStore] Event checksum mismatch in run ${runId}. Line skipped for safety.`);
229
+ // Graceful degradation: include the event data anyway but log the warning.
230
+ events.push(event);
231
+ continue;
232
+ }
233
+ events.push(event);
234
+ }
235
+ return events;
144
236
  }
145
237
  catch {
146
238
  return [];
@@ -152,7 +244,7 @@ export class FileSessionStore {
152
244
  const path = join(this.compactionsDir(), `${snapshot.threadId}.json`);
153
245
  const history = await this.getCompactionHistory(snapshot.threadId);
154
246
  history.push(snapshot);
155
- await writeFile(path, JSON.stringify(history, null, 2));
247
+ await writeFile(path, wrapPayload(history));
156
248
  }
157
249
  async getLatestCompaction(threadId) {
158
250
  const history = await this.getCompactionHistory(threadId);
@@ -161,11 +253,136 @@ export class FileSessionStore {
161
253
  async getCompactionHistory(threadId) {
162
254
  try {
163
255
  const raw = await readFile(join(this.compactionsDir(), `${threadId}.json`), "utf-8");
164
- return JSON.parse(raw);
256
+ const { value, checksumValid } = unwrapPayload(raw, `compaction:${threadId}`);
257
+ if (checksumValid === false) {
258
+ // Corrupt compaction history — return empty rather than broken data.
259
+ return [];
260
+ }
261
+ return value;
165
262
  }
166
263
  catch {
167
264
  return [];
168
265
  }
169
266
  }
267
+ // --- Integrity validation ---
268
+ /**
269
+ * Walk all persisted files and verify their checksums.
270
+ *
271
+ * Returns counts of:
272
+ * - `valid` — files that exist and pass checksum validation (or are
273
+ * legacy files with no checksum, which are considered valid)
274
+ * - `corrupt` — files that exist but fail checksum validation
275
+ * - `missing` — files that were expected but could not be read
276
+ */
277
+ async validateStore() {
278
+ let valid = 0;
279
+ let corrupt = 0;
280
+ let missing = 0;
281
+ const checkFile = async (filePath, label) => {
282
+ try {
283
+ const raw = await readFile(filePath, "utf-8");
284
+ const { checksumValid } = unwrapPayload(raw, label);
285
+ if (checksumValid === false) {
286
+ corrupt++;
287
+ }
288
+ else {
289
+ // null (legacy) or true (valid)
290
+ valid++;
291
+ }
292
+ }
293
+ catch {
294
+ missing++;
295
+ }
296
+ };
297
+ const checkJsonlFile = async (filePath, runId) => {
298
+ try {
299
+ const raw = await readFile(filePath, "utf-8");
300
+ const lines = raw.split("\n").filter((l) => l.trim().length > 0);
301
+ for (const line of lines) {
302
+ try {
303
+ const parsed = JSON.parse(line);
304
+ if (!("cs" in parsed)) {
305
+ // Legacy line — count as valid.
306
+ valid++;
307
+ continue;
308
+ }
309
+ const { event, cs } = parsed;
310
+ const expectedCs = computeChecksum(JSON.stringify(event));
311
+ if (cs !== expectedCs) {
312
+ console.warn(`[FileSessionStore] validateStore: event checksum mismatch in run ${runId}`);
313
+ corrupt++;
314
+ }
315
+ else {
316
+ valid++;
317
+ }
318
+ }
319
+ catch {
320
+ corrupt++;
321
+ }
322
+ }
323
+ }
324
+ catch {
325
+ missing++;
326
+ }
327
+ };
328
+ // Threads
329
+ try {
330
+ const threadFiles = await readdir(this.threadsDir());
331
+ for (const file of threadFiles) {
332
+ if (!file.endsWith(".json"))
333
+ continue;
334
+ await checkFile(join(this.threadsDir(), file), `thread:${file}`);
335
+ }
336
+ }
337
+ catch {
338
+ // Directory doesn't exist — nothing to validate.
339
+ }
340
+ // Turns
341
+ try {
342
+ const threadDirs = await readdir(join(this.rootDir, "turns"));
343
+ for (const threadId of threadDirs) {
344
+ try {
345
+ const turnFiles = await readdir(this.turnsDir(threadId));
346
+ for (const file of turnFiles) {
347
+ if (!file.endsWith(".json"))
348
+ continue;
349
+ await checkFile(join(this.turnsDir(threadId), file), `turn:${file}`);
350
+ }
351
+ }
352
+ catch {
353
+ // Skip unreadable thread turn directory.
354
+ }
355
+ }
356
+ }
357
+ catch {
358
+ // turns directory doesn't exist.
359
+ }
360
+ // Events (JSONL)
361
+ try {
362
+ const eventFiles = await readdir(this.eventsDir());
363
+ for (const file of eventFiles) {
364
+ if (!file.endsWith(".jsonl"))
365
+ continue;
366
+ const runId = file.replace(/\.jsonl$/, "");
367
+ await checkJsonlFile(join(this.eventsDir(), file), runId);
368
+ }
369
+ }
370
+ catch {
371
+ // events directory doesn't exist.
372
+ }
373
+ // Compactions
374
+ try {
375
+ const compactionFiles = await readdir(this.compactionsDir());
376
+ for (const file of compactionFiles) {
377
+ if (!file.endsWith(".json"))
378
+ continue;
379
+ await checkFile(join(this.compactionsDir(), file), `compaction:${file}`);
380
+ }
381
+ }
382
+ catch {
383
+ // compactions directory doesn't exist.
384
+ }
385
+ return { valid, corrupt, missing };
386
+ }
170
387
  }
171
388
  //# sourceMappingURL=file-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-store.js","sourceRoot":"","sources":["../src/file-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-store.js","sourceRoot":"","sources":["../src/file-store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hmbown/kytchen-storage",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Session persistence for Kytchen: file-based and in-memory stores with compaction support.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -18,7 +18,7 @@
18
18
  "README.md"
19
19
  ],
20
20
  "dependencies": {
21
- "@hmbown/kytchen-protocol": "0.1.2"
21
+ "@hmbown/kytchen-protocol": "0.1.3"
22
22
  },
23
23
  "keywords": [
24
24
  "kytchen",