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,6 +1,7 @@
|
|
|
1
1
|
import type { AttemptLocator } from "../../../attempt-locator.js";
|
|
2
2
|
import type { VerdictState } from "../../../eval/record/verdict.js";
|
|
3
|
-
import type { AttemptEvidenceDomainDetail, ClosedCommandEntry, ClosedCommandsDetail, ClosedConversationDetail, ClosedDiagnosticsDetail, ClosedFileChangesCollection, ClosedSourceFrame, ClosedTimingDetail, ClosedTimingInterval, ClosedTraceCollection, ClosedUsageDetail, ClosedUsageObservation, FileChangesDomainDetail,
|
|
3
|
+
import type { AttemptEvidenceDomainDetail, ClosedCommandEntry, ClosedAssertionSourceSite, ClosedCommandsDetail, ClosedConversationDetail, ClosedDiagnosticsDetail, ClosedFileChangesCollection, ClosedSourceFrame, ClosedTimingDetail, ClosedTimingInterval, ClosedTraceCollection, ClosedUsageDetail, ClosedUsageObservation, FileChangesDomainDetail, SourceNavigationDomainDetail } from "../../../analysis/index.js";
|
|
4
|
+
import type { AssertionEvidenceContent } from "../../definition/primitives/assertion-evidence.js";
|
|
4
5
|
import type { DiffFile } from "../../definition/primitives/diff-lines.js";
|
|
5
6
|
/** 不可变身份元组的展示投影。 */
|
|
6
7
|
export interface AttemptIdentityView {
|
|
@@ -51,12 +52,14 @@ export interface AttemptScoreView {
|
|
|
51
52
|
export interface AttemptAssertionView {
|
|
52
53
|
readonly entryId: string;
|
|
53
54
|
readonly name: string;
|
|
54
|
-
/**
|
|
55
|
-
readonly severity: "gate" | "soft";
|
|
55
|
+
/** 展示角色:失败 gate、未计分 recorded、其余带分 soft。 */
|
|
56
|
+
readonly severity: "gate" | "recorded" | "soft";
|
|
56
57
|
readonly outcome: "passed" | "failed" | "unavailable";
|
|
57
58
|
readonly groupPath: readonly string[];
|
|
58
|
-
/**
|
|
59
|
+
/** Table 等紧凑读面的中立判定摘要。 */
|
|
59
60
|
readonly detail: string;
|
|
61
|
+
/** Source 展开区消费的五段闭合结构。 */
|
|
62
|
+
readonly evidence: AssertionEvidenceContent;
|
|
60
63
|
/** 得分点贡献;没有 score 贡献时整字段省略。 */
|
|
61
64
|
readonly score?: AttemptScoreView;
|
|
62
65
|
}
|
|
@@ -265,45 +268,9 @@ export declare function attemptErrorData(input: {
|
|
|
265
268
|
readonly diagnostics?: ClosedDiagnosticsDetail;
|
|
266
269
|
readonly commands?: readonly AttemptCommandCard[];
|
|
267
270
|
}): AttemptErrorData | null;
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
* 读不到的字段省略、读不懂的 entry 跳过,前向兼容,不伪造事实。
|
|
272
|
-
*/
|
|
273
|
-
export interface SealedAssertionEntryView {
|
|
274
|
-
readonly entryId: string;
|
|
275
|
-
readonly display: SealedAssertionDisplayView;
|
|
276
|
-
readonly result: SealedAssertionResultView;
|
|
277
|
-
readonly coverage: SealedAssertionCoverageView;
|
|
278
|
-
readonly limitations: readonly SealedAssertionLimitationView[];
|
|
279
|
-
}
|
|
280
|
-
export interface SealedAssertionDisplayView {
|
|
281
|
-
readonly label?: string;
|
|
282
|
-
readonly key?: string;
|
|
283
|
-
readonly groupPath: readonly string[];
|
|
284
|
-
}
|
|
285
|
-
export interface SealedAssertionCoverageView {
|
|
286
|
-
readonly state: "complete" | "partial" | "unavailable" | "not-applicable";
|
|
287
|
-
readonly reason?: string;
|
|
288
|
-
}
|
|
289
|
-
export interface SealedAssertionLimitationView {
|
|
290
|
-
readonly kind: string;
|
|
291
|
-
}
|
|
292
|
-
export interface SealedAssertionResultView {
|
|
293
|
-
readonly state: "matched" | "mismatched" | "unavailable" | "errored";
|
|
294
|
-
readonly reason?: string;
|
|
295
|
-
readonly gate: "not-gate" | "satisfied" | "failed" | "unavailable";
|
|
296
|
-
readonly score: SealedAssertionScoreView;
|
|
297
|
-
readonly diagnostic?: JsonValue;
|
|
298
|
-
}
|
|
299
|
-
export interface SealedAssertionScoreView {
|
|
300
|
-
readonly state: "not-scored" | "earned" | "unavailable";
|
|
301
|
-
readonly earned?: number;
|
|
302
|
-
readonly points?: number;
|
|
303
|
-
}
|
|
304
|
-
/** 整条 sealed assertion entry 的结构读取;读不懂(形状不符)返回 undefined,调用方跳过。 */
|
|
305
|
-
export declare function assertionEntryViewOf(value: JsonValue): SealedAssertionEntryView | undefined;
|
|
306
|
-
/** 展示层预拼的判定详情;字段全闭合,不把 matcher diagnostic tree 当作文案。 */
|
|
271
|
+
export type SealedAssertionEntryView = AttemptEvidenceDomainDetail["entries"][number];
|
|
272
|
+
/** Typed Analysis entry → report view. No Record or matcher shape is parsed here. */
|
|
273
|
+
export declare function assertionEntryViewOf(value: SealedAssertionEntryView): SealedAssertionEntryView;
|
|
307
274
|
export declare function assertionDetailOf(entry: SealedAssertionEntryView): string;
|
|
308
275
|
export declare function assertionViewOf(entry: SealedAssertionEntryView): AttemptAssertionView;
|
|
309
276
|
export declare function attemptAssertionsData(detail: AttemptEvidenceDomainDetail | undefined): AttemptAssertionsData | null;
|
|
@@ -363,8 +330,7 @@ export declare function attemptSourceData(input: {
|
|
|
363
330
|
readonly state: "unavailable" | "binary";
|
|
364
331
|
};
|
|
365
332
|
}[];
|
|
366
|
-
readonly sourceSites: readonly
|
|
333
|
+
readonly sourceSites: readonly ClosedAssertionSourceSite[];
|
|
367
334
|
readonly entries: readonly AttemptAssertionView[];
|
|
368
335
|
readonly navigation?: SourceNavigationDomainDetail;
|
|
369
336
|
}): AttemptSourceData | null;
|
|
370
|
-
export declare function stableJson(value: JsonValue): string;
|
|
@@ -39,8 +39,6 @@ const __niceevalExport17 = __niceevalCanonical["commandInvocationText"];
|
|
|
39
39
|
export { __niceevalExport17 as commandInvocationText };
|
|
40
40
|
const __niceevalExport18 = __niceevalCanonical["observedCostUSD"];
|
|
41
41
|
export { __niceevalExport18 as observedCostUSD };
|
|
42
|
-
const __niceevalExport19 = __niceevalCanonical["
|
|
43
|
-
export { __niceevalExport19 as
|
|
44
|
-
const __niceevalExport20 = __niceevalCanonical["usageTableData"];
|
|
45
|
-
export { __niceevalExport20 as usageTableData };
|
|
42
|
+
const __niceevalExport19 = __niceevalCanonical["usageTableData"];
|
|
43
|
+
export { __niceevalExport19 as usageTableData };
|
|
46
44
|
//# sourceMappingURL=compute.js.map
|
|
@@ -18,6 +18,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
18
18
|
// 输入全部是当前闭合 DomainView 派生的普通值。
|
|
19
19
|
const primitives_tsx_1 = require("../../definition/primitives.cjs");
|
|
20
20
|
const tool_evidence_tsx_1 = require("../../definition/primitives/tool-evidence.cjs");
|
|
21
|
+
const assertion_evidence_tsx_1 = require("../../definition/primitives/assertion-evidence.cjs");
|
|
21
22
|
const format_ts_1 = require("../../model/format.cjs");
|
|
22
23
|
const locale_ts_1 = require("../../model/locale.cjs");
|
|
23
24
|
const turn_label_ts_1 = require("../../../shared/turn-label.cjs");
|
|
@@ -31,7 +32,7 @@ function assertionToneClass(assertion) {
|
|
|
31
32
|
return assertion.severity === "gate" ? "niceeval-tone-bad" : "niceeval-tone-warn";
|
|
32
33
|
}
|
|
33
34
|
/**
|
|
34
|
-
* 一条 assertion
|
|
35
|
+
* 一条 assertion 在展开区里的呈现:一行判定摘要,再接五段中立结构
|
|
35
36
|
* (docs/feature/reports/library.md「源码行展开区里有什么」)。
|
|
36
37
|
*/
|
|
37
38
|
function assertionNodes(assertion, key) {
|
|
@@ -42,9 +43,7 @@ function assertionNodes(assertion, key) {
|
|
|
42
43
|
const nodes = [
|
|
43
44
|
(0, jsx_runtime_1.jsx)(primitives_tsx_1.Text, { className: `niceeval-source-assertion ${assertionToneClass(assertion)}`, children: head }, `${key}:head`),
|
|
44
45
|
];
|
|
45
|
-
|
|
46
|
-
nodes.push((0, jsx_runtime_1.jsx)(primitives_tsx_1.Text, { className: "niceeval-source-assertion-body", children: assertion.detail }, `${key}:body`));
|
|
47
|
-
}
|
|
46
|
+
nodes.push((0, jsx_runtime_1.jsx)(assertion_evidence_tsx_1.AssertionEvidence, { content: assertion.evidence }, `${key}:body`));
|
|
48
47
|
return nodes;
|
|
49
48
|
}
|
|
50
49
|
function lineToneOf(assertions) {
|
|
@@ -244,6 +243,7 @@ function conversationEntryOf(reply) {
|
|
|
244
243
|
raw,
|
|
245
244
|
callId: reply.callId,
|
|
246
245
|
callPhase: finished ? "finished" : "started",
|
|
246
|
+
...(reply.outcome === undefined ? {} : { callOutcome: reply.outcome }),
|
|
247
247
|
...(reply.failed === true ? { failed: true } : {}),
|
|
248
248
|
detail: ((0, jsx_runtime_1.jsx)(tool_evidence_tsx_1.ToolEvidence, { content: {
|
|
249
249
|
phase: finished ? "finished" : "started",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["content.tsx"],"names":[],"mappings":"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","sourcesContent":["// Attempt 详情 Content 投影:compute 领域结果 → 原语 Content 形状。\n// 输入全部是当前闭合 DomainView 派生的普通值。\nimport { Text, TurnTrace } from \"../../definition/primitives.tsx\";\nimport type { ReportNode } from \"../../definition/tree.ts\";\nimport type { CalloutGroup, CalloutItem } from \"../../definition/primitives/callouts-logic.ts\";\nimport type { CopyBlockContent } from \"../../definition/primitives/copy-block.tsx\";\nimport type { CommandEvidenceContent, ConversationContent, ConversationEntry, ConversationTurn } from \"../../definition/primitives/conversation.tsx\";\nimport { ToolEvidence } from \"../../definition/primitives/tool-evidence.tsx\";\nimport type { DiffContent } from \"../../definition/primitives/diff-lines.ts\";\nimport type { SourceBlockContent, SourceContent, SourceLine, SourceLineTone, } from \"../../definition/primitives/source-view.tsx\";\nimport type { WaterfallContent, WaterfallNode } from \"../../definition/primitives/waterfall.tsx\";\nimport type { TableContent, TableContentRow } from \"../../definition/cell.ts\";\nimport type { ClosedTimingInterval } from \"../../../analysis/index.ts\";\nimport { formatDurationMs, formatPointsSuffix } from \"../../model/format.ts\";\nimport { localizedMessage } from \"../../model/locale.ts\";\nimport { normalizeTurnLabel } from \"../../../shared/turn-label.ts\";\nimport type { AttemptAssertionsData, AttemptAssertionView, AttemptCommandEvidenceData, AttemptConversationData, AttemptConversationReply, AttemptDiagnosticsData, AttemptDiffData, AttemptErrorData, AttemptFixPromptData, AttemptSourceData, AttemptSourceItemView, AttemptTimelineData, AttemptTraceData, } from \"./compute.ts\";\n// ───────────────────────── AttemptSource ─────────────────────────\n/** 该行 assertion 的判定摘要行 tone:与源码行状态同一套色。 */\nfunction assertionToneClass(assertion: AttemptAssertionView): string {\n if (assertion.outcome === \"unavailable\")\n return \"niceeval-tone-na\";\n if (assertion.outcome === \"passed\")\n return \"niceeval-tone-good\";\n return assertion.severity === \"gate\" ? \"niceeval-tone-bad\" : \"niceeval-tone-warn\";\n}\n/**\n * 一条 assertion 在展开区里的呈现:一行判定摘要,再接一段详情正文\n * (docs/feature/reports/library.md「源码行展开区里有什么」)。\n */\nfunction assertionNodes(assertion: AttemptAssertionView, key: string): ReportNode[] {\n const points = assertion.outcome !== \"unavailable\" && assertion.score !== undefined\n ? ` ${formatPointsSuffix(assertion.score.state === \"earned\" ? assertion.score.earned ?? 0 : 0)}`\n : \"\";\n const head = `${assertion.name} · ${assertion.severity} ${assertion.outcome}${points}`;\n const nodes: ReportNode[] = [\n <Text key={`${key}:head`} className={`niceeval-source-assertion ${assertionToneClass(assertion)}`}>\n {head}\n </Text>,\n ];\n if (assertion.detail.length > 0) {\n nodes.push(<Text key={`${key}:body`} className=\"niceeval-source-assertion-body\">\n {assertion.detail}\n </Text>);\n }\n return nodes;\n}\nfunction lineToneOf(assertions: readonly AttemptAssertionView[]): SourceLineTone | undefined {\n if (assertions.some((assertion) => assertion.outcome === \"failed\" && assertion.severity === \"gate\"))\n return \"gate-fail\";\n if (assertions.some((assertion) => assertion.outcome === \"failed\"))\n return \"soft-fail\";\n if (assertions.some((assertion) => assertion.outcome === \"unavailable\"))\n return \"unavailable\";\n if (assertions.some((assertion) => assertion.outcome === \"passed\"))\n return \"passed\";\n return undefined;\n}\ninterface SiteLineBinding {\n readonly entry: AttemptAssertionView;\n readonly role: string;\n readonly line: number;\n}\n/** sourceSites → 每行注解绑定:detail 落在起始行,tone 覆盖整个行区间。 */\nfunction siteBindingsOf(data: AttemptSourceData): ReadonlyMap<string, readonly SiteLineBinding[]> {\n const entriesById = new Map(data.entries.map((entry) => [entry.entryId, entry] as const));\n const bindings = new Map<string, SiteLineBinding[]>();\n for (const site of data.sites) {\n const entry = entriesById.get(site.entryId);\n if (entry === undefined)\n continue;\n for (let line = site.startLine; line <= site.endLine; line += 1) {\n const bucket = bindings.get(`${site.sourceItemId}:${line}`) ?? [];\n bucket.push({ entry, role: site.role, line: site.startLine });\n bindings.set(`${site.sourceItemId}:${line}`, bucket);\n }\n }\n return bindings;\n}\nfunction sourceItemBlock(item: AttemptSourceItemView, data: AttemptSourceData, bindings: ReadonlyMap<string, readonly SiteLineBinding[]>): SourceBlockContent {\n const lines: SourceLine[] = item.lines.map((text, index): SourceLine => {\n const line = index + 1;\n const bound = bindings.get(`${item.sourceItemId}:${line}`) ?? [];\n const assertions = bound.filter((binding) => binding.role !== \"score\").map((binding) => binding.entry);\n const details = bound\n .filter((binding) => binding.line === line && binding.role !== \"score\")\n .map((binding, detailIndex) => assertionNodes(binding.entry, `${item.path}:${line}:${detailIndex}`))\n .flat();\n const points = bound\n .filter((binding) => binding.role === \"score\")\n .reduce((sum, binding) => sum + (binding.entry.score?.state === \"earned\" ? binding.entry.score.earned ?? 0 : 0), 0);\n const hasPoints = bound.some((binding) => binding.role === \"score\" && binding.entry.score !== undefined);\n const tone = lineToneOf(assertions);\n const turnIds = (data.navigation?.rows ?? [])\n .filter((row) => row.source.state === \"mapped\" &&\n row.source.sourceItemId === item.sourceItemId &&\n row.source.sha256 === item.sha256 &&\n row.source.start.line === line)\n .sort((left, right) => (left.sourceOrder ?? Number.MAX_SAFE_INTEGER) - (right.sourceOrder ?? Number.MAX_SAFE_INTEGER) ||\n (left.turnId < right.turnId ? -1 : left.turnId > right.turnId ? 1 : 0))\n .map((row) => row.turnId);\n return {\n number: line,\n text,\n ...(turnIds.length > 0 ? { interaction: \"send\" as const, turnIds } : {}),\n ...(tone !== undefined ? { tone } : {}),\n ...(hasPoints ? { pill: formatPointsSuffix(points) } : {}),\n ...(details.length > 0 ? { details } : {}),\n };\n });\n return { path: item.path, lines };\n}\n/**\n * 闭合 Sources + sourceSites → SourceView Content。spine 是第一个 source item,\n * 其余是 detached;没有 sourceSite 的 attention 断言进 unmapped 区,不丢弃。\n */\nexport function projectedSourceContent(data: AttemptSourceData | null, locator?: AttemptSourceData[\"locator\"]): SourceContent | null {\n if (data === null)\n return null;\n const bindings = siteBindingsOf(data);\n const referenced = new Set(data.sites.map((site) => site.entryId));\n const unmapped: ReportNode[] = data.entries\n .filter((entry) => !referenced.has(entry.entryId))\n .flatMap((entry, index) => assertionNodes(entry, `unmapped:${index}`));\n const spine = sourceItemBlock(data.items[0]!, data, bindings);\n const detached = data.items.slice(1).map((item) => sourceItemBlock(item, data, bindings));\n return {\n spine,\n detached,\n ...(unmapped.length > 0 ? { unmapped } : {}),\n ...(locator !== undefined ? { locator } : {}),\n };\n}\n// ───────────────────────── AttemptAssertions ─────────────────────────\nexport function attemptAssertionsContent(data: AttemptAssertionsData | null): TableContent | null {\n if (data === null || (data.attention.length === 0 && data.passedGroups.length === 0))\n return null;\n const rows: TableContentRow[] = [];\n for (const assertion of data.attention) {\n rows.push({\n key: assertion.entryId,\n cells: {\n name: { kind: \"text\", text: assertion.name },\n severity: { kind: \"text\", text: assertion.severity },\n outcome: { kind: \"verdict\", verdict: assertion.outcome === \"unavailable\" ? \"skipped\" : assertion.outcome },\n detail: assertion.detail.length > 0\n ? { kind: \"text\", text: assertion.detail }\n : { kind: \"notApplicable\" },\n },\n });\n }\n return {\n columns: [\n { key: \"name\", header: localizedMessage(\"attemptAssertions.name\") },\n { key: \"severity\", header: localizedMessage(\"attemptAssertions.severity\") },\n { key: \"outcome\", header: localizedMessage(\"attemptAssertions.outcome\") },\n { key: \"detail\", header: localizedMessage(\"attemptAssertions.detail\") },\n ],\n rows,\n };\n}\n// ───────────────────────── AttemptTimeline / AttemptTrace ─────────────────────────\nfunction timingTree(intervals: readonly ClosedTimingInterval[]): readonly WaterfallNode[] {\n const children = new Map<string | null, ClosedTimingInterval[]>();\n for (const interval of intervals) {\n const siblings = children.get(interval.parentIntervalId) ?? [];\n siblings.push(interval);\n children.set(interval.parentIntervalId, siblings);\n }\n const build = (parent: string | null): WaterfallNode[] => (children.get(parent) ?? [])\n .sort(compareIntervals)\n .map((interval) => {\n const phase = interval.phase;\n return {\n key: interval.intervalId,\n label: interval.label,\n kind: phase,\n startOffsetMs: interval.startOffsetMs,\n durationMs: interval.durationMs,\n ...(interval.outcome === \"failed\" || interval.outcome === \"interrupted\" ? { failed: true as const } : {}),\n // 主干默认展开:直接看到 eval.run 与 agent.send 内部活动。\n ...(phase === \"eval.run\" || phase === \"agent.send\" ? { open: true as const } : {}),\n ...(build(interval.intervalId).length > 0 ? { children: build(interval.intervalId) } : {}),\n };\n });\n return build(null);\n}\nfunction compareIntervals(left: ClosedTimingInterval, right: ClosedTimingInterval): number {\n return left.startOffsetMs - right.startOffsetMs || compareText(left.intervalId, right.intervalId);\n}\nfunction timingSpan(intervals: readonly ClosedTimingInterval[]): number | null {\n if (intervals.length === 0)\n return null;\n const start = Math.min(...intervals.map((interval) => interval.startOffsetMs));\n const end = Math.max(...intervals.map((interval) => interval.startOffsetMs + interval.durationMs));\n return Math.max(0, end - start);\n}\n/** 执行时间树:root 区间是 phase 主链,children 是采集侧层级。 */\nexport function attemptTimelineContent(data: AttemptTimelineData | null): WaterfallContent | null {\n if (data === null)\n return null;\n return [\n {\n key: data.locator,\n label: data.locator,\n durationMs: timingSpan(data.intervals),\n locator: data.locator,\n nodes: timingTree(data.intervals),\n },\n ];\n}\nexport function attemptTraceContent(data: AttemptTraceData | null): WaterfallContent | null {\n if (data === null)\n return null;\n return [\n {\n key: data.locator,\n label: data.locator,\n durationMs: timingSpan(data.intervals),\n locator: data.locator,\n nodes: timingTree(data.intervals),\n },\n ];\n}\n// ───────────────────────── AttemptConversation ─────────────────────────\n/** 工具出入参等结构化值:JSON 化后交原语收口成单行预览(Conversation 的 preview 契约)。 */\nfunction jsonPreview(value: string | undefined): string {\n return value === undefined ? \"\" : value;\n}\nfunction conversationEntryOf(reply: AttemptConversationReply): ConversationEntry {\n switch (reply.kind) {\n case \"assistant\":\n case \"user\":\n case \"thinking\":\n case \"error\":\n return { kind: reply.kind, preview: reply.text, failed: reply.kind === \"error\" };\n case \"context\":\n return { kind: \"context\", preview: reply.text };\n case \"tool\": {\n const finished = reply.outputSummary !== undefined;\n const raw = finished ? reply.outputSummary : reply.inputSummary;\n return {\n kind: \"tool\",\n preview: finished\n ? `${reply.name} result`\n : `${reply.name}(${jsonPreview(reply.inputSummary)})`,\n raw,\n callId: reply.callId,\n callPhase: finished ? \"finished\" : \"started\",\n ...(reply.failed === true ? { failed: true } : {}),\n detail: (<ToolEvidence content={{\n phase: finished ? \"finished\" : \"started\",\n tool: reply.name,\n callId: reply.callId,\n inputSummary: reply.inputSummary,\n ...(reply.outputSummary === undefined ? {} : { outputSummary: reply.outputSummary }),\n ...(reply.outcome === undefined ? {} : { outcome: reply.outcome }),\n }}/>),\n };\n }\n case \"subagent\":\n return {\n kind: \"subagent\",\n preview: reply.name,\n ...(reply.failed === true ? { failed: true } : {}),\n ...(reply.summary ? { detail: <Text>{reply.summary}</Text> } : {}),\n };\n case \"skill\":\n return { kind: \"skill\", preview: reply.text ? `${reply.skill}: ${reply.text}` : reply.skill };\n case \"input\":\n return {\n kind: \"input\",\n preview: `${reply.request.state} · ${reply.request.promptSummary}`,\n ...(reply.request.responseSummary !== null\n ? { detail: <Text>{reply.request.responseSummary}</Text> }\n : {}),\n };\n case \"compaction\":\n return { kind: \"compaction\", preview: reply.text || \"context compacted\" };\n }\n}\nfunction turnVerdictOf(outcome: AttemptConversationData[\"rounds\"][number][\"outcome\"]): ConversationTurn[\"verdict\"] {\n switch (outcome) {\n case \"completed\":\n return undefined;\n case \"failed\":\n return \"failed\";\n case \"cancelled\":\n return \"skipped\";\n case \"interrupted\":\n return \"errored\";\n }\n}\nexport function attemptConversationContent(data: AttemptConversationData | null): ConversationContent | null {\n if (data === null || data.rounds.length === 0)\n return null;\n const turns: ConversationTurn[] = data.rounds.map((round) => ({\n key: round.turnId,\n label: `Turn ${round.sequence}`,\n ...(round.durationMs === undefined ? {} : { durationMs: round.durationMs }),\n verdict: turnVerdictOf(round.outcome),\n entries: round.replies.map(conversationEntryOf),\n }));\n return { turns, locator: data.locator };\n}\n// ───────────────────────── AttemptCommandEvidence ─────────────────────────\nexport function attemptCommandEvidenceContent(data: AttemptCommandEvidenceData | null): CommandEvidenceContent | null {\n if (data === null || data.commands.length === 0)\n return null;\n return { locator: data.locator, commands: data.commands };\n}\n// ───────────────────────── AttemptDiagnostics / AttemptError ─────────────────────────\nexport const executionEvidenceUnavailableCallouts: readonly CalloutGroup[] = [\n {\n title: \"Execution evidence unavailable\",\n items: [\n {\n level: \"warning\",\n message: \"The events artifact is missing or was not published.\",\n },\n ],\n },\n];\nexport function attemptDiagnosticsContent(data: AttemptDiagnosticsData | null): readonly CalloutGroup[] | null {\n if (data === null)\n return null;\n return data.groups.map((group) => ({\n title: group.phase,\n items: group.items.map((diagnostic): CalloutItem => ({\n level: diagnostic.level,\n message: `${diagnostic.code}: ${diagnostic.summary}`,\n })),\n }));\n}\nexport function attemptErrorContent(data: AttemptErrorData | null): readonly CalloutGroup[] | null {\n if (data === null)\n return null;\n return [\n {\n title: data.phase,\n items: [{ level: \"error\", message: `${data.code}: ${data.message}` }],\n },\n ];\n}\nexport function attemptFixPromptContent(data: AttemptFixPromptData | null): CopyBlockContent | null {\n if (data === null)\n return null;\n return { title: { en: \"Fix prompt\", \"zh-CN\": \"修复 prompt\" }, text: data.prompt };\n}\n/** 投影已经是 `DiffFile[]`,这里只把「没有证据」与「没有改动」都收成组件的零输出。 */\nexport function attemptDiffContent(data: AttemptDiffData | null): DiffContent | null {\n if (data === null || data.files.length === 0)\n return null;\n return data.files.map((file) => ({\n ...file,\n windows: file.windows.map((window) => ({\n ...window,\n window: normalizeTurnLabel(window.window),\n })),\n }));\n}\nexport function attemptNoticesContent(error: AttemptErrorData | null, diagnostics: AttemptDiagnosticsData | null): readonly CalloutGroup[] | null {\n const groups = [...(attemptErrorContent(error) ?? []), ...(attemptDiagnosticsContent(diagnostics) ?? [])];\n return groups.length > 0 ? groups : null;\n}\n// ───────────────────────── Conversation 嵌入源码 ─────────────────────────\n/**\n * 只按已验证的 navigation turnId 将 Conversation 轮嵌入源码 send 行;没有\n * mapped row 的轮留在页尾。这里禁止按标签、源码顺序或数组位置补配。\n */\nexport function embedConversationInSource(source: SourceContent | null, conversation: ConversationContent | null): {\n source: SourceContent | null;\n conversation: ConversationContent | null;\n} {\n const turns = conversation?.turns ?? [];\n const turnById = new Map(turns.map((turn) => [turn.key, turn] as const));\n const mappedTurnIds = new Set<string>();\n const cloneLine = (line: SourceLine): SourceLine => {\n const lineTurns = (line.turnIds ?? []).flatMap((turnId) => {\n const turn = turnById.get(turnId);\n if (turn === undefined)\n return [];\n mappedTurnIds.add(turnId);\n return [turn];\n });\n const details = line.details === undefined && lineTurns.length === 0\n ? undefined\n : [\n ...(line.details ?? []),\n ...(lineTurns.length === 0 ? [] : [<TurnTrace data={{ turns: lineTurns }}/>]),\n ];\n return {\n ...line,\n ...(details === undefined ? {} : { details }),\n };\n };\n const cloneBlock = (block: SourceBlockContent): SourceBlockContent => ({\n ...block,\n lines: block.lines.map(cloneLine),\n });\n const embeddedSource = source === null\n ? null\n : {\n ...source,\n spine: cloneBlock(source.spine),\n detached: source.detached.map(cloneBlock),\n };\n const remainingTurns = turns.filter((turn) => !mappedTurnIds.has(turn.key));\n const remainingConversation = conversation === null || remainingTurns.length === 0\n ? null\n : { ...conversation, turns: remainingTurns };\n return { source: embeddedSource, conversation: remainingConversation };\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["content.tsx"],"names":[],"mappings":"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","sourcesContent":["// Attempt 详情 Content 投影:compute 领域结果 → 原语 Content 形状。\n// 输入全部是当前闭合 DomainView 派生的普通值。\nimport { Text, TurnTrace } from \"../../definition/primitives.tsx\";\nimport type { ReportNode } from \"../../definition/tree.ts\";\nimport type { CalloutGroup, CalloutItem } from \"../../definition/primitives/callouts-logic.ts\";\nimport type { CopyBlockContent } from \"../../definition/primitives/copy-block.tsx\";\nimport type { CommandEvidenceContent, ConversationContent, ConversationEntry, ConversationTurn } from \"../../definition/primitives/conversation.tsx\";\nimport { ToolEvidence } from \"../../definition/primitives/tool-evidence.tsx\";\nimport { AssertionEvidence } from \"../../definition/primitives/assertion-evidence.tsx\";\nimport type { DiffContent } from \"../../definition/primitives/diff-lines.ts\";\nimport type { SourceBlockContent, SourceContent, SourceLine, SourceLineTone, } from \"../../definition/primitives/source-view.tsx\";\nimport type { WaterfallContent, WaterfallNode } from \"../../definition/primitives/waterfall.tsx\";\nimport type { TableContent, TableContentRow } from \"../../definition/cell.ts\";\nimport type { ClosedTimingInterval } from \"../../../analysis/index.ts\";\nimport { formatDurationMs, formatPointsSuffix } from \"../../model/format.ts\";\nimport { localizedMessage } from \"../../model/locale.ts\";\nimport { normalizeTurnLabel } from \"../../../shared/turn-label.ts\";\nimport type { AttemptAssertionsData, AttemptAssertionView, AttemptCommandEvidenceData, AttemptConversationData, AttemptConversationReply, AttemptDiagnosticsData, AttemptDiffData, AttemptErrorData, AttemptFixPromptData, AttemptSourceData, AttemptSourceItemView, AttemptTimelineData, AttemptTraceData, } from \"./compute.ts\";\n// ───────────────────────── AttemptSource ─────────────────────────\n/** 该行 assertion 的判定摘要行 tone:与源码行状态同一套色。 */\nfunction assertionToneClass(assertion: AttemptAssertionView): string {\n if (assertion.outcome === \"unavailable\")\n return \"niceeval-tone-na\";\n if (assertion.outcome === \"passed\")\n return \"niceeval-tone-good\";\n return assertion.severity === \"gate\" ? \"niceeval-tone-bad\" : \"niceeval-tone-warn\";\n}\n/**\n * 一条 assertion 在展开区里的呈现:一行判定摘要,再接五段中立结构\n * (docs/feature/reports/library.md「源码行展开区里有什么」)。\n */\nfunction assertionNodes(assertion: AttemptAssertionView, key: string): ReportNode[] {\n const points = assertion.outcome !== \"unavailable\" && assertion.score !== undefined\n ? ` ${formatPointsSuffix(assertion.score.state === \"earned\" ? assertion.score.earned ?? 0 : 0)}`\n : \"\";\n const head = `${assertion.name} · ${assertion.severity} ${assertion.outcome}${points}`;\n const nodes: ReportNode[] = [\n <Text key={`${key}:head`} className={`niceeval-source-assertion ${assertionToneClass(assertion)}`}>\n {head}\n </Text>,\n ];\n nodes.push(<AssertionEvidence key={`${key}:body`} content={assertion.evidence}/>);\n return nodes;\n}\nfunction lineToneOf(assertions: readonly AttemptAssertionView[]): SourceLineTone | undefined {\n if (assertions.some((assertion) => assertion.outcome === \"failed\" && assertion.severity === \"gate\"))\n return \"gate-fail\";\n if (assertions.some((assertion) => assertion.outcome === \"failed\"))\n return \"soft-fail\";\n if (assertions.some((assertion) => assertion.outcome === \"unavailable\"))\n return \"unavailable\";\n if (assertions.some((assertion) => assertion.outcome === \"passed\"))\n return \"passed\";\n return undefined;\n}\ninterface SiteLineBinding {\n readonly entry: AttemptAssertionView;\n readonly role: string;\n readonly line: number;\n}\n/** sourceSites → 每行注解绑定:detail 落在起始行,tone 覆盖整个行区间。 */\nfunction siteBindingsOf(data: AttemptSourceData): ReadonlyMap<string, readonly SiteLineBinding[]> {\n const entriesById = new Map(data.entries.map((entry) => [entry.entryId, entry] as const));\n const bindings = new Map<string, SiteLineBinding[]>();\n for (const site of data.sites) {\n const entry = entriesById.get(site.entryId);\n if (entry === undefined)\n continue;\n for (let line = site.startLine; line <= site.endLine; line += 1) {\n const bucket = bindings.get(`${site.sourceItemId}:${line}`) ?? [];\n bucket.push({ entry, role: site.role, line: site.startLine });\n bindings.set(`${site.sourceItemId}:${line}`, bucket);\n }\n }\n return bindings;\n}\nfunction sourceItemBlock(item: AttemptSourceItemView, data: AttemptSourceData, bindings: ReadonlyMap<string, readonly SiteLineBinding[]>): SourceBlockContent {\n const lines: SourceLine[] = item.lines.map((text, index): SourceLine => {\n const line = index + 1;\n const bound = bindings.get(`${item.sourceItemId}:${line}`) ?? [];\n const assertions = bound.filter((binding) => binding.role !== \"score\").map((binding) => binding.entry);\n const details = bound\n .filter((binding) => binding.line === line && binding.role !== \"score\")\n .map((binding, detailIndex) => assertionNodes(binding.entry, `${item.path}:${line}:${detailIndex}`))\n .flat();\n const points = bound\n .filter((binding) => binding.role === \"score\")\n .reduce((sum, binding) => sum + (binding.entry.score?.state === \"earned\" ? binding.entry.score.earned ?? 0 : 0), 0);\n const hasPoints = bound.some((binding) => binding.role === \"score\" && binding.entry.score !== undefined);\n const tone = lineToneOf(assertions);\n const turnIds = (data.navigation?.rows ?? [])\n .filter((row) => row.source.state === \"mapped\" &&\n row.source.sourceItemId === item.sourceItemId &&\n row.source.sha256 === item.sha256 &&\n row.source.start.line === line)\n .sort((left, right) => (left.sourceOrder ?? Number.MAX_SAFE_INTEGER) - (right.sourceOrder ?? Number.MAX_SAFE_INTEGER) ||\n (left.turnId < right.turnId ? -1 : left.turnId > right.turnId ? 1 : 0))\n .map((row) => row.turnId);\n return {\n number: line,\n text,\n ...(turnIds.length > 0 ? { interaction: \"send\" as const, turnIds } : {}),\n ...(tone !== undefined ? { tone } : {}),\n ...(hasPoints ? { pill: formatPointsSuffix(points) } : {}),\n ...(details.length > 0 ? { details } : {}),\n };\n });\n return { path: item.path, lines };\n}\n/**\n * 闭合 Sources + sourceSites → SourceView Content。spine 是第一个 source item,\n * 其余是 detached;没有 sourceSite 的 attention 断言进 unmapped 区,不丢弃。\n */\nexport function projectedSourceContent(data: AttemptSourceData | null, locator?: AttemptSourceData[\"locator\"]): SourceContent | null {\n if (data === null)\n return null;\n const bindings = siteBindingsOf(data);\n const referenced = new Set(data.sites.map((site) => site.entryId));\n const unmapped: ReportNode[] = data.entries\n .filter((entry) => !referenced.has(entry.entryId))\n .flatMap((entry, index) => assertionNodes(entry, `unmapped:${index}`));\n const spine = sourceItemBlock(data.items[0]!, data, bindings);\n const detached = data.items.slice(1).map((item) => sourceItemBlock(item, data, bindings));\n return {\n spine,\n detached,\n ...(unmapped.length > 0 ? { unmapped } : {}),\n ...(locator !== undefined ? { locator } : {}),\n };\n}\n// ───────────────────────── AttemptAssertions ─────────────────────────\nexport function attemptAssertionsContent(data: AttemptAssertionsData | null): TableContent | null {\n if (data === null || (data.attention.length === 0 && data.passedGroups.length === 0))\n return null;\n const rows: TableContentRow[] = [];\n for (const assertion of data.attention) {\n rows.push({\n key: assertion.entryId,\n cells: {\n name: { kind: \"text\", text: assertion.name },\n severity: { kind: \"text\", text: assertion.severity },\n outcome: { kind: \"verdict\", verdict: assertion.outcome === \"unavailable\" ? \"skipped\" : assertion.outcome },\n detail: assertion.detail.length > 0\n ? { kind: \"text\", text: assertion.detail }\n : { kind: \"notApplicable\" },\n },\n });\n }\n return {\n columns: [\n { key: \"name\", header: localizedMessage(\"attemptAssertions.name\") },\n { key: \"severity\", header: localizedMessage(\"attemptAssertions.severity\") },\n { key: \"outcome\", header: localizedMessage(\"attemptAssertions.outcome\") },\n { key: \"detail\", header: localizedMessage(\"attemptAssertions.detail\") },\n ],\n rows,\n };\n}\n// ───────────────────────── AttemptTimeline / AttemptTrace ─────────────────────────\nfunction timingTree(intervals: readonly ClosedTimingInterval[]): readonly WaterfallNode[] {\n const children = new Map<string | null, ClosedTimingInterval[]>();\n for (const interval of intervals) {\n const siblings = children.get(interval.parentIntervalId) ?? [];\n siblings.push(interval);\n children.set(interval.parentIntervalId, siblings);\n }\n const build = (parent: string | null): WaterfallNode[] => (children.get(parent) ?? [])\n .sort(compareIntervals)\n .map((interval) => {\n const phase = interval.phase;\n return {\n key: interval.intervalId,\n label: interval.label,\n kind: phase,\n startOffsetMs: interval.startOffsetMs,\n durationMs: interval.durationMs,\n ...(interval.outcome === \"failed\" || interval.outcome === \"interrupted\" ? { failed: true as const } : {}),\n // 主干默认展开:直接看到 eval.run 与 agent.send 内部活动。\n ...(phase === \"eval.run\" || phase === \"agent.send\" ? { open: true as const } : {}),\n ...(build(interval.intervalId).length > 0 ? { children: build(interval.intervalId) } : {}),\n };\n });\n return build(null);\n}\nfunction compareIntervals(left: ClosedTimingInterval, right: ClosedTimingInterval): number {\n return left.startOffsetMs - right.startOffsetMs || compareText(left.intervalId, right.intervalId);\n}\nfunction timingSpan(intervals: readonly ClosedTimingInterval[]): number | null {\n if (intervals.length === 0)\n return null;\n const start = Math.min(...intervals.map((interval) => interval.startOffsetMs));\n const end = Math.max(...intervals.map((interval) => interval.startOffsetMs + interval.durationMs));\n return Math.max(0, end - start);\n}\n/** 执行时间树:root 区间是 phase 主链,children 是采集侧层级。 */\nexport function attemptTimelineContent(data: AttemptTimelineData | null): WaterfallContent | null {\n if (data === null)\n return null;\n return [\n {\n key: data.locator,\n label: data.locator,\n durationMs: timingSpan(data.intervals),\n locator: data.locator,\n nodes: timingTree(data.intervals),\n },\n ];\n}\nexport function attemptTraceContent(data: AttemptTraceData | null): WaterfallContent | null {\n if (data === null)\n return null;\n return [\n {\n key: data.locator,\n label: data.locator,\n durationMs: timingSpan(data.intervals),\n locator: data.locator,\n nodes: timingTree(data.intervals),\n },\n ];\n}\n// ───────────────────────── AttemptConversation ─────────────────────────\n/** 工具出入参等结构化值:JSON 化后交原语收口成单行预览(Conversation 的 preview 契约)。 */\nfunction jsonPreview(value: string | undefined): string {\n return value === undefined ? \"\" : value;\n}\nfunction conversationEntryOf(reply: AttemptConversationReply): ConversationEntry {\n switch (reply.kind) {\n case \"assistant\":\n case \"user\":\n case \"thinking\":\n case \"error\":\n return { kind: reply.kind, preview: reply.text, failed: reply.kind === \"error\" };\n case \"context\":\n return { kind: \"context\", preview: reply.text };\n case \"tool\": {\n const finished = reply.outputSummary !== undefined;\n const raw = finished ? reply.outputSummary : reply.inputSummary;\n return {\n kind: \"tool\",\n preview: finished\n ? `${reply.name} result`\n : `${reply.name}(${jsonPreview(reply.inputSummary)})`,\n raw,\n callId: reply.callId,\n callPhase: finished ? \"finished\" : \"started\",\n ...(reply.outcome === undefined ? {} : { callOutcome: reply.outcome }),\n ...(reply.failed === true ? { failed: true } : {}),\n detail: (<ToolEvidence content={{\n phase: finished ? \"finished\" : \"started\",\n tool: reply.name,\n callId: reply.callId,\n inputSummary: reply.inputSummary,\n ...(reply.outputSummary === undefined ? {} : { outputSummary: reply.outputSummary }),\n ...(reply.outcome === undefined ? {} : { outcome: reply.outcome }),\n }}/>),\n };\n }\n case \"subagent\":\n return {\n kind: \"subagent\",\n preview: reply.name,\n ...(reply.failed === true ? { failed: true } : {}),\n ...(reply.summary ? { detail: <Text>{reply.summary}</Text> } : {}),\n };\n case \"skill\":\n return { kind: \"skill\", preview: reply.text ? `${reply.skill}: ${reply.text}` : reply.skill };\n case \"input\":\n return {\n kind: \"input\",\n preview: `${reply.request.state} · ${reply.request.promptSummary}`,\n ...(reply.request.responseSummary !== null\n ? { detail: <Text>{reply.request.responseSummary}</Text> }\n : {}),\n };\n case \"compaction\":\n return { kind: \"compaction\", preview: reply.text || \"context compacted\" };\n }\n}\nfunction turnVerdictOf(outcome: AttemptConversationData[\"rounds\"][number][\"outcome\"]): ConversationTurn[\"verdict\"] {\n switch (outcome) {\n case \"completed\":\n return undefined;\n case \"failed\":\n return \"failed\";\n case \"cancelled\":\n return \"skipped\";\n case \"interrupted\":\n return \"errored\";\n }\n}\nexport function attemptConversationContent(data: AttemptConversationData | null): ConversationContent | null {\n if (data === null || data.rounds.length === 0)\n return null;\n const turns: ConversationTurn[] = data.rounds.map((round) => ({\n key: round.turnId,\n label: `Turn ${round.sequence}`,\n ...(round.durationMs === undefined ? {} : { durationMs: round.durationMs }),\n verdict: turnVerdictOf(round.outcome),\n entries: round.replies.map(conversationEntryOf),\n }));\n return { turns, locator: data.locator };\n}\n// ───────────────────────── AttemptCommandEvidence ─────────────────────────\nexport function attemptCommandEvidenceContent(data: AttemptCommandEvidenceData | null): CommandEvidenceContent | null {\n if (data === null || data.commands.length === 0)\n return null;\n return { locator: data.locator, commands: data.commands };\n}\n// ───────────────────────── AttemptDiagnostics / AttemptError ─────────────────────────\nexport const executionEvidenceUnavailableCallouts: readonly CalloutGroup[] = [\n {\n title: \"Execution evidence unavailable\",\n items: [\n {\n level: \"warning\",\n message: \"The events artifact is missing or was not published.\",\n },\n ],\n },\n];\nexport function attemptDiagnosticsContent(data: AttemptDiagnosticsData | null): readonly CalloutGroup[] | null {\n if (data === null)\n return null;\n return data.groups.map((group) => ({\n title: group.phase,\n items: group.items.map((diagnostic): CalloutItem => ({\n level: diagnostic.level,\n message: `${diagnostic.code}: ${diagnostic.summary}`,\n })),\n }));\n}\nexport function attemptErrorContent(data: AttemptErrorData | null): readonly CalloutGroup[] | null {\n if (data === null)\n return null;\n return [\n {\n title: data.phase,\n items: [{ level: \"error\", message: `${data.code}: ${data.message}` }],\n },\n ];\n}\nexport function attemptFixPromptContent(data: AttemptFixPromptData | null): CopyBlockContent | null {\n if (data === null)\n return null;\n return { title: { en: \"Fix prompt\", \"zh-CN\": \"修复 prompt\" }, text: data.prompt };\n}\n/** 投影已经是 `DiffFile[]`,这里只把「没有证据」与「没有改动」都收成组件的零输出。 */\nexport function attemptDiffContent(data: AttemptDiffData | null): DiffContent | null {\n if (data === null || data.files.length === 0)\n return null;\n return data.files.map((file) => ({\n ...file,\n windows: file.windows.map((window) => ({\n ...window,\n window: normalizeTurnLabel(window.window),\n })),\n }));\n}\nexport function attemptNoticesContent(error: AttemptErrorData | null, diagnostics: AttemptDiagnosticsData | null): readonly CalloutGroup[] | null {\n const groups = [...(attemptErrorContent(error) ?? []), ...(attemptDiagnosticsContent(diagnostics) ?? [])];\n return groups.length > 0 ? groups : null;\n}\n// ───────────────────────── Conversation 嵌入源码 ─────────────────────────\n/**\n * 只按已验证的 navigation turnId 将 Conversation 轮嵌入源码 send 行;没有\n * mapped row 的轮留在页尾。这里禁止按标签、源码顺序或数组位置补配。\n */\nexport function embedConversationInSource(source: SourceContent | null, conversation: ConversationContent | null): {\n source: SourceContent | null;\n conversation: ConversationContent | null;\n} {\n const turns = conversation?.turns ?? [];\n const turnById = new Map(turns.map((turn) => [turn.key, turn] as const));\n const mappedTurnIds = new Set<string>();\n const cloneLine = (line: SourceLine): SourceLine => {\n const lineTurns = (line.turnIds ?? []).flatMap((turnId) => {\n const turn = turnById.get(turnId);\n if (turn === undefined)\n return [];\n mappedTurnIds.add(turnId);\n return [turn];\n });\n const details = line.details === undefined && lineTurns.length === 0\n ? undefined\n : [\n ...(line.details ?? []),\n ...(lineTurns.length === 0 ? [] : [<TurnTrace data={{ turns: lineTurns }}/>]),\n ];\n return {\n ...line,\n ...(details === undefined ? {} : { details }),\n };\n };\n const cloneBlock = (block: SourceBlockContent): SourceBlockContent => ({\n ...block,\n lines: block.lines.map(cloneLine),\n });\n const embeddedSource = source === null\n ? null\n : {\n ...source,\n spine: cloneBlock(source.spine),\n detached: source.detached.map(cloneBlock),\n };\n const remainingTurns = turns.filter((turn) => !mappedTurnIds.has(turn.key));\n const remainingConversation = conversation === null || remainingTurns.length === 0\n ? null\n : { ...conversation, turns: remainingTurns };\n return { source: embeddedSource, conversation: remainingConversation };\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}
|
|
@@ -42,6 +42,41 @@ function capabilitiesProblem(value, path) {
|
|
|
42
42
|
}
|
|
43
43
|
return null;
|
|
44
44
|
}
|
|
45
|
+
function assertionFactProblem(value, path) {
|
|
46
|
+
if (!(0, shared_ts_1.isObject)(value) || typeof value.kind !== "string")
|
|
47
|
+
return `"${path}" must be a closed assertion fact`;
|
|
48
|
+
switch (value.kind) {
|
|
49
|
+
case "unavailable":
|
|
50
|
+
return typeof value.reason === "string" ? null : `"${path}.reason" must be a string`;
|
|
51
|
+
case "value":
|
|
52
|
+
return value.value === null || typeof value.value === "string" || typeof value.value === "number" ||
|
|
53
|
+
typeof value.value === "boolean"
|
|
54
|
+
? null
|
|
55
|
+
: `"${path}.value" must be a JSON scalar`;
|
|
56
|
+
case "text":
|
|
57
|
+
return typeof value.text === "string" ? null : `"${path}.text" must be a string`;
|
|
58
|
+
case "list":
|
|
59
|
+
return (0, shared_ts_1.arrayProblem)(value.items, `${path}.items`, assertionFactProblem);
|
|
60
|
+
case "fields":
|
|
61
|
+
return (0, shared_ts_1.arrayProblem)(value.fields, `${path}.fields`, (field, fieldPath) => {
|
|
62
|
+
if (!(0, shared_ts_1.isObject)(field) || typeof field.label !== "string")
|
|
63
|
+
return `"${fieldPath}.label" must be a string`;
|
|
64
|
+
return assertionFactProblem(field.value, `${fieldPath}.value`);
|
|
65
|
+
});
|
|
66
|
+
default:
|
|
67
|
+
return `"${path}.kind" is unsupported`;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function assertionEvidenceProblem(value, path) {
|
|
71
|
+
if (!(0, shared_ts_1.isObject)(value))
|
|
72
|
+
return `"${path}" must be an AssertionEvidenceContent object`;
|
|
73
|
+
for (const key of ["source", "check", "observed", "expected", "explanation"]) {
|
|
74
|
+
const problem = assertionFactProblem(value[key], `${path}.${key}`);
|
|
75
|
+
if (problem !== null)
|
|
76
|
+
return problem;
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
45
80
|
/** AttemptAssertionView(compute.ts):sealed 断言 entry 的展示投影。 */
|
|
46
81
|
function assertionViewProblem(value, path) {
|
|
47
82
|
if (!(0, shared_ts_1.isObject)(value))
|
|
@@ -50,13 +85,17 @@ function assertionViewProblem(value, path) {
|
|
|
50
85
|
return `"${path}.entryId" must be a string`;
|
|
51
86
|
if (typeof value.name !== "string")
|
|
52
87
|
return `"${path}.name" must be a string`;
|
|
53
|
-
if (value.severity !== "gate" && value.severity !== "soft")
|
|
54
|
-
return `"${path}.severity" must be "gate"
|
|
88
|
+
if (value.severity !== "gate" && value.severity !== "recorded" && value.severity !== "soft") {
|
|
89
|
+
return `"${path}.severity" must be "gate" | "recorded" | "soft"`;
|
|
90
|
+
}
|
|
55
91
|
if (value.outcome !== "passed" && value.outcome !== "failed" && value.outcome !== "unavailable") {
|
|
56
92
|
return `"${path}.outcome" must be "passed" | "failed" | "unavailable"`;
|
|
57
93
|
}
|
|
58
94
|
if (typeof value.detail !== "string")
|
|
59
95
|
return `"${path}.detail" must be a string`;
|
|
96
|
+
const evidenceProblem = assertionEvidenceProblem(value.evidence, `${path}.evidence`);
|
|
97
|
+
if (evidenceProblem !== null)
|
|
98
|
+
return evidenceProblem;
|
|
60
99
|
if (!Array.isArray(value.groupPath) || !value.groupPath.every((segment) => typeof segment === "string")) {
|
|
61
100
|
return `"${path}.groupPath" must be an array of strings`;
|
|
62
101
|
}
|
|
@@ -66,10 +105,14 @@ function assertionViewProblem(value, path) {
|
|
|
66
105
|
if (value.score.state !== "earned" && value.score.state !== "unavailable") {
|
|
67
106
|
return `"${path}.score.state" must be "earned" | "unavailable"`;
|
|
68
107
|
}
|
|
69
|
-
if (typeof value.score.earned !== "number")
|
|
70
|
-
return `"${path}.score.earned" must be a number`;
|
|
71
108
|
if (typeof value.score.points !== "number")
|
|
72
109
|
return `"${path}.score.points" must be a number`;
|
|
110
|
+
if (value.score.state === "earned" && typeof value.score.earned !== "number") {
|
|
111
|
+
return `"${path}.score.earned" must be a number for an earned contribution`;
|
|
112
|
+
}
|
|
113
|
+
if (value.score.state === "unavailable" && value.score.earned !== undefined) {
|
|
114
|
+
return `"${path}.score.earned" must be omitted for an unavailable contribution`;
|
|
115
|
+
}
|
|
73
116
|
}
|
|
74
117
|
return null;
|
|
75
118
|
}
|