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
|
@@ -7,56 +7,76 @@ const UTF8 = new TextEncoder();
|
|
|
7
7
|
function encodedBytes(value) {
|
|
8
8
|
return UTF8.encode(JSON.stringify(value)).byteLength;
|
|
9
9
|
}
|
|
10
|
-
const DIAGNOSTIC_ROOT_KEYS = Object.freeze([
|
|
11
|
-
"code",
|
|
12
|
-
"message",
|
|
13
|
-
"path",
|
|
14
|
-
"expected",
|
|
15
|
-
"received",
|
|
16
|
-
"reason",
|
|
17
|
-
"locator",
|
|
18
|
-
]);
|
|
19
|
-
function compactDiagnostic(diagnostic, mode) {
|
|
20
|
-
if (mode === "minimal") {
|
|
21
|
-
return Object.freeze({
|
|
22
|
-
code: "diagnostic-truncated",
|
|
23
|
-
message: "matcher diagnostic details were omitted to fit the Assertions document limit",
|
|
24
|
-
path: Object.freeze([]),
|
|
25
|
-
truncation: Object.freeze({
|
|
26
|
-
code: "diagnostic-truncated",
|
|
27
|
-
reason: "document-limit",
|
|
28
|
-
}),
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
const root = {};
|
|
32
|
-
for (const key of DIAGNOSTIC_ROOT_KEYS) {
|
|
33
|
-
const value = diagnostic[key];
|
|
34
|
-
if (value !== undefined)
|
|
35
|
-
root[key] = value;
|
|
36
|
-
}
|
|
37
|
-
root.truncation = Object.freeze({
|
|
38
|
-
code: "diagnostic-truncated",
|
|
39
|
-
reason: "document-limit",
|
|
40
|
-
});
|
|
41
|
-
return Object.freeze(root);
|
|
42
|
-
}
|
|
43
|
-
function replaceDiagnostic(result, mode) {
|
|
44
|
-
if (result.diagnostic === undefined)
|
|
45
|
-
return result;
|
|
46
|
-
const diagnostic = compactDiagnostic(result.diagnostic, mode);
|
|
47
|
-
switch (result.state) {
|
|
48
|
-
case "matched": return Object.freeze({ ...result, diagnostic });
|
|
49
|
-
case "mismatched": return Object.freeze({ ...result, diagnostic });
|
|
50
|
-
case "unavailable": return Object.freeze({ ...result, diagnostic });
|
|
51
|
-
case "errored": return Object.freeze({ ...result, diagnostic });
|
|
52
|
-
case "not-applicable": return Object.freeze({ ...result, diagnostic });
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
10
|
function compactEntries(entries, mode) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
11
|
+
const childState = (value) => {
|
|
12
|
+
if (value.kind !== "fields")
|
|
13
|
+
return undefined;
|
|
14
|
+
const state = value.fields.find((field) => field.label === "state")?.value;
|
|
15
|
+
return state?.kind === "value" && typeof state.value === "string" ? state.value : undefined;
|
|
16
|
+
};
|
|
17
|
+
const compactFact = (value, decision) => {
|
|
18
|
+
switch (value.kind) {
|
|
19
|
+
case "unavailable":
|
|
20
|
+
case "value":
|
|
21
|
+
return value;
|
|
22
|
+
case "text":
|
|
23
|
+
return value.text.length <= 512
|
|
24
|
+
? value
|
|
25
|
+
: Object.freeze({ kind: "text", text: `${value.text.slice(0, 511)}…` });
|
|
26
|
+
case "list":
|
|
27
|
+
return Object.freeze({ kind: "list", items: Object.freeze(value.items.map((item) => compactFact(item, decision))) });
|
|
28
|
+
case "fields":
|
|
29
|
+
return Object.freeze({
|
|
30
|
+
kind: "fields",
|
|
31
|
+
fields: Object.freeze(value.fields.flatMap((field) => {
|
|
32
|
+
if ((mode === "root" || mode === "minimal") &&
|
|
33
|
+
(field.label === "message" || field.label === "expected" || field.label === "received"))
|
|
34
|
+
return [];
|
|
35
|
+
if (field.label === "children" && field.value.kind === "list") {
|
|
36
|
+
const decisiveState = decision.result === "matched"
|
|
37
|
+
? "matched"
|
|
38
|
+
: decision.result === "unavailable"
|
|
39
|
+
? "unavailable"
|
|
40
|
+
: decision.result === "mismatched"
|
|
41
|
+
? "matched"
|
|
42
|
+
: undefined;
|
|
43
|
+
const decisive = [];
|
|
44
|
+
if (decisiveState !== undefined) {
|
|
45
|
+
for (const item of field.value.items) {
|
|
46
|
+
if (childState(item) !== decisiveState)
|
|
47
|
+
continue;
|
|
48
|
+
if (decisive.length === 0)
|
|
49
|
+
decisive.push(item);
|
|
50
|
+
else if (decisive.length === 1)
|
|
51
|
+
decisive.push(item);
|
|
52
|
+
else
|
|
53
|
+
decisive[1] = item;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const representative = mode === "root" ? field.value.items.slice(0, 2) : [];
|
|
57
|
+
const retained = [...new Set([...representative, ...decisive])];
|
|
58
|
+
return [Object.freeze({
|
|
59
|
+
label: field.label,
|
|
60
|
+
value: Object.freeze({
|
|
61
|
+
kind: "list",
|
|
62
|
+
items: Object.freeze(retained.map((item) => compactFact(item, decision))),
|
|
63
|
+
}),
|
|
64
|
+
})];
|
|
65
|
+
}
|
|
66
|
+
return [Object.freeze({ label: field.label, value: compactFact(field.value, decision) })];
|
|
67
|
+
})),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
return Object.freeze(entries.map((entry) => entry.explanationRetention.state === "retained"
|
|
72
|
+
? Object.freeze({
|
|
73
|
+
...entry,
|
|
74
|
+
explanationRetention: Object.freeze({
|
|
75
|
+
state: "retained",
|
|
76
|
+
value: compactFact(entry.explanationRetention.value, entry.decision),
|
|
77
|
+
}),
|
|
78
|
+
})
|
|
79
|
+
: entry));
|
|
60
80
|
}
|
|
61
81
|
function invalidDocument(message) {
|
|
62
82
|
return Object.freeze({ code: "assertions-document-invalid", message });
|
|
@@ -137,7 +157,7 @@ function createAssertionsDocumentBuilder(input) {
|
|
|
137
157
|
if (documentBytes > maximumBytes) {
|
|
138
158
|
return effect_1.Either.left(invalidDocument(`Assertions could not be saved after diagnostic compaction because entry framing is ` +
|
|
139
159
|
`${documentBytes} bytes; ${maximumBytes} bytes remain after source sites within the ` +
|
|
140
|
-
`${codec_ts_1.MAX_ASSERTION_DOCUMENT_BYTES}-byte limit. Large
|
|
160
|
+
`${codec_ts_1.MAX_ASSERTION_DOCUMENT_BYTES}-byte limit. Large source and evidence snapshots are already ` +
|
|
141
161
|
"stored as blobs; reduce assertion count or matcher/display identity and retry."));
|
|
142
162
|
}
|
|
143
163
|
const encoded = effect_1.Schema.encodeUnknownEither(input.documentSchema, codec_ts_1.AssertionsExactParseOptions)(document);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"producer.js","sourceRoot":"","sources":["producer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Either, ParseResult, Schema } from \"effect\";\nimport { AssertionEntryIdSchema, AssertionsExactParseOptions, MAX_ASSERTION_DOCUMENT_BYTES, isAssertionsRawDataGraph, } from \"./codec.ts\";\nimport type { BoundedJsonObject, BoundedJsonValue, AssertionDisplay, AssertionEntryId, AssertionEntry, AssertionLimitation, AssertionMaterial, AssertionCoverage, AssertionsDocument, SealedAssertionResult, WritableCriterionEnvelope, } from \"./model.ts\";\nexport interface AssertionEntryInput<BlobRef> {\n readonly display: AssertionDisplay;\n readonly criterion: WritableCriterionEnvelope;\n readonly subject: AssertionMaterial<BlobRef>;\n readonly evidence: readonly AssertionMaterial<BlobRef>[];\n readonly coverage: AssertionCoverage;\n readonly limitations: readonly AssertionLimitation[];\n readonly result: SealedAssertionResult;\n}\nexport interface AssertionsEntryIdSource {\n /** Must return a fresh `ae_[a-z0-9]{20}` candidate for this Attachment. */\n readonly next: () => string;\n}\nexport type AssertionsProducerError = {\n readonly code: \"assertion-entry-id-invalid\";\n readonly entryId: string;\n} | {\n readonly code: \"assertion-entry-id-duplicate\";\n readonly entryId: string;\n} | {\n readonly code: \"assertions-document-sealed\";\n} | {\n readonly code: \"assertions-document-invalid\";\n readonly message: string;\n};\nconst UTF8 = new TextEncoder();\nfunction encodedBytes(value: unknown): number {\n return UTF8.encode(JSON.stringify(value)).byteLength;\n}\nconst DIAGNOSTIC_ROOT_KEYS = Object.freeze([\n \"code\",\n \"message\",\n \"path\",\n \"expected\",\n \"received\",\n \"reason\",\n \"locator\",\n] as const);\nfunction compactDiagnostic(diagnostic: BoundedJsonObject, mode: \"root\" | \"minimal\"): BoundedJsonObject {\n if (mode === \"minimal\") {\n return Object.freeze({\n code: \"diagnostic-truncated\",\n message: \"matcher diagnostic details were omitted to fit the Assertions document limit\",\n path: Object.freeze([]),\n truncation: Object.freeze({\n code: \"diagnostic-truncated\",\n reason: \"document-limit\",\n }),\n });\n }\n const root: globalThis.Record<string, BoundedJsonValue> = {};\n for (const key of DIAGNOSTIC_ROOT_KEYS) {\n const value = diagnostic[key];\n if (value !== undefined)\n root[key] = value;\n }\n root.truncation = Object.freeze({\n code: \"diagnostic-truncated\",\n reason: \"document-limit\",\n });\n return Object.freeze(root);\n}\nfunction replaceDiagnostic(result: SealedAssertionResult, mode: \"root\" | \"minimal\"): SealedAssertionResult {\n if (result.diagnostic === undefined)\n return result;\n const diagnostic = compactDiagnostic(result.diagnostic, mode);\n switch (result.state) {\n case \"matched\": return Object.freeze({ ...result, diagnostic });\n case \"mismatched\": return Object.freeze({ ...result, diagnostic });\n case \"unavailable\": return Object.freeze({ ...result, diagnostic });\n case \"errored\": return Object.freeze({ ...result, diagnostic });\n case \"not-applicable\": return Object.freeze({ ...result, diagnostic });\n }\n}\nfunction compactEntries<BlobRef>(entries: readonly AssertionEntry<BlobRef>[], mode: \"root\" | \"minimal\"): readonly AssertionEntry<BlobRef>[] {\n return Object.freeze(entries.map((entry) => Object.freeze({\n ...entry,\n result: replaceDiagnostic(entry.result, mode),\n })));\n}\nfunction invalidDocument(message: string): AssertionsProducerError {\n return Object.freeze({ code: \"assertions-document-invalid\" as const, message });\n}\nfunction firstSchemaIssue(error: ParseResult.ParseError): string | undefined {\n try {\n const issue = ParseResult.ArrayFormatter.formatErrorSync(error)[0];\n if (issue === undefined)\n return undefined;\n const path = issue.path.length === 0 ? \"document\" : issue.path.map(String).join(\".\");\n const expected = issue.message.split(\", actual \", 1)[0] ?? issue.message;\n const message = expected.length <= 512\n ? expected\n : `${expected.slice(0, 511)}…`;\n return `${path}: ${message}`;\n }\n catch {\n return undefined;\n }\n}\nexport interface AssertionsDocumentBuilder<BlobRef> {\n /** Appends exactly one completed Assertion in declaration/display order. */\n readonly append: (entry: AssertionEntryInput<BlobRef>) => Either.Either<AssertionEntryId, AssertionsProducerError>;\n /**\n * Checks the writer-only exact document schema once and prevents subsequent\n * appends. Repeated calls return the same sealed document without running\n * an evaluator or minting another entry ID.\n */\n readonly seal: (input?: {\n readonly maximumBytes?: number;\n }) => Either.Either<AssertionsDocument<BlobRef>, AssertionsProducerError>;\n}\n/**\n * Assertion producers own normalization and ID allocation. This builder owns\n * neither Record paths nor blob streams: the later Attachment adapter supplies\n * Record's local builder, so an entry cannot borrow another Attachment's ref.\n */\nexport function createAssertionsDocumentBuilder<BlobRef, Encoded>(input: {\n readonly documentSchema: Schema.Schema<AssertionsDocument<BlobRef>, Encoded>;\n readonly entryIds: AssertionsEntryIdSource;\n}): AssertionsDocumentBuilder<BlobRef> {\n const entryIds = new Set<string>();\n const entries: AssertionEntry<BlobRef>[] = [];\n let sealed: AssertionsDocument<BlobRef> | undefined;\n const builder: AssertionsDocumentBuilder<BlobRef> = {\n append(entry: AssertionEntryInput<BlobRef>): Either.Either<AssertionEntryId, AssertionsProducerError> {\n if (sealed !== undefined) {\n return Either.left({ code: \"assertions-document-sealed\" });\n }\n const entryIdText = input.entryIds.next();\n const entryId = Schema.decodeUnknownEither(AssertionEntryIdSchema, AssertionsExactParseOptions)(entryIdText);\n if (Either.isLeft(entryId)) {\n return Either.left({\n code: \"assertion-entry-id-invalid\",\n entryId: entryIdText,\n });\n }\n if (entryIds.has(entryId.right)) {\n return Either.left({\n code: \"assertion-entry-id-duplicate\",\n entryId: entryIdText,\n });\n }\n entryIds.add(entryId.right);\n entries.push(Object.freeze({ entryId: entryId.right, ...entry }));\n return Either.right(entryId.right);\n },\n seal(sealInput: {\n readonly maximumBytes?: number;\n } = {}): Either.Either<AssertionsDocument<BlobRef>, AssertionsProducerError> {\n if (sealed !== undefined) {\n return Either.right(sealed);\n }\n const maximumBytes = sealInput.maximumBytes ?? MAX_ASSERTION_DOCUMENT_BYTES;\n if (!Number.isSafeInteger(maximumBytes) || maximumBytes <= 0 || maximumBytes > MAX_ASSERTION_DOCUMENT_BYTES) {\n return Either.left(invalidDocument(`Assertions framing has no positive entry budget within the ${MAX_ASSERTION_DOCUMENT_BYTES}-byte limit. ` +\n \"Reduce assertion source sites or assertion count and retry.\"));\n }\n let document: AssertionsDocument<BlobRef> = Object.freeze({\n entries: Object.freeze([...entries]),\n });\n if (!isAssertionsRawDataGraph(document)) {\n return Either.left(invalidDocument(\"Assertions could not be saved because an entry contains a cyclic or non-JSON value. \" +\n \"Upgrade NiceEval and retry; if this persists, report assertions-document-invalid.\"));\n }\n let documentBytes = encodedBytes(document);\n if (documentBytes > maximumBytes) {\n document = Object.freeze({ entries: compactEntries(document.entries, \"root\") });\n documentBytes = encodedBytes(document);\n }\n if (documentBytes > maximumBytes) {\n document = Object.freeze({ entries: compactEntries(document.entries, \"minimal\") });\n documentBytes = encodedBytes(document);\n }\n if (documentBytes > maximumBytes) {\n return Either.left(invalidDocument(`Assertions could not be saved after diagnostic compaction because entry framing is ` +\n `${documentBytes} bytes; ${maximumBytes} bytes remain after source sites within the ` +\n `${MAX_ASSERTION_DOCUMENT_BYTES}-byte limit. Large subject and evidence snapshots are already ` +\n \"stored as blobs; reduce assertion count or matcher/display identity and retry.\"));\n }\n const encoded = Schema.encodeUnknownEither(input.documentSchema, AssertionsExactParseOptions)(document);\n if (Either.isLeft(encoded)) {\n const issue = firstSchemaIssue(encoded.left);\n return Either.left(invalidDocument(`Assertions could not be saved${issue === undefined ? \"\" : ` because ${issue}`}. ` +\n \"Upgrade NiceEval and retry; if this persists, report assertions-document-invalid.\"));\n }\n sealed = document;\n return Either.right(document);\n },\n };\n return Object.freeze(builder);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"producer.js","sourceRoot":"","sources":["producer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Either, ParseResult, Schema } from \"effect\";\nimport { AssertionEntryIdSchema, AssertionsExactParseOptions, MAX_ASSERTION_DOCUMENT_BYTES, isAssertionsRawDataGraph, } from \"./codec.ts\";\nimport type { AssertionDisplay, AssertionEntryId, AssertionEntry, AssertionCriterionRecord, AssertionMaterials, AssertionEvaluation, AssertionDecision, AssertionDecisionPolicy, AssertionFactValue, ScoreContribution, ExplanationRetention, AssertionsDocument, WritableCriterionEnvelope, } from \"./model.ts\";\nexport interface AssertionEntryInput<BlobRef> {\n readonly display: AssertionDisplay;\n readonly criterion: AssertionCriterionRecord;\n readonly materials: AssertionMaterials<BlobRef>;\n readonly evaluation: AssertionEvaluation;\n readonly decision: AssertionDecision;\n readonly policy: AssertionDecisionPolicy;\n readonly contribution: ScoreContribution;\n readonly explanationRetention: ExplanationRetention;\n}\nexport interface AssertionsEntryIdSource {\n /** Must return a fresh `ae_[a-z0-9]{20}` candidate for this Attachment. */\n readonly next: () => string;\n}\nexport type AssertionsProducerError = {\n readonly code: \"assertion-entry-id-invalid\";\n readonly entryId: string;\n} | {\n readonly code: \"assertion-entry-id-duplicate\";\n readonly entryId: string;\n} | {\n readonly code: \"assertions-document-sealed\";\n} | {\n readonly code: \"assertions-document-invalid\";\n readonly message: string;\n};\nconst UTF8 = new TextEncoder();\nfunction encodedBytes(value: unknown): number {\n return UTF8.encode(JSON.stringify(value)).byteLength;\n}\nfunction compactEntries<BlobRef>(entries: readonly AssertionEntry<BlobRef>[], mode: \"root\" | \"minimal\"): readonly AssertionEntry<BlobRef>[] {\n const childState = (value: AssertionFactValue): string | undefined => {\n if (value.kind !== \"fields\")\n return undefined;\n const state = value.fields.find((field) => field.label === \"state\")?.value;\n return state?.kind === \"value\" && typeof state.value === \"string\" ? state.value : undefined;\n };\n const compactFact = (value: AssertionFactValue, decision: AssertionEntry<BlobRef>[\"decision\"]): AssertionFactValue => {\n switch (value.kind) {\n case \"unavailable\":\n case \"value\":\n return value;\n case \"text\":\n return value.text.length <= 512\n ? value\n : Object.freeze({ kind: \"text\", text: `${value.text.slice(0, 511)}…` });\n case \"list\":\n return Object.freeze({ kind: \"list\", items: Object.freeze(value.items.map((item) => compactFact(item, decision))) });\n case \"fields\":\n return Object.freeze({\n kind: \"fields\",\n fields: Object.freeze(value.fields.flatMap((field) => {\n if ((mode === \"root\" || mode === \"minimal\") &&\n (field.label === \"message\" || field.label === \"expected\" || field.label === \"received\"))\n return [];\n if (field.label === \"children\" && field.value.kind === \"list\") {\n const decisiveState = decision.result === \"matched\"\n ? \"matched\"\n : decision.result === \"unavailable\"\n ? \"unavailable\"\n : decision.result === \"mismatched\"\n ? \"matched\"\n : undefined;\n const decisive: AssertionFactValue[] = [];\n if (decisiveState !== undefined) {\n for (const item of field.value.items) {\n if (childState(item) !== decisiveState)\n continue;\n if (decisive.length === 0)\n decisive.push(item);\n else if (decisive.length === 1)\n decisive.push(item);\n else\n decisive[1] = item;\n }\n }\n const representative = mode === \"root\" ? field.value.items.slice(0, 2) : [];\n const retained = [...new Set([...representative, ...decisive])];\n return [Object.freeze({\n label: field.label,\n value: Object.freeze({\n kind: \"list\" as const,\n items: Object.freeze(retained.map((item) => compactFact(item, decision))),\n }),\n })];\n }\n return [Object.freeze({ label: field.label, value: compactFact(field.value, decision) })];\n })),\n });\n }\n };\n return Object.freeze(entries.map((entry) => entry.explanationRetention.state === \"retained\"\n ? Object.freeze({\n ...entry,\n explanationRetention: Object.freeze({\n state: \"retained\" as const,\n value: compactFact(entry.explanationRetention.value, entry.decision),\n }),\n })\n : entry));\n}\nfunction invalidDocument(message: string): AssertionsProducerError {\n return Object.freeze({ code: \"assertions-document-invalid\" as const, message });\n}\nfunction firstSchemaIssue(error: ParseResult.ParseError): string | undefined {\n try {\n const issue = ParseResult.ArrayFormatter.formatErrorSync(error)[0];\n if (issue === undefined)\n return undefined;\n const path = issue.path.length === 0 ? \"document\" : issue.path.map(String).join(\".\");\n const expected = issue.message.split(\", actual \", 1)[0] ?? issue.message;\n const message = expected.length <= 512\n ? expected\n : `${expected.slice(0, 511)}…`;\n return `${path}: ${message}`;\n }\n catch {\n return undefined;\n }\n}\nexport interface AssertionsDocumentBuilder<BlobRef> {\n /** Appends exactly one completed Assertion in declaration/display order. */\n readonly append: (entry: AssertionEntryInput<BlobRef>) => Either.Either<AssertionEntryId, AssertionsProducerError>;\n /**\n * Checks the writer-only exact document schema once and prevents subsequent\n * appends. Repeated calls return the same sealed document without running\n * an evaluator or minting another entry ID.\n */\n readonly seal: (input?: {\n readonly maximumBytes?: number;\n }) => Either.Either<AssertionsDocument<BlobRef>, AssertionsProducerError>;\n}\n/**\n * Assertion producers own normalization and ID allocation. This builder owns\n * neither Record paths nor blob streams: the later Attachment adapter supplies\n * Record's local builder, so an entry cannot borrow another Attachment's ref.\n */\nexport function createAssertionsDocumentBuilder<BlobRef, Encoded>(input: {\n readonly documentSchema: Schema.Schema<AssertionsDocument<BlobRef>, Encoded>;\n readonly entryIds: AssertionsEntryIdSource;\n}): AssertionsDocumentBuilder<BlobRef> {\n const entryIds = new Set<string>();\n const entries: AssertionEntry<BlobRef>[] = [];\n let sealed: AssertionsDocument<BlobRef> | undefined;\n const builder: AssertionsDocumentBuilder<BlobRef> = {\n append(entry: AssertionEntryInput<BlobRef>): Either.Either<AssertionEntryId, AssertionsProducerError> {\n if (sealed !== undefined) {\n return Either.left({ code: \"assertions-document-sealed\" });\n }\n const entryIdText = input.entryIds.next();\n const entryId = Schema.decodeUnknownEither(AssertionEntryIdSchema, AssertionsExactParseOptions)(entryIdText);\n if (Either.isLeft(entryId)) {\n return Either.left({\n code: \"assertion-entry-id-invalid\",\n entryId: entryIdText,\n });\n }\n if (entryIds.has(entryId.right)) {\n return Either.left({\n code: \"assertion-entry-id-duplicate\",\n entryId: entryIdText,\n });\n }\n entryIds.add(entryId.right);\n entries.push(Object.freeze({ entryId: entryId.right, ...entry }));\n return Either.right(entryId.right);\n },\n seal(sealInput: {\n readonly maximumBytes?: number;\n } = {}): Either.Either<AssertionsDocument<BlobRef>, AssertionsProducerError> {\n if (sealed !== undefined) {\n return Either.right(sealed);\n }\n const maximumBytes = sealInput.maximumBytes ?? MAX_ASSERTION_DOCUMENT_BYTES;\n if (!Number.isSafeInteger(maximumBytes) || maximumBytes <= 0 || maximumBytes > MAX_ASSERTION_DOCUMENT_BYTES) {\n return Either.left(invalidDocument(`Assertions framing has no positive entry budget within the ${MAX_ASSERTION_DOCUMENT_BYTES}-byte limit. ` +\n \"Reduce assertion source sites or assertion count and retry.\"));\n }\n let document: AssertionsDocument<BlobRef> = Object.freeze({\n entries: Object.freeze([...entries]),\n });\n if (!isAssertionsRawDataGraph(document)) {\n return Either.left(invalidDocument(\"Assertions could not be saved because an entry contains a cyclic or non-JSON value. \" +\n \"Upgrade NiceEval and retry; if this persists, report assertions-document-invalid.\"));\n }\n let documentBytes = encodedBytes(document);\n if (documentBytes > maximumBytes) {\n document = Object.freeze({ entries: compactEntries(document.entries, \"root\") });\n documentBytes = encodedBytes(document);\n }\n if (documentBytes > maximumBytes) {\n document = Object.freeze({ entries: compactEntries(document.entries, \"minimal\") });\n documentBytes = encodedBytes(document);\n }\n if (documentBytes > maximumBytes) {\n return Either.left(invalidDocument(`Assertions could not be saved after diagnostic compaction because entry framing is ` +\n `${documentBytes} bytes; ${maximumBytes} bytes remain after source sites within the ` +\n `${MAX_ASSERTION_DOCUMENT_BYTES}-byte limit. Large source and evidence snapshots are already ` +\n \"stored as blobs; reduce assertion count or matcher/display identity and retry.\"));\n }\n const encoded = Schema.encodeUnknownEither(input.documentSchema, AssertionsExactParseOptions)(document);\n if (Either.isLeft(encoded)) {\n const issue = firstSchemaIssue(encoded.left);\n return Either.left(invalidDocument(`Assertions could not be saved${issue === undefined ? \"\" : ` because ${issue}`}. ` +\n \"Upgrade NiceEval and retry; if this persists, report assertions-document-invalid.\"));\n }\n sealed = document;\n return Either.right(document);\n },\n };\n return Object.freeze(builder);\n}\n"]}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { Either, Schema } from "effect";
|
|
2
|
-
import type { AssertionDisplay, AssertionEntryId,
|
|
2
|
+
import type { AssertionDisplay, AssertionEntryId, AssertionCriterionRecord, AssertionMaterials, AssertionEvaluation, AssertionDecision, AssertionDecisionPolicy, ScoreContribution, ExplanationRetention, AssertionsDocument } from "./model.cjs";
|
|
3
3
|
export interface AssertionEntryInput<BlobRef> {
|
|
4
4
|
readonly display: AssertionDisplay;
|
|
5
|
-
readonly criterion:
|
|
6
|
-
readonly
|
|
7
|
-
readonly
|
|
8
|
-
readonly
|
|
9
|
-
readonly
|
|
10
|
-
readonly
|
|
5
|
+
readonly criterion: AssertionCriterionRecord;
|
|
6
|
+
readonly materials: AssertionMaterials<BlobRef>;
|
|
7
|
+
readonly evaluation: AssertionEvaluation;
|
|
8
|
+
readonly decision: AssertionDecision;
|
|
9
|
+
readonly policy: AssertionDecisionPolicy;
|
|
10
|
+
readonly contribution: ScoreContribution;
|
|
11
|
+
readonly explanationRetention: ExplanationRetention;
|
|
11
12
|
}
|
|
12
13
|
export interface AssertionsEntryIdSource {
|
|
13
14
|
/** Must return a fresh `ae_[a-z0-9]{20}` candidate for this Attachment. */
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { Either, Schema } from "effect";
|
|
2
|
-
import type { AssertionDisplay, AssertionEntryId,
|
|
2
|
+
import type { AssertionDisplay, AssertionEntryId, AssertionCriterionRecord, AssertionMaterials, AssertionEvaluation, AssertionDecision, AssertionDecisionPolicy, ScoreContribution, ExplanationRetention, AssertionsDocument } from "./model.mjs";
|
|
3
3
|
export interface AssertionEntryInput<BlobRef> {
|
|
4
4
|
readonly display: AssertionDisplay;
|
|
5
|
-
readonly criterion:
|
|
6
|
-
readonly
|
|
7
|
-
readonly
|
|
8
|
-
readonly
|
|
9
|
-
readonly
|
|
10
|
-
readonly
|
|
5
|
+
readonly criterion: AssertionCriterionRecord;
|
|
6
|
+
readonly materials: AssertionMaterials<BlobRef>;
|
|
7
|
+
readonly evaluation: AssertionEvaluation;
|
|
8
|
+
readonly decision: AssertionDecision;
|
|
9
|
+
readonly policy: AssertionDecisionPolicy;
|
|
10
|
+
readonly contribution: ScoreContribution;
|
|
11
|
+
readonly explanationRetention: ExplanationRetention;
|
|
11
12
|
}
|
|
12
13
|
export interface AssertionsEntryIdSource {
|
|
13
14
|
/** Must return a fresh `ae_[a-z0-9]{20}` candidate for this Attachment. */
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { Either, Schema } from "effect";
|
|
2
|
-
import type { AssertionDisplay, AssertionEntryId,
|
|
2
|
+
import type { AssertionDisplay, AssertionEntryId, AssertionCriterionRecord, AssertionMaterials, AssertionEvaluation, AssertionDecision, AssertionDecisionPolicy, ScoreContribution, ExplanationRetention, AssertionsDocument } from "./model.js";
|
|
3
3
|
export interface AssertionEntryInput<BlobRef> {
|
|
4
4
|
readonly display: AssertionDisplay;
|
|
5
|
-
readonly criterion:
|
|
6
|
-
readonly
|
|
7
|
-
readonly
|
|
8
|
-
readonly
|
|
9
|
-
readonly
|
|
10
|
-
readonly
|
|
5
|
+
readonly criterion: AssertionCriterionRecord;
|
|
6
|
+
readonly materials: AssertionMaterials<BlobRef>;
|
|
7
|
+
readonly evaluation: AssertionEvaluation;
|
|
8
|
+
readonly decision: AssertionDecision;
|
|
9
|
+
readonly policy: AssertionDecisionPolicy;
|
|
10
|
+
readonly contribution: ScoreContribution;
|
|
11
|
+
readonly explanationRetention: ExplanationRetention;
|
|
11
12
|
}
|
|
12
13
|
export interface AssertionsEntryIdSource {
|
|
13
14
|
/** Must return a fresh `ae_[a-z0-9]{20}` candidate for this Attachment. */
|
|
@@ -540,7 +540,7 @@ class AssertionsRuntimeImplementation {
|
|
|
540
540
|
if (managed.kind === "boolean") {
|
|
541
541
|
const entry = this.createEntry({
|
|
542
542
|
kind: "boolean",
|
|
543
|
-
criterion: Object.freeze({ kind: "value-match", subject: "explicit-value" }),
|
|
543
|
+
criterion: Object.freeze({ kind: "value-match", subject: "explicit-value", matcher: Object.freeze({ state: "declared", name: managed.name }) }),
|
|
544
544
|
subject: captured.material,
|
|
545
545
|
evidence: Object.freeze([]),
|
|
546
546
|
coverage: captured.coverage,
|
|
@@ -551,7 +551,7 @@ class AssertionsRuntimeImplementation {
|
|
|
551
551
|
}
|
|
552
552
|
const entry = this.createEntry({
|
|
553
553
|
kind: "measurement",
|
|
554
|
-
criterion: Object.freeze({ kind: "value-match", subject: "explicit-value" }),
|
|
554
|
+
criterion: Object.freeze({ kind: "value-match", subject: "explicit-value", matcher: Object.freeze({ state: "declared", name: managed.name }) }),
|
|
555
555
|
subject: captured.material,
|
|
556
556
|
evidence: Object.freeze([]),
|
|
557
557
|
coverage: captured.coverage,
|
|
@@ -879,17 +879,20 @@ class AssertionsRuntimeImplementation {
|
|
|
879
879
|
state: "matched",
|
|
880
880
|
value: evaluation.value,
|
|
881
881
|
...(evaluation.diagnostic === undefined ? {} : { diagnostic: evaluation.diagnostic }),
|
|
882
|
+
...(evaluation.receipt === undefined ? {} : { receipt: evaluation.receipt }),
|
|
882
883
|
});
|
|
883
884
|
case "mismatched":
|
|
884
885
|
return Object.freeze({
|
|
885
886
|
state: "mismatched",
|
|
886
887
|
...(evaluation.diagnostic === undefined ? {} : { diagnostic: evaluation.diagnostic }),
|
|
888
|
+
...(evaluation.receipt === undefined ? {} : { receipt: evaluation.receipt }),
|
|
887
889
|
});
|
|
888
890
|
case "unavailable":
|
|
889
891
|
return Object.freeze({
|
|
890
892
|
state: "unavailable",
|
|
891
893
|
reason: evaluation.reason,
|
|
892
894
|
...(evaluation.diagnostic === undefined ? {} : { diagnostic: evaluation.diagnostic }),
|
|
895
|
+
...(evaluation.receipt === undefined ? {} : { receipt: evaluation.receipt }),
|
|
893
896
|
});
|
|
894
897
|
case "not-applicable":
|
|
895
898
|
return Object.freeze({
|
|
@@ -902,13 +905,21 @@ class AssertionsRuntimeImplementation {
|
|
|
902
905
|
switch (evaluation.state) {
|
|
903
906
|
case "measured":
|
|
904
907
|
assertUnitInterval(evaluation.value, "measurement Assertion result");
|
|
905
|
-
return Object.freeze({
|
|
908
|
+
return Object.freeze({
|
|
909
|
+
state: "measured",
|
|
910
|
+
value: evaluation.value,
|
|
911
|
+
...(evaluation.detail === undefined ? {} : { explanation: evaluation.detail }),
|
|
912
|
+
});
|
|
906
913
|
case "unavailable":
|
|
907
|
-
return Object.freeze({
|
|
914
|
+
return Object.freeze({
|
|
915
|
+
state: "unavailable",
|
|
916
|
+
reason: evaluation.reason,
|
|
917
|
+
...(evaluation.detail === undefined ? {} : { explanation: evaluation.detail }),
|
|
918
|
+
});
|
|
908
919
|
case "not-applicable":
|
|
909
|
-
return Object.freeze({ state: "not-applicable" });
|
|
920
|
+
return Object.freeze({ state: "not-applicable", ...(evaluation.detail === undefined ? {} : { explanation: evaluation.detail }) });
|
|
910
921
|
case "errored":
|
|
911
|
-
return Object.freeze({ state: "errored" });
|
|
922
|
+
return Object.freeze({ state: "errored", ...(evaluation.detail === undefined ? {} : { explanation: evaluation.detail }) });
|
|
912
923
|
}
|
|
913
924
|
}
|
|
914
925
|
/** Evaluates an entry at most once even when multiple Effect fibers await it. */
|
|
@@ -1014,6 +1025,28 @@ class AssertionsRuntimeImplementation {
|
|
|
1014
1025
|
coverage: material.coverage,
|
|
1015
1026
|
limitations: material.limitations,
|
|
1016
1027
|
result: this.resultFor(entry, settlement),
|
|
1028
|
+
policy: Object.freeze({
|
|
1029
|
+
requirement: entry.optionalConfigured ? "optional" : "required",
|
|
1030
|
+
condition: entry.kind === "measurement" && entry.threshold !== undefined
|
|
1031
|
+
? Object.freeze({ kind: "at-least", threshold: entry.threshold })
|
|
1032
|
+
: entry.kind === "boolean"
|
|
1033
|
+
? Object.freeze({ kind: "boolean", expected: true })
|
|
1034
|
+
: Object.freeze({ kind: "record-only" }),
|
|
1035
|
+
}),
|
|
1036
|
+
observed: entry.kind === "boolean"
|
|
1037
|
+
? Object.freeze({
|
|
1038
|
+
kind: "boolean",
|
|
1039
|
+
outcome: settlement.state === "measured" || settlement.state === "interrupted"
|
|
1040
|
+
? "errored"
|
|
1041
|
+
: settlement.state,
|
|
1042
|
+
})
|
|
1043
|
+
: entry.kind === "measurement"
|
|
1044
|
+
? settlement.state === "measured"
|
|
1045
|
+
? Object.freeze({ kind: "measurement", state: "available", value: settlement.value })
|
|
1046
|
+
: Object.freeze({ kind: "measurement", state: "unavailable" })
|
|
1047
|
+
: settlement.state === "measured"
|
|
1048
|
+
? Object.freeze({ kind: "direct-score", state: "available", value: settlement.value })
|
|
1049
|
+
: Object.freeze({ kind: "direct-score", state: "unavailable" }),
|
|
1017
1050
|
});
|
|
1018
1051
|
}
|
|
1019
1052
|
materialFor(entry, settlement) {
|
|
@@ -1035,8 +1068,9 @@ class AssertionsRuntimeImplementation {
|
|
|
1035
1068
|
});
|
|
1036
1069
|
}
|
|
1037
1070
|
resultFor(entry, settlement) {
|
|
1038
|
-
const capturedDiagnostic = captureMatchDiagnostic(settlement.diagnostic);
|
|
1071
|
+
const capturedDiagnostic = settlement.explanation ?? captureMatchDiagnostic(settlement.diagnostic);
|
|
1039
1072
|
const diagnostic = capturedDiagnostic === undefined ? {} : { diagnostic: capturedDiagnostic };
|
|
1073
|
+
const receipt = settlement.receipt === undefined ? {} : { receipt: settlement.receipt };
|
|
1040
1074
|
switch (settlement.state) {
|
|
1041
1075
|
case "matched":
|
|
1042
1076
|
return Object.freeze({
|
|
@@ -1044,6 +1078,7 @@ class AssertionsRuntimeImplementation {
|
|
|
1044
1078
|
gate: this.gateForMatched(entry),
|
|
1045
1079
|
score: this.availableScoreFor(entry, 1),
|
|
1046
1080
|
...diagnostic,
|
|
1081
|
+
...receipt,
|
|
1047
1082
|
});
|
|
1048
1083
|
case "mismatched":
|
|
1049
1084
|
return Object.freeze({
|
|
@@ -1052,6 +1087,7 @@ class AssertionsRuntimeImplementation {
|
|
|
1052
1087
|
gate: this.gateForMismatched(entry),
|
|
1053
1088
|
score: this.availableScoreFor(entry, 0),
|
|
1054
1089
|
...diagnostic,
|
|
1090
|
+
...receipt,
|
|
1055
1091
|
});
|
|
1056
1092
|
case "measured": {
|
|
1057
1093
|
const matched = entry.threshold === undefined || settlement.value >= entry.threshold;
|
|
@@ -1061,6 +1097,7 @@ class AssertionsRuntimeImplementation {
|
|
|
1061
1097
|
gate: this.gateForMatched(entry),
|
|
1062
1098
|
score: this.availableScoreFor(entry, settlement.value),
|
|
1063
1099
|
...diagnostic,
|
|
1100
|
+
...receipt,
|
|
1064
1101
|
})
|
|
1065
1102
|
: Object.freeze({
|
|
1066
1103
|
state: "mismatched",
|
|
@@ -1068,6 +1105,7 @@ class AssertionsRuntimeImplementation {
|
|
|
1068
1105
|
gate: this.gateForMismatched(entry),
|
|
1069
1106
|
score: this.availableScoreFor(entry, settlement.value),
|
|
1070
1107
|
...diagnostic,
|
|
1108
|
+
...receipt,
|
|
1071
1109
|
});
|
|
1072
1110
|
}
|
|
1073
1111
|
case "unavailable":
|
|
@@ -1077,6 +1115,7 @@ class AssertionsRuntimeImplementation {
|
|
|
1077
1115
|
gate: this.gateForUnavailable(entry),
|
|
1078
1116
|
score: this.incompleteScoreFor(entry, "source-unavailable"),
|
|
1079
1117
|
...diagnostic,
|
|
1118
|
+
...receipt,
|
|
1080
1119
|
});
|
|
1081
1120
|
case "not-applicable":
|
|
1082
1121
|
return Object.freeze({
|
|
@@ -1085,6 +1124,7 @@ class AssertionsRuntimeImplementation {
|
|
|
1085
1124
|
gate: this.gateForNotApplicable(entry),
|
|
1086
1125
|
score: this.incompleteScoreFor(entry, "not-applicable"),
|
|
1087
1126
|
...diagnostic,
|
|
1127
|
+
...receipt,
|
|
1088
1128
|
});
|
|
1089
1129
|
case "errored":
|
|
1090
1130
|
return Object.freeze({
|
|
@@ -1093,6 +1133,7 @@ class AssertionsRuntimeImplementation {
|
|
|
1093
1133
|
gate: this.gateForUnavailable(entry),
|
|
1094
1134
|
score: this.incompleteScoreFor(entry, "evaluation-errored"),
|
|
1095
1135
|
...diagnostic,
|
|
1136
|
+
...receipt,
|
|
1096
1137
|
});
|
|
1097
1138
|
case "interrupted":
|
|
1098
1139
|
return Object.freeze({
|
|
@@ -1101,6 +1142,7 @@ class AssertionsRuntimeImplementation {
|
|
|
1101
1142
|
gate: this.gateForUnavailable(entry),
|
|
1102
1143
|
score: this.incompleteScoreFor(entry, "evaluation-errored"),
|
|
1103
1144
|
...diagnostic,
|
|
1145
|
+
...receipt,
|
|
1104
1146
|
});
|
|
1105
1147
|
}
|
|
1106
1148
|
}
|