niceeval 0.13.2 → 0.13.3
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/dist/agents/bub.cjs +4 -4
- 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-native.cjs +213 -0
- package/dist/agents/claude-code-native.cjs.map +1 -0
- package/dist/agents/claude-code-native.d.cts +5 -0
- package/dist/agents/claude-code-native.d.mts +5 -0
- package/dist/agents/claude-code-native.d.ts +5 -0
- package/dist/agents/claude-code-native.js +6 -0
- package/dist/agents/claude-code-native.js.map +1 -0
- package/dist/agents/claude-code.cjs +26 -80
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/codex-app-server.cjs +314 -0
- package/dist/agents/codex-app-server.cjs.map +1 -0
- package/dist/agents/codex-app-server.d.cts +9 -0
- package/dist/agents/codex-app-server.d.mts +9 -0
- package/dist/agents/codex-app-server.d.ts +9 -0
- package/dist/agents/codex-app-server.js +6 -0
- package/dist/agents/codex-app-server.js.map +1 -0
- package/dist/agents/codex.cjs +19 -68
- 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/index.cjs +3 -1
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +1 -0
- package/dist/agents/index.d.mts +1 -0
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.js +84 -82
- package/dist/agents/index.mjs +84 -82
- package/dist/agents/managed-jsonl.cjs +207 -0
- package/dist/agents/managed-jsonl.cjs.map +1 -0
- package/dist/agents/managed-jsonl.d.cts +39 -0
- package/dist/agents/managed-jsonl.d.mts +39 -0
- package/dist/agents/managed-jsonl.d.ts +39 -0
- package/dist/agents/managed-jsonl.js +6 -0
- package/dist/agents/managed-jsonl.js.map +1 -0
- package/dist/agents/managed-process.cjs +31 -0
- package/dist/agents/managed-process.cjs.map +1 -0
- package/dist/agents/managed-process.d.cts +3 -0
- package/dist/agents/managed-process.d.mts +3 -0
- package/dist/agents/managed-process.d.ts +3 -0
- package/dist/agents/managed-process.js +6 -0
- package/dist/agents/managed-process.js.map +1 -0
- package/dist/agents/omp.cjs +18 -1
- package/dist/agents/omp.cjs.map +1 -1
- package/dist/agents/sdk-streams.cjs +11 -4
- package/dist/agents/sdk-streams.cjs.map +1 -1
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.d.cts +8 -0
- package/dist/agents/types.d.mts +8 -0
- package/dist/agents/types.d.ts +8 -0
- package/dist/analysis/bindings.cjs +74 -19
- package/dist/analysis/bindings.cjs.map +1 -1
- package/dist/analysis/bindings.d.cts +534 -156
- package/dist/analysis/bindings.d.mts +534 -156
- package/dist/analysis/bindings.d.ts +534 -156
- package/dist/analysis/domain-view.cjs.map +1 -1
- package/dist/analysis/domain-view.d.cts +137 -8
- package/dist/analysis/domain-view.d.mts +137 -8
- package/dist/analysis/domain-view.d.ts +137 -8
- package/dist/analysis/index.cjs.map +1 -1
- package/dist/analysis/index.d.cts +1 -1
- package/dist/analysis/index.d.mts +1 -1
- package/dist/analysis/index.d.ts +1 -1
- package/dist/assertions/api.cjs.map +1 -1
- package/dist/assertions/api.d.cts +62 -0
- package/dist/assertions/api.d.mts +62 -0
- package/dist/assertions/api.d.ts +62 -0
- package/dist/assertions/judge.cjs +56 -5
- package/dist/assertions/judge.cjs.map +1 -1
- package/dist/assertions/match.cjs +66 -42
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +13 -0
- package/dist/assertions/match.d.mts +13 -0
- package/dist/assertions/match.d.ts +13 -0
- package/dist/assertions/record/attachment.cjs +104 -33
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/attachment.d.cts +294 -57
- package/dist/assertions/record/attachment.d.mts +294 -57
- package/dist/assertions/record/attachment.d.ts +294 -57
- package/dist/assertions/record/codec.cjs +91 -17
- package/dist/assertions/record/codec.cjs.map +1 -1
- package/dist/assertions/record/codec.d.cts +280 -52
- package/dist/assertions/record/codec.d.mts +280 -52
- package/dist/assertions/record/codec.d.ts +280 -52
- package/dist/assertions/record/index.js +2 -0
- package/dist/assertions/record/model.cjs +16 -0
- package/dist/assertions/record/model.cjs.map +1 -1
- package/dist/assertions/record/model.d.cts +120 -13
- package/dist/assertions/record/model.d.mts +120 -13
- package/dist/assertions/record/model.d.ts +120 -13
- package/dist/assertions/record/model.js +2 -0
- package/dist/assertions/record/producer.cjs +70 -50
- package/dist/assertions/record/producer.cjs.map +1 -1
- package/dist/assertions/record/producer.d.cts +8 -7
- package/dist/assertions/record/producer.d.mts +8 -7
- package/dist/assertions/record/producer.d.ts +8 -7
- package/dist/assertions/runtime.cjs +49 -7
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/cli/application.cjs +40 -0
- package/dist/cli/application.cjs.map +1 -0
- package/dist/cli/application.d.cts +129 -0
- package/dist/cli/application.d.mts +129 -0
- package/dist/cli/application.d.ts +129 -0
- package/dist/cli/application.js +24 -0
- package/dist/cli/application.js.map +1 -0
- package/dist/cli/bootstrap.cjs +10 -4
- package/dist/cli/bootstrap.cjs.map +1 -1
- package/dist/cli/node-application.cjs +123 -0
- package/dist/cli/node-application.cjs.map +1 -0
- package/dist/cli/node-application.d.cts +14 -0
- package/dist/cli/node-application.d.mts +14 -0
- package/dist/cli/node-application.d.ts +14 -0
- package/dist/cli/node-application.js +26 -0
- package/dist/cli/node-application.js.map +1 -0
- package/dist/cli/program.cjs +2807 -0
- package/dist/cli/program.cjs.map +1 -0
- package/dist/cli/program.d.cts +352 -0
- package/dist/cli/program.d.mts +352 -0
- package/dist/cli/program.d.ts +352 -0
- package/dist/cli/program.js +36 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/project-configuration.cjs +134 -0
- package/dist/cli/project-configuration.cjs.map +1 -0
- package/dist/cli/project-configuration.d.cts +64 -0
- package/dist/cli/project-configuration.d.mts +64 -0
- package/dist/cli/project-configuration.d.ts +64 -0
- package/dist/cli/project-configuration.js +22 -0
- package/dist/cli/project-configuration.js.map +1 -0
- package/dist/cli/record.cjs +20 -4
- package/dist/cli/record.cjs.map +1 -1
- package/dist/cli/record.d.cts +3 -3
- package/dist/cli/record.d.mts +3 -3
- package/dist/cli/record.d.ts +3 -3
- package/dist/cli.cjs +19 -3130
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +2 -148
- package/dist/cli.d.mts +2 -148
- package/dist/cli.d.ts +2 -148
- package/dist/cli.js +22 -30
- package/dist/context/assert-first.cjs +21 -15
- package/dist/context/assert-first.cjs.map +1 -1
- package/dist/context/assert-first.d.cts +1 -0
- package/dist/context/assert-first.d.mts +1 -0
- package/dist/context/assert-first.d.ts +1 -0
- package/dist/context/attempt-resources.cjs +13 -0
- package/dist/context/attempt-resources.cjs.map +1 -0
- package/dist/context/attempt-resources.d.cts +3 -0
- package/dist/context/attempt-resources.d.mts +3 -0
- package/dist/context/attempt-resources.d.ts +3 -0
- package/dist/context/attempt-resources.js +8 -0
- package/dist/context/attempt-resources.js.map +1 -0
- package/dist/context/session.cjs +4 -3
- package/dist/context/session.cjs.map +1 -1
- package/dist/context/session.d.cts +1 -0
- package/dist/context/session.d.mts +1 -0
- package/dist/context/session.d.ts +1 -0
- package/dist/eval/record/verdict.cjs +3 -2
- package/dist/eval/record/verdict.cjs.map +1 -1
- package/dist/experiment/host/index.cjs +1 -6
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/experiment/host/index.d.cts +1 -0
- package/dist/experiment/host/index.d.mts +1 -0
- package/dist/experiment/host/index.d.ts +1 -0
- package/dist/load-config.cjs +13 -4
- package/dist/load-config.cjs.map +1 -1
- package/dist/load-config.d.cts +4 -3
- package/dist/load-config.d.mts +4 -3
- package/dist/load-config.d.ts +4 -3
- package/dist/load-config.js +4 -2
- package/dist/o11y/parsers/codex.cjs +29 -7
- package/dist/o11y/parsers/codex.cjs.map +1 -1
- package/dist/record/codec/core.d.cts +0 -2
- package/dist/record/codec/core.d.mts +0 -2
- package/dist/record/codec/core.d.ts +0 -2
- package/dist/record/codec/identifiers.cjs +2 -3
- package/dist/record/codec/identifiers.cjs.map +1 -1
- package/dist/record/codec/identifiers.d.cts +1 -2
- package/dist/record/codec/identifiers.d.mts +1 -2
- package/dist/record/codec/identifiers.d.ts +1 -2
- package/dist/record/codec/identifiers.js +10 -12
- package/dist/record/codec/index.js +42 -44
- package/dist/record/definition/attachment.cjs +1 -0
- package/dist/record/definition/attachment.cjs.map +1 -1
- package/dist/record/definition/attachment.d.cts +14 -0
- package/dist/record/definition/attachment.d.mts +14 -0
- package/dist/record/definition/attachment.d.ts +14 -0
- package/dist/record/family/assertions-v1.cjs +104 -0
- package/dist/record/family/assertions-v1.cjs.map +1 -0
- package/dist/record/family/assertions-v1.d.cts +2 -0
- package/dist/record/family/assertions-v1.d.mts +2 -0
- package/dist/record/family/assertions-v1.d.ts +2 -0
- package/dist/record/family/assertions-v1.js +6 -0
- package/dist/record/family/assertions-v1.js.map +1 -0
- package/dist/record/family/assertions.cjs +16 -5
- package/dist/record/family/assertions.cjs.map +1 -1
- package/dist/record/family/assertions.d.cts +510 -56
- package/dist/record/family/assertions.d.mts +510 -56
- package/dist/record/family/assertions.d.ts +510 -56
- package/dist/record/family/assertions.js +14 -10
- package/dist/record/family/catalog.cjs +17 -1
- package/dist/record/family/catalog.cjs.map +1 -1
- package/dist/record/family/catalog.d.cts +1292 -104
- package/dist/record/family/catalog.d.mts +1292 -104
- package/dist/record/family/catalog.d.ts +1292 -104
- package/dist/record/family/catalog.js +22 -20
- package/dist/record/family/index.js +144 -138
- package/dist/record/family/observability-v1.cjs +5 -0
- package/dist/record/family/observability-v1.cjs.map +1 -1
- package/dist/record/family/observability.cjs +1 -1
- package/dist/record/family/observability.cjs.map +1 -1
- package/dist/record/host/runtime.cjs +323 -173
- 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 +9 -7
- package/dist/record/host/types.d.mts +9 -7
- package/dist/record/host/types.d.ts +9 -7
- package/dist/record/model/core.cjs.map +1 -1
- package/dist/record/model/core.d.cts +1 -2
- package/dist/record/model/core.d.mts +1 -2
- package/dist/record/model/core.d.ts +1 -2
- package/dist/record/model/definition.cjs +1 -2
- package/dist/record/model/definition.cjs.map +1 -1
- package/dist/record/model/definition.d.cts +1 -7
- package/dist/record/model/definition.d.mts +1 -7
- package/dist/record/model/definition.d.ts +1 -7
- package/dist/record/model/identifiers.cjs +2 -3
- package/dist/record/model/identifiers.cjs.map +1 -1
- package/dist/record/model/identifiers.d.cts +1 -3
- package/dist/record/model/identifiers.d.mts +1 -3
- package/dist/record/model/identifiers.d.ts +1 -3
- package/dist/record/model/identifiers.js +36 -38
- package/dist/record/model/index.js +60 -62
- package/dist/record/platform/node.cjs +17 -7
- 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 +8 -3
- package/dist/record/platform/services.d.mts +8 -3
- package/dist/record/platform/services.d.ts +8 -3
- package/dist/record/reader/format.cjs +16 -65
- package/dist/record/reader/format.cjs.map +1 -1
- package/dist/record/reader/format.d.cts +5 -9
- package/dist/record/reader/format.d.mts +5 -9
- package/dist/record/reader/format.d.ts +5 -9
- package/dist/record/reader/index.js +10 -8
- package/dist/record/reader/runtime.cjs +63 -32
- package/dist/record/reader/runtime.cjs.map +1 -1
- package/dist/record/reader/runtime.d.cts +40 -4
- package/dist/record/reader/runtime.d.mts +40 -4
- package/dist/record/reader/runtime.d.ts +40 -4
- package/dist/record/reader/runtime.js +6 -4
- package/dist/report/assets/enhance.js +5 -5
- package/dist/report/assets/styles.css +190 -24
- package/dist/report/built-in/result-components.cjs +8 -5
- package/dist/report/built-in/result-components.cjs.map +1 -1
- package/dist/report/built-in/standard.cjs +3 -0
- package/dist/report/built-in/standard.cjs.map +1 -1
- package/dist/report/built-in/standard.d.cts +2 -0
- package/dist/report/built-in/standard.d.mts +2 -0
- package/dist/report/built-in/standard.d.ts +2 -0
- package/dist/report/client-dist/app.js +53 -0
- package/dist/report/components/attempt-detail/compute.cjs +108 -231
- package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
- package/dist/report/components/attempt-detail/compute.d.cts +11 -45
- package/dist/report/components/attempt-detail/compute.d.mts +11 -45
- package/dist/report/components/attempt-detail/compute.d.ts +11 -45
- package/dist/report/components/attempt-detail/compute.js +2 -4
- package/dist/report/components/attempt-detail/content.cjs +4 -4
- package/dist/report/components/attempt-detail/content.cjs.map +1 -1
- package/dist/report/components/attempt-detail/validate.cjs +47 -4
- package/dist/report/components/attempt-detail/validate.cjs.map +1 -1
- package/dist/report/components/entity-lists/compute.cjs +9 -15
- package/dist/report/components/entity-lists/compute.cjs.map +1 -1
- package/dist/report/components/entity-lists/content.cjs +53 -40
- package/dist/report/components/entity-lists/content.cjs.map +1 -1
- package/dist/report/components/entity-lists/index.cjs +1 -3
- package/dist/report/components/entity-lists/index.cjs.map +1 -1
- package/dist/report/components/experiment-detail/compute.cjs +4 -6
- package/dist/report/components/experiment-detail/compute.cjs.map +1 -1
- package/dist/report/components/summaries/index.cjs +5 -1
- package/dist/report/components/summaries/index.cjs.map +1 -1
- package/dist/report/definition/cell.cjs +14 -7
- package/dist/report/definition/cell.cjs.map +1 -1
- package/dist/report/definition/cell.d.cts +4 -0
- package/dist/report/definition/cell.d.mts +4 -0
- package/dist/report/definition/cell.d.ts +4 -0
- package/dist/report/definition/primitives/assertion-evidence.cjs +96 -0
- package/dist/report/definition/primitives/assertion-evidence.cjs.map +1 -0
- package/dist/report/definition/primitives/assertion-evidence.d.cts +11 -0
- package/dist/report/definition/primitives/assertion-evidence.d.mts +11 -0
- package/dist/report/definition/primitives/assertion-evidence.d.ts +11 -0
- package/dist/report/definition/primitives/assertion-evidence.js +6 -0
- package/dist/report/definition/primitives/assertion-evidence.js.map +1 -0
- package/dist/report/definition/primitives/conversation.cjs +7 -0
- package/dist/report/definition/primitives/conversation.cjs.map +1 -1
- package/dist/report/definition/primitives/conversation.d.cts +2 -0
- package/dist/report/definition/primitives/conversation.d.mts +2 -0
- package/dist/report/definition/primitives/conversation.d.ts +2 -0
- package/dist/report/definition/primitives/turn-trace.cjs +53 -3
- package/dist/report/definition/primitives/turn-trace.cjs.map +1 -1
- package/dist/report/definition/primitives.cjs +14 -1
- package/dist/report/definition/primitives.cjs.map +1 -1
- package/dist/report/definition/report.cjs +16 -8
- package/dist/report/definition/report.cjs.map +1 -1
- package/dist/report/definition/report.d.cts +6 -0
- package/dist/report/definition/report.d.mts +6 -0
- package/dist/report/definition/report.d.ts +6 -0
- package/dist/report/definition/table-text.cjs +12 -3
- package/dist/report/definition/table-text.cjs.map +1 -1
- package/dist/report/definition/table-text.d.cts +6 -1
- package/dist/report/definition/table-text.d.mts +6 -1
- package/dist/report/definition/table-text.d.ts +6 -1
- package/dist/report/execution/model.cjs +6 -14
- package/dist/report/execution/model.cjs.map +1 -1
- package/dist/report/execution/model.d.cts +5 -10
- package/dist/report/execution/model.d.mts +5 -10
- package/dist/report/execution/model.d.ts +5 -10
- package/dist/report/execution/model.js +6 -6
- package/dist/report/execution/paths.cjs +0 -11
- package/dist/report/execution/paths.cjs.map +1 -1
- package/dist/report/execution/paths.d.cts +0 -1
- package/dist/report/execution/paths.d.mts +0 -1
- package/dist/report/execution/paths.d.ts +0 -1
- package/dist/report/execution/paths.js +6 -8
- package/dist/report/host/execute.cjs +13 -22
- package/dist/report/host/execute.cjs.map +1 -1
- package/dist/report/host/execute.d.cts +1 -4
- package/dist/report/host/execute.d.mts +1 -4
- package/dist/report/host/execute.d.ts +1 -4
- package/dist/report/host/from-record.cjs +3 -0
- package/dist/report/host/from-record.cjs.map +1 -1
- package/dist/report/host/from-record.d.cts +4 -1
- package/dist/report/host/from-record.d.mts +4 -1
- package/dist/report/host/from-record.d.ts +4 -1
- package/dist/report/host/site-assets.cjs +1 -2
- package/dist/report/host/site-assets.cjs.map +1 -1
- package/dist/report/host/site-assets.d.cts +0 -1
- package/dist/report/host/site-assets.d.mts +0 -1
- package/dist/report/host/site-assets.d.ts +0 -1
- package/dist/report/host/site-assets.js +2 -4
- package/dist/report/host/static.cjs +71 -346
- package/dist/report/host/static.cjs.map +1 -1
- package/dist/report/host/static.d.cts +1 -3
- package/dist/report/host/static.d.mts +1 -3
- package/dist/report/host/static.d.ts +1 -3
- package/dist/report/host/static.js +2 -2
- package/dist/report/host/view-session.cjs.map +1 -1
- package/dist/report/host/view-session.d.cts +1 -1
- package/dist/report/host/view-session.d.mts +1 -1
- package/dist/report/host/view-session.d.ts +1 -1
- package/dist/report/model/locale.cjs +1 -1
- package/dist/report/model/locale.cjs.map +1 -1
- package/dist/report/model/locale.d.cts +1 -1
- package/dist/report/model/locale.d.mts +1 -1
- package/dist/report/model/locale.d.ts +1 -1
- package/dist/report/model/pricing.cjs +2 -2
- package/dist/report/model/pricing.cjs.map +1 -1
- package/dist/report/react/enhance.js +5 -5
- package/dist/report/react/styles.css +190 -24
- package/dist/runner/adoption.cjs +4 -7
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/attempt-resources.cjs +60 -0
- package/dist/runner/attempt-resources.cjs.map +1 -0
- package/dist/runner/attempt-resources.d.cts +13 -0
- package/dist/runner/attempt-resources.d.mts +13 -0
- package/dist/runner/attempt-resources.d.ts +13 -0
- package/dist/runner/attempt-resources.js +6 -0
- package/dist/runner/attempt-resources.js.map +1 -0
- package/dist/runner/attempt.cjs +37 -3
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/feedback/failure.cjs +77 -2
- package/dist/runner/feedback/failure.cjs.map +1 -1
- package/dist/runner/feedback/failure.d.cts +2 -1
- package/dist/runner/feedback/failure.d.mts +2 -1
- package/dist/runner/feedback/failure.d.ts +2 -1
- package/dist/runner/project-current.cjs +2 -13
- package/dist/runner/project-current.cjs.map +1 -1
- package/dist/runner/project-current.d.cts +4 -2
- package/dist/runner/project-current.d.mts +4 -2
- package/dist/runner/project-current.d.ts +4 -2
- package/dist/runner/reporters/braintrust.cjs +7 -7
- package/dist/runner/reporters/braintrust.cjs.map +1 -1
- package/dist/runner/reuse-readback.cjs +3 -4
- package/dist/runner/reuse-readback.cjs.map +1 -1
- package/dist/runner/run.cjs +5 -2
- package/dist/runner/run.cjs.map +1 -1
- package/dist/sandbox/backend.cjs +32 -2
- package/dist/sandbox/backend.cjs.map +1 -1
- package/dist/sandbox/backend.d.cts +12 -1
- package/dist/sandbox/backend.d.mts +12 -1
- package/dist/sandbox/backend.d.ts +12 -1
- package/dist/sandbox/backend.js +28 -22
- package/dist/sandbox/docker.cjs +140 -0
- package/dist/sandbox/docker.cjs.map +1 -1
- package/dist/sandbox/docker.d.cts +3 -1
- package/dist/sandbox/docker.d.mts +3 -1
- package/dist/sandbox/docker.d.ts +3 -1
- package/dist/sandbox/e2b.cjs +42 -0
- package/dist/sandbox/e2b.cjs.map +1 -1
- package/dist/sandbox/e2b.d.cts +2 -0
- package/dist/sandbox/e2b.d.mts +2 -0
- package/dist/sandbox/e2b.d.ts +2 -0
- package/dist/sandbox/local.cjs +64 -0
- package/dist/sandbox/local.cjs.map +1 -1
- package/dist/sandbox/local.d.cts +3 -1
- package/dist/sandbox/local.d.mts +3 -1
- package/dist/sandbox/local.d.ts +3 -1
- package/dist/sandbox/managed-process.cjs +49 -0
- package/dist/sandbox/managed-process.cjs.map +1 -0
- package/dist/sandbox/managed-process.d.cts +11 -0
- package/dist/sandbox/managed-process.d.mts +11 -0
- package/dist/sandbox/managed-process.d.ts +11 -0
- package/dist/sandbox/managed-process.js +6 -0
- package/dist/sandbox/managed-process.js.map +1 -0
- package/dist/sandbox/types.cjs.map +1 -1
- package/dist/sandbox/types.d.cts +24 -0
- package/dist/sandbox/types.d.mts +24 -0
- package/dist/sandbox/types.d.ts +24 -0
- package/dist/sandbox/vercel.cjs +1 -0
- package/dist/sandbox/vercel.cjs.map +1 -1
- package/dist/sandbox/vercel.d.cts +1 -0
- package/dist/sandbox/vercel.d.mts +1 -0
- package/dist/sandbox/vercel.d.ts +1 -0
- package/dist/view/server.cjs +2 -37
- package/dist/view/server.cjs.map +1 -1
- package/dist/view/server.d.cts +0 -3
- package/dist/view/server.d.mts +0 -3
- package/dist/view/server.d.ts +0 -3
- package/docs-site/zh/reference/builtin-agents.mdx +7 -7
- package/docs-site/zh/reference/official-adapters.mdx +4 -4
- package/docs-site/zh/reference/report-components.mdx +2 -2
- package/docs-site/zh/tutorials/configuration.mdx +2 -2
- package/docs-site/zh/tutorials/deploy-report-site.mdx +24 -2
- package/docs-site/zh/tutorials/publish-report.mdx +4 -4
- package/docs-site/zh/tutorials/sandbox-agent.mdx +5 -5
- package/docs-site/zh/tutorials/theming.mdx +2 -2
- package/package.json +4 -6
- package/dist/record/migration/index.cjs +0 -5
- package/dist/record/migration/index.cjs.map +0 -1
- package/dist/record/migration/index.d.cts +0 -11
- package/dist/record/migration/index.d.mts +0 -11
- package/dist/record/migration/index.d.ts +0 -11
- package/dist/record/migration/index.js +0 -6
- package/dist/record/migration/index.js.map +0 -1
- package/dist/report/host/site-runtime.cjs +0 -92
- package/dist/report/host/site-runtime.cjs.map +0 -1
- package/dist/report/host/site-runtime.d.cts +0 -9
- package/dist/report/host/site-runtime.d.mts +0 -9
- package/dist/report/host/site-runtime.d.ts +0 -9
- package/dist/report/host/site-runtime.js +0 -10
- package/dist/report/host/site-runtime.js.map +0 -1
- package/dist/view/client-dist/app.css +0 -2
- package/dist/view/client-dist/app.js +0 -49
- package/dist/view/data.cjs +0 -3
- package/dist/view/data.cjs.map +0 -1
- package/dist/view/data.d.cts +0 -9
- package/dist/view/data.d.mts +0 -9
- package/dist/view/data.d.ts +0 -9
- package/dist/view/data.js +0 -4
- package/dist/view/data.js.map +0 -1
- package/dist/view/index.cjs +0 -24
- package/dist/view/index.cjs.map +0 -1
- package/dist/view/index.d.cts +0 -9
- package/dist/view/index.d.mts +0 -9
- package/dist/view/index.d.ts +0 -9
- package/dist/view/index.js +0 -28
- package/dist/view/index.js.map +0 -1
- package/dist/view/report-view-cache.cjs +0 -200
- package/dist/view/report-view-cache.cjs.map +0 -1
- package/dist/view/report-view-cache.d.cts +0 -67
- package/dist/view/report-view-cache.d.mts +0 -67
- package/dist/view/report-view-cache.d.ts +0 -67
- package/dist/view/report-view-cache.js +0 -8
- package/dist/view/report-view-cache.js.map +0 -1
- package/dist/view/shared/types.cjs +0 -3
- package/dist/view/shared/types.cjs.map +0 -1
- package/dist/view/shared/types.d.cts +0 -51
- package/dist/view/shared/types.d.mts +0 -51
- package/dist/view/shared/types.d.ts +0 -51
- package/dist/view/shared/types.js +0 -4
- package/dist/view/shared/types.js.map +0 -1
- package/dist/view/site.cjs +0 -32
- package/dist/view/site.cjs.map +0 -1
- package/dist/view/site.d.cts +0 -24
- package/dist/view/site.d.mts +0 -24
- package/dist/view/site.d.ts +0 -24
- package/dist/view/site.js +0 -8
- package/dist/view/site.js.map +0 -1
- package/dist/view/styles.css +0 -170
- package/dist/view/template.html +0 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.js","sourceRoot":"","sources":["locale.ts"],"names":[],"mappings":"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","sourcesContent":["// 官方组件 chrome 文案的 locale 字典与 LocalizedText 解析。\n// ReportLocale 是开放的 BCP 47 标签(数据协议不封语言上限);官方内置文案与\n// 官方固定文案覆盖 en / zh-CN;公共 MetricValue 由 renderer 按当前 locale 格式化。\n// 只覆盖组件自带的固定文案(verdict 词、缺数据、覆盖率角标、注脚、占位符等);\n// 维度键、issues 的 message 不经这里。\n// 刻意不 import src/i18n/(CLI 专用字典,locale 来源与 key 面完全不同)。\nimport type { LocalizedText } from \"../../types.ts\";\nexport type { LocalizedText };\n/** 报告渲染的 locale(BCP 47 标签,开放);默认 \"en\"(`niceeval show` 缺省输出不变)。 */\nexport type ReportLocale = string;\nexport const DEFAULT_REPORT_LOCALE: ReportLocale = \"en\";\n/** 官方固定文案覆盖的 locale 全集。 */\nexport const DISPLAY_LOCALES: readonly ReportLocale[] = [\"en\", \"zh-CN\"];\n/**\n * LocalizedText 的确定回退:取当前 locale;缺失时取 en;仍缺失时取按 locale 键字典序的\n * 第一个非空值。对象没有任何非空值时报错,不渲染空文案\n * (docs/feature/reports/library.md「行为约束」)。\n */\nexport function resolveLocalizedText(text: LocalizedText, locale: ReportLocale): string {\n if (typeof text === \"string\")\n return text;\n const direct = text[locale];\n if (direct !== undefined && direct !== \"\")\n return direct;\n const en = text.en;\n if (en !== undefined && en !== \"\")\n return en;\n for (const key of Object.keys(text).sort()) {\n const value = text[key];\n if (value !== undefined && value !== \"\")\n return value;\n }\n throw new Error(\"LocalizedText object has no non-empty value. Provide at least one locale entry, e.g. { en: \\\"…\\\" }.\");\n}\n/** LocalizedText 按字段值深相等(键顺序无关;标题回退链的「唯一且相同」判定用)。 */\nexport function localizedTextEquals(a: LocalizedText, b: LocalizedText): boolean {\n if (typeof a === \"string\" || typeof b === \"string\")\n return a === b;\n const keysA = Object.keys(a).sort();\n const keysB = Object.keys(b).sort();\n if (keysA.length !== keysB.length)\n return false;\n return keysA.every((key, i) => key === keysB[i] && a[key] === b[key]);\n}\nconst en = {\n \"verdict.passed\": \"passed\",\n \"verdict.failed\": \"failed\",\n \"verdict.errored\": \"errored\",\n \"verdict.skipped\": \"skipped\",\n /** AttemptSummary 的重试序号(0 起的 identity.attempt 显示前 +1)。 */\n \"attemptSummary.attempt\": \"attempt {n}\",\n /** formatTimeDistance 的四区间读法(presentation.md「相对时距是数据,不是文案」)。 */\n \"timeDistance.minute\": \"{n}m\",\n \"timeDistance.hour\": \"{n}h\",\n \"timeDistance.day\": \"{n}d\",\n \"timeDistance.month\": \"{n}mo\",\n /** 全 null / 无样本的统一文案,绝不画 0。 */\n \"cell.missing\": \"no data\",\n /** missing 格 code=`unscorable`:有 attempt,但读数测不出。 */\n \"cell.unscorable\": \"unscorable\",\n /** missing 格 code=`noCurrentResult`:当前配置下这道题没有结果(覆盖缺口占位行)。 */\n \"cell.noCurrentResult\": \"no result for current config\",\n \"cell.measuredTitle\": \"{samples}/{total} attempts measured\",\n \"cell.noneMeasurableTitle\": \"0/{total} attempts measurable\",\n \"cell.coverageTitle\": \"coverage {samples}/{total}: this metric is null for the remaining attempts\",\n \"cell.missingValue\": \"(missing)\",\n \"cell.evidence.one\": \"{n} attempt\",\n \"cell.evidence.other\": \"{n} attempts\",\n \"table.higherBetter\": \"higher is better\",\n \"table.lowerBetter\": \"lower is better\",\n \"table.model\": \"Model\",\n \"table.agent\": \"Agent\",\n \"table.verdicts\": \"Verdicts\",\n \"table.filterPlaceholder\": \"Filter rows…\",\n \"table.eval\": \"Eval\",\n \"table.reason\": \"Reason\",\n \"table.viewBreakdown\": \"Per-eval breakdown\",\n /** <Table> 的 locator 列表头(行带 locator 时自动追加)。 */\n \"table.attempt\": \"attempt\",\n \"experimentList.experiment\": \"Experiment\",\n \"experimentList.avgDuration\": \"Avg. time\",\n \"experimentList.passRate\": \"Pass rate\",\n \"experimentList.passRateDescription\": \"End-to-end pass rate: passed = 1; failed and errored = 0\",\n \"experimentList.totalScore\": \"Total score\",\n \"experimentList.totalScoreDescription\": \"Total score: sum of points earned across evals\",\n \"experimentList.tokens\": \"Tokens\",\n \"experimentList.cost\": \"Cost\",\n \"experimentList.result\": \"Record\",\n \"experimentList.status\": \"Status\",\n \"experimentList.evalAttempt\": \"Eval / Attempt\",\n \"experimentList.duration\": \"Duration\",\n \"experimentList.filterPlaceholder\": \"Filter experiments…\",\n \"experimentList.defaultModel\": \"default\",\n \"experimentList.flags\": \"Flags\",\n \"entityList.average\": \"{value} avg\",\n \"entityList.moreFailures.one\": \"+{n} more failure\",\n \"entityList.moreFailures.other\": \"+{n} more failures\",\n /** 计分制 passed attempt 丢分得分点的「其余」计数(规则 6);与 moreFailures 同结构,措辞不同——\n * 丢分不是失败,不该说成 \"more failures\"(entity-lists.md AttemptListItem.moreFailures 字段注释)。 */\n \"entityList.moreLostPoints.one\": \"+{n} more lost point\",\n \"entityList.moreLostPoints.other\": \"+{n} more lost points\",\n /** <Table> 压到下限仍放不下时,从右侧丢列并如实报数。 */\n \"table.columnsHidden.one\": \"({n} more column not shown)\",\n \"table.columnsHidden.other\": \"({n} more columns not shown)\",\n /** StabilityOverview 的读数格标签。 */\n \"stabilityOverview.executions\": \"Executions\",\n \"stabilityOverview.neverPassed\": \"Never passed\",\n \"stabilityOverview.flaky\": \"Flaky evals\",\n /** SampleSummary 的 KPI 标签。 */\n \"scopeSummary.experiments\": \"Experiments\",\n \"scopeSummary.evals\": \"Evals\",\n \"scopeSummary.attempts\": \"Attempts\",\n \"scopeSummary.passRate\": \"Pass rate\",\n \"scopeSummary.totalScore\": \"Total score\",\n \"scopeSummary.totalCost\": \"Total cost\",\n \"scopeSummary.lastRun\": \"Last run · {time}\",\n \"scopeSummary.runRange\": \"Run range · {from} – {to}\",\n \"scopeSummary.costCoverage\": \"Cost available for {samples}/{total} attempts\",\n \"scopeSummary.votesEval\": \"Eval results\",\n \"scopeSummary.votesAttempt\": \"Attempt results\",\n \"overview.experiments.one\": \"{n} experiment\",\n \"overview.experiments.other\": \"{n} experiments\",\n \"overview.evalsCount\": \"{n} evals\",\n \"overview.attemptsCount\": \"{n} attempts\",\n \"overview.evals\": \"Evals\",\n \"overview.passRate\": \"Pass rate\",\n \"overview.totalCost\": \"Cost\",\n /** 方向提示唯一文案:轴向已随 better 反正,「更好」恒指向右上(两轴都声明 better 时才显示)。 */\n \"scatter.betterUpperRight\": \"better → upper right\",\n /** 读值表的系列列表头;多个系列同图时才出现。 */\n \"chart.series\": \"series\",\n /** 0 个可画点:x/y 指标没有可用数据。 */\n \"scatter.noData\": \"No data to plot {x} × {y}\",\n /** 标题行尾的归类维度标注(series 维度存在时显示)。 */\n \"scatter.groupedBy\": \"grouped by {dim}\",\n \"pointsMissing.one\": \"{n} point missing data\",\n \"pointsMissing.other\": \"{n} points missing data\",\n \"attemptList.empty\": \"No attempts\",\n \"attemptList.truncated\": \"and {n} more not shown\",\n \"attemptList.truncatedText\": \"({n} more not shown)\",\n \"attemptList.score\": \"score {score}\",\n \"attemptList.unavailable\": \"unavailable\",\n \"attemptList.details\": \"details\",\n \"scoreboard.total\": \"Total\",\n \"scoreboard.totalText\": \"total\",\n \"scoreboard.notRun.one\": \"{n} eval not run, scored 0\",\n \"scoreboard.notRun.other\": \"{n} evals not run, scored 0\",\n \"scoreboard.unscorable.one\": \"{n} eval unscorable, scored 0\",\n \"scoreboard.unscorable.other\": \"{n} evals unscorable, scored 0\",\n \"scoreboard.notRunText\": \"({n} not run)\",\n \"scoreboard.unscorableText\": \"({n} unscorable)\",\n \"scoreboard.ignored.one\": \"{n} eval outside the question set ignored\",\n \"scoreboard.ignored.other\": \"{n} evals outside the question set ignored\",\n \"scoreboard.weights\": \"weights:\",\n \"scoreboard.allWeights\": \"all evals ×1\",\n \"scoreboard.othersWeight\": \"others ×1\",\n \"scoreboard.subjectTitle\": \"{questions} evals, weighted {earned} of {possible}\",\n \"delta.empty\": \"{experiments} experiments, 0 comparable conditions\",\n \"delta.totalsRow\": \"totals\",\n \"delta.passRate\": \"pass rate\",\n \"delta.totalScore\": \"total score\",\n \"delta.cost\": \"cost\",\n \"delta.commonVsBaseline\": \"{n} common vs baseline\",\n \"stability.neverPassed\": \"never passed\",\n /** ScopeWarnings 聚合层的 chrome:汇总行、kind 徽标、组头与明细折叠标签;message 本体不经字典。 */\n \"issues.summary.experiments.one\": \"{n} experiment flagged\",\n \"issues.summary.experiments.other\": \"{n} experiments flagged\",\n \"issues.group.unreadableSnapshot.one\": \"{n} run unreadable\",\n \"issues.group.unreadableSnapshot.other\": \"{n} runs unreadable\",\n \"issues.details.one\": \"{n} warning\",\n \"issues.details.other\": \"{n} issues\",\n \"issues.badge.unfinishedSnapshot\": \"unfinished\",\n /** 覆盖缺口(scope.coverage)。 */\n \"overview.evalsCountPartial\": \"{covered}/{total} evals\",\n /** Hero / HeroCard 的运行 meta(hero.noRuns 是 latestStartedAt 为 null 时的内置文案)。 */\n \"hero.lastRun\": \"Last run {time}\",\n \"hero.noRuns\": \"No runs yet\",\n /** CopyFixPrompt 的 web 面 chrome(prompt 本身面向 agent、固定英文,不经词典)。 */\n \"copyFixPrompt.summary.one\": \"Fix prompt · {n} failure\",\n \"copyFixPrompt.summary.other\": \"Fix prompt · {n} failures\",\n \"copyFixPrompt.copy\": \"Copy fix prompt\",\n /** TraceWaterfall 的 chrome。 */\n \"traceWaterfall.empty\": \"No attempts\",\n \"traceWaterfall.noTrace\": \"no trace\",\n \"traceWaterfall.spans.one\": \"{n} span\",\n \"traceWaterfall.spans.other\": \"{n} spans\",\n \"traceWaterfall.failedSpans.one\": \"{n} failed\",\n \"traceWaterfall.failedSpans.other\": \"{n} failed\",\n /** Waterfall 原语的 chrome。 */\n \"waterfall.nodes.one\": \"{n} node\",\n \"waterfall.nodes.other\": \"{n} nodes\",\n \"waterfall.failedNodes.one\": \"{n} failed\",\n \"waterfall.failedNodes.other\": \"{n} failed\",\n \"waterfall.foldTotal\": \"{t} total\",\n /** SnapshotDiagnostics 聚合层的 chrome:汇总行三段计数与最高严重度;message/command 本体不经字典。 */\n \"snapshotDiagnostics.summary.experiments.one\": \"{n} experiment\",\n \"snapshotDiagnostics.summary.experiments.other\": \"{n} experiments\",\n \"snapshotDiagnostics.summary.runs.one\": \"{n} run\",\n \"snapshotDiagnostics.summary.runs.other\": \"{n} runs\",\n \"snapshotDiagnostics.summary.records.one\": \"{n} record\",\n \"snapshotDiagnostics.summary.records.other\": \"{n} records\",\n \"snapshotDiagnostics.severity.warning\": \"issues only\",\n \"snapshotDiagnostics.severity.error\": \"errors present\",\n /** AttemptList 的 web 面过滤框占位符(filter 渐进增强)。 */\n \"attemptList.filterPlaceholder\": \"Filter attempts…\",\n /** 计分制 attempt 详情的 chrome(docs/feature/assertions/library/display.md「计分制」)。 */\n \"attemptAssertions.scorePointsEarned\": \"{earned}/{total} score points earned in full\",\n \"attemptAssertions.scoreEntries\": \"Score entries\",\n /** 断言表的四列表头。 */\n \"attemptAssertions.name\": \"Assertion\",\n \"attemptAssertions.severity\": \"Severity\",\n \"attemptAssertions.outcome\": \"Outcome\",\n \"attemptAssertions.detail\": \"Detail\",\n \"attemptSource.abortReason\": \"prerequisite failed, test() ended here\",\n \"tabs.tab\": \"Tab\",\n /** 成本投影卡片的显示文案(docs/feature/reports/cost-projections/cli.md)。 */\n \"costProjection.unavailable\": \"cost projection unavailable\",\n \"costProjection.migrationRequired\": \"cost projection requires migration — run niceeval migrate\",\n \"costProjection.basis.observed\": \"observed\",\n \"costProjection.basis.estimated\": \"estimated\",\n \"costProjection.basis.mixed\": \"mixed\",\n \"costProjection.state.partial\": \"partial\",\n \"costProjection.profile\": \"Pricing profile {identity} · {currency} · {decimals} decimals\",\n \"costProjection.providerObserved\": \"Provider observed\",\n \"costProjection.profileEstimated\": \"Profile estimated\",\n \"costProjection.meanPerContributingSlot\": \"Mean per contributing slot\",\n \"costProjection.totalKnownCost\": \"Total known cost\",\n \"costProjection.knownValue\": \"Known value\",\n \"costProjection.provenance\": \"Rate card {source} · as of {asOf}\",\n \"costProjection.coverage\": \"{samples}/{total} slots\",\n \"costProjection.unpriced\": \"Unpriced\",\n \"costProjection.observedElsewhere\": \"Observed elsewhere\",\n \"costProjection.notConverted\": \"not converted\",\n \"costProjection.reason\": \"{provider} {code}\",\n} as const;\nexport type ReportMessageKey = keyof typeof en;\nconst zhCN: globalThis.Record<ReportMessageKey, string> = {\n \"verdict.passed\": \"通过\",\n \"verdict.failed\": \"失败\",\n \"verdict.errored\": \"错误\",\n \"verdict.skipped\": \"跳过\",\n \"attemptSummary.attempt\": \"第 {n} 次\",\n \"timeDistance.minute\": \"{n} 分钟\",\n \"timeDistance.hour\": \"{n} 小时\",\n \"timeDistance.day\": \"{n} 天\",\n \"timeDistance.month\": \"{n} 个月\",\n \"cell.missing\": \"无数据\",\n \"cell.unscorable\": \"测不出\",\n \"cell.noCurrentResult\": \"当前配置下无结果\",\n \"cell.measuredTitle\": \"{samples}/{total} 次 attempt 测得\",\n \"cell.noneMeasurableTitle\": \"0/{total} 次 attempt 可测\",\n \"cell.coverageTitle\": \"覆盖率 {samples}/{total}:其余 attempt 测不了这个指标\",\n \"cell.missingValue\": \"(missing)\",\n \"cell.evidence.one\": \"{n} 个 Attempt\",\n \"cell.evidence.other\": \"{n} 个 Attempt\",\n \"table.higherBetter\": \"越高越好\",\n \"table.lowerBetter\": \"越低越好\",\n \"table.model\": \"模型\",\n \"table.agent\": \"Agent\",\n \"table.verdicts\": \"结果\",\n \"table.filterPlaceholder\": \"筛选行…\",\n \"table.eval\": \"题目\",\n \"table.reason\": \"原因\",\n \"table.viewBreakdown\": \"逐题明细\",\n \"table.attempt\": \"Attempt\",\n \"experimentList.experiment\": \"实验\",\n \"experimentList.avgDuration\": \"平均耗时\",\n \"experimentList.passRate\": \"通过率\",\n \"experimentList.passRateDescription\": \"端到端通过率:passed = 1;failed 和 errored = 0\",\n \"experimentList.totalScore\": \"总分\",\n \"experimentList.totalScoreDescription\": \"总分:各 Eval 挣分之和\",\n \"experimentList.tokens\": \"Tokens\",\n \"experimentList.cost\": \"成本\",\n \"experimentList.result\": \"结果\",\n \"experimentList.status\": \"状态\",\n \"experimentList.evalAttempt\": \"题目 / Attempt\",\n \"experimentList.duration\": \"耗时\",\n \"experimentList.filterPlaceholder\": \"筛选实验…\",\n \"experimentList.defaultModel\": \"默认\",\n \"experimentList.flags\": \"Flags\",\n \"entityList.average\": \"平均 {value}\",\n \"entityList.moreFailures.one\": \"+{n} 条其它失败\",\n \"entityList.moreFailures.other\": \"+{n} 条其它失败\",\n \"entityList.moreLostPoints.one\": \"+{n} 处其它丢分\",\n \"entityList.moreLostPoints.other\": \"+{n} 处其它丢分\",\n \"table.columnsHidden.one\": \"(还有 {n} 列未列出)\",\n \"table.columnsHidden.other\": \"(还有 {n} 列未列出)\",\n \"stabilityOverview.executions\": \"执行次数\",\n \"stabilityOverview.neverPassed\": \"零通过题\",\n \"stabilityOverview.flaky\": \"闪烁题\",\n \"scopeSummary.experiments\": \"实验\",\n \"scopeSummary.evals\": \"Eval\",\n \"scopeSummary.attempts\": \"Attempt\",\n \"scopeSummary.passRate\": \"通过率\",\n \"scopeSummary.totalScore\": \"总分\",\n \"scopeSummary.totalCost\": \"总成本\",\n \"scopeSummary.lastRun\": \"最近运行 · {time}\",\n \"scopeSummary.runRange\": \"运行范围 · {from} – {to}\",\n \"scopeSummary.costCoverage\": \"{samples}/{total} 次有成本数据\",\n \"scopeSummary.votesEval\": \"Eval 结果\",\n \"scopeSummary.votesAttempt\": \"Attempt 结果\",\n \"overview.experiments.one\": \"{n} 个实验\",\n \"overview.experiments.other\": \"{n} 个实验\",\n \"overview.evalsCount\": \"{n} 个 Eval\",\n \"overview.attemptsCount\": \"{n} 次 attempt\",\n \"overview.evals\": \"Eval\",\n \"overview.passRate\": \"通过率\",\n \"overview.totalCost\": \"成本\",\n \"scatter.betterUpperRight\": \"越靠右上越好\",\n \"chart.series\": \"系列\",\n \"scatter.noData\": \"{x} × {y} 没有可绘制的数据\",\n \"scatter.groupedBy\": \"按 {dim} 归类\",\n \"pointsMissing.one\": \"{n} 个点缺数据\",\n \"pointsMissing.other\": \"{n} 个点缺数据\",\n \"attemptList.empty\": \"没有 attempt\",\n \"attemptList.truncated\": \"还有 {n} 条未列出\",\n \"attemptList.truncatedText\": \"(还有 {n} 条未列出)\",\n \"attemptList.score\": \"得分 {score}\",\n \"attemptList.unavailable\": \"评不了\",\n \"attemptList.details\": \"详情\",\n \"scoreboard.total\": \"总分\",\n \"scoreboard.totalText\": \"总分\",\n \"scoreboard.notRun.one\": \"{n} 道题没跑,按 0 计\",\n \"scoreboard.notRun.other\": \"{n} 道题没跑,按 0 计\",\n \"scoreboard.unscorable.one\": \"{n} 道题测不了,按 0 计\",\n \"scoreboard.unscorable.other\": \"{n} 道题测不了,按 0 计\",\n \"scoreboard.notRunText\": \"(没跑 {n} 题)\",\n \"scoreboard.unscorableText\": \"(测不了 {n} 题)\",\n \"scoreboard.ignored.one\": \"题集之外的 {n} 道题已忽略\",\n \"scoreboard.ignored.other\": \"题集之外的 {n} 道题已忽略\",\n \"scoreboard.weights\": \"权重:\",\n \"scoreboard.allWeights\": \"全部题 ×1\",\n \"scoreboard.othersWeight\": \"其余 ×1\",\n \"scoreboard.subjectTitle\": \"{questions} 道题,加权得分 {earned}/{possible}\",\n \"delta.empty\": \"{experiments} 个实验、0 个可配对条件\",\n \"delta.totalsRow\": \"汇总\",\n \"delta.passRate\": \"通过率\",\n \"delta.totalScore\": \"总分\",\n \"delta.cost\": \"成本\",\n \"delta.commonVsBaseline\": \"共同 {n} 题对基准\",\n \"stability.neverPassed\": \"从未通过\",\n \"issues.summary.experiments.one\": \"{n} 个实验的数字带警告\",\n \"issues.summary.experiments.other\": \"{n} 个实验的数字带警告\",\n \"issues.group.unreadableSnapshot.one\": \"{n} 个快照被跳过\",\n \"issues.group.unreadableSnapshot.other\": \"{n} 个快照被跳过\",\n \"issues.details.one\": \"{n} 条原始警告\",\n \"issues.details.other\": \"{n} 条原始警告\",\n \"issues.badge.unfinishedSnapshot\": \"未收尾\",\n \"overview.evalsCountPartial\": \"{covered}/{total} 个 Eval\",\n \"hero.lastRun\": \"最后运行 {time}\",\n \"hero.noRuns\": \"暂无运行\",\n \"copyFixPrompt.summary.one\": \"修复 prompt · {n} 个失败\",\n \"copyFixPrompt.summary.other\": \"修复 prompt · {n} 个失败\",\n \"copyFixPrompt.copy\": \"复制修复 prompt\",\n \"traceWaterfall.empty\": \"没有 attempt\",\n \"traceWaterfall.noTrace\": \"无 trace\",\n \"traceWaterfall.spans.one\": \"{n} 个 span\",\n \"traceWaterfall.spans.other\": \"{n} 个 span\",\n \"traceWaterfall.failedSpans.one\": \"{n} 个失败\",\n \"traceWaterfall.failedSpans.other\": \"{n} 个失败\",\n \"waterfall.nodes.one\": \"{n} 个节点\",\n \"waterfall.nodes.other\": \"{n} 个节点\",\n \"waterfall.failedNodes.one\": \"{n} 个失败\",\n \"waterfall.failedNodes.other\": \"{n} 个失败\",\n \"waterfall.foldTotal\": \"合计 {t}\",\n \"snapshotDiagnostics.summary.experiments.one\": \"{n} 个实验\",\n \"snapshotDiagnostics.summary.experiments.other\": \"{n} 个实验\",\n \"snapshotDiagnostics.summary.runs.one\": \"{n} 个快照\",\n \"snapshotDiagnostics.summary.runs.other\": \"{n} 个快照\",\n \"snapshotDiagnostics.summary.records.one\": \"{n} 条记录\",\n \"snapshotDiagnostics.summary.records.other\": \"{n} 条记录\",\n \"snapshotDiagnostics.severity.warning\": \"仅警告\",\n \"snapshotDiagnostics.severity.error\": \"含错误\",\n \"attemptList.filterPlaceholder\": \"筛选 attempt…\",\n \"attemptAssertions.scorePointsEarned\": \"{earned}/{total} 得分点挣满\",\n \"attemptAssertions.scoreEntries\": \"给分记录\",\n \"attemptAssertions.name\": \"断言\",\n \"attemptAssertions.severity\": \"严重度\",\n \"attemptAssertions.outcome\": \"结果\",\n \"attemptAssertions.detail\": \"详情\",\n \"attemptSource.abortReason\": \"前置未过,test() 就地结束\",\n \"tabs.tab\": \"Tab\",\n \"costProjection.unavailable\": \"成本投影不可用\",\n \"costProjection.migrationRequired\": \"成本投影需要迁移——请运行 niceeval migrate\",\n \"costProjection.basis.observed\": \"供应商观测\",\n \"costProjection.basis.estimated\": \"价格表估算\",\n \"costProjection.basis.mixed\": \"混合\",\n \"costProjection.state.partial\": \"部分\",\n \"costProjection.profile\": \"价格配置 {identity} · {currency} · {decimals} 位小数\",\n \"costProjection.providerObserved\": \"供应商观测金额\",\n \"costProjection.profileEstimated\": \"价格表估算金额\",\n \"costProjection.meanPerContributingSlot\": \"每个有贡献槽位的平均成本\",\n \"costProjection.totalKnownCost\": \"已知总成本\",\n \"costProjection.knownValue\": \"已知值\",\n \"costProjection.provenance\": \"费率卡 {source} · 截止 {asOf}\",\n \"costProjection.coverage\": \"{samples}/{total} 个槽位\",\n \"costProjection.unpriced\": \"未报价\",\n \"costProjection.observedElsewhere\": \"其它币种观测\",\n \"costProjection.notConverted\": \"不换算\",\n \"costProjection.reason\": \"{provider} {code}\",\n};\nconst dictionaries: globalThis.Record<string, globalThis.Record<ReportMessageKey, string>> = {\n en,\n \"zh-CN\": zhCN,\n};\n/** 查字典 + 简单插值({name} 占位符)。内置词典未覆盖的 locale 回退 en。 */\nexport function localeText(locale: ReportLocale, key: ReportMessageKey, vars?: globalThis.Record<string, string | number>): string {\n const template = dictionaries[locale]?.[key] ?? dictionaries.en[key];\n if (!vars)\n return template;\n return template.replace(/\\{(\\w+)\\}/g, (m, name: string) => name in vars ? String(vars[name]) : m);\n}\n/**\n * 内置消息键 → 覆盖 `DISPLAY_LOCALES` 的 `LocalizedText`。\n * 列声明的 `header` 这类「值本身要随身携带两种语言」的字段用它烤一份,\n * 渲染面再按当前 locale 解析(docs/feature/reports/library.md)。\n */\nexport function localizedMessage(key: ReportMessageKey): LocalizedText {\n const text: globalThis.Record<string, string> = {};\n for (const locale of DISPLAY_LOCALES)\n text[locale] = localeText(locale, key);\n return text;\n}\n/** 带单复数的计数文案:n === 1 用 `<base>.one`,其余 `<base>.other`(zh-CN 两键同值)。 */\nexport function countText(locale: ReportLocale, base: \"overview.experiments\" | \"pointsMissing\" | \"scoreboard.notRun\" | \"scoreboard.unscorable\" | \"scoreboard.ignored\" | \"entityList.moreFailures\" | \"entityList.moreLostPoints\" | \"cell.evidence\" | \"table.columnsHidden\" | \"copyFixPrompt.summary\" | \"traceWaterfall.spans\" | \"traceWaterfall.failedSpans\" | \"waterfall.nodes\" | \"waterfall.failedNodes\", n: number): string {\n return localeText(locale, `${base}.${n === 1 ? \"one\" : \"other\"}` as ReportMessageKey, { n });\n}\n/**\n * 按 locale 解析读数 / 列 label;undefined 回退 fallback(= metric.name)。渲染面(web / text)共用。\n */\nexport function resolveMetricLabel(label: LocalizedText | undefined, locale: ReportLocale, fallback: string): string {\n if (label === undefined)\n return fallback;\n try {\n return resolveLocalizedText(label, locale);\n }\n catch {\n return fallback;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["locale.ts"],"names":[],"mappings":"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","sourcesContent":["// 官方组件 chrome 文案的 locale 字典与 LocalizedText 解析。\n// ReportLocale 是开放的 BCP 47 标签(数据协议不封语言上限);官方内置文案与\n// 官方固定文案覆盖 en / zh-CN;公共 MetricValue 由 renderer 按当前 locale 格式化。\n// 只覆盖组件自带的固定文案(verdict 词、缺数据、覆盖率角标、注脚、占位符等);\n// 维度键、issues 的 message 不经这里。\n// 刻意不 import src/i18n/(CLI 专用字典,locale 来源与 key 面完全不同)。\nimport type { LocalizedText } from \"../../types.ts\";\nexport type { LocalizedText };\n/** 报告渲染的 locale(BCP 47 标签,开放);默认 \"en\"(`niceeval show` 缺省输出不变)。 */\nexport type ReportLocale = string;\nexport const DEFAULT_REPORT_LOCALE: ReportLocale = \"en\";\n/** 官方固定文案覆盖的 locale 全集。 */\nexport const DISPLAY_LOCALES: readonly ReportLocale[] = [\"en\", \"zh-CN\"];\n/**\n * LocalizedText 的确定回退:取当前 locale;缺失时取 en;仍缺失时取按 locale 键字典序的\n * 第一个非空值。对象没有任何非空值时报错,不渲染空文案\n * (docs/feature/reports/library.md「行为约束」)。\n */\nexport function resolveLocalizedText(text: LocalizedText, locale: ReportLocale): string {\n if (typeof text === \"string\")\n return text;\n const direct = text[locale];\n if (direct !== undefined && direct !== \"\")\n return direct;\n const en = text.en;\n if (en !== undefined && en !== \"\")\n return en;\n for (const key of Object.keys(text).sort()) {\n const value = text[key];\n if (value !== undefined && value !== \"\")\n return value;\n }\n throw new Error(\"LocalizedText object has no non-empty value. Provide at least one locale entry, e.g. { en: \\\"…\\\" }.\");\n}\n/** LocalizedText 按字段值深相等(键顺序无关;标题回退链的「唯一且相同」判定用)。 */\nexport function localizedTextEquals(a: LocalizedText, b: LocalizedText): boolean {\n if (typeof a === \"string\" || typeof b === \"string\")\n return a === b;\n const keysA = Object.keys(a).sort();\n const keysB = Object.keys(b).sort();\n if (keysA.length !== keysB.length)\n return false;\n return keysA.every((key, i) => key === keysB[i] && a[key] === b[key]);\n}\nconst en = {\n \"verdict.passed\": \"passed\",\n \"verdict.failed\": \"failed\",\n \"verdict.errored\": \"errored\",\n \"verdict.skipped\": \"skipped\",\n /** AttemptSummary 的重试序号(0 起的 identity.attempt 显示前 +1)。 */\n \"attemptSummary.attempt\": \"attempt {n}\",\n /** formatTimeDistance 的四区间读法(presentation.md「相对时距是数据,不是文案」)。 */\n \"timeDistance.minute\": \"{n}m\",\n \"timeDistance.hour\": \"{n}h\",\n \"timeDistance.day\": \"{n}d\",\n \"timeDistance.month\": \"{n}mo\",\n /** 全 null / 无样本的统一文案,绝不画 0。 */\n \"cell.missing\": \"no data\",\n /** missing 格 code=`unscorable`:有 attempt,但读数测不出。 */\n \"cell.unscorable\": \"unscorable\",\n /** missing 格 code=`noCurrentResult`:当前配置下这道题没有结果(覆盖缺口占位行)。 */\n \"cell.noCurrentResult\": \"no result for current config\",\n \"cell.measuredTitle\": \"{samples}/{total} attempts measured\",\n \"cell.noneMeasurableTitle\": \"0/{total} attempts measurable\",\n \"cell.coverageTitle\": \"coverage {samples}/{total}: this metric is null for the remaining attempts\",\n \"cell.missingValue\": \"(missing)\",\n \"cell.evidence.one\": \"{n} attempt\",\n \"cell.evidence.other\": \"{n} attempts\",\n \"table.higherBetter\": \"higher is better\",\n \"table.lowerBetter\": \"lower is better\",\n \"table.model\": \"Model\",\n \"table.agent\": \"Agent\",\n \"table.verdicts\": \"Verdicts\",\n \"table.filterPlaceholder\": \"Filter rows…\",\n \"table.eval\": \"Eval\",\n \"table.reason\": \"Reason\",\n \"table.viewBreakdown\": \"Per-eval breakdown\",\n /** <Table> 的 locator 列表头(行带 locator 时自动追加)。 */\n \"table.attempt\": \"attempt\",\n \"experimentList.experiment\": \"Experiment\",\n \"experimentList.avgDuration\": \"Avg. time\",\n \"experimentList.passRate\": \"Pass rate\",\n \"experimentList.passRateDescription\": \"End-to-end pass rate: passed = 1; failed and errored = 0\",\n \"experimentList.totalScore\": \"Total score\",\n \"experimentList.totalScoreDescription\": \"Total score: sum of points earned across evals\",\n \"experimentList.tokens\": \"Tokens\",\n \"experimentList.cost\": \"Cost\",\n \"experimentList.result\": \"Result\",\n \"experimentList.status\": \"Status\",\n \"experimentList.evalAttempt\": \"Eval / Attempt\",\n \"experimentList.duration\": \"Duration\",\n \"experimentList.filterPlaceholder\": \"Filter experiments…\",\n \"experimentList.defaultModel\": \"default\",\n \"experimentList.flags\": \"Flags\",\n \"entityList.average\": \"{value} avg\",\n \"entityList.moreFailures.one\": \"+{n} more failure\",\n \"entityList.moreFailures.other\": \"+{n} more failures\",\n /** 计分制 passed attempt 丢分得分点的「其余」计数(规则 6);与 moreFailures 同结构,措辞不同——\n * 丢分不是失败,不该说成 \"more failures\"(entity-lists.md AttemptListItem.moreFailures 字段注释)。 */\n \"entityList.moreLostPoints.one\": \"+{n} more lost point\",\n \"entityList.moreLostPoints.other\": \"+{n} more lost points\",\n /** <Table> 压到下限仍放不下时,从右侧丢列并如实报数。 */\n \"table.columnsHidden.one\": \"({n} more column not shown)\",\n \"table.columnsHidden.other\": \"({n} more columns not shown)\",\n /** StabilityOverview 的读数格标签。 */\n \"stabilityOverview.executions\": \"Executions\",\n \"stabilityOverview.neverPassed\": \"Never passed\",\n \"stabilityOverview.flaky\": \"Flaky evals\",\n /** SampleSummary 的 KPI 标签。 */\n \"scopeSummary.experiments\": \"Experiments\",\n \"scopeSummary.evals\": \"Evals\",\n \"scopeSummary.attempts\": \"Attempts\",\n \"scopeSummary.passRate\": \"Pass rate\",\n \"scopeSummary.totalScore\": \"Total score\",\n \"scopeSummary.totalCost\": \"Total cost\",\n \"scopeSummary.lastRun\": \"Last run · {time}\",\n \"scopeSummary.runRange\": \"Run range · {from} – {to}\",\n \"scopeSummary.costCoverage\": \"Cost available for {samples}/{total} attempts\",\n \"scopeSummary.votesEval\": \"Eval results\",\n \"scopeSummary.votesAttempt\": \"Attempt results\",\n \"overview.experiments.one\": \"{n} experiment\",\n \"overview.experiments.other\": \"{n} experiments\",\n \"overview.evalsCount\": \"{n} evals\",\n \"overview.attemptsCount\": \"{n} attempts\",\n \"overview.evals\": \"Evals\",\n \"overview.passRate\": \"Pass rate\",\n \"overview.totalCost\": \"Cost\",\n /** 方向提示唯一文案:轴向已随 better 反正,「更好」恒指向右上(两轴都声明 better 时才显示)。 */\n \"scatter.betterUpperRight\": \"better → upper right\",\n /** 读值表的系列列表头;多个系列同图时才出现。 */\n \"chart.series\": \"series\",\n /** 0 个可画点:x/y 指标没有可用数据。 */\n \"scatter.noData\": \"No data to plot {x} × {y}\",\n /** 标题行尾的归类维度标注(series 维度存在时显示)。 */\n \"scatter.groupedBy\": \"grouped by {dim}\",\n \"pointsMissing.one\": \"{n} point missing data\",\n \"pointsMissing.other\": \"{n} points missing data\",\n \"attemptList.empty\": \"No attempts\",\n \"attemptList.truncated\": \"and {n} more not shown\",\n \"attemptList.truncatedText\": \"({n} more not shown)\",\n \"attemptList.score\": \"score {score}\",\n \"attemptList.unavailable\": \"unavailable\",\n \"attemptList.details\": \"details\",\n \"scoreboard.total\": \"Total\",\n \"scoreboard.totalText\": \"total\",\n \"scoreboard.notRun.one\": \"{n} eval not run, scored 0\",\n \"scoreboard.notRun.other\": \"{n} evals not run, scored 0\",\n \"scoreboard.unscorable.one\": \"{n} eval unscorable, scored 0\",\n \"scoreboard.unscorable.other\": \"{n} evals unscorable, scored 0\",\n \"scoreboard.notRunText\": \"({n} not run)\",\n \"scoreboard.unscorableText\": \"({n} unscorable)\",\n \"scoreboard.ignored.one\": \"{n} eval outside the question set ignored\",\n \"scoreboard.ignored.other\": \"{n} evals outside the question set ignored\",\n \"scoreboard.weights\": \"weights:\",\n \"scoreboard.allWeights\": \"all evals ×1\",\n \"scoreboard.othersWeight\": \"others ×1\",\n \"scoreboard.subjectTitle\": \"{questions} evals, weighted {earned} of {possible}\",\n \"delta.empty\": \"{experiments} experiments, 0 comparable conditions\",\n \"delta.totalsRow\": \"totals\",\n \"delta.passRate\": \"pass rate\",\n \"delta.totalScore\": \"total score\",\n \"delta.cost\": \"cost\",\n \"delta.commonVsBaseline\": \"{n} common vs baseline\",\n \"stability.neverPassed\": \"never passed\",\n /** ScopeWarnings 聚合层的 chrome:汇总行、kind 徽标、组头与明细折叠标签;message 本体不经字典。 */\n \"issues.summary.experiments.one\": \"{n} experiment flagged\",\n \"issues.summary.experiments.other\": \"{n} experiments flagged\",\n \"issues.group.unreadableSnapshot.one\": \"{n} run unreadable\",\n \"issues.group.unreadableSnapshot.other\": \"{n} runs unreadable\",\n \"issues.details.one\": \"{n} warning\",\n \"issues.details.other\": \"{n} issues\",\n \"issues.badge.unfinishedSnapshot\": \"unfinished\",\n /** 覆盖缺口(scope.coverage)。 */\n \"overview.evalsCountPartial\": \"{covered}/{total} evals\",\n /** Hero / HeroCard 的运行 meta(hero.noRuns 是 latestStartedAt 为 null 时的内置文案)。 */\n \"hero.lastRun\": \"Last run {time}\",\n \"hero.noRuns\": \"No runs yet\",\n /** CopyFixPrompt 的 web 面 chrome(prompt 本身面向 agent、固定英文,不经词典)。 */\n \"copyFixPrompt.summary.one\": \"Fix prompt · {n} failure\",\n \"copyFixPrompt.summary.other\": \"Fix prompt · {n} failures\",\n \"copyFixPrompt.copy\": \"Copy fix prompt\",\n /** TraceWaterfall 的 chrome。 */\n \"traceWaterfall.empty\": \"No attempts\",\n \"traceWaterfall.noTrace\": \"no trace\",\n \"traceWaterfall.spans.one\": \"{n} span\",\n \"traceWaterfall.spans.other\": \"{n} spans\",\n \"traceWaterfall.failedSpans.one\": \"{n} failed\",\n \"traceWaterfall.failedSpans.other\": \"{n} failed\",\n /** Waterfall 原语的 chrome。 */\n \"waterfall.nodes.one\": \"{n} node\",\n \"waterfall.nodes.other\": \"{n} nodes\",\n \"waterfall.failedNodes.one\": \"{n} failed\",\n \"waterfall.failedNodes.other\": \"{n} failed\",\n \"waterfall.foldTotal\": \"{t} total\",\n /** SnapshotDiagnostics 聚合层的 chrome:汇总行三段计数与最高严重度;message/command 本体不经字典。 */\n \"snapshotDiagnostics.summary.experiments.one\": \"{n} experiment\",\n \"snapshotDiagnostics.summary.experiments.other\": \"{n} experiments\",\n \"snapshotDiagnostics.summary.runs.one\": \"{n} run\",\n \"snapshotDiagnostics.summary.runs.other\": \"{n} runs\",\n \"snapshotDiagnostics.summary.records.one\": \"{n} record\",\n \"snapshotDiagnostics.summary.records.other\": \"{n} records\",\n \"snapshotDiagnostics.severity.warning\": \"issues only\",\n \"snapshotDiagnostics.severity.error\": \"errors present\",\n /** AttemptList 的 web 面过滤框占位符(filter 渐进增强)。 */\n \"attemptList.filterPlaceholder\": \"Filter attempts…\",\n /** 计分制 attempt 详情的 chrome(docs/feature/assertions/library/display.md「计分制」)。 */\n \"attemptAssertions.scorePointsEarned\": \"{earned}/{total} score points earned in full\",\n \"attemptAssertions.scoreEntries\": \"Score entries\",\n /** 断言表的四列表头。 */\n \"attemptAssertions.name\": \"Assertion\",\n \"attemptAssertions.severity\": \"Severity\",\n \"attemptAssertions.outcome\": \"Outcome\",\n \"attemptAssertions.detail\": \"Detail\",\n \"attemptSource.abortReason\": \"prerequisite failed, test() ended here\",\n \"tabs.tab\": \"Tab\",\n /** 成本投影卡片的显示文案(docs/feature/reports/cost-projections/cli.md)。 */\n \"costProjection.unavailable\": \"cost projection unavailable\",\n \"costProjection.migrationRequired\": \"cost projection requires migration — run niceeval migrate\",\n \"costProjection.basis.observed\": \"observed\",\n \"costProjection.basis.estimated\": \"estimated\",\n \"costProjection.basis.mixed\": \"mixed\",\n \"costProjection.state.partial\": \"partial\",\n \"costProjection.profile\": \"Pricing profile {identity} · {currency} · {decimals} decimals\",\n \"costProjection.providerObserved\": \"Provider observed\",\n \"costProjection.profileEstimated\": \"Profile estimated\",\n \"costProjection.meanPerContributingSlot\": \"Mean per contributing slot\",\n \"costProjection.totalKnownCost\": \"Total known cost\",\n \"costProjection.knownValue\": \"Known value\",\n \"costProjection.provenance\": \"Rate card {source} · as of {asOf}\",\n \"costProjection.coverage\": \"{samples}/{total} slots\",\n \"costProjection.unpriced\": \"Unpriced\",\n \"costProjection.observedElsewhere\": \"Observed elsewhere\",\n \"costProjection.notConverted\": \"not converted\",\n \"costProjection.reason\": \"{provider} {code}\",\n} as const;\nexport type ReportMessageKey = keyof typeof en;\nconst zhCN: globalThis.Record<ReportMessageKey, string> = {\n \"verdict.passed\": \"通过\",\n \"verdict.failed\": \"失败\",\n \"verdict.errored\": \"错误\",\n \"verdict.skipped\": \"跳过\",\n \"attemptSummary.attempt\": \"第 {n} 次\",\n \"timeDistance.minute\": \"{n} 分钟\",\n \"timeDistance.hour\": \"{n} 小时\",\n \"timeDistance.day\": \"{n} 天\",\n \"timeDistance.month\": \"{n} 个月\",\n \"cell.missing\": \"无数据\",\n \"cell.unscorable\": \"测不出\",\n \"cell.noCurrentResult\": \"当前配置下无结果\",\n \"cell.measuredTitle\": \"{samples}/{total} 次 attempt 测得\",\n \"cell.noneMeasurableTitle\": \"0/{total} 次 attempt 可测\",\n \"cell.coverageTitle\": \"覆盖率 {samples}/{total}:其余 attempt 测不了这个指标\",\n \"cell.missingValue\": \"(missing)\",\n \"cell.evidence.one\": \"{n} 个 Attempt\",\n \"cell.evidence.other\": \"{n} 个 Attempt\",\n \"table.higherBetter\": \"越高越好\",\n \"table.lowerBetter\": \"越低越好\",\n \"table.model\": \"模型\",\n \"table.agent\": \"Agent\",\n \"table.verdicts\": \"结果\",\n \"table.filterPlaceholder\": \"筛选行…\",\n \"table.eval\": \"题目\",\n \"table.reason\": \"原因\",\n \"table.viewBreakdown\": \"逐题明细\",\n \"table.attempt\": \"Attempt\",\n \"experimentList.experiment\": \"实验\",\n \"experimentList.avgDuration\": \"平均耗时\",\n \"experimentList.passRate\": \"通过率\",\n \"experimentList.passRateDescription\": \"端到端通过率:passed = 1;failed 和 errored = 0\",\n \"experimentList.totalScore\": \"总分\",\n \"experimentList.totalScoreDescription\": \"总分:各 Eval 挣分之和\",\n \"experimentList.tokens\": \"Tokens\",\n \"experimentList.cost\": \"成本\",\n \"experimentList.result\": \"结果\",\n \"experimentList.status\": \"状态\",\n \"experimentList.evalAttempt\": \"题目 / Attempt\",\n \"experimentList.duration\": \"耗时\",\n \"experimentList.filterPlaceholder\": \"筛选实验…\",\n \"experimentList.defaultModel\": \"默认\",\n \"experimentList.flags\": \"Flags\",\n \"entityList.average\": \"平均 {value}\",\n \"entityList.moreFailures.one\": \"+{n} 条其它失败\",\n \"entityList.moreFailures.other\": \"+{n} 条其它失败\",\n \"entityList.moreLostPoints.one\": \"+{n} 处其它丢分\",\n \"entityList.moreLostPoints.other\": \"+{n} 处其它丢分\",\n \"table.columnsHidden.one\": \"(还有 {n} 列未列出)\",\n \"table.columnsHidden.other\": \"(还有 {n} 列未列出)\",\n \"stabilityOverview.executions\": \"执行次数\",\n \"stabilityOverview.neverPassed\": \"零通过题\",\n \"stabilityOverview.flaky\": \"闪烁题\",\n \"scopeSummary.experiments\": \"实验\",\n \"scopeSummary.evals\": \"Eval\",\n \"scopeSummary.attempts\": \"Attempt\",\n \"scopeSummary.passRate\": \"通过率\",\n \"scopeSummary.totalScore\": \"总分\",\n \"scopeSummary.totalCost\": \"总成本\",\n \"scopeSummary.lastRun\": \"最近运行 · {time}\",\n \"scopeSummary.runRange\": \"运行范围 · {from} – {to}\",\n \"scopeSummary.costCoverage\": \"{samples}/{total} 次有成本数据\",\n \"scopeSummary.votesEval\": \"Eval 结果\",\n \"scopeSummary.votesAttempt\": \"Attempt 结果\",\n \"overview.experiments.one\": \"{n} 个实验\",\n \"overview.experiments.other\": \"{n} 个实验\",\n \"overview.evalsCount\": \"{n} 个 Eval\",\n \"overview.attemptsCount\": \"{n} 次 attempt\",\n \"overview.evals\": \"Eval\",\n \"overview.passRate\": \"通过率\",\n \"overview.totalCost\": \"成本\",\n \"scatter.betterUpperRight\": \"越靠右上越好\",\n \"chart.series\": \"系列\",\n \"scatter.noData\": \"{x} × {y} 没有可绘制的数据\",\n \"scatter.groupedBy\": \"按 {dim} 归类\",\n \"pointsMissing.one\": \"{n} 个点缺数据\",\n \"pointsMissing.other\": \"{n} 个点缺数据\",\n \"attemptList.empty\": \"没有 attempt\",\n \"attemptList.truncated\": \"还有 {n} 条未列出\",\n \"attemptList.truncatedText\": \"(还有 {n} 条未列出)\",\n \"attemptList.score\": \"得分 {score}\",\n \"attemptList.unavailable\": \"评不了\",\n \"attemptList.details\": \"详情\",\n \"scoreboard.total\": \"总分\",\n \"scoreboard.totalText\": \"总分\",\n \"scoreboard.notRun.one\": \"{n} 道题没跑,按 0 计\",\n \"scoreboard.notRun.other\": \"{n} 道题没跑,按 0 计\",\n \"scoreboard.unscorable.one\": \"{n} 道题测不了,按 0 计\",\n \"scoreboard.unscorable.other\": \"{n} 道题测不了,按 0 计\",\n \"scoreboard.notRunText\": \"(没跑 {n} 题)\",\n \"scoreboard.unscorableText\": \"(测不了 {n} 题)\",\n \"scoreboard.ignored.one\": \"题集之外的 {n} 道题已忽略\",\n \"scoreboard.ignored.other\": \"题集之外的 {n} 道题已忽略\",\n \"scoreboard.weights\": \"权重:\",\n \"scoreboard.allWeights\": \"全部题 ×1\",\n \"scoreboard.othersWeight\": \"其余 ×1\",\n \"scoreboard.subjectTitle\": \"{questions} 道题,加权得分 {earned}/{possible}\",\n \"delta.empty\": \"{experiments} 个实验、0 个可配对条件\",\n \"delta.totalsRow\": \"汇总\",\n \"delta.passRate\": \"通过率\",\n \"delta.totalScore\": \"总分\",\n \"delta.cost\": \"成本\",\n \"delta.commonVsBaseline\": \"共同 {n} 题对基准\",\n \"stability.neverPassed\": \"从未通过\",\n \"issues.summary.experiments.one\": \"{n} 个实验的数字带警告\",\n \"issues.summary.experiments.other\": \"{n} 个实验的数字带警告\",\n \"issues.group.unreadableSnapshot.one\": \"{n} 个快照被跳过\",\n \"issues.group.unreadableSnapshot.other\": \"{n} 个快照被跳过\",\n \"issues.details.one\": \"{n} 条原始警告\",\n \"issues.details.other\": \"{n} 条原始警告\",\n \"issues.badge.unfinishedSnapshot\": \"未收尾\",\n \"overview.evalsCountPartial\": \"{covered}/{total} 个 Eval\",\n \"hero.lastRun\": \"最后运行 {time}\",\n \"hero.noRuns\": \"暂无运行\",\n \"copyFixPrompt.summary.one\": \"修复 prompt · {n} 个失败\",\n \"copyFixPrompt.summary.other\": \"修复 prompt · {n} 个失败\",\n \"copyFixPrompt.copy\": \"复制修复 prompt\",\n \"traceWaterfall.empty\": \"没有 attempt\",\n \"traceWaterfall.noTrace\": \"无 trace\",\n \"traceWaterfall.spans.one\": \"{n} 个 span\",\n \"traceWaterfall.spans.other\": \"{n} 个 span\",\n \"traceWaterfall.failedSpans.one\": \"{n} 个失败\",\n \"traceWaterfall.failedSpans.other\": \"{n} 个失败\",\n \"waterfall.nodes.one\": \"{n} 个节点\",\n \"waterfall.nodes.other\": \"{n} 个节点\",\n \"waterfall.failedNodes.one\": \"{n} 个失败\",\n \"waterfall.failedNodes.other\": \"{n} 个失败\",\n \"waterfall.foldTotal\": \"合计 {t}\",\n \"snapshotDiagnostics.summary.experiments.one\": \"{n} 个实验\",\n \"snapshotDiagnostics.summary.experiments.other\": \"{n} 个实验\",\n \"snapshotDiagnostics.summary.runs.one\": \"{n} 个快照\",\n \"snapshotDiagnostics.summary.runs.other\": \"{n} 个快照\",\n \"snapshotDiagnostics.summary.records.one\": \"{n} 条记录\",\n \"snapshotDiagnostics.summary.records.other\": \"{n} 条记录\",\n \"snapshotDiagnostics.severity.warning\": \"仅警告\",\n \"snapshotDiagnostics.severity.error\": \"含错误\",\n \"attemptList.filterPlaceholder\": \"筛选 attempt…\",\n \"attemptAssertions.scorePointsEarned\": \"{earned}/{total} 得分点挣满\",\n \"attemptAssertions.scoreEntries\": \"给分记录\",\n \"attemptAssertions.name\": \"断言\",\n \"attemptAssertions.severity\": \"严重度\",\n \"attemptAssertions.outcome\": \"结果\",\n \"attemptAssertions.detail\": \"详情\",\n \"attemptSource.abortReason\": \"前置未过,test() 就地结束\",\n \"tabs.tab\": \"Tab\",\n \"costProjection.unavailable\": \"成本投影不可用\",\n \"costProjection.migrationRequired\": \"成本投影需要迁移——请运行 niceeval migrate\",\n \"costProjection.basis.observed\": \"供应商观测\",\n \"costProjection.basis.estimated\": \"价格表估算\",\n \"costProjection.basis.mixed\": \"混合\",\n \"costProjection.state.partial\": \"部分\",\n \"costProjection.profile\": \"价格配置 {identity} · {currency} · {decimals} 位小数\",\n \"costProjection.providerObserved\": \"供应商观测金额\",\n \"costProjection.profileEstimated\": \"价格表估算金额\",\n \"costProjection.meanPerContributingSlot\": \"每个有贡献槽位的平均成本\",\n \"costProjection.totalKnownCost\": \"已知总成本\",\n \"costProjection.knownValue\": \"已知值\",\n \"costProjection.provenance\": \"费率卡 {source} · 截止 {asOf}\",\n \"costProjection.coverage\": \"{samples}/{total} 个槽位\",\n \"costProjection.unpriced\": \"未报价\",\n \"costProjection.observedElsewhere\": \"其它币种观测\",\n \"costProjection.notConverted\": \"不换算\",\n \"costProjection.reason\": \"{provider} {code}\",\n};\nconst dictionaries: globalThis.Record<string, globalThis.Record<ReportMessageKey, string>> = {\n en,\n \"zh-CN\": zhCN,\n};\n/** 查字典 + 简单插值({name} 占位符)。内置词典未覆盖的 locale 回退 en。 */\nexport function localeText(locale: ReportLocale, key: ReportMessageKey, vars?: globalThis.Record<string, string | number>): string {\n const template = dictionaries[locale]?.[key] ?? dictionaries.en[key];\n if (!vars)\n return template;\n return template.replace(/\\{(\\w+)\\}/g, (m, name: string) => name in vars ? String(vars[name]) : m);\n}\n/**\n * 内置消息键 → 覆盖 `DISPLAY_LOCALES` 的 `LocalizedText`。\n * 列声明的 `header` 这类「值本身要随身携带两种语言」的字段用它烤一份,\n * 渲染面再按当前 locale 解析(docs/feature/reports/library.md)。\n */\nexport function localizedMessage(key: ReportMessageKey): LocalizedText {\n const text: globalThis.Record<string, string> = {};\n for (const locale of DISPLAY_LOCALES)\n text[locale] = localeText(locale, key);\n return text;\n}\n/** 带单复数的计数文案:n === 1 用 `<base>.one`,其余 `<base>.other`(zh-CN 两键同值)。 */\nexport function countText(locale: ReportLocale, base: \"overview.experiments\" | \"pointsMissing\" | \"scoreboard.notRun\" | \"scoreboard.unscorable\" | \"scoreboard.ignored\" | \"entityList.moreFailures\" | \"entityList.moreLostPoints\" | \"cell.evidence\" | \"table.columnsHidden\" | \"copyFixPrompt.summary\" | \"traceWaterfall.spans\" | \"traceWaterfall.failedSpans\" | \"waterfall.nodes\" | \"waterfall.failedNodes\", n: number): string {\n return localeText(locale, `${base}.${n === 1 ? \"one\" : \"other\"}` as ReportMessageKey, { n });\n}\n/**\n * 按 locale 解析读数 / 列 label;undefined 回退 fallback(= metric.name)。渲染面(web / text)共用。\n */\nexport function resolveMetricLabel(label: LocalizedText | undefined, locale: ReportLocale, fallback: string): string {\n if (label === undefined)\n return fallback;\n try {\n return resolveLocalizedText(label, locale);\n }\n catch {\n return fallback;\n }\n}\n"]}
|
|
@@ -56,7 +56,7 @@ declare const en: {
|
|
|
56
56
|
readonly "experimentList.totalScoreDescription": "Total score: sum of points earned across evals";
|
|
57
57
|
readonly "experimentList.tokens": "Tokens";
|
|
58
58
|
readonly "experimentList.cost": "Cost";
|
|
59
|
-
readonly "experimentList.result": "
|
|
59
|
+
readonly "experimentList.result": "Result";
|
|
60
60
|
readonly "experimentList.status": "Status";
|
|
61
61
|
readonly "experimentList.evalAttempt": "Eval / Attempt";
|
|
62
62
|
readonly "experimentList.duration": "Duration";
|
|
@@ -56,7 +56,7 @@ declare const en: {
|
|
|
56
56
|
readonly "experimentList.totalScoreDescription": "Total score: sum of points earned across evals";
|
|
57
57
|
readonly "experimentList.tokens": "Tokens";
|
|
58
58
|
readonly "experimentList.cost": "Cost";
|
|
59
|
-
readonly "experimentList.result": "
|
|
59
|
+
readonly "experimentList.result": "Result";
|
|
60
60
|
readonly "experimentList.status": "Status";
|
|
61
61
|
readonly "experimentList.evalAttempt": "Eval / Attempt";
|
|
62
62
|
readonly "experimentList.duration": "Duration";
|
|
@@ -56,7 +56,7 @@ declare const en: {
|
|
|
56
56
|
readonly "experimentList.totalScoreDescription": "Total score: sum of points earned across evals";
|
|
57
57
|
readonly "experimentList.tokens": "Tokens";
|
|
58
58
|
readonly "experimentList.cost": "Cost";
|
|
59
|
-
readonly "experimentList.result": "
|
|
59
|
+
readonly "experimentList.result": "Result";
|
|
60
60
|
readonly "experimentList.status": "Status";
|
|
61
61
|
readonly "experimentList.evalAttempt": "Eval / Attempt";
|
|
62
62
|
readonly "experimentList.duration": "Duration";
|
|
@@ -25,7 +25,7 @@ function formatCostProjectionAmountText(cell, locale) {
|
|
|
25
25
|
case "partial":
|
|
26
26
|
return `$${cell.projection.combined.amount}`;
|
|
27
27
|
case "unavailable":
|
|
28
|
-
return
|
|
28
|
+
return "—";
|
|
29
29
|
case "migration-required":
|
|
30
30
|
return (0, locale_ts_1.localeText)(locale, "costProjection.migrationRequired");
|
|
31
31
|
default: {
|
|
@@ -49,7 +49,7 @@ function formatCostProjectionCellText(cell, locale) {
|
|
|
49
49
|
}
|
|
50
50
|
if (projection.state === "unavailable" || projection.combined === null) {
|
|
51
51
|
return Object.freeze({
|
|
52
|
-
text:
|
|
52
|
+
text: "—",
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
55
|
return Object.freeze({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["pricing.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Report's one-way view of Analysis-owned cost projections.\n *\n * Pricing, decimal arithmetic, display rounding, and projection construction\n * all belong to Analysis. This module only reads the already-closed\n * `CostMetricValue.projection` carried by the same metric cell that supplies\n * the ordinary numeric axis value.\n */\nimport type { CostMetricValue, CostProjectionValue, } from \"../../analysis/index.ts\";\nimport { isCostProjectionValue } from \"../../analysis/cost.ts\";\nimport { localeText, type LocalizedText, type ReportLocale, } from \"./locale.ts\";\nimport { isMetricValue } from \"./metrics.ts\";\n/** Exact no-profile copy for the official total-cost summary. */\nexport const COST_SUMMARY_NO_PROFILE_TEXT: LocalizedText = Object.freeze({\n en: \"Cost unavailable — this report does not declare a PricingProfile.\",\n \"zh-CN\": \"成本不可用——此报告未声明 PricingProfile。\",\n});\n/** Exact no-profile copy for the official cost × pass-rate scatter. */\nexport const COST_SCATTER_NO_PROFILE_TEXT: LocalizedText = Object.freeze({\n en: \"Cost × pass rate scatter unavailable — this report does not declare a PricingProfile.\",\n \"zh-CN\": \"成本 × 通过率散点图不可用——此报告未声明 PricingProfile。\",\n});\nexport interface CostProjectionCellText {\n readonly text: string;\n readonly detail?: string;\n}\n/** Compact table-cell amount copied from the Analysis-closed projection. */\nexport function formatCostProjectionAmountText(cell: CostMetricValue, locale: ReportLocale): string {\n switch (cell.projection.state) {\n case \"available\":\n case \"partial\":\n return `$${cell.projection.combined.amount}`;\n case \"unavailable\":\n return localeText(locale, \"costProjection.unavailable\");\n case \"migration-required\":\n return localeText(locale, \"costProjection.migrationRequired\");\n default: {\n const exhaustive: never = cell.projection;\n return exhaustive;\n }\n }\n}\n/**\n * Produces a compact display from the closed projection. Amount strings pass\n * through verbatim: Report deliberately does not parse, round, or otherwise\n * re-compute Analysis's canonical decimal values.\n */\nexport function formatCostProjectionCellText(cell: CostMetricValue, locale: ReportLocale): CostProjectionCellText {\n const projection = cell.projection;\n if (projection.state === \"migration-required\") {\n return Object.freeze({\n text: localeText(locale, \"costProjection.migrationRequired\"),\n detail: formatCostProjectionCellDetail(cell, locale),\n });\n }\n if (projection.state === \"unavailable\" || projection.combined === null) {\n return Object.freeze({\n text: localeText(locale, \"costProjection.unavailable\"),\n });\n }\n return Object.freeze({\n text: moneyText(projection.combined),\n });\n}\n/**\n * Preserves the closed ledger summary in text form. This is presentation only:\n * all values are copied directly from `cell.projection`.\n */\nexport function formatCostProjectionCellDetail(cell: CostMetricValue, locale: ReportLocale): string {\n const projection = cell.projection;\n const lines: string[] = [];\n lines.push(localeText(locale, \"costProjection.profile\", {\n identity: projection.profile.contentIdentity,\n currency: projection.profile.currency,\n decimals: projection.profile.display.decimalPlaces,\n }));\n lines.push(localeText(locale, \"costProjection.provenance\", {\n source: projection.profile.provenance.source,\n asOf: projection.profile.provenance.asOf,\n }));\n if (projection.observed !== null) {\n lines.push(`${localeText(locale, \"costProjection.providerObserved\").padEnd(20)} ${moneyText(projection.observed)}`);\n }\n if (projection.estimated !== null) {\n lines.push(`${localeText(locale, \"costProjection.profileEstimated\").padEnd(20)} ${moneyText(projection.estimated)}`);\n }\n if (projection.combined !== null) {\n lines.push(`${knownValueLabel(projection, locale).padEnd(28)} ${moneyText(projection.combined)} · ` +\n localeText(locale, \"costProjection.coverage\", { samples: cell.samples, total: cell.total }));\n }\n for (const entry of projection.observedOtherCurrencies) {\n lines.push(`${localeText(locale, \"costProjection.observedElsewhere\").padEnd(20)} ${entry.currency} ${entry.amount} · ` +\n localeText(locale, \"costProjection.notConverted\"));\n }\n for (const reason of projection.reasons) {\n lines.push(localeText(locale, \"costProjection.reason\", {\n provider: reason.provider ?? \"\",\n code: reason.code,\n }));\n }\n return lines.join(\"\\n\");\n}\n/**\n * Runtime narrowing for an Analysis-issued cost cell. Analysis owns the deep\n * projection guard; Report verifies only the normal MetricValue shell and its\n * required cost presentation fields.\n */\nexport function isCostMetricValue(value: unknown): value is CostMetricValue {\n if (!isMetricValue(value) || !Object.hasOwn(value, \"projection\"))\n return false;\n if (value.format !== \"currency-usd\" || value.better !== \"lower\")\n return false;\n const projection = (value as {\n readonly projection?: unknown;\n }).projection;\n // The Host's machine boundary additionally matches this identity against\n // the captured cost measure entry before a projection leaves the Report.\n if (!isCostProjectionValue(projection) || projection.state !== value.state)\n return false;\n if (projection.state === \"migration-required\") {\n const slots = new Set(projection.ledger.map((entry) => `${entry.slot.runId}\\u0000${entry.slot.slotId}`));\n return value.samples === 0 && value.total > 0 && slots.size === value.total;\n }\n return true;\n}\nfunction moneyText(value: {\n readonly currency: string;\n readonly amount: string;\n}): string {\n return `${value.currency} ${value.amount}`;\n}\nfunction knownValueLabel(projection: CostProjectionValue, locale: ReportLocale): string {\n switch (projection.aggregate.kind) {\n case \"mean\":\n return localeText(locale, \"costProjection.meanPerContributingSlot\");\n case \"total\":\n return localeText(locale, \"costProjection.totalKnownCost\");\n default:\n return localeText(locale, \"costProjection.knownValue\");\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["pricing.ts"],"names":[],"mappings":";;;AA2BA,wEAcC;AAMD,oEAgBC;AAKD,wEAiCC;AAMD,8CAiBC;AAnHD,oDAA+D;AAC/D,2CAAiF;AACjF,6CAA6C;AAC7C,iEAAiE;AACpD,QAAA,4BAA4B,GAAkB,MAAM,CAAC,MAAM,CAAC;IACrE,EAAE,EAAE,mEAAmE;IACvE,OAAO,EAAE,+BAA+B;CAC3C,CAAC,CAAC;AACH,uEAAuE;AAC1D,QAAA,4BAA4B,GAAkB,MAAM,CAAC,MAAM,CAAC;IACrE,EAAE,EAAE,uFAAuF;IAC3F,OAAO,EAAE,wCAAwC;CACpD,CAAC,CAAC;AAKH,4EAA4E;AAC5E,SAAgB,8BAA8B,CAAC,IAAqB,EAAE,MAAoB;IACtF,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC5B,KAAK,WAAW,CAAC;QACjB,KAAK,SAAS;YACV,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACjD,KAAK,aAAa;YACd,OAAO,GAAG,CAAC;QACf,KAAK,oBAAoB;YACrB,OAAO,IAAA,sBAAU,EAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;QAClE,OAAO,CAAC,CAAC,CAAC;YACN,MAAM,UAAU,GAAU,IAAI,CAAC,UAAU,CAAC;YAC1C,OAAO,UAAU,CAAC;QACtB,CAAC;IACL,CAAC;AACL,CAAC;AACD;;;;GAIG;AACH,SAAgB,4BAA4B,CAAC,IAAqB,EAAE,MAAoB;IACpF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,IAAI,UAAU,CAAC,KAAK,KAAK,oBAAoB,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,IAAA,sBAAU,EAAC,MAAM,EAAE,kCAAkC,CAAC;YAC5D,MAAM,EAAE,8BAA8B,CAAC,IAAI,EAAE,MAAM,CAAC;SACvD,CAAC,CAAC;IACP,CAAC;IACD,IAAI,UAAU,CAAC,KAAK,KAAK,aAAa,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QACrE,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;SACZ,CAAC,CAAC;IACP,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;KACvC,CAAC,CAAC;AACP,CAAC;AACD;;;GAGG;AACH,SAAgB,8BAA8B,CAAC,IAAqB,EAAE,MAAoB;IACtF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,IAAA,sBAAU,EAAC,MAAM,EAAE,wBAAwB,EAAE;QACpD,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,eAAe;QAC5C,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ;QACrC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa;KACrD,CAAC,CAAC,CAAC;IACJ,KAAK,CAAC,IAAI,CAAC,IAAA,sBAAU,EAAC,MAAM,EAAE,2BAA2B,EAAE;QACvD,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM;QAC5C,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;KAC3C,CAAC,CAAC,CAAC;IACJ,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,IAAA,sBAAU,EAAC,MAAM,EAAE,iCAAiC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxH,CAAC;IACD,IAAI,UAAU,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAA,sBAAU,EAAC,MAAM,EAAE,iCAAiC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACzH,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK;YAC/F,IAAA,sBAAU,EAAC,MAAM,EAAE,yBAAyB,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACrG,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,uBAAuB,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAA,sBAAU,EAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK;YAClH,IAAA,sBAAU,EAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,IAAA,sBAAU,EAAC,MAAM,EAAE,uBAAuB,EAAE;YACnD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;SACpB,CAAC,CAAC,CAAC;IACR,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AACD;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,KAAc;IAC5C,IAAI,CAAC,IAAA,0BAAa,EAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC;QAC5D,OAAO,KAAK,CAAC;IACjB,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;QAC3D,OAAO,KAAK,CAAC;IACjB,MAAM,UAAU,GAAI,KAElB,CAAC,UAAU,CAAC;IACd,yEAAyE;IACzE,yEAAyE;IACzE,IAAI,CAAC,IAAA,+BAAqB,EAAC,UAAU,CAAC,IAAI,UAAU,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;QACtE,OAAO,KAAK,CAAC;IACjB,IAAI,UAAU,CAAC,KAAK,KAAK,oBAAoB,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzG,OAAO,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC;IAChF,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,SAAS,SAAS,CAAC,KAGlB;IACG,OAAO,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AAC/C,CAAC;AACD,SAAS,eAAe,CAAC,UAA+B,EAAE,MAAoB;IAC1E,QAAQ,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAChC,KAAK,MAAM;YACP,OAAO,IAAA,sBAAU,EAAC,MAAM,EAAE,wCAAwC,CAAC,CAAC;QACxE,KAAK,OAAO;YACR,OAAO,IAAA,sBAAU,EAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;QAC/D;YACI,OAAO,IAAA,sBAAU,EAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;IAC/D,CAAC;AACL,CAAC","sourcesContent":["/**\n * Report's one-way view of Analysis-owned cost projections.\n *\n * Pricing, decimal arithmetic, display rounding, and projection construction\n * all belong to Analysis. This module only reads the already-closed\n * `CostMetricValue.projection` carried by the same metric cell that supplies\n * the ordinary numeric axis value.\n */\nimport type { CostMetricValue, CostProjectionValue, } from \"../../analysis/index.ts\";\nimport { isCostProjectionValue } from \"../../analysis/cost.ts\";\nimport { localeText, type LocalizedText, type ReportLocale, } from \"./locale.ts\";\nimport { isMetricValue } from \"./metrics.ts\";\n/** Exact no-profile copy for the official total-cost summary. */\nexport const COST_SUMMARY_NO_PROFILE_TEXT: LocalizedText = Object.freeze({\n en: \"Cost unavailable — this report does not declare a PricingProfile.\",\n \"zh-CN\": \"成本不可用——此报告未声明 PricingProfile。\",\n});\n/** Exact no-profile copy for the official cost × pass-rate scatter. */\nexport const COST_SCATTER_NO_PROFILE_TEXT: LocalizedText = Object.freeze({\n en: \"Cost × pass rate scatter unavailable — this report does not declare a PricingProfile.\",\n \"zh-CN\": \"成本 × 通过率散点图不可用——此报告未声明 PricingProfile。\",\n});\nexport interface CostProjectionCellText {\n readonly text: string;\n readonly detail?: string;\n}\n/** Compact table-cell amount copied from the Analysis-closed projection. */\nexport function formatCostProjectionAmountText(cell: CostMetricValue, locale: ReportLocale): string {\n switch (cell.projection.state) {\n case \"available\":\n case \"partial\":\n return `$${cell.projection.combined.amount}`;\n case \"unavailable\":\n return \"—\";\n case \"migration-required\":\n return localeText(locale, \"costProjection.migrationRequired\");\n default: {\n const exhaustive: never = cell.projection;\n return exhaustive;\n }\n }\n}\n/**\n * Produces a compact display from the closed projection. Amount strings pass\n * through verbatim: Report deliberately does not parse, round, or otherwise\n * re-compute Analysis's canonical decimal values.\n */\nexport function formatCostProjectionCellText(cell: CostMetricValue, locale: ReportLocale): CostProjectionCellText {\n const projection = cell.projection;\n if (projection.state === \"migration-required\") {\n return Object.freeze({\n text: localeText(locale, \"costProjection.migrationRequired\"),\n detail: formatCostProjectionCellDetail(cell, locale),\n });\n }\n if (projection.state === \"unavailable\" || projection.combined === null) {\n return Object.freeze({\n text: \"—\",\n });\n }\n return Object.freeze({\n text: moneyText(projection.combined),\n });\n}\n/**\n * Preserves the closed ledger summary in text form. This is presentation only:\n * all values are copied directly from `cell.projection`.\n */\nexport function formatCostProjectionCellDetail(cell: CostMetricValue, locale: ReportLocale): string {\n const projection = cell.projection;\n const lines: string[] = [];\n lines.push(localeText(locale, \"costProjection.profile\", {\n identity: projection.profile.contentIdentity,\n currency: projection.profile.currency,\n decimals: projection.profile.display.decimalPlaces,\n }));\n lines.push(localeText(locale, \"costProjection.provenance\", {\n source: projection.profile.provenance.source,\n asOf: projection.profile.provenance.asOf,\n }));\n if (projection.observed !== null) {\n lines.push(`${localeText(locale, \"costProjection.providerObserved\").padEnd(20)} ${moneyText(projection.observed)}`);\n }\n if (projection.estimated !== null) {\n lines.push(`${localeText(locale, \"costProjection.profileEstimated\").padEnd(20)} ${moneyText(projection.estimated)}`);\n }\n if (projection.combined !== null) {\n lines.push(`${knownValueLabel(projection, locale).padEnd(28)} ${moneyText(projection.combined)} · ` +\n localeText(locale, \"costProjection.coverage\", { samples: cell.samples, total: cell.total }));\n }\n for (const entry of projection.observedOtherCurrencies) {\n lines.push(`${localeText(locale, \"costProjection.observedElsewhere\").padEnd(20)} ${entry.currency} ${entry.amount} · ` +\n localeText(locale, \"costProjection.notConverted\"));\n }\n for (const reason of projection.reasons) {\n lines.push(localeText(locale, \"costProjection.reason\", {\n provider: reason.provider ?? \"\",\n code: reason.code,\n }));\n }\n return lines.join(\"\\n\");\n}\n/**\n * Runtime narrowing for an Analysis-issued cost cell. Analysis owns the deep\n * projection guard; Report verifies only the normal MetricValue shell and its\n * required cost presentation fields.\n */\nexport function isCostMetricValue(value: unknown): value is CostMetricValue {\n if (!isMetricValue(value) || !Object.hasOwn(value, \"projection\"))\n return false;\n if (value.format !== \"currency-usd\" || value.better !== \"lower\")\n return false;\n const projection = (value as {\n readonly projection?: unknown;\n }).projection;\n // The Host's machine boundary additionally matches this identity against\n // the captured cost measure entry before a projection leaves the Report.\n if (!isCostProjectionValue(projection) || projection.state !== value.state)\n return false;\n if (projection.state === \"migration-required\") {\n const slots = new Set(projection.ledger.map((entry) => `${entry.slot.runId}\\u0000${entry.slot.slotId}`));\n return value.samples === 0 && value.total > 0 && slots.size === value.total;\n }\n return true;\n}\nfunction moneyText(value: {\n readonly currency: string;\n readonly amount: string;\n}): string {\n return `${value.currency} ${value.amount}`;\n}\nfunction knownValueLabel(projection: CostProjectionValue, locale: ReportLocale): string {\n switch (projection.aggregate.kind) {\n case \"mean\":\n return localeText(locale, \"costProjection.meanPerContributingSlot\");\n case \"total\":\n return localeText(locale, \"costProjection.totalKnownCost\");\n default:\n return localeText(locale, \"costProjection.knownValue\");\n }\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// niceeval 报告的渐进增强 runtime:纯 vanilla JS、零依赖、IIFE、幂等。
|
|
2
2
|
// 只作用于 .niceeval-report DOM 与 data-niceeval-* 属性;六个行为——Tabs 单选切换、表格排序、
|
|
3
3
|
// 行过滤、SVG 点 tooltip、警告命令复制、源码语法着色。全部只改浏览状态,不改数据、指标口径或初始 HTML 数值。
|
|
4
|
-
//
|
|
5
|
-
//
|
|
4
|
+
// fragment 的初始 HTML 保留语义结构:排序有数据侧预排、tooltip 保留原生 <title>、
|
|
5
|
+
// Tabs 以原生 <details> 表达;app 挂载 fragment 后再增强浏览状态。
|
|
6
6
|
// 全部经 document 级事件委托绑定,重复注入本文件只在首次生效(window.__nreEnhanced 守卫),
|
|
7
|
-
//
|
|
7
|
+
// app 切换 fragment 并替换报告槽内容时也无需重新绑定。
|
|
8
8
|
|
|
9
9
|
(function () {
|
|
10
10
|
"use strict";
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
// ───────────────────────── SourceView:客户端语法着色 ─────────────────────────
|
|
23
23
|
// 静态 HTML 只保留完整、已转义的源码文本,避免全站构建为每个 token、每种 locale
|
|
24
|
-
// 预先创建 React
|
|
24
|
+
// 预先创建 React 节点。浏览器只给当前打开的 fragment 着色,源码文本始终保留。
|
|
25
25
|
// MutationObserver 覆盖 attempt 文档被 Host modal 插入后的同一行为。
|
|
26
26
|
|
|
27
27
|
var sourceTokenPattern =
|
|
@@ -412,7 +412,7 @@
|
|
|
412
412
|
|
|
413
413
|
// ───────────────────────── tooltip:.niceeval-chart-dot ─────────────────────────
|
|
414
414
|
// 首次 hover 时把点内 <title> 的内容搬进 data-niceeval-title(避免与原生 tooltip 重影),
|
|
415
|
-
// 渲染样式化 tooltip div
|
|
415
|
+
// 渲染样式化 tooltip div(定位在点上方并挂在所属 figure 中);增强前保留 <title>。
|
|
416
416
|
|
|
417
417
|
var tooltip = null;
|
|
418
418
|
|
|
@@ -331,6 +331,17 @@ table.niceeval-report,
|
|
|
331
331
|
color: var(--muted);
|
|
332
332
|
font-size: 12px;
|
|
333
333
|
}
|
|
334
|
+
.niceeval-report .niceeval-cell-stack {
|
|
335
|
+
display: inline-flex;
|
|
336
|
+
flex-wrap: wrap;
|
|
337
|
+
align-items: baseline;
|
|
338
|
+
gap: 4px 10px;
|
|
339
|
+
}
|
|
340
|
+
.niceeval-report .niceeval-cell-stack-item + .niceeval-cell-stack-item::before {
|
|
341
|
+
content: "·";
|
|
342
|
+
margin-right: 10px;
|
|
343
|
+
color: var(--soft);
|
|
344
|
+
}
|
|
334
345
|
|
|
335
346
|
/* ---- MetricValue:缺数据 / 覆盖率角标 / 证据链接 ---- */
|
|
336
347
|
.niceeval-report .niceeval-value { white-space: nowrap; }
|
|
@@ -1314,7 +1325,7 @@ table.niceeval-report,
|
|
|
1314
1325
|
}
|
|
1315
1326
|
|
|
1316
1327
|
/* Ledger:turn rail + compact kind tag + one-line summary。evidence 默认在行内
|
|
1317
|
-
<details
|
|
1328
|
+
<details>,app 增强前仍保留完整的语义结构。 */
|
|
1318
1329
|
.niceeval-turn-trace .niceeval-trace-ledger { min-width: 0; }
|
|
1319
1330
|
.niceeval-turn-trace .niceeval-trace-turn {
|
|
1320
1331
|
position: relative;
|
|
@@ -1462,6 +1473,10 @@ table.niceeval-report,
|
|
|
1462
1473
|
white-space: nowrap;
|
|
1463
1474
|
}
|
|
1464
1475
|
.niceeval-turn-trace .niceeval-trace-event-row--failed .niceeval-trace-event-status { color: var(--bad); }
|
|
1476
|
+
.niceeval-turn-trace .niceeval-trace-event-status[data-call-outcome="completed"] { color: var(--good); }
|
|
1477
|
+
.niceeval-turn-trace .niceeval-trace-event-status[data-call-outcome="failed"] { color: var(--bad); }
|
|
1478
|
+
.niceeval-turn-trace .niceeval-trace-event-status[data-call-outcome="rejected"],
|
|
1479
|
+
.niceeval-turn-trace .niceeval-trace-event-status[data-call-outcome="cancelled"] { color: var(--warn); }
|
|
1465
1480
|
.niceeval-turn-trace .niceeval-trace-evidence {
|
|
1466
1481
|
position: relative;
|
|
1467
1482
|
z-index: 2;
|
|
@@ -1586,6 +1601,77 @@ table.niceeval-report,
|
|
|
1586
1601
|
border-color: color-mix(in oklch, var(--bad), transparent 58%);
|
|
1587
1602
|
color: color-mix(in oklch, var(--bad), var(--text) 38%);
|
|
1588
1603
|
}
|
|
1604
|
+
.niceeval-assertion-evidence {
|
|
1605
|
+
display: grid;
|
|
1606
|
+
min-width: 0;
|
|
1607
|
+
gap: 12px;
|
|
1608
|
+
}
|
|
1609
|
+
.niceeval-assertion-evidence-section { min-width: 0; }
|
|
1610
|
+
.niceeval-assertion-evidence-section > h5 {
|
|
1611
|
+
margin: 0 0 5px;
|
|
1612
|
+
color: var(--soft);
|
|
1613
|
+
font: 9px/1.2 var(--font-mono);
|
|
1614
|
+
font-weight: 650;
|
|
1615
|
+
letter-spacing: .055em;
|
|
1616
|
+
text-transform: uppercase;
|
|
1617
|
+
}
|
|
1618
|
+
.niceeval-assertion-evidence-section p,
|
|
1619
|
+
.niceeval-assertion-evidence-list,
|
|
1620
|
+
.niceeval-assertion-evidence-fields { margin: 0; }
|
|
1621
|
+
.niceeval-assertion-evidence-code {
|
|
1622
|
+
box-sizing: border-box;
|
|
1623
|
+
width: 100%;
|
|
1624
|
+
max-width: 100%;
|
|
1625
|
+
max-height: 24rem;
|
|
1626
|
+
margin: 0;
|
|
1627
|
+
overflow: auto;
|
|
1628
|
+
padding: 10px 11px;
|
|
1629
|
+
border: 1px solid var(--line);
|
|
1630
|
+
background: color-mix(in oklch, var(--panel), black 8%);
|
|
1631
|
+
color: var(--muted);
|
|
1632
|
+
font: 11px/1.5 var(--font-mono);
|
|
1633
|
+
white-space: pre-wrap;
|
|
1634
|
+
overflow-wrap: anywhere;
|
|
1635
|
+
}
|
|
1636
|
+
.niceeval-assertion-evidence-long-value {
|
|
1637
|
+
min-width: 0;
|
|
1638
|
+
border: 1px solid var(--line);
|
|
1639
|
+
background: color-mix(in oklch, var(--panel), black 8%);
|
|
1640
|
+
}
|
|
1641
|
+
.niceeval-assertion-evidence-long-value > summary {
|
|
1642
|
+
overflow: hidden;
|
|
1643
|
+
padding: 8px 10px;
|
|
1644
|
+
color: var(--soft);
|
|
1645
|
+
font: 11px/1.5 var(--font-mono);
|
|
1646
|
+
text-overflow: ellipsis;
|
|
1647
|
+
white-space: nowrap;
|
|
1648
|
+
cursor: pointer;
|
|
1649
|
+
}
|
|
1650
|
+
.niceeval-assertion-evidence-long-value[open] > summary {
|
|
1651
|
+
border-bottom: 1px solid var(--line);
|
|
1652
|
+
}
|
|
1653
|
+
.niceeval-assertion-evidence-long-value > .niceeval-assertion-evidence-code {
|
|
1654
|
+
border: 0;
|
|
1655
|
+
}
|
|
1656
|
+
.niceeval-assertion-evidence-state {
|
|
1657
|
+
display: flex;
|
|
1658
|
+
flex-wrap: wrap;
|
|
1659
|
+
align-items: baseline;
|
|
1660
|
+
gap: 5px 9px;
|
|
1661
|
+
color: var(--soft);
|
|
1662
|
+
}
|
|
1663
|
+
.niceeval-assertion-evidence-fields {
|
|
1664
|
+
display: grid;
|
|
1665
|
+
gap: 6px;
|
|
1666
|
+
}
|
|
1667
|
+
.niceeval-assertion-evidence-fields > div {
|
|
1668
|
+
display: grid;
|
|
1669
|
+
grid-template-columns: minmax(7rem, max-content) minmax(0, 1fr);
|
|
1670
|
+
gap: 10px;
|
|
1671
|
+
}
|
|
1672
|
+
.niceeval-assertion-evidence-fields dt { color: var(--soft); }
|
|
1673
|
+
.niceeval-assertion-evidence-fields dd { min-width: 0; margin: 0; }
|
|
1674
|
+
.niceeval-assertion-evidence-list { padding-inline-start: 18px; }
|
|
1589
1675
|
.niceeval-js .niceeval-turn-trace .niceeval-trace-evidence > summary { display: none; }
|
|
1590
1676
|
.niceeval-js .niceeval-turn-trace .niceeval-trace-evidence[open] { padding-bottom: 8px; }
|
|
1591
1677
|
.niceeval-js .niceeval-turn-trace .niceeval-trace-evidence-tabs {
|
|
@@ -1891,7 +1977,7 @@ table.niceeval-report,
|
|
|
1891
1977
|
.niceeval-report .niceeval-scatter-point { cursor: default; }
|
|
1892
1978
|
.niceeval-report .niceeval-line-point { fill: var(--series); }
|
|
1893
1979
|
|
|
1894
|
-
/* enhance.js 的样式化 tooltip
|
|
1980
|
+
/* enhance.js 的样式化 tooltip(增强前保留 SVG <title>) */
|
|
1895
1981
|
.niceeval-report .niceeval-tooltip {
|
|
1896
1982
|
position: absolute;
|
|
1897
1983
|
transform: translate(-50%, -100%);
|
|
@@ -2131,7 +2217,7 @@ table.niceeval-report,
|
|
|
2131
2217
|
overflow-wrap: anywhere;
|
|
2132
2218
|
box-shadow: inset 2px 0 0 var(--line-tone, transparent);
|
|
2133
2219
|
}
|
|
2134
|
-
/*
|
|
2220
|
+
/* 展开区内容:判定摘要一行、五段结构化证据、给分记录一行。同行重复 send
|
|
2135
2221
|
复用 Conversation 的完整轮卡;轮头必须保留,才能区分 outcome 与 duration。 */
|
|
2136
2222
|
.niceeval-source-view .niceeval-source-line-detail .niceeval-conversation-turn { border-left: 0; padding-left: 0; }
|
|
2137
2223
|
.niceeval-source-view .niceeval-source-line-detail > * + * { margin-top: 6px; }
|
|
@@ -2141,17 +2227,6 @@ table.niceeval-report,
|
|
|
2141
2227
|
font-size: 12px;
|
|
2142
2228
|
font-weight: 650;
|
|
2143
2229
|
}
|
|
2144
|
-
.niceeval-source-view .niceeval-source-assertion-body {
|
|
2145
|
-
margin: 0;
|
|
2146
|
-
padding: 6px 10px;
|
|
2147
|
-
border-radius: var(--radius);
|
|
2148
|
-
background: var(--panel-2);
|
|
2149
|
-
color: var(--muted);
|
|
2150
|
-
font-family: var(--font-mono);
|
|
2151
|
-
font-size: 12px;
|
|
2152
|
-
white-space: pre-wrap;
|
|
2153
|
-
overflow-wrap: anywhere;
|
|
2154
|
-
}
|
|
2155
2230
|
.niceeval-source-view .niceeval-source-score-entry {
|
|
2156
2231
|
margin: 0;
|
|
2157
2232
|
color: var(--muted);
|
|
@@ -2344,7 +2419,7 @@ table.niceeval-report,
|
|
|
2344
2419
|
font-size: 13px;
|
|
2345
2420
|
}
|
|
2346
2421
|
|
|
2347
|
-
/* ---- Tabs
|
|
2422
|
+
/* ---- Tabs:fragment HTML 每 tab 一个 <details> 且仅首个 open;
|
|
2348
2423
|
enhance.js 在 <html> 上打 niceeval-js 后升级为单选 tab 条:收起的 tab 缩成一枚标题排在首行,
|
|
2349
2424
|
唯一展开的 tab 以 100% 宽 + order:1 换行到下方,活动标题带高亮下划线、贴着面板顶部。
|
|
2350
2425
|
不能用 display:contents 把 summary/body 直接投影进 flex 容器——Chrome 里 <details> 的
|
|
@@ -2580,6 +2655,90 @@ html.niceeval-view-document body {
|
|
|
2580
2655
|
|
|
2581
2656
|
.niceeval-view-report-slot { margin: 0 auto 36px; }
|
|
2582
2657
|
|
|
2658
|
+
.niceeval-view-sr-only {
|
|
2659
|
+
position: absolute;
|
|
2660
|
+
width: 1px;
|
|
2661
|
+
height: 1px;
|
|
2662
|
+
margin: -1px;
|
|
2663
|
+
padding: 0;
|
|
2664
|
+
overflow: hidden;
|
|
2665
|
+
clip: rect(0, 0, 0, 0);
|
|
2666
|
+
white-space: nowrap;
|
|
2667
|
+
border: 0;
|
|
2668
|
+
}
|
|
2669
|
+
|
|
2670
|
+
.niceeval-view-skeleton {
|
|
2671
|
+
--niceeval-skeleton-base: var(--niceeval-color-surface-subtle, #151515);
|
|
2672
|
+
--niceeval-skeleton-shine: var(--niceeval-color-border-strong, #343434);
|
|
2673
|
+
display: grid;
|
|
2674
|
+
gap: 28px;
|
|
2675
|
+
width: 100%;
|
|
2676
|
+
min-height: 440px;
|
|
2677
|
+
}
|
|
2678
|
+
|
|
2679
|
+
.niceeval-view-skeleton-line,
|
|
2680
|
+
.niceeval-view-skeleton-cards > span,
|
|
2681
|
+
.niceeval-view-skeleton-chart,
|
|
2682
|
+
.niceeval-view-skeleton-table,
|
|
2683
|
+
.niceeval-view-skeleton-table > i {
|
|
2684
|
+
display: block;
|
|
2685
|
+
border-radius: var(--niceeval-radius, 0);
|
|
2686
|
+
background: linear-gradient(
|
|
2687
|
+
100deg,
|
|
2688
|
+
var(--niceeval-skeleton-base) 25%,
|
|
2689
|
+
var(--niceeval-skeleton-shine) 44%,
|
|
2690
|
+
var(--niceeval-skeleton-base) 63%
|
|
2691
|
+
);
|
|
2692
|
+
background-size: 300% 100%;
|
|
2693
|
+
animation: niceeval-view-skeleton-shimmer 1.7s ease-in-out infinite;
|
|
2694
|
+
}
|
|
2695
|
+
|
|
2696
|
+
.niceeval-view-skeleton-heading { display: grid; gap: 12px; }
|
|
2697
|
+
.niceeval-view-skeleton-eyebrow { width: 92px; height: 10px; }
|
|
2698
|
+
.niceeval-view-skeleton-title { width: min(440px, 68%); height: 32px; }
|
|
2699
|
+
.niceeval-view-skeleton-copy { width: min(620px, 86%); height: 14px; }
|
|
2700
|
+
|
|
2701
|
+
.niceeval-view-skeleton-cards {
|
|
2702
|
+
display: grid;
|
|
2703
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
2704
|
+
gap: 14px;
|
|
2705
|
+
}
|
|
2706
|
+
|
|
2707
|
+
.niceeval-view-skeleton-cards > span { height: 104px; }
|
|
2708
|
+
|
|
2709
|
+
.niceeval-view-skeleton-content {
|
|
2710
|
+
display: grid;
|
|
2711
|
+
grid-template-columns: minmax(0, 1.35fr) minmax(240px, .65fr);
|
|
2712
|
+
gap: 18px;
|
|
2713
|
+
}
|
|
2714
|
+
|
|
2715
|
+
.niceeval-view-skeleton-chart { min-height: 230px; }
|
|
2716
|
+
.niceeval-view-skeleton-table { min-height: 230px; padding: 24px 20px; }
|
|
2717
|
+
.niceeval-view-skeleton-table > i { height: 12px; margin-bottom: 24px; }
|
|
2718
|
+
.niceeval-view-skeleton-table > i:nth-child(2) { width: 82%; }
|
|
2719
|
+
.niceeval-view-skeleton-table > i:nth-child(3) { width: 91%; }
|
|
2720
|
+
.niceeval-view-skeleton-table > i:nth-child(4) { width: 68%; }
|
|
2721
|
+
|
|
2722
|
+
.niceeval-view-skeleton-overlay {
|
|
2723
|
+
min-height: 360px;
|
|
2724
|
+
padding-top: 12px;
|
|
2725
|
+
}
|
|
2726
|
+
|
|
2727
|
+
@keyframes niceeval-view-skeleton-shimmer {
|
|
2728
|
+
from { background-position: 100% 0; }
|
|
2729
|
+
to { background-position: 0 0; }
|
|
2730
|
+
}
|
|
2731
|
+
|
|
2732
|
+
@media (prefers-reduced-motion: reduce) {
|
|
2733
|
+
.niceeval-view-skeleton-line,
|
|
2734
|
+
.niceeval-view-skeleton-cards > span,
|
|
2735
|
+
.niceeval-view-skeleton-chart,
|
|
2736
|
+
.niceeval-view-skeleton-table,
|
|
2737
|
+
.niceeval-view-skeleton-table > i {
|
|
2738
|
+
animation: none;
|
|
2739
|
+
}
|
|
2740
|
+
}
|
|
2741
|
+
|
|
2583
2742
|
/* View shell owns only the modal chrome. The report body inside the dialog
|
|
2584
2743
|
keeps the same closed product markup and the same stylesheet as its direct
|
|
2585
2744
|
route; the runtime injects no second CSS owner. */
|
|
@@ -2603,13 +2762,6 @@ html.niceeval-view-document body {
|
|
|
2603
2762
|
box-shadow: 0 20px 60px rgb(0 0 0 / 45%);
|
|
2604
2763
|
}
|
|
2605
2764
|
|
|
2606
|
-
/* An author display declaration overrides the browser's default
|
|
2607
|
-
`dialog:not([open]) { display: none }` rule. Preserve the legacy Radix
|
|
2608
|
-
unmount result when native dialog.close() removes [open]. */
|
|
2609
|
-
.niceeval-view-dialog:not([open]) { display: none; }
|
|
2610
|
-
|
|
2611
|
-
.niceeval-view-dialog::backdrop { background: rgb(0 0 0 / 90%); }
|
|
2612
|
-
|
|
2613
2765
|
.niceeval-view-dialog-head {
|
|
2614
2766
|
flex: 0 0 auto;
|
|
2615
2767
|
position: sticky;
|
|
@@ -2677,7 +2829,16 @@ html.niceeval-view-document body {
|
|
|
2677
2829
|
|
|
2678
2830
|
.niceeval-view-problems h2 { margin: 0 0 8px; font-size: 14px; }
|
|
2679
2831
|
.niceeval-view-problems ul { margin: 0; padding-left: 20px; }
|
|
2680
|
-
.niceeval-view-
|
|
2832
|
+
.niceeval-view-js-required {
|
|
2833
|
+
width: min(calc(100vw - 48px), 720px);
|
|
2834
|
+
margin: 18vh auto 0;
|
|
2835
|
+
padding: 28px;
|
|
2836
|
+
border: 1px solid var(--niceeval-color-border, #262626);
|
|
2837
|
+
color: var(--niceeval-color-text, #ededed);
|
|
2838
|
+
background: var(--niceeval-color-surface, #0b0b0b);
|
|
2839
|
+
}
|
|
2840
|
+
.niceeval-view-js-required h1 { margin: 0 0 12px; font-size: 22px; }
|
|
2841
|
+
.niceeval-view-js-required p { margin: 0; color: var(--niceeval-color-text-secondary, #a1a1aa); }
|
|
2681
2842
|
|
|
2682
2843
|
[data-niceeval-locale][hidden] { display: none !important; }
|
|
2683
2844
|
|
|
@@ -2688,11 +2849,16 @@ html.niceeval-view-document body {
|
|
|
2688
2849
|
}
|
|
2689
2850
|
.niceeval-view-pages { display: none; }
|
|
2690
2851
|
.niceeval-view-controls { grid-column: 2; }
|
|
2691
|
-
.niceeval-view-experiment noscript .niceeval-view-nav { display: none; }
|
|
2692
2852
|
.niceeval-view-experiment label > span { display: none; }
|
|
2693
2853
|
.niceeval-view-experiment select { min-width: 108px; }
|
|
2694
2854
|
.niceeval-view-language select { min-width: 68px; }
|
|
2695
2855
|
.niceeval-view-main { width: min(calc(100vw - 28px), 1120px); padding-top: 42px; }
|
|
2856
|
+
.niceeval-view-skeleton { min-height: 380px; gap: 20px; }
|
|
2857
|
+
.niceeval-view-skeleton-cards { grid-template-columns: 1fr; }
|
|
2858
|
+
.niceeval-view-skeleton-cards > span:nth-child(n + 2) { display: none; }
|
|
2859
|
+
.niceeval-view-skeleton-content { grid-template-columns: 1fr; }
|
|
2860
|
+
.niceeval-view-skeleton-chart { min-height: 190px; }
|
|
2861
|
+
.niceeval-view-skeleton-table { display: none; }
|
|
2696
2862
|
}
|
|
2697
2863
|
|
|
2698
2864
|
@media print {
|