@sanity/ailf 2.0.0 → 2.0.1

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 (442) 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 +51 -31
  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/chronic-failures.d.ts +55 -0
  191. package/dist/pipeline/chronic-failures.js +110 -0
  192. package/dist/pipeline/compiler/__tests__/mcp-server-handler.test.js +33 -0
  193. package/dist/pipeline/compiler/__tests__/promptfoo-compiler.test.js +2 -3
  194. package/dist/pipeline/compiler/__tests__/task-bridge.test.d.ts +9 -0
  195. package/dist/pipeline/compiler/__tests__/task-bridge.test.js +339 -0
  196. package/dist/pipeline/compiler/__tests__/tool-loop-openai.test.d.ts +10 -0
  197. package/dist/pipeline/compiler/__tests__/tool-loop-openai.test.js +509 -0
  198. package/dist/pipeline/compiler/assertion-mapper.d.ts +1 -1
  199. package/dist/pipeline/compiler/assertion-mapper.js +1 -1
  200. package/dist/pipeline/compiler/compiler-to-yaml.d.ts +2 -7
  201. package/dist/pipeline/compiler/compiler-to-yaml.js +2 -7
  202. package/dist/pipeline/compiler/config-loader.d.ts +14 -0
  203. package/dist/pipeline/compiler/config-loader.js +42 -2
  204. package/dist/pipeline/compiler/fixture-resolver.d.ts +1 -1
  205. package/dist/pipeline/compiler/fixture-resolver.js +1 -1
  206. package/dist/pipeline/compiler/ignore-fields.d.ts +1 -1
  207. package/dist/pipeline/compiler/ignore-fields.js +1 -1
  208. package/dist/pipeline/compiler/index.d.ts +2 -5
  209. package/dist/pipeline/compiler/index.js +2 -5
  210. package/dist/pipeline/compiler/literacy-bridge.d.ts +1 -1
  211. package/dist/pipeline/compiler/literacy-bridge.js +1 -1
  212. package/dist/pipeline/compiler/mode-bases/agent-harness.d.ts +1 -1
  213. package/dist/pipeline/compiler/mode-bases/agent-harness.js +1 -1
  214. package/dist/pipeline/compiler/mode-bases/knowledge-probe.d.ts +1 -1
  215. package/dist/pipeline/compiler/mode-bases/knowledge-probe.js +1 -1
  216. package/dist/pipeline/compiler/mode-bases/literacy.d.ts +13 -2
  217. package/dist/pipeline/compiler/mode-bases/literacy.js +55 -1
  218. package/dist/pipeline/compiler/mode-bases/mcp-server.d.ts +1 -1
  219. package/dist/pipeline/compiler/mode-bases/mcp-server.js +1 -1
  220. package/dist/pipeline/compiler/mode-handlers/agent-harness/index.d.ts +1 -1
  221. package/dist/pipeline/compiler/mode-handlers/agent-harness/index.js +1 -1
  222. package/dist/pipeline/compiler/mode-handlers/agent-harness-handler.d.ts +70 -0
  223. package/dist/pipeline/compiler/mode-handlers/agent-harness-handler.js +485 -0
  224. package/dist/pipeline/compiler/mode-handlers/index.d.ts +2 -2
  225. package/dist/pipeline/compiler/mode-handlers/index.js +2 -2
  226. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/index.d.ts +1 -1
  227. package/dist/pipeline/compiler/mode-handlers/knowledge-probe/index.js +1 -1
  228. package/dist/pipeline/compiler/mode-handlers/knowledge-probe-handler.d.ts +76 -0
  229. package/dist/pipeline/compiler/mode-handlers/knowledge-probe-handler.js +245 -0
  230. package/dist/pipeline/compiler/mode-handlers/literacy/index.d.ts +1 -1
  231. package/dist/pipeline/compiler/mode-handlers/literacy/index.js +1 -1
  232. package/dist/pipeline/compiler/mode-handlers/literacy-handler.d.ts +89 -0
  233. package/dist/pipeline/compiler/mode-handlers/literacy-handler.js +379 -0
  234. package/dist/pipeline/compiler/mode-handlers/mcp-assertions.d.ts +50 -0
  235. package/dist/pipeline/compiler/mode-handlers/mcp-assertions.js +334 -0
  236. package/dist/pipeline/compiler/mode-handlers/mcp-server/assertions.d.ts +1 -1
  237. package/dist/pipeline/compiler/mode-handlers/mcp-server/assertions.js +1 -1
  238. package/dist/pipeline/compiler/mode-handlers/mcp-server/index.d.ts +1 -1
  239. package/dist/pipeline/compiler/mode-handlers/mcp-server/index.js +1 -1
  240. package/dist/pipeline/compiler/mode-handlers/mcp-server/provider-config.js +4 -0
  241. package/dist/pipeline/compiler/mode-handlers/mcp-server-handler.d.ts +69 -0
  242. package/dist/pipeline/compiler/mode-handlers/mcp-server-handler.js +307 -0
  243. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/index.js +22 -5
  244. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/mcp-connection.js +6 -0
  245. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/tool-loop-openai.d.ts +10 -5
  246. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/tool-loop-openai.js +314 -7
  247. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/types.d.ts +10 -0
  248. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider.d.ts +65 -0
  249. package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider.js +368 -0
  250. package/dist/pipeline/compiler/presets/sanity-literacy.d.ts +1 -1
  251. package/dist/pipeline/compiler/presets/sanity-literacy.js +1 -1
  252. package/dist/pipeline/compiler/promptfoo-compiler.d.ts +1 -4
  253. package/dist/pipeline/compiler/promptfoo-compiler.js +3 -12
  254. package/dist/pipeline/compiler/provider-assembler.js +13 -7
  255. package/dist/pipeline/compiler/sandbox/docker-sandbox.d.ts +1 -1
  256. package/dist/pipeline/compiler/sandbox/docker-sandbox.js +1 -1
  257. package/dist/pipeline/compiler/sandbox/fixture-provisioner.d.ts +1 -1
  258. package/dist/pipeline/compiler/sandbox/fixture-provisioner.js +1 -1
  259. package/dist/pipeline/compiler/sandbox/git-worktree-sandbox.d.ts +1 -1
  260. package/dist/pipeline/compiler/sandbox/git-worktree-sandbox.js +1 -1
  261. package/dist/pipeline/compiler/sandbox/index.d.ts +1 -1
  262. package/dist/pipeline/compiler/sandbox/index.js +1 -1
  263. package/dist/pipeline/compiler/sandbox/sandbox-selector.d.ts +1 -1
  264. package/dist/pipeline/compiler/sandbox/sandbox-selector.js +1 -1
  265. package/dist/pipeline/compiler/sandbox/sandbox-strategy.d.ts +1 -1
  266. package/dist/pipeline/compiler/sandbox/sandbox-strategy.js +1 -1
  267. package/dist/pipeline/compiler/sandbox/tempdir-sandbox.d.ts +1 -1
  268. package/dist/pipeline/compiler/sandbox/tempdir-sandbox.js +1 -1
  269. package/dist/pipeline/compiler/scoring-bridge.d.ts +1 -1
  270. package/dist/pipeline/compiler/scoring-bridge.js +1 -1
  271. package/dist/pipeline/compiler/task-bridge.d.ts +41 -0
  272. package/dist/pipeline/compiler/task-bridge.js +92 -0
  273. package/dist/pipeline/compiler/task-graph-builder.d.ts +1 -4
  274. package/dist/pipeline/compiler/task-graph-builder.js +1 -4
  275. package/dist/pipeline/compiler/telemetry/index.d.ts +1 -1
  276. package/dist/pipeline/compiler/telemetry/index.js +1 -1
  277. package/dist/pipeline/compiler/variable-resolver.d.ts +1 -1
  278. package/dist/pipeline/compiler/variable-resolver.js +1 -1
  279. package/dist/pipeline/coverage-audit.d.ts +1 -1
  280. package/dist/pipeline/coverage-audit.js +1 -1
  281. package/dist/pipeline/degradations.d.ts +1 -1
  282. package/dist/pipeline/degradations.js +1 -1
  283. package/dist/pipeline/failure-modes.d.ts +1 -1
  284. package/dist/pipeline/failure-modes.js +13 -1
  285. package/dist/pipeline/gap-analysis.d.ts +1 -1
  286. package/dist/pipeline/gap-analysis.js +3 -1
  287. package/dist/pipeline/generate-configs.d.ts +2 -2
  288. package/dist/pipeline/generate-configs.js +15 -8
  289. package/dist/pipeline/grader-compare-runner.d.ts +1 -1
  290. package/dist/pipeline/grader-compare-runner.js +7 -1
  291. package/dist/pipeline/grader-comparison.d.ts +1 -1
  292. package/dist/pipeline/grader-comparison.js +1 -1
  293. package/dist/pipeline/grader-consistency-runner.d.ts +1 -1
  294. package/dist/pipeline/grader-consistency-runner.js +7 -1
  295. package/dist/pipeline/grader-consistency.d.ts +1 -1
  296. package/dist/pipeline/grader-consistency.js +1 -1
  297. package/dist/pipeline/grader-sensitivity-runner.d.ts +1 -1
  298. package/dist/pipeline/grader-sensitivity-runner.js +1 -1
  299. package/dist/pipeline/grader-sensitivity.d.ts +1 -1
  300. package/dist/pipeline/grader-sensitivity.js +1 -1
  301. package/dist/pipeline/grader-validate-runner.d.ts +1 -1
  302. package/dist/pipeline/grader-validate-runner.js +2 -2
  303. package/dist/pipeline/grader-validation.d.ts +1 -1
  304. package/dist/pipeline/grader-validation.js +1 -1
  305. package/dist/pipeline/map-request-to-config.js +15 -2
  306. package/dist/pipeline/mirror-repo-tasks.d.ts +1 -1
  307. package/dist/pipeline/mirror-repo-tasks.js +1 -1
  308. package/dist/pipeline/plan-format.d.ts +1 -1
  309. package/dist/pipeline/plan-format.js +1 -1
  310. package/dist/pipeline/plan.d.ts +1 -1
  311. package/dist/pipeline/plan.js +67 -29
  312. package/dist/pipeline/probe.d.ts +1 -1
  313. package/dist/pipeline/probe.js +1 -1
  314. package/dist/pipeline/readiness-report.d.ts +2 -2
  315. package/dist/pipeline/readiness-report.js +2 -2
  316. package/dist/pipeline/release-classification.d.ts +1 -1
  317. package/dist/pipeline/release-classification.js +1 -1
  318. package/dist/pipeline/release-report.d.ts +1 -1
  319. package/dist/pipeline/release-report.js +1 -1
  320. package/dist/pipeline/repo-eval-comment.d.ts +1 -1
  321. package/dist/pipeline/repo-eval-comment.js +1 -1
  322. package/dist/pipeline/repo-threshold-evaluator.d.ts +1 -1
  323. package/dist/pipeline/repo-threshold-evaluator.js +1 -1
  324. package/dist/pipeline/resolve-mappings.d.ts +6 -6
  325. package/dist/pipeline/resolve-mappings.js +44 -44
  326. package/dist/pipeline/retrieval-metrics.d.ts +3 -3
  327. package/dist/pipeline/retrieval-metrics.js +28 -20
  328. package/dist/pipeline/steps/calculate-scores-step.d.ts +11 -0
  329. package/dist/pipeline/steps/calculate-scores-step.js +89 -0
  330. package/dist/pipeline/steps/compare-step.d.ts +18 -0
  331. package/dist/pipeline/steps/compare-step.js +90 -0
  332. package/dist/pipeline/steps/eval-step.d.ts +53 -0
  333. package/dist/pipeline/steps/eval-step.js +347 -0
  334. package/dist/pipeline/steps/fetch-docs-step.d.ts +11 -0
  335. package/dist/pipeline/steps/fetch-docs-step.js +84 -0
  336. package/dist/pipeline/steps/generate-configs-step.d.ts +11 -0
  337. package/dist/pipeline/steps/generate-configs-step.js +98 -0
  338. package/dist/pipeline/steps/grader-consistency-step.d.ts +21 -0
  339. package/dist/pipeline/steps/grader-consistency-step.js +74 -0
  340. package/dist/pipeline/steps/publish-report-step.d.ts +57 -0
  341. package/dist/pipeline/steps/publish-report-step.js +243 -0
  342. package/dist/pipeline/steps/report-step.d.ts +13 -0
  343. package/dist/pipeline/steps/report-step.js +56 -0
  344. package/dist/pipeline/steps/update-scores-step.d.ts +11 -0
  345. package/dist/pipeline/steps/update-scores-step.js +42 -0
  346. package/dist/pipeline/targeted-loo.d.ts +1 -1
  347. package/dist/pipeline/targeted-loo.js +1 -1
  348. package/dist/pipeline/thresholds.d.ts +1 -1
  349. package/dist/pipeline/thresholds.js +1 -1
  350. package/dist/pipeline/validate.js +13 -0
  351. package/dist/report-store.d.ts +17 -0
  352. package/dist/report-store.js +24 -0
  353. package/dist/scripts/agent-behavior-report.d.ts +19 -0
  354. package/dist/scripts/agent-behavior-report.js +315 -0
  355. package/dist/scripts/baseline.d.ts +43 -0
  356. package/dist/scripts/baseline.js +267 -0
  357. package/dist/scripts/calculate-scores.d.ts +166 -0
  358. package/dist/scripts/calculate-scores.js +1296 -0
  359. package/dist/scripts/compare.d.ts +22 -0
  360. package/dist/scripts/compare.js +334 -0
  361. package/dist/scripts/coverage-audit.d.ts +44 -0
  362. package/dist/scripts/coverage-audit.js +209 -0
  363. package/dist/scripts/debug-eval.d.ts +19 -0
  364. package/dist/scripts/debug-eval.js +73 -0
  365. package/dist/scripts/discovery-report.d.ts +58 -0
  366. package/dist/scripts/discovery-report.js +250 -0
  367. package/dist/scripts/fetch-docs.d.ts +35 -0
  368. package/dist/scripts/fetch-docs.js +472 -0
  369. package/dist/scripts/generate-configs.d.ts +66 -0
  370. package/dist/scripts/generate-configs.js +459 -0
  371. package/dist/scripts/grader-api.d.ts +27 -0
  372. package/dist/scripts/grader-api.js +206 -0
  373. package/dist/scripts/grader-compare.d.ts +22 -0
  374. package/dist/scripts/grader-compare.js +368 -0
  375. package/dist/scripts/grader-consistency.d.ts +20 -0
  376. package/dist/scripts/grader-consistency.js +313 -0
  377. package/dist/scripts/grader-sensitivity.d.ts +22 -0
  378. package/dist/scripts/grader-sensitivity.js +354 -0
  379. package/dist/scripts/grader-validate.d.ts +19 -0
  380. package/dist/scripts/grader-validate.js +267 -0
  381. package/dist/scripts/measure-retrieval.d.ts +10 -0
  382. package/dist/scripts/measure-retrieval.js +145 -0
  383. package/dist/scripts/migrate-task-mode.d.ts +1 -1
  384. package/dist/scripts/migrate-task-mode.js +1 -1
  385. package/dist/scripts/migrate-tasks-to-content-lake.d.ts +1 -1
  386. package/dist/scripts/migrate-tasks-to-content-lake.js +1 -1
  387. package/dist/scripts/pipeline.d.ts +76 -0
  388. package/dist/scripts/pipeline.js +1031 -0
  389. package/dist/scripts/pr-comment.d.ts +10 -0
  390. package/dist/scripts/pr-comment.js +510 -0
  391. package/dist/scripts/readiness-report.d.ts +88 -0
  392. package/dist/scripts/readiness-report.js +342 -0
  393. package/dist/scripts/update-quality-scores.d.ts +15 -0
  394. package/dist/scripts/update-quality-scores.js +184 -0
  395. package/dist/scripts/validate-task-sources.d.ts +1 -1
  396. package/dist/scripts/validate-task-sources.js +1 -1
  397. package/dist/scripts/validate.d.ts +13 -0
  398. package/dist/scripts/validate.js +79 -0
  399. package/dist/scripts/webhook-server.d.ts +26 -0
  400. package/dist/scripts/webhook-server.js +147 -0
  401. package/dist/scripts/weekly-digest.d.ts +24 -0
  402. package/dist/scripts/weekly-digest.js +144 -0
  403. package/dist/sinks/format-slack.d.ts +64 -0
  404. package/dist/sinks/format-slack.js +306 -0
  405. package/dist/sinks/slack-sink.d.ts +27 -0
  406. package/dist/sinks/slack-sink.js +78 -0
  407. package/dist/sinks/types.d.ts +1 -1
  408. package/dist/sinks/types.js +1 -1
  409. package/dist/sinks/webhook-sink.d.ts +19 -0
  410. package/dist/sinks/webhook-sink.js +50 -0
  411. package/dist/tasks/knowledge-probe/define-type-api.task.ts +66 -0
  412. package/dist/tasks/knowledge-probe/groq-projections.task.ts +62 -0
  413. package/dist/tasks/literacy/content-lake.task.ts +181 -0
  414. package/dist/tasks/literacy/frameworks.task.ts +129 -0
  415. package/dist/tasks/literacy/functions.task.ts +70 -0
  416. package/dist/tasks/literacy/groq.task.ts +259 -0
  417. package/dist/tasks/literacy/image-handling.task.ts +95 -0
  418. package/dist/tasks/literacy/nextjs-live.task.ts +76 -0
  419. package/dist/tasks/literacy/portable-text.task.ts +169 -0
  420. package/dist/tasks/literacy/studio-setup.task.ts +134 -0
  421. package/dist/tasks/literacy/visual-editing.task.ts +147 -0
  422. package/package.json +24 -24
  423. package/tasks/.expanded.agentic.yaml +280 -0
  424. package/tasks/.expanded.yaml +565 -0
  425. package/tasks/knowledge-probe/define-type-api.task.ts +11 -0
  426. package/tasks/knowledge-probe/groq-projections.task.ts +3 -0
  427. package/tasks/literacy/content-lake.task.ts +181 -0
  428. package/tasks/literacy/frameworks.task.ts +1 -0
  429. package/tasks/literacy/functions.task.ts +1 -0
  430. package/tasks/literacy/groq.task.ts +1 -0
  431. package/tasks/literacy/image-handling.task.ts +95 -0
  432. package/tasks/literacy/nextjs-live.task.ts +2 -1
  433. package/tasks/literacy/portable-text.task.ts +169 -0
  434. package/tasks/literacy/studio-setup.task.ts +5 -2
  435. package/tasks/literacy/visual-editing.task.ts +1 -0
  436. package/LICENSE +0 -21
  437. package/tasks/frameworks.yaml +0 -98
  438. package/tasks/functions.yaml +0 -51
  439. package/tasks/groq.yaml +0 -216
  440. package/tasks/nextjs-live.yaml +0 -62
  441. package/tasks/studio-setup.yaml +0 -111
  442. package/tasks/visual-editing.yaml +0 -120
@@ -0,0 +1,181 @@
1
+ import { defineTask } from "@sanity/ailf-core"
2
+
3
+ export default [
4
+ defineTask({
5
+ id: "content-lake-mutations",
6
+ mode: "literacy",
7
+ title: "Content Lake - CRUD operations with @sanity/client",
8
+ description: "Content Lake - CRUD operations with @sanity/client",
9
+ // Used for score aggregation in reports and --area CLI filtering
10
+ area: "content-lake",
11
+ // Auto-generates an additional rubric checking if the response uses the provided docs
12
+ docCoverage: true,
13
+ context: {
14
+ // Sanity doc pages fetched and injected into the prompt as context; slug resolves via content lake
15
+ docs: [
16
+ {
17
+ slug: "js-client-mutations",
18
+ reason: "Creating and updating documents with @sanity/client",
19
+ },
20
+ {
21
+ slug: "js-client-transactions",
22
+ reason: "Atomic transactions — multiple mutations in one request",
23
+ },
24
+ {
25
+ slug: "js-client-deleting",
26
+ reason: "Deleting documents with @sanity/client",
27
+ },
28
+ {
29
+ slug: "http-patches",
30
+ reason: "Patch operations — set, unset, inc, insert, diffMatchPatch",
31
+ },
32
+ ],
33
+ },
34
+ // Path (relative to eval package root) to a gold-standard implementation the grader compares against
35
+ referenceSolution: "reference-solutions/content-lake/mutations.ts",
36
+ prompt: {
37
+ vars: {
38
+ // The instruction the model under evaluation sees (interpolated into the prompt template)
39
+ task: `Implement a content management service using @sanity/client that
40
+ performs CRUD operations on Sanity documents.
41
+
42
+ Requirements:
43
+ 1. Create a new document with typed fields
44
+ 2. Patch an existing document (set fields, unset fields, increment a counter)
45
+ 3. Delete a document by ID
46
+ 4. Use a transaction to atomically create multiple documents
47
+ 5. Include proper TypeScript types
48
+
49
+ Provide a complete, reusable implementation.`,
50
+ // file:// URI resolved at runtime to a generated canonical context file (from npx @sanity/ailf fetch-docs)
51
+ docs: "file://contexts/canonical/content-lake-mutations.md",
52
+ },
53
+ },
54
+ // Grading criteria applied to the model's response; each assertion produces a pass/fail contributing to the task score
55
+ assertions: [
56
+ // llm-rubric with template: the grader model evaluates the response against these criteria
57
+ {
58
+ type: "llm-rubric",
59
+ template: "task-completion",
60
+ criteria: [
61
+ "Document creation with client.create() or client.createOrReplace()",
62
+ "Patch operations with set/unset/inc",
63
+ "Document deletion with client.delete()",
64
+ "Transaction with multiple mutations",
65
+ ],
66
+ },
67
+ {
68
+ type: "llm-rubric",
69
+ template: "code-correctness",
70
+ criteria: [
71
+ "Correct @sanity/client API usage",
72
+ "Proper patch chaining syntax",
73
+ "Transaction commit pattern",
74
+ "TypeScript types for document shapes",
75
+ ],
76
+ },
77
+ // Deterministic string-match assertions — fast, cheap, no grader model needed
78
+ { type: "contains", value: "createClient", weight: 1 },
79
+ // contains-any: passes if ANY string in the array appears in the response
80
+ {
81
+ type: "contains-any",
82
+ value: [".create(", ".createOrReplace(", ".createIfNotExists("],
83
+ weight: 1,
84
+ },
85
+ {
86
+ type: "contains-any",
87
+ value: [".patch(", ".set("],
88
+ weight: 1,
89
+ },
90
+ {
91
+ type: "contains-any",
92
+ value: [".transaction(", "transaction"],
93
+ weight: 1,
94
+ },
95
+ {
96
+ type: "contains-any",
97
+ value: [".delete(", "client.delete"],
98
+ weight: 1,
99
+ },
100
+ ],
101
+ }),
102
+
103
+ defineTask({
104
+ id: "content-lake-realtime",
105
+ mode: "literacy",
106
+ title: "Content Lake - Real-time listeners with @sanity/client",
107
+ description: "Content Lake - Real-time listeners with @sanity/client",
108
+ area: "content-lake",
109
+ docCoverage: true,
110
+ context: {
111
+ docs: [
112
+ {
113
+ slug: "js-client-realtime",
114
+ reason: "Listening to content updates with @sanity/client",
115
+ },
116
+ {
117
+ slug: "realtime-updates",
118
+ reason: "Real-time updates — listener protocol, event types",
119
+ },
120
+ {
121
+ slug: "js-client-getting-started",
122
+ reason: "Client setup — configuration, tokens, API version",
123
+ },
124
+ {
125
+ slug: "js-client-querying",
126
+ reason:
127
+ "Querying content — needed for initial data fetch before listening",
128
+ },
129
+ ],
130
+ },
131
+ referenceSolution: "reference-solutions/content-lake/realtime.ts",
132
+ prompt: {
133
+ vars: {
134
+ task: `Implement real-time content synchronization using Sanity's listener API.
135
+
136
+ Requirements:
137
+ 1. Set up a listener that watches for changes to documents of a specific type
138
+ 2. Handle mutation events (create, update, delete)
139
+ 3. Apply changes to a local in-memory cache
140
+ 4. Handle reconnection and error scenarios
141
+ 5. Provide a way to unsubscribe/clean up the listener
142
+
143
+ Provide a complete implementation with TypeScript types.`,
144
+ docs: "file://contexts/canonical/content-lake-realtime.md",
145
+ },
146
+ },
147
+ assertions: [
148
+ {
149
+ type: "llm-rubric",
150
+ template: "task-completion",
151
+ criteria: [
152
+ "Listener setup with GROQ filter for document type",
153
+ "Mutation event handling (create, update, delete differentiation)",
154
+ "Local cache synchronization",
155
+ "Cleanup/unsubscribe mechanism",
156
+ "Error or reconnection handling",
157
+ ],
158
+ },
159
+ {
160
+ type: "llm-rubric",
161
+ template: "code-correctness",
162
+ criteria: [
163
+ "Correct client.listen() API usage",
164
+ "Proper GROQ filter syntax in listener",
165
+ "Subscription cleanup pattern (unsubscribe)",
166
+ "No deprecated listener APIs",
167
+ ],
168
+ },
169
+ {
170
+ type: "contains-any",
171
+ value: [".listen(", "client.listen"],
172
+ weight: 1,
173
+ },
174
+ {
175
+ type: "contains-any",
176
+ value: ["subscribe", ".subscribe("],
177
+ weight: 1,
178
+ },
179
+ ],
180
+ }),
181
+ ]
@@ -1,5 +1,6 @@
1
1
  import { defineTask } from "@sanity/ailf-core"
2
2
 
3
+ // See content-lake.task.ts for detailed explanations of common task properties
3
4
  export default [
4
5
  defineTask({
5
6
  id: "remix-integration",
@@ -1,5 +1,6 @@
1
1
  import { defineTask } from "@sanity/ailf-core"
2
2
 
3
+ // See content-lake.task.ts for detailed explanations of common task properties
3
4
  export default [
4
5
  defineTask({
5
6
  id: "functions-webhook",
@@ -1,5 +1,6 @@
1
1
  import { defineTask } from "@sanity/ailf-core"
2
2
 
3
+ // See content-lake.task.ts for detailed explanations of common task properties
3
4
  export default [
4
5
  defineTask({
5
6
  id: "groq-blog-queries",
@@ -0,0 +1,95 @@
1
+ import { defineTask } from "@sanity/ailf-core"
2
+
3
+ // See content-lake.task.ts for detailed explanations of common task properties
4
+ export default [
5
+ defineTask({
6
+ id: "image-asset-pipeline",
7
+ mode: "literacy",
8
+ title:
9
+ "Image Handling - URL builder with transforms, hotspot/crop, responsive images",
10
+ description:
11
+ "Image Handling - URL builder with transforms, hotspot/crop, responsive images",
12
+ area: "image-handling",
13
+ docCoverage: true,
14
+ context: {
15
+ docs: [
16
+ {
17
+ slug: "image-urls",
18
+ reason: "Image transformations — URL parameters, fit modes, format",
19
+ },
20
+ {
21
+ slug: "presenting-images",
22
+ reason: "Presenting images — best practices, responsive patterns",
23
+ },
24
+ {
25
+ slug: "image-type",
26
+ reason: "Image schema type — hotspot, crop, metadata fields",
27
+ },
28
+ {
29
+ slug: "js-client-assets",
30
+ reason: "Working with assets — upload, reference, URL generation",
31
+ },
32
+ ],
33
+ },
34
+ referenceSolution: "reference-solutions/image-handling/asset-pipeline.tsx",
35
+ prompt: {
36
+ vars: {
37
+ task: `Build an image component for a Next.js app that renders Sanity images
38
+ with proper transforms, hotspot/crop support, and responsive sizing.
39
+
40
+ Requirements:
41
+ 1. Use @sanity/image-url to generate CDN URLs from image references
42
+ 2. Support hotspot and crop data from the image field
43
+ 3. Generate responsive srcSet with multiple widths
44
+ 4. Support format conversion (WebP with fallback)
45
+ 5. Create a reusable React component with TypeScript props
46
+
47
+ Provide a complete implementation.`,
48
+ docs: "file://contexts/canonical/image-asset-pipeline.md",
49
+ },
50
+ },
51
+ assertions: [
52
+ {
53
+ type: "llm-rubric",
54
+ template: "task-completion",
55
+ criteria: [
56
+ "@sanity/image-url builder setup with project config",
57
+ "Hotspot and crop handling via .fit('crop') or equivalent",
58
+ "Responsive srcSet generation with multiple widths",
59
+ "WebP or auto format support",
60
+ "Reusable React component",
61
+ ],
62
+ },
63
+ {
64
+ type: "llm-rubric",
65
+ template: "code-correctness",
66
+ criteria: [
67
+ "Correct @sanity/image-url API usage (imageUrlBuilder, .image(), .width(), etc.)",
68
+ "Proper hotspot/crop application (not ignoring crop metadata)",
69
+ "Valid srcSet syntax",
70
+ "No hardcoded CDN URLs (uses builder)",
71
+ ],
72
+ },
73
+ {
74
+ type: "contains-any",
75
+ value: ["@sanity/image-url", "imageUrlBuilder", "image-url"],
76
+ weight: 1,
77
+ },
78
+ {
79
+ type: "contains-any",
80
+ value: ["srcSet", "srcset", "sizes"],
81
+ weight: 1,
82
+ },
83
+ {
84
+ type: "contains-any",
85
+ value: ["hotspot", "crop", ".fit("],
86
+ weight: 1,
87
+ },
88
+ {
89
+ type: "contains-any",
90
+ value: [".width(", ".height(", ".size("],
91
+ weight: 1,
92
+ },
93
+ ],
94
+ }),
95
+ ]
@@ -1,12 +1,13 @@
1
1
  import { defineTask } from "@sanity/ailf-core"
2
2
 
3
+ // See content-lake.task.ts for detailed explanations of common task properties
3
4
  export default [
4
5
  defineTask({
5
6
  id: "nextjs-app-router-integration",
6
7
  mode: "literacy",
7
8
  title: "Next.js - App Router integration with TypeScript",
8
9
  description: "Next.js - App Router integration with TypeScript",
9
- area: "nextjs",
10
+ area: "nextjs-live",
10
11
  docCoverage: true,
11
12
  context: {
12
13
  docs: [
@@ -0,0 +1,169 @@
1
+ import { defineTask } from "@sanity/ailf-core"
2
+
3
+ // See content-lake.task.ts for detailed explanations of common task properties
4
+ export default [
5
+ defineTask({
6
+ id: "portable-text-rendering",
7
+ mode: "literacy",
8
+ title: "Portable Text - Render rich text in React with custom components",
9
+ description:
10
+ "Portable Text - Render rich text in React with custom components",
11
+ area: "portable-text",
12
+ docCoverage: true,
13
+ context: {
14
+ docs: [
15
+ {
16
+ slug: "previewing-block-content",
17
+ reason: "Previewing Portable Text — rendering in frontends",
18
+ },
19
+ {
20
+ slug: "customizing-block-content",
21
+ reason:
22
+ "Common PT editor patterns — custom blocks, marks, annotations",
23
+ },
24
+ {
25
+ slug: "presenting-images",
26
+ reason: "Presenting images — needed for inline image blocks in PT",
27
+ },
28
+ {
29
+ slug: "image-urls",
30
+ reason: "Image URL builder for transforming image references in PT",
31
+ },
32
+ ],
33
+ },
34
+ referenceSolution: "reference-solutions/portable-text/rendering.tsx",
35
+ prompt: {
36
+ vars: {
37
+ task: `Render Portable Text content from Sanity in a React application using
38
+ @portabletext/react.
39
+
40
+ Requirements:
41
+ 1. Set up the PortableText component with custom components
42
+ 2. Handle image blocks with proper URL generation using @sanity/image-url
43
+ 3. Handle link marks (both internal and external links)
44
+ 4. Handle code blocks with syntax highlighting markup
45
+ 5. Provide TypeScript types for the component props
46
+
47
+ Provide a complete, reusable implementation.`,
48
+ docs: "file://contexts/canonical/portable-text-rendering.md",
49
+ },
50
+ },
51
+ assertions: [
52
+ {
53
+ type: "llm-rubric",
54
+ template: "task-completion",
55
+ criteria: [
56
+ "PortableText component from @portabletext/react",
57
+ "Custom component map with image, link, and code block handlers",
58
+ "Image URL generation from Sanity image references",
59
+ "TypeScript types for props and component definitions",
60
+ ],
61
+ },
62
+ {
63
+ type: "llm-rubric",
64
+ template: "code-correctness",
65
+ criteria: [
66
+ "Uses @portabletext/react (not deprecated @sanity/block-content-to-react)",
67
+ "Correct component map shape (types, marks, block, list, listItem)",
68
+ "Proper image URL builder usage with hotspot/crop support",
69
+ "No deprecated APIs or patterns",
70
+ ],
71
+ },
72
+ { type: "contains", value: "PortableText", weight: 1 },
73
+ {
74
+ type: "contains-any",
75
+ value: ["@portabletext/react", "portabletext/react"],
76
+ weight: 1,
77
+ },
78
+ {
79
+ type: "contains-any",
80
+ value: ["components", "serializers"],
81
+ weight: 1,
82
+ },
83
+ // not-contains: FAILS the assertion if the string appears — penalizes deprecated APIs
84
+ {
85
+ type: "not-contains",
86
+ value: "@sanity/block-content-to-react",
87
+ weight: 1,
88
+ },
89
+ { type: "not-contains", value: "BlockContent", weight: 1 },
90
+ ],
91
+ }),
92
+
93
+ defineTask({
94
+ id: "portable-text-custom-blocks",
95
+ mode: "literacy",
96
+ title: "Portable Text - Define and render custom block types",
97
+ description: "Portable Text - Define and render custom block types",
98
+ area: "portable-text",
99
+ docCoverage: true,
100
+ context: {
101
+ docs: [
102
+ {
103
+ slug: "customizing-the-portable-text-editor",
104
+ reason: "Customizing the PT editor — adding custom block types",
105
+ },
106
+ {
107
+ slug: "customizing-block-content",
108
+ reason: "Common PT patterns — custom blocks, decorators, annotations",
109
+ },
110
+ {
111
+ slug: "portable-text-editor-configuration",
112
+ reason: "PT editor configuration — styles, lists, marks, of array",
113
+ },
114
+ {
115
+ slug: "previewing-block-content",
116
+ reason: "Previewing PT — rendering custom blocks in frontends",
117
+ },
118
+ ],
119
+ },
120
+ referenceSolution: "reference-solutions/portable-text/custom-blocks.ts",
121
+ prompt: {
122
+ vars: {
123
+ task: `Define custom block types for a Portable Text field and render them
124
+ in a React frontend.
125
+
126
+ Requirements:
127
+ 1. Add a "code" block type with language and code fields
128
+ 2. Add a "callout" block type with tone (info/warning/error) and text
129
+ 3. Define the schema using defineArrayMember in a Sanity schema file
130
+ 4. Show how to render these custom blocks with @portabletext/react
131
+
132
+ Provide both the schema definition and the frontend rendering code.`,
133
+ docs: "file://contexts/canonical/portable-text-custom-blocks.md",
134
+ },
135
+ },
136
+ assertions: [
137
+ {
138
+ type: "llm-rubric",
139
+ template: "task-completion",
140
+ criteria: [
141
+ "Code block type with language and code fields",
142
+ "Callout block type with tone and text",
143
+ "Schema defined with defineArrayMember or equivalent",
144
+ "Frontend rendering for both custom block types",
145
+ ],
146
+ },
147
+ {
148
+ type: "llm-rubric",
149
+ template: "code-correctness",
150
+ criteria: [
151
+ "Correct defineArrayMember usage for custom blocks",
152
+ 'Proper "of" array structure in the PT field',
153
+ "Custom component map handles both block types",
154
+ "No deprecated schema patterns",
155
+ ],
156
+ },
157
+ {
158
+ type: "contains-any",
159
+ value: ["defineArrayMember", "defineField"],
160
+ weight: 1,
161
+ },
162
+ {
163
+ type: "contains-any",
164
+ value: ["components", "serializers"],
165
+ weight: 1,
166
+ },
167
+ ],
168
+ }),
169
+ ]
@@ -1,12 +1,13 @@
1
1
  import { defineTask } from "@sanity/ailf-core"
2
2
 
3
+ // See content-lake.task.ts for detailed explanations of common task properties
3
4
  export default [
4
5
  defineTask({
5
6
  id: "studio-blog-schema",
6
7
  mode: "literacy",
7
8
  title: "Studio Setup - Blog schema with posts, authors, categories",
8
9
  description: "Studio Setup - Blog schema with posts, authors, categories",
9
- area: "studio",
10
+ area: "studio-setup",
10
11
  docCoverage: true,
11
12
  context: {
12
13
  docs: [
@@ -68,6 +69,7 @@ Include the schema definitions and sanity.config.ts setup.`,
68
69
  { type: "contains", value: "defineConfig", weight: 1 },
69
70
  { type: "contains", value: "defineType", weight: 1 },
70
71
  { type: "contains", value: "defineField", weight: 1 },
72
+ // not-contains: FAILS the assertion if the string appears — penalizes deprecated v2 schema API
71
73
  { type: "not-contains", value: "createSchema", weight: 1 },
72
74
  { type: "not-contains", value: "import Schema from", weight: 1 },
73
75
  ],
@@ -78,7 +80,7 @@ Include the schema definitions and sanity.config.ts setup.`,
78
80
  mode: "literacy",
79
81
  title: "Studio Setup - Custom tool in sidebar",
80
82
  description: "Studio Setup - Custom tool in sidebar",
81
- area: "studio",
83
+ area: "studio-setup",
82
84
  context: {
83
85
  docs: [
84
86
  {
@@ -120,6 +122,7 @@ Provide the tool definition and sanity.config.ts registration.`,
120
122
  ],
121
123
  },
122
124
  { type: "contains", value: "tools", weight: 1 },
125
+ // javascript: custom JS assertion — `output` is the model's response string; must return boolean
123
126
  {
124
127
  type: "javascript",
125
128
  value: `return output.includes('name:') &&
@@ -1,5 +1,6 @@
1
1
  import { defineTask } from "@sanity/ailf-core"
2
2
 
3
+ // See content-lake.task.ts for detailed explanations of common task properties
3
4
  export default [
4
5
  defineTask({
5
6
  id: "visual-editing-presentation",
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Sanity.io
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,98 +0,0 @@
1
- # tasks/frameworks.yaml
2
- #
3
- # Other Framework Integrations — Remix, Nuxt, etc.
4
- #
5
- # Each task is defined once. The pipeline auto-generates gold (with docs)
6
- # and baseline (without docs) variants from each definition.
7
-
8
- # ============================================================
9
- # TASK: Remix Integration
10
- # ============================================================
11
- - id: remix-integration
12
- description: "Frameworks - Remix integration with data fetching"
13
- doc_coverage: true
14
- canonical_docs:
15
- - slug: displaying-content-in-a-react-router-front-end
16
- reason: "React Router front-end content display guide"
17
- - slug: visual-editing-with-react-router
18
- reason: "React Router / Remix integration with visual editing"
19
- - slug: functions-js-client
20
- reason: "Configuring @sanity/client for data fetching"
21
- reference_solution: reference-solutions/frameworks/remix.tsx
22
- vars:
23
- task: |
24
- Integrate Sanity into a Remix application:
25
-
26
- 1. Set up the Sanity client
27
- 2. Create a loader that fetches blog posts using GROQ
28
- 3. Build a route component that renders the fetched posts
29
- 4. Handle loading and error states properly
30
-
31
- Provide all necessary files for a working Remix + Sanity integration.
32
- docs: file://contexts/canonical/remix-integration.md
33
- assert:
34
- - type: llm-rubric
35
- template: task-completion
36
- criteria:
37
- - Sanity client configuration
38
- - Remix loader function with GROQ query
39
- - Route component using useLoaderData
40
- - Proper typing
41
-
42
- - type: llm-rubric
43
- template: code-correctness
44
- criteria:
45
- - Modern Remix patterns (v2 conventions)
46
- - Proper loader/component separation
47
- - Valid GROQ queries
48
- - No deprecated APIs
49
-
50
- - type: contains-any
51
- value:
52
- - "useLoaderData"
53
- - "loader"
54
- weight: 1
55
-
56
- # ============================================================
57
- # TASK: Nuxt 3 Integration
58
- # ============================================================
59
- - id: nuxt-integration
60
- description: "Frameworks - Nuxt 4 integration"
61
- doc_coverage: true
62
- canonical_docs:
63
- - slug: displaying-content-in-nuxt-js
64
- reason: "Nuxt.js front-end content display guide"
65
- - slug: visual-editing-with-nuxt
66
- reason: "Nuxt visual editing integration"
67
- reference_solution: reference-solutions/frameworks/nuxt.ts
68
- vars:
69
- task: |
70
- Integrate Sanity into a Nuxt 4 application:
71
-
72
- 1. Install and configure the @nuxtjs/sanity module
73
- 2. Create a page that fetches and displays blog posts
74
- 3. Use Nuxt composables for data fetching
75
-
76
- Provide all necessary configuration and component code.
77
- docs: file://contexts/canonical/nuxt-integration.md
78
- assert:
79
- - type: llm-rubric
80
- template: task-completion
81
- criteria:
82
- - "@nuxtjs/sanity module setup in nuxt.config.ts"
83
- - Page component using Nuxt data fetching composables
84
- - Sanity GROQ query
85
-
86
- - type: llm-rubric
87
- template: code-correctness
88
- criteria:
89
- - Nuxt 3 module configuration syntax
90
- - Uses useSanityQuery or equivalent composable
91
- - Proper Nuxt 3 patterns (not Nuxt 2)
92
-
93
- - type: contains-any
94
- value:
95
- - "@nuxtjs/sanity"
96
- - "useSanityQuery"
97
- - "sanity:"
98
- weight: 1