@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,204 @@
1
+ /**
2
+ * Reference Solution: Custom Block Types in Portable Text
3
+ *
4
+ * Demonstrates:
5
+ * - Defining custom block types with defineArrayMember
6
+ * - Adding "code" and "callout" blocks to a PT field
7
+ * - Rendering custom blocks with @portabletext/react
8
+ * - TypeScript types for custom block shapes
9
+ */
10
+
11
+ // === Part 1: Schema Definition (schemas/post.ts) ===
12
+
13
+ import {
14
+ defineType,
15
+ defineField,
16
+ defineArrayMember,
17
+ } from "sanity"
18
+
19
+ export const postType = defineType({
20
+ name: "post",
21
+ title: "Post",
22
+ type: "document",
23
+ fields: [
24
+ defineField({
25
+ name: "title",
26
+ title: "Title",
27
+ type: "string",
28
+ }),
29
+ defineField({
30
+ name: "body",
31
+ title: "Body",
32
+ type: "array",
33
+ of: [
34
+ // Standard block (paragraphs, headings, lists)
35
+ defineArrayMember({
36
+ type: "block",
37
+ styles: [
38
+ { title: "Normal", value: "normal" },
39
+ { title: "H2", value: "h2" },
40
+ { title: "H3", value: "h3" },
41
+ { title: "Quote", value: "blockquote" },
42
+ ],
43
+ marks: {
44
+ decorators: [
45
+ { title: "Bold", value: "strong" },
46
+ { title: "Italic", value: "em" },
47
+ { title: "Code", value: "code" },
48
+ ],
49
+ },
50
+ }),
51
+
52
+ // Custom: Code block with language selection
53
+ defineArrayMember({
54
+ name: "code",
55
+ title: "Code Block",
56
+ type: "object",
57
+ fields: [
58
+ defineField({
59
+ name: "language",
60
+ title: "Language",
61
+ type: "string",
62
+ options: {
63
+ list: [
64
+ { title: "JavaScript", value: "javascript" },
65
+ { title: "TypeScript", value: "typescript" },
66
+ { title: "HTML", value: "html" },
67
+ { title: "CSS", value: "css" },
68
+ { title: "Shell", value: "bash" },
69
+ { title: "JSON", value: "json" },
70
+ ],
71
+ },
72
+ }),
73
+ defineField({
74
+ name: "code",
75
+ title: "Code",
76
+ type: "text",
77
+ rows: 10,
78
+ }),
79
+ defineField({
80
+ name: "filename",
81
+ title: "Filename",
82
+ type: "string",
83
+ }),
84
+ ],
85
+ preview: {
86
+ select: { language: "language", code: "code" },
87
+ prepare({ language, code }) {
88
+ return {
89
+ title: `Code: ${language || "plain"}`,
90
+ subtitle: code ? code.slice(0, 50) + "…" : "",
91
+ }
92
+ },
93
+ },
94
+ }),
95
+
96
+ // Custom: Callout block with tone
97
+ defineArrayMember({
98
+ name: "callout",
99
+ title: "Callout",
100
+ type: "object",
101
+ fields: [
102
+ defineField({
103
+ name: "tone",
104
+ title: "Tone",
105
+ type: "string",
106
+ options: {
107
+ list: [
108
+ { title: "Info", value: "info" },
109
+ { title: "Warning", value: "warning" },
110
+ { title: "Error", value: "error" },
111
+ { title: "Tip", value: "tip" },
112
+ ],
113
+ layout: "radio",
114
+ },
115
+ initialValue: "info",
116
+ }),
117
+ defineField({
118
+ name: "text",
119
+ title: "Text",
120
+ type: "text",
121
+ rows: 3,
122
+ }),
123
+ ],
124
+ preview: {
125
+ select: { tone: "tone", text: "text" },
126
+ prepare({ tone, text }) {
127
+ const icons = { info: "ℹ️", warning: "⚠️", error: "🚨", tip: "💡" }
128
+ return {
129
+ title: `${icons[tone as keyof typeof icons] || ""} ${tone || "info"} callout`,
130
+ subtitle: text,
131
+ }
132
+ },
133
+ },
134
+ }),
135
+ ],
136
+ }),
137
+ ],
138
+ })
139
+
140
+ // === Part 2: Frontend Rendering (components/PortableTextBody.tsx) ===
141
+
142
+ // import { PortableText, type PortableTextComponents } from "@portabletext/react"
143
+
144
+ interface CodeBlockValue {
145
+ _type: "code"
146
+ language?: string
147
+ code: string
148
+ filename?: string
149
+ }
150
+
151
+ interface CalloutBlockValue {
152
+ _type: "callout"
153
+ tone: "info" | "warning" | "error" | "tip"
154
+ text: string
155
+ }
156
+
157
+ function CodeBlock({ value }: { value: CodeBlockValue }) {
158
+ return (
159
+ <figure>
160
+ {value.filename && (
161
+ <figcaption>{value.filename}</figcaption>
162
+ )}
163
+ <pre data-language={value.language}>
164
+ <code>{value.code}</code>
165
+ </pre>
166
+ </figure>
167
+ )
168
+ }
169
+
170
+ const toneStyles: Record<string, { background: string; border: string }> = {
171
+ info: { background: "#e8f4fd", border: "#2196f3" },
172
+ warning: { background: "#fff8e1", border: "#ff9800" },
173
+ error: { background: "#fde8e8", border: "#f44336" },
174
+ tip: { background: "#e8f5e9", border: "#4caf50" },
175
+ }
176
+
177
+ function CalloutBlock({ value }: { value: CalloutBlockValue }) {
178
+ const style = toneStyles[value.tone] || toneStyles.info
179
+
180
+ return (
181
+ <aside
182
+ role="note"
183
+ style={{
184
+ padding: "1rem",
185
+ borderLeft: `4px solid ${style.border}`,
186
+ background: style.background,
187
+ margin: "1.5rem 0",
188
+ }}
189
+ >
190
+ <p>{value.text}</p>
191
+ </aside>
192
+ )
193
+ }
194
+
195
+ // Register custom types in the PortableText component map
196
+ export const components = {
197
+ types: {
198
+ code: CodeBlock,
199
+ callout: CalloutBlock,
200
+ },
201
+ }
202
+
203
+ // Usage:
204
+ // <PortableText value={post.body} components={components} />
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Reference Solution: Portable Text Rendering in React
3
+ *
4
+ * Demonstrates:
5
+ * - Setting up @portabletext/react with custom components
6
+ * - Handling image blocks with @sanity/image-url
7
+ * - Custom marks for links (internal + external)
8
+ * - Code block rendering with language metadata
9
+ * - TypeScript types for component props
10
+ */
11
+
12
+ import { PortableText, type PortableTextComponents } from "@portabletext/react"
13
+ import imageUrlBuilder from "@sanity/image-url"
14
+ import { createClient } from "@sanity/client"
15
+
16
+ // === Sanity Client & Image Builder ===
17
+
18
+ const client = createClient({
19
+ projectId: "your-project-id",
20
+ dataset: "production",
21
+ apiVersion: "2024-01-01",
22
+ useCdn: true,
23
+ })
24
+
25
+ const builder = imageUrlBuilder(client)
26
+
27
+ function urlFor(source: SanityImageSource) {
28
+ return builder.image(source)
29
+ }
30
+
31
+ // === Types ===
32
+
33
+ interface SanityImageSource {
34
+ _type: "image"
35
+ asset: {
36
+ _ref: string
37
+ _type: "reference"
38
+ }
39
+ hotspot?: { x: number; y: number; height: number; width: number }
40
+ crop?: { top: number; bottom: number; left: number; right: number }
41
+ }
42
+
43
+ interface ImageBlockValue {
44
+ _type: "image"
45
+ asset: { _ref: string; _type: "reference" }
46
+ hotspot?: SanityImageSource["hotspot"]
47
+ crop?: SanityImageSource["crop"]
48
+ alt?: string
49
+ caption?: string
50
+ }
51
+
52
+ interface CodeBlockValue {
53
+ _type: "code"
54
+ language?: string
55
+ code: string
56
+ }
57
+
58
+ interface LinkMarkValue {
59
+ _type: "link"
60
+ href: string
61
+ blank?: boolean
62
+ }
63
+
64
+ interface InternalLinkMarkValue {
65
+ _type: "internalLink"
66
+ reference: { _ref: string; _type: "reference" }
67
+ slug?: { current: string }
68
+ }
69
+
70
+ interface PortableTextBodyProps {
71
+ value: unknown[]
72
+ className?: string
73
+ }
74
+
75
+ // === Custom Components ===
76
+
77
+ // Image block — renders Sanity images with hotspot/crop via the URL builder
78
+ function ImageBlock({ value }: { value: ImageBlockValue }) {
79
+ if (!value?.asset) return null
80
+
81
+ const url = urlFor(value)
82
+ .width(800)
83
+ .auto("format")
84
+ .url()
85
+
86
+ return (
87
+ <figure>
88
+ <img
89
+ src={url}
90
+ alt={value.alt || ""}
91
+ loading="lazy"
92
+ style={{ maxWidth: "100%", height: "auto" }}
93
+ />
94
+ {value.caption && <figcaption>{value.caption}</figcaption>}
95
+ </figure>
96
+ )
97
+ }
98
+
99
+ // Code block — renders preformatted code with language annotation
100
+ function CodeBlock({ value }: { value: CodeBlockValue }) {
101
+ return (
102
+ <pre data-language={value.language}>
103
+ <code>{value.code}</code>
104
+ </pre>
105
+ )
106
+ }
107
+
108
+ // External link mark — opens in new tab when blank is true
109
+ function LinkMark({
110
+ value,
111
+ children,
112
+ }: {
113
+ value?: LinkMarkValue
114
+ children: React.ReactNode
115
+ }) {
116
+ const target = value?.blank ? "_blank" : undefined
117
+ const rel = value?.blank ? "noopener noreferrer" : undefined
118
+
119
+ return (
120
+ <a href={value?.href} target={target} rel={rel}>
121
+ {children}
122
+ </a>
123
+ )
124
+ }
125
+
126
+ // Internal link mark — resolves to a local route
127
+ function InternalLinkMark({
128
+ value,
129
+ children,
130
+ }: {
131
+ value?: InternalLinkMarkValue
132
+ children: React.ReactNode
133
+ }) {
134
+ const slug = value?.slug?.current
135
+ const href = slug ? `/${slug}` : "#"
136
+
137
+ return <a href={href}>{children}</a>
138
+ }
139
+
140
+ // === Component Map ===
141
+
142
+ const components: PortableTextComponents = {
143
+ types: {
144
+ image: ImageBlock,
145
+ code: CodeBlock,
146
+ },
147
+ marks: {
148
+ link: LinkMark,
149
+ internalLink: InternalLinkMark,
150
+ },
151
+ }
152
+
153
+ // === Main Component ===
154
+
155
+ export function PortableTextBody({ value, className }: PortableTextBodyProps) {
156
+ if (!value) return null
157
+
158
+ return (
159
+ <div className={className}>
160
+ <PortableText value={value} components={components} />
161
+ </div>
162
+ )
163
+ }
@@ -15,7 +15,7 @@
15
15
  * })
16
16
  *
17
17
  * @see packages/eval/src/pipeline/compiler/presets/sanity-literacy.ts
18
- * @see docs/exec-plans/scenario-matrix-implementation/phase-3-gap-analysis.md
18
+ * @see docs/archive/exec-plans/scenario-matrix-implementation/phase-3-gap-analysis.md
19
19
  */
20
20
 
21
21
  import { defineFeatures } from "@sanity/ailf-core"
package/config/models.ts CHANGED
@@ -1,10 +1,14 @@
1
1
  /**
2
2
  * models.ts — Central model registry for AILF evaluations.
3
3
  *
4
- * Define all models to test here. Each eval mode (baseline, observed, agentic)
5
- * reads this config and generates the appropriate provider entries.
4
+ * Define all models to test here. Each model declares which evaluation
5
+ * modes it participates in (e.g., "literacy", "mcp-server") and
6
+ * optionally which variants within those modes.
6
7
  *
7
- * @see docs/exec-plans/architecture-overhaul/phase-1-ts-config-loading.md
8
+ * When a model enrolls in a mode without specifying variants, all
9
+ * variants defined by the mode base are included by default.
10
+ *
11
+ * @see docs/archive/exec-plans/architecture-overhaul/phase-1-ts-config-loading.md
8
12
  */
9
13
 
10
14
  import { defineModels } from "@sanity/ailf-core"
@@ -16,13 +20,9 @@ export default defineModels({
16
20
  id: "anthropic:messages:claude-opus-4-6",
17
21
  label: "Claude Opus 4.6",
18
22
  config: { temperature: 0.2, max_tokens: 4096 },
19
- modes: [
20
- "baseline",
21
- "observed",
22
- "agentic-naive",
23
- "agentic-optimized",
24
- "mcp-server",
25
- ],
23
+ modes: ["literacy", "mcp-server", "knowledge-probe"],
24
+ // All literacy variants included by default (baseline, observed,
25
+ // agentic-naive, agentic-optimized)
26
26
  },
27
27
 
28
28
  // ── Google ─────────────────────────────────────────────────
@@ -30,7 +30,7 @@ export default defineModels({
30
30
  // id: "google:gemini-2.5-pro",
31
31
  // label: "Gemini 2.5 Pro",
32
32
  // config: { temperature: 0.2, max_tokens: 4096 },
33
- // modes: ["baseline", "observed", "agentic-naive", "agentic-optimized"],
33
+ // modes: ["literacy"],
34
34
  // },
35
35
 
36
36
  // ── OpenAI ─────────────────────────────────────────────────
@@ -38,7 +38,8 @@ export default defineModels({
38
38
  id: "openai:chat:gpt-5.2",
39
39
  label: "GPT 5.2",
40
40
  config: { temperature: 0.2, max_tokens: 4096 },
41
- modes: ["baseline", "observed", "agentic-naive", "agentic-optimized"],
41
+ modes: ["literacy", "knowledge-probe"],
42
+ // All literacy variants included by default
42
43
  },
43
44
  {
44
45
  id: "openai:responses:gpt-5.4",
@@ -48,25 +49,28 @@ export default defineModels({
48
49
  max_output_tokens: 4096,
49
50
  maxRetries: 1,
50
51
  },
51
- modes: [
52
- "baseline",
53
- "observed",
54
- "agentic-naive",
55
- "agentic-optimized",
56
- "mcp-server",
57
- ],
52
+ timeoutMs: 600_000, // 10 min — reasoning model needs more headroom
53
+ modes: ["literacy", "mcp-server", "knowledge-probe"],
54
+ // All literacy variants included by default
58
55
  },
59
56
 
60
57
  // ── Disabled models (uncomment to enable) ──────────────────
61
58
  // { id: "anthropic:claude-sonnet-4-20250514", label: "Claude Sonnet 4",
62
- // config: { temperature: 0.2, max_tokens: 4096 }, modes: ["baseline"] },
59
+ // config: { temperature: 0.2, max_tokens: 4096 },
60
+ // modes: ["literacy"],
61
+ // variants: { literacy: ["baseline"] } },
63
62
  // { id: "anthropic:claude-3.5-sonnet-20241022", label: "Claude 3.5 Sonnet",
64
63
  // config: { temperature: 0.2, max_tokens: 4096 },
65
- // modes: ["baseline", "agentic-naive", "agentic-optimized"] },
64
+ // modes: ["literacy"],
65
+ // variants: { literacy: ["baseline", "agentic-naive", "agentic-optimized"] } },
66
66
  // { id: "google:gemini-2.0-flash", label: "Gemini 2.0 Flash",
67
- // config: { temperature: 0.2, max_tokens: 4096 }, modes: ["baseline"] },
67
+ // config: { temperature: 0.2, max_tokens: 4096 },
68
+ // modes: ["literacy"],
69
+ // variants: { literacy: ["baseline"] } },
68
70
  // { id: "openrouter:deepseek/deepseek-r1", label: "DeepSeek R1",
69
- // config: { temperature: 0.2, max_tokens: 4096 }, modes: ["baseline"] },
71
+ // config: { temperature: 0.2, max_tokens: 4096 },
72
+ // modes: ["literacy"],
73
+ // variants: { literacy: ["baseline"] } },
70
74
  ],
71
75
 
72
76
  // ── Grading Model ──────────────────────────────────────────
@@ -77,6 +81,7 @@ export default defineModels({
77
81
  },
78
82
 
79
83
  // ── Evaluation Options ─────────────────────────────────────
84
+ evalBudgetMs: 1_200_000, // 20 min per eval mode — outer kill switch
80
85
  maxConcurrency: 32, // max parallel API calls — benchmarked in DOC-1896
81
86
 
82
87
  // ── Default Config ─────────────────────────────────────────
package/config/sources.ts CHANGED
@@ -13,7 +13,7 @@
13
13
  * ])
14
14
  *
15
15
  * @see packages/eval/src/pipeline/compiler/presets/sanity-literacy.ts
16
- * @see docs/exec-plans/dynamic-doc-sources.md
16
+ * @see docs/archive/exec-plans/dynamic-doc-sources.md
17
17
  */
18
18
 
19
19
  import { defineSources } from "@sanity/ailf-core"
@@ -6,7 +6,7 @@
6
6
  * - `npx @sanity/ailf pipeline --publish` (severity-aware sink routing)
7
7
  * - `npx @sanity/ailf pipeline --compare` (regression alerting)
8
8
  *
9
- * @see docs/exec-plans/scenario-matrix-implementation/phase-5-readiness-thresholds.md
9
+ * @see docs/archive/exec-plans/scenario-matrix-implementation/phase-5-readiness-thresholds.md
10
10
  */
11
11
 
12
12
  import { defineThresholds } from "@sanity/ailf-core"
@@ -0,0 +1,10 @@
1
+ /**
2
+ * comparison-formatters.test.ts
3
+ *
4
+ * Verifies that formatComparisonMarkdown() and formatComparisonTable()
5
+ * dynamically derive column headers from the dimension keys present
6
+ * in the report data, rather than hardcoding literacy-specific names.
7
+ *
8
+ * Run: npx tsx --test src/__tests__/comparison-formatters.test.ts
9
+ */
10
+ export {};