@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.
- package/canonical/grader-references/README.md +2 -2
- package/canonical/reference-solutions/content-lake/mutations.ts +160 -0
- package/canonical/reference-solutions/content-lake/realtime.ts +187 -0
- package/canonical/reference-solutions/image-handling/asset-pipeline.tsx +166 -0
- package/canonical/reference-solutions/portable-text/custom-blocks.ts +204 -0
- package/canonical/reference-solutions/portable-text/rendering.tsx +163 -0
- package/config/features.ts +1 -1
- package/config/models.ts +28 -23
- package/config/sources.ts +1 -1
- package/config/thresholds.ts +1 -1
- package/dist/_vendor/ailf-core/__tests__/comparison-formatters.test.d.ts +10 -0
- package/dist/_vendor/ailf-core/__tests__/comparison-formatters.test.js +185 -0
- package/dist/_vendor/ailf-core/artifact-capture/__tests__/noop-collector.test.d.ts +6 -0
- package/dist/_vendor/ailf-core/artifact-capture/__tests__/noop-collector.test.js +42 -0
- package/dist/_vendor/ailf-core/artifact-capture/noop-collector.d.ts +14 -0
- package/dist/_vendor/ailf-core/artifact-capture/noop-collector.js +25 -0
- package/dist/_vendor/ailf-core/config-helpers.d.ts +6 -0
- package/dist/_vendor/ailf-core/config-helpers.js +29 -0
- package/dist/_vendor/ailf-core/examples/index.d.ts +164 -94
- package/dist/_vendor/ailf-core/examples/index.js +208 -114
- package/dist/_vendor/ailf-core/index.d.ts +1 -0
- package/dist/_vendor/ailf-core/index.js +1 -0
- package/dist/_vendor/ailf-core/ports/artifact-collector.d.ts +94 -0
- package/dist/_vendor/ailf-core/ports/artifact-collector.js +13 -0
- package/dist/_vendor/ailf-core/ports/capture-comparator.d.ts +138 -0
- package/dist/_vendor/ailf-core/ports/capture-comparator.js +10 -0
- package/dist/_vendor/ailf-core/ports/context.d.ts +20 -1
- package/dist/_vendor/ailf-core/ports/eval-runner.d.ts +6 -0
- package/dist/_vendor/ailf-core/ports/index.d.ts +2 -0
- package/dist/_vendor/ailf-core/ports/pipeline-step.d.ts +11 -0
- package/dist/_vendor/ailf-core/ports/task-source.d.ts +3 -3
- package/dist/_vendor/ailf-core/ports/task-source.js +3 -3
- package/dist/_vendor/ailf-core/schemas/pipeline-request.d.ts +6 -1
- package/dist/_vendor/ailf-core/schemas/pipeline-request.js +14 -2
- package/dist/_vendor/ailf-core/services/config-helpers.d.ts +16 -1
- package/dist/_vendor/ailf-core/services/config-helpers.js +21 -0
- package/dist/_vendor/ailf-core/services/index.d.ts +1 -1
- package/dist/_vendor/ailf-core/services/index.js +1 -1
- package/dist/_vendor/ailf-core/services/scoring.js +9 -0
- package/dist/_vendor/ailf-core/types/generalized-task.d.ts +12 -1
- package/dist/_vendor/ailf-core/types/generalized-task.js +1 -1
- package/dist/_vendor/ailf-core/types/index.d.ts +47 -4
- package/dist/_vendor/ailf-core/types/plugin-registry.d.ts +27 -0
- package/dist/_vendor/ailf-shared/eval-modes.d.ts +15 -0
- package/dist/_vendor/ailf-shared/eval-modes.js +18 -0
- package/dist/_vendor/ailf-tasks/cli.d.ts +8 -0
- package/dist/_vendor/ailf-tasks/cli.js +61 -0
- package/dist/_vendor/ailf-tasks/index.d.ts +13 -0
- package/dist/_vendor/ailf-tasks/index.js +16 -0
- package/dist/_vendor/ailf-tasks/parser.d.ts +27 -0
- package/dist/_vendor/ailf-tasks/parser.js +73 -0
- package/dist/_vendor/ailf-tasks/schemas.d.ts +198 -0
- package/dist/_vendor/ailf-tasks/schemas.js +180 -0
- package/dist/_vendor/ailf-tasks/validation.d.ts +47 -0
- package/dist/_vendor/ailf-tasks/validation.js +162 -0
- package/dist/adapters/api-client/remediation.js +2 -2
- package/dist/adapters/config-sources/file-config-adapter.js +6 -1
- package/dist/adapters/eval-runners/promptfoo-eval-adapter.js +8 -2
- package/dist/adapters/index.d.ts +0 -1
- package/dist/adapters/index.js +0 -1
- package/dist/adapters/task-sources/composite-task-source.d.ts +1 -1
- package/dist/adapters/task-sources/composite-task-source.js +1 -1
- package/dist/adapters/task-sources/content-lake-task-source.d.ts +4 -6
- package/dist/adapters/task-sources/content-lake-task-source.js +4 -6
- package/dist/adapters/task-sources/index.d.ts +1 -2
- package/dist/adapters/task-sources/index.js +1 -2
- package/dist/adapters/task-sources/repo-schemas.d.ts +1 -1
- package/dist/adapters/task-sources/repo-schemas.js +2 -2
- package/dist/adapters/task-sources/repo-task-source.js +1 -1
- package/dist/adapters/task-sources/repo-trigger.d.ts +1 -1
- package/dist/adapters/task-sources/repo-trigger.js +1 -1
- package/dist/adapters/task-sources/task-file-loader.d.ts +9 -6
- package/dist/adapters/task-sources/task-file-loader.js +20 -6
- package/dist/agent-observer/test-imports.d.ts +7 -0
- package/dist/agent-observer/test-imports.js +185 -0
- package/dist/artifact-capture/comparator.d.ts +22 -0
- package/dist/artifact-capture/comparator.js +493 -0
- package/dist/artifact-capture/filesystem-collector.d.ts +42 -0
- package/dist/artifact-capture/filesystem-collector.js +237 -0
- package/dist/artifact-capture/redact-artifact.d.ts +20 -0
- package/dist/artifact-capture/redact-artifact.js +115 -0
- package/dist/assertions/source-isolation.d.ts +1 -1
- package/dist/assertions/source-isolation.js +1 -1
- package/dist/cli.js +4 -0
- package/dist/commands/calculate-scores.js +1 -0
- package/dist/commands/capture-compare.d.ts +15 -0
- package/dist/commands/capture-compare.js +253 -0
- package/dist/commands/capture-list.d.ts +12 -0
- package/dist/commands/capture-list.js +147 -0
- package/dist/commands/capture.d.ts +9 -0
- package/dist/commands/capture.js +16 -0
- package/dist/commands/chronic-failures.d.ts +8 -0
- package/dist/commands/chronic-failures.js +33 -0
- package/dist/commands/explain-handler.d.ts +1 -1
- package/dist/commands/explain-handler.js +37 -8
- package/dist/commands/fetch-docs.js +1 -0
- package/dist/commands/generate-configs.d.ts +3 -3
- package/dist/commands/generate-configs.js +20 -8
- package/dist/commands/init.d.ts +2 -3
- package/dist/commands/init.js +56 -170
- package/dist/commands/pipeline-action.d.ts +7 -1
- package/dist/commands/pipeline-action.js +43 -19
- package/dist/commands/pipeline.d.ts +6 -1
- package/dist/commands/pipeline.js +7 -2
- package/dist/commands/pr-comment.js +1 -0
- package/dist/commands/publish.js +1 -0
- package/dist/commands/shared/help.js +2 -2
- package/dist/commands/update-quality-scores.d.ts +5 -0
- package/dist/commands/update-quality-scores.js +20 -0
- package/dist/composition-root.d.ts +2 -3
- package/dist/composition-root.js +27 -14
- package/dist/config/features.ts +23 -0
- package/dist/config/models.ts +100 -0
- package/dist/config/prompts.ts +16 -0
- package/dist/config/rubrics.ts +225 -0
- package/dist/config/schedules.ts +47 -0
- package/dist/config/sinks.ts +37 -0
- package/dist/config/sources.ts +21 -0
- package/dist/config/thresholds.ts +61 -0
- package/dist/lib/agent-behavior-report.d.ts +8 -0
- package/dist/lib/agent-behavior-report.js +185 -0
- package/dist/lib/baseline.d.ts +19 -0
- package/dist/lib/baseline.js +153 -0
- package/dist/lib/calculate-scores.d.ts +23 -0
- package/dist/lib/calculate-scores.js +42 -0
- package/dist/lib/compare.d.ts +18 -0
- package/dist/lib/compare.js +170 -0
- package/dist/lib/coverage-audit.d.ts +4 -0
- package/dist/lib/coverage-audit.js +42 -0
- package/dist/lib/discovery-report.d.ts +13 -0
- package/dist/lib/discovery-report.js +57 -0
- package/dist/lib/fetch-docs.d.ts +30 -0
- package/dist/lib/fetch-docs.js +171 -0
- package/dist/lib/generate-configs.d.ts +25 -0
- package/dist/lib/generate-configs.js +42 -0
- package/dist/lib/grader-api.d.ts +21 -0
- package/dist/lib/grader-api.js +34 -0
- package/dist/lib/grader-compare.d.ts +19 -0
- package/dist/lib/grader-compare.js +91 -0
- package/dist/lib/grader-consistency.d.ts +27 -0
- package/dist/lib/grader-consistency.js +79 -0
- package/dist/lib/grader-sensitivity.d.ts +19 -0
- package/dist/lib/grader-sensitivity.js +75 -0
- package/dist/lib/grader-validate.d.ts +19 -0
- package/dist/lib/grader-validate.js +78 -0
- package/dist/lib/measure-retrieval.d.ts +14 -0
- package/dist/lib/measure-retrieval.js +71 -0
- package/dist/lib/pr-comment.d.ts +16 -0
- package/dist/lib/pr-comment.js +28 -0
- package/dist/lib/readiness-report.d.ts +13 -0
- package/dist/lib/readiness-report.js +108 -0
- package/dist/lib/webhook-server.d.ts +11 -0
- package/dist/lib/webhook-server.js +24 -0
- package/dist/lib/weekly-digest.d.ts +24 -0
- package/dist/lib/weekly-digest.js +148 -0
- package/dist/orchestration/build-app-context.js +13 -0
- package/dist/orchestration/cache-context.d.ts +23 -0
- package/dist/orchestration/cache-context.js +43 -0
- package/dist/orchestration/env-bridge.d.ts +21 -0
- package/dist/orchestration/env-bridge.js +66 -0
- package/dist/orchestration/load-pipeline-tasks.d.ts +34 -0
- package/dist/orchestration/load-pipeline-tasks.js +52 -0
- package/dist/orchestration/pipeline-orchestrator.js +75 -5
- package/dist/orchestration/step-runner.js +5 -1
- package/dist/orchestration/steps/calculate-scores-step.d.ts +1 -0
- package/dist/orchestration/steps/calculate-scores-step.js +13 -0
- package/dist/orchestration/steps/callback-step.js +10 -1
- package/dist/orchestration/steps/compare-step.js +6 -3
- package/dist/orchestration/steps/discovery-report-step.js +6 -2
- package/dist/orchestration/steps/fetch-docs-shell.d.ts +17 -0
- package/dist/orchestration/steps/fetch-docs-shell.js +30 -0
- package/dist/orchestration/steps/fetch-docs-step.d.ts +1 -0
- package/dist/orchestration/steps/fetch-docs-step.js +30 -16
- package/dist/orchestration/steps/gap-analysis-step.js +13 -2
- package/dist/orchestration/steps/generate-configs-step.d.ts +1 -0
- package/dist/orchestration/steps/generate-configs-step.js +50 -15
- package/dist/orchestration/steps/mirror-repo-tasks-step.d.ts +1 -1
- package/dist/orchestration/steps/mirror-repo-tasks-step.js +1 -1
- package/dist/orchestration/steps/publish-report-step.js +19 -0
- package/dist/orchestration/steps/readiness-step.js +8 -3
- package/dist/orchestration/steps/report-step.js +17 -4
- package/dist/orchestration/steps/run-eval-step.d.ts +1 -0
- package/dist/orchestration/steps/run-eval-step.js +52 -32
- package/dist/pipeline/agent-behavior-report.js +6 -0
- package/dist/pipeline/attribution.d.ts +1 -1
- package/dist/pipeline/attribution.js +1 -1
- package/dist/pipeline/cache.js +29 -15
- package/dist/pipeline/calculate-scores.d.ts +2 -0
- package/dist/pipeline/calculate-scores.js +70 -33
- package/dist/pipeline/checks.d.ts +8 -3
- package/dist/pipeline/checks.js +23 -3
- package/dist/pipeline/chronic-failures.d.ts +55 -0
- package/dist/pipeline/chronic-failures.js +110 -0
- package/dist/pipeline/compiler/__tests__/mcp-server-handler.test.js +33 -0
- package/dist/pipeline/compiler/__tests__/promptfoo-compiler.test.js +2 -3
- package/dist/pipeline/compiler/__tests__/task-bridge.test.d.ts +9 -0
- package/dist/pipeline/compiler/__tests__/task-bridge.test.js +339 -0
- package/dist/pipeline/compiler/__tests__/tool-loop-openai.test.d.ts +10 -0
- package/dist/pipeline/compiler/__tests__/tool-loop-openai.test.js +509 -0
- package/dist/pipeline/compiler/assertion-mapper.d.ts +1 -1
- package/dist/pipeline/compiler/assertion-mapper.js +1 -1
- package/dist/pipeline/compiler/compiler-to-yaml.d.ts +2 -7
- package/dist/pipeline/compiler/compiler-to-yaml.js +2 -7
- package/dist/pipeline/compiler/config-loader.d.ts +14 -0
- package/dist/pipeline/compiler/config-loader.js +42 -2
- package/dist/pipeline/compiler/fixture-resolver.d.ts +1 -1
- package/dist/pipeline/compiler/fixture-resolver.js +1 -1
- package/dist/pipeline/compiler/ignore-fields.d.ts +1 -1
- package/dist/pipeline/compiler/ignore-fields.js +1 -1
- package/dist/pipeline/compiler/index.d.ts +2 -5
- package/dist/pipeline/compiler/index.js +2 -5
- package/dist/pipeline/compiler/literacy-bridge.d.ts +1 -1
- package/dist/pipeline/compiler/literacy-bridge.js +1 -1
- package/dist/pipeline/compiler/mode-bases/agent-harness.d.ts +1 -1
- package/dist/pipeline/compiler/mode-bases/agent-harness.js +1 -1
- package/dist/pipeline/compiler/mode-bases/knowledge-probe.d.ts +1 -1
- package/dist/pipeline/compiler/mode-bases/knowledge-probe.js +1 -1
- package/dist/pipeline/compiler/mode-bases/literacy.d.ts +13 -2
- package/dist/pipeline/compiler/mode-bases/literacy.js +55 -1
- package/dist/pipeline/compiler/mode-bases/mcp-server.d.ts +1 -1
- package/dist/pipeline/compiler/mode-bases/mcp-server.js +1 -1
- package/dist/pipeline/compiler/mode-handlers/agent-harness/index.d.ts +1 -1
- package/dist/pipeline/compiler/mode-handlers/agent-harness/index.js +1 -1
- package/dist/pipeline/compiler/mode-handlers/agent-harness-handler.d.ts +70 -0
- package/dist/pipeline/compiler/mode-handlers/agent-harness-handler.js +485 -0
- package/dist/pipeline/compiler/mode-handlers/index.d.ts +2 -2
- package/dist/pipeline/compiler/mode-handlers/index.js +2 -2
- package/dist/pipeline/compiler/mode-handlers/knowledge-probe/index.d.ts +1 -1
- package/dist/pipeline/compiler/mode-handlers/knowledge-probe/index.js +1 -1
- package/dist/pipeline/compiler/mode-handlers/knowledge-probe-handler.d.ts +76 -0
- package/dist/pipeline/compiler/mode-handlers/knowledge-probe-handler.js +245 -0
- package/dist/pipeline/compiler/mode-handlers/literacy/index.d.ts +1 -1
- package/dist/pipeline/compiler/mode-handlers/literacy/index.js +1 -1
- package/dist/pipeline/compiler/mode-handlers/literacy-handler.d.ts +89 -0
- package/dist/pipeline/compiler/mode-handlers/literacy-handler.js +379 -0
- package/dist/pipeline/compiler/mode-handlers/mcp-assertions.d.ts +50 -0
- package/dist/pipeline/compiler/mode-handlers/mcp-assertions.js +334 -0
- package/dist/pipeline/compiler/mode-handlers/mcp-server/assertions.d.ts +1 -1
- package/dist/pipeline/compiler/mode-handlers/mcp-server/assertions.js +1 -1
- package/dist/pipeline/compiler/mode-handlers/mcp-server/index.d.ts +1 -1
- package/dist/pipeline/compiler/mode-handlers/mcp-server/index.js +1 -1
- package/dist/pipeline/compiler/mode-handlers/mcp-server/provider-config.js +4 -0
- package/dist/pipeline/compiler/mode-handlers/mcp-server-handler.d.ts +69 -0
- package/dist/pipeline/compiler/mode-handlers/mcp-server-handler.js +307 -0
- package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/index.js +22 -5
- package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/mcp-connection.js +6 -0
- package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/tool-loop-openai.d.ts +10 -5
- package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/tool-loop-openai.js +314 -7
- package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider/types.d.ts +10 -0
- package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider.d.ts +65 -0
- package/dist/pipeline/compiler/mode-handlers/mcp-tool-provider.js +368 -0
- package/dist/pipeline/compiler/presets/sanity-literacy.d.ts +1 -1
- package/dist/pipeline/compiler/presets/sanity-literacy.js +1 -1
- package/dist/pipeline/compiler/promptfoo-compiler.d.ts +1 -4
- package/dist/pipeline/compiler/promptfoo-compiler.js +3 -12
- package/dist/pipeline/compiler/provider-assembler.js +13 -7
- package/dist/pipeline/compiler/sandbox/docker-sandbox.d.ts +1 -1
- package/dist/pipeline/compiler/sandbox/docker-sandbox.js +1 -1
- package/dist/pipeline/compiler/sandbox/fixture-provisioner.d.ts +1 -1
- package/dist/pipeline/compiler/sandbox/fixture-provisioner.js +1 -1
- package/dist/pipeline/compiler/sandbox/git-worktree-sandbox.d.ts +1 -1
- package/dist/pipeline/compiler/sandbox/git-worktree-sandbox.js +1 -1
- package/dist/pipeline/compiler/sandbox/index.d.ts +1 -1
- package/dist/pipeline/compiler/sandbox/index.js +1 -1
- package/dist/pipeline/compiler/sandbox/sandbox-selector.d.ts +1 -1
- package/dist/pipeline/compiler/sandbox/sandbox-selector.js +1 -1
- package/dist/pipeline/compiler/sandbox/sandbox-strategy.d.ts +1 -1
- package/dist/pipeline/compiler/sandbox/sandbox-strategy.js +1 -1
- package/dist/pipeline/compiler/sandbox/tempdir-sandbox.d.ts +1 -1
- package/dist/pipeline/compiler/sandbox/tempdir-sandbox.js +1 -1
- package/dist/pipeline/compiler/scoring-bridge.d.ts +1 -1
- package/dist/pipeline/compiler/scoring-bridge.js +1 -1
- package/dist/pipeline/compiler/task-bridge.d.ts +41 -0
- package/dist/pipeline/compiler/task-bridge.js +92 -0
- package/dist/pipeline/compiler/task-graph-builder.d.ts +1 -4
- package/dist/pipeline/compiler/task-graph-builder.js +1 -4
- package/dist/pipeline/compiler/telemetry/index.d.ts +1 -1
- package/dist/pipeline/compiler/telemetry/index.js +1 -1
- package/dist/pipeline/compiler/variable-resolver.d.ts +1 -1
- package/dist/pipeline/compiler/variable-resolver.js +1 -1
- package/dist/pipeline/coverage-audit.d.ts +1 -1
- package/dist/pipeline/coverage-audit.js +1 -1
- package/dist/pipeline/degradations.d.ts +1 -1
- package/dist/pipeline/degradations.js +1 -1
- package/dist/pipeline/failure-modes.d.ts +1 -1
- package/dist/pipeline/failure-modes.js +13 -1
- package/dist/pipeline/gap-analysis.d.ts +1 -1
- package/dist/pipeline/gap-analysis.js +3 -1
- package/dist/pipeline/generate-configs.d.ts +2 -2
- package/dist/pipeline/generate-configs.js +15 -8
- package/dist/pipeline/grader-compare-runner.d.ts +1 -1
- package/dist/pipeline/grader-compare-runner.js +7 -1
- package/dist/pipeline/grader-comparison.d.ts +1 -1
- package/dist/pipeline/grader-comparison.js +1 -1
- package/dist/pipeline/grader-consistency-runner.d.ts +1 -1
- package/dist/pipeline/grader-consistency-runner.js +7 -1
- package/dist/pipeline/grader-consistency.d.ts +1 -1
- package/dist/pipeline/grader-consistency.js +1 -1
- package/dist/pipeline/grader-sensitivity-runner.d.ts +1 -1
- package/dist/pipeline/grader-sensitivity-runner.js +1 -1
- package/dist/pipeline/grader-sensitivity.d.ts +1 -1
- package/dist/pipeline/grader-sensitivity.js +1 -1
- package/dist/pipeline/grader-validate-runner.d.ts +1 -1
- package/dist/pipeline/grader-validate-runner.js +2 -2
- package/dist/pipeline/grader-validation.d.ts +1 -1
- package/dist/pipeline/grader-validation.js +1 -1
- package/dist/pipeline/map-request-to-config.js +15 -2
- package/dist/pipeline/mirror-repo-tasks.d.ts +1 -1
- package/dist/pipeline/mirror-repo-tasks.js +1 -1
- package/dist/pipeline/plan-format.d.ts +1 -1
- package/dist/pipeline/plan-format.js +1 -1
- package/dist/pipeline/plan.d.ts +1 -1
- package/dist/pipeline/plan.js +67 -29
- package/dist/pipeline/probe.d.ts +1 -1
- package/dist/pipeline/probe.js +1 -1
- package/dist/pipeline/readiness-report.d.ts +2 -2
- package/dist/pipeline/readiness-report.js +2 -2
- package/dist/pipeline/release-classification.d.ts +1 -1
- package/dist/pipeline/release-classification.js +1 -1
- package/dist/pipeline/release-report.d.ts +1 -1
- package/dist/pipeline/release-report.js +1 -1
- package/dist/pipeline/repo-eval-comment.d.ts +1 -1
- package/dist/pipeline/repo-eval-comment.js +1 -1
- package/dist/pipeline/repo-threshold-evaluator.d.ts +1 -1
- package/dist/pipeline/repo-threshold-evaluator.js +1 -1
- package/dist/pipeline/resolve-mappings.d.ts +6 -6
- package/dist/pipeline/resolve-mappings.js +44 -44
- package/dist/pipeline/retrieval-metrics.d.ts +3 -3
- package/dist/pipeline/retrieval-metrics.js +28 -20
- package/dist/pipeline/steps/calculate-scores-step.d.ts +11 -0
- package/dist/pipeline/steps/calculate-scores-step.js +89 -0
- package/dist/pipeline/steps/compare-step.d.ts +18 -0
- package/dist/pipeline/steps/compare-step.js +90 -0
- package/dist/pipeline/steps/eval-step.d.ts +53 -0
- package/dist/pipeline/steps/eval-step.js +347 -0
- package/dist/pipeline/steps/fetch-docs-step.d.ts +11 -0
- package/dist/pipeline/steps/fetch-docs-step.js +84 -0
- package/dist/pipeline/steps/generate-configs-step.d.ts +11 -0
- package/dist/pipeline/steps/generate-configs-step.js +98 -0
- package/dist/pipeline/steps/grader-consistency-step.d.ts +21 -0
- package/dist/pipeline/steps/grader-consistency-step.js +74 -0
- package/dist/pipeline/steps/publish-report-step.d.ts +57 -0
- package/dist/pipeline/steps/publish-report-step.js +243 -0
- package/dist/pipeline/steps/report-step.d.ts +13 -0
- package/dist/pipeline/steps/report-step.js +56 -0
- package/dist/pipeline/steps/update-scores-step.d.ts +11 -0
- package/dist/pipeline/steps/update-scores-step.js +42 -0
- package/dist/pipeline/targeted-loo.d.ts +1 -1
- package/dist/pipeline/targeted-loo.js +1 -1
- package/dist/pipeline/thresholds.d.ts +1 -1
- package/dist/pipeline/thresholds.js +1 -1
- package/dist/pipeline/validate.js +13 -0
- package/dist/report-store.d.ts +17 -0
- package/dist/report-store.js +24 -0
- package/dist/scripts/agent-behavior-report.d.ts +19 -0
- package/dist/scripts/agent-behavior-report.js +315 -0
- package/dist/scripts/baseline.d.ts +43 -0
- package/dist/scripts/baseline.js +267 -0
- package/dist/scripts/calculate-scores.d.ts +166 -0
- package/dist/scripts/calculate-scores.js +1296 -0
- package/dist/scripts/compare.d.ts +22 -0
- package/dist/scripts/compare.js +334 -0
- package/dist/scripts/coverage-audit.d.ts +44 -0
- package/dist/scripts/coverage-audit.js +209 -0
- package/dist/scripts/debug-eval.d.ts +19 -0
- package/dist/scripts/debug-eval.js +73 -0
- package/dist/scripts/discovery-report.d.ts +58 -0
- package/dist/scripts/discovery-report.js +250 -0
- package/dist/scripts/fetch-docs.d.ts +35 -0
- package/dist/scripts/fetch-docs.js +472 -0
- package/dist/scripts/generate-configs.d.ts +66 -0
- package/dist/scripts/generate-configs.js +459 -0
- package/dist/scripts/grader-api.d.ts +27 -0
- package/dist/scripts/grader-api.js +206 -0
- package/dist/scripts/grader-compare.d.ts +22 -0
- package/dist/scripts/grader-compare.js +368 -0
- package/dist/scripts/grader-consistency.d.ts +20 -0
- package/dist/scripts/grader-consistency.js +313 -0
- package/dist/scripts/grader-sensitivity.d.ts +22 -0
- package/dist/scripts/grader-sensitivity.js +354 -0
- package/dist/scripts/grader-validate.d.ts +19 -0
- package/dist/scripts/grader-validate.js +267 -0
- package/dist/scripts/measure-retrieval.d.ts +10 -0
- package/dist/scripts/measure-retrieval.js +145 -0
- package/dist/scripts/migrate-task-mode.d.ts +1 -1
- package/dist/scripts/migrate-task-mode.js +1 -1
- package/dist/scripts/migrate-tasks-to-content-lake.d.ts +1 -1
- package/dist/scripts/migrate-tasks-to-content-lake.js +1 -1
- package/dist/scripts/pipeline.d.ts +76 -0
- package/dist/scripts/pipeline.js +1031 -0
- package/dist/scripts/pr-comment.d.ts +10 -0
- package/dist/scripts/pr-comment.js +510 -0
- package/dist/scripts/readiness-report.d.ts +88 -0
- package/dist/scripts/readiness-report.js +342 -0
- package/dist/scripts/update-quality-scores.d.ts +15 -0
- package/dist/scripts/update-quality-scores.js +184 -0
- package/dist/scripts/validate-task-sources.d.ts +1 -1
- package/dist/scripts/validate-task-sources.js +1 -1
- package/dist/scripts/validate.d.ts +13 -0
- package/dist/scripts/validate.js +79 -0
- package/dist/scripts/webhook-server.d.ts +26 -0
- package/dist/scripts/webhook-server.js +147 -0
- package/dist/scripts/weekly-digest.d.ts +24 -0
- package/dist/scripts/weekly-digest.js +144 -0
- package/dist/sinks/format-slack.d.ts +64 -0
- package/dist/sinks/format-slack.js +306 -0
- package/dist/sinks/slack-sink.d.ts +27 -0
- package/dist/sinks/slack-sink.js +78 -0
- package/dist/sinks/types.d.ts +1 -1
- package/dist/sinks/types.js +1 -1
- package/dist/sinks/webhook-sink.d.ts +19 -0
- package/dist/sinks/webhook-sink.js +50 -0
- package/dist/tasks/knowledge-probe/define-type-api.task.ts +66 -0
- package/dist/tasks/knowledge-probe/groq-projections.task.ts +62 -0
- package/dist/tasks/literacy/content-lake.task.ts +181 -0
- package/dist/tasks/literacy/frameworks.task.ts +129 -0
- package/dist/tasks/literacy/functions.task.ts +70 -0
- package/dist/tasks/literacy/groq.task.ts +259 -0
- package/dist/tasks/literacy/image-handling.task.ts +95 -0
- package/dist/tasks/literacy/nextjs-live.task.ts +76 -0
- package/dist/tasks/literacy/portable-text.task.ts +169 -0
- package/dist/tasks/literacy/studio-setup.task.ts +134 -0
- package/dist/tasks/literacy/visual-editing.task.ts +147 -0
- package/package.json +25 -25
- package/tasks/.expanded.agentic.yaml +280 -0
- package/tasks/.expanded.yaml +565 -0
- package/tasks/knowledge-probe/define-type-api.task.ts +11 -0
- package/tasks/knowledge-probe/groq-projections.task.ts +3 -0
- package/tasks/literacy/content-lake.task.ts +181 -0
- package/tasks/literacy/frameworks.task.ts +1 -0
- package/tasks/literacy/functions.task.ts +1 -0
- package/tasks/literacy/groq.task.ts +1 -0
- package/tasks/literacy/image-handling.task.ts +95 -0
- package/tasks/literacy/nextjs-live.task.ts +2 -1
- package/tasks/literacy/portable-text.task.ts +169 -0
- package/tasks/literacy/studio-setup.task.ts +5 -2
- package/tasks/literacy/visual-editing.task.ts +1 -0
- package/LICENSE +0 -21
- package/tasks/frameworks.yaml +0 -98
- package/tasks/functions.yaml +0 -51
- package/tasks/groq.yaml +0 -216
- package/tasks/nextjs-live.yaml +0 -62
- package/tasks/studio-setup.yaml +0 -111
- 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
|
+
]
|
|
@@ -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:') &&
|
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.
|
package/tasks/frameworks.yaml
DELETED
|
@@ -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
|