@sanity/ailf 0.5.0 → 2.0.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 (377) hide show
  1. package/README.md +0 -1
  2. package/config/features.ts +23 -0
  3. package/config/models.ts +95 -0
  4. package/config/prompts.ts +16 -0
  5. package/config/rubrics.ts +225 -0
  6. package/config/schedules.ts +47 -0
  7. package/config/sinks.ts +37 -0
  8. package/config/sources.ts +21 -0
  9. package/config/thresholds.ts +61 -0
  10. package/dist/_vendor/ailf-core/config-helpers.d.ts +171 -0
  11. package/dist/_vendor/ailf-core/config-helpers.js +170 -0
  12. package/dist/_vendor/ailf-core/env-helper.d.ts +35 -0
  13. package/dist/_vendor/ailf-core/env-helper.js +45 -0
  14. package/dist/_vendor/ailf-core/examples/index.d.ts +16 -0
  15. package/dist/_vendor/ailf-core/examples/index.js +25 -0
  16. package/dist/_vendor/ailf-core/index.d.ts +3 -0
  17. package/dist/_vendor/ailf-core/index.js +5 -0
  18. package/dist/_vendor/ailf-core/ports/context.d.ts +17 -2
  19. package/dist/_vendor/ailf-core/ports/doc-fetcher.d.ts +2 -2
  20. package/dist/_vendor/ailf-core/ports/index.d.ts +2 -1
  21. package/dist/_vendor/ailf-core/ports/mode-handler.d.ts +129 -0
  22. package/dist/_vendor/ailf-core/ports/mode-handler.js +19 -0
  23. package/dist/_vendor/ailf-core/ports/task-source.d.ts +16 -122
  24. package/dist/_vendor/ailf-core/ports/task-source.js +7 -7
  25. package/dist/_vendor/ailf-core/schemas/eval-config.d.ts +8 -2
  26. package/dist/_vendor/ailf-core/schemas/eval-config.js +17 -2
  27. package/dist/_vendor/ailf-core/schemas/pipeline-request.d.ts +9 -3
  28. package/dist/_vendor/ailf-core/schemas/pipeline-request.js +8 -1
  29. package/dist/_vendor/ailf-core/schemas/pipeline.d.ts +14 -31
  30. package/dist/_vendor/ailf-core/schemas/pipeline.js +17 -9
  31. package/dist/_vendor/ailf-core/schemas/schedules.d.ts +14 -4
  32. package/dist/_vendor/ailf-core/schemas/schedules.js +6 -2
  33. package/dist/_vendor/ailf-core/schemas/sinks.d.ts +1 -1
  34. package/dist/_vendor/ailf-core/services/comparison-formatters.js +57 -19
  35. package/dist/_vendor/ailf-core/services/index.d.ts +2 -1
  36. package/dist/_vendor/ailf-core/services/index.js +2 -1
  37. package/dist/_vendor/ailf-core/services/scoring-engine.d.ts +153 -0
  38. package/dist/_vendor/ailf-core/services/scoring-engine.js +237 -0
  39. package/dist/_vendor/ailf-core/services/scoring.d.ts +15 -2
  40. package/dist/_vendor/ailf-core/services/scoring.js +25 -15
  41. package/dist/_vendor/ailf-core/types/branded-ids.d.ts +137 -0
  42. package/dist/_vendor/ailf-core/types/branded-ids.js +136 -0
  43. package/dist/_vendor/ailf-core/types/eval-mode-config.d.ts +150 -0
  44. package/dist/_vendor/ailf-core/types/eval-mode-config.js +24 -0
  45. package/dist/_vendor/ailf-core/types/generalized-task.d.ts +332 -0
  46. package/dist/_vendor/ailf-core/types/generalized-task.js +13 -0
  47. package/dist/_vendor/ailf-core/types/index.d.ts +45 -83
  48. package/dist/_vendor/ailf-core/types/index.js +8 -1
  49. package/dist/_vendor/ailf-core/types/plugin-registry.d.ts +257 -0
  50. package/dist/_vendor/ailf-core/types/plugin-registry.js +185 -0
  51. package/dist/_vendor/ailf-core/types/storage-schema.d.ts +199 -0
  52. package/dist/_vendor/ailf-core/types/storage-schema.js +39 -0
  53. package/dist/_vendor/ailf-core/types/task-graph.d.ts +86 -0
  54. package/dist/_vendor/ailf-core/types/task-graph.js +20 -0
  55. package/dist/_vendor/ailf-core/types/trace.d.ts +118 -0
  56. package/dist/_vendor/ailf-core/types/trace.js +18 -0
  57. package/dist/_vendor/ailf-core/types/variable-envelope.d.ts +80 -0
  58. package/dist/_vendor/ailf-core/types/variable-envelope.js +16 -0
  59. package/dist/_vendor/ailf-shared/dimension-names.d.ts +5 -18
  60. package/dist/_vendor/ailf-shared/dimension-names.js +6 -24
  61. package/dist/_vendor/ailf-shared/eval-modes.d.ts +38 -6
  62. package/dist/_vendor/ailf-shared/eval-modes.js +26 -2
  63. package/dist/_vendor/ailf-shared/index.d.ts +0 -1
  64. package/dist/_vendor/ailf-shared/index.js +0 -1
  65. package/dist/adapters/api-client/build-request.js +14 -13
  66. package/dist/adapters/config-sources/file-config-adapter.d.ts +20 -11
  67. package/dist/adapters/config-sources/file-config-adapter.js +39 -12
  68. package/dist/adapters/config-sources/index.d.ts +2 -0
  69. package/dist/adapters/config-sources/index.js +1 -0
  70. package/dist/adapters/config-sources/ts-config-loader.d.ts +59 -0
  71. package/dist/adapters/config-sources/ts-config-loader.js +141 -0
  72. package/dist/adapters/doc-fetchers/sanity-doc-fetcher.d.ts +3 -2
  73. package/dist/adapters/doc-fetchers/sanity-doc-fetcher.js +7 -2
  74. package/dist/adapters/task-sources/composite-task-source.d.ts +3 -3
  75. package/dist/adapters/task-sources/composite-task-source.js +1 -1
  76. package/dist/adapters/task-sources/content-lake-task-source.d.ts +7 -6
  77. package/dist/adapters/task-sources/content-lake-task-source.js +35 -39
  78. package/dist/adapters/task-sources/index.d.ts +3 -2
  79. package/dist/adapters/task-sources/index.js +3 -2
  80. package/dist/adapters/task-sources/repo-schemas.d.ts +218 -16
  81. package/dist/adapters/task-sources/repo-schemas.js +227 -19
  82. package/dist/adapters/task-sources/repo-task-source.d.ts +16 -12
  83. package/dist/adapters/task-sources/repo-task-source.js +92 -80
  84. package/dist/adapters/task-sources/repo-validation.d.ts +36 -5
  85. package/dist/adapters/task-sources/repo-validation.js +126 -5
  86. package/dist/adapters/task-sources/task-file-loader.d.ts +64 -0
  87. package/dist/adapters/task-sources/task-file-loader.js +83 -0
  88. package/dist/adapters/task-sources/yaml-task-source.d.ts +6 -6
  89. package/dist/adapters/task-sources/yaml-task-source.js +19 -16
  90. package/dist/cli.js +0 -2
  91. package/dist/commands/baseline.js +4 -1
  92. package/dist/commands/calculate-scores.js +1 -1
  93. package/dist/commands/coverage-audit.js +9 -1
  94. package/dist/commands/explain-handler.js +25 -23
  95. package/dist/commands/fetch-docs.js +3 -2
  96. package/dist/commands/generate-configs.js +1 -1
  97. package/dist/commands/init.d.ts +6 -4
  98. package/dist/commands/init.js +302 -23
  99. package/dist/commands/interactive.js +11 -7
  100. package/dist/commands/pipeline-action.d.ts +2 -0
  101. package/dist/commands/pipeline-action.js +16 -6
  102. package/dist/commands/pipeline.d.ts +1 -0
  103. package/dist/commands/pipeline.js +4 -2
  104. package/dist/commands/pr-comment.js +1 -1
  105. package/dist/commands/publish.js +2 -2
  106. package/dist/commands/readiness-report.js +13 -6
  107. package/dist/commands/validate-tasks.d.ts +2 -2
  108. package/dist/commands/validate-tasks.js +26 -15
  109. package/dist/composition-root.d.ts +13 -1
  110. package/dist/composition-root.js +99 -4
  111. package/dist/index.d.ts +41 -0
  112. package/dist/index.js +48 -0
  113. package/dist/orchestration/build-app-context.js +1 -0
  114. package/dist/orchestration/build-step-sequence.js +28 -8
  115. package/dist/orchestration/steps/calculate-scores-step.js +24 -11
  116. package/dist/orchestration/steps/fetch-docs-step.js +8 -7
  117. package/dist/orchestration/steps/gap-analysis-step.js +8 -7
  118. package/dist/orchestration/steps/generate-configs-step.d.ts +16 -3
  119. package/dist/orchestration/steps/generate-configs-step.js +261 -51
  120. package/dist/orchestration/steps/grader-consistency-step.js +7 -4
  121. package/dist/orchestration/steps/mirror-repo-tasks-step.js +1 -1
  122. package/dist/orchestration/steps/readiness-step.js +5 -6
  123. package/dist/orchestration/steps/run-eval-step.d.ts +1 -2
  124. package/dist/orchestration/steps/run-eval-step.js +8 -7
  125. package/dist/pipeline/cache.d.ts +1 -1
  126. package/dist/pipeline/cache.js +36 -8
  127. package/dist/pipeline/calculate-scores.d.ts +2 -4
  128. package/dist/pipeline/calculate-scores.js +43 -113
  129. package/dist/pipeline/checks.js +2 -2
  130. package/dist/pipeline/compare.js +8 -8
  131. package/dist/pipeline/compiler/__tests__/agent-harness-handler.test.d.ts +10 -0
  132. package/dist/pipeline/compiler/__tests__/agent-harness-handler.test.js +288 -0
  133. package/dist/pipeline/compiler/__tests__/assertion-mapper.test.d.ts +9 -0
  134. package/dist/pipeline/compiler/__tests__/assertion-mapper.test.js +145 -0
  135. package/dist/pipeline/compiler/__tests__/knowledge-probe-handler.test.d.ts +10 -0
  136. package/dist/pipeline/compiler/__tests__/knowledge-probe-handler.test.js +314 -0
  137. package/dist/pipeline/compiler/__tests__/literacy-handler.test.d.ts +10 -0
  138. package/dist/pipeline/compiler/__tests__/literacy-handler.test.js +486 -0
  139. package/dist/pipeline/compiler/__tests__/mcp-server-handler.test.d.ts +10 -0
  140. package/dist/pipeline/compiler/__tests__/mcp-server-handler.test.js +392 -0
  141. package/dist/pipeline/compiler/__tests__/promptfoo-compiler.test.d.ts +9 -0
  142. package/dist/pipeline/compiler/__tests__/promptfoo-compiler.test.js +333 -0
  143. package/dist/pipeline/compiler/__tests__/sandbox-and-fixtures.test.d.ts +12 -0
  144. package/dist/pipeline/compiler/__tests__/sandbox-and-fixtures.test.js +210 -0
  145. package/dist/pipeline/compiler/__tests__/scoring-and-presets.test.d.ts +7 -0
  146. package/dist/pipeline/compiler/__tests__/scoring-and-presets.test.js +404 -0
  147. package/dist/pipeline/compiler/__tests__/scoring-bridge.test.d.ts +10 -0
  148. package/dist/pipeline/compiler/__tests__/scoring-bridge.test.js +184 -0
  149. package/dist/pipeline/compiler/__tests__/task-graph-builder.test.d.ts +8 -0
  150. package/dist/pipeline/compiler/__tests__/task-graph-builder.test.js +301 -0
  151. package/dist/pipeline/compiler/__tests__/telemetry.test.d.ts +9 -0
  152. package/dist/pipeline/compiler/__tests__/telemetry.test.js +503 -0
  153. package/dist/pipeline/compiler/assertion-mapper.d.ts +58 -0
  154. package/dist/pipeline/compiler/assertion-mapper.js +175 -0
  155. package/dist/pipeline/compiler/compiler-to-yaml.d.ts +51 -0
  156. package/dist/pipeline/compiler/compiler-to-yaml.js +222 -0
  157. package/dist/pipeline/compiler/config-loader.d.ts +56 -0
  158. package/dist/pipeline/compiler/config-loader.js +111 -0
  159. package/dist/pipeline/compiler/fixture-resolver.d.ts +41 -0
  160. package/dist/pipeline/compiler/fixture-resolver.js +113 -0
  161. package/dist/pipeline/compiler/hash.d.ts +11 -0
  162. package/dist/pipeline/compiler/hash.js +18 -0
  163. package/dist/pipeline/compiler/ignore-fields.d.ts +53 -0
  164. package/dist/pipeline/compiler/ignore-fields.js +113 -0
  165. package/dist/pipeline/compiler/index.d.ts +29 -0
  166. package/dist/pipeline/compiler/index.js +45 -0
  167. package/dist/pipeline/compiler/literacy-bridge.d.ts +102 -0
  168. package/dist/pipeline/compiler/literacy-bridge.js +172 -0
  169. package/dist/pipeline/compiler/mode-bases/agent-harness.d.ts +10 -0
  170. package/dist/pipeline/compiler/mode-bases/agent-harness.js +21 -0
  171. package/dist/pipeline/compiler/mode-bases/index.d.ts +4 -0
  172. package/dist/pipeline/compiler/mode-bases/index.js +4 -0
  173. package/dist/pipeline/compiler/mode-bases/knowledge-probe.d.ts +10 -0
  174. package/dist/pipeline/compiler/mode-bases/knowledge-probe.js +22 -0
  175. package/dist/pipeline/compiler/mode-bases/literacy.d.ts +12 -0
  176. package/dist/pipeline/compiler/mode-bases/literacy.js +78 -0
  177. package/dist/pipeline/compiler/mode-bases/mcp-server.d.ts +10 -0
  178. package/dist/pipeline/compiler/mode-bases/mcp-server.js +70 -0
  179. package/dist/pipeline/compiler/mode-handlers/__fixtures__/agent-harness-example-tasks.d.ts +14 -0
  180. package/dist/pipeline/compiler/mode-handlers/__fixtures__/agent-harness-example-tasks.js +152 -0
  181. package/dist/pipeline/compiler/mode-handlers/__fixtures__/knowledge-probe-example-tasks.d.ts +32 -0
  182. package/dist/pipeline/compiler/mode-handlers/__fixtures__/knowledge-probe-example-tasks.js +176 -0
  183. package/dist/pipeline/compiler/mode-handlers/__fixtures__/mcp-example-tasks.d.ts +49 -0
  184. package/dist/pipeline/compiler/mode-handlers/__fixtures__/mcp-example-tasks.js +259 -0
  185. package/dist/pipeline/compiler/mode-handlers/agent-harness/assertions.d.ts +43 -0
  186. package/dist/pipeline/compiler/mode-handlers/agent-harness/assertions.js +187 -0
  187. package/dist/pipeline/compiler/mode-handlers/agent-harness/compiler.d.ts +19 -0
  188. package/dist/pipeline/compiler/mode-handlers/agent-harness/compiler.js +138 -0
  189. package/dist/pipeline/compiler/mode-handlers/agent-harness/index.d.ts +16 -0
  190. package/dist/pipeline/compiler/mode-handlers/agent-harness/index.js +43 -0
  191. package/dist/pipeline/compiler/mode-handlers/agent-harness/prompts.d.ts +9 -0
  192. package/dist/pipeline/compiler/mode-handlers/agent-harness/prompts.js +29 -0
  193. package/dist/pipeline/compiler/mode-handlers/agent-harness/sandbox.d.ts +12 -0
  194. package/dist/pipeline/compiler/mode-handlers/agent-harness/sandbox.js +82 -0
  195. package/dist/pipeline/compiler/mode-handlers/agent-harness/tool-presets.d.ts +4 -0
  196. package/dist/pipeline/compiler/mode-handlers/agent-harness/tool-presets.js +19 -0
  197. package/dist/pipeline/compiler/mode-handlers/agent-harness/types.d.ts +49 -0
  198. package/dist/pipeline/compiler/mode-handlers/agent-harness/types.js +4 -0
  199. package/dist/pipeline/compiler/mode-handlers/agent-harness/validation.d.ts +9 -0
  200. package/dist/pipeline/compiler/mode-handlers/agent-harness/validation.js +16 -0
  201. package/dist/pipeline/compiler/mode-handlers/index.d.ts +15 -0
  202. package/dist/pipeline/compiler/mode-handlers/index.js +19 -0
  203. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/assertions.d.ts +16 -0
  204. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/assertions.js +61 -0
  205. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/compiler.d.ts +18 -0
  206. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/compiler.js +112 -0
  207. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/index.d.ts +26 -0
  208. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/index.js +49 -0
  209. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/prompts.d.ts +9 -0
  210. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/prompts.js +28 -0
  211. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/types.d.ts +44 -0
  212. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/types.js +4 -0
  213. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/validation.d.ts +9 -0
  214. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/validation.js +24 -0
  215. package/dist/pipeline/compiler/mode-handlers/literacy/assertions.d.ts +18 -0
  216. package/dist/pipeline/compiler/mode-handlers/literacy/assertions.js +118 -0
  217. package/dist/pipeline/compiler/mode-handlers/literacy/compiler.d.ts +14 -0
  218. package/dist/pipeline/compiler/mode-handlers/literacy/compiler.js +105 -0
  219. package/dist/pipeline/compiler/mode-handlers/literacy/index.d.ts +11 -0
  220. package/dist/pipeline/compiler/mode-handlers/literacy/index.js +38 -0
  221. package/dist/pipeline/compiler/mode-handlers/literacy/prompts.d.ts +9 -0
  222. package/dist/pipeline/compiler/mode-handlers/literacy/prompts.js +74 -0
  223. package/dist/pipeline/compiler/mode-handlers/literacy/types.d.ts +41 -0
  224. package/dist/pipeline/compiler/mode-handlers/literacy/types.js +4 -0
  225. package/dist/pipeline/compiler/mode-handlers/literacy/validation.d.ts +12 -0
  226. package/dist/pipeline/compiler/mode-handlers/literacy/validation.js +28 -0
  227. package/dist/pipeline/compiler/mode-handlers/mcp-server/assertions.d.ts +42 -0
  228. package/dist/pipeline/compiler/mode-handlers/mcp-server/assertions.js +334 -0
  229. package/dist/pipeline/compiler/mode-handlers/mcp-server/compiler.d.ts +19 -0
  230. package/dist/pipeline/compiler/mode-handlers/mcp-server/compiler.js +100 -0
  231. package/dist/pipeline/compiler/mode-handlers/mcp-server/index.d.ts +27 -0
  232. package/dist/pipeline/compiler/mode-handlers/mcp-server/index.js +54 -0
  233. package/dist/pipeline/compiler/mode-handlers/mcp-server/prompts.d.ts +8 -0
  234. package/dist/pipeline/compiler/mode-handlers/mcp-server/prompts.js +28 -0
  235. package/dist/pipeline/compiler/mode-handlers/mcp-server/provider-config.d.ts +28 -0
  236. package/dist/pipeline/compiler/mode-handlers/mcp-server/provider-config.js +104 -0
  237. package/dist/pipeline/compiler/mode-handlers/mcp-server/types.d.ts +37 -0
  238. package/dist/pipeline/compiler/mode-handlers/mcp-server/types.js +4 -0
  239. package/dist/pipeline/compiler/mode-handlers/mcp-server/validation.d.ts +9 -0
  240. package/dist/pipeline/compiler/mode-handlers/mcp-server/validation.js +43 -0
  241. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/index.d.ts +33 -0
  242. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/index.js +174 -0
  243. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/mcp-connection.d.ts +19 -0
  244. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/mcp-connection.js +95 -0
  245. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/tool-loop-anthropic.d.ts +19 -0
  246. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/tool-loop-anthropic.js +172 -0
  247. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/tool-loop-openai.d.ts +14 -0
  248. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/tool-loop-openai.js +16 -0
  249. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/types.d.ts +93 -0
  250. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/types.js +4 -0
  251. package/dist/pipeline/compiler/preset-loader.d.ts +22 -0
  252. package/dist/pipeline/compiler/preset-loader.js +99 -0
  253. package/dist/pipeline/compiler/presets/index.d.ts +9 -0
  254. package/dist/pipeline/compiler/presets/index.js +8 -0
  255. package/dist/pipeline/compiler/presets/sanity-literacy.d.ts +42 -0
  256. package/dist/pipeline/compiler/presets/sanity-literacy.js +208 -0
  257. package/dist/pipeline/compiler/promptfoo-compiler.d.ts +96 -0
  258. package/dist/pipeline/compiler/promptfoo-compiler.js +230 -0
  259. package/dist/pipeline/compiler/provider-assembler.d.ts +39 -0
  260. package/dist/pipeline/compiler/provider-assembler.js +137 -0
  261. package/dist/pipeline/compiler/sandbox/docker-sandbox.d.ts +21 -0
  262. package/dist/pipeline/compiler/sandbox/docker-sandbox.js +136 -0
  263. package/dist/pipeline/compiler/sandbox/fixture-provisioner.d.ts +69 -0
  264. package/dist/pipeline/compiler/sandbox/fixture-provisioner.js +189 -0
  265. package/dist/pipeline/compiler/sandbox/git-worktree-sandbox.d.ts +20 -0
  266. package/dist/pipeline/compiler/sandbox/git-worktree-sandbox.js +114 -0
  267. package/dist/pipeline/compiler/sandbox/index.d.ts +10 -0
  268. package/dist/pipeline/compiler/sandbox/index.js +11 -0
  269. package/dist/pipeline/compiler/sandbox/sandbox-selector.d.ts +35 -0
  270. package/dist/pipeline/compiler/sandbox/sandbox-selector.js +86 -0
  271. package/dist/pipeline/compiler/sandbox/sandbox-strategy.d.ts +81 -0
  272. package/dist/pipeline/compiler/sandbox/sandbox-strategy.js +15 -0
  273. package/dist/pipeline/compiler/sandbox/tempdir-sandbox.d.ts +20 -0
  274. package/dist/pipeline/compiler/sandbox/tempdir-sandbox.js +74 -0
  275. package/dist/pipeline/compiler/scoring-bridge.d.ts +49 -0
  276. package/dist/pipeline/compiler/scoring-bridge.js +114 -0
  277. package/dist/pipeline/compiler/task-graph-builder.d.ts +54 -0
  278. package/dist/pipeline/compiler/task-graph-builder.js +291 -0
  279. package/dist/pipeline/compiler/telemetry/cost-tracker.d.ts +90 -0
  280. package/dist/pipeline/compiler/telemetry/cost-tracker.js +146 -0
  281. package/dist/pipeline/compiler/telemetry/index.d.ts +14 -0
  282. package/dist/pipeline/compiler/telemetry/index.js +19 -0
  283. package/dist/pipeline/compiler/telemetry/redactor.d.ts +58 -0
  284. package/dist/pipeline/compiler/telemetry/redactor.js +222 -0
  285. package/dist/pipeline/compiler/telemetry/tool-classifier.d.ts +32 -0
  286. package/dist/pipeline/compiler/telemetry/tool-classifier.js +120 -0
  287. package/dist/pipeline/compiler/telemetry/trace-collector.d.ts +75 -0
  288. package/dist/pipeline/compiler/telemetry/trace-collector.js +297 -0
  289. package/dist/pipeline/compiler/telemetry/trace-store.d.ts +78 -0
  290. package/dist/pipeline/compiler/telemetry/trace-store.js +85 -0
  291. package/dist/pipeline/compiler/variable-resolver.d.ts +46 -0
  292. package/dist/pipeline/compiler/variable-resolver.js +115 -0
  293. package/dist/pipeline/coverage-audit.d.ts +15 -5
  294. package/dist/pipeline/coverage-audit.js +41 -22
  295. package/dist/pipeline/eval-constants.d.ts +16 -6
  296. package/dist/pipeline/eval-constants.js +25 -4
  297. package/dist/pipeline/eval-fingerprint.d.ts +2 -2
  298. package/dist/pipeline/eval-fingerprint.js +8 -9
  299. package/dist/pipeline/expand-tasks.d.ts +19 -10
  300. package/dist/pipeline/expand-tasks.js +34 -28
  301. package/dist/pipeline/gap-analysis.d.ts +1 -1
  302. package/dist/pipeline/gap-analysis.js +2 -2
  303. package/dist/pipeline/generate-configs.d.ts +22 -4
  304. package/dist/pipeline/generate-configs.js +53 -24
  305. package/dist/pipeline/grader-api.d.ts +3 -3
  306. package/dist/pipeline/grader-api.js +5 -12
  307. package/dist/pipeline/grader-compare-runner.js +20 -27
  308. package/dist/pipeline/grader-comparison.d.ts +4 -8
  309. package/dist/pipeline/grader-comparison.js +11 -17
  310. package/dist/pipeline/grader-consistency-runner.d.ts +2 -3
  311. package/dist/pipeline/grader-consistency-runner.js +16 -20
  312. package/dist/pipeline/grader-consistency.d.ts +6 -10
  313. package/dist/pipeline/grader-consistency.js +13 -32
  314. package/dist/pipeline/grader-sensitivity-runner.js +7 -5
  315. package/dist/pipeline/grader-sensitivity.d.ts +2 -6
  316. package/dist/pipeline/grader-sensitivity.js +10 -10
  317. package/dist/pipeline/grader-validate-runner.js +7 -5
  318. package/dist/pipeline/grader-validation.d.ts +2 -6
  319. package/dist/pipeline/grader-validation.js +14 -22
  320. package/dist/pipeline/map-request-to-config.js +7 -1
  321. package/dist/pipeline/mirror-repo-tasks.d.ts +13 -13
  322. package/dist/pipeline/mirror-repo-tasks.js +22 -21
  323. package/dist/pipeline/normalize-mode.d.ts +49 -0
  324. package/dist/pipeline/normalize-mode.js +64 -0
  325. package/dist/pipeline/plan.d.ts +5 -2
  326. package/dist/pipeline/plan.js +134 -78
  327. package/dist/pipeline/pr-comment.js +2 -0
  328. package/dist/pipeline/profile-resolution.d.ts +22 -14
  329. package/dist/pipeline/profile-resolution.js +41 -19
  330. package/dist/pipeline/provenance.d.ts +2 -2
  331. package/dist/pipeline/provenance.js +12 -17
  332. package/dist/pipeline/release-report.js +4 -4
  333. package/dist/pipeline/repo-threshold-evaluator.d.ts +1 -1
  334. package/dist/pipeline/repo-threshold-evaluator.js +1 -1
  335. package/dist/pipeline/rubric-loader.d.ts +20 -0
  336. package/dist/pipeline/rubric-loader.js +37 -0
  337. package/dist/pipeline/validate.d.ts +4 -4
  338. package/dist/pipeline/validate.js +64 -53
  339. package/dist/schedules/loader.js +18 -8
  340. package/dist/scripts/migrate-task-mode.d.ts +24 -0
  341. package/dist/scripts/migrate-task-mode.js +85 -0
  342. package/dist/scripts/migrate-tasks-to-content-lake.js +11 -10
  343. package/dist/scripts/validate-task-sources.d.ts +1 -1
  344. package/dist/scripts/validate-task-sources.js +15 -15
  345. package/dist/sinks/loader.js +5 -7
  346. package/dist/sources.d.ts +7 -7
  347. package/dist/sources.js +22 -24
  348. package/dist/webhook/dispatch.js +2 -1
  349. package/package.json +15 -4
  350. package/tasks/knowledge-probe/define-type-api.task.ts +55 -0
  351. package/tasks/knowledge-probe/groq-projections.task.ts +59 -0
  352. package/tasks/literacy/frameworks.task.ts +128 -0
  353. package/tasks/literacy/functions.task.ts +69 -0
  354. package/tasks/literacy/groq.task.ts +258 -0
  355. package/tasks/literacy/nextjs-live.task.ts +75 -0
  356. package/tasks/literacy/studio-setup.task.ts +131 -0
  357. package/tasks/literacy/visual-editing.task.ts +146 -0
  358. package/config/features.yaml +0 -116
  359. package/config/models.yaml +0 -116
  360. package/config/prompts.yaml +0 -75
  361. package/config/rubrics.yaml +0 -81
  362. package/config/schedules.yaml +0 -43
  363. package/config/sinks.yaml +0 -54
  364. package/config/sources.yaml +0 -51
  365. package/config/thresholds.yaml +0 -49
  366. package/dist/_vendor/ailf-tasks/cli.d.ts +0 -8
  367. package/dist/_vendor/ailf-tasks/cli.js +0 -61
  368. package/dist/_vendor/ailf-tasks/index.d.ts +0 -13
  369. package/dist/_vendor/ailf-tasks/index.js +0 -16
  370. package/dist/_vendor/ailf-tasks/parser.d.ts +0 -27
  371. package/dist/_vendor/ailf-tasks/parser.js +0 -73
  372. package/dist/_vendor/ailf-tasks/schemas.d.ts +0 -198
  373. package/dist/_vendor/ailf-tasks/schemas.js +0 -180
  374. package/dist/_vendor/ailf-tasks/validation.d.ts +0 -47
  375. package/dist/_vendor/ailf-tasks/validation.js +0 -162
  376. package/dist/agent-observer/test-imports.d.ts +0 -7
  377. package/dist/agent-observer/test-imports.js +0 -185
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * Adapter: Load task definitions from the Sanity Content Lake.
3
3
  *
4
- * Fetches ailf.task documents via GROQ and maps them to the canonical
5
- * TaskDefinition type. This adapter is the Content Lake counterpart of
6
- * YamlTaskSource both produce identical TaskDefinition[] for the same
7
- * logical tasks. The pipeline never knows which adapter loaded the tasks.
4
+ * Fetches ailf.task documents via GROQ and maps them to
5
+ * GeneralizedTaskDefinition (LiteracyTaskDefinition variant). This
6
+ * adapter is the Content Lake counterpart of YamlTaskSource — both
7
+ * produce identical GeneralizedTaskDefinition[] for the same logical
8
+ * tasks. The pipeline never knows which adapter loaded the tasks.
8
9
  *
9
10
  * Wired in the composition root when --task-source content-lake is set.
10
11
  *
@@ -16,11 +17,11 @@
16
17
  // ---------------------------------------------------------------------------
17
18
  /**
18
19
  * GROQ query that projects ailf.task documents into a shape suitable for
19
- * mapping to TaskDefinition.
20
+ * mapping to LiteracyTaskDefinition.
20
21
  *
21
22
  * Key projections:
22
- * - featureArea reference → dereferenced areaId string
23
- * - canonicalDocs[] → dereferenced article slugs with reason
23
+ * - area reference → dereferenced areaId string
24
+ * - contextDocs[] → dereferenced article slugs with reason
24
25
  * - referenceSolution → title (for identification, not full content)
25
26
  *
26
27
  * Filter parameters:
@@ -29,7 +30,7 @@
29
30
  */
30
31
  const TASKS_QUERY = /* groq */ `
31
32
  *[_type == "ailf.task"
32
- && (!defined($areas) || featureArea->areaId.current in $areas)
33
+ && (!defined($areas) || area->areaId.current in $areas)
33
34
  && (!defined($taskIds) || id.current in $taskIds)
34
35
  && (
35
36
  // Status-based filtering (unified — replaces execution.enabled)
@@ -40,13 +41,13 @@ const TASKS_QUERY = /* groq */ `
40
41
  || (defined($taskIds) && status != "archived")
41
42
  )
42
43
  && (!defined($tags) || count((tags)[@ in $tags]) > 0)
43
- ] | order(featureArea->areaId.current asc, id.current asc) {
44
+ ] | order(area->areaId.current asc, id.current asc) {
44
45
  "taskId": id.current,
45
- description,
46
- "featureAreaId": featureArea->areaId.current,
47
- taskPrompt,
46
+ title,
47
+ "areaId": area->areaId.current,
48
+ promptText,
48
49
  docCoverage,
49
- "canonicalDocs": canonicalDocs[] {
50
+ "contextDocs": contextDocs[] {
50
51
  refType,
51
52
  "slug": doc->slug.current,
52
53
  "docRefId": doc->_id,
@@ -56,7 +57,7 @@ const TASKS_QUERY = /* groq */ `
56
57
  perspective,
57
58
  reason
58
59
  },
59
- assert,
60
+ assertions,
60
61
  rawAssert,
61
62
  baseline,
62
63
  tags,
@@ -79,7 +80,7 @@ export class ContentLakeTaskSource {
79
80
  }
80
81
  const definitions = [];
81
82
  for (const entry of raw) {
82
- const mapped = mapToTaskDefinition(entry);
83
+ const mapped = mapToLiteracyTask(entry);
83
84
  if (!mapped)
84
85
  continue;
85
86
  definitions.push(mapped);
@@ -105,35 +106,29 @@ function buildGroqParams(filter) {
105
106
  };
106
107
  }
107
108
  // ---------------------------------------------------------------------------
108
- // Mapping: Content Lake → TaskDefinition
109
+ // Mapping: Content Lake → LiteracyTaskDefinition
109
110
  // ---------------------------------------------------------------------------
110
111
  /**
111
- * Map a Content Lake ailf.task document to the canonical TaskDefinition.
112
+ * Map a Content Lake ailf.task document directly to a LiteracyTaskDefinition.
112
113
  *
113
114
  * Returns null if the document is missing required fields (taskId,
114
- * description, featureAreaId, taskPrompt). These are required by the
115
+ * title, areaId, promptText). These are required by the
115
116
  * Studio schema, but defensive coding handles edge cases (drafts,
116
117
  * partially-created documents, etc.).
117
118
  */
118
- function mapToTaskDefinition(raw) {
119
+ function mapToLiteracyTask(raw) {
119
120
  // Required fields — skip malformed documents
120
- if (!raw.taskId ||
121
- !raw.description ||
122
- !raw.featureAreaId ||
123
- !raw.taskPrompt) {
121
+ if (!raw.taskId || !raw.title || !raw.areaId || !raw.promptText) {
124
122
  return null;
125
123
  }
126
- const canonicalDocs = (raw.canonicalDocs ?? [])
124
+ const docs = (raw.contextDocs ?? [])
127
125
  .map(mapCanonicalDocRef)
128
126
  .filter((d) => d !== null);
129
- const assertions = mapAssertions(raw.assert ?? []);
127
+ const assertions = mapAssertions(raw.assertions ?? []);
130
128
  // Append raw pass-through assertions (escape hatch for arbitrary Promptfoo
131
129
  // assertion types that aren't in the curated list). These bypass template
132
130
  // resolution and flow directly into the expanded Promptfoo test case as
133
- // value-based assertions. In baseline mode, buildBaselineAsserts() with
134
- // "full" (the default) copies all assertions as-is, so rawAssert
135
- // entries only run in the gold variant — consistent with how regular
136
- // value-based assertions like `contains` or `regex` behave.
131
+ // value-based assertions.
137
132
  const rawAssertions = (raw.rawAssert ?? [])
138
133
  .filter((a) => !!a.type)
139
134
  .map((a) => ({
@@ -141,7 +136,10 @@ function mapToTaskDefinition(raw) {
141
136
  ...(a.value !== undefined ? { value: a.value } : {}),
142
137
  ...(a.threshold !== undefined ? { threshold: a.threshold } : {}),
143
138
  }));
144
- const allAssertions = [...assertions, ...rawAssertions];
139
+ const allAssertions = [
140
+ ...assertions,
141
+ ...rawAssertions,
142
+ ];
145
143
  const baseline = raw.baseline
146
144
  ? {
147
145
  ...(raw.baseline.enabled !== undefined
@@ -155,25 +153,23 @@ function mapToTaskDefinition(raw) {
155
153
  }
156
154
  : undefined;
157
155
  return {
156
+ mode: "literacy",
157
+ id: raw.taskId,
158
+ title: raw.title,
159
+ area: raw.areaId,
160
+ prompt: { text: raw.promptText },
161
+ context: { docs },
158
162
  assertions: allAssertions,
159
- canonicalDocs,
160
- description: raw.description,
161
163
  docCoverage: raw.docCoverage ?? false,
162
- featureArea: raw.featureAreaId,
163
- id: raw.taskId,
164
164
  // Reference solution path is not meaningful for CL tasks — the solution
165
165
  // content lives in the Content Lake document, not on the filesystem.
166
- // Downstream consumers that need the solution content will need to fetch
167
- // it via the referenceSolution reference. For now, use empty string
168
- // (same as tasks without a reference solution).
169
166
  referenceSolution: "",
170
- taskPrompt: raw.taskPrompt,
171
167
  ...(baseline ? { baseline } : {}),
172
168
  ...(raw.tags?.length ? { tags: raw.tags } : {}),
173
169
  };
174
170
  }
175
171
  /**
176
- * Map a Content Lake canonical doc entry to the polymorphic CanonicalDocRef.
172
+ * Map a Content Lake context doc entry to the polymorphic CanonicalDocRef.
177
173
  *
178
174
  * Uses `refType` to determine which value field to read. Falls back to
179
175
  * slug-based resolution for backward compatibility (documents created
@@ -1,7 +1,8 @@
1
1
  export { CompositeTaskSource } from "./composite-task-source.js";
2
2
  export { ContentLakeTaskSource } from "./content-lake-task-source.js";
3
- export { parseRepoConfig, parseRepoTaskFile, RepoConfigSchema, RepoTaskSchema, CURATED_ASSERTION_TYPES, RUBRIC_TEMPLATE_NAMES, type RepoConfig, type RepoTask, } from "./repo-schemas.js";
3
+ export { CanonicalTaskFileSchema, CanonicalTaskSchema, CURATED_ASSERTION_TYPES, detectLegacyFieldNames, parseCanonicalTaskFile, parseRepoConfig, RepoConfigSchema, RUBRIC_TEMPLATE_NAMES, type CanonicalTask, type CuratedAssertionType, type RepoConfig, type RubricTemplateName, } from "./repo-schemas.js";
4
4
  export { RepoTaskSource } from "./repo-task-source.js";
5
5
  export { detectTriggerContext, resolveTrigger, type ResolvedTrigger, type TriggerContext, } from "./repo-trigger.js";
6
- export { formatValidationResult, validateRepoTasks, type ValidationMessage, type ValidationResult, } from "./repo-validation.js";
6
+ export { formatValidationResult, validateCanonicalTasks, type ValidationMessage, type ValidationResult, } from "./repo-validation.js";
7
+ export { discoverTsTaskFiles, loadAllTsTaskFiles, loadTsTaskFile, } from "./task-file-loader.js";
7
8
  export { YamlTaskSource } from "./yaml-task-source.js";
@@ -1,7 +1,8 @@
1
1
  export { CompositeTaskSource } from "./composite-task-source.js";
2
2
  export { ContentLakeTaskSource } from "./content-lake-task-source.js";
3
- export { parseRepoConfig, parseRepoTaskFile, RepoConfigSchema, RepoTaskSchema, CURATED_ASSERTION_TYPES, RUBRIC_TEMPLATE_NAMES, } from "./repo-schemas.js";
3
+ export { CanonicalTaskFileSchema, CanonicalTaskSchema, CURATED_ASSERTION_TYPES, detectLegacyFieldNames, parseCanonicalTaskFile, parseRepoConfig, RepoConfigSchema, RUBRIC_TEMPLATE_NAMES, } from "./repo-schemas.js";
4
4
  export { RepoTaskSource } from "./repo-task-source.js";
5
5
  export { detectTriggerContext, resolveTrigger, } from "./repo-trigger.js";
6
- export { formatValidationResult, validateRepoTasks, } from "./repo-validation.js";
6
+ export { formatValidationResult, validateCanonicalTasks, } from "./repo-validation.js";
7
+ export { discoverTsTaskFiles, loadAllTsTaskFiles, loadTsTaskFile, } from "./task-file-loader.js";
7
8
  export { YamlTaskSource } from "./yaml-task-source.js";
@@ -1,29 +1,231 @@
1
1
  /**
2
- * repo-schemas.ts — Re-exports task schemas + defines config schemas.
2
+ * repo-schemas.ts — Canonical Zod schemas for task and config validation.
3
3
  *
4
- * Task schemas (RepoTaskSchema, assertions, etc.) are the single source
5
- * of truth in @sanity/ailf-tasks. This file re-exports them so existing
6
- * importers within the eval package don't need to change their paths.
4
+ * Task schemas validate .ailf/tasks/*.yaml and .task.ts files against the
5
+ * canonical GeneralizedTaskDefinition shape. Field names match the internal
6
+ * domain model: `area` (not featureArea), `assertions` (not assert),
7
+ * `context.docs` (not canonicalDocs), `prompt.text` (not vars.task).
7
8
  *
8
- * Config schemas (RepoConfigSchema, trigger config, etc.) remain here
9
- * because they are specific to the eval pipeline and not needed by
10
- * external tools that only validate task YAML.
9
+ * Previously this file re-exported from @sanity/ailf-tasks. That package
10
+ * has been eliminated all schema logic now lives here.
11
11
  *
12
- * @see packages/tasks/src/schemas.ts task schema source of truth
12
+ * Config schemas (RepoConfigSchema, trigger config) are eval-pipeline-
13
+ * specific and remain here unchanged.
14
+ *
15
+ * @see packages/core/src/types/generalized-task.ts — canonical TypeScript types
13
16
  * @see docs/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
14
17
  */
15
- import { RepoTaskFileSchema as _Schema } from "../../_vendor/ailf-tasks/index.d.ts";
16
18
  import { z } from "zod";
17
- export { CURATED_ASSERTION_TYPES, RepoTaskFileSchema, RepoTaskSchema, RUBRIC_TEMPLATE_NAMES, type CuratedAssertionType, type RepoTask, type RubricTemplateName, } from "../../_vendor/ailf-tasks/index.d.ts";
18
- export { loadTaskDir, parseTaskFile } from "../../_vendor/ailf-tasks/index.d.ts";
19
19
  /**
20
- * Parse and validate a repo task file's content. Returns typed tasks or throws
21
- * with a user-friendly Zod error message.
20
+ * The set of assertion types allowed in task files.
21
+ *
22
+ * This is a curated subset of Promptfoo assertion types — we expose only the
23
+ * types that are stable, well-documented, and useful for external authors.
24
+ */
25
+ export declare const CURATED_ASSERTION_TYPES: readonly ["llm-rubric", "contains", "contains-any", "contains-all", "not-contains", "icontains", "icontains-any", "regex", "javascript", "similar", "cost", "latency"];
26
+ export type CuratedAssertionType = (typeof CURATED_ASSERTION_TYPES)[number];
27
+ /**
28
+ * Valid rubric template names — must match keys in config/rubrics.yaml.
29
+ */
30
+ export declare const RUBRIC_TEMPLATE_NAMES: readonly ["task-completion", "code-correctness", "doc-coverage"];
31
+ export type RubricTemplateName = (typeof RUBRIC_TEMPLATE_NAMES)[number];
32
+ /**
33
+ * Zod schema for a single task definition using canonical field names.
34
+ *
35
+ * Uses .passthrough() to allow mode-specific fields (serverConfig, sandbox,
36
+ * handler, etc.) without listing every possible field. Mode-specific
37
+ * validation is deferred to the pipeline's mode handlers.
38
+ */
39
+ export declare const CanonicalTaskSchema: z.ZodObject<{
40
+ id: z.ZodString;
41
+ mode: z.ZodDefault<z.ZodString>;
42
+ title: z.ZodString;
43
+ description: z.ZodOptional<z.ZodString>;
44
+ area: z.ZodOptional<z.ZodString>;
45
+ difficulty: z.ZodOptional<z.ZodEnum<{
46
+ basic: "basic";
47
+ intermediate: "intermediate";
48
+ advanced: "advanced";
49
+ }>>;
50
+ status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
51
+ active: "active";
52
+ draft: "draft";
53
+ paused: "paused";
54
+ archived: "archived";
55
+ }>>>;
56
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
57
+ prompt: z.ZodOptional<z.ZodObject<{
58
+ template: z.ZodOptional<z.ZodString>;
59
+ text: z.ZodOptional<z.ZodString>;
60
+ systemMessage: z.ZodOptional<z.ZodString>;
61
+ vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
62
+ }, z.core.$strip>>;
63
+ context: z.ZodOptional<z.ZodObject<{
64
+ docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
65
+ id: z.ZodString;
66
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
67
+ slug: z.ZodOptional<z.ZodString>;
68
+ path: z.ZodOptional<z.ZodString>;
69
+ }, z.core.$strip>, z.ZodObject<{
70
+ slug: z.ZodString;
71
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
72
+ }, z.core.$strip>, z.ZodObject<{
73
+ path: z.ZodString;
74
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
75
+ }, z.core.$strip>, z.ZodObject<{
76
+ perspective: z.ZodString;
77
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
78
+ }, z.core.$strip>]>>>;
79
+ fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
80
+ }, z.core.$strip>>;
81
+ assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
82
+ type: z.ZodLiteral<"llm-rubric">;
83
+ template: z.ZodEnum<{
84
+ "task-completion": "task-completion";
85
+ "code-correctness": "code-correctness";
86
+ "doc-coverage": "doc-coverage";
87
+ }>;
88
+ criteria: z.ZodArray<z.ZodString>;
89
+ weight: z.ZodOptional<z.ZodNumber>;
90
+ }, z.core.$strip>, z.ZodObject<{
91
+ type: z.ZodEnum<{
92
+ "llm-rubric": "llm-rubric";
93
+ contains: "contains";
94
+ "contains-any": "contains-any";
95
+ "contains-all": "contains-all";
96
+ "not-contains": "not-contains";
97
+ icontains: "icontains";
98
+ "icontains-any": "icontains-any";
99
+ regex: "regex";
100
+ javascript: "javascript";
101
+ similar: "similar";
102
+ cost: "cost";
103
+ latency: "latency";
104
+ }>;
105
+ value: z.ZodOptional<z.ZodUnknown>;
106
+ threshold: z.ZodOptional<z.ZodNumber>;
107
+ weight: z.ZodOptional<z.ZodNumber>;
108
+ }, z.core.$loose>]>>>;
109
+ referenceSolution: z.ZodOptional<z.ZodString>;
110
+ docCoverage: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
111
+ baseline: z.ZodOptional<z.ZodObject<{
112
+ enabled: z.ZodOptional<z.ZodBoolean>;
113
+ rubric: z.ZodOptional<z.ZodEnum<{
114
+ full: "full";
115
+ abbreviated: "abbreviated";
116
+ none: "none";
117
+ }>>;
118
+ }, z.core.$strip>>;
119
+ rubric: z.ZodOptional<z.ZodUnknown>;
120
+ providers: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
121
+ options: z.ZodOptional<z.ZodUnknown>;
122
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
123
+ }, z.core.$loose>;
124
+ export type CanonicalTask = z.infer<typeof CanonicalTaskSchema>;
125
+ /**
126
+ * Schema for an array of canonical tasks — what a single .ailf/tasks/*.yaml
127
+ * file contains. Each file must define at least one task.
128
+ */
129
+ export declare const CanonicalTaskFileSchema: z.ZodArray<z.ZodObject<{
130
+ id: z.ZodString;
131
+ mode: z.ZodDefault<z.ZodString>;
132
+ title: z.ZodString;
133
+ description: z.ZodOptional<z.ZodString>;
134
+ area: z.ZodOptional<z.ZodString>;
135
+ difficulty: z.ZodOptional<z.ZodEnum<{
136
+ basic: "basic";
137
+ intermediate: "intermediate";
138
+ advanced: "advanced";
139
+ }>>;
140
+ status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
141
+ active: "active";
142
+ draft: "draft";
143
+ paused: "paused";
144
+ archived: "archived";
145
+ }>>>;
146
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
147
+ prompt: z.ZodOptional<z.ZodObject<{
148
+ template: z.ZodOptional<z.ZodString>;
149
+ text: z.ZodOptional<z.ZodString>;
150
+ systemMessage: z.ZodOptional<z.ZodString>;
151
+ vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
152
+ }, z.core.$strip>>;
153
+ context: z.ZodOptional<z.ZodObject<{
154
+ docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
155
+ id: z.ZodString;
156
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
157
+ slug: z.ZodOptional<z.ZodString>;
158
+ path: z.ZodOptional<z.ZodString>;
159
+ }, z.core.$strip>, z.ZodObject<{
160
+ slug: z.ZodString;
161
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
162
+ }, z.core.$strip>, z.ZodObject<{
163
+ path: z.ZodString;
164
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
165
+ }, z.core.$strip>, z.ZodObject<{
166
+ perspective: z.ZodString;
167
+ reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
168
+ }, z.core.$strip>]>>>;
169
+ fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
170
+ }, z.core.$strip>>;
171
+ assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
172
+ type: z.ZodLiteral<"llm-rubric">;
173
+ template: z.ZodEnum<{
174
+ "task-completion": "task-completion";
175
+ "code-correctness": "code-correctness";
176
+ "doc-coverage": "doc-coverage";
177
+ }>;
178
+ criteria: z.ZodArray<z.ZodString>;
179
+ weight: z.ZodOptional<z.ZodNumber>;
180
+ }, z.core.$strip>, z.ZodObject<{
181
+ type: z.ZodEnum<{
182
+ "llm-rubric": "llm-rubric";
183
+ contains: "contains";
184
+ "contains-any": "contains-any";
185
+ "contains-all": "contains-all";
186
+ "not-contains": "not-contains";
187
+ icontains: "icontains";
188
+ "icontains-any": "icontains-any";
189
+ regex: "regex";
190
+ javascript: "javascript";
191
+ similar: "similar";
192
+ cost: "cost";
193
+ latency: "latency";
194
+ }>;
195
+ value: z.ZodOptional<z.ZodUnknown>;
196
+ threshold: z.ZodOptional<z.ZodNumber>;
197
+ weight: z.ZodOptional<z.ZodNumber>;
198
+ }, z.core.$loose>]>>>;
199
+ referenceSolution: z.ZodOptional<z.ZodString>;
200
+ docCoverage: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
201
+ baseline: z.ZodOptional<z.ZodObject<{
202
+ enabled: z.ZodOptional<z.ZodBoolean>;
203
+ rubric: z.ZodOptional<z.ZodEnum<{
204
+ full: "full";
205
+ abbreviated: "abbreviated";
206
+ none: "none";
207
+ }>>;
208
+ }, z.core.$strip>>;
209
+ rubric: z.ZodOptional<z.ZodUnknown>;
210
+ providers: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
211
+ options: z.ZodOptional<z.ZodUnknown>;
212
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
213
+ }, z.core.$loose>>;
214
+ /**
215
+ * Parse and validate a task file's content against the canonical schema.
216
+ * Returns typed tasks or throws with a user-friendly Zod error message.
217
+ *
218
+ * Accepts pre-parsed YAML data (unknown), not a raw string.
219
+ */
220
+ export declare function parseCanonicalTaskFile(raw: unknown, filename: string): CanonicalTask[];
221
+ /**
222
+ * Detect legacy field names in raw task data and return helpful messages.
22
223
  *
23
- * NOTE: This accepts pre-parsed YAML data (unknown), not a raw string.
24
- * For raw YAML strings, use `parseTaskFile()` from @sanity/ailf-tasks.
224
+ * Runs BEFORE Zod parsing to catch the most common migration mistake —
225
+ * using old field names from @sanity/ailf-tasks instead of the canonical
226
+ * GeneralizedTaskDefinition shape.
25
227
  */
26
- export declare function parseRepoTaskFile(raw: unknown, filename: string): z.infer<typeof _Schema>;
228
+ export declare function detectLegacyFieldNames(raw: unknown, filename: string): string[];
27
229
  /**
28
230
  * Zod schema for .ailf/config.yaml — controls documentation source,
29
231
  * report destination, and trigger behavior for evaluations from an