@sanity/ailf 3.5.1 → 3.6.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.
@@ -32,15 +32,14 @@ export type CuratedAssertionType = (typeof CURATED_ASSERTION_TYPES)[number];
32
32
  export declare const RUBRIC_TEMPLATE_NAMES: readonly ["task-completion", "code-correctness", "doc-coverage", "mcp-input-validation", "mcp-output-correctness", "mcp-error-handling", "mcp-security", "factual-correctness", "completeness", "currency", "process-quality", "agent-output", "agent-tool-usage"];
33
33
  export type RubricTemplateName = (typeof RUBRIC_TEMPLATE_NAMES)[number];
34
34
  /**
35
- * Zod schema for a single task definition using canonical field names.
35
+ * Zod schema for a single task definition a mode-discriminated union
36
+ * mirroring `GeneralizedTaskDefinition`.
36
37
  *
37
- * Uses .passthrough() to allow mode-specific fields (serverConfig, sandbox,
38
- * handler, etc.) without listing every possible field. Mode-specific
39
- * validation is deferred to the pipeline's mode handlers.
38
+ * Unknown keys are rejected on each variant. Invalid modes are rejected
39
+ * by the discriminator itself.
40
40
  */
41
- export declare const CanonicalTaskSchema: z.ZodObject<{
41
+ export declare const CanonicalTaskSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
42
42
  id: z.ZodString;
43
- mode: z.ZodDefault<z.ZodString>;
44
43
  title: z.ZodString;
45
44
  description: z.ZodOptional<z.ZodString>;
46
45
  area: z.ZodOptional<z.ZodString>;
@@ -49,19 +48,864 @@ export declare const CanonicalTaskSchema: z.ZodObject<{
49
48
  intermediate: "intermediate";
50
49
  advanced: "advanced";
51
50
  }>>;
51
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
52
+ status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
53
+ active: "active";
54
+ draft: "draft";
55
+ paused: "paused";
56
+ archived: "archived";
57
+ }>>>;
58
+ assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
59
+ type: z.ZodLiteral<"llm-rubric">;
60
+ template: z.ZodEnum<{
61
+ "task-completion": "task-completion";
62
+ "code-correctness": "code-correctness";
63
+ "doc-coverage": "doc-coverage";
64
+ "mcp-input-validation": "mcp-input-validation";
65
+ "mcp-output-correctness": "mcp-output-correctness";
66
+ "mcp-error-handling": "mcp-error-handling";
67
+ "mcp-security": "mcp-security";
68
+ "factual-correctness": "factual-correctness";
69
+ completeness: "completeness";
70
+ currency: "currency";
71
+ "process-quality": "process-quality";
72
+ "agent-output": "agent-output";
73
+ "agent-tool-usage": "agent-tool-usage";
74
+ }>;
75
+ criteria: z.ZodArray<z.ZodString>;
76
+ weight: z.ZodOptional<z.ZodNumber>;
77
+ }, z.core.$strip>, z.ZodObject<{
78
+ type: z.ZodEnum<{
79
+ "llm-rubric": "llm-rubric";
80
+ contains: "contains";
81
+ "contains-any": "contains-any";
82
+ "contains-all": "contains-all";
83
+ "not-contains": "not-contains";
84
+ icontains: "icontains";
85
+ "icontains-any": "icontains-any";
86
+ regex: "regex";
87
+ javascript: "javascript";
88
+ similar: "similar";
89
+ cost: "cost";
90
+ latency: "latency";
91
+ "file-exists": "file-exists";
92
+ "file-contains": "file-contains";
93
+ "command-succeeds": "command-succeeds";
94
+ "diff-matches": "diff-matches";
95
+ }>;
96
+ value: z.ZodOptional<z.ZodUnknown>;
97
+ threshold: z.ZodOptional<z.ZodNumber>;
98
+ weight: z.ZodOptional<z.ZodNumber>;
99
+ }, z.core.$loose>]>>>;
100
+ rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
101
+ ref: z.ZodString;
102
+ }, z.core.$strip>, z.ZodObject<{
103
+ inline: z.ZodString;
104
+ dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
105
+ key: z.ZodString;
106
+ weight: z.ZodNumber;
107
+ }, z.core.$strip>>>;
108
+ }, z.core.$strip>]>>;
109
+ providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
110
+ id: z.ZodString;
111
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
112
+ }, z.core.$strip>>>;
113
+ options: z.ZodOptional<z.ZodObject<{
114
+ timeout: z.ZodOptional<z.ZodNumber>;
115
+ cache: z.ZodOptional<z.ZodBoolean>;
116
+ transformOutput: z.ZodOptional<z.ZodString>;
117
+ promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
118
+ }, z.core.$strip>>;
119
+ prompt: z.ZodOptional<z.ZodObject<{
120
+ template: z.ZodOptional<z.ZodString>;
121
+ text: z.ZodOptional<z.ZodString>;
122
+ systemMessage: z.ZodOptional<z.ZodString>;
123
+ vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
124
+ }, z.core.$strip>>;
125
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
126
+ mode: z.ZodLiteral<"literacy">;
127
+ context: z.ZodOptional<z.ZodObject<{
128
+ docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
129
+ id: z.ZodString;
130
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
131
+ slug: z.ZodOptional<z.ZodString>;
132
+ path: z.ZodOptional<z.ZodString>;
133
+ }, z.core.$strip>, z.ZodObject<{
134
+ slug: z.ZodString;
135
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
136
+ }, z.core.$strip>, z.ZodObject<{
137
+ path: z.ZodString;
138
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
139
+ }, z.core.$strip>, z.ZodObject<{
140
+ perspective: z.ZodString;
141
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
142
+ }, z.core.$strip>]>>>;
143
+ fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
144
+ }, z.core.$strip>>;
145
+ referenceSolution: z.ZodOptional<z.ZodString>;
146
+ docCoverage: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
147
+ baseline: z.ZodOptional<z.ZodObject<{
148
+ enabled: z.ZodOptional<z.ZodBoolean>;
149
+ rubric: z.ZodOptional<z.ZodEnum<{
150
+ full: "full";
151
+ abbreviated: "abbreviated";
152
+ none: "none";
153
+ }>>;
154
+ }, z.core.$strip>>;
155
+ }, z.core.$strict>, z.ZodObject<{
156
+ id: z.ZodString;
157
+ title: z.ZodString;
158
+ description: z.ZodOptional<z.ZodString>;
159
+ area: z.ZodOptional<z.ZodString>;
160
+ difficulty: z.ZodOptional<z.ZodEnum<{
161
+ basic: "basic";
162
+ intermediate: "intermediate";
163
+ advanced: "advanced";
164
+ }>>;
165
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
166
+ status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
167
+ active: "active";
168
+ draft: "draft";
169
+ paused: "paused";
170
+ archived: "archived";
171
+ }>>>;
172
+ assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
173
+ type: z.ZodLiteral<"llm-rubric">;
174
+ template: z.ZodEnum<{
175
+ "task-completion": "task-completion";
176
+ "code-correctness": "code-correctness";
177
+ "doc-coverage": "doc-coverage";
178
+ "mcp-input-validation": "mcp-input-validation";
179
+ "mcp-output-correctness": "mcp-output-correctness";
180
+ "mcp-error-handling": "mcp-error-handling";
181
+ "mcp-security": "mcp-security";
182
+ "factual-correctness": "factual-correctness";
183
+ completeness: "completeness";
184
+ currency: "currency";
185
+ "process-quality": "process-quality";
186
+ "agent-output": "agent-output";
187
+ "agent-tool-usage": "agent-tool-usage";
188
+ }>;
189
+ criteria: z.ZodArray<z.ZodString>;
190
+ weight: z.ZodOptional<z.ZodNumber>;
191
+ }, z.core.$strip>, z.ZodObject<{
192
+ type: z.ZodEnum<{
193
+ "llm-rubric": "llm-rubric";
194
+ contains: "contains";
195
+ "contains-any": "contains-any";
196
+ "contains-all": "contains-all";
197
+ "not-contains": "not-contains";
198
+ icontains: "icontains";
199
+ "icontains-any": "icontains-any";
200
+ regex: "regex";
201
+ javascript: "javascript";
202
+ similar: "similar";
203
+ cost: "cost";
204
+ latency: "latency";
205
+ "file-exists": "file-exists";
206
+ "file-contains": "file-contains";
207
+ "command-succeeds": "command-succeeds";
208
+ "diff-matches": "diff-matches";
209
+ }>;
210
+ value: z.ZodOptional<z.ZodUnknown>;
211
+ threshold: z.ZodOptional<z.ZodNumber>;
212
+ weight: z.ZodOptional<z.ZodNumber>;
213
+ }, z.core.$loose>]>>>;
214
+ rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
215
+ ref: z.ZodString;
216
+ }, z.core.$strip>, z.ZodObject<{
217
+ inline: z.ZodString;
218
+ dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
219
+ key: z.ZodString;
220
+ weight: z.ZodNumber;
221
+ }, z.core.$strip>>>;
222
+ }, z.core.$strip>]>>;
223
+ providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
224
+ id: z.ZodString;
225
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
226
+ }, z.core.$strip>>>;
227
+ options: z.ZodOptional<z.ZodObject<{
228
+ timeout: z.ZodOptional<z.ZodNumber>;
229
+ cache: z.ZodOptional<z.ZodBoolean>;
230
+ transformOutput: z.ZodOptional<z.ZodString>;
231
+ promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
232
+ }, z.core.$strip>>;
233
+ prompt: z.ZodOptional<z.ZodObject<{
234
+ template: z.ZodOptional<z.ZodString>;
235
+ text: z.ZodOptional<z.ZodString>;
236
+ systemMessage: z.ZodOptional<z.ZodString>;
237
+ vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
238
+ }, z.core.$strip>>;
239
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
240
+ mode: z.ZodLiteral<"mcp-server">;
241
+ serverConfig: z.ZodOptional<z.ZodObject<{
242
+ transport: z.ZodEnum<{
243
+ stdio: "stdio";
244
+ sse: "sse";
245
+ "streamable-http": "streamable-http";
246
+ }>;
247
+ command: z.ZodOptional<z.ZodString>;
248
+ url: z.ZodOptional<z.ZodString>;
249
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
250
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
251
+ startupTimeoutMs: z.ZodOptional<z.ZodNumber>;
252
+ auth: z.ZodOptional<z.ZodObject<{
253
+ type: z.ZodEnum<{
254
+ bearer: "bearer";
255
+ basic: "basic";
256
+ api_key: "api_key";
257
+ oauth: "oauth";
258
+ }>;
259
+ token: z.ZodOptional<z.ZodString>;
260
+ username: z.ZodOptional<z.ZodString>;
261
+ password: z.ZodOptional<z.ZodString>;
262
+ value: z.ZodOptional<z.ZodString>;
263
+ keyName: z.ZodOptional<z.ZodString>;
264
+ placement: z.ZodOptional<z.ZodEnum<{
265
+ header: "header";
266
+ query: "query";
267
+ }>>;
268
+ grantType: z.ZodOptional<z.ZodEnum<{
269
+ password: "password";
270
+ client_credentials: "client_credentials";
271
+ }>>;
272
+ tokenUrl: z.ZodOptional<z.ZodString>;
273
+ clientId: z.ZodOptional<z.ZodString>;
274
+ clientSecret: z.ZodOptional<z.ZodString>;
275
+ scopes: z.ZodOptional<z.ZodArray<z.ZodString>>;
276
+ }, z.core.$strip>>;
277
+ }, z.core.$strip>>;
278
+ capabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
279
+ context: z.ZodOptional<z.ZodObject<{
280
+ docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
281
+ id: z.ZodString;
282
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
283
+ slug: z.ZodOptional<z.ZodString>;
284
+ path: z.ZodOptional<z.ZodString>;
285
+ }, z.core.$strip>, z.ZodObject<{
286
+ slug: z.ZodString;
287
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
288
+ }, z.core.$strip>, z.ZodObject<{
289
+ path: z.ZodString;
290
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
291
+ }, z.core.$strip>, z.ZodObject<{
292
+ perspective: z.ZodString;
293
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
294
+ }, z.core.$strip>]>>>;
295
+ fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
296
+ tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
297
+ }, z.core.$strip>>;
298
+ multiTurn: z.ZodOptional<z.ZodObject<{
299
+ turns: z.ZodArray<z.ZodObject<{
300
+ role: z.ZodEnum<{
301
+ user: "user";
302
+ assistant: "assistant";
303
+ }>;
304
+ content: z.ZodString;
305
+ }, z.core.$strip>>;
306
+ }, z.core.$strip>>;
307
+ models: z.ZodOptional<z.ZodArray<z.ZodString>>;
308
+ maxToolRounds: z.ZodOptional<z.ZodNumber>;
309
+ }, z.core.$strict>, z.ZodObject<{
310
+ id: z.ZodString;
311
+ title: z.ZodString;
312
+ description: z.ZodOptional<z.ZodString>;
313
+ area: z.ZodOptional<z.ZodString>;
314
+ difficulty: z.ZodOptional<z.ZodEnum<{
315
+ basic: "basic";
316
+ intermediate: "intermediate";
317
+ advanced: "advanced";
318
+ }>>;
319
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
320
+ status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
321
+ active: "active";
322
+ draft: "draft";
323
+ paused: "paused";
324
+ archived: "archived";
325
+ }>>>;
326
+ assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
327
+ type: z.ZodLiteral<"llm-rubric">;
328
+ template: z.ZodEnum<{
329
+ "task-completion": "task-completion";
330
+ "code-correctness": "code-correctness";
331
+ "doc-coverage": "doc-coverage";
332
+ "mcp-input-validation": "mcp-input-validation";
333
+ "mcp-output-correctness": "mcp-output-correctness";
334
+ "mcp-error-handling": "mcp-error-handling";
335
+ "mcp-security": "mcp-security";
336
+ "factual-correctness": "factual-correctness";
337
+ completeness: "completeness";
338
+ currency: "currency";
339
+ "process-quality": "process-quality";
340
+ "agent-output": "agent-output";
341
+ "agent-tool-usage": "agent-tool-usage";
342
+ }>;
343
+ criteria: z.ZodArray<z.ZodString>;
344
+ weight: z.ZodOptional<z.ZodNumber>;
345
+ }, z.core.$strip>, z.ZodObject<{
346
+ type: z.ZodEnum<{
347
+ "llm-rubric": "llm-rubric";
348
+ contains: "contains";
349
+ "contains-any": "contains-any";
350
+ "contains-all": "contains-all";
351
+ "not-contains": "not-contains";
352
+ icontains: "icontains";
353
+ "icontains-any": "icontains-any";
354
+ regex: "regex";
355
+ javascript: "javascript";
356
+ similar: "similar";
357
+ cost: "cost";
358
+ latency: "latency";
359
+ "file-exists": "file-exists";
360
+ "file-contains": "file-contains";
361
+ "command-succeeds": "command-succeeds";
362
+ "diff-matches": "diff-matches";
363
+ }>;
364
+ value: z.ZodOptional<z.ZodUnknown>;
365
+ threshold: z.ZodOptional<z.ZodNumber>;
366
+ weight: z.ZodOptional<z.ZodNumber>;
367
+ }, z.core.$loose>]>>>;
368
+ rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
369
+ ref: z.ZodString;
370
+ }, z.core.$strip>, z.ZodObject<{
371
+ inline: z.ZodString;
372
+ dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
373
+ key: z.ZodString;
374
+ weight: z.ZodNumber;
375
+ }, z.core.$strip>>>;
376
+ }, z.core.$strip>]>>;
377
+ providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
378
+ id: z.ZodString;
379
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
380
+ }, z.core.$strip>>>;
381
+ options: z.ZodOptional<z.ZodObject<{
382
+ timeout: z.ZodOptional<z.ZodNumber>;
383
+ cache: z.ZodOptional<z.ZodBoolean>;
384
+ transformOutput: z.ZodOptional<z.ZodString>;
385
+ promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
386
+ }, z.core.$strip>>;
387
+ prompt: z.ZodOptional<z.ZodObject<{
388
+ template: z.ZodOptional<z.ZodString>;
389
+ text: z.ZodOptional<z.ZodString>;
390
+ systemMessage: z.ZodOptional<z.ZodString>;
391
+ vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
392
+ }, z.core.$strip>>;
393
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
394
+ mode: z.ZodLiteral<"agent-harness">;
395
+ sandbox: z.ZodOptional<z.ZodObject<{
396
+ type: z.ZodEnum<{
397
+ none: "none";
398
+ docker: "docker";
399
+ "git-worktree": "git-worktree";
400
+ nsjail: "nsjail";
401
+ tempdir: "tempdir";
402
+ }>;
403
+ image: z.ZodOptional<z.ZodString>;
404
+ limits: z.ZodOptional<z.ZodObject<{
405
+ cpus: z.ZodOptional<z.ZodNumber>;
406
+ memoryBytes: z.ZodOptional<z.ZodNumber>;
407
+ diskBytes: z.ZodOptional<z.ZodNumber>;
408
+ networkAccess: z.ZodOptional<z.ZodBoolean>;
409
+ }, z.core.$strip>>;
410
+ }, z.core.$strip>>;
411
+ tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
412
+ fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
413
+ context: z.ZodOptional<z.ZodObject<{
414
+ docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
415
+ id: z.ZodString;
416
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
417
+ slug: z.ZodOptional<z.ZodString>;
418
+ path: z.ZodOptional<z.ZodString>;
419
+ }, z.core.$strip>, z.ZodObject<{
420
+ slug: z.ZodString;
421
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
422
+ }, z.core.$strip>, z.ZodObject<{
423
+ path: z.ZodString;
424
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
425
+ }, z.core.$strip>, z.ZodObject<{
426
+ perspective: z.ZodString;
427
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
428
+ }, z.core.$strip>]>>>;
429
+ fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
430
+ }, z.core.$strip>>;
431
+ multiTurn: z.ZodOptional<z.ZodObject<{
432
+ turns: z.ZodArray<z.ZodObject<{
433
+ role: z.ZodEnum<{
434
+ user: "user";
435
+ assistant: "assistant";
436
+ }>;
437
+ content: z.ZodString;
438
+ }, z.core.$strip>>;
439
+ }, z.core.$strip>>;
440
+ }, z.core.$strict>, z.ZodObject<{
441
+ id: z.ZodString;
442
+ title: z.ZodString;
443
+ description: z.ZodOptional<z.ZodString>;
444
+ area: z.ZodOptional<z.ZodString>;
445
+ difficulty: z.ZodOptional<z.ZodEnum<{
446
+ basic: "basic";
447
+ intermediate: "intermediate";
448
+ advanced: "advanced";
449
+ }>>;
450
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
451
+ status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
452
+ active: "active";
453
+ draft: "draft";
454
+ paused: "paused";
455
+ archived: "archived";
456
+ }>>>;
457
+ assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
458
+ type: z.ZodLiteral<"llm-rubric">;
459
+ template: z.ZodEnum<{
460
+ "task-completion": "task-completion";
461
+ "code-correctness": "code-correctness";
462
+ "doc-coverage": "doc-coverage";
463
+ "mcp-input-validation": "mcp-input-validation";
464
+ "mcp-output-correctness": "mcp-output-correctness";
465
+ "mcp-error-handling": "mcp-error-handling";
466
+ "mcp-security": "mcp-security";
467
+ "factual-correctness": "factual-correctness";
468
+ completeness: "completeness";
469
+ currency: "currency";
470
+ "process-quality": "process-quality";
471
+ "agent-output": "agent-output";
472
+ "agent-tool-usage": "agent-tool-usage";
473
+ }>;
474
+ criteria: z.ZodArray<z.ZodString>;
475
+ weight: z.ZodOptional<z.ZodNumber>;
476
+ }, z.core.$strip>, z.ZodObject<{
477
+ type: z.ZodEnum<{
478
+ "llm-rubric": "llm-rubric";
479
+ contains: "contains";
480
+ "contains-any": "contains-any";
481
+ "contains-all": "contains-all";
482
+ "not-contains": "not-contains";
483
+ icontains: "icontains";
484
+ "icontains-any": "icontains-any";
485
+ regex: "regex";
486
+ javascript: "javascript";
487
+ similar: "similar";
488
+ cost: "cost";
489
+ latency: "latency";
490
+ "file-exists": "file-exists";
491
+ "file-contains": "file-contains";
492
+ "command-succeeds": "command-succeeds";
493
+ "diff-matches": "diff-matches";
494
+ }>;
495
+ value: z.ZodOptional<z.ZodUnknown>;
496
+ threshold: z.ZodOptional<z.ZodNumber>;
497
+ weight: z.ZodOptional<z.ZodNumber>;
498
+ }, z.core.$loose>]>>>;
499
+ rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
500
+ ref: z.ZodString;
501
+ }, z.core.$strip>, z.ZodObject<{
502
+ inline: z.ZodString;
503
+ dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
504
+ key: z.ZodString;
505
+ weight: z.ZodNumber;
506
+ }, z.core.$strip>>>;
507
+ }, z.core.$strip>]>>;
508
+ providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
509
+ id: z.ZodString;
510
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
511
+ }, z.core.$strip>>>;
512
+ options: z.ZodOptional<z.ZodObject<{
513
+ timeout: z.ZodOptional<z.ZodNumber>;
514
+ cache: z.ZodOptional<z.ZodBoolean>;
515
+ transformOutput: z.ZodOptional<z.ZodString>;
516
+ promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
517
+ }, z.core.$strip>>;
518
+ prompt: z.ZodOptional<z.ZodObject<{
519
+ template: z.ZodOptional<z.ZodString>;
520
+ text: z.ZodOptional<z.ZodString>;
521
+ systemMessage: z.ZodOptional<z.ZodString>;
522
+ vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
523
+ }, z.core.$strip>>;
524
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
525
+ mode: z.ZodLiteral<"knowledge-probe">;
526
+ probeStrategy: z.ZodOptional<z.ZodEnum<{
527
+ "breadth-first": "breadth-first";
528
+ "depth-first": "depth-first";
529
+ "random-sample": "random-sample";
530
+ "coverage-guided": "coverage-guided";
531
+ }>>;
532
+ knowledgeBase: z.ZodOptional<z.ZodObject<{
533
+ type: z.ZodEnum<{
534
+ "sanity-dataset": "sanity-dataset";
535
+ "embeddings-index": "embeddings-index";
536
+ "file-corpus": "file-corpus";
537
+ }>;
538
+ name: z.ZodString;
539
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
540
+ }, z.core.$strip>>;
541
+ context: z.ZodOptional<z.ZodObject<{
542
+ docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
543
+ id: z.ZodString;
544
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
545
+ slug: z.ZodOptional<z.ZodString>;
546
+ path: z.ZodOptional<z.ZodString>;
547
+ }, z.core.$strip>, z.ZodObject<{
548
+ slug: z.ZodString;
549
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
550
+ }, z.core.$strip>, z.ZodObject<{
551
+ path: z.ZodString;
552
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
553
+ }, z.core.$strip>, z.ZodObject<{
554
+ perspective: z.ZodString;
555
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
556
+ }, z.core.$strip>]>>>;
557
+ fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
558
+ }, z.core.$strip>>;
559
+ }, z.core.$strict>, z.ZodObject<{
560
+ id: z.ZodString;
561
+ title: z.ZodString;
562
+ description: z.ZodOptional<z.ZodString>;
563
+ area: z.ZodOptional<z.ZodString>;
564
+ difficulty: z.ZodOptional<z.ZodEnum<{
565
+ basic: "basic";
566
+ intermediate: "intermediate";
567
+ advanced: "advanced";
568
+ }>>;
569
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
570
+ status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
571
+ active: "active";
572
+ draft: "draft";
573
+ paused: "paused";
574
+ archived: "archived";
575
+ }>>>;
576
+ assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
577
+ type: z.ZodLiteral<"llm-rubric">;
578
+ template: z.ZodEnum<{
579
+ "task-completion": "task-completion";
580
+ "code-correctness": "code-correctness";
581
+ "doc-coverage": "doc-coverage";
582
+ "mcp-input-validation": "mcp-input-validation";
583
+ "mcp-output-correctness": "mcp-output-correctness";
584
+ "mcp-error-handling": "mcp-error-handling";
585
+ "mcp-security": "mcp-security";
586
+ "factual-correctness": "factual-correctness";
587
+ completeness: "completeness";
588
+ currency: "currency";
589
+ "process-quality": "process-quality";
590
+ "agent-output": "agent-output";
591
+ "agent-tool-usage": "agent-tool-usage";
592
+ }>;
593
+ criteria: z.ZodArray<z.ZodString>;
594
+ weight: z.ZodOptional<z.ZodNumber>;
595
+ }, z.core.$strip>, z.ZodObject<{
596
+ type: z.ZodEnum<{
597
+ "llm-rubric": "llm-rubric";
598
+ contains: "contains";
599
+ "contains-any": "contains-any";
600
+ "contains-all": "contains-all";
601
+ "not-contains": "not-contains";
602
+ icontains: "icontains";
603
+ "icontains-any": "icontains-any";
604
+ regex: "regex";
605
+ javascript: "javascript";
606
+ similar: "similar";
607
+ cost: "cost";
608
+ latency: "latency";
609
+ "file-exists": "file-exists";
610
+ "file-contains": "file-contains";
611
+ "command-succeeds": "command-succeeds";
612
+ "diff-matches": "diff-matches";
613
+ }>;
614
+ value: z.ZodOptional<z.ZodUnknown>;
615
+ threshold: z.ZodOptional<z.ZodNumber>;
616
+ weight: z.ZodOptional<z.ZodNumber>;
617
+ }, z.core.$loose>]>>>;
618
+ rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
619
+ ref: z.ZodString;
620
+ }, z.core.$strip>, z.ZodObject<{
621
+ inline: z.ZodString;
622
+ dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
623
+ key: z.ZodString;
624
+ weight: z.ZodNumber;
625
+ }, z.core.$strip>>>;
626
+ }, z.core.$strip>]>>;
627
+ providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
628
+ id: z.ZodString;
629
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
630
+ }, z.core.$strip>>>;
631
+ options: z.ZodOptional<z.ZodObject<{
632
+ timeout: z.ZodOptional<z.ZodNumber>;
633
+ cache: z.ZodOptional<z.ZodBoolean>;
634
+ transformOutput: z.ZodOptional<z.ZodString>;
635
+ promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
636
+ }, z.core.$strip>>;
637
+ prompt: z.ZodOptional<z.ZodObject<{
638
+ template: z.ZodOptional<z.ZodString>;
639
+ text: z.ZodOptional<z.ZodString>;
640
+ systemMessage: z.ZodOptional<z.ZodString>;
641
+ vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
642
+ }, z.core.$strip>>;
643
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
644
+ mode: z.ZodLiteral<"custom">;
645
+ handler: z.ZodString;
646
+ schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
647
+ context: z.ZodOptional<z.ZodObject<{
648
+ docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
649
+ id: z.ZodString;
650
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
651
+ slug: z.ZodOptional<z.ZodString>;
652
+ path: z.ZodOptional<z.ZodString>;
653
+ }, z.core.$strip>, z.ZodObject<{
654
+ slug: z.ZodString;
655
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
656
+ }, z.core.$strip>, z.ZodObject<{
657
+ path: z.ZodString;
658
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
659
+ }, z.core.$strip>, z.ZodObject<{
660
+ perspective: z.ZodString;
661
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
662
+ }, z.core.$strip>]>>>;
663
+ fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
664
+ }, z.core.$strip>>;
665
+ }, z.core.$strict>], "mode">;
666
+ export type CanonicalTask = z.infer<typeof CanonicalTaskSchema>;
667
+ /**
668
+ * Schema for an array of canonical tasks — what a single .ailf/tasks/*.yaml
669
+ * file contains. Each file must define at least one task.
670
+ */
671
+ export declare const CanonicalTaskFileSchema: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
672
+ id: z.ZodString;
673
+ title: z.ZodString;
674
+ description: z.ZodOptional<z.ZodString>;
675
+ area: z.ZodOptional<z.ZodString>;
676
+ difficulty: z.ZodOptional<z.ZodEnum<{
677
+ basic: "basic";
678
+ intermediate: "intermediate";
679
+ advanced: "advanced";
680
+ }>>;
681
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
682
+ status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
683
+ active: "active";
684
+ draft: "draft";
685
+ paused: "paused";
686
+ archived: "archived";
687
+ }>>>;
688
+ assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
689
+ type: z.ZodLiteral<"llm-rubric">;
690
+ template: z.ZodEnum<{
691
+ "task-completion": "task-completion";
692
+ "code-correctness": "code-correctness";
693
+ "doc-coverage": "doc-coverage";
694
+ "mcp-input-validation": "mcp-input-validation";
695
+ "mcp-output-correctness": "mcp-output-correctness";
696
+ "mcp-error-handling": "mcp-error-handling";
697
+ "mcp-security": "mcp-security";
698
+ "factual-correctness": "factual-correctness";
699
+ completeness: "completeness";
700
+ currency: "currency";
701
+ "process-quality": "process-quality";
702
+ "agent-output": "agent-output";
703
+ "agent-tool-usage": "agent-tool-usage";
704
+ }>;
705
+ criteria: z.ZodArray<z.ZodString>;
706
+ weight: z.ZodOptional<z.ZodNumber>;
707
+ }, z.core.$strip>, z.ZodObject<{
708
+ type: z.ZodEnum<{
709
+ "llm-rubric": "llm-rubric";
710
+ contains: "contains";
711
+ "contains-any": "contains-any";
712
+ "contains-all": "contains-all";
713
+ "not-contains": "not-contains";
714
+ icontains: "icontains";
715
+ "icontains-any": "icontains-any";
716
+ regex: "regex";
717
+ javascript: "javascript";
718
+ similar: "similar";
719
+ cost: "cost";
720
+ latency: "latency";
721
+ "file-exists": "file-exists";
722
+ "file-contains": "file-contains";
723
+ "command-succeeds": "command-succeeds";
724
+ "diff-matches": "diff-matches";
725
+ }>;
726
+ value: z.ZodOptional<z.ZodUnknown>;
727
+ threshold: z.ZodOptional<z.ZodNumber>;
728
+ weight: z.ZodOptional<z.ZodNumber>;
729
+ }, z.core.$loose>]>>>;
730
+ rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
731
+ ref: z.ZodString;
732
+ }, z.core.$strip>, z.ZodObject<{
733
+ inline: z.ZodString;
734
+ dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
735
+ key: z.ZodString;
736
+ weight: z.ZodNumber;
737
+ }, z.core.$strip>>>;
738
+ }, z.core.$strip>]>>;
739
+ providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
740
+ id: z.ZodString;
741
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
742
+ }, z.core.$strip>>>;
743
+ options: z.ZodOptional<z.ZodObject<{
744
+ timeout: z.ZodOptional<z.ZodNumber>;
745
+ cache: z.ZodOptional<z.ZodBoolean>;
746
+ transformOutput: z.ZodOptional<z.ZodString>;
747
+ promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
748
+ }, z.core.$strip>>;
749
+ prompt: z.ZodOptional<z.ZodObject<{
750
+ template: z.ZodOptional<z.ZodString>;
751
+ text: z.ZodOptional<z.ZodString>;
752
+ systemMessage: z.ZodOptional<z.ZodString>;
753
+ vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
754
+ }, z.core.$strip>>;
755
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
756
+ mode: z.ZodLiteral<"literacy">;
757
+ context: z.ZodOptional<z.ZodObject<{
758
+ docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
759
+ id: z.ZodString;
760
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
761
+ slug: z.ZodOptional<z.ZodString>;
762
+ path: z.ZodOptional<z.ZodString>;
763
+ }, z.core.$strip>, z.ZodObject<{
764
+ slug: z.ZodString;
765
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
766
+ }, z.core.$strip>, z.ZodObject<{
767
+ path: z.ZodString;
768
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
769
+ }, z.core.$strip>, z.ZodObject<{
770
+ perspective: z.ZodString;
771
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
772
+ }, z.core.$strip>]>>>;
773
+ fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
774
+ }, z.core.$strip>>;
775
+ referenceSolution: z.ZodOptional<z.ZodString>;
776
+ docCoverage: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
777
+ baseline: z.ZodOptional<z.ZodObject<{
778
+ enabled: z.ZodOptional<z.ZodBoolean>;
779
+ rubric: z.ZodOptional<z.ZodEnum<{
780
+ full: "full";
781
+ abbreviated: "abbreviated";
782
+ none: "none";
783
+ }>>;
784
+ }, z.core.$strip>>;
785
+ }, z.core.$strict>, z.ZodObject<{
786
+ id: z.ZodString;
787
+ title: z.ZodString;
788
+ description: z.ZodOptional<z.ZodString>;
789
+ area: z.ZodOptional<z.ZodString>;
790
+ difficulty: z.ZodOptional<z.ZodEnum<{
791
+ basic: "basic";
792
+ intermediate: "intermediate";
793
+ advanced: "advanced";
794
+ }>>;
795
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
52
796
  status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
53
797
  active: "active";
54
798
  draft: "draft";
55
799
  paused: "paused";
56
800
  archived: "archived";
57
801
  }>>>;
58
- tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
802
+ assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
803
+ type: z.ZodLiteral<"llm-rubric">;
804
+ template: z.ZodEnum<{
805
+ "task-completion": "task-completion";
806
+ "code-correctness": "code-correctness";
807
+ "doc-coverage": "doc-coverage";
808
+ "mcp-input-validation": "mcp-input-validation";
809
+ "mcp-output-correctness": "mcp-output-correctness";
810
+ "mcp-error-handling": "mcp-error-handling";
811
+ "mcp-security": "mcp-security";
812
+ "factual-correctness": "factual-correctness";
813
+ completeness: "completeness";
814
+ currency: "currency";
815
+ "process-quality": "process-quality";
816
+ "agent-output": "agent-output";
817
+ "agent-tool-usage": "agent-tool-usage";
818
+ }>;
819
+ criteria: z.ZodArray<z.ZodString>;
820
+ weight: z.ZodOptional<z.ZodNumber>;
821
+ }, z.core.$strip>, z.ZodObject<{
822
+ type: z.ZodEnum<{
823
+ "llm-rubric": "llm-rubric";
824
+ contains: "contains";
825
+ "contains-any": "contains-any";
826
+ "contains-all": "contains-all";
827
+ "not-contains": "not-contains";
828
+ icontains: "icontains";
829
+ "icontains-any": "icontains-any";
830
+ regex: "regex";
831
+ javascript: "javascript";
832
+ similar: "similar";
833
+ cost: "cost";
834
+ latency: "latency";
835
+ "file-exists": "file-exists";
836
+ "file-contains": "file-contains";
837
+ "command-succeeds": "command-succeeds";
838
+ "diff-matches": "diff-matches";
839
+ }>;
840
+ value: z.ZodOptional<z.ZodUnknown>;
841
+ threshold: z.ZodOptional<z.ZodNumber>;
842
+ weight: z.ZodOptional<z.ZodNumber>;
843
+ }, z.core.$loose>]>>>;
844
+ rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
845
+ ref: z.ZodString;
846
+ }, z.core.$strip>, z.ZodObject<{
847
+ inline: z.ZodString;
848
+ dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
849
+ key: z.ZodString;
850
+ weight: z.ZodNumber;
851
+ }, z.core.$strip>>>;
852
+ }, z.core.$strip>]>>;
853
+ providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
854
+ id: z.ZodString;
855
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
856
+ }, z.core.$strip>>>;
857
+ options: z.ZodOptional<z.ZodObject<{
858
+ timeout: z.ZodOptional<z.ZodNumber>;
859
+ cache: z.ZodOptional<z.ZodBoolean>;
860
+ transformOutput: z.ZodOptional<z.ZodString>;
861
+ promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
862
+ }, z.core.$strip>>;
59
863
  prompt: z.ZodOptional<z.ZodObject<{
60
864
  template: z.ZodOptional<z.ZodString>;
61
865
  text: z.ZodOptional<z.ZodString>;
62
866
  systemMessage: z.ZodOptional<z.ZodString>;
63
867
  vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
64
868
  }, z.core.$strip>>;
869
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
870
+ mode: z.ZodLiteral<"mcp-server">;
871
+ serverConfig: z.ZodOptional<z.ZodObject<{
872
+ transport: z.ZodEnum<{
873
+ stdio: "stdio";
874
+ sse: "sse";
875
+ "streamable-http": "streamable-http";
876
+ }>;
877
+ command: z.ZodOptional<z.ZodString>;
878
+ url: z.ZodOptional<z.ZodString>;
879
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
880
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
881
+ startupTimeoutMs: z.ZodOptional<z.ZodNumber>;
882
+ auth: z.ZodOptional<z.ZodObject<{
883
+ type: z.ZodEnum<{
884
+ bearer: "bearer";
885
+ basic: "basic";
886
+ api_key: "api_key";
887
+ oauth: "oauth";
888
+ }>;
889
+ token: z.ZodOptional<z.ZodString>;
890
+ username: z.ZodOptional<z.ZodString>;
891
+ password: z.ZodOptional<z.ZodString>;
892
+ value: z.ZodOptional<z.ZodString>;
893
+ keyName: z.ZodOptional<z.ZodString>;
894
+ placement: z.ZodOptional<z.ZodEnum<{
895
+ header: "header";
896
+ query: "query";
897
+ }>>;
898
+ grantType: z.ZodOptional<z.ZodEnum<{
899
+ password: "password";
900
+ client_credentials: "client_credentials";
901
+ }>>;
902
+ tokenUrl: z.ZodOptional<z.ZodString>;
903
+ clientId: z.ZodOptional<z.ZodString>;
904
+ clientSecret: z.ZodOptional<z.ZodString>;
905
+ scopes: z.ZodOptional<z.ZodArray<z.ZodString>>;
906
+ }, z.core.$strip>>;
907
+ }, z.core.$strip>>;
908
+ capabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
65
909
  context: z.ZodOptional<z.ZodObject<{
66
910
  docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
67
911
  id: z.ZodString;
@@ -79,7 +923,36 @@ export declare const CanonicalTaskSchema: z.ZodObject<{
79
923
  reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
80
924
  }, z.core.$strip>]>>>;
81
925
  fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
926
+ tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
927
+ }, z.core.$strip>>;
928
+ multiTurn: z.ZodOptional<z.ZodObject<{
929
+ turns: z.ZodArray<z.ZodObject<{
930
+ role: z.ZodEnum<{
931
+ user: "user";
932
+ assistant: "assistant";
933
+ }>;
934
+ content: z.ZodString;
935
+ }, z.core.$strip>>;
82
936
  }, z.core.$strip>>;
937
+ models: z.ZodOptional<z.ZodArray<z.ZodString>>;
938
+ maxToolRounds: z.ZodOptional<z.ZodNumber>;
939
+ }, z.core.$strict>, z.ZodObject<{
940
+ id: z.ZodString;
941
+ title: z.ZodString;
942
+ description: z.ZodOptional<z.ZodString>;
943
+ area: z.ZodOptional<z.ZodString>;
944
+ difficulty: z.ZodOptional<z.ZodEnum<{
945
+ basic: "basic";
946
+ intermediate: "intermediate";
947
+ advanced: "advanced";
948
+ }>>;
949
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
950
+ status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
951
+ active: "active";
952
+ draft: "draft";
953
+ paused: "paused";
954
+ archived: "archived";
955
+ }>>>;
83
956
  assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
84
957
  type: z.ZodLiteral<"llm-rubric">;
85
958
  template: z.ZodEnum<{
@@ -122,29 +995,80 @@ export declare const CanonicalTaskSchema: z.ZodObject<{
122
995
  threshold: z.ZodOptional<z.ZodNumber>;
123
996
  weight: z.ZodOptional<z.ZodNumber>;
124
997
  }, z.core.$loose>]>>>;
125
- referenceSolution: z.ZodOptional<z.ZodString>;
126
- docCoverage: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
127
- baseline: z.ZodOptional<z.ZodObject<{
128
- enabled: z.ZodOptional<z.ZodBoolean>;
129
- rubric: z.ZodOptional<z.ZodEnum<{
130
- full: "full";
131
- abbreviated: "abbreviated";
132
- none: "none";
133
- }>>;
998
+ rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
999
+ ref: z.ZodString;
1000
+ }, z.core.$strip>, z.ZodObject<{
1001
+ inline: z.ZodString;
1002
+ dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
1003
+ key: z.ZodString;
1004
+ weight: z.ZodNumber;
1005
+ }, z.core.$strip>>>;
1006
+ }, z.core.$strip>]>>;
1007
+ providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
1008
+ id: z.ZodString;
1009
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1010
+ }, z.core.$strip>>>;
1011
+ options: z.ZodOptional<z.ZodObject<{
1012
+ timeout: z.ZodOptional<z.ZodNumber>;
1013
+ cache: z.ZodOptional<z.ZodBoolean>;
1014
+ transformOutput: z.ZodOptional<z.ZodString>;
1015
+ promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1016
+ }, z.core.$strip>>;
1017
+ prompt: z.ZodOptional<z.ZodObject<{
1018
+ template: z.ZodOptional<z.ZodString>;
1019
+ text: z.ZodOptional<z.ZodString>;
1020
+ systemMessage: z.ZodOptional<z.ZodString>;
1021
+ vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
134
1022
  }, z.core.$strip>>;
135
- rubric: z.ZodOptional<z.ZodUnknown>;
136
- providers: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
137
- options: z.ZodOptional<z.ZodUnknown>;
138
1023
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
139
- }, z.core.$loose>;
140
- export type CanonicalTask = z.infer<typeof CanonicalTaskSchema>;
141
- /**
142
- * Schema for an array of canonical tasks — what a single .ailf/tasks/*.yaml
143
- * file contains. Each file must define at least one task.
144
- */
145
- export declare const CanonicalTaskFileSchema: z.ZodArray<z.ZodObject<{
1024
+ mode: z.ZodLiteral<"agent-harness">;
1025
+ sandbox: z.ZodOptional<z.ZodObject<{
1026
+ type: z.ZodEnum<{
1027
+ none: "none";
1028
+ docker: "docker";
1029
+ "git-worktree": "git-worktree";
1030
+ nsjail: "nsjail";
1031
+ tempdir: "tempdir";
1032
+ }>;
1033
+ image: z.ZodOptional<z.ZodString>;
1034
+ limits: z.ZodOptional<z.ZodObject<{
1035
+ cpus: z.ZodOptional<z.ZodNumber>;
1036
+ memoryBytes: z.ZodOptional<z.ZodNumber>;
1037
+ diskBytes: z.ZodOptional<z.ZodNumber>;
1038
+ networkAccess: z.ZodOptional<z.ZodBoolean>;
1039
+ }, z.core.$strip>>;
1040
+ }, z.core.$strip>>;
1041
+ tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
1042
+ fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
1043
+ context: z.ZodOptional<z.ZodObject<{
1044
+ docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
1045
+ id: z.ZodString;
1046
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
1047
+ slug: z.ZodOptional<z.ZodString>;
1048
+ path: z.ZodOptional<z.ZodString>;
1049
+ }, z.core.$strip>, z.ZodObject<{
1050
+ slug: z.ZodString;
1051
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
1052
+ }, z.core.$strip>, z.ZodObject<{
1053
+ path: z.ZodString;
1054
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
1055
+ }, z.core.$strip>, z.ZodObject<{
1056
+ perspective: z.ZodString;
1057
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
1058
+ }, z.core.$strip>]>>>;
1059
+ fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
1060
+ }, z.core.$strip>>;
1061
+ multiTurn: z.ZodOptional<z.ZodObject<{
1062
+ turns: z.ZodArray<z.ZodObject<{
1063
+ role: z.ZodEnum<{
1064
+ user: "user";
1065
+ assistant: "assistant";
1066
+ }>;
1067
+ content: z.ZodString;
1068
+ }, z.core.$strip>>;
1069
+ }, z.core.$strip>>;
1070
+ }, z.core.$strict>, z.ZodObject<{
146
1071
  id: z.ZodString;
147
- mode: z.ZodDefault<z.ZodString>;
148
1072
  title: z.ZodString;
149
1073
  description: z.ZodOptional<z.ZodString>;
150
1074
  area: z.ZodOptional<z.ZodString>;
@@ -153,19 +1077,97 @@ export declare const CanonicalTaskFileSchema: z.ZodArray<z.ZodObject<{
153
1077
  intermediate: "intermediate";
154
1078
  advanced: "advanced";
155
1079
  }>>;
1080
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
156
1081
  status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
157
1082
  active: "active";
158
1083
  draft: "draft";
159
1084
  paused: "paused";
160
1085
  archived: "archived";
161
1086
  }>>>;
162
- tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1087
+ assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
1088
+ type: z.ZodLiteral<"llm-rubric">;
1089
+ template: z.ZodEnum<{
1090
+ "task-completion": "task-completion";
1091
+ "code-correctness": "code-correctness";
1092
+ "doc-coverage": "doc-coverage";
1093
+ "mcp-input-validation": "mcp-input-validation";
1094
+ "mcp-output-correctness": "mcp-output-correctness";
1095
+ "mcp-error-handling": "mcp-error-handling";
1096
+ "mcp-security": "mcp-security";
1097
+ "factual-correctness": "factual-correctness";
1098
+ completeness: "completeness";
1099
+ currency: "currency";
1100
+ "process-quality": "process-quality";
1101
+ "agent-output": "agent-output";
1102
+ "agent-tool-usage": "agent-tool-usage";
1103
+ }>;
1104
+ criteria: z.ZodArray<z.ZodString>;
1105
+ weight: z.ZodOptional<z.ZodNumber>;
1106
+ }, z.core.$strip>, z.ZodObject<{
1107
+ type: z.ZodEnum<{
1108
+ "llm-rubric": "llm-rubric";
1109
+ contains: "contains";
1110
+ "contains-any": "contains-any";
1111
+ "contains-all": "contains-all";
1112
+ "not-contains": "not-contains";
1113
+ icontains: "icontains";
1114
+ "icontains-any": "icontains-any";
1115
+ regex: "regex";
1116
+ javascript: "javascript";
1117
+ similar: "similar";
1118
+ cost: "cost";
1119
+ latency: "latency";
1120
+ "file-exists": "file-exists";
1121
+ "file-contains": "file-contains";
1122
+ "command-succeeds": "command-succeeds";
1123
+ "diff-matches": "diff-matches";
1124
+ }>;
1125
+ value: z.ZodOptional<z.ZodUnknown>;
1126
+ threshold: z.ZodOptional<z.ZodNumber>;
1127
+ weight: z.ZodOptional<z.ZodNumber>;
1128
+ }, z.core.$loose>]>>>;
1129
+ rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
1130
+ ref: z.ZodString;
1131
+ }, z.core.$strip>, z.ZodObject<{
1132
+ inline: z.ZodString;
1133
+ dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
1134
+ key: z.ZodString;
1135
+ weight: z.ZodNumber;
1136
+ }, z.core.$strip>>>;
1137
+ }, z.core.$strip>]>>;
1138
+ providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
1139
+ id: z.ZodString;
1140
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1141
+ }, z.core.$strip>>>;
1142
+ options: z.ZodOptional<z.ZodObject<{
1143
+ timeout: z.ZodOptional<z.ZodNumber>;
1144
+ cache: z.ZodOptional<z.ZodBoolean>;
1145
+ transformOutput: z.ZodOptional<z.ZodString>;
1146
+ promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1147
+ }, z.core.$strip>>;
163
1148
  prompt: z.ZodOptional<z.ZodObject<{
164
1149
  template: z.ZodOptional<z.ZodString>;
165
1150
  text: z.ZodOptional<z.ZodString>;
166
1151
  systemMessage: z.ZodOptional<z.ZodString>;
167
1152
  vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
168
1153
  }, z.core.$strip>>;
1154
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1155
+ mode: z.ZodLiteral<"knowledge-probe">;
1156
+ probeStrategy: z.ZodOptional<z.ZodEnum<{
1157
+ "breadth-first": "breadth-first";
1158
+ "depth-first": "depth-first";
1159
+ "random-sample": "random-sample";
1160
+ "coverage-guided": "coverage-guided";
1161
+ }>>;
1162
+ knowledgeBase: z.ZodOptional<z.ZodObject<{
1163
+ type: z.ZodEnum<{
1164
+ "sanity-dataset": "sanity-dataset";
1165
+ "embeddings-index": "embeddings-index";
1166
+ "file-corpus": "file-corpus";
1167
+ }>;
1168
+ name: z.ZodString;
1169
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1170
+ }, z.core.$strip>>;
169
1171
  context: z.ZodOptional<z.ZodObject<{
170
1172
  docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
171
1173
  id: z.ZodString;
@@ -184,6 +1186,23 @@ export declare const CanonicalTaskFileSchema: z.ZodArray<z.ZodObject<{
184
1186
  }, z.core.$strip>]>>>;
185
1187
  fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
186
1188
  }, z.core.$strip>>;
1189
+ }, z.core.$strict>, z.ZodObject<{
1190
+ id: z.ZodString;
1191
+ title: z.ZodString;
1192
+ description: z.ZodOptional<z.ZodString>;
1193
+ area: z.ZodOptional<z.ZodString>;
1194
+ difficulty: z.ZodOptional<z.ZodEnum<{
1195
+ basic: "basic";
1196
+ intermediate: "intermediate";
1197
+ advanced: "advanced";
1198
+ }>>;
1199
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1200
+ status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
1201
+ active: "active";
1202
+ draft: "draft";
1203
+ paused: "paused";
1204
+ archived: "archived";
1205
+ }>>>;
187
1206
  assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
188
1207
  type: z.ZodLiteral<"llm-rubric">;
189
1208
  template: z.ZodEnum<{
@@ -226,21 +1245,54 @@ export declare const CanonicalTaskFileSchema: z.ZodArray<z.ZodObject<{
226
1245
  threshold: z.ZodOptional<z.ZodNumber>;
227
1246
  weight: z.ZodOptional<z.ZodNumber>;
228
1247
  }, z.core.$loose>]>>>;
229
- referenceSolution: z.ZodOptional<z.ZodString>;
230
- docCoverage: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
231
- baseline: z.ZodOptional<z.ZodObject<{
232
- enabled: z.ZodOptional<z.ZodBoolean>;
233
- rubric: z.ZodOptional<z.ZodEnum<{
234
- full: "full";
235
- abbreviated: "abbreviated";
236
- none: "none";
237
- }>>;
1248
+ rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
1249
+ ref: z.ZodString;
1250
+ }, z.core.$strip>, z.ZodObject<{
1251
+ inline: z.ZodString;
1252
+ dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
1253
+ key: z.ZodString;
1254
+ weight: z.ZodNumber;
1255
+ }, z.core.$strip>>>;
1256
+ }, z.core.$strip>]>>;
1257
+ providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
1258
+ id: z.ZodString;
1259
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1260
+ }, z.core.$strip>>>;
1261
+ options: z.ZodOptional<z.ZodObject<{
1262
+ timeout: z.ZodOptional<z.ZodNumber>;
1263
+ cache: z.ZodOptional<z.ZodBoolean>;
1264
+ transformOutput: z.ZodOptional<z.ZodString>;
1265
+ promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1266
+ }, z.core.$strip>>;
1267
+ prompt: z.ZodOptional<z.ZodObject<{
1268
+ template: z.ZodOptional<z.ZodString>;
1269
+ text: z.ZodOptional<z.ZodString>;
1270
+ systemMessage: z.ZodOptional<z.ZodString>;
1271
+ vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
238
1272
  }, z.core.$strip>>;
239
- rubric: z.ZodOptional<z.ZodUnknown>;
240
- providers: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
241
- options: z.ZodOptional<z.ZodUnknown>;
242
1273
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
243
- }, z.core.$loose>>;
1274
+ mode: z.ZodLiteral<"custom">;
1275
+ handler: z.ZodString;
1276
+ schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1277
+ context: z.ZodOptional<z.ZodObject<{
1278
+ docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
1279
+ id: z.ZodString;
1280
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
1281
+ slug: z.ZodOptional<z.ZodString>;
1282
+ path: z.ZodOptional<z.ZodString>;
1283
+ }, z.core.$strip>, z.ZodObject<{
1284
+ slug: z.ZodString;
1285
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
1286
+ }, z.core.$strip>, z.ZodObject<{
1287
+ path: z.ZodString;
1288
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
1289
+ }, z.core.$strip>, z.ZodObject<{
1290
+ perspective: z.ZodString;
1291
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
1292
+ }, z.core.$strip>]>>>;
1293
+ fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
1294
+ }, z.core.$strip>>;
1295
+ }, z.core.$strict>], "mode">>;
244
1296
  /**
245
1297
  * Parse and validate a task file's content against the canonical schema.
246
1298
  * Returns typed tasks or throws with a user-friendly Zod error message.