@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.
- 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 +51 -31
- 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/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 +24 -24
- 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,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* validation.ts — Semantic validation for repo-based tasks.
|
|
3
|
+
*
|
|
4
|
+
* Checks that go beyond Zod schema parsing:
|
|
5
|
+
* - Assertion types are in the curated set
|
|
6
|
+
* - Rubric template names resolve to known templates
|
|
7
|
+
* - Feature area strings are well-formed
|
|
8
|
+
* - Canonical doc slugs look reasonable (slugs, not URLs)
|
|
9
|
+
*
|
|
10
|
+
* These produce warnings, not errors — the pipeline can still run
|
|
11
|
+
* with imperfect tasks. Only structural failures (caught by Zod) block.
|
|
12
|
+
*/
|
|
13
|
+
import { type RepoTask } from "./schemas.js";
|
|
14
|
+
export interface ValidationResult {
|
|
15
|
+
valid: boolean;
|
|
16
|
+
errors: ValidationMessage[];
|
|
17
|
+
warnings: ValidationMessage[];
|
|
18
|
+
}
|
|
19
|
+
export interface ValidationMessage {
|
|
20
|
+
taskId: string;
|
|
21
|
+
field: string;
|
|
22
|
+
message: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Run semantic validation on an array of parsed repo tasks.
|
|
26
|
+
*
|
|
27
|
+
* Returns warnings for issues that don't block execution (unknown feature
|
|
28
|
+
* areas, unresolved slugs) and errors for issues that would cause pipeline
|
|
29
|
+
* failures (completely missing required fields — though Zod catches most).
|
|
30
|
+
*/
|
|
31
|
+
export declare function validateRepoTasks(tasks: RepoTask[]): ValidationResult;
|
|
32
|
+
/**
|
|
33
|
+
* Format validation results for console output.
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatValidationResult(result: ValidationResult): string;
|
|
36
|
+
/**
|
|
37
|
+
* Detect snake_case field names in raw task YAML data.
|
|
38
|
+
*
|
|
39
|
+
* This runs BEFORE Zod parsing to provide a user-friendly error message
|
|
40
|
+
* when authors use framework-internal snake_case names instead of the
|
|
41
|
+
* camelCase names expected in repo task files.
|
|
42
|
+
*
|
|
43
|
+
* @param raw - Raw parsed YAML (before Zod validation)
|
|
44
|
+
* @param filename - Source filename for error messages
|
|
45
|
+
* @returns Array of warning messages (empty if no issues)
|
|
46
|
+
*/
|
|
47
|
+
export declare function detectSnakeCaseFields(raw: unknown, filename: string): string[];
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* validation.ts — Semantic validation for repo-based tasks.
|
|
3
|
+
*
|
|
4
|
+
* Checks that go beyond Zod schema parsing:
|
|
5
|
+
* - Assertion types are in the curated set
|
|
6
|
+
* - Rubric template names resolve to known templates
|
|
7
|
+
* - Feature area strings are well-formed
|
|
8
|
+
* - Canonical doc slugs look reasonable (slugs, not URLs)
|
|
9
|
+
*
|
|
10
|
+
* These produce warnings, not errors — the pipeline can still run
|
|
11
|
+
* with imperfect tasks. Only structural failures (caught by Zod) block.
|
|
12
|
+
*/
|
|
13
|
+
import { CURATED_ASSERTION_TYPES, RUBRIC_TEMPLATE_NAMES, } from "./schemas.js";
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Public API
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
/**
|
|
18
|
+
* Run semantic validation on an array of parsed repo tasks.
|
|
19
|
+
*
|
|
20
|
+
* Returns warnings for issues that don't block execution (unknown feature
|
|
21
|
+
* areas, unresolved slugs) and errors for issues that would cause pipeline
|
|
22
|
+
* failures (completely missing required fields — though Zod catches most).
|
|
23
|
+
*/
|
|
24
|
+
export function validateRepoTasks(tasks) {
|
|
25
|
+
const errors = [];
|
|
26
|
+
const warnings = [];
|
|
27
|
+
// Check for duplicate IDs
|
|
28
|
+
const seenIds = new Set();
|
|
29
|
+
for (const task of tasks) {
|
|
30
|
+
if (seenIds.has(task.id)) {
|
|
31
|
+
errors.push({
|
|
32
|
+
taskId: task.id,
|
|
33
|
+
field: "id",
|
|
34
|
+
message: `Duplicate task ID "${task.id}"`,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
seenIds.add(task.id);
|
|
38
|
+
}
|
|
39
|
+
for (const task of tasks) {
|
|
40
|
+
// Check assertion types
|
|
41
|
+
for (let i = 0; i < task.assert.length; i++) {
|
|
42
|
+
const assertion = task.assert[i];
|
|
43
|
+
if (!CURATED_ASSERTION_TYPES.includes(assertion.type)) {
|
|
44
|
+
warnings.push({
|
|
45
|
+
taskId: task.id,
|
|
46
|
+
field: `assert[${i}].type`,
|
|
47
|
+
message: `Unknown assertion type "${assertion.type}". ` +
|
|
48
|
+
`Valid types: ${CURATED_ASSERTION_TYPES.join(", ")}`,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
// Check rubric template for llm-rubric assertions
|
|
52
|
+
if (assertion.type === "llm-rubric" && "template" in assertion) {
|
|
53
|
+
const template = assertion.template;
|
|
54
|
+
if (!RUBRIC_TEMPLATE_NAMES.includes(template)) {
|
|
55
|
+
warnings.push({
|
|
56
|
+
taskId: task.id,
|
|
57
|
+
field: `assert[${i}].template`,
|
|
58
|
+
message: `Unknown rubric template "${template}". ` +
|
|
59
|
+
`Valid templates: ${RUBRIC_TEMPLATE_NAMES.join(", ")}`,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Check canonical doc refs look reasonable
|
|
65
|
+
for (let i = 0; i < (task.canonicalDocs?.length ?? 0); i++) {
|
|
66
|
+
const doc = task.canonicalDocs[i];
|
|
67
|
+
// Slug refs: warn if they look like URLs or paths
|
|
68
|
+
if ("slug" in doc && !("id" in doc) && typeof doc.slug === "string") {
|
|
69
|
+
if (doc.slug.includes("/") || doc.slug.includes("http")) {
|
|
70
|
+
warnings.push({
|
|
71
|
+
taskId: task.id,
|
|
72
|
+
field: `canonicalDocs[${i}].slug`,
|
|
73
|
+
message: `Slug "${doc.slug}" looks like a URL or path — use 'path' type for paths or 'slug' for document slugs (e.g., "groq-introduction")`,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Check task has at least one llm-rubric assertion (recommended but not required)
|
|
79
|
+
const hasLlmRubric = task.assert.some((a) => a.type === "llm-rubric");
|
|
80
|
+
if (!hasLlmRubric) {
|
|
81
|
+
warnings.push({
|
|
82
|
+
taskId: task.id,
|
|
83
|
+
field: "assert",
|
|
84
|
+
message: "No llm-rubric assertion found. Tasks should have at least one scored rubric for meaningful evaluation.",
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
// Check taskPrompt exists in vars (vars.task)
|
|
88
|
+
if (!task.vars?.task) {
|
|
89
|
+
warnings.push({
|
|
90
|
+
taskId: task.id,
|
|
91
|
+
field: "vars.task",
|
|
92
|
+
message: "No task prompt found in vars.task. The LLM will receive an empty implementation request.",
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
valid: errors.length === 0,
|
|
98
|
+
errors,
|
|
99
|
+
warnings,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Format validation results for console output.
|
|
104
|
+
*/
|
|
105
|
+
export function formatValidationResult(result) {
|
|
106
|
+
const lines = [];
|
|
107
|
+
if (result.errors.length > 0) {
|
|
108
|
+
lines.push("❌ Errors:");
|
|
109
|
+
for (const e of result.errors) {
|
|
110
|
+
lines.push(` [${e.taskId}] ${e.field}: ${e.message}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (result.warnings.length > 0) {
|
|
114
|
+
lines.push("⚠️ Warnings:");
|
|
115
|
+
for (const w of result.warnings) {
|
|
116
|
+
lines.push(` [${w.taskId}] ${w.field}: ${w.message}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (result.valid && result.warnings.length === 0) {
|
|
120
|
+
lines.push("✅ All repo tasks pass validation");
|
|
121
|
+
}
|
|
122
|
+
return lines.join("\n");
|
|
123
|
+
}
|
|
124
|
+
// ---------------------------------------------------------------------------
|
|
125
|
+
// Snake_case detection (pre-parse helper)
|
|
126
|
+
// ---------------------------------------------------------------------------
|
|
127
|
+
/** Known snake_case → camelCase field mappings for common errors */
|
|
128
|
+
const SNAKE_TO_CAMEL = {
|
|
129
|
+
feature_area: "featureArea",
|
|
130
|
+
canonical_docs: "canonicalDocs",
|
|
131
|
+
doc_coverage: "docCoverage",
|
|
132
|
+
reference_solution: "referenceSolution",
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Detect snake_case field names in raw task YAML data.
|
|
136
|
+
*
|
|
137
|
+
* This runs BEFORE Zod parsing to provide a user-friendly error message
|
|
138
|
+
* when authors use framework-internal snake_case names instead of the
|
|
139
|
+
* camelCase names expected in repo task files.
|
|
140
|
+
*
|
|
141
|
+
* @param raw - Raw parsed YAML (before Zod validation)
|
|
142
|
+
* @param filename - Source filename for error messages
|
|
143
|
+
* @returns Array of warning messages (empty if no issues)
|
|
144
|
+
*/
|
|
145
|
+
export function detectSnakeCaseFields(raw, filename) {
|
|
146
|
+
const warnings = [];
|
|
147
|
+
if (!Array.isArray(raw))
|
|
148
|
+
return warnings;
|
|
149
|
+
for (let i = 0; i < raw.length; i++) {
|
|
150
|
+
const entry = raw[i];
|
|
151
|
+
if (typeof entry !== "object" || entry === null)
|
|
152
|
+
continue;
|
|
153
|
+
const obj = entry;
|
|
154
|
+
const taskId = typeof obj.id === "string" ? obj.id : `task[${i}]`;
|
|
155
|
+
for (const [snake, camel] of Object.entries(SNAKE_TO_CAMEL)) {
|
|
156
|
+
if (snake in obj) {
|
|
157
|
+
warnings.push(`[${filename}] ${taskId}: Found "${snake}" — repo tasks use camelCase. Did you mean "${camel}"?`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return warnings;
|
|
162
|
+
}
|
|
@@ -17,7 +17,7 @@ const HINTS = [
|
|
|
17
17
|
/no article found for slug/i.test(e.message),
|
|
18
18
|
hint: "One or more `canonicalDocs` slugs in your task definitions don't match " +
|
|
19
19
|
"any article in the documentation. Check the `slug` values in " +
|
|
20
|
-
"`.ailf/tasks
|
|
20
|
+
"`.ailf/tasks/` and ensure they correspond to real articles.\n" +
|
|
21
21
|
" Run `ailf validate` to check your task definitions locally.",
|
|
22
22
|
},
|
|
23
23
|
{
|
|
@@ -51,7 +51,7 @@ const HINTS = [
|
|
|
51
51
|
hint: "The documentation fetch step completed but one or more tasks had " +
|
|
52
52
|
"empty context. This usually means a `canonicalDocs` slug doesn't " +
|
|
53
53
|
"match any article.\n" +
|
|
54
|
-
" Check the slug values in `.ailf/tasks
|
|
54
|
+
" Check the slug values in `.ailf/tasks/`.",
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
match: (e) => e.step === "dispatch" && /dispatch failed/i.test(e.message),
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* @see docs/design-docs/architecture-overhaul/typescript-configuration.md
|
|
23
23
|
*/
|
|
24
24
|
import { readFileSync } from "fs";
|
|
25
|
-
import { extname } from "path";
|
|
25
|
+
import { extname, resolve } from "path";
|
|
26
26
|
import { EvalConfigSchema, PipelineRequestSchema, } from "../../_vendor/ailf-core/index.js";
|
|
27
27
|
import { mapRequestToConfig } from "../../pipeline/map-request-to-config.js";
|
|
28
28
|
import { normalizeMode } from "../../pipeline/normalize-mode.js";
|
|
@@ -93,6 +93,7 @@ function mapEvalConfigToResolvedConfig(config, rootDir) {
|
|
|
93
93
|
const normalized = normalizeMode(config.mode ?? "literacy");
|
|
94
94
|
return {
|
|
95
95
|
rootDir,
|
|
96
|
+
outputDir: resolve(rootDir, "results", "latest"),
|
|
96
97
|
mode: normalized.mode,
|
|
97
98
|
variant: normalized.variant,
|
|
98
99
|
noAutoScope: config.noAutoScope ?? false,
|
|
@@ -119,6 +120,10 @@ function mapEvalConfigToResolvedConfig(config, rootDir) {
|
|
|
119
120
|
allowedOrigins: config.allowedOrigins,
|
|
120
121
|
searchMode: config.searchMode ?? "open",
|
|
121
122
|
concurrency: config.concurrency,
|
|
123
|
+
captureEnabled: false,
|
|
124
|
+
captureDir: undefined,
|
|
125
|
+
captureCompress: true,
|
|
126
|
+
captureExtras: true,
|
|
122
127
|
remote: false,
|
|
123
128
|
apiUrl: "https://ailf-api.sanity.build",
|
|
124
129
|
presets: config.presets,
|
|
@@ -33,6 +33,7 @@ export class PromptfooEvalAdapter {
|
|
|
33
33
|
cwd: this.rootDir,
|
|
34
34
|
env: { ...process.env, ...config.env },
|
|
35
35
|
stdio: "inherit",
|
|
36
|
+
...(config.maxDurationMs ? { timeout: config.maxDurationMs } : {}),
|
|
36
37
|
});
|
|
37
38
|
return {
|
|
38
39
|
durationMs: Date.now() - start,
|
|
@@ -40,10 +41,15 @@ export class PromptfooEvalAdapter {
|
|
|
40
41
|
summary: `Evaluation complete (${config.configPath})`,
|
|
41
42
|
};
|
|
42
43
|
}
|
|
43
|
-
catch {
|
|
44
|
+
catch (err) {
|
|
45
|
+
const isTimeout = err instanceof Error &&
|
|
46
|
+
"killed" in err &&
|
|
47
|
+
err.killed === true;
|
|
44
48
|
return {
|
|
45
49
|
durationMs: Date.now() - start,
|
|
46
|
-
error:
|
|
50
|
+
error: isTimeout
|
|
51
|
+
? `Eval subprocess killed after ${config.maxDurationMs}ms time budget`
|
|
52
|
+
: `Promptfoo evaluation failed: ${config.configPath}`,
|
|
47
53
|
status: "failed",
|
|
48
54
|
};
|
|
49
55
|
}
|
package/dist/adapters/index.d.ts
CHANGED
|
@@ -9,4 +9,3 @@ export { SanityDocFetcher } from "./doc-fetchers/index.js";
|
|
|
9
9
|
export { PromptfooEvalAdapter } from "./eval-runners/index.js";
|
|
10
10
|
export { ConsoleLogger, type ConsoleLoggerOptions, JsonLogger, QuietLogger, } from "./loggers/index.js";
|
|
11
11
|
export { CliConfigAdapter, FileConfigAdapter } from "./config-sources/index.js";
|
|
12
|
-
export { YamlTaskSource } from "./task-sources/index.js";
|
package/dist/adapters/index.js
CHANGED
|
@@ -9,4 +9,3 @@ export { SanityDocFetcher } from "./doc-fetchers/index.js";
|
|
|
9
9
|
export { PromptfooEvalAdapter } from "./eval-runners/index.js";
|
|
10
10
|
export { ConsoleLogger, JsonLogger, QuietLogger, } from "./loggers/index.js";
|
|
11
11
|
export { CliConfigAdapter, FileConfigAdapter } from "./config-sources/index.js";
|
|
12
|
-
export { YamlTaskSource } from "./task-sources/index.js";
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* tasks in a single GeneralizedTaskDefinition[].
|
|
11
11
|
*
|
|
12
12
|
* @see packages/core/src/ports/task-source.ts — TaskSource port
|
|
13
|
-
* @see docs/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
|
|
13
|
+
* @see docs/archive/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
|
|
14
14
|
*/
|
|
15
15
|
import type { FilterOptions, GeneralizedTaskDefinition, TaskSource } from "../../_vendor/ailf-core/index.d.ts";
|
|
16
16
|
export declare class CompositeTaskSource implements TaskSource {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* tasks in a single GeneralizedTaskDefinition[].
|
|
11
11
|
*
|
|
12
12
|
* @see packages/core/src/ports/task-source.ts — TaskSource port
|
|
13
|
-
* @see docs/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
|
|
13
|
+
* @see docs/archive/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
|
|
14
14
|
*/
|
|
15
15
|
export class CompositeTaskSource {
|
|
16
16
|
sources;
|
|
@@ -2,15 +2,13 @@
|
|
|
2
2
|
* Adapter: Load task definitions from the Sanity Content Lake.
|
|
3
3
|
*
|
|
4
4
|
* Fetches ailf.task documents via GROQ and maps them to
|
|
5
|
-
* GeneralizedTaskDefinition (LiteracyTaskDefinition variant).
|
|
6
|
-
*
|
|
7
|
-
* produce identical GeneralizedTaskDefinition[] for the same logical
|
|
8
|
-
* tasks. The pipeline never knows which adapter loaded the tasks.
|
|
5
|
+
* GeneralizedTaskDefinition (LiteracyTaskDefinition variant).
|
|
6
|
+
* The pipeline never knows which adapter loaded the tasks.
|
|
9
7
|
*
|
|
10
|
-
* Wired in the composition root
|
|
8
|
+
* Wired in the composition root as the default task source.
|
|
11
9
|
*
|
|
12
10
|
* @see packages/core/src/ports/task-source.ts — TaskSource port
|
|
13
|
-
* @see docs/exec-plans/tasks-as-content/phase-2-pipeline-integration.md
|
|
11
|
+
* @see docs/archive/exec-plans/tasks-as-content/phase-2-pipeline-integration.md
|
|
14
12
|
*/
|
|
15
13
|
import type { SanityClient } from "@sanity/client";
|
|
16
14
|
import type { FilterOptions, GeneralizedTaskDefinition, TaskSource } from "../../_vendor/ailf-core/index.d.ts";
|
|
@@ -2,15 +2,13 @@
|
|
|
2
2
|
* Adapter: Load task definitions from the Sanity Content Lake.
|
|
3
3
|
*
|
|
4
4
|
* Fetches ailf.task documents via GROQ and maps them to
|
|
5
|
-
* GeneralizedTaskDefinition (LiteracyTaskDefinition variant).
|
|
6
|
-
*
|
|
7
|
-
* produce identical GeneralizedTaskDefinition[] for the same logical
|
|
8
|
-
* tasks. The pipeline never knows which adapter loaded the tasks.
|
|
5
|
+
* GeneralizedTaskDefinition (LiteracyTaskDefinition variant).
|
|
6
|
+
* The pipeline never knows which adapter loaded the tasks.
|
|
9
7
|
*
|
|
10
|
-
* Wired in the composition root
|
|
8
|
+
* Wired in the composition root as the default task source.
|
|
11
9
|
*
|
|
12
10
|
* @see packages/core/src/ports/task-source.ts — TaskSource port
|
|
13
|
-
* @see docs/exec-plans/tasks-as-content/phase-2-pipeline-integration.md
|
|
11
|
+
* @see docs/archive/exec-plans/tasks-as-content/phase-2-pipeline-integration.md
|
|
14
12
|
*/
|
|
15
13
|
// ---------------------------------------------------------------------------
|
|
16
14
|
// GROQ query — fetches ailf.task documents with resolved references
|
|
@@ -4,5 +4,4 @@ export { CanonicalTaskFileSchema, CanonicalTaskSchema, CURATED_ASSERTION_TYPES,
|
|
|
4
4
|
export { RepoTaskSource } from "./repo-task-source.js";
|
|
5
5
|
export { detectTriggerContext, resolveTrigger, type ResolvedTrigger, type TriggerContext, } from "./repo-trigger.js";
|
|
6
6
|
export { formatValidationResult, validateCanonicalTasks, type ValidationMessage, type ValidationResult, } from "./repo-validation.js";
|
|
7
|
-
export { discoverTsTaskFiles, loadAllTsTaskFiles, loadTsTaskFile, } from "./task-file-loader.js";
|
|
8
|
-
export { YamlTaskSource } from "./yaml-task-source.js";
|
|
7
|
+
export { discoverTsTaskFiles, loadAllTsTaskFiles, loadTsTaskFile, loadTsTaskFileSync, } from "./task-file-loader.js";
|
|
@@ -4,5 +4,4 @@ export { CanonicalTaskFileSchema, CanonicalTaskSchema, CURATED_ASSERTION_TYPES,
|
|
|
4
4
|
export { RepoTaskSource } from "./repo-task-source.js";
|
|
5
5
|
export { detectTriggerContext, resolveTrigger, } from "./repo-trigger.js";
|
|
6
6
|
export { formatValidationResult, validateCanonicalTasks, } from "./repo-validation.js";
|
|
7
|
-
export { discoverTsTaskFiles, loadAllTsTaskFiles, loadTsTaskFile, } from "./task-file-loader.js";
|
|
8
|
-
export { YamlTaskSource } from "./yaml-task-source.js";
|
|
7
|
+
export { discoverTsTaskFiles, loadAllTsTaskFiles, loadTsTaskFile, loadTsTaskFileSync, } from "./task-file-loader.js";
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* specific and remain here unchanged.
|
|
14
14
|
*
|
|
15
15
|
* @see packages/core/src/types/generalized-task.ts — canonical TypeScript types
|
|
16
|
-
* @see docs/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
|
|
16
|
+
* @see docs/archive/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
|
|
17
17
|
*/
|
|
18
18
|
import { z } from "zod";
|
|
19
19
|
/**
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* specific and remain here unchanged.
|
|
14
14
|
*
|
|
15
15
|
* @see packages/core/src/types/generalized-task.ts — canonical TypeScript types
|
|
16
|
-
* @see docs/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
|
|
16
|
+
* @see docs/archive/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
|
|
17
17
|
*/
|
|
18
18
|
import { z } from "zod";
|
|
19
19
|
// ---------------------------------------------------------------------------
|
|
@@ -238,7 +238,7 @@ export function detectLegacyFieldNames(raw, filename) {
|
|
|
238
238
|
if (legacy in obj) {
|
|
239
239
|
warnings.push(`[${filename}] ${taskId}: Found legacy field "${legacy}" — ` +
|
|
240
240
|
`use "${canonical}" instead. ` +
|
|
241
|
-
"See
|
|
241
|
+
"See contributing-tasks.md for the canonical task format.");
|
|
242
242
|
}
|
|
243
243
|
}
|
|
244
244
|
}
|
|
@@ -64,7 +64,7 @@ export class RepoTaskSource {
|
|
|
64
64
|
throw new Error(`${file} uses legacy field names from @sanity/ailf-tasks.\n` +
|
|
65
65
|
"Task files must use canonical GeneralizedTaskDefinition field names.\n\n" +
|
|
66
66
|
legacyWarnings.join("\n") +
|
|
67
|
-
"\n\nSee
|
|
67
|
+
"\n\nSee contributing-tasks.md for the canonical task format.");
|
|
68
68
|
}
|
|
69
69
|
// Validate through canonical Zod schema
|
|
70
70
|
let validated;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* config applies. This drives whether the pipeline runs in validate-only
|
|
7
7
|
* mode or full eval mode, and whether results are blocking.
|
|
8
8
|
*
|
|
9
|
-
* @see docs/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
|
|
9
|
+
* @see docs/archive/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
|
|
10
10
|
*/
|
|
11
11
|
export type TriggerContext = {
|
|
12
12
|
type: "pr";
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* config applies. This drives whether the pipeline runs in validate-only
|
|
7
7
|
* mode or full eval mode, and whether results are blocking.
|
|
8
8
|
*
|
|
9
|
-
* @see docs/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
|
|
9
|
+
* @see docs/archive/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
|
|
10
10
|
*/
|
|
11
11
|
import { existsSync, readFileSync } from "fs";
|
|
12
12
|
import { resolve } from "path";
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* TaskFileLoader — loads task definitions from TypeScript files.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* loaded via jiti and expected to export GeneralizedTaskDefinition
|
|
4
|
+
* Supports `*.task.ts` and `*.task.js` files in task directories. Files
|
|
5
|
+
* are loaded via jiti and expected to export GeneralizedTaskDefinition
|
|
7
6
|
* objects authored with `defineTask()`.
|
|
8
7
|
*
|
|
9
8
|
* TS task files export a single task or an array of tasks:
|
|
@@ -20,9 +19,6 @@
|
|
|
20
19
|
* ]
|
|
21
20
|
* ```
|
|
22
21
|
*
|
|
23
|
-
* The loader integrates into the existing RepoTaskSource adapter — TS
|
|
24
|
-
* task files are discovered alongside YAML files in the same directory.
|
|
25
|
-
*
|
|
26
22
|
* @see docs/design-docs/architecture-overhaul/typescript-configuration.md
|
|
27
23
|
*/
|
|
28
24
|
/** A raw task object loaded from a TS file (pre-validation) */
|
|
@@ -55,6 +51,13 @@ export declare function discoverTsTaskFiles(tasksDir: string): string[];
|
|
|
55
51
|
* @returns The loaded task(s), or throws on load failure
|
|
56
52
|
*/
|
|
57
53
|
export declare function loadTsTaskFile(filePath: string): Promise<RawTsTask>;
|
|
54
|
+
/**
|
|
55
|
+
* Synchronously load task definitions from a single TS/JS task file.
|
|
56
|
+
*
|
|
57
|
+
* Uses jiti's synchronous require-style loading instead of async import().
|
|
58
|
+
* Needed by resolve-mappings.ts which is called from sync contexts.
|
|
59
|
+
*/
|
|
60
|
+
export declare function loadTsTaskFileSync(filePath: string): RawTsTask;
|
|
58
61
|
/**
|
|
59
62
|
* Load all TS task files from a directory.
|
|
60
63
|
*
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* TaskFileLoader — loads task definitions from TypeScript files.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* loaded via jiti and expected to export GeneralizedTaskDefinition
|
|
4
|
+
* Supports `*.task.ts` and `*.task.js` files in task directories. Files
|
|
5
|
+
* are loaded via jiti and expected to export GeneralizedTaskDefinition
|
|
7
6
|
* objects authored with `defineTask()`.
|
|
8
7
|
*
|
|
9
8
|
* TS task files export a single task or an array of tasks:
|
|
@@ -20,13 +19,12 @@
|
|
|
20
19
|
* ]
|
|
21
20
|
* ```
|
|
22
21
|
*
|
|
23
|
-
* The loader integrates into the existing RepoTaskSource adapter — TS
|
|
24
|
-
* task files are discovered alongside YAML files in the same directory.
|
|
25
|
-
*
|
|
26
22
|
* @see docs/design-docs/architecture-overhaul/typescript-configuration.md
|
|
27
23
|
*/
|
|
28
24
|
import { existsSync, readdirSync } from "fs";
|
|
25
|
+
import { pathToFileURL } from "node:url";
|
|
29
26
|
import { resolve } from "path";
|
|
27
|
+
import { createJiti } from "jiti";
|
|
30
28
|
import { loadTsConfig } from "../config-sources/ts-config-loader.js";
|
|
31
29
|
/**
|
|
32
30
|
* Discover TS/JS task files in a directory.
|
|
@@ -67,6 +65,22 @@ export async function loadTsTaskFile(filePath) {
|
|
|
67
65
|
const tasks = Array.isArray(value) ? value : [value];
|
|
68
66
|
return { filePath, tasks };
|
|
69
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Synchronously load task definitions from a single TS/JS task file.
|
|
70
|
+
*
|
|
71
|
+
* Uses jiti's synchronous require-style loading instead of async import().
|
|
72
|
+
* Needed by resolve-mappings.ts which is called from sync contexts.
|
|
73
|
+
*/
|
|
74
|
+
export function loadTsTaskFileSync(filePath) {
|
|
75
|
+
const jiti = createJiti(pathToFileURL(filePath).href, {
|
|
76
|
+
interopDefault: true,
|
|
77
|
+
requireCache: true,
|
|
78
|
+
});
|
|
79
|
+
const mod = jiti(filePath);
|
|
80
|
+
const value = mod && typeof mod === "object" && "default" in mod ? mod.default : mod;
|
|
81
|
+
const tasks = Array.isArray(value) ? value : [value];
|
|
82
|
+
return { filePath, tasks };
|
|
83
|
+
}
|
|
70
84
|
/**
|
|
71
85
|
* Load all TS task files from a directory.
|
|
72
86
|
*
|