@sanity/ailf 0.1.0
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/README.md +89 -0
- package/bin/ailf.js +64 -0
- package/canonical/grader-references/README.md +88 -0
- package/canonical/grader-references/groq.yaml +234 -0
- package/canonical/grader-references/studio-setup.yaml +275 -0
- package/canonical/reference-solutions/.gitkeep +1 -0
- package/canonical/reference-solutions/frameworks/nuxt.ts +119 -0
- package/canonical/reference-solutions/frameworks/remix.tsx +100 -0
- package/canonical/reference-solutions/functions/publish-webhook.ts +60 -0
- package/canonical/reference-solutions/groq/advanced-filtering.ts +379 -0
- package/canonical/reference-solutions/groq/blog-queries.ts +137 -0
- package/canonical/reference-solutions/groq/joins-references.ts +300 -0
- package/canonical/reference-solutions/nextjs/app-router-integration.tsx +128 -0
- package/canonical/reference-solutions/studio-setup/blog-schema.ts +143 -0
- package/canonical/reference-solutions/studio-setup/custom-tool.tsx +78 -0
- package/canonical/reference-solutions/visual-editing/live-preview.tsx +137 -0
- package/canonical/reference-solutions/visual-editing/presentation-nextjs.tsx +130 -0
- package/config/airbyte/ai_literacy_framework.connector.yaml +639 -0
- package/config/bigquery/README.md +74 -0
- package/config/bigquery/views/area_scores.sql +87 -0
- package/config/bigquery/views/reports.sql +49 -0
- package/config/features.yaml +116 -0
- package/config/models.yaml +115 -0
- package/config/prompts.yaml +75 -0
- package/config/rubrics.yaml +62 -0
- package/config/schedules.yaml +43 -0
- package/config/sinks.yaml +54 -0
- package/config/sources.yaml +51 -0
- package/config/thresholds.yaml +49 -0
- package/dist/_vendor/ailf-core/examples/index.d.ts +190 -0
- package/dist/_vendor/ailf-core/examples/index.js +285 -0
- package/dist/_vendor/ailf-core/index.d.ts +17 -0
- package/dist/_vendor/ailf-core/index.js +17 -0
- package/dist/_vendor/ailf-core/ports/cache-store.d.ts +72 -0
- package/dist/_vendor/ailf-core/ports/cache-store.js +17 -0
- package/dist/_vendor/ailf-core/ports/config-source.d.ts +33 -0
- package/dist/_vendor/ailf-core/ports/config-source.js +15 -0
- package/dist/_vendor/ailf-core/ports/context.d.ts +172 -0
- package/dist/_vendor/ailf-core/ports/context.js +14 -0
- package/dist/_vendor/ailf-core/ports/doc-fetcher.d.ts +131 -0
- package/dist/_vendor/ailf-core/ports/doc-fetcher.js +12 -0
- package/dist/_vendor/ailf-core/ports/eval-runner.d.ts +24 -0
- package/dist/_vendor/ailf-core/ports/eval-runner.js +8 -0
- package/dist/_vendor/ailf-core/ports/index.d.ts +15 -0
- package/dist/_vendor/ailf-core/ports/index.js +7 -0
- package/dist/_vendor/ailf-core/ports/logger.d.ts +36 -0
- package/dist/_vendor/ailf-core/ports/logger.js +11 -0
- package/dist/_vendor/ailf-core/ports/pipeline-step.d.ts +46 -0
- package/dist/_vendor/ailf-core/ports/pipeline-step.js +8 -0
- package/dist/_vendor/ailf-core/ports/task-source.d.ts +159 -0
- package/dist/_vendor/ailf-core/ports/task-source.js +72 -0
- package/dist/_vendor/ailf-core/schemas/callback-payload.d.ts +24 -0
- package/dist/_vendor/ailf-core/schemas/callback-payload.js +29 -0
- package/dist/_vendor/ailf-core/schemas/eval-config.d.ts +55 -0
- package/dist/_vendor/ailf-core/schemas/eval-config.js +78 -0
- package/dist/_vendor/ailf-core/schemas/index.d.ts +16 -0
- package/dist/_vendor/ailf-core/schemas/index.js +16 -0
- package/dist/_vendor/ailf-core/schemas/pipeline-request.d.ts +125 -0
- package/dist/_vendor/ailf-core/schemas/pipeline-request.js +67 -0
- package/dist/_vendor/ailf-core/schemas/pipeline.d.ts +531 -0
- package/dist/_vendor/ailf-core/schemas/pipeline.js +318 -0
- package/dist/_vendor/ailf-core/schemas/schedules.d.ts +68 -0
- package/dist/_vendor/ailf-core/schemas/schedules.js +74 -0
- package/dist/_vendor/ailf-core/schemas/sinks.d.ts +207 -0
- package/dist/_vendor/ailf-core/schemas/sinks.js +108 -0
- package/dist/_vendor/ailf-core/services/comparison-formatters.d.ts +18 -0
- package/dist/_vendor/ailf-core/services/comparison-formatters.js +189 -0
- package/dist/_vendor/ailf-core/services/config-helpers.d.ts +41 -0
- package/dist/_vendor/ailf-core/services/config-helpers.js +86 -0
- package/dist/_vendor/ailf-core/services/index.d.ts +12 -0
- package/dist/_vendor/ailf-core/services/index.js +12 -0
- package/dist/_vendor/ailf-core/services/scoring.d.ts +49 -0
- package/dist/_vendor/ailf-core/services/scoring.js +222 -0
- package/dist/_vendor/ailf-core/types/index.d.ts +1082 -0
- package/dist/_vendor/ailf-core/types/index.js +21 -0
- package/dist/_vendor/ailf-core/types/scoring-input.d.ts +54 -0
- package/dist/_vendor/ailf-core/types/scoring-input.js +9 -0
- package/dist/_vendor/ailf-shared/dimension-names.d.ts +21 -0
- package/dist/_vendor/ailf-shared/dimension-names.js +27 -0
- package/dist/_vendor/ailf-shared/document-ref.d.ts +29 -0
- package/dist/_vendor/ailf-shared/document-ref.js +1 -0
- package/dist/_vendor/ailf-shared/eval-modes.d.ts +12 -0
- package/dist/_vendor/ailf-shared/eval-modes.js +8 -0
- package/dist/_vendor/ailf-shared/index.d.ts +16 -0
- package/dist/_vendor/ailf-shared/index.js +16 -0
- package/dist/_vendor/ailf-shared/noise-threshold.d.ts +9 -0
- package/dist/_vendor/ailf-shared/noise-threshold.js +9 -0
- package/dist/_vendor/ailf-shared/score-grades.d.ts +17 -0
- package/dist/_vendor/ailf-shared/score-grades.js +23 -0
- package/dist/adapters/cache/content-lake-cache.d.ts +24 -0
- package/dist/adapters/cache/content-lake-cache.js +59 -0
- package/dist/adapters/cache/filesystem-cache.d.ts +18 -0
- package/dist/adapters/cache/filesystem-cache.js +54 -0
- package/dist/adapters/cache/index.d.ts +2 -0
- package/dist/adapters/cache/index.js +2 -0
- package/dist/adapters/config-sources/cli-config-adapter.d.ts +17 -0
- package/dist/adapters/config-sources/cli-config-adapter.js +23 -0
- package/dist/adapters/config-sources/file-config-adapter.d.ts +26 -0
- package/dist/adapters/config-sources/file-config-adapter.js +96 -0
- package/dist/adapters/config-sources/index.d.ts +2 -0
- package/dist/adapters/config-sources/index.js +2 -0
- package/dist/adapters/doc-fetchers/index.d.ts +1 -0
- package/dist/adapters/doc-fetchers/index.js +1 -0
- package/dist/adapters/doc-fetchers/sanity-doc-fetcher.d.ts +76 -0
- package/dist/adapters/doc-fetchers/sanity-doc-fetcher.js +620 -0
- package/dist/adapters/eval-runners/index.d.ts +1 -0
- package/dist/adapters/eval-runners/index.js +1 -0
- package/dist/adapters/eval-runners/promptfoo-eval-adapter.d.ts +14 -0
- package/dist/adapters/eval-runners/promptfoo-eval-adapter.js +63 -0
- package/dist/adapters/index.d.ts +12 -0
- package/dist/adapters/index.js +12 -0
- package/dist/adapters/loggers/console-logger.d.ts +22 -0
- package/dist/adapters/loggers/console-logger.js +54 -0
- package/dist/adapters/loggers/index.d.ts +9 -0
- package/dist/adapters/loggers/index.js +9 -0
- package/dist/adapters/loggers/json-logger.d.ts +18 -0
- package/dist/adapters/loggers/json-logger.js +33 -0
- package/dist/adapters/loggers/quiet-logger.d.ts +16 -0
- package/dist/adapters/loggers/quiet-logger.js +30 -0
- package/dist/adapters/task-sources/composite-task-source.d.ts +20 -0
- package/dist/adapters/task-sources/composite-task-source.js +59 -0
- package/dist/adapters/task-sources/content-lake-task-source.d.ts +20 -0
- package/dist/adapters/task-sources/content-lake-task-source.js +219 -0
- package/dist/adapters/task-sources/index.d.ts +7 -0
- package/dist/adapters/task-sources/index.js +7 -0
- package/dist/adapters/task-sources/repo-schemas.d.ts +245 -0
- package/dist/adapters/task-sources/repo-schemas.js +234 -0
- package/dist/adapters/task-sources/repo-task-source.d.ts +22 -0
- package/dist/adapters/task-sources/repo-task-source.js +104 -0
- package/dist/adapters/task-sources/repo-trigger.d.ts +52 -0
- package/dist/adapters/task-sources/repo-trigger.js +153 -0
- package/dist/adapters/task-sources/repo-validation.d.ts +49 -0
- package/dist/adapters/task-sources/repo-validation.js +164 -0
- package/dist/adapters/task-sources/yaml-task-source.d.ts +18 -0
- package/dist/adapters/task-sources/yaml-task-source.js +136 -0
- package/dist/agent-observer/agentic-provider.d.ts +132 -0
- package/dist/agent-observer/agentic-provider.js +983 -0
- package/dist/agent-observer/classifier.d.ts +62 -0
- package/dist/agent-observer/classifier.js +269 -0
- package/dist/agent-observer/index.d.ts +7 -0
- package/dist/agent-observer/index.js +4 -0
- package/dist/agent-observer/pricing.d.ts +35 -0
- package/dist/agent-observer/pricing.js +82 -0
- package/dist/agent-observer/provider.d.ts +77 -0
- package/dist/agent-observer/provider.js +151 -0
- package/dist/agent-observer/proxy.d.ts +91 -0
- package/dist/agent-observer/proxy.js +321 -0
- package/dist/agent-observer/test-imports.d.ts +7 -0
- package/dist/agent-observer/test-imports.js +185 -0
- package/dist/agent-observer/types.d.ts +137 -0
- package/dist/agent-observer/types.js +16 -0
- package/dist/assertions/source-isolation.d.ts +72 -0
- package/dist/assertions/source-isolation.js +117 -0
- package/dist/cli.d.ts +24 -0
- package/dist/cli.js +199 -0
- package/dist/commands/agent-report.d.ts +5 -0
- package/dist/commands/agent-report.js +69 -0
- package/dist/commands/baseline.d.ts +9 -0
- package/dist/commands/baseline.js +141 -0
- package/dist/commands/cache.d.ts +13 -0
- package/dist/commands/cache.js +135 -0
- package/dist/commands/calculate-scores.d.ts +8 -0
- package/dist/commands/calculate-scores.js +48 -0
- package/dist/commands/compare.d.ts +8 -0
- package/dist/commands/compare.js +120 -0
- package/dist/commands/completion.d.ts +18 -0
- package/dist/commands/completion.js +260 -0
- package/dist/commands/coverage-audit.d.ts +7 -0
- package/dist/commands/coverage-audit.js +40 -0
- package/dist/commands/discovery-report.d.ts +10 -0
- package/dist/commands/discovery-report.js +44 -0
- package/dist/commands/eval.d.ts +9 -0
- package/dist/commands/eval.js +35 -0
- package/dist/commands/explain-handler.d.ts +34 -0
- package/dist/commands/explain-handler.js +719 -0
- package/dist/commands/fetch-docs.d.ts +8 -0
- package/dist/commands/fetch-docs.js +128 -0
- package/dist/commands/generate-configs.d.ts +8 -0
- package/dist/commands/generate-configs.js +46 -0
- package/dist/commands/grader/index.d.ts +11 -0
- package/dist/commands/grader/index.js +118 -0
- package/dist/commands/init.d.ts +19 -0
- package/dist/commands/init.js +150 -0
- package/dist/commands/interactive.d.ts +12 -0
- package/dist/commands/interactive.js +238 -0
- package/dist/commands/lookup-doc.d.ts +15 -0
- package/dist/commands/lookup-doc.js +84 -0
- package/dist/commands/measure-retrieval.d.ts +5 -0
- package/dist/commands/measure-retrieval.js +65 -0
- package/dist/commands/pipeline-action.d.ts +71 -0
- package/dist/commands/pipeline-action.js +305 -0
- package/dist/commands/pipeline.d.ts +62 -0
- package/dist/commands/pipeline.js +53 -0
- package/dist/commands/pr-comment.d.ts +8 -0
- package/dist/commands/pr-comment.js +47 -0
- package/dist/commands/publish.d.ts +26 -0
- package/dist/commands/publish.js +253 -0
- package/dist/commands/readiness-report.d.ts +10 -0
- package/dist/commands/readiness-report.js +104 -0
- package/dist/commands/shared/options.d.ts +29 -0
- package/dist/commands/shared/options.js +57 -0
- package/dist/commands/update-quality-scores.d.ts +5 -0
- package/dist/commands/update-quality-scores.js +20 -0
- package/dist/commands/validate-tasks.d.ts +16 -0
- package/dist/commands/validate-tasks.js +93 -0
- package/dist/commands/validate.d.ts +9 -0
- package/dist/commands/validate.js +73 -0
- package/dist/commands/webhook-server.d.ts +5 -0
- package/dist/commands/webhook-server.js +30 -0
- package/dist/commands/weekly-digest.d.ts +10 -0
- package/dist/commands/weekly-digest.js +104 -0
- package/dist/composition-root.d.ts +26 -0
- package/dist/composition-root.js +107 -0
- package/dist/interpolate.d.ts +26 -0
- package/dist/interpolate.js +70 -0
- package/dist/job-store.d.ts +104 -0
- package/dist/job-store.js +188 -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.d.ts +27 -0
- package/dist/orchestration/build-app-context.js +81 -0
- package/dist/orchestration/build-step-sequence.d.ts +15 -0
- package/dist/orchestration/build-step-sequence.js +84 -0
- package/dist/orchestration/config-to-source-overrides.d.ts +9 -0
- package/dist/orchestration/config-to-source-overrides.js +28 -0
- package/dist/orchestration/env-bridge.d.ts +21 -0
- package/dist/orchestration/env-bridge.js +66 -0
- package/dist/orchestration/index.d.ts +11 -0
- package/dist/orchestration/index.js +11 -0
- package/dist/orchestration/pipeline-orchestrator.d.ts +24 -0
- package/dist/orchestration/pipeline-orchestrator.js +153 -0
- package/dist/orchestration/step-runner.d.ts +20 -0
- package/dist/orchestration/step-runner.js +88 -0
- package/dist/orchestration/steps/calculate-scores-step.d.ts +13 -0
- package/dist/orchestration/steps/calculate-scores-step.js +95 -0
- package/dist/orchestration/steps/callback-step.d.ts +24 -0
- package/dist/orchestration/steps/callback-step.js +76 -0
- package/dist/orchestration/steps/compare-step.d.ts +14 -0
- package/dist/orchestration/steps/compare-step.js +92 -0
- package/dist/orchestration/steps/discovery-report-step.d.ts +13 -0
- package/dist/orchestration/steps/discovery-report-step.js +55 -0
- 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 +14 -0
- package/dist/orchestration/steps/fetch-docs-step.js +135 -0
- package/dist/orchestration/steps/gap-analysis-step.d.ts +16 -0
- package/dist/orchestration/steps/gap-analysis-step.js +136 -0
- package/dist/orchestration/steps/generate-configs-step.d.ts +14 -0
- package/dist/orchestration/steps/generate-configs-step.js +85 -0
- package/dist/orchestration/steps/grader-consistency-step.d.ts +13 -0
- package/dist/orchestration/steps/grader-consistency-step.js +64 -0
- package/dist/orchestration/steps/index.d.ts +19 -0
- package/dist/orchestration/steps/index.js +19 -0
- package/dist/orchestration/steps/mirror-repo-tasks-step.d.ts +21 -0
- package/dist/orchestration/steps/mirror-repo-tasks-step.js +94 -0
- package/dist/orchestration/steps/publish-report-step.d.ts +26 -0
- package/dist/orchestration/steps/publish-report-step.js +216 -0
- package/dist/orchestration/steps/readiness-step.d.ts +13 -0
- package/dist/orchestration/steps/readiness-step.js +91 -0
- package/dist/orchestration/steps/report-step.d.ts +12 -0
- package/dist/orchestration/steps/report-step.js +49 -0
- package/dist/orchestration/steps/run-eval-step.d.ts +17 -0
- package/dist/orchestration/steps/run-eval-step.js +195 -0
- package/dist/orchestration/steps/validate-step.d.ts +12 -0
- package/dist/orchestration/steps/validate-step.js +41 -0
- package/dist/pipeline/agent-behavior-report.d.ts +53 -0
- package/dist/pipeline/agent-behavior-report.js +132 -0
- package/dist/pipeline/attribution.d.ts +47 -0
- package/dist/pipeline/attribution.js +226 -0
- package/dist/pipeline/baseline.d.ts +37 -0
- package/dist/pipeline/baseline.js +141 -0
- package/dist/pipeline/cache.d.ts +101 -0
- package/dist/pipeline/cache.js +283 -0
- package/dist/pipeline/calculate-scores.d.ts +102 -0
- package/dist/pipeline/calculate-scores.js +1128 -0
- package/dist/pipeline/callback-delivery.d.ts +50 -0
- package/dist/pipeline/callback-delivery.js +89 -0
- package/dist/pipeline/checks.d.ts +39 -0
- package/dist/pipeline/checks.js +280 -0
- package/dist/pipeline/classify-url.d.ts +61 -0
- package/dist/pipeline/classify-url.js +93 -0
- package/dist/pipeline/compare.d.ts +31 -0
- package/dist/pipeline/compare.js +208 -0
- package/dist/pipeline/coverage-audit.d.ts +39 -0
- package/dist/pipeline/coverage-audit.js +165 -0
- package/dist/pipeline/degradations.d.ts +85 -0
- package/dist/pipeline/degradations.js +242 -0
- package/dist/pipeline/discovery-report.d.ts +55 -0
- package/dist/pipeline/discovery-report.js +178 -0
- package/dist/pipeline/eval-constants.d.ts +68 -0
- package/dist/pipeline/eval-constants.js +111 -0
- package/dist/pipeline/eval-fingerprint.d.ts +66 -0
- package/dist/pipeline/eval-fingerprint.js +175 -0
- package/dist/pipeline/expand-tasks.d.ts +220 -0
- package/dist/pipeline/expand-tasks.js +421 -0
- package/dist/pipeline/failure-modes.d.ts +46 -0
- package/dist/pipeline/failure-modes.js +348 -0
- package/dist/pipeline/fetch-url-content.d.ts +44 -0
- package/dist/pipeline/fetch-url-content.js +93 -0
- package/dist/pipeline/gap-analysis.d.ts +48 -0
- package/dist/pipeline/gap-analysis.js +231 -0
- package/dist/pipeline/generate-configs.d.ts +72 -0
- package/dist/pipeline/generate-configs.js +395 -0
- package/dist/pipeline/grader-api.d.ts +49 -0
- package/dist/pipeline/grader-api.js +200 -0
- package/dist/pipeline/grader-compare-runner.d.ts +44 -0
- package/dist/pipeline/grader-compare-runner.js +301 -0
- package/dist/pipeline/grader-comparison.d.ts +111 -0
- package/dist/pipeline/grader-comparison.js +161 -0
- package/dist/pipeline/grader-consistency-runner.d.ts +60 -0
- package/dist/pipeline/grader-consistency-runner.js +270 -0
- package/dist/pipeline/grader-consistency.d.ts +103 -0
- package/dist/pipeline/grader-consistency.js +146 -0
- package/dist/pipeline/grader-sensitivity-runner.d.ts +40 -0
- package/dist/pipeline/grader-sensitivity-runner.js +282 -0
- package/dist/pipeline/grader-sensitivity.d.ts +94 -0
- package/dist/pipeline/grader-sensitivity.js +144 -0
- package/dist/pipeline/grader-validate-runner.d.ts +38 -0
- package/dist/pipeline/grader-validate-runner.js +229 -0
- package/dist/pipeline/grader-validation.d.ts +107 -0
- package/dist/pipeline/grader-validation.js +169 -0
- package/dist/pipeline/map-request-to-config.d.ts +19 -0
- package/dist/pipeline/map-request-to-config.js +80 -0
- package/dist/pipeline/measure-retrieval.d.ts +59 -0
- package/dist/pipeline/measure-retrieval.js +111 -0
- package/dist/pipeline/mirror-repo-tasks.d.ts +86 -0
- package/dist/pipeline/mirror-repo-tasks.js +350 -0
- package/dist/pipeline/plan-format.d.ts +33 -0
- package/dist/pipeline/plan-format.js +202 -0
- package/dist/pipeline/plan.d.ts +169 -0
- package/dist/pipeline/plan.js +708 -0
- package/dist/pipeline/pr-comment.d.ts +19 -0
- package/dist/pipeline/pr-comment.js +502 -0
- package/dist/pipeline/probe.d.ts +52 -0
- package/dist/pipeline/probe.js +390 -0
- package/dist/pipeline/provenance.d.ts +47 -0
- package/dist/pipeline/provenance.js +146 -0
- package/dist/pipeline/readiness-report.d.ts +87 -0
- package/dist/pipeline/readiness-report.js +205 -0
- package/dist/pipeline/release-classification.d.ts +54 -0
- package/dist/pipeline/release-classification.js +238 -0
- package/dist/pipeline/release-report.d.ts +37 -0
- package/dist/pipeline/release-report.js +222 -0
- package/dist/pipeline/repo-eval-comment.d.ts +37 -0
- package/dist/pipeline/repo-eval-comment.js +165 -0
- package/dist/pipeline/repo-threshold-evaluator.d.ts +89 -0
- package/dist/pipeline/repo-threshold-evaluator.js +162 -0
- package/dist/pipeline/resolve-mappings.d.ts +35 -0
- package/dist/pipeline/resolve-mappings.js +72 -0
- package/dist/pipeline/retrieval-metrics.d.ts +39 -0
- package/dist/pipeline/retrieval-metrics.js +136 -0
- package/dist/pipeline/reverse-mapping.d.ts +67 -0
- package/dist/pipeline/reverse-mapping.js +88 -0
- package/dist/pipeline/schemas.d.ts +9 -0
- package/dist/pipeline/schemas.js +9 -0
- 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 +88 -0
- package/dist/pipeline/targeted-loo.js +203 -0
- package/dist/pipeline/thresholds.d.ts +27 -0
- package/dist/pipeline/thresholds.js +245 -0
- package/dist/pipeline/types.d.ts +10 -0
- package/dist/pipeline/types.js +10 -0
- package/dist/pipeline/validate.d.ts +67 -0
- package/dist/pipeline/validate.js +406 -0
- package/dist/pipeline/webhook-server.d.ts +37 -0
- package/dist/pipeline/webhook-server.js +133 -0
- package/dist/report-store.d.ts +84 -0
- package/dist/report-store.js +208 -0
- package/dist/sanity/client.d.ts +38 -0
- package/dist/sanity/client.js +86 -0
- package/dist/sanity/portable-text.d.ts +11 -0
- package/dist/sanity/portable-text.js +211 -0
- package/dist/sanity/queries.d.ts +133 -0
- package/dist/sanity/queries.js +300 -0
- package/dist/schedules/digest.d.ts +116 -0
- package/dist/schedules/digest.js +156 -0
- package/dist/schedules/index.d.ts +12 -0
- package/dist/schedules/index.js +10 -0
- package/dist/schedules/loader.d.ts +31 -0
- package/dist/schedules/loader.js +73 -0
- package/dist/schedules/schema.d.ts +9 -0
- package/dist/schedules/schema.js +9 -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-tasks-to-content-lake.d.ts +24 -0
- package/dist/scripts/migrate-tasks-to-content-lake.js +327 -0
- 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 +21 -0
- package/dist/scripts/validate-task-sources.js +210 -0
- 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/bigquery/index.d.ts +131 -0
- package/dist/sinks/bigquery/index.js +222 -0
- package/dist/sinks/format-slack.d.ts +64 -0
- package/dist/sinks/format-slack.js +306 -0
- package/dist/sinks/index.d.ts +23 -0
- package/dist/sinks/index.js +18 -0
- package/dist/sinks/loader.d.ts +18 -0
- package/dist/sinks/loader.js +82 -0
- package/dist/sinks/retry.d.ts +24 -0
- package/dist/sinks/retry.js +52 -0
- package/dist/sinks/schema.d.ts +9 -0
- package/dist/sinks/schema.js +9 -0
- package/dist/sinks/slack/format.d.ts +65 -0
- package/dist/sinks/slack/format.js +327 -0
- package/dist/sinks/slack/index.d.ts +27 -0
- package/dist/sinks/slack/index.js +78 -0
- package/dist/sinks/slack-sink.d.ts +27 -0
- package/dist/sinks/slack-sink.js +78 -0
- package/dist/sinks/types.d.ts +59 -0
- package/dist/sinks/types.js +44 -0
- package/dist/sinks/webhook/index.d.ts +19 -0
- package/dist/sinks/webhook/index.js +50 -0
- package/dist/sinks/webhook-sink.d.ts +19 -0
- package/dist/sinks/webhook-sink.js +50 -0
- package/dist/sources.d.ts +104 -0
- package/dist/sources.js +292 -0
- package/dist/webhook/budget.d.ts +42 -0
- package/dist/webhook/budget.js +60 -0
- package/dist/webhook/debounce.d.ts +67 -0
- package/dist/webhook/debounce.js +76 -0
- package/dist/webhook/dispatch.d.ts +45 -0
- package/dist/webhook/dispatch.js +84 -0
- package/dist/webhook/eval-request-handler.d.ts +87 -0
- package/dist/webhook/eval-request-handler.js +181 -0
- package/dist/webhook/handler.d.ts +88 -0
- package/dist/webhook/handler.js +203 -0
- package/dist/webhook/index.d.ts +17 -0
- package/dist/webhook/index.js +12 -0
- package/dist/webhook/types.d.ts +109 -0
- package/dist/webhook/types.js +10 -0
- package/package.json +72 -0
- package/tasks/.expanded.agentic.yaml +51 -0
- package/tasks/.expanded.yaml +66 -0
- package/tasks/frameworks.yaml +98 -0
- package/tasks/functions.yaml +51 -0
- package/tasks/groq.yaml +216 -0
- package/tasks/nextjs-live.yaml +62 -0
- package/tasks/studio-setup.yaml +111 -0
- package/tasks/visual-editing.yaml +120 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* compare.ts
|
|
3
|
+
*
|
|
4
|
+
* CLI for structured comparison between two evaluation runs.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* pnpm compare # compare current vs latest baseline
|
|
8
|
+
* pnpm compare --baseline <path> # compare current vs specific file
|
|
9
|
+
* pnpm compare --baseline <path> --experiment <path> # compare two specific files
|
|
10
|
+
* pnpm compare --threshold 5 # custom noise threshold
|
|
11
|
+
* pnpm compare --output /tmp/comparison.json # write JSON report to file
|
|
12
|
+
* pnpm compare --format json # output raw JSON (default: table)
|
|
13
|
+
*
|
|
14
|
+
* Reads: results/latest/score-summary.json (as experiment, unless --experiment)
|
|
15
|
+
* Reads: results/baselines/<latest>.json (as baseline, unless --baseline)
|
|
16
|
+
*/
|
|
17
|
+
import { existsSync, readFileSync, readdirSync, writeFileSync } from "fs";
|
|
18
|
+
import { dirname, join, resolve } from "path";
|
|
19
|
+
import { fileURLToPath } from "url";
|
|
20
|
+
import { formatComparisonTable, } from "../_vendor/ailf-core/index.js";
|
|
21
|
+
import { compare } from "../pipeline/compare.js";
|
|
22
|
+
import { DEFAULT_NOISE_THRESHOLD, } from "../pipeline/types.js";
|
|
23
|
+
// Re-export pure formatters from core for backward compatibility.
|
|
24
|
+
export { formatComparisonMarkdown, formatComparisonTable, } from "../_vendor/ailf-core/index.js";
|
|
25
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
26
|
+
const ROOT = resolve(__dirname, "..", "..");
|
|
27
|
+
const BASELINES_DIR = join(ROOT, "results", "baselines");
|
|
28
|
+
const SCORE_SUMMARY_PATH = join(ROOT, "results", "latest", "score-summary.json");
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// CLI argument parsing
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
const args = process.argv.slice(2);
|
|
33
|
+
function getFlag(name) {
|
|
34
|
+
return args.includes(`--${name}`);
|
|
35
|
+
}
|
|
36
|
+
function getOption(name) {
|
|
37
|
+
const idx = args.indexOf(`--${name}`);
|
|
38
|
+
return idx !== -1 && idx + 1 < args.length ? args[idx + 1] : undefined;
|
|
39
|
+
}
|
|
40
|
+
const baselinePath = getOption("baseline");
|
|
41
|
+
const experimentPath = getOption("experiment");
|
|
42
|
+
const thresholdStr = getOption("threshold");
|
|
43
|
+
const threshold = thresholdStr
|
|
44
|
+
? parseFloat(thresholdStr)
|
|
45
|
+
: DEFAULT_NOISE_THRESHOLD;
|
|
46
|
+
const outputPath = getOption("output");
|
|
47
|
+
const format = getOption("format") ?? "table";
|
|
48
|
+
const showHelp = getFlag("help") || getFlag("h");
|
|
49
|
+
if (showHelp) {
|
|
50
|
+
console.log(`
|
|
51
|
+
Usage: pnpm compare [options]
|
|
52
|
+
|
|
53
|
+
Compare two evaluation score summaries and produce structured deltas.
|
|
54
|
+
|
|
55
|
+
Options:
|
|
56
|
+
--baseline <path> Baseline score-summary.json (default: latest baseline)
|
|
57
|
+
--experiment <path> Experiment score-summary.json (default: results/latest/score-summary.json)
|
|
58
|
+
--threshold <n> Noise threshold for unchanged classification (default: ${DEFAULT_NOISE_THRESHOLD})
|
|
59
|
+
--output <path> Write JSON report to file
|
|
60
|
+
--format <fmt> Output format: table (default) or json
|
|
61
|
+
--help, -h Show this help
|
|
62
|
+
|
|
63
|
+
Examples:
|
|
64
|
+
pnpm compare # current scores vs latest baseline
|
|
65
|
+
pnpm compare --threshold 5 # wider noise band
|
|
66
|
+
pnpm compare --format json # machine-readable output
|
|
67
|
+
pnpm compare --baseline results/baselines/20260310_02_43_44.json
|
|
68
|
+
pnpm compare --baseline before.json --experiment after.json
|
|
69
|
+
`);
|
|
70
|
+
process.exit(0);
|
|
71
|
+
}
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
// File loading helpers
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
/**
|
|
76
|
+
* formatComparisonMarkdown — re-exported from @sanity/ailf-core above.
|
|
77
|
+
* formatComparisonTable — re-exported from @sanity/ailf-core above.
|
|
78
|
+
*/
|
|
79
|
+
function findLatestBaseline() {
|
|
80
|
+
if (!existsSync(BASELINES_DIR))
|
|
81
|
+
return null;
|
|
82
|
+
const files = readdirSync(BASELINES_DIR)
|
|
83
|
+
.filter((f) => f.endsWith(".json"))
|
|
84
|
+
.sort()
|
|
85
|
+
.reverse();
|
|
86
|
+
return files.length > 0 ? join(BASELINES_DIR, files[0]) : null;
|
|
87
|
+
}
|
|
88
|
+
function loadSummary(path) {
|
|
89
|
+
if (!existsSync(path)) {
|
|
90
|
+
console.error(`❌ File not found: ${path}`);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
const raw = readFileSync(path, "utf-8");
|
|
94
|
+
return JSON.parse(raw);
|
|
95
|
+
}
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
// Main
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
export function main() {
|
|
100
|
+
// Resolve experiment path
|
|
101
|
+
const expPath = experimentPath ?? SCORE_SUMMARY_PATH;
|
|
102
|
+
const experiment = loadSummary(expPath);
|
|
103
|
+
// Resolve baseline path
|
|
104
|
+
let basePath;
|
|
105
|
+
if (baselinePath) {
|
|
106
|
+
basePath = resolve(baselinePath);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
const latest = findLatestBaseline();
|
|
110
|
+
if (!latest) {
|
|
111
|
+
console.error("❌ No baselines found. Run 'pnpm baseline:save' first, or use --baseline <path>.");
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
basePath = latest;
|
|
115
|
+
}
|
|
116
|
+
const baseline = loadSummary(basePath);
|
|
117
|
+
// Try to load grader consistency data for empirical thresholds
|
|
118
|
+
const consistencyPath = join(ROOT, "results", "latest", "grader-consistency.json");
|
|
119
|
+
let graderConsistency;
|
|
120
|
+
if (existsSync(consistencyPath) && !thresholdStr) {
|
|
121
|
+
try {
|
|
122
|
+
const consistencyRaw = JSON.parse(readFileSync(consistencyPath, "utf-8"));
|
|
123
|
+
if (consistencyRaw.recommendedThreshold && consistencyRaw.perDimension) {
|
|
124
|
+
graderConsistency =
|
|
125
|
+
consistencyRaw;
|
|
126
|
+
console.log(` 📊 Using empirical noise threshold: ±${graderConsistency.recommendedThreshold.toFixed(1)} (from grader consistency data)`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
// Non-fatal — fall back to default threshold
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
console.log(` Baseline: ${basePath}`);
|
|
134
|
+
console.log(` Experiment: ${expPath}`);
|
|
135
|
+
if (!graderConsistency) {
|
|
136
|
+
console.log(` Threshold: ±${threshold} (default — run --grader-replications for empirical threshold)`);
|
|
137
|
+
}
|
|
138
|
+
console.log("");
|
|
139
|
+
const report = compare(baseline, experiment, {
|
|
140
|
+
graderConsistency,
|
|
141
|
+
noiseThreshold: threshold,
|
|
142
|
+
});
|
|
143
|
+
if (format === "json") {
|
|
144
|
+
const json = JSON.stringify(report, null, 2);
|
|
145
|
+
if (outputPath) {
|
|
146
|
+
writeFileSync(outputPath, json);
|
|
147
|
+
console.log(` ✅ Comparison report written to ${outputPath}`);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
console.log(json);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
const table = formatComparisonTable(report);
|
|
155
|
+
console.log(table);
|
|
156
|
+
if (outputPath) {
|
|
157
|
+
const json = JSON.stringify(report, null, 2);
|
|
158
|
+
writeFileSync(outputPath, json);
|
|
159
|
+
console.log(` ✅ Comparison report also written to ${outputPath}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// Write comparison report to results/latest for other steps to consume
|
|
163
|
+
const latestComparisonPath = join(ROOT, "results", "latest", "comparison-report.json");
|
|
164
|
+
writeFileSync(latestComparisonPath, JSON.stringify(report, null, 2));
|
|
165
|
+
}
|
|
166
|
+
// Only run when invoked directly
|
|
167
|
+
if (process.argv[1]?.endsWith("compare.ts") ||
|
|
168
|
+
process.argv[1]?.endsWith("compare.js")) {
|
|
169
|
+
main();
|
|
170
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { countReferencedDocs, countTasksByArea, formatCoverageConsole, formatCoverageMarkdown, loadFeatureRegistry, runCoverageAudit, } from "../pipeline/coverage-audit.js";
|
|
2
|
+
export type { CoverageAuditReport, ProductFeature } from "../pipeline/types.js";
|
|
3
|
+
/** @deprecated Use pipeline functions directly with explicit rootDir */
|
|
4
|
+
export declare function main(): void;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/coverage-audit.ts — DEPRECATED re-export shim.
|
|
3
|
+
* @deprecated Import from ../pipeline/coverage-audit.js instead.
|
|
4
|
+
*/
|
|
5
|
+
import { dirname, resolve } from "path";
|
|
6
|
+
import { fileURLToPath } from "url";
|
|
7
|
+
export { countReferencedDocs, countTasksByArea, formatCoverageConsole, formatCoverageMarkdown, loadFeatureRegistry, runCoverageAudit, } from "../pipeline/coverage-audit.js";
|
|
8
|
+
import { countReferencedDocs, formatCoverageConsole, formatCoverageMarkdown, runCoverageAudit, } from "../pipeline/coverage-audit.js";
|
|
9
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const ROOT = resolve(__dirname, "../..");
|
|
11
|
+
/** @deprecated Use pipeline functions directly with explicit rootDir */
|
|
12
|
+
export function main() {
|
|
13
|
+
const args = process.argv.slice(2);
|
|
14
|
+
const formatArg = args.includes("--format")
|
|
15
|
+
? args[args.indexOf("--format") + 1]
|
|
16
|
+
: undefined;
|
|
17
|
+
const jsonOutput = args.includes("--json");
|
|
18
|
+
const report = runCoverageAudit(ROOT);
|
|
19
|
+
if (!report) {
|
|
20
|
+
console.error("❌ Coverage audit failed.");
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
if (jsonOutput) {
|
|
24
|
+
console.log(JSON.stringify(report, null, 2));
|
|
25
|
+
}
|
|
26
|
+
else if (formatArg === "md" || formatArg === "markdown") {
|
|
27
|
+
console.log(formatCoverageMarkdown(report));
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
console.log(formatCoverageConsole(report));
|
|
31
|
+
}
|
|
32
|
+
if (!jsonOutput && formatArg !== "md") {
|
|
33
|
+
const docStats = countReferencedDocs(ROOT);
|
|
34
|
+
console.log("DOCUMENT UTILIZATION:");
|
|
35
|
+
console.log(` ${docStats.total} unique document slugs referenced across evaluation tasks`);
|
|
36
|
+
console.log("");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (process.argv[1]?.endsWith("coverage-audit.ts") ||
|
|
40
|
+
process.argv[1]?.endsWith("coverage-audit.js")) {
|
|
41
|
+
main();
|
|
42
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/discovery-report.ts — DEPRECATED re-export shim.
|
|
3
|
+
*
|
|
4
|
+
* The real implementation has moved to pipeline/discovery-report.ts.
|
|
5
|
+
*
|
|
6
|
+
* @deprecated Import from ../pipeline/discovery-report.js instead.
|
|
7
|
+
*/
|
|
8
|
+
export { formatDiscoveryMarkdown, generateDiscoveryReport, type DiscoveryReport, type InvisibleDoc, } from "../pipeline/discovery-report.js";
|
|
9
|
+
/**
|
|
10
|
+
* Legacy main() entry point.
|
|
11
|
+
* @deprecated Use generateDiscoveryReport() + formatDiscoveryMarkdown() directly.
|
|
12
|
+
*/
|
|
13
|
+
export declare function main(): void;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/discovery-report.ts — DEPRECATED re-export shim.
|
|
3
|
+
*
|
|
4
|
+
* The real implementation has moved to pipeline/discovery-report.ts.
|
|
5
|
+
*
|
|
6
|
+
* @deprecated Import from ../pipeline/discovery-report.js instead.
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
9
|
+
import { dirname, join, resolve } from "node:path";
|
|
10
|
+
import { fileURLToPath } from "node:url";
|
|
11
|
+
export { formatDiscoveryMarkdown, generateDiscoveryReport, } from "../pipeline/discovery-report.js";
|
|
12
|
+
import { formatDiscoveryMarkdown, generateDiscoveryReport, } from "../pipeline/discovery-report.js";
|
|
13
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
14
|
+
const ROOT = resolve(__dirname, "..", "..");
|
|
15
|
+
/**
|
|
16
|
+
* Legacy main() entry point.
|
|
17
|
+
* @deprecated Use generateDiscoveryReport() + formatDiscoveryMarkdown() directly.
|
|
18
|
+
*/
|
|
19
|
+
export function main() {
|
|
20
|
+
const args = process.argv.slice(2);
|
|
21
|
+
let output;
|
|
22
|
+
const areaFilter = [];
|
|
23
|
+
let summaryPath = join(ROOT, "results", "latest", "score-summary.json");
|
|
24
|
+
for (let i = 0; i < args.length; i++) {
|
|
25
|
+
if (args[i] === "--output" && args[i + 1]) {
|
|
26
|
+
output = args[++i];
|
|
27
|
+
}
|
|
28
|
+
else if (args[i] === "--area" && args[i + 1]) {
|
|
29
|
+
areaFilter.push(...args[++i].split(","));
|
|
30
|
+
}
|
|
31
|
+
else if (args[i] === "--input" && args[i + 1]) {
|
|
32
|
+
summaryPath = args[++i];
|
|
33
|
+
}
|
|
34
|
+
else if (!args[i].startsWith("-")) {
|
|
35
|
+
summaryPath = args[i];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (!existsSync(summaryPath)) {
|
|
39
|
+
console.error(`❌ Score summary not found: ${summaryPath}`);
|
|
40
|
+
console.error("Run an agentic evaluation first: pnpm pipeline -- --mode agentic");
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
const summary = JSON.parse(readFileSync(summaryPath, "utf-8"));
|
|
44
|
+
const report = generateDiscoveryReport(summary, areaFilter.length > 0 ? areaFilter : undefined);
|
|
45
|
+
const markdown = formatDiscoveryMarkdown(report);
|
|
46
|
+
if (output) {
|
|
47
|
+
writeFileSync(output, markdown, "utf-8");
|
|
48
|
+
console.log(`✅ Discovery report written to ${output}`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
console.log(markdown);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (process.argv[1]?.endsWith("discovery-report.ts") ||
|
|
55
|
+
process.argv[1]?.endsWith("discovery-report.js")) {
|
|
56
|
+
main();
|
|
57
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetch-docs.ts — CLI entry point for documentation fetching.
|
|
3
|
+
*
|
|
4
|
+
* This is a standalone script for direct CLI invocation:
|
|
5
|
+
* npx tsx src/lib/fetch-docs.ts [--source name] [--include-feature-areas] [--include-corpus]
|
|
6
|
+
*
|
|
7
|
+
* The pipeline uses ctx.docFetcher (SanityDocFetcher adapter) directly via
|
|
8
|
+
* FetchDocsStep — this file is NOT called by the pipeline.
|
|
9
|
+
*
|
|
10
|
+
* Capabilities:
|
|
11
|
+
* 1. Canonical contexts — delegates to SanityDocFetcher adapter (always)
|
|
12
|
+
* 2. Feature-area contexts — one file per GROQ feature area query
|
|
13
|
+
* (opt-in via --include-feature-areas)
|
|
14
|
+
* 3. Full corpus — all articles in one file
|
|
15
|
+
* (opt-in via --include-corpus)
|
|
16
|
+
*/
|
|
17
|
+
import "dotenv/config";
|
|
18
|
+
import { type ResolvedSourceConfig } from "../sources.js";
|
|
19
|
+
/** Options for the fetch-docs main() function. */
|
|
20
|
+
export interface FetchDocsOptions {
|
|
21
|
+
/** Fetch full corpus (for retrieval experiments) */
|
|
22
|
+
includeCorpus?: boolean;
|
|
23
|
+
/** Fetch feature-area contexts in addition to canonical contexts */
|
|
24
|
+
includeFeatureAreas?: boolean;
|
|
25
|
+
/** Pre-resolved source config (skips loadSource() call) */
|
|
26
|
+
resolvedSource?: ResolvedSourceConfig;
|
|
27
|
+
/** Documentation source name (e.g., "branch", "local") */
|
|
28
|
+
source?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function main(options?: FetchDocsOptions): Promise<void>;
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetch-docs.ts — CLI entry point for documentation fetching.
|
|
3
|
+
*
|
|
4
|
+
* This is a standalone script for direct CLI invocation:
|
|
5
|
+
* npx tsx src/lib/fetch-docs.ts [--source name] [--include-feature-areas] [--include-corpus]
|
|
6
|
+
*
|
|
7
|
+
* The pipeline uses ctx.docFetcher (SanityDocFetcher adapter) directly via
|
|
8
|
+
* FetchDocsStep — this file is NOT called by the pipeline.
|
|
9
|
+
*
|
|
10
|
+
* Capabilities:
|
|
11
|
+
* 1. Canonical contexts — delegates to SanityDocFetcher adapter (always)
|
|
12
|
+
* 2. Feature-area contexts — one file per GROQ feature area query
|
|
13
|
+
* (opt-in via --include-feature-areas)
|
|
14
|
+
* 3. Full corpus — all articles in one file
|
|
15
|
+
* (opt-in via --include-corpus)
|
|
16
|
+
*/
|
|
17
|
+
// oxlint-disable-next-line import/no-unassigned-import -- side-effect: loads .env into process.env
|
|
18
|
+
import "dotenv/config";
|
|
19
|
+
import { mkdirSync, writeFileSync } from "fs";
|
|
20
|
+
import { dirname, join } from "path";
|
|
21
|
+
import { SanityDocFetcher } from "../adapters/doc-fetchers/sanity-doc-fetcher.js";
|
|
22
|
+
import { YamlTaskSource } from "../adapters/task-sources/index.js";
|
|
23
|
+
import { getSanityClient } from "../sanity/client.js";
|
|
24
|
+
import { toMarkdown } from "../sanity/portable-text.js";
|
|
25
|
+
import { ALL_ARTICLES_QUERY, ALL_FEATURE_AREAS, FEATURE_AREA_QUERIES, } from "../sanity/queries.js";
|
|
26
|
+
import { loadSource } from "../sources.js";
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Helpers
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
const ROOT = join(dirname(new URL(import.meta.url).pathname), "..", "..");
|
|
31
|
+
function escapeNunjucks(text) {
|
|
32
|
+
return text.replace(/\{\{|\}\}/g, (match) => match === "{{" ? '{{ "{{" }}' : '{{ "}}" }}');
|
|
33
|
+
}
|
|
34
|
+
function estimateTokens(text) {
|
|
35
|
+
return Math.ceil(text.length / 4);
|
|
36
|
+
}
|
|
37
|
+
function formatArticle(doc) {
|
|
38
|
+
const sectionLabel = doc.section ? `Section: ${doc.section.title}\n` : "";
|
|
39
|
+
const desc = doc.description ? `${doc.description}\n\n` : "";
|
|
40
|
+
const markdown = toMarkdown(doc.content ?? []);
|
|
41
|
+
return `## ${doc.title}\n\n${sectionLabel}${desc}${markdown}`;
|
|
42
|
+
}
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
// Feature-area contexts (opt-in, not part of the port)
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
async function generateFeatureAreaContexts(source) {
|
|
47
|
+
const client = getSanityClient(undefined, source);
|
|
48
|
+
const contextsDir = join(ROOT, "contexts");
|
|
49
|
+
mkdirSync(contextsDir, { recursive: true });
|
|
50
|
+
console.log("Generating feature-area contexts...\n");
|
|
51
|
+
for (const feature of ALL_FEATURE_AREAS) {
|
|
52
|
+
const query = FEATURE_AREA_QUERIES[feature];
|
|
53
|
+
const docs = await client.fetch(query);
|
|
54
|
+
if (docs.length === 0) {
|
|
55
|
+
console.warn(` [warn] No articles found for "${feature}"`);
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const combined = docs.map(formatArticle).join("\n\n---\n\n");
|
|
59
|
+
const outPath = join(contextsDir, `${feature}.md`);
|
|
60
|
+
writeFileSync(outPath, escapeNunjucks(combined));
|
|
61
|
+
console.log(` ${feature}: ${docs.length} articles, ~${estimateTokens(combined)} tokens`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
// Full corpus (opt-in, not part of the port)
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
async function generateFullCorpus(source) {
|
|
68
|
+
const client = getSanityClient(undefined, source);
|
|
69
|
+
console.log("\nGenerating full corpus...");
|
|
70
|
+
const docs = await client.fetch(ALL_ARTICLES_QUERY);
|
|
71
|
+
const corpus = docs
|
|
72
|
+
.map((d) => {
|
|
73
|
+
const ptBlocks = d.content ?? [];
|
|
74
|
+
const markdown = toMarkdown(ptBlocks);
|
|
75
|
+
return (`## ${d.title}\n\n` +
|
|
76
|
+
// oxlint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty string title should fall back to "General"
|
|
77
|
+
`Section: ${d.section?.title || "General"}\n` +
|
|
78
|
+
`URL: ${source.baseUrl}/${d.slug}\n\n` +
|
|
79
|
+
markdown);
|
|
80
|
+
})
|
|
81
|
+
.join("\n\n---\n\n");
|
|
82
|
+
const outDir = join(ROOT, "contexts");
|
|
83
|
+
mkdirSync(outDir, { recursive: true });
|
|
84
|
+
writeFileSync(join(outDir, "full-corpus.md"), escapeNunjucks(corpus));
|
|
85
|
+
console.log(` full-corpus.md: ${docs.length} articles, ~${estimateTokens(corpus)} tokens`);
|
|
86
|
+
}
|
|
87
|
+
export async function main(options) {
|
|
88
|
+
console.log("=== ai-literacy-framework — Documentation Fetcher ===\n");
|
|
89
|
+
const args = process.argv.slice(2);
|
|
90
|
+
// Options win over argv (backward compatible)
|
|
91
|
+
const includeFeatureAreas = options?.includeFeatureAreas ?? args.includes("--include-feature-areas");
|
|
92
|
+
const includeCorpus = options?.includeCorpus ?? args.includes("--include-corpus");
|
|
93
|
+
// Pre-resolved source wins over name-based lookup (backward compatible)
|
|
94
|
+
const sourceIdx = args.indexOf("--source");
|
|
95
|
+
const sourceName = options?.source ?? (sourceIdx !== -1 ? args[sourceIdx + 1] : undefined);
|
|
96
|
+
const source = options?.resolvedSource ?? loadSource(sourceName);
|
|
97
|
+
console.log(` Source: ${sourceName ?? "default (production)"}`);
|
|
98
|
+
console.log(` Base URL: ${source.baseUrl}`);
|
|
99
|
+
if (source.dataset) {
|
|
100
|
+
console.log(` Dataset: ${source.dataset}`);
|
|
101
|
+
}
|
|
102
|
+
if (source.perspective) {
|
|
103
|
+
console.log(` Perspective: ${source.perspective}`);
|
|
104
|
+
}
|
|
105
|
+
if (source.documentIds && source.documentIds.length > 0) {
|
|
106
|
+
console.log(` Documents: ${source.documentIds.length} document ID(s)`);
|
|
107
|
+
for (const id of source.documentIds) {
|
|
108
|
+
console.log(` ${id}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (source.urls.length > 0) {
|
|
112
|
+
console.log(` URLs: ${source.urls.length} direct URL(s)`);
|
|
113
|
+
for (const u of source.urls) {
|
|
114
|
+
console.log(` ${u}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
console.log();
|
|
118
|
+
if (includeFeatureAreas) {
|
|
119
|
+
await generateFeatureAreaContexts(source);
|
|
120
|
+
}
|
|
121
|
+
// Canonical contexts — delegate to the SanityDocFetcher adapter
|
|
122
|
+
const taskSource = new YamlTaskSource(ROOT);
|
|
123
|
+
const tasks = await taskSource.loadTasks();
|
|
124
|
+
const tasksWithDocs = tasks.filter((t) => t.canonicalDocs.length > 0);
|
|
125
|
+
if (tasksWithDocs.length > 0) {
|
|
126
|
+
console.log("\nGenerating canonical (gold-retrieval) contexts...\n");
|
|
127
|
+
const fetcher = new SanityDocFetcher(ROOT);
|
|
128
|
+
const result = await fetcher.fetch(tasksWithDocs, source);
|
|
129
|
+
// Write metadata files inline (CLI mode)
|
|
130
|
+
const contextsDir = join(ROOT, "contexts");
|
|
131
|
+
mkdirSync(contextsDir, { recursive: true });
|
|
132
|
+
if (result.metadata?.manifest) {
|
|
133
|
+
const path = join(contextsDir, "document-manifest.json");
|
|
134
|
+
writeFileSync(path, JSON.stringify(result.metadata.manifest, null, 2));
|
|
135
|
+
console.log(`\n 📋 Document manifest: ${result.metadata.manifest.length} docs → contexts/document-manifest.json`);
|
|
136
|
+
}
|
|
137
|
+
if (result.metadata?.releaseImpact) {
|
|
138
|
+
const path = join(contextsDir, "release-impact.json");
|
|
139
|
+
writeFileSync(path, JSON.stringify(result.metadata.releaseImpact, null, 2));
|
|
140
|
+
console.log(" 📄 Release impact written to contexts/release-impact.json");
|
|
141
|
+
}
|
|
142
|
+
if (result.metadata?.documentOverlay) {
|
|
143
|
+
const path = join(contextsDir, "document-overlay.json");
|
|
144
|
+
writeFileSync(path, JSON.stringify(result.metadata.documentOverlay, null, 2));
|
|
145
|
+
console.log(" 📄 Document overlay written to contexts/document-overlay.json");
|
|
146
|
+
}
|
|
147
|
+
if (result.metadata?.urlFetch) {
|
|
148
|
+
const path = join(contextsDir, "url-fetch.json");
|
|
149
|
+
writeFileSync(path, JSON.stringify(result.metadata.urlFetch, null, 2));
|
|
150
|
+
console.log(" 📄 URL fetch metadata written to contexts/url-fetch.json");
|
|
151
|
+
}
|
|
152
|
+
console.log(`\n Canonical contexts: ${result.contexts.length} tasks`);
|
|
153
|
+
for (const ctx of result.contexts) {
|
|
154
|
+
console.log(` ${ctx.taskId}: ${ctx.slugs.length} doc(s), ~${ctx.tokenCount ?? 0} tokens`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (includeCorpus) {
|
|
158
|
+
await generateFullCorpus(source);
|
|
159
|
+
}
|
|
160
|
+
console.log("\nDone!");
|
|
161
|
+
}
|
|
162
|
+
// ---------------------------------------------------------------------------
|
|
163
|
+
// Main — only run when invoked directly
|
|
164
|
+
// ---------------------------------------------------------------------------
|
|
165
|
+
if (process.argv[1]?.endsWith("fetch-docs.ts") ||
|
|
166
|
+
process.argv[1]?.endsWith("fetch-docs.js")) {
|
|
167
|
+
main().catch((err) => {
|
|
168
|
+
console.error("Fatal error:", err);
|
|
169
|
+
process.exit(1);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/generate-configs.ts — DEPRECATED re-export shim.
|
|
3
|
+
*
|
|
4
|
+
* The real implementation has moved to pipeline/generate-configs.ts.
|
|
5
|
+
* This shim preserves backward compatibility for:
|
|
6
|
+
* - Direct CLI invocation: `tsx src/lib/generate-configs.ts`
|
|
7
|
+
* - Test imports that haven't been updated yet
|
|
8
|
+
*
|
|
9
|
+
* TODO: Update all importers to use pipeline/generate-configs.ts, then delete this file.
|
|
10
|
+
*
|
|
11
|
+
* @deprecated Import from ../pipeline/generate-configs.js instead.
|
|
12
|
+
*/
|
|
13
|
+
export { discoverTaskFiles, extractModelName, extractProvider, generateConfigs, loadPrompts, mergeConfig, modelMatchesMode, type GenerateConfigsOptions, } from "../pipeline/generate-configs.js";
|
|
14
|
+
import type { GenerateConfigsOptions } from "../pipeline/generate-configs.js";
|
|
15
|
+
/**
|
|
16
|
+
* Legacy main() entry point — wraps generateConfigs() with env var fallbacks.
|
|
17
|
+
*
|
|
18
|
+
* Only used for direct CLI invocation (`tsx src/lib/generate-configs.ts`).
|
|
19
|
+
* Command handlers and orchestration steps should call generateConfigs() directly.
|
|
20
|
+
*
|
|
21
|
+
* @deprecated Use generateConfigs() from pipeline/generate-configs.ts instead.
|
|
22
|
+
*/
|
|
23
|
+
export declare function main(options?: Omit<GenerateConfigsOptions, "rootDir"> & {
|
|
24
|
+
rootDir?: string;
|
|
25
|
+
}): void;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/generate-configs.ts — DEPRECATED re-export shim.
|
|
3
|
+
*
|
|
4
|
+
* The real implementation has moved to pipeline/generate-configs.ts.
|
|
5
|
+
* This shim preserves backward compatibility for:
|
|
6
|
+
* - Direct CLI invocation: `tsx src/lib/generate-configs.ts`
|
|
7
|
+
* - Test imports that haven't been updated yet
|
|
8
|
+
*
|
|
9
|
+
* TODO: Update all importers to use pipeline/generate-configs.ts, then delete this file.
|
|
10
|
+
*
|
|
11
|
+
* @deprecated Import from ../pipeline/generate-configs.js instead.
|
|
12
|
+
*/
|
|
13
|
+
import { dirname, resolve } from "path";
|
|
14
|
+
import { fileURLToPath } from "url";
|
|
15
|
+
// Re-export everything from the real implementation
|
|
16
|
+
export { discoverTaskFiles, extractModelName, extractProvider, generateConfigs, loadPrompts, mergeConfig, modelMatchesMode, } from "../pipeline/generate-configs.js";
|
|
17
|
+
import { generateConfigs } from "../pipeline/generate-configs.js";
|
|
18
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
19
|
+
const ROOT = resolve(__dirname, "../..");
|
|
20
|
+
/**
|
|
21
|
+
* Legacy main() entry point — wraps generateConfigs() with env var fallbacks.
|
|
22
|
+
*
|
|
23
|
+
* Only used for direct CLI invocation (`tsx src/lib/generate-configs.ts`).
|
|
24
|
+
* Command handlers and orchestration steps should call generateConfigs() directly.
|
|
25
|
+
*
|
|
26
|
+
* @deprecated Use generateConfigs() from pipeline/generate-configs.ts instead.
|
|
27
|
+
*/
|
|
28
|
+
export function main(options) {
|
|
29
|
+
generateConfigs({
|
|
30
|
+
rootDir: options?.rootDir ?? ROOT,
|
|
31
|
+
allowedOrigins: options?.allowedOrigins,
|
|
32
|
+
filter: options?.filter,
|
|
33
|
+
resolvedSource: options?.resolvedSource,
|
|
34
|
+
searchMode: options?.searchMode,
|
|
35
|
+
source: options?.source ?? process.argv[2] ?? process.env.DOC_SOURCE,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
// Only run when invoked directly (not when imported for testing)
|
|
39
|
+
if (process.argv[1]?.endsWith("generate-configs.ts") ||
|
|
40
|
+
process.argv[1]?.endsWith("generate-configs.js")) {
|
|
41
|
+
main();
|
|
42
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/grader-api.ts — DEPRECATED re-export shim.
|
|
3
|
+
*
|
|
4
|
+
* The real implementation has moved to pipeline/grader-api.ts.
|
|
5
|
+
* This shim preserves backward compatibility for:
|
|
6
|
+
* - Direct CLI invocation and other lib/ files that import from here
|
|
7
|
+
* - Test imports that haven't been updated yet
|
|
8
|
+
*
|
|
9
|
+
* TODO: Update all importers to use pipeline/grader-api.ts, then delete this file.
|
|
10
|
+
*
|
|
11
|
+
* @deprecated Import from ../pipeline/grader-api.js instead.
|
|
12
|
+
*/
|
|
13
|
+
export { extractScore, gradeOnce, resolveProvider, } from "../pipeline/grader-api.js";
|
|
14
|
+
/**
|
|
15
|
+
* Backward-compatible loadGraderModel that uses EVAL_ROOT.
|
|
16
|
+
* @deprecated Use loadGraderModel(rootDir) from pipeline/grader-api.js instead.
|
|
17
|
+
*/
|
|
18
|
+
export declare function loadGraderModel(): {
|
|
19
|
+
id: string;
|
|
20
|
+
label: string;
|
|
21
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/grader-api.ts — DEPRECATED re-export shim.
|
|
3
|
+
*
|
|
4
|
+
* The real implementation has moved to pipeline/grader-api.ts.
|
|
5
|
+
* This shim preserves backward compatibility for:
|
|
6
|
+
* - Direct CLI invocation and other lib/ files that import from here
|
|
7
|
+
* - Test imports that haven't been updated yet
|
|
8
|
+
*
|
|
9
|
+
* TODO: Update all importers to use pipeline/grader-api.ts, then delete this file.
|
|
10
|
+
*
|
|
11
|
+
* @deprecated Import from ../pipeline/grader-api.js instead.
|
|
12
|
+
*/
|
|
13
|
+
import { config as dotenvConfig } from "dotenv";
|
|
14
|
+
import { existsSync } from "fs";
|
|
15
|
+
import { dirname, resolve } from "path";
|
|
16
|
+
import { fileURLToPath } from "url";
|
|
17
|
+
// Re-export everything from the real implementation
|
|
18
|
+
export { extractScore, gradeOnce, resolveProvider, } from "../pipeline/grader-api.js";
|
|
19
|
+
import { loadGraderModel as _loadGraderModel } from "../pipeline/grader-api.js";
|
|
20
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
21
|
+
const EVAL_ROOT = resolve(__dirname, "..", "..");
|
|
22
|
+
// Load root .env (two levels above packages/eval/) so API keys are available
|
|
23
|
+
// even when this module is invoked via `tsx` from packages/eval/.
|
|
24
|
+
const rootEnvPath = resolve(EVAL_ROOT, "..", "..", ".env");
|
|
25
|
+
if (existsSync(rootEnvPath)) {
|
|
26
|
+
dotenvConfig({ override: true, path: rootEnvPath });
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Backward-compatible loadGraderModel that uses EVAL_ROOT.
|
|
30
|
+
* @deprecated Use loadGraderModel(rootDir) from pipeline/grader-api.js instead.
|
|
31
|
+
*/
|
|
32
|
+
export function loadGraderModel() {
|
|
33
|
+
return _loadGraderModel(EVAL_ROOT);
|
|
34
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/grader-compare.ts — DEPRECATED re-export shim.
|
|
3
|
+
*
|
|
4
|
+
* The real implementation has moved to pipeline/grader-compare-runner.ts.
|
|
5
|
+
* The pure analysis functions live in pipeline/grader-comparison.ts.
|
|
6
|
+
* This shim preserves backward compatibility for direct CLI invocation.
|
|
7
|
+
*
|
|
8
|
+
* TODO: Update all importers to use pipeline/ modules, then delete this file.
|
|
9
|
+
*
|
|
10
|
+
* @deprecated Import from ../pipeline/grader-compare-runner.js instead.
|
|
11
|
+
*/
|
|
12
|
+
import "dotenv/config";
|
|
13
|
+
export { formatComparisonReport, runGraderCompare, type GraderCompareRunnerOptions, } from "../pipeline/grader-compare-runner.js";
|
|
14
|
+
export { compareGraders, type GraderComparison, type GraderScore, type GraderScoreSet, } from "../pipeline/grader-comparison.js";
|
|
15
|
+
/**
|
|
16
|
+
* Legacy main() entry point.
|
|
17
|
+
* @deprecated Use runGraderCompare() from pipeline/grader-compare-runner.js instead.
|
|
18
|
+
*/
|
|
19
|
+
export declare function main(): Promise<void>;
|