@cogitator-ai/evals 0.12.0 → 0.13.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 (72) hide show
  1. package/README.md +75 -26
  2. package/dist/comparison-stats.d.ts +104 -0
  3. package/dist/comparison-stats.d.ts.map +1 -0
  4. package/dist/comparison-stats.js +179 -0
  5. package/dist/comparison-stats.js.map +1 -0
  6. package/dist/eval-comparison.d.ts +2 -51
  7. package/dist/eval-comparison.d.ts.map +1 -1
  8. package/dist/eval-comparison.js +12 -149
  9. package/dist/eval-comparison.js.map +1 -1
  10. package/dist/eval-suite.d.ts +33 -0
  11. package/dist/eval-suite.d.ts.map +1 -1
  12. package/dist/eval-suite.js +81 -2
  13. package/dist/eval-suite.js.map +1 -1
  14. package/dist/index.d.ts +5 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/metrics/types.d.ts +25 -0
  19. package/dist/metrics/types.d.ts.map +1 -1
  20. package/dist/metrics/types.js.map +1 -1
  21. package/dist/reporters/comparison.d.ts +24 -0
  22. package/dist/reporters/comparison.d.ts.map +1 -0
  23. package/dist/reporters/comparison.js +290 -0
  24. package/dist/reporters/comparison.js.map +1 -0
  25. package/dist/reporters/format.d.ts +21 -0
  26. package/dist/reporters/format.d.ts.map +1 -1
  27. package/dist/reporters/format.js +31 -0
  28. package/dist/reporters/format.js.map +1 -1
  29. package/dist/reporters/github.d.ts.map +1 -1
  30. package/dist/reporters/github.js +1 -16
  31. package/dist/reporters/github.js.map +1 -1
  32. package/dist/reporters/html-format.d.ts +11 -0
  33. package/dist/reporters/html-format.d.ts.map +1 -0
  34. package/dist/reporters/html-format.js +111 -0
  35. package/dist/reporters/html-format.js.map +1 -0
  36. package/dist/reporters/html.d.ts +12 -0
  37. package/dist/reporters/html.d.ts.map +1 -0
  38. package/dist/reporters/html.js +119 -0
  39. package/dist/reporters/html.js.map +1 -0
  40. package/dist/reporters/index.d.ts +20 -6
  41. package/dist/reporters/index.d.ts.map +1 -1
  42. package/dist/reporters/index.js +15 -4
  43. package/dist/reporters/index.js.map +1 -1
  44. package/dist/reporters/markdown.d.ts +15 -0
  45. package/dist/reporters/markdown.d.ts.map +1 -0
  46. package/dist/reporters/markdown.js +67 -0
  47. package/dist/reporters/markdown.js.map +1 -0
  48. package/dist/runs/compare.d.ts +103 -0
  49. package/dist/runs/compare.d.ts.map +1 -0
  50. package/dist/runs/compare.js +208 -0
  51. package/dist/runs/compare.js.map +1 -0
  52. package/dist/runs/index.d.ts +9 -0
  53. package/dist/runs/index.d.ts.map +1 -0
  54. package/dist/runs/index.js +5 -0
  55. package/dist/runs/index.js.map +1 -0
  56. package/dist/runs/json.d.ts +11 -0
  57. package/dist/runs/json.d.ts.map +1 -0
  58. package/dist/runs/json.js +58 -0
  59. package/dist/runs/json.js.map +1 -0
  60. package/dist/runs/run.d.ts +44 -0
  61. package/dist/runs/run.d.ts.map +1 -0
  62. package/dist/runs/run.js +136 -0
  63. package/dist/runs/run.js.map +1 -0
  64. package/dist/runs/schema.d.ts +504 -0
  65. package/dist/runs/schema.d.ts.map +1 -0
  66. package/dist/runs/schema.js +171 -0
  67. package/dist/runs/schema.js.map +1 -0
  68. package/dist/runs/store.d.ts +57 -0
  69. package/dist/runs/store.d.ts.map +1 -0
  70. package/dist/runs/store.js +146 -0
  71. package/dist/runs/store.js.map +1 -0
  72. package/package.json +1 -1
@@ -0,0 +1,504 @@
1
+ import { z } from 'zod';
2
+ /** The `format` every run file carries */
3
+ export declare const EVAL_RUN_FORMAT = "cogitator.eval-run";
4
+ /** The version of the run file format this package writes and reads */
5
+ export declare const EVAL_RUN_VERSION = 1;
6
+ export declare const RunPromptSchema: z.ZodObject<{
7
+ key: z.ZodString;
8
+ versionId: z.ZodOptional<z.ZodString>;
9
+ version: z.ZodOptional<z.ZodNumber>;
10
+ abTest: z.ZodOptional<z.ZodObject<{
11
+ id: z.ZodString;
12
+ variant: z.ZodEnum<{
13
+ control: "control";
14
+ treatment: "treatment";
15
+ }>;
16
+ }, z.core.$strip>>;
17
+ }, z.core.$strip>;
18
+ declare const RunCaseSchema: z.ZodObject<{
19
+ case: z.ZodObject<{
20
+ input: z.ZodString;
21
+ expected: z.ZodOptional<z.ZodString>;
22
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
23
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
24
+ turns: z.ZodOptional<z.ZodArray<z.ZodString>>;
25
+ expectedToolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
26
+ name: z.ZodString;
27
+ arguments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
28
+ }, z.core.$strip>>>;
29
+ expectedPassages: z.ZodOptional<z.ZodArray<z.ZodString>>;
30
+ }, z.core.$strip>;
31
+ output: z.ZodString;
32
+ duration: z.ZodNumber;
33
+ error: z.ZodOptional<z.ZodString>;
34
+ attempts: z.ZodOptional<z.ZodNumber>;
35
+ usage: z.ZodOptional<z.ZodObject<{
36
+ inputTokens: z.ZodNumber;
37
+ outputTokens: z.ZodNumber;
38
+ totalTokens: z.ZodNumber;
39
+ cost: z.ZodNumber;
40
+ duration: z.ZodNumber;
41
+ }, z.core.$strip>>;
42
+ toolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
43
+ id: z.ZodString;
44
+ name: z.ZodString;
45
+ arguments: z.ZodRecord<z.ZodString, z.ZodUnknown>;
46
+ }, z.core.$strip>>>;
47
+ toolResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
48
+ callId: z.ZodString;
49
+ name: z.ZodString;
50
+ result: z.ZodOptional<z.ZodUnknown>;
51
+ error: z.ZodOptional<z.ZodString>;
52
+ }, z.core.$strip>>>;
53
+ retrieved: z.ZodOptional<z.ZodArray<z.ZodObject<{
54
+ id: z.ZodOptional<z.ZodString>;
55
+ content: z.ZodString;
56
+ score: z.ZodOptional<z.ZodNumber>;
57
+ source: z.ZodOptional<z.ZodString>;
58
+ }, z.core.$strip>>>;
59
+ turns: z.ZodOptional<z.ZodArray<z.ZodObject<{
60
+ input: z.ZodString;
61
+ output: z.ZodString;
62
+ toolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
63
+ id: z.ZodString;
64
+ name: z.ZodString;
65
+ arguments: z.ZodRecord<z.ZodString, z.ZodUnknown>;
66
+ }, z.core.$strip>>>;
67
+ traceId: z.ZodOptional<z.ZodString>;
68
+ prompt: z.ZodOptional<z.ZodObject<{
69
+ key: z.ZodString;
70
+ versionId: z.ZodOptional<z.ZodString>;
71
+ version: z.ZodOptional<z.ZodNumber>;
72
+ abTest: z.ZodOptional<z.ZodObject<{
73
+ id: z.ZodString;
74
+ variant: z.ZodEnum<{
75
+ control: "control";
76
+ treatment: "treatment";
77
+ }>;
78
+ }, z.core.$strip>>;
79
+ }, z.core.$strip>>;
80
+ error: z.ZodOptional<z.ZodString>;
81
+ }, z.core.$strip>>>;
82
+ traceId: z.ZodOptional<z.ZodString>;
83
+ prompt: z.ZodOptional<z.ZodObject<{
84
+ key: z.ZodString;
85
+ versionId: z.ZodOptional<z.ZodString>;
86
+ version: z.ZodOptional<z.ZodNumber>;
87
+ abTest: z.ZodOptional<z.ZodObject<{
88
+ id: z.ZodString;
89
+ variant: z.ZodEnum<{
90
+ control: "control";
91
+ treatment: "treatment";
92
+ }>;
93
+ }, z.core.$strip>>;
94
+ }, z.core.$strip>>;
95
+ truncated: z.ZodOptional<z.ZodBoolean>;
96
+ iterationLimitReached: z.ZodOptional<z.ZodBoolean>;
97
+ paused: z.ZodOptional<z.ZodBoolean>;
98
+ scores: z.ZodArray<z.ZodObject<{
99
+ name: z.ZodString;
100
+ score: z.ZodNumber;
101
+ details: z.ZodOptional<z.ZodString>;
102
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
103
+ error: z.ZodOptional<z.ZodString>;
104
+ usage: z.ZodOptional<z.ZodObject<{
105
+ inputTokens: z.ZodNumber;
106
+ outputTokens: z.ZodNumber;
107
+ totalTokens: z.ZodNumber;
108
+ cost: z.ZodNumber;
109
+ }, z.core.$strip>>;
110
+ }, z.core.$strip>>;
111
+ caseKey: z.ZodString;
112
+ trials: z.ZodOptional<z.ZodArray<z.ZodObject<{
113
+ case: z.ZodObject<{
114
+ input: z.ZodString;
115
+ expected: z.ZodOptional<z.ZodString>;
116
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
117
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
118
+ turns: z.ZodOptional<z.ZodArray<z.ZodString>>;
119
+ expectedToolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
120
+ name: z.ZodString;
121
+ arguments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
122
+ }, z.core.$strip>>>;
123
+ expectedPassages: z.ZodOptional<z.ZodArray<z.ZodString>>;
124
+ }, z.core.$strip>;
125
+ output: z.ZodString;
126
+ duration: z.ZodNumber;
127
+ error: z.ZodOptional<z.ZodString>;
128
+ attempts: z.ZodOptional<z.ZodNumber>;
129
+ usage: z.ZodOptional<z.ZodObject<{
130
+ inputTokens: z.ZodNumber;
131
+ outputTokens: z.ZodNumber;
132
+ totalTokens: z.ZodNumber;
133
+ cost: z.ZodNumber;
134
+ duration: z.ZodNumber;
135
+ }, z.core.$strip>>;
136
+ toolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
137
+ id: z.ZodString;
138
+ name: z.ZodString;
139
+ arguments: z.ZodRecord<z.ZodString, z.ZodUnknown>;
140
+ }, z.core.$strip>>>;
141
+ toolResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
142
+ callId: z.ZodString;
143
+ name: z.ZodString;
144
+ result: z.ZodOptional<z.ZodUnknown>;
145
+ error: z.ZodOptional<z.ZodString>;
146
+ }, z.core.$strip>>>;
147
+ retrieved: z.ZodOptional<z.ZodArray<z.ZodObject<{
148
+ id: z.ZodOptional<z.ZodString>;
149
+ content: z.ZodString;
150
+ score: z.ZodOptional<z.ZodNumber>;
151
+ source: z.ZodOptional<z.ZodString>;
152
+ }, z.core.$strip>>>;
153
+ turns: z.ZodOptional<z.ZodArray<z.ZodObject<{
154
+ input: z.ZodString;
155
+ output: z.ZodString;
156
+ toolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
157
+ id: z.ZodString;
158
+ name: z.ZodString;
159
+ arguments: z.ZodRecord<z.ZodString, z.ZodUnknown>;
160
+ }, z.core.$strip>>>;
161
+ traceId: z.ZodOptional<z.ZodString>;
162
+ prompt: z.ZodOptional<z.ZodObject<{
163
+ key: z.ZodString;
164
+ versionId: z.ZodOptional<z.ZodString>;
165
+ version: z.ZodOptional<z.ZodNumber>;
166
+ abTest: z.ZodOptional<z.ZodObject<{
167
+ id: z.ZodString;
168
+ variant: z.ZodEnum<{
169
+ control: "control";
170
+ treatment: "treatment";
171
+ }>;
172
+ }, z.core.$strip>>;
173
+ }, z.core.$strip>>;
174
+ error: z.ZodOptional<z.ZodString>;
175
+ }, z.core.$strip>>>;
176
+ traceId: z.ZodOptional<z.ZodString>;
177
+ prompt: z.ZodOptional<z.ZodObject<{
178
+ key: z.ZodString;
179
+ versionId: z.ZodOptional<z.ZodString>;
180
+ version: z.ZodOptional<z.ZodNumber>;
181
+ abTest: z.ZodOptional<z.ZodObject<{
182
+ id: z.ZodString;
183
+ variant: z.ZodEnum<{
184
+ control: "control";
185
+ treatment: "treatment";
186
+ }>;
187
+ }, z.core.$strip>>;
188
+ }, z.core.$strip>>;
189
+ truncated: z.ZodOptional<z.ZodBoolean>;
190
+ iterationLimitReached: z.ZodOptional<z.ZodBoolean>;
191
+ paused: z.ZodOptional<z.ZodBoolean>;
192
+ scores: z.ZodArray<z.ZodObject<{
193
+ name: z.ZodString;
194
+ score: z.ZodNumber;
195
+ details: z.ZodOptional<z.ZodString>;
196
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
197
+ error: z.ZodOptional<z.ZodString>;
198
+ usage: z.ZodOptional<z.ZodObject<{
199
+ inputTokens: z.ZodNumber;
200
+ outputTokens: z.ZodNumber;
201
+ totalTokens: z.ZodNumber;
202
+ cost: z.ZodNumber;
203
+ }, z.core.$strip>>;
204
+ }, z.core.$strip>>;
205
+ }, z.core.$strip>>>;
206
+ }, z.core.$strip>;
207
+ declare const RunConfigSchema: z.ZodObject<{
208
+ metrics: z.ZodArray<z.ZodString>;
209
+ statisticalMetrics: z.ZodArray<z.ZodString>;
210
+ judge: z.ZodOptional<z.ZodObject<{
211
+ model: z.ZodString;
212
+ temperature: z.ZodNumber;
213
+ samples: z.ZodOptional<z.ZodNumber>;
214
+ }, z.core.$strip>>;
215
+ trials: z.ZodNumber;
216
+ concurrency: z.ZodNumber;
217
+ target: z.ZodObject<{
218
+ kind: z.ZodEnum<{
219
+ fn: "fn";
220
+ agent: "agent";
221
+ }>;
222
+ name: z.ZodOptional<z.ZodString>;
223
+ model: z.ZodOptional<z.ZodString>;
224
+ }, z.core.$strip>;
225
+ }, z.core.$strip>;
226
+ /** JSON-serializable metadata: object keys holding `undefined` are dropped, as JSON drops them */
227
+ export declare const JsonMetadataSchema: z.ZodPreprocess<z.ZodRecord<z.ZodString, z.ZodJSONSchema>, unknown>;
228
+ export declare const EvalRunSchema: z.ZodObject<{
229
+ format: z.ZodLiteral<"cogitator.eval-run">;
230
+ version: z.ZodLiteral<1>;
231
+ runId: z.ZodString;
232
+ startedAt: z.ZodISODateTime;
233
+ finishedAt: z.ZodISODateTime;
234
+ name: z.ZodOptional<z.ZodString>;
235
+ metadata: z.ZodOptional<z.ZodPreprocess<z.ZodRecord<z.ZodString, z.ZodJSONSchema>, unknown>>;
236
+ dataset: z.ZodObject<{
237
+ fingerprint: z.ZodString;
238
+ cases: z.ZodNumber;
239
+ }, z.core.$strip>;
240
+ config: z.ZodObject<{
241
+ metrics: z.ZodArray<z.ZodString>;
242
+ statisticalMetrics: z.ZodArray<z.ZodString>;
243
+ judge: z.ZodOptional<z.ZodObject<{
244
+ model: z.ZodString;
245
+ temperature: z.ZodNumber;
246
+ samples: z.ZodOptional<z.ZodNumber>;
247
+ }, z.core.$strip>>;
248
+ trials: z.ZodNumber;
249
+ concurrency: z.ZodNumber;
250
+ target: z.ZodObject<{
251
+ kind: z.ZodEnum<{
252
+ fn: "fn";
253
+ agent: "agent";
254
+ }>;
255
+ name: z.ZodOptional<z.ZodString>;
256
+ model: z.ZodOptional<z.ZodString>;
257
+ }, z.core.$strip>;
258
+ }, z.core.$strip>;
259
+ prompts: z.ZodArray<z.ZodObject<{
260
+ key: z.ZodString;
261
+ versionId: z.ZodOptional<z.ZodString>;
262
+ version: z.ZodOptional<z.ZodNumber>;
263
+ abTest: z.ZodOptional<z.ZodObject<{
264
+ id: z.ZodString;
265
+ variant: z.ZodEnum<{
266
+ control: "control";
267
+ treatment: "treatment";
268
+ }>;
269
+ }, z.core.$strip>>;
270
+ }, z.core.$strip>>;
271
+ results: z.ZodArray<z.ZodObject<{
272
+ case: z.ZodObject<{
273
+ input: z.ZodString;
274
+ expected: z.ZodOptional<z.ZodString>;
275
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
276
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
277
+ turns: z.ZodOptional<z.ZodArray<z.ZodString>>;
278
+ expectedToolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
279
+ name: z.ZodString;
280
+ arguments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
281
+ }, z.core.$strip>>>;
282
+ expectedPassages: z.ZodOptional<z.ZodArray<z.ZodString>>;
283
+ }, z.core.$strip>;
284
+ output: z.ZodString;
285
+ duration: z.ZodNumber;
286
+ error: z.ZodOptional<z.ZodString>;
287
+ attempts: z.ZodOptional<z.ZodNumber>;
288
+ usage: z.ZodOptional<z.ZodObject<{
289
+ inputTokens: z.ZodNumber;
290
+ outputTokens: z.ZodNumber;
291
+ totalTokens: z.ZodNumber;
292
+ cost: z.ZodNumber;
293
+ duration: z.ZodNumber;
294
+ }, z.core.$strip>>;
295
+ toolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
296
+ id: z.ZodString;
297
+ name: z.ZodString;
298
+ arguments: z.ZodRecord<z.ZodString, z.ZodUnknown>;
299
+ }, z.core.$strip>>>;
300
+ toolResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
301
+ callId: z.ZodString;
302
+ name: z.ZodString;
303
+ result: z.ZodOptional<z.ZodUnknown>;
304
+ error: z.ZodOptional<z.ZodString>;
305
+ }, z.core.$strip>>>;
306
+ retrieved: z.ZodOptional<z.ZodArray<z.ZodObject<{
307
+ id: z.ZodOptional<z.ZodString>;
308
+ content: z.ZodString;
309
+ score: z.ZodOptional<z.ZodNumber>;
310
+ source: z.ZodOptional<z.ZodString>;
311
+ }, z.core.$strip>>>;
312
+ turns: z.ZodOptional<z.ZodArray<z.ZodObject<{
313
+ input: z.ZodString;
314
+ output: z.ZodString;
315
+ toolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
316
+ id: z.ZodString;
317
+ name: z.ZodString;
318
+ arguments: z.ZodRecord<z.ZodString, z.ZodUnknown>;
319
+ }, z.core.$strip>>>;
320
+ traceId: z.ZodOptional<z.ZodString>;
321
+ prompt: z.ZodOptional<z.ZodObject<{
322
+ key: z.ZodString;
323
+ versionId: z.ZodOptional<z.ZodString>;
324
+ version: z.ZodOptional<z.ZodNumber>;
325
+ abTest: z.ZodOptional<z.ZodObject<{
326
+ id: z.ZodString;
327
+ variant: z.ZodEnum<{
328
+ control: "control";
329
+ treatment: "treatment";
330
+ }>;
331
+ }, z.core.$strip>>;
332
+ }, z.core.$strip>>;
333
+ error: z.ZodOptional<z.ZodString>;
334
+ }, z.core.$strip>>>;
335
+ traceId: z.ZodOptional<z.ZodString>;
336
+ prompt: z.ZodOptional<z.ZodObject<{
337
+ key: z.ZodString;
338
+ versionId: z.ZodOptional<z.ZodString>;
339
+ version: z.ZodOptional<z.ZodNumber>;
340
+ abTest: z.ZodOptional<z.ZodObject<{
341
+ id: z.ZodString;
342
+ variant: z.ZodEnum<{
343
+ control: "control";
344
+ treatment: "treatment";
345
+ }>;
346
+ }, z.core.$strip>>;
347
+ }, z.core.$strip>>;
348
+ truncated: z.ZodOptional<z.ZodBoolean>;
349
+ iterationLimitReached: z.ZodOptional<z.ZodBoolean>;
350
+ paused: z.ZodOptional<z.ZodBoolean>;
351
+ scores: z.ZodArray<z.ZodObject<{
352
+ name: z.ZodString;
353
+ score: z.ZodNumber;
354
+ details: z.ZodOptional<z.ZodString>;
355
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
356
+ error: z.ZodOptional<z.ZodString>;
357
+ usage: z.ZodOptional<z.ZodObject<{
358
+ inputTokens: z.ZodNumber;
359
+ outputTokens: z.ZodNumber;
360
+ totalTokens: z.ZodNumber;
361
+ cost: z.ZodNumber;
362
+ }, z.core.$strip>>;
363
+ }, z.core.$strip>>;
364
+ caseKey: z.ZodString;
365
+ trials: z.ZodOptional<z.ZodArray<z.ZodObject<{
366
+ case: z.ZodObject<{
367
+ input: z.ZodString;
368
+ expected: z.ZodOptional<z.ZodString>;
369
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
370
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
371
+ turns: z.ZodOptional<z.ZodArray<z.ZodString>>;
372
+ expectedToolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
373
+ name: z.ZodString;
374
+ arguments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
375
+ }, z.core.$strip>>>;
376
+ expectedPassages: z.ZodOptional<z.ZodArray<z.ZodString>>;
377
+ }, z.core.$strip>;
378
+ output: z.ZodString;
379
+ duration: z.ZodNumber;
380
+ error: z.ZodOptional<z.ZodString>;
381
+ attempts: z.ZodOptional<z.ZodNumber>;
382
+ usage: z.ZodOptional<z.ZodObject<{
383
+ inputTokens: z.ZodNumber;
384
+ outputTokens: z.ZodNumber;
385
+ totalTokens: z.ZodNumber;
386
+ cost: z.ZodNumber;
387
+ duration: z.ZodNumber;
388
+ }, z.core.$strip>>;
389
+ toolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
390
+ id: z.ZodString;
391
+ name: z.ZodString;
392
+ arguments: z.ZodRecord<z.ZodString, z.ZodUnknown>;
393
+ }, z.core.$strip>>>;
394
+ toolResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
395
+ callId: z.ZodString;
396
+ name: z.ZodString;
397
+ result: z.ZodOptional<z.ZodUnknown>;
398
+ error: z.ZodOptional<z.ZodString>;
399
+ }, z.core.$strip>>>;
400
+ retrieved: z.ZodOptional<z.ZodArray<z.ZodObject<{
401
+ id: z.ZodOptional<z.ZodString>;
402
+ content: z.ZodString;
403
+ score: z.ZodOptional<z.ZodNumber>;
404
+ source: z.ZodOptional<z.ZodString>;
405
+ }, z.core.$strip>>>;
406
+ turns: z.ZodOptional<z.ZodArray<z.ZodObject<{
407
+ input: z.ZodString;
408
+ output: z.ZodString;
409
+ toolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
410
+ id: z.ZodString;
411
+ name: z.ZodString;
412
+ arguments: z.ZodRecord<z.ZodString, z.ZodUnknown>;
413
+ }, z.core.$strip>>>;
414
+ traceId: z.ZodOptional<z.ZodString>;
415
+ prompt: z.ZodOptional<z.ZodObject<{
416
+ key: z.ZodString;
417
+ versionId: z.ZodOptional<z.ZodString>;
418
+ version: z.ZodOptional<z.ZodNumber>;
419
+ abTest: z.ZodOptional<z.ZodObject<{
420
+ id: z.ZodString;
421
+ variant: z.ZodEnum<{
422
+ control: "control";
423
+ treatment: "treatment";
424
+ }>;
425
+ }, z.core.$strip>>;
426
+ }, z.core.$strip>>;
427
+ error: z.ZodOptional<z.ZodString>;
428
+ }, z.core.$strip>>>;
429
+ traceId: z.ZodOptional<z.ZodString>;
430
+ prompt: z.ZodOptional<z.ZodObject<{
431
+ key: z.ZodString;
432
+ versionId: z.ZodOptional<z.ZodString>;
433
+ version: z.ZodOptional<z.ZodNumber>;
434
+ abTest: z.ZodOptional<z.ZodObject<{
435
+ id: z.ZodString;
436
+ variant: z.ZodEnum<{
437
+ control: "control";
438
+ treatment: "treatment";
439
+ }>;
440
+ }, z.core.$strip>>;
441
+ }, z.core.$strip>>;
442
+ truncated: z.ZodOptional<z.ZodBoolean>;
443
+ iterationLimitReached: z.ZodOptional<z.ZodBoolean>;
444
+ paused: z.ZodOptional<z.ZodBoolean>;
445
+ scores: z.ZodArray<z.ZodObject<{
446
+ name: z.ZodString;
447
+ score: z.ZodNumber;
448
+ details: z.ZodOptional<z.ZodString>;
449
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
450
+ error: z.ZodOptional<z.ZodString>;
451
+ usage: z.ZodOptional<z.ZodObject<{
452
+ inputTokens: z.ZodNumber;
453
+ outputTokens: z.ZodNumber;
454
+ totalTokens: z.ZodNumber;
455
+ cost: z.ZodNumber;
456
+ }, z.core.$strip>>;
457
+ }, z.core.$strip>>;
458
+ }, z.core.$strip>>>;
459
+ }, z.core.$strip>>;
460
+ aggregated: z.ZodRecord<z.ZodString, z.ZodObject<{
461
+ name: z.ZodString;
462
+ mean: z.ZodPipe<z.ZodNullable<z.ZodNumber>, z.ZodTransform<number, number | null>>;
463
+ median: z.ZodPipe<z.ZodNullable<z.ZodNumber>, z.ZodTransform<number, number | null>>;
464
+ min: z.ZodPipe<z.ZodNullable<z.ZodNumber>, z.ZodTransform<number, number | null>>;
465
+ max: z.ZodPipe<z.ZodNullable<z.ZodNumber>, z.ZodTransform<number, number | null>>;
466
+ stdDev: z.ZodPipe<z.ZodNullable<z.ZodNumber>, z.ZodTransform<number, number | null>>;
467
+ p50: z.ZodPipe<z.ZodNullable<z.ZodNumber>, z.ZodTransform<number, number | null>>;
468
+ p95: z.ZodPipe<z.ZodNullable<z.ZodNumber>, z.ZodTransform<number, number | null>>;
469
+ p99: z.ZodPipe<z.ZodNullable<z.ZodNumber>, z.ZodTransform<number, number | null>>;
470
+ count: z.ZodOptional<z.ZodNumber>;
471
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
472
+ }, z.core.$strip>>;
473
+ assertions: z.ZodArray<z.ZodObject<{
474
+ name: z.ZodString;
475
+ passed: z.ZodBoolean;
476
+ message: z.ZodString;
477
+ actual: z.ZodOptional<z.ZodPipe<z.ZodNullable<z.ZodNumber>, z.ZodTransform<number, number | null>>>;
478
+ expected: z.ZodOptional<z.ZodPipe<z.ZodNullable<z.ZodNumber>, z.ZodTransform<number, number | null>>>;
479
+ }, z.core.$strip>>;
480
+ stats: z.ZodObject<{
481
+ total: z.ZodNumber;
482
+ errors: z.ZodNumber;
483
+ metricErrors: z.ZodNumber;
484
+ duration: z.ZodNumber;
485
+ cost: z.ZodNumber;
486
+ targetCost: z.ZodNumber;
487
+ judgeCost: z.ZodNumber;
488
+ }, z.core.$strip>;
489
+ }, z.core.$strip>;
490
+ /** A saved suite run, as `loadRun()` returns it */
491
+ export type EvalRun = z.output<typeof EvalRunSchema>;
492
+ /** A case result of a saved run, with its `caseKey` */
493
+ export type EvalRunCase = z.output<typeof RunCaseSchema>;
494
+ /** What a saved run records of the suite's configuration */
495
+ export type EvalRunConfig = z.output<typeof RunConfigSchema>;
496
+ /** JSON-serializable metadata of an experiment */
497
+ export type JsonMetadata = z.output<typeof JsonMetadataSchema>;
498
+ /** The options of a suite that describe the experiment it runs */
499
+ export declare const ExperimentOptionsSchema: z.ZodObject<{
500
+ name: z.ZodOptional<z.ZodString>;
501
+ metadata: z.ZodOptional<z.ZodPreprocess<z.ZodRecord<z.ZodString, z.ZodJSONSchema>, unknown>>;
502
+ }, z.core.$strip>;
503
+ export {};
504
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/runs/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,0CAA0C;AAC1C,eAAO,MAAM,eAAe,uBAAuB,CAAC;AAEpD,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAQlC,eAAO,MAAM,eAAe;;;;;;;;;;;iBAK1B,CAAC;AAsEH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIjB,CAAC;AAEH,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;iBAmBnB,CAAC;AAkCH,kGAAkG;AAClG,eAAO,MAAM,kBAAkB,qEAAiE,CAAC;AAejG,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoBxB,CAAC;AAEH,mDAAmD;AACnD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AACrD,uDAAuD;AACvD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AACzD,4DAA4D;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAC7D,kDAAkD;AAClD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE/D,kEAAkE;AAClE,eAAO,MAAM,uBAAuB;;;iBAGlC,CAAC"}
@@ -0,0 +1,171 @@
1
+ import { z } from 'zod';
2
+ import { EvalCaseSchema } from '../schema.js';
3
+ /** The `format` every run file carries */
4
+ export const EVAL_RUN_FORMAT = 'cogitator.eval-run';
5
+ /** The version of the run file format this package writes and reads */
6
+ export const EVAL_RUN_VERSION = 1;
7
+ /** A figure JSON writes as `null` when it is not a finite number, such as an unscored mean */
8
+ const figure = z
9
+ .number()
10
+ .nullable()
11
+ .transform((value) => value ?? Number.NaN);
12
+ export const RunPromptSchema = z.object({
13
+ key: z.string().min(1),
14
+ versionId: z.string().optional(),
15
+ version: z.number().optional(),
16
+ abTest: z.object({ id: z.string(), variant: z.enum(['control', 'treatment']) }).optional(),
17
+ });
18
+ const UsageSchema = z.object({
19
+ inputTokens: z.number(),
20
+ outputTokens: z.number(),
21
+ totalTokens: z.number(),
22
+ cost: z.number(),
23
+ });
24
+ const ScoreSchema = z.object({
25
+ name: z.string(),
26
+ score: z.number(),
27
+ details: z.string().optional(),
28
+ metadata: z.record(z.string(), z.unknown()).optional(),
29
+ error: z.string().optional(),
30
+ usage: UsageSchema.optional(),
31
+ });
32
+ const ToolCallSchema = z.object({
33
+ id: z.string(),
34
+ name: z.string(),
35
+ arguments: z.record(z.string(), z.unknown()),
36
+ });
37
+ const TurnSchema = z.object({
38
+ input: z.string(),
39
+ output: z.string(),
40
+ toolCalls: z.array(ToolCallSchema).optional(),
41
+ traceId: z.string().optional(),
42
+ prompt: RunPromptSchema.optional(),
43
+ error: z.string().optional(),
44
+ });
45
+ const CaseResultSchema = z.object({
46
+ case: EvalCaseSchema,
47
+ output: z.string(),
48
+ duration: z.number(),
49
+ error: z.string().optional(),
50
+ attempts: z.number().int().optional(),
51
+ usage: UsageSchema.extend({ duration: z.number() }).optional(),
52
+ toolCalls: z.array(ToolCallSchema).optional(),
53
+ toolResults: z
54
+ .array(z.object({
55
+ callId: z.string(),
56
+ name: z.string(),
57
+ result: z.unknown().optional(),
58
+ error: z.string().optional(),
59
+ }))
60
+ .optional(),
61
+ retrieved: z
62
+ .array(z.object({
63
+ id: z.string().optional(),
64
+ content: z.string(),
65
+ score: z.number().optional(),
66
+ source: z.string().optional(),
67
+ }))
68
+ .optional(),
69
+ turns: z.array(TurnSchema).optional(),
70
+ traceId: z.string().optional(),
71
+ prompt: RunPromptSchema.optional(),
72
+ truncated: z.boolean().optional(),
73
+ iterationLimitReached: z.boolean().optional(),
74
+ paused: z.boolean().optional(),
75
+ scores: z.array(ScoreSchema),
76
+ });
77
+ const RunCaseSchema = CaseResultSchema.extend({
78
+ /** SHA-256 of the canonical JSON of the case's `{ input, turns, expected }` */
79
+ caseKey: z.string().regex(/^[0-9a-f]{64}$/),
80
+ trials: z.array(CaseResultSchema).optional(),
81
+ });
82
+ const RunConfigSchema = z.object({
83
+ metrics: z.array(z.string()),
84
+ statisticalMetrics: z.array(z.string()),
85
+ judge: z
86
+ .object({
87
+ model: z.string(),
88
+ temperature: z.number(),
89
+ samples: z.number().int().positive().optional(),
90
+ })
91
+ .optional(),
92
+ trials: z.number().int().min(1),
93
+ concurrency: z.number().int().min(1),
94
+ target: z.object({
95
+ kind: z.enum(['fn', 'agent']),
96
+ /** The agent's name, for an agent target */
97
+ name: z.string().optional(),
98
+ /** The agent's model, for an agent target that sets one */
99
+ model: z.string().optional(),
100
+ }),
101
+ });
102
+ const AggregatedSchema = z.object({
103
+ name: z.string(),
104
+ mean: figure,
105
+ median: figure,
106
+ min: figure,
107
+ max: figure,
108
+ stdDev: figure,
109
+ p50: figure,
110
+ p95: figure,
111
+ p99: figure,
112
+ count: z.number().int().optional(),
113
+ metadata: z.record(z.string(), z.unknown()).optional(),
114
+ });
115
+ const AssertionSchema = z.object({
116
+ name: z.string(),
117
+ passed: z.boolean(),
118
+ message: z.string(),
119
+ actual: figure.optional(),
120
+ expected: figure.optional(),
121
+ });
122
+ const StatsSchema = z.object({
123
+ total: z.number().int(),
124
+ errors: z.number().int(),
125
+ metricErrors: z.number().int(),
126
+ duration: z.number(),
127
+ cost: z.number(),
128
+ targetCost: z.number(),
129
+ judgeCost: z.number(),
130
+ });
131
+ /** JSON-serializable metadata: object keys holding `undefined` are dropped, as JSON drops them */
132
+ export const JsonMetadataSchema = z.preprocess(withoutUndefined, z.record(z.string(), z.json()));
133
+ function withoutUndefined(value) {
134
+ if (Array.isArray(value))
135
+ return value.map(withoutUndefined);
136
+ if (typeof value !== 'object' || value === null)
137
+ return value;
138
+ if (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) {
139
+ return value;
140
+ }
141
+ return Object.fromEntries(Object.entries(value)
142
+ .filter(([, item]) => item !== undefined)
143
+ .map(([key, item]) => [key, withoutUndefined(item)]));
144
+ }
145
+ export const EvalRunSchema = z.object({
146
+ format: z.literal(EVAL_RUN_FORMAT),
147
+ version: z.literal(EVAL_RUN_VERSION),
148
+ runId: z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/),
149
+ startedAt: z.iso.datetime(),
150
+ finishedAt: z.iso.datetime(),
151
+ name: z.string().optional(),
152
+ metadata: JsonMetadataSchema.optional(),
153
+ dataset: z.object({
154
+ /** SHA-256 of the canonical JSON of the cases run, in order */
155
+ fingerprint: z.string().regex(/^[0-9a-f]{64}$/),
156
+ cases: z.number().int().min(0),
157
+ }),
158
+ config: RunConfigSchema,
159
+ /** The distinct versioned instructions the agent runs used */
160
+ prompts: z.array(RunPromptSchema),
161
+ results: z.array(RunCaseSchema),
162
+ aggregated: z.record(z.string(), AggregatedSchema),
163
+ assertions: z.array(AssertionSchema),
164
+ stats: StatsSchema,
165
+ });
166
+ /** The options of a suite that describe the experiment it runs */
167
+ export const ExperimentOptionsSchema = z.object({
168
+ name: z.string().trim().min(1, 'name must not be empty').optional(),
169
+ metadata: JsonMetadataSchema.optional(),
170
+ });
171
+ //# sourceMappingURL=schema.js.map