oh-my-knowledge 0.31.0 → 0.33.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 +38 -847
- package/README.zh.md +49 -858
- package/dist/analysis/coverage-analyzer.d.ts.map +1 -0
- package/dist/analysis/coverage-analyzer.js.map +1 -0
- package/dist/analysis/failure-clusterer.d.ts.map +1 -0
- package/dist/analysis/failure-clusterer.js.map +1 -0
- package/dist/analysis/gap-analyzer.d.ts +121 -0
- package/dist/analysis/gap-analyzer.d.ts.map +1 -0
- package/dist/analysis/gap-analyzer.js +471 -0
- package/dist/analysis/gap-analyzer.js.map +1 -0
- package/dist/analysis/hedging-classifier.d.ts.map +1 -0
- package/dist/analysis/hedging-classifier.js.map +1 -0
- package/dist/analysis/report-diagnostics.d.ts +34 -0
- package/dist/analysis/report-diagnostics.d.ts.map +1 -0
- package/dist/analysis/report-diagnostics.js +753 -0
- package/dist/analysis/report-diagnostics.js.map +1 -0
- package/dist/analysis/sample-diagnostics.d.ts.map +1 -0
- package/dist/analysis/sample-diagnostics.js.map +1 -0
- package/dist/analysis/saturation.d.ts +93 -0
- package/dist/analysis/saturation.d.ts.map +1 -0
- package/dist/analysis/saturation.js +182 -0
- package/dist/analysis/saturation.js.map +1 -0
- package/dist/authoring/evolver.d.ts +143 -0
- package/dist/authoring/evolver.d.ts.map +1 -0
- package/dist/authoring/evolver.js +764 -0
- package/dist/authoring/evolver.js.map +1 -0
- package/dist/authoring/generator.d.ts +66 -0
- package/dist/authoring/generator.d.ts.map +1 -0
- package/dist/authoring/generator.js +833 -0
- package/dist/authoring/generator.js.map +1 -0
- package/dist/authoring/sample-fixer.d.ts.map +1 -0
- package/dist/authoring/sample-fixer.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +28 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +321 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/eval/gold/compare.d.ts.map +1 -0
- package/dist/cli/commands/eval/gold/compare.js.map +1 -0
- package/dist/cli/commands/eval/gold/index.d.ts.map +1 -0
- package/dist/cli/commands/eval/gold/index.js.map +1 -0
- package/dist/cli/commands/eval/gold/init.d.ts.map +1 -0
- package/dist/cli/commands/eval/gold/init.js.map +1 -0
- package/dist/cli/commands/eval/gold/validate.d.ts.map +1 -0
- package/dist/cli/commands/eval/gold/validate.js.map +1 -0
- package/dist/cli/commands/eval/index.d.ts.map +1 -0
- package/dist/cli/commands/eval/index.js +466 -0
- package/dist/cli/commands/eval/index.js.map +1 -0
- package/dist/cli/commands/evolve.d.ts +38 -0
- package/dist/cli/commands/evolve.d.ts.map +1 -0
- package/dist/cli/commands/evolve.js +299 -0
- package/dist/cli/commands/evolve.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/observe/inbox.d.ts.map +1 -0
- package/dist/cli/commands/observe/inbox.js +260 -0
- package/dist/cli/commands/observe/inbox.js.map +1 -0
- package/dist/cli/commands/observe/index.d.ts.map +1 -0
- package/dist/cli/commands/observe/index.js +122 -0
- package/dist/cli/commands/observe/index.js.map +1 -0
- package/dist/cli/commands/observe/ingest.d.ts.map +1 -0
- package/dist/cli/commands/observe/ingest.js +71 -0
- package/dist/cli/commands/observe/ingest.js.map +1 -0
- package/dist/cli/commands/observe/show.d.ts.map +1 -0
- package/dist/cli/commands/observe/show.js.map +1 -0
- package/dist/cli/commands/sample.d.ts +40 -0
- package/dist/cli/commands/sample.d.ts.map +1 -0
- package/dist/cli/commands/sample.js +579 -0
- package/dist/cli/commands/sample.js.map +1 -0
- package/dist/cli/commands/studio.d.ts.map +1 -0
- package/dist/cli/commands/studio.js +158 -0
- package/dist/cli/commands/studio.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/lib/cli-exit.d.ts.map +1 -0
- package/dist/cli/lib/cli-exit.js.map +1 -0
- package/dist/cli/lib/cmd-flags.d.ts +229 -0
- package/dist/cli/lib/cmd-flags.d.ts.map +1 -0
- package/dist/cli/lib/cmd-flags.js.map +1 -0
- package/dist/cli/lib/i18n-dict/common.d.ts +4 -0
- package/dist/cli/lib/i18n-dict/common.d.ts.map +1 -0
- package/dist/cli/lib/i18n-dict/common.js +83 -0
- package/dist/cli/lib/i18n-dict/common.js.map +1 -0
- package/dist/cli/lib/i18n-dict/evolve.d.ts +4 -0
- package/dist/cli/lib/i18n-dict/evolve.d.ts.map +1 -0
- package/dist/cli/lib/i18n-dict/evolve.js +51 -0
- package/dist/cli/lib/i18n-dict/evolve.js.map +1 -0
- package/dist/cli/lib/i18n-dict/gen.d.ts +4 -0
- package/dist/cli/lib/i18n-dict/gen.d.ts.map +1 -0
- package/dist/cli/lib/i18n-dict/gen.js +63 -0
- package/dist/cli/lib/i18n-dict/gen.js.map +1 -0
- package/dist/cli/lib/i18n-dict/help.d.ts +4 -0
- package/dist/cli/lib/i18n-dict/help.d.ts.map +1 -0
- package/dist/cli/lib/i18n-dict/help.js +281 -0
- package/dist/cli/lib/i18n-dict/help.js.map +1 -0
- package/dist/cli/lib/i18n-dict/init.d.ts +4 -0
- package/dist/cli/lib/i18n-dict/init.d.ts.map +1 -0
- package/dist/cli/lib/i18n-dict/init.js +27 -0
- package/dist/cli/lib/i18n-dict/init.js.map +1 -0
- package/dist/cli/lib/i18n-dict/run.d.ts +4 -0
- package/dist/cli/lib/i18n-dict/run.d.ts.map +1 -0
- package/dist/cli/lib/i18n-dict/run.js +143 -0
- package/dist/cli/lib/i18n-dict/run.js.map +1 -0
- package/dist/cli/lib/i18n-dict/types.d.ts +5 -0
- package/dist/cli/lib/i18n-dict/types.d.ts.map +1 -0
- package/dist/cli/lib/i18n-dict/types.js +2 -0
- package/dist/cli/lib/i18n-dict/types.js.map +1 -0
- package/dist/cli/lib/i18n-dict.d.ts +63 -0
- package/dist/cli/lib/i18n-dict.d.ts.map +1 -0
- package/dist/cli/lib/i18n-dict.js +67 -0
- package/dist/cli/lib/i18n-dict.js.map +1 -0
- package/dist/cli/lib/i18n.d.ts.map +1 -0
- package/dist/cli/lib/i18n.js.map +1 -0
- package/dist/cli/lib/parse-run-config/judge-models.d.ts +24 -0
- package/dist/cli/lib/parse-run-config/judge-models.d.ts.map +1 -0
- package/dist/cli/lib/parse-run-config/judge-models.js +55 -0
- package/dist/cli/lib/parse-run-config/judge-models.js.map +1 -0
- package/dist/cli/lib/parse-run-config/samples-discovery.d.ts +19 -0
- package/dist/cli/lib/parse-run-config/samples-discovery.d.ts.map +1 -0
- package/dist/cli/lib/parse-run-config/samples-discovery.js +53 -0
- package/dist/cli/lib/parse-run-config/samples-discovery.js.map +1 -0
- package/dist/cli/lib/parse-run-config/variant-resolution.d.ts +23 -0
- package/dist/cli/lib/parse-run-config/variant-resolution.d.ts.map +1 -0
- package/dist/cli/lib/parse-run-config/variant-resolution.js +65 -0
- package/dist/cli/lib/parse-run-config/variant-resolution.js.map +1 -0
- package/dist/cli/lib/parse-run-config.d.ts +93 -0
- package/dist/cli/lib/parse-run-config.d.ts.map +1 -0
- package/dist/cli/lib/parse-run-config.js +157 -0
- package/dist/cli/lib/parse-run-config.js.map +1 -0
- package/dist/cli/lib/progress.d.ts.map +1 -0
- package/dist/cli/lib/progress.js.map +1 -0
- package/dist/cli/lib/resolve-skill-input.d.ts +8 -0
- package/dist/cli/lib/resolve-skill-input.d.ts.map +1 -0
- package/dist/cli/lib/resolve-skill-input.js +40 -0
- package/dist/cli/lib/resolve-skill-input.js.map +1 -0
- package/dist/cli/lib/run-tally.d.ts.map +1 -0
- package/dist/cli/lib/run-tally.js.map +1 -0
- package/dist/cli/lib/shared.d.ts.map +1 -0
- package/dist/cli/lib/shared.js.map +1 -0
- package/dist/cli/lib/update-check.d.ts +74 -0
- package/dist/cli/lib/update-check.d.ts.map +1 -0
- package/dist/cli/lib/update-check.js +302 -0
- package/dist/cli/lib/update-check.js.map +1 -0
- package/dist/cli/lib/update-fetch-worker.d.ts +2 -0
- package/dist/cli/lib/update-fetch-worker.d.ts.map +1 -0
- package/dist/cli/lib/update-fetch-worker.js +35 -0
- package/dist/cli/lib/update-fetch-worker.js.map +1 -0
- package/dist/cli/oclif/base-command.d.ts.map +1 -0
- package/dist/cli/oclif/base-command.js.map +1 -0
- package/dist/cli/oclif/help.d.ts.map +1 -0
- package/dist/cli/oclif/help.js.map +1 -0
- package/dist/cli/oclif/i18n.d.ts.map +1 -0
- package/dist/cli/oclif/i18n.js.map +1 -0
- package/dist/cli/oclif/parsers.d.ts.map +1 -0
- package/dist/cli/oclif/parsers.js.map +1 -0
- package/dist/cli/oclif/projection.d.ts.map +1 -0
- package/dist/cli/oclif/projection.js.map +1 -0
- package/dist/cli/oclif/run.d.ts.map +1 -0
- package/dist/cli/oclif/run.js +11 -0
- package/dist/cli/oclif/run.js.map +1 -0
- package/dist/diagnosis/observe-mapper.d.ts.map +1 -0
- package/dist/diagnosis/observe-mapper.js.map +1 -0
- package/dist/diagnosis/observe-producer.d.ts.map +1 -0
- package/dist/diagnosis/observe-producer.js +199 -0
- package/dist/diagnosis/observe-producer.js.map +1 -0
- package/dist/diagnosis/studio-projection.d.ts +7 -0
- package/dist/diagnosis/studio-projection.d.ts.map +1 -0
- package/dist/diagnosis/studio-projection.js.map +1 -0
- package/dist/diagnosis/types.d.ts +4 -0
- package/dist/diagnosis/types.d.ts.map +1 -0
- package/dist/diagnosis/types.js +20 -0
- package/dist/diagnosis/types.js.map +1 -0
- package/dist/doctor/fixer.d.ts.map +1 -0
- package/dist/doctor/fixer.js.map +1 -0
- package/dist/doctor/health/builtin-dimensions.d.ts.map +1 -0
- package/dist/doctor/health/builtin-dimensions.js.map +1 -0
- package/dist/doctor/health/composer.d.ts.map +1 -0
- package/dist/doctor/health/composer.js +296 -0
- package/dist/doctor/health/composer.js.map +1 -0
- package/dist/doctor/health/dimension-registry.d.ts.map +1 -0
- package/dist/doctor/health/dimension-registry.js.map +1 -0
- package/dist/doctor/health/dimension-spec.d.ts +47 -0
- package/dist/doctor/health/dimension-spec.d.ts.map +1 -0
- package/dist/doctor/health/dimension-spec.js.map +1 -0
- package/dist/doctor/health/load-custom-dimensions.d.ts +2 -0
- package/dist/doctor/health/load-custom-dimensions.d.ts.map +1 -0
- package/dist/doctor/health/load-custom-dimensions.js +31 -0
- package/dist/doctor/health/load-custom-dimensions.js.map +1 -0
- package/dist/doctor/health/parser.d.ts.map +1 -0
- package/dist/doctor/health/parser.js.map +1 -0
- package/dist/doctor/health/prompt-builder.d.ts.map +1 -0
- package/dist/doctor/health/prompt-builder.js.map +1 -0
- package/dist/doctor/health/register.d.ts.map +1 -0
- package/dist/doctor/health/register.js.map +1 -0
- package/dist/doctor/index.d.ts.map +1 -0
- package/dist/doctor/index.js.map +1 -0
- package/dist/doctor/messages.d.ts +21 -0
- package/dist/doctor/messages.d.ts.map +1 -0
- package/dist/doctor/messages.js +217 -0
- package/dist/doctor/messages.js.map +1 -0
- package/dist/doctor/preflight.d.ts.map +1 -0
- package/dist/doctor/preflight.js.map +1 -0
- package/dist/doctor/renderer.d.ts +17 -0
- package/dist/doctor/renderer.d.ts.map +1 -0
- package/dist/doctor/renderer.js +122 -0
- package/dist/doctor/renderer.js.map +1 -0
- package/dist/doctor/rules.d.ts.map +1 -0
- package/dist/doctor/rules.js +289 -0
- package/dist/doctor/rules.js.map +1 -0
- package/dist/eval-core/bootstrap.d.ts +80 -0
- package/dist/eval-core/bootstrap.d.ts.map +1 -0
- package/dist/eval-core/bootstrap.js +182 -0
- package/dist/eval-core/bootstrap.js.map +1 -0
- package/dist/eval-core/cache.d.ts.map +1 -0
- package/dist/eval-core/cache.js.map +1 -0
- package/dist/eval-core/comparability.d.ts.map +1 -0
- package/dist/eval-core/comparability.js.map +1 -0
- package/dist/eval-core/dependency-checker.d.ts +37 -0
- package/dist/eval-core/dependency-checker.d.ts.map +1 -0
- package/dist/eval-core/dependency-checker.js.map +1 -0
- package/dist/eval-core/evaluation-execution.d.ts.map +1 -0
- package/dist/eval-core/evaluation-execution.js.map +1 -0
- package/dist/eval-core/evaluation-job.d.ts.map +1 -0
- package/dist/eval-core/evaluation-job.js.map +1 -0
- package/dist/eval-core/evaluation-reporting.d.ts.map +1 -0
- package/dist/eval-core/evaluation-reporting.js +292 -0
- package/dist/eval-core/evaluation-reporting.js.map +1 -0
- package/dist/eval-core/execution-strategy.d.ts.map +1 -0
- package/dist/eval-core/execution-strategy.js +165 -0
- package/dist/eval-core/execution-strategy.js.map +1 -0
- package/dist/eval-core/fact-checker.d.ts.map +1 -0
- package/dist/eval-core/fact-checker.js.map +1 -0
- package/dist/eval-core/layer-gates.d.ts.map +1 -0
- package/dist/eval-core/layer-gates.js.map +1 -0
- package/dist/eval-core/mocks-runtime.d.ts.map +1 -0
- package/dist/eval-core/mocks-runtime.js +559 -0
- package/dist/eval-core/mocks-runtime.js.map +1 -0
- package/dist/eval-core/schema.d.ts.map +1 -0
- package/dist/eval-core/schema.js.map +1 -0
- package/dist/eval-core/statistics.d.ts.map +1 -0
- package/dist/eval-core/statistics.js.map +1 -0
- package/dist/eval-core/task-planner.d.ts.map +1 -0
- package/dist/eval-core/task-planner.js.map +1 -0
- package/dist/eval-core/verdict.d.ts +95 -0
- package/dist/eval-core/verdict.d.ts.map +1 -0
- package/dist/eval-core/verdict.js +372 -0
- package/dist/eval-core/verdict.js.map +1 -0
- package/dist/eval-workflows/batch-evaluation-workflow.d.ts.map +1 -0
- package/dist/eval-workflows/batch-evaluation-workflow.js.map +1 -0
- package/dist/eval-workflows/evaluation-pipeline/preflight-warnings.d.ts +22 -0
- package/dist/eval-workflows/evaluation-pipeline/preflight-warnings.d.ts.map +1 -0
- package/dist/eval-workflows/evaluation-pipeline/preflight-warnings.js +67 -0
- package/dist/eval-workflows/evaluation-pipeline/preflight-warnings.js.map +1 -0
- package/dist/eval-workflows/evaluation-pipeline/report-finalize.d.ts +32 -0
- package/dist/eval-workflows/evaluation-pipeline/report-finalize.d.ts.map +1 -0
- package/dist/eval-workflows/evaluation-pipeline/report-finalize.js +57 -0
- package/dist/eval-workflows/evaluation-pipeline/report-finalize.js.map +1 -0
- package/dist/eval-workflows/evaluation-pipeline/run-state.d.ts +60 -0
- package/dist/eval-workflows/evaluation-pipeline/run-state.d.ts.map +1 -0
- package/dist/eval-workflows/evaluation-pipeline/run-state.js +88 -0
- package/dist/eval-workflows/evaluation-pipeline/run-state.js.map +1 -0
- package/dist/eval-workflows/evaluation-pipeline/test-set-hash.d.ts +21 -0
- package/dist/eval-workflows/evaluation-pipeline/test-set-hash.d.ts.map +1 -0
- package/dist/eval-workflows/evaluation-pipeline/test-set-hash.js +46 -0
- package/dist/eval-workflows/evaluation-pipeline/test-set-hash.js.map +1 -0
- package/dist/eval-workflows/evaluation-pipeline.d.ts +97 -0
- package/dist/eval-workflows/evaluation-pipeline.d.ts.map +1 -0
- package/dist/eval-workflows/evaluation-pipeline.js +179 -0
- package/dist/eval-workflows/evaluation-pipeline.js.map +1 -0
- package/dist/eval-workflows/evaluation-preparation.d.ts.map +1 -0
- package/dist/eval-workflows/evaluation-preparation.js +105 -0
- package/dist/eval-workflows/evaluation-preparation.js.map +1 -0
- package/dist/eval-workflows/messages.d.ts +4 -0
- package/dist/eval-workflows/messages.d.ts.map +1 -0
- package/dist/eval-workflows/messages.js +30 -0
- package/dist/eval-workflows/messages.js.map +1 -0
- package/dist/eval-workflows/run-evaluation.d.ts +151 -0
- package/dist/eval-workflows/run-evaluation.d.ts.map +1 -0
- package/dist/eval-workflows/run-evaluation.js +528 -0
- package/dist/eval-workflows/run-evaluation.js.map +1 -0
- package/dist/executors/anthropic-api.d.ts.map +1 -0
- package/dist/executors/anthropic-api.js.map +1 -0
- package/dist/executors/claude-cli.d.ts.map +1 -0
- package/dist/executors/claude-cli.js.map +1 -0
- package/dist/executors/claude-sdk-trace.d.ts.map +1 -0
- package/dist/executors/claude-sdk-trace.js.map +1 -0
- package/dist/executors/claude-sdk.d.ts.map +1 -0
- package/dist/executors/claude-sdk.js.map +1 -0
- package/dist/executors/codex-cli-trace.d.ts.map +1 -0
- package/dist/executors/codex-cli-trace.js.map +1 -0
- package/dist/executors/codex-cli.d.ts.map +1 -0
- package/dist/executors/codex-cli.js.map +1 -0
- package/dist/executors/codex-sdk.d.ts.map +1 -0
- package/dist/executors/codex-sdk.js.map +1 -0
- package/dist/executors/gemini.d.ts.map +1 -0
- package/dist/executors/gemini.js.map +1 -0
- package/dist/executors/index.d.ts.map +1 -0
- package/dist/executors/index.js.map +1 -0
- package/dist/executors/openai-api.d.ts.map +1 -0
- package/dist/executors/openai-api.js.map +1 -0
- package/dist/executors/runtime-fingerprint.d.ts.map +1 -0
- package/dist/executors/runtime-fingerprint.js.map +1 -0
- package/dist/executors/script.d.ts.map +1 -0
- package/dist/executors/script.js.map +1 -0
- package/dist/executors/shared.d.ts +194 -0
- package/dist/executors/shared.d.ts.map +1 -0
- package/dist/executors/shared.js +253 -0
- package/dist/executors/shared.js.map +1 -0
- package/dist/grading/assertions.d.ts.map +1 -0
- package/dist/grading/assertions.js.map +1 -0
- package/dist/grading/debias-validate.d.ts.map +1 -0
- package/dist/grading/debias-validate.js.map +1 -0
- package/dist/grading/diagnostic.d.ts.map +1 -0
- package/dist/grading/diagnostic.js.map +1 -0
- package/dist/grading/gold-cli.d.ts.map +1 -0
- package/dist/grading/gold-cli.js.map +1 -0
- package/dist/grading/gold-dataset.d.ts.map +1 -0
- package/dist/grading/gold-dataset.js.map +1 -0
- package/dist/grading/human-gold.d.ts.map +1 -0
- package/dist/grading/human-gold.js.map +1 -0
- package/dist/grading/index.d.ts.map +1 -0
- package/dist/grading/index.js.map +1 -0
- package/dist/grading/judge.d.ts.map +1 -0
- package/dist/grading/judge.js.map +1 -0
- package/dist/grading/layered-scores.d.ts.map +1 -0
- package/dist/grading/layered-scores.js.map +1 -0
- package/dist/inputs/eval-config.d.ts.map +1 -0
- package/dist/inputs/eval-config.js +252 -0
- package/dist/inputs/eval-config.js.map +1 -0
- package/dist/inputs/load-samples.d.ts.map +1 -0
- package/dist/inputs/load-samples.js.map +1 -0
- package/dist/inputs/mcp-resolver.d.ts.map +1 -0
- package/dist/inputs/mcp-resolver.js.map +1 -0
- package/dist/inputs/skill-loader.d.ts +49 -0
- package/dist/inputs/skill-loader.d.ts.map +1 -0
- package/dist/inputs/skill-loader.js +420 -0
- package/dist/inputs/skill-loader.js.map +1 -0
- package/dist/inputs/url-fetcher.d.ts.map +1 -0
- package/dist/inputs/url-fetcher.js.map +1 -0
- package/dist/observability/experience-frontmatter.d.ts +37 -0
- package/dist/observability/experience-frontmatter.d.ts.map +1 -0
- package/dist/observability/experience-frontmatter.js +100 -0
- package/dist/observability/experience-frontmatter.js.map +1 -0
- package/dist/observability/experience.d.ts +23 -0
- package/dist/observability/experience.d.ts.map +1 -0
- package/dist/observability/experience.js +3438 -0
- package/dist/observability/experience.js.map +1 -0
- package/dist/observability/feedback-matchers.d.ts +37 -0
- package/dist/observability/feedback-matchers.d.ts.map +1 -0
- package/dist/observability/feedback-matchers.js +232 -0
- package/dist/observability/feedback-matchers.js.map +1 -0
- package/dist/observability/feedback-projection.d.ts +21 -0
- package/dist/observability/feedback-projection.d.ts.map +1 -0
- package/dist/observability/feedback-projection.js +20 -0
- package/dist/observability/feedback-projection.js.map +1 -0
- package/dist/observability/inbox-view-model.d.ts +43 -0
- package/dist/observability/inbox-view-model.d.ts.map +1 -0
- package/dist/observability/inbox-view-model.js +180 -0
- package/dist/observability/inbox-view-model.js.map +1 -0
- package/dist/observability/inbox.d.ts +28 -0
- package/dist/observability/inbox.d.ts.map +1 -0
- package/dist/observability/inbox.js +765 -0
- package/dist/observability/inbox.js.map +1 -0
- package/dist/observability/problem-patterns.d.ts +12 -0
- package/dist/observability/problem-patterns.d.ts.map +1 -0
- package/dist/observability/problem-patterns.js +244 -0
- package/dist/observability/problem-patterns.js.map +1 -0
- package/dist/observability/prompts/llm-enhanced-review.prompt.md +224 -0
- package/dist/observability/resolved-review.d.ts +37 -0
- package/dist/observability/resolved-review.d.ts.map +1 -0
- package/dist/observability/resolved-review.js +552 -0
- package/dist/observability/resolved-review.js.map +1 -0
- package/dist/observability/review-state.d.ts +20 -0
- package/dist/observability/review-state.d.ts.map +1 -0
- package/dist/observability/review-state.js.map +1 -0
- package/dist/observability/skill-chain-advisories.d.ts +16 -0
- package/dist/observability/skill-chain-advisories.d.ts.map +1 -0
- package/dist/observability/skill-chain-advisories.js.map +1 -0
- package/dist/observability/skill-chain.d.ts +7 -0
- package/dist/observability/skill-chain.d.ts.map +1 -0
- package/dist/observability/skill-chain.js +474 -0
- package/dist/observability/skill-chain.js.map +1 -0
- package/dist/observability/skill-health-analyzer.d.ts +96 -0
- package/dist/observability/skill-health-analyzer.d.ts.map +1 -0
- package/dist/observability/skill-health-analyzer.js +253 -0
- package/dist/observability/skill-health-analyzer.js.map +1 -0
- package/dist/observability/soft-standards/constants.d.ts +5 -0
- package/dist/observability/soft-standards/constants.d.ts.map +1 -0
- package/dist/observability/soft-standards/constants.js +10 -0
- package/dist/observability/soft-standards/constants.js.map +1 -0
- package/dist/observability/soft-standards/index.d.ts +16 -0
- package/dist/observability/soft-standards/index.d.ts.map +1 -0
- package/dist/observability/soft-standards/index.js +15 -0
- package/dist/observability/soft-standards/index.js.map +1 -0
- package/dist/observability/soft-standards/llm-extractor.d.ts +6 -0
- package/dist/observability/soft-standards/llm-extractor.d.ts.map +1 -0
- package/dist/observability/soft-standards/llm-extractor.js +692 -0
- package/dist/observability/soft-standards/llm-extractor.js.map +1 -0
- package/dist/observability/soft-standards/runtime-evaluator.d.ts +12 -0
- package/dist/observability/soft-standards/runtime-evaluator.d.ts.map +1 -0
- package/dist/observability/soft-standards/runtime-evaluator.js +385 -0
- package/dist/observability/soft-standards/runtime-evaluator.js.map +1 -0
- package/dist/observability/soft-standards/skill-standards-store.d.ts +11 -0
- package/dist/observability/soft-standards/skill-standards-store.d.ts.map +1 -0
- package/dist/observability/soft-standards/skill-standards-store.js +158 -0
- package/dist/observability/soft-standards/skill-standards-store.js.map +1 -0
- package/dist/observability/soft-standards/types.d.ts +212 -0
- package/dist/observability/soft-standards/types.d.ts.map +1 -0
- package/dist/observability/soft-standards/types.js +2 -0
- package/dist/observability/soft-standards/types.js.map +1 -0
- package/dist/observability/text-signals.d.ts +14 -0
- package/dist/observability/text-signals.d.ts.map +1 -0
- package/dist/observability/text-signals.js +116 -0
- package/dist/observability/text-signals.js.map +1 -0
- package/dist/observability/trace-adapter.d.ts.map +1 -0
- package/dist/observability/trace-adapter.js.map +1 -0
- package/dist/observability/trace-attribution.d.ts +56 -0
- package/dist/observability/trace-attribution.d.ts.map +1 -0
- package/dist/observability/trace-attribution.js +200 -0
- package/dist/observability/trace-attribution.js.map +1 -0
- package/dist/observability/trace-segmenter.d.ts +52 -0
- package/dist/observability/trace-segmenter.d.ts.map +1 -0
- package/dist/observability/trace-segmenter.js +322 -0
- package/dist/observability/trace-segmenter.js.map +1 -0
- package/dist/observability/trace-source.d.ts +92 -0
- package/dist/observability/trace-source.d.ts.map +1 -0
- package/dist/observability/trace-source.js +502 -0
- package/dist/observability/trace-source.js.map +1 -0
- package/dist/renderer/html-renderer.d.ts.map +1 -0
- package/dist/renderer/html-renderer.js.map +1 -0
- package/dist/renderer/layout.d.ts.map +1 -0
- package/dist/renderer/layout.js +776 -0
- package/dist/renderer/layout.js.map +1 -0
- package/dist/renderer/observation-inbox/helpers.d.ts +14 -0
- package/dist/renderer/observation-inbox/helpers.d.ts.map +1 -0
- package/dist/renderer/observation-inbox/helpers.js +75 -0
- package/dist/renderer/observation-inbox/helpers.js.map +1 -0
- package/dist/renderer/observation-inbox/styles.d.ts +2 -0
- package/dist/renderer/observation-inbox/styles.d.ts.map +1 -0
- package/dist/renderer/observation-inbox/styles.js +5184 -0
- package/dist/renderer/observation-inbox/styles.js.map +1 -0
- package/dist/renderer/observation-inbox-renderer.d.ts +5 -0
- package/dist/renderer/observation-inbox-renderer.d.ts.map +1 -0
- package/dist/renderer/observation-inbox-renderer.js +7182 -0
- package/dist/renderer/observation-inbox-renderer.js.map +1 -0
- package/dist/renderer/skill-detail-renderer.d.ts +13 -0
- package/dist/renderer/skill-detail-renderer.d.ts.map +1 -0
- package/dist/renderer/skill-detail-renderer.js +1323 -0
- package/dist/renderer/skill-detail-renderer.js.map +1 -0
- package/dist/renderer/skill-health-renderer.d.ts.map +1 -0
- package/dist/renderer/skill-health-renderer.js +282 -0
- package/dist/renderer/skill-health-renderer.js.map +1 -0
- package/dist/renderer/skill-list-renderer.d.ts +3 -0
- package/dist/renderer/skill-list-renderer.d.ts.map +1 -0
- package/dist/renderer/skill-list-renderer.js +346 -0
- package/dist/renderer/skill-list-renderer.js.map +1 -0
- package/dist/renderer/summary.d.ts +68 -0
- package/dist/renderer/summary.d.ts.map +1 -0
- package/dist/renderer/summary.js +1908 -0
- package/dist/renderer/summary.js.map +1 -0
- package/dist/renderer/table.d.ts.map +1 -0
- package/dist/renderer/table.js.map +1 -0
- package/dist/renderer/test-view.d.ts.map +1 -0
- package/dist/renderer/test-view.js.map +1 -0
- package/dist/renderer/trends.d.ts.map +1 -0
- package/dist/renderer/trends.js.map +1 -0
- package/dist/server/job-store.d.ts.map +1 -0
- package/dist/server/job-store.js.map +1 -0
- package/dist/server/report-server.d.ts.map +1 -0
- package/dist/server/report-server.js +899 -0
- package/dist/server/report-server.js.map +1 -0
- package/dist/server/report-store.d.ts.map +1 -0
- package/dist/server/report-store.js.map +1 -0
- package/dist/server/skill-index.d.ts +14 -0
- package/dist/server/skill-index.d.ts.map +1 -0
- package/dist/server/skill-index.js +384 -0
- package/dist/server/skill-index.js.map +1 -0
- package/dist/server/skill-insights.d.ts +32 -0
- package/dist/server/skill-insights.d.ts.map +1 -0
- package/dist/server/skill-insights.js +816 -0
- package/dist/server/skill-insights.js.map +1 -0
- package/dist/shared/hard-rules.d.ts.map +1 -0
- package/dist/shared/hard-rules.js.map +1 -0
- package/dist/shared/llm-prompts/index.d.ts +14 -0
- package/dist/shared/llm-prompts/index.d.ts.map +1 -0
- package/dist/shared/llm-prompts/index.js +22 -0
- package/dist/shared/llm-prompts/index.js.map +1 -0
- package/dist/shared/llm-prompts/skill-health.d.ts.map +1 -0
- package/dist/shared/llm-prompts/skill-health.js.map +1 -0
- package/dist/shared/time.d.ts.map +1 -0
- package/dist/shared/time.js.map +1 -0
- package/dist/shared/tool-search.d.ts.map +1 -0
- package/dist/shared/tool-search.js.map +1 -0
- package/dist/types/dependencies.d.ts +23 -0
- package/dist/types/dependencies.d.ts.map +1 -0
- package/dist/types/dependencies.js +2 -0
- package/dist/types/dependencies.js.map +1 -0
- package/dist/types/diagnosis.d.ts +88 -0
- package/dist/types/diagnosis.d.ts.map +1 -0
- package/dist/types/diagnosis.js +2 -0
- package/dist/types/diagnosis.js.map +1 -0
- package/dist/types/doctor.d.ts +157 -0
- package/dist/types/doctor.d.ts.map +1 -0
- package/dist/types/doctor.js.map +1 -0
- package/dist/types/eval.d.ts +378 -0
- package/dist/types/eval.d.ts.map +1 -0
- package/dist/types/eval.js.map +1 -0
- package/dist/types/executor.d.ts.map +1 -0
- package/dist/types/executor.js.map +1 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/judge.d.ts.map +1 -0
- package/dist/types/judge.js.map +1 -0
- package/dist/types/observability.d.ts +865 -0
- package/dist/types/observability.d.ts.map +1 -0
- package/dist/types/observability.js +14 -0
- package/dist/types/observability.js.map +1 -0
- package/dist/types/report.d.ts +560 -0
- package/dist/types/report.d.ts.map +1 -0
- package/dist/types/report.js.map +1 -0
- package/dist/types/shared.d.ts.map +1 -0
- package/dist/types/shared.js.map +1 -0
- package/dist/types/skill-index.d.ts +145 -0
- package/dist/types/skill-index.d.ts.map +1 -0
- package/dist/types/skill-index.js +2 -0
- package/dist/types/skill-index.js.map +1 -0
- package/dist/types/storage.d.ts.map +1 -0
- package/dist/types/storage.js.map +1 -0
- package/dist/util/safe-slice.d.ts +23 -0
- package/dist/util/safe-slice.d.ts.map +1 -0
- package/dist/util/safe-slice.js +33 -0
- package/dist/util/safe-slice.js.map +1 -0
- package/package.json +23 -16
- package/dist/src/analysis/coverage-analyzer.d.ts.map +0 -1
- package/dist/src/analysis/coverage-analyzer.js.map +0 -1
- package/dist/src/analysis/failure-clusterer.d.ts.map +0 -1
- package/dist/src/analysis/failure-clusterer.js.map +0 -1
- package/dist/src/analysis/gap-analyzer.d.ts +0 -121
- package/dist/src/analysis/gap-analyzer.d.ts.map +0 -1
- package/dist/src/analysis/gap-analyzer.js +0 -471
- package/dist/src/analysis/gap-analyzer.js.map +0 -1
- package/dist/src/analysis/hedging-classifier.d.ts.map +0 -1
- package/dist/src/analysis/hedging-classifier.js.map +0 -1
- package/dist/src/analysis/report-diagnostics.d.ts +0 -34
- package/dist/src/analysis/report-diagnostics.d.ts.map +0 -1
- package/dist/src/analysis/report-diagnostics.js +0 -753
- package/dist/src/analysis/report-diagnostics.js.map +0 -1
- package/dist/src/analysis/sample-diagnostics.d.ts.map +0 -1
- package/dist/src/analysis/sample-diagnostics.js.map +0 -1
- package/dist/src/analysis/saturation.d.ts +0 -85
- package/dist/src/analysis/saturation.d.ts.map +0 -1
- package/dist/src/analysis/saturation.js +0 -174
- package/dist/src/analysis/saturation.js.map +0 -1
- package/dist/src/authoring/evolver.d.ts +0 -102
- package/dist/src/authoring/evolver.d.ts.map +0 -1
- package/dist/src/authoring/evolver.js +0 -681
- package/dist/src/authoring/evolver.js.map +0 -1
- package/dist/src/authoring/generator.d.ts +0 -38
- package/dist/src/authoring/generator.d.ts.map +0 -1
- package/dist/src/authoring/generator.js +0 -720
- package/dist/src/authoring/generator.js.map +0 -1
- package/dist/src/authoring/sample-fixer.d.ts.map +0 -1
- package/dist/src/authoring/sample-fixer.js.map +0 -1
- package/dist/src/cli/commands/doctor.d.ts +0 -26
- package/dist/src/cli/commands/doctor.d.ts.map +0 -1
- package/dist/src/cli/commands/doctor.js +0 -283
- package/dist/src/cli/commands/doctor.js.map +0 -1
- package/dist/src/cli/commands/eval/gold/compare.d.ts.map +0 -1
- package/dist/src/cli/commands/eval/gold/compare.js.map +0 -1
- package/dist/src/cli/commands/eval/gold/index.d.ts.map +0 -1
- package/dist/src/cli/commands/eval/gold/index.js.map +0 -1
- package/dist/src/cli/commands/eval/gold/init.d.ts.map +0 -1
- package/dist/src/cli/commands/eval/gold/init.js.map +0 -1
- package/dist/src/cli/commands/eval/gold/validate.d.ts.map +0 -1
- package/dist/src/cli/commands/eval/gold/validate.js.map +0 -1
- package/dist/src/cli/commands/eval/index.d.ts.map +0 -1
- package/dist/src/cli/commands/eval/index.js +0 -465
- package/dist/src/cli/commands/eval/index.js.map +0 -1
- package/dist/src/cli/commands/evolve.d.ts +0 -37
- package/dist/src/cli/commands/evolve.d.ts.map +0 -1
- package/dist/src/cli/commands/evolve.js +0 -276
- package/dist/src/cli/commands/evolve.js.map +0 -1
- package/dist/src/cli/commands/init.d.ts.map +0 -1
- package/dist/src/cli/commands/init.js.map +0 -1
- package/dist/src/cli/commands/observe/inbox.d.ts.map +0 -1
- package/dist/src/cli/commands/observe/inbox.js +0 -258
- package/dist/src/cli/commands/observe/inbox.js.map +0 -1
- package/dist/src/cli/commands/observe/index.d.ts.map +0 -1
- package/dist/src/cli/commands/observe/index.js +0 -118
- package/dist/src/cli/commands/observe/index.js.map +0 -1
- package/dist/src/cli/commands/observe/ingest.d.ts.map +0 -1
- package/dist/src/cli/commands/observe/ingest.js +0 -69
- package/dist/src/cli/commands/observe/ingest.js.map +0 -1
- package/dist/src/cli/commands/observe/show.d.ts.map +0 -1
- package/dist/src/cli/commands/observe/show.js.map +0 -1
- package/dist/src/cli/commands/sample.d.ts +0 -38
- package/dist/src/cli/commands/sample.d.ts.map +0 -1
- package/dist/src/cli/commands/sample.js +0 -488
- package/dist/src/cli/commands/sample.js.map +0 -1
- package/dist/src/cli/commands/skill-extract.d.ts +0 -20
- package/dist/src/cli/commands/skill-extract.d.ts.map +0 -1
- package/dist/src/cli/commands/skill-extract.js +0 -84
- package/dist/src/cli/commands/skill-extract.js.map +0 -1
- package/dist/src/cli/commands/studio.d.ts.map +0 -1
- package/dist/src/cli/commands/studio.js +0 -158
- package/dist/src/cli/commands/studio.js.map +0 -1
- package/dist/src/cli/index.d.ts.map +0 -1
- package/dist/src/cli/index.js.map +0 -1
- package/dist/src/cli/lib/cli-exit.d.ts.map +0 -1
- package/dist/src/cli/lib/cli-exit.js.map +0 -1
- package/dist/src/cli/lib/cmd-flags.d.ts +0 -236
- package/dist/src/cli/lib/cmd-flags.d.ts.map +0 -1
- package/dist/src/cli/lib/cmd-flags.js.map +0 -1
- package/dist/src/cli/lib/i18n-dict.d.ts +0 -54
- package/dist/src/cli/lib/i18n-dict.d.ts.map +0 -1
- package/dist/src/cli/lib/i18n-dict.js +0 -900
- package/dist/src/cli/lib/i18n-dict.js.map +0 -1
- package/dist/src/cli/lib/i18n.d.ts.map +0 -1
- package/dist/src/cli/lib/i18n.js.map +0 -1
- package/dist/src/cli/lib/parse-run-config.d.ts +0 -89
- package/dist/src/cli/lib/parse-run-config.d.ts.map +0 -1
- package/dist/src/cli/lib/parse-run-config.js +0 -252
- package/dist/src/cli/lib/parse-run-config.js.map +0 -1
- package/dist/src/cli/lib/progress.d.ts.map +0 -1
- package/dist/src/cli/lib/progress.js.map +0 -1
- package/dist/src/cli/lib/run-tally.d.ts.map +0 -1
- package/dist/src/cli/lib/run-tally.js.map +0 -1
- package/dist/src/cli/lib/shared.d.ts.map +0 -1
- package/dist/src/cli/lib/shared.js.map +0 -1
- package/dist/src/cli/lib/update-check.d.ts +0 -3
- package/dist/src/cli/lib/update-check.d.ts.map +0 -1
- package/dist/src/cli/lib/update-check.js +0 -37
- package/dist/src/cli/lib/update-check.js.map +0 -1
- package/dist/src/cli/oclif/base-command.d.ts.map +0 -1
- package/dist/src/cli/oclif/base-command.js.map +0 -1
- package/dist/src/cli/oclif/help.d.ts.map +0 -1
- package/dist/src/cli/oclif/help.js.map +0 -1
- package/dist/src/cli/oclif/i18n.d.ts.map +0 -1
- package/dist/src/cli/oclif/i18n.js.map +0 -1
- package/dist/src/cli/oclif/parsers.d.ts.map +0 -1
- package/dist/src/cli/oclif/parsers.js.map +0 -1
- package/dist/src/cli/oclif/projection.d.ts.map +0 -1
- package/dist/src/cli/oclif/projection.js.map +0 -1
- package/dist/src/cli/oclif/run.d.ts.map +0 -1
- package/dist/src/cli/oclif/run.js +0 -11
- package/dist/src/cli/oclif/run.js.map +0 -1
- package/dist/src/diagnosis/observe-mapper.d.ts.map +0 -1
- package/dist/src/diagnosis/observe-mapper.js.map +0 -1
- package/dist/src/diagnosis/observe-producer.d.ts.map +0 -1
- package/dist/src/diagnosis/observe-producer.js +0 -197
- package/dist/src/diagnosis/observe-producer.js.map +0 -1
- package/dist/src/diagnosis/studio-projection.d.ts +0 -14
- package/dist/src/diagnosis/studio-projection.d.ts.map +0 -1
- package/dist/src/diagnosis/studio-projection.js.map +0 -1
- package/dist/src/diagnosis/types.d.ts +0 -79
- package/dist/src/diagnosis/types.d.ts.map +0 -1
- package/dist/src/diagnosis/types.js +0 -20
- package/dist/src/diagnosis/types.js.map +0 -1
- package/dist/src/doctor/fixer.d.ts.map +0 -1
- package/dist/src/doctor/fixer.js.map +0 -1
- package/dist/src/doctor/health/builtin-dimensions.d.ts.map +0 -1
- package/dist/src/doctor/health/builtin-dimensions.js.map +0 -1
- package/dist/src/doctor/health/composer.d.ts.map +0 -1
- package/dist/src/doctor/health/composer.js +0 -296
- package/dist/src/doctor/health/composer.js.map +0 -1
- package/dist/src/doctor/health/dimension-registry.d.ts.map +0 -1
- package/dist/src/doctor/health/dimension-registry.js.map +0 -1
- package/dist/src/doctor/health/dimension-spec.d.ts +0 -47
- package/dist/src/doctor/health/dimension-spec.d.ts.map +0 -1
- package/dist/src/doctor/health/dimension-spec.js.map +0 -1
- package/dist/src/doctor/health/parser.d.ts.map +0 -1
- package/dist/src/doctor/health/parser.js.map +0 -1
- package/dist/src/doctor/health/prompt-builder.d.ts.map +0 -1
- package/dist/src/doctor/health/prompt-builder.js.map +0 -1
- package/dist/src/doctor/health/register.d.ts.map +0 -1
- package/dist/src/doctor/health/register.js.map +0 -1
- package/dist/src/doctor/html-renderer.d.ts +0 -20
- package/dist/src/doctor/html-renderer.d.ts.map +0 -1
- package/dist/src/doctor/html-renderer.js +0 -376
- package/dist/src/doctor/html-renderer.js.map +0 -1
- package/dist/src/doctor/index.d.ts.map +0 -1
- package/dist/src/doctor/index.js.map +0 -1
- package/dist/src/doctor/preflight.d.ts.map +0 -1
- package/dist/src/doctor/preflight.js.map +0 -1
- package/dist/src/doctor/renderer.d.ts +0 -17
- package/dist/src/doctor/renderer.d.ts.map +0 -1
- package/dist/src/doctor/renderer.js +0 -123
- package/dist/src/doctor/renderer.js.map +0 -1
- package/dist/src/doctor/rules.d.ts.map +0 -1
- package/dist/src/doctor/rules.js +0 -289
- package/dist/src/doctor/rules.js.map +0 -1
- package/dist/src/eval-core/bootstrap.d.ts +0 -72
- package/dist/src/eval-core/bootstrap.d.ts.map +0 -1
- package/dist/src/eval-core/bootstrap.js +0 -174
- package/dist/src/eval-core/bootstrap.js.map +0 -1
- package/dist/src/eval-core/cache.d.ts.map +0 -1
- package/dist/src/eval-core/cache.js.map +0 -1
- package/dist/src/eval-core/comparability.d.ts.map +0 -1
- package/dist/src/eval-core/comparability.js.map +0 -1
- package/dist/src/eval-core/dependency-checker.d.ts +0 -58
- package/dist/src/eval-core/dependency-checker.d.ts.map +0 -1
- package/dist/src/eval-core/dependency-checker.js.map +0 -1
- package/dist/src/eval-core/evaluation-execution.d.ts.map +0 -1
- package/dist/src/eval-core/evaluation-execution.js.map +0 -1
- package/dist/src/eval-core/evaluation-job.d.ts.map +0 -1
- package/dist/src/eval-core/evaluation-job.js.map +0 -1
- package/dist/src/eval-core/evaluation-reporting.d.ts.map +0 -1
- package/dist/src/eval-core/evaluation-reporting.js +0 -292
- package/dist/src/eval-core/evaluation-reporting.js.map +0 -1
- package/dist/src/eval-core/execution-strategy.d.ts.map +0 -1
- package/dist/src/eval-core/execution-strategy.js +0 -165
- package/dist/src/eval-core/execution-strategy.js.map +0 -1
- package/dist/src/eval-core/fact-checker.d.ts.map +0 -1
- package/dist/src/eval-core/fact-checker.js.map +0 -1
- package/dist/src/eval-core/layer-gates.d.ts.map +0 -1
- package/dist/src/eval-core/layer-gates.js.map +0 -1
- package/dist/src/eval-core/mocks-runtime.d.ts.map +0 -1
- package/dist/src/eval-core/mocks-runtime.js +0 -559
- package/dist/src/eval-core/mocks-runtime.js.map +0 -1
- package/dist/src/eval-core/schema.d.ts.map +0 -1
- package/dist/src/eval-core/schema.js.map +0 -1
- package/dist/src/eval-core/statistics.d.ts.map +0 -1
- package/dist/src/eval-core/statistics.js.map +0 -1
- package/dist/src/eval-core/task-planner.d.ts.map +0 -1
- package/dist/src/eval-core/task-planner.js.map +0 -1
- package/dist/src/eval-core/verdict.d.ts +0 -77
- package/dist/src/eval-core/verdict.d.ts.map +0 -1
- package/dist/src/eval-core/verdict.js +0 -322
- package/dist/src/eval-core/verdict.js.map +0 -1
- package/dist/src/eval-workflows/batch-evaluation-workflow.d.ts.map +0 -1
- package/dist/src/eval-workflows/batch-evaluation-workflow.js.map +0 -1
- package/dist/src/eval-workflows/evaluation-pipeline.d.ts +0 -109
- package/dist/src/eval-workflows/evaluation-pipeline.d.ts.map +0 -1
- package/dist/src/eval-workflows/evaluation-pipeline.js +0 -373
- package/dist/src/eval-workflows/evaluation-pipeline.js.map +0 -1
- package/dist/src/eval-workflows/evaluation-preparation.d.ts.map +0 -1
- package/dist/src/eval-workflows/evaluation-preparation.js +0 -77
- package/dist/src/eval-workflows/evaluation-preparation.js.map +0 -1
- package/dist/src/eval-workflows/run-evaluation.d.ts +0 -151
- package/dist/src/eval-workflows/run-evaluation.d.ts.map +0 -1
- package/dist/src/eval-workflows/run-evaluation.js +0 -528
- package/dist/src/eval-workflows/run-evaluation.js.map +0 -1
- package/dist/src/executors/anthropic-api.d.ts.map +0 -1
- package/dist/src/executors/anthropic-api.js.map +0 -1
- package/dist/src/executors/claude-cli.d.ts.map +0 -1
- package/dist/src/executors/claude-cli.js.map +0 -1
- package/dist/src/executors/claude-sdk-trace.d.ts.map +0 -1
- package/dist/src/executors/claude-sdk-trace.js.map +0 -1
- package/dist/src/executors/claude-sdk.d.ts.map +0 -1
- package/dist/src/executors/claude-sdk.js.map +0 -1
- package/dist/src/executors/codex-cli-trace.d.ts.map +0 -1
- package/dist/src/executors/codex-cli-trace.js.map +0 -1
- package/dist/src/executors/codex-cli.d.ts.map +0 -1
- package/dist/src/executors/codex-cli.js.map +0 -1
- package/dist/src/executors/codex-sdk.d.ts.map +0 -1
- package/dist/src/executors/codex-sdk.js.map +0 -1
- package/dist/src/executors/gemini.d.ts.map +0 -1
- package/dist/src/executors/gemini.js.map +0 -1
- package/dist/src/executors/index.d.ts.map +0 -1
- package/dist/src/executors/index.js.map +0 -1
- package/dist/src/executors/openai-api.d.ts.map +0 -1
- package/dist/src/executors/openai-api.js.map +0 -1
- package/dist/src/executors/runtime-fingerprint.d.ts.map +0 -1
- package/dist/src/executors/runtime-fingerprint.js.map +0 -1
- package/dist/src/executors/script.d.ts.map +0 -1
- package/dist/src/executors/script.js.map +0 -1
- package/dist/src/executors/shared.d.ts +0 -194
- package/dist/src/executors/shared.d.ts.map +0 -1
- package/dist/src/executors/shared.js +0 -256
- package/dist/src/executors/shared.js.map +0 -1
- package/dist/src/grading/assertions.d.ts.map +0 -1
- package/dist/src/grading/assertions.js.map +0 -1
- package/dist/src/grading/debias-validate.d.ts.map +0 -1
- package/dist/src/grading/debias-validate.js.map +0 -1
- package/dist/src/grading/diagnostic.d.ts.map +0 -1
- package/dist/src/grading/diagnostic.js.map +0 -1
- package/dist/src/grading/gold-cli.d.ts.map +0 -1
- package/dist/src/grading/gold-cli.js.map +0 -1
- package/dist/src/grading/gold-dataset.d.ts.map +0 -1
- package/dist/src/grading/gold-dataset.js.map +0 -1
- package/dist/src/grading/human-gold.d.ts.map +0 -1
- package/dist/src/grading/human-gold.js.map +0 -1
- package/dist/src/grading/index.d.ts.map +0 -1
- package/dist/src/grading/index.js.map +0 -1
- package/dist/src/grading/judge.d.ts.map +0 -1
- package/dist/src/grading/judge.js.map +0 -1
- package/dist/src/grading/layered-scores.d.ts.map +0 -1
- package/dist/src/grading/layered-scores.js.map +0 -1
- package/dist/src/inputs/eval-config.d.ts.map +0 -1
- package/dist/src/inputs/eval-config.js +0 -251
- package/dist/src/inputs/eval-config.js.map +0 -1
- package/dist/src/inputs/load-samples.d.ts.map +0 -1
- package/dist/src/inputs/load-samples.js.map +0 -1
- package/dist/src/inputs/mcp-resolver.d.ts.map +0 -1
- package/dist/src/inputs/mcp-resolver.js.map +0 -1
- package/dist/src/inputs/skill-loader.d.ts +0 -27
- package/dist/src/inputs/skill-loader.d.ts.map +0 -1
- package/dist/src/inputs/skill-loader.js +0 -253
- package/dist/src/inputs/skill-loader.js.map +0 -1
- package/dist/src/inputs/url-fetcher.d.ts.map +0 -1
- package/dist/src/inputs/url-fetcher.js.map +0 -1
- package/dist/src/observability/experience.d.ts +0 -441
- package/dist/src/observability/experience.d.ts.map +0 -1
- package/dist/src/observability/experience.js +0 -2400
- package/dist/src/observability/experience.js.map +0 -1
- package/dist/src/observability/inbox-view-model.d.ts +0 -30
- package/dist/src/observability/inbox-view-model.d.ts.map +0 -1
- package/dist/src/observability/inbox-view-model.js +0 -144
- package/dist/src/observability/inbox-view-model.js.map +0 -1
- package/dist/src/observability/inbox.d.ts +0 -127
- package/dist/src/observability/inbox.d.ts.map +0 -1
- package/dist/src/observability/inbox.js +0 -755
- package/dist/src/observability/inbox.js.map +0 -1
- package/dist/src/observability/problem-patterns.d.ts +0 -52
- package/dist/src/observability/problem-patterns.d.ts.map +0 -1
- package/dist/src/observability/problem-patterns.js +0 -205
- package/dist/src/observability/problem-patterns.js.map +0 -1
- package/dist/src/observability/resolved-review.d.ts +0 -25
- package/dist/src/observability/resolved-review.d.ts.map +0 -1
- package/dist/src/observability/resolved-review.js +0 -231
- package/dist/src/observability/resolved-review.js.map +0 -1
- package/dist/src/observability/review-state.d.ts +0 -61
- package/dist/src/observability/review-state.d.ts.map +0 -1
- package/dist/src/observability/review-state.js.map +0 -1
- package/dist/src/observability/skill-chain-advisories.d.ts +0 -25
- package/dist/src/observability/skill-chain-advisories.d.ts.map +0 -1
- package/dist/src/observability/skill-chain-advisories.js.map +0 -1
- package/dist/src/observability/skill-chain.d.ts +0 -62
- package/dist/src/observability/skill-chain.d.ts.map +0 -1
- package/dist/src/observability/skill-chain.js +0 -270
- package/dist/src/observability/skill-chain.js.map +0 -1
- package/dist/src/observability/skill-health-analyzer.d.ts +0 -83
- package/dist/src/observability/skill-health-analyzer.d.ts.map +0 -1
- package/dist/src/observability/skill-health-analyzer.js +0 -238
- package/dist/src/observability/skill-health-analyzer.js.map +0 -1
- package/dist/src/observability/soft-standards.d.ts +0 -130
- package/dist/src/observability/soft-standards.d.ts.map +0 -1
- package/dist/src/observability/soft-standards.js +0 -426
- package/dist/src/observability/soft-standards.js.map +0 -1
- package/dist/src/observability/text-signals.d.ts +0 -14
- package/dist/src/observability/text-signals.d.ts.map +0 -1
- package/dist/src/observability/text-signals.js +0 -106
- package/dist/src/observability/text-signals.js.map +0 -1
- package/dist/src/observability/trace-adapter.d.ts.map +0 -1
- package/dist/src/observability/trace-adapter.js.map +0 -1
- package/dist/src/observability/trace-attribution.d.ts +0 -56
- package/dist/src/observability/trace-attribution.d.ts.map +0 -1
- package/dist/src/observability/trace-attribution.js +0 -200
- package/dist/src/observability/trace-attribution.js.map +0 -1
- package/dist/src/observability/trace-segmenter.d.ts +0 -52
- package/dist/src/observability/trace-segmenter.d.ts.map +0 -1
- package/dist/src/observability/trace-segmenter.js +0 -322
- package/dist/src/observability/trace-segmenter.js.map +0 -1
- package/dist/src/observability/trace-source.d.ts +0 -99
- package/dist/src/observability/trace-source.d.ts.map +0 -1
- package/dist/src/observability/trace-source.js +0 -502
- package/dist/src/observability/trace-source.js.map +0 -1
- package/dist/src/renderer/html-renderer.d.ts.map +0 -1
- package/dist/src/renderer/html-renderer.js.map +0 -1
- package/dist/src/renderer/layout.d.ts.map +0 -1
- package/dist/src/renderer/layout.js +0 -774
- package/dist/src/renderer/layout.js.map +0 -1
- package/dist/src/renderer/observation-inbox-renderer.d.ts +0 -4
- package/dist/src/renderer/observation-inbox-renderer.d.ts.map +0 -1
- package/dist/src/renderer/observation-inbox-renderer.js +0 -10366
- package/dist/src/renderer/observation-inbox-renderer.js.map +0 -1
- package/dist/src/renderer/skill-detail-renderer.d.ts +0 -15
- package/dist/src/renderer/skill-detail-renderer.d.ts.map +0 -1
- package/dist/src/renderer/skill-detail-renderer.js +0 -1244
- package/dist/src/renderer/skill-detail-renderer.js.map +0 -1
- package/dist/src/renderer/skill-health-renderer.d.ts.map +0 -1
- package/dist/src/renderer/skill-health-renderer.js +0 -253
- package/dist/src/renderer/skill-health-renderer.js.map +0 -1
- package/dist/src/renderer/skill-list-renderer.d.ts +0 -4
- package/dist/src/renderer/skill-list-renderer.d.ts.map +0 -1
- package/dist/src/renderer/skill-list-renderer.js +0 -334
- package/dist/src/renderer/skill-list-renderer.js.map +0 -1
- package/dist/src/renderer/summary.d.ts +0 -68
- package/dist/src/renderer/summary.d.ts.map +0 -1
- package/dist/src/renderer/summary.js +0 -1896
- package/dist/src/renderer/summary.js.map +0 -1
- package/dist/src/renderer/table.d.ts.map +0 -1
- package/dist/src/renderer/table.js.map +0 -1
- package/dist/src/renderer/test-view.d.ts.map +0 -1
- package/dist/src/renderer/test-view.js.map +0 -1
- package/dist/src/renderer/trends.d.ts.map +0 -1
- package/dist/src/renderer/trends.js.map +0 -1
- package/dist/src/server/job-store.d.ts.map +0 -1
- package/dist/src/server/job-store.js.map +0 -1
- package/dist/src/server/report-server.d.ts.map +0 -1
- package/dist/src/server/report-server.js +0 -894
- package/dist/src/server/report-server.js.map +0 -1
- package/dist/src/server/report-store.d.ts.map +0 -1
- package/dist/src/server/report-store.js.map +0 -1
- package/dist/src/server/skill-index.d.ts +0 -81
- package/dist/src/server/skill-index.d.ts.map +0 -1
- package/dist/src/server/skill-index.js +0 -377
- package/dist/src/server/skill-index.js.map +0 -1
- package/dist/src/server/skill-insights.d.ts +0 -101
- package/dist/src/server/skill-insights.d.ts.map +0 -1
- package/dist/src/server/skill-insights.js +0 -788
- package/dist/src/server/skill-insights.js.map +0 -1
- package/dist/src/shared/hard-rules.d.ts.map +0 -1
- package/dist/src/shared/hard-rules.js.map +0 -1
- package/dist/src/shared/llm-prompts/index.d.ts +0 -14
- package/dist/src/shared/llm-prompts/index.d.ts.map +0 -1
- package/dist/src/shared/llm-prompts/index.js +0 -35
- package/dist/src/shared/llm-prompts/index.js.map +0 -1
- package/dist/src/shared/llm-prompts/skill-health.d.ts.map +0 -1
- package/dist/src/shared/llm-prompts/skill-health.js.map +0 -1
- package/dist/src/shared/time.d.ts.map +0 -1
- package/dist/src/shared/time.js.map +0 -1
- package/dist/src/shared/tool-search.d.ts.map +0 -1
- package/dist/src/shared/tool-search.js.map +0 -1
- package/dist/src/types/doctor.d.ts +0 -157
- package/dist/src/types/doctor.d.ts.map +0 -1
- package/dist/src/types/doctor.js.map +0 -1
- package/dist/src/types/eval.d.ts +0 -377
- package/dist/src/types/eval.d.ts.map +0 -1
- package/dist/src/types/eval.js.map +0 -1
- package/dist/src/types/executor.d.ts.map +0 -1
- package/dist/src/types/executor.js.map +0 -1
- package/dist/src/types/index.d.ts +0 -8
- package/dist/src/types/index.d.ts.map +0 -1
- package/dist/src/types/index.js +0 -8
- package/dist/src/types/index.js.map +0 -1
- package/dist/src/types/judge.d.ts.map +0 -1
- package/dist/src/types/judge.js.map +0 -1
- package/dist/src/types/report.d.ts +0 -557
- package/dist/src/types/report.d.ts.map +0 -1
- package/dist/src/types/report.js.map +0 -1
- package/dist/src/types/shared.d.ts.map +0 -1
- package/dist/src/types/shared.js.map +0 -1
- package/dist/src/types/storage.d.ts.map +0 -1
- package/dist/src/types/storage.js.map +0 -1
- package/dist/src/util/safe-slice.d.ts +0 -23
- package/dist/src/util/safe-slice.d.ts.map +0 -1
- package/dist/src/util/safe-slice.js +0 -33
- package/dist/src/util/safe-slice.js.map +0 -1
- package/docs/prompts/llm-enhanced-review.prompt.md +0 -111
- /package/dist/{src/analysis → analysis}/coverage-analyzer.d.ts +0 -0
- /package/dist/{src/analysis → analysis}/coverage-analyzer.js +0 -0
- /package/dist/{src/analysis → analysis}/failure-clusterer.d.ts +0 -0
- /package/dist/{src/analysis → analysis}/failure-clusterer.js +0 -0
- /package/dist/{src/analysis → analysis}/hedging-classifier.d.ts +0 -0
- /package/dist/{src/analysis → analysis}/hedging-classifier.js +0 -0
- /package/dist/{src/analysis → analysis}/sample-diagnostics.d.ts +0 -0
- /package/dist/{src/analysis → analysis}/sample-diagnostics.js +0 -0
- /package/dist/{src/authoring → authoring}/sample-fixer.d.ts +0 -0
- /package/dist/{src/authoring → authoring}/sample-fixer.js +0 -0
- /package/dist/{src/cli → cli}/commands/eval/gold/compare.d.ts +0 -0
- /package/dist/{src/cli → cli}/commands/eval/gold/compare.js +0 -0
- /package/dist/{src/cli → cli}/commands/eval/gold/index.d.ts +0 -0
- /package/dist/{src/cli → cli}/commands/eval/gold/index.js +0 -0
- /package/dist/{src/cli → cli}/commands/eval/gold/init.d.ts +0 -0
- /package/dist/{src/cli → cli}/commands/eval/gold/init.js +0 -0
- /package/dist/{src/cli → cli}/commands/eval/gold/validate.d.ts +0 -0
- /package/dist/{src/cli → cli}/commands/eval/gold/validate.js +0 -0
- /package/dist/{src/cli → cli}/commands/eval/index.d.ts +0 -0
- /package/dist/{src/cli → cli}/commands/init.d.ts +0 -0
- /package/dist/{src/cli → cli}/commands/init.js +0 -0
- /package/dist/{src/cli → cli}/commands/observe/inbox.d.ts +0 -0
- /package/dist/{src/cli → cli}/commands/observe/index.d.ts +0 -0
- /package/dist/{src/cli → cli}/commands/observe/ingest.d.ts +0 -0
- /package/dist/{src/cli → cli}/commands/observe/show.d.ts +0 -0
- /package/dist/{src/cli → cli}/commands/observe/show.js +0 -0
- /package/dist/{src/cli → cli}/commands/studio.d.ts +0 -0
- /package/dist/{src/cli → cli}/index.d.ts +0 -0
- /package/dist/{src/cli → cli}/index.js +0 -0
- /package/dist/{src/cli → cli}/lib/cli-exit.d.ts +0 -0
- /package/dist/{src/cli → cli}/lib/cli-exit.js +0 -0
- /package/dist/{src/cli → cli}/lib/cmd-flags.js +0 -0
- /package/dist/{src/cli → cli}/lib/i18n.d.ts +0 -0
- /package/dist/{src/cli → cli}/lib/i18n.js +0 -0
- /package/dist/{src/cli → cli}/lib/progress.d.ts +0 -0
- /package/dist/{src/cli → cli}/lib/progress.js +0 -0
- /package/dist/{src/cli → cli}/lib/run-tally.d.ts +0 -0
- /package/dist/{src/cli → cli}/lib/run-tally.js +0 -0
- /package/dist/{src/cli → cli}/lib/shared.d.ts +0 -0
- /package/dist/{src/cli → cli}/lib/shared.js +0 -0
- /package/dist/{src/cli → cli}/oclif/base-command.d.ts +0 -0
- /package/dist/{src/cli → cli}/oclif/base-command.js +0 -0
- /package/dist/{src/cli → cli}/oclif/help.d.ts +0 -0
- /package/dist/{src/cli → cli}/oclif/help.js +0 -0
- /package/dist/{src/cli → cli}/oclif/i18n.d.ts +0 -0
- /package/dist/{src/cli → cli}/oclif/i18n.js +0 -0
- /package/dist/{src/cli → cli}/oclif/parsers.d.ts +0 -0
- /package/dist/{src/cli → cli}/oclif/parsers.js +0 -0
- /package/dist/{src/cli → cli}/oclif/projection.d.ts +0 -0
- /package/dist/{src/cli → cli}/oclif/projection.js +0 -0
- /package/dist/{src/cli → cli}/oclif/run.d.ts +0 -0
- /package/dist/{src/diagnosis → diagnosis}/observe-mapper.d.ts +0 -0
- /package/dist/{src/diagnosis → diagnosis}/observe-mapper.js +0 -0
- /package/dist/{src/diagnosis → diagnosis}/observe-producer.d.ts +0 -0
- /package/dist/{src/diagnosis → diagnosis}/studio-projection.js +0 -0
- /package/dist/{src/doctor → doctor}/fixer.d.ts +0 -0
- /package/dist/{src/doctor → doctor}/fixer.js +0 -0
- /package/dist/{src/doctor → doctor}/health/builtin-dimensions.d.ts +0 -0
- /package/dist/{src/doctor → doctor}/health/builtin-dimensions.js +0 -0
- /package/dist/{src/doctor → doctor}/health/composer.d.ts +0 -0
- /package/dist/{src/doctor → doctor}/health/dimension-registry.d.ts +0 -0
- /package/dist/{src/doctor → doctor}/health/dimension-registry.js +0 -0
- /package/dist/{src/doctor → doctor}/health/dimension-spec.js +0 -0
- /package/dist/{src/doctor → doctor}/health/parser.d.ts +0 -0
- /package/dist/{src/doctor → doctor}/health/parser.js +0 -0
- /package/dist/{src/doctor → doctor}/health/prompt-builder.d.ts +0 -0
- /package/dist/{src/doctor → doctor}/health/prompt-builder.js +0 -0
- /package/dist/{src/doctor → doctor}/health/register.d.ts +0 -0
- /package/dist/{src/doctor → doctor}/health/register.js +0 -0
- /package/dist/{src/doctor → doctor}/index.d.ts +0 -0
- /package/dist/{src/doctor → doctor}/index.js +0 -0
- /package/dist/{src/doctor → doctor}/preflight.d.ts +0 -0
- /package/dist/{src/doctor → doctor}/preflight.js +0 -0
- /package/dist/{src/doctor → doctor}/rules.d.ts +0 -0
- /package/dist/{src/eval-core → eval-core}/cache.d.ts +0 -0
- /package/dist/{src/eval-core → eval-core}/cache.js +0 -0
- /package/dist/{src/eval-core → eval-core}/comparability.d.ts +0 -0
- /package/dist/{src/eval-core → eval-core}/comparability.js +0 -0
- /package/dist/{src/eval-core → eval-core}/dependency-checker.js +0 -0
- /package/dist/{src/eval-core → eval-core}/evaluation-execution.d.ts +0 -0
- /package/dist/{src/eval-core → eval-core}/evaluation-execution.js +0 -0
- /package/dist/{src/eval-core → eval-core}/evaluation-job.d.ts +0 -0
- /package/dist/{src/eval-core → eval-core}/evaluation-job.js +0 -0
- /package/dist/{src/eval-core → eval-core}/evaluation-reporting.d.ts +0 -0
- /package/dist/{src/eval-core → eval-core}/execution-strategy.d.ts +0 -0
- /package/dist/{src/eval-core → eval-core}/fact-checker.d.ts +0 -0
- /package/dist/{src/eval-core → eval-core}/fact-checker.js +0 -0
- /package/dist/{src/eval-core → eval-core}/layer-gates.d.ts +0 -0
- /package/dist/{src/eval-core → eval-core}/layer-gates.js +0 -0
- /package/dist/{src/eval-core → eval-core}/mock-hook.cjs +0 -0
- /package/dist/{src/eval-core → eval-core}/mocks-runtime.d.ts +0 -0
- /package/dist/{src/eval-core → eval-core}/schema.d.ts +0 -0
- /package/dist/{src/eval-core → eval-core}/schema.js +0 -0
- /package/dist/{src/eval-core → eval-core}/statistics.d.ts +0 -0
- /package/dist/{src/eval-core → eval-core}/statistics.js +0 -0
- /package/dist/{src/eval-core → eval-core}/task-planner.d.ts +0 -0
- /package/dist/{src/eval-core → eval-core}/task-planner.js +0 -0
- /package/dist/{src/eval-workflows → eval-workflows}/batch-evaluation-workflow.d.ts +0 -0
- /package/dist/{src/eval-workflows → eval-workflows}/batch-evaluation-workflow.js +0 -0
- /package/dist/{src/eval-workflows → eval-workflows}/evaluation-preparation.d.ts +0 -0
- /package/dist/{src/executors → executors}/anthropic-api.d.ts +0 -0
- /package/dist/{src/executors → executors}/anthropic-api.js +0 -0
- /package/dist/{src/executors → executors}/claude-cli.d.ts +0 -0
- /package/dist/{src/executors → executors}/claude-cli.js +0 -0
- /package/dist/{src/executors → executors}/claude-sdk-trace.d.ts +0 -0
- /package/dist/{src/executors → executors}/claude-sdk-trace.js +0 -0
- /package/dist/{src/executors → executors}/claude-sdk.d.ts +0 -0
- /package/dist/{src/executors → executors}/claude-sdk.js +0 -0
- /package/dist/{src/executors → executors}/codex-cli-trace.d.ts +0 -0
- /package/dist/{src/executors → executors}/codex-cli-trace.js +0 -0
- /package/dist/{src/executors → executors}/codex-cli.d.ts +0 -0
- /package/dist/{src/executors → executors}/codex-cli.js +0 -0
- /package/dist/{src/executors → executors}/codex-sdk.d.ts +0 -0
- /package/dist/{src/executors → executors}/codex-sdk.js +0 -0
- /package/dist/{src/executors → executors}/gemini.d.ts +0 -0
- /package/dist/{src/executors → executors}/gemini.js +0 -0
- /package/dist/{src/executors → executors}/index.d.ts +0 -0
- /package/dist/{src/executors → executors}/index.js +0 -0
- /package/dist/{src/executors → executors}/openai-api.d.ts +0 -0
- /package/dist/{src/executors → executors}/openai-api.js +0 -0
- /package/dist/{src/executors → executors}/runtime-fingerprint.d.ts +0 -0
- /package/dist/{src/executors → executors}/runtime-fingerprint.js +0 -0
- /package/dist/{src/executors → executors}/script.d.ts +0 -0
- /package/dist/{src/executors → executors}/script.js +0 -0
- /package/dist/{src/grading → grading}/assertions.d.ts +0 -0
- /package/dist/{src/grading → grading}/assertions.js +0 -0
- /package/dist/{src/grading → grading}/debias-validate.d.ts +0 -0
- /package/dist/{src/grading → grading}/debias-validate.js +0 -0
- /package/dist/{src/grading → grading}/diagnostic.d.ts +0 -0
- /package/dist/{src/grading → grading}/diagnostic.js +0 -0
- /package/dist/{src/grading → grading}/gold-cli.d.ts +0 -0
- /package/dist/{src/grading → grading}/gold-cli.js +0 -0
- /package/dist/{src/grading → grading}/gold-dataset.d.ts +0 -0
- /package/dist/{src/grading → grading}/gold-dataset.js +0 -0
- /package/dist/{src/grading → grading}/human-gold.d.ts +0 -0
- /package/dist/{src/grading → grading}/human-gold.js +0 -0
- /package/dist/{src/grading → grading}/index.d.ts +0 -0
- /package/dist/{src/grading → grading}/index.js +0 -0
- /package/dist/{src/grading → grading}/judge.d.ts +0 -0
- /package/dist/{src/grading → grading}/judge.js +0 -0
- /package/dist/{src/grading → grading}/layered-scores.d.ts +0 -0
- /package/dist/{src/grading → grading}/layered-scores.js +0 -0
- /package/dist/{src/inputs → inputs}/eval-config.d.ts +0 -0
- /package/dist/{src/inputs → inputs}/load-samples.d.ts +0 -0
- /package/dist/{src/inputs → inputs}/load-samples.js +0 -0
- /package/dist/{src/inputs → inputs}/mcp-resolver.d.ts +0 -0
- /package/dist/{src/inputs → inputs}/mcp-resolver.js +0 -0
- /package/dist/{src/inputs → inputs}/url-fetcher.d.ts +0 -0
- /package/dist/{src/inputs → inputs}/url-fetcher.js +0 -0
- /package/dist/{src/observability → observability}/review-state.js +0 -0
- /package/dist/{src/observability → observability}/skill-chain-advisories.js +0 -0
- /package/dist/{src/observability → observability}/trace-adapter.d.ts +0 -0
- /package/dist/{src/observability → observability}/trace-adapter.js +0 -0
- /package/dist/{src/renderer → renderer}/html-renderer.d.ts +0 -0
- /package/dist/{src/renderer → renderer}/html-renderer.js +0 -0
- /package/dist/{src/renderer → renderer}/layout.d.ts +0 -0
- /package/dist/{src/renderer → renderer}/skill-health-renderer.d.ts +0 -0
- /package/dist/{src/renderer → renderer}/table.d.ts +0 -0
- /package/dist/{src/renderer → renderer}/table.js +0 -0
- /package/dist/{src/renderer → renderer}/test-view.d.ts +0 -0
- /package/dist/{src/renderer → renderer}/test-view.js +0 -0
- /package/dist/{src/renderer → renderer}/trends.d.ts +0 -0
- /package/dist/{src/renderer → renderer}/trends.js +0 -0
- /package/dist/{src/server → server}/job-store.d.ts +0 -0
- /package/dist/{src/server → server}/job-store.js +0 -0
- /package/dist/{src/server → server}/report-server.d.ts +0 -0
- /package/dist/{src/server → server}/report-store.d.ts +0 -0
- /package/dist/{src/server → server}/report-store.js +0 -0
- /package/dist/{src/shared → shared}/hard-rules.d.ts +0 -0
- /package/dist/{src/shared → shared}/hard-rules.js +0 -0
- /package/dist/{src/shared → shared}/llm-prompts/skill-health.d.ts +0 -0
- /package/dist/{src/shared → shared}/llm-prompts/skill-health.js +0 -0
- /package/dist/{src/shared → shared}/time.d.ts +0 -0
- /package/dist/{src/shared → shared}/time.js +0 -0
- /package/dist/{src/shared → shared}/tool-search.d.ts +0 -0
- /package/dist/{src/shared → shared}/tool-search.js +0 -0
- /package/dist/{src/types → types}/doctor.js +0 -0
- /package/dist/{src/types → types}/eval.js +0 -0
- /package/dist/{src/types → types}/executor.d.ts +0 -0
- /package/dist/{src/types → types}/executor.js +0 -0
- /package/dist/{src/types → types}/judge.d.ts +0 -0
- /package/dist/{src/types → types}/judge.js +0 -0
- /package/dist/{src/types → types}/report.js +0 -0
- /package/dist/{src/types → types}/shared.d.ts +0 -0
- /package/dist/{src/types → types}/shared.js +0 -0
- /package/dist/{src/types → types}/storage.d.ts +0 -0
- /package/dist/{src/types → types}/storage.js +0 -0
|
@@ -0,0 +1,776 @@
|
|
|
1
|
+
export function e(text) {
|
|
2
|
+
return String(text)
|
|
3
|
+
.replaceAll('&', '&')
|
|
4
|
+
.replaceAll('<', '<')
|
|
5
|
+
.replaceAll('>', '>')
|
|
6
|
+
.replaceAll('"', '"')
|
|
7
|
+
.replaceAll("'", ''');
|
|
8
|
+
}
|
|
9
|
+
export function fmtNum(n, digits = 0) {
|
|
10
|
+
return Number(n || 0).toLocaleString('en-US', { maximumFractionDigits: digits });
|
|
11
|
+
}
|
|
12
|
+
export function fmtDuration(ms) {
|
|
13
|
+
const v = Number(ms || 0);
|
|
14
|
+
if (v < 1000)
|
|
15
|
+
return `${v}ms`;
|
|
16
|
+
if (v < 60000)
|
|
17
|
+
return `${(v / 1000).toFixed(1)}s`;
|
|
18
|
+
const min = Math.floor(v / 60000);
|
|
19
|
+
const sec = Math.round((v % 60000) / 1000);
|
|
20
|
+
return sec > 0 ? `${min}m${sec}s` : `${min}m`;
|
|
21
|
+
}
|
|
22
|
+
export function fmtCost(usd, reported = true) {
|
|
23
|
+
// reported=false 时 executor 不报 cost(如 codex CLI),`usd` 是占位 0,
|
|
24
|
+
// 显示 "—" 跟"真的花了 $0"区分开。callsite 传 reported 时通常来自
|
|
25
|
+
// `VariantSummary.execCostReported !== false` 或 `VariantResult.costReportedByExecutor !== false`。
|
|
26
|
+
if (!reported)
|
|
27
|
+
return '—';
|
|
28
|
+
return `$${Number(usd || 0).toFixed(4)}`;
|
|
29
|
+
}
|
|
30
|
+
export function fmtKnownCost(usd, fullyReported = true) {
|
|
31
|
+
const value = Number(usd || 0);
|
|
32
|
+
if (fullyReported)
|
|
33
|
+
return fmtCost(value);
|
|
34
|
+
return value > 0 ? `≥${fmtCost(value)}` : '—';
|
|
35
|
+
}
|
|
36
|
+
export function fmtLocalTime(isoStr) {
|
|
37
|
+
const d = new Date(isoStr);
|
|
38
|
+
const pad = (n) => String(n).padStart(2, '0');
|
|
39
|
+
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;
|
|
40
|
+
}
|
|
41
|
+
export function delta(a, b, lowerIsBetter = false) {
|
|
42
|
+
if (!a || !b || a === 0)
|
|
43
|
+
return '';
|
|
44
|
+
const pct = ((b - a) / a * 100).toFixed(1);
|
|
45
|
+
const better = lowerIsBetter ? b < a : b > a;
|
|
46
|
+
const color = better ? 'var(--green)' : b === a ? 'var(--text-muted)' : 'var(--red)';
|
|
47
|
+
const arrow = b > a ? '↑' : b < a ? '↓' : '→';
|
|
48
|
+
return `<span style="color:${color};font-size:11px;margin-left:4px">${arrow}${Math.abs(Number(pct))}%</span>`;
|
|
49
|
+
}
|
|
50
|
+
export const COLORS = ['var(--chart-1)', 'var(--chart-2)', 'var(--chart-3)', 'var(--chart-4)', 'var(--chart-5)', 'var(--chart-6)'];
|
|
51
|
+
export const I18N = {
|
|
52
|
+
zh: {
|
|
53
|
+
title: '评测报告',
|
|
54
|
+
subtitle: '知识载体评测',
|
|
55
|
+
noRuns: '暂无评测记录。运行 <code>omk eval --control v1 --treatment v2</code> 开始。',
|
|
56
|
+
runId: '报告名称', variants: '实验分组', model: '任务执行模型', samples: '评测用例数',
|
|
57
|
+
score: '分数', cost: '执行成本', time: '时间',
|
|
58
|
+
deleteBtnText: '删除', deleteConfirm: '确定删除报告', deleteFail: '删除失败',
|
|
59
|
+
reportTitle: '评测报告', backToList: '← 返回列表',
|
|
60
|
+
judge: '评委', executor: '执行器', blindLabel: '盲测', revealBlind: '显示变体对应关系',
|
|
61
|
+
dimFact: '📋 事实', dimFactDesc: '输出的事实声明是否正确(规则可验证:关键词匹配、格式校验等断言)',
|
|
62
|
+
dimBehavior: '🛠️ 行为', dimBehaviorDesc: '执行过程是否合规(规则可验证:工具调用路径、轮次限制、成本约束等断言)',
|
|
63
|
+
dimJudge: '💬 LLM 评价', dimJudgeDesc: '请一个 LLM 当评委,读任务执行模型的输出内容,按预先写好的评分规则(英文 rubric)打 1-5 分。主观但能抓到规则断言判不了的"整体好不好"',
|
|
64
|
+
dimQuality: '📊 质量', dimQualityDesc: '事实 + 行为 + LLM 评价的等权平均(1-5 分)。UI 已拆出三层平铺展示,composite 字段仅保留在 JSON 数据层',
|
|
65
|
+
dimCost: '💰 执行成本', dimCostDesc: '基于 Token 消耗量和模型定价计算的任务执行模型调用费用',
|
|
66
|
+
dimEfficiency: '⚡ 效率', dimEfficiencyDesc: 'Skill 从发送请求到模型返回完整响应的端到端耗时',
|
|
67
|
+
dimStability: '🛡️ 稳定性', dimStabilityDesc: '多次运行(--repeat ≥ 2)分数一致性的 CV 变异系数,单轮显示"—"',
|
|
68
|
+
compositeScore: '综合分数', scoreRange: '分数范围',
|
|
69
|
+
assertions: '断言', assertionsDesc: '规则检查得分:通过的断言权重占比映射到 1-5 分',
|
|
70
|
+
llmJudge: 'LLM 评委', llmJudgeDesc: '由评委模型按预先写好的评分规则(英文叫 rubric)打出的 1-5 分',
|
|
71
|
+
judgeStddev: '评委波动', judgeStddevDesc: '同一份输出让评委评 N 次 (--judge-repeat) 得到 N 个分数的标准差。值低 = 评委对自己很坚定;值高 = 这个分本身就是噪声',
|
|
72
|
+
judgeFailures: '评委失败', judgeFailuresDesc: 'N 次评委评分中返回 score=0(解析失败 / 调用错误)的次数。stddev=0 + failureCount>0 不是"完美一致",是"大部分炸了"',
|
|
73
|
+
judgeReasoning: '评委推理', judgeReasoningExpand: '展开',
|
|
74
|
+
ensembleHeader: '多评委评分对比', ensembleDesc: '不同评委模型对同一份输出的独立评分。用于反驳"同模态偏差"',
|
|
75
|
+
agreementHeader: '跨用例评委一致性', agreementDesc: '在所有评测用例上算的多评委一致性',
|
|
76
|
+
pearsonLabel: '皮尔逊系数 (Pearson)', pearsonDesc: '皮尔逊相关系数:1=完全同向排序,0=无关,-1=完全反向',
|
|
77
|
+
madLabel: '平均绝对差 (MAD)', madDesc: '平均绝对差。1-5 制下 < 0.5 紧密一致, > 1.5 大分歧',
|
|
78
|
+
judgeModelsLabel: '评委模型',
|
|
79
|
+
judgeRepeatLabel: '每条用例评委评价次数',
|
|
80
|
+
judgePromptHashLabel: '评委提示词指纹', judgePromptHashDesc: '评委提示词模板的 SHA256 前 12 位。两份报告 hash 相同才能严格比分数',
|
|
81
|
+
sampleHashCount: '评测用例指纹', sampleHashCountDesc: '已记录内容指纹的评测用例数 / 全部评测用例数。每条评测用例算 SHA256 前 12 位,用于跨 run 识别"测的是不是同一件事"。两份报告对同一 sample_id hash 一致才能严格比分',
|
|
82
|
+
evalFrameworkLabel: '统计框架', evalFrameworkBootstrap: 'bootstrap CI', evalFrameworkBoth: 't-test + bootstrap', evalFrameworkTTest: 't-test',
|
|
83
|
+
evalFrameworkDesc: '分数置信区间用什么算法。bootstrap 不假设分布,适合 LLM 1-5 序数评分;t-test 假设正态,小样本下不稳。"both" = 报告同时含两种,renderer 优先 bootstrap',
|
|
84
|
+
bootstrapDiffSignificant: '✓ 显著差异', bootstrapDiffNotSignificant: '✗ 无显著差异', bootstrapDiffLabel: 'Δ (treatment - control)',
|
|
85
|
+
totalCost: '已上报总成本', inputTokens: '输入', outputTokens: '输出',
|
|
86
|
+
totalTokens: '总计', tokPerReq: 'tokens/次', avgLatency: '平均延迟',
|
|
87
|
+
successRate: '完成率', success: '成功', errors: '失败',
|
|
88
|
+
tokenComparison: 'Tokens 对比', latencyComparison: '延迟对比',
|
|
89
|
+
avgTurns: '平均轮次', turnsPerReq: '轮/次', minScore: '最低',
|
|
90
|
+
autoAnalysis: '自动分析',
|
|
91
|
+
perSampleDetail: '逐用例详情', sample: '用例',
|
|
92
|
+
scoreCol: '分数', tokensCol: 'Tokens', msCol: '延迟(ms)',
|
|
93
|
+
batchOverview: '总览', batchSkill: 'Skill', batchBaseline: '无 Skill', batchWithSkill: '有 Skill', batchImprovement: '提升',
|
|
94
|
+
batchSkills: '个 Skill', batchSamples: '个评测用例',
|
|
95
|
+
agentLabel: 'Agent 评测',
|
|
96
|
+
skillLabel: 'Skill 评测',
|
|
97
|
+
promptLabel: 'Prompt 评测',
|
|
98
|
+
workflowLabel: 'Workflow 评测',
|
|
99
|
+
agentOverview: 'Agent 执行概览',
|
|
100
|
+
agentToolCalls: '工具调用',
|
|
101
|
+
agentToolSuccess: '工具成功率',
|
|
102
|
+
agentToolDist: '工具分布',
|
|
103
|
+
agentAvgTurns: '平均轮次',
|
|
104
|
+
agentAvgTools: '平均工具调用',
|
|
105
|
+
traceToggle: '执行轨迹',
|
|
106
|
+
traceAssistant: '助手',
|
|
107
|
+
traceTool: '工具',
|
|
108
|
+
traceFullOutput: '查看完整输出',
|
|
109
|
+
traceExecMs: '执行',
|
|
110
|
+
traceGradeMs: '评分',
|
|
111
|
+
traceTotalMs: '总计',
|
|
112
|
+
variantConfig: '实验配置',
|
|
113
|
+
variantConfigDesc: '先看清楚在比较什么,再看分数。本表展示每个 variant 背后的 artifact 和运行环境。',
|
|
114
|
+
variantType: '实验类型',
|
|
115
|
+
variantArtifactKind: '知识类型',
|
|
116
|
+
variantArtifactSource: '知识来源',
|
|
117
|
+
variantExecutionStrategy: '执行策略',
|
|
118
|
+
variantRuntimeContext: '运行环境',
|
|
119
|
+
// --- observability (skill health / trend / diff) ---
|
|
120
|
+
skillHealthTitle: 'Skill 健康度日报',
|
|
121
|
+
noAnalyses: '暂无 skill 健康度日报。运行 <code>omk observe <trace-dir></code> 生成。',
|
|
122
|
+
backToEvalReports: '← 评测报告',
|
|
123
|
+
backToAnalyses: '← Skill 健康度日报',
|
|
124
|
+
analysesCompareHint: '选两个报告的 from/to 单选框,点 Compare 生成 diff。',
|
|
125
|
+
analysesCompareBtn: '对比 →',
|
|
126
|
+
analysesFromLabel: 'from',
|
|
127
|
+
analysesToLabel: 'to',
|
|
128
|
+
analysesSessions: '会话',
|
|
129
|
+
analysesSegs: '段',
|
|
130
|
+
analysesSkills: '技能',
|
|
131
|
+
analysesLowN: '样本不足',
|
|
132
|
+
skillTrendHeading: 'Skill 趋势',
|
|
133
|
+
noTrendData: '暂无趋势数据。该 skill 尚未出现在任何分析报告里。',
|
|
134
|
+
trendNPoints: '个时间点',
|
|
135
|
+
trendEarliest: '最早',
|
|
136
|
+
trendLatest: '最新',
|
|
137
|
+
trendLegendGap: 'gap rate',
|
|
138
|
+
trendLegendWeighted: 'weighted gap',
|
|
139
|
+
trendLegendFailure: 'failure rate',
|
|
140
|
+
trendLegendCoverage: 'coverage',
|
|
141
|
+
trendColTimestamp: '时间',
|
|
142
|
+
trendColSegs: '段数',
|
|
143
|
+
trendColGap: 'Gap',
|
|
144
|
+
trendColWeighted: '加权',
|
|
145
|
+
trendColFailure: '失败率',
|
|
146
|
+
trendColCoverage: '覆盖',
|
|
147
|
+
trendColTokens: 'Tokens',
|
|
148
|
+
trendColDuration: '耗时',
|
|
149
|
+
skillDiffHeading: 'Skill 健康度对比',
|
|
150
|
+
diffSortHint: '按 gap 变化量排序;绿色=改善,红色=恶化',
|
|
151
|
+
diffTagRemoved: '已消失',
|
|
152
|
+
diffTagNew: '新增',
|
|
153
|
+
diffNavFrom: '起点',
|
|
154
|
+
diffNavTo: '终点',
|
|
155
|
+
diffColSkill: 'Skill',
|
|
156
|
+
diffColSegments: '段数',
|
|
157
|
+
diffColWeightedGap: '加权 Gap',
|
|
158
|
+
diffColFailureRate: '失败率',
|
|
159
|
+
diffColCoverage: '覆盖',
|
|
160
|
+
viewTrendLink: '查看趋势 →',
|
|
161
|
+
artifactHashLabel: '版本指纹',
|
|
162
|
+
artifactHashTooltip: 'skill 文件内容的 SHA-256 前 12 位(不含路径/时间/git),用于辨别报告对应哪一版 skill;同文件多次跑指纹不变,改一字节就变——防止"改动效果"和"随机波动"混淆',
|
|
163
|
+
switchLang: '英文',
|
|
164
|
+
},
|
|
165
|
+
en: {
|
|
166
|
+
title: 'Evaluation Reports',
|
|
167
|
+
subtitle: 'Knowledge Artifact Evaluation',
|
|
168
|
+
noRuns: 'No evaluation runs yet. Run <code>omk eval --control v1 --treatment v2</code> to start.',
|
|
169
|
+
runId: 'Report', variants: 'Variant', model: 'Task execution model', samples: 'Samples',
|
|
170
|
+
score: 'Score', cost: 'Execution cost', time: 'Time',
|
|
171
|
+
deleteBtnText: 'Delete', deleteConfirm: 'Delete report', deleteFail: 'Delete failed',
|
|
172
|
+
reportTitle: 'Evaluation Report', backToList: '← Back to list',
|
|
173
|
+
judge: 'Judge', executor: 'Executor', blindLabel: 'BLIND', revealBlind: 'Reveal variant mapping',
|
|
174
|
+
dimFact: '📋 Fact', dimFactDesc: 'Are factual claims correct (rule-verified: keyword matching, schema checks, etc.)',
|
|
175
|
+
dimBehavior: '🛠️ Behavior', dimBehaviorDesc: 'Is execution compliant (rule-verified: tool paths, turn limits, cost constraints)',
|
|
176
|
+
dimJudge: '💬 LLM judge', dimJudgeDesc: 'A separate LLM acts as judge: reads the task execution model output, scores 1-5 against a predefined rubric. Subjective, catches "overall feel" rule-based assertions miss',
|
|
177
|
+
dimQuality: '📊 Quality', dimQualityDesc: 'Equal-weight average of Fact + Behavior + LLM judge (1-5). UI now splits the three layers into separate columns; composite lives only in JSON data',
|
|
178
|
+
dimCost: '💰 Exec cost', dimCostDesc: 'API cost for the task execution model, calculated from token usage and model pricing',
|
|
179
|
+
dimEfficiency: '⚡ Efficiency', dimEfficiencyDesc: 'End-to-end latency from sending request to receiving full response',
|
|
180
|
+
dimStability: '🛡️ Stability', dimStabilityDesc: 'How much the score swings across repeated runs. Needs `--repeat ≥ 2`; single-run shows "—" because stability cannot be measured from one run',
|
|
181
|
+
compositeScore: 'composite score', scoreRange: 'Range',
|
|
182
|
+
assertions: 'Assertions', assertionsDesc: 'Rule-based score: passed assertion weight ratio mapped to 1-5',
|
|
183
|
+
llmJudge: 'LLM Judge', llmJudgeDesc: 'Score (1-5) from the judge model based on a predefined rubric (scoring criteria)',
|
|
184
|
+
judgeStddev: 'Judge stddev', judgeStddevDesc: 'Stddev across N judge calls (--judge-repeat). Low = judge is consistent; high = this score itself is noisy',
|
|
185
|
+
judgeFailures: 'Judge failures', judgeFailuresDesc: 'How many of N judge calls returned score=0 (parse / executor failure). stddev=0 + failureCount>0 is NOT "perfect agreement" — it means most calls failed',
|
|
186
|
+
judgeReasoning: 'CoT reasoning', judgeReasoningExpand: 'expand',
|
|
187
|
+
ensembleHeader: 'Per-judge scores', ensembleDesc: 'Independent scores from different judge models for the same output — refutes same-modality bias',
|
|
188
|
+
agreementHeader: 'Inter-judge agreement', agreementDesc: 'Cross-sample agreement metrics across all judges in this variant',
|
|
189
|
+
pearsonLabel: 'Pearson', pearsonDesc: 'Pearson correlation: 1=perfect rank agreement, 0=independent, -1=anti-correlated',
|
|
190
|
+
madLabel: 'MAD', madDesc: 'Mean absolute difference. On 1-5 scale: < 0.5 tight, > 1.5 large disagreement',
|
|
191
|
+
judgeModelsLabel: 'Judge models',
|
|
192
|
+
judgeRepeatLabel: 'Judge calls per sample',
|
|
193
|
+
judgePromptHashLabel: 'Judge prompt fingerprint', judgePromptHashDesc: 'SHA256-12 of the judge prompt template. Reports must share the same hash before scores are strictly comparable',
|
|
194
|
+
sampleHashCount: 'Sample fingerprints', sampleHashCountDesc: 'Number of samples with content hashes recorded / total samples. Each sample gets a SHA256-12 fingerprint identifying "is this the same sample as before". Two reports must share the same hash for a given sample_id to be strictly comparable',
|
|
195
|
+
evalFrameworkLabel: 'CI framework', evalFrameworkBootstrap: 'bootstrap CI', evalFrameworkBoth: 't-test + bootstrap', evalFrameworkTTest: 't-test',
|
|
196
|
+
evalFrameworkDesc: 'Algorithm used for confidence intervals. Bootstrap is distribution-free and recommended for ordinal LLM scores; t-test assumes normality and is unstable on small N. "both" = report has both, renderer prefers bootstrap',
|
|
197
|
+
bootstrapDiffSignificant: '✓ significant', bootstrapDiffNotSignificant: '✗ not significant', bootstrapDiffLabel: 'Δ (treatment - control)',
|
|
198
|
+
totalCost: 'Reported total cost', inputTokens: 'Input', outputTokens: 'Output',
|
|
199
|
+
totalTokens: 'Total', tokPerReq: 'tokens/req', avgLatency: 'avg latency',
|
|
200
|
+
successRate: 'completion rate', success: 'Success', errors: 'Errors',
|
|
201
|
+
tokenComparison: 'Tokens Comparison', latencyComparison: 'Latency Comparison',
|
|
202
|
+
avgTurns: 'Avg Turns', turnsPerReq: 'turns/req', minScore: 'Min',
|
|
203
|
+
autoAnalysis: 'Auto Analysis',
|
|
204
|
+
perSampleDetail: 'Per-Sample Detail', sample: 'Sample',
|
|
205
|
+
scoreCol: 'Score', tokensCol: 'Tokens', msCol: 'ms',
|
|
206
|
+
batchOverview: 'Overview', batchSkill: 'Skill', batchBaseline: 'Baseline', batchWithSkill: 'With Skill', batchImprovement: 'Improvement',
|
|
207
|
+
batchSkills: ' skills', batchSamples: ' samples',
|
|
208
|
+
agentLabel: 'Agent Eval',
|
|
209
|
+
skillLabel: 'Skill Eval',
|
|
210
|
+
promptLabel: 'Prompt Eval',
|
|
211
|
+
workflowLabel: 'Workflow Eval',
|
|
212
|
+
agentOverview: 'Agent Execution Overview',
|
|
213
|
+
agentToolCalls: 'Tool Calls',
|
|
214
|
+
agentToolSuccess: 'Tool Success Rate',
|
|
215
|
+
agentToolDist: 'Tool Distribution',
|
|
216
|
+
agentAvgTurns: 'Avg Turns',
|
|
217
|
+
agentAvgTools: 'Avg Tool Calls',
|
|
218
|
+
traceToggle: 'Execution Trace',
|
|
219
|
+
traceAssistant: 'Assistant',
|
|
220
|
+
traceTool: 'Tool',
|
|
221
|
+
traceFullOutput: 'Full Output',
|
|
222
|
+
traceExecMs: 'Exec',
|
|
223
|
+
traceGradeMs: 'Grade',
|
|
224
|
+
traceTotalMs: 'Total',
|
|
225
|
+
variantConfig: 'Experiment Setup',
|
|
226
|
+
variantConfigDesc: 'Confirm what is being compared before reading the score. This table explains the artifact and runtime context behind each variant.',
|
|
227
|
+
variantType: 'Role',
|
|
228
|
+
variantArtifactKind: 'Artifact Kind',
|
|
229
|
+
variantArtifactSource: 'Source',
|
|
230
|
+
variantExecutionStrategy: 'Execution Strategy',
|
|
231
|
+
variantRuntimeContext: 'Runtime Context',
|
|
232
|
+
// --- observability (skill health / trend / diff) ---
|
|
233
|
+
skillHealthTitle: 'Skill Health Reports',
|
|
234
|
+
noAnalyses: 'No skill health reports yet. Run <code>omk observe <trace-dir></code> to generate.',
|
|
235
|
+
backToEvalReports: '← Eval reports',
|
|
236
|
+
backToAnalyses: '← Skill Health Reports',
|
|
237
|
+
analysesCompareHint: 'Pick from/to radios on two reports, then click Compare to generate a diff.',
|
|
238
|
+
analysesCompareBtn: 'Compare →',
|
|
239
|
+
analysesFromLabel: 'from',
|
|
240
|
+
analysesToLabel: 'to',
|
|
241
|
+
analysesSessions: 'sessions',
|
|
242
|
+
analysesSegs: 'segs',
|
|
243
|
+
analysesSkills: 'skills',
|
|
244
|
+
analysesLowN: 'low N',
|
|
245
|
+
skillTrendHeading: 'Skill Trend',
|
|
246
|
+
noTrendData: 'No trend data. This skill has not appeared in any analysis report yet.',
|
|
247
|
+
trendNPoints: 'data points',
|
|
248
|
+
trendEarliest: 'earliest',
|
|
249
|
+
trendLatest: 'latest',
|
|
250
|
+
trendLegendGap: 'gap rate',
|
|
251
|
+
trendLegendWeighted: 'weighted gap',
|
|
252
|
+
trendLegendFailure: 'failure rate',
|
|
253
|
+
trendLegendCoverage: 'coverage',
|
|
254
|
+
trendColTimestamp: 'Timestamp',
|
|
255
|
+
trendColSegs: 'Segs',
|
|
256
|
+
trendColGap: 'Gap',
|
|
257
|
+
trendColWeighted: 'Weighted',
|
|
258
|
+
trendColFailure: 'Failure',
|
|
259
|
+
trendColCoverage: 'Coverage',
|
|
260
|
+
trendColTokens: 'Tokens',
|
|
261
|
+
trendColDuration: 'Duration',
|
|
262
|
+
skillDiffHeading: 'Skill Health Diff',
|
|
263
|
+
diffSortHint: 'Sorted by |Δgap|; green=improved, red=regressed',
|
|
264
|
+
diffTagRemoved: 'removed',
|
|
265
|
+
diffTagNew: 'new',
|
|
266
|
+
diffNavFrom: 'from',
|
|
267
|
+
diffNavTo: 'to',
|
|
268
|
+
diffColSkill: 'Skill',
|
|
269
|
+
diffColSegments: 'Segments',
|
|
270
|
+
diffColWeightedGap: 'Weighted gap',
|
|
271
|
+
diffColFailureRate: 'Failure rate',
|
|
272
|
+
diffColCoverage: 'Coverage',
|
|
273
|
+
viewTrendLink: 'trend →',
|
|
274
|
+
artifactHashLabel: 'Version fingerprint',
|
|
275
|
+
artifactHashTooltip: 'First 12 hex chars of SHA-256 over the skill file content (content-only: no path/time/git); identifies which version of the skill this report ran — same file = same fingerprint, any byte change = different fingerprint. Keeps "intentional change" separate from "random variance"',
|
|
276
|
+
switchLang: 'Chinese',
|
|
277
|
+
},
|
|
278
|
+
};
|
|
279
|
+
export const DEFAULT_LANG = 'zh';
|
|
280
|
+
export function t(key, lang = DEFAULT_LANG) {
|
|
281
|
+
return I18N[lang]?.[key] || I18N.en[key] || key;
|
|
282
|
+
}
|
|
283
|
+
function globalKeyboardScript() {
|
|
284
|
+
return `
|
|
285
|
+
<script>
|
|
286
|
+
// Global modal helpers. openModal/closeModal manage focus so the close
|
|
287
|
+
// button becomes the first tab stop when a modal opens.
|
|
288
|
+
window.openModal = function(id) {
|
|
289
|
+
var modal = document.getElementById(id);
|
|
290
|
+
if (!modal) return;
|
|
291
|
+
modal.style.display = 'flex';
|
|
292
|
+
setTimeout(function() {
|
|
293
|
+
var closeBtn = modal.querySelector('.modal-close');
|
|
294
|
+
if (closeBtn) closeBtn.focus();
|
|
295
|
+
}, 30);
|
|
296
|
+
};
|
|
297
|
+
window.closeModal = function(id) {
|
|
298
|
+
var modal = document.getElementById(id);
|
|
299
|
+
if (!modal) return;
|
|
300
|
+
modal.style.display = 'none';
|
|
301
|
+
};
|
|
302
|
+
// Global ESC to close any open modal-overlay
|
|
303
|
+
document.addEventListener('keydown', function(e) {
|
|
304
|
+
if (e.key === 'Escape') {
|
|
305
|
+
document.querySelectorAll('.modal-overlay').forEach(function(m) {
|
|
306
|
+
if (m.style.display === 'flex') m.style.display = 'none';
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
// 复制 paste-ready 片段到剪贴板:供 insight modal 的"复制片段"按钮调用。
|
|
311
|
+
// 元素 id 指 <code> 节点;复制后按钮加 .copied 类做 1.5s 视觉反馈。
|
|
312
|
+
// i18n:按钮反馈文案随页面 data-lang(layout 写在 <html> 上,langToggleScript 切换时更新)。
|
|
313
|
+
// 未设 dataset 时按 DEFAULT_LANG(zh)兜底,跟旧报告/无 toggle 入口的页面一致。
|
|
314
|
+
window.omkCopySnippet = function(elementId, btn) {
|
|
315
|
+
var el = document.getElementById(elementId);
|
|
316
|
+
if (!el) return;
|
|
317
|
+
var text = el.textContent || '';
|
|
318
|
+
var pageLang = document.documentElement.dataset.lang || '${DEFAULT_LANG}';
|
|
319
|
+
var copiedLabel = pageLang === 'en' ? '✓ Copied' : '✓ 已复制';
|
|
320
|
+
var done = function() {
|
|
321
|
+
if (!btn) return;
|
|
322
|
+
var orig = btn.textContent;
|
|
323
|
+
btn.textContent = copiedLabel;
|
|
324
|
+
btn.classList.add('copied');
|
|
325
|
+
setTimeout(function() { btn.textContent = orig; btn.classList.remove('copied'); }, 1500);
|
|
326
|
+
};
|
|
327
|
+
if (navigator.clipboard && navigator.clipboard.writeText) {
|
|
328
|
+
navigator.clipboard.writeText(text).then(done, function() { /* swallow */ });
|
|
329
|
+
} else {
|
|
330
|
+
// 老浏览器兜底:execCommand fallback
|
|
331
|
+
var ta = document.createElement('textarea');
|
|
332
|
+
ta.value = text; ta.style.position = 'fixed'; ta.style.opacity = '0';
|
|
333
|
+
document.body.appendChild(ta); ta.select();
|
|
334
|
+
try { document.execCommand('copy'); done(); } catch(e) { /* swallow */ }
|
|
335
|
+
document.body.removeChild(ta);
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
</script>`;
|
|
339
|
+
}
|
|
340
|
+
function langToggleScript() {
|
|
341
|
+
return `
|
|
342
|
+
<script>
|
|
343
|
+
var I18N = ${JSON.stringify(I18N)};
|
|
344
|
+
function switchLang() {
|
|
345
|
+
var cur = document.documentElement.dataset.lang || '${DEFAULT_LANG}';
|
|
346
|
+
var next = cur === 'zh' ? 'en' : 'zh';
|
|
347
|
+
document.documentElement.dataset.lang = next;
|
|
348
|
+
document.documentElement.lang = next === 'zh' ? 'zh-CN' : 'en';
|
|
349
|
+
document.querySelectorAll('[data-i18n]').forEach(function(el) {
|
|
350
|
+
var key = el.dataset.i18n;
|
|
351
|
+
if (I18N[next][key]) {
|
|
352
|
+
if (el.tagName === 'INPUT') { el.placeholder = I18N[next][key]; }
|
|
353
|
+
else { el.innerHTML = I18N[next][key]; }
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
document.getElementById('lang-toggle').textContent = I18N[next].switchLang;
|
|
357
|
+
// 同步写入 URL ?lang= 和 localStorage,让刷新/跳转保持语言选择
|
|
358
|
+
try {
|
|
359
|
+
var url = new URL(window.location.href);
|
|
360
|
+
url.searchParams.set('lang', next);
|
|
361
|
+
window.history.replaceState(null, '', url.toString());
|
|
362
|
+
localStorage.setItem('omk-lang', next);
|
|
363
|
+
} catch (e) { /* ignore */ }
|
|
364
|
+
}
|
|
365
|
+
// 页面加载时,若 URL 无 lang 但 localStorage 有,跳转到带 lang 的 URL (仅一次)
|
|
366
|
+
(function() {
|
|
367
|
+
try {
|
|
368
|
+
var url = new URL(window.location.href);
|
|
369
|
+
if (!url.searchParams.get('lang')) {
|
|
370
|
+
var saved = localStorage.getItem('omk-lang');
|
|
371
|
+
if (saved && saved !== '${DEFAULT_LANG}') {
|
|
372
|
+
url.searchParams.set('lang', saved);
|
|
373
|
+
window.location.replace(url.toString());
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
} catch (e) { /* ignore */ }
|
|
377
|
+
})();
|
|
378
|
+
</script>`;
|
|
379
|
+
}
|
|
380
|
+
function langToggleButton(lang) {
|
|
381
|
+
return `<button id="lang-toggle" onclick="switchLang()" class="lang-toggle">${t('switchLang', lang)}</button>`;
|
|
382
|
+
}
|
|
383
|
+
export function layout(title, body, lang = DEFAULT_LANG) {
|
|
384
|
+
const htmlLang = lang === 'zh' ? 'zh-CN' : 'en';
|
|
385
|
+
const favicon = encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop offset="0%" stop-color="#60a5fa"/><stop offset="100%" stop-color="#a78bfa"/></linearGradient></defs><circle cx="16" cy="16" r="15" fill="#0f172a"/><circle cx="16" cy="16" r="8" stroke="url(#g)" stroke-width="3.5" fill="none"/></svg>');
|
|
386
|
+
// 中英文切换按钮临时隐藏(URL ?lang= / localStorage 切换逻辑保留,按钮 UI 不渲染)。
|
|
387
|
+
// 想恢复:在 body 模板里加回 ${langToggleButton(lang)}。
|
|
388
|
+
void langToggleButton;
|
|
389
|
+
return `<!doctype html><html lang="${htmlLang}" data-lang="${lang}"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>OMK · ${title}</title>
|
|
390
|
+
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,${favicon}">${globalKeyboardScript()}
|
|
391
|
+
<style>
|
|
392
|
+
/* Pantone-inspired light theme(2026-05 全站浅色化)。
|
|
393
|
+
设计原则:暖白底 + 哑色调,不刺眼;字号 14-15px 起;subtle box-shadow 替代 border。
|
|
394
|
+
旧的深色蓝灰主题已迁移,语义保留但色值翻转。 */
|
|
395
|
+
:root{
|
|
396
|
+
--bg-base:#fbfaf7; /* 暖白纸感 */
|
|
397
|
+
--bg-surface:#ffffff; /* 卡片白 */
|
|
398
|
+
--bg-elevated:rgba(58,58,58,.025);
|
|
399
|
+
--bg-soft:rgba(58,58,58,.04);
|
|
400
|
+
--border:#e8e3da; /* 暖灰分隔 */
|
|
401
|
+
--border-hover:#d4ccbf;
|
|
402
|
+
--text-primary:#3a3a3a; /* 深炭灰 */
|
|
403
|
+
--text-secondary:#7a7a7a;
|
|
404
|
+
--text-muted:#a8a8a8;
|
|
405
|
+
--text-faint:#c8c8c8;
|
|
406
|
+
--accent:#5a7a93; /* 板岩蓝(slate) */
|
|
407
|
+
--accent-hover:#3f5d76;
|
|
408
|
+
--green:#5e8252; /* 鼠尾草绿(sage) */
|
|
409
|
+
--green-bg:rgba(94,130,82,.10);
|
|
410
|
+
--red:#9c4a3f; /* 砖红土陶(terracotta) */
|
|
411
|
+
--red-bg:rgba(156,74,63,.10);
|
|
412
|
+
--yellow:#b08030; /* 暖琥珀 */
|
|
413
|
+
--yellow-bg:rgba(176,128,48,.10);
|
|
414
|
+
--info-bg:rgba(90,122,147,.08);
|
|
415
|
+
/* 图表色 — 全部哑色调,跨色相区分但饱和度统一在 ~50% */
|
|
416
|
+
--chart-1:#5a7a93;
|
|
417
|
+
--chart-2:#7a6b89;
|
|
418
|
+
--chart-3:#5e8252;
|
|
419
|
+
--chart-4:#b08030;
|
|
420
|
+
--chart-5:#9c6478;
|
|
421
|
+
--chart-6:#937846;
|
|
422
|
+
--bg-card:#ffffff;
|
|
423
|
+
--radius:8px;
|
|
424
|
+
--radius-lg:12px;
|
|
425
|
+
/* 字号上调:正文 14px / 标签 13px / 详情 13px / 微元数据 12px */
|
|
426
|
+
--fs-micro:12px;
|
|
427
|
+
--fs-detail:13px;
|
|
428
|
+
--fs-label:13px;
|
|
429
|
+
--fs-body:14.5px;
|
|
430
|
+
--shadow-sm:0 1px 3px rgba(58,58,58,.06);
|
|
431
|
+
--shadow-md:0 2px 8px rgba(58,58,58,.10);
|
|
432
|
+
}
|
|
433
|
+
*{box-sizing:border-box;margin:0}
|
|
434
|
+
body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Segoe UI",Roboto,sans-serif;padding:32px;background:var(--bg-base);color:var(--text-primary);min-height:100vh;line-height:1.7;max-width:1440px;margin:0 auto;font-size:var(--fs-body)}
|
|
435
|
+
h1{margin:0 0 8px;font-size:1.75rem;font-weight:600;color:var(--text-primary);letter-spacing:-0.01em;line-height:1.3}
|
|
436
|
+
h2{margin:32px 0 12px;font-size:1.0625rem;color:var(--text-primary);font-weight:600;line-height:1.4}
|
|
437
|
+
.subtitle{color:var(--text-secondary);font-size:0.875rem;margin:0 0 24px}
|
|
438
|
+
a{color:var(--accent);text-decoration:none;transition:color .15s}
|
|
439
|
+
a:hover{color:var(--accent-hover);text-decoration:underline}
|
|
440
|
+
|
|
441
|
+
/* Meta tags — 浅色主题下加大对比度,小一点的字号也清晰可读 */
|
|
442
|
+
.meta-tags{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 20px}
|
|
443
|
+
.meta-tag{font-size:13px;color:var(--text-secondary);padding:4px 12px;background:var(--bg-surface);border:1px solid var(--border);border-radius:20px;line-height:1.5}
|
|
444
|
+
.meta-tag code{font-size:12px;color:var(--text-secondary);background:transparent;padding:0;letter-spacing:0.02em}
|
|
445
|
+
|
|
446
|
+
/* Run ID stamp — H1 保留完整 run-id (与列表页一致), 时间戳从 ID 解出来作为副标小字,
|
|
447
|
+
告诉用户「这次跑的时间」,无需用户自己解析 ID 后缀。 */
|
|
448
|
+
.run-id-stamp{font-size:0.75rem;color:var(--text-muted);margin:2px 0 12px;font-variant-numeric:tabular-nums}
|
|
449
|
+
|
|
450
|
+
/* Audit fingerprints — judge prompt hash + 执行环境 fingerprint 默认折叠,
|
|
451
|
+
平日 review 不需要看, 复现 / 审计时再展开。 */
|
|
452
|
+
.audit-fingerprints{margin:0 0 18px}
|
|
453
|
+
.audit-fingerprints>summary{cursor:pointer;font-size:0.75rem;color:var(--text-muted);padding:4px 0;list-style:revert;user-select:none;transition:color 0.15s}
|
|
454
|
+
.audit-fingerprints>summary:hover{color:var(--text-secondary)}
|
|
455
|
+
.audit-fingerprints[open]>summary{color:var(--text-secondary);margin-bottom:6px}
|
|
456
|
+
.audit-fingerprints[open]>.meta-tags{margin-top:0}
|
|
457
|
+
|
|
458
|
+
/* Methodology audit — 方法学证据 (评委一致 / 差异显著 / 已饱和 / 人工对齐) 默认折叠,
|
|
459
|
+
summary 行直接显示 4 个 badge: 全 ✓ = 流程健康,任一 ⚠/✗ = 强制 open. */
|
|
460
|
+
.methodology-audit{margin:24px 0;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated)}
|
|
461
|
+
.methodology-audit>summary{cursor:pointer;display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:12px 16px;font-size:13px;color:var(--text-primary);font-weight:600;list-style:revert;user-select:none}
|
|
462
|
+
.methodology-audit>summary:hover{color:var(--accent)}
|
|
463
|
+
.methodology-summary-label{font-size:14px;font-weight:600}
|
|
464
|
+
.methodology-summary-hint{flex:1 1 auto;text-align:right;font-size:11px;color:var(--text-muted);font-weight:400}
|
|
465
|
+
.methodology-badges{display:inline-flex;flex-wrap:wrap;gap:6px}
|
|
466
|
+
.methodology-badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;padding:3px 10px;border-radius:12px;letter-spacing:0.02em;line-height:1.5;white-space:nowrap}
|
|
467
|
+
/* Pantone 哑色 — 用 var(--green-bg) 等(浅色主题已重定义) */
|
|
468
|
+
.methodology-badge-pass{background:var(--green-bg);color:var(--green)}
|
|
469
|
+
.methodology-badge-warn{background:var(--yellow-bg);color:var(--yellow)}
|
|
470
|
+
.methodology-badge-fail{background:var(--red-bg);color:var(--red)}
|
|
471
|
+
.methodology-badge-skip{background:var(--bg-soft);color:var(--text-muted)}
|
|
472
|
+
.methodology-body{padding:0 16px 14px;border-top:1px solid var(--border);margin-top:8px}
|
|
473
|
+
.methodology-body>h2:first-child{margin-top:14px}
|
|
474
|
+
|
|
475
|
+
/* Cards */
|
|
476
|
+
.cards{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0}
|
|
477
|
+
.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 18px;min-width:140px;flex:1;transition:border-color 0.15s}
|
|
478
|
+
.card:hover{border-color:var(--border-hover)}
|
|
479
|
+
/* 卡片标签:de-uppercase(uppercase 在 pantone 哑色调里太"科技报"),轻微 letter-spacing
|
|
480
|
+
保留排版感,字号上调到 12 让读者看清。值/数字改 weight 600(700 在浅色配色里太硬)。 */
|
|
481
|
+
.card-label{font-size:12px;color:var(--text-muted);letter-spacing:0.02em;margin-bottom:4px;font-weight:500}
|
|
482
|
+
.card-value{font-size:20px;font-weight:600;margin:2px 0;color:var(--text-primary);font-variant-numeric:tabular-nums;line-height:1.3}
|
|
483
|
+
.card-sub{font-size:12px;color:var(--text-muted);line-height:1.5}
|
|
484
|
+
/* Summary table — inherits the global center + middle from the base td/th. */
|
|
485
|
+
.summary-cell{min-width:96px}
|
|
486
|
+
.summary-value-primary{font-size:1.25rem;font-weight:600;font-variant-numeric:tabular-nums}
|
|
487
|
+
|
|
488
|
+
/* Hint tooltip (legacy span-based, kept for hover-only hints) */
|
|
489
|
+
.hint{position:relative;display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;font-size:10px;font-weight:600;color:var(--text-muted);border:1px solid var(--border-hover);border-radius:50%;cursor:help;margin-left:6px;vertical-align:middle}
|
|
490
|
+
.hint-click{cursor:pointer}
|
|
491
|
+
|
|
492
|
+
/* Hint button — accessible, keyboard-focusable replacement for click-to-open-modal hints */
|
|
493
|
+
button.hint-btn{display:inline-flex;align-items:center;justify-content:center;min-width:20px;min-height:20px;padding:2px;font-size:11px;font-weight:600;color:var(--text-muted);background:transparent;border:1px solid var(--border);border-radius:50%;cursor:pointer;margin-left:6px;vertical-align:middle;line-height:1;transition:color 0.15s,border-color 0.15s;outline:none;appearance:none}
|
|
494
|
+
button.hint-btn:hover{color:var(--text-primary);border-color:var(--text-secondary)}
|
|
495
|
+
button.hint-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
|
|
496
|
+
button.hint-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
|
|
497
|
+
|
|
498
|
+
/* Verdict + detail pattern used in variance & significance cells */
|
|
499
|
+
.verdict-line{color:var(--text-secondary);font-size:var(--fs-body)}
|
|
500
|
+
.detail-line{font-size:var(--fs-detail);color:var(--text-muted);margin-top:2px}
|
|
501
|
+
|
|
502
|
+
/* Modal glossary layout — grid rows with tree connectors for sub-items */
|
|
503
|
+
.modal-glossary-hint{font-size:var(--fs-detail);color:var(--text-muted);margin:4px 0 14px;font-style:italic}
|
|
504
|
+
.modal-glossary{display:flex;flex-direction:column}
|
|
505
|
+
.modal-glossary-row{display:grid;grid-template-columns:100px 1fr;gap:16px;padding:9px 0;border-bottom:1px solid var(--border)}
|
|
506
|
+
.modal-glossary-row:last-child{border-bottom:none}
|
|
507
|
+
.modal-glossary-label{font-size:var(--fs-body);color:var(--text-primary);font-weight:600}
|
|
508
|
+
.modal-glossary-desc{font-size:var(--fs-detail);color:var(--text-secondary);line-height:1.55}
|
|
509
|
+
.modal-glossary-sub{display:grid;grid-template-columns:86px 1fr;gap:14px;padding:6px 0 6px 28px;position:relative}
|
|
510
|
+
.modal-glossary-sub::before{content:'';position:absolute;left:10px;top:0;bottom:0;width:2px;background:var(--border-hover);border-radius:1px}
|
|
511
|
+
.modal-glossary-sub-label{font-size:var(--fs-detail);color:var(--text-secondary);font-weight:500}
|
|
512
|
+
.modal-glossary-sub-desc{font-size:var(--fs-detail);color:var(--text-muted);line-height:1.55}
|
|
513
|
+
|
|
514
|
+
/* Modal section divider */
|
|
515
|
+
.modal-section{margin-top:20px;padding-top:16px;border-top:1px solid var(--border-hover)}
|
|
516
|
+
.modal-section-title{font-size:var(--fs-body);font-weight:600;color:var(--text-primary);margin-bottom:10px}
|
|
517
|
+
|
|
518
|
+
/* Four-quadrant diagnostic rule cards (matches the table's icon+text style) */
|
|
519
|
+
.diag-rules{display:flex;flex-direction:column;gap:8px}
|
|
520
|
+
.diag-rule-row{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;background:var(--bg-elevated);border-radius:var(--radius);border-left:3px solid var(--border-hover)}
|
|
521
|
+
.diag-rule-row.rule-good{border-left-color:var(--green)}
|
|
522
|
+
.diag-rule-row.rule-warn{border-left-color:var(--yellow)}
|
|
523
|
+
.diag-rule-row.rule-neutral{border-left-color:var(--text-muted)}
|
|
524
|
+
.diag-rule-icon{font-size:15px;flex-shrink:0;line-height:1.4}
|
|
525
|
+
.diag-rule-icon.rule-good{color:var(--green)}
|
|
526
|
+
.diag-rule-icon.rule-warn{color:var(--yellow)}
|
|
527
|
+
.diag-rule-icon.rule-neutral{color:var(--text-muted)}
|
|
528
|
+
.diag-rule-body{flex:1;min-width:0}
|
|
529
|
+
.diag-rule-title{font-size:var(--fs-detail);font-weight:600;color:var(--text-primary);margin-bottom:3px}
|
|
530
|
+
.diag-rule-desc{font-size:var(--fs-detail);color:var(--text-secondary);line-height:1.5}
|
|
531
|
+
.diag-rule-example{font-size:var(--fs-micro);color:var(--text-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;margin-top:4px;opacity:0.85}
|
|
532
|
+
|
|
533
|
+
/* Variance & significance table: all cells use the global center + middle. */
|
|
534
|
+
.variance-table td{padding-top:12px;padding-bottom:12px}
|
|
535
|
+
.variance-table td.diagnostic-cell{min-width:180px}
|
|
536
|
+
.variance-table .diag-faded strong{opacity:0.5;font-weight:500}
|
|
537
|
+
|
|
538
|
+
/* Knowledge Interaction section (v0.17 / A):
|
|
539
|
+
variant card is the only visual container, two inner columns use a
|
|
540
|
+
single vertical divider instead of nested bg — compresses hierarchy
|
|
541
|
+
from 3-4 layers to 2. */
|
|
542
|
+
.ki-card{margin-bottom:10px;padding:12px 14px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius)}
|
|
543
|
+
.ki-card-header{display:flex;flex-direction:column;gap:3px;margin-bottom:10px}
|
|
544
|
+
.ki-card-title{font-size:15px;font-weight:600;color:var(--text-primary)}
|
|
545
|
+
.ki-card-meta{font-size:var(--fs-micro);color:var(--text-muted);font-weight:400}
|
|
546
|
+
.ki-columns{display:flex;gap:0;flex-wrap:wrap}
|
|
547
|
+
.ki-col{flex:1;min-width:220px;padding:0 18px}
|
|
548
|
+
.ki-col:first-child{padding-left:0;border-right:1px solid var(--border)}
|
|
549
|
+
.ki-col:last-child{padding-right:0}
|
|
550
|
+
@media(max-width:640px){
|
|
551
|
+
.ki-col{padding:0;min-width:100%;border-right:none !important}
|
|
552
|
+
.ki-col+.ki-col{margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}
|
|
553
|
+
}
|
|
554
|
+
.ki-col-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
|
|
555
|
+
.ki-col-title{font-size:13px;color:var(--text-secondary);font-weight:500}
|
|
556
|
+
.ki-col-value{font-size:22px;font-weight:600}
|
|
557
|
+
.ki-bar{height:6px;background:var(--bg-card);border-radius:4px;margin-bottom:8px;overflow:hidden}
|
|
558
|
+
.ki-bar-fill{height:100%;border-radius:4px;transition:width 0.2s}
|
|
559
|
+
.ki-inventory-item{padding:6px 10px;margin:4px 0;background:var(--bg-card);border-left:3px solid var(--border-hover);border-radius:4px;font-size:var(--fs-detail);line-height:1.5}
|
|
560
|
+
.ki-inventory-item[data-severity="strong"]{border-left-color:var(--red)}
|
|
561
|
+
.ki-inventory-item[data-severity="medium"]{border-left-color:var(--yellow)}
|
|
562
|
+
.ki-inventory-item[data-severity="weak"]{border-left-color:var(--text-muted)}
|
|
563
|
+
.ki-inventory-item-meta{color:var(--text-muted);font-size:var(--fs-micro);margin-bottom:2px}
|
|
564
|
+
.ki-inventory-item-ctx{color:var(--text-secondary);word-break:break-all}
|
|
565
|
+
.ki-desc{font-size:12px;color:var(--text-muted);margin-bottom:4px;line-height:1.6}
|
|
566
|
+
.ki-desc-hint{font-size:11px;color:var(--text-faint);margin-bottom:12px;line-height:1.5}
|
|
567
|
+
.ki-details{margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}
|
|
568
|
+
.ki-details>summary{cursor:pointer;font-size:var(--fs-micro);color:var(--text-muted);padding:2px 0;list-style:revert;user-select:none;transition:color 0.15s}
|
|
569
|
+
.ki-details>summary:hover{color:var(--text-secondary)}
|
|
570
|
+
.ki-details[open]>summary{color:var(--text-secondary);margin-bottom:6px}
|
|
571
|
+
|
|
572
|
+
/* Three-layer independent significance breakdown (PR-2).
|
|
573
|
+
Default collapsed; expands inline under each comparison. */
|
|
574
|
+
.layer-breakdown-row>td{padding:0 !important;background:transparent;border-top:1px dashed var(--border-hover)}
|
|
575
|
+
.layer-breakdown{padding:10px 16px 14px 32px;background:var(--bg-elevated)}
|
|
576
|
+
.layer-breakdown>summary{cursor:pointer;font-size:var(--fs-detail);color:var(--text-muted);padding:4px 0;list-style:revert;user-select:none}
|
|
577
|
+
.layer-breakdown>summary:hover{color:var(--text-secondary)}
|
|
578
|
+
.layer-breakdown[open]>summary{color:var(--text-primary);margin-bottom:8px}
|
|
579
|
+
.layer-sub-table{margin:0;width:100%;font-size:var(--fs-detail)}
|
|
580
|
+
.layer-sub-table td{padding-top:8px;padding-bottom:8px}
|
|
581
|
+
/* Multiple-comparisons disclaimer for the three-layer breakdown (PR-2) */
|
|
582
|
+
.layer-breakdown-disclaimer{font-size:var(--fs-micro);color:var(--text-muted);line-height:1.5;padding:4px 8px 10px 0;font-style:italic}
|
|
583
|
+
|
|
584
|
+
/* v0.21 B.4 — Verdict pill (GitHub PR check 风, 水平 status banner + CTA + 层 strip).
|
|
585
|
+
颜色严格按 level 编码: PROGRESS 绿, REGRESS 红, CAUTIOUS/UNDERPOWERED 黄,
|
|
586
|
+
NOISE/SOLO 用 secondary 而非 muted (深底下保证对比度). border-left 4px 是
|
|
587
|
+
status 视觉信号, 不堆边框/卡片 — 整体融入页面排版. */
|
|
588
|
+
.verdict-banner{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding:12px 18px;margin:12px 0 0;border-left:4px solid var(--text-secondary);background:rgba(148,163,184,0.06);border-radius:var(--radius)}
|
|
589
|
+
.verdict-banner.verdict-PROGRESS{border-left-color:var(--green);background:rgba(74,222,128,0.07)}
|
|
590
|
+
.verdict-banner.verdict-REGRESS{border-left-color:var(--red);background:rgba(248,113,113,0.07)}
|
|
591
|
+
.verdict-banner.verdict-CAUTIOUS{border-left-color:var(--yellow);background:rgba(251,191,36,0.07)}
|
|
592
|
+
.verdict-banner.verdict-UNDERPOWERED{border-left-color:var(--yellow);background:rgba(251,191,36,0.04)}
|
|
593
|
+
.verdict-banner.verdict-NOISE{border-left-color:var(--text-secondary);background:rgba(148,163,184,0.06)}
|
|
594
|
+
.verdict-banner.verdict-SOLO{border-left-color:var(--border-hover);background:transparent}
|
|
595
|
+
.verdict-icon{font-size:12px;line-height:1;flex-shrink:0}
|
|
596
|
+
.verdict-line{font-size:14px;font-weight:500;color:var(--text-primary);line-height:1.6;letter-spacing:-0.005em}
|
|
597
|
+
|
|
598
|
+
/* page-verdict: verdict 是报告的「答案」,头部 hero 形式呈现.
|
|
599
|
+
行 1: enum + ship-action badge (PROGRESS · SHIP) + 自然语言 ("明显更好,可以发布")
|
|
600
|
+
行 2: Δ / 95% CI / N / CV — 测量学核心数字, 不需要滚到下方表才看到.
|
|
601
|
+
颜色按 level 编码 (PROGRESS 绿 / REGRESS 红 / CAUTIOUS+UNDERPOWERED 黄 / NOISE+SOLO 中性). */
|
|
602
|
+
.page-verdict{display:flex;flex-direction:column;gap:10px;margin:12px 0 18px;padding:14px 18px;border-left:4px solid var(--text-secondary);background:rgba(148,163,184,0.06);border-radius:var(--radius)}
|
|
603
|
+
.page-verdict.verdict-PROGRESS{border-left-color:var(--green);background:rgba(74,222,128,0.07)}
|
|
604
|
+
.page-verdict.verdict-REGRESS{border-left-color:var(--red);background:rgba(248,113,113,0.07)}
|
|
605
|
+
.page-verdict.verdict-CAUTIOUS{border-left-color:var(--yellow);background:rgba(251,191,36,0.07)}
|
|
606
|
+
.page-verdict.verdict-UNDERPOWERED{border-left-color:var(--yellow);background:rgba(251,191,36,0.04)}
|
|
607
|
+
.page-verdict.verdict-NOISE{border-left-color:var(--text-secondary);background:rgba(148,163,184,0.06)}
|
|
608
|
+
.page-verdict.verdict-SOLO{border-left-color:var(--border-hover);background:transparent}
|
|
609
|
+
.page-verdict-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
|
|
610
|
+
.page-verdict-badge{display:inline-flex;align-items:center;gap:6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:700;letter-spacing:0.04em;padding:3px 10px;border-radius:14px;background:rgba(148,163,184,0.14);color:var(--text-primary);white-space:nowrap}
|
|
611
|
+
.verdict-PROGRESS .page-verdict-badge{background:rgba(74,222,128,0.18);color:var(--green)}
|
|
612
|
+
.verdict-REGRESS .page-verdict-badge{background:rgba(248,113,113,0.18);color:var(--red)}
|
|
613
|
+
.verdict-CAUTIOUS .page-verdict-badge,
|
|
614
|
+
.verdict-UNDERPOWERED .page-verdict-badge{background:rgba(251,191,36,0.18);color:var(--yellow)}
|
|
615
|
+
.verdict-NOISE .page-verdict-badge,
|
|
616
|
+
.verdict-SOLO .page-verdict-badge{background:rgba(148,163,184,0.16);color:var(--text-secondary)}
|
|
617
|
+
.page-verdict-badge-dot{font-size:8px;line-height:1}
|
|
618
|
+
.page-verdict-text{font-size:15px;font-weight:500;color:var(--text-primary);line-height:1.5;flex:1 1 auto;min-width:0}
|
|
619
|
+
.page-verdict-metrics{display:flex;flex-wrap:wrap;gap:10px 20px;align-items:baseline;padding-top:2px}
|
|
620
|
+
.verdict-metric{display:inline-flex;align-items:baseline;gap:6px}
|
|
621
|
+
.verdict-metric-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:0.06em;font-weight:600}
|
|
622
|
+
.verdict-metric-value{font-size:15px;font-weight:700;color:var(--text-primary);font-variant-numeric:tabular-nums;letter-spacing:-0.01em}
|
|
623
|
+
|
|
624
|
+
.verdict-cta{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;padding:10px 18px;margin:0;border-left:4px solid var(--accent);background:var(--bg-surface);border-top:1px solid var(--border);border-radius:0}
|
|
625
|
+
.verdict-cta.verdict-cta-PROGRESS{border-left-color:var(--green);background:rgba(74,222,128,0.04)}
|
|
626
|
+
.verdict-cta.verdict-cta-REGRESS{border-left-color:var(--red);background:rgba(248,113,113,0.04)}
|
|
627
|
+
.verdict-cta.verdict-cta-CAUTIOUS{border-left-color:var(--yellow);background:rgba(251,191,36,0.04)}
|
|
628
|
+
.verdict-cta.verdict-cta-NOISE,
|
|
629
|
+
.verdict-cta.verdict-cta-UNDERPOWERED,
|
|
630
|
+
.verdict-cta.verdict-cta-SOLO{border-left-color:var(--text-secondary)}
|
|
631
|
+
.verdict-cta-icon{font-size:13px;flex-shrink:0;color:var(--text-secondary)}
|
|
632
|
+
.verdict-cta-PROGRESS .verdict-cta-icon{color:var(--green)}
|
|
633
|
+
.verdict-cta-REGRESS .verdict-cta-icon{color:var(--red)}
|
|
634
|
+
.verdict-cta-CAUTIOUS .verdict-cta-icon{color:var(--yellow)}
|
|
635
|
+
.verdict-cta-action{font-size:13px;font-weight:700;color:var(--text-primary);letter-spacing:0.04em;text-transform:uppercase;white-space:nowrap}
|
|
636
|
+
.verdict-cta-detail{font-size:13px;color:var(--text-secondary);line-height:1.55;flex:1 1 200px;min-width:0}
|
|
637
|
+
|
|
638
|
+
.verdict-layers{display:flex;align-items:baseline;gap:10px;padding:6px 18px 0;margin:0 0 16px;border-left:4px solid transparent;flex-wrap:wrap}
|
|
639
|
+
.verdict-layers-label{font-size:10px;text-transform:uppercase;letter-spacing:0.1em;color:var(--text-muted);font-weight:500}
|
|
640
|
+
.verdict-layers-content{font-size:12px;color:var(--text-secondary);font-variant-numeric:tabular-nums}
|
|
641
|
+
|
|
642
|
+
/* v0.21 B.4 — 列表页 RUN ID 旁的 verdict status pill. inline-flex 紧凑 pill,
|
|
643
|
+
颜色编码同 banner, 字号微小但对比清晰. 鼠标悬停/键盘聚焦时不抢戏 — 它只是
|
|
644
|
+
"这个 run 是什么 status" 的一眼瞥. */
|
|
645
|
+
.run-status{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:1px 8px;border-radius:var(--radius);margin-right:8px;line-height:1.5;letter-spacing:-0.005em;white-space:nowrap;color:var(--text-secondary);background:rgba(148,163,184,0.1);vertical-align:1px}
|
|
646
|
+
.run-status .run-status-dot{font-size:8px;line-height:1}
|
|
647
|
+
.run-status.verdict-PROGRESS{color:var(--green);background:rgba(74,222,128,0.12)}
|
|
648
|
+
.run-status.verdict-REGRESS{color:var(--red);background:rgba(248,113,113,0.12)}
|
|
649
|
+
.run-status.verdict-CAUTIOUS{color:var(--yellow);background:rgba(251,191,36,0.12)}
|
|
650
|
+
.run-status.verdict-UNDERPOWERED{color:var(--yellow);background:rgba(251,191,36,0.08)}
|
|
651
|
+
.run-status.verdict-NOISE{color:var(--text-secondary);background:rgba(148,163,184,0.1)}
|
|
652
|
+
.run-status.verdict-SOLO{color:var(--text-muted);background:transparent;border:1px solid var(--border)}
|
|
653
|
+
|
|
654
|
+
@media print{
|
|
655
|
+
.verdict-banner,.verdict-cta{break-inside:avoid;page-break-inside:avoid}
|
|
656
|
+
.run-status{border:1px solid #cbd5e1;background:transparent !important}
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
.modal-overlay{display:none;position:fixed;inset:0;z-index:999;background:rgba(0,0,0,0.6);align-items:center;justify-content:center}
|
|
660
|
+
.modal-content{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);max-width:800px;max-height:80vh;overflow:auto;padding:24px;margin:20px;width:90%}
|
|
661
|
+
.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
|
|
662
|
+
.modal-close{cursor:pointer;background:none;border:none;color:var(--text-muted);font-size:18px;padding:8px 12px;border-radius:var(--radius);transition:background 0.15s,color 0.15s}
|
|
663
|
+
.modal-close:hover{color:var(--text-primary);background:var(--bg-surface)}
|
|
664
|
+
.modal-table{width:100%;font-size:13px;margin:12px 0;background:transparent;border:none;table-layout:auto}
|
|
665
|
+
.modal-table td{padding:6px 0;border:none;background:transparent;word-break:break-word;overflow-wrap:anywhere}
|
|
666
|
+
.modal-table td:first-child{white-space:nowrap;vertical-align:top;min-width:80px;padding-right:16px;word-break:keep-all}
|
|
667
|
+
/* Inline <code> inside modal text — improve readability on dark surfaces */
|
|
668
|
+
.modal-table code,.modal-glossary code,.modal-section code{background:var(--bg-surface);padding:1px 6px;border-radius:3px;font-size:var(--fs-micro);color:var(--text-primary);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
|
|
669
|
+
@media(max-width:480px){.modal-table td{display:block;padding:3px 0}.modal-table td:first-child{font-weight:600}}
|
|
670
|
+
.hint-tip{display:none;position:absolute;bottom:calc(100% + 6px);right:0;background:var(--bg-elevated);border:1px solid var(--border-hover);border-radius:var(--radius);padding:6px 10px;font-size:11px;font-weight:400;color:var(--text-secondary);white-space:normal;max-width:280px;width:max-content;z-index:10}
|
|
671
|
+
.hint:hover .hint-tip,.hint:focus .hint-tip{display:block}
|
|
672
|
+
.summary-value{font-size:15px;font-weight:600;color:var(--text-primary);font-variant-numeric:tabular-nums}
|
|
673
|
+
.summary-detail{font-size:12px;color:var(--text-muted);margin-top:4px;line-height:1.5}
|
|
674
|
+
.summary-unit{font-size:12px;font-weight:400;color:var(--text-muted)}
|
|
675
|
+
.card-detail{margin-top:8px;font-size:12px;color:var(--text-secondary)}
|
|
676
|
+
.card-detail div{margin:2px 0}
|
|
677
|
+
|
|
678
|
+
/* Table */
|
|
679
|
+
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:16px 0;position:relative}
|
|
680
|
+
/* 窄屏下 6 列宽 >700px 会横向溢出,右侧稳定性列容易被遮盖。
|
|
681
|
+
加一条渐变阴影作为"可滑动"视觉提示,仅在 ≤768px 且可滚动容器里显示。 */
|
|
682
|
+
@media(max-width:768px){
|
|
683
|
+
.table-wrap::after{content:'';position:sticky;right:0;top:0;display:block;float:right;width:32px;height:100%;margin-left:-32px;margin-top:-100%;pointer-events:none;background:linear-gradient(to right,transparent,var(--bg-card) 85%);z-index:2}
|
|
684
|
+
}
|
|
685
|
+
/* 表格 — 稍紧凑(padding 7px 12px),正文 13px,字号上调跟全站对齐;
|
|
686
|
+
非数字列保留 left-align(td.text 类),其它默认居中。 */
|
|
687
|
+
table{border-collapse:collapse;width:100%;font-size:13px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;line-height:1.5}
|
|
688
|
+
th{background:var(--bg-elevated);padding:8px 12px;text-align:center;vertical-align:middle;font-weight:600;color:var(--text-secondary);border-bottom:1px solid var(--border);font-size:12px;letter-spacing:0.02em;white-space:nowrap}
|
|
689
|
+
td{padding:7px 12px;border-bottom:1px solid var(--border);color:var(--text-secondary);font-variant-numeric:tabular-nums;text-align:center;vertical-align:middle}
|
|
690
|
+
td:first-child, th:first-child { text-align:left }
|
|
691
|
+
tr:last-child td{border-bottom:none}
|
|
692
|
+
tr:hover td{background:rgba(148,163,184,0.04)}
|
|
693
|
+
|
|
694
|
+
/* Badges */
|
|
695
|
+
.badge{display:inline-block;padding:2px 8px;border-radius:var(--radius);font-size:11px;font-weight:600}
|
|
696
|
+
.badge-ok{background:var(--green-bg);color:var(--green)}
|
|
697
|
+
.badge-err{background:var(--red-bg);color:var(--red)}
|
|
698
|
+
.badge-pass{background:var(--green-bg);color:var(--green)}
|
|
699
|
+
.badge-fail{background:var(--red-bg);color:var(--red)}
|
|
700
|
+
.badge-muted{background:var(--bg-surface);color:var(--text-muted);border:1px solid var(--border)}
|
|
701
|
+
|
|
702
|
+
/* Nav */
|
|
703
|
+
.nav{margin-bottom:24px;font-size:13px}
|
|
704
|
+
|
|
705
|
+
/* Error detail */
|
|
706
|
+
.error-detail{display:inline-block;font-size:11px;color:var(--red);word-break:break-all;max-width:260px}
|
|
707
|
+
|
|
708
|
+
/* Assertion & dimension tags */
|
|
709
|
+
.assertion-list{margin:4px 0;padding:0;list-style:none;font-size:11px}
|
|
710
|
+
.assertion-list li{margin:2px 0;color:var(--text-secondary)}
|
|
711
|
+
.dim-scores{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
|
|
712
|
+
.dim-tag{font-size:10px;padding:2px 7px;border-radius:4px;background:var(--info-bg);color:var(--accent)}
|
|
713
|
+
.dim-desc{font-size:11px;color:var(--text-muted);font-weight:400;margin-left:6px}
|
|
714
|
+
|
|
715
|
+
/* Bar chart */
|
|
716
|
+
.bar-row{display:flex;align-items:center;gap:8px;margin:6px 0}
|
|
717
|
+
.bar-label{flex:0 0 60px;font-size:12px;color:var(--text-muted)}
|
|
718
|
+
.bar-fill{flex:1;height:16px;border-radius:4px;opacity:0.8}
|
|
719
|
+
.bar-value{flex:0 0 auto;font-size:12px;color:var(--text-secondary)}
|
|
720
|
+
|
|
721
|
+
/* Forms */
|
|
722
|
+
input[type="text"]{background:var(--bg-surface);border:1px solid var(--border);color:var(--text-primary);border-radius:var(--radius);padding:6px 12px;font-size:13px;font-family:inherit;outline:none;transition:border-color .15s,box-shadow .15s}
|
|
723
|
+
input[type="text"]:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--info-bg)}
|
|
724
|
+
/* 通用 button — 浅色主题里默认 transparent + 边框更细。子样式(.run-card-delete, .tv-vtab,
|
|
725
|
+
.omk-view-tab, .hint-btn 等)各自有显式 reset 覆盖默认样式。 */
|
|
726
|
+
button{background:var(--bg-surface);border:1px solid var(--border);color:var(--text-secondary);border-radius:var(--radius);cursor:pointer;padding:6px 14px;font-size:13px;font-family:inherit;transition:border-color .15s,color .15s,background .15s;outline:none;appearance:none;-webkit-appearance:none}
|
|
727
|
+
button:hover{border-color:var(--border-hover);color:var(--text-primary)}
|
|
728
|
+
button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
|
|
729
|
+
|
|
730
|
+
/* Lang toggle */
|
|
731
|
+
.lang-toggle{position:fixed;top:16px;right:16px;padding:6px 14px;z-index:100;font-size:12px}
|
|
732
|
+
|
|
733
|
+
/* Misc */
|
|
734
|
+
.btn-danger{color:var(--red)}
|
|
735
|
+
|
|
736
|
+
/* Focus */
|
|
737
|
+
a:focus-visible,.badge:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
|
|
738
|
+
|
|
739
|
+
/* Responsive */
|
|
740
|
+
@media(max-width:768px){
|
|
741
|
+
body{padding:16px}
|
|
742
|
+
.cards{flex-direction:column}
|
|
743
|
+
.card{min-width:0}
|
|
744
|
+
h1{font-size:1.25rem}
|
|
745
|
+
h2{font-size:0.875rem}
|
|
746
|
+
.lang-toggle{top:8px;right:8px;padding:4px 10px;font-size:11px}
|
|
747
|
+
button{min-height:44px;padding:8px 14px}
|
|
748
|
+
/* Override: hint buttons stay compact so they don't dominate mobile layout */
|
|
749
|
+
button.hint-btn{min-width:28px;min-height:28px;padding:4px}
|
|
750
|
+
/* Bump detail font so secondary lines are readable on mobile */
|
|
751
|
+
.detail-line{font-size:var(--fs-label)}
|
|
752
|
+
}
|
|
753
|
+
@media(max-width:480px){
|
|
754
|
+
body{padding:12px}
|
|
755
|
+
td,th{padding:8px 10px;font-size:12px}
|
|
756
|
+
}
|
|
757
|
+
@media print{
|
|
758
|
+
body{background:#fff;color:#1e293b;padding:20px;max-width:none}
|
|
759
|
+
h1,h2,.card-value,.summary-value,.summary-value-primary{color:#1e293b}
|
|
760
|
+
.card,.summary-table,table{background:#fff;border-color:#e2e8f0}
|
|
761
|
+
th{background:#f8fafc;color:#475569;border-color:#e2e8f0}
|
|
762
|
+
td{color:#334155;border-color:#f1f5f9}
|
|
763
|
+
.badge-ok,.badge-pass{background:#dcfce7;color:#166534}
|
|
764
|
+
.badge-err,.badge-fail{background:#fee2e2;color:#991b1b}
|
|
765
|
+
.badge-muted{background:#f8fafc;color:#94a3b8;border-color:#e2e8f0}
|
|
766
|
+
.dim-tag{background:#f1f5f9;color:#3b82f6}
|
|
767
|
+
.meta-tag{background:#f8fafc;border-color:#e2e8f0;color:#475569}
|
|
768
|
+
.bar-fill{opacity:1}
|
|
769
|
+
a{color:#1e293b;text-decoration:none}
|
|
770
|
+
.lang-toggle,.btn-danger,.nav{display:none}
|
|
771
|
+
.hint-tip{display:none}
|
|
772
|
+
.footer{color:#475569}
|
|
773
|
+
}
|
|
774
|
+
</style></head><body>${body}<footer class="footer" style="margin-top:40px;padding-top:16px;border-top:1px solid var(--border);font-size:11px;color:var(--text-faint);text-align:center">Powered by oh-my-knowledge</footer>${langToggleScript()}</body></html>`;
|
|
775
|
+
}
|
|
776
|
+
//# sourceMappingURL=layout.js.map
|