@agentlensai/server 0.3.0 → 0.5.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 (231) hide show
  1. package/dist/db/embedding-store.d.ts +74 -0
  2. package/dist/db/embedding-store.d.ts.map +1 -0
  3. package/dist/db/embedding-store.js +177 -0
  4. package/dist/db/embedding-store.js.map +1 -0
  5. package/dist/db/lesson-store.d.ts +57 -0
  6. package/dist/db/lesson-store.d.ts.map +1 -0
  7. package/dist/db/lesson-store.js +217 -0
  8. package/dist/db/lesson-store.js.map +1 -0
  9. package/dist/db/migrate.d.ts.map +1 -1
  10. package/dist/db/migrate.js +237 -8
  11. package/dist/db/migrate.js.map +1 -1
  12. package/dist/db/schema.sqlite.d.ts +822 -47
  13. package/dist/db/schema.sqlite.d.ts.map +1 -1
  14. package/dist/db/schema.sqlite.js +79 -4
  15. package/dist/db/schema.sqlite.js.map +1 -1
  16. package/dist/db/session-summary-store.d.ts +45 -0
  17. package/dist/db/session-summary-store.d.ts.map +1 -0
  18. package/dist/db/session-summary-store.js +112 -0
  19. package/dist/db/session-summary-store.js.map +1 -0
  20. package/dist/db/sqlite-store.d.ts +14 -12
  21. package/dist/db/sqlite-store.d.ts.map +1 -1
  22. package/dist/db/sqlite-store.js +130 -44
  23. package/dist/db/sqlite-store.js.map +1 -1
  24. package/dist/db/tenant-scoped-store.d.ts +61 -0
  25. package/dist/db/tenant-scoped-store.d.ts.map +1 -0
  26. package/dist/db/tenant-scoped-store.js +94 -0
  27. package/dist/db/tenant-scoped-store.js.map +1 -0
  28. package/dist/index.d.ts +16 -2
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +66 -5
  31. package/dist/index.js.map +1 -1
  32. package/dist/lib/alert-engine.d.ts +11 -0
  33. package/dist/lib/alert-engine.d.ts.map +1 -1
  34. package/dist/lib/alert-engine.js +62 -24
  35. package/dist/lib/alert-engine.js.map +1 -1
  36. package/dist/lib/analysis/cost-analysis.d.ts +20 -0
  37. package/dist/lib/analysis/cost-analysis.d.ts.map +1 -0
  38. package/dist/lib/analysis/cost-analysis.js +158 -0
  39. package/dist/lib/analysis/cost-analysis.js.map +1 -0
  40. package/dist/lib/analysis/error-patterns.d.ts +26 -0
  41. package/dist/lib/analysis/error-patterns.d.ts.map +1 -0
  42. package/dist/lib/analysis/error-patterns.js +155 -0
  43. package/dist/lib/analysis/error-patterns.js.map +1 -0
  44. package/dist/lib/analysis/index.d.ts +23 -0
  45. package/dist/lib/analysis/index.d.ts.map +1 -0
  46. package/dist/lib/analysis/index.js +144 -0
  47. package/dist/lib/analysis/index.js.map +1 -0
  48. package/dist/lib/analysis/performance-trends.d.ts +19 -0
  49. package/dist/lib/analysis/performance-trends.d.ts.map +1 -0
  50. package/dist/lib/analysis/performance-trends.js +118 -0
  51. package/dist/lib/analysis/performance-trends.js.map +1 -0
  52. package/dist/lib/analysis/tool-sequences.d.ts +19 -0
  53. package/dist/lib/analysis/tool-sequences.d.ts.map +1 -0
  54. package/dist/lib/analysis/tool-sequences.js +145 -0
  55. package/dist/lib/analysis/tool-sequences.js.map +1 -0
  56. package/dist/lib/context/index.d.ts +5 -0
  57. package/dist/lib/context/index.d.ts.map +1 -0
  58. package/dist/lib/context/index.js +5 -0
  59. package/dist/lib/context/index.js.map +1 -0
  60. package/dist/lib/context/retrieval.d.ts +56 -0
  61. package/dist/lib/context/retrieval.d.ts.map +1 -0
  62. package/dist/lib/context/retrieval.js +229 -0
  63. package/dist/lib/context/retrieval.js.map +1 -0
  64. package/dist/lib/embeddings/index.d.ts +31 -0
  65. package/dist/lib/embeddings/index.d.ts.map +1 -0
  66. package/dist/lib/embeddings/index.js +31 -0
  67. package/dist/lib/embeddings/index.js.map +1 -0
  68. package/dist/lib/embeddings/local.d.ts +15 -0
  69. package/dist/lib/embeddings/local.d.ts.map +1 -0
  70. package/dist/lib/embeddings/local.js +65 -0
  71. package/dist/lib/embeddings/local.js.map +1 -0
  72. package/dist/lib/embeddings/math.d.ts +13 -0
  73. package/dist/lib/embeddings/math.d.ts.map +1 -0
  74. package/dist/lib/embeddings/math.js +35 -0
  75. package/dist/lib/embeddings/math.js.map +1 -0
  76. package/dist/lib/embeddings/openai.d.ts +15 -0
  77. package/dist/lib/embeddings/openai.d.ts.map +1 -0
  78. package/dist/lib/embeddings/openai.js +58 -0
  79. package/dist/lib/embeddings/openai.js.map +1 -0
  80. package/dist/lib/embeddings/summarizer.d.ts +26 -0
  81. package/dist/lib/embeddings/summarizer.d.ts.map +1 -0
  82. package/dist/lib/embeddings/summarizer.js +181 -0
  83. package/dist/lib/embeddings/summarizer.js.map +1 -0
  84. package/dist/lib/embeddings/types.d.ts +17 -0
  85. package/dist/lib/embeddings/types.d.ts.map +1 -0
  86. package/dist/lib/embeddings/types.js +5 -0
  87. package/dist/lib/embeddings/types.js.map +1 -0
  88. package/dist/lib/embeddings/worker.d.ts +56 -0
  89. package/dist/lib/embeddings/worker.d.ts.map +1 -0
  90. package/dist/lib/embeddings/worker.js +109 -0
  91. package/dist/lib/embeddings/worker.js.map +1 -0
  92. package/dist/lib/sse.d.ts +1 -0
  93. package/dist/lib/sse.d.ts.map +1 -1
  94. package/dist/lib/sse.js +8 -1
  95. package/dist/lib/sse.js.map +1 -1
  96. package/dist/middleware/auth.d.ts +1 -0
  97. package/dist/middleware/auth.d.ts.map +1 -1
  98. package/dist/middleware/auth.js +2 -1
  99. package/dist/middleware/auth.js.map +1 -1
  100. package/dist/routes/agents.d.ts.map +1 -1
  101. package/dist/routes/agents.js +6 -3
  102. package/dist/routes/agents.js.map +1 -1
  103. package/dist/routes/alerts.d.ts.map +1 -1
  104. package/dist/routes/alerts.js +15 -7
  105. package/dist/routes/alerts.js.map +1 -1
  106. package/dist/routes/analytics.d.ts.map +1 -1
  107. package/dist/routes/analytics.js +16 -2
  108. package/dist/routes/analytics.js.map +1 -1
  109. package/dist/routes/api-keys.d.ts.map +1 -1
  110. package/dist/routes/api-keys.js +30 -5
  111. package/dist/routes/api-keys.js.map +1 -1
  112. package/dist/routes/context.d.ts +23 -0
  113. package/dist/routes/context.d.ts.map +1 -0
  114. package/dist/routes/context.js +52 -0
  115. package/dist/routes/context.js.map +1 -0
  116. package/dist/routes/events.d.ts +6 -1
  117. package/dist/routes/events.d.ts.map +1 -1
  118. package/dist/routes/events.js +61 -6
  119. package/dist/routes/events.js.map +1 -1
  120. package/dist/routes/ingest.d.ts +6 -0
  121. package/dist/routes/ingest.d.ts.map +1 -1
  122. package/dist/routes/ingest.js +23 -4
  123. package/dist/routes/ingest.js.map +1 -1
  124. package/dist/routes/lessons.d.ts +19 -0
  125. package/dist/routes/lessons.d.ts.map +1 -0
  126. package/dist/routes/lessons.js +164 -0
  127. package/dist/routes/lessons.js.map +1 -0
  128. package/dist/routes/recall.d.ts +20 -0
  129. package/dist/routes/recall.d.ts.map +1 -0
  130. package/dist/routes/recall.js +71 -0
  131. package/dist/routes/recall.js.map +1 -0
  132. package/dist/routes/reflect.d.ts +15 -0
  133. package/dist/routes/reflect.d.ts.map +1 -0
  134. package/dist/routes/reflect.js +55 -0
  135. package/dist/routes/reflect.js.map +1 -0
  136. package/dist/routes/sessions.d.ts.map +1 -1
  137. package/dist/routes/sessions.js +8 -6
  138. package/dist/routes/sessions.js.map +1 -1
  139. package/dist/routes/stats.d.ts.map +1 -1
  140. package/dist/routes/stats.js +3 -1
  141. package/dist/routes/stats.js.map +1 -1
  142. package/dist/routes/stream.d.ts +9 -2
  143. package/dist/routes/stream.d.ts.map +1 -1
  144. package/dist/routes/stream.js +55 -2
  145. package/dist/routes/stream.js.map +1 -1
  146. package/dist/routes/tenant-helper.d.ts +20 -0
  147. package/dist/routes/tenant-helper.d.ts.map +1 -0
  148. package/dist/routes/tenant-helper.js +23 -0
  149. package/dist/routes/tenant-helper.js.map +1 -0
  150. package/package.json +11 -11
  151. package/LICENSE +0 -21
  152. package/dist/__tests__/agents-stats.test.d.ts +0 -5
  153. package/dist/__tests__/agents-stats.test.d.ts.map +0 -1
  154. package/dist/__tests__/agents-stats.test.js +0 -134
  155. package/dist/__tests__/agents-stats.test.js.map +0 -1
  156. package/dist/__tests__/alerts.test.d.ts +0 -5
  157. package/dist/__tests__/alerts.test.d.ts.map +0 -1
  158. package/dist/__tests__/alerts.test.js +0 -245
  159. package/dist/__tests__/alerts.test.js.map +0 -1
  160. package/dist/__tests__/analytics.test.d.ts +0 -5
  161. package/dist/__tests__/analytics.test.d.ts.map +0 -1
  162. package/dist/__tests__/analytics.test.js +0 -218
  163. package/dist/__tests__/analytics.test.js.map +0 -1
  164. package/dist/__tests__/api-keys.test.d.ts +0 -5
  165. package/dist/__tests__/api-keys.test.d.ts.map +0 -1
  166. package/dist/__tests__/api-keys.test.js +0 -118
  167. package/dist/__tests__/api-keys.test.js.map +0 -1
  168. package/dist/__tests__/auth-no-db.test.d.ts +0 -2
  169. package/dist/__tests__/auth-no-db.test.d.ts.map +0 -1
  170. package/dist/__tests__/auth-no-db.test.js +0 -43
  171. package/dist/__tests__/auth-no-db.test.js.map +0 -1
  172. package/dist/__tests__/auth.test.d.ts +0 -5
  173. package/dist/__tests__/auth.test.d.ts.map +0 -1
  174. package/dist/__tests__/auth.test.js +0 -86
  175. package/dist/__tests__/auth.test.js.map +0 -1
  176. package/dist/__tests__/config.test.d.ts +0 -2
  177. package/dist/__tests__/config.test.d.ts.map +0 -1
  178. package/dist/__tests__/config.test.js +0 -37
  179. package/dist/__tests__/config.test.js.map +0 -1
  180. package/dist/__tests__/events-ingest.test.d.ts +0 -5
  181. package/dist/__tests__/events-ingest.test.d.ts.map +0 -1
  182. package/dist/__tests__/events-ingest.test.js +0 -248
  183. package/dist/__tests__/events-ingest.test.js.map +0 -1
  184. package/dist/__tests__/events-query.test.d.ts +0 -5
  185. package/dist/__tests__/events-query.test.d.ts.map +0 -1
  186. package/dist/__tests__/events-query.test.js +0 -205
  187. package/dist/__tests__/events-query.test.js.map +0 -1
  188. package/dist/__tests__/health.test.d.ts +0 -5
  189. package/dist/__tests__/health.test.d.ts.map +0 -1
  190. package/dist/__tests__/health.test.js +0 -40
  191. package/dist/__tests__/health.test.js.map +0 -1
  192. package/dist/__tests__/ingest.test.d.ts +0 -8
  193. package/dist/__tests__/ingest.test.d.ts.map +0 -1
  194. package/dist/__tests__/ingest.test.js +0 -469
  195. package/dist/__tests__/ingest.test.js.map +0 -1
  196. package/dist/__tests__/llm-tracking.test.d.ts +0 -10
  197. package/dist/__tests__/llm-tracking.test.d.ts.map +0 -1
  198. package/dist/__tests__/llm-tracking.test.js +0 -602
  199. package/dist/__tests__/llm-tracking.test.js.map +0 -1
  200. package/dist/__tests__/sessions.test.d.ts +0 -5
  201. package/dist/__tests__/sessions.test.d.ts.map +0 -1
  202. package/dist/__tests__/sessions.test.js +0 -176
  203. package/dist/__tests__/sessions.test.js.map +0 -1
  204. package/dist/__tests__/stream.test.d.ts +0 -5
  205. package/dist/__tests__/stream.test.d.ts.map +0 -1
  206. package/dist/__tests__/stream.test.js +0 -352
  207. package/dist/__tests__/stream.test.js.map +0 -1
  208. package/dist/__tests__/test-helpers.d.ts +0 -24
  209. package/dist/__tests__/test-helpers.d.ts.map +0 -1
  210. package/dist/__tests__/test-helpers.js +0 -45
  211. package/dist/__tests__/test-helpers.js.map +0 -1
  212. package/dist/db/__tests__/init.test.d.ts +0 -2
  213. package/dist/db/__tests__/init.test.d.ts.map +0 -1
  214. package/dist/db/__tests__/init.test.js +0 -73
  215. package/dist/db/__tests__/init.test.js.map +0 -1
  216. package/dist/db/__tests__/sqlite-store-read.test.d.ts +0 -2
  217. package/dist/db/__tests__/sqlite-store-read.test.d.ts.map +0 -1
  218. package/dist/db/__tests__/sqlite-store-read.test.js +0 -749
  219. package/dist/db/__tests__/sqlite-store-read.test.js.map +0 -1
  220. package/dist/db/__tests__/sqlite-store-write.test.d.ts +0 -2
  221. package/dist/db/__tests__/sqlite-store-write.test.d.ts.map +0 -1
  222. package/dist/db/__tests__/sqlite-store-write.test.js +0 -418
  223. package/dist/db/__tests__/sqlite-store-write.test.js.map +0 -1
  224. package/dist/lib/__tests__/alert-engine.test.d.ts +0 -5
  225. package/dist/lib/__tests__/alert-engine.test.d.ts.map +0 -1
  226. package/dist/lib/__tests__/alert-engine.test.js +0 -211
  227. package/dist/lib/__tests__/alert-engine.test.js.map +0 -1
  228. package/dist/lib/__tests__/retention.test.d.ts +0 -2
  229. package/dist/lib/__tests__/retention.test.d.ts.map +0 -1
  230. package/dist/lib/__tests__/retention.test.js +0 -238
  231. package/dist/lib/__tests__/retention.test.js.map +0 -1
@@ -42,6 +42,7 @@ export class SqliteEventStore {
42
42
  this.db.transaction((tx) => {
43
43
  // CRITICAL 3: Validate hash chain before inserting
44
44
  const firstEvent = eventList[0];
45
+ const tenantId = firstEvent.tenantId ?? 'default';
45
46
  // Check if the first event already exists (idempotent re-insert)
46
47
  const existingFirst = tx
47
48
  .select({ id: events.id })
@@ -53,7 +54,7 @@ export class SqliteEventStore {
53
54
  const lastStoredEvent = tx
54
55
  .select({ hash: events.hash })
55
56
  .from(events)
56
- .where(eq(events.sessionId, firstEvent.sessionId))
57
+ .where(and(eq(events.sessionId, firstEvent.sessionId), eq(events.tenantId, tenantId)))
57
58
  .orderBy(desc(events.timestamp), desc(events.id))
58
59
  .limit(1)
59
60
  .get();
@@ -103,17 +104,18 @@ export class SqliteEventStore {
103
104
  metadata: JSON.stringify(event.metadata),
104
105
  prevHash: event.prevHash,
105
106
  hash: event.hash,
107
+ tenantId,
106
108
  })
107
109
  .onConflictDoNothing({ target: events.id })
108
110
  .run();
109
111
  // Handle session management
110
- this._handleSessionUpdate(tx, event);
112
+ this._handleSessionUpdate(tx, event, tenantId);
111
113
  // Handle agent auto-creation
112
- this._handleAgentUpsert(tx, event);
114
+ this._handleAgentUpsert(tx, event, tenantId);
113
115
  }
114
116
  });
115
117
  }
116
- _handleSessionUpdate(tx, event) {
118
+ _handleSessionUpdate(tx, event, tenantId) {
117
119
  if (event.eventType === 'session_started') {
118
120
  // Create new session
119
121
  const payload = event.payload;
@@ -132,9 +134,10 @@ export class SqliteEventStore {
132
134
  errorCount: 0,
133
135
  totalCostUsd: 0,
134
136
  tags: JSON.stringify(tags),
137
+ tenantId,
135
138
  })
136
139
  .onConflictDoUpdate({
137
- target: sessions.id,
140
+ target: [sessions.id, sessions.tenantId],
138
141
  set: {
139
142
  agentName: agentName ?? sql `coalesce(${sessions.agentName}, NULL)`,
140
143
  status: 'active',
@@ -157,8 +160,9 @@ export class SqliteEventStore {
157
160
  errorCount: 0,
158
161
  totalCostUsd: 0,
159
162
  tags: '[]',
163
+ tenantId,
160
164
  })
161
- .onConflictDoNothing({ target: sessions.id })
165
+ .onConflictDoNothing({ target: [sessions.id, sessions.tenantId] })
162
166
  .run();
163
167
  // Build incremental updates
164
168
  const isToolCall = event.eventType === 'tool_call';
@@ -186,7 +190,7 @@ export class SqliteEventStore {
186
190
  ? sql `${sessions.errorCount} + 1`
187
191
  : sessions.errorCount,
188
192
  })
189
- .where(eq(sessions.id, event.sessionId))
193
+ .where(and(eq(sessions.id, event.sessionId), eq(sessions.tenantId, tenantId)))
190
194
  .run();
191
195
  return;
192
196
  }
@@ -215,11 +219,12 @@ export class SqliteEventStore {
215
219
  ? sql `${sessions.totalOutputTokens} + ${llmOutputTokens}`
216
220
  : sessions.totalOutputTokens,
217
221
  })
218
- .where(eq(sessions.id, event.sessionId))
222
+ .where(and(eq(sessions.id, event.sessionId), eq(sessions.tenantId, tenantId)))
219
223
  .run();
220
224
  }
221
- _handleAgentUpsert(tx, event) {
225
+ _handleAgentUpsert(tx, event, tenantId) {
222
226
  // CRITICAL 4: Use INSERT ... ON CONFLICT DO UPDATE for agents
227
+ // Agents are scoped per tenant — use composite key (id + tenant_id)
223
228
  const payload = event.payload;
224
229
  const agentName = payload.agentName ?? event.agentId;
225
230
  tx.insert(agents)
@@ -229,9 +234,10 @@ export class SqliteEventStore {
229
234
  firstSeenAt: event.timestamp,
230
235
  lastSeenAt: event.timestamp,
231
236
  sessionCount: event.eventType === 'session_started' ? 1 : 0,
237
+ tenantId,
232
238
  })
233
239
  .onConflictDoUpdate({
234
- target: agents.id,
240
+ target: [agents.id, agents.tenantId],
235
241
  set: {
236
242
  lastSeenAt: event.timestamp,
237
243
  sessionCount: event.eventType === 'session_started'
@@ -243,10 +249,11 @@ export class SqliteEventStore {
243
249
  }
244
250
  // ─── Sessions — Write ──────────────────────────────────────
245
251
  async upsertSession(session) {
252
+ const tenantId = session.tenantId ?? 'default';
246
253
  const existing = this.db
247
254
  .select()
248
255
  .from(sessions)
249
- .where(eq(sessions.id, session.id))
256
+ .where(and(eq(sessions.id, session.id), eq(sessions.tenantId, tenantId)))
250
257
  .get();
251
258
  if (existing) {
252
259
  const updates = {};
@@ -280,7 +287,7 @@ export class SqliteEventStore {
280
287
  this.db
281
288
  .update(sessions)
282
289
  .set(updates)
283
- .where(eq(sessions.id, session.id))
290
+ .where(and(eq(sessions.id, session.id), eq(sessions.tenantId, tenantId)))
284
291
  .run();
285
292
  }
286
293
  }
@@ -302,16 +309,18 @@ export class SqliteEventStore {
302
309
  totalInputTokens: session.totalInputTokens ?? 0,
303
310
  totalOutputTokens: session.totalOutputTokens ?? 0,
304
311
  tags: JSON.stringify(session.tags ?? []),
312
+ tenantId,
305
313
  })
306
314
  .run();
307
315
  }
308
316
  }
309
317
  // ─── Agents — Write ────────────────────────────────────────
310
318
  async upsertAgent(agent) {
319
+ const tenantId = agent.tenantId ?? 'default';
311
320
  const existing = this.db
312
321
  .select()
313
322
  .from(agents)
314
- .where(eq(agents.id, agent.id))
323
+ .where(and(eq(agents.id, agent.id), eq(agents.tenantId, tenantId)))
315
324
  .get();
316
325
  if (existing) {
317
326
  const updates = {};
@@ -327,7 +336,7 @@ export class SqliteEventStore {
327
336
  this.db
328
337
  .update(agents)
329
338
  .set(updates)
330
- .where(eq(agents.id, agent.id))
339
+ .where(and(eq(agents.id, agent.id), eq(agents.tenantId, tenantId)))
331
340
  .run();
332
341
  }
333
342
  }
@@ -342,6 +351,7 @@ export class SqliteEventStore {
342
351
  firstSeenAt: agent.firstSeenAt ?? now,
343
352
  lastSeenAt: agent.lastSeenAt ?? now,
344
353
  sessionCount: agent.sessionCount ?? 0,
354
+ tenantId,
345
355
  })
346
356
  .run();
347
357
  }
@@ -367,28 +377,37 @@ export class SqliteEventStore {
367
377
  hasMore: offset + rows.length < total,
368
378
  };
369
379
  }
370
- async getEvent(id) {
380
+ async getEvent(id, tenantId) {
381
+ const conditions = [eq(events.id, id)];
382
+ if (tenantId)
383
+ conditions.push(eq(events.tenantId, tenantId));
371
384
  const row = this.db
372
385
  .select()
373
386
  .from(events)
374
- .where(eq(events.id, id))
387
+ .where(and(...conditions))
375
388
  .get();
376
389
  return row ? this._mapEventRow(row) : null;
377
390
  }
378
- async getSessionTimeline(sessionId) {
391
+ async getSessionTimeline(sessionId, tenantId) {
392
+ const conditions = [eq(events.sessionId, sessionId)];
393
+ if (tenantId)
394
+ conditions.push(eq(events.tenantId, tenantId));
379
395
  const rows = this.db
380
396
  .select()
381
397
  .from(events)
382
- .where(eq(events.sessionId, sessionId))
398
+ .where(and(...conditions))
383
399
  .orderBy(asc(events.timestamp))
384
400
  .all();
385
401
  return rows.map(this._mapEventRow);
386
402
  }
387
- async getLastEventHash(sessionId) {
403
+ async getLastEventHash(sessionId, tenantId) {
404
+ const conditions = [eq(events.sessionId, sessionId)];
405
+ if (tenantId)
406
+ conditions.push(eq(events.tenantId, tenantId));
388
407
  const row = this.db
389
408
  .select({ hash: events.hash })
390
409
  .from(events)
391
- .where(eq(events.sessionId, sessionId))
410
+ .where(and(...conditions))
392
411
  .orderBy(desc(events.timestamp), desc(events.id))
393
412
  .limit(1)
394
413
  .get();
@@ -426,28 +445,36 @@ export class SqliteEventStore {
426
445
  total: totalResult?.count ?? 0,
427
446
  };
428
447
  }
429
- async getSession(id) {
448
+ async getSession(id, tenantId) {
449
+ const conditions = [eq(sessions.id, id)];
450
+ if (tenantId)
451
+ conditions.push(eq(sessions.tenantId, tenantId));
430
452
  const row = this.db
431
453
  .select()
432
454
  .from(sessions)
433
- .where(eq(sessions.id, id))
455
+ .where(and(...conditions))
434
456
  .get();
435
457
  return row ? this._mapSessionRow(row) : null;
436
458
  }
437
459
  // ─── Agents — Read ─────────────────────────────────────────
438
- async listAgents() {
460
+ async listAgents(tenantId) {
461
+ const conditions = tenantId ? [eq(agents.tenantId, tenantId)] : [];
439
462
  const rows = this.db
440
463
  .select()
441
464
  .from(agents)
465
+ .where(conditions.length > 0 ? and(...conditions) : undefined)
442
466
  .orderBy(desc(agents.lastSeenAt))
443
467
  .all();
444
468
  return rows.map(this._mapAgentRow);
445
469
  }
446
- async getAgent(id) {
470
+ async getAgent(id, tenantId) {
471
+ const conditions = [eq(agents.id, id)];
472
+ if (tenantId)
473
+ conditions.push(eq(agents.tenantId, tenantId));
447
474
  const row = this.db
448
475
  .select()
449
476
  .from(agents)
450
- .where(eq(agents.id, id))
477
+ .where(and(...conditions))
451
478
  .get();
452
479
  return row ? this._mapAgentRow(row) : null;
453
480
  }
@@ -482,6 +509,7 @@ export class SqliteEventStore {
482
509
  WHERE timestamp >= ${params.from}
483
510
  AND timestamp <= ${params.to}
484
511
  ${params.agentId ? sql `AND agent_id = ${params.agentId}` : sql ``}
512
+ ${params.tenantId ? sql `AND tenant_id = ${params.tenantId}` : sql ``}
485
513
  GROUP BY bucket
486
514
  ORDER BY bucket ASC
487
515
  `);
@@ -499,6 +527,7 @@ export class SqliteEventStore {
499
527
  WHERE timestamp >= ${params.from}
500
528
  AND timestamp <= ${params.to}
501
529
  ${params.agentId ? sql `AND agent_id = ${params.agentId}` : sql ``}
530
+ ${params.tenantId ? sql `AND tenant_id = ${params.tenantId}` : sql ``}
502
531
  `);
503
532
  return {
504
533
  buckets: bucketRows.map((row) => ({
@@ -536,11 +565,12 @@ export class SqliteEventStore {
536
565
  notifyChannels: JSON.stringify(rule.notifyChannels),
537
566
  createdAt: rule.createdAt,
538
567
  updatedAt: rule.updatedAt,
568
+ tenantId: rule.tenantId ?? 'default',
539
569
  })
540
570
  .run();
541
571
  }
542
572
  // HIGH 8: Check affected row count and throw NotFoundError when zero
543
- async updateAlertRule(id, updates) {
573
+ async updateAlertRule(id, updates, tenantId) {
544
574
  const setValues = {};
545
575
  if (updates.name !== undefined)
546
576
  setValues.name = updates.name;
@@ -558,12 +588,15 @@ export class SqliteEventStore {
558
588
  setValues.notifyChannels = JSON.stringify(updates.notifyChannels);
559
589
  if (updates.updatedAt !== undefined)
560
590
  setValues.updatedAt = updates.updatedAt;
591
+ const whereConditions = [eq(alertRules.id, id)];
592
+ if (tenantId)
593
+ whereConditions.push(eq(alertRules.tenantId, tenantId));
561
594
  if (Object.keys(setValues).length === 0) {
562
595
  // Even with no actual updates, verify the rule exists
563
596
  const existing = this.db
564
597
  .select({ id: alertRules.id })
565
598
  .from(alertRules)
566
- .where(eq(alertRules.id, id))
599
+ .where(and(...whereConditions))
567
600
  .get();
568
601
  if (!existing) {
569
602
  throw new NotFoundError(`Alert rule not found: ${id}`);
@@ -573,27 +606,38 @@ export class SqliteEventStore {
573
606
  const result = this.db
574
607
  .update(alertRules)
575
608
  .set(setValues)
576
- .where(eq(alertRules.id, id))
609
+ .where(and(...whereConditions))
577
610
  .run();
578
611
  if (result.changes === 0) {
579
612
  throw new NotFoundError(`Alert rule not found: ${id}`);
580
613
  }
581
614
  }
582
- async deleteAlertRule(id) {
583
- const result = this.db.delete(alertRules).where(eq(alertRules.id, id)).run();
615
+ async deleteAlertRule(id, tenantId) {
616
+ const whereConditions = [eq(alertRules.id, id)];
617
+ if (tenantId)
618
+ whereConditions.push(eq(alertRules.tenantId, tenantId));
619
+ const result = this.db.delete(alertRules).where(and(...whereConditions)).run();
584
620
  if (result.changes === 0) {
585
621
  throw new NotFoundError(`Alert rule not found: ${id}`);
586
622
  }
587
623
  }
588
- async listAlertRules() {
589
- const rows = this.db.select().from(alertRules).all();
624
+ async listAlertRules(tenantId) {
625
+ const conditions = tenantId ? [eq(alertRules.tenantId, tenantId)] : [];
626
+ const rows = this.db
627
+ .select()
628
+ .from(alertRules)
629
+ .where(conditions.length > 0 ? and(...conditions) : undefined)
630
+ .all();
590
631
  return rows.map(this._mapAlertRuleRow);
591
632
  }
592
- async getAlertRule(id) {
633
+ async getAlertRule(id, tenantId) {
634
+ const conditions = [eq(alertRules.id, id)];
635
+ if (tenantId)
636
+ conditions.push(eq(alertRules.tenantId, tenantId));
593
637
  const row = this.db
594
638
  .select()
595
639
  .from(alertRules)
596
- .where(eq(alertRules.id, id))
640
+ .where(and(...conditions))
597
641
  .get();
598
642
  return row ? this._mapAlertRuleRow(row) : null;
599
643
  }
@@ -609,6 +653,7 @@ export class SqliteEventStore {
609
653
  currentValue: entry.currentValue,
610
654
  threshold: entry.threshold,
611
655
  message: entry.message,
656
+ tenantId: entry.tenantId ?? 'default',
612
657
  })
613
658
  .run();
614
659
  }
@@ -619,6 +664,9 @@ export class SqliteEventStore {
619
664
  if (opts?.ruleId) {
620
665
  conditions.push(eq(alertHistory.ruleId, opts.ruleId));
621
666
  }
667
+ if (opts?.tenantId) {
668
+ conditions.push(eq(alertHistory.tenantId, opts.tenantId));
669
+ }
622
670
  const rows = this.db
623
671
  .select()
624
672
  .from(alertHistory)
@@ -641,54 +689,82 @@ export class SqliteEventStore {
641
689
  currentValue: row.currentValue,
642
690
  threshold: row.threshold,
643
691
  message: row.message,
692
+ tenantId: row.tenantId,
644
693
  })),
645
694
  total: totalResult?.count ?? 0,
646
695
  };
647
696
  }
648
697
  // ─── Maintenance ───────────────────────────────────────────
649
- async applyRetention(olderThan) {
698
+ async applyRetention(olderThan, tenantId) {
699
+ // Build conditions — always filter by timestamp, optionally by tenant
700
+ const countConditions = [lte(events.timestamp, olderThan)];
701
+ if (tenantId)
702
+ countConditions.push(eq(events.tenantId, tenantId));
650
703
  // Count events to be deleted
651
704
  const countResult = this.db
652
705
  .select({ count: drizzleCount() })
653
706
  .from(events)
654
- .where(lte(events.timestamp, olderThan))
707
+ .where(and(...countConditions))
655
708
  .get();
656
709
  const deletedCount = countResult?.count ?? 0;
657
710
  if (deletedCount === 0)
658
711
  return { deletedCount: 0 };
659
712
  this.db.transaction((tx) => {
660
- // Delete old events
661
- tx.delete(events).where(lte(events.timestamp, olderThan)).run();
662
- // Clean up sessions with no remaining events
663
- tx.run(sql `
664
- DELETE FROM sessions
665
- WHERE id NOT IN (SELECT DISTINCT session_id FROM events)
666
- `);
713
+ if (tenantId) {
714
+ // Tenant-scoped retention: only delete this tenant's old events
715
+ tx.delete(events)
716
+ .where(and(lte(events.timestamp, olderThan), eq(events.tenantId, tenantId)))
717
+ .run();
718
+ // Clean up this tenant's sessions that have no remaining events
719
+ tx.run(sql `
720
+ DELETE FROM sessions
721
+ WHERE tenant_id = ${tenantId}
722
+ AND id NOT IN (
723
+ SELECT DISTINCT session_id FROM events WHERE tenant_id = ${tenantId}
724
+ )
725
+ `);
726
+ }
727
+ else {
728
+ // Global retention (system-level, not exposed through TenantScopedStore)
729
+ tx.delete(events).where(lte(events.timestamp, olderThan)).run();
730
+ tx.run(sql `
731
+ DELETE FROM sessions
732
+ WHERE id NOT IN (SELECT DISTINCT session_id FROM events)
733
+ `);
734
+ }
667
735
  });
668
736
  return { deletedCount };
669
737
  }
670
- async getStats() {
738
+ async getStats(tenantId) {
739
+ const eventConditions = tenantId ? [eq(events.tenantId, tenantId)] : [];
740
+ const sessionConditions = tenantId ? [eq(sessions.tenantId, tenantId)] : [];
741
+ const agentConditions = tenantId ? [eq(agents.tenantId, tenantId)] : [];
671
742
  const eventCount = this.db
672
743
  .select({ count: drizzleCount() })
673
744
  .from(events)
745
+ .where(eventConditions.length > 0 ? and(...eventConditions) : undefined)
674
746
  .get()?.count ?? 0;
675
747
  const sessionCount = this.db
676
748
  .select({ count: drizzleCount() })
677
749
  .from(sessions)
750
+ .where(sessionConditions.length > 0 ? and(...sessionConditions) : undefined)
678
751
  .get()?.count ?? 0;
679
752
  const agentCount = this.db
680
753
  .select({ count: drizzleCount() })
681
754
  .from(agents)
755
+ .where(agentConditions.length > 0 ? and(...agentConditions) : undefined)
682
756
  .get()?.count ?? 0;
683
757
  const oldest = this.db
684
758
  .select({ timestamp: events.timestamp })
685
759
  .from(events)
760
+ .where(eventConditions.length > 0 ? and(...eventConditions) : undefined)
686
761
  .orderBy(asc(events.timestamp))
687
762
  .limit(1)
688
763
  .get();
689
764
  const newest = this.db
690
765
  .select({ timestamp: events.timestamp })
691
766
  .from(events)
767
+ .where(eventConditions.length > 0 ? and(...eventConditions) : undefined)
692
768
  .orderBy(desc(events.timestamp))
693
769
  .limit(1)
694
770
  .get();
@@ -709,6 +785,9 @@ export class SqliteEventStore {
709
785
  // ─── Private Helpers ───────────────────────────────────────
710
786
  _buildEventConditions(query) {
711
787
  const conditions = [];
788
+ if (query.tenantId) {
789
+ conditions.push(eq(events.tenantId, query.tenantId));
790
+ }
712
791
  if (query.sessionId) {
713
792
  conditions.push(eq(events.sessionId, query.sessionId));
714
793
  }
@@ -750,6 +829,9 @@ export class SqliteEventStore {
750
829
  // HIGH 4: Use json_each() for exact tag matching with OR semantics
751
830
  _buildSessionConditions(query) {
752
831
  const conditions = [];
832
+ if (query.tenantId) {
833
+ conditions.push(eq(sessions.tenantId, query.tenantId));
834
+ }
753
835
  if (query.agentId) {
754
836
  conditions.push(eq(sessions.agentId, query.agentId));
755
837
  }
@@ -796,6 +878,7 @@ export class SqliteEventStore {
796
878
  metadata: safeJsonParse(row.metadata, {}),
797
879
  prevHash: row.prevHash,
798
880
  hash: row.hash,
881
+ tenantId: row.tenantId,
799
882
  };
800
883
  }
801
884
  _mapSessionRow(row) {
@@ -814,6 +897,7 @@ export class SqliteEventStore {
814
897
  totalInputTokens: row.totalInputTokens,
815
898
  totalOutputTokens: row.totalOutputTokens,
816
899
  tags: safeJsonParse(row.tags, []),
900
+ tenantId: row.tenantId,
817
901
  };
818
902
  }
819
903
  _mapAgentRow(row) {
@@ -824,6 +908,7 @@ export class SqliteEventStore {
824
908
  firstSeenAt: row.firstSeenAt,
825
909
  lastSeenAt: row.lastSeenAt,
826
910
  sessionCount: row.sessionCount,
911
+ tenantId: row.tenantId,
827
912
  };
828
913
  }
829
914
  _mapAlertRuleRow(row) {
@@ -838,6 +923,7 @@ export class SqliteEventStore {
838
923
  notifyChannels: safeJsonParse(row.notifyChannels, []),
839
924
  createdAt: row.createdAt,
840
925
  updatedAt: row.updatedAt,
926
+ tenantId: row.tenantId,
841
927
  };
842
928
  }
843
929
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-store.js","sourceRoot":"","sources":["../../src/db/sqlite-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite-store.js","sourceRoot":"","sources":["../../src/db/sqlite-store.ts"],"names":[],"mappings":"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"}