@agentlensai/server 0.2.0

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 (118) hide show
  1. package/LICENSE +21 -0
  2. package/dist/__tests__/agents-stats.test.d.ts +5 -0
  3. package/dist/__tests__/agents-stats.test.d.ts.map +1 -0
  4. package/dist/__tests__/agents-stats.test.js +134 -0
  5. package/dist/__tests__/agents-stats.test.js.map +1 -0
  6. package/dist/__tests__/api-keys.test.d.ts +5 -0
  7. package/dist/__tests__/api-keys.test.d.ts.map +1 -0
  8. package/dist/__tests__/api-keys.test.js +118 -0
  9. package/dist/__tests__/api-keys.test.js.map +1 -0
  10. package/dist/__tests__/auth-no-db.test.d.ts +2 -0
  11. package/dist/__tests__/auth-no-db.test.d.ts.map +1 -0
  12. package/dist/__tests__/auth-no-db.test.js +43 -0
  13. package/dist/__tests__/auth-no-db.test.js.map +1 -0
  14. package/dist/__tests__/auth.test.d.ts +5 -0
  15. package/dist/__tests__/auth.test.d.ts.map +1 -0
  16. package/dist/__tests__/auth.test.js +86 -0
  17. package/dist/__tests__/auth.test.js.map +1 -0
  18. package/dist/__tests__/config.test.d.ts +2 -0
  19. package/dist/__tests__/config.test.d.ts.map +1 -0
  20. package/dist/__tests__/config.test.js +37 -0
  21. package/dist/__tests__/config.test.js.map +1 -0
  22. package/dist/__tests__/events-ingest.test.d.ts +5 -0
  23. package/dist/__tests__/events-ingest.test.d.ts.map +1 -0
  24. package/dist/__tests__/events-ingest.test.js +248 -0
  25. package/dist/__tests__/events-ingest.test.js.map +1 -0
  26. package/dist/__tests__/events-query.test.d.ts +5 -0
  27. package/dist/__tests__/events-query.test.d.ts.map +1 -0
  28. package/dist/__tests__/events-query.test.js +205 -0
  29. package/dist/__tests__/events-query.test.js.map +1 -0
  30. package/dist/__tests__/health.test.d.ts +5 -0
  31. package/dist/__tests__/health.test.d.ts.map +1 -0
  32. package/dist/__tests__/health.test.js +40 -0
  33. package/dist/__tests__/health.test.js.map +1 -0
  34. package/dist/__tests__/sessions.test.d.ts +5 -0
  35. package/dist/__tests__/sessions.test.d.ts.map +1 -0
  36. package/dist/__tests__/sessions.test.js +176 -0
  37. package/dist/__tests__/sessions.test.js.map +1 -0
  38. package/dist/__tests__/test-helpers.d.ts +24 -0
  39. package/dist/__tests__/test-helpers.d.ts.map +1 -0
  40. package/dist/__tests__/test-helpers.js +45 -0
  41. package/dist/__tests__/test-helpers.js.map +1 -0
  42. package/dist/config.d.ts +20 -0
  43. package/dist/config.d.ts.map +1 -0
  44. package/dist/config.js +20 -0
  45. package/dist/config.js.map +1 -0
  46. package/dist/db/__tests__/init.test.d.ts +2 -0
  47. package/dist/db/__tests__/init.test.d.ts.map +1 -0
  48. package/dist/db/__tests__/init.test.js +73 -0
  49. package/dist/db/__tests__/init.test.js.map +1 -0
  50. package/dist/db/__tests__/sqlite-store-read.test.d.ts +2 -0
  51. package/dist/db/__tests__/sqlite-store-read.test.d.ts.map +1 -0
  52. package/dist/db/__tests__/sqlite-store-read.test.js +749 -0
  53. package/dist/db/__tests__/sqlite-store-read.test.js.map +1 -0
  54. package/dist/db/__tests__/sqlite-store-write.test.d.ts +2 -0
  55. package/dist/db/__tests__/sqlite-store-write.test.d.ts.map +1 -0
  56. package/dist/db/__tests__/sqlite-store-write.test.js +418 -0
  57. package/dist/db/__tests__/sqlite-store-write.test.js.map +1 -0
  58. package/dist/db/errors.d.ts +16 -0
  59. package/dist/db/errors.d.ts.map +1 -0
  60. package/dist/db/errors.js +22 -0
  61. package/dist/db/errors.js.map +1 -0
  62. package/dist/db/index.d.ts +33 -0
  63. package/dist/db/index.d.ts.map +1 -0
  64. package/dist/db/index.js +44 -0
  65. package/dist/db/index.js.map +1 -0
  66. package/dist/db/migrate.d.ts +26 -0
  67. package/dist/db/migrate.d.ts.map +1 -0
  68. package/dist/db/migrate.js +128 -0
  69. package/dist/db/migrate.js.map +1 -0
  70. package/dist/db/schema.sqlite.d.ts +1009 -0
  71. package/dist/db/schema.sqlite.d.ts.map +1 -0
  72. package/dist/db/schema.sqlite.js +96 -0
  73. package/dist/db/schema.sqlite.js.map +1 -0
  74. package/dist/db/sqlite-store.d.ts +68 -0
  75. package/dist/db/sqlite-store.d.ts.map +1 -0
  76. package/dist/db/sqlite-store.js +753 -0
  77. package/dist/db/sqlite-store.js.map +1 -0
  78. package/dist/index.d.ts +45 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +182 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/lib/__tests__/retention.test.d.ts +2 -0
  83. package/dist/lib/__tests__/retention.test.d.ts.map +1 -0
  84. package/dist/lib/__tests__/retention.test.js +238 -0
  85. package/dist/lib/__tests__/retention.test.js.map +1 -0
  86. package/dist/lib/retention.d.ts +31 -0
  87. package/dist/lib/retention.d.ts.map +1 -0
  88. package/dist/lib/retention.js +47 -0
  89. package/dist/lib/retention.js.map +1 -0
  90. package/dist/middleware/auth.d.ts +37 -0
  91. package/dist/middleware/auth.d.ts.map +1 -0
  92. package/dist/middleware/auth.js +78 -0
  93. package/dist/middleware/auth.js.map +1 -0
  94. package/dist/routes/agents.d.ts +13 -0
  95. package/dist/routes/agents.d.ts.map +1 -0
  96. package/dist/routes/agents.js +34 -0
  97. package/dist/routes/agents.js.map +1 -0
  98. package/dist/routes/api-keys.d.ts +14 -0
  99. package/dist/routes/api-keys.d.ts.map +1 -0
  100. package/dist/routes/api-keys.js +81 -0
  101. package/dist/routes/api-keys.js.map +1 -0
  102. package/dist/routes/config.d.ts +39 -0
  103. package/dist/routes/config.d.ts.map +1 -0
  104. package/dist/routes/config.js +97 -0
  105. package/dist/routes/config.js.map +1 -0
  106. package/dist/routes/events.d.ts +14 -0
  107. package/dist/routes/events.d.ts.map +1 -0
  108. package/dist/routes/events.js +164 -0
  109. package/dist/routes/events.js.map +1 -0
  110. package/dist/routes/sessions.d.ts +14 -0
  111. package/dist/routes/sessions.d.ts.map +1 -0
  112. package/dist/routes/sessions.js +72 -0
  113. package/dist/routes/sessions.js.map +1 -0
  114. package/dist/routes/stats.d.ts +12 -0
  115. package/dist/routes/stats.d.ts.map +1 -0
  116. package/dist/routes/stats.js +16 -0
  117. package/dist/routes/stats.js.map +1 -0
  118. package/package.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-store-read.test.js","sourceRoot":"","sources":["../../../src/db/__tests__/sqlite-store-read.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sqlite-store-write.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-store-write.test.d.ts","sourceRoot":"","sources":["../../../src/db/__tests__/sqlite-store-write.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,418 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ import { computeEventHash } from '@agentlens/core';
3
+ import { createTestDb } from '../index.js';
4
+ import { runMigrations } from '../migrate.js';
5
+ import { SqliteEventStore } from '../sqlite-store.js';
6
+ import { HashChainError } from '../errors.js';
7
+ /**
8
+ * Create a valid event with a correct hash chain.
9
+ * Pass prevHash from the previous event to build a chain.
10
+ */
11
+ function makeEvent(overrides = {}) {
12
+ const id = overrides.id ?? `evt_${Math.random().toString(36).slice(2, 10)}`;
13
+ const base = {
14
+ id,
15
+ timestamp: overrides.timestamp ?? new Date().toISOString(),
16
+ sessionId: overrides.sessionId ?? 'sess_001',
17
+ agentId: overrides.agentId ?? 'agent_001',
18
+ eventType: overrides.eventType ?? 'custom',
19
+ severity: overrides.severity ?? 'info',
20
+ payload: overrides.payload ?? { type: 'test', data: {} },
21
+ metadata: overrides.metadata ?? {},
22
+ prevHash: overrides.prevHash ?? null,
23
+ };
24
+ const hash = computeEventHash({
25
+ id: base.id,
26
+ timestamp: base.timestamp,
27
+ sessionId: base.sessionId,
28
+ agentId: base.agentId,
29
+ eventType: base.eventType,
30
+ severity: base.severity,
31
+ payload: base.payload,
32
+ metadata: base.metadata,
33
+ prevHash: base.prevHash,
34
+ });
35
+ return { ...base, hash };
36
+ }
37
+ /**
38
+ * Build a chain of events for a given session, starting from prevHash=null.
39
+ */
40
+ function makeChain(overridesList) {
41
+ const chain = [];
42
+ let prevHash = null;
43
+ for (const overrides of overridesList) {
44
+ const event = makeEvent({ ...overrides, prevHash });
45
+ chain.push(event);
46
+ prevHash = event.hash;
47
+ }
48
+ return chain;
49
+ }
50
+ describe('SqliteEventStore — Write Operations (Story 3.4)', () => {
51
+ let db;
52
+ let store;
53
+ beforeEach(() => {
54
+ db = createTestDb();
55
+ runMigrations(db);
56
+ store = new SqliteEventStore(db);
57
+ });
58
+ describe('insertEvents()', () => {
59
+ it('should insert a single event', async () => {
60
+ const event = makeEvent();
61
+ await store.insertEvents([event]);
62
+ const retrieved = await store.getEvent(event.id);
63
+ expect(retrieved).not.toBeNull();
64
+ expect(retrieved.id).toBe(event.id);
65
+ expect(retrieved.sessionId).toBe('sess_001');
66
+ expect(retrieved.agentId).toBe('agent_001');
67
+ expect(retrieved.eventType).toBe('custom');
68
+ expect(retrieved.severity).toBe('info');
69
+ expect(retrieved.payload).toEqual({ type: 'test', data: {} });
70
+ });
71
+ it('should insert a batch of events in a single transaction', async () => {
72
+ const events = makeChain(Array.from({ length: 50 }, (_, i) => ({
73
+ id: `evt_batch_${i}`,
74
+ timestamp: new Date(Date.now() + i * 1000).toISOString(),
75
+ })));
76
+ await store.insertEvents(events);
77
+ const stats = await store.getStats();
78
+ expect(stats.totalEvents).toBe(50);
79
+ });
80
+ it('should handle empty event array without error', async () => {
81
+ await expect(store.insertEvents([])).resolves.not.toThrow();
82
+ });
83
+ it('should insert 100 events performantly (< 500ms)', async () => {
84
+ const events = makeChain(Array.from({ length: 100 }, (_, i) => ({
85
+ id: `evt_perf_${i}`,
86
+ timestamp: new Date(Date.now() + i).toISOString(),
87
+ })));
88
+ const start = performance.now();
89
+ await store.insertEvents(events);
90
+ const elapsed = performance.now() - start;
91
+ // Should be well under 500ms for in-memory SQLite
92
+ expect(elapsed).toBeLessThan(500);
93
+ });
94
+ });
95
+ describe('Session auto-management', () => {
96
+ it('should create a session on session_started event', async () => {
97
+ const event = makeEvent({
98
+ eventType: 'session_started',
99
+ payload: {
100
+ agentName: 'Test Agent',
101
+ tags: ['test', 'dev'],
102
+ },
103
+ });
104
+ await store.insertEvents([event]);
105
+ const session = await store.getSession('sess_001');
106
+ expect(session).not.toBeNull();
107
+ expect(session.id).toBe('sess_001');
108
+ expect(session.agentId).toBe('agent_001');
109
+ expect(session.agentName).toBe('Test Agent');
110
+ expect(session.status).toBe('active');
111
+ expect(session.eventCount).toBe(1);
112
+ expect(session.tags).toEqual(['test', 'dev']);
113
+ });
114
+ it('should update session on session_ended event', async () => {
115
+ const chain = makeChain([
116
+ {
117
+ id: 'evt_start',
118
+ eventType: 'session_started',
119
+ timestamp: '2026-01-01T00:00:00Z',
120
+ payload: { agentName: 'Test Agent', tags: [] },
121
+ },
122
+ {
123
+ id: 'evt_end',
124
+ eventType: 'session_ended',
125
+ timestamp: '2026-01-01T01:00:00Z',
126
+ payload: { reason: 'completed', summary: 'Done' },
127
+ },
128
+ ]);
129
+ await store.insertEvents(chain);
130
+ const session = await store.getSession('sess_001');
131
+ expect(session).not.toBeNull();
132
+ expect(session.status).toBe('completed');
133
+ expect(session.endedAt).toBe('2026-01-01T01:00:00Z');
134
+ expect(session.eventCount).toBe(2);
135
+ });
136
+ it('should set session status to error when reason is error', async () => {
137
+ const chain = makeChain([
138
+ {
139
+ id: 'evt_start',
140
+ eventType: 'session_started',
141
+ payload: { tags: [] },
142
+ },
143
+ {
144
+ id: 'evt_end',
145
+ eventType: 'session_ended',
146
+ payload: { reason: 'error' },
147
+ },
148
+ ]);
149
+ await store.insertEvents(chain);
150
+ const session = await store.getSession('sess_001');
151
+ expect(session.status).toBe('error');
152
+ });
153
+ it('should increment eventCount on each event', async () => {
154
+ const chain = makeChain([
155
+ { id: 'evt_1', eventType: 'session_started', payload: { tags: [] } },
156
+ { id: 'evt_2', eventType: 'tool_call', payload: { toolName: 'search', arguments: {}, callId: 'c1' } },
157
+ { id: 'evt_3', eventType: 'tool_call', payload: { toolName: 'read', arguments: {}, callId: 'c2' } },
158
+ ]);
159
+ await store.insertEvents(chain);
160
+ const session = await store.getSession('sess_001');
161
+ expect(session.eventCount).toBe(3);
162
+ expect(session.toolCallCount).toBe(2);
163
+ });
164
+ it('should increment errorCount on error events', async () => {
165
+ const chain = makeChain([
166
+ { id: 'evt_1', eventType: 'session_started', payload: { tags: [] } },
167
+ { id: 'evt_2', eventType: 'tool_error', severity: 'error', payload: { callId: 'c1', toolName: 'test', error: 'fail', durationMs: 100 } },
168
+ { id: 'evt_3', severity: 'critical', payload: { type: 'crash', data: {} } },
169
+ ]);
170
+ await store.insertEvents(chain);
171
+ const session = await store.getSession('sess_001');
172
+ expect(session.errorCount).toBe(2);
173
+ });
174
+ it('should auto-create session for events without session_started', async () => {
175
+ // Insert a regular event without a preceding session_started
176
+ await store.insertEvents([
177
+ makeEvent({ eventType: 'tool_call', payload: { toolName: 'test', arguments: {}, callId: 'c1' } }),
178
+ ]);
179
+ const session = await store.getSession('sess_001');
180
+ expect(session).not.toBeNull();
181
+ expect(session.status).toBe('active');
182
+ });
183
+ it('should track cost in session totalCostUsd', async () => {
184
+ const chain = makeChain([
185
+ {
186
+ id: 'evt_start',
187
+ eventType: 'session_started',
188
+ payload: { tags: [] },
189
+ },
190
+ {
191
+ id: 'evt_cost1',
192
+ eventType: 'cost_tracked',
193
+ payload: {
194
+ provider: 'openai',
195
+ model: 'gpt-4',
196
+ inputTokens: 100,
197
+ outputTokens: 50,
198
+ totalTokens: 150,
199
+ costUsd: 0.05,
200
+ },
201
+ },
202
+ {
203
+ id: 'evt_cost2',
204
+ eventType: 'cost_tracked',
205
+ payload: {
206
+ provider: 'openai',
207
+ model: 'gpt-4',
208
+ inputTokens: 200,
209
+ outputTokens: 100,
210
+ totalTokens: 300,
211
+ costUsd: 0.10,
212
+ },
213
+ },
214
+ ]);
215
+ await store.insertEvents(chain);
216
+ const session = await store.getSession('sess_001');
217
+ expect(session.totalCostUsd).toBeCloseTo(0.15, 2);
218
+ });
219
+ });
220
+ describe('Agent auto-creation', () => {
221
+ it('should auto-create agent on first event', async () => {
222
+ await store.insertEvents([
223
+ makeEvent({
224
+ eventType: 'session_started',
225
+ payload: { agentName: 'My Agent', tags: [] },
226
+ }),
227
+ ]);
228
+ const agent = await store.getAgent('agent_001');
229
+ expect(agent).not.toBeNull();
230
+ expect(agent.id).toBe('agent_001');
231
+ expect(agent.name).toBe('My Agent');
232
+ expect(agent.sessionCount).toBe(1);
233
+ });
234
+ it('should increment agent sessionCount on new sessions', async () => {
235
+ // Session 1
236
+ await store.insertEvents([
237
+ makeEvent({
238
+ id: 'evt_1',
239
+ sessionId: 'sess_001',
240
+ eventType: 'session_started',
241
+ payload: { agentName: 'My Agent', tags: [] },
242
+ }),
243
+ ]);
244
+ // Session 2 (different session, new chain)
245
+ await store.insertEvents([
246
+ makeEvent({
247
+ id: 'evt_2',
248
+ sessionId: 'sess_002',
249
+ eventType: 'session_started',
250
+ payload: { tags: [] },
251
+ }),
252
+ ]);
253
+ const agent = await store.getAgent('agent_001');
254
+ expect(agent.sessionCount).toBe(2);
255
+ });
256
+ it('should update agent lastSeenAt on each event', async () => {
257
+ await store.insertEvents([
258
+ makeEvent({
259
+ id: 'evt_1',
260
+ timestamp: '2026-01-01T00:00:00Z',
261
+ eventType: 'session_started',
262
+ payload: { tags: [] },
263
+ }),
264
+ ]);
265
+ // Second event in same session (needs to chain from first)
266
+ const firstEvent = await store.getEvent('evt_1');
267
+ await store.insertEvents([
268
+ makeEvent({
269
+ id: 'evt_2',
270
+ timestamp: '2026-01-02T00:00:00Z',
271
+ prevHash: firstEvent.hash,
272
+ }),
273
+ ]);
274
+ const agent = await store.getAgent('agent_001');
275
+ expect(agent.lastSeenAt).toBe('2026-01-02T00:00:00Z');
276
+ });
277
+ });
278
+ describe('upsertSession()', () => {
279
+ it('should create a new session via upsert', async () => {
280
+ await store.upsertSession({
281
+ id: 'sess_100',
282
+ agentId: 'agent_x',
283
+ startedAt: '2026-01-01T00:00:00Z',
284
+ status: 'active',
285
+ tags: ['upsert-test'],
286
+ });
287
+ const session = await store.getSession('sess_100');
288
+ expect(session).not.toBeNull();
289
+ expect(session.agentId).toBe('agent_x');
290
+ expect(session.tags).toEqual(['upsert-test']);
291
+ });
292
+ it('should update an existing session via upsert', async () => {
293
+ await store.upsertSession({
294
+ id: 'sess_100',
295
+ agentId: 'agent_x',
296
+ startedAt: '2026-01-01T00:00:00Z',
297
+ status: 'active',
298
+ });
299
+ await store.upsertSession({
300
+ id: 'sess_100',
301
+ status: 'completed',
302
+ endedAt: '2026-01-01T01:00:00Z',
303
+ });
304
+ const session = await store.getSession('sess_100');
305
+ expect(session.status).toBe('completed');
306
+ expect(session.endedAt).toBe('2026-01-01T01:00:00Z');
307
+ });
308
+ });
309
+ describe('upsertAgent()', () => {
310
+ it('should create a new agent via upsert', async () => {
311
+ await store.upsertAgent({
312
+ id: 'agent_new',
313
+ name: 'New Agent',
314
+ firstSeenAt: '2026-01-01T00:00:00Z',
315
+ lastSeenAt: '2026-01-01T00:00:00Z',
316
+ sessionCount: 0,
317
+ });
318
+ const agent = await store.getAgent('agent_new');
319
+ expect(agent).not.toBeNull();
320
+ expect(agent.name).toBe('New Agent');
321
+ });
322
+ it('should update an existing agent via upsert', async () => {
323
+ await store.upsertAgent({
324
+ id: 'agent_upd',
325
+ name: 'Agent',
326
+ firstSeenAt: '2026-01-01T00:00:00Z',
327
+ lastSeenAt: '2026-01-01T00:00:00Z',
328
+ });
329
+ await store.upsertAgent({
330
+ id: 'agent_upd',
331
+ name: 'Updated Agent',
332
+ lastSeenAt: '2026-02-01T00:00:00Z',
333
+ });
334
+ const agent = await store.getAgent('agent_upd');
335
+ expect(agent.name).toBe('Updated Agent');
336
+ expect(agent.lastSeenAt).toBe('2026-02-01T00:00:00Z');
337
+ });
338
+ });
339
+ // ─── CRITICAL 3: Hash chain validation tests ────────────────
340
+ describe('Hash chain validation (CRITICAL 3)', () => {
341
+ it('should accept a valid hash chain', async () => {
342
+ const chain = makeChain([
343
+ { id: 'e1', eventType: 'session_started', payload: { tags: [] } },
344
+ { id: 'e2', eventType: 'custom' },
345
+ { id: 'e3', eventType: 'custom' },
346
+ ]);
347
+ await expect(store.insertEvents(chain)).resolves.not.toThrow();
348
+ const stats = await store.getStats();
349
+ expect(stats.totalEvents).toBe(3);
350
+ });
351
+ it('should reject a batch with a forged hash', async () => {
352
+ const chain = makeChain([
353
+ { id: 'e1', eventType: 'session_started', payload: { tags: [] } },
354
+ { id: 'e2', eventType: 'custom' },
355
+ ]);
356
+ // Tamper with the hash
357
+ chain[1] = { ...chain[1], hash: 'forged_hash_value' };
358
+ await expect(store.insertEvents(chain)).rejects.toThrow(HashChainError);
359
+ // Nothing should have been inserted (transaction rollback)
360
+ const stats = await store.getStats();
361
+ expect(stats.totalEvents).toBe(0);
362
+ });
363
+ it('should reject a batch with broken prevHash continuity', async () => {
364
+ const chain = makeChain([
365
+ { id: 'e1', eventType: 'session_started', payload: { tags: [] } },
366
+ { id: 'e2', eventType: 'custom' },
367
+ ]);
368
+ // Break the chain — second event points to a wrong prevHash
369
+ const brokenEvent = makeEvent({
370
+ id: 'e2_broken',
371
+ sessionId: 'sess_001',
372
+ prevHash: 'wrong_prev_hash',
373
+ });
374
+ chain[1] = brokenEvent;
375
+ await expect(store.insertEvents(chain)).rejects.toThrow(HashChainError);
376
+ });
377
+ it('should validate prevHash against stored events when appending', async () => {
378
+ // Insert first batch
379
+ const batch1 = makeChain([
380
+ { id: 'e1', eventType: 'session_started', payload: { tags: [] } },
381
+ ]);
382
+ await store.insertEvents(batch1);
383
+ // Second batch must chain from batch1's last hash
384
+ const batch2 = [
385
+ makeEvent({
386
+ id: 'e2',
387
+ sessionId: 'sess_001',
388
+ prevHash: batch1[0].hash,
389
+ }),
390
+ ];
391
+ await expect(store.insertEvents(batch2)).resolves.not.toThrow();
392
+ // Third batch with wrong prevHash should fail
393
+ const batch3 = [
394
+ makeEvent({
395
+ id: 'e3',
396
+ sessionId: 'sess_001',
397
+ prevHash: 'wrong_hash',
398
+ }),
399
+ ];
400
+ await expect(store.insertEvents(batch3)).rejects.toThrow(HashChainError);
401
+ });
402
+ });
403
+ // ─── CRITICAL 4: Idempotent event insertion tests ──────────
404
+ describe('Idempotent event insertion (CRITICAL 4)', () => {
405
+ it('should silently ignore duplicate event insertion', async () => {
406
+ const chain = makeChain([
407
+ { id: 'e1', eventType: 'session_started', payload: { tags: [] } },
408
+ { id: 'e2', eventType: 'custom' },
409
+ ]);
410
+ await store.insertEvents(chain);
411
+ // Insert the same batch again — should not throw
412
+ await store.insertEvents(chain);
413
+ const stats = await store.getStats();
414
+ expect(stats.totalEvents).toBe(2); // Still 2, not 4
415
+ });
416
+ });
417
+ });
418
+ //# sourceMappingURL=sqlite-store-write.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-store-write.test.js","sourceRoot":"","sources":["../../../src/db/__tests__/sqlite-store-write.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Custom error types for the storage layer.
3
+ */
4
+ /**
5
+ * Thrown when an event batch has forged or mismatched hash values.
6
+ */
7
+ export declare class HashChainError extends Error {
8
+ constructor(message: string);
9
+ }
10
+ /**
11
+ * Thrown when an operation targets a resource that does not exist.
12
+ */
13
+ export declare class NotFoundError extends Error {
14
+ constructor(message: string);
15
+ }
16
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/db/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Custom error types for the storage layer.
3
+ */
4
+ /**
5
+ * Thrown when an event batch has forged or mismatched hash values.
6
+ */
7
+ export class HashChainError extends Error {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = 'HashChainError';
11
+ }
12
+ }
13
+ /**
14
+ * Thrown when an operation targets a resource that does not exist.
15
+ */
16
+ export class NotFoundError extends Error {
17
+ constructor(message) {
18
+ super(message);
19
+ this.name = 'NotFoundError';
20
+ }
21
+ }
22
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/db/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Database initialization — dialect selector.
3
+ *
4
+ * Creates the appropriate Drizzle ORM instance based on DB_DIALECT env var.
5
+ * SQLite (default) uses WAL mode with tuned pragmas.
6
+ */
7
+ import { type BetterSQLite3Database } from 'drizzle-orm/better-sqlite3';
8
+ import * as schema from './schema.sqlite.js';
9
+ export type SqliteDb = BetterSQLite3Database<typeof schema>;
10
+ export interface CreateDbOptions {
11
+ /** Database dialect: 'sqlite' (default) or 'postgresql' */
12
+ dialect?: 'sqlite' | 'postgresql';
13
+ /** SQLite file path (default: './agentlens.db'). Use ':memory:' for tests. */
14
+ databasePath?: string;
15
+ /** PostgreSQL connection string */
16
+ databaseUrl?: string;
17
+ }
18
+ /**
19
+ * Create a database connection with the appropriate dialect.
20
+ *
21
+ * For SQLite, applies performance pragmas:
22
+ * - journal_mode=WAL (concurrent read/write)
23
+ * - synchronous=NORMAL (durability/performance balance)
24
+ * - cache_size=-64000 (64MB page cache)
25
+ * - busy_timeout=5000 (5s wait on locks)
26
+ */
27
+ export declare function createDb(options?: CreateDbOptions): SqliteDb;
28
+ /**
29
+ * Create an in-memory SQLite database for testing.
30
+ * Tables are created via push (no migration files needed).
31
+ */
32
+ export declare function createTestDb(): SqliteDb;
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAW,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAE7C,MAAM,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,MAAM,CAAC,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,OAAO,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IAClC,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,QAAQ,CAsBhE;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,QAAQ,CAEvC"}