niceeval 0.13.1 → 0.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INDEX.md +25 -2
- package/README.md +9 -10
- package/README.zh.md +9 -10
- package/dist/agents/ai-sdk.cjs.map +1 -1
- package/dist/agents/ai-sdk.d.cts +1 -1
- package/dist/agents/ai-sdk.d.mts +1 -1
- package/dist/agents/ai-sdk.d.ts +1 -1
- package/dist/agents/bub-install-spec.cjs +19 -5
- package/dist/agents/bub-install-spec.cjs.map +1 -1
- package/dist/agents/bub-install-spec.d.cts +9 -2
- package/dist/agents/bub-install-spec.d.mts +9 -2
- package/dist/agents/bub-install-spec.d.ts +9 -2
- package/dist/agents/bub-install-spec.js +14 -12
- package/dist/agents/bub.cjs +10 -6
- package/dist/agents/bub.cjs.map +1 -1
- package/dist/agents/bub.d.cts +2 -2
- package/dist/agents/bub.d.mts +2 -2
- package/dist/agents/bub.d.ts +2 -2
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/claude-code.d.cts +2 -2
- package/dist/agents/claude-code.d.mts +2 -2
- package/dist/agents/claude-code.d.ts +2 -2
- package/dist/agents/codex.cjs +4 -4
- package/dist/agents/codex.cjs.map +1 -1
- package/dist/agents/codex.d.cts +3 -3
- package/dist/agents/codex.d.mts +3 -3
- package/dist/agents/codex.d.ts +3 -3
- package/dist/agents/coding-cli-versions.cjs +10 -1
- package/dist/agents/coding-cli-versions.cjs.map +1 -1
- package/dist/agents/coding-cli-versions.d.cts +8 -3
- package/dist/agents/coding-cli-versions.d.mts +8 -3
- package/dist/agents/coding-cli-versions.d.ts +8 -3
- package/dist/agents/coding-cli-versions.js +18 -12
- package/dist/agents/deepseek-harness.cjs +151 -0
- package/dist/agents/deepseek-harness.cjs.map +1 -0
- package/dist/agents/deepseek-harness.d.cts +14 -0
- package/dist/agents/deepseek-harness.d.mts +14 -0
- package/dist/agents/deepseek-harness.d.ts +14 -0
- package/dist/agents/deepseek-harness.js +7 -0
- package/dist/agents/deepseek-harness.js.map +1 -0
- package/dist/agents/exact-npm-plugins.cjs +28 -0
- package/dist/agents/exact-npm-plugins.cjs.map +1 -0
- package/dist/agents/exact-npm-plugins.d.cts +10 -0
- package/dist/agents/exact-npm-plugins.d.mts +10 -0
- package/dist/agents/exact-npm-plugins.d.ts +10 -0
- package/dist/agents/exact-npm-plugins.js +8 -0
- package/dist/agents/exact-npm-plugins.js.map +1 -0
- package/dist/agents/index.cjs +5 -1
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +4 -0
- package/dist/agents/index.d.mts +4 -0
- package/dist/agents/index.d.ts +4 -0
- package/dist/agents/index.js +54 -50
- package/dist/agents/index.mjs +54 -50
- package/dist/agents/omp.cjs +170 -0
- package/dist/agents/omp.cjs.map +1 -0
- package/dist/agents/omp.d.cts +14 -0
- package/dist/agents/omp.d.mts +14 -0
- package/dist/agents/omp.d.ts +14 -0
- package/dist/agents/omp.js +7 -0
- package/dist/agents/omp.js.map +1 -0
- package/dist/agents/openclaw.cjs +51 -2
- package/dist/agents/openclaw.cjs.map +1 -1
- package/dist/agents/openclaw.d.cts +2 -0
- package/dist/agents/openclaw.d.mts +2 -0
- package/dist/agents/openclaw.d.ts +2 -0
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.d.cts +4 -4
- package/dist/agents/types.d.mts +4 -4
- package/dist/agents/types.d.ts +4 -4
- package/dist/agents/ui-message-stream.cjs +24 -7
- package/dist/agents/ui-message-stream.cjs.map +1 -1
- package/dist/analysis/api.cjs +28 -2
- package/dist/analysis/api.cjs.map +1 -1
- package/dist/analysis/api.d.cts +22 -1
- package/dist/analysis/api.d.mts +22 -1
- package/dist/analysis/api.d.ts +22 -1
- package/dist/analysis/api.js +8 -6
- package/dist/analysis/bindings.cjs +11 -18
- package/dist/analysis/bindings.cjs.map +1 -1
- package/dist/analysis/bindings.d.cts +177 -49
- package/dist/analysis/bindings.d.mts +177 -49
- package/dist/analysis/bindings.d.ts +177 -49
- package/dist/analysis/contracts.cjs +1 -0
- package/dist/analysis/contracts.cjs.map +1 -1
- package/dist/analysis/contracts.d.cts +43 -3
- package/dist/analysis/contracts.d.mts +43 -3
- package/dist/analysis/contracts.d.ts +43 -3
- package/dist/analysis/cost-projection.cjs +2 -1
- package/dist/analysis/cost-projection.cjs.map +1 -1
- package/dist/analysis/cost-projection.d.cts +1 -1
- package/dist/analysis/cost-projection.d.mts +1 -1
- package/dist/analysis/cost-projection.d.ts +1 -1
- package/dist/analysis/cost.cjs +13 -3
- package/dist/analysis/cost.cjs.map +1 -1
- package/dist/analysis/cost.d.cts +10 -3
- package/dist/analysis/cost.d.mts +10 -3
- package/dist/analysis/cost.d.ts +10 -3
- package/dist/analysis/experiment-groups.cjs +96 -0
- package/dist/analysis/experiment-groups.cjs.map +1 -0
- package/dist/analysis/experiment-groups.d.cts +9 -0
- package/dist/analysis/experiment-groups.d.mts +9 -0
- package/dist/analysis/experiment-groups.d.ts +9 -0
- package/dist/analysis/experiment-groups.js +10 -0
- package/dist/analysis/experiment-groups.js.map +1 -0
- package/dist/analysis/index.cjs +4 -1
- package/dist/analysis/index.cjs.map +1 -1
- package/dist/analysis/index.d.cts +4 -2
- package/dist/analysis/index.d.mts +4 -2
- package/dist/analysis/index.d.ts +4 -2
- package/dist/analysis/index.js +40 -36
- package/dist/analysis/index.mjs +40 -36
- package/dist/assertions/limits.cjs +4 -0
- package/dist/assertions/limits.cjs.map +1 -1
- package/dist/assertions/limits.d.cts +4 -0
- package/dist/assertions/limits.d.mts +4 -0
- package/dist/assertions/limits.d.ts +4 -0
- package/dist/assertions/match.cjs +63 -25
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +7 -0
- package/dist/assertions/match.d.mts +7 -0
- package/dist/assertions/match.d.ts +7 -0
- package/dist/assertions/record/attachment.cjs +32 -4
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/diff.cjs +10 -4
- package/dist/assertions/record/diff.cjs.map +1 -1
- package/dist/assertions/record/producer.cjs +101 -4
- package/dist/assertions/record/producer.cjs.map +1 -1
- package/dist/assertions/record/producer.d.cts +4 -1
- package/dist/assertions/record/producer.d.mts +4 -1
- package/dist/assertions/record/producer.d.ts +4 -1
- package/dist/assertions/runtime.cjs +45 -5
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/cli/record.cjs +113 -8
- package/dist/cli/record.cjs.map +1 -1
- package/dist/cli/record.d.cts +20 -1
- package/dist/cli/record.d.mts +20 -1
- package/dist/cli/record.d.ts +20 -1
- package/dist/cli/record.js +4 -2
- package/dist/cli.cjs +386 -31
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +10 -2
- package/dist/cli.d.mts +10 -2
- package/dist/cli.d.ts +10 -2
- package/dist/context/send-retry.cjs +4 -4
- package/dist/context/send-retry.cjs.map +1 -1
- package/dist/coordination/host/runtime.cjs +8 -30
- package/dist/coordination/host/runtime.cjs.map +1 -1
- package/dist/coordination/host/runtime.d.cts +3 -3
- package/dist/coordination/host/runtime.d.mts +3 -3
- package/dist/coordination/host/runtime.d.ts +3 -3
- package/dist/coordination/host/types.cjs.map +1 -1
- package/dist/coordination/host/types.d.cts +0 -5
- package/dist/coordination/host/types.d.mts +0 -5
- package/dist/coordination/host/types.d.ts +0 -5
- package/dist/coordination/platform/node.cjs +90 -9
- package/dist/coordination/platform/node.cjs.map +1 -1
- package/dist/define.cjs +25 -1
- package/dist/define.cjs.map +1 -1
- package/dist/experiment/host/index.cjs +1 -0
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/i18n/en.cjs +26 -8
- package/dist/i18n/en.cjs.map +1 -1
- package/dist/i18n/en.d.cts +19 -6
- package/dist/i18n/en.d.mts +19 -6
- package/dist/i18n/en.d.ts +19 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/o11y/parsers/hermes.cjs +1 -1
- package/dist/o11y/parsers/hermes.cjs.map +1 -1
- package/dist/o11y/prices.json +1 -1
- package/dist/o11y/record/families.cjs +12 -3
- package/dist/o11y/record/families.cjs.map +1 -1
- package/dist/o11y/record/families.d.cts +8 -8
- package/dist/o11y/record/families.d.mts +8 -8
- package/dist/o11y/record/families.d.ts +8 -8
- package/dist/o11y/record/family-projectors.d.cts +66 -18
- package/dist/o11y/record/family-projectors.d.mts +66 -18
- package/dist/o11y/record/family-projectors.d.ts +66 -18
- package/dist/o11y/record/family-writers.d.cts +11 -3
- package/dist/o11y/record/family-writers.d.mts +11 -3
- package/dist/o11y/record/family-writers.d.ts +11 -3
- package/dist/o11y/record/runner-producer.cjs +14 -4
- package/dist/o11y/record/runner-producer.cjs.map +1 -1
- package/dist/record/codec/core.d.cts +2 -2
- package/dist/record/codec/core.d.mts +2 -2
- package/dist/record/codec/core.d.ts +2 -2
- package/dist/record/family/catalog.d.cts +44 -12
- package/dist/record/family/catalog.d.mts +44 -12
- package/dist/record/family/catalog.d.ts +44 -12
- package/dist/record/family/index.js +128 -124
- package/dist/record/family/observability-v1.cjs +35 -0
- package/dist/record/family/observability-v1.cjs.map +1 -0
- package/dist/record/family/observability-v1.d.cts +3 -0
- package/dist/record/family/observability-v1.d.mts +3 -0
- package/dist/record/family/observability-v1.d.ts +3 -0
- package/dist/record/family/observability-v1.js +6 -0
- package/dist/record/family/observability-v1.js.map +1 -0
- package/dist/record/family/observability.cjs +58 -9
- package/dist/record/family/observability.cjs.map +1 -1
- package/dist/record/family/observability.d.cts +1014 -15
- package/dist/record/family/observability.d.mts +1014 -15
- package/dist/record/family/observability.d.ts +1014 -15
- package/dist/record/family/observability.js +22 -18
- package/dist/record/host/runtime.cjs +600 -31
- package/dist/record/host/runtime.cjs.map +1 -1
- package/dist/record/host/types.cjs.map +1 -1
- package/dist/record/host/types.d.cts +33 -9
- package/dist/record/host/types.d.mts +33 -9
- package/dist/record/host/types.d.ts +33 -9
- package/dist/record/maintenance/runtime.cjs +1 -2
- package/dist/record/maintenance/runtime.cjs.map +1 -1
- package/dist/record/model/core.cjs.map +1 -1
- package/dist/record/model/core.d.cts +1 -1
- package/dist/record/model/core.d.mts +1 -1
- package/dist/record/model/core.d.ts +1 -1
- package/dist/record/model/definition.d.cts +6 -6
- package/dist/record/model/definition.d.mts +6 -6
- package/dist/record/model/definition.d.ts +6 -6
- package/dist/record/model/identifiers.cjs +1 -1
- package/dist/record/model/identifiers.cjs.map +1 -1
- package/dist/record/model/identifiers.d.cts +1 -1
- package/dist/record/model/identifiers.d.mts +1 -1
- package/dist/record/model/identifiers.d.ts +1 -1
- package/dist/record/platform/node.cjs +159 -23
- package/dist/record/platform/node.cjs.map +1 -1
- package/dist/record/platform/services.cjs.map +1 -1
- package/dist/record/platform/services.d.cts +15 -2
- package/dist/record/platform/services.d.mts +15 -2
- package/dist/record/platform/services.d.ts +15 -2
- package/dist/record/reader/errors.cjs +37 -1
- package/dist/record/reader/errors.cjs.map +1 -1
- package/dist/record/reader/errors.d.cts +49 -1
- package/dist/record/reader/errors.d.mts +49 -1
- package/dist/record/reader/errors.d.ts +49 -1
- package/dist/record/reader/errors.js +22 -12
- package/dist/record/reader/format.cjs +76 -17
- package/dist/record/reader/format.cjs.map +1 -1
- package/dist/record/reader/format.d.cts +11 -4
- package/dist/record/reader/format.d.mts +11 -4
- package/dist/record/reader/format.d.ts +11 -4
- package/dist/record/reader/format.js +2 -0
- package/dist/record/reader/index.js +32 -18
- package/dist/record/reader/runtime.cjs +64 -0
- package/dist/record/reader/runtime.cjs.map +1 -1
- package/dist/record/reader/runtime.d.cts +15 -0
- package/dist/record/reader/runtime.d.mts +15 -0
- package/dist/record/reader/runtime.d.ts +15 -0
- package/dist/record/reader/runtime.js +2 -0
- package/dist/report/assets/styles.css +53 -29
- package/dist/report/built-in/analysis-values.cjs +21 -13
- package/dist/report/built-in/analysis-values.cjs.map +1 -1
- package/dist/report/built-in/analysis-values.d.cts +11 -22
- package/dist/report/built-in/analysis-values.d.mts +11 -22
- package/dist/report/built-in/analysis-values.d.ts +11 -22
- package/dist/report/built-in/analysis-values.js +4 -6
- package/dist/report/built-in/index.cjs +1 -3
- package/dist/report/built-in/index.cjs.map +1 -1
- package/dist/report/built-in/index.d.cts +1 -1
- package/dist/report/built-in/index.d.mts +1 -1
- package/dist/report/built-in/index.d.ts +1 -1
- package/dist/report/built-in/index.js +4 -8
- package/dist/report/built-in/index.mjs +4 -8
- package/dist/report/built-in/machine.cjs +0 -2
- package/dist/report/built-in/machine.cjs.map +1 -1
- package/dist/report/built-in/machine.d.cts +0 -2
- package/dist/report/built-in/machine.d.mts +0 -2
- package/dist/report/built-in/machine.d.ts +0 -2
- package/dist/report/built-in/result-components.cjs +49 -51
- package/dist/report/built-in/result-components.cjs.map +1 -1
- package/dist/report/built-in/result-components.d.cts +16 -17
- package/dist/report/built-in/result-components.d.mts +16 -17
- package/dist/report/built-in/result-components.d.ts +16 -17
- package/dist/report/built-in/result-components.js +0 -4
- package/dist/report/built-in/run-membership-overview.cjs +126 -17
- package/dist/report/built-in/run-membership-overview.cjs.map +1 -1
- package/dist/report/built-in/run-membership-overview.d.cts +14 -0
- package/dist/report/built-in/run-membership-overview.d.mts +14 -0
- package/dist/report/built-in/run-membership-overview.d.ts +14 -0
- package/dist/report/built-in/run-membership-overview.js +4 -2
- package/dist/report/built-in/standard.cjs +80 -45
- package/dist/report/built-in/standard.cjs.map +1 -1
- package/dist/report/built-in/standard.d.cts +19 -41
- package/dist/report/built-in/standard.d.mts +19 -41
- package/dist/report/built-in/standard.d.ts +19 -41
- package/dist/report/built-in/standard.js +6 -6
- package/dist/report/components/attempt-detail/compute.cjs +78 -2
- package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
- package/dist/report/components/attempt-detail/compute.d.cts +1 -1
- package/dist/report/components/attempt-detail/compute.d.mts +1 -1
- package/dist/report/components/attempt-detail/compute.d.ts +1 -1
- package/dist/report/components/attempt-detail/content.cjs +1 -1
- package/dist/report/components/attempt-detail/content.cjs.map +1 -1
- package/dist/report/components/entity-lists/compute.cjs +42 -5
- package/dist/report/components/entity-lists/compute.cjs.map +1 -1
- package/dist/report/components/entity-lists/compute.d.cts +10 -8
- package/dist/report/components/entity-lists/compute.d.mts +10 -8
- package/dist/report/components/entity-lists/compute.d.ts +10 -8
- package/dist/report/components/entity-lists/content.cjs +31 -6
- package/dist/report/components/entity-lists/content.cjs.map +1 -1
- package/dist/report/components/entity-lists/index.cjs +9 -4
- package/dist/report/components/entity-lists/index.cjs.map +1 -1
- package/dist/report/components/entity-lists/index.d.cts +4 -7
- package/dist/report/components/entity-lists/index.d.mts +4 -7
- package/dist/report/components/entity-lists/index.d.ts +4 -7
- package/dist/report/components/summaries/compute.cjs +8 -1
- package/dist/report/components/summaries/compute.cjs.map +1 -1
- package/dist/report/components/summaries/compute.d.cts +9 -1
- package/dist/report/components/summaries/compute.d.mts +9 -1
- package/dist/report/components/summaries/compute.d.ts +9 -1
- package/dist/report/components/summaries/index.cjs +48 -4
- package/dist/report/components/summaries/index.cjs.map +1 -1
- package/dist/report/components/summaries/index.d.cts +7 -4
- package/dist/report/components/summaries/index.d.mts +7 -4
- package/dist/report/components/summaries/index.d.ts +7 -4
- package/dist/report/definition/cell.cjs +3 -0
- package/dist/report/definition/cell.cjs.map +1 -1
- package/dist/report/definition/cell.d.cts +2 -0
- package/dist/report/definition/cell.d.mts +2 -0
- package/dist/report/definition/cell.d.ts +2 -0
- package/dist/report/definition/primitives/chart.cjs +8 -5
- package/dist/report/definition/primitives/chart.cjs.map +1 -1
- package/dist/report/definition/primitives/points-dataset.cjs +1 -0
- package/dist/report/definition/primitives/points-dataset.cjs.map +1 -1
- package/dist/report/definition/primitives.cjs +15 -2
- package/dist/report/definition/primitives.cjs.map +1 -1
- package/dist/report/definition/report.cjs +27 -3
- package/dist/report/definition/report.cjs.map +1 -1
- package/dist/report/definition/report.d.cts +8 -0
- package/dist/report/definition/report.d.mts +8 -0
- package/dist/report/definition/report.d.ts +8 -0
- package/dist/report/execution/machine.cjs +30 -14
- package/dist/report/execution/machine.cjs.map +1 -1
- package/dist/report/execution/machine.d.cts +20 -10
- package/dist/report/execution/machine.d.mts +20 -10
- package/dist/report/execution/machine.d.ts +20 -10
- package/dist/report/execution/machine.js +6 -6
- package/dist/report/host/execute.cjs +25 -16
- package/dist/report/host/execute.cjs.map +1 -1
- package/dist/report/host/execute.d.cts +4 -0
- package/dist/report/host/execute.d.mts +4 -0
- package/dist/report/host/execute.d.ts +4 -0
- package/dist/report/host/from-record.cjs +22 -5
- package/dist/report/host/from-record.cjs.map +1 -1
- package/dist/report/host/machine.cjs +53 -11
- package/dist/report/host/machine.cjs.map +1 -1
- package/dist/report/host/site-runtime.cjs +9 -8
- package/dist/report/host/site-runtime.cjs.map +1 -1
- package/dist/report/host/site-runtime.d.cts +1 -1
- package/dist/report/host/site-runtime.d.mts +1 -1
- package/dist/report/host/site-runtime.d.ts +1 -1
- package/dist/report/host/static.cjs +56 -9
- package/dist/report/host/static.cjs.map +1 -1
- package/dist/report/index.cjs.map +1 -1
- package/dist/report/index.d.cts +1 -1
- package/dist/report/index.d.mts +1 -1
- package/dist/report/index.d.ts +1 -1
- package/dist/report/model/dataset.cjs +7 -2
- package/dist/report/model/dataset.cjs.map +1 -1
- package/dist/report/model/locale.cjs +2 -0
- package/dist/report/model/locale.cjs.map +1 -1
- package/dist/report/model/locale.d.cts +1 -0
- package/dist/report/model/locale.d.mts +1 -0
- package/dist/report/model/locale.d.ts +1 -0
- package/dist/report/model/metrics.cjs +3 -1
- package/dist/report/model/metrics.cjs.map +1 -1
- package/dist/report/model/pricing.cjs +16 -11
- package/dist/report/model/pricing.cjs.map +1 -1
- package/dist/report/react/styles.css +53 -29
- package/dist/runner/adoption.cjs +1 -0
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/attempt.cjs +44 -5
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/attempt.d.cts +13 -1
- package/dist/runner/attempt.d.mts +13 -1
- package/dist/runner/attempt.d.ts +13 -1
- package/dist/runner/config-identity.cjs +10 -2
- package/dist/runner/config-identity.cjs.map +1 -1
- package/dist/runner/config-identity.d.cts +4 -2
- package/dist/runner/config-identity.d.mts +4 -2
- package/dist/runner/config-identity.d.ts +4 -2
- package/dist/runner/feedback/human.cjs +298 -59
- package/dist/runner/feedback/human.cjs.map +1 -1
- package/dist/runner/feedback/json.cjs +14 -6
- package/dist/runner/feedback/json.cjs.map +1 -1
- package/dist/runner/feedback/json.d.cts +3 -2
- package/dist/runner/feedback/json.d.mts +3 -2
- package/dist/runner/feedback/json.d.ts +3 -2
- package/dist/runner/feedback/reducer.cjs +2 -0
- package/dist/runner/feedback/reducer.cjs.map +1 -1
- package/dist/runner/judge-config.cjs +1 -1
- package/dist/runner/judge-config.cjs.map +1 -1
- package/dist/runner/ledger.cjs +124 -12
- package/dist/runner/ledger.cjs.map +1 -1
- package/dist/runner/project-current.cjs +13 -5
- package/dist/runner/project-current.cjs.map +1 -1
- package/dist/runner/run.cjs +564 -256
- package/dist/runner/run.cjs.map +1 -1
- package/dist/runner/sandbox-pool.cjs +161 -30
- package/dist/runner/sandbox-pool.cjs.map +1 -1
- package/dist/runner/sandbox-pool.d.cts +34 -2
- package/dist/runner/sandbox-pool.d.mts +34 -2
- package/dist/runner/sandbox-pool.d.ts +34 -2
- package/dist/runner/shared-state-lease.cjs +803 -0
- package/dist/runner/shared-state-lease.cjs.map +1 -0
- package/dist/runner/shared-state-lease.d.cts +121 -0
- package/dist/runner/shared-state-lease.d.mts +121 -0
- package/dist/runner/shared-state-lease.d.ts +121 -0
- package/dist/runner/shared-state-lease.js +24 -0
- package/dist/runner/shared-state-lease.js.map +1 -0
- package/dist/runner/teardown-registry.cjs +97 -34
- package/dist/runner/teardown-registry.cjs.map +1 -1
- package/dist/runner/teardown-registry.d.cts +27 -1
- package/dist/runner/teardown-registry.d.mts +27 -1
- package/dist/runner/teardown-registry.d.ts +27 -1
- package/dist/runner/teardown-registry.js +20 -16
- package/dist/runner/types.cjs.map +1 -1
- package/dist/runner/types.d.cts +31 -5
- package/dist/runner/types.d.mts +31 -5
- package/dist/runner/types.d.ts +31 -5
- package/dist/sample/analysis.cjs +249 -459
- package/dist/sample/analysis.cjs.map +1 -1
- package/dist/sample/capability.cjs +138 -7
- package/dist/sample/capability.cjs.map +1 -1
- package/dist/sample/capability.d.cts +3 -1
- package/dist/sample/capability.d.mts +3 -1
- package/dist/sample/capability.d.ts +3 -1
- package/dist/sample/capability.js +8 -6
- package/dist/sandbox/docker-agent-image.cjs +5 -1
- package/dist/sandbox/docker-agent-image.cjs.map +1 -1
- package/dist/sandbox/docker-agent-image.d.cts +2 -0
- package/dist/sandbox/docker-agent-image.d.mts +2 -0
- package/dist/sandbox/docker-agent-image.d.ts +2 -0
- package/dist/sandbox/docker-agent-image.js +14 -10
- package/dist/sandbox/docker-profile/schema.cjs +283 -534
- package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.d.cts +10 -27
- package/dist/sandbox/docker-profile/schema.d.mts +10 -27
- package/dist/sandbox/docker-profile/schema.d.ts +10 -27
- package/dist/sandbox/e2b-agent-template.cjs +5 -2
- package/dist/sandbox/e2b-agent-template.cjs.map +1 -1
- package/dist/sandbox/index.cjs +4 -2
- package/dist/sandbox/index.cjs.map +1 -1
- package/dist/sandbox/index.d.cts +1 -1
- package/dist/sandbox/index.d.mts +1 -1
- package/dist/sandbox/index.d.ts +1 -1
- package/dist/sandbox/index.js +120 -116
- package/dist/sandbox/index.mjs +120 -116
- package/dist/sandbox/keep-registry.cjs +28 -66
- package/dist/sandbox/keep-registry.cjs.map +1 -1
- package/dist/sandbox/types.cjs.map +1 -1
- package/dist/sandbox/types.d.cts +1 -1
- package/dist/sandbox/types.d.mts +1 -1
- package/dist/sandbox/types.d.ts +1 -1
- package/dist/shared/aggregate.cjs +16 -6
- package/dist/shared/aggregate.cjs.map +1 -1
- package/dist/shared/aggregate.d.cts +12 -4
- package/dist/shared/aggregate.d.mts +12 -4
- package/dist/shared/aggregate.d.ts +12 -4
- package/dist/shared/turn-label.cjs +20 -2
- package/dist/shared/turn-label.cjs.map +1 -1
- package/dist/shared/turn-label.d.cts +2 -0
- package/dist/shared/turn-label.d.mts +2 -0
- package/dist/shared/turn-label.d.ts +2 -0
- package/dist/shared/turn-label.js +4 -2
- package/dist/vendor/remark/remark-gfm.cjs +7 -7
- package/dist/vendor/remark/remark-gfm.cjs.map +1 -1
- package/dist/vendor/remark/remark-parse.cjs +12 -12
- package/dist/vendor/remark/remark-parse.cjs.map +1 -1
- package/dist/vendor/remark/remark.cjs +13 -13
- package/dist/vendor/remark/remark.cjs.map +1 -1
- package/dist/view/server.cjs +6 -0
- package/dist/view/server.cjs.map +1 -1
- package/docs-site/images/hitl-handshake-zh.svg +3 -3
- package/docs-site/zh/examples/ai-agent-application.mdx +1 -1
- package/docs-site/zh/examples/coding-agent-extensions.mdx +1 -1
- package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +4 -3
- package/docs-site/zh/examples/integrations/claude-sdk.mdx +3 -3
- package/docs-site/zh/examples/integrations/codex-sdk.mdx +5 -5
- package/docs-site/zh/examples/integrations/langgraph.mdx +4 -4
- package/docs-site/zh/examples/integrations/pi-sdk.mdx +5 -5
- package/docs-site/zh/explanation/adapter.mdx +5 -5
- package/docs-site/zh/explanation/assert.mdx +7 -7
- package/docs-site/zh/explanation/drive.mdx +4 -2
- package/docs-site/zh/explanation/evals.mdx +10 -8
- package/docs-site/zh/explanation/experiment.mdx +2 -2
- package/docs-site/zh/explanation/hitl.mdx +9 -9
- package/docs-site/zh/explanation/judge.mdx +5 -5
- package/docs-site/zh/explanation/overview.mdx +3 -3
- package/docs-site/zh/explanation/runner.mdx +1 -1
- package/docs-site/zh/index.mdx +3 -3
- package/docs-site/zh/reference/builtin-agents.mdx +13 -13
- package/docs-site/zh/reference/capabilities.mdx +1 -1
- package/docs-site/zh/reference/cli.mdx +18 -12
- package/docs-site/zh/reference/define-agent.mdx +130 -5
- package/docs-site/zh/reference/define-config.mdx +2 -2
- package/docs-site/zh/reference/define-eval.mdx +4 -4
- package/docs-site/zh/reference/events.mdx +11 -11
- package/docs-site/zh/reference/official-adapters.mdx +6 -6
- package/docs-site/zh/reference/results-data.mdx +6 -0
- package/docs-site/zh/troubleshooting/debugging.mdx +1 -1
- package/docs-site/zh/troubleshooting/recover-after-kill.mdx +37 -5
- package/docs-site/zh/tutorials/accept-results.mdx +72 -0
- package/docs-site/zh/tutorials/agent-onboarding.mdx +6 -6
- package/docs-site/zh/tutorials/authoring.mdx +9 -13
- package/docs-site/zh/tutorials/ci-integration.mdx +6 -6
- package/docs-site/zh/tutorials/compare-runs.mdx +61 -0
- package/docs-site/zh/tutorials/concurrency.mdx +13 -12
- package/docs-site/zh/tutorials/configuration.mdx +4 -6
- package/docs-site/zh/tutorials/connect-your-agent.mdx +1 -1
- package/docs-site/zh/tutorials/control-run-cost.mdx +58 -0
- package/docs-site/zh/tutorials/criteria-files.mdx +2 -2
- package/docs-site/zh/tutorials/custom-reports.mdx +2 -2
- package/docs-site/zh/tutorials/debug-lifecycle-plan.mdx +46 -0
- package/docs-site/zh/tutorials/docker-in-docker.mdx +52 -43
- package/docs-site/zh/tutorials/eval-groups.mdx +6 -6
- package/docs-site/zh/tutorials/evaluation-kinds.mdx +3 -3
- package/docs-site/zh/tutorials/experiments.mdx +2 -3
- package/docs-site/zh/tutorials/handle-execution-failures.mdx +18 -10
- package/docs-site/zh/tutorials/install-custom-sandbox-agent.mdx +16 -8
- package/docs-site/zh/tutorials/nixos-managed-dind.mdx +160 -0
- package/docs-site/zh/tutorials/plugins.mdx +14 -0
- package/docs-site/zh/tutorials/rerun-and-cache.mdx +4 -2
- package/docs-site/zh/tutorials/sandbox-agent.mdx +17 -11
- package/docs-site/zh/tutorials/sandbox-providers.mdx +17 -13
- package/docs-site/zh/tutorials/sandbox-reuse.mdx +12 -19
- package/docs-site/zh/tutorials/select-and-preview.mdx +65 -0
- package/docs-site/zh/tutorials/verify-judge.mdx +78 -0
- package/docs-site/zh/tutorials/viewing-results.mdx +38 -1
- package/docs-site/zh/tutorials/write-experiment.mdx +7 -5
- package/docs-site/zh/tutorials/write-send.mdx +9 -8
- package/package.json +9 -5
- package/dist/report/built-in/overview.cjs +0 -44
- package/dist/report/built-in/overview.cjs.map +0 -1
- package/dist/report/built-in/overview.d.cts +0 -6
- package/dist/report/built-in/overview.d.mts +0 -6
- package/dist/report/built-in/overview.d.ts +0 -6
- package/dist/report/built-in/overview.js +0 -9
- package/dist/report/built-in/overview.js.map +0 -1
- package/dist/runner/gate-lease.cjs +0 -283
- package/dist/runner/gate-lease.cjs.map +0 -1
- package/dist/runner/gate-lease.d.cts +0 -62
- package/dist/runner/gate-lease.d.mts +0 -62
- package/dist/runner/gate-lease.d.ts +0 -62
- package/dist/runner/gate-lease.js +0 -22
- package/dist/runner/gate-lease.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["primitives.tsx"],"names":[],"mappings":"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","sourcesContent":["// 排版原语 Row / Col / Grid / Section / Stat / Text / Markdown / Style / Tabs / Tab / Table:十一个内置\n// 双面组件,没有特殊机制(docs/feature/reports/library.md)。web 面是普通 React 渲染;\n// text 面用 ctx.render(child, 子宽) 显式传宽。Style 注入页级全局 CSS(树位置只决定声明\n// 顺序),text 面渲染为空。Table 是自定义表的标准件,官方表状组件的 text 面也建在它上面。\n// Grid / Stat 的语义层(normalizeGrid 展平校验、text 面的 TextGridPlan 排版)在\n// ./grid-layout.ts(docs/feature/reports/architecture.md「排版原语的语义层与面内布局」);\n// 本文件只声明两面适配,不重复那份算术。\nimport { Children, type CSSProperties, type ReactNode } from \"react\";\nimport type { AttemptLocator } from \"../../attempt-locator.ts\";\nimport { COMPONENT_RAW_CHILDREN, COMPONENT_ROLE, defineComponent, type ReportComponent, type ReportNode, type WebContext, } from \"./tree.ts\";\nimport { attemptLocatorOfEvidenceRef, hrefForLocator } from \"./primitives/shared.ts\";\nimport { countText, localeText, resolveLocalizedText, type LocalizedText, type ReportLocale } from \"../model/locale.ts\";\nimport { joinColumns, padDisplay, stringWidth, wrapDisplay } from \"../model/text-layout.ts\";\nimport type { ColumnAlign } from \"../model/text-layout.ts\";\nimport { DATA_BOX_FRAME_OVERHEAD, dataBoxBorder, dataBoxMode, dataBoxRow, panelContentWidth, renderPanel, renderRule, type PanelRow, } from \"../model/panel.ts\";\nimport { renderTableText } from \"./table-text.ts\";\nimport { gridContainerRules, normalizeGrid, planTextGrid, TEXT_GRID_SEPARATOR } from \"./grid-layout.ts\";\nimport type { Dataset } from \"../model/types.ts\";\nimport { isDataset } from \"../model/dataset.ts\";\nimport { isMetricValue } from \"../model/metrics.ts\";\nimport type { MetricValue } from \"../../analysis/index.ts\";\nimport type { ReportTarget } from \"./report.ts\";\nimport { assertDownloadFile, type DownloadFile } from \"./primitives/downloads.ts\";\nimport { emitPanelRow, panelSectionDepth, withPanelRowCollector, withPanelSectionDepth, } from \"./primitives/text-panel-state.ts\";\nimport { flattenTableContentForText, formatCellText, type Cell, type ColumnSpec, type TableContent, type TableContentRow, } from \"./cell.tsx\";\nimport { formatMetricScalar, missingText, verdictMark } from \"../model/format.ts\";\nimport { formatCostProjectionAmountText, isCostMetricValue } from \"../model/pricing.ts\";\nfunction childArray(children: ReportNode): ReportNode[] {\n if (children === null || children === undefined || typeof children === \"boolean\")\n return [];\n return Array.isArray(children) ? [...children] : [children];\n}\nfunction cx(...parts: (string | undefined)[]): string {\n return parts.filter(Boolean).join(\" \");\n}\n/** `null`/缺数据的统一显示符:Table 与 Stat 共用,不补成 0。 */\nconst MISSING_MARK = \"—\";\nexport interface LayoutProps {\n children?: ReportNode;\n className?: string;\n}\nexport type RowProps = LayoutProps;\nexport type ColProps = LayoutProps;\n/** 纵向依次排列:网页是块级堆叠,终端是逐块输出(块间空一行)。两面都按声明序。 */\nexport const Col = defineComponent<ColProps>({\n dimensions: () => ({}),\n web({ children, className }) {\n return (<div className={cx(\"niceeval-report\", \"niceeval-col\", className)}>\n {Children.toArray(children as ReactNode)}\n </div>);\n },\n text({ children }, ctx) {\n return childArray(children)\n .map((child) => ctx.render(child))\n .filter((block) => block.length > 0)\n .join(\"\\n\\n\");\n },\n});\nCol.displayName = \"Col\";\nconst COLUMN_SEPARATOR = \" │ \";\n/** 一段已渲染文本的自然显示宽度(最长一行)。 */\nfunction blockWidth(block: string): number {\n return Math.max(...block.split(\"\\n\").map((line) => stringWidth(line)), 0);\n}\n/**\n * 并排:web 面横排;text 面在可用宽度装得下全部子块时按显示宽度并排(与 `columns` 工具\n * 同一把尺),装不下时整块退化为纵向堆叠——不截断、不隐藏任何子块。\n */\nexport const Row = defineComponent<RowProps>({\n dimensions: () => ({}),\n web({ children, className }) {\n return (<div className={cx(\"niceeval-report\", \"niceeval-row\", className)}>\n {Children.toArray(children as ReactNode)}\n </div>);\n },\n text({ children }, ctx) {\n const blocks = childArray(children).filter((child) => child !== null && child !== undefined && typeof child !== \"boolean\");\n if (blocks.length === 0)\n return \"\";\n if (blocks.length === 1)\n return ctx.render(blocks[0]);\n const rendered = blocks.map((child) => ctx.render(child)).filter((block) => block.length > 0);\n if (rendered.length === 0)\n return \"\";\n const widths = rendered.map(blockWidth);\n const total = widths.reduce((sum, w) => sum + w, 0) + COLUMN_SEPARATOR.length * (rendered.length - 1);\n if (total > ctx.width) {\n // 装不下:整块退化为纵向堆叠,与 Col 同一形态\n return rendered.join(\"\\n\\n\");\n }\n return joinColumns(rendered, widths, COLUMN_SEPARATOR);\n },\n});\nRow.displayName = \"Row\";\n// ───────────────────────── Grid / Stat ─────────────────────────\nexport type GridProps = LayoutProps;\n/**\n * 一行格子的物理行:每格按自己的列宽补白(不 trim 行尾——右边框要对齐成一条直线),\n * 行高取该行最高的那一格,矮格补空白格。\n */\nfunction framedGridRows(blocks: readonly string[], widths: readonly number[], outerFrame: boolean): string[] {\n const columns = blocks.map((block) => block.split(\"\\n\"));\n const height = Math.max(...columns.map((lines) => lines.length), 1);\n const out: string[] = [];\n for (let i = 0; i < height; i++) {\n out.push(dataBoxRow(columns.map((lines, c) => padDisplay(lines[i] ?? \"\", widths[c]!)), outerFrame));\n }\n return out;\n}\n/**\n * 自由摘要面板的格子容器:只负责呈现,不读取 Sample、不聚合 Metric。每个直接子节点\n * (数组 / Fragment 先按 ReportNode 规则展平,空分支不占格)是一格;`Col` 把多个区块\n * 归成一格。列数、边框与体量全由格数 × 可用宽度算出(./grid-layout.ts),Grid 不收这些\n * 参数,本文件只做两面结构适配。\n */\nexport const Grid = defineComponent<GridProps>({\n dimensions: () => ({}),\n web({ children, className }) {\n const normalized = normalizeGrid({ children });\n const cellCount = normalized.cells.length;\n const rules = gridContainerRules(cellCount);\n return (<div className=\"niceeval-report niceeval-grid-fit\">\n {rules ? <style>{rules}</style> : null}\n <div className={cx(\"niceeval-report\", \"niceeval-grid\", className)} data-cells={cellCount}>\n {normalized.cells.map((cell) => (<div className=\"niceeval-grid-cell\" key={cell.key}>\n {cell.node as ReactNode}\n </div>))}\n </div>\n </div>);\n },\n text({ children }, ctx) {\n const normalized = normalizeGrid({ children });\n if (normalized.cells.length === 0)\n return \"\";\n const lines = dataBoxMode(ctx.panelMode, ctx.width) === \"boxed\";\n // 嵌在画框的 Section 里只留列边界与行间线:边界已由面板的框给出,不套二层框。\n const outerFrame = lines && panelSectionDepth() === 0;\n const plan = planTextGrid({\n availableWidth: outerFrame ? ctx.width - DATA_BOX_FRAME_OVERHEAD : ctx.width,\n cellCount: normalized.cells.length,\n });\n // 确定计划后才对每个 cell 调用一次 ctx.render——不为试探列数重复渲染。\n // 末行不足一整行时,最后一格吃掉剩余宽度(只剩一格就是铺满整行)——右边框因此始终\n // 对齐成一条直线,短末行不把框拉成锯齿。\n const cellWidths = normalized.cells.map((_, i) => {\n const col = i % plan.columns;\n const lastRowStart = Math.floor((normalized.cells.length - 1) / plan.columns) * plan.columns;\n const isLastCell = i === normalized.cells.length - 1;\n const lastRowCells = normalized.cells.length - lastRowStart;\n if (!isLastCell || lastRowCells === plan.columns)\n return plan.contentWidths[col];\n if (lastRowCells === 1)\n return plan.fullRowContentWidth;\n // 吃掉右侧空出来的列宽与它们的格线。\n const rest = plan.contentWidths.slice(col);\n return rest.reduce((sum, w) => sum + w, 0) + TEXT_GRID_SEPARATOR.length * (rest.length - 1);\n });\n const blocks = normalized.cells.map((cell, i) => ctx.render(cell.node, cellWidths[i]));\n // 格宽贴合内容:计划宽度是排版上限(子节点按它折行),画框时收到这一列真正用掉的宽度\n // ——摘要格里是 `80%`、`$0.92` 这种短读数,格子不为占满终端而撑开。\n const columnWidths = plan.contentWidths.map((planned, col) => {\n const widest = blocks.reduce((max, block, i) => {\n if (i % plan.columns !== col || cellWidths[i] !== planned)\n return max;\n return Math.max(max, blockWidth(block));\n }, 1);\n return Math.min(planned, widest);\n });\n // 末行吃掉剩余宽度的那一格跟着收:它补的是右侧空出来的列宽与格线,按收窄后的列重算。\n const fittedWidths = cellWidths.map((width, i) => {\n const col = i % plan.columns;\n if (width === plan.contentWidths[col])\n return columnWidths[col]!;\n const rest = columnWidths.slice(col);\n return rest.reduce((sum, w) => sum + w, 0) + TEXT_GRID_SEPARATOR.length * (rest.length - 1);\n });\n // 行与行之间是一条行间线,不是空行——格线要连起来才读成一片格子。\n const out: string[] = [];\n let previousRow = 0;\n let lastRowWidths: readonly number[] = plan.contentWidths;\n for (let start = 0; start < blocks.length; start += plan.columns) {\n const rowBlocks = blocks.slice(start, start + plan.columns);\n const rowWidths = fittedWidths.slice(start, start + rowBlocks.length);\n if (!lines) {\n // 朴素形态:格线整体消失,只按列对齐;行与行之间空一行代替行间线。\n if (start > 0)\n out.push(\"\");\n out.push(joinColumns(rowBlocks, rowWidths, \" \"));\n continue;\n }\n if (start === 0 && outerFrame)\n out.push(dataBoxBorder(\"top\", columnWidths, true));\n if (start > 0) {\n out.push(dataBoxBorder(\"rule\", columnWidths.slice(0, previousRow), outerFrame, rowBlocks.length));\n }\n out.push(...framedGridRows(rowBlocks, rowWidths, outerFrame));\n previousRow = rowBlocks.length;\n // 下边框跟随末行的实际列宽——末行最后一格吃掉的那段宽度也要被下边框盖住。\n lastRowWidths = rowWidths;\n }\n if (lines && outerFrame)\n out.push(dataBoxBorder(\"bottom\", lastRowWidths, true));\n return out.join(\"\\n\");\n },\n});\nGrid.displayName = \"Grid\";\nexport type StatTone = \"neutral\" | \"positive\" | \"negative\" | \"warning\";\nexport interface StatProps {\n label: LocalizedText;\n /**\n * 主值。收 Cell 时保住覆盖率与下钻;收标量 / LocalizedText 时是作者已经算好的展示值\n * (与 text 格等价,没有证据可下钻)。\n */\n value: Cell | LocalizedText | number | null;\n /** 主值下面的短解释;省略时不留空行。 */\n detail?: LocalizedText;\n /** 主值的语义色;不从正负号、单位或 Metric.better 猜。默认 neutral。 */\n tone?: StatTone;\n className?: string;\n}\n/**\n * Grid / Stat 共享的显示值规范化:Cell 走 formatCellText / MetricCellView;\n * LocalizedText 走 resolveLocalizedText,number 走当前 locale 的 Intl.NumberFormat,null 变 —。\n */\nfunction statDisplayOf(value: StatProps[\"value\"], locale: ReportLocale): string {\n if (value === null)\n return MISSING_MARK;\n if (typeof value === \"number\")\n return new Intl.NumberFormat(locale).format(value);\n if (typeof value === \"object\" && value !== null && \"kind\" in value) {\n return formatCellText(value as Cell, locale);\n }\n return resolveLocalizedText(value as LocalizedText, locale);\n}\nfunction isCellValue(value: StatProps[\"value\"]): value is Cell {\n return typeof value === \"object\" && value !== null && \"kind\" in value;\n}\n/** label / 主值 / 辅助信息的最小内容单元;可以脱离 Grid 单独使用。 */\nexport const Stat = defineComponent<StatProps>({\n dimensions: () => ({}),\n web({ label, value, detail, tone = \"neutral\", className }, ctx) {\n return (<div className={cx(\"niceeval-report\", \"niceeval-stat\", `niceeval-stat--${tone}`, className)}>\n <div className=\"niceeval-stat-label\">{resolveLocalizedText(label, ctx.locale)}</div>\n <div className=\"niceeval-stat-value\">\n {isCellValue(value)\n ? renderCellWeb(value, { href: (locator) => hrefForLocator(ctx, locator), locale: ctx.locale, showMeasureRefs: false })\n : statDisplayOf(value, ctx.locale)}\n </div>\n {detail !== undefined ? <div className=\"niceeval-stat-detail\">{resolveLocalizedText(detail, ctx.locale)}</div> : null}\n </div>);\n },\n text({ label, value, detail }, ctx) {\n const lines = [resolveLocalizedText(label, ctx.locale), statDisplayOf(value, ctx.locale)];\n if (detail !== undefined)\n lines.push(resolveLocalizedText(detail, ctx.locale));\n return lines.flatMap((line) => wrapDisplay(line, ctx.width)).join(\"\\n\");\n },\n});\nStat.displayName = \"Stat\";\n// ───────────────────────── Section ─────────────────────────\nexport interface SectionProps extends LayoutProps {\n title: LocalizedText;\n /** 标题行右侧的短元信息;text 面与标题同一行,空间不足时换到下一行。 */\n meta?: LocalizedText;\n}\n/** 带标题的块:网页是标题层级(可选 meta 同行右对齐);终端面框线体裁全部委托给 panel.ts,\n * 这里只负责按 ctx.panelMode 组装 title/meta/rows 喂给它,不自己拼框字符。 */\nexport const Section = defineComponent<SectionProps>({\n dimensions: () => ({}),\n web({ title, meta, children, className }, ctx) {\n const titleText = resolveLocalizedText(title, ctx.locale);\n const metaText = meta !== undefined ? resolveLocalizedText(meta, ctx.locale) : undefined;\n return (<section className={cx(\"niceeval-report\", \"niceeval-section\", className)}>\n {metaText !== undefined ? (<header className=\"niceeval-section-header\">\n <h2 className=\"niceeval-section-title\">{titleText}</h2>\n <p className=\"niceeval-section-meta\">{metaText}</p>\n </header>) : (<h2 className=\"niceeval-section-title\">{titleText}</h2>)}\n {children as ReactNode}\n </section>);\n },\n text({ title, meta, children }, ctx) {\n const heading = resolveLocalizedText(title, ctx.locale);\n const metaText = meta !== undefined ? resolveLocalizedText(meta, ctx.locale) : undefined;\n if (ctx.panelMode !== \"boxed\") {\n // plain:递归天然处理嵌套(每层 Section 各自渲染标题行 + 两格缩进的正文),不需要\n // 横隔展开——降级后所有 Section 都按同一条规则显示,不区分是否嵌套。\n const body = childArray(children)\n .map((child) => ctx.render(child, ctx.width - 2))\n .filter((block) => block.length > 0)\n .join(\"\\n\\n\");\n return renderPanel({\n title: heading,\n meta: metaText,\n rows: body.length > 0 ? [{ kind: \"line\", text: body }] : [],\n width: ctx.width,\n mode: \"plain\",\n }).join(\"\\n\");\n }\n const nested = panelSectionDepth() > 0;\n if (nested) {\n // 横隔走结构化渲染期通道;不把哨兵塞进 text(): string,避免被 Row/Grid 改写或泄漏。\n emitPanelRow({ kind: \"divider\", title: heading, ...(metaText !== undefined ? { meta: metaText } : {}) });\n }\n // 外层 Section 已经把子树放进内容区;嵌套 Section 只登记横隔,不能再扣一次框宽。\n const contentWidth = nested ? ctx.width : panelContentWidth(ctx.width, \"boxed\");\n return withPanelSectionDepth(panelSectionDepth() + 1, () => {\n const rows: PanelRow[] = [];\n const body = withPanelRowCollector((row) => rows.push(row), () => childArray(children)\n .map((child) => ctx.render(child, contentWidth))\n .filter((block) => block.length > 0)\n .join(\"\\n\\n\"));\n if (nested) {\n // 更深一层的横隔由本层收集后,继续上交给真正画框的祖先。\n for (const row of rows)\n emitPanelRow(row);\n return body;\n }\n return renderPanel({\n title: heading,\n meta: metaText,\n rows: [...rows, ...(body.length > 0 ? [{ kind: \"line\", text: body } satisfies PanelRow] : [])],\n width: ctx.width,\n mode: \"boxed\",\n }).join(\"\\n\");\n });\n },\n});\nSection.displayName = \"Section\";\nexport interface TextProps {\n /** 自由正文原样渲染,不随 locale 自动翻译。 */\n children: string | number;\n className?: string;\n}\n/** 自由文本的显式载体:web 面负责转义,text 面按显示宽度折行。 */\nexport const Text = defineComponent<TextProps>({\n dimensions: () => ({}),\n web({ children, className }) {\n return <p className={cx(\"niceeval-report\", \"niceeval-text\", className)}>{children}</p>;\n },\n text({ children }, ctx) {\n return wrapDisplay(String(children), ctx.width).join(\"\\n\");\n },\n});\nText.displayName = \"Text\";\nText[COMPONENT_RAW_CHILDREN] = true;\nexport interface StyleProps {\n children: string;\n}\n/**\n * 注入页级全局 CSS:树位置只决定声明顺序,不限定作用域;text 面零输出。\n * 组件级样式优先走 defineRenderer assets;页内 <Style> 用于页级声明。\n */\nexport const Style = defineComponent<StyleProps>({\n dimensions: () => ({}),\n web({ children }) {\n return <style>{children}</style>;\n },\n text() {\n return \"\";\n },\n});\nStyle.displayName = \"Style\";\nStyle[COMPONENT_RAW_CHILDREN] = true;\n// ───────────────────────── Tabs / Tab ─────────────────────────\nexport interface TabsProps extends LayoutProps {\n}\nexport interface TabProps extends LayoutProps {\n title: LocalizedText;\n}\ninterface TabEntry {\n title: LocalizedText;\n children: ReportNode;\n className?: string;\n}\n/** Tabs 的直接 Tab 子项(数组 / Fragment 已展平;结构合法性由树校验保证)。 */\nfunction tabEntries(children: ReportNode): TabEntry[] {\n const out: TabEntry[] = [];\n const visit = (node: ReportNode): void => {\n if (node === null || node === undefined || typeof node === \"boolean\")\n return;\n if (Array.isArray(node)) {\n for (const child of node)\n visit(child);\n return;\n }\n if (typeof node === \"object\" && node !== null && \"props\" in node) {\n const element = node as {\n type: unknown;\n props: globalThis.Record<string, unknown>;\n };\n if (element.type === Symbol.for(\"react.fragment\")) {\n visit(element.props.children as ReportNode);\n return;\n }\n out.push({\n title: (element.props.title as LocalizedText) ?? \"\",\n children: element.props.children as ReportNode,\n className: element.props.className as string | undefined,\n });\n }\n };\n visit(children);\n return out;\n}\n/**\n * 页内并列视图的可切换块。tab 是页内浏览状态,不是数据边界,也不是宿主寻址单位——\n * 两个渲染面都输出全部 tab 的完整内容:web 静态 HTML 每 tab 一个 <details>(首个默认展开,\n * 渐进增强升级成单选 tab 条,切换不改变数据);text 面按声明序输出带标题分节,不折成索引\n * 也不省略(tab 没有选择器,索引只能是死路)。\n */\nexport const Tabs = defineComponent<TabsProps>({\n dimensions: () => ({}),\n web({ children, className }, ctx) {\n const tabs = tabEntries(children);\n return (<div className={cx(\"niceeval-report\", \"niceeval-tabs\", className)} data-niceeval-tabs>\n {tabs.map((tab, i) => (<details key={i} className={cx(\"niceeval-tab\", tab.className)} open={i === 0}>\n <summary className=\"niceeval-tab-title\">{resolveLocalizedText(tab.title, ctx.locale)}</summary>\n <div className=\"niceeval-tab-body\">{tab.children as ReactNode}</div>\n </details>))}\n </div>);\n },\n text({ children }, ctx) {\n const tabs = tabEntries(children);\n return tabs\n .map((tab, i) => {\n // 隔条只标注归属,不声明边界:tab 正文按整个可用宽度排版、不缩进,宽表与图表在 tab 里\n // 和直接铺在页上占同样的列宽(体裁与理由见 layout.md「区域框」的画框资格段)。\n const heading = resolveLocalizedText(tab.title, ctx.locale);\n const rule = renderRule({\n title: `${heading} ${i + 1}/${tabs.length}`,\n width: ctx.width,\n mode: ctx.panelMode,\n });\n const body = childArray(tab.children)\n .map((child) => ctx.render(child, ctx.width))\n .filter((block) => block.length > 0)\n .join(\"\\n\\n\");\n return body.length > 0 ? `${rule}\\n\\n${body}` : rule;\n })\n .join(\"\\n\\n\");\n },\n});\nTabs.displayName = \"Tabs\";\nTabs[COMPONENT_ROLE] = \"tabs\";\n/** 只能直接放在 <Tabs> 下;除通用 children / className 外只有 title。不参与路由,没有 id。 */\nexport const Tab = defineComponent<TabProps>({\n dimensions: () => ({}),\n web({ children, className }) {\n return <div className={cx(\"niceeval-report\", \"niceeval-tab-body\", className)}>{children as ReactNode}</div>;\n },\n text({ children }, ctx) {\n return childArray(children)\n .map((child) => ctx.render(child))\n .filter((block) => block.length > 0)\n .join(\"\\n\\n\");\n },\n});\nTab.displayName = \"Tab\";\nTab[COMPONENT_ROLE] = \"tab\";\n// ───────────────────────── Table ─────────────────────────\n/** 一列的定义:取哪个 cells 键、表头写什么、往哪边对齐(旧形态 / text 排版共用)。 */\nexport interface TableColumn {\n /** 取 `row.cells[key]` 的键。 */\n key: string;\n /** 表头文案,按渲染 locale 选择。 */\n header: LocalizedText;\n /** 对齐方向,默认 `\"left\"`;`\"right\"` 按显示宽度右对齐,数字列用。 */\n align?: ColumnAlign;\n /** 排序方向提示;省略时该列不可排序。 */\n better?: \"higher\" | \"lower\";\n /**\n * text 面:单元格折行后的最大物理行数,放不下的部分以 `…` 收口;省略则不限行数。\n * web 面不消费——网页的高度约束是组件自己的 CSS 决定。\n */\n maxLines?: number;\n}\n/** 一行的旧形态数据:已格式化的字符串格子。新形态见 TableContentRow。 */\nexport interface TableRow {\n key: string;\n cells: Readonly<globalThis.Record<string, string | null>>;\n locator?: AttemptLocator;\n /** 行树里的层数(顶层 0,省略等同 0)。text 面据此画组边界横线;普通 rows 形态是平表。 */\n depth?: number;\n}\nexport interface TablePresentation {\n sort?: string;\n searchable?: boolean;\n locale?: ReportLocale;\n className?: string;\n}\n/** docs: `columns` 项可以是字段名或 `{ field, label?, hidden? }`。 */\nexport type PlainTableColumn<Row extends object = globalThis.Record<string, unknown>> = (keyof Row & string) | {\n field: keyof Row & string;\n label?: LocalizedText;\n hidden?: boolean;\n};\n/**\n * Table 的公开 props:普通 `rows`(AggregateRow / EvidenceRow / 实体投影)。\n */\nexport type TableProps<Row extends object = globalThis.Record<string, unknown>> = {\n rows: readonly Row[];\n columns?: readonly PlainTableColumn<Row>[];\n} & TablePresentation;\n/** 官方组合组件内部的富 Cell 形状;不从 niceeval/report 导出。 */\nexport type TableContentViewProps = {\n data: TableContent | Dataset | null;\n} & TablePresentation;\ntype TableImplementationProps = TableProps | TableContentViewProps;\nfunction isPlainRowsTableProps(props: TableImplementationProps): props is TableProps {\n return \"rows\" in props;\n}\nfunction isLocalizedTextValue(value: unknown): value is LocalizedText {\n if (typeof value === \"string\")\n return true;\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n return false;\n return Object.values(value as globalThis.Record<string, unknown>).every((v) => typeof v === \"string\");\n}\nfunction isPlainCellValue(value: unknown): value is Cell {\n return !!value && typeof value === \"object\" && !Array.isArray(value) && \"kind\" in value;\n}\n/**\n * Dataset → TableContent(Table 原语消费)。model/dataset.ts 提供封闭投影;面向\n * TableContentView 的展示投影由 tableContentOf 在这里消费。\n */\nfunction datasetToTableContent(dataset: Dataset): TableContent {\n const columns = dataset.fields.map((f) => ({\n key: f.name,\n ...(f.kind === \"metric\" && (f.better === \"higher\" || f.better === \"lower\") ? { better: f.better } : {}),\n ...(f.unit !== undefined ? { unit: f.unit } : {}),\n }));\n const rows = dataset.rows.map((row) => {\n const cells: globalThis.Record<string, Cell> = {};\n for (const field of dataset.fields) {\n const value = row.values[field.name];\n if (field.kind === \"dimension\") {\n cells[field.name] = { kind: \"text\", text: String(value ?? row.key) };\n continue;\n }\n if (!isMetricValue(value)) {\n throw new Error(`Dataset row \"${row.key}\" is missing measure cell for field \"${field.name}\".`);\n }\n cells[field.name] = { kind: \"metric\", metric: value };\n }\n return { key: row.key, cells };\n });\n return { columns, rows };\n}\nfunction plainValueToCell(value: unknown, path: string, locale: ReportLocale): Cell {\n if (value === undefined) {\n throw new Error(`Table ${path} is missing — every declared column must exist on the row object.`);\n }\n if (isMetricValue(value)) {\n return { kind: \"metric\", metric: value };\n }\n if (isPlainCellValue(value))\n return value;\n if (value === null)\n return { kind: \"text\", text: \"—\" };\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return { kind: \"text\", text: String(value) };\n }\n if (isLocalizedTextValue(value)) {\n return { kind: \"text\", text: resolveLocalizedText(value, locale) };\n }\n if (Array.isArray(value)) {\n throw new Error(`Table ${path} is an array — Table rows only accept scalars, LocalizedText, MetricValue, or Cell. Flatten or pick a display field before render.`);\n }\n throw new Error(`Table ${path} has unsupported object type — Table rows only accept scalars, LocalizedText, MetricValue, or Cell.`);\n}\nfunction resolvePlainColumnSpecs(rows: readonly globalThis.Record<string, unknown>[], columns: readonly PlainTableColumn[] | undefined): Array<{\n field: string;\n label?: LocalizedText;\n}> {\n if (columns && columns.length > 0) {\n const out: Array<{\n field: string;\n label?: LocalizedText;\n }> = [];\n for (const col of columns) {\n if (typeof col === \"string\") {\n out.push({ field: col });\n continue;\n }\n if (col.hidden)\n continue;\n out.push({\n field: col.field,\n ...(col.label !== undefined ? { label: col.label } : {}),\n });\n }\n return out;\n }\n const first = rows[0];\n if (!first || typeof first !== \"object\")\n return [];\n return Object.keys(first)\n .filter((key) => key !== \"refs\")\n .map((field) => ({ field }));\n}\nfunction plainRowsToTableContent(rows: readonly globalThis.Record<string, unknown>[], columnSpecs: Array<{\n field: string;\n label?: LocalizedText;\n}>, locale: ReportLocale): TableContent {\n if (columnSpecs.length === 0) {\n throw new Error(\"Table needs at least one column: pass columns, or provide a non-empty rows array with fields.\");\n }\n const columns: ColumnSpec[] = columnSpecs.map((spec) => {\n const sample = rows.map((row) => row[spec.field]).find(isMetricValue);\n // 语义适配:当前 MetricValue.better 含 \"neutral\";列排序方向只认 higher/lower。\n const better = sample?.better === \"higher\" || sample?.better === \"lower\" ? sample.better : undefined;\n return {\n key: spec.field,\n ...(sample?.unit !== undefined ? { unit: sample.unit } : {}),\n ...(better !== undefined ? { better } : {}),\n };\n });\n const contentRows: TableContentRow[] = rows.map((row, index) => {\n // 语义适配:closed 行身份优先取显式 key;缺失时取第一条 evidence ref 的 attempt\n // locator;再缺才按字段值拼稳定 key。\n const refs = row.refs;\n const firstRefLocator = Array.isArray(refs) && refs.length > 0\n ? attemptLocatorOfEvidenceRef(refs[0] as NonNullable<typeof refs>[number])\n : undefined;\n const key = typeof row.key === \"string\"\n ? row.key\n : firstRefLocator !== undefined\n ? firstRefLocator\n : columnSpecs.map((c) => `${c.field}=${String(row[c.field])}`).join(\"|\") || `row-${index}`;\n const cells: globalThis.Record<string, Cell> = {};\n for (const spec of columnSpecs) {\n if (!(spec.field in row)) {\n throw new Error(`Table rows[${index}].${spec.field} is missing — row shape must match columns.`);\n }\n cells[spec.field] = plainValueToCell(row[spec.field], `rows[${index}].${spec.field}`, locale);\n }\n return { key, cells };\n });\n return { columns, rows: contentRows };\n}\n// props → 唯一权威形态:列 + 层级 TableContent。校验只在这里做一次,\n// text / web 两面拿到的是同一棵已校验的行树;text 面的展平是渲染期投影,\n// 不进权威形态,行 key 判重与行形状校验因此永远按层级同层进行。\nfunction tableContentOf(props: TableImplementationProps, locale: ReportLocale): {\n columns: [\n TableColumn,\n ...TableColumn[]\n ];\n content: TableContent;\n} {\n if (isPlainRowsTableProps(props)) {\n const specs = resolvePlainColumnSpecs(props.rows as readonly globalThis.Record<string, unknown>[], props.columns as readonly PlainTableColumn[] | undefined);\n const content = plainRowsToTableContent(props.rows as readonly globalThis.Record<string, unknown>[], specs, locale);\n // 公开 rows 形态:默认原样显示字段名,`label` 覆盖。\n const columns: TableColumn[] = specs.map((spec) => ({\n key: spec.field,\n header: spec.label ?? spec.field,\n align: content.columns.find((c) => c.key === spec.field)?.better ? \"right\" : \"left\",\n better: content.columns.find((c) => c.key === spec.field)?.better,\n }));\n return validatedTable(columns, content);\n }\n const raw = props.data;\n const content = raw === null ? null : isDataset(raw) ? datasetToTableContent(raw) : raw;\n if (content === null)\n return validatedTable([], { columns: [], rows: [] });\n // 表头长在列声明上;没声明就是 key 原样(维度值列走这一支)。\n const columns: TableColumn[] = content.columns.map((spec) => ({\n key: spec.key,\n header: spec.header ?? spec.key,\n align: spec.better ? \"right\" : \"left\",\n better: spec.better,\n }));\n return validatedTable(columns, content);\n}\nfunction validatedTable(columns: TableColumn[], content: TableContent): {\n columns: [\n TableColumn,\n ...TableColumn[]\n ];\n content: TableContent;\n} {\n if (columns.length === 0) {\n throw new Error(\"Table needs at least one column: pass columns, or provide rows whose first item has visible fields.\");\n }\n const keys = new Set<string>();\n for (const column of columns) {\n if (keys.has(column.key)) {\n throw new Error(`Table column key \"${column.key}\" is declared twice — column keys address row.cells and must be unique. Rename one column.`);\n }\n keys.add(column.key);\n }\n validateSiblingRowKeys(content.rows);\n validateRowShapes(content.rows, keys);\n return { columns: columns as [\n TableColumn,\n ...TableColumn[]\n ], content };\n}\n/**\n * 行形状与列集同源:每一行(含 group / placeholder 与各层子行)的 cells key 集合\n * 等于列集。不适用的列显式填 notApplicable,不靠缺格回落成 `—`\n * (docs/feature/reports/library.md「Content 协议」)。\n */\nfunction validateRowShapes(rows: readonly TableContentRow[], columnKeys: ReadonlySet<string>): void {\n for (const row of rows) {\n for (const cellKey of Object.keys(row.cells)) {\n if (!columnKeys.has(cellKey)) {\n throw new Error(`Table row \"${row.key}\" has a cell for \"${cellKey}\", which is not a declared column — row cells and the column set must match exactly, so this cell can never be rendered. Drop the cell, or declare a \"${cellKey}\" column.`);\n }\n }\n for (const columnKey of columnKeys) {\n if (!(columnKey in row.cells)) {\n throw new Error(`Table row \"${row.key}\" has no cell for column \"${columnKey}\" — every declared column needs a cell on every row. Fill it with { kind: \"notApplicable\" } when the column does not apply to this row.`);\n }\n }\n if (row.subRows?.length)\n validateRowShapes(row.subRows, columnKeys);\n }\n}\nfunction validateSiblingRowKeys(rows: readonly TableContentRow[]): void {\n const keys = new Set<string>();\n for (const row of rows) {\n if (keys.has(row.key)) {\n throw new Error(`Table row key \"${row.key}\" is declared twice at the same level — sibling row keys are the row identity and must be unique.`);\n }\n keys.add(row.key);\n if (row.subRows?.length)\n validateSiblingRowKeys(row.subRows);\n }\n}\n// ───────────────────────── Metric 格渲染 ─────────────────────────\n// refs 是 closed EvidenceRef 对象;href 只对 identity.kind === \"attempt\" 的 ref\n// 生成,其它 ref 退化为纯文本序号,不拼假链接。\n/** closed refs 里能变成下钻目标的 attempt locator;单 ref 才可能成链,多 ref 各列一个序号。 */\nfunction refLocatorsOf(refs: readonly MetricValue[\"refs\"][number][]): AttemptLocator[] {\n return refs.flatMap((ref) => {\n const locator = attemptLocatorOfEvidenceRef(ref);\n return locator === undefined ? [] : [locator];\n });\n}\nfunction MetricCellView({ cell, href, locale, showCoverage = true, }: {\n cell: MetricValue;\n /** 单个 locator → URL;缺省(宿主不认识 attempt 目标)时不出现证据链接。 */\n href?: (locator: AttemptLocator) => string | undefined;\n locale?: ReportLocale;\n /** 默认用紧凑角标显示覆盖率;已有展开说明的摘要卡可关闭角标。 */\n showCoverage?: boolean;\n}): ReactNode {\n const loc = locale ?? \"en\";\n if (isCostMetricValue(cell)) {\n return (<span className=\"niceeval-cell\">\n <span className=\"niceeval-value\">{formatCostProjectionAmountText(cell, loc)}</span>\n </span>);\n }\n const text = cell.value === null\n ? missingText(\"noSamples\", loc)\n : formatMetricScalar(cell.value, cell.unit, cell.format, loc);\n if (cell.value === null) {\n return (<span className=\"niceeval-cell niceeval-cell-missing\">\n <span className=\"niceeval-missing\" title={localeText(loc, \"cell.noneMeasurableTitle\", { total: cell.total })}>\n {text}\n </span>\n </span>);\n }\n const refLocators = refLocatorsOf(cell.refs);\n return (<span className=\"niceeval-cell\">\n <span className=\"niceeval-value\" title={localeText(loc, \"cell.measuredTitle\", { samples: cell.samples, total: cell.total })}>\n {text}\n </span>\n {showCoverage && cell.samples < cell.total && (<sup className=\"niceeval-coverage\" title={localeText(loc, \"cell.coverageTitle\", { samples: cell.samples, total: cell.total })}>\n {cell.samples}/{cell.total}\n </sup>)}\n {href && refLocators.length === 1 && href(refLocators[0]!) !== undefined && (<span className=\"niceeval-refs\">\n <a className=\"niceeval-ref\" href={href(refLocators[0]!)}>\n #1\n </a>\n </span>)}\n {href && refLocators.length > 1 && (<details className=\"niceeval-refs\">\n <summary className=\"niceeval-refs-summary\">{countText(loc, \"cell.evidence\", refLocators.length)}</summary>\n <span className=\"niceeval-refs-list\">\n {refLocators.map((locator, i) => href(locator) !== undefined ? (<a key={locator} className=\"niceeval-ref\" href={href(locator)}>\n #{i + 1}\n </a>) : (<span key={locator} className=\"niceeval-ref-text\">\n #{i + 1}\n </span>))}\n </span>\n </details>)}\n </span>);\n}\nfunction renderCellWeb(cell: Cell | undefined, ctx: {\n href: (locator: AttemptLocator) => string | undefined;\n locale: ReportLocale;\n showMeasureRefs?: boolean;\n}): ReactNode {\n if (!cell)\n return <span className=\"niceeval-missing\">{MISSING_MARK}</span>;\n switch (cell.kind) {\n case \"notApplicable\":\n return <span className=\"niceeval-missing\">{MISSING_MARK}</span>;\n case \"missing\": {\n return (<span className=\"niceeval-missing\">\n <span className=\"niceeval-missing-reason\">{missingText(cell.code, ctx.locale)}</span>\n {cell.detail ? <small className=\"niceeval-cell-detail\">{cell.detail}</small> : null}\n </span>);\n }\n case \"text\":\n return (<span className=\"niceeval-cell-text\">\n <span>{cell.text}</span>\n {cell.detail ? <small className=\"niceeval-cell-detail\">{cell.detail}</small> : null}\n </span>);\n case \"locator\": {\n // 判定长在 locator 上:判定符与语义色同场,不靠颜色单独表意\n // (docs/feature/reports/library.md)。\n const verdict = cell.verdict;\n const className = cx(\"niceeval-locator\", verdict !== undefined ? `niceeval-verdict-${verdict}` : undefined);\n const mark = verdict === undefined ? null : (<span className=\"niceeval-locator-mark\" aria-hidden=\"true\">\n {verdictMark(verdict === \"skipped\" ? \"skipped\" : verdict)}\n </span>);\n const href = ctx.href(cell.locator);\n return href !== undefined ? (<a className={className} href={href}>\n {mark}\n {cell.locator}\n </a>) : (<span className={className}>\n {mark}\n {cell.locator}\n </span>);\n }\n case \"summary\":\n case \"score\":\n return formatCellText(cell, ctx.locale);\n case \"verdict\": {\n if (cell.counts) {\n const parts = ([\"passed\", \"failed\", \"errored\", \"skipped\"] as const).filter((kind) => cell.counts![kind] > 0);\n return (<span className=\"niceeval-verdict-tally\">\n {parts.map((kind) => (<span className={`niceeval-verdict-${kind}`} key={kind}>\n {cell.counts![kind]} {localeText(ctx.locale, `verdict.${kind === \"skipped\" ? \"skipped\" : kind}`)}\n </span>))}\n {parts.length === 0 ? <span className=\"niceeval-missing\">{MISSING_MARK}</span> : null}\n </span>);\n }\n const verdict = cell.verdict ?? \"skipped\";\n // 判定符走 verdictMark 单源,与 locator 格同一张表(errored 是 `!`,不并到 `✗`)。\n return (<span className={cx(\"niceeval-verdict\", `niceeval-verdict-${verdict}`)}>\n {verdictMark(verdict === \"skipped\" ? \"skipped\" : verdict)}\n {!cell.bare ? <>{\" \"}{localeText(ctx.locale, `verdict.${verdict === \"skipped\" ? \"skipped\" : verdict}`)}</> : null}\n </span>);\n }\n case \"metric\":\n return (<MetricCellView cell={cell.metric} href={ctx.showMeasureRefs === false ? undefined : ctx.href} locale={ctx.locale}/>);\n default: {\n const _e: never = cell;\n return _e;\n }\n }\n}\nfunction cellSortValue(cell: Cell | undefined): string | number {\n if (!cell)\n return \"\";\n if (cell.kind === \"metric\")\n return cell.metric.value ?? \"\";\n if (cell.kind === \"score\")\n return cell.earned;\n if (cell.kind === \"text\")\n return cell.text;\n if (cell.kind === \"locator\")\n return cell.locator;\n if (cell.kind === \"verdict\" && cell.counts)\n return cell.counts.passed;\n return formatCellText(cell);\n}\n/**\n * 层级表的列轨:只声明宽度从哪来,不写每列多宽。身份列吃掉余量并留可读下限;其余列\n * `fit-content` 贴着自己那一列的内容(封顶一列可读宽度,长文本在列内折行而不是撑爆整表)。\n * 列数以外不看列身份——表格不认识\"这是成本列所以窄一点\"。\n */\nfunction hierarchyGrid(columns: readonly TableColumn[]): string {\n if (columns.length === 1)\n return \"minmax(15rem, 1fr)\";\n return `minmax(15rem, 1fr) repeat(${columns.length - 1}, fit-content(20rem))`;\n}\nfunction renderHierarchyRowsWeb(rows: readonly TableContentRow[], columns: readonly TableColumn[], ctx: {\n href: (locator: AttemptLocator) => string | undefined;\n locale: ReportLocale;\n showMeasureRefs?: boolean;\n}, depth = 0): ReactNode[] {\n return rows.map((row) => {\n const cells = columns.map((column, index) => (<span className={cx(\"niceeval-table-hierarchy-cell\", column.align === \"right\" ? \"niceeval-align-right\" : undefined)} data-sort-value={cellSortValue(row.cells[column.key])} key={column.key} style={index === 0 && depth > 0 ? { paddingLeft: `${depth * 1.25}rem` } : undefined}>\n {renderCellWeb(row.cells[column.key], ctx)}\n </span>));\n const className = cx(\"niceeval-table-hierarchy-row\", row.variant === \"placeholder\" ? \"niceeval-row-placeholder\" : undefined, row.variant === \"group\" ? \"niceeval-row-group\" : undefined);\n if (!row.subRows?.length) {\n return (<div className={className} data-depth={depth || undefined} key={row.key}>\n {cells}\n </div>);\n }\n return (<details className={cx(className, \"niceeval-table-hierarchy-group\")} data-depth={depth || undefined} key={row.key}>\n <summary className=\"niceeval-table-hierarchy-summary\">{cells}</summary>\n <div className=\"niceeval-table-hierarchy-children\">\n {renderHierarchyRowsWeb(row.subRows, columns, ctx, depth + 1)}\n </div>\n </details>);\n });\n}\nfunction renderFlatContentRowsWeb(rows: readonly TableContentRow[], columns: readonly TableColumn[], ctx: {\n href: (locator: AttemptLocator) => string | undefined;\n locale: ReportLocale;\n}): ReactNode[] {\n return rows.map((row) => (<tr key={row.key} className={cx(row.variant === \"placeholder\" ? \"niceeval-row-placeholder\" : undefined, row.variant === \"group\" ? \"niceeval-row-group\" : undefined)}>\n {columns.map((column) => (<td key={column.key} className={column.align === \"right\" ? \"niceeval-align-right\" : undefined}>\n {renderCellWeb(row.cells[column.key], ctx)}\n </td>))}\n </tr>));\n}\n/**\n * 行 × 列原语:公开面吃普通 rows;内部组合组件经 TableContentView 复用同一双面实现。\n */\nconst TableImplementation = defineComponent<TableImplementationProps>({\n dimensions: () => ({}),\n web(props, ctx) {\n const locale = props.locale ?? ctx.locale;\n const { columns, content } = tableContentOf(props, locale);\n const alignClass = (align?: ColumnAlign) => (align === \"right\" ? \"niceeval-align-right\" : undefined);\n const href = (locator: AttemptLocator) => hrefForLocator(ctx, locator);\n const hierarchical = content.rows.some((row) => (row.subRows?.length ?? 0) > 0);\n const table = (<table className={cx(\"niceeval-report\", \"niceeval-table\", hierarchical ? \"niceeval-table--hierarchical\" : undefined, props.className)} style={hierarchical ? ({ \"--table-grid\": hierarchyGrid(columns) } as CSSProperties) : undefined}>\n <thead>\n <tr>\n {columns.map((column) => (<th key={column.key} scope=\"col\" className={cx(alignClass(column.align), props.sort === column.key\n ? column.better === \"lower\"\n ? \"niceeval-sort-asc\"\n : \"niceeval-sort-desc\"\n : undefined)} data-niceeval-sort={column.better ? column.key : undefined}>\n {resolveLocalizedText(column.header, locale)}\n </th>))}\n </tr>\n </thead>\n {hierarchical ? (<tbody>\n <tr>\n <td colSpan={columns.length} className=\"niceeval-table-hierarchy-body\">\n {renderHierarchyRowsWeb(content.rows, columns, {\n href,\n locale,\n showMeasureRefs: false,\n })}\n </td>\n </tr>\n </tbody>) : (<tbody>{renderFlatContentRowsWeb(content.rows, columns, { href, locale })}</tbody>)}\n </table>);\n const searchable = props.searchable === true;\n if (!searchable)\n return table;\n return (<div className=\"niceeval-report niceeval-table-wrap\">\n <input className=\"niceeval-filter\" data-niceeval-filter=\"\" type=\"search\" placeholder={localeText(locale, columns[0].key === \"entity\" ? \"experimentList.filterPlaceholder\" : \"table.filterPlaceholder\")}/>\n {table}\n </div>);\n },\n text(props, ctx) {\n const locale = props.locale ?? ctx.locale;\n const { columns, content } = tableContentOf(props, locale);\n const flat = flattenTableContentForText(content, locale);\n return renderTableText({ columns, rows: flat.rows.map((row) => ({ key: row.key, cells: row.cells, depth: row.depth })), locale }, ctx);\n },\n});\ntype TableComponent = ReportComponent<TableProps> & {\n <Row extends object>(props: TableProps<Row>): ReactNode;\n};\nexport const Table = TableImplementation as TableComponent;\nexport const TableContentView = TableImplementation as ReportComponent<TableContentViewProps>;\nTable.displayName = \"Table\";\n// ───────────────────────── Link / Download 双面原语 ─────────────────────────\n// Link 与 Download 直接消费普通 closed 值;链接由 ctx.href/ctx.command 解析,下载由 Host\n// 的 asset closure 收集,不经过 generic semantic model。\n/**\n * Host 经 `ctx.href` 服务下载目标时使用的保留 target page id。它不是作者可声明的 Page,\n * 也不进页索引;Host 的 href 实现按 `params.path` 把下载映射到 revision 里已经收集的\n * 下载文件 URL。作者 Page 不得使用这个 id(与 `ATTEMPT_PAGE_ID` 同一条集中知识纪律)。\n */\nexport const DOWNLOAD_TARGET_PAGE = \"niceeval.report.download\";\nexport interface LinkProps {\n /** 下钻目标。目标页不存在、params 编码失败或宿主服务不了时两面退化为纯文本——不产出空/假 href。 */\n target: ReportTarget;\n /** 链接内容(报告树;resolve 正常展开,text 面按当前宽度渲染)。 */\n children?: ReportNode;\n className?: string;\n}\n/**\n * 作者显式下钻链接。web 面经 `ctx.href(target)` 成链(undefined 时渲染纯文本 span);\n * text 面经 `ctx.command(target)` 给出下钻命令(undefined 时只渲染内容文本)。\n * 与表格格、图表点共用同一条「目标 → href/命令」唯一通道,组件对宿主能力零知识。\n */\nexport const Link = defineComponent<LinkProps>({\n dimensions: () => ({}),\n web({ target, children, className }, ctx) {\n const href = ctx.href(target);\n const content = children as ReactNode;\n if (href !== undefined) {\n return (<a className={cx(\"niceeval-report\", \"niceeval-link\", className)} href={href}>\n {content}\n </a>);\n }\n return (<span className={cx(\"niceeval-report\", \"niceeval-link\", \"niceeval-link--plain\", className)}>{content}</span>);\n },\n text({ target, children }, ctx) {\n const command = ctx.command(target);\n const body = childArray(children)\n .map((child) => typeof child === \"string\" || typeof child === \"number\" || typeof child === \"bigint\"\n ? String(child)\n : ctx.render(child))\n .filter((block) => block.length > 0)\n .join(\"\\n\\n\");\n if (command === undefined)\n return body;\n return body.length > 0 ? `${body} ${command}` : command;\n },\n});\nLink.displayName = \"Link\";\n// Link labels intentionally accept ordinary React text children. The face\n// above owns their explicit text semantics.\nLink[COMPONENT_RAW_CHILDREN] = true;\nexport interface DownloadProps {\n /** 已关闭的下载文件。渲染面只做形状校验,绝不改写 bytes;Host 用 downloads.ts 的收集器。 */\n file: DownloadFile;\n /** 链接文字;省略时用 file.path。 */\n label?: LocalizedText;\n className?: string;\n}\n/**\n * 站点下载链接(可访问性:链接文字就是可访问名称;`download` 提示浏览器保存、\n * `type` 标注媒体类型)。`file.bytes` 留在已 resolve 的 props 里,由 Host 经\n * `./primitives/downloads.ts` 的 `collectDownloads` 复制进 revision 下载集\n * (内部导出,不进 niceeval/report 公共出口),并把\n * `ctx.href({ page: DOWNLOAD_TARGET_PAGE, params: { path } })` 映射到该文件的最终\n * 站点 URL;web 面拿不到该 URL 时退化为纯文本;text 面给出 `niceeval` 下钻命令或\n * 原样列出 path。两面都不读 Sample、不重新解释 path 或 bytes。\n */\nexport const Download = defineComponent<DownloadProps>({\n dimensions: () => ({}),\n web({ file, label, className }, ctx) {\n assertDownloadFile(file);\n const locale = ctx.locale;\n const text = label !== undefined ? resolveLocalizedText(label, locale) : file.path;\n const href = ctx.href({ page: DOWNLOAD_TARGET_PAGE, params: { path: file.path } });\n if (href !== undefined) {\n return (<a className={cx(\"niceeval-report\", \"niceeval-download\", className)} href={href} download={file.path.split(\"/\").pop()} type={file.mediaType}>\n {text}\n </a>);\n }\n return (<span className={cx(\"niceeval-report\", \"niceeval-download\", \"niceeval-download--plain\", className)}>\n {text}\n </span>);\n },\n text({ file, label }, ctx) {\n assertDownloadFile(file);\n const title = label !== undefined ? resolveLocalizedText(label, ctx.locale) : file.path;\n const command = ctx.command({ page: DOWNLOAD_TARGET_PAGE, params: { path: file.path } });\n if (command !== undefined)\n return `${title} ${command}`;\n return title === file.path ? file.path : `${title}\\n ${file.path}`;\n },\n});\nDownload.displayName = \"Download\";\n// 公开面只含组件与类型;downloads.ts 的收集器是内部导出,不得从这里 re-export。\nexport type { DownloadFile } from \"./primitives/downloads.ts\";\nexport { Waterfall, waterfallText } from \"./primitives/waterfall.tsx\";\nexport type { WaterfallContent, WaterfallNode, WaterfallProps, WaterfallRow } from \"./primitives/waterfall.tsx\";\nexport { Callouts } from \"./primitives/callouts.tsx\";\nexport type { CalloutGroup, CalloutItem, CalloutLevel, CalloutsProps } from \"./primitives/callouts.tsx\";\nexport { CopyBlock } from \"./primitives/copy-block.tsx\";\nexport type { CopyBlockContent, CopyBlockProps } from \"./primitives/copy-block.tsx\";\nexport { DiffView, diffViewText } from \"./primitives/diff-view.tsx\";\nexport type { DiffChange, DiffContent, DiffFile, DiffFileWindow, DiffViewProps } from \"./primitives/diff-view.tsx\";\nexport { CommandEvidence, Conversation, ConversationEntries, conversationText, sanitizeConversationPreview } from \"./primitives/conversation.tsx\";\nexport { TurnTrace, type TurnTraceProps } from \"./primitives/turn-trace.tsx\";\nexport type { CommandEvidenceContent, CommandEvidenceItem, CommandEvidenceProps, ConversationContent, ConversationEntry, ConversationProps, ConversationTurn, } from \"./primitives/conversation.tsx\";\nexport { Markdown, parseMarkdown, markdownToText, markdownToWeb } from \"./primitives/markdown.tsx\";\nexport type { MarkdownAst, MarkdownProps } from \"./primitives/markdown.tsx\";\nexport { SourceView, sourceViewText } from \"./primitives/source-view.tsx\";\nexport type { SourceBlockContent, SourceCallContent, SourceContent, SourceLine, SourceLineTone, SourceViewProps, } from \"./primitives/source-view.tsx\";\nexport { Chart, Series } from \"./primitives/chart.tsx\";\nexport type { ChartPresentation, ChartProps } from \"./primitives/chart.tsx\";\nexport type { SeriesProps, ChartAxisBinding, ChartFieldBinding, ChartSeriesOverride } from \"./primitives/chart-map.ts\";\nexport { Scatter, Line, Bars, Area, applyBarsSortLimit } from \"./primitives/marks.tsx\";\nexport type { ScatterProps, ExternalScatterProps, LineProps, ExternalLineProps, BarsProps, ExternalBarsProps, BarsSort, EvidenceAxisKey, EvidenceDimensionKey, ExternalAxisKey, AreaProps, ExternalAreaProps, } from \"./primitives/marks.tsx\";\nexport { pointsToDataset } from \"./primitives/points-dataset.ts\";\nexport type { ExternalPoint, PointsChartFields } from \"./primitives/points-dataset.ts\";\n"]}
|
|
1
|
+
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["primitives.tsx"],"names":[],"mappings":"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","sourcesContent":["// 排版原语 Row / Col / Grid / Section / Stat / Text / Markdown / Style / Tabs / Tab / Table:十一个内置\n// 双面组件,没有特殊机制(docs/feature/reports/library.md)。web 面是普通 React 渲染;\n// text 面用 ctx.render(child, 子宽) 显式传宽。Style 注入页级全局 CSS(树位置只决定声明\n// 顺序),text 面渲染为空。Table 是自定义表的标准件,官方表状组件的 text 面也建在它上面。\n// Grid / Stat 的语义层(normalizeGrid 展平校验、text 面的 TextGridPlan 排版)在\n// ./grid-layout.ts(docs/feature/reports/architecture.md「排版原语的语义层与面内布局」);\n// 本文件只声明两面适配,不重复那份算术。\nimport { Children, type CSSProperties, type ReactNode } from \"react\";\nimport type { AttemptLocator } from \"../../attempt-locator.ts\";\nimport { COMPONENT_RAW_CHILDREN, COMPONENT_ROLE, defineComponent, type ReportComponent, type ReportNode, type WebContext, } from \"./tree.ts\";\nimport { attemptLocatorOfEvidenceRef, hrefForLocator } from \"./primitives/shared.ts\";\nimport { countText, localeText, resolveLocalizedText, type LocalizedText, type ReportLocale } from \"../model/locale.ts\";\nimport { joinColumns, padDisplay, stringWidth, wrapDisplay } from \"../model/text-layout.ts\";\nimport type { ColumnAlign } from \"../model/text-layout.ts\";\nimport { DATA_BOX_FRAME_OVERHEAD, dataBoxBorder, dataBoxMode, dataBoxRow, panelContentWidth, renderPanel, renderRule, type PanelRow, } from \"../model/panel.ts\";\nimport { renderTableText } from \"./table-text.ts\";\nimport { gridContainerRules, normalizeGrid, planTextGrid, TEXT_GRID_SEPARATOR } from \"./grid-layout.ts\";\nimport type { Dataset } from \"../model/types.ts\";\nimport { isDataset } from \"../model/dataset.ts\";\nimport { isMetricValue } from \"../model/metrics.ts\";\nimport type { MetricValue } from \"../../analysis/index.ts\";\nimport type { ReportTarget } from \"./report.ts\";\nimport { assertDownloadFile, type DownloadFile } from \"./primitives/downloads.ts\";\nimport { emitPanelRow, panelSectionDepth, withPanelRowCollector, withPanelSectionDepth, } from \"./primitives/text-panel-state.ts\";\nimport { flattenTableContentForText, formatCellText, type Cell, type ColumnSpec, type TableContent, type TableContentRow, } from \"./cell.tsx\";\nimport { formatMetricScalar, missingText, verdictMark } from \"../model/format.ts\";\nimport { formatCostProjectionAmountText, isCostMetricValue } from \"../model/pricing.ts\";\nfunction childArray(children: ReportNode): ReportNode[] {\n if (children === null || children === undefined || typeof children === \"boolean\")\n return [];\n return Array.isArray(children) ? [...children] : [children];\n}\nfunction cx(...parts: (string | undefined)[]): string {\n return parts.filter(Boolean).join(\" \");\n}\n/** `null`/缺数据的统一显示符:Table 与 Stat 共用,不补成 0。 */\nconst MISSING_MARK = \"—\";\nexport interface LayoutProps {\n children?: ReportNode;\n className?: string;\n}\nexport type RowProps = LayoutProps;\nexport type ColProps = LayoutProps;\n/** 纵向依次排列:网页是块级堆叠,终端是逐块输出(块间空一行)。两面都按声明序。 */\nexport const Col = defineComponent<ColProps>({\n dimensions: () => ({}),\n web({ children, className }) {\n return (<div className={cx(\"niceeval-report\", \"niceeval-col\", className)}>\n {Children.toArray(children as ReactNode)}\n </div>);\n },\n text({ children }, ctx) {\n return childArray(children)\n .map((child) => ctx.render(child))\n .filter((block) => block.length > 0)\n .join(\"\\n\\n\");\n },\n});\nCol.displayName = \"Col\";\nconst COLUMN_SEPARATOR = \" │ \";\n/** 一段已渲染文本的自然显示宽度(最长一行)。 */\nfunction blockWidth(block: string): number {\n return Math.max(...block.split(\"\\n\").map((line) => stringWidth(line)), 0);\n}\n/**\n * 并排:web 面横排;text 面在可用宽度装得下全部子块时按显示宽度并排(与 `columns` 工具\n * 同一把尺),装不下时整块退化为纵向堆叠——不截断、不隐藏任何子块。\n */\nexport const Row = defineComponent<RowProps>({\n dimensions: () => ({}),\n web({ children, className }) {\n return (<div className={cx(\"niceeval-report\", \"niceeval-row\", className)}>\n {Children.toArray(children as ReactNode)}\n </div>);\n },\n text({ children }, ctx) {\n const blocks = childArray(children).filter((child) => child !== null && child !== undefined && typeof child !== \"boolean\");\n if (blocks.length === 0)\n return \"\";\n if (blocks.length === 1)\n return ctx.render(blocks[0]);\n const rendered = blocks.map((child) => ctx.render(child)).filter((block) => block.length > 0);\n if (rendered.length === 0)\n return \"\";\n const widths = rendered.map(blockWidth);\n const total = widths.reduce((sum, w) => sum + w, 0) + COLUMN_SEPARATOR.length * (rendered.length - 1);\n if (total > ctx.width) {\n // 装不下:整块退化为纵向堆叠,与 Col 同一形态\n return rendered.join(\"\\n\\n\");\n }\n return joinColumns(rendered, widths, COLUMN_SEPARATOR);\n },\n});\nRow.displayName = \"Row\";\n// ───────────────────────── Grid / Stat ─────────────────────────\nexport type GridProps = LayoutProps;\n/**\n * 一行格子的物理行:每格按自己的列宽补白(不 trim 行尾——右边框要对齐成一条直线),\n * 行高取该行最高的那一格,矮格补空白格。\n */\nfunction framedGridRows(blocks: readonly string[], widths: readonly number[], outerFrame: boolean): string[] {\n const columns = blocks.map((block) => block.split(\"\\n\"));\n const height = Math.max(...columns.map((lines) => lines.length), 1);\n const out: string[] = [];\n for (let i = 0; i < height; i++) {\n out.push(dataBoxRow(columns.map((lines, c) => padDisplay(lines[i] ?? \"\", widths[c]!)), outerFrame));\n }\n return out;\n}\n/**\n * 自由摘要面板的格子容器:只负责呈现,不读取 Sample、不聚合 Metric。每个直接子节点\n * (数组 / Fragment 先按 ReportNode 规则展平,空分支不占格)是一格;`Col` 把多个区块\n * 归成一格。列数、边框与体量全由格数 × 可用宽度算出(./grid-layout.ts),Grid 不收这些\n * 参数,本文件只做两面结构适配。\n */\nexport const Grid = defineComponent<GridProps>({\n dimensions: () => ({}),\n web({ children, className }) {\n const normalized = normalizeGrid({ children });\n const cellCount = normalized.cells.length;\n const rules = gridContainerRules(cellCount);\n return (<div className=\"niceeval-report niceeval-grid-fit\">\n {rules ? <style>{rules}</style> : null}\n <div className={cx(\"niceeval-report\", \"niceeval-grid\", className)} data-cells={cellCount}>\n {normalized.cells.map((cell) => (<div className=\"niceeval-grid-cell\" key={cell.key}>\n {cell.node as ReactNode}\n </div>))}\n </div>\n </div>);\n },\n text({ children }, ctx) {\n const normalized = normalizeGrid({ children });\n if (normalized.cells.length === 0)\n return \"\";\n const lines = dataBoxMode(ctx.panelMode, ctx.width) === \"boxed\";\n // 嵌在画框的 Section 里只留列边界与行间线:边界已由面板的框给出,不套二层框。\n const outerFrame = lines && panelSectionDepth() === 0;\n const plan = planTextGrid({\n availableWidth: outerFrame ? ctx.width - DATA_BOX_FRAME_OVERHEAD : ctx.width,\n cellCount: normalized.cells.length,\n });\n // 确定计划后才对每个 cell 调用一次 ctx.render——不为试探列数重复渲染。\n // 末行不足一整行时,最后一格吃掉剩余宽度(只剩一格就是铺满整行)——右边框因此始终\n // 对齐成一条直线,短末行不把框拉成锯齿。\n const cellWidths = normalized.cells.map((_, i) => {\n const col = i % plan.columns;\n const lastRowStart = Math.floor((normalized.cells.length - 1) / plan.columns) * plan.columns;\n const isLastCell = i === normalized.cells.length - 1;\n const lastRowCells = normalized.cells.length - lastRowStart;\n if (!isLastCell || lastRowCells === plan.columns)\n return plan.contentWidths[col];\n if (lastRowCells === 1)\n return plan.fullRowContentWidth;\n // 吃掉右侧空出来的列宽与它们的格线。\n const rest = plan.contentWidths.slice(col);\n return rest.reduce((sum, w) => sum + w, 0) + TEXT_GRID_SEPARATOR.length * (rest.length - 1);\n });\n const blocks = normalized.cells.map((cell, i) => ctx.render(cell.node, cellWidths[i]));\n // 格宽贴合内容:计划宽度是排版上限(子节点按它折行),画框时收到这一列真正用掉的宽度\n // ——摘要格里是 `80%`、`$0.92` 这种短读数,格子不为占满终端而撑开。\n const columnWidths = plan.contentWidths.map((planned, col) => {\n const widest = blocks.reduce((max, block, i) => {\n if (i % plan.columns !== col || cellWidths[i] !== planned)\n return max;\n return Math.max(max, blockWidth(block));\n }, 1);\n return Math.min(planned, widest);\n });\n // 末行吃掉剩余宽度的那一格跟着收:它补的是右侧空出来的列宽与格线,按收窄后的列重算。\n const fittedWidths = cellWidths.map((width, i) => {\n const col = i % plan.columns;\n if (width === plan.contentWidths[col])\n return columnWidths[col]!;\n const rest = columnWidths.slice(col);\n return rest.reduce((sum, w) => sum + w, 0) + TEXT_GRID_SEPARATOR.length * (rest.length - 1);\n });\n // 行与行之间是一条行间线,不是空行——格线要连起来才读成一片格子。\n const out: string[] = [];\n let previousRow = 0;\n let lastRowWidths: readonly number[] = plan.contentWidths;\n for (let start = 0; start < blocks.length; start += plan.columns) {\n const rowBlocks = blocks.slice(start, start + plan.columns);\n const rowWidths = fittedWidths.slice(start, start + rowBlocks.length);\n if (!lines) {\n // 朴素形态:格线整体消失,只按列对齐;行与行之间空一行代替行间线。\n if (start > 0)\n out.push(\"\");\n out.push(joinColumns(rowBlocks, rowWidths, \" \"));\n continue;\n }\n if (start === 0 && outerFrame)\n out.push(dataBoxBorder(\"top\", columnWidths, true));\n if (start > 0) {\n out.push(dataBoxBorder(\"rule\", columnWidths.slice(0, previousRow), outerFrame, rowBlocks.length));\n }\n out.push(...framedGridRows(rowBlocks, rowWidths, outerFrame));\n previousRow = rowBlocks.length;\n // 下边框跟随末行的实际列宽——末行最后一格吃掉的那段宽度也要被下边框盖住。\n lastRowWidths = rowWidths;\n }\n if (lines && outerFrame)\n out.push(dataBoxBorder(\"bottom\", lastRowWidths, true));\n return out.join(\"\\n\");\n },\n});\nGrid.displayName = \"Grid\";\nexport type StatTone = \"neutral\" | \"positive\" | \"negative\" | \"warning\";\nexport interface StatProps {\n label: LocalizedText;\n /**\n * 主值。收 Cell 时保住覆盖率与下钻;收标量 / LocalizedText 时是作者已经算好的展示值\n * (与 text 格等价,没有证据可下钻)。\n */\n value: Cell | LocalizedText | number | null;\n /** 主值下面的短解释;省略时不留空行。 */\n detail?: LocalizedText;\n /** 主值的语义色;不从正负号、单位或 Metric.better 猜。默认 neutral。 */\n tone?: StatTone;\n className?: string;\n}\n/**\n * Grid / Stat 共享的显示值规范化:Cell 走 formatCellText / MetricCellView;\n * LocalizedText 走 resolveLocalizedText,number 走当前 locale 的 Intl.NumberFormat,null 变 —。\n */\nfunction statDisplayOf(value: StatProps[\"value\"], locale: ReportLocale): string {\n if (value === null)\n return MISSING_MARK;\n if (typeof value === \"number\")\n return new Intl.NumberFormat(locale).format(value);\n if (typeof value === \"object\" && value !== null && \"kind\" in value) {\n return formatCellText(value as Cell, locale);\n }\n return resolveLocalizedText(value as LocalizedText, locale);\n}\nfunction isCellValue(value: StatProps[\"value\"]): value is Cell {\n return typeof value === \"object\" && value !== null && \"kind\" in value;\n}\n/** label / 主值 / 辅助信息的最小内容单元;可以脱离 Grid 单独使用。 */\nexport const Stat = defineComponent<StatProps>({\n dimensions: () => ({}),\n web({ label, value, detail, tone = \"neutral\", className }, ctx) {\n return (<div className={cx(\"niceeval-report\", \"niceeval-stat\", `niceeval-stat--${tone}`, className)}>\n <div className=\"niceeval-stat-label\">{resolveLocalizedText(label, ctx.locale)}</div>\n <div className=\"niceeval-stat-value\">\n {isCellValue(value)\n ? renderCellWeb(value, { href: (locator) => hrefForLocator(ctx, locator), locale: ctx.locale, showMeasureRefs: false })\n : statDisplayOf(value, ctx.locale)}\n </div>\n {detail !== undefined ? <div className=\"niceeval-stat-detail\">{resolveLocalizedText(detail, ctx.locale)}</div> : null}\n </div>);\n },\n text({ label, value, detail }, ctx) {\n const lines = [resolveLocalizedText(label, ctx.locale), statDisplayOf(value, ctx.locale)];\n if (detail !== undefined)\n lines.push(resolveLocalizedText(detail, ctx.locale));\n return lines.flatMap((line) => wrapDisplay(line, ctx.width)).join(\"\\n\");\n },\n});\nStat.displayName = \"Stat\";\n// ───────────────────────── Section ─────────────────────────\nexport interface SectionProps extends LayoutProps {\n title: LocalizedText;\n /** 标题行右侧的短元信息;text 面与标题同一行,空间不足时换到下一行。 */\n meta?: LocalizedText;\n}\n/** 带标题的块:网页是标题层级(可选 meta 同行右对齐);终端面框线体裁全部委托给 panel.ts,\n * 这里只负责按 ctx.panelMode 组装 title/meta/rows 喂给它,不自己拼框字符。 */\nexport const Section = defineComponent<SectionProps>({\n dimensions: () => ({}),\n web({ title, meta, children, className }, ctx) {\n const titleText = resolveLocalizedText(title, ctx.locale);\n const metaText = meta !== undefined ? resolveLocalizedText(meta, ctx.locale) : undefined;\n return (<section className={cx(\"niceeval-report\", \"niceeval-section\", className)}>\n {metaText !== undefined ? (<header className=\"niceeval-section-header\">\n <h2 className=\"niceeval-section-title\">{titleText}</h2>\n <p className=\"niceeval-section-meta\">{metaText}</p>\n </header>) : (<h2 className=\"niceeval-section-title\">{titleText}</h2>)}\n {children as ReactNode}\n </section>);\n },\n text({ title, meta, children }, ctx) {\n const heading = resolveLocalizedText(title, ctx.locale);\n const metaText = meta !== undefined ? resolveLocalizedText(meta, ctx.locale) : undefined;\n if (ctx.panelMode !== \"boxed\") {\n // plain:递归天然处理嵌套(每层 Section 各自渲染标题行 + 两格缩进的正文),不需要\n // 横隔展开——降级后所有 Section 都按同一条规则显示,不区分是否嵌套。\n const body = childArray(children)\n .map((child) => ctx.render(child, ctx.width - 2))\n .filter((block) => block.length > 0)\n .join(\"\\n\\n\");\n return renderPanel({\n title: heading,\n meta: metaText,\n rows: body.length > 0 ? [{ kind: \"line\", text: body }] : [],\n width: ctx.width,\n mode: \"plain\",\n }).join(\"\\n\");\n }\n const nested = panelSectionDepth() > 0;\n if (nested) {\n // 横隔走结构化渲染期通道;不把哨兵塞进 text(): string,避免被 Row/Grid 改写或泄漏。\n emitPanelRow({ kind: \"divider\", title: heading, ...(metaText !== undefined ? { meta: metaText } : {}) });\n }\n // 外层 Section 已经把子树放进内容区;嵌套 Section 只登记横隔,不能再扣一次框宽。\n const contentWidth = nested ? ctx.width : panelContentWidth(ctx.width, \"boxed\");\n return withPanelSectionDepth(panelSectionDepth() + 1, () => {\n const rows: PanelRow[] = [];\n const body = withPanelRowCollector((row) => rows.push(row), () => childArray(children)\n .map((child) => ctx.render(child, contentWidth))\n .filter((block) => block.length > 0)\n .join(\"\\n\\n\"));\n if (nested) {\n // 更深一层的横隔由本层收集后,继续上交给真正画框的祖先。\n for (const row of rows)\n emitPanelRow(row);\n return body;\n }\n return renderPanel({\n title: heading,\n meta: metaText,\n rows: [...rows, ...(body.length > 0 ? [{ kind: \"line\", text: body } satisfies PanelRow] : [])],\n width: ctx.width,\n mode: \"boxed\",\n }).join(\"\\n\");\n });\n },\n});\nSection.displayName = \"Section\";\nexport interface TextProps {\n /** 自由正文原样渲染,不随 locale 自动翻译。 */\n children: string | number;\n className?: string;\n}\n/** 自由文本的显式载体:web 面负责转义,text 面按显示宽度折行。 */\nexport const Text = defineComponent<TextProps>({\n dimensions: () => ({}),\n web({ children, className }) {\n return <p className={cx(\"niceeval-report\", \"niceeval-text\", className)}>{children}</p>;\n },\n text({ children }, ctx) {\n return wrapDisplay(String(children), ctx.width).join(\"\\n\");\n },\n});\nText.displayName = \"Text\";\nText[COMPONENT_RAW_CHILDREN] = true;\nexport interface StyleProps {\n children: string;\n}\n/**\n * 注入页级全局 CSS:树位置只决定声明顺序,不限定作用域;text 面零输出。\n * 组件级样式优先走 defineRenderer assets;页内 <Style> 用于页级声明。\n */\nexport const Style = defineComponent<StyleProps>({\n dimensions: () => ({}),\n web({ children }) {\n return <style>{children}</style>;\n },\n text() {\n return \"\";\n },\n});\nStyle.displayName = \"Style\";\nStyle[COMPONENT_RAW_CHILDREN] = true;\n// ───────────────────────── Tabs / Tab ─────────────────────────\nexport interface TabsProps extends LayoutProps {\n}\nexport interface TabProps extends LayoutProps {\n title: LocalizedText;\n}\ninterface TabEntry {\n title: LocalizedText;\n children: ReportNode;\n className?: string;\n}\n/** Tabs 的直接 Tab 子项(数组 / Fragment 已展平;结构合法性由树校验保证)。 */\nfunction tabEntries(children: ReportNode): TabEntry[] {\n const out: TabEntry[] = [];\n const visit = (node: ReportNode): void => {\n if (node === null || node === undefined || typeof node === \"boolean\")\n return;\n if (Array.isArray(node)) {\n for (const child of node)\n visit(child);\n return;\n }\n if (typeof node === \"object\" && node !== null && \"props\" in node) {\n const element = node as {\n type: unknown;\n props: globalThis.Record<string, unknown>;\n };\n if (element.type === Symbol.for(\"react.fragment\")) {\n visit(element.props.children as ReportNode);\n return;\n }\n out.push({\n title: (element.props.title as LocalizedText) ?? \"\",\n children: element.props.children as ReportNode,\n className: element.props.className as string | undefined,\n });\n }\n };\n visit(children);\n return out;\n}\n/**\n * 页内并列视图的可切换块。tab 是页内浏览状态,不是数据边界,也不是宿主寻址单位——\n * 两个渲染面都输出全部 tab 的完整内容:web 静态 HTML 每 tab 一个 <details>(首个默认展开,\n * 渐进增强升级成单选 tab 条,切换不改变数据);text 面按声明序输出带标题分节,不折成索引\n * 也不省略(tab 没有选择器,索引只能是死路)。\n */\nexport const Tabs = defineComponent<TabsProps>({\n dimensions: () => ({}),\n web({ children, className }, ctx) {\n const tabs = tabEntries(children);\n return (<div className={cx(\"niceeval-report\", \"niceeval-tabs\", className)} data-niceeval-tabs>\n {tabs.map((tab, i) => (<details key={i} className={cx(\"niceeval-tab\", tab.className)} open={i === 0}>\n <summary className=\"niceeval-tab-title\">{resolveLocalizedText(tab.title, ctx.locale)}</summary>\n <div className=\"niceeval-tab-body\">{tab.children as ReactNode}</div>\n </details>))}\n </div>);\n },\n text({ children }, ctx) {\n const tabs = tabEntries(children);\n return tabs\n .map((tab, i) => {\n // 隔条只标注归属,不声明边界:tab 正文按整个可用宽度排版、不缩进,宽表与图表在 tab 里\n // 和直接铺在页上占同样的列宽(体裁与理由见 layout.md「区域框」的画框资格段)。\n const heading = resolveLocalizedText(tab.title, ctx.locale);\n const rule = renderRule({\n title: `${heading} ${i + 1}/${tabs.length}`,\n width: ctx.width,\n mode: ctx.panelMode,\n });\n const body = childArray(tab.children)\n .map((child) => ctx.render(child, ctx.width))\n .filter((block) => block.length > 0)\n .join(\"\\n\\n\");\n return body.length > 0 ? `${rule}\\n\\n${body}` : rule;\n })\n .join(\"\\n\\n\");\n },\n});\nTabs.displayName = \"Tabs\";\nTabs[COMPONENT_ROLE] = \"tabs\";\n/** 只能直接放在 <Tabs> 下;除通用 children / className 外只有 title。不参与路由,没有 id。 */\nexport const Tab = defineComponent<TabProps>({\n dimensions: () => ({}),\n web({ children, className }) {\n return <div className={cx(\"niceeval-report\", \"niceeval-tab-body\", className)}>{children as ReactNode}</div>;\n },\n text({ children }, ctx) {\n return childArray(children)\n .map((child) => ctx.render(child))\n .filter((block) => block.length > 0)\n .join(\"\\n\\n\");\n },\n});\nTab.displayName = \"Tab\";\nTab[COMPONENT_ROLE] = \"tab\";\n// ───────────────────────── Table ─────────────────────────\n/** 一列的定义:取哪个 cells 键、表头写什么、往哪边对齐(旧形态 / text 排版共用)。 */\nexport interface TableColumn {\n /** 取 `row.cells[key]` 的键。 */\n key: string;\n /** 表头文案,按渲染 locale 选择。 */\n header: LocalizedText;\n /** 对齐方向,默认 `\"left\"`;`\"right\"` 按显示宽度右对齐,数字列用。 */\n align?: ColumnAlign;\n /** 排序方向提示;省略时该列不可排序。 */\n better?: \"higher\" | \"lower\";\n /**\n * text 面:单元格折行后的最大物理行数,放不下的部分以 `…` 收口;省略则不限行数。\n * web 面不消费——网页的高度约束是组件自己的 CSS 决定。\n */\n maxLines?: number;\n}\n/** 一行的旧形态数据:已格式化的字符串格子。新形态见 TableContentRow。 */\nexport interface TableRow {\n key: string;\n cells: Readonly<globalThis.Record<string, string | null>>;\n locator?: AttemptLocator;\n /** 行树里的层数(顶层 0,省略等同 0)。text 面据此画组边界横线;普通 rows 形态是平表。 */\n depth?: number;\n}\nexport interface TablePresentation {\n sort?: string;\n searchable?: boolean;\n locale?: ReportLocale;\n className?: string;\n}\n/** docs: `columns` 项可以是字段名或 `{ field, label?, hidden? }`。 */\nexport type PlainTableColumn<Row extends object = globalThis.Record<string, unknown>> = (keyof Row & string) | {\n field: keyof Row & string;\n label?: LocalizedText;\n hidden?: boolean;\n};\n/**\n * Table 的公开 props:普通 `rows`(AggregateRow / EvidenceRow / 实体投影)。\n */\nexport type TableProps<Row extends object = globalThis.Record<string, unknown>> = {\n rows: readonly Row[];\n columns?: readonly PlainTableColumn<Row>[];\n} & TablePresentation;\n/** 官方组合组件内部的富 Cell 形状;不从 niceeval/report 导出。 */\nexport type TableContentViewProps = {\n data: TableContent | Dataset | null;\n} & TablePresentation;\ntype TableImplementationProps = TableProps | TableContentViewProps;\nfunction isPlainRowsTableProps(props: TableImplementationProps): props is TableProps {\n return \"rows\" in props;\n}\nfunction isLocalizedTextValue(value: unknown): value is LocalizedText {\n if (typeof value === \"string\")\n return true;\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n return false;\n return Object.values(value as globalThis.Record<string, unknown>).every((v) => typeof v === \"string\");\n}\nfunction isPlainCellValue(value: unknown): value is Cell {\n return !!value && typeof value === \"object\" && !Array.isArray(value) && \"kind\" in value;\n}\n/**\n * Dataset → TableContent(Table 原语消费)。model/dataset.ts 提供封闭投影;面向\n * TableContentView 的展示投影由 tableContentOf 在这里消费。\n */\nfunction datasetToTableContent(dataset: Dataset): TableContent {\n const columns = dataset.fields.map((f) => ({\n key: f.name,\n ...(f.kind === \"metric\" && (f.better === \"higher\" || f.better === \"lower\") ? { better: f.better } : {}),\n ...(f.unit !== undefined ? { unit: f.unit } : {}),\n }));\n const rows = dataset.rows.map((row) => {\n const cells: globalThis.Record<string, Cell> = {};\n for (const field of dataset.fields) {\n const value = row.values[field.name];\n if (field.kind === \"dimension\") {\n cells[field.name] = { kind: \"text\", text: String(value ?? row.key) };\n continue;\n }\n if (!isMetricValue(value)) {\n throw new Error(`Dataset row \"${row.key}\" is missing measure cell for field \"${field.name}\".`);\n }\n cells[field.name] = { kind: \"metric\", metric: value };\n }\n return { key: row.key, cells };\n });\n return { columns, rows };\n}\nfunction plainValueToCell(value: unknown, path: string, locale: ReportLocale): Cell {\n if (value === undefined) {\n throw new Error(`Table ${path} is missing — every declared column must exist on the row object.`);\n }\n if (value !== null &&\n typeof value === \"object\" &&\n Object.hasOwn(value, \"projection\") &&\n !isCostMetricValue(value)) {\n throw new Error(`Table ${path} has unsupported object type — Table rows only accept scalars, LocalizedText, MetricValue, or Cell.`);\n }\n if (isMetricValue(value)) {\n return { kind: \"metric\", metric: value };\n }\n if (isPlainCellValue(value))\n return value;\n if (value === null)\n return { kind: \"text\", text: \"—\" };\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return { kind: \"text\", text: String(value) };\n }\n if (isLocalizedTextValue(value)) {\n return { kind: \"text\", text: resolveLocalizedText(value, locale) };\n }\n if (Array.isArray(value)) {\n throw new Error(`Table ${path} is an array — Table rows only accept scalars, LocalizedText, MetricValue, or Cell. Flatten or pick a display field before render.`);\n }\n throw new Error(`Table ${path} has unsupported object type — Table rows only accept scalars, LocalizedText, MetricValue, or Cell.`);\n}\nfunction resolvePlainColumnSpecs(rows: readonly globalThis.Record<string, unknown>[], columns: readonly PlainTableColumn[] | undefined): Array<{\n field: string;\n label?: LocalizedText;\n}> {\n if (columns && columns.length > 0) {\n const out: Array<{\n field: string;\n label?: LocalizedText;\n }> = [];\n for (const col of columns) {\n if (typeof col === \"string\") {\n out.push({ field: col });\n continue;\n }\n if (col.hidden)\n continue;\n out.push({\n field: col.field,\n ...(col.label !== undefined ? { label: col.label } : {}),\n });\n }\n return out;\n }\n const first = rows[0];\n if (!first || typeof first !== \"object\")\n return [];\n return Object.keys(first)\n .filter((key) => key !== \"refs\")\n .map((field) => ({ field }));\n}\nfunction plainRowsToTableContent(rows: readonly globalThis.Record<string, unknown>[], columnSpecs: Array<{\n field: string;\n label?: LocalizedText;\n}>, locale: ReportLocale): TableContent {\n if (columnSpecs.length === 0) {\n throw new Error(\"Table needs at least one column: pass columns, or provide a non-empty rows array with fields.\");\n }\n const columns: ColumnSpec[] = columnSpecs.map((spec) => {\n const sample = rows\n .map((row) => {\n const value = row[spec.field];\n if (isMetricValue(value))\n return value;\n return isPlainCellValue(value) && value.kind === \"metric\" ? value.metric : undefined;\n })\n .find((value): value is MetricValue => value !== undefined);\n // 语义适配:当前 MetricValue.better 含 \"neutral\";列排序方向只认 higher/lower。\n const better = sample?.better === \"higher\" || sample?.better === \"lower\" ? sample.better : undefined;\n return {\n key: spec.field,\n ...(sample?.unit !== undefined ? { unit: sample.unit } : {}),\n ...(better !== undefined ? { better } : {}),\n };\n });\n const contentRows: TableContentRow[] = rows.map((row, index) => {\n // 语义适配:closed 行身份优先取显式 key;缺失时取第一条 evidence ref 的 attempt\n // locator;再缺才按字段值拼稳定 key。\n const refs = row.refs;\n const firstRefLocator = Array.isArray(refs) && refs.length > 0\n ? attemptLocatorOfEvidenceRef(refs[0] as NonNullable<typeof refs>[number])\n : undefined;\n const key = typeof row.key === \"string\"\n ? row.key\n : firstRefLocator !== undefined\n ? firstRefLocator\n : columnSpecs.map((c) => `${c.field}=${String(row[c.field])}`).join(\"|\") || `row-${index}`;\n const cells: globalThis.Record<string, Cell> = {};\n for (const spec of columnSpecs) {\n if (!(spec.field in row)) {\n throw new Error(`Table rows[${index}].${spec.field} is missing — row shape must match columns.`);\n }\n cells[spec.field] = plainValueToCell(row[spec.field], `rows[${index}].${spec.field}`, locale);\n }\n return { key, cells };\n });\n return { columns, rows: contentRows };\n}\n// props → 唯一权威形态:列 + 层级 TableContent。校验只在这里做一次,\n// text / web 两面拿到的是同一棵已校验的行树;text 面的展平是渲染期投影,\n// 不进权威形态,行 key 判重与行形状校验因此永远按层级同层进行。\nfunction tableContentOf(props: TableImplementationProps, locale: ReportLocale): {\n columns: [\n TableColumn,\n ...TableColumn[]\n ];\n content: TableContent;\n} {\n if (isPlainRowsTableProps(props)) {\n const specs = resolvePlainColumnSpecs(props.rows as readonly globalThis.Record<string, unknown>[], props.columns as readonly PlainTableColumn[] | undefined);\n const content = plainRowsToTableContent(props.rows as readonly globalThis.Record<string, unknown>[], specs, locale);\n // 公开 rows 形态:默认原样显示字段名,`label` 覆盖。\n const columns: TableColumn[] = specs.map((spec) => ({\n key: spec.field,\n header: spec.label ?? spec.field,\n align: content.columns.find((c) => c.key === spec.field)?.better ? \"right\" : \"left\",\n better: content.columns.find((c) => c.key === spec.field)?.better,\n }));\n return validatedTable(columns, content);\n }\n const raw = props.data;\n const content = raw === null ? null : isDataset(raw) ? datasetToTableContent(raw) : raw;\n if (content === null)\n return validatedTable([], { columns: [], rows: [] });\n // 表头长在列声明上;没声明就是 key 原样(维度值列走这一支)。\n const columns: TableColumn[] = content.columns.map((spec) => ({\n key: spec.key,\n header: spec.header ?? spec.key,\n align: spec.better ? \"right\" : \"left\",\n better: spec.better,\n }));\n return validatedTable(columns, content);\n}\nfunction validatedTable(columns: TableColumn[], content: TableContent): {\n columns: [\n TableColumn,\n ...TableColumn[]\n ];\n content: TableContent;\n} {\n if (columns.length === 0) {\n throw new Error(\"Table needs at least one column: pass columns, or provide rows whose first item has visible fields.\");\n }\n const keys = new Set<string>();\n for (const column of columns) {\n if (keys.has(column.key)) {\n throw new Error(`Table column key \"${column.key}\" is declared twice — column keys address row.cells and must be unique. Rename one column.`);\n }\n keys.add(column.key);\n }\n validateSiblingRowKeys(content.rows);\n validateRowShapes(content.rows, keys);\n return { columns: columns as [\n TableColumn,\n ...TableColumn[]\n ], content };\n}\n/**\n * 行形状与列集同源:每一行(含 group / placeholder 与各层子行)的 cells key 集合\n * 等于列集。不适用的列显式填 notApplicable,不靠缺格回落成 `—`\n * (docs/feature/reports/library.md「Content 协议」)。\n */\nfunction validateRowShapes(rows: readonly TableContentRow[], columnKeys: ReadonlySet<string>): void {\n for (const row of rows) {\n for (const cellKey of Object.keys(row.cells)) {\n if (!columnKeys.has(cellKey)) {\n throw new Error(`Table row \"${row.key}\" has a cell for \"${cellKey}\", which is not a declared column — row cells and the column set must match exactly, so this cell can never be rendered. Drop the cell, or declare a \"${cellKey}\" column.`);\n }\n }\n for (const columnKey of columnKeys) {\n if (!(columnKey in row.cells)) {\n throw new Error(`Table row \"${row.key}\" has no cell for column \"${columnKey}\" — every declared column needs a cell on every row. Fill it with { kind: \"notApplicable\" } when the column does not apply to this row.`);\n }\n }\n if (row.subRows?.length)\n validateRowShapes(row.subRows, columnKeys);\n }\n}\nfunction validateSiblingRowKeys(rows: readonly TableContentRow[]): void {\n const keys = new Set<string>();\n for (const row of rows) {\n if (keys.has(row.key)) {\n throw new Error(`Table row key \"${row.key}\" is declared twice at the same level — sibling row keys are the row identity and must be unique.`);\n }\n keys.add(row.key);\n if (row.subRows?.length)\n validateSiblingRowKeys(row.subRows);\n }\n}\n// ───────────────────────── Metric 格渲染 ─────────────────────────\n// refs 是 closed EvidenceRef 对象;href 只对 identity.kind === \"attempt\" 的 ref\n// 生成,其它 ref 退化为纯文本序号,不拼假链接。\n/** closed refs 里能变成下钻目标的 attempt locator;单 ref 才可能成链,多 ref 各列一个序号。 */\nfunction refLocatorsOf(refs: readonly MetricValue[\"refs\"][number][]): AttemptLocator[] {\n return refs.flatMap((ref) => {\n const locator = attemptLocatorOfEvidenceRef(ref);\n return locator === undefined ? [] : [locator];\n });\n}\nfunction MetricCellView({ cell, href, locale, showCoverage = true, }: {\n cell: MetricValue;\n /** 单个 locator → URL;缺省(宿主不认识 attempt 目标)时不出现证据链接。 */\n href?: (locator: AttemptLocator) => string | undefined;\n locale?: ReportLocale;\n /** 默认用紧凑角标显示覆盖率;已有展开说明的摘要卡可关闭角标。 */\n showCoverage?: boolean;\n}): ReactNode {\n const loc = locale ?? \"en\";\n if (isCostMetricValue(cell)) {\n return (<span className=\"niceeval-cell\">\n <span className=\"niceeval-value\">{formatCostProjectionAmountText(cell, loc)}</span>\n </span>);\n }\n const text = cell.value === null\n ? missingText(\"noSamples\", loc)\n : formatMetricScalar(cell.value, cell.unit, cell.format, loc);\n if (cell.value === null) {\n return (<span className=\"niceeval-cell niceeval-cell-missing\">\n <span className=\"niceeval-missing\" title={localeText(loc, \"cell.noneMeasurableTitle\", { total: cell.total })}>\n {text}\n </span>\n </span>);\n }\n const refLocators = refLocatorsOf(cell.refs);\n return (<span className=\"niceeval-cell\">\n <span className=\"niceeval-value\" title={localeText(loc, \"cell.measuredTitle\", { samples: cell.samples, total: cell.total })}>\n {text}\n </span>\n {showCoverage && cell.samples < cell.total && (<sup className=\"niceeval-coverage\" title={localeText(loc, \"cell.coverageTitle\", { samples: cell.samples, total: cell.total })}>\n {cell.samples}/{cell.total}\n </sup>)}\n {href && refLocators.length === 1 && href(refLocators[0]!) !== undefined && (<span className=\"niceeval-refs\">\n <a className=\"niceeval-ref\" href={href(refLocators[0]!)}>\n #1\n </a>\n </span>)}\n {href && refLocators.length > 1 && (<details className=\"niceeval-refs\">\n <summary className=\"niceeval-refs-summary\">{countText(loc, \"cell.evidence\", refLocators.length)}</summary>\n <span className=\"niceeval-refs-list\">\n {refLocators.map((locator, i) => href(locator) !== undefined ? (<a key={locator} className=\"niceeval-ref\" href={href(locator)}>\n #{i + 1}\n </a>) : (<span key={locator} className=\"niceeval-ref-text\">\n #{i + 1}\n </span>))}\n </span>\n </details>)}\n </span>);\n}\nfunction renderCellWeb(cell: Cell | undefined, ctx: {\n href: (locator: AttemptLocator) => string | undefined;\n locale: ReportLocale;\n showMeasureRefs?: boolean;\n}): ReactNode {\n if (!cell)\n return <span className=\"niceeval-missing\">{MISSING_MARK}</span>;\n switch (cell.kind) {\n case \"notApplicable\":\n return <span className=\"niceeval-missing\">{MISSING_MARK}</span>;\n case \"missing\": {\n return (<span className=\"niceeval-missing\">\n <span className=\"niceeval-missing-reason\">{missingText(cell.code, ctx.locale)}</span>\n {cell.detail ? <small className=\"niceeval-cell-detail\">{cell.detail}</small> : null}\n </span>);\n }\n case \"text\":\n return (<span className=\"niceeval-cell-text\">\n <span>{cell.text}</span>\n {cell.detail ? <small className=\"niceeval-cell-detail\">{cell.detail}</small> : null}\n </span>);\n case \"locator\": {\n // 判定长在 locator 上:判定符与语义色同场,不靠颜色单独表意\n // (docs/feature/reports/library.md)。\n const verdict = cell.verdict;\n const className = cx(\"niceeval-locator\", verdict !== undefined ? `niceeval-verdict-${verdict}` : undefined);\n const mark = verdict === undefined ? null : (<span className=\"niceeval-locator-mark\" aria-hidden=\"true\">\n {verdictMark(verdict === \"skipped\" ? \"skipped\" : verdict)}\n </span>);\n const href = ctx.href(cell.locator);\n return href !== undefined ? (<a className={className} href={href}>\n {mark}\n {cell.locator}\n </a>) : (<span className={className}>\n {mark}\n {cell.locator}\n </span>);\n }\n case \"summary\":\n case \"score\":\n return formatCellText(cell, ctx.locale);\n case \"verdict\": {\n if (cell.counts) {\n const parts = ([\"passed\", \"failed\", \"errored\", \"skipped\"] as const).filter((kind) => cell.counts![kind] > 0);\n return (<span className=\"niceeval-verdict-tally\">\n {parts.map((kind) => (<span className={`niceeval-verdict-${kind}`} key={kind}>\n {cell.counts![kind]} {localeText(ctx.locale, `verdict.${kind === \"skipped\" ? \"skipped\" : kind}`)}\n </span>))}\n {parts.length === 0 ? <span className=\"niceeval-missing\">{MISSING_MARK}</span> : null}\n </span>);\n }\n const verdict = cell.verdict ?? \"skipped\";\n // 判定符走 verdictMark 单源,与 locator 格同一张表(errored 是 `!`,不并到 `✗`)。\n return (<span className={cx(\"niceeval-verdict\", `niceeval-verdict-${verdict}`)}>\n {verdictMark(verdict === \"skipped\" ? \"skipped\" : verdict)}\n {!cell.bare ? <>{\" \"}{localeText(ctx.locale, `verdict.${verdict === \"skipped\" ? \"skipped\" : verdict}`)}</> : null}\n </span>);\n }\n case \"metric\":\n return (<MetricCellView cell={cell.metric} href={ctx.showMeasureRefs === false ? undefined : ctx.href} locale={ctx.locale} showCoverage={cell.showCoverage !== false}/>);\n default: {\n const _e: never = cell;\n return _e;\n }\n }\n}\nfunction cellSortValue(cell: Cell | undefined): string | number {\n if (!cell)\n return \"\";\n if (cell.kind === \"metric\")\n return cell.metric.value ?? \"\";\n if (cell.kind === \"score\")\n return cell.earned;\n if (cell.kind === \"text\")\n return cell.text;\n if (cell.kind === \"locator\")\n return cell.locator;\n if (cell.kind === \"verdict\" && cell.counts)\n return cell.counts.passed;\n return formatCellText(cell);\n}\n/**\n * 层级表的列轨:只声明宽度从哪来,不写每列多宽。身份列吃掉余量并留可读下限;其余列\n * `fit-content` 贴着自己那一列的内容(封顶一列可读宽度,长文本在列内折行而不是撑爆整表)。\n * 列数以外不看列身份——表格不认识\"这是成本列所以窄一点\"。\n */\nfunction hierarchyGrid(columns: readonly TableColumn[]): string {\n if (columns.length === 1)\n return \"minmax(15rem, 1fr)\";\n return `minmax(15rem, 1fr) repeat(${columns.length - 1}, fit-content(20rem))`;\n}\nfunction renderHierarchyRowsWeb(rows: readonly TableContentRow[], columns: readonly TableColumn[], ctx: {\n href: (locator: AttemptLocator) => string | undefined;\n locale: ReportLocale;\n showMeasureRefs?: boolean;\n}, depth = 0): ReactNode[] {\n return rows.map((row) => {\n const cells = columns.map((column, index) => (<span className={cx(\"niceeval-table-hierarchy-cell\", column.align === \"right\" ? \"niceeval-align-right\" : undefined)} data-sort-value={cellSortValue(row.cells[column.key])} key={column.key} style={index === 0 && depth > 0 ? { paddingLeft: `${depth * 1.25}rem` } : undefined}>\n {renderCellWeb(row.cells[column.key], ctx)}\n </span>));\n const className = cx(\"niceeval-table-hierarchy-row\", row.variant === \"placeholder\" ? \"niceeval-row-placeholder\" : undefined, row.variant === \"group\" ? \"niceeval-row-group\" : undefined);\n if (!row.subRows?.length) {\n return (<div className={className} data-depth={depth || undefined} key={row.key}>\n {cells}\n </div>);\n }\n return (<details className={cx(className, \"niceeval-table-hierarchy-group\")} data-depth={depth || undefined} key={row.key}>\n <summary className=\"niceeval-table-hierarchy-summary\">{cells}</summary>\n <div className=\"niceeval-table-hierarchy-children\">\n {renderHierarchyRowsWeb(row.subRows, columns, ctx, depth + 1)}\n </div>\n </details>);\n });\n}\nfunction renderFlatContentRowsWeb(rows: readonly TableContentRow[], columns: readonly TableColumn[], ctx: {\n href: (locator: AttemptLocator) => string | undefined;\n locale: ReportLocale;\n}): ReactNode[] {\n return rows.map((row) => (<tr key={row.key} className={cx(row.variant === \"placeholder\" ? \"niceeval-row-placeholder\" : undefined, row.variant === \"group\" ? \"niceeval-row-group\" : undefined)}>\n {columns.map((column) => (<td key={column.key} className={column.align === \"right\" ? \"niceeval-align-right\" : undefined}>\n {renderCellWeb(row.cells[column.key], ctx)}\n </td>))}\n </tr>));\n}\n/**\n * 行 × 列原语:公开面吃普通 rows;内部组合组件经 TableContentView 复用同一双面实现。\n */\nconst TableImplementation = defineComponent<TableImplementationProps>({\n dimensions: () => ({}),\n web(props, ctx) {\n const locale = props.locale ?? ctx.locale;\n const { columns, content } = tableContentOf(props, locale);\n const alignClass = (align?: ColumnAlign) => (align === \"right\" ? \"niceeval-align-right\" : undefined);\n const href = (locator: AttemptLocator) => hrefForLocator(ctx, locator);\n const hierarchical = content.rows.some((row) => (row.subRows?.length ?? 0) > 0);\n const table = (<table className={cx(\"niceeval-report\", \"niceeval-table\", hierarchical ? \"niceeval-table--hierarchical\" : undefined, props.className)} style={hierarchical ? ({ \"--table-grid\": hierarchyGrid(columns) } as CSSProperties) : undefined}>\n <thead>\n <tr>\n {columns.map((column) => (<th key={column.key} scope=\"col\" className={cx(alignClass(column.align), props.sort === column.key\n ? column.better === \"lower\"\n ? \"niceeval-sort-asc\"\n : \"niceeval-sort-desc\"\n : undefined)} data-niceeval-sort={column.better ? column.key : undefined}>\n {resolveLocalizedText(column.header, locale)}\n </th>))}\n </tr>\n </thead>\n {hierarchical ? (<tbody>\n <tr>\n <td colSpan={columns.length} className=\"niceeval-table-hierarchy-body\">\n {renderHierarchyRowsWeb(content.rows, columns, {\n href,\n locale,\n showMeasureRefs: false,\n })}\n </td>\n </tr>\n </tbody>) : (<tbody>{renderFlatContentRowsWeb(content.rows, columns, { href, locale })}</tbody>)}\n </table>);\n const searchable = props.searchable === true;\n if (!searchable)\n return table;\n return (<div className=\"niceeval-report niceeval-table-wrap\">\n <input className=\"niceeval-filter\" data-niceeval-filter=\"\" type=\"search\" placeholder={localeText(locale, columns[0].key === \"entity\" ? \"experimentList.filterPlaceholder\" : \"table.filterPlaceholder\")}/>\n {table}\n </div>);\n },\n text(props, ctx) {\n const locale = props.locale ?? ctx.locale;\n const { columns, content } = tableContentOf(props, locale);\n const flat = flattenTableContentForText(content, locale);\n return renderTableText({ columns, rows: flat.rows.map((row) => ({ key: row.key, cells: row.cells, depth: row.depth })), locale }, ctx);\n },\n});\ntype TableComponent = ReportComponent<TableProps> & {\n <Row extends object>(props: TableProps<Row>): ReactNode;\n};\nexport const Table = TableImplementation as TableComponent;\nexport const TableContentView = TableImplementation as ReportComponent<TableContentViewProps>;\nTable.displayName = \"Table\";\n// ───────────────────────── Link / Download 双面原语 ─────────────────────────\n// Link 与 Download 直接消费普通 closed 值;链接由 ctx.href/ctx.command 解析,下载由 Host\n// 的 asset closure 收集,不经过 generic semantic model。\n/**\n * Host 经 `ctx.href` 服务下载目标时使用的保留 target page id。它不是作者可声明的 Page,\n * 也不进页索引;Host 的 href 实现按 `params.path` 把下载映射到 revision 里已经收集的\n * 下载文件 URL。作者 Page 不得使用这个 id(与 `ATTEMPT_PAGE_ID` 同一条集中知识纪律)。\n */\nexport const DOWNLOAD_TARGET_PAGE = \"niceeval.report.download\";\nexport interface LinkProps {\n /** 下钻目标。目标页不存在、params 编码失败或宿主服务不了时两面退化为纯文本——不产出空/假 href。 */\n target: ReportTarget;\n /** 链接内容(报告树;resolve 正常展开,text 面按当前宽度渲染)。 */\n children?: ReportNode;\n className?: string;\n}\n/**\n * 作者显式下钻链接。web 面经 `ctx.href(target)` 成链(undefined 时渲染纯文本 span);\n * text 面经 `ctx.command(target)` 给出下钻命令(undefined 时只渲染内容文本)。\n * 与表格格、图表点共用同一条「目标 → href/命令」唯一通道,组件对宿主能力零知识。\n */\nexport const Link = defineComponent<LinkProps>({\n dimensions: () => ({}),\n web({ target, children, className }, ctx) {\n const href = ctx.href(target);\n const content = children as ReactNode;\n if (href !== undefined) {\n return (<a className={cx(\"niceeval-report\", \"niceeval-link\", className)} href={href}>\n {content}\n </a>);\n }\n return (<span className={cx(\"niceeval-report\", \"niceeval-link\", \"niceeval-link--plain\", className)}>{content}</span>);\n },\n text({ target, children }, ctx) {\n const command = ctx.command(target);\n const body = childArray(children)\n .map((child) => typeof child === \"string\" || typeof child === \"number\" || typeof child === \"bigint\"\n ? String(child)\n : ctx.render(child))\n .filter((block) => block.length > 0)\n .join(\"\\n\\n\");\n if (command === undefined)\n return body;\n return body.length > 0 ? `${body} ${command}` : command;\n },\n});\nLink.displayName = \"Link\";\n// Link labels intentionally accept ordinary React text children. The face\n// above owns their explicit text semantics.\nLink[COMPONENT_RAW_CHILDREN] = true;\nexport interface DownloadProps {\n /** 已关闭的下载文件。渲染面只做形状校验,绝不改写 bytes;Host 用 downloads.ts 的收集器。 */\n file: DownloadFile;\n /** 链接文字;省略时用 file.path。 */\n label?: LocalizedText;\n className?: string;\n}\n/**\n * 站点下载链接(可访问性:链接文字就是可访问名称;`download` 提示浏览器保存、\n * `type` 标注媒体类型)。`file.bytes` 留在已 resolve 的 props 里,由 Host 经\n * `./primitives/downloads.ts` 的 `collectDownloads` 复制进 revision 下载集\n * (内部导出,不进 niceeval/report 公共出口),并把\n * `ctx.href({ page: DOWNLOAD_TARGET_PAGE, params: { path } })` 映射到该文件的最终\n * 站点 URL;web 面拿不到该 URL 时退化为纯文本;text 面给出 `niceeval` 下钻命令或\n * 原样列出 path。两面都不读 Sample、不重新解释 path 或 bytes。\n */\nexport const Download = defineComponent<DownloadProps>({\n dimensions: () => ({}),\n web({ file, label, className }, ctx) {\n assertDownloadFile(file);\n const locale = ctx.locale;\n const text = label !== undefined ? resolveLocalizedText(label, locale) : file.path;\n const href = ctx.href({ page: DOWNLOAD_TARGET_PAGE, params: { path: file.path } });\n if (href !== undefined) {\n return (<a className={cx(\"niceeval-report\", \"niceeval-download\", className)} href={href} download={file.path.split(\"/\").pop()} type={file.mediaType}>\n {text}\n </a>);\n }\n return (<span className={cx(\"niceeval-report\", \"niceeval-download\", \"niceeval-download--plain\", className)}>\n {text}\n </span>);\n },\n text({ file, label }, ctx) {\n assertDownloadFile(file);\n const title = label !== undefined ? resolveLocalizedText(label, ctx.locale) : file.path;\n const command = ctx.command({ page: DOWNLOAD_TARGET_PAGE, params: { path: file.path } });\n if (command !== undefined)\n return `${title} ${command}`;\n return title === file.path ? file.path : `${title}\\n ${file.path}`;\n },\n});\nDownload.displayName = \"Download\";\n// 公开面只含组件与类型;downloads.ts 的收集器是内部导出,不得从这里 re-export。\nexport type { DownloadFile } from \"./primitives/downloads.ts\";\nexport { Waterfall, waterfallText } from \"./primitives/waterfall.tsx\";\nexport type { WaterfallContent, WaterfallNode, WaterfallProps, WaterfallRow } from \"./primitives/waterfall.tsx\";\nexport { Callouts } from \"./primitives/callouts.tsx\";\nexport type { CalloutGroup, CalloutItem, CalloutLevel, CalloutsProps } from \"./primitives/callouts.tsx\";\nexport { CopyBlock } from \"./primitives/copy-block.tsx\";\nexport type { CopyBlockContent, CopyBlockProps } from \"./primitives/copy-block.tsx\";\nexport { DiffView, diffViewText } from \"./primitives/diff-view.tsx\";\nexport type { DiffChange, DiffContent, DiffFile, DiffFileWindow, DiffViewProps } from \"./primitives/diff-view.tsx\";\nexport { CommandEvidence, Conversation, ConversationEntries, conversationText, sanitizeConversationPreview } from \"./primitives/conversation.tsx\";\nexport { TurnTrace, type TurnTraceProps } from \"./primitives/turn-trace.tsx\";\nexport type { CommandEvidenceContent, CommandEvidenceItem, CommandEvidenceProps, ConversationContent, ConversationEntry, ConversationProps, ConversationTurn, } from \"./primitives/conversation.tsx\";\nexport { Markdown, parseMarkdown, markdownToText, markdownToWeb } from \"./primitives/markdown.tsx\";\nexport type { MarkdownAst, MarkdownProps } from \"./primitives/markdown.tsx\";\nexport { SourceView, sourceViewText } from \"./primitives/source-view.tsx\";\nexport type { SourceBlockContent, SourceCallContent, SourceContent, SourceLine, SourceLineTone, SourceViewProps, } from \"./primitives/source-view.tsx\";\nexport { Chart, Series } from \"./primitives/chart.tsx\";\nexport type { ChartPresentation, ChartProps } from \"./primitives/chart.tsx\";\nexport type { SeriesProps, ChartAxisBinding, ChartFieldBinding, ChartSeriesOverride } from \"./primitives/chart-map.ts\";\nexport { Scatter, Line, Bars, Area, applyBarsSortLimit } from \"./primitives/marks.tsx\";\nexport type { ScatterProps, ExternalScatterProps, LineProps, ExternalLineProps, BarsProps, ExternalBarsProps, BarsSort, EvidenceAxisKey, EvidenceDimensionKey, ExternalAxisKey, AreaProps, ExternalAreaProps, } from \"./primitives/marks.tsx\";\nexport { pointsToDataset } from \"./primitives/points-dataset.ts\";\nexport type { ExternalPoint, PointsChartFields } from \"./primitives/points-dataset.ts\";\n"]}
|
|
@@ -252,7 +252,9 @@ function isFrozenNormalizedPage(value) {
|
|
|
252
252
|
}
|
|
253
253
|
if (Object.hasOwn(value, "params")) {
|
|
254
254
|
return value.navigation === false && typeof value.load === "function" &&
|
|
255
|
-
hasExactOwnDataFields(value, ["id", "path", "title", "navigation", "params", "load", "render"])
|
|
255
|
+
(hasExactOwnDataFields(value, ["id", "path", "title", "navigation", "params", "load", "render"]) ||
|
|
256
|
+
hasExactOwnDataFields(value, ["id", "path", "title", "navigation", "role", "params", "load", "render"])) &&
|
|
257
|
+
(!Object.hasOwn(value, "role") || isExperimentGroupRole(value.role)) &&
|
|
256
258
|
isFrozenPageParams(value.params);
|
|
257
259
|
}
|
|
258
260
|
const valid = hasExactOwnDataFields(value, ["id", "path", "title", "navigation", "render"]) ||
|
|
@@ -353,8 +355,8 @@ function normalizePage(value, index) {
|
|
|
353
355
|
const fields = ownFields(value, label);
|
|
354
356
|
const parameterized = fields.has("params");
|
|
355
357
|
assertOnlyFields(fields, parameterized
|
|
356
|
-
? ["id", "path", "title", "navigation", "params", "load", "render"]
|
|
357
|
-
: ["id", "path", "title", "navigation", "load", "render"], label, parameterized ? ["path"] : ["path", "navigation", "load"]);
|
|
358
|
+
? ["id", "path", "title", "navigation", "role", "params", "load", "render"]
|
|
359
|
+
: ["id", "path", "title", "navigation", "load", "render"], label, parameterized ? ["path", "role"] : ["path", "navigation", "load"]);
|
|
358
360
|
const id = normalizePageId(fields.get("id"), label);
|
|
359
361
|
const path = fields.has("path") && fields.get("path") !== undefined
|
|
360
362
|
? normalizePath(fields.get("path"), label)
|
|
@@ -367,11 +369,13 @@ function normalizePage(value, index) {
|
|
|
367
369
|
}
|
|
368
370
|
const params = normalizePageParams(fields.get("params"), `${label}.params`);
|
|
369
371
|
const load = requireFunction(fields.get("load"), `${label}.load`);
|
|
372
|
+
const role = fields.has("role") ? normalizeExperimentGroupRole(fields.get("role"), `${label}.role`) : undefined;
|
|
370
373
|
return Object.freeze({
|
|
371
374
|
id,
|
|
372
375
|
path,
|
|
373
376
|
title,
|
|
374
377
|
navigation: false,
|
|
378
|
+
...(role === undefined ? {} : { role }),
|
|
375
379
|
params,
|
|
376
380
|
load: load,
|
|
377
381
|
render: render,
|
|
@@ -394,6 +398,26 @@ function normalizePage(value, index) {
|
|
|
394
398
|
render: render,
|
|
395
399
|
});
|
|
396
400
|
}
|
|
401
|
+
function normalizeExperimentGroupRole(value, label) {
|
|
402
|
+
const fields = ownFields(value, label);
|
|
403
|
+
assertOnlyFields(fields, ["kind", "groupKind"], label);
|
|
404
|
+
if (fields.get("kind") !== "experiment-group" ||
|
|
405
|
+
(fields.get("groupKind") !== "named" && fields.get("groupKind") !== "singleton")) {
|
|
406
|
+
throw new TypeError(`${label} must declare experiment-group and named/singleton`);
|
|
407
|
+
}
|
|
408
|
+
return Object.freeze({
|
|
409
|
+
kind: "experiment-group",
|
|
410
|
+
groupKind: fields.get("groupKind"),
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
function isExperimentGroupRole(value) {
|
|
414
|
+
try {
|
|
415
|
+
return normalizeExperimentGroupRole(value, "Report page role") !== undefined;
|
|
416
|
+
}
|
|
417
|
+
catch {
|
|
418
|
+
return false;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
397
421
|
function derivePagePath(id) {
|
|
398
422
|
return id === exports.DEFAULT_PAGE_ID ? "/" : `/${id}`;
|
|
399
423
|
}
|