oh-my-knowledge 0.32.0 → 0.34.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 +29 -14
- package/README.zh.md +32 -17
- package/dist/analysis/coverage-analyzer.d.ts +0 -1
- package/dist/analysis/coverage-analyzer.js +0 -1
- package/dist/analysis/failure-clusterer.d.ts +0 -1
- package/dist/analysis/failure-clusterer.js +0 -1
- package/dist/analysis/gap-analyzer.d.ts +0 -1
- package/dist/analysis/gap-analyzer.js +0 -1
- package/dist/analysis/hedging-classifier.d.ts +0 -1
- package/dist/analysis/hedging-classifier.js +1 -2
- package/dist/analysis/report-diagnostics.d.ts +0 -1
- package/dist/analysis/report-diagnostics.js +0 -1
- package/dist/analysis/sample-diagnostics.d.ts +1 -2
- package/dist/analysis/sample-diagnostics.js +18 -19
- package/dist/analysis/saturation.d.ts +8 -1
- package/dist/analysis/saturation.js +12 -5
- package/dist/assets/agent-skills/omk/SKILL.md +197 -0
- package/dist/assets/agent-skills/omk/references/commands.md +547 -0
- package/dist/authoring/evolver.d.ts +169 -4
- package/dist/authoring/evolver.js +287 -15
- package/dist/authoring/generator.d.ts +29 -2
- package/dist/authoring/generator.js +113 -1
- package/dist/authoring/sample-fixer.d.ts +0 -1
- package/dist/authoring/sample-fixer.js +0 -1
- package/dist/cli/commands/doctor.d.ts +2 -1
- package/dist/cli/commands/doctor.js +24 -6
- package/dist/cli/commands/eval/gold/compare.d.ts +0 -1
- package/dist/cli/commands/eval/gold/compare.js +0 -1
- package/dist/cli/commands/eval/gold/index.d.ts +0 -1
- package/dist/cli/commands/eval/gold/index.js +0 -1
- package/dist/cli/commands/eval/gold/init.d.ts +0 -1
- package/dist/cli/commands/eval/gold/init.js +0 -1
- package/dist/cli/commands/eval/gold/validate.d.ts +0 -1
- package/dist/cli/commands/eval/gold/validate.js +0 -1
- package/dist/cli/commands/eval/index.d.ts +2 -1
- package/dist/cli/commands/eval/index.js +23 -11
- package/dist/cli/commands/evolve.d.ts +7 -1
- package/dist/cli/commands/evolve.js +93 -6
- package/dist/cli/commands/init.d.ts +0 -1
- package/dist/cli/commands/init.js +0 -1
- package/dist/cli/commands/install.d.ts +22 -0
- package/dist/cli/commands/install.js +411 -0
- package/dist/cli/commands/observe/inbox.d.ts +0 -1
- package/dist/cli/commands/observe/inbox.js +0 -1
- package/dist/cli/commands/observe/index.d.ts +0 -1
- package/dist/cli/commands/observe/index.js +6 -3
- package/dist/cli/commands/observe/ingest.d.ts +0 -1
- package/dist/cli/commands/observe/ingest.js +0 -1
- package/dist/cli/commands/observe/show.d.ts +0 -1
- package/dist/cli/commands/observe/show.js +0 -1
- package/dist/cli/commands/sample.d.ts +2 -1
- package/dist/cli/commands/sample.js +100 -9
- package/dist/cli/commands/studio.d.ts +0 -1
- package/dist/cli/commands/studio.js +0 -1
- package/dist/cli/index.d.ts +0 -1
- package/dist/cli/index.js +1 -2
- package/dist/cli/lib/cli-exit.d.ts +0 -1
- package/dist/cli/lib/cli-exit.js +0 -1
- package/dist/cli/lib/cmd-flags.d.ts +11 -1
- package/dist/cli/lib/cmd-flags.js +0 -1
- package/dist/cli/lib/i18n-dict/common.d.ts +1 -2
- package/dist/cli/lib/i18n-dict/common.js +18 -3
- package/dist/cli/lib/i18n-dict/evolve.d.ts +1 -2
- package/dist/cli/lib/i18n-dict/evolve.js +24 -1
- package/dist/cli/lib/i18n-dict/gen.d.ts +0 -1
- package/dist/cli/lib/i18n-dict/gen.js +0 -1
- package/dist/cli/lib/i18n-dict/help.d.ts +0 -1
- package/dist/cli/lib/i18n-dict/help.js +0 -1
- package/dist/cli/lib/i18n-dict/init.d.ts +0 -1
- package/dist/cli/lib/i18n-dict/init.js +0 -1
- package/dist/cli/lib/i18n-dict/install.d.ts +3 -0
- package/dist/cli/lib/i18n-dict/install.js +90 -0
- package/dist/cli/lib/i18n-dict/run.d.ts +0 -1
- package/dist/cli/lib/i18n-dict/run.js +0 -1
- package/dist/cli/lib/i18n-dict/types.d.ts +0 -1
- package/dist/cli/lib/i18n-dict/types.js +0 -1
- package/dist/cli/lib/i18n-dict.d.ts +2 -2
- package/dist/cli/lib/i18n-dict.js +2 -1
- package/dist/cli/lib/i18n.d.ts +0 -1
- package/dist/cli/lib/i18n.js +0 -1
- package/dist/cli/lib/parse-run-config/judge-models.d.ts +0 -1
- package/dist/cli/lib/parse-run-config/judge-models.js +0 -1
- package/dist/cli/lib/parse-run-config/samples-discovery.d.ts +0 -1
- package/dist/cli/lib/parse-run-config/samples-discovery.js +1 -4
- package/dist/cli/lib/parse-run-config/variant-resolution.d.ts +8 -4
- package/dist/cli/lib/parse-run-config/variant-resolution.js +46 -14
- package/dist/cli/lib/parse-run-config.d.ts +0 -1
- package/dist/cli/lib/parse-run-config.js +1 -2
- package/dist/cli/lib/progress.d.ts +0 -1
- package/dist/cli/lib/progress.js +0 -1
- package/dist/cli/lib/resolve-skill-input.d.ts +0 -1
- package/dist/cli/lib/resolve-skill-input.js +7 -6
- package/dist/cli/lib/run-tally.d.ts +0 -1
- package/dist/cli/lib/run-tally.js +1 -2
- package/dist/cli/lib/shared.d.ts +0 -1
- package/dist/cli/lib/shared.js +1 -2
- package/dist/cli/lib/update-check.d.ts +65 -1
- package/dist/cli/lib/update-check.js +220 -32
- package/dist/cli/lib/update-fetch-worker.d.ts +1 -0
- package/dist/cli/lib/update-fetch-worker.js +34 -0
- package/dist/cli/oclif/base-command.d.ts +0 -1
- package/dist/cli/oclif/base-command.js +0 -1
- package/dist/cli/oclif/help.d.ts +0 -1
- package/dist/cli/oclif/help.js +0 -1
- package/dist/cli/oclif/i18n.d.ts +0 -1
- package/dist/cli/oclif/i18n.js +0 -1
- package/dist/cli/oclif/parsers.d.ts +0 -1
- package/dist/cli/oclif/parsers.js +0 -1
- package/dist/cli/oclif/projection.d.ts +0 -1
- package/dist/cli/oclif/projection.js +0 -1
- package/dist/cli/oclif/run.d.ts +0 -1
- package/dist/cli/oclif/run.js +0 -1
- package/dist/diagnosis/observe-mapper.d.ts +2 -3
- package/dist/diagnosis/observe-mapper.js +6 -7
- package/dist/diagnosis/observe-producer.d.ts +0 -1
- package/dist/diagnosis/observe-producer.js +3 -4
- package/dist/diagnosis/studio-projection.d.ts +0 -1
- package/dist/diagnosis/studio-projection.js +0 -1
- package/dist/diagnosis/types.d.ts +0 -1
- package/dist/diagnosis/types.js +0 -1
- package/dist/doctor/fixer.d.ts +0 -1
- package/dist/doctor/fixer.js +0 -1
- package/dist/doctor/health/builtin-dimensions.d.ts +0 -1
- package/dist/doctor/health/builtin-dimensions.js +0 -1
- package/dist/doctor/health/composer.d.ts +0 -1
- package/dist/doctor/health/composer.js +1 -2
- package/dist/doctor/health/dimension-registry.d.ts +0 -1
- package/dist/doctor/health/dimension-registry.js +0 -1
- package/dist/doctor/health/dimension-spec.d.ts +0 -1
- package/dist/doctor/health/dimension-spec.js +0 -1
- package/dist/doctor/health/load-custom-dimensions.d.ts +1 -0
- package/dist/doctor/health/load-custom-dimensions.js +30 -0
- package/dist/doctor/health/parser.d.ts +0 -1
- package/dist/doctor/health/parser.js +0 -1
- package/dist/doctor/health/prompt-builder.d.ts +0 -1
- package/dist/doctor/health/prompt-builder.js +0 -1
- package/dist/doctor/health/register.d.ts +0 -1
- package/dist/doctor/health/register.js +0 -1
- package/dist/doctor/index.d.ts +0 -1
- package/dist/doctor/index.js +1 -2
- package/dist/doctor/messages.d.ts +0 -1
- package/dist/doctor/messages.js +1 -2
- package/dist/doctor/preflight.d.ts +0 -1
- package/dist/doctor/preflight.js +0 -1
- package/dist/doctor/renderer.d.ts +0 -1
- package/dist/doctor/renderer.js +0 -1
- package/dist/doctor/rules.d.ts +0 -1
- package/dist/doctor/rules.js +0 -1
- package/dist/eval-core/bootstrap.d.ts +8 -1
- package/dist/eval-core/bootstrap.js +11 -4
- package/dist/eval-core/cache.d.ts +0 -1
- package/dist/eval-core/cache.js +0 -1
- package/dist/eval-core/comparability.d.ts +0 -1
- package/dist/eval-core/comparability.js +3 -4
- package/dist/eval-core/dependency-checker.d.ts +0 -1
- package/dist/eval-core/dependency-checker.js +2 -2
- package/dist/eval-core/evaluation-execution.d.ts +0 -1
- package/dist/eval-core/evaluation-execution.js +0 -1
- package/dist/eval-core/evaluation-job.d.ts +0 -1
- package/dist/eval-core/evaluation-job.js +0 -1
- package/dist/eval-core/evaluation-reporting.d.ts +0 -1
- package/dist/eval-core/evaluation-reporting.js +9 -8
- package/dist/eval-core/execution-strategy.d.ts +0 -1
- package/dist/eval-core/execution-strategy.js +6 -3
- package/dist/eval-core/fact-checker.d.ts +0 -1
- package/dist/eval-core/fact-checker.js +0 -1
- package/dist/eval-core/layer-gates.d.ts +0 -1
- package/dist/eval-core/layer-gates.js +0 -1
- package/dist/eval-core/mocks-runtime.d.ts +0 -1
- package/dist/eval-core/mocks-runtime.js +0 -1
- package/dist/eval-core/schema.d.ts +0 -1
- package/dist/eval-core/schema.js +0 -1
- package/dist/eval-core/statistics.d.ts +0 -1
- package/dist/eval-core/statistics.js +0 -1
- package/dist/eval-core/task-planner.d.ts +0 -1
- package/dist/eval-core/task-planner.js +0 -1
- package/dist/eval-core/verdict.d.ts +21 -4
- package/dist/eval-core/verdict.js +54 -5
- package/dist/eval-workflows/batch-evaluation-workflow.d.ts +18 -3
- package/dist/eval-workflows/batch-evaluation-workflow.js +31 -15
- package/dist/eval-workflows/evaluation-pipeline/preflight-warnings.d.ts +0 -1
- package/dist/eval-workflows/evaluation-pipeline/preflight-warnings.js +0 -1
- package/dist/eval-workflows/evaluation-pipeline/report-finalize.d.ts +0 -1
- package/dist/eval-workflows/evaluation-pipeline/report-finalize.js +0 -1
- package/dist/eval-workflows/evaluation-pipeline/run-state.d.ts +0 -1
- package/dist/eval-workflows/evaluation-pipeline/run-state.js +0 -1
- package/dist/eval-workflows/evaluation-pipeline/test-set-hash.d.ts +0 -1
- package/dist/eval-workflows/evaluation-pipeline/test-set-hash.js +0 -1
- package/dist/eval-workflows/evaluation-pipeline.d.ts +0 -1
- package/dist/eval-workflows/evaluation-pipeline.js +0 -1
- package/dist/eval-workflows/evaluation-preparation.d.ts +1 -5
- package/dist/eval-workflows/evaluation-preparation.js +20 -16
- package/dist/eval-workflows/messages.d.ts +0 -1
- package/dist/eval-workflows/messages.js +0 -1
- package/dist/eval-workflows/run-evaluation.d.ts +4 -9
- package/dist/eval-workflows/run-evaluation.js +16 -26
- package/dist/executors/anthropic-api.d.ts +0 -1
- package/dist/executors/anthropic-api.js +1 -2
- package/dist/executors/claude-cli.d.ts +0 -1
- package/dist/executors/claude-cli.js +0 -1
- package/dist/executors/claude-sdk-trace.d.ts +0 -1
- package/dist/executors/claude-sdk-trace.js +0 -1
- package/dist/executors/claude-sdk.d.ts +0 -1
- package/dist/executors/claude-sdk.js +0 -1
- package/dist/executors/codex-cli-trace.d.ts +0 -1
- package/dist/executors/codex-cli-trace.js +0 -1
- package/dist/executors/codex-cli.d.ts +0 -1
- package/dist/executors/codex-cli.js +0 -1
- package/dist/executors/codex-sdk.d.ts +0 -1
- package/dist/executors/codex-sdk.js +0 -1
- package/dist/executors/gemini.d.ts +0 -1
- package/dist/executors/gemini.js +0 -1
- package/dist/executors/index.d.ts +0 -1
- package/dist/executors/index.js +0 -1
- package/dist/executors/openai-api.d.ts +0 -1
- package/dist/executors/openai-api.js +0 -1
- package/dist/executors/runtime-fingerprint.d.ts +0 -1
- package/dist/executors/runtime-fingerprint.js +2 -3
- package/dist/executors/script.d.ts +0 -1
- package/dist/executors/script.js +0 -1
- package/dist/executors/shared.d.ts +0 -2
- package/dist/executors/shared.js +0 -1
- package/dist/grading/assertions.d.ts +0 -1
- package/dist/grading/assertions.js +0 -1
- package/dist/grading/debias-validate.d.ts +0 -1
- package/dist/grading/debias-validate.js +0 -1
- package/dist/grading/diagnostic.d.ts +0 -1
- package/dist/grading/diagnostic.js +0 -1
- package/dist/grading/gold-cli.d.ts +0 -1
- package/dist/grading/gold-cli.js +0 -1
- package/dist/grading/gold-dataset.d.ts +0 -1
- package/dist/grading/gold-dataset.js +0 -1
- package/dist/grading/human-gold.d.ts +0 -1
- package/dist/grading/human-gold.js +0 -1
- package/dist/grading/index.d.ts +0 -1
- package/dist/grading/index.js +0 -1
- package/dist/grading/judge.d.ts +0 -1
- package/dist/grading/judge.js +0 -1
- package/dist/grading/layered-scores.d.ts +0 -1
- package/dist/grading/layered-scores.js +0 -1
- package/dist/inputs/eval-config.d.ts +0 -1
- package/dist/inputs/eval-config.js +3 -2
- package/dist/inputs/load-samples.d.ts +0 -1
- package/dist/inputs/load-samples.js +0 -1
- package/dist/inputs/mcp-resolver.d.ts +0 -1
- package/dist/inputs/mcp-resolver.js +0 -1
- package/dist/inputs/skill-loader.d.ts +99 -7
- package/dist/inputs/skill-loader.js +325 -45
- package/dist/inputs/source-resolver.d.ts +28 -0
- package/dist/inputs/source-resolver.js +125 -0
- package/dist/inputs/url-fetcher.d.ts +0 -1
- package/dist/inputs/url-fetcher.js +0 -1
- package/dist/managed/index.d.ts +5 -0
- package/dist/managed/index.js +5 -0
- package/dist/managed/store.d.ts +76 -0
- package/dist/managed/store.js +260 -0
- package/dist/observability/experience-frontmatter.d.ts +0 -1
- package/dist/observability/experience-frontmatter.js +0 -1
- package/dist/observability/experience.d.ts +1 -2
- package/dist/observability/experience.js +1 -2
- package/dist/observability/feedback-matchers.d.ts +0 -1
- package/dist/observability/feedback-matchers.js +0 -1
- package/dist/observability/feedback-projection.d.ts +0 -1
- package/dist/observability/feedback-projection.js +0 -1
- package/dist/observability/inbox-view-model.d.ts +0 -1
- package/dist/observability/inbox-view-model.js +0 -1
- package/dist/observability/inbox.d.ts +0 -1
- package/dist/observability/inbox.js +2 -3
- package/dist/observability/problem-patterns.d.ts +0 -1
- package/dist/observability/problem-patterns.js +0 -1
- package/dist/observability/resolved-review.d.ts +0 -1
- package/dist/observability/resolved-review.js +4 -5
- package/dist/observability/review-state.d.ts +0 -1
- package/dist/observability/review-state.js +3 -4
- package/dist/observability/skill-chain-advisories.d.ts +0 -1
- package/dist/observability/skill-chain-advisories.js +0 -1
- package/dist/observability/skill-chain.d.ts +0 -1
- package/dist/observability/skill-chain.js +5 -6
- package/dist/observability/skill-health-analyzer.d.ts +13 -1
- package/dist/observability/skill-health-analyzer.js +17 -3
- package/dist/observability/soft-standards/constants.d.ts +0 -1
- package/dist/observability/soft-standards/constants.js +0 -1
- package/dist/observability/soft-standards/index.d.ts +0 -1
- package/dist/observability/soft-standards/index.js +0 -1
- package/dist/observability/soft-standards/llm-extractor.d.ts +0 -1
- package/dist/observability/soft-standards/llm-extractor.js +7 -8
- package/dist/observability/soft-standards/runtime-evaluator.d.ts +0 -1
- package/dist/observability/soft-standards/runtime-evaluator.js +2 -3
- package/dist/observability/soft-standards/skill-standards-store.d.ts +0 -1
- package/dist/observability/soft-standards/skill-standards-store.js +5 -6
- package/dist/observability/soft-standards/types.d.ts +10 -11
- package/dist/observability/soft-standards/types.js +0 -1
- package/dist/observability/text-signals.d.ts +0 -1
- package/dist/observability/text-signals.js +0 -1
- package/dist/observability/trace-adapter.d.ts +0 -1
- package/dist/observability/trace-adapter.js +0 -1
- package/dist/observability/trace-attribution.d.ts +0 -1
- package/dist/observability/trace-attribution.js +0 -1
- package/dist/observability/trace-segmenter.d.ts +0 -1
- package/dist/observability/trace-segmenter.js +0 -1
- package/dist/observability/trace-source.d.ts +0 -1
- package/dist/observability/trace-source.js +0 -1
- package/dist/renderer/html-renderer.d.ts +0 -1
- package/dist/renderer/html-renderer.js +4 -5
- package/dist/renderer/layout.d.ts +0 -1
- package/dist/renderer/layout.js +2 -1
- package/dist/renderer/observation-inbox/helpers.d.ts +0 -1
- package/dist/renderer/observation-inbox/helpers.js +0 -1
- package/dist/renderer/observation-inbox/styles.d.ts +0 -1
- package/dist/renderer/observation-inbox/styles.js +0 -1
- package/dist/renderer/observation-inbox-renderer.d.ts +0 -1
- package/dist/renderer/observation-inbox-renderer.js +13 -14
- package/dist/renderer/skill-detail-renderer.d.ts +0 -1
- package/dist/renderer/skill-detail-renderer.js +101 -23
- package/dist/renderer/skill-health-renderer.d.ts +0 -1
- package/dist/renderer/skill-health-renderer.js +33 -5
- package/dist/renderer/skill-list-renderer.d.ts +0 -1
- package/dist/renderer/skill-list-renderer.js +18 -7
- package/dist/renderer/summary.d.ts +0 -1
- package/dist/renderer/summary.js +21 -10
- package/dist/renderer/table.d.ts +0 -1
- package/dist/renderer/table.js +0 -1
- package/dist/renderer/test-view.d.ts +0 -1
- package/dist/renderer/test-view.js +0 -1
- package/dist/renderer/trends.d.ts +0 -1
- package/dist/renderer/trends.js +0 -1
- package/dist/server/job-store.d.ts +0 -1
- package/dist/server/job-store.js +0 -1
- package/dist/server/report-server.d.ts +0 -1
- package/dist/server/report-server.js +10 -4
- package/dist/server/report-store.d.ts +1 -2
- package/dist/server/report-store.js +6 -7
- package/dist/server/skill-index.d.ts +0 -1
- package/dist/server/skill-index.js +7 -5
- package/dist/server/skill-insights.d.ts +0 -1
- package/dist/server/skill-insights.js +41 -14
- package/dist/shared/hard-rules.d.ts +0 -1
- package/dist/shared/hard-rules.js +0 -1
- package/dist/shared/llm-prompts/index.d.ts +0 -1
- package/dist/shared/llm-prompts/index.js +0 -1
- package/dist/shared/llm-prompts/skill-health.d.ts +0 -1
- package/dist/shared/llm-prompts/skill-health.js +0 -1
- package/dist/shared/time.d.ts +0 -1
- package/dist/shared/time.js +0 -1
- package/dist/shared/tool-search.d.ts +0 -1
- package/dist/shared/tool-search.js +0 -1
- package/dist/types/dependencies.d.ts +0 -1
- package/dist/types/dependencies.js +0 -1
- package/dist/types/diagnosis.d.ts +0 -1
- package/dist/types/diagnosis.js +0 -1
- package/dist/types/doctor.d.ts +4 -5
- package/dist/types/doctor.js +2 -3
- package/dist/types/eval.d.ts +2 -1
- package/dist/types/eval.js +0 -1
- package/dist/types/executor.d.ts +1 -2
- package/dist/types/executor.js +0 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/judge.d.ts +0 -1
- package/dist/types/judge.js +0 -1
- package/dist/types/managed.d.ts +85 -0
- package/dist/types/managed.js +1 -0
- package/dist/types/observability.d.ts +5 -6
- package/dist/types/observability.js +0 -1
- package/dist/types/report.d.ts +2 -3
- package/dist/types/report.js +0 -1
- package/dist/types/shared.d.ts +0 -1
- package/dist/types/shared.js +0 -1
- package/dist/types/skill-index.d.ts +3 -1
- package/dist/types/skill-index.js +0 -1
- package/dist/types/storage.d.ts +0 -1
- package/dist/types/storage.js +0 -1
- package/dist/util/safe-slice.d.ts +0 -1
- package/dist/util/safe-slice.js +0 -1
- package/package.json +10 -5
- package/dist/analysis/coverage-analyzer.d.ts.map +0 -1
- package/dist/analysis/coverage-analyzer.js.map +0 -1
- package/dist/analysis/failure-clusterer.d.ts.map +0 -1
- package/dist/analysis/failure-clusterer.js.map +0 -1
- package/dist/analysis/gap-analyzer.d.ts.map +0 -1
- package/dist/analysis/gap-analyzer.js.map +0 -1
- package/dist/analysis/hedging-classifier.d.ts.map +0 -1
- package/dist/analysis/hedging-classifier.js.map +0 -1
- package/dist/analysis/report-diagnostics.d.ts.map +0 -1
- package/dist/analysis/report-diagnostics.js.map +0 -1
- package/dist/analysis/sample-diagnostics.d.ts.map +0 -1
- package/dist/analysis/sample-diagnostics.js.map +0 -1
- package/dist/analysis/saturation.d.ts.map +0 -1
- package/dist/analysis/saturation.js.map +0 -1
- package/dist/authoring/evolver.d.ts.map +0 -1
- package/dist/authoring/evolver.js.map +0 -1
- package/dist/authoring/generator.d.ts.map +0 -1
- package/dist/authoring/generator.js.map +0 -1
- package/dist/authoring/sample-fixer.d.ts.map +0 -1
- package/dist/authoring/sample-fixer.js.map +0 -1
- package/dist/cli/commands/doctor.d.ts.map +0 -1
- package/dist/cli/commands/doctor.js.map +0 -1
- package/dist/cli/commands/eval/gold/compare.d.ts.map +0 -1
- package/dist/cli/commands/eval/gold/compare.js.map +0 -1
- package/dist/cli/commands/eval/gold/index.d.ts.map +0 -1
- package/dist/cli/commands/eval/gold/index.js.map +0 -1
- package/dist/cli/commands/eval/gold/init.d.ts.map +0 -1
- package/dist/cli/commands/eval/gold/init.js.map +0 -1
- package/dist/cli/commands/eval/gold/validate.d.ts.map +0 -1
- package/dist/cli/commands/eval/gold/validate.js.map +0 -1
- package/dist/cli/commands/eval/index.d.ts.map +0 -1
- package/dist/cli/commands/eval/index.js.map +0 -1
- package/dist/cli/commands/evolve.d.ts.map +0 -1
- package/dist/cli/commands/evolve.js.map +0 -1
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/observe/inbox.d.ts.map +0 -1
- package/dist/cli/commands/observe/inbox.js.map +0 -1
- package/dist/cli/commands/observe/index.d.ts.map +0 -1
- package/dist/cli/commands/observe/index.js.map +0 -1
- package/dist/cli/commands/observe/ingest.d.ts.map +0 -1
- package/dist/cli/commands/observe/ingest.js.map +0 -1
- package/dist/cli/commands/observe/show.d.ts.map +0 -1
- package/dist/cli/commands/observe/show.js.map +0 -1
- package/dist/cli/commands/sample.d.ts.map +0 -1
- package/dist/cli/commands/sample.js.map +0 -1
- package/dist/cli/commands/studio.d.ts.map +0 -1
- package/dist/cli/commands/studio.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/lib/cli-exit.d.ts.map +0 -1
- package/dist/cli/lib/cli-exit.js.map +0 -1
- package/dist/cli/lib/cmd-flags.d.ts.map +0 -1
- package/dist/cli/lib/cmd-flags.js.map +0 -1
- package/dist/cli/lib/i18n-dict/common.d.ts.map +0 -1
- package/dist/cli/lib/i18n-dict/common.js.map +0 -1
- package/dist/cli/lib/i18n-dict/evolve.d.ts.map +0 -1
- package/dist/cli/lib/i18n-dict/evolve.js.map +0 -1
- package/dist/cli/lib/i18n-dict/gen.d.ts.map +0 -1
- package/dist/cli/lib/i18n-dict/gen.js.map +0 -1
- package/dist/cli/lib/i18n-dict/help.d.ts.map +0 -1
- package/dist/cli/lib/i18n-dict/help.js.map +0 -1
- package/dist/cli/lib/i18n-dict/init.d.ts.map +0 -1
- package/dist/cli/lib/i18n-dict/init.js.map +0 -1
- package/dist/cli/lib/i18n-dict/run.d.ts.map +0 -1
- package/dist/cli/lib/i18n-dict/run.js.map +0 -1
- package/dist/cli/lib/i18n-dict/types.d.ts.map +0 -1
- package/dist/cli/lib/i18n-dict/types.js.map +0 -1
- package/dist/cli/lib/i18n-dict.d.ts.map +0 -1
- package/dist/cli/lib/i18n-dict.js.map +0 -1
- package/dist/cli/lib/i18n.d.ts.map +0 -1
- package/dist/cli/lib/i18n.js.map +0 -1
- package/dist/cli/lib/parse-run-config/judge-models.d.ts.map +0 -1
- package/dist/cli/lib/parse-run-config/judge-models.js.map +0 -1
- package/dist/cli/lib/parse-run-config/samples-discovery.d.ts.map +0 -1
- package/dist/cli/lib/parse-run-config/samples-discovery.js.map +0 -1
- package/dist/cli/lib/parse-run-config/variant-resolution.d.ts.map +0 -1
- package/dist/cli/lib/parse-run-config/variant-resolution.js.map +0 -1
- package/dist/cli/lib/parse-run-config.d.ts.map +0 -1
- package/dist/cli/lib/parse-run-config.js.map +0 -1
- package/dist/cli/lib/progress.d.ts.map +0 -1
- package/dist/cli/lib/progress.js.map +0 -1
- package/dist/cli/lib/resolve-skill-input.d.ts.map +0 -1
- package/dist/cli/lib/resolve-skill-input.js.map +0 -1
- package/dist/cli/lib/run-tally.d.ts.map +0 -1
- package/dist/cli/lib/run-tally.js.map +0 -1
- package/dist/cli/lib/shared.d.ts.map +0 -1
- package/dist/cli/lib/shared.js.map +0 -1
- package/dist/cli/lib/update-check.d.ts.map +0 -1
- package/dist/cli/lib/update-check.js.map +0 -1
- package/dist/cli/oclif/base-command.d.ts.map +0 -1
- package/dist/cli/oclif/base-command.js.map +0 -1
- package/dist/cli/oclif/help.d.ts.map +0 -1
- package/dist/cli/oclif/help.js.map +0 -1
- package/dist/cli/oclif/i18n.d.ts.map +0 -1
- package/dist/cli/oclif/i18n.js.map +0 -1
- package/dist/cli/oclif/parsers.d.ts.map +0 -1
- package/dist/cli/oclif/parsers.js.map +0 -1
- package/dist/cli/oclif/projection.d.ts.map +0 -1
- package/dist/cli/oclif/projection.js.map +0 -1
- package/dist/cli/oclif/run.d.ts.map +0 -1
- package/dist/cli/oclif/run.js.map +0 -1
- package/dist/diagnosis/observe-mapper.d.ts.map +0 -1
- package/dist/diagnosis/observe-mapper.js.map +0 -1
- package/dist/diagnosis/observe-producer.d.ts.map +0 -1
- package/dist/diagnosis/observe-producer.js.map +0 -1
- package/dist/diagnosis/studio-projection.d.ts.map +0 -1
- package/dist/diagnosis/studio-projection.js.map +0 -1
- package/dist/diagnosis/types.d.ts.map +0 -1
- package/dist/diagnosis/types.js.map +0 -1
- package/dist/doctor/fixer.d.ts.map +0 -1
- package/dist/doctor/fixer.js.map +0 -1
- package/dist/doctor/health/builtin-dimensions.d.ts.map +0 -1
- package/dist/doctor/health/builtin-dimensions.js.map +0 -1
- package/dist/doctor/health/composer.d.ts.map +0 -1
- package/dist/doctor/health/composer.js.map +0 -1
- package/dist/doctor/health/dimension-registry.d.ts.map +0 -1
- package/dist/doctor/health/dimension-registry.js.map +0 -1
- package/dist/doctor/health/dimension-spec.d.ts.map +0 -1
- package/dist/doctor/health/dimension-spec.js.map +0 -1
- package/dist/doctor/health/parser.d.ts.map +0 -1
- package/dist/doctor/health/parser.js.map +0 -1
- package/dist/doctor/health/prompt-builder.d.ts.map +0 -1
- package/dist/doctor/health/prompt-builder.js.map +0 -1
- package/dist/doctor/health/register.d.ts.map +0 -1
- package/dist/doctor/health/register.js.map +0 -1
- package/dist/doctor/index.d.ts.map +0 -1
- package/dist/doctor/index.js.map +0 -1
- package/dist/doctor/messages.d.ts.map +0 -1
- package/dist/doctor/messages.js.map +0 -1
- package/dist/doctor/preflight.d.ts.map +0 -1
- package/dist/doctor/preflight.js.map +0 -1
- package/dist/doctor/renderer.d.ts.map +0 -1
- package/dist/doctor/renderer.js.map +0 -1
- package/dist/doctor/rules.d.ts.map +0 -1
- package/dist/doctor/rules.js.map +0 -1
- package/dist/eval-core/bootstrap.d.ts.map +0 -1
- package/dist/eval-core/bootstrap.js.map +0 -1
- package/dist/eval-core/cache.d.ts.map +0 -1
- package/dist/eval-core/cache.js.map +0 -1
- package/dist/eval-core/comparability.d.ts.map +0 -1
- package/dist/eval-core/comparability.js.map +0 -1
- package/dist/eval-core/dependency-checker.d.ts.map +0 -1
- package/dist/eval-core/dependency-checker.js.map +0 -1
- package/dist/eval-core/evaluation-execution.d.ts.map +0 -1
- package/dist/eval-core/evaluation-execution.js.map +0 -1
- package/dist/eval-core/evaluation-job.d.ts.map +0 -1
- package/dist/eval-core/evaluation-job.js.map +0 -1
- package/dist/eval-core/evaluation-reporting.d.ts.map +0 -1
- package/dist/eval-core/evaluation-reporting.js.map +0 -1
- package/dist/eval-core/execution-strategy.d.ts.map +0 -1
- package/dist/eval-core/execution-strategy.js.map +0 -1
- package/dist/eval-core/fact-checker.d.ts.map +0 -1
- package/dist/eval-core/fact-checker.js.map +0 -1
- package/dist/eval-core/layer-gates.d.ts.map +0 -1
- package/dist/eval-core/layer-gates.js.map +0 -1
- package/dist/eval-core/mocks-runtime.d.ts.map +0 -1
- package/dist/eval-core/mocks-runtime.js.map +0 -1
- package/dist/eval-core/schema.d.ts.map +0 -1
- package/dist/eval-core/schema.js.map +0 -1
- package/dist/eval-core/statistics.d.ts.map +0 -1
- package/dist/eval-core/statistics.js.map +0 -1
- package/dist/eval-core/task-planner.d.ts.map +0 -1
- package/dist/eval-core/task-planner.js.map +0 -1
- package/dist/eval-core/verdict.d.ts.map +0 -1
- package/dist/eval-core/verdict.js.map +0 -1
- package/dist/eval-workflows/batch-evaluation-workflow.d.ts.map +0 -1
- package/dist/eval-workflows/batch-evaluation-workflow.js.map +0 -1
- package/dist/eval-workflows/evaluation-pipeline/preflight-warnings.d.ts.map +0 -1
- package/dist/eval-workflows/evaluation-pipeline/preflight-warnings.js.map +0 -1
- package/dist/eval-workflows/evaluation-pipeline/report-finalize.d.ts.map +0 -1
- package/dist/eval-workflows/evaluation-pipeline/report-finalize.js.map +0 -1
- package/dist/eval-workflows/evaluation-pipeline/run-state.d.ts.map +0 -1
- package/dist/eval-workflows/evaluation-pipeline/run-state.js.map +0 -1
- package/dist/eval-workflows/evaluation-pipeline/test-set-hash.d.ts.map +0 -1
- package/dist/eval-workflows/evaluation-pipeline/test-set-hash.js.map +0 -1
- package/dist/eval-workflows/evaluation-pipeline.d.ts.map +0 -1
- package/dist/eval-workflows/evaluation-pipeline.js.map +0 -1
- package/dist/eval-workflows/evaluation-preparation.d.ts.map +0 -1
- package/dist/eval-workflows/evaluation-preparation.js.map +0 -1
- package/dist/eval-workflows/messages.d.ts.map +0 -1
- package/dist/eval-workflows/messages.js.map +0 -1
- package/dist/eval-workflows/run-evaluation.d.ts.map +0 -1
- package/dist/eval-workflows/run-evaluation.js.map +0 -1
- package/dist/executors/anthropic-api.d.ts.map +0 -1
- package/dist/executors/anthropic-api.js.map +0 -1
- package/dist/executors/claude-cli.d.ts.map +0 -1
- package/dist/executors/claude-cli.js.map +0 -1
- package/dist/executors/claude-sdk-trace.d.ts.map +0 -1
- package/dist/executors/claude-sdk-trace.js.map +0 -1
- package/dist/executors/claude-sdk.d.ts.map +0 -1
- package/dist/executors/claude-sdk.js.map +0 -1
- package/dist/executors/codex-cli-trace.d.ts.map +0 -1
- package/dist/executors/codex-cli-trace.js.map +0 -1
- package/dist/executors/codex-cli.d.ts.map +0 -1
- package/dist/executors/codex-cli.js.map +0 -1
- package/dist/executors/codex-sdk.d.ts.map +0 -1
- package/dist/executors/codex-sdk.js.map +0 -1
- package/dist/executors/gemini.d.ts.map +0 -1
- package/dist/executors/gemini.js.map +0 -1
- package/dist/executors/index.d.ts.map +0 -1
- package/dist/executors/index.js.map +0 -1
- package/dist/executors/openai-api.d.ts.map +0 -1
- package/dist/executors/openai-api.js.map +0 -1
- package/dist/executors/runtime-fingerprint.d.ts.map +0 -1
- package/dist/executors/runtime-fingerprint.js.map +0 -1
- package/dist/executors/script.d.ts.map +0 -1
- package/dist/executors/script.js.map +0 -1
- package/dist/executors/shared.d.ts.map +0 -1
- package/dist/executors/shared.js.map +0 -1
- package/dist/grading/assertions.d.ts.map +0 -1
- package/dist/grading/assertions.js.map +0 -1
- package/dist/grading/debias-validate.d.ts.map +0 -1
- package/dist/grading/debias-validate.js.map +0 -1
- package/dist/grading/diagnostic.d.ts.map +0 -1
- package/dist/grading/diagnostic.js.map +0 -1
- package/dist/grading/gold-cli.d.ts.map +0 -1
- package/dist/grading/gold-cli.js.map +0 -1
- package/dist/grading/gold-dataset.d.ts.map +0 -1
- package/dist/grading/gold-dataset.js.map +0 -1
- package/dist/grading/human-gold.d.ts.map +0 -1
- package/dist/grading/human-gold.js.map +0 -1
- package/dist/grading/index.d.ts.map +0 -1
- package/dist/grading/index.js.map +0 -1
- package/dist/grading/judge.d.ts.map +0 -1
- package/dist/grading/judge.js.map +0 -1
- package/dist/grading/layered-scores.d.ts.map +0 -1
- package/dist/grading/layered-scores.js.map +0 -1
- package/dist/inputs/eval-config.d.ts.map +0 -1
- package/dist/inputs/eval-config.js.map +0 -1
- package/dist/inputs/load-samples.d.ts.map +0 -1
- package/dist/inputs/load-samples.js.map +0 -1
- package/dist/inputs/mcp-resolver.d.ts.map +0 -1
- package/dist/inputs/mcp-resolver.js.map +0 -1
- package/dist/inputs/skill-loader.d.ts.map +0 -1
- package/dist/inputs/skill-loader.js.map +0 -1
- package/dist/inputs/url-fetcher.d.ts.map +0 -1
- package/dist/inputs/url-fetcher.js.map +0 -1
- package/dist/observability/experience-frontmatter.d.ts.map +0 -1
- package/dist/observability/experience-frontmatter.js.map +0 -1
- package/dist/observability/experience.d.ts.map +0 -1
- package/dist/observability/experience.js.map +0 -1
- package/dist/observability/feedback-matchers.d.ts.map +0 -1
- package/dist/observability/feedback-matchers.js.map +0 -1
- package/dist/observability/feedback-projection.d.ts.map +0 -1
- package/dist/observability/feedback-projection.js.map +0 -1
- package/dist/observability/inbox-view-model.d.ts.map +0 -1
- package/dist/observability/inbox-view-model.js.map +0 -1
- package/dist/observability/inbox.d.ts.map +0 -1
- package/dist/observability/inbox.js.map +0 -1
- package/dist/observability/problem-patterns.d.ts.map +0 -1
- package/dist/observability/problem-patterns.js.map +0 -1
- package/dist/observability/resolved-review.d.ts.map +0 -1
- package/dist/observability/resolved-review.js.map +0 -1
- package/dist/observability/review-state.d.ts.map +0 -1
- package/dist/observability/review-state.js.map +0 -1
- package/dist/observability/skill-chain-advisories.d.ts.map +0 -1
- package/dist/observability/skill-chain-advisories.js.map +0 -1
- package/dist/observability/skill-chain.d.ts.map +0 -1
- package/dist/observability/skill-chain.js.map +0 -1
- package/dist/observability/skill-health-analyzer.d.ts.map +0 -1
- package/dist/observability/skill-health-analyzer.js.map +0 -1
- package/dist/observability/soft-standards/constants.d.ts.map +0 -1
- package/dist/observability/soft-standards/constants.js.map +0 -1
- package/dist/observability/soft-standards/index.d.ts.map +0 -1
- package/dist/observability/soft-standards/index.js.map +0 -1
- package/dist/observability/soft-standards/llm-extractor.d.ts.map +0 -1
- package/dist/observability/soft-standards/llm-extractor.js.map +0 -1
- package/dist/observability/soft-standards/runtime-evaluator.d.ts.map +0 -1
- package/dist/observability/soft-standards/runtime-evaluator.js.map +0 -1
- package/dist/observability/soft-standards/skill-standards-store.d.ts.map +0 -1
- package/dist/observability/soft-standards/skill-standards-store.js.map +0 -1
- package/dist/observability/soft-standards/types.d.ts.map +0 -1
- package/dist/observability/soft-standards/types.js.map +0 -1
- package/dist/observability/text-signals.d.ts.map +0 -1
- package/dist/observability/text-signals.js.map +0 -1
- package/dist/observability/trace-adapter.d.ts.map +0 -1
- package/dist/observability/trace-adapter.js.map +0 -1
- package/dist/observability/trace-attribution.d.ts.map +0 -1
- package/dist/observability/trace-attribution.js.map +0 -1
- package/dist/observability/trace-segmenter.d.ts.map +0 -1
- package/dist/observability/trace-segmenter.js.map +0 -1
- package/dist/observability/trace-source.d.ts.map +0 -1
- package/dist/observability/trace-source.js.map +0 -1
- package/dist/renderer/html-renderer.d.ts.map +0 -1
- package/dist/renderer/html-renderer.js.map +0 -1
- package/dist/renderer/layout.d.ts.map +0 -1
- package/dist/renderer/layout.js.map +0 -1
- package/dist/renderer/observation-inbox/helpers.d.ts.map +0 -1
- package/dist/renderer/observation-inbox/helpers.js.map +0 -1
- package/dist/renderer/observation-inbox/styles.d.ts.map +0 -1
- package/dist/renderer/observation-inbox/styles.js.map +0 -1
- package/dist/renderer/observation-inbox-renderer.d.ts.map +0 -1
- package/dist/renderer/observation-inbox-renderer.js.map +0 -1
- package/dist/renderer/skill-detail-renderer.d.ts.map +0 -1
- package/dist/renderer/skill-detail-renderer.js.map +0 -1
- package/dist/renderer/skill-health-renderer.d.ts.map +0 -1
- package/dist/renderer/skill-health-renderer.js.map +0 -1
- package/dist/renderer/skill-list-renderer.d.ts.map +0 -1
- package/dist/renderer/skill-list-renderer.js.map +0 -1
- package/dist/renderer/summary.d.ts.map +0 -1
- package/dist/renderer/summary.js.map +0 -1
- package/dist/renderer/table.d.ts.map +0 -1
- package/dist/renderer/table.js.map +0 -1
- package/dist/renderer/test-view.d.ts.map +0 -1
- package/dist/renderer/test-view.js.map +0 -1
- package/dist/renderer/trends.d.ts.map +0 -1
- package/dist/renderer/trends.js.map +0 -1
- package/dist/server/job-store.d.ts.map +0 -1
- package/dist/server/job-store.js.map +0 -1
- package/dist/server/report-server.d.ts.map +0 -1
- package/dist/server/report-server.js.map +0 -1
- package/dist/server/report-store.d.ts.map +0 -1
- package/dist/server/report-store.js.map +0 -1
- package/dist/server/skill-index.d.ts.map +0 -1
- package/dist/server/skill-index.js.map +0 -1
- package/dist/server/skill-insights.d.ts.map +0 -1
- package/dist/server/skill-insights.js.map +0 -1
- package/dist/shared/hard-rules.d.ts.map +0 -1
- package/dist/shared/hard-rules.js.map +0 -1
- package/dist/shared/llm-prompts/index.d.ts.map +0 -1
- package/dist/shared/llm-prompts/index.js.map +0 -1
- package/dist/shared/llm-prompts/skill-health.d.ts.map +0 -1
- package/dist/shared/llm-prompts/skill-health.js.map +0 -1
- package/dist/shared/time.d.ts.map +0 -1
- package/dist/shared/time.js.map +0 -1
- package/dist/shared/tool-search.d.ts.map +0 -1
- package/dist/shared/tool-search.js.map +0 -1
- package/dist/types/dependencies.d.ts.map +0 -1
- package/dist/types/dependencies.js.map +0 -1
- package/dist/types/diagnosis.d.ts.map +0 -1
- package/dist/types/diagnosis.js.map +0 -1
- package/dist/types/doctor.d.ts.map +0 -1
- package/dist/types/doctor.js.map +0 -1
- package/dist/types/eval.d.ts.map +0 -1
- package/dist/types/eval.js.map +0 -1
- package/dist/types/executor.d.ts.map +0 -1
- package/dist/types/executor.js.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/types/judge.d.ts.map +0 -1
- package/dist/types/judge.js.map +0 -1
- package/dist/types/observability.d.ts.map +0 -1
- package/dist/types/observability.js.map +0 -1
- package/dist/types/report.d.ts.map +0 -1
- package/dist/types/report.js.map +0 -1
- package/dist/types/shared.d.ts.map +0 -1
- package/dist/types/shared.js.map +0 -1
- package/dist/types/skill-index.d.ts.map +0 -1
- package/dist/types/skill-index.js.map +0 -1
- package/dist/types/storage.d.ts.map +0 -1
- package/dist/types/storage.js.map +0 -1
- package/dist/util/safe-slice.d.ts.map +0 -1
- package/dist/util/safe-slice.js.map +0 -1
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
* v0.21 makes the data trustworthy. closes the last mile: senior
|
|
7
7
|
* engineers' #1 complaint is "the report has all the right numbers but I
|
|
8
8
|
* still need 30 minutes to read it before I can decide". This module
|
|
9
|
-
* aggregates the
|
|
10
|
-
*
|
|
11
|
-
* available) Krippendorff α against gold — and emits one
|
|
9
|
+
* aggregates the data sources omk already produces — Bootstrap CI on the
|
|
10
|
+
* pairwise diff, three-layer CI gate, saturation curve, inter-judge ensemble
|
|
11
|
+
* agreement, and (when available) Krippendorff α against gold — and emits one
|
|
12
|
+
* of six verdicts:
|
|
12
13
|
*
|
|
13
14
|
* - **PROGRESS** diff CI shows real positive shift, no layer regressed
|
|
14
15
|
* - **CAUTIOUS** positive shift but at least one layer broke its gate,
|
|
@@ -27,6 +28,23 @@
|
|
|
27
28
|
* empirical) is documented inline so users can audit and override.
|
|
28
29
|
*/
|
|
29
30
|
import { evaluateLayerGates } from './layer-gates.js';
|
|
31
|
+
/**
|
|
32
|
+
* Below this sample count a non-significant diff is read as UNDERPOWERED
|
|
33
|
+
* (only large effects are detectable) rather than NOISE. Matches the
|
|
34
|
+
* pre-flight power band documented in `docs/specs/sample-design-spec.md`;
|
|
35
|
+
* guarded by `test/scripts/doc-constants-drift.test.ts`.
|
|
36
|
+
*/
|
|
37
|
+
export const UNDERPOWERED_MIN_SAMPLES = 20;
|
|
38
|
+
/**
|
|
39
|
+
* Inter-judge Pearson bands, shared with the report's ensemble-agreement audit
|
|
40
|
+
* badge (`src/renderer/summary.ts`) so the verdict gate and the UI read one scale.
|
|
41
|
+
* - `>= ENSEMBLE_STRONG_PEARSON` (0.7): judges agree on rank order (badge green).
|
|
42
|
+
* - `< ENSEMBLE_DISSENT_PEARSON` (0.4): strong disagreement (badge red). A
|
|
43
|
+
* would-be PROGRESS is downgraded to CAUTIOUS — the judge-layer signal driving
|
|
44
|
+
* the win is unreliable when the ensemble can't agree.
|
|
45
|
+
*/
|
|
46
|
+
export const ENSEMBLE_STRONG_PEARSON = 0.7;
|
|
47
|
+
export const ENSEMBLE_DISSENT_PEARSON = 0.4;
|
|
30
48
|
/**
|
|
31
49
|
* Compute a verdict for a finished report. Pure function — no I/O.
|
|
32
50
|
*/
|
|
@@ -133,7 +151,7 @@ function verdictForPair(pair, summary, sampleCount, report, gateThreshold, trivi
|
|
|
133
151
|
// Diff CI contains 0. Distinguish "underpowered (saturation says: more samples needed)"
|
|
134
152
|
// from "noise (saturation says: we're saturated, the effect just isn't there)".
|
|
135
153
|
const satVerdict = report.variance?.saturation?.verdicts?.[treatment];
|
|
136
|
-
const underpowered = sampleCount <
|
|
154
|
+
const underpowered = sampleCount < UNDERPOWERED_MIN_SAMPLES ||
|
|
137
155
|
(satVerdict && !satVerdict.saturated && satVerdict.confidence !== 'high');
|
|
138
156
|
if (underpowered) {
|
|
139
157
|
return {
|
|
@@ -167,6 +185,19 @@ function verdictForPair(pair, summary, sampleCount, report, gateThreshold, trivi
|
|
|
167
185
|
headline: `${headlineCore} · significant but practically tiny`,
|
|
168
186
|
};
|
|
169
187
|
}
|
|
188
|
+
// Ensemble dissent gate: a real, gate-passing gain is only PROGRESS if the
|
|
189
|
+
// judges that produced it actually agree. When inter-judge Pearson sits in the
|
|
190
|
+
// badge's red band (< ENSEMBLE_DISSENT_PEARSON) for either compared variant,
|
|
191
|
+
// the judge-layer signal behind the win is unreliable → downgrade to CAUTIOUS.
|
|
192
|
+
const dissent = ensembleDissent(pair, summary);
|
|
193
|
+
if (dissent) {
|
|
194
|
+
return {
|
|
195
|
+
control,
|
|
196
|
+
treatment,
|
|
197
|
+
level: 'CAUTIOUS',
|
|
198
|
+
headline: `${headlineCore} · gain real, but judges disagree on ${dissent.variant} (Pearson ${dissent.pearson} < ${ENSEMBLE_DISSENT_PEARSON})`,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
170
201
|
// Did control break a gate? Then treatment winning isn't surprising — flag.
|
|
171
202
|
if (!cGate.allPass) {
|
|
172
203
|
return {
|
|
@@ -178,6 +209,25 @@ function verdictForPair(pair, summary, sampleCount, report, gateThreshold, trivi
|
|
|
178
209
|
}
|
|
179
210
|
return { control, treatment, level: 'PROGRESS', headline: `${headlineCore} · clean win` };
|
|
180
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Strong inter-judge disagreement on the compared pair, if any. Reuses the
|
|
214
|
+
* persisted per-variant ensemble Pearson (`summary[v].judgeAgreement.pearson`).
|
|
215
|
+
* Returns the worst offender below the dissent threshold, or null when every
|
|
216
|
+
* variant agrees / has no ensemble signal (single- or constant-score judge ⇒
|
|
217
|
+
* pearson undefined, nothing to act on — its disagreement, if any, still shows
|
|
218
|
+
* in the report's MAD column).
|
|
219
|
+
*/
|
|
220
|
+
function ensembleDissent(pair, summary) {
|
|
221
|
+
let worst = null;
|
|
222
|
+
for (const variant of [pair.treatment, pair.control]) {
|
|
223
|
+
const pearson = summary[variant]?.judgeAgreement?.pearson;
|
|
224
|
+
if (pearson != null && pearson < ENSEMBLE_DISSENT_PEARSON) {
|
|
225
|
+
if (!worst || pearson < worst.pearson)
|
|
226
|
+
worst = { variant, pearson };
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return worst;
|
|
230
|
+
}
|
|
181
231
|
function avgComposite(s) {
|
|
182
232
|
if (!s)
|
|
183
233
|
return 0;
|
|
@@ -319,4 +369,3 @@ export function formatVerdictText(result, options = {}) {
|
|
|
319
369
|
}
|
|
320
370
|
return lines.join('\n');
|
|
321
371
|
}
|
|
322
|
-
//# sourceMappingURL=verdict.js.map
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { BatchEvaluationReport, EvaluationReport, JobStore, ProgressCallback, VariantSpec } from '../types/index.js';
|
|
2
2
|
interface RunSingleEvaluationOptions {
|
|
3
3
|
samplesPath: string;
|
|
4
4
|
skillDir: string;
|
|
5
|
-
|
|
5
|
+
/** 每个 batch entry 的实验结构(baseline control vs 当前 skill treatment),由
|
|
6
|
+
* runEvaluation 的 spec-based 解析统一绑定 role / 隔离。 */
|
|
7
|
+
variantSpecs: VariantSpec[];
|
|
8
|
+
/** strict-baseline default,透传给 per-skill runEvaluation(baseline → allowedSkills=[])。 */
|
|
9
|
+
strictBaseline?: boolean;
|
|
6
10
|
model: string;
|
|
7
11
|
judgeModel: string;
|
|
8
12
|
outputDir: string | null;
|
|
@@ -42,6 +46,18 @@ interface CompletedBatchSkillRun {
|
|
|
42
46
|
report: EvaluationReport;
|
|
43
47
|
filePath: string | null;
|
|
44
48
|
}
|
|
49
|
+
/** Batch 每个 entry 的实验结构固定:baseline control vs 当前 skill treatment。
|
|
50
|
+
* 构造 VariantSpec 交给 runEvaluation 的 spec-based 解析按身份绑定 role / 隔离——与单跑
|
|
51
|
+
* 路径同一处绑定逻辑,batch 不再自管 artifact 拼装(此前两处手抄 resolveArtifacts().map()
|
|
52
|
+
* 导致 #183 角色误绑各存一份)。
|
|
53
|
+
* 两个 variant 的 allowedSkills 都从 eval.yaml variants[].allowedSkills 取:treatment 按 skill
|
|
54
|
+
* 名 entry.name 查、baseline 按保留名 `baseline` 查,挂到对应 spec 上由 prepareEvaluationRun
|
|
55
|
+
* 统一绑定。baseline 的显式声明(白名单或 `[]`)必须保留——eval.yaml variant.allowedSkills
|
|
56
|
+
* 优先于 strictBaseline 默认,漏挂会让 `--batch --config` 的 baseline 隔离配置静默失效。 */
|
|
57
|
+
export declare function buildBatchVariantSpecs(entry: {
|
|
58
|
+
name: string;
|
|
59
|
+
skillPath: string;
|
|
60
|
+
}, variantAllowedSkills?: Record<string, string[]>): VariantSpec[];
|
|
45
61
|
export declare function buildBatchEvaluationReport({ batchRunId, skillDir, skillEntries, skillResults, model, judgeModel, noJudge, executorName, judgeExecutorName, project, owner, tags, concurrency, timeoutMs, totalCostUSD, repeat, judgeModels, noCache, bootstrap, bootstrapSamples, lengthDebias, budget, }: {
|
|
46
62
|
batchRunId: string;
|
|
47
63
|
skillDir: string;
|
|
@@ -127,4 +143,3 @@ export declare function executeBatchEvaluationRuns({ skillDir, skillEntries, mod
|
|
|
127
143
|
filePath: string | null;
|
|
128
144
|
}>;
|
|
129
145
|
export {};
|
|
130
|
-
//# sourceMappingURL=batch-evaluation-workflow.d.ts.map
|
|
@@ -1,9 +1,34 @@
|
|
|
1
|
-
import { dirname
|
|
1
|
+
import { dirname } from 'node:path';
|
|
2
2
|
import { DEFAULT_OUTPUT_DIR, generateRunId, getCliVersion, getGitInfo, persistReport } from '../eval-core/evaluation-reporting.js';
|
|
3
3
|
import { buildEvaluationRequest, createEvaluationRun, createSucceededJob, finalizeEvaluationRun } from '../eval-core/evaluation-job.js';
|
|
4
4
|
import { getExecutorRuntimeFingerprint } from '../executors/runtime-fingerprint.js';
|
|
5
5
|
import { createFileJobStore, DEFAULT_JOBS_DIR } from '../server/job-store.js';
|
|
6
|
-
|
|
6
|
+
/** Batch 每个 entry 的实验结构固定:baseline control vs 当前 skill treatment。
|
|
7
|
+
* 构造 VariantSpec 交给 runEvaluation 的 spec-based 解析按身份绑定 role / 隔离——与单跑
|
|
8
|
+
* 路径同一处绑定逻辑,batch 不再自管 artifact 拼装(此前两处手抄 resolveArtifacts().map()
|
|
9
|
+
* 导致 #183 角色误绑各存一份)。
|
|
10
|
+
* 两个 variant 的 allowedSkills 都从 eval.yaml variants[].allowedSkills 取:treatment 按 skill
|
|
11
|
+
* 名 entry.name 查、baseline 按保留名 `baseline` 查,挂到对应 spec 上由 prepareEvaluationRun
|
|
12
|
+
* 统一绑定。baseline 的显式声明(白名单或 `[]`)必须保留——eval.yaml variant.allowedSkills
|
|
13
|
+
* 优先于 strictBaseline 默认,漏挂会让 `--batch --config` 的 baseline 隔离配置静默失效。 */
|
|
14
|
+
export function buildBatchVariantSpecs(entry, variantAllowedSkills) {
|
|
15
|
+
const baselineAllowed = variantAllowedSkills?.baseline;
|
|
16
|
+
const treatmentAllowed = variantAllowedSkills?.[entry.name];
|
|
17
|
+
return [
|
|
18
|
+
{
|
|
19
|
+
name: 'baseline',
|
|
20
|
+
role: 'control',
|
|
21
|
+
expr: 'baseline',
|
|
22
|
+
...(baselineAllowed !== undefined && { allowedSkills: baselineAllowed }),
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: entry.name,
|
|
26
|
+
role: 'treatment',
|
|
27
|
+
expr: entry.skillPath,
|
|
28
|
+
...(treatmentAllowed !== undefined && { allowedSkills: treatmentAllowed }),
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
}
|
|
7
32
|
function commonRuntime(runtimes) {
|
|
8
33
|
const values = Object.values(runtimes);
|
|
9
34
|
if (values.length === 0)
|
|
@@ -110,7 +135,7 @@ export function buildBatchEvaluationReport({ batchRunId, skillDir, skillEntries,
|
|
|
110
135
|
...(noJudge ? {} : { runtime: getExecutorRuntimeFingerprint(jc.executor, jc.model, { skillDir }) }),
|
|
111
136
|
}));
|
|
112
137
|
const report = {
|
|
113
|
-
|
|
138
|
+
reportKind: 'batch-evaluation',
|
|
114
139
|
id: batchRunId,
|
|
115
140
|
mode: 'skill',
|
|
116
141
|
meta: {
|
|
@@ -146,21 +171,13 @@ export async function executeBatchEvaluationRuns({ skillDir, skillEntries, model
|
|
|
146
171
|
for (let i = 0; i < skillEntries.length; i++) {
|
|
147
172
|
const entry = skillEntries[i];
|
|
148
173
|
onSkillProgress?.({ phase: 'start', skill: entry.name, current: i + 1, total: skillEntries.length });
|
|
149
|
-
|
|
150
|
-
const perSkillAllowedSkills = variantAllowedSkills?.[entry.name] !== undefined
|
|
151
|
-
? { ...variantAllowedSkills, [entry.skillPath]: variantAllowedSkills[entry.name] }
|
|
152
|
-
: variantAllowedSkills;
|
|
153
|
-
const skillArtifacts = resolveArtifacts(resolve(skillDir), ['baseline', entry.skillPath], { strictBaseline, variantAllowedSkills: perSkillAllowedSkills }).map((artifact) => {
|
|
154
|
-
if (artifact.name === entry.skillPath) {
|
|
155
|
-
return { ...artifact, name: entry.name, experimentRole: 'treatment' };
|
|
156
|
-
}
|
|
157
|
-
return { ...artifact, experimentRole: 'control' };
|
|
158
|
-
});
|
|
174
|
+
const variantSpecs = buildBatchVariantSpecs(entry, variantAllowedSkills);
|
|
159
175
|
const childRunId = `${batchRunId}-${String(i + 1).padStart(2, '0')}-${safeRunIdPart(entry.name)}`;
|
|
160
176
|
const { report, filePath } = await runSingleEvaluation({
|
|
161
177
|
samplesPath: entry.samplesPath,
|
|
162
178
|
skillDir,
|
|
163
|
-
|
|
179
|
+
variantSpecs,
|
|
180
|
+
strictBaseline,
|
|
164
181
|
model,
|
|
165
182
|
judgeModel,
|
|
166
183
|
outputDir,
|
|
@@ -226,4 +243,3 @@ export async function executeBatchEvaluationRuns({ skillDir, skillEntries, model
|
|
|
226
243
|
await resolvedJobStore.save(job.jobId, job);
|
|
227
244
|
return { report: batchReport, filePath };
|
|
228
245
|
}
|
|
229
|
-
//# sourceMappingURL=batch-evaluation-workflow.js.map
|
|
@@ -19,4 +19,3 @@ export declare function buildPowerWarnings(sampleCount: number, repeat: number,
|
|
|
19
19
|
export declare function emitPowerWarnings(sampleCount: number, repeat: number, lang: Lang): void;
|
|
20
20
|
export declare function buildIsolationWarnings(artifacts: Artifact[], strictBaseline: boolean | undefined): string[];
|
|
21
21
|
export declare function emitIsolationWarnings(artifacts: Artifact[], strictBaseline: boolean | undefined): void;
|
|
22
|
-
//# sourceMappingURL=preflight-warnings.d.ts.map
|
|
@@ -57,4 +57,3 @@ export declare function finalizeSuccessfulRun(state: EvaluationRunState): {
|
|
|
57
57
|
};
|
|
58
58
|
export declare function persistSuccessfulJob(state: EvaluationRunState, job: EvaluationJob): Promise<void>;
|
|
59
59
|
export declare function persistFailedJob(state: EvaluationRunState, err: unknown): Promise<void>;
|
|
60
|
-
//# sourceMappingURL=run-state.d.ts.map
|
|
@@ -18,4 +18,3 @@
|
|
|
18
18
|
*/
|
|
19
19
|
export declare function computeTestSetHash(samplesPath: string, sourceFiles?: string[]): string | null;
|
|
20
20
|
export declare function _computeTestSetHashForTest(samplesPath: string, sourceFiles?: string[]): string | null;
|
|
21
|
-
//# sourceMappingURL=test-set-hash.d.ts.map
|
|
@@ -12,17 +12,14 @@ export interface PreparedEvaluationRun {
|
|
|
12
12
|
/** Sample bundle 内参与合并的所有源文件绝对路径(已排序)。test set hash 用它遍历。 */
|
|
13
13
|
samplesSourceFiles: string[];
|
|
14
14
|
}
|
|
15
|
-
export declare function prepareEvaluationRun({ samplesPath, skillDir, variantSpecs,
|
|
15
|
+
export declare function prepareEvaluationRun({ samplesPath, skillDir, variantSpecs, dryRun, mcpConfig, strictBaseline, }: {
|
|
16
16
|
samplesPath: string;
|
|
17
17
|
skillDir: string;
|
|
18
18
|
variantSpecs: VariantSpec[];
|
|
19
|
-
artifacts?: Artifact[];
|
|
20
19
|
dryRun: boolean;
|
|
21
20
|
mcpConfig?: string;
|
|
22
21
|
/** — default true, baseline-kind 自动 allowedSkills=[]。 */
|
|
23
22
|
strictBaseline?: boolean;
|
|
24
|
-
/** — eval.yaml 显式 allowedSkills per variant (overrides strictBaseline default). */
|
|
25
|
-
variantAllowedSkills?: Record<string, string[]>;
|
|
26
23
|
}): Promise<PreparedEvaluationRun>;
|
|
27
24
|
export declare function buildDryRunTaskReport({ model, judgeModels, executorName, samplesPath, skillDir, tasks, variantNames, }: {
|
|
28
25
|
model: string;
|
|
@@ -57,4 +54,3 @@ export declare function buildDryRunTaskReport({ model, judgeModels, executorName
|
|
|
57
54
|
hasSystem: boolean;
|
|
58
55
|
}[];
|
|
59
56
|
};
|
|
60
|
-
//# sourceMappingURL=evaluation-preparation.d.ts.map
|
|
@@ -5,22 +5,27 @@ import { resolveArtifacts } from '../inputs/skill-loader.js';
|
|
|
5
5
|
import { buildVariantConfig } from '../eval-core/execution-strategy.js';
|
|
6
6
|
import { loadMcpConfig, resolveMcpUrls } from '../inputs/mcp-resolver.js';
|
|
7
7
|
import { resolveUrls } from '../inputs/url-fetcher.js';
|
|
8
|
-
export async function prepareEvaluationRun({ samplesPath, skillDir, variantSpecs,
|
|
8
|
+
export async function prepareEvaluationRun({ samplesPath, skillDir, variantSpecs, dryRun, mcpConfig, strictBaseline, }) {
|
|
9
9
|
const { samples, requires, baseDir: samplesBaseDir, sourceFiles: samplesSourceFiles } = loadSamples(samplesPath);
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
10
|
+
// 结构化传入 {expr, cwd}(与 variantSpecs 顺序一一对应),cwd 不再编码进 expr 字符串。
|
|
11
|
+
// resolveArtifacts 只保留 strictBaseline 默认(baseline → []);per-variant 隔离声明走
|
|
12
|
+
// spec.allowedSkills,在下面按 spec 身份绑定。
|
|
13
|
+
const variantInputs = variantSpecs.map((spec) => ({ expr: spec.expr, cwd: spec.cwd }));
|
|
14
|
+
const resolvedArtifacts = resolveArtifacts(resolve(skillDir), variantInputs, { strictBaseline });
|
|
15
|
+
// experimentRole / allowedSkills 按 spec 身份绑定。variantSpecs 与 resolvedArtifacts 顺序
|
|
16
|
+
// 一一对应(resolveArtifacts 每个 input 产出一个 artifact),按 index 绑定,并把 spec.name
|
|
17
|
+
// 同步成消歧后的最终唯一名。不能按 spec.name 匹配 artifact.name:同 basename 的 variant 被
|
|
18
|
+
// ensureUniqueVariantNames 消歧后(v1/greeter / v2/greeter)就和 spec 的派生短名(greeter)
|
|
19
|
+
// 对不上,会丢 role。
|
|
20
|
+
variantSpecs.forEach((spec, i) => {
|
|
21
|
+
const artifact = resolvedArtifacts[i];
|
|
22
|
+
artifact.experimentRole = spec.role;
|
|
23
|
+
// spec.allowedSkills 是隔离声明的单一来源(eval.yaml 经 configVariantsToSpecs、batch 经
|
|
24
|
+
// buildBatchVariantSpecs 都挂到 spec 上),显式声明优先于 strictBaseline 默认。
|
|
25
|
+
if (spec.allowedSkills !== undefined)
|
|
26
|
+
artifact.allowedSkills = spec.allowedSkills;
|
|
27
|
+
spec.name = artifact.name; // 同步唯一名,让 spec 与 report / variantNames 一致(放最后,前面还要用旧名查)
|
|
28
|
+
});
|
|
24
29
|
if (!dryRun) {
|
|
25
30
|
const mcpServers = loadMcpConfig(mcpConfig);
|
|
26
31
|
const mcpResolved = mcpServers ? await resolveMcpUrls(samples, mcpServers) : new Set();
|
|
@@ -74,4 +79,3 @@ export function buildDryRunTaskReport({ model, judgeModels, executorName, sample
|
|
|
74
79
|
}),
|
|
75
80
|
};
|
|
76
81
|
}
|
|
77
|
-
//# sourceMappingURL=evaluation-preparation.js.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import type { Lang } from '../types/shared.js';
|
|
2
2
|
export type EvalWorkflowMessageCode = 'power_warning_tiny_n' | 'power_warning_small_n' | 'power_warning_repeat_one' | 'doctor_gate_blocked';
|
|
3
3
|
export declare function tEvalWorkflowMessage(code: EvalWorkflowMessageCode, lang?: Lang, params?: Record<string, string | number>): string;
|
|
4
|
-
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -63,7 +63,6 @@ export interface RunEvaluationOptions extends CommonEvaluationOptions {
|
|
|
63
63
|
samplesPath: string;
|
|
64
64
|
skillDir: string;
|
|
65
65
|
variantSpecs?: VariantSpec[];
|
|
66
|
-
artifacts?: Artifact[];
|
|
67
66
|
dryRun?: boolean;
|
|
68
67
|
blind?: boolean;
|
|
69
68
|
retry?: number;
|
|
@@ -71,12 +70,9 @@ export interface RunEvaluationOptions extends CommonEvaluationOptions {
|
|
|
71
70
|
/** Explicit persisted run id. Used by batch workflows that need stable child ids. */
|
|
72
71
|
runId?: string;
|
|
73
72
|
/** strict-baseline default (CLI `--strict-baseline` default true).
|
|
74
|
-
* When undefined, treated as true. baseline-kind variants get allowedSkills=[]
|
|
75
|
-
*
|
|
73
|
+
* When undefined, treated as true. baseline-kind variants get allowedSkills=[].
|
|
74
|
+
* per-variant 显式隔离声明走 variantSpecs[].allowedSkills(eval.yaml 经 configVariantsToSpecs)。 */
|
|
76
75
|
strictBaseline?: boolean;
|
|
77
|
-
/** per-variant explicit allowedSkills override map (from eval.yaml).
|
|
78
|
-
* Keyed by variant name. Always wins over strictBaseline default. */
|
|
79
|
-
variantAllowedSkills?: Record<string, string[]>;
|
|
80
76
|
}
|
|
81
77
|
export interface RunBatchEvaluationOptions extends CommonEvaluationOptions {
|
|
82
78
|
skillDir: string;
|
|
@@ -122,7 +118,7 @@ export interface DryRunReport extends DryRunBase {
|
|
|
122
118
|
samplesPath: string;
|
|
123
119
|
tasks: DryRunTask[];
|
|
124
120
|
}
|
|
125
|
-
export declare function runEvaluation({ samplesPath, skillDir, variantSpecs,
|
|
121
|
+
export declare function runEvaluation({ samplesPath, skillDir, variantSpecs, model, outputDir, project, owner, tags, noJudge, dryRun, blind, concurrency, timeoutMs, noCache, executorName, jobStore, persistJob, onProgress, skipConnectivity, skipDoctor, lang, mcpConfig, verbose, retry, resume, runId, layeredStats, repeat, batch, judgeRepeat, judgeModels, bootstrap, bootstrapSamples, lengthDebias, budget, strictBaseline, effort, noDiagnostic, }: RunEvaluationOptions): Promise<{
|
|
126
122
|
report: Report | DryRunReport;
|
|
127
123
|
filePath: string | null;
|
|
128
124
|
}>;
|
|
@@ -137,7 +133,7 @@ export interface DryRunBatchReport extends DryRunBase {
|
|
|
137
133
|
totalArtifacts: number;
|
|
138
134
|
artifacts: DryRunBatchSkill[];
|
|
139
135
|
}
|
|
140
|
-
export declare function buildVarianceData(runs: Report[]): VarianceData | null;
|
|
136
|
+
export declare function buildVarianceData(runs: Report[], bootstrapSamples?: number, seed?: number): VarianceData | null;
|
|
141
137
|
export declare function runBatchEvaluation({ skillDir, model, outputDir, project, owner, tags, noJudge, dryRun, concurrency, timeoutMs, executorName, jobStore, persistJob, onProgress, onSkillProgress, skipConnectivity, skipDoctor, lang, mcpConfig, verbose, repeat, judgeRepeat, judgeModels, bootstrap, bootstrapSamples, lengthDebias, budget, noCache, strictBaseline, variantAllowedSkills, }: RunBatchEvaluationOptions): Promise<{
|
|
142
138
|
report: BatchEvaluationReport | DryRunBatchReport;
|
|
143
139
|
filePath: string | null;
|
|
@@ -148,4 +144,3 @@ export declare function runMultiple({ repeat, onRepeatProgress, ...config }: Run
|
|
|
148
144
|
filePath: string | null;
|
|
149
145
|
}>;
|
|
150
146
|
export {};
|
|
151
|
-
//# sourceMappingURL=run-evaluation.d.ts.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { resolve } from 'node:path';
|
|
2
2
|
import { DEFAULT_OUTPUT_DIR, persistReport } from '../eval-core/evaluation-reporting.js';
|
|
3
3
|
import { createExecutor, DEFAULT_MODEL, JUDGE_MODEL } from '../executors/index.js';
|
|
4
|
-
import { discoverBatchSkills
|
|
4
|
+
import { discoverBatchSkills } from '../inputs/skill-loader.js';
|
|
5
5
|
import { confidenceInterval, tTest, effectSize } from '../eval-core/statistics.js';
|
|
6
|
-
import { executeBatchEvaluationRuns } from './batch-evaluation-workflow.js';
|
|
6
|
+
import { executeBatchEvaluationRuns, buildBatchVariantSpecs } from './batch-evaluation-workflow.js';
|
|
7
7
|
import { buildDryRunTaskReport, prepareEvaluationRun, } from './evaluation-preparation.js';
|
|
8
8
|
import { executeEvaluationPipeline } from './evaluation-pipeline.js';
|
|
9
9
|
import { findSaturationPoint } from '../analysis/saturation.js';
|
|
10
|
-
import { bootstrapMeanCI } from '../eval-core/bootstrap.js';
|
|
11
|
-
export async function runEvaluation({ samplesPath, skillDir, variantSpecs = [],
|
|
10
|
+
import { bootstrapMeanCI, DEFAULT_BOOTSTRAP_ALPHA, DEFAULT_BOOTSTRAP_SAMPLES } from '../eval-core/bootstrap.js';
|
|
11
|
+
export async function runEvaluation({ samplesPath, skillDir, variantSpecs = [], model = DEFAULT_MODEL, outputDir = DEFAULT_OUTPUT_DIR, project, owner, tags, noJudge = false, dryRun = false, blind = false, concurrency = 1, timeoutMs, noCache = false, executorName = 'claude', jobStore = null, persistJob = true, onProgress = null, skipConnectivity = false, skipDoctor = false, lang = 'zh', mcpConfig, verbose = false, retry = 0, resume, runId, layeredStats = false, repeat, batch, judgeRepeat, judgeModels, bootstrap, bootstrapSamples, lengthDebias, budget, strictBaseline, effort, noDiagnostic, }) {
|
|
12
12
|
// Unified judgeModels → derive single-judge fields for downstream pipeline / grading
|
|
13
13
|
// (which still operate on string `judgeModel` + `judgeExecutorName` fields per call).
|
|
14
14
|
const effectiveJudgeModels = judgeModels && judgeModels.length > 0
|
|
@@ -20,11 +20,9 @@ export async function runEvaluation({ samplesPath, skillDir, variantSpecs = [],
|
|
|
20
20
|
samplesPath,
|
|
21
21
|
skillDir,
|
|
22
22
|
variantSpecs,
|
|
23
|
-
artifacts,
|
|
24
23
|
dryRun,
|
|
25
24
|
mcpConfig,
|
|
26
25
|
strictBaseline,
|
|
27
|
-
variantAllowedSkills,
|
|
28
26
|
});
|
|
29
27
|
// doctor 强制门禁: skill 静态结构 + 元数据 + 依赖 + 用例契约。
|
|
30
28
|
// 在 dryRun 分支之前跑, 让 dry-run 也得到 doctor 覆盖(保护 garbage-in 的 verdict)。
|
|
@@ -99,7 +97,7 @@ export async function runEvaluation({ samplesPath, skillDir, variantSpecs = [],
|
|
|
99
97
|
const { createFileStore } = await import('../server/report-store.js');
|
|
100
98
|
const store = createFileStore(resolve(outputDir || DEFAULT_OUTPUT_DIR));
|
|
101
99
|
const existing = await store.get(resume);
|
|
102
|
-
if (existing?.
|
|
100
|
+
if (existing?.reportKind === 'evaluation') {
|
|
103
101
|
existingResults = {};
|
|
104
102
|
for (const entry of existing.results || []) {
|
|
105
103
|
existingResults[entry.sample_id] = entry.variants;
|
|
@@ -123,7 +121,7 @@ export async function runEvaluation({ samplesPath, skillDir, variantSpecs = [],
|
|
|
123
121
|
+ ` 新 entries 不隔离 → 与现有 entries 不可比。建议恢复默认 strict-baseline。\n`);
|
|
124
122
|
}
|
|
125
123
|
}
|
|
126
|
-
else if (existing?.
|
|
124
|
+
else if (existing?.reportKind === 'batch-evaluation') {
|
|
127
125
|
process.stderr.write(`\n⚠️ report ${resume} is a BatchEvaluationReport; resume needs a child EvaluationReport, starting from scratch\n`);
|
|
128
126
|
}
|
|
129
127
|
else {
|
|
@@ -228,7 +226,7 @@ function buildComparisonMetric(scoresA, scoresB, meanA, meanB) {
|
|
|
228
226
|
* verdict is computed — the user still sees the curve, just without the auto
|
|
229
227
|
* "saturated at N=X" claim.
|
|
230
228
|
*/
|
|
231
|
-
function buildSaturationData(runs) {
|
|
229
|
+
function buildSaturationData(runs, bootstrapSamples = DEFAULT_BOOTSTRAP_SAMPLES, seed) {
|
|
232
230
|
if (runs.length < 2)
|
|
233
231
|
return undefined;
|
|
234
232
|
const variants = runs[0].meta.variants ?? [];
|
|
@@ -259,7 +257,7 @@ function buildSaturationData(runs) {
|
|
|
259
257
|
cumulativeByVariant[variant] = [];
|
|
260
258
|
cumulativeByVariant[variant].push([...acc[variant]]);
|
|
261
259
|
// Per-checkpoint trace: bootstrap CI on cumulative scores.
|
|
262
|
-
const ci = bootstrapMeanCI(acc[variant],
|
|
260
|
+
const ci = bootstrapMeanCI(acc[variant], DEFAULT_BOOTSTRAP_ALPHA, bootstrapSamples, seed);
|
|
263
261
|
if (!tracesByVariant[variant])
|
|
264
262
|
tracesByVariant[variant] = [];
|
|
265
263
|
tracesByVariant[variant].push({
|
|
@@ -276,7 +274,7 @@ function buildSaturationData(runs) {
|
|
|
276
274
|
const cumulative = cumulativeByVariant[variant];
|
|
277
275
|
if (!cumulative)
|
|
278
276
|
continue;
|
|
279
|
-
const r = findSaturationPoint(cumulative, 'bootstrap-ci-width');
|
|
277
|
+
const r = findSaturationPoint(cumulative, 'bootstrap-ci-width', undefined, undefined, bootstrapSamples, seed);
|
|
280
278
|
verdicts[variant] = {
|
|
281
279
|
saturated: r.saturated,
|
|
282
280
|
atN: r.atN,
|
|
@@ -293,7 +291,7 @@ function buildSaturationData(runs) {
|
|
|
293
291
|
...(Object.keys(verdicts).length > 0 ? { verdicts } : {}),
|
|
294
292
|
};
|
|
295
293
|
}
|
|
296
|
-
export function buildVarianceData(runs) {
|
|
294
|
+
export function buildVarianceData(runs, bootstrapSamples = DEFAULT_BOOTSTRAP_SAMPLES, seed) {
|
|
297
295
|
if (runs.length <= 1) {
|
|
298
296
|
return null;
|
|
299
297
|
}
|
|
@@ -358,7 +356,7 @@ export function buildVarianceData(runs) {
|
|
|
358
356
|
});
|
|
359
357
|
}
|
|
360
358
|
}
|
|
361
|
-
const saturation = buildSaturationData(runs);
|
|
359
|
+
const saturation = buildSaturationData(runs, bootstrapSamples, seed);
|
|
362
360
|
return {
|
|
363
361
|
runs: runs.length,
|
|
364
362
|
perVariant,
|
|
@@ -381,23 +379,17 @@ export async function runBatchEvaluation({ skillDir, model = DEFAULT_MODEL, outp
|
|
|
381
379
|
if (dryRun) {
|
|
382
380
|
// batch dry-run 走 per-entry runEvaluation(dryRun: true) — doctor 嵌入
|
|
383
381
|
// 自动复用 runEvaluation 内部的 builder + 单一逻辑,不再在 batch 这边
|
|
384
|
-
// 旁路一套 doctor / 路径推断。entry
|
|
385
|
-
// (executeBatchEvaluationRuns)
|
|
386
|
-
const skillDirAbs = resolve(skillDir);
|
|
382
|
+
// 旁路一套 doctor / 路径推断。entry 的 spec 构造(buildBatchVariantSpecs)与 batch
|
|
383
|
+
// real-run(executeBatchEvaluationRuns)同一处,避免 dry-run / real-run 漂移。
|
|
387
384
|
const dryArtifacts = [];
|
|
388
385
|
for (const entry of skillEntries) {
|
|
389
|
-
const
|
|
390
|
-
if (artifact.name === entry.skillPath) {
|
|
391
|
-
return { ...artifact, name: entry.name, experimentRole: 'treatment' };
|
|
392
|
-
}
|
|
393
|
-
return { ...artifact, experimentRole: 'control' };
|
|
394
|
-
});
|
|
386
|
+
const variantSpecs = buildBatchVariantSpecs(entry, variantAllowedSkills);
|
|
395
387
|
let entryReport;
|
|
396
388
|
try {
|
|
397
389
|
const result = await runEvaluation({
|
|
398
390
|
samplesPath: entry.samplesPath,
|
|
399
391
|
skillDir,
|
|
400
|
-
|
|
392
|
+
variantSpecs,
|
|
401
393
|
model,
|
|
402
394
|
executorName,
|
|
403
395
|
dryRun: true,
|
|
@@ -406,7 +398,6 @@ export async function runBatchEvaluation({ skillDir, model = DEFAULT_MODEL, outp
|
|
|
406
398
|
lang,
|
|
407
399
|
mcpConfig,
|
|
408
400
|
strictBaseline,
|
|
409
|
-
variantAllowedSkills,
|
|
410
401
|
// 透传 user 显式输入的参数,让 dry-run power / isolation warning 与
|
|
411
402
|
// 真实 run 一致(否则 batch dry-run 永远按 repeat=1 报警,误导用户)。
|
|
412
403
|
repeat,
|
|
@@ -516,7 +507,7 @@ export async function runMultiple({ repeat = 1, onRepeatProgress, ...config }) {
|
|
|
516
507
|
runs.push(report);
|
|
517
508
|
}
|
|
518
509
|
const report = runs[runs.length - 1];
|
|
519
|
-
const aggregated = buildVarianceData(runs);
|
|
510
|
+
const aggregated = buildVarianceData(runs, config.bootstrapSamples ?? DEFAULT_BOOTSTRAP_SAMPLES);
|
|
520
511
|
let filePath = null;
|
|
521
512
|
if (aggregated) {
|
|
522
513
|
report.variance = aggregated;
|
|
@@ -525,4 +516,3 @@ export async function runMultiple({ repeat = 1, onRepeatProgress, ...config }) {
|
|
|
525
516
|
}
|
|
526
517
|
return { report, aggregated, filePath };
|
|
527
518
|
}
|
|
528
|
-
//# sourceMappingURL=run-evaluation.js.map
|
|
@@ -5,7 +5,7 @@ export async function anthropicApiExecutor({ model, system, prompt, timeoutMs =
|
|
|
5
5
|
throw new Error('ANTHROPIC_API_KEY environment variable is not set');
|
|
6
6
|
const baseUrl = process.env.ANTHROPIC_BASE_URL || 'https://api.anthropic.com';
|
|
7
7
|
const reqBody = {
|
|
8
|
-
model: model || 'claude-sonnet-4-5
|
|
8
|
+
model: model || 'claude-sonnet-4-5',
|
|
9
9
|
max_tokens: 8192,
|
|
10
10
|
messages: [{ role: 'user', content: prompt }],
|
|
11
11
|
};
|
|
@@ -40,4 +40,3 @@ export async function anthropicApiExecutor({ model, system, prompt, timeoutMs =
|
|
|
40
40
|
return { ok: false, error, durationMs, durationApiMs: 0, inputTokens: 0, outputTokens: 0, cacheReadTokens: 0, cacheCreationTokens: 0, costUSD: 0, output: null, stopReason, numTurns: 0 };
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
//# sourceMappingURL=anthropic-api.js.map
|
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
import type { ExecResult, ExecutorInput } from '../types/index.js';
|
|
2
2
|
export declare function claudeCliExecutor({ model, system, prompt, cwd, skillDir, timeoutMs, allowedSkills, mocks, mocksBaseDir, mocksStrict, lean, effort }: ExecutorInput): Promise<ExecResult>;
|
|
3
|
-
//# sourceMappingURL=claude-cli.d.ts.map
|
|
@@ -13,4 +13,3 @@ export declare function buildSdkIsolationOptions(allowedSkills: string[] | undef
|
|
|
13
13
|
disallowedTools?: string[];
|
|
14
14
|
};
|
|
15
15
|
export declare function claudeSdkExecutor({ model, system, prompt, cwd, skillDir, timeoutMs, verbose, allowedSkills, mocks, mocksBaseDir, mocksStrict, lean, effort }: ExecutorInput): Promise<ExecResult>;
|
|
16
|
-
//# sourceMappingURL=claude-sdk.d.ts.map
|
|
@@ -15,4 +15,3 @@ export declare function buildCodexArgs({ model, cwd, prompt }: {
|
|
|
15
15
|
prompt: string;
|
|
16
16
|
}): string[];
|
|
17
17
|
export declare function codexCliExecutor({ model, system, prompt, cwd, skillDir, timeoutMs, allowedSkills, verbose }: ExecutorInput): Promise<ExecResult>;
|
|
18
|
-
//# sourceMappingURL=codex-cli.d.ts.map
|