@melra/storage-sqlite 0.3.0-alpha.11 → 0.3.0-alpha.12

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/README.md CHANGED
@@ -11,7 +11,7 @@ npm install @melra/storage-sqlite
11
11
  ```ts
12
12
  import { SqliteStore } from "@melra/storage-sqlite";
13
13
 
14
- const store = new SqliteStore(`${dataDirectory}/melra.db`);
14
+ const store = new SqliteStore(`${dataDirectory}/melra.sqlite`);
15
15
  ```
16
16
 
17
17
  Workflow transitions append events and update the projection inside one
@@ -29,6 +29,10 @@ Persisted values are the redacted copies. Exact task requests and adapter result
29
29
  are sealed with AES-256-GCM bound to record identity and purpose, so reading the
30
30
  database file does not hand over the payloads.
31
31
 
32
+ Pass `{ readOnly: true }` to open an existing database without creating it or
33
+ taking a write lock — what `melra tasks`, `watch`, and `status` do beside a
34
+ running server.
35
+
32
36
  Schema changes need a new migration rather than an edit to an existing one.
33
37
 
34
38
  Uses `node:sqlite`, which emits an experimental warning on Node 22 and 24.
package/dist/index.d.ts CHANGED
@@ -27,14 +27,25 @@ interface IdempotencyCommitRow {
27
27
  export declare class SqliteStore {
28
28
  readonly path: string;
29
29
  readonly database: DatabaseSync;
30
- constructor(path: string);
30
+ /**
31
+ * `readOnly` is for observers (`melra tasks`, `status`, `watch`) that sit
32
+ * beside a live server. Such a connection never migrates, never switches the
33
+ * journal mode, and cannot take a write lock, so a poll can never stall a
34
+ * writer — in WAL mode a reader and a writer do not block each other. The
35
+ * database must already exist; an observer has no business creating one.
36
+ */
37
+ constructor(path: string, options?: {
38
+ readOnly?: boolean;
39
+ });
31
40
  private migrate;
32
41
  private applyMigration;
33
42
  private transaction;
34
43
  private addColumnIfMissing;
35
44
  saveTask(task: TaskRecord): void;
36
45
  getTask(id: string): TaskRecord | undefined;
37
- listTasks(limit?: number): TaskRecord[];
46
+ listTasks(limit?: number, status?: TaskRecord["status"]): TaskRecord[];
47
+ /** Counted in SQL so a summary does not have to load every task to add them up. */
48
+ taskStatusCounts(): Record<string, number>;
38
49
  saveTaskPayload(taskId: string, payload: EncryptedPayload, at: string): void;
39
50
  getTaskPayload(taskId: string): EncryptedPayload | undefined;
40
51
  saveTaskExecutionResult(task: TaskRecord, payload: EncryptedPayload): void;
@@ -42,7 +53,12 @@ export declare class SqliteStore {
42
53
  deleteTaskPayload(taskId: string): void;
43
54
  listInterruptedTasks(): TaskRecord[];
44
55
  getWorkflowPayload(id: string, version: number): EncryptedPayload | undefined;
45
- createWorkflow(redactedDefinition: WorkflowDefinition, payload: EncryptedPayload, run: WorkflowRun, events: WorkflowEvent[]): void;
56
+ /**
57
+ * Store a new run. `payload` undefined means the definition is already
58
+ * stored under this id and version (the caller has checked it is the same
59
+ * one), so only the run and its events are written.
60
+ */
61
+ createWorkflow(redactedDefinition: WorkflowDefinition, payload: EncryptedPayload | undefined, run: WorkflowRun, events: WorkflowEvent[]): void;
46
62
  getWorkflowDefinition(id: string, version: number): WorkflowDefinition | undefined;
47
63
  getWorkflowRun(id: string): WorkflowRun | undefined;
48
64
  listWorkflowRuns(statuses?: WorkflowRun["status"][]): WorkflowRun[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -34,8 +34,20 @@ function parseStored(data, schema, error) {
34
34
  export class SqliteStore {
35
35
  path;
36
36
  database;
37
- constructor(path) {
37
+ /**
38
+ * `readOnly` is for observers (`melra tasks`, `status`, `watch`) that sit
39
+ * beside a live server. Such a connection never migrates, never switches the
40
+ * journal mode, and cannot take a write lock, so a poll can never stall a
41
+ * writer — in WAL mode a reader and a writer do not block each other. The
42
+ * database must already exist; an observer has no business creating one.
43
+ */
44
+ constructor(path, options = {}) {
38
45
  this.path = path;
46
+ if (options.readOnly === true) {
47
+ this.database = new DatabaseSync(path, { readOnly: true });
48
+ this.database.exec("PRAGMA busy_timeout = 5000");
49
+ return;
50
+ }
39
51
  if (path !== ":memory:")
40
52
  mkdirSync(dirname(path), { recursive: true });
41
53
  this.database = new DatabaseSync(path);
@@ -246,12 +258,25 @@ export class SqliteStore {
246
258
  .get(id);
247
259
  return row === undefined ? undefined : JSON.parse(row.data);
248
260
  }
249
- listTasks(limit = 50) {
250
- const rows = this.database
251
- .prepare("SELECT data FROM tasks ORDER BY updated_at DESC LIMIT ?")
252
- .all(limit);
261
+ // The status filter runs in SQL, before the limit: filtering the newest N
262
+ // afterwards would silently drop older matches.
263
+ listTasks(limit = 50, status) {
264
+ const rows = (status === undefined
265
+ ? this.database
266
+ .prepare("SELECT data FROM tasks ORDER BY updated_at DESC LIMIT ?")
267
+ .all(limit)
268
+ : this.database
269
+ .prepare("SELECT data FROM tasks WHERE json_extract(data, '$.status') = ? ORDER BY updated_at DESC LIMIT ?")
270
+ .all(status, limit));
253
271
  return rows.map((row) => JSON.parse(row.data));
254
272
  }
273
+ /** Counted in SQL so a summary does not have to load every task to add them up. */
274
+ taskStatusCounts() {
275
+ const rows = this.database
276
+ .prepare("SELECT json_extract(data, '$.status') AS status, COUNT(*) AS count FROM tasks GROUP BY 1")
277
+ .all();
278
+ return Object.fromEntries(rows.map((row) => [row.status, Number(row.count)]));
279
+ }
255
280
  saveTaskPayload(taskId, payload, at) {
256
281
  const parsed = EncryptedPayloadSchema.parse(payload);
257
282
  this.database
@@ -324,9 +349,17 @@ export class SqliteStore {
324
349
  ? undefined
325
350
  : parseStored(row.data, EncryptedPayloadSchema, "stored_workflow_payload_invalid");
326
351
  }
352
+ /**
353
+ * Store a new run. `payload` undefined means the definition is already
354
+ * stored under this id and version (the caller has checked it is the same
355
+ * one), so only the run and its events are written.
356
+ */
327
357
  createWorkflow(redactedDefinition, payload, run, events) {
328
358
  const definition = WorkflowDefinitionSchema.parse(redactedDefinition);
329
- const sealed = EncryptedPayloadSchema.parse(payload);
359
+ const sealed = payload === undefined ? undefined : EncryptedPayloadSchema.parse(payload);
360
+ if (sealed === undefined && this.getWorkflowPayload(definition.id, definition.version) === undefined) {
361
+ throw new Error("workflow_payload_not_found");
362
+ }
330
363
  const projection = WorkflowRunSchema.parse(run);
331
364
  const parsedEvents = events.map((item) => WorkflowEventSchema.parse(item));
332
365
  if (definition.id !== projection.definitionId ||
@@ -335,20 +368,22 @@ export class SqliteStore {
335
368
  }
336
369
  this.assertWorkflowEvents(projection.id, projection.traceId, 0, projection.stateVersion, parsedEvents);
337
370
  this.transaction(() => {
338
- this.database
339
- .prepare(`
340
- INSERT INTO workflow_definitions(id, version, data, created_at)
341
- VALUES (?, ?, ?, ?)
342
- `)
343
- .run(definition.id, definition.version, JSON.stringify(definition), projection.createdAt);
344
- this.database
345
- .prepare(`
346
- INSERT INTO workflow_payloads(
347
- workflow_id, workflow_version, payload, created_at
348
- )
349
- VALUES (?, ?, ?, ?)
350
- `)
351
- .run(definition.id, definition.version, JSON.stringify(sealed), projection.createdAt);
371
+ if (sealed !== undefined) {
372
+ this.database
373
+ .prepare(`
374
+ INSERT INTO workflow_definitions(id, version, data, created_at)
375
+ VALUES (?, ?, ?, ?)
376
+ `)
377
+ .run(definition.id, definition.version, JSON.stringify(definition), projection.createdAt);
378
+ this.database
379
+ .prepare(`
380
+ INSERT INTO workflow_payloads(
381
+ workflow_id, workflow_version, payload, created_at
382
+ )
383
+ VALUES (?, ?, ?, ?)
384
+ `)
385
+ .run(definition.id, definition.version, JSON.stringify(sealed), projection.createdAt);
386
+ }
352
387
  this.database
353
388
  .prepare(`
354
389
  INSERT INTO workflow_runs(
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@melra/storage-sqlite",
3
- "version": "0.3.0-alpha.11",
3
+ "version": "0.3.0-alpha.12",
4
4
  "description": "Transactional SQLite task, workflow, event, payload, and evidence storage for MELRA.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -21,13 +21,13 @@
21
21
  "dist"
22
22
  ],
23
23
  "dependencies": {
24
- "@melra/receipt-schema": "0.3.0-alpha.11",
25
- "@melra/protocol": "0.3.0-alpha.11"
24
+ "@melra/protocol": "0.3.0-alpha.12",
25
+ "@melra/receipt-schema": "0.3.0-alpha.12"
26
26
  },
27
27
  "scripts": {
28
28
  "build": "tsc -p tsconfig.json",
29
29
  "clean": "rm -rf dist",
30
30
  "test": "vitest run --no-file-parallelism --testTimeout=30000",
31
- "typecheck": "tsc -p tsconfig.json --noEmit"
31
+ "typecheck": "tsc -p tsconfig.test.json"
32
32
  }
33
33
  }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
@@ -1,309 +0,0 @@
1
- // Copyright 2026 XAGI Labs Private Limited
2
- // SPDX-License-Identifier: Apache-2.0
3
- import { mkdtempSync, rmSync } from "node:fs";
4
- import { tmpdir } from "node:os";
5
- import { join } from "node:path";
6
- import { DatabaseSync } from "node:sqlite";
7
- import { afterEach, describe, expect, it } from "vitest";
8
- import { TaskRequestSchema } from "@melra/protocol";
9
- import { SqliteStore } from "./index.js";
10
- let store;
11
- let tempDirectory;
12
- afterEach(() => {
13
- store?.close();
14
- store = undefined;
15
- if (tempDirectory !== undefined) {
16
- rmSync(tempDirectory, { recursive: true, force: true });
17
- tempDirectory = undefined;
18
- }
19
- });
20
- describe("SqliteStore", () => {
21
- it("migrates an existing alpha database exactly once", () => {
22
- tempDirectory = mkdtempSync(join(tmpdir(), "melra-storage-migration-"));
23
- const databasePath = join(tempDirectory, "melra.sqlite");
24
- const legacy = new DatabaseSync(databasePath);
25
- legacy.exec(`
26
- CREATE TABLE tasks (
27
- id TEXT PRIMARY KEY,
28
- data TEXT NOT NULL,
29
- created_at TEXT NOT NULL,
30
- updated_at TEXT NOT NULL
31
- );
32
- CREATE TABLE receipts (
33
- id TEXT PRIMARY KEY,
34
- task_id TEXT NOT NULL,
35
- data TEXT NOT NULL,
36
- created_at TEXT NOT NULL
37
- );
38
- CREATE TABLE certificates (
39
- id TEXT PRIMARY KEY,
40
- task_id TEXT NOT NULL UNIQUE,
41
- data TEXT NOT NULL,
42
- created_at TEXT NOT NULL
43
- );
44
- CREATE TABLE memories (
45
- id TEXT PRIMARY KEY,
46
- scope TEXT NOT NULL,
47
- key TEXT NOT NULL,
48
- value TEXT NOT NULL,
49
- source TEXT NOT NULL,
50
- confidence REAL NOT NULL,
51
- tags TEXT NOT NULL DEFAULT '[]',
52
- speaker TEXT,
53
- episode_id TEXT,
54
- sequence INTEGER,
55
- expires_at TEXT,
56
- supersedes_id TEXT,
57
- superseded_by TEXT,
58
- created_at TEXT NOT NULL,
59
- updated_at TEXT NOT NULL
60
- );
61
- `);
62
- legacy.close();
63
- store = new SqliteStore(databasePath);
64
- const applied = store.database
65
- .prepare("SELECT version FROM schema_migrations ORDER BY version")
66
- .all().map((row) => row.version);
67
- // Recorded once each, in order, with no gaps — the property this test is
68
- // about. A literal list would only restate which migrations exist today and
69
- // would fail on every unrelated one added afterwards.
70
- expect(applied.length).toBeGreaterThanOrEqual(2);
71
- expect(applied).toEqual(applied.map((_, index) => index + 1));
72
- });
73
- it("grants a workflow lease to one owner and expires it", () => {
74
- store = new SqliteStore(":memory:");
75
- const workflowId = "11111111-1111-4111-8111-111111111111";
76
- const soon = new Date(Date.now() + 60_000).toISOString();
77
- const now = new Date().toISOString();
78
- expect(store.acquireWorkflowLease(workflowId, "a", now, soon)).toBe(true);
79
- expect(store.acquireWorkflowLease(workflowId, "b", now, soon)).toBe(false);
80
- // The holder re-entering is not contention.
81
- expect(store.acquireWorkflowLease(workflowId, "a", now, soon)).toBe(true);
82
- expect(store.getWorkflowLease(workflowId)?.owner).toBe("a");
83
- // Renewal only works for the holder, so a loser cannot extend a lease it
84
- // never won.
85
- expect(store.renewWorkflowLease(workflowId, "b", soon)).toBe(false);
86
- expect(store.renewWorkflowLease(workflowId, "a", soon)).toBe(true);
87
- // A dead holder's lease lapses rather than stranding the workflow.
88
- const past = new Date(Date.now() - 1_000).toISOString();
89
- store.renewWorkflowLease(workflowId, "a", past);
90
- expect(store.acquireWorkflowLease(workflowId, "b", now, soon)).toBe(true);
91
- store.releaseWorkflowLease(workflowId, "b");
92
- expect(store.getWorkflowLease(workflowId)).toBeUndefined();
93
- });
94
- it("persists tasks and scoped memories", () => {
95
- store = new SqliteStore(":memory:");
96
- const now = new Date().toISOString();
97
- const request = TaskRequestSchema.parse({
98
- goal: "Inspect the system",
99
- operation: { kind: "system", action: "info" },
100
- });
101
- store.saveTask({
102
- id: "605a411d-d39d-494b-a6de-0e8c3b96a564",
103
- request,
104
- status: "planned",
105
- policyDecision: {
106
- outcome: "allow",
107
- effect: "read",
108
- risk: "low",
109
- reason: "read_only_operation",
110
- policyVersion: "1",
111
- traits: [],
112
- },
113
- receiptIds: [],
114
- createdAt: now,
115
- updatedAt: now,
116
- });
117
- expect(store.getTask("605a411d-d39d-494b-a6de-0e8c3b96a564")?.request.goal).toBe("Inspect the system");
118
- store.putMemory({
119
- id: "8170fc74-9885-4ee5-973e-161fa441e510",
120
- scope: "workspace",
121
- key: "runtime",
122
- value: "MELRA uses SQLite",
123
- source: "test",
124
- confidence: 0.9,
125
- tags: ["runtime"],
126
- createdAt: now,
127
- updatedAt: now,
128
- });
129
- expect(store.memoryCandidates("workspace", 5)).toHaveLength(1);
130
- expect(store.listMemories("user", 5)).toHaveLength(0);
131
- });
132
- it("compacts only memories no read path can return", () => {
133
- store = new SqliteStore(":memory:");
134
- // `supersedeMemory` stamps `updated_at` from the real clock, so `now` has to
135
- // come from the same clock — a pinned instant made the test pass or fail on
136
- // the time of day it happened to run at.
137
- const now = new Date(Date.now() + 1_000);
138
- const old = new Date("2026-01-01T00:00:00.000Z").toISOString();
139
- const base = {
140
- scope: "workspace",
141
- source: "test",
142
- confidence: 0.9,
143
- tags: [],
144
- createdAt: old,
145
- };
146
- // Expired: filtered out of every query already, so nothing can miss it.
147
- store.putMemory({
148
- ...base,
149
- id: "11111111-1111-4111-8111-111111111111",
150
- key: "expired",
151
- value: "gone",
152
- expiresAt: "2026-08-01T00:00:00.000Z",
153
- updatedAt: old,
154
- });
155
- // A superseded chain: `stale` -> `middle` -> `head`, `head` still live.
156
- store.putMemory({
157
- ...base,
158
- id: "22222222-2222-4222-8222-222222222222",
159
- key: "stale",
160
- value: "v1",
161
- updatedAt: old,
162
- });
163
- store.putMemory({
164
- ...base,
165
- id: "33333333-3333-4333-8333-333333333333",
166
- key: "middle",
167
- value: "v2",
168
- supersedesId: "22222222-2222-4222-8222-222222222222",
169
- updatedAt: old,
170
- });
171
- store.putMemory({
172
- ...base,
173
- id: "44444444-4444-4444-8444-444444444444",
174
- key: "head",
175
- value: "v3",
176
- supersedesId: "33333333-3333-4333-8333-333333333333",
177
- updatedAt: old,
178
- });
179
- store.supersedeMemory("22222222-2222-4222-8222-222222222222", "workspace", "33333333-3333-4333-8333-333333333333");
180
- store.supersedeMemory("33333333-3333-4333-8333-333333333333", "workspace", "44444444-4444-4444-8444-444444444444");
181
- // Live and untouched by compaction at the default ceiling of none.
182
- store.putMemory({
183
- ...base,
184
- id: "55555555-5555-4555-8555-555555555555",
185
- key: "live",
186
- value: "keep me",
187
- updatedAt: old,
188
- });
189
- // `supersedeMemory` stamps `updated_at`, so the chain is only as old as the
190
- // supersession — measure age from now rather than from the seeded dates.
191
- const compacted = store.compactMemories("workspace", { maxAgeDays: 0, maxPerScope: 0 }, now);
192
- expect(compacted.expired).toBe(1);
193
- // `stale` goes; `middle` stays because live `head` still points at it, so
194
- // `supersedesId` never dangles.
195
- expect(compacted.superseded).toBe(1);
196
- expect(compacted.evicted).toBe(0);
197
- expect(store.getMemory("22222222-2222-4222-8222-222222222222")).toBeUndefined();
198
- expect(store.getMemory("33333333-3333-4333-8333-333333333333")).toBeDefined();
199
- expect(store.listMemories("workspace", 10).map((row) => row.key)).toEqual([
200
- "head",
201
- "live",
202
- ]);
203
- // An opt-in ceiling evicts live memories, oldest first.
204
- expect(store.compactMemories("workspace", { maxAgeDays: 30, maxPerScope: 1 }, now).evicted).toBe(1);
205
- expect(store.listMemories("workspace", 10)).toHaveLength(1);
206
- });
207
- it("migrates existing memory tables before persisting episode metadata", () => {
208
- tempDirectory = mkdtempSync(join(tmpdir(), "melra-memory-migration-"));
209
- const databasePath = join(tempDirectory, "melra.sqlite");
210
- const legacy = new DatabaseSync(databasePath);
211
- legacy.exec(`
212
- CREATE TABLE memories (
213
- id TEXT PRIMARY KEY,
214
- scope TEXT NOT NULL,
215
- key TEXT NOT NULL,
216
- value TEXT NOT NULL,
217
- source TEXT NOT NULL,
218
- confidence REAL NOT NULL,
219
- tags TEXT NOT NULL DEFAULT '[]',
220
- expires_at TEXT,
221
- supersedes_id TEXT,
222
- superseded_by TEXT,
223
- created_at TEXT NOT NULL,
224
- updated_at TEXT NOT NULL
225
- );
226
- `);
227
- legacy.close();
228
- store = new SqliteStore(databasePath);
229
- const now = new Date().toISOString();
230
- store.putMemory({
231
- id: "4a9b5e8d-0b5b-4fe4-8db4-e2275c733f11",
232
- scope: "workspace",
233
- key: "answer",
234
- value: "Adoption agencies.",
235
- source: "test",
236
- confidence: 1,
237
- tags: [],
238
- speaker: "Alex",
239
- episodeId: "conversation-a",
240
- sequence: 11,
241
- createdAt: now,
242
- updatedAt: now,
243
- });
244
- expect(store.getMemory("4a9b5e8d-0b5b-4fe4-8db4-e2275c733f11")).toMatchObject({
245
- speaker: "Alex",
246
- episodeId: "conversation-a",
247
- sequence: 11,
248
- });
249
- });
250
- it("keeps a superseded record while something live still points at it", () => {
251
- store = new SqliteStore(":memory:");
252
- const old = "5f1c1c30-0f3a-4a70-8f52-1b0a3d5d9c01";
253
- const ancient = "2000-01-01T00:00:00.000Z";
254
- store.putMemory({
255
- id: old,
256
- scope: "workspace",
257
- key: "city",
258
- value: "Chennai",
259
- source: "test",
260
- confidence: 1,
261
- tags: [],
262
- supersededBy: "5f1c1c30-0f3a-4a70-8f52-1b0a3d5d9c02",
263
- createdAt: ancient,
264
- updatedAt: ancient,
265
- });
266
- store.putMemory({
267
- id: "5f1c1c30-0f3a-4a70-8f52-1b0a3d5d9c02",
268
- scope: "workspace",
269
- key: "city",
270
- value: "Bengaluru",
271
- source: "test",
272
- confidence: 1,
273
- tags: [],
274
- supersedesId: old,
275
- createdAt: ancient,
276
- updatedAt: ancient,
277
- });
278
- // Deleting the old row here would leave the live record's `supersedesId`
279
- // pointing at nothing, so the history it claims to have could not be read.
280
- expect(store.compactMemories("workspace", { maxAgeDays: 0, maxPerScope: 0 })).toMatchObject({ superseded: 0 });
281
- expect(store.getMemory(old)).toBeDefined();
282
- });
283
- it("evicts the oldest live memories only once a ceiling is set", () => {
284
- store = new SqliteStore(":memory:");
285
- const ids = ["a", "b", "c"].map((suffix, index) => `6d2e0000-0000-4000-8000-00000000000${index}${suffix}`);
286
- ids.forEach((id, index) => {
287
- const stamp = new Date(1_700_000_000_000 + index * 1_000).toISOString();
288
- store.putMemory({
289
- id,
290
- scope: "workspace",
291
- key: `k${index}`,
292
- value: "v",
293
- source: "test",
294
- confidence: 1,
295
- tags: [],
296
- createdAt: stamp,
297
- updatedAt: stamp,
298
- });
299
- });
300
- // `maxPerScope` deletes records that are still readable, so the default of
301
- // 0 has to mean "no ceiling" rather than "keep nothing".
302
- expect(store.compactMemories("workspace", { maxAgeDays: 30, maxPerScope: 0 })).toMatchObject({ evicted: 0 });
303
- expect(store.listMemories("workspace", 10)).toHaveLength(3);
304
- expect(store.compactMemories("workspace", { maxAgeDays: 30, maxPerScope: 2 })).toMatchObject({ evicted: 1 });
305
- expect(store.getMemory(ids[0])).toBeUndefined();
306
- expect(store.getMemory(ids[2])).toBeDefined();
307
- });
308
- });
309
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=workflow-store.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow-store.test.d.ts","sourceRoot":"","sources":["../src/workflow-store.test.ts"],"names":[],"mappings":""}
@@ -1,277 +0,0 @@
1
- // Copyright 2026 XAGI Labs Private Limited
2
- // SPDX-License-Identifier: Apache-2.0
3
- import { mkdtemp, readFile, rm } from "node:fs/promises";
4
- import { tmpdir } from "node:os";
5
- import { join } from "node:path";
6
- import { afterEach, describe, expect, it } from "vitest";
7
- import { EncryptedPayloadSchema, TaskRequestSchema, WorkflowDefinitionSchema, WorkflowEventSchema, WorkflowRunSchema, WorkflowSnapshotSchema, } from "@melra/protocol";
8
- import { SqliteStore } from "./index.js";
9
- const now = "2026-07-30T12:00:00.000Z";
10
- const definitionId = "11111111-1111-4111-8111-111111111111";
11
- const workflowId = "22222222-2222-4222-8222-222222222222";
12
- const traceId = "33333333-3333-4333-8333-333333333333";
13
- const taskId = "44444444-4444-4444-8444-444444444444";
14
- const roots = [];
15
- const stores = [];
16
- afterEach(async () => {
17
- for (const store of stores.splice(0))
18
- store.close();
19
- await Promise.all(roots.splice(0).map((root) => rm(root, { recursive: true, force: true })));
20
- });
21
- function envelope(seed) {
22
- return EncryptedPayloadSchema.parse({
23
- version: 1,
24
- algorithm: "aes-256-gcm",
25
- iv: Buffer.from(`iv-${seed}`).toString("base64url"),
26
- ciphertext: Buffer.from(`ciphertext-${seed}`).toString("base64url"),
27
- tag: Buffer.from(`tag-${seed}`).toString("base64url"),
28
- });
29
- }
30
- function definition(goal = "Inspect the runtime") {
31
- return WorkflowDefinitionSchema.parse({
32
- schemaVersion: "1.0.0",
33
- id: definitionId,
34
- version: 1,
35
- name: "restart-safe",
36
- nodes: [
37
- {
38
- id: "inspect",
39
- type: "operation",
40
- dependsOn: [],
41
- request: {
42
- goal,
43
- operation: { kind: "system", action: "info" },
44
- },
45
- },
46
- ],
47
- });
48
- }
49
- function run(stateVersion = 1, status = "draft") {
50
- return WorkflowRunSchema.parse({
51
- schemaVersion: "1.0.0",
52
- id: workflowId,
53
- definitionId,
54
- definitionVersion: 1,
55
- status,
56
- stateVersion,
57
- nodes: { inspect: { status: "pending" } },
58
- traceId,
59
- createdAt: now,
60
- updatedAt: now,
61
- });
62
- }
63
- function event(sequence, id, type = "workflow.created") {
64
- return WorkflowEventSchema.parse({
65
- schemaVersion: "1.0.0",
66
- id,
67
- aggregateId: workflowId,
68
- sequence,
69
- traceId,
70
- type,
71
- data: { nodeId: "inspect" },
72
- occurredAt: now,
73
- });
74
- }
75
- function task(status = "verifying") {
76
- return {
77
- id: taskId,
78
- request: TaskRequestSchema.parse({
79
- goal: "[REDACTED]",
80
- operation: { kind: "system", action: "info" },
81
- }),
82
- status,
83
- policyDecision: {
84
- outcome: "allow",
85
- effect: "read",
86
- risk: "low",
87
- reason: "read_only_operation",
88
- policyVersion: "1",
89
- traits: [],
90
- },
91
- receiptIds: [],
92
- createdAt: now,
93
- updatedAt: now,
94
- };
95
- }
96
- describe("durable workflow storage", () => {
97
- it("stores only sealed execution payloads and reads validated records", async () => {
98
- const root = await mkdtemp(join(tmpdir(), "melra-workflow-store-"));
99
- roots.push(root);
100
- const databasePath = join(root, "melra.sqlite");
101
- const store = new SqliteStore(databasePath);
102
- stores.push(store);
103
- const initialRun = run();
104
- const created = event(1, "55555555-5555-4555-8555-555555555555");
105
- store.saveTask(task("planned"));
106
- store.saveTaskPayload(taskId, envelope("one-time-secret-request"), now);
107
- store.saveTaskExecutionResult(task(), envelope("one-time-secret-result"));
108
- store.createWorkflow(definition("[REDACTED]"), envelope("one-time-secret-workflow"), initialRun, [created]);
109
- store.saveWorkflowSnapshot(WorkflowSnapshotSchema.parse({
110
- schemaVersion: "1.0.0",
111
- workflowId,
112
- sequence: 1,
113
- run: initialRun,
114
- createdAt: now,
115
- }));
116
- expect(store.getTaskPayload(taskId)).toEqual(envelope("one-time-secret-request"));
117
- expect(store.getTaskResult(taskId)).toEqual(envelope("one-time-secret-result"));
118
- expect(store.getWorkflowDefinition(definitionId, 1)?.name).toBe("restart-safe");
119
- expect(store.getWorkflowPayload(definitionId, 1)).toEqual(envelope("one-time-secret-workflow"));
120
- expect(store.getWorkflowRun(workflowId)).toEqual(initialRun);
121
- expect(store.listWorkflowEvents(workflowId)).toEqual([created]);
122
- expect(store.getLatestWorkflowSnapshot(workflowId)?.sequence).toBe(1);
123
- expect(store.listInterruptedTasks()).toEqual([task()]);
124
- expect(store.commitIdempotency("stable-key", taskId, 1, now)).toBe(true);
125
- expect(store.commitIdempotency("stable-key", taskId, 2, now)).toBe(false);
126
- expect(store.getIdempotencyCommit("stable-key")).toEqual({
127
- taskId,
128
- attempt: 1,
129
- committedAt: now,
130
- });
131
- store.deleteTaskPayload(taskId);
132
- expect(store.getTaskPayload(taskId)).toBeUndefined();
133
- expect(store.getTaskResult(taskId)).toBeUndefined();
134
- store.close();
135
- stores.splice(stores.indexOf(store), 1);
136
- expect((await readFile(databasePath)).toString()).not.toContain("one-time-secret");
137
- });
138
- it("appends events monotonically and rejects stale projections", () => {
139
- const store = new SqliteStore(":memory:");
140
- stores.push(store);
141
- const initialRun = run();
142
- const created = event(1, "55555555-5555-4555-8555-555555555555");
143
- store.createWorkflow(definition("[REDACTED]"), envelope("workflow"), initialRun, [created]);
144
- const nextRun = run(2, "planned");
145
- const planned = event(2, "66666666-6666-4666-8666-666666666666", "workflow.status_changed");
146
- store.transitionWorkflow(workflowId, 1, nextRun, [planned]);
147
- expect(store.listWorkflowEvents(workflowId).map((item) => item.sequence)).toEqual([1, 2]);
148
- expect(store
149
- .listWorkflowEvents(workflowId, 1)
150
- .map((item) => item.sequence)).toEqual([2]);
151
- expect(() => store.transitionWorkflow(workflowId, 1, nextRun, [
152
- event(2, "77777777-7777-4777-8777-777777777777", "workflow.status_changed"),
153
- ])).toThrow("workflow_state_conflict");
154
- });
155
- it("rolls back the projection and every event when an append fails", () => {
156
- const store = new SqliteStore(":memory:");
157
- stores.push(store);
158
- const initialRun = run();
159
- const created = event(1, "55555555-5555-4555-8555-555555555555");
160
- store.createWorkflow(definition("[REDACTED]"), envelope("workflow"), initialRun, [created]);
161
- const blocking = event(3, "99999999-9999-4999-8999-999999999999", "workflow.node_ready");
162
- store.database
163
- .prepare(`
164
- INSERT INTO workflow_events(
165
- id, aggregate_id, sequence, trace_id, type, data, occurred_at
166
- )
167
- VALUES (?, ?, ?, ?, ?, ?, ?)
168
- `)
169
- .run(blocking.id, blocking.aggregateId, blocking.sequence, blocking.traceId, blocking.type, JSON.stringify(blocking), blocking.occurredAt);
170
- expect(() => store.transitionWorkflow(workflowId, 1, run(3, "running"), [
171
- event(2, "88888888-8888-4888-8888-888888888888", "workflow.status_changed"),
172
- event(3, "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa", "workflow.node_ready"),
173
- ])).toThrow();
174
- expect(store.getWorkflowRun(workflowId)).toEqual(initialRun);
175
- expect(store.listWorkflowEvents(workflowId).map((item) => item.sequence)).toEqual([1, 3]);
176
- });
177
- it("rolls back the task projection when result payload storage fails", () => {
178
- const store = new SqliteStore(":memory:");
179
- stores.push(store);
180
- expect(() => store.saveTaskExecutionResult(task(), envelope("result"))).toThrow("task_payload_not_found");
181
- expect(store.getTask(taskId)).toBeUndefined();
182
- });
183
- it("rejects mismatched definition and event identities", () => {
184
- const definitionMismatch = new SqliteStore(":memory:");
185
- stores.push(definitionMismatch);
186
- const otherDefinition = WorkflowDefinitionSchema.parse({
187
- ...definition("[REDACTED]"),
188
- id: "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
189
- });
190
- expect(() => definitionMismatch.createWorkflow(otherDefinition, envelope("workflow"), run(), [event(1, "55555555-5555-4555-8555-555555555555")])).toThrow("workflow_definition_mismatch");
191
- expect(definitionMismatch.getWorkflowRun(workflowId)).toBeUndefined();
192
- const traceMismatch = new SqliteStore(":memory:");
193
- stores.push(traceMismatch);
194
- const wrongTrace = WorkflowEventSchema.parse({
195
- ...event(1, "66666666-6666-4666-8666-666666666666"),
196
- traceId: "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb",
197
- });
198
- expect(() => traceMismatch.createWorkflow(definition("[REDACTED]"), envelope("workflow"), run(), [wrongTrace])).toThrow("workflow_event_identity_invalid");
199
- expect(traceMismatch.getWorkflowRun(workflowId)).toBeUndefined();
200
- const projectionMismatch = new SqliteStore(":memory:");
201
- stores.push(projectionMismatch);
202
- const initialRun = run();
203
- projectionMismatch.createWorkflow(definition("[REDACTED]"), envelope("workflow"), initialRun, [event(1, "77777777-7777-4777-8777-777777777777")]);
204
- const wrongTraceRun = WorkflowRunSchema.parse({
205
- ...run(2, "planned"),
206
- traceId: "cccccccc-cccc-4ccc-8ccc-cccccccccccc",
207
- });
208
- const wrongTraceEvent = WorkflowEventSchema.parse({
209
- ...event(2, "88888888-8888-4888-8888-888888888888", "workflow.status_changed"),
210
- traceId: wrongTraceRun.traceId,
211
- });
212
- expect(() => projectionMismatch.transitionWorkflow(workflowId, 1, wrongTraceRun, [wrongTraceEvent])).toThrow("workflow_projection_identity_mismatch");
213
- expect(projectionMismatch.getWorkflowRun(workflowId)).toEqual(initialRun);
214
- });
215
- it.each([
216
- [
217
- "workflow definition",
218
- "UPDATE workflow_definitions SET data = '{}'",
219
- "stored_workflow_definition_invalid",
220
- (store) => store.getWorkflowDefinition(definitionId, 1),
221
- ],
222
- [
223
- "workflow run",
224
- "UPDATE workflow_runs SET data = '{}'",
225
- "stored_workflow_run_invalid",
226
- (store) => store.getWorkflowRun(workflowId),
227
- ],
228
- [
229
- "workflow event",
230
- "UPDATE workflow_events SET data = '{}'",
231
- "stored_workflow_event_invalid",
232
- (store) => store.listWorkflowEvents(workflowId),
233
- ],
234
- [
235
- "workflow payload",
236
- "UPDATE workflow_payloads SET payload = '{}'",
237
- "stored_workflow_payload_invalid",
238
- (store) => store.getWorkflowPayload(definitionId, 1),
239
- ],
240
- [
241
- "workflow snapshot",
242
- "UPDATE workflow_snapshots SET data = '{}'",
243
- "stored_workflow_snapshot_invalid",
244
- (store) => store.getLatestWorkflowSnapshot(workflowId),
245
- ],
246
- [
247
- "task request payload",
248
- "UPDATE task_payloads SET request_payload = '{}'",
249
- "stored_task_payload_invalid",
250
- (store) => store.getTaskPayload(taskId),
251
- ],
252
- [
253
- "task result payload",
254
- "UPDATE task_payloads SET result_payload = '{}'",
255
- "stored_task_result_invalid",
256
- (store) => store.getTaskResult(taskId),
257
- ],
258
- ])("rejects corrupt %s JSON", (_record, update, expected, read) => {
259
- const store = new SqliteStore(":memory:");
260
- stores.push(store);
261
- store.saveTask(task("planned"));
262
- store.saveTaskPayload(taskId, envelope("request"), now);
263
- store.saveTaskExecutionResult(task(), envelope("result"));
264
- const initialRun = run();
265
- store.createWorkflow(definition("[REDACTED]"), envelope("workflow"), initialRun, [event(1, "55555555-5555-4555-8555-555555555555")]);
266
- store.saveWorkflowSnapshot(WorkflowSnapshotSchema.parse({
267
- schemaVersion: "1.0.0",
268
- workflowId,
269
- sequence: 1,
270
- run: initialRun,
271
- createdAt: now,
272
- }));
273
- store.database.exec(update);
274
- expect(() => read(store)).toThrow(expected);
275
- });
276
- });
277
- //# sourceMappingURL=workflow-store.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow-store.test.js","sourceRoot":"","sources":["../src/workflow-store.test.ts"],"names":[],"mappings":"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"}