@sanity/ailf 2.0.0 → 2.0.2

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 (444) hide show
  1. package/canonical/grader-references/README.md +2 -2
  2. package/canonical/reference-solutions/content-lake/mutations.ts +160 -0
  3. package/canonical/reference-solutions/content-lake/realtime.ts +187 -0
  4. package/canonical/reference-solutions/image-handling/asset-pipeline.tsx +166 -0
  5. package/canonical/reference-solutions/portable-text/custom-blocks.ts +204 -0
  6. package/canonical/reference-solutions/portable-text/rendering.tsx +163 -0
  7. package/config/features.ts +1 -1
  8. package/config/models.ts +28 -23
  9. package/config/sources.ts +1 -1
  10. package/config/thresholds.ts +1 -1
  11. package/dist/_vendor/ailf-core/__tests__/comparison-formatters.test.d.ts +10 -0
  12. package/dist/_vendor/ailf-core/__tests__/comparison-formatters.test.js +185 -0
  13. package/dist/_vendor/ailf-core/artifact-capture/__tests__/noop-collector.test.d.ts +6 -0
  14. package/dist/_vendor/ailf-core/artifact-capture/__tests__/noop-collector.test.js +42 -0
  15. package/dist/_vendor/ailf-core/artifact-capture/noop-collector.d.ts +14 -0
  16. package/dist/_vendor/ailf-core/artifact-capture/noop-collector.js +25 -0
  17. package/dist/_vendor/ailf-core/config-helpers.d.ts +6 -0
  18. package/dist/_vendor/ailf-core/config-helpers.js +29 -0
  19. package/dist/_vendor/ailf-core/examples/index.d.ts +164 -94
  20. package/dist/_vendor/ailf-core/examples/index.js +208 -114
  21. package/dist/_vendor/ailf-core/index.d.ts +1 -0
  22. package/dist/_vendor/ailf-core/index.js +1 -0
  23. package/dist/_vendor/ailf-core/ports/artifact-collector.d.ts +94 -0
  24. package/dist/_vendor/ailf-core/ports/artifact-collector.js +13 -0
  25. package/dist/_vendor/ailf-core/ports/capture-comparator.d.ts +138 -0
  26. package/dist/_vendor/ailf-core/ports/capture-comparator.js +10 -0
  27. package/dist/_vendor/ailf-core/ports/context.d.ts +20 -1
  28. package/dist/_vendor/ailf-core/ports/eval-runner.d.ts +6 -0
  29. package/dist/_vendor/ailf-core/ports/index.d.ts +2 -0
  30. package/dist/_vendor/ailf-core/ports/pipeline-step.d.ts +11 -0
  31. package/dist/_vendor/ailf-core/ports/task-source.d.ts +3 -3
  32. package/dist/_vendor/ailf-core/ports/task-source.js +3 -3
  33. package/dist/_vendor/ailf-core/schemas/pipeline-request.d.ts +6 -1
  34. package/dist/_vendor/ailf-core/schemas/pipeline-request.js +14 -2
  35. package/dist/_vendor/ailf-core/services/config-helpers.d.ts +16 -1
  36. package/dist/_vendor/ailf-core/services/config-helpers.js +21 -0
  37. package/dist/_vendor/ailf-core/services/index.d.ts +1 -1
  38. package/dist/_vendor/ailf-core/services/index.js +1 -1
  39. package/dist/_vendor/ailf-core/services/scoring.js +9 -0
  40. package/dist/_vendor/ailf-core/types/generalized-task.d.ts +12 -1
  41. package/dist/_vendor/ailf-core/types/generalized-task.js +1 -1
  42. package/dist/_vendor/ailf-core/types/index.d.ts +47 -4
  43. package/dist/_vendor/ailf-core/types/plugin-registry.d.ts +27 -0
  44. package/dist/_vendor/ailf-shared/eval-modes.d.ts +15 -0
  45. package/dist/_vendor/ailf-shared/eval-modes.js +18 -0
  46. package/dist/_vendor/ailf-tasks/cli.d.ts +8 -0
  47. package/dist/_vendor/ailf-tasks/cli.js +61 -0
  48. package/dist/_vendor/ailf-tasks/index.d.ts +13 -0
  49. package/dist/_vendor/ailf-tasks/index.js +16 -0
  50. package/dist/_vendor/ailf-tasks/parser.d.ts +27 -0
  51. package/dist/_vendor/ailf-tasks/parser.js +73 -0
  52. package/dist/_vendor/ailf-tasks/schemas.d.ts +198 -0
  53. package/dist/_vendor/ailf-tasks/schemas.js +180 -0
  54. package/dist/_vendor/ailf-tasks/validation.d.ts +47 -0
  55. package/dist/_vendor/ailf-tasks/validation.js +162 -0
  56. package/dist/adapters/api-client/remediation.js +2 -2
  57. package/dist/adapters/config-sources/file-config-adapter.js +6 -1
  58. package/dist/adapters/eval-runners/promptfoo-eval-adapter.js +8 -2
  59. package/dist/adapters/index.d.ts +0 -1
  60. package/dist/adapters/index.js +0 -1
  61. package/dist/adapters/task-sources/composite-task-source.d.ts +1 -1
  62. package/dist/adapters/task-sources/composite-task-source.js +1 -1
  63. package/dist/adapters/task-sources/content-lake-task-source.d.ts +4 -6
  64. package/dist/adapters/task-sources/content-lake-task-source.js +4 -6
  65. package/dist/adapters/task-sources/index.d.ts +1 -2
  66. package/dist/adapters/task-sources/index.js +1 -2
  67. package/dist/adapters/task-sources/repo-schemas.d.ts +1 -1
  68. package/dist/adapters/task-sources/repo-schemas.js +2 -2
  69. package/dist/adapters/task-sources/repo-task-source.js +1 -1
  70. package/dist/adapters/task-sources/repo-trigger.d.ts +1 -1
  71. package/dist/adapters/task-sources/repo-trigger.js +1 -1
  72. package/dist/adapters/task-sources/task-file-loader.d.ts +9 -6
  73. package/dist/adapters/task-sources/task-file-loader.js +20 -6
  74. package/dist/agent-observer/test-imports.d.ts +7 -0
  75. package/dist/agent-observer/test-imports.js +185 -0
  76. package/dist/artifact-capture/comparator.d.ts +22 -0
  77. package/dist/artifact-capture/comparator.js +493 -0
  78. package/dist/artifact-capture/filesystem-collector.d.ts +42 -0
  79. package/dist/artifact-capture/filesystem-collector.js +237 -0
  80. package/dist/artifact-capture/redact-artifact.d.ts +20 -0
  81. package/dist/artifact-capture/redact-artifact.js +115 -0
  82. package/dist/assertions/source-isolation.d.ts +1 -1
  83. package/dist/assertions/source-isolation.js +1 -1
  84. package/dist/cli.js +4 -0
  85. package/dist/commands/calculate-scores.js +1 -0
  86. package/dist/commands/capture-compare.d.ts +15 -0
  87. package/dist/commands/capture-compare.js +253 -0
  88. package/dist/commands/capture-list.d.ts +12 -0
  89. package/dist/commands/capture-list.js +147 -0
  90. package/dist/commands/capture.d.ts +9 -0
  91. package/dist/commands/capture.js +16 -0
  92. package/dist/commands/chronic-failures.d.ts +8 -0
  93. package/dist/commands/chronic-failures.js +33 -0
  94. package/dist/commands/explain-handler.d.ts +1 -1
  95. package/dist/commands/explain-handler.js +37 -8
  96. package/dist/commands/fetch-docs.js +1 -0
  97. package/dist/commands/generate-configs.d.ts +3 -3
  98. package/dist/commands/generate-configs.js +20 -8
  99. package/dist/commands/init.d.ts +2 -3
  100. package/dist/commands/init.js +56 -170
  101. package/dist/commands/pipeline-action.d.ts +7 -1
  102. package/dist/commands/pipeline-action.js +43 -19
  103. package/dist/commands/pipeline.d.ts +6 -1
  104. package/dist/commands/pipeline.js +7 -2
  105. package/dist/commands/pr-comment.js +1 -0
  106. package/dist/commands/publish.js +1 -0
  107. package/dist/commands/shared/help.js +2 -2
  108. package/dist/commands/update-quality-scores.d.ts +5 -0
  109. package/dist/commands/update-quality-scores.js +20 -0
  110. package/dist/composition-root.d.ts +2 -3
  111. package/dist/composition-root.js +27 -14
  112. package/dist/config/features.ts +23 -0
  113. package/dist/config/models.ts +100 -0
  114. package/dist/config/prompts.ts +16 -0
  115. package/dist/config/rubrics.ts +225 -0
  116. package/dist/config/schedules.ts +47 -0
  117. package/dist/config/sinks.ts +37 -0
  118. package/dist/config/sources.ts +21 -0
  119. package/dist/config/thresholds.ts +61 -0
  120. package/dist/lib/agent-behavior-report.d.ts +8 -0
  121. package/dist/lib/agent-behavior-report.js +185 -0
  122. package/dist/lib/baseline.d.ts +19 -0
  123. package/dist/lib/baseline.js +153 -0
  124. package/dist/lib/calculate-scores.d.ts +23 -0
  125. package/dist/lib/calculate-scores.js +42 -0
  126. package/dist/lib/compare.d.ts +18 -0
  127. package/dist/lib/compare.js +170 -0
  128. package/dist/lib/coverage-audit.d.ts +4 -0
  129. package/dist/lib/coverage-audit.js +42 -0
  130. package/dist/lib/discovery-report.d.ts +13 -0
  131. package/dist/lib/discovery-report.js +57 -0
  132. package/dist/lib/fetch-docs.d.ts +30 -0
  133. package/dist/lib/fetch-docs.js +171 -0
  134. package/dist/lib/generate-configs.d.ts +25 -0
  135. package/dist/lib/generate-configs.js +42 -0
  136. package/dist/lib/grader-api.d.ts +21 -0
  137. package/dist/lib/grader-api.js +34 -0
  138. package/dist/lib/grader-compare.d.ts +19 -0
  139. package/dist/lib/grader-compare.js +91 -0
  140. package/dist/lib/grader-consistency.d.ts +27 -0
  141. package/dist/lib/grader-consistency.js +79 -0
  142. package/dist/lib/grader-sensitivity.d.ts +19 -0
  143. package/dist/lib/grader-sensitivity.js +75 -0
  144. package/dist/lib/grader-validate.d.ts +19 -0
  145. package/dist/lib/grader-validate.js +78 -0
  146. package/dist/lib/measure-retrieval.d.ts +14 -0
  147. package/dist/lib/measure-retrieval.js +71 -0
  148. package/dist/lib/pr-comment.d.ts +16 -0
  149. package/dist/lib/pr-comment.js +28 -0
  150. package/dist/lib/readiness-report.d.ts +13 -0
  151. package/dist/lib/readiness-report.js +108 -0
  152. package/dist/lib/webhook-server.d.ts +11 -0
  153. package/dist/lib/webhook-server.js +24 -0
  154. package/dist/lib/weekly-digest.d.ts +24 -0
  155. package/dist/lib/weekly-digest.js +148 -0
  156. package/dist/orchestration/build-app-context.js +13 -0
  157. package/dist/orchestration/cache-context.d.ts +23 -0
  158. package/dist/orchestration/cache-context.js +43 -0
  159. package/dist/orchestration/env-bridge.d.ts +21 -0
  160. package/dist/orchestration/env-bridge.js +66 -0
  161. package/dist/orchestration/load-pipeline-tasks.d.ts +34 -0
  162. package/dist/orchestration/load-pipeline-tasks.js +52 -0
  163. package/dist/orchestration/pipeline-orchestrator.js +75 -5
  164. package/dist/orchestration/step-runner.js +5 -1
  165. package/dist/orchestration/steps/calculate-scores-step.d.ts +1 -0
  166. package/dist/orchestration/steps/calculate-scores-step.js +13 -0
  167. package/dist/orchestration/steps/callback-step.js +10 -1
  168. package/dist/orchestration/steps/compare-step.js +6 -3
  169. package/dist/orchestration/steps/discovery-report-step.js +6 -2
  170. package/dist/orchestration/steps/fetch-docs-shell.d.ts +17 -0
  171. package/dist/orchestration/steps/fetch-docs-shell.js +30 -0
  172. package/dist/orchestration/steps/fetch-docs-step.d.ts +1 -0
  173. package/dist/orchestration/steps/fetch-docs-step.js +30 -16
  174. package/dist/orchestration/steps/gap-analysis-step.js +13 -2
  175. package/dist/orchestration/steps/generate-configs-step.d.ts +1 -0
  176. package/dist/orchestration/steps/generate-configs-step.js +50 -15
  177. package/dist/orchestration/steps/mirror-repo-tasks-step.d.ts +1 -1
  178. package/dist/orchestration/steps/mirror-repo-tasks-step.js +1 -1
  179. package/dist/orchestration/steps/publish-report-step.js +19 -0
  180. package/dist/orchestration/steps/readiness-step.js +8 -3
  181. package/dist/orchestration/steps/report-step.js +17 -4
  182. package/dist/orchestration/steps/run-eval-step.d.ts +1 -0
  183. package/dist/orchestration/steps/run-eval-step.js +52 -32
  184. package/dist/pipeline/agent-behavior-report.js +6 -0
  185. package/dist/pipeline/attribution.d.ts +1 -1
  186. package/dist/pipeline/attribution.js +1 -1
  187. package/dist/pipeline/cache.js +29 -15
  188. package/dist/pipeline/calculate-scores.d.ts +2 -0
  189. package/dist/pipeline/calculate-scores.js +70 -33
  190. package/dist/pipeline/checks.d.ts +8 -3
  191. package/dist/pipeline/checks.js +23 -3
  192. package/dist/pipeline/chronic-failures.d.ts +55 -0
  193. package/dist/pipeline/chronic-failures.js +110 -0
  194. package/dist/pipeline/compiler/__tests__/mcp-server-handler.test.js +33 -0
  195. package/dist/pipeline/compiler/__tests__/promptfoo-compiler.test.js +2 -3
  196. package/dist/pipeline/compiler/__tests__/task-bridge.test.d.ts +9 -0
  197. package/dist/pipeline/compiler/__tests__/task-bridge.test.js +339 -0
  198. package/dist/pipeline/compiler/__tests__/tool-loop-openai.test.d.ts +10 -0
  199. package/dist/pipeline/compiler/__tests__/tool-loop-openai.test.js +509 -0
  200. package/dist/pipeline/compiler/assertion-mapper.d.ts +1 -1
  201. package/dist/pipeline/compiler/assertion-mapper.js +1 -1
  202. package/dist/pipeline/compiler/compiler-to-yaml.d.ts +2 -7
  203. package/dist/pipeline/compiler/compiler-to-yaml.js +2 -7
  204. package/dist/pipeline/compiler/config-loader.d.ts +14 -0
  205. package/dist/pipeline/compiler/config-loader.js +42 -2
  206. package/dist/pipeline/compiler/fixture-resolver.d.ts +1 -1
  207. package/dist/pipeline/compiler/fixture-resolver.js +1 -1
  208. package/dist/pipeline/compiler/ignore-fields.d.ts +1 -1
  209. package/dist/pipeline/compiler/ignore-fields.js +1 -1
  210. package/dist/pipeline/compiler/index.d.ts +2 -5
  211. package/dist/pipeline/compiler/index.js +2 -5
  212. package/dist/pipeline/compiler/literacy-bridge.d.ts +1 -1
  213. package/dist/pipeline/compiler/literacy-bridge.js +1 -1
  214. package/dist/pipeline/compiler/mode-bases/agent-harness.d.ts +1 -1
  215. package/dist/pipeline/compiler/mode-bases/agent-harness.js +1 -1
  216. package/dist/pipeline/compiler/mode-bases/knowledge-probe.d.ts +1 -1
  217. package/dist/pipeline/compiler/mode-bases/knowledge-probe.js +1 -1
  218. package/dist/pipeline/compiler/mode-bases/literacy.d.ts +13 -2
  219. package/dist/pipeline/compiler/mode-bases/literacy.js +55 -1
  220. package/dist/pipeline/compiler/mode-bases/mcp-server.d.ts +1 -1
  221. package/dist/pipeline/compiler/mode-bases/mcp-server.js +1 -1
  222. package/dist/pipeline/compiler/mode-handlers/agent-harness/index.d.ts +1 -1
  223. package/dist/pipeline/compiler/mode-handlers/agent-harness/index.js +1 -1
  224. package/dist/pipeline/compiler/mode-handlers/agent-harness-handler.d.ts +70 -0
  225. package/dist/pipeline/compiler/mode-handlers/agent-harness-handler.js +485 -0
  226. package/dist/pipeline/compiler/mode-handlers/index.d.ts +2 -2
  227. package/dist/pipeline/compiler/mode-handlers/index.js +2 -2
  228. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/index.d.ts +1 -1
  229. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/index.js +1 -1
  230. package/dist/pipeline/compiler/mode-handlers/knowledge-probe-handler.d.ts +76 -0
  231. package/dist/pipeline/compiler/mode-handlers/knowledge-probe-handler.js +245 -0
  232. package/dist/pipeline/compiler/mode-handlers/literacy/index.d.ts +1 -1
  233. package/dist/pipeline/compiler/mode-handlers/literacy/index.js +1 -1
  234. package/dist/pipeline/compiler/mode-handlers/literacy-handler.d.ts +89 -0
  235. package/dist/pipeline/compiler/mode-handlers/literacy-handler.js +379 -0
  236. package/dist/pipeline/compiler/mode-handlers/mcp-assertions.d.ts +50 -0
  237. package/dist/pipeline/compiler/mode-handlers/mcp-assertions.js +334 -0
  238. package/dist/pipeline/compiler/mode-handlers/mcp-server/assertions.d.ts +1 -1
  239. package/dist/pipeline/compiler/mode-handlers/mcp-server/assertions.js +1 -1
  240. package/dist/pipeline/compiler/mode-handlers/mcp-server/index.d.ts +1 -1
  241. package/dist/pipeline/compiler/mode-handlers/mcp-server/index.js +1 -1
  242. package/dist/pipeline/compiler/mode-handlers/mcp-server/provider-config.js +4 -0
  243. package/dist/pipeline/compiler/mode-handlers/mcp-server-handler.d.ts +69 -0
  244. package/dist/pipeline/compiler/mode-handlers/mcp-server-handler.js +307 -0
  245. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/index.js +22 -5
  246. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/mcp-connection.js +6 -0
  247. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/tool-loop-openai.d.ts +10 -5
  248. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/tool-loop-openai.js +314 -7
  249. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/types.d.ts +10 -0
  250. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider.d.ts +65 -0
  251. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider.js +368 -0
  252. package/dist/pipeline/compiler/presets/sanity-literacy.d.ts +1 -1
  253. package/dist/pipeline/compiler/presets/sanity-literacy.js +1 -1
  254. package/dist/pipeline/compiler/promptfoo-compiler.d.ts +1 -4
  255. package/dist/pipeline/compiler/promptfoo-compiler.js +3 -12
  256. package/dist/pipeline/compiler/provider-assembler.js +13 -7
  257. package/dist/pipeline/compiler/sandbox/docker-sandbox.d.ts +1 -1
  258. package/dist/pipeline/compiler/sandbox/docker-sandbox.js +1 -1
  259. package/dist/pipeline/compiler/sandbox/fixture-provisioner.d.ts +1 -1
  260. package/dist/pipeline/compiler/sandbox/fixture-provisioner.js +1 -1
  261. package/dist/pipeline/compiler/sandbox/git-worktree-sandbox.d.ts +1 -1
  262. package/dist/pipeline/compiler/sandbox/git-worktree-sandbox.js +1 -1
  263. package/dist/pipeline/compiler/sandbox/index.d.ts +1 -1
  264. package/dist/pipeline/compiler/sandbox/index.js +1 -1
  265. package/dist/pipeline/compiler/sandbox/sandbox-selector.d.ts +1 -1
  266. package/dist/pipeline/compiler/sandbox/sandbox-selector.js +1 -1
  267. package/dist/pipeline/compiler/sandbox/sandbox-strategy.d.ts +1 -1
  268. package/dist/pipeline/compiler/sandbox/sandbox-strategy.js +1 -1
  269. package/dist/pipeline/compiler/sandbox/tempdir-sandbox.d.ts +1 -1
  270. package/dist/pipeline/compiler/sandbox/tempdir-sandbox.js +1 -1
  271. package/dist/pipeline/compiler/scoring-bridge.d.ts +1 -1
  272. package/dist/pipeline/compiler/scoring-bridge.js +1 -1
  273. package/dist/pipeline/compiler/task-bridge.d.ts +41 -0
  274. package/dist/pipeline/compiler/task-bridge.js +92 -0
  275. package/dist/pipeline/compiler/task-graph-builder.d.ts +1 -4
  276. package/dist/pipeline/compiler/task-graph-builder.js +1 -4
  277. package/dist/pipeline/compiler/telemetry/index.d.ts +1 -1
  278. package/dist/pipeline/compiler/telemetry/index.js +1 -1
  279. package/dist/pipeline/compiler/variable-resolver.d.ts +1 -1
  280. package/dist/pipeline/compiler/variable-resolver.js +1 -1
  281. package/dist/pipeline/coverage-audit.d.ts +1 -1
  282. package/dist/pipeline/coverage-audit.js +1 -1
  283. package/dist/pipeline/degradations.d.ts +1 -1
  284. package/dist/pipeline/degradations.js +1 -1
  285. package/dist/pipeline/failure-modes.d.ts +1 -1
  286. package/dist/pipeline/failure-modes.js +13 -1
  287. package/dist/pipeline/gap-analysis.d.ts +1 -1
  288. package/dist/pipeline/gap-analysis.js +3 -1
  289. package/dist/pipeline/generate-configs.d.ts +2 -2
  290. package/dist/pipeline/generate-configs.js +15 -8
  291. package/dist/pipeline/grader-compare-runner.d.ts +1 -1
  292. package/dist/pipeline/grader-compare-runner.js +7 -1
  293. package/dist/pipeline/grader-comparison.d.ts +1 -1
  294. package/dist/pipeline/grader-comparison.js +1 -1
  295. package/dist/pipeline/grader-consistency-runner.d.ts +1 -1
  296. package/dist/pipeline/grader-consistency-runner.js +7 -1
  297. package/dist/pipeline/grader-consistency.d.ts +1 -1
  298. package/dist/pipeline/grader-consistency.js +1 -1
  299. package/dist/pipeline/grader-sensitivity-runner.d.ts +1 -1
  300. package/dist/pipeline/grader-sensitivity-runner.js +1 -1
  301. package/dist/pipeline/grader-sensitivity.d.ts +1 -1
  302. package/dist/pipeline/grader-sensitivity.js +1 -1
  303. package/dist/pipeline/grader-validate-runner.d.ts +1 -1
  304. package/dist/pipeline/grader-validate-runner.js +2 -2
  305. package/dist/pipeline/grader-validation.d.ts +1 -1
  306. package/dist/pipeline/grader-validation.js +1 -1
  307. package/dist/pipeline/map-request-to-config.js +15 -2
  308. package/dist/pipeline/mirror-repo-tasks.d.ts +1 -1
  309. package/dist/pipeline/mirror-repo-tasks.js +1 -1
  310. package/dist/pipeline/plan-format.d.ts +1 -1
  311. package/dist/pipeline/plan-format.js +1 -1
  312. package/dist/pipeline/plan.d.ts +1 -1
  313. package/dist/pipeline/plan.js +67 -29
  314. package/dist/pipeline/probe.d.ts +1 -1
  315. package/dist/pipeline/probe.js +1 -1
  316. package/dist/pipeline/readiness-report.d.ts +2 -2
  317. package/dist/pipeline/readiness-report.js +2 -2
  318. package/dist/pipeline/release-classification.d.ts +1 -1
  319. package/dist/pipeline/release-classification.js +1 -1
  320. package/dist/pipeline/release-report.d.ts +1 -1
  321. package/dist/pipeline/release-report.js +1 -1
  322. package/dist/pipeline/repo-eval-comment.d.ts +1 -1
  323. package/dist/pipeline/repo-eval-comment.js +1 -1
  324. package/dist/pipeline/repo-threshold-evaluator.d.ts +1 -1
  325. package/dist/pipeline/repo-threshold-evaluator.js +1 -1
  326. package/dist/pipeline/resolve-mappings.d.ts +6 -6
  327. package/dist/pipeline/resolve-mappings.js +44 -44
  328. package/dist/pipeline/retrieval-metrics.d.ts +3 -3
  329. package/dist/pipeline/retrieval-metrics.js +28 -20
  330. package/dist/pipeline/steps/calculate-scores-step.d.ts +11 -0
  331. package/dist/pipeline/steps/calculate-scores-step.js +89 -0
  332. package/dist/pipeline/steps/compare-step.d.ts +18 -0
  333. package/dist/pipeline/steps/compare-step.js +90 -0
  334. package/dist/pipeline/steps/eval-step.d.ts +53 -0
  335. package/dist/pipeline/steps/eval-step.js +347 -0
  336. package/dist/pipeline/steps/fetch-docs-step.d.ts +11 -0
  337. package/dist/pipeline/steps/fetch-docs-step.js +84 -0
  338. package/dist/pipeline/steps/generate-configs-step.d.ts +11 -0
  339. package/dist/pipeline/steps/generate-configs-step.js +98 -0
  340. package/dist/pipeline/steps/grader-consistency-step.d.ts +21 -0
  341. package/dist/pipeline/steps/grader-consistency-step.js +74 -0
  342. package/dist/pipeline/steps/publish-report-step.d.ts +57 -0
  343. package/dist/pipeline/steps/publish-report-step.js +243 -0
  344. package/dist/pipeline/steps/report-step.d.ts +13 -0
  345. package/dist/pipeline/steps/report-step.js +56 -0
  346. package/dist/pipeline/steps/update-scores-step.d.ts +11 -0
  347. package/dist/pipeline/steps/update-scores-step.js +42 -0
  348. package/dist/pipeline/targeted-loo.d.ts +1 -1
  349. package/dist/pipeline/targeted-loo.js +1 -1
  350. package/dist/pipeline/thresholds.d.ts +1 -1
  351. package/dist/pipeline/thresholds.js +1 -1
  352. package/dist/pipeline/validate.js +13 -0
  353. package/dist/report-store.d.ts +17 -0
  354. package/dist/report-store.js +24 -0
  355. package/dist/scripts/agent-behavior-report.d.ts +19 -0
  356. package/dist/scripts/agent-behavior-report.js +315 -0
  357. package/dist/scripts/baseline.d.ts +43 -0
  358. package/dist/scripts/baseline.js +267 -0
  359. package/dist/scripts/calculate-scores.d.ts +166 -0
  360. package/dist/scripts/calculate-scores.js +1296 -0
  361. package/dist/scripts/compare.d.ts +22 -0
  362. package/dist/scripts/compare.js +334 -0
  363. package/dist/scripts/coverage-audit.d.ts +44 -0
  364. package/dist/scripts/coverage-audit.js +209 -0
  365. package/dist/scripts/debug-eval.d.ts +19 -0
  366. package/dist/scripts/debug-eval.js +73 -0
  367. package/dist/scripts/discovery-report.d.ts +58 -0
  368. package/dist/scripts/discovery-report.js +250 -0
  369. package/dist/scripts/fetch-docs.d.ts +35 -0
  370. package/dist/scripts/fetch-docs.js +472 -0
  371. package/dist/scripts/generate-configs.d.ts +66 -0
  372. package/dist/scripts/generate-configs.js +459 -0
  373. package/dist/scripts/grader-api.d.ts +27 -0
  374. package/dist/scripts/grader-api.js +206 -0
  375. package/dist/scripts/grader-compare.d.ts +22 -0
  376. package/dist/scripts/grader-compare.js +368 -0
  377. package/dist/scripts/grader-consistency.d.ts +20 -0
  378. package/dist/scripts/grader-consistency.js +313 -0
  379. package/dist/scripts/grader-sensitivity.d.ts +22 -0
  380. package/dist/scripts/grader-sensitivity.js +354 -0
  381. package/dist/scripts/grader-validate.d.ts +19 -0
  382. package/dist/scripts/grader-validate.js +267 -0
  383. package/dist/scripts/measure-retrieval.d.ts +10 -0
  384. package/dist/scripts/measure-retrieval.js +145 -0
  385. package/dist/scripts/migrate-task-mode.d.ts +1 -1
  386. package/dist/scripts/migrate-task-mode.js +1 -1
  387. package/dist/scripts/migrate-tasks-to-content-lake.d.ts +1 -1
  388. package/dist/scripts/migrate-tasks-to-content-lake.js +1 -1
  389. package/dist/scripts/pipeline.d.ts +76 -0
  390. package/dist/scripts/pipeline.js +1031 -0
  391. package/dist/scripts/pr-comment.d.ts +10 -0
  392. package/dist/scripts/pr-comment.js +510 -0
  393. package/dist/scripts/readiness-report.d.ts +88 -0
  394. package/dist/scripts/readiness-report.js +342 -0
  395. package/dist/scripts/update-quality-scores.d.ts +15 -0
  396. package/dist/scripts/update-quality-scores.js +184 -0
  397. package/dist/scripts/validate-task-sources.d.ts +1 -1
  398. package/dist/scripts/validate-task-sources.js +1 -1
  399. package/dist/scripts/validate.d.ts +13 -0
  400. package/dist/scripts/validate.js +79 -0
  401. package/dist/scripts/webhook-server.d.ts +26 -0
  402. package/dist/scripts/webhook-server.js +147 -0
  403. package/dist/scripts/weekly-digest.d.ts +24 -0
  404. package/dist/scripts/weekly-digest.js +144 -0
  405. package/dist/sinks/format-slack.d.ts +64 -0
  406. package/dist/sinks/format-slack.js +306 -0
  407. package/dist/sinks/slack-sink.d.ts +27 -0
  408. package/dist/sinks/slack-sink.js +78 -0
  409. package/dist/sinks/types.d.ts +1 -1
  410. package/dist/sinks/types.js +1 -1
  411. package/dist/sinks/webhook-sink.d.ts +19 -0
  412. package/dist/sinks/webhook-sink.js +50 -0
  413. package/dist/tasks/knowledge-probe/define-type-api.task.ts +66 -0
  414. package/dist/tasks/knowledge-probe/groq-projections.task.ts +62 -0
  415. package/dist/tasks/literacy/content-lake.task.ts +181 -0
  416. package/dist/tasks/literacy/frameworks.task.ts +129 -0
  417. package/dist/tasks/literacy/functions.task.ts +70 -0
  418. package/dist/tasks/literacy/groq.task.ts +259 -0
  419. package/dist/tasks/literacy/image-handling.task.ts +95 -0
  420. package/dist/tasks/literacy/nextjs-live.task.ts +76 -0
  421. package/dist/tasks/literacy/portable-text.task.ts +169 -0
  422. package/dist/tasks/literacy/studio-setup.task.ts +134 -0
  423. package/dist/tasks/literacy/visual-editing.task.ts +147 -0
  424. package/package.json +25 -25
  425. package/tasks/.expanded.agentic.yaml +280 -0
  426. package/tasks/.expanded.yaml +565 -0
  427. package/tasks/knowledge-probe/define-type-api.task.ts +11 -0
  428. package/tasks/knowledge-probe/groq-projections.task.ts +3 -0
  429. package/tasks/literacy/content-lake.task.ts +181 -0
  430. package/tasks/literacy/frameworks.task.ts +1 -0
  431. package/tasks/literacy/functions.task.ts +1 -0
  432. package/tasks/literacy/groq.task.ts +1 -0
  433. package/tasks/literacy/image-handling.task.ts +95 -0
  434. package/tasks/literacy/nextjs-live.task.ts +2 -1
  435. package/tasks/literacy/portable-text.task.ts +169 -0
  436. package/tasks/literacy/studio-setup.task.ts +5 -2
  437. package/tasks/literacy/visual-editing.task.ts +1 -0
  438. package/LICENSE +0 -21
  439. package/tasks/frameworks.yaml +0 -98
  440. package/tasks/functions.yaml +0 -51
  441. package/tasks/groq.yaml +0 -216
  442. package/tasks/nextjs-live.yaml +0 -62
  443. package/tasks/studio-setup.yaml +0 -111
  444. package/tasks/visual-editing.yaml +0 -120
@@ -0,0 +1,47 @@
1
+ /**
2
+ * validation.ts — Semantic validation for repo-based tasks.
3
+ *
4
+ * Checks that go beyond Zod schema parsing:
5
+ * - Assertion types are in the curated set
6
+ * - Rubric template names resolve to known templates
7
+ * - Feature area strings are well-formed
8
+ * - Canonical doc slugs look reasonable (slugs, not URLs)
9
+ *
10
+ * These produce warnings, not errors — the pipeline can still run
11
+ * with imperfect tasks. Only structural failures (caught by Zod) block.
12
+ */
13
+ import { type RepoTask } from "./schemas.js";
14
+ export interface ValidationResult {
15
+ valid: boolean;
16
+ errors: ValidationMessage[];
17
+ warnings: ValidationMessage[];
18
+ }
19
+ export interface ValidationMessage {
20
+ taskId: string;
21
+ field: string;
22
+ message: string;
23
+ }
24
+ /**
25
+ * Run semantic validation on an array of parsed repo tasks.
26
+ *
27
+ * Returns warnings for issues that don't block execution (unknown feature
28
+ * areas, unresolved slugs) and errors for issues that would cause pipeline
29
+ * failures (completely missing required fields — though Zod catches most).
30
+ */
31
+ export declare function validateRepoTasks(tasks: RepoTask[]): ValidationResult;
32
+ /**
33
+ * Format validation results for console output.
34
+ */
35
+ export declare function formatValidationResult(result: ValidationResult): string;
36
+ /**
37
+ * Detect snake_case field names in raw task YAML data.
38
+ *
39
+ * This runs BEFORE Zod parsing to provide a user-friendly error message
40
+ * when authors use framework-internal snake_case names instead of the
41
+ * camelCase names expected in repo task files.
42
+ *
43
+ * @param raw - Raw parsed YAML (before Zod validation)
44
+ * @param filename - Source filename for error messages
45
+ * @returns Array of warning messages (empty if no issues)
46
+ */
47
+ export declare function detectSnakeCaseFields(raw: unknown, filename: string): string[];
@@ -0,0 +1,162 @@
1
+ /**
2
+ * validation.ts — Semantic validation for repo-based tasks.
3
+ *
4
+ * Checks that go beyond Zod schema parsing:
5
+ * - Assertion types are in the curated set
6
+ * - Rubric template names resolve to known templates
7
+ * - Feature area strings are well-formed
8
+ * - Canonical doc slugs look reasonable (slugs, not URLs)
9
+ *
10
+ * These produce warnings, not errors — the pipeline can still run
11
+ * with imperfect tasks. Only structural failures (caught by Zod) block.
12
+ */
13
+ import { CURATED_ASSERTION_TYPES, RUBRIC_TEMPLATE_NAMES, } from "./schemas.js";
14
+ // ---------------------------------------------------------------------------
15
+ // Public API
16
+ // ---------------------------------------------------------------------------
17
+ /**
18
+ * Run semantic validation on an array of parsed repo tasks.
19
+ *
20
+ * Returns warnings for issues that don't block execution (unknown feature
21
+ * areas, unresolved slugs) and errors for issues that would cause pipeline
22
+ * failures (completely missing required fields — though Zod catches most).
23
+ */
24
+ export function validateRepoTasks(tasks) {
25
+ const errors = [];
26
+ const warnings = [];
27
+ // Check for duplicate IDs
28
+ const seenIds = new Set();
29
+ for (const task of tasks) {
30
+ if (seenIds.has(task.id)) {
31
+ errors.push({
32
+ taskId: task.id,
33
+ field: "id",
34
+ message: `Duplicate task ID "${task.id}"`,
35
+ });
36
+ }
37
+ seenIds.add(task.id);
38
+ }
39
+ for (const task of tasks) {
40
+ // Check assertion types
41
+ for (let i = 0; i < task.assert.length; i++) {
42
+ const assertion = task.assert[i];
43
+ if (!CURATED_ASSERTION_TYPES.includes(assertion.type)) {
44
+ warnings.push({
45
+ taskId: task.id,
46
+ field: `assert[${i}].type`,
47
+ message: `Unknown assertion type "${assertion.type}". ` +
48
+ `Valid types: ${CURATED_ASSERTION_TYPES.join(", ")}`,
49
+ });
50
+ }
51
+ // Check rubric template for llm-rubric assertions
52
+ if (assertion.type === "llm-rubric" && "template" in assertion) {
53
+ const template = assertion.template;
54
+ if (!RUBRIC_TEMPLATE_NAMES.includes(template)) {
55
+ warnings.push({
56
+ taskId: task.id,
57
+ field: `assert[${i}].template`,
58
+ message: `Unknown rubric template "${template}". ` +
59
+ `Valid templates: ${RUBRIC_TEMPLATE_NAMES.join(", ")}`,
60
+ });
61
+ }
62
+ }
63
+ }
64
+ // Check canonical doc refs look reasonable
65
+ for (let i = 0; i < (task.canonicalDocs?.length ?? 0); i++) {
66
+ const doc = task.canonicalDocs[i];
67
+ // Slug refs: warn if they look like URLs or paths
68
+ if ("slug" in doc && !("id" in doc) && typeof doc.slug === "string") {
69
+ if (doc.slug.includes("/") || doc.slug.includes("http")) {
70
+ warnings.push({
71
+ taskId: task.id,
72
+ field: `canonicalDocs[${i}].slug`,
73
+ message: `Slug "${doc.slug}" looks like a URL or path — use 'path' type for paths or 'slug' for document slugs (e.g., "groq-introduction")`,
74
+ });
75
+ }
76
+ }
77
+ }
78
+ // Check task has at least one llm-rubric assertion (recommended but not required)
79
+ const hasLlmRubric = task.assert.some((a) => a.type === "llm-rubric");
80
+ if (!hasLlmRubric) {
81
+ warnings.push({
82
+ taskId: task.id,
83
+ field: "assert",
84
+ message: "No llm-rubric assertion found. Tasks should have at least one scored rubric for meaningful evaluation.",
85
+ });
86
+ }
87
+ // Check taskPrompt exists in vars (vars.task)
88
+ if (!task.vars?.task) {
89
+ warnings.push({
90
+ taskId: task.id,
91
+ field: "vars.task",
92
+ message: "No task prompt found in vars.task. The LLM will receive an empty implementation request.",
93
+ });
94
+ }
95
+ }
96
+ return {
97
+ valid: errors.length === 0,
98
+ errors,
99
+ warnings,
100
+ };
101
+ }
102
+ /**
103
+ * Format validation results for console output.
104
+ */
105
+ export function formatValidationResult(result) {
106
+ const lines = [];
107
+ if (result.errors.length > 0) {
108
+ lines.push("❌ Errors:");
109
+ for (const e of result.errors) {
110
+ lines.push(` [${e.taskId}] ${e.field}: ${e.message}`);
111
+ }
112
+ }
113
+ if (result.warnings.length > 0) {
114
+ lines.push("⚠️ Warnings:");
115
+ for (const w of result.warnings) {
116
+ lines.push(` [${w.taskId}] ${w.field}: ${w.message}`);
117
+ }
118
+ }
119
+ if (result.valid && result.warnings.length === 0) {
120
+ lines.push("✅ All repo tasks pass validation");
121
+ }
122
+ return lines.join("\n");
123
+ }
124
+ // ---------------------------------------------------------------------------
125
+ // Snake_case detection (pre-parse helper)
126
+ // ---------------------------------------------------------------------------
127
+ /** Known snake_case → camelCase field mappings for common errors */
128
+ const SNAKE_TO_CAMEL = {
129
+ feature_area: "featureArea",
130
+ canonical_docs: "canonicalDocs",
131
+ doc_coverage: "docCoverage",
132
+ reference_solution: "referenceSolution",
133
+ };
134
+ /**
135
+ * Detect snake_case field names in raw task YAML data.
136
+ *
137
+ * This runs BEFORE Zod parsing to provide a user-friendly error message
138
+ * when authors use framework-internal snake_case names instead of the
139
+ * camelCase names expected in repo task files.
140
+ *
141
+ * @param raw - Raw parsed YAML (before Zod validation)
142
+ * @param filename - Source filename for error messages
143
+ * @returns Array of warning messages (empty if no issues)
144
+ */
145
+ export function detectSnakeCaseFields(raw, filename) {
146
+ const warnings = [];
147
+ if (!Array.isArray(raw))
148
+ return warnings;
149
+ for (let i = 0; i < raw.length; i++) {
150
+ const entry = raw[i];
151
+ if (typeof entry !== "object" || entry === null)
152
+ continue;
153
+ const obj = entry;
154
+ const taskId = typeof obj.id === "string" ? obj.id : `task[${i}]`;
155
+ for (const [snake, camel] of Object.entries(SNAKE_TO_CAMEL)) {
156
+ if (snake in obj) {
157
+ warnings.push(`[${filename}] ${taskId}: Found "${snake}" — repo tasks use camelCase. Did you mean "${camel}"?`);
158
+ }
159
+ }
160
+ }
161
+ return warnings;
162
+ }
@@ -17,7 +17,7 @@ const HINTS = [
17
17
  /no article found for slug/i.test(e.message),
18
18
  hint: "One or more `canonicalDocs` slugs in your task definitions don't match " +
19
19
  "any article in the documentation. Check the `slug` values in " +
20
- "`.ailf/tasks/*.yaml` and ensure they correspond to real articles.\n" +
20
+ "`.ailf/tasks/` and ensure they correspond to real articles.\n" +
21
21
  " Run `ailf validate` to check your task definitions locally.",
22
22
  },
23
23
  {
@@ -51,7 +51,7 @@ const HINTS = [
51
51
  hint: "The documentation fetch step completed but one or more tasks had " +
52
52
  "empty context. This usually means a `canonicalDocs` slug doesn't " +
53
53
  "match any article.\n" +
54
- " Check the slug values in `.ailf/tasks/*.yaml`.",
54
+ " Check the slug values in `.ailf/tasks/`.",
55
55
  },
56
56
  {
57
57
  match: (e) => e.step === "dispatch" && /dispatch failed/i.test(e.message),
@@ -22,7 +22,7 @@
22
22
  * @see docs/design-docs/architecture-overhaul/typescript-configuration.md
23
23
  */
24
24
  import { readFileSync } from "fs";
25
- import { extname } from "path";
25
+ import { extname, resolve } from "path";
26
26
  import { EvalConfigSchema, PipelineRequestSchema, } from "../../_vendor/ailf-core/index.js";
27
27
  import { mapRequestToConfig } from "../../pipeline/map-request-to-config.js";
28
28
  import { normalizeMode } from "../../pipeline/normalize-mode.js";
@@ -93,6 +93,7 @@ function mapEvalConfigToResolvedConfig(config, rootDir) {
93
93
  const normalized = normalizeMode(config.mode ?? "literacy");
94
94
  return {
95
95
  rootDir,
96
+ outputDir: resolve(rootDir, "results", "latest"),
96
97
  mode: normalized.mode,
97
98
  variant: normalized.variant,
98
99
  noAutoScope: config.noAutoScope ?? false,
@@ -119,6 +120,10 @@ function mapEvalConfigToResolvedConfig(config, rootDir) {
119
120
  allowedOrigins: config.allowedOrigins,
120
121
  searchMode: config.searchMode ?? "open",
121
122
  concurrency: config.concurrency,
123
+ captureEnabled: false,
124
+ captureDir: undefined,
125
+ captureCompress: true,
126
+ captureExtras: true,
122
127
  remote: false,
123
128
  apiUrl: "https://ailf-api.sanity.build",
124
129
  presets: config.presets,
@@ -33,6 +33,7 @@ export class PromptfooEvalAdapter {
33
33
  cwd: this.rootDir,
34
34
  env: { ...process.env, ...config.env },
35
35
  stdio: "inherit",
36
+ ...(config.maxDurationMs ? { timeout: config.maxDurationMs } : {}),
36
37
  });
37
38
  return {
38
39
  durationMs: Date.now() - start,
@@ -40,10 +41,15 @@ export class PromptfooEvalAdapter {
40
41
  summary: `Evaluation complete (${config.configPath})`,
41
42
  };
42
43
  }
43
- catch {
44
+ catch (err) {
45
+ const isTimeout = err instanceof Error &&
46
+ "killed" in err &&
47
+ err.killed === true;
44
48
  return {
45
49
  durationMs: Date.now() - start,
46
- error: `Promptfoo evaluation failed: ${config.configPath}`,
50
+ error: isTimeout
51
+ ? `Eval subprocess killed after ${config.maxDurationMs}ms time budget`
52
+ : `Promptfoo evaluation failed: ${config.configPath}`,
47
53
  status: "failed",
48
54
  };
49
55
  }
@@ -9,4 +9,3 @@ export { SanityDocFetcher } from "./doc-fetchers/index.js";
9
9
  export { PromptfooEvalAdapter } from "./eval-runners/index.js";
10
10
  export { ConsoleLogger, type ConsoleLoggerOptions, JsonLogger, QuietLogger, } from "./loggers/index.js";
11
11
  export { CliConfigAdapter, FileConfigAdapter } from "./config-sources/index.js";
12
- export { YamlTaskSource } from "./task-sources/index.js";
@@ -9,4 +9,3 @@ export { SanityDocFetcher } from "./doc-fetchers/index.js";
9
9
  export { PromptfooEvalAdapter } from "./eval-runners/index.js";
10
10
  export { ConsoleLogger, JsonLogger, QuietLogger, } from "./loggers/index.js";
11
11
  export { CliConfigAdapter, FileConfigAdapter } from "./config-sources/index.js";
12
- export { YamlTaskSource } from "./task-sources/index.js";
@@ -10,7 +10,7 @@
10
10
  * tasks in a single GeneralizedTaskDefinition[].
11
11
  *
12
12
  * @see packages/core/src/ports/task-source.ts — TaskSource port
13
- * @see docs/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
13
+ * @see docs/archive/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
14
14
  */
15
15
  import type { FilterOptions, GeneralizedTaskDefinition, TaskSource } from "../../_vendor/ailf-core/index.d.ts";
16
16
  export declare class CompositeTaskSource implements TaskSource {
@@ -10,7 +10,7 @@
10
10
  * tasks in a single GeneralizedTaskDefinition[].
11
11
  *
12
12
  * @see packages/core/src/ports/task-source.ts — TaskSource port
13
- * @see docs/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
13
+ * @see docs/archive/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
14
14
  */
15
15
  export class CompositeTaskSource {
16
16
  sources;
@@ -2,15 +2,13 @@
2
2
  * Adapter: Load task definitions from the Sanity Content Lake.
3
3
  *
4
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.
5
+ * GeneralizedTaskDefinition (LiteracyTaskDefinition variant).
6
+ * The pipeline never knows which adapter loaded the tasks.
9
7
  *
10
- * Wired in the composition root when --task-source content-lake is set.
8
+ * Wired in the composition root as the default task source.
11
9
  *
12
10
  * @see packages/core/src/ports/task-source.ts — TaskSource port
13
- * @see docs/exec-plans/tasks-as-content/phase-2-pipeline-integration.md
11
+ * @see docs/archive/exec-plans/tasks-as-content/phase-2-pipeline-integration.md
14
12
  */
15
13
  import type { SanityClient } from "@sanity/client";
16
14
  import type { FilterOptions, GeneralizedTaskDefinition, TaskSource } from "../../_vendor/ailf-core/index.d.ts";
@@ -2,15 +2,13 @@
2
2
  * Adapter: Load task definitions from the Sanity Content Lake.
3
3
  *
4
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.
5
+ * GeneralizedTaskDefinition (LiteracyTaskDefinition variant).
6
+ * The pipeline never knows which adapter loaded the tasks.
9
7
  *
10
- * Wired in the composition root when --task-source content-lake is set.
8
+ * Wired in the composition root as the default task source.
11
9
  *
12
10
  * @see packages/core/src/ports/task-source.ts — TaskSource port
13
- * @see docs/exec-plans/tasks-as-content/phase-2-pipeline-integration.md
11
+ * @see docs/archive/exec-plans/tasks-as-content/phase-2-pipeline-integration.md
14
12
  */
15
13
  // ---------------------------------------------------------------------------
16
14
  // GROQ query — fetches ailf.task documents with resolved references
@@ -4,5 +4,4 @@ export { CanonicalTaskFileSchema, CanonicalTaskSchema, CURATED_ASSERTION_TYPES,
4
4
  export { RepoTaskSource } from "./repo-task-source.js";
5
5
  export { detectTriggerContext, resolveTrigger, type ResolvedTrigger, type TriggerContext, } from "./repo-trigger.js";
6
6
  export { formatValidationResult, validateCanonicalTasks, type ValidationMessage, type ValidationResult, } from "./repo-validation.js";
7
- export { discoverTsTaskFiles, loadAllTsTaskFiles, loadTsTaskFile, } from "./task-file-loader.js";
8
- export { YamlTaskSource } from "./yaml-task-source.js";
7
+ export { discoverTsTaskFiles, loadAllTsTaskFiles, loadTsTaskFile, loadTsTaskFileSync, } from "./task-file-loader.js";
@@ -4,5 +4,4 @@ export { CanonicalTaskFileSchema, CanonicalTaskSchema, CURATED_ASSERTION_TYPES,
4
4
  export { RepoTaskSource } from "./repo-task-source.js";
5
5
  export { detectTriggerContext, resolveTrigger, } from "./repo-trigger.js";
6
6
  export { formatValidationResult, validateCanonicalTasks, } from "./repo-validation.js";
7
- export { discoverTsTaskFiles, loadAllTsTaskFiles, loadTsTaskFile, } from "./task-file-loader.js";
8
- export { YamlTaskSource } from "./yaml-task-source.js";
7
+ export { discoverTsTaskFiles, loadAllTsTaskFiles, loadTsTaskFile, loadTsTaskFileSync, } from "./task-file-loader.js";
@@ -13,7 +13,7 @@
13
13
  * specific and remain here unchanged.
14
14
  *
15
15
  * @see packages/core/src/types/generalized-task.ts — canonical TypeScript types
16
- * @see docs/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
16
+ * @see docs/archive/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
17
17
  */
18
18
  import { z } from "zod";
19
19
  /**
@@ -13,7 +13,7 @@
13
13
  * specific and remain here unchanged.
14
14
  *
15
15
  * @see packages/core/src/types/generalized-task.ts — canonical TypeScript types
16
- * @see docs/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
16
+ * @see docs/archive/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
17
17
  */
18
18
  import { z } from "zod";
19
19
  // ---------------------------------------------------------------------------
@@ -238,7 +238,7 @@ export function detectLegacyFieldNames(raw, filename) {
238
238
  if (legacy in obj) {
239
239
  warnings.push(`[${filename}] ${taskId}: Found legacy field "${legacy}" — ` +
240
240
  `use "${canonical}" instead. ` +
241
- "See CONTRIBUTING_TASKS.md for the canonical task format.");
241
+ "See contributing-tasks.md for the canonical task format.");
242
242
  }
243
243
  }
244
244
  }
@@ -64,7 +64,7 @@ export class RepoTaskSource {
64
64
  throw new Error(`${file} uses legacy field names from @sanity/ailf-tasks.\n` +
65
65
  "Task files must use canonical GeneralizedTaskDefinition field names.\n\n" +
66
66
  legacyWarnings.join("\n") +
67
- "\n\nSee CONTRIBUTING_TASKS.md for the canonical task format.");
67
+ "\n\nSee contributing-tasks.md for the canonical task format.");
68
68
  }
69
69
  // Validate through canonical Zod schema
70
70
  let validated;
@@ -6,7 +6,7 @@
6
6
  * config applies. This drives whether the pipeline runs in validate-only
7
7
  * mode or full eval mode, and whether results are blocking.
8
8
  *
9
- * @see docs/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
9
+ * @see docs/archive/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
10
10
  */
11
11
  export type TriggerContext = {
12
12
  type: "pr";
@@ -6,7 +6,7 @@
6
6
  * config applies. This drives whether the pipeline runs in validate-only
7
7
  * mode or full eval mode, and whether results are blocking.
8
8
  *
9
- * @see docs/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
9
+ * @see docs/archive/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
10
10
  */
11
11
  import { existsSync, readFileSync } from "fs";
12
12
  import { resolve } from "path";
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * TaskFileLoader — loads task definitions from TypeScript files.
3
3
  *
4
- * Supplements the existing YAML-based task loading by supporting
5
- * `*.task.ts` and `*.task.js` files in task directories. Files are
6
- * loaded via jiti and expected to export GeneralizedTaskDefinition
4
+ * Supports `*.task.ts` and `*.task.js` files in task directories. Files
5
+ * are loaded via jiti and expected to export GeneralizedTaskDefinition
7
6
  * objects authored with `defineTask()`.
8
7
  *
9
8
  * TS task files export a single task or an array of tasks:
@@ -20,9 +19,6 @@
20
19
  * ]
21
20
  * ```
22
21
  *
23
- * The loader integrates into the existing RepoTaskSource adapter — TS
24
- * task files are discovered alongside YAML files in the same directory.
25
- *
26
22
  * @see docs/design-docs/architecture-overhaul/typescript-configuration.md
27
23
  */
28
24
  /** A raw task object loaded from a TS file (pre-validation) */
@@ -55,6 +51,13 @@ export declare function discoverTsTaskFiles(tasksDir: string): string[];
55
51
  * @returns The loaded task(s), or throws on load failure
56
52
  */
57
53
  export declare function loadTsTaskFile(filePath: string): Promise<RawTsTask>;
54
+ /**
55
+ * Synchronously load task definitions from a single TS/JS task file.
56
+ *
57
+ * Uses jiti's synchronous require-style loading instead of async import().
58
+ * Needed by resolve-mappings.ts which is called from sync contexts.
59
+ */
60
+ export declare function loadTsTaskFileSync(filePath: string): RawTsTask;
58
61
  /**
59
62
  * Load all TS task files from a directory.
60
63
  *
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * TaskFileLoader — loads task definitions from TypeScript files.
3
3
  *
4
- * Supplements the existing YAML-based task loading by supporting
5
- * `*.task.ts` and `*.task.js` files in task directories. Files are
6
- * loaded via jiti and expected to export GeneralizedTaskDefinition
4
+ * Supports `*.task.ts` and `*.task.js` files in task directories. Files
5
+ * are loaded via jiti and expected to export GeneralizedTaskDefinition
7
6
  * objects authored with `defineTask()`.
8
7
  *
9
8
  * TS task files export a single task or an array of tasks:
@@ -20,13 +19,12 @@
20
19
  * ]
21
20
  * ```
22
21
  *
23
- * The loader integrates into the existing RepoTaskSource adapter — TS
24
- * task files are discovered alongside YAML files in the same directory.
25
- *
26
22
  * @see docs/design-docs/architecture-overhaul/typescript-configuration.md
27
23
  */
28
24
  import { existsSync, readdirSync } from "fs";
25
+ import { pathToFileURL } from "node:url";
29
26
  import { resolve } from "path";
27
+ import { createJiti } from "jiti";
30
28
  import { loadTsConfig } from "../config-sources/ts-config-loader.js";
31
29
  /**
32
30
  * Discover TS/JS task files in a directory.
@@ -67,6 +65,22 @@ export async function loadTsTaskFile(filePath) {
67
65
  const tasks = Array.isArray(value) ? value : [value];
68
66
  return { filePath, tasks };
69
67
  }
68
+ /**
69
+ * Synchronously load task definitions from a single TS/JS task file.
70
+ *
71
+ * Uses jiti's synchronous require-style loading instead of async import().
72
+ * Needed by resolve-mappings.ts which is called from sync contexts.
73
+ */
74
+ export function loadTsTaskFileSync(filePath) {
75
+ const jiti = createJiti(pathToFileURL(filePath).href, {
76
+ interopDefault: true,
77
+ requireCache: true,
78
+ });
79
+ const mod = jiti(filePath);
80
+ const value = mod && typeof mod === "object" && "default" in mod ? mod.default : mod;
81
+ const tasks = Array.isArray(value) ? value : [value];
82
+ return { filePath, tasks };
83
+ }
70
84
  /**
71
85
  * Load all TS task files from a directory.
72
86
  *
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Final validation — ensures all agent-observer modules work together
3
+ * and the full data pipeline (record → classify → summarize) is correct.
4
+ *
5
+ * Run: tsx src/agent-observer/test-imports.ts
6
+ */
7
+ export {};