@agentlensai/server 0.5.0 → 0.7.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 (99) hide show
  1. package/dist/db/benchmark-store.d.ts +74 -0
  2. package/dist/db/benchmark-store.d.ts.map +1 -0
  3. package/dist/db/benchmark-store.js +268 -0
  4. package/dist/db/benchmark-store.js.map +1 -0
  5. package/dist/db/health-snapshot-store.d.ts +33 -0
  6. package/dist/db/health-snapshot-store.d.ts.map +1 -0
  7. package/dist/db/health-snapshot-store.js +112 -0
  8. package/dist/db/health-snapshot-store.js.map +1 -0
  9. package/dist/db/migrate.d.ts.map +1 -1
  10. package/dist/db/migrate.js +67 -0
  11. package/dist/db/migrate.js.map +1 -1
  12. package/dist/db/sqlite-store.d.ts +5 -0
  13. package/dist/db/sqlite-store.d.ts.map +1 -1
  14. package/dist/db/sqlite-store.js +15 -0
  15. package/dist/db/sqlite-store.js.map +1 -1
  16. package/dist/index.d.ts +3 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +25 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/lib/alert-engine.d.ts.map +1 -1
  21. package/dist/lib/alert-engine.js +5 -2
  22. package/dist/lib/alert-engine.js.map +1 -1
  23. package/dist/lib/analysis/cost-analysis.d.ts.map +1 -1
  24. package/dist/lib/analysis/cost-analysis.js +5 -2
  25. package/dist/lib/analysis/cost-analysis.js.map +1 -1
  26. package/dist/lib/analysis/error-patterns.d.ts.map +1 -1
  27. package/dist/lib/analysis/error-patterns.js +5 -2
  28. package/dist/lib/analysis/error-patterns.js.map +1 -1
  29. package/dist/lib/analysis/performance-trends.d.ts.map +1 -1
  30. package/dist/lib/analysis/performance-trends.js +4 -1
  31. package/dist/lib/analysis/performance-trends.js.map +1 -1
  32. package/dist/lib/analysis/tool-sequences.d.ts.map +1 -1
  33. package/dist/lib/analysis/tool-sequences.js +5 -2
  34. package/dist/lib/analysis/tool-sequences.js.map +1 -1
  35. package/dist/lib/benchmark/engine.d.ts +24 -0
  36. package/dist/lib/benchmark/engine.d.ts.map +1 -0
  37. package/dist/lib/benchmark/engine.js +159 -0
  38. package/dist/lib/benchmark/engine.js.map +1 -0
  39. package/dist/lib/benchmark/metric-aggregator.d.ts +38 -0
  40. package/dist/lib/benchmark/metric-aggregator.d.ts.map +1 -0
  41. package/dist/lib/benchmark/metric-aggregator.js +159 -0
  42. package/dist/lib/benchmark/metric-aggregator.js.map +1 -0
  43. package/dist/lib/benchmark/statistical.d.ts +51 -0
  44. package/dist/lib/benchmark/statistical.d.ts.map +1 -0
  45. package/dist/lib/benchmark/statistical.js +381 -0
  46. package/dist/lib/benchmark/statistical.js.map +1 -0
  47. package/dist/lib/context/retrieval.d.ts +4 -0
  48. package/dist/lib/context/retrieval.d.ts.map +1 -1
  49. package/dist/lib/context/retrieval.js +4 -0
  50. package/dist/lib/context/retrieval.js.map +1 -1
  51. package/dist/lib/embeddings/local.js +2 -2
  52. package/dist/lib/embeddings/local.js.map +1 -1
  53. package/dist/lib/health/computer.d.ts +28 -0
  54. package/dist/lib/health/computer.d.ts.map +1 -0
  55. package/dist/lib/health/computer.js +270 -0
  56. package/dist/lib/health/computer.js.map +1 -0
  57. package/dist/lib/optimization/classifier.d.ts +34 -0
  58. package/dist/lib/optimization/classifier.d.ts.map +1 -0
  59. package/dist/lib/optimization/classifier.js +108 -0
  60. package/dist/lib/optimization/classifier.js.map +1 -0
  61. package/dist/lib/optimization/engine.d.ts +24 -0
  62. package/dist/lib/optimization/engine.d.ts.map +1 -0
  63. package/dist/lib/optimization/engine.js +202 -0
  64. package/dist/lib/optimization/engine.js.map +1 -0
  65. package/dist/lib/optimization/index.d.ts +10 -0
  66. package/dist/lib/optimization/index.d.ts.map +1 -0
  67. package/dist/lib/optimization/index.js +9 -0
  68. package/dist/lib/optimization/index.js.map +1 -0
  69. package/dist/lib/replay/builder.d.ts +28 -0
  70. package/dist/lib/replay/builder.d.ts.map +1 -0
  71. package/dist/lib/replay/builder.js +482 -0
  72. package/dist/lib/replay/builder.js.map +1 -0
  73. package/dist/routes/benchmarks.d.ts +18 -0
  74. package/dist/routes/benchmarks.d.ts.map +1 -0
  75. package/dist/routes/benchmarks.js +312 -0
  76. package/dist/routes/benchmarks.js.map +1 -0
  77. package/dist/routes/health.d.ts +21 -0
  78. package/dist/routes/health.d.ts.map +1 -0
  79. package/dist/routes/health.js +142 -0
  80. package/dist/routes/health.js.map +1 -0
  81. package/dist/routes/optimize.d.ts +15 -0
  82. package/dist/routes/optimize.d.ts.map +1 -0
  83. package/dist/routes/optimize.js +55 -0
  84. package/dist/routes/optimize.js.map +1 -0
  85. package/dist/routes/recall.d.ts +2 -0
  86. package/dist/routes/recall.d.ts.map +1 -1
  87. package/dist/routes/recall.js +21 -1
  88. package/dist/routes/recall.js.map +1 -1
  89. package/dist/routes/reflect.d.ts.map +1 -1
  90. package/dist/routes/reflect.js +0 -1
  91. package/dist/routes/reflect.js.map +1 -1
  92. package/dist/routes/replay.d.ts +28 -0
  93. package/dist/routes/replay.d.ts.map +1 -0
  94. package/dist/routes/replay.js +140 -0
  95. package/dist/routes/replay.js.map +1 -0
  96. package/dist/routes/tenant-helper.d.ts.map +1 -1
  97. package/dist/routes/tenant-helper.js +12 -0
  98. package/dist/routes/tenant-helper.js.map +1 -1
  99. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/lib/optimization/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Cost Optimization Module (Stories 2.2 & 2.3)
3
+ *
4
+ * Provides complexity classification and model recommendation
5
+ * for cost optimization of LLM calls.
6
+ */
7
+ export { classifyCallComplexity } from './classifier.js';
8
+ export type { ClassificationSignals, ClassificationResult } from './classifier.js';
9
+ export { OptimizationEngine } from './engine.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/optimization/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Cost Optimization Module (Stories 2.2 & 2.3)
3
+ *
4
+ * Provides complexity classification and model recommendation
5
+ * for cost optimization of LLM calls.
6
+ */
7
+ export { classifyCallComplexity } from './classifier.js';
8
+ export { OptimizationEngine } from './engine.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/optimization/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * ReplayBuilder — Core Replay Logic (Stories 2.1, 2.4)
3
+ *
4
+ * Constructs a ReplayState from raw events for a given session.
5
+ * Handles event pairing, cumulative context tracking, pagination,
6
+ * filtering, and redaction of sensitive LLM content.
7
+ */
8
+ import type { IEventStore, EventType, ReplayState } from '@agentlensai/core';
9
+ export interface ReplayBuildOptions {
10
+ /** Skip N steps (default 0) */
11
+ offset?: number;
12
+ /** Max steps to return (default 1000) */
13
+ limit?: number;
14
+ /** Only include these event types */
15
+ eventTypes?: EventType[];
16
+ /** If false, skip cumulative context computation (default true) */
17
+ includeContext?: boolean;
18
+ }
19
+ export declare class ReplayBuilder {
20
+ private readonly store;
21
+ constructor(store: IEventStore);
22
+ /**
23
+ * Build a ReplayState for the given session.
24
+ * Returns null when the session does not exist.
25
+ */
26
+ build(sessionId: string, options?: ReplayBuildOptions): Promise<ReplayState | null>;
27
+ }
28
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/lib/replay/builder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,WAAW,EAEX,SAAS,EAGT,WAAW,EAWZ,MAAM,mBAAmB,CAAC;AAK3B,MAAM,WAAW,kBAAkB;IACjC,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,mEAAmE;IACnE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAID,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,WAAW;IAE/C;;;OAGG;IACG,KAAK,CACT,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;CA2G/B"}
@@ -0,0 +1,482 @@
1
+ /**
2
+ * ReplayBuilder — Core Replay Logic (Stories 2.1, 2.4)
3
+ *
4
+ * Constructs a ReplayState from raw events for a given session.
5
+ * Handles event pairing, cumulative context tracking, pagination,
6
+ * filtering, and redaction of sensitive LLM content.
7
+ */
8
+ import { verifyChain } from '@agentlensai/core';
9
+ // ─── ReplayBuilder ─────────────────────────────────────────
10
+ export class ReplayBuilder {
11
+ store;
12
+ constructor(store) {
13
+ this.store = store;
14
+ }
15
+ /**
16
+ * Build a ReplayState for the given session.
17
+ * Returns null when the session does not exist.
18
+ */
19
+ async build(sessionId, options = {}) {
20
+ const { offset = 0, limit = 1000, eventTypes, includeContext = true, } = options;
21
+ // 1. Fetch session metadata
22
+ const session = await this.store.getSession(sessionId);
23
+ if (!session)
24
+ return null;
25
+ // 2. Fetch ALL events for the session (ascending)
26
+ const allEvents = await this.store.getSessionTimeline(sessionId);
27
+ if (allEvents.length === 0) {
28
+ return {
29
+ session,
30
+ chainValid: true,
31
+ totalSteps: 0,
32
+ steps: [],
33
+ pagination: { offset, limit, hasMore: false },
34
+ summary: emptySummary(),
35
+ };
36
+ }
37
+ // 3. Verify hash chain
38
+ const chainResult = verifyChain(allEvents);
39
+ const chainValid = chainResult.valid;
40
+ // 4. Build pairing maps (always on full set for correct pairing)
41
+ const pairMap = buildPairMap(allEvents);
42
+ // 5. Apply eventTypes filter (but keep full list for summary)
43
+ let filteredEvents = allEvents;
44
+ if (eventTypes && eventTypes.length > 0) {
45
+ const typeSet = new Set(eventTypes);
46
+ filteredEvents = allEvents.filter((e) => typeSet.has(e.eventType));
47
+ }
48
+ const totalSteps = filteredEvents.length;
49
+ // 6. Summary is always computed from the full (unfiltered, unpaginated) event list
50
+ const summary = computeSummary(allEvents);
51
+ // 7. Paginate
52
+ const pageEvents = filteredEvents.slice(offset, offset + limit);
53
+ const hasMore = offset + limit < totalSteps;
54
+ // 8. Build steps with cumulative context
55
+ const steps = [];
56
+ if (includeContext) {
57
+ // We need to compute context cumulatively through ALL filtered events
58
+ // up to (offset + limit), then only return the paginated slice.
59
+ const contextState = createContextState(allEvents.length);
60
+ let stepIndex = 0;
61
+ for (const event of filteredEvents) {
62
+ // Update context with this event (even if before our page window)
63
+ updateContext(contextState, event, allEvents);
64
+ if (stepIndex >= offset && stepIndex < offset + limit) {
65
+ const paired = pairMap.get(event.id);
66
+ const step = {
67
+ index: stepIndex,
68
+ event: maybeRedactEvent(event),
69
+ context: snapshotContext(contextState),
70
+ };
71
+ if (paired) {
72
+ step.pairedEvent = maybeRedactEvent(paired.event);
73
+ step.pairDurationMs = paired.durationMs;
74
+ }
75
+ steps.push(step);
76
+ }
77
+ stepIndex++;
78
+ if (stepIndex >= offset + limit && stepIndex >= totalSteps)
79
+ break;
80
+ }
81
+ }
82
+ else {
83
+ // No context — just build steps with empty context
84
+ let stepIndex = offset;
85
+ for (const event of pageEvents) {
86
+ const paired = pairMap.get(event.id);
87
+ const step = {
88
+ index: stepIndex,
89
+ event: maybeRedactEvent(event),
90
+ context: emptyContext(allEvents.length),
91
+ };
92
+ if (paired) {
93
+ step.pairedEvent = maybeRedactEvent(paired.event);
94
+ step.pairDurationMs = paired.durationMs;
95
+ }
96
+ steps.push(step);
97
+ stepIndex++;
98
+ }
99
+ }
100
+ return {
101
+ session,
102
+ chainValid,
103
+ totalSteps,
104
+ steps,
105
+ pagination: { offset, limit, hasMore },
106
+ summary,
107
+ };
108
+ }
109
+ }
110
+ /**
111
+ * Build a map from initiator event ID → paired response event + duration.
112
+ *
113
+ * Pairings:
114
+ * - tool_call → tool_response/tool_error (by callId)
115
+ * - llm_call → llm_response (by callId)
116
+ * - approval_requested → approval_granted/denied/expired (by requestId)
117
+ * - form_submitted → form_completed/form_expired (by submissionId)
118
+ */
119
+ function buildPairMap(events) {
120
+ const pairMap = new Map();
121
+ // Index initiator events by their correlation key
122
+ const toolCalls = new Map(); // callId → event
123
+ const llmCalls = new Map(); // callId → event
124
+ const approvalRequests = new Map(); // requestId → event
125
+ const formSubmissions = new Map(); // submissionId → event
126
+ for (const event of events) {
127
+ const p = event.payload;
128
+ switch (event.eventType) {
129
+ case 'tool_call':
130
+ toolCalls.set(p.callId, event);
131
+ break;
132
+ case 'llm_call':
133
+ llmCalls.set(p.callId, event);
134
+ break;
135
+ case 'approval_requested':
136
+ approvalRequests.set(p.requestId, event);
137
+ break;
138
+ case 'form_submitted':
139
+ formSubmissions.set(p.submissionId, event);
140
+ break;
141
+ case 'tool_response':
142
+ case 'tool_error': {
143
+ const callId = p.callId;
144
+ const initiator = toolCalls.get(callId);
145
+ if (initiator) {
146
+ const durationMs = new Date(event.timestamp).getTime() -
147
+ new Date(initiator.timestamp).getTime();
148
+ pairMap.set(initiator.id, { event, durationMs });
149
+ }
150
+ break;
151
+ }
152
+ case 'llm_response': {
153
+ const callId = p.callId;
154
+ const initiator = llmCalls.get(callId);
155
+ if (initiator) {
156
+ const durationMs = new Date(event.timestamp).getTime() -
157
+ new Date(initiator.timestamp).getTime();
158
+ pairMap.set(initiator.id, { event, durationMs });
159
+ }
160
+ break;
161
+ }
162
+ case 'approval_granted':
163
+ case 'approval_denied':
164
+ case 'approval_expired': {
165
+ const requestId = p.requestId;
166
+ const initiator = approvalRequests.get(requestId);
167
+ if (initiator) {
168
+ const durationMs = new Date(event.timestamp).getTime() -
169
+ new Date(initiator.timestamp).getTime();
170
+ pairMap.set(initiator.id, { event, durationMs });
171
+ }
172
+ break;
173
+ }
174
+ case 'form_completed':
175
+ case 'form_expired': {
176
+ const submissionId = p.submissionId;
177
+ const initiator = formSubmissions.get(submissionId);
178
+ if (initiator) {
179
+ const durationMs = new Date(event.timestamp).getTime() -
180
+ new Date(initiator.timestamp).getTime();
181
+ pairMap.set(initiator.id, { event, durationMs });
182
+ }
183
+ break;
184
+ }
185
+ }
186
+ }
187
+ return pairMap;
188
+ }
189
+ function createContextState(totalEvents) {
190
+ return {
191
+ totalEvents,
192
+ eventIndex: 0,
193
+ cumulativeCostUsd: 0,
194
+ firstTimestamp: null,
195
+ eventCounts: {},
196
+ llmHistory: [],
197
+ toolResults: [],
198
+ pendingApprovals: [],
199
+ errorCount: 0,
200
+ warnings: [],
201
+ _currentTimestamp: null,
202
+ _pendingToolCalls: new Map(),
203
+ _pendingLlmCalls: new Map(),
204
+ };
205
+ }
206
+ function updateContext(ctx, event, _allEvents) {
207
+ ctx.eventIndex++;
208
+ // Track first timestamp and current elapsed
209
+ if (ctx.firstTimestamp === null) {
210
+ ctx.firstTimestamp = event.timestamp;
211
+ }
212
+ ctx._currentTimestamp = event.timestamp;
213
+ // Event counts
214
+ ctx.eventCounts[event.eventType] = (ctx.eventCounts[event.eventType] ?? 0) + 1;
215
+ // Error tracking
216
+ if (event.eventType === 'tool_error' ||
217
+ event.severity === 'error') {
218
+ ctx.errorCount++;
219
+ }
220
+ const p = event.payload;
221
+ switch (event.eventType) {
222
+ case 'cost_tracked': {
223
+ const payload = p;
224
+ ctx.cumulativeCostUsd += payload.costUsd;
225
+ break;
226
+ }
227
+ case 'tool_call': {
228
+ const payload = p;
229
+ ctx._pendingToolCalls.set(payload.callId, {
230
+ toolName: payload.toolName,
231
+ arguments: payload.arguments,
232
+ });
233
+ ctx.toolResults.push({
234
+ callId: payload.callId,
235
+ toolName: payload.toolName,
236
+ arguments: payload.arguments,
237
+ completed: false,
238
+ });
239
+ break;
240
+ }
241
+ case 'tool_response': {
242
+ const payload = p;
243
+ const pending = ctx._pendingToolCalls.get(payload.callId);
244
+ if (pending) {
245
+ // Update the existing entry
246
+ const entry = ctx.toolResults.find((t) => t.callId === payload.callId);
247
+ if (entry) {
248
+ entry.result = payload.result;
249
+ entry.durationMs = payload.durationMs;
250
+ entry.completed = true;
251
+ }
252
+ ctx._pendingToolCalls.delete(payload.callId);
253
+ }
254
+ break;
255
+ }
256
+ case 'tool_error': {
257
+ const payload = p;
258
+ const pending = ctx._pendingToolCalls.get(payload.callId);
259
+ if (pending) {
260
+ const entry = ctx.toolResults.find((t) => t.callId === payload.callId);
261
+ if (entry) {
262
+ entry.error = payload.error;
263
+ entry.durationMs = payload.durationMs;
264
+ entry.completed = true;
265
+ }
266
+ ctx._pendingToolCalls.delete(payload.callId);
267
+ }
268
+ break;
269
+ }
270
+ case 'llm_call': {
271
+ const payload = p;
272
+ const messages = payload.redacted
273
+ ? redactMessages(payload.messages)
274
+ : payload.messages;
275
+ ctx._pendingLlmCalls.set(payload.callId, {
276
+ provider: payload.provider,
277
+ model: payload.model,
278
+ messages,
279
+ costUsd: 0,
280
+ });
281
+ ctx.llmHistory.push({
282
+ callId: payload.callId,
283
+ provider: payload.provider,
284
+ model: payload.model,
285
+ messages,
286
+ costUsd: 0,
287
+ latencyMs: 0,
288
+ });
289
+ break;
290
+ }
291
+ case 'llm_response': {
292
+ const payload = p;
293
+ ctx.cumulativeCostUsd += payload.costUsd;
294
+ const entry = ctx.llmHistory.find((h) => h.callId === payload.callId);
295
+ if (entry) {
296
+ entry.response = payload.redacted
297
+ ? '[REDACTED]'
298
+ : (payload.completion ?? undefined);
299
+ entry.toolCalls = payload.toolCalls;
300
+ entry.costUsd = payload.costUsd;
301
+ entry.latencyMs = payload.latencyMs;
302
+ }
303
+ else {
304
+ // Response without a matching call — still record it
305
+ ctx.llmHistory.push({
306
+ callId: payload.callId,
307
+ provider: payload.provider,
308
+ model: payload.model,
309
+ messages: [],
310
+ response: payload.redacted
311
+ ? '[REDACTED]'
312
+ : (payload.completion ?? undefined),
313
+ toolCalls: payload.toolCalls,
314
+ costUsd: payload.costUsd,
315
+ latencyMs: payload.latencyMs,
316
+ });
317
+ }
318
+ break;
319
+ }
320
+ case 'approval_requested': {
321
+ const payload = p;
322
+ ctx.pendingApprovals.push({
323
+ requestId: payload.requestId,
324
+ action: payload.action,
325
+ status: 'pending',
326
+ });
327
+ break;
328
+ }
329
+ case 'approval_granted':
330
+ case 'approval_denied':
331
+ case 'approval_expired': {
332
+ const payload = p;
333
+ const approval = ctx.pendingApprovals.find((a) => a.requestId === payload.requestId);
334
+ if (approval) {
335
+ const statusMap = {
336
+ approval_granted: 'granted',
337
+ approval_denied: 'denied',
338
+ approval_expired: 'expired',
339
+ };
340
+ approval.status = statusMap[event.eventType] ?? 'granted';
341
+ }
342
+ break;
343
+ }
344
+ }
345
+ }
346
+ function snapshotContext(ctx) {
347
+ const elapsedMs = ctx.firstTimestamp && ctx._currentTimestamp
348
+ ? new Date(ctx._currentTimestamp).getTime() -
349
+ new Date(ctx.firstTimestamp).getTime()
350
+ : 0;
351
+ return {
352
+ eventIndex: ctx.eventIndex,
353
+ totalEvents: ctx.totalEvents,
354
+ cumulativeCostUsd: ctx.cumulativeCostUsd,
355
+ elapsedMs,
356
+ eventCounts: { ...ctx.eventCounts },
357
+ llmHistory: ctx.llmHistory.map((h) => ({ ...h, messages: [...h.messages] })),
358
+ toolResults: ctx.toolResults.map((t) => ({ ...t })),
359
+ pendingApprovals: ctx.pendingApprovals.map((a) => ({ ...a })),
360
+ errorCount: ctx.errorCount,
361
+ warnings: [...ctx.warnings],
362
+ };
363
+ }
364
+ function emptyContext(totalEvents) {
365
+ return {
366
+ eventIndex: 0,
367
+ totalEvents,
368
+ cumulativeCostUsd: 0,
369
+ elapsedMs: 0,
370
+ eventCounts: {},
371
+ llmHistory: [],
372
+ toolResults: [],
373
+ pendingApprovals: [],
374
+ errorCount: 0,
375
+ warnings: [],
376
+ };
377
+ }
378
+ // ─── Summary ───────────────────────────────────────────────
379
+ function emptySummary() {
380
+ return {
381
+ totalCost: 0,
382
+ totalDurationMs: 0,
383
+ totalLlmCalls: 0,
384
+ totalToolCalls: 0,
385
+ totalErrors: 0,
386
+ models: [],
387
+ tools: [],
388
+ };
389
+ }
390
+ function computeSummary(events) {
391
+ let totalCost = 0;
392
+ let totalLlmCalls = 0;
393
+ let totalToolCalls = 0;
394
+ let totalErrors = 0;
395
+ const models = new Set();
396
+ const tools = new Set();
397
+ for (const event of events) {
398
+ const p = event.payload;
399
+ switch (event.eventType) {
400
+ case 'llm_call': {
401
+ totalLlmCalls++;
402
+ const payload = p;
403
+ models.add(payload.model);
404
+ break;
405
+ }
406
+ case 'llm_response': {
407
+ const payload = p;
408
+ totalCost += payload.costUsd;
409
+ break;
410
+ }
411
+ case 'cost_tracked': {
412
+ const payload = p;
413
+ totalCost += payload.costUsd;
414
+ break;
415
+ }
416
+ case 'tool_call': {
417
+ totalToolCalls++;
418
+ const payload = p;
419
+ tools.add(payload.toolName);
420
+ break;
421
+ }
422
+ case 'tool_error':
423
+ totalErrors++;
424
+ break;
425
+ }
426
+ if (event.severity === 'error' && event.eventType !== 'tool_error') {
427
+ totalErrors++;
428
+ }
429
+ }
430
+ const totalDurationMs = events.length >= 2
431
+ ? new Date(events[events.length - 1].timestamp).getTime() -
432
+ new Date(events[0].timestamp).getTime()
433
+ : 0;
434
+ return {
435
+ totalCost,
436
+ totalDurationMs,
437
+ totalLlmCalls,
438
+ totalToolCalls,
439
+ totalErrors,
440
+ models: [...models],
441
+ tools: [...tools],
442
+ };
443
+ }
444
+ // ─── Redaction (Story 2.4) ─────────────────────────────────
445
+ const REDACTED = '[REDACTED]';
446
+ function redactMessages(messages) {
447
+ return messages.map((msg) => ({
448
+ ...msg,
449
+ content: REDACTED,
450
+ }));
451
+ }
452
+ /**
453
+ * Return a shallow copy of the event with redacted payload content
454
+ * if the event's payload has `redacted === true`.
455
+ * Metadata (model, tokens, cost, latency) is always preserved.
456
+ */
457
+ function maybeRedactEvent(event) {
458
+ const p = event.payload;
459
+ if (event.eventType === 'llm_call' && p.redacted) {
460
+ const payload = p;
461
+ return {
462
+ ...event,
463
+ payload: {
464
+ ...payload,
465
+ messages: redactMessages(payload.messages),
466
+ systemPrompt: payload.systemPrompt ? REDACTED : undefined,
467
+ },
468
+ };
469
+ }
470
+ if (event.eventType === 'llm_response' && p.redacted) {
471
+ const payload = p;
472
+ return {
473
+ ...event,
474
+ payload: {
475
+ ...payload,
476
+ completion: REDACTED,
477
+ },
478
+ };
479
+ }
480
+ return event;
481
+ }
482
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/lib/replay/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Benchmark REST Endpoints (Story 3.5)
3
+ *
4
+ * POST /api/benchmarks — Create benchmark
5
+ * GET /api/benchmarks — List benchmarks
6
+ * GET /api/benchmarks/:id — Get benchmark detail
7
+ * PUT /api/benchmarks/:id/status — Transition status
8
+ * GET /api/benchmarks/:id/results — Get comparison results
9
+ * DELETE /api/benchmarks/:id — Delete draft/cancelled
10
+ */
11
+ import { Hono } from 'hono';
12
+ import type { IEventStore } from '@agentlensai/core';
13
+ import type { AuthVariables } from '../middleware/auth.js';
14
+ import type { SqliteDb } from '../db/index.js';
15
+ export declare function benchmarkRoutes(store: IEventStore, db?: SqliteDb): Hono<{
16
+ Variables: AuthVariables;
17
+ }, import("hono/types").BlankSchema, "/">;
18
+ //# sourceMappingURL=benchmarks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmarks.d.ts","sourceRoot":"","sources":["../../src/routes/benchmarks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAoC,MAAM,mBAAmB,CAAC;AAEvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAQ3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAqF/C,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,QAAQ;eAC7B,aAAa;0CAqRhD"}