rag-eval-node-ts 0.3.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 (94) hide show
  1. package/README.md +204 -0
  2. package/dist/__tests__/evaluate.test.d.ts +2 -0
  3. package/dist/__tests__/evaluate.test.d.ts.map +1 -0
  4. package/dist/__tests__/evaluate.test.js +130 -0
  5. package/dist/__tests__/evaluate.test.js.map +1 -0
  6. package/dist/__tests__/evaluator.test.d.ts +2 -0
  7. package/dist/__tests__/evaluator.test.d.ts.map +1 -0
  8. package/dist/__tests__/evaluator.test.js +92 -0
  9. package/dist/__tests__/evaluator.test.js.map +1 -0
  10. package/dist/__tests__/heuristic/ngrams.test.d.ts +2 -0
  11. package/dist/__tests__/heuristic/ngrams.test.d.ts.map +1 -0
  12. package/dist/__tests__/heuristic/ngrams.test.js +89 -0
  13. package/dist/__tests__/heuristic/ngrams.test.js.map +1 -0
  14. package/dist/__tests__/heuristic/tfidf.test.d.ts +2 -0
  15. package/dist/__tests__/heuristic/tfidf.test.d.ts.map +1 -0
  16. package/dist/__tests__/heuristic/tfidf.test.js +57 -0
  17. package/dist/__tests__/heuristic/tfidf.test.js.map +1 -0
  18. package/dist/__tests__/heuristic/token-f1.test.d.ts +2 -0
  19. package/dist/__tests__/heuristic/token-f1.test.d.ts.map +1 -0
  20. package/dist/__tests__/heuristic/token-f1.test.js +40 -0
  21. package/dist/__tests__/heuristic/token-f1.test.js.map +1 -0
  22. package/dist/__tests__/metrics/faithfulness.test.d.ts +2 -0
  23. package/dist/__tests__/metrics/faithfulness.test.d.ts.map +1 -0
  24. package/dist/__tests__/metrics/faithfulness.test.js +66 -0
  25. package/dist/__tests__/metrics/faithfulness.test.js.map +1 -0
  26. package/dist/__tests__/types.test.d.ts +2 -0
  27. package/dist/__tests__/types.test.d.ts.map +1 -0
  28. package/dist/__tests__/types.test.js +531 -0
  29. package/dist/__tests__/types.test.js.map +1 -0
  30. package/dist/evaluate.d.ts +14 -0
  31. package/dist/evaluate.d.ts.map +1 -0
  32. package/dist/evaluate.js +208 -0
  33. package/dist/evaluate.js.map +1 -0
  34. package/dist/evaluator.d.ts +10 -0
  35. package/dist/evaluator.d.ts.map +1 -0
  36. package/dist/evaluator.js +39 -0
  37. package/dist/evaluator.js.map +1 -0
  38. package/dist/heuristic/ngrams.d.ts +22 -0
  39. package/dist/heuristic/ngrams.d.ts.map +1 -0
  40. package/dist/heuristic/ngrams.js +70 -0
  41. package/dist/heuristic/ngrams.js.map +1 -0
  42. package/dist/heuristic/sentences.d.ts +13 -0
  43. package/dist/heuristic/sentences.d.ts.map +1 -0
  44. package/dist/heuristic/sentences.js +23 -0
  45. package/dist/heuristic/sentences.js.map +1 -0
  46. package/dist/heuristic/tfidf.d.ts +21 -0
  47. package/dist/heuristic/tfidf.d.ts.map +1 -0
  48. package/dist/heuristic/tfidf.js +87 -0
  49. package/dist/heuristic/tfidf.js.map +1 -0
  50. package/dist/heuristic/token-f1.d.ts +12 -0
  51. package/dist/heuristic/token-f1.d.ts.map +1 -0
  52. package/dist/heuristic/token-f1.js +41 -0
  53. package/dist/heuristic/token-f1.js.map +1 -0
  54. package/dist/index.d.ts +9 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +37 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/metrics/answer-correctness.d.ts +7 -0
  59. package/dist/metrics/answer-correctness.d.ts.map +1 -0
  60. package/dist/metrics/answer-correctness.js +51 -0
  61. package/dist/metrics/answer-correctness.js.map +1 -0
  62. package/dist/metrics/answer-relevance.d.ts +6 -0
  63. package/dist/metrics/answer-relevance.d.ts.map +1 -0
  64. package/dist/metrics/answer-relevance.js +37 -0
  65. package/dist/metrics/answer-relevance.js.map +1 -0
  66. package/dist/metrics/context-precision.d.ts +6 -0
  67. package/dist/metrics/context-precision.d.ts.map +1 -0
  68. package/dist/metrics/context-precision.js +57 -0
  69. package/dist/metrics/context-precision.js.map +1 -0
  70. package/dist/metrics/context-recall.d.ts +7 -0
  71. package/dist/metrics/context-recall.d.ts.map +1 -0
  72. package/dist/metrics/context-recall.js +66 -0
  73. package/dist/metrics/context-recall.js.map +1 -0
  74. package/dist/metrics/context-relevance.d.ts +6 -0
  75. package/dist/metrics/context-relevance.d.ts.map +1 -0
  76. package/dist/metrics/context-relevance.js +48 -0
  77. package/dist/metrics/context-relevance.js.map +1 -0
  78. package/dist/metrics/faithfulness.d.ts +6 -0
  79. package/dist/metrics/faithfulness.d.ts.map +1 -0
  80. package/dist/metrics/faithfulness.js +64 -0
  81. package/dist/metrics/faithfulness.js.map +1 -0
  82. package/dist/metrics/hallucination-rate.d.ts +7 -0
  83. package/dist/metrics/hallucination-rate.d.ts.map +1 -0
  84. package/dist/metrics/hallucination-rate.js +65 -0
  85. package/dist/metrics/hallucination-rate.js.map +1 -0
  86. package/dist/metrics/index.d.ts +14 -0
  87. package/dist/metrics/index.d.ts.map +1 -0
  88. package/dist/metrics/index.js +40 -0
  89. package/dist/metrics/index.js.map +1 -0
  90. package/dist/types.d.ts +169 -0
  91. package/dist/types.d.ts.map +1 -0
  92. package/dist/types.js +4 -0
  93. package/dist/types.js.map +1 -0
  94. package/package.json +53 -0
@@ -0,0 +1,531 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ // ---------------------------------------------------------------------------
5
+ // Helper: a compile-time type assertion that T is assignable to Expected.
6
+ // At runtime this is just an identity function — the real value is that
7
+ // TypeScript will reject the test file if the shape is wrong.
8
+ // ---------------------------------------------------------------------------
9
+ function assertType(_val) { }
10
+ // ---------------------------------------------------------------------------
11
+ // MetricId union — all 7 values
12
+ // ---------------------------------------------------------------------------
13
+ (0, vitest_1.describe)('MetricId', () => {
14
+ (0, vitest_1.it)('contains all seven metric identifiers', () => {
15
+ const ids = [
16
+ 'faithfulness',
17
+ 'answerRelevance',
18
+ 'contextPrecision',
19
+ 'contextRecall',
20
+ 'contextRelevance',
21
+ 'answerCorrectness',
22
+ 'hallucinationRate',
23
+ ];
24
+ (0, vitest_1.expect)(ids).toHaveLength(7);
25
+ (0, vitest_1.expect)(ids).toContain('faithfulness');
26
+ (0, vitest_1.expect)(ids).toContain('answerRelevance');
27
+ (0, vitest_1.expect)(ids).toContain('contextPrecision');
28
+ (0, vitest_1.expect)(ids).toContain('contextRecall');
29
+ (0, vitest_1.expect)(ids).toContain('contextRelevance');
30
+ (0, vitest_1.expect)(ids).toContain('answerCorrectness');
31
+ (0, vitest_1.expect)(ids).toContain('hallucinationRate');
32
+ });
33
+ });
34
+ // ---------------------------------------------------------------------------
35
+ // EvaluationMode union — 3 values
36
+ // ---------------------------------------------------------------------------
37
+ (0, vitest_1.describe)('EvaluationMode', () => {
38
+ (0, vitest_1.it)('contains heuristic, llm, and hybrid', () => {
39
+ const modes = ['heuristic', 'llm', 'hybrid'];
40
+ (0, vitest_1.expect)(modes).toHaveLength(3);
41
+ (0, vitest_1.expect)(modes).toContain('heuristic');
42
+ (0, vitest_1.expect)(modes).toContain('llm');
43
+ (0, vitest_1.expect)(modes).toContain('hybrid');
44
+ });
45
+ });
46
+ // ---------------------------------------------------------------------------
47
+ // EvalSample
48
+ // ---------------------------------------------------------------------------
49
+ (0, vitest_1.describe)('EvalSample', () => {
50
+ (0, vitest_1.it)('requires question, answer, contexts and accepts optional fields', () => {
51
+ const minimal = {
52
+ question: 'What is RAG?',
53
+ answer: 'RAG stands for Retrieval-Augmented Generation.',
54
+ contexts: ['Context about RAG'],
55
+ };
56
+ assertType(minimal);
57
+ (0, vitest_1.expect)(minimal.question).toBe('What is RAG?');
58
+ (0, vitest_1.expect)(minimal.answer).toBeDefined();
59
+ (0, vitest_1.expect)(Array.isArray(minimal.contexts)).toBe(true);
60
+ (0, vitest_1.expect)(minimal.groundTruth).toBeUndefined();
61
+ (0, vitest_1.expect)(minimal.id).toBeUndefined();
62
+ (0, vitest_1.expect)(minimal.metadata).toBeUndefined();
63
+ });
64
+ (0, vitest_1.it)('accepts all optional fields', () => {
65
+ const full = {
66
+ question: 'What is RAG?',
67
+ answer: 'RAG stands for Retrieval-Augmented Generation.',
68
+ contexts: ['Context about RAG'],
69
+ groundTruth: 'RAG is a technique that combines retrieval with generation.',
70
+ id: 'sample-001',
71
+ metadata: { source: 'test', priority: 1 },
72
+ };
73
+ assertType(full);
74
+ (0, vitest_1.expect)(full.groundTruth).toBeDefined();
75
+ (0, vitest_1.expect)(full.id).toBe('sample-001');
76
+ (0, vitest_1.expect)(full.metadata).toEqual({ source: 'test', priority: 1 });
77
+ });
78
+ });
79
+ // ---------------------------------------------------------------------------
80
+ // EvalSignal
81
+ // ---------------------------------------------------------------------------
82
+ (0, vitest_1.describe)('EvalSignal', () => {
83
+ (0, vitest_1.it)('has required id, metricId, severity, message fields', () => {
84
+ const signal = {
85
+ id: 'unsupported-claim-1',
86
+ metricId: 'faithfulness',
87
+ severity: 'critical',
88
+ message: 'Claim not supported by any context chunk.',
89
+ };
90
+ assertType(signal);
91
+ (0, vitest_1.expect)(signal.id).toBe('unsupported-claim-1');
92
+ (0, vitest_1.expect)(signal.metricId).toBe('faithfulness');
93
+ (0, vitest_1.expect)(signal.severity).toBe('critical');
94
+ (0, vitest_1.expect)(signal.message).toBeDefined();
95
+ (0, vitest_1.expect)(signal.evidence).toBeUndefined();
96
+ (0, vitest_1.expect)(signal.contextChunkIndex).toBeUndefined();
97
+ });
98
+ (0, vitest_1.it)('accepts optional evidence and contextChunkIndex', () => {
99
+ const signal = {
100
+ id: 'irrelevant-chunk',
101
+ metricId: 'contextPrecision',
102
+ severity: 'warning',
103
+ message: 'Context chunk appears irrelevant.',
104
+ evidence: 'The cat sat on the mat.',
105
+ contextChunkIndex: 2,
106
+ };
107
+ assertType(signal);
108
+ (0, vitest_1.expect)(signal.evidence).toBe('The cat sat on the mat.');
109
+ (0, vitest_1.expect)(signal.contextChunkIndex).toBe(2);
110
+ });
111
+ (0, vitest_1.it)('severity is constrained to info | warning | critical', () => {
112
+ const severities = ['info', 'warning', 'critical'];
113
+ (0, vitest_1.expect)(severities).toHaveLength(3);
114
+ });
115
+ });
116
+ // ---------------------------------------------------------------------------
117
+ // MetricResult
118
+ // ---------------------------------------------------------------------------
119
+ (0, vitest_1.describe)('MetricResult', () => {
120
+ (0, vitest_1.it)('has score as number | null and passed as boolean | null', () => {
121
+ const result = {
122
+ metricId: 'faithfulness',
123
+ score: 0.85,
124
+ mode: 'heuristic',
125
+ passed: true,
126
+ threshold: 0.7,
127
+ explanation: 'All claims were found in the context.',
128
+ signals: [],
129
+ llmCalls: 0,
130
+ durationMs: 12,
131
+ };
132
+ assertType(result);
133
+ (0, vitest_1.expect)(result.score).toBe(0.85);
134
+ (0, vitest_1.expect)(result.passed).toBe(true);
135
+ });
136
+ (0, vitest_1.it)('allows null score and null passed', () => {
137
+ const result = {
138
+ metricId: 'contextRecall',
139
+ score: null,
140
+ mode: 'llm',
141
+ passed: null,
142
+ threshold: 0.7,
143
+ explanation: 'groundTruth was not provided.',
144
+ signals: [],
145
+ llmCalls: 0,
146
+ durationMs: 1,
147
+ };
148
+ assertType(result);
149
+ (0, vitest_1.expect)(result.score).toBeNull();
150
+ (0, vitest_1.expect)(result.passed).toBeNull();
151
+ });
152
+ (0, vitest_1.it)('mode is constrained to heuristic | llm (not hybrid)', () => {
153
+ const modes = ['heuristic', 'llm'];
154
+ (0, vitest_1.expect)(modes).toHaveLength(2);
155
+ });
156
+ (0, vitest_1.it)('has all required numeric fields', () => {
157
+ const result = {
158
+ metricId: 'answerRelevance',
159
+ score: 0.72,
160
+ mode: 'llm',
161
+ passed: true,
162
+ threshold: 0.7,
163
+ explanation: 'Answer is relevant to the question.',
164
+ signals: [],
165
+ llmCalls: 3,
166
+ durationMs: 450,
167
+ };
168
+ (0, vitest_1.expect)(typeof result.threshold).toBe('number');
169
+ (0, vitest_1.expect)(typeof result.llmCalls).toBe('number');
170
+ (0, vitest_1.expect)(typeof result.durationMs).toBe('number');
171
+ });
172
+ });
173
+ // ---------------------------------------------------------------------------
174
+ // CostTracker — 4 numeric fields
175
+ // ---------------------------------------------------------------------------
176
+ (0, vitest_1.describe)('CostTracker', () => {
177
+ (0, vitest_1.it)('has exactly 4 numeric fields', () => {
178
+ const cost = {
179
+ llmCalls: 5,
180
+ estimatedInputTokens: 1200,
181
+ estimatedOutputTokens: 300,
182
+ parseFailures: 0,
183
+ };
184
+ assertType(cost);
185
+ (0, vitest_1.expect)(typeof cost.llmCalls).toBe('number');
186
+ (0, vitest_1.expect)(typeof cost.estimatedInputTokens).toBe('number');
187
+ (0, vitest_1.expect)(typeof cost.estimatedOutputTokens).toBe('number');
188
+ (0, vitest_1.expect)(typeof cost.parseFailures).toBe('number');
189
+ });
190
+ });
191
+ // ---------------------------------------------------------------------------
192
+ // EvalResult
193
+ // ---------------------------------------------------------------------------
194
+ (0, vitest_1.describe)('EvalResult', () => {
195
+ (0, vitest_1.it)('has sample, metrics (Record), compositeScore, passed, cost, durationMs, evaluatedAt', () => {
196
+ const mockMetrics = {
197
+ faithfulness: {
198
+ metricId: 'faithfulness', score: 0.9, mode: 'heuristic', passed: true,
199
+ threshold: 0.7, explanation: 'ok', signals: [], llmCalls: 0, durationMs: 10,
200
+ },
201
+ answerRelevance: {
202
+ metricId: 'answerRelevance', score: 0.8, mode: 'heuristic', passed: true,
203
+ threshold: 0.7, explanation: 'ok', signals: [], llmCalls: 0, durationMs: 8,
204
+ },
205
+ contextPrecision: {
206
+ metricId: 'contextPrecision', score: 0.75, mode: 'heuristic', passed: true,
207
+ threshold: 0.7, explanation: 'ok', signals: [], llmCalls: 0, durationMs: 5,
208
+ },
209
+ contextRecall: {
210
+ metricId: 'contextRecall', score: 0.7, mode: 'heuristic', passed: true,
211
+ threshold: 0.7, explanation: 'ok', signals: [], llmCalls: 0, durationMs: 5,
212
+ },
213
+ contextRelevance: {
214
+ metricId: 'contextRelevance', score: 0.65, mode: 'heuristic', passed: true,
215
+ threshold: 0.6, explanation: 'ok', signals: [], llmCalls: 0, durationMs: 4,
216
+ },
217
+ answerCorrectness: {
218
+ metricId: 'answerCorrectness', score: 0.6, mode: 'heuristic', passed: true,
219
+ threshold: 0.6, explanation: 'ok', signals: [], llmCalls: 0, durationMs: 4,
220
+ },
221
+ hallucinationRate: {
222
+ metricId: 'hallucinationRate', score: 0.85, mode: 'heuristic', passed: true,
223
+ threshold: 0.7, explanation: 'ok', signals: [], llmCalls: 0, durationMs: 3,
224
+ },
225
+ };
226
+ const result = {
227
+ sample: { question: 'Q?', answer: 'A.', contexts: ['C'] },
228
+ metrics: mockMetrics,
229
+ compositeScore: 0.75,
230
+ passed: true,
231
+ cost: { llmCalls: 0, estimatedInputTokens: 0, estimatedOutputTokens: 0, parseFailures: 0 },
232
+ durationMs: 39,
233
+ evaluatedAt: '2026-03-21T00:00:00.000Z',
234
+ };
235
+ assertType(result);
236
+ (0, vitest_1.expect)(result.compositeScore).toBe(0.75);
237
+ (0, vitest_1.expect)(result.passed).toBe(true);
238
+ (0, vitest_1.expect)(result.evaluatedAt).toMatch(/^\d{4}-\d{2}-\d{2}T/);
239
+ });
240
+ (0, vitest_1.it)('compositeScore can be null', () => {
241
+ const result = {
242
+ sample: { question: 'Q?', answer: 'A.', contexts: [] },
243
+ metrics: {},
244
+ compositeScore: null,
245
+ passed: false,
246
+ cost: { llmCalls: 0, estimatedInputTokens: 0, estimatedOutputTokens: 0, parseFailures: 0 },
247
+ durationMs: 1,
248
+ evaluatedAt: '2026-03-21T00:00:00.000Z',
249
+ };
250
+ assertType(result);
251
+ (0, vitest_1.expect)(result.compositeScore).toBeNull();
252
+ });
253
+ });
254
+ // ---------------------------------------------------------------------------
255
+ // MetricAggregate
256
+ // ---------------------------------------------------------------------------
257
+ (0, vitest_1.describe)('MetricAggregate', () => {
258
+ (0, vitest_1.it)('has all required fields including median, stdDev, and nullRate', () => {
259
+ const agg = {
260
+ metricId: 'faithfulness',
261
+ mean: 0.82,
262
+ median: 0.85,
263
+ min: 0.41,
264
+ max: 1.0,
265
+ stdDev: 0.12,
266
+ passRate: 0.905,
267
+ nullRate: 0.0,
268
+ };
269
+ assertType(agg);
270
+ (0, vitest_1.expect)(typeof agg.mean).toBe('number');
271
+ (0, vitest_1.expect)(typeof agg.median).toBe('number');
272
+ (0, vitest_1.expect)(typeof agg.min).toBe('number');
273
+ (0, vitest_1.expect)(typeof agg.max).toBe('number');
274
+ (0, vitest_1.expect)(typeof agg.stdDev).toBe('number');
275
+ (0, vitest_1.expect)(typeof agg.passRate).toBe('number');
276
+ (0, vitest_1.expect)(typeof agg.nullRate).toBe('number');
277
+ });
278
+ });
279
+ // ---------------------------------------------------------------------------
280
+ // MetricRegression — SPEC field names
281
+ // ---------------------------------------------------------------------------
282
+ (0, vitest_1.describe)('MetricRegression', () => {
283
+ (0, vitest_1.it)('has metricId, baselineMean, currentMean, delta, regressed fields', () => {
284
+ const regression = {
285
+ metricId: 'faithfulness',
286
+ baselineMean: 0.85,
287
+ currentMean: 0.78,
288
+ delta: -0.07,
289
+ regressed: true,
290
+ };
291
+ assertType(regression);
292
+ (0, vitest_1.expect)(regression.baselineMean).toBe(0.85);
293
+ (0, vitest_1.expect)(regression.currentMean).toBe(0.78);
294
+ (0, vitest_1.expect)(regression.delta).toBe(-0.07);
295
+ (0, vitest_1.expect)(regression.regressed).toBe(true);
296
+ });
297
+ });
298
+ // ---------------------------------------------------------------------------
299
+ // BatchEvalResult
300
+ // ---------------------------------------------------------------------------
301
+ (0, vitest_1.describe)('BatchEvalResult', () => {
302
+ (0, vitest_1.it)('requires results, aggregates, compositeAggregate, passed, totalCost, totalDurationMs, evaluatedAt', () => {
303
+ const batch = {
304
+ results: [],
305
+ aggregates: {},
306
+ compositeAggregate: {
307
+ mean: 0.74,
308
+ median: 0.76,
309
+ min: 0.42,
310
+ max: 0.97,
311
+ stdDev: 0.1,
312
+ passRate: 0.762,
313
+ },
314
+ passed: true,
315
+ totalCost: { llmCalls: 189, estimatedInputTokens: 47250, estimatedOutputTokens: 12000, parseFailures: 0 },
316
+ totalDurationMs: 34200,
317
+ evaluatedAt: '2026-03-21T00:00:00.000Z',
318
+ };
319
+ assertType(batch);
320
+ (0, vitest_1.expect)(Array.isArray(batch.results)).toBe(true);
321
+ (0, vitest_1.expect)(batch.passed).toBe(true);
322
+ (0, vitest_1.expect)(batch.regressions).toBeUndefined();
323
+ });
324
+ (0, vitest_1.it)('accepts optional regressions array', () => {
325
+ const batch = {
326
+ results: [],
327
+ aggregates: {},
328
+ compositeAggregate: { mean: 0.7, median: 0.7, min: 0.5, max: 0.9, stdDev: 0.1, passRate: 0.8 },
329
+ passed: false,
330
+ totalCost: { llmCalls: 0, estimatedInputTokens: 0, estimatedOutputTokens: 0, parseFailures: 0 },
331
+ totalDurationMs: 100,
332
+ regressions: [
333
+ { metricId: 'faithfulness', baselineMean: 0.85, currentMean: 0.78, delta: -0.07, regressed: true },
334
+ ],
335
+ evaluatedAt: '2026-03-21T00:00:00.000Z',
336
+ };
337
+ assertType(batch);
338
+ (0, vitest_1.expect)(batch.regressions).toHaveLength(1);
339
+ });
340
+ });
341
+ // ---------------------------------------------------------------------------
342
+ // MetricThresholds — all optional, per-metric keys matching MetricId
343
+ // ---------------------------------------------------------------------------
344
+ (0, vitest_1.describe)('MetricThresholds', () => {
345
+ (0, vitest_1.it)('is fully optional', () => {
346
+ const empty = {};
347
+ assertType(empty);
348
+ (0, vitest_1.expect)(empty).toEqual({});
349
+ });
350
+ (0, vitest_1.it)('accepts all per-metric keys', () => {
351
+ const full = {
352
+ faithfulness: 0.8,
353
+ answerRelevance: 0.7,
354
+ contextPrecision: 0.7,
355
+ contextRecall: 0.7,
356
+ contextRelevance: 0.6,
357
+ answerCorrectness: 0.6,
358
+ hallucinationRate: 0.7,
359
+ };
360
+ assertType(full);
361
+ (0, vitest_1.expect)(full.faithfulness).toBe(0.8);
362
+ (0, vitest_1.expect)(full.answerCorrectness).toBe(0.6);
363
+ (0, vitest_1.expect)(full.hallucinationRate).toBe(0.7);
364
+ });
365
+ });
366
+ // ---------------------------------------------------------------------------
367
+ // HeuristicOptions — all optional
368
+ // ---------------------------------------------------------------------------
369
+ (0, vitest_1.describe)('HeuristicOptions', () => {
370
+ (0, vitest_1.it)('is fully optional', () => {
371
+ const empty = {};
372
+ assertType(empty);
373
+ (0, vitest_1.expect)(empty).toEqual({});
374
+ });
375
+ (0, vitest_1.it)('accepts all optional fields', () => {
376
+ const opts = {
377
+ claimSupportThreshold: 0.5,
378
+ chunkRelevanceThreshold: 0.4,
379
+ sentenceCoverageThreshold: 0.6,
380
+ ngramWeight: 0.6,
381
+ tfidfWeight: 0.4,
382
+ ngramSizes: [1, 2, 3],
383
+ ngramWeights: [0.5, 0.3, 0.2],
384
+ };
385
+ assertType(opts);
386
+ (0, vitest_1.expect)(opts.ngramSizes).toEqual([1, 2, 3]);
387
+ });
388
+ });
389
+ // ---------------------------------------------------------------------------
390
+ // EvaluateOptions
391
+ // ---------------------------------------------------------------------------
392
+ (0, vitest_1.describe)('EvaluateOptions', () => {
393
+ (0, vitest_1.it)('is fully optional', () => {
394
+ const opts = {};
395
+ assertType(opts);
396
+ (0, vitest_1.expect)(opts).toEqual({});
397
+ });
398
+ (0, vitest_1.it)('accepts mode, judge, thresholds, metricModes, compositeThreshold, compositeWeights, heuristic, promptOverrides', () => {
399
+ const judge = async (_prompt) => '{"supported": true}';
400
+ const opts = {
401
+ mode: 'hybrid',
402
+ judge,
403
+ thresholds: { faithfulness: 0.8 },
404
+ metricModes: { contextPrecision: 'llm', answerCorrectness: 'heuristic' },
405
+ compositeThreshold: 0.7,
406
+ compositeWeights: { faithfulness: 2.0, answerRelevance: 1.5 },
407
+ heuristic: { ngramSizes: [1, 2] },
408
+ promptOverrides: { faithfulness: 'Custom prompt for faithfulness' },
409
+ };
410
+ assertType(opts);
411
+ (0, vitest_1.expect)(opts.mode).toBe('hybrid');
412
+ (0, vitest_1.expect)(opts.compositeThreshold).toBe(0.7);
413
+ });
414
+ });
415
+ // ---------------------------------------------------------------------------
416
+ // BatchEvaluateOptions extends EvaluateOptions
417
+ // ---------------------------------------------------------------------------
418
+ (0, vitest_1.describe)('BatchEvaluateOptions', () => {
419
+ (0, vitest_1.it)('extends EvaluateOptions with concurrency, onProgress, baselineResult, regressionThreshold', () => {
420
+ const mockBaseline = {
421
+ results: [],
422
+ aggregates: {},
423
+ compositeAggregate: { mean: 0.8, median: 0.82, min: 0.5, max: 1.0, stdDev: 0.1, passRate: 0.9 },
424
+ passed: true,
425
+ totalCost: { llmCalls: 0, estimatedInputTokens: 0, estimatedOutputTokens: 0, parseFailures: 0 },
426
+ totalDurationMs: 5000,
427
+ evaluatedAt: '2026-01-01T00:00:00.000Z',
428
+ };
429
+ const opts = {
430
+ mode: 'heuristic',
431
+ concurrency: 8,
432
+ onProgress: (completed, total) => { void completed; void total; },
433
+ baselineResult: mockBaseline,
434
+ regressionThreshold: 0.05,
435
+ };
436
+ assertType(opts);
437
+ (0, vitest_1.expect)(opts.concurrency).toBe(8);
438
+ (0, vitest_1.expect)(opts.regressionThreshold).toBe(0.05);
439
+ (0, vitest_1.expect)(typeof opts.onProgress).toBe('function');
440
+ });
441
+ (0, vitest_1.it)('is fully optional', () => {
442
+ const opts = {};
443
+ assertType(opts);
444
+ (0, vitest_1.expect)(opts).toEqual({});
445
+ });
446
+ });
447
+ // ---------------------------------------------------------------------------
448
+ // EvaluatorConfig extends EvaluateOptions with optional metrics
449
+ // ---------------------------------------------------------------------------
450
+ (0, vitest_1.describe)('EvaluatorConfig', () => {
451
+ (0, vitest_1.it)('extends EvaluateOptions and adds optional metrics array', () => {
452
+ const config = {
453
+ mode: 'hybrid',
454
+ thresholds: { faithfulness: 0.8 },
455
+ metrics: ['faithfulness', 'answerRelevance', 'contextPrecision'],
456
+ };
457
+ assertType(config);
458
+ (0, vitest_1.expect)(config.metrics).toHaveLength(3);
459
+ (0, vitest_1.expect)(config.mode).toBe('hybrid');
460
+ });
461
+ (0, vitest_1.it)('is fully optional', () => {
462
+ const config = {};
463
+ assertType(config);
464
+ (0, vitest_1.expect)(config).toEqual({});
465
+ });
466
+ });
467
+ // ---------------------------------------------------------------------------
468
+ // Evaluator interface — can be mock-implemented
469
+ // ---------------------------------------------------------------------------
470
+ (0, vitest_1.describe)('Evaluator', () => {
471
+ (0, vitest_1.it)('can be mock-implemented with evaluate, evaluateBatch, and config', () => {
472
+ const mockEvalResult = {
473
+ sample: { question: 'Q?', answer: 'A.', contexts: [] },
474
+ metrics: {},
475
+ compositeScore: null,
476
+ passed: false,
477
+ cost: { llmCalls: 0, estimatedInputTokens: 0, estimatedOutputTokens: 0, parseFailures: 0 },
478
+ durationMs: 1,
479
+ evaluatedAt: '2026-03-21T00:00:00.000Z',
480
+ };
481
+ const mockBatchResult = {
482
+ results: [],
483
+ aggregates: {},
484
+ compositeAggregate: { mean: 0, median: 0, min: 0, max: 0, stdDev: 0, passRate: 0 },
485
+ passed: false,
486
+ totalCost: { llmCalls: 0, estimatedInputTokens: 0, estimatedOutputTokens: 0, parseFailures: 0 },
487
+ totalDurationMs: 0,
488
+ evaluatedAt: '2026-03-21T00:00:00.000Z',
489
+ };
490
+ const mockEvaluator = {
491
+ config: { mode: 'heuristic' },
492
+ evaluate: async (_sample, _metrics, _options) => mockEvalResult,
493
+ evaluateBatch: async (_samples, _metrics, _options) => mockBatchResult,
494
+ };
495
+ assertType(mockEvaluator);
496
+ (0, vitest_1.expect)(typeof mockEvaluator.evaluate).toBe('function');
497
+ (0, vitest_1.expect)(typeof mockEvaluator.evaluateBatch).toBe('function');
498
+ (0, vitest_1.expect)(mockEvaluator.config.mode).toBe('heuristic');
499
+ });
500
+ });
501
+ // ---------------------------------------------------------------------------
502
+ // JudgeFn
503
+ // ---------------------------------------------------------------------------
504
+ (0, vitest_1.describe)('JudgeFn', () => {
505
+ (0, vitest_1.it)('is a function that takes a string and returns Promise<string>', async () => {
506
+ const judge = async (prompt) => `Response to: ${prompt}`;
507
+ assertType(judge);
508
+ const result = await judge('test prompt');
509
+ (0, vitest_1.expect)(result).toBe('Response to: test prompt');
510
+ });
511
+ });
512
+ // ---------------------------------------------------------------------------
513
+ // PromptOverrides
514
+ // ---------------------------------------------------------------------------
515
+ (0, vitest_1.describe)('PromptOverrides', () => {
516
+ (0, vitest_1.it)('is a partial record of MetricId to string', () => {
517
+ const overrides = {
518
+ faithfulness: 'Custom faithfulness prompt',
519
+ contextPrecision: 'Custom context precision prompt',
520
+ };
521
+ assertType(overrides);
522
+ (0, vitest_1.expect)(overrides.faithfulness).toBe('Custom faithfulness prompt');
523
+ (0, vitest_1.expect)(overrides.answerRelevance).toBeUndefined();
524
+ });
525
+ (0, vitest_1.it)('can be empty', () => {
526
+ const overrides = {};
527
+ assertType(overrides);
528
+ (0, vitest_1.expect)(overrides).toEqual({});
529
+ });
530
+ });
531
+ //# sourceMappingURL=types.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../src/__tests__/types.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Core evaluate() and evaluateBatch() functions.
3
+ */
4
+ import type { MetricId, EvalSample, EvalResult, BatchEvalResult, EvaluateOptions, BatchEvaluateOptions } from './types';
5
+ /**
6
+ * Evaluate a single EvalSample against the requested metrics.
7
+ * Only heuristic mode is implemented; LLM/hybrid options are accepted but ignored.
8
+ */
9
+ export declare function evaluate(sample: EvalSample, metrics?: MetricId[], options?: EvaluateOptions): Promise<EvalResult>;
10
+ /**
11
+ * Evaluate a batch of EvalSamples with concurrency control.
12
+ */
13
+ export declare function evaluateBatch(samples: EvalSample[], metrics?: MetricId[], options?: BatchEvaluateOptions): Promise<BatchEvalResult>;
14
+ //# sourceMappingURL=evaluate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../src/evaluate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,eAAe,EAKf,eAAe,EACf,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAiBjB;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,QAAQ,EAAE,EACpB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,UAAU,CAAC,CA8DrB;AA8DD;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,UAAU,EAAE,EACrB,OAAO,CAAC,EAAE,QAAQ,EAAE,EACpB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,eAAe,CAAC,CA8E1B"}