niceeval 0.15.1-canary.76 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INDEX.md +45 -40
- package/dist/adapter-execution-trace.cjs.map +1 -1
- package/dist/adapter-execution-trace.d.cts +26 -0
- package/dist/adapter-execution-trace.d.mts +26 -0
- package/dist/adapter-execution-trace.d.ts +26 -0
- package/dist/adapter-usage.cjs.map +1 -1
- package/dist/adapter-usage.d.cts +9 -0
- package/dist/adapter-usage.d.mts +9 -0
- package/dist/adapter-usage.d.ts +9 -0
- package/dist/adapter.cjs +19 -4
- package/dist/adapter.cjs.map +1 -1
- package/dist/adapter.d.cts +37 -12
- package/dist/adapter.d.mts +37 -12
- package/dist/adapter.d.ts +37 -12
- package/dist/agents/ai-sdk.cjs +3 -0
- package/dist/agents/ai-sdk.cjs.map +1 -1
- package/dist/agents/bub.cjs +3 -0
- package/dist/agents/bub.cjs.map +1 -1
- package/dist/agents/claude-code-native.cjs +28 -2
- package/dist/agents/claude-code-native.cjs.map +1 -1
- package/dist/agents/claude-code.cjs +3 -0
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/codex.cjs +3 -0
- package/dist/agents/codex.cjs.map +1 -1
- package/dist/agents/coding-cli-versions.cjs +9 -10
- package/dist/agents/coding-cli-versions.cjs.map +1 -1
- package/dist/agents/coding-cli-versions.d.cts +1 -1
- package/dist/agents/coding-cli-versions.d.mts +1 -1
- package/dist/agents/coding-cli-versions.d.ts +1 -1
- package/dist/agents/deepseek-harness.cjs +3 -0
- package/dist/agents/deepseek-harness.cjs.map +1 -1
- package/dist/agents/hermes.cjs +3 -0
- package/dist/agents/hermes.cjs.map +1 -1
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +3 -2
- package/dist/agents/index.d.mts +3 -2
- package/dist/agents/index.d.ts +3 -2
- package/dist/agents/omp.cjs +3 -0
- package/dist/agents/omp.cjs.map +1 -1
- package/dist/agents/openai-compat.cjs +6 -0
- package/dist/agents/openai-compat.cjs.map +1 -1
- package/dist/agents/openclaw.cjs +3 -0
- package/dist/agents/openclaw.cjs.map +1 -1
- package/dist/agents/opencode.cjs +3 -0
- package/dist/agents/opencode.cjs.map +1 -1
- package/dist/agents/sdk-streams.cjs +9 -0
- package/dist/agents/sdk-streams.cjs.map +1 -1
- package/dist/agents/ui-message-stream.cjs +3 -0
- package/dist/agents/ui-message-stream.cjs.map +1 -1
- package/dist/assertions/api.cjs.map +1 -1
- package/dist/assertions/api.d.cts +27 -5
- package/dist/assertions/api.d.mts +27 -5
- package/dist/assertions/api.d.ts +27 -5
- package/dist/assertions/collection.cjs +6 -0
- package/dist/assertions/collection.cjs.map +1 -1
- package/dist/assertions/collection.d.cts +4 -2
- package/dist/assertions/collection.d.mts +4 -2
- package/dist/assertions/collection.d.ts +4 -2
- package/dist/assertions/collection.js +12 -8
- package/dist/assertions/context-match.cjs +70 -0
- package/dist/assertions/context-match.cjs.map +1 -0
- package/dist/assertions/context-match.d.cts +107 -0
- package/dist/assertions/context-match.d.mts +107 -0
- package/dist/assertions/context-match.d.ts +107 -0
- package/dist/assertions/context-match.js +12 -0
- package/dist/assertions/context-match.js.map +1 -0
- package/dist/assertions/full-content.cjs +109 -0
- package/dist/assertions/full-content.cjs.map +1 -0
- package/dist/assertions/full-content.d.cts +6 -0
- package/dist/assertions/full-content.d.mts +6 -0
- package/dist/assertions/full-content.d.ts +6 -0
- package/dist/assertions/full-content.js +12 -0
- package/dist/assertions/full-content.js.map +1 -0
- package/dist/assertions/judge-presets.cjs +2 -34
- package/dist/assertions/judge-presets.cjs.map +1 -1
- package/dist/assertions/judge-presets.d.cts +6 -9
- package/dist/assertions/judge-presets.d.mts +6 -9
- package/dist/assertions/judge-presets.d.ts +6 -9
- package/dist/assertions/judge-presets.js +8 -8
- package/dist/assertions/judge.cjs +107 -29
- package/dist/assertions/judge.cjs.map +1 -1
- package/dist/assertions/judge.d.cts +2 -0
- package/dist/assertions/judge.d.mts +2 -0
- package/dist/assertions/judge.d.ts +2 -0
- package/dist/assertions/match.cjs +244 -5
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +43 -3
- package/dist/assertions/match.d.mts +43 -3
- package/dist/assertions/match.d.ts +43 -3
- package/dist/assertions/match.js +88 -78
- package/dist/assertions/material.cjs +520 -0
- package/dist/assertions/material.cjs.map +1 -0
- package/dist/assertions/material.d.cts +56 -0
- package/dist/assertions/material.d.mts +56 -0
- package/dist/assertions/material.d.ts +56 -0
- package/dist/assertions/material.js +20 -0
- package/dist/assertions/material.js.map +1 -0
- package/dist/assertions/record/attachment.cjs +5 -2
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/codec.cjs +2 -1
- package/dist/assertions/record/codec.cjs.map +1 -1
- package/dist/assertions/record/model.cjs.map +1 -1
- package/dist/assertions/record/model.d.cts +6 -1
- package/dist/assertions/record/model.d.mts +6 -1
- package/dist/assertions/record/model.d.ts +6 -1
- package/dist/assertions/runtime.cjs +207 -14
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/assertions/runtime.d.cts +9 -0
- package/dist/assertions/runtime.d.mts +9 -0
- package/dist/assertions/runtime.d.ts +9 -0
- package/dist/assertions/runtime.js +14 -8
- package/dist/assertions/score-match-audit.cjs +18 -8
- package/dist/assertions/score-match-audit.cjs.map +1 -1
- package/dist/assertions/score-match-gateway.cjs +83 -25
- package/dist/assertions/score-match-gateway.cjs.map +1 -1
- package/dist/assertions/score-match-gateway.d.cts +2 -0
- package/dist/assertions/score-match-gateway.d.mts +2 -0
- package/dist/assertions/score-match-gateway.d.ts +2 -0
- package/dist/assertions/value-composition.test-d.cjs +77 -0
- package/dist/assertions/value-composition.test-d.cjs.map +1 -0
- package/dist/assertions/value-composition.test-d.d.cts +1 -0
- package/dist/assertions/value-composition.test-d.d.mts +1 -0
- package/dist/assertions/value-composition.test-d.d.ts +1 -0
- package/dist/assertions/value-composition.test-d.js +4 -0
- package/dist/assertions/value-composition.test-d.js.map +1 -0
- package/dist/context/assert-first.cjs +207 -213
- package/dist/context/assert-first.cjs.map +1 -1
- package/dist/context/assert-first.d.cts +49 -23
- package/dist/context/assert-first.d.mts +49 -23
- package/dist/context/assert-first.d.ts +49 -23
- package/dist/context/session.cjs +111 -9
- package/dist/context/session.cjs.map +1 -1
- package/dist/context/session.d.cts +18 -0
- package/dist/context/session.d.mts +18 -0
- package/dist/context/session.d.ts +18 -0
- package/dist/define.cjs +17 -1
- package/dist/define.cjs.map +1 -1
- package/dist/eval/cli/contribution.cjs +2 -0
- package/dist/eval/cli/contribution.cjs.map +1 -1
- package/dist/eval/host/index.cjs +2 -0
- package/dist/eval/host/index.cjs.map +1 -1
- package/dist/eval/record/evaluation.cjs +3 -0
- package/dist/eval/record/evaluation.cjs.map +1 -1
- package/dist/eval/record/membership-provenance.d.cts +15 -15
- package/dist/eval/record/membership-provenance.d.mts +15 -15
- package/dist/eval/record/membership-provenance.d.ts +15 -15
- package/dist/eval/record/score.cjs +7 -0
- package/dist/eval/record/score.cjs.map +1 -1
- package/dist/eval/record/sealed-assertion.cjs +3 -0
- package/dist/eval/record/sealed-assertion.cjs.map +1 -1
- package/dist/eval/record/verdict.cjs +7 -0
- package/dist/eval/record/verdict.cjs.map +1 -1
- package/dist/expect/index.cjs +8 -2
- package/dist/expect/index.cjs.map +1 -1
- package/dist/expect/index.d.cts +9 -4
- package/dist/expect/index.d.mts +9 -4
- package/dist/expect/index.d.ts +9 -4
- package/dist/expect/index.js +72 -62
- package/dist/expect/index.mjs +72 -62
- package/dist/experiment/host/cli/contribution.cjs +37 -23
- package/dist/experiment/host/cli/contribution.cjs.map +1 -1
- package/dist/experiment/host/cli/contribution.d.cts +9 -1
- package/dist/experiment/host/cli/contribution.d.mts +9 -1
- package/dist/experiment/host/cli/contribution.d.ts +9 -1
- package/dist/experiment/host/current.cjs +74 -0
- package/dist/experiment/host/current.cjs.map +1 -0
- package/dist/experiment/host/current.d.cts +33 -0
- package/dist/experiment/host/current.d.mts +33 -0
- package/dist/experiment/host/current.d.ts +33 -0
- package/dist/experiment/host/current.js +10 -0
- package/dist/experiment/host/current.js.map +1 -0
- package/dist/experiment/host/index.cjs +17 -174
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/experiment/host/index.d.cts +8 -54
- package/dist/experiment/host/index.d.mts +8 -54
- package/dist/experiment/host/index.d.ts +8 -54
- package/dist/experiment/host/operations.cjs +33 -10
- package/dist/experiment/host/operations.cjs.map +1 -1
- package/dist/experiment/host/operations.d.cts +29 -1
- package/dist/experiment/host/operations.d.mts +29 -1
- package/dist/experiment/host/operations.d.ts +29 -1
- package/dist/experiment/host/operations.js +6 -4
- package/dist/experiment/host/requirements.cjs +3 -0
- package/dist/experiment/host/requirements.cjs.map +1 -0
- package/dist/experiment/host/requirements.d.cts +3 -0
- package/dist/experiment/host/requirements.d.mts +3 -0
- package/dist/experiment/host/requirements.d.ts +3 -0
- package/dist/experiment/host/requirements.js +4 -0
- package/dist/experiment/host/requirements.js.map +1 -0
- package/dist/experiment/host/runtime.cjs +179 -0
- package/dist/experiment/host/runtime.cjs.map +1 -0
- package/dist/experiment/host/runtime.d.cts +79 -0
- package/dist/experiment/host/runtime.d.mts +79 -0
- package/dist/experiment/host/runtime.d.ts +79 -0
- package/dist/experiment/host/runtime.js +6 -0
- package/dist/experiment/host/runtime.js.map +1 -0
- package/dist/experiment/host/types.cjs.map +1 -1
- package/dist/experiment/host/types.d.cts +17 -16
- package/dist/experiment/host/types.d.mts +17 -16
- package/dist/experiment/host/types.d.ts +17 -16
- package/dist/fresh-import.cjs +2 -1
- package/dist/fresh-import.cjs.map +1 -1
- package/dist/index.cjs +4 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -6
- package/dist/index.d.mts +12 -6
- package/dist/index.d.ts +12 -6
- package/dist/index.js +32 -30
- package/dist/index.mjs +32 -30
- package/dist/inspection/artifacts.cjs +83 -54
- package/dist/inspection/artifacts.cjs.map +1 -1
- package/dist/inspection/artifacts.d.cts +8 -0
- package/dist/inspection/artifacts.d.mts +8 -0
- package/dist/inspection/artifacts.d.ts +8 -0
- package/dist/inspection/artifacts.js +2 -0
- package/dist/inspection/assertions.cjs +4 -1
- package/dist/inspection/assertions.cjs.map +1 -1
- package/dist/inspection/cli/contribution.cjs +27 -4
- package/dist/inspection/cli/contribution.cjs.map +1 -1
- package/dist/inspection/cli/contribution.d.cts +2 -1
- package/dist/inspection/cli/contribution.d.mts +2 -1
- package/dist/inspection/cli/contribution.d.ts +2 -1
- package/dist/inspection/execution-traces.cjs +114 -8
- package/dist/inspection/execution-traces.cjs.map +1 -1
- package/dist/inspection/execution-traces.d.cts +38 -0
- package/dist/inspection/execution-traces.d.mts +38 -0
- package/dist/inspection/execution-traces.d.ts +38 -0
- package/dist/inspection/facts.cjs +12 -0
- package/dist/inspection/facts.cjs.map +1 -1
- package/dist/inspection/limits.cjs +5 -1
- package/dist/inspection/limits.cjs.map +1 -1
- package/dist/inspection/limits.d.cts +4 -0
- package/dist/inspection/limits.d.mts +4 -0
- package/dist/inspection/limits.d.ts +4 -0
- package/dist/inspection/limits.js +6 -2
- package/dist/inspection/overview.cjs +74 -33
- package/dist/inspection/overview.cjs.map +1 -1
- package/dist/inspection/overview.d.cts +19 -1
- package/dist/inspection/overview.d.mts +19 -1
- package/dist/inspection/overview.d.ts +19 -1
- package/dist/inspection/overview.js +4 -2
- package/dist/inspection/project-input.cjs +9 -0
- package/dist/inspection/project-input.cjs.map +1 -0
- package/dist/inspection/project-input.d.cts +20 -0
- package/dist/inspection/project-input.d.mts +20 -0
- package/dist/inspection/project-input.d.ts +20 -0
- package/dist/inspection/project-input.js +8 -0
- package/dist/inspection/project-input.js.map +1 -0
- package/dist/inspection/project-result.cjs +60 -0
- package/dist/inspection/project-result.cjs.map +1 -0
- package/dist/inspection/project-result.d.cts +1264 -0
- package/dist/inspection/project-result.d.mts +1264 -0
- package/dist/inspection/project-result.d.ts +1264 -0
- package/dist/inspection/project-result.js +10 -0
- package/dist/inspection/project-result.js.map +1 -0
- package/dist/inspection/project-source.cjs +109 -0
- package/dist/inspection/project-source.cjs.map +1 -0
- package/dist/inspection/project-source.d.cts +10 -0
- package/dist/inspection/project-source.d.mts +10 -0
- package/dist/inspection/project-source.d.ts +10 -0
- package/dist/inspection/project-source.js +6 -0
- package/dist/inspection/project-source.js.map +1 -0
- package/dist/inspection/project.cjs +100 -0
- package/dist/inspection/project.cjs.map +1 -0
- package/dist/inspection/project.d.cts +3 -0
- package/dist/inspection/project.d.mts +3 -0
- package/dist/inspection/project.d.ts +3 -0
- package/dist/inspection/project.js +6 -0
- package/dist/inspection/project.js.map +1 -0
- package/dist/inspection/protocol.cjs +19 -9
- package/dist/inspection/protocol.cjs.map +1 -1
- package/dist/inspection/protocol.d.cts +5506 -38189
- package/dist/inspection/protocol.d.mts +5506 -38189
- package/dist/inspection/protocol.d.ts +5506 -38189
- package/dist/inspection/public.mjs +896 -84
- package/dist/inspection/query.cjs +2 -0
- package/dist/inspection/query.cjs.map +1 -1
- package/dist/inspection/results.cjs +234 -29
- package/dist/inspection/results.cjs.map +1 -1
- package/dist/inspection/results.d.cts +870 -13
- package/dist/inspection/results.d.mts +870 -13
- package/dist/inspection/results.d.ts +870 -13
- package/dist/inspection/results.js +36 -34
- package/dist/inspection/select.cjs +126 -14
- package/dist/inspection/select.cjs.map +1 -1
- package/dist/inspection/select.d.cts +1 -1
- package/dist/inspection/select.d.mts +1 -1
- package/dist/inspection/select.d.ts +1 -1
- package/dist/inspection/source.cjs +4 -0
- package/dist/inspection/source.cjs.map +1 -1
- package/dist/inspection/sources.cjs +5 -0
- package/dist/inspection/sources.cjs.map +1 -1
- package/dist/inspection/trace.cjs +82 -84
- package/dist/inspection/trace.cjs.map +1 -1
- package/dist/inspection/trace.d.cts +7 -2
- package/dist/inspection/trace.d.mts +7 -2
- package/dist/inspection/trace.d.ts +7 -2
- package/dist/model-slots.cjs +35 -0
- package/dist/model-slots.cjs.map +1 -0
- package/dist/model-slots.d.cts +19 -0
- package/dist/model-slots.d.mts +19 -0
- package/dist/model-slots.d.ts +19 -0
- package/dist/model-slots.js +8 -0
- package/dist/model-slots.js.map +1 -0
- package/dist/o11y/adapter-call-price.cjs +4 -0
- package/dist/o11y/adapter-call-price.cjs.map +1 -1
- package/dist/o11y/adapter-call-price.d.cts +24 -0
- package/dist/o11y/adapter-call-price.d.mts +24 -0
- package/dist/o11y/adapter-call-price.d.ts +24 -0
- package/dist/o11y/adapter-call-price.js +6 -2
- package/dist/o11y/adapter-usage-projection.cjs +158 -0
- package/dist/o11y/adapter-usage-projection.cjs.map +1 -0
- package/dist/o11y/adapter-usage-projection.d.cts +141 -0
- package/dist/o11y/adapter-usage-projection.d.mts +141 -0
- package/dist/o11y/adapter-usage-projection.d.ts +141 -0
- package/dist/o11y/adapter-usage-projection.js +20 -0
- package/dist/o11y/adapter-usage-projection.js.map +1 -0
- package/dist/o11y/eval-usage.cjs +149 -0
- package/dist/o11y/eval-usage.cjs.map +1 -0
- package/dist/o11y/eval-usage.d.cts +46 -0
- package/dist/o11y/eval-usage.d.mts +46 -0
- package/dist/o11y/eval-usage.d.ts +46 -0
- package/dist/o11y/eval-usage.js +8 -0
- package/dist/o11y/eval-usage.js.map +1 -0
- package/dist/o11y/judge-call-price.cjs +62 -0
- package/dist/o11y/judge-call-price.cjs.map +1 -0
- package/dist/o11y/judge-call-price.d.cts +3 -0
- package/dist/o11y/judge-call-price.d.mts +3 -0
- package/dist/o11y/judge-call-price.d.ts +3 -0
- package/dist/o11y/judge-call-price.js +6 -0
- package/dist/o11y/judge-call-price.js.map +1 -0
- package/dist/o11y/judge-usage-projection.cjs +134 -0
- package/dist/o11y/judge-usage-projection.cjs.map +1 -0
- package/dist/o11y/judge-usage-projection.d.cts +18 -0
- package/dist/o11y/judge-usage-projection.d.mts +18 -0
- package/dist/o11y/judge-usage-projection.d.ts +18 -0
- package/dist/o11y/judge-usage-projection.js +20 -0
- package/dist/o11y/judge-usage-projection.js.map +1 -0
- package/dist/o11y/judge-usage-receipt.cjs +135 -0
- package/dist/o11y/judge-usage-receipt.cjs.map +1 -0
- package/dist/o11y/judge-usage-receipt.d.cts +5 -0
- package/dist/o11y/judge-usage-receipt.d.mts +5 -0
- package/dist/o11y/judge-usage-receipt.d.ts +5 -0
- package/dist/o11y/judge-usage-receipt.js +6 -0
- package/dist/o11y/judge-usage-receipt.js.map +1 -0
- package/dist/o11y/judge-usage.cjs +171 -0
- package/dist/o11y/judge-usage.cjs.map +1 -0
- package/dist/o11y/judge-usage.d.cts +35 -0
- package/dist/o11y/judge-usage.d.mts +35 -0
- package/dist/o11y/judge-usage.d.ts +35 -0
- package/dist/o11y/judge-usage.js +6 -0
- package/dist/o11y/judge-usage.js.map +1 -0
- package/dist/plugin/contracts.cjs +2 -0
- package/dist/plugin/contracts.cjs.map +1 -1
- package/dist/plugin/link.cjs +7 -0
- package/dist/plugin/link.cjs.map +1 -1
- package/dist/record/attachment/protocol.cjs +8 -6
- package/dist/record/attachment/protocol.cjs.map +1 -1
- package/dist/record/attachment/protocol.d.cts +10 -0
- package/dist/record/attachment/protocol.d.mts +10 -0
- package/dist/record/attachment/protocol.d.ts +10 -0
- package/dist/record/attachment/protocol.js +38 -36
- package/dist/record/codec/seal-manifest.d.cts +3 -3
- package/dist/record/codec/seal-manifest.d.mts +3 -3
- package/dist/record/codec/seal-manifest.d.ts +3 -3
- package/dist/record/family/adapter-usage/definition.d.cts +1 -0
- package/dist/record/family/adapter-usage/definition.d.mts +1 -0
- package/dist/record/family/adapter-usage/definition.d.ts +1 -0
- package/dist/record/family/adapter-usage/persistence.cjs +1 -1
- package/dist/record/family/adapter-usage/persistence.cjs.map +1 -1
- package/dist/record/family/adapter-usage/persistence.d.cts +2 -1
- package/dist/record/family/adapter-usage/persistence.d.mts +2 -1
- package/dist/record/family/adapter-usage/persistence.d.ts +2 -1
- package/dist/record/family/adapter-usage/schema.cjs +21 -2
- package/dist/record/family/adapter-usage/schema.cjs.map +1 -1
- package/dist/record/family/adapter-usage/schema.d.cts +85 -0
- package/dist/record/family/adapter-usage/schema.d.mts +85 -0
- package/dist/record/family/adapter-usage/schema.d.ts +85 -0
- package/dist/record/family/adapter-usage/schema.js +18 -12
- package/dist/record/family/catalog.cjs +31 -27
- package/dist/record/family/catalog.cjs.map +1 -1
- package/dist/record/family/catalog.d.cts +94 -3
- package/dist/record/family/catalog.d.mts +94 -3
- package/dist/record/family/catalog.d.ts +94 -3
- package/dist/record/family/current.cjs +45 -42
- package/dist/record/family/current.cjs.map +1 -1
- package/dist/record/family/current.d.cts +240 -1
- package/dist/record/family/current.d.mts +240 -1
- package/dist/record/family/current.d.ts +240 -1
- package/dist/record/family/execution-traces/definition.d.cts +26 -0
- package/dist/record/family/execution-traces/definition.d.mts +26 -0
- package/dist/record/family/execution-traces/definition.d.ts +26 -0
- package/dist/record/family/execution-traces/definition.js +20 -14
- package/dist/record/family/execution-traces/schema.cjs +57 -1
- package/dist/record/family/execution-traces/schema.cjs.map +1 -1
- package/dist/record/family/execution-traces/schema.d.cts +114 -0
- package/dist/record/family/execution-traces/schema.d.mts +114 -0
- package/dist/record/family/execution-traces/schema.d.ts +114 -0
- package/dist/record/family/execution-traces/schema.js +18 -12
- package/dist/record/family/judge-usage/definition.cjs +12 -0
- package/dist/record/family/judge-usage/definition.cjs.map +1 -0
- package/dist/record/family/judge-usage/definition.d.cts +91 -0
- package/dist/record/family/judge-usage/definition.d.mts +91 -0
- package/dist/record/family/judge-usage/definition.d.ts +91 -0
- package/dist/record/family/judge-usage/definition.js +6 -0
- package/dist/record/family/judge-usage/definition.js.map +1 -0
- package/dist/record/family/judge-usage/persistence.cjs +10 -0
- package/dist/record/family/judge-usage/persistence.cjs.map +1 -0
- package/dist/record/family/judge-usage/persistence.d.cts +91 -0
- package/dist/record/family/judge-usage/persistence.d.mts +91 -0
- package/dist/record/family/judge-usage/persistence.d.ts +91 -0
- package/dist/record/family/judge-usage/persistence.js +6 -0
- package/dist/record/family/judge-usage/persistence.js.map +1 -0
- package/dist/record/family/judge-usage/schema.cjs +307 -0
- package/dist/record/family/judge-usage/schema.cjs.map +1 -0
- package/dist/record/family/judge-usage/schema.d.cts +351 -0
- package/dist/record/family/judge-usage/schema.d.mts +351 -0
- package/dist/record/family/judge-usage/schema.d.ts +351 -0
- package/dist/record/family/judge-usage/schema.js +18 -0
- package/dist/record/family/judge-usage/schema.js.map +1 -0
- package/dist/record/host/sqlite-host.cjs +55 -9
- package/dist/record/host/sqlite-host.cjs.map +1 -1
- package/dist/record/host/types.cjs.map +1 -1
- package/dist/record/host/types.d.cts +7 -0
- package/dist/record/host/types.d.mts +7 -0
- package/dist/record/host/types.d.ts +7 -0
- package/dist/record/model/run-context.cjs +7 -1
- package/dist/record/model/run-context.cjs.map +1 -1
- package/dist/record/model/run-context.d.cts +4 -0
- package/dist/record/model/run-context.d.mts +4 -0
- package/dist/record/model/run-context.d.ts +4 -0
- package/dist/record/model/seal-manifest.d.cts +1 -1
- package/dist/record/model/seal-manifest.d.mts +1 -1
- package/dist/record/model/seal-manifest.d.ts +1 -1
- package/dist/record/sqlite/client.cjs +18 -5
- package/dist/record/sqlite/client.cjs.map +1 -1
- package/dist/record/sqlite/client.d.cts +1 -1
- package/dist/record/sqlite/client.d.mts +1 -1
- package/dist/record/sqlite/client.d.ts +1 -1
- package/dist/record/sqlite/project-state-database.cjs +29 -8
- package/dist/record/sqlite/project-state-database.cjs.map +1 -1
- package/dist/run/host/runtime.cjs +4 -0
- package/dist/run/host/runtime.cjs.map +1 -1
- package/dist/run/storage/sqlite.cjs +20 -0
- package/dist/run/storage/sqlite.cjs.map +1 -1
- package/dist/runner/adapter-execution-trace.cjs +125 -2
- package/dist/runner/adapter-execution-trace.cjs.map +1 -1
- package/dist/runner/adapter-execution-trace.d.cts +1 -1
- package/dist/runner/adapter-execution-trace.d.mts +1 -1
- package/dist/runner/adapter-execution-trace.d.ts +1 -1
- package/dist/runner/adapter-usage.cjs +55 -7
- package/dist/runner/adapter-usage.cjs.map +1 -1
- package/dist/runner/adapter-usage.d.cts +9 -2
- package/dist/runner/adapter-usage.d.mts +9 -2
- package/dist/runner/adapter-usage.d.ts +9 -2
- package/dist/runner/adoption.cjs +9 -0
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/attempt-cancellation.cjs +12 -0
- package/dist/runner/attempt-cancellation.cjs.map +1 -0
- package/dist/runner/attempt-cancellation.d.cts +6 -0
- package/dist/runner/attempt-cancellation.d.mts +6 -0
- package/dist/runner/attempt-cancellation.d.ts +6 -0
- package/dist/runner/attempt-cancellation.js +6 -0
- package/dist/runner/attempt-cancellation.js.map +1 -0
- package/dist/runner/attempt-resources.cjs +10 -4
- package/dist/runner/attempt-resources.cjs.map +1 -1
- package/dist/runner/attempt-resources.d.cts +2 -1
- package/dist/runner/attempt-resources.d.mts +2 -1
- package/dist/runner/attempt-resources.d.ts +2 -1
- package/dist/runner/attempt.cjs +1177 -1139
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/config-identity.cjs +20 -1
- package/dist/runner/config-identity.cjs.map +1 -1
- package/dist/runner/config-identity.d.cts +5 -0
- package/dist/runner/config-identity.d.mts +5 -0
- package/dist/runner/config-identity.d.ts +5 -0
- package/dist/runner/discover.cjs +14 -0
- package/dist/runner/discover.cjs.map +1 -1
- package/dist/runner/discover.d.cts +3 -0
- package/dist/runner/discover.d.mts +3 -0
- package/dist/runner/discover.d.ts +3 -0
- package/dist/runner/feedback/human.cjs +9 -4
- package/dist/runner/feedback/human.cjs.map +1 -1
- package/dist/runner/fingerprint.cjs +1 -0
- package/dist/runner/fingerprint.cjs.map +1 -1
- package/dist/runner/judge-usage.cjs +18 -0
- package/dist/runner/judge-usage.cjs.map +1 -0
- package/dist/runner/judge-usage.d.cts +5 -0
- package/dist/runner/judge-usage.d.mts +5 -0
- package/dist/runner/judge-usage.d.ts +5 -0
- package/dist/runner/judge-usage.js +8 -0
- package/dist/runner/judge-usage.js.map +1 -0
- package/dist/runner/project-target.cjs.map +1 -1
- package/dist/runner/project-target.d.cts +2 -0
- package/dist/runner/project-target.d.mts +2 -0
- package/dist/runner/project-target.d.ts +2 -0
- package/dist/runner/record/planning.cjs +1 -0
- package/dist/runner/record/planning.cjs.map +1 -1
- package/dist/runner/record.cjs +4 -0
- package/dist/runner/record.cjs.map +1 -1
- package/dist/runner/reporters/braintrust.cjs +2 -0
- package/dist/runner/reporters/braintrust.cjs.map +1 -1
- package/dist/runner/reuse-diagnostics.cjs +9 -10
- package/dist/runner/reuse-diagnostics.cjs.map +1 -1
- package/dist/runner/reuse-diagnostics.d.cts +5 -6
- package/dist/runner/reuse-diagnostics.d.mts +5 -6
- package/dist/runner/reuse-diagnostics.d.ts +5 -6
- package/dist/runner/reuse-diagnostics.js +4 -4
- package/dist/runner/reuse-plan.cjs +100 -48
- package/dist/runner/reuse-plan.cjs.map +1 -1
- package/dist/runner/reuse-plan.d.cts +60 -3
- package/dist/runner/reuse-plan.d.mts +60 -3
- package/dist/runner/reuse-plan.d.ts +60 -3
- package/dist/runner/reuse-plan.js +14 -10
- package/dist/runner/run.cjs +8 -6
- package/dist/runner/run.cjs.map +1 -1
- package/dist/runner/session.cjs +1 -1
- package/dist/runner/session.cjs.map +1 -1
- package/dist/runner/session.d.cts +1 -1
- package/dist/runner/session.d.mts +1 -1
- package/dist/runner/session.d.ts +1 -1
- package/dist/runner/source-producer.cjs +3 -1
- package/dist/runner/source-producer.cjs.map +1 -1
- package/dist/runner/types.cjs.map +1 -1
- package/dist/runner/types.d.cts +26 -5
- package/dist/runner/types.d.mts +26 -5
- package/dist/runner/types.d.ts +26 -5
- package/dist/sandbox/action.cjs +3 -0
- package/dist/sandbox/action.cjs.map +1 -1
- package/dist/sandbox/commands.cjs +3 -0
- package/dist/sandbox/commands.cjs.map +1 -1
- package/dist/sandbox/compose.cjs +6 -0
- package/dist/sandbox/compose.cjs.map +1 -1
- package/dist/sandbox/docker-profile/registry.cjs +7 -0
- package/dist/sandbox/docker-profile/registry.cjs.map +1 -1
- package/dist/sandbox/docker-profile/runtime.cjs +3 -0
- package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.cjs +7 -0
- package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
- package/dist/sandbox/incus.cjs +7 -0
- package/dist/sandbox/incus.cjs.map +1 -1
- package/dist/sandbox/layer.cjs +12 -0
- package/dist/sandbox/layer.cjs.map +1 -1
- package/dist/shared/adapter-cleanup.cjs +18 -0
- package/dist/shared/adapter-cleanup.cjs.map +1 -0
- package/dist/shared/adapter-cleanup.d.cts +4 -0
- package/dist/shared/adapter-cleanup.d.mts +4 -0
- package/dist/shared/adapter-cleanup.d.ts +4 -0
- package/dist/shared/adapter-cleanup.js +10 -0
- package/dist/shared/adapter-cleanup.js.map +1 -0
- package/dist/shared/attempt-lifecycle.cjs +3 -0
- package/dist/shared/attempt-lifecycle.cjs.map +1 -0
- package/dist/shared/attempt-lifecycle.d.cts +13 -0
- package/dist/shared/attempt-lifecycle.d.mts +13 -0
- package/dist/shared/attempt-lifecycle.d.ts +13 -0
- package/dist/shared/attempt-lifecycle.js +4 -0
- package/dist/shared/attempt-lifecycle.js.map +1 -0
- package/dist/show/contribution.cjs +52 -14
- package/dist/show/contribution.cjs.map +1 -1
- package/dist/show/contribution.d.cts +23 -1
- package/dist/show/contribution.d.mts +23 -1
- package/dist/show/contribution.d.ts +23 -1
- package/dist/show/model.cjs +8 -1
- package/dist/show/model.cjs.map +1 -1
- package/dist/show/model.d.cts +10 -1
- package/dist/show/model.d.mts +10 -1
- package/dist/show/model.d.ts +10 -1
- package/dist/show/render.cjs +287 -49
- package/dist/show/render.cjs.map +1 -1
- package/dist/show/render.d.cts +3 -0
- package/dist/show/render.d.mts +3 -0
- package/dist/show/render.d.ts +3 -0
- package/dist/sources/projector.cjs +3 -0
- package/dist/sources/projector.cjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/view/app-dist/.vite/manifest.json +2 -2
- package/dist/view/app-dist/assets/index-CmVoXbwG.js +63 -0
- package/dist/view/app-dist/assets/{quality-cost-scatter-CFB3wnkN.js → quality-cost-scatter-BuLISaH4.js} +1 -1
- package/dist/view/app-dist/index.html +1 -1
- package/dist/view/cli/contribution.cjs +54 -21
- package/dist/view/cli/contribution.cjs.map +1 -1
- package/dist/view/cli/contribution.d.cts +2 -1
- package/dist/view/cli/contribution.d.mts +2 -1
- package/dist/view/cli/contribution.d.ts +2 -1
- package/dist/view/function-runtime.mjs +13231 -11647
- package/dist/view/http-protocol.cjs +3 -0
- package/dist/view/http-protocol.cjs.map +1 -1
- package/dist/view/http-protocol.d.cts +8 -0
- package/dist/view/http-protocol.d.mts +8 -0
- package/dist/view/http-protocol.d.ts +8 -0
- package/dist/view/inspection-host.cjs +17 -1
- package/dist/view/inspection-host.cjs.map +1 -1
- package/dist/view/render.cjs +1 -0
- package/dist/view/render.cjs.map +1 -1
- package/dist/view/render.d.cts +2 -1
- package/dist/view/render.d.mts +2 -1
- package/dist/view/render.d.ts +2 -1
- package/dist/view/revision.cjs.map +1 -1
- package/dist/view/revision.d.cts +12 -0
- package/dist/view/revision.d.mts +12 -0
- package/dist/view/revision.d.ts +12 -0
- package/dist/view/server.cjs +10 -9
- package/dist/view/server.cjs.map +1 -1
- package/docs-site/zh/examples/ai-agent-application.mdx +1 -1
- package/docs-site/zh/explanation/adapter.mdx +2 -2
- package/docs-site/zh/explanation/assert.mdx +60 -24
- package/docs-site/zh/explanation/drive.mdx +1 -1
- package/docs-site/zh/explanation/evals.mdx +31 -29
- package/docs-site/zh/explanation/experiment.mdx +15 -15
- package/docs-site/zh/explanation/judge.mdx +23 -15
- package/docs-site/zh/explanation/overview.mdx +44 -21
- package/docs-site/zh/explanation/record.mdx +28 -13
- package/docs-site/zh/explanation/results-flow.mdx +37 -0
- package/docs-site/zh/explanation/runner.mdx +27 -6
- package/docs-site/zh/index.mdx +22 -115
- package/docs-site/zh/introduction.mdx +89 -61
- package/docs-site/zh/reference/cli.mdx +50 -26
- package/docs-site/zh/reference/define-agent.mdx +37 -5
- package/docs-site/zh/reference/define-eval.mdx +130 -29
- package/docs-site/zh/reference/define-experiment.mdx +251 -0
- package/docs-site/zh/reference/events.mdx +34 -30
- package/docs-site/zh/reference/expect.mdx +77 -2
- package/docs-site/zh/reference/official-adapters.mdx +2 -2
- package/docs-site/zh/troubleshooting/debug-sandbox.mdx +43 -24
- package/docs-site/zh/troubleshooting/debugging.mdx +65 -42
- package/docs-site/zh/troubleshooting/recover-after-kill.mdx +35 -28
- package/docs-site/zh/tutorials/accept-results.mdx +34 -24
- package/docs-site/zh/tutorials/agent-feedback-loop.mdx +74 -43
- package/docs-site/zh/tutorials/agent-onboarding.mdx +27 -20
- package/docs-site/zh/tutorials/authoring.mdx +138 -121
- package/docs-site/zh/tutorials/ci-integration.mdx +46 -22
- package/docs-site/zh/tutorials/compare-runs.mdx +40 -13
- package/docs-site/zh/tutorials/concurrency.mdx +66 -62
- package/docs-site/zh/tutorials/configuration.mdx +17 -17
- package/docs-site/zh/tutorials/connect-otel.mdx +48 -37
- package/docs-site/zh/tutorials/connect-your-agent.mdx +80 -173
- package/docs-site/zh/tutorials/control-run-cost.mdx +63 -12
- package/docs-site/zh/tutorials/criteria-files.mdx +28 -21
- package/docs-site/zh/tutorials/custom-application.mdx +75 -55
- package/docs-site/zh/tutorials/dataset-fanout.mdx +32 -22
- package/docs-site/zh/tutorials/debug-lifecycle-plan.mdx +38 -31
- package/docs-site/zh/tutorials/docker-in-docker.mdx +83 -89
- package/docs-site/zh/tutorials/eval-groups.mdx +70 -89
- package/docs-site/zh/tutorials/evaluation-kinds.mdx +12 -5
- package/docs-site/zh/tutorials/experiment-services.mdx +243 -0
- package/docs-site/zh/tutorials/fixtures.mdx +42 -26
- package/docs-site/zh/tutorials/handle-execution-failures.mdx +41 -19
- package/docs-site/zh/tutorials/install-custom-sandbox-agent.mdx +21 -16
- package/docs-site/zh/tutorials/niceeval-taste-application.mdx +394 -0
- package/docs-site/zh/tutorials/niceeval-taste.mdx +190 -0
- package/docs-site/zh/tutorials/nixos-managed-dind.mdx +51 -39
- package/docs-site/zh/tutorials/plugins.mdx +55 -31
- package/docs-site/zh/tutorials/prebuilt-sandbox.mdx +204 -0
- package/docs-site/zh/tutorials/quickstart.mdx +91 -47
- package/docs-site/zh/tutorials/reporters.mdx +45 -30
- package/docs-site/zh/tutorials/rerun-and-cache.mdx +39 -40
- package/docs-site/zh/tutorials/sandbox-agent.mdx +65 -40
- package/docs-site/zh/tutorials/sandbox-providers.mdx +104 -282
- package/docs-site/zh/tutorials/sandbox-reuse.mdx +65 -97
- package/docs-site/zh/tutorials/select-and-preview.mdx +25 -20
- package/docs-site/zh/tutorials/verify-judge.mdx +49 -26
- package/docs-site/zh/tutorials/viewing-results.mdx +130 -80
- package/docs-site/zh/tutorials/write-experiment.mdx +116 -298
- package/docs-site/zh/tutorials/write-send.mdx +53 -52
- package/node_modules/undici/docs/docs/api/Agent.md +8 -8
- package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +9 -6
- package/node_modules/undici/docs/docs/api/Errors.md +25 -0
- package/node_modules/undici/docs/docs/api/Interceptors.md +4 -3
- package/node_modules/undici/docs/docs/api/Pool.md +5 -6
- package/node_modules/undici/lib/api/readable.js +1 -2
- package/node_modules/undici/lib/core/request.js +23 -2
- package/node_modules/undici/lib/core/util.js +0 -39
- package/node_modules/undici/lib/dispatcher/client-h1.js +11 -4
- package/node_modules/undici/lib/dispatcher/client-h2.js +52 -8
- package/node_modules/undici/lib/dispatcher/client.js +1 -1
- package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +3 -2
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +21 -6
- package/node_modules/undici/lib/dispatcher/pool-base.js +63 -2
- package/node_modules/undici/lib/dispatcher/pool.js +90 -7
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +16 -3
- package/node_modules/undici/lib/handler/deduplication-handler.js +24 -11
- package/node_modules/undici/lib/handler/redirect-handler.js +5 -0
- package/node_modules/undici/lib/handler/retry-handler.js +72 -13
- package/node_modules/undici/lib/interceptor/cache.js +4 -1
- package/node_modules/undici/lib/interceptor/decompress.js +236 -69
- package/node_modules/undici/lib/web/cache/cache.js +17 -8
- package/node_modules/undici/lib/web/cache/cachestorage.js +11 -5
- package/node_modules/undici/lib/web/cookies/index.js +19 -7
- package/node_modules/undici/lib/web/cookies/util.js +3 -1
- package/node_modules/undici/lib/web/eventsource/eventsource.js +25 -1
- package/node_modules/undici/lib/web/fetch/body.js +22 -15
- package/node_modules/undici/lib/web/fetch/data-url.js +6 -6
- package/node_modules/undici/lib/web/fetch/formdata.js +30 -36
- package/node_modules/undici/lib/web/fetch/headers.js +34 -31
- package/node_modules/undici/lib/web/fetch/index.js +38 -14
- package/node_modules/undici/lib/web/fetch/request.js +74 -79
- package/node_modules/undici/lib/web/fetch/response.js +43 -44
- package/node_modules/undici/lib/web/fetch/util.js +7 -7
- package/node_modules/undici/lib/web/infra/index.js +16 -1
- package/node_modules/undici/lib/web/webidl/index.js +2 -14
- package/node_modules/undici/lib/web/websocket/events.js +43 -26
- package/node_modules/undici/lib/web/websocket/receiver.js +5 -0
- package/node_modules/undici/lib/web/websocket/stream/websocketerror.js +13 -10
- package/node_modules/undici/lib/web/websocket/websocket.js +44 -41
- package/node_modules/undici/package.json +1 -1
- package/node_modules/undici/types/diagnostics-channel.d.ts +2 -1
- package/node_modules/undici/types/interceptors.d.ts +1 -1
- package/node_modules/undici/types/webidl.d.ts +13 -7
- package/package.json +4 -4
- package/dist/view/app-dist/assets/index-DFzw1L97.js +0 -63
- package/docs-site/zh/tutorials/experiments.mdx +0 -101
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["api.ts"],"names":[],"mappings":";;;AAyXA;;;;GAIG;AACU,QAAA,oBAAoB,GAAkB,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAsBvF;;;;;GAKG;AACH,MAAa,6BAA8B,SAAQ,KAAK;IAE/B;IADZ,IAAI,GAAG,+BAA+B,CAAC;IAChD,YAAqB,MAA4G;QAC7H,KAAK,CAAC,kDAAkD,MAAM,EAAE,CAAC,CAAC;QADjD,WAAM,GAAN,MAAM,CAAsG;QAE7H,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAChD,CAAC;CACJ;AAND,sEAMC","sourcesContent":["import type { Effect } from \"effect\";\nimport type { BooleanMatch, CollectionMatch, ManagedToolCalls, MatchDiagnostic, NumericComparator, NumericComparisonMatch, ScoreMatch, EventMatch, ManagedEventOccurrences, ToolMatch, } from \"./match.ts\";\nimport type { AgentWorkspaceDiff } from \"./workspace-diff.ts\";\nimport type { EvaluationKind } from \"../shared/evaluation.ts\";\nimport type { JudgeImage } from \"../judge/image.ts\";\n/** The two Evaluation kinds deliberately share one Assertion entry model. */\nexport type AssertionEvaluationKind = EvaluationKind;\n/**\n * A bounded JSON-shaped value owned by the authoring runtime. It is a\n * domain value, not the durable Assertions attachment material type.\n */\nexport type AssertionSnapshotValue = null | boolean | number | string | readonly AssertionSnapshotValue[] | AssertionSnapshotObject;\nexport interface AssertionSnapshotObject {\n readonly [key: string]: AssertionSnapshotValue;\n}\nexport interface AssertionDisplay {\n readonly key?: string;\n readonly label?: string;\n readonly groupPath: readonly string[];\n}\nexport type AssertionCoverage = {\n readonly state: \"complete\";\n} | {\n readonly state: \"partial\";\n readonly reason: \"sampled\" | \"truncated\" | \"redacted\" | \"provider-limited\";\n} | {\n readonly state: \"unavailable\";\n readonly reason: \"not-collected\" | \"source-unavailable\" | \"producer-failed\";\n} | {\n readonly state: \"not-applicable\";\n readonly reason: \"optional-material\" | \"unsupported-subject\";\n};\nexport type AssertionLimitation = {\n readonly kind: \"redacted\";\n readonly fieldCount: number;\n} | {\n readonly kind: \"sampled\";\n readonly captured: number;\n readonly knownTotal?: number;\n} | {\n readonly kind: \"truncated\";\n readonly omittedBytes: number;\n} | {\n readonly kind: \"provider-limited\";\n};\n/**\n * Authoring material intentionally has no blob ref, attachment entry ID, or\n * durable schema identity. The private producer adapter selects the exact\n * same-owner Attachment schema when it serializes this domain reference.\n */\nexport type AssertionMaterial = {\n readonly kind: \"snapshot\";\n readonly value: AssertionSnapshotValue;\n} | {\n readonly kind: \"judge-image\";\n readonly image: JudgeImage;\n} | {\n readonly kind: \"record-attachment\";\n readonly preview: string;\n};\nexport type AssertionCriterion = {\n readonly kind: \"value-match\";\n readonly subject: \"explicit-value\";\n readonly matcher: {\n readonly state: \"declared\";\n readonly name: string;\n } | {\n readonly state: \"unavailable\";\n };\n} | {\n /** Package-private runtime variant encoded as numeric-comparison/v1. */\n readonly kind: \"value-match\";\n readonly numeric: {\n readonly comparator: NumericComparator;\n readonly threshold: number;\n readonly subject: {\n readonly kind: \"explicit-value\";\n } | {\n readonly kind: \"scope-metric\";\n readonly metric: \"tokens\";\n readonly scope: \"turn\" | \"session\" | \"attempt\";\n readonly unit: \"tokens\";\n } | {\n readonly kind: \"scope-metric\";\n readonly metric: \"cost\";\n readonly scope: \"turn\" | \"session\" | \"attempt\";\n readonly unit: \"usd\";\n } | {\n readonly kind: \"collection-cardinality\";\n readonly collection: \"tool-calls\";\n readonly scope: \"turn\" | \"session\" | \"attempt\";\n };\n };\n} | {\n readonly kind: \"scope-status\";\n readonly scope: \"turn\" | \"session\" | \"attempt\";\n readonly assertion: \"succeeded\" | \"no-failed-actions\";\n} | {\n readonly kind: \"occurrence\";\n readonly scope: \"turn\" | \"session\" | \"attempt\";\n readonly occurrence: \"tool\" | \"skill\" | \"event\";\n readonly assertion: \"present\" | \"absent\" | \"count\" | \"order\";\n readonly matcher?: string;\n readonly quantifier?: {\n readonly kind: \"absent\";\n } | {\n readonly kind: \"at-least\" | \"less-than\" | \"at-most\" | \"greater-than\" | \"exact\";\n readonly count: number;\n };\n} | {\n readonly kind: \"judge-measurement\";\n readonly name: string;\n readonly scale: \"unit-interval\";\n} | {\n readonly kind: \"managed-score-measurement\";\n readonly name: string;\n readonly scale: \"unit-interval\";\n} | {\n readonly kind: \"sandbox-result\";\n readonly operation: \"changed-paths\";\n readonly paths: readonly string[];\n} | {\n readonly kind: \"sandbox-result\";\n readonly operation: \"no-changes\";\n} | {\n readonly kind: \"sandbox-result\";\n readonly operation: \"file-changed\";\n readonly path: string;\n readonly status?: \"added\" | \"modified\" | \"deleted\";\n readonly before?: string;\n readonly after?: string;\n} | {\n readonly kind: \"sandbox-result\";\n readonly operation: \"file-deleted\";\n readonly path: string;\n} | {\n readonly kind: \"sandbox-result\";\n readonly operation: \"not-in-diff\";\n readonly pattern: string;\n readonly flags: string;\n readonly content: \"added\" | \"removed\" | \"both\";\n} | {\n readonly kind: \"direct-score\";\n readonly source: \"author\";\n} | {\n readonly kind: \"third-party\";\n readonly name: string;\n readonly schemaId: string;\n readonly data: AssertionSnapshotValue;\n};\nexport type AssertionScoreContribution = {\n readonly state: \"not-scored\";\n} | {\n readonly state: \"earned\";\n readonly points: number;\n readonly earned: number;\n} | {\n readonly state: \"unavailable\";\n readonly points: number;\n readonly reason: \"source-unavailable\" | \"evaluation-errored\" | \"not-applicable\";\n};\n/** Constant-size semantic receipt for one collection evaluation. */\nexport interface AssertionCollectionReceipt {\n readonly examined: number;\n readonly matched: number;\n readonly mismatched: number;\n readonly unavailable: number;\n readonly knownTotal: number | null;\n readonly complete: boolean;\n readonly exhaustive: boolean;\n readonly decisive: boolean;\n}\nexport type MatcherRelationStatus = {\n readonly state: \"exact\";\n} | {\n readonly state: \"unavailable\";\n readonly reason: \"historical-not-recorded\" | \"source-unavailable\" | \"ambiguous\";\n};\nexport type MatcherSourceLocator = {\n readonly kind: \"tool-occurrence\";\n readonly toolOccurrenceId: string;\n readonly relation: MatcherRelationStatus;\n} | {\n readonly kind: \"event\";\n readonly eventId: string;\n readonly toolOccurrenceId?: string;\n readonly relation: MatcherRelationStatus;\n};\nexport interface MatcherRetainedRow {\n readonly locator: MatcherSourceLocator;\n readonly result: \"matched\" | \"mismatched\" | \"unavailable\" | \"not-evaluated\";\n readonly difference?: AssertionSnapshotValue;\n}\nexport interface MatcherQueryStep {\n readonly step: number;\n readonly summary: AssertionSnapshotValue;\n}\nexport type MatcherSourceSnapshot = {\n readonly scope: \"turn\";\n readonly sessionId: string;\n readonly turnId: string;\n readonly scopeId: string;\n readonly throughSessionSequence: number;\n readonly source: {\n readonly family: \"niceeval.agent-turns\";\n readonly schemaVersion: number;\n };\n readonly collectionAtCut: \"complete\" | \"partial\" | \"unavailable\";\n} | {\n readonly scope: \"session\";\n readonly sessionId: string;\n readonly scopeId: string;\n readonly throughSessionSequence: number;\n readonly source: {\n readonly family: \"niceeval.agent-turns\";\n readonly schemaVersion: number;\n };\n readonly collectionAtCut: \"complete\" | \"partial\" | \"unavailable\";\n} | {\n readonly scope: \"attempt\";\n readonly scopeId: string;\n readonly sessions: readonly {\n readonly sessionId: string;\n readonly throughSessionSequence: number;\n }[];\n readonly source: {\n readonly family: \"niceeval.agent-turns\";\n readonly schemaVersion: number;\n };\n readonly collectionAtCut: \"complete\" | \"partial\" | \"unavailable\";\n};\nexport interface OrderStepReceipt {\n readonly step: number;\n readonly comparisons: number;\n readonly matched: number;\n readonly mismatched: number;\n readonly unavailable: number;\n}\nexport interface OrderEvaluationReceipt {\n readonly sourceRows: number;\n readonly comparisons: number;\n readonly unavailableComparisons: number;\n readonly definitePrefixLength: number;\n readonly possiblePrefixLength: number;\n readonly stepReceipts: readonly OrderStepReceipt[];\n readonly complete: boolean;\n readonly exhaustive: boolean;\n readonly decisive: boolean;\n}\nexport interface MatcherOrderPathNode {\n readonly step: number;\n readonly locator: MatcherSourceLocator;\n readonly sessionId: string;\n readonly sessionSequence: number;\n readonly result: \"matched\" | \"unavailable\";\n}\nexport interface MatcherFailureFrontier {\n readonly longestDefinitePrefix: readonly MatcherOrderPathNode[];\n readonly longestPossiblePrefix: readonly MatcherOrderPathNode[];\n readonly firstBlockingStep: number;\n readonly suffixChecked: AssertionCollectionReceipt;\n readonly representatives: readonly MatcherRetainedRow[];\n}\nexport type MatcherQueryArtifact = {\n readonly kind: \"collection-filter\";\n readonly sourceSnapshot: MatcherSourceSnapshot;\n readonly query: MatcherQueryStep;\n readonly receipt: AssertionCollectionReceipt;\n readonly retainedRows: readonly MatcherRetainedRow[];\n} | {\n readonly kind: \"ordered-sequence\";\n readonly sourceSnapshot: Extract<MatcherSourceSnapshot, {\n readonly scope: \"turn\" | \"session\";\n }>;\n readonly querySteps: readonly MatcherQueryStep[];\n readonly receipt: OrderEvaluationReceipt;\n readonly result: {\n readonly state: \"matched\";\n readonly witnessPath: readonly MatcherOrderPathNode[];\n } | {\n readonly state: \"mismatched\";\n readonly failureFrontier: MatcherFailureFrontier;\n } | {\n readonly state: \"unavailable\";\n readonly reason: string;\n };\n readonly retainedRows: readonly MatcherRetainedRow[];\n};\nexport type AssertionConditionPolicy = {\n readonly kind: \"boolean\";\n readonly expected: true;\n} | {\n readonly kind: \"at-least\";\n readonly threshold: number;\n} | {\n readonly kind: \"record-only\";\n};\nexport interface AssertionPolicy {\n readonly requirement: \"required\" | \"optional\";\n readonly condition: AssertionConditionPolicy;\n}\nexport type AssertionObserved = {\n readonly kind: \"boolean\";\n readonly outcome: \"matched\" | \"mismatched\" | \"unavailable\" | \"errored\" | \"not-applicable\";\n} | {\n readonly kind: \"measurement\";\n readonly state: \"available\";\n readonly value: number;\n} | {\n readonly kind: \"measurement\";\n readonly state: \"unavailable\";\n} | {\n readonly kind: \"direct-score\";\n readonly state: \"available\";\n readonly value: number;\n} | {\n readonly kind: \"direct-score\";\n readonly state: \"unavailable\";\n};\nexport type AssertionResult = {\n readonly state: \"matched\";\n readonly gate: \"not-gate\" | \"satisfied\";\n readonly score: Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\" | \"earned\";\n }>;\n readonly diagnostic?: AssertionSnapshotObject;\n readonly receipt?: AssertionCollectionReceipt;\n} | {\n readonly state: \"mismatched\";\n readonly reason: \"condition-not-met\";\n readonly gate: \"not-gate\" | \"failed\";\n readonly score: Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\" | \"earned\";\n }>;\n readonly diagnostic?: AssertionSnapshotObject;\n readonly receipt?: AssertionCollectionReceipt;\n} | {\n readonly state: \"unavailable\";\n readonly reason: \"evidence-unavailable\" | \"source-unavailable\" | \"redacted\";\n readonly gate: \"not-gate\" | \"unavailable\";\n readonly score: Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\" | \"unavailable\";\n }>;\n readonly diagnostic?: AssertionSnapshotObject;\n readonly receipt?: AssertionCollectionReceipt;\n} | {\n readonly state: \"errored\";\n readonly reason: \"evaluator-failed\" | \"producer-interrupted\" | \"invalid-subject\";\n readonly gate: \"not-gate\" | \"unavailable\";\n readonly score: Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\" | \"unavailable\";\n }>;\n readonly diagnostic?: AssertionSnapshotObject;\n readonly receipt?: AssertionCollectionReceipt;\n} | {\n readonly state: \"not-applicable\";\n readonly reason: \"coverage-not-applicable\";\n readonly gate: \"not-gate\" | \"not-applicable\";\n readonly score: Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\" | \"unavailable\";\n }>;\n readonly diagnostic?: AssertionSnapshotObject;\n readonly receipt?: AssertionCollectionReceipt;\n};\n/** One fully formed author/runtime result, before durable attachment encoding. */\nexport interface SealedAssertionEntry {\n readonly display: AssertionDisplay;\n readonly criterion: AssertionCriterion;\n readonly subject: AssertionMaterial;\n readonly evidence: readonly AssertionMaterial[];\n readonly coverage: AssertionCoverage;\n readonly limitations: readonly AssertionLimitation[];\n readonly result: AssertionResult;\n readonly policy: AssertionPolicy;\n readonly observed: AssertionObserved;\n readonly matcherArtifact?: MatcherQueryArtifact;\n}\n/**\n * Assertion handles are runtime-owned capabilities, not subjects for another\n * `t.check`. The symbol is public only for TypeScript's nominal boundary; the\n * runtime also keeps an unforgeable ownership registry.\n */\nexport const assertionHandleBrand: unique symbol = Symbol(\"niceeval.assertion-handle\");\ndeclare const assertionConditionStateBrand: unique symbol;\ndeclare const assertionGateStateBrand: unique symbol;\ndeclare const assertionScoreStateBrand: unique symbol;\nexport interface AssertionHandleBase<HasCondition extends boolean = boolean, HasScore extends boolean = boolean> {\n readonly [assertionHandleBrand]: true;\n readonly [assertionConditionStateBrand]: HasCondition;\n readonly [assertionScoreStateBrand]: HasScore;\n key(value: string): this;\n label(value: string): this;\n /** Adds one display-only group segment to this already registered entry. */\n group(title: string): this;\n}\n/** A value that is not an AssertionHandle. */\nexport type AssertionSubject<Value> = Value extends AssertionHandleBase ? never : Value;\n/** Numeric cardinality deliberately excludes the managed event occurrence subject. */\nexport type NumericAssertionSubject<Value> = Value extends ManagedEventOccurrences ? never : AssertionSubject<Value>;\nexport interface AssertionStopError {\n readonly _tag: \"AssertionStopError\";\n readonly entryIndex: number;\n readonly reason: \"condition-not-met\" | \"source-unavailable\" | \"evaluator-failed\" | \"not-applicable\";\n}\n/**\n * A public authoring call reached an Attempt boundary which is no longer able\n * to accept it. Keeping this distinct from an evaluator failure lets a\n * detached Promise diagnose its own lifecycle error instead of looking like a\n * failed assertion.\n */\nexport class AssertionAuthoringClosedError extends Error {\n readonly _tag = \"AssertionAuthoringClosedError\";\n constructor(readonly reason: \"stop-latched\" | \"attempt-sealing\" | \"attempt-sealed\" | \"attempt-interrupted\" | \"runtime-unattached\") {\n super(`Cannot use an Assertion authoring handle after ${reason}`);\n this.name = \"AssertionAuthoringClosedError\";\n }\n}\n/**\n * The owning Attempt executes a requested stop barrier in its existing Effect\n * scope. Handles only enqueue this request; they never create a runtime.\n */\nexport type AssertionStopExecutor = <Value>(effect: Effect.Effect<Value, AssertionStopError, never>) => Promise<Value>;\n/** A Boolean entry is evaluated once and may retain a refinement witness. */\nexport type BooleanAssertionEvaluation<Refined> = {\n readonly state: \"matched\";\n readonly value: Refined;\n readonly diagnostic?: MatchDiagnostic;\n readonly receipt?: AssertionCollectionReceipt;\n readonly matcherArtifact?: MatcherQueryArtifact;\n} | {\n readonly state: \"mismatched\";\n readonly diagnostic?: MatchDiagnostic;\n readonly receipt?: AssertionCollectionReceipt;\n readonly matcherArtifact?: MatcherQueryArtifact;\n} | {\n readonly state: \"unavailable\";\n readonly reason: \"evidence-unavailable\" | \"source-unavailable\" | \"redacted\";\n readonly diagnostic?: MatchDiagnostic;\n readonly receipt?: AssertionCollectionReceipt;\n readonly matcherArtifact?: MatcherQueryArtifact;\n} | {\n readonly state: \"not-applicable\";\n readonly diagnostic?: MatchDiagnostic;\n readonly matcherArtifact?: MatcherQueryArtifact;\n};\n/** A measurement is always a finite unit-interval value when it is available. */\nexport type MeasurementAssertionEvaluation = {\n readonly state: \"measured\";\n readonly value: number;\n readonly detail?: AssertionSnapshotObject;\n} | {\n readonly state: \"unavailable\";\n readonly reason: \"evidence-unavailable\" | \"source-unavailable\" | \"redacted\";\n readonly detail?: AssertionSnapshotObject;\n} | {\n readonly state: \"not-applicable\";\n readonly detail?: AssertionSnapshotObject;\n} | {\n readonly state: \"errored\";\n readonly detail?: AssertionSnapshotObject;\n};\nexport interface CapturedAssertionSnapshot {\n readonly material: Extract<AssertionMaterial, {\n readonly kind: \"snapshot\";\n }>;\n readonly coverage: AssertionCoverage;\n readonly limitations: readonly AssertionLimitation[];\n}\nexport interface AssertionRegistrationBase {\n readonly criterion: AssertionCriterion;\n readonly subject: AssertionMaterial;\n readonly evidence?: readonly AssertionMaterial[];\n readonly coverage?: AssertionCoverage;\n readonly limitations?: readonly AssertionLimitation[];\n}\n/**\n * Scope, Judge, and Sandbox adapters use this internal registration shape.\n * They still register exactly one Assertion entry; they do not manufacture a\n * separate intermediate value for a later consumer.\n */\nexport interface BooleanAssertionRegistration<Refined> extends AssertionRegistrationBase {\n /** Sealed when Attempt interruption prevents the ordinary evaluator from running. */\n readonly interruptedMatcherArtifact?: MatcherQueryArtifact;\n readonly evaluate: () => Effect.Effect<BooleanAssertionEvaluation<Refined>, unknown, never>;\n}\nexport interface MeasurementAssertionRegistration extends AssertionRegistrationBase {\n /** Bytes synchronously reserved from an Attempt-local producer budget. */\n readonly retainedBytes?: number;\n readonly retainedImageBytes?: number;\n /** Complete terminal Content appended exactly once by the shared sealing path. */\n readonly terminalEvidence?: () => readonly AssertionMaterial[];\n /** Terminal producer facts frozen by the shared Assertion sealing path. */\n readonly terminalDetail?: () => AssertionSnapshotObject;\n readonly evaluate: () => Effect.Effect<MeasurementAssertionEvaluation, unknown, never>;\n}\nexport interface PassBooleanAssertionHandle<out Refined, HasGate extends boolean = false> extends AssertionHandleBase<true, false> {\n readonly kind: \"boolean\";\n readonly [assertionGateStateBrand]: HasGate;\n /** An unavailable/errored optional entry does not independently error Verdict. */\n optional(): this;\n gate(this: PassBooleanAssertionHandle<Refined, false>): PassBooleanAssertionHandle<Refined, true>;\n orStop(): Promise<Refined>;\n}\nexport interface ScoreBooleanAssertionHandle<out Refined, HasGate extends boolean = false, HasScore extends boolean = false> extends AssertionHandleBase<true, HasScore> {\n readonly kind: \"boolean\";\n readonly [assertionGateStateBrand]: HasGate;\n gate(this: ScoreBooleanAssertionHandle<Refined, false, HasScore>): ScoreBooleanAssertionHandle<Refined, true, HasScore>;\n score(this: ScoreBooleanAssertionHandle<Refined, HasGate, false>, points: number): ScoreBooleanAssertionHandle<Refined, HasGate, true>;\n orStop(): Promise<Refined>;\n}\nexport interface PassMeasurementAssertionHandle<HasCondition extends boolean = false> extends AssertionHandleBase<HasCondition, false> {\n readonly kind: \"measurement\";\n gate(this: PassMeasurementAssertionHandle<false>, minimum: number): PassMeasurementAssertionHandle<true>;\n orStop(this: PassMeasurementAssertionHandle<false>, minimum: number): Promise<number>;\n orStop(this: PassMeasurementAssertionHandle<true>): Promise<number>;\n}\nexport interface ScoreMeasurementAssertionHandle<HasCondition extends boolean = false, HasScore extends boolean = false> extends AssertionHandleBase<HasCondition, HasScore> {\n readonly kind: \"measurement\";\n gate(this: ScoreMeasurementAssertionHandle<false, HasScore>, minimum: number): ScoreMeasurementAssertionHandle<true, HasScore>;\n score(this: ScoreMeasurementAssertionHandle<HasCondition, false>, points: number): ScoreMeasurementAssertionHandle<HasCondition, true>;\n orStop(this: ScoreMeasurementAssertionHandle<false, HasScore>, minimum: number): Promise<number>;\n orStop(this: ScoreMeasurementAssertionHandle<true, HasScore>): Promise<number>;\n}\n/** A Boolean Assertion that intentionally has no author control-flow operation. */\ninterface PostRunPassBooleanAssertionHandle<Refined, HasGate extends boolean = false> extends AssertionHandleBase<true, false> {\n readonly kind: \"boolean\";\n readonly [assertionGateStateBrand]: HasGate;\n optional(): this;\n gate(this: PostRunPassBooleanAssertionHandle<Refined, false>): PostRunPassBooleanAssertionHandle<Refined, true>;\n}\ninterface PostRunScoreBooleanAssertionHandle<Refined, HasGate extends boolean = false, HasScore extends boolean = false> extends AssertionHandleBase<true, HasScore> {\n readonly kind: \"boolean\";\n readonly [assertionGateStateBrand]: HasGate;\n gate(this: PostRunScoreBooleanAssertionHandle<Refined, false, HasScore>): PostRunScoreBooleanAssertionHandle<Refined, true, HasScore>;\n score(this: PostRunScoreBooleanAssertionHandle<Refined, HasGate, false>, points: number): PostRunScoreBooleanAssertionHandle<Refined, HasGate, true>;\n}\nexport type PostRunBooleanAssertionHandle<Kind extends AssertionEvaluationKind, Refined, HasGate extends boolean = false, HasScore extends boolean = false> = Kind extends \"pass\" ? PostRunPassBooleanAssertionHandle<Refined, HasGate> : PostRunScoreBooleanAssertionHandle<Refined, HasGate, HasScore>;\n/** Direct score is an Assertion entry, but has no condition or stop barrier. */\nexport interface DirectScoreAssertionHandle extends AssertionHandleBase<false, true> {\n readonly kind: \"direct-score\";\n}\n/**\n * Definition-time handle shared by Adapter Assertion factories. It exposes\n * only operations whose meaning is identical in Pass and Score Evals; the\n * bound Eval factory replaces it with the native handle for its Kind.\n */\nexport interface PolymorphicBooleanAssertionHandle<out Refined, HasGate extends boolean = false> extends AssertionHandleBase<true, false> {\n readonly kind: \"boolean\";\n readonly [assertionGateStateBrand]: HasGate;\n gate(this: PolymorphicBooleanAssertionHandle<Refined, false>): PolymorphicBooleanAssertionHandle<Refined, true>;\n orStop(): Promise<Refined>;\n}\n/** Definition-time measurement counterpart to PolymorphicBooleanAssertionHandle. */\nexport interface PolymorphicMeasurementAssertionHandle<HasCondition extends boolean = false> extends AssertionHandleBase<HasCondition, false> {\n readonly kind: \"measurement\";\n gate(this: PolymorphicMeasurementAssertionHandle<false>, minimum: number): PolymorphicMeasurementAssertionHandle<true>;\n orStop(this: PolymorphicMeasurementAssertionHandle<false>, minimum: number): Promise<number>;\n orStop(this: PolymorphicMeasurementAssertionHandle<true>): Promise<number>;\n}\nexport type AssertionCheckKind = AssertionEvaluationKind | \"polymorphic\";\ntype CheckedBooleanHandle<Kind extends AssertionCheckKind, Refined> = Kind extends AssertionEvaluationKind ? BooleanAssertionHandle<Kind, Refined> : PolymorphicBooleanAssertionHandle<Refined>;\ntype CheckedMeasurementHandle<Kind extends AssertionCheckKind> = Kind extends AssertionEvaluationKind ? MeasurementAssertionHandle<Kind> : PolymorphicMeasurementAssertionHandle;\n/** Single owner for the public check overload set, including Adapter-polymorphic factories. */\nexport interface AssertionCheck<Kind extends AssertionCheckKind> {\n <Value, Refined extends Value>(value: AssertionSubject<Value>, match: BooleanMatch<NoInfer<Value>, Refined, \"value\">): CheckedBooleanHandle<Kind, Refined>;\n <Value extends readonly unknown[]>(value: NumericAssertionSubject<Value>, match: NumericComparisonMatch): CheckedBooleanHandle<Kind, Value>;\n <S extends \"turn\" | \"session\" | \"attempt\">(value: AssertionSubject<ManagedToolCalls<S>>, match: ToolMatch): CheckedBooleanHandle<Kind, ManagedToolCalls<S>>;\n <S extends \"turn\" | \"session\" | \"attempt\">(value: AssertionSubject<ManagedEventOccurrences<S>>, match: EventMatch): CheckedBooleanHandle<Kind, ManagedEventOccurrences<S>>;\n <Value>(value: AssertionSubject<Value>, match: CollectionMatch<NoInfer<Value>>): CheckedBooleanHandle<Kind, Value>;\n <Value>(value: AssertionSubject<Value>, match: ScoreMatch<NoInfer<Value>>): CheckedMeasurementHandle<Kind>;\n}\nexport interface AssertionGroupContext {\n /**\n * Runs an ordinary author callback with one display-only group segment. The\n * callback remains inside the Attempt's outer Promise boundary; this facade\n * does not evaluate an Effect or create an independent runtime.\n */\n group<Value>(title: string, body: () => Value | PromiseLike<Value>): Promise<Awaited<Value>>;\n}\nexport interface PassAssertionsContext extends AssertionGroupContext {\n readonly evaluationKind: \"pass\";\n readonly check: AssertionCheck<\"pass\">;\n}\nexport interface ScoreAssertionsContext extends AssertionGroupContext {\n readonly evaluationKind: \"score\";\n readonly check: AssertionCheck<\"score\">;\n score(points: number): DirectScoreAssertionHandle;\n}\nexport type AssertionsContext<Kind extends AssertionEvaluationKind> = Kind extends \"pass\" ? PassAssertionsContext : ScoreAssertionsContext;\nexport type BooleanAssertionHandle<Kind extends AssertionEvaluationKind, Refined, HasGate extends boolean = false, HasScore extends boolean = false> = Kind extends \"pass\" ? PassBooleanAssertionHandle<Refined, HasGate> : ScoreBooleanAssertionHandle<Refined, HasGate, HasScore>;\nexport type MeasurementAssertionHandle<Kind extends AssertionEvaluationKind, HasCondition extends boolean = false, HasScore extends boolean = false> = Kind extends \"pass\" ? PassMeasurementAssertionHandle<HasCondition> : ScoreMeasurementAssertionHandle<HasCondition, HasScore>;\nexport interface AssertionSealOptions {\n readonly execution?: \"completed\" | \"errored\";\n readonly explicitlySkipped?: boolean;\n /**\n * The owning Attempt was interrupted before ordinary evaluation could\n * finish. Unsettled entries are sealed as producer-interrupted instead of\n * being silently omitted or evaluated on a detached runtime.\n */\n readonly interrupted?: boolean;\n}\n/** Sealing has no expected authoring failure after registration-time validation. */\nexport type AssertionSealError = never;\n/** The sealed evaluation is a domain result, not a durable Record payload. */\nexport interface SealedAssertionEvaluationEntry {\n readonly required: boolean;\n readonly result: AssertionResult;\n}\nexport interface SealedAssertionEvaluation {\n readonly execution: \"completed\" | \"errored\";\n readonly explicitlySkipped: boolean;\n readonly assertions: readonly SealedAssertionEvaluationEntry[];\n}\n/**\n * One immutable result feeds the Verdict/Score fold and the private durable\n * producer adapter. No RecordAttachment writer type crosses this boundary.\n */\nexport interface SealedAssertionsRuntime {\n readonly entries: readonly SealedAssertionEntry[];\n readonly evaluation: SealedAssertionEvaluation;\n}\n/** The runtime Verdict is independent of the durable Verdict attachment codec. */\nexport interface AssertionVerdict {\n readonly state: import(\"../shared/types.ts\").Verdict;\n}\nexport type AssertionScoreIncompleteReason = \"execution-errored\" | \"source-unavailable\" | \"evaluation-errored\" | \"not-applicable\";\n/** The runtime Score is independent of the durable Score attachment codec. */\nexport type AssertionScore = {\n readonly state: \"complete\";\n readonly earned: number;\n} | {\n readonly state: \"partial\";\n readonly earned: number;\n readonly reasons: readonly AssertionScoreIncompleteReason[];\n} | {\n readonly state: \"unavailable\";\n readonly reasons: readonly AssertionScoreIncompleteReason[];\n};\n/**\n * The attempt-owned frozen result is handed from Runner to the Evaluation\n * Record adapter. The adapter alone adds attachment schemas and writes.\n */\nexport interface SealedAttemptAssertions {\n readonly entries: readonly SealedAssertionEntry[];\n readonly evaluation: SealedAssertionEvaluation;\n readonly workspaceDiff?: AgentWorkspaceDiff;\n readonly verdict: AssertionVerdict;\n readonly score?: AssertionScore;\n}\nexport interface AssertionsRuntime<Kind extends AssertionEvaluationKind> {\n readonly evaluationKind: Kind;\n readonly t: AssertionsContext<Kind>;\n /** @internal Reject before an adapter reads or snapshots author material. */\n assertAuthoringOpen(): void;\n /** Attempt-owned synchronous admission close; sealing still happens once through `seal`. */\n closeAuthoring(reason: \"attempt-sealing\" | \"attempt-interrupted\"): void;\n registerBoolean<Refined>(definition: BooleanAssertionRegistration<Refined>): BooleanAssertionHandle<Kind, Refined>;\n registerMeasurement(definition: MeasurementAssertionRegistration): MeasurementAssertionHandle<Kind>;\n seal(options?: AssertionSealOptions): Effect.Effect<SealedAssertionsRuntime, AssertionSealError, never>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["api.ts"],"names":[],"mappings":";;;AAmYA;;;;GAIG;AACU,QAAA,oBAAoB,GAAkB,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAsBvF;;;;;GAKG;AACH,MAAa,6BAA8B,SAAQ,KAAK;IAE/B;IADZ,IAAI,GAAG,+BAA+B,CAAC;IAChD,YAAqB,MAA4G;QAC7H,KAAK,CAAC,kDAAkD,MAAM,EAAE,CAAC,CAAC;QADjD,WAAM,GAAN,MAAM,CAAsG;QAE7H,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAChD,CAAC;CACJ;AAND,sEAMC","sourcesContent":["// @concord-file ne-eval-assertions-api\n// @concord-implements docs/feature/assertions/README.md\n// @concord-implements docs/feature/assertions/library.md\n// @concord-implements docs/feature/assertions/library/value-assertions.md\n// @concord-implements docs/feature/assertions/library/scoped-assertions.md\nimport type { Effect } from \"effect\";\nimport type { BooleanMatch, CollectionMatch, ManagedToolCalls, MatchDiagnostic, NumericComparator, NumericMaterial, NumericComparisonMatch, ScoreMatch, EventMatch, ManagedEventOccurrences, ToolMatch, } from \"./match.ts\";\nimport type { AgentWorkspaceDiff } from \"./workspace-diff.ts\";\nimport type { EvaluationKind } from \"../shared/evaluation.ts\";\nimport type { JudgeImage } from \"../judge/image.ts\";\n/** The two Evaluation kinds deliberately share one Assertion entry model. */\nexport type AssertionEvaluationKind = EvaluationKind;\n/**\n * A bounded JSON-shaped value owned by the authoring runtime. It is a\n * domain value, not the durable Assertions attachment material type.\n */\nexport type AssertionSnapshotValue = null | boolean | number | string | readonly AssertionSnapshotValue[] | AssertionSnapshotObject;\nexport interface AssertionSnapshotObject {\n readonly [key: string]: AssertionSnapshotValue;\n}\nexport interface AssertionDisplay {\n readonly key?: string;\n readonly label?: string;\n readonly groupPath: readonly string[];\n}\nexport type AssertionCoverage = {\n readonly state: \"complete\";\n} | {\n readonly state: \"partial\";\n readonly reason: \"sampled\" | \"truncated\" | \"redacted\" | \"provider-limited\" | \"capacity-limited\";\n} | {\n readonly state: \"unavailable\";\n readonly reason: \"not-collected\" | \"source-unavailable\" | \"producer-failed\";\n} | {\n readonly state: \"not-applicable\";\n readonly reason: \"optional-material\" | \"unsupported-subject\";\n};\nexport type AssertionLimitation = {\n readonly kind: \"redacted\";\n readonly fieldCount: number;\n} | {\n readonly kind: \"sampled\";\n readonly captured: number;\n readonly knownTotal?: number;\n} | {\n readonly kind: \"truncated\";\n readonly omittedBytes: number;\n} | {\n readonly kind: \"provider-limited\";\n} | {\n readonly kind: \"capacity-limited\";\n readonly capturedItems: number;\n readonly knownTotalItems: number;\n readonly omittedBytes: number | null;\n};\n/**\n * Authoring material intentionally has no blob ref, attachment entry ID, or\n * durable schema identity. The private producer adapter selects the exact\n * same-owner Attachment schema when it serializes this domain reference.\n */\nexport type AssertionMaterial = {\n readonly kind: \"snapshot\";\n readonly value: AssertionSnapshotValue;\n} | {\n readonly kind: \"judge-image\";\n readonly image: JudgeImage;\n} | {\n readonly kind: \"record-attachment\";\n readonly preview: string;\n};\nexport type AssertionCriterion = {\n readonly kind: \"value-match\";\n readonly subject: \"explicit-value\";\n readonly matcher: {\n readonly state: \"declared\";\n readonly name: string;\n } | {\n readonly state: \"unavailable\";\n };\n} | {\n /** Package-private runtime variant encoded as numeric-comparison/v1. */\n readonly kind: \"value-match\";\n readonly numeric: {\n readonly comparator: NumericComparator;\n readonly threshold: number;\n readonly subject: {\n readonly kind: \"explicit-value\";\n } | {\n readonly kind: \"scope-metric\";\n readonly metric: \"tokens\";\n readonly scope: \"turn\" | \"session\" | \"attempt\";\n readonly unit: \"tokens\";\n } | {\n readonly kind: \"scope-metric\";\n readonly metric: \"cost\";\n readonly scope: \"turn\" | \"session\" | \"attempt\";\n readonly unit: \"usd\";\n } | {\n readonly kind: \"collection-cardinality\";\n readonly collection: \"tool-calls\";\n readonly scope: \"turn\" | \"session\" | \"attempt\";\n };\n };\n} | {\n readonly kind: \"scope-status\";\n readonly scope: \"turn\" | \"session\" | \"attempt\";\n readonly assertion: \"succeeded\" | \"no-failed-actions\";\n} | {\n readonly kind: \"occurrence\";\n readonly scope: \"turn\" | \"session\" | \"attempt\";\n readonly occurrence: \"tool\" | \"skill\" | \"event\";\n readonly assertion: \"present\" | \"absent\" | \"count\" | \"order\";\n readonly matcher?: string;\n readonly quantifier?: {\n readonly kind: \"absent\";\n } | {\n readonly kind: \"at-least\" | \"less-than\" | \"at-most\" | \"greater-than\" | \"exact\";\n readonly count: number;\n };\n} | {\n readonly kind: \"judge-measurement\";\n readonly name: string;\n readonly scale: \"unit-interval\";\n} | {\n readonly kind: \"managed-score-measurement\";\n readonly name: string;\n readonly scale: \"unit-interval\";\n} | {\n readonly kind: \"sandbox-result\";\n readonly operation: \"changed-paths\";\n readonly paths: readonly string[];\n} | {\n readonly kind: \"sandbox-result\";\n readonly operation: \"no-changes\";\n} | {\n readonly kind: \"sandbox-result\";\n readonly operation: \"file-changed\";\n readonly path: string;\n readonly status?: \"added\" | \"modified\" | \"deleted\";\n readonly before?: string;\n readonly after?: string;\n} | {\n readonly kind: \"sandbox-result\";\n readonly operation: \"file-deleted\";\n readonly path: string;\n} | {\n readonly kind: \"sandbox-result\";\n readonly operation: \"not-in-diff\";\n readonly pattern: string;\n readonly flags: string;\n readonly content: \"added\" | \"removed\" | \"both\";\n} | {\n readonly kind: \"direct-score\";\n readonly source: \"author\";\n} | {\n readonly kind: \"third-party\";\n readonly name: string;\n readonly schemaId: string;\n readonly data: AssertionSnapshotValue;\n};\nexport type AssertionScoreContribution = {\n readonly state: \"not-scored\";\n} | {\n readonly state: \"earned\";\n readonly points: number;\n readonly earned: number;\n} | {\n readonly state: \"unavailable\";\n readonly points: number;\n readonly reason: \"source-unavailable\" | \"evaluation-errored\" | \"not-applicable\";\n};\n/** Constant-size semantic receipt for one collection evaluation. */\nexport interface AssertionCollectionReceipt {\n readonly examined: number;\n readonly matched: number;\n readonly mismatched: number;\n readonly unavailable: number;\n readonly knownTotal: number | null;\n readonly complete: boolean;\n readonly exhaustive: boolean;\n readonly decisive: boolean;\n}\nexport type MatcherRelationStatus = {\n readonly state: \"exact\";\n} | {\n readonly state: \"unavailable\";\n readonly reason: \"historical-not-recorded\" | \"source-unavailable\" | \"ambiguous\";\n};\nexport type MatcherSourceLocator = {\n readonly kind: \"tool-occurrence\";\n readonly toolOccurrenceId: string;\n readonly relation: MatcherRelationStatus;\n} | {\n readonly kind: \"event\";\n readonly eventId: string;\n readonly toolOccurrenceId?: string;\n readonly relation: MatcherRelationStatus;\n};\nexport interface MatcherRetainedRow {\n readonly locator: MatcherSourceLocator;\n readonly result: \"matched\" | \"mismatched\" | \"unavailable\" | \"not-evaluated\";\n readonly difference?: AssertionSnapshotValue;\n}\nexport interface MatcherQueryStep {\n readonly step: number;\n readonly summary: AssertionSnapshotValue;\n}\nexport type MatcherSourceSnapshot = {\n readonly scope: \"turn\";\n readonly sessionId: string;\n readonly turnId: string;\n readonly scopeId: string;\n readonly throughSessionSequence: number;\n readonly source: {\n readonly family: \"niceeval.agent-turns\";\n readonly schemaVersion: number;\n };\n readonly collectionAtCut: \"complete\" | \"partial\" | \"unavailable\";\n} | {\n readonly scope: \"session\";\n readonly sessionId: string;\n readonly scopeId: string;\n readonly throughSessionSequence: number;\n readonly source: {\n readonly family: \"niceeval.agent-turns\";\n readonly schemaVersion: number;\n };\n readonly collectionAtCut: \"complete\" | \"partial\" | \"unavailable\";\n} | {\n readonly scope: \"attempt\";\n readonly scopeId: string;\n readonly sessions: readonly {\n readonly sessionId: string;\n readonly throughSessionSequence: number;\n }[];\n readonly source: {\n readonly family: \"niceeval.agent-turns\";\n readonly schemaVersion: number;\n };\n readonly collectionAtCut: \"complete\" | \"partial\" | \"unavailable\";\n};\nexport interface OrderStepReceipt {\n readonly step: number;\n readonly comparisons: number;\n readonly matched: number;\n readonly mismatched: number;\n readonly unavailable: number;\n}\nexport interface OrderEvaluationReceipt {\n readonly sourceRows: number;\n readonly comparisons: number;\n readonly unavailableComparisons: number;\n readonly definitePrefixLength: number;\n readonly possiblePrefixLength: number;\n readonly stepReceipts: readonly OrderStepReceipt[];\n readonly complete: boolean;\n readonly exhaustive: boolean;\n readonly decisive: boolean;\n}\nexport interface MatcherOrderPathNode {\n readonly step: number;\n readonly locator: MatcherSourceLocator;\n readonly sessionId: string;\n readonly sessionSequence: number;\n readonly result: \"matched\" | \"unavailable\";\n}\nexport interface MatcherFailureFrontier {\n readonly longestDefinitePrefix: readonly MatcherOrderPathNode[];\n readonly longestPossiblePrefix: readonly MatcherOrderPathNode[];\n readonly firstBlockingStep: number;\n readonly suffixChecked: AssertionCollectionReceipt;\n readonly representatives: readonly MatcherRetainedRow[];\n}\nexport type MatcherQueryArtifact = {\n readonly kind: \"collection-filter\";\n readonly sourceSnapshot: MatcherSourceSnapshot;\n readonly query: MatcherQueryStep;\n readonly receipt: AssertionCollectionReceipt;\n readonly retainedRows: readonly MatcherRetainedRow[];\n} | {\n readonly kind: \"ordered-sequence\";\n readonly sourceSnapshot: Extract<MatcherSourceSnapshot, {\n readonly scope: \"turn\" | \"session\";\n }>;\n readonly querySteps: readonly MatcherQueryStep[];\n readonly receipt: OrderEvaluationReceipt;\n readonly result: {\n readonly state: \"matched\";\n readonly witnessPath: readonly MatcherOrderPathNode[];\n } | {\n readonly state: \"mismatched\";\n readonly failureFrontier: MatcherFailureFrontier;\n } | {\n readonly state: \"unavailable\";\n readonly reason: string;\n };\n readonly retainedRows: readonly MatcherRetainedRow[];\n};\nexport type AssertionConditionPolicy = {\n readonly kind: \"boolean\";\n readonly expected: true;\n} | {\n readonly kind: \"at-least\";\n readonly threshold: number;\n} | {\n readonly kind: \"record-only\";\n};\nexport interface AssertionPolicy {\n readonly requirement: \"required\" | \"optional\";\n readonly condition: AssertionConditionPolicy;\n}\nexport type AssertionObserved = {\n readonly kind: \"boolean\";\n readonly outcome: \"matched\" | \"mismatched\" | \"unavailable\" | \"errored\" | \"not-applicable\";\n} | {\n readonly kind: \"measurement\";\n readonly state: \"available\";\n readonly value: number;\n} | {\n readonly kind: \"measurement\";\n readonly state: \"unavailable\";\n} | {\n readonly kind: \"direct-score\";\n readonly state: \"available\";\n readonly value: number;\n} | {\n readonly kind: \"direct-score\";\n readonly state: \"unavailable\";\n};\nexport type AssertionResult = {\n readonly state: \"matched\";\n readonly gate: \"not-gate\" | \"satisfied\";\n readonly score: Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\" | \"earned\";\n }>;\n readonly diagnostic?: AssertionSnapshotObject;\n readonly receipt?: AssertionCollectionReceipt;\n} | {\n readonly state: \"mismatched\";\n readonly reason: \"condition-not-met\";\n readonly gate: \"not-gate\" | \"failed\";\n readonly score: Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\" | \"earned\";\n }>;\n readonly diagnostic?: AssertionSnapshotObject;\n readonly receipt?: AssertionCollectionReceipt;\n} | {\n readonly state: \"unavailable\";\n readonly reason: \"evidence-unavailable\" | \"source-unavailable\" | \"redacted\";\n readonly gate: \"not-gate\" | \"unavailable\";\n readonly score: Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\" | \"unavailable\";\n }>;\n readonly diagnostic?: AssertionSnapshotObject;\n readonly receipt?: AssertionCollectionReceipt;\n} | {\n readonly state: \"errored\";\n readonly reason: \"evaluator-failed\" | \"producer-interrupted\" | \"invalid-subject\";\n readonly gate: \"not-gate\" | \"unavailable\";\n readonly score: Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\" | \"unavailable\";\n }>;\n readonly diagnostic?: AssertionSnapshotObject;\n readonly receipt?: AssertionCollectionReceipt;\n} | {\n readonly state: \"not-applicable\";\n readonly reason: \"coverage-not-applicable\";\n readonly gate: \"not-gate\" | \"not-applicable\";\n readonly score: Extract<AssertionScoreContribution, {\n readonly state: \"not-scored\" | \"unavailable\";\n }>;\n readonly diagnostic?: AssertionSnapshotObject;\n readonly receipt?: AssertionCollectionReceipt;\n};\n/** One fully formed author/runtime result, before durable attachment encoding. */\nexport interface SealedAssertionEntry {\n readonly display: AssertionDisplay;\n readonly criterion: AssertionCriterion;\n readonly subject: AssertionMaterial;\n readonly evidence: readonly AssertionMaterial[];\n readonly coverage: AssertionCoverage;\n readonly limitations: readonly AssertionLimitation[];\n readonly result: AssertionResult;\n readonly policy: AssertionPolicy;\n readonly observed: AssertionObserved;\n readonly matcherArtifact?: MatcherQueryArtifact;\n}\n/**\n * Assertion handles are runtime-owned capabilities, not subjects for another\n * `t.check`. The symbol is public only for TypeScript's nominal boundary; the\n * runtime also keeps an unforgeable ownership registry.\n */\nexport const assertionHandleBrand: unique symbol = Symbol(\"niceeval.assertion-handle\");\ndeclare const assertionConditionStateBrand: unique symbol;\ndeclare const assertionGateStateBrand: unique symbol;\ndeclare const assertionScoreStateBrand: unique symbol;\nexport interface AssertionHandleBase<HasCondition extends boolean = boolean, HasScore extends boolean = boolean> {\n readonly [assertionHandleBrand]: true;\n readonly [assertionConditionStateBrand]: HasCondition;\n readonly [assertionScoreStateBrand]: HasScore;\n key(value: string): this;\n label(value: string): this;\n /** Adds one display-only group segment to this already registered entry. */\n group(title: string): this;\n}\n/** A value that is not an AssertionHandle. */\nexport type AssertionSubject<Value> = Value extends AssertionHandleBase ? never : Value;\n/** Numeric cardinality deliberately excludes the managed event occurrence subject. */\nexport type NumericAssertionSubject<Value> = Value extends ManagedEventOccurrences ? never : AssertionSubject<Value>;\nexport interface AssertionStopError {\n readonly _tag: \"AssertionStopError\";\n readonly entryIndex: number;\n readonly reason: \"condition-not-met\" | \"source-unavailable\" | \"evaluator-failed\" | \"not-applicable\";\n}\n/**\n * A public authoring call reached an Attempt boundary which is no longer able\n * to accept it. Keeping this distinct from an evaluator failure lets a\n * detached Promise diagnose its own lifecycle error instead of looking like a\n * failed assertion.\n */\nexport class AssertionAuthoringClosedError extends Error {\n readonly _tag = \"AssertionAuthoringClosedError\";\n constructor(readonly reason: \"stop-latched\" | \"attempt-sealing\" | \"attempt-sealed\" | \"attempt-interrupted\" | \"runtime-unattached\") {\n super(`Cannot use an Assertion authoring handle after ${reason}`);\n this.name = \"AssertionAuthoringClosedError\";\n }\n}\n/**\n * The owning Attempt executes a requested stop barrier in its existing Effect\n * scope. Handles only enqueue this request; they never create a runtime.\n */\nexport type AssertionStopExecutor = <Value>(effect: Effect.Effect<Value, AssertionStopError, never>) => Promise<Value>;\n/** A Boolean entry is evaluated once and may retain a refinement witness. */\nexport type BooleanAssertionEvaluation<Refined> = {\n readonly state: \"matched\";\n readonly value: Refined;\n readonly diagnostic?: MatchDiagnostic;\n readonly receipt?: AssertionCollectionReceipt;\n readonly matcherArtifact?: MatcherQueryArtifact;\n} | {\n readonly state: \"mismatched\";\n readonly diagnostic?: MatchDiagnostic;\n readonly receipt?: AssertionCollectionReceipt;\n readonly matcherArtifact?: MatcherQueryArtifact;\n} | {\n readonly state: \"unavailable\";\n readonly reason: \"evidence-unavailable\" | \"source-unavailable\" | \"redacted\";\n readonly diagnostic?: MatchDiagnostic;\n readonly receipt?: AssertionCollectionReceipt;\n readonly matcherArtifact?: MatcherQueryArtifact;\n} | {\n readonly state: \"not-applicable\";\n readonly diagnostic?: MatchDiagnostic;\n readonly matcherArtifact?: MatcherQueryArtifact;\n};\n/** A measurement is always a finite unit-interval value when it is available. */\nexport type MeasurementAssertionEvaluation = {\n readonly receipt?: AssertionCollectionReceipt;\n} & ({\n readonly state: \"measured\";\n readonly value: number;\n readonly detail?: AssertionSnapshotObject;\n} | {\n readonly state: \"unavailable\";\n readonly reason: \"evidence-unavailable\" | \"source-unavailable\" | \"redacted\";\n readonly detail?: AssertionSnapshotObject;\n} | {\n readonly state: \"not-applicable\";\n readonly detail?: AssertionSnapshotObject;\n} | {\n readonly state: \"errored\";\n readonly detail?: AssertionSnapshotObject;\n});\nexport interface CapturedAssertionSnapshot {\n readonly material: Extract<AssertionMaterial, {\n readonly kind: \"snapshot\";\n }>;\n readonly coverage: AssertionCoverage;\n readonly limitations: readonly AssertionLimitation[];\n}\nexport interface AssertionRegistrationBase {\n /** @internal Seal the criterion for the actual local or managed evaluation path. */\n readonly terminalCriterion?: () => AssertionCriterion;\n readonly retainedBytes?: number;\n readonly terminalReceipt?: () => AssertionCollectionReceipt;\n readonly criterion: AssertionCriterion;\n readonly subject: AssertionMaterial;\n readonly evidence?: readonly AssertionMaterial[];\n readonly coverage?: AssertionCoverage;\n readonly limitations?: readonly AssertionLimitation[];\n}\n/**\n * Scope, Judge, and Sandbox adapters use this internal registration shape.\n * They still register exactly one Assertion entry; they do not manufacture a\n * separate intermediate value for a later consumer.\n */\nexport interface BooleanAssertionRegistration<Refined> extends AssertionRegistrationBase {\n /** Sealed when Attempt interruption prevents the ordinary evaluator from running. */\n readonly interruptedMatcherArtifact?: MatcherQueryArtifact;\n readonly evaluate: () => Effect.Effect<BooleanAssertionEvaluation<Refined>, unknown, never>;\n}\nexport interface MeasurementAssertionRegistration extends AssertionRegistrationBase {\n /** Bytes synchronously reserved from an Attempt-local producer budget. */\n readonly retainedBytes?: number;\n readonly retainedImageBytes?: number;\n /** Complete terminal Content appended exactly once by the shared sealing path. */\n readonly terminalEvidence?: () => readonly AssertionMaterial[];\n /** Terminal producer facts frozen by the shared Assertion sealing path. */\n readonly terminalDetail?: () => AssertionSnapshotObject;\n readonly evaluate: () => Effect.Effect<MeasurementAssertionEvaluation, unknown, never>;\n}\nexport interface PassBooleanAssertionHandle<out Refined, HasGate extends boolean = false> extends AssertionHandleBase<true, false> {\n readonly kind: \"boolean\";\n readonly [assertionGateStateBrand]: HasGate;\n /** An unavailable/errored optional entry does not independently error Verdict. */\n optional(): this;\n gate(this: PassBooleanAssertionHandle<Refined, false>): PassBooleanAssertionHandle<Refined, true>;\n orStop(): Promise<Refined>;\n}\nexport interface ScoreBooleanAssertionHandle<out Refined, HasGate extends boolean = false, HasScore extends boolean = false> extends AssertionHandleBase<true, HasScore> {\n readonly kind: \"boolean\";\n readonly [assertionGateStateBrand]: HasGate;\n gate(this: ScoreBooleanAssertionHandle<Refined, false, HasScore>): ScoreBooleanAssertionHandle<Refined, true, HasScore>;\n score(this: ScoreBooleanAssertionHandle<Refined, HasGate, false>, points: number): ScoreBooleanAssertionHandle<Refined, HasGate, true>;\n orStop(): Promise<Refined>;\n}\nexport interface PassMeasurementAssertionHandle<HasCondition extends boolean = false> extends AssertionHandleBase<HasCondition, false> {\n readonly kind: \"measurement\";\n gate(this: PassMeasurementAssertionHandle<false>, minimum: number): PassMeasurementAssertionHandle<true>;\n orStop(this: PassMeasurementAssertionHandle<false>, minimum: number): Promise<number>;\n orStop(this: PassMeasurementAssertionHandle<true>): Promise<number>;\n}\nexport interface ScoreMeasurementAssertionHandle<HasCondition extends boolean = false, HasScore extends boolean = false> extends AssertionHandleBase<HasCondition, HasScore> {\n readonly kind: \"measurement\";\n gate(this: ScoreMeasurementAssertionHandle<false, HasScore>, minimum: number): ScoreMeasurementAssertionHandle<true, HasScore>;\n score(this: ScoreMeasurementAssertionHandle<HasCondition, false>, points: number): ScoreMeasurementAssertionHandle<HasCondition, true>;\n orStop(this: ScoreMeasurementAssertionHandle<false, HasScore>, minimum: number): Promise<number>;\n orStop(this: ScoreMeasurementAssertionHandle<true, HasScore>): Promise<number>;\n}\n/** A Boolean Assertion that intentionally has no author control-flow operation. */\ninterface PostRunPassBooleanAssertionHandle<Refined, HasGate extends boolean = false> extends AssertionHandleBase<true, false> {\n readonly kind: \"boolean\";\n readonly [assertionGateStateBrand]: HasGate;\n optional(): this;\n gate(this: PostRunPassBooleanAssertionHandle<Refined, false>): PostRunPassBooleanAssertionHandle<Refined, true>;\n}\ninterface PostRunScoreBooleanAssertionHandle<Refined, HasGate extends boolean = false, HasScore extends boolean = false> extends AssertionHandleBase<true, HasScore> {\n readonly kind: \"boolean\";\n readonly [assertionGateStateBrand]: HasGate;\n gate(this: PostRunScoreBooleanAssertionHandle<Refined, false, HasScore>): PostRunScoreBooleanAssertionHandle<Refined, true, HasScore>;\n score(this: PostRunScoreBooleanAssertionHandle<Refined, HasGate, false>, points: number): PostRunScoreBooleanAssertionHandle<Refined, HasGate, true>;\n}\nexport type PostRunBooleanAssertionHandle<Kind extends AssertionEvaluationKind, Refined, HasGate extends boolean = false, HasScore extends boolean = false> = Kind extends \"pass\" ? PostRunPassBooleanAssertionHandle<Refined, HasGate> : PostRunScoreBooleanAssertionHandle<Refined, HasGate, HasScore>;\n/** Direct score is an Assertion entry, but has no condition or stop barrier. */\nexport interface DirectScoreAssertionHandle extends AssertionHandleBase<false, true> {\n readonly kind: \"direct-score\";\n}\n/**\n * Definition-time handle shared by Adapter Assertion factories. It exposes\n * only operations whose meaning is identical in Pass and Score Evals; the\n * bound Eval factory replaces it with the native handle for its Kind.\n */\nexport interface PolymorphicBooleanAssertionHandle<out Refined, HasGate extends boolean = false> extends AssertionHandleBase<true, false> {\n readonly kind: \"boolean\";\n readonly [assertionGateStateBrand]: HasGate;\n gate(this: PolymorphicBooleanAssertionHandle<Refined, false>): PolymorphicBooleanAssertionHandle<Refined, true>;\n orStop(): Promise<Refined>;\n}\n/** Definition-time measurement counterpart to PolymorphicBooleanAssertionHandle. */\nexport interface PolymorphicMeasurementAssertionHandle<HasCondition extends boolean = false> extends AssertionHandleBase<HasCondition, false> {\n readonly kind: \"measurement\";\n gate(this: PolymorphicMeasurementAssertionHandle<false>, minimum: number): PolymorphicMeasurementAssertionHandle<true>;\n orStop(this: PolymorphicMeasurementAssertionHandle<false>, minimum: number): Promise<number>;\n orStop(this: PolymorphicMeasurementAssertionHandle<true>): Promise<number>;\n}\nexport type AssertionCheckKind = AssertionEvaluationKind | \"polymorphic\";\ntype CheckedBooleanHandle<Kind extends AssertionCheckKind, Refined> = Kind extends AssertionEvaluationKind ? BooleanAssertionHandle<Kind, Refined> : PolymorphicBooleanAssertionHandle<Refined>;\ntype CheckedMeasurementHandle<Kind extends AssertionCheckKind> = Kind extends AssertionEvaluationKind ? MeasurementAssertionHandle<Kind> : PolymorphicMeasurementAssertionHandle;\n/** Single owner for the public check overload set, including Adapter-polymorphic factories. */\nexport interface AssertionCheck<Kind extends AssertionCheckKind, Context = unknown> {\n <T>(match: import(\"./context-match.ts\").MaterialMatch<Context, T>): CheckedBooleanHandle<Kind, void>;\n <T>(match: import(\"./context-match.ts\").ContextBooleanMatch<Context, T>): CheckedBooleanHandle<Kind, void>;\n <T>(match: import(\"./context-match.ts\").ContextScoreMatch<Context, T>): CheckedMeasurementHandle<Kind>;\n (value: import(\"./match.ts\").NumericMaterial, match: NumericComparisonMatch): CheckedBooleanHandle<Kind, number>;\n <Value, Refined extends Value>(value: AssertionSubject<Value>, match: BooleanMatch<NoInfer<Value>, Refined, \"value\">): CheckedBooleanHandle<Kind, Refined>;\n <Value extends readonly unknown[]>(value: NumericAssertionSubject<Value>, match: NumericComparisonMatch): CheckedBooleanHandle<Kind, Value>;\n <S extends \"turn\" | \"session\" | \"attempt\">(value: AssertionSubject<ManagedToolCalls<S>>, match: ToolMatch): CheckedBooleanHandle<Kind, ManagedToolCalls<S>>;\n <S extends \"turn\" | \"session\" | \"attempt\">(value: AssertionSubject<ManagedEventOccurrences<S>>, match: EventMatch): CheckedBooleanHandle<Kind, ManagedEventOccurrences<S>>;\n <Value>(value: AssertionSubject<Value>, match: CollectionMatch<NoInfer<Value>>): CheckedBooleanHandle<Kind, Value>;\n <Value>(value: AssertionSubject<Value>, match: ScoreMatch<NoInfer<Value>>): CheckedMeasurementHandle<Kind>;\n}\nexport interface AssertionGroupContext {\n /**\n * Runs an ordinary author callback with one display-only group segment. The\n * callback remains inside the Attempt's outer Promise boundary; this facade\n * does not evaluate an Effect or create an independent runtime.\n */\n group<Value>(title: string, body: () => Value | PromiseLike<Value>): Promise<Awaited<Value>>;\n}\nexport interface PassAssertionsContext extends AssertionGroupContext {\n readonly evaluationKind: \"pass\";\n readonly check: AssertionCheck<\"pass\">;\n}\n/** Adds direct points, or a unit-interval measurement with an explicit fixed weight. */\nexport interface ScoreFunction {\n (points: number): DirectScoreAssertionHandle;\n (ratio: number | NumericMaterial, options: {\n readonly weight: number;\n }): ScoreMeasurementAssertionHandle<false, true>;\n}\nexport interface ScoreAssertionsContext extends AssertionGroupContext {\n readonly evaluationKind: \"score\";\n readonly check: AssertionCheck<\"score\">;\n readonly score: ScoreFunction;\n}\nexport type AssertionsContext<Kind extends AssertionEvaluationKind> = Kind extends \"pass\" ? PassAssertionsContext : ScoreAssertionsContext;\nexport type BooleanAssertionHandle<Kind extends AssertionEvaluationKind, Refined, HasGate extends boolean = false, HasScore extends boolean = false> = Kind extends \"pass\" ? PassBooleanAssertionHandle<Refined, HasGate> : ScoreBooleanAssertionHandle<Refined, HasGate, HasScore>;\nexport type MeasurementAssertionHandle<Kind extends AssertionEvaluationKind, HasCondition extends boolean = false, HasScore extends boolean = false> = Kind extends \"pass\" ? PassMeasurementAssertionHandle<HasCondition> : ScoreMeasurementAssertionHandle<HasCondition, HasScore>;\nexport interface AssertionSealOptions {\n readonly execution?: \"completed\" | \"errored\";\n readonly explicitlySkipped?: boolean;\n /**\n * The owning Attempt was interrupted before ordinary evaluation could\n * finish. Unsettled entries are sealed as producer-interrupted instead of\n * being silently omitted or evaluated on a detached runtime.\n */\n readonly interrupted?: boolean;\n}\n/** Sealing has no expected authoring failure after registration-time validation. */\nexport type AssertionSealError = never;\n/** The sealed evaluation is a domain result, not a durable Record payload. */\nexport interface SealedAssertionEvaluationEntry {\n readonly required: boolean;\n readonly result: AssertionResult;\n}\nexport interface SealedAssertionEvaluation {\n readonly execution: \"completed\" | \"errored\";\n readonly explicitlySkipped: boolean;\n readonly assertions: readonly SealedAssertionEvaluationEntry[];\n}\n/**\n * One immutable result feeds the Verdict/Score fold and the private durable\n * producer adapter. No RecordAttachment writer type crosses this boundary.\n */\nexport interface SealedAssertionsRuntime {\n readonly entries: readonly SealedAssertionEntry[];\n readonly evaluation: SealedAssertionEvaluation;\n}\n/** The runtime Verdict is independent of the durable Verdict attachment codec. */\nexport interface AssertionVerdict {\n readonly state: import(\"../shared/types.ts\").Verdict;\n}\nexport type AssertionScoreIncompleteReason = \"execution-errored\" | \"source-unavailable\" | \"evaluation-errored\" | \"not-applicable\";\n/** The runtime Score is independent of the durable Score attachment codec. */\nexport type AssertionScore = {\n readonly state: \"complete\";\n readonly earned: number;\n} | {\n readonly state: \"partial\";\n readonly earned: number;\n readonly reasons: readonly AssertionScoreIncompleteReason[];\n} | {\n readonly state: \"unavailable\";\n readonly reasons: readonly AssertionScoreIncompleteReason[];\n};\n/**\n * The attempt-owned frozen result is handed from Runner to the Evaluation\n * Record adapter. The adapter alone adds attachment schemas and writes.\n */\nexport interface SealedAttemptAssertions {\n readonly entries: readonly SealedAssertionEntry[];\n readonly evaluation: SealedAssertionEvaluation;\n readonly workspaceDiff?: AgentWorkspaceDiff;\n readonly verdict: AssertionVerdict;\n readonly score?: AssertionScore;\n}\nexport interface AssertionsRuntime<Kind extends AssertionEvaluationKind> {\n readonly evaluationKind: Kind;\n readonly t: AssertionsContext<Kind>;\n /** @internal Reject before an adapter reads or snapshots author material. */\n assertAuthoringOpen(): void;\n /** Attempt-owned synchronous admission close; sealing still happens once through `seal`. */\n closeAuthoring(reason: \"attempt-sealing\" | \"attempt-interrupted\"): void;\n registerBoolean<Refined>(definition: BooleanAssertionRegistration<Refined>): BooleanAssertionHandle<Kind, Refined>;\n registerMeasurement(definition: MeasurementAssertionRegistration): MeasurementAssertionHandle<Kind>;\n seal(options?: AssertionSealOptions): Effect.Effect<SealedAssertionsRuntime, AssertionSealError, never>;\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Effect } from "effect";
|
|
2
|
-
import type { BooleanMatch, CollectionMatch, ManagedToolCalls, MatchDiagnostic, NumericComparator, NumericComparisonMatch, ScoreMatch, EventMatch, ManagedEventOccurrences, ToolMatch } from "./match.cjs";
|
|
2
|
+
import type { BooleanMatch, CollectionMatch, ManagedToolCalls, MatchDiagnostic, NumericComparator, NumericMaterial, NumericComparisonMatch, ScoreMatch, EventMatch, ManagedEventOccurrences, ToolMatch } from "./match.cjs";
|
|
3
3
|
import type { AgentWorkspaceDiff } from "./workspace-diff.cjs";
|
|
4
4
|
import type { EvaluationKind } from "../shared/evaluation.cjs";
|
|
5
5
|
import type { JudgeImage } from "../judge/image.cjs";
|
|
@@ -22,7 +22,7 @@ export type AssertionCoverage = {
|
|
|
22
22
|
readonly state: "complete";
|
|
23
23
|
} | {
|
|
24
24
|
readonly state: "partial";
|
|
25
|
-
readonly reason: "sampled" | "truncated" | "redacted" | "provider-limited";
|
|
25
|
+
readonly reason: "sampled" | "truncated" | "redacted" | "provider-limited" | "capacity-limited";
|
|
26
26
|
} | {
|
|
27
27
|
readonly state: "unavailable";
|
|
28
28
|
readonly reason: "not-collected" | "source-unavailable" | "producer-failed";
|
|
@@ -42,6 +42,11 @@ export type AssertionLimitation = {
|
|
|
42
42
|
readonly omittedBytes: number;
|
|
43
43
|
} | {
|
|
44
44
|
readonly kind: "provider-limited";
|
|
45
|
+
} | {
|
|
46
|
+
readonly kind: "capacity-limited";
|
|
47
|
+
readonly capturedItems: number;
|
|
48
|
+
readonly knownTotalItems: number;
|
|
49
|
+
readonly omittedBytes: number | null;
|
|
45
50
|
};
|
|
46
51
|
/**
|
|
47
52
|
* Authoring material intentionally has no blob ref, attachment entry ID, or
|
|
@@ -443,6 +448,8 @@ export type BooleanAssertionEvaluation<Refined> = {
|
|
|
443
448
|
};
|
|
444
449
|
/** A measurement is always a finite unit-interval value when it is available. */
|
|
445
450
|
export type MeasurementAssertionEvaluation = {
|
|
451
|
+
readonly receipt?: AssertionCollectionReceipt;
|
|
452
|
+
} & ({
|
|
446
453
|
readonly state: "measured";
|
|
447
454
|
readonly value: number;
|
|
448
455
|
readonly detail?: AssertionSnapshotObject;
|
|
@@ -456,7 +463,7 @@ export type MeasurementAssertionEvaluation = {
|
|
|
456
463
|
} | {
|
|
457
464
|
readonly state: "errored";
|
|
458
465
|
readonly detail?: AssertionSnapshotObject;
|
|
459
|
-
};
|
|
466
|
+
});
|
|
460
467
|
export interface CapturedAssertionSnapshot {
|
|
461
468
|
readonly material: Extract<AssertionMaterial, {
|
|
462
469
|
readonly kind: "snapshot";
|
|
@@ -465,6 +472,10 @@ export interface CapturedAssertionSnapshot {
|
|
|
465
472
|
readonly limitations: readonly AssertionLimitation[];
|
|
466
473
|
}
|
|
467
474
|
export interface AssertionRegistrationBase {
|
|
475
|
+
/** @internal Seal the criterion for the actual local or managed evaluation path. */
|
|
476
|
+
readonly terminalCriterion?: () => AssertionCriterion;
|
|
477
|
+
readonly retainedBytes?: number;
|
|
478
|
+
readonly terminalReceipt?: () => AssertionCollectionReceipt;
|
|
468
479
|
readonly criterion: AssertionCriterion;
|
|
469
480
|
readonly subject: AssertionMaterial;
|
|
470
481
|
readonly evidence?: readonly AssertionMaterial[];
|
|
@@ -559,7 +570,11 @@ export type AssertionCheckKind = AssertionEvaluationKind | "polymorphic";
|
|
|
559
570
|
type CheckedBooleanHandle<Kind extends AssertionCheckKind, Refined> = Kind extends AssertionEvaluationKind ? BooleanAssertionHandle<Kind, Refined> : PolymorphicBooleanAssertionHandle<Refined>;
|
|
560
571
|
type CheckedMeasurementHandle<Kind extends AssertionCheckKind> = Kind extends AssertionEvaluationKind ? MeasurementAssertionHandle<Kind> : PolymorphicMeasurementAssertionHandle;
|
|
561
572
|
/** Single owner for the public check overload set, including Adapter-polymorphic factories. */
|
|
562
|
-
export interface AssertionCheck<Kind extends AssertionCheckKind> {
|
|
573
|
+
export interface AssertionCheck<Kind extends AssertionCheckKind, Context = unknown> {
|
|
574
|
+
<T>(match: import("./context-match.cjs").MaterialMatch<Context, T>): CheckedBooleanHandle<Kind, void>;
|
|
575
|
+
<T>(match: import("./context-match.cjs").ContextBooleanMatch<Context, T>): CheckedBooleanHandle<Kind, void>;
|
|
576
|
+
<T>(match: import("./context-match.cjs").ContextScoreMatch<Context, T>): CheckedMeasurementHandle<Kind>;
|
|
577
|
+
(value: import("./match.cjs").NumericMaterial, match: NumericComparisonMatch): CheckedBooleanHandle<Kind, number>;
|
|
563
578
|
<Value, Refined extends Value>(value: AssertionSubject<Value>, match: BooleanMatch<NoInfer<Value>, Refined, "value">): CheckedBooleanHandle<Kind, Refined>;
|
|
564
579
|
<Value extends readonly unknown[]>(value: NumericAssertionSubject<Value>, match: NumericComparisonMatch): CheckedBooleanHandle<Kind, Value>;
|
|
565
580
|
<S extends "turn" | "session" | "attempt">(value: AssertionSubject<ManagedToolCalls<S>>, match: ToolMatch): CheckedBooleanHandle<Kind, ManagedToolCalls<S>>;
|
|
@@ -579,10 +594,17 @@ export interface PassAssertionsContext extends AssertionGroupContext {
|
|
|
579
594
|
readonly evaluationKind: "pass";
|
|
580
595
|
readonly check: AssertionCheck<"pass">;
|
|
581
596
|
}
|
|
597
|
+
/** Adds direct points, or a unit-interval measurement with an explicit fixed weight. */
|
|
598
|
+
export interface ScoreFunction {
|
|
599
|
+
(points: number): DirectScoreAssertionHandle;
|
|
600
|
+
(ratio: number | NumericMaterial, options: {
|
|
601
|
+
readonly weight: number;
|
|
602
|
+
}): ScoreMeasurementAssertionHandle<false, true>;
|
|
603
|
+
}
|
|
582
604
|
export interface ScoreAssertionsContext extends AssertionGroupContext {
|
|
583
605
|
readonly evaluationKind: "score";
|
|
584
606
|
readonly check: AssertionCheck<"score">;
|
|
585
|
-
score
|
|
607
|
+
readonly score: ScoreFunction;
|
|
586
608
|
}
|
|
587
609
|
export type AssertionsContext<Kind extends AssertionEvaluationKind> = Kind extends "pass" ? PassAssertionsContext : ScoreAssertionsContext;
|
|
588
610
|
export type BooleanAssertionHandle<Kind extends AssertionEvaluationKind, Refined, HasGate extends boolean = false, HasScore extends boolean = false> = Kind extends "pass" ? PassBooleanAssertionHandle<Refined, HasGate> : ScoreBooleanAssertionHandle<Refined, HasGate, HasScore>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Effect } from "effect";
|
|
2
|
-
import type { BooleanMatch, CollectionMatch, ManagedToolCalls, MatchDiagnostic, NumericComparator, NumericComparisonMatch, ScoreMatch, EventMatch, ManagedEventOccurrences, ToolMatch } from "./match.mjs";
|
|
2
|
+
import type { BooleanMatch, CollectionMatch, ManagedToolCalls, MatchDiagnostic, NumericComparator, NumericMaterial, NumericComparisonMatch, ScoreMatch, EventMatch, ManagedEventOccurrences, ToolMatch } from "./match.mjs";
|
|
3
3
|
import type { AgentWorkspaceDiff } from "./workspace-diff.mjs";
|
|
4
4
|
import type { EvaluationKind } from "../shared/evaluation.mjs";
|
|
5
5
|
import type { JudgeImage } from "../judge/image.mjs";
|
|
@@ -22,7 +22,7 @@ export type AssertionCoverage = {
|
|
|
22
22
|
readonly state: "complete";
|
|
23
23
|
} | {
|
|
24
24
|
readonly state: "partial";
|
|
25
|
-
readonly reason: "sampled" | "truncated" | "redacted" | "provider-limited";
|
|
25
|
+
readonly reason: "sampled" | "truncated" | "redacted" | "provider-limited" | "capacity-limited";
|
|
26
26
|
} | {
|
|
27
27
|
readonly state: "unavailable";
|
|
28
28
|
readonly reason: "not-collected" | "source-unavailable" | "producer-failed";
|
|
@@ -42,6 +42,11 @@ export type AssertionLimitation = {
|
|
|
42
42
|
readonly omittedBytes: number;
|
|
43
43
|
} | {
|
|
44
44
|
readonly kind: "provider-limited";
|
|
45
|
+
} | {
|
|
46
|
+
readonly kind: "capacity-limited";
|
|
47
|
+
readonly capturedItems: number;
|
|
48
|
+
readonly knownTotalItems: number;
|
|
49
|
+
readonly omittedBytes: number | null;
|
|
45
50
|
};
|
|
46
51
|
/**
|
|
47
52
|
* Authoring material intentionally has no blob ref, attachment entry ID, or
|
|
@@ -443,6 +448,8 @@ export type BooleanAssertionEvaluation<Refined> = {
|
|
|
443
448
|
};
|
|
444
449
|
/** A measurement is always a finite unit-interval value when it is available. */
|
|
445
450
|
export type MeasurementAssertionEvaluation = {
|
|
451
|
+
readonly receipt?: AssertionCollectionReceipt;
|
|
452
|
+
} & ({
|
|
446
453
|
readonly state: "measured";
|
|
447
454
|
readonly value: number;
|
|
448
455
|
readonly detail?: AssertionSnapshotObject;
|
|
@@ -456,7 +463,7 @@ export type MeasurementAssertionEvaluation = {
|
|
|
456
463
|
} | {
|
|
457
464
|
readonly state: "errored";
|
|
458
465
|
readonly detail?: AssertionSnapshotObject;
|
|
459
|
-
};
|
|
466
|
+
});
|
|
460
467
|
export interface CapturedAssertionSnapshot {
|
|
461
468
|
readonly material: Extract<AssertionMaterial, {
|
|
462
469
|
readonly kind: "snapshot";
|
|
@@ -465,6 +472,10 @@ export interface CapturedAssertionSnapshot {
|
|
|
465
472
|
readonly limitations: readonly AssertionLimitation[];
|
|
466
473
|
}
|
|
467
474
|
export interface AssertionRegistrationBase {
|
|
475
|
+
/** @internal Seal the criterion for the actual local or managed evaluation path. */
|
|
476
|
+
readonly terminalCriterion?: () => AssertionCriterion;
|
|
477
|
+
readonly retainedBytes?: number;
|
|
478
|
+
readonly terminalReceipt?: () => AssertionCollectionReceipt;
|
|
468
479
|
readonly criterion: AssertionCriterion;
|
|
469
480
|
readonly subject: AssertionMaterial;
|
|
470
481
|
readonly evidence?: readonly AssertionMaterial[];
|
|
@@ -559,7 +570,11 @@ export type AssertionCheckKind = AssertionEvaluationKind | "polymorphic";
|
|
|
559
570
|
type CheckedBooleanHandle<Kind extends AssertionCheckKind, Refined> = Kind extends AssertionEvaluationKind ? BooleanAssertionHandle<Kind, Refined> : PolymorphicBooleanAssertionHandle<Refined>;
|
|
560
571
|
type CheckedMeasurementHandle<Kind extends AssertionCheckKind> = Kind extends AssertionEvaluationKind ? MeasurementAssertionHandle<Kind> : PolymorphicMeasurementAssertionHandle;
|
|
561
572
|
/** Single owner for the public check overload set, including Adapter-polymorphic factories. */
|
|
562
|
-
export interface AssertionCheck<Kind extends AssertionCheckKind> {
|
|
573
|
+
export interface AssertionCheck<Kind extends AssertionCheckKind, Context = unknown> {
|
|
574
|
+
<T>(match: import("./context-match.mjs").MaterialMatch<Context, T>): CheckedBooleanHandle<Kind, void>;
|
|
575
|
+
<T>(match: import("./context-match.mjs").ContextBooleanMatch<Context, T>): CheckedBooleanHandle<Kind, void>;
|
|
576
|
+
<T>(match: import("./context-match.mjs").ContextScoreMatch<Context, T>): CheckedMeasurementHandle<Kind>;
|
|
577
|
+
(value: import("./match.mjs").NumericMaterial, match: NumericComparisonMatch): CheckedBooleanHandle<Kind, number>;
|
|
563
578
|
<Value, Refined extends Value>(value: AssertionSubject<Value>, match: BooleanMatch<NoInfer<Value>, Refined, "value">): CheckedBooleanHandle<Kind, Refined>;
|
|
564
579
|
<Value extends readonly unknown[]>(value: NumericAssertionSubject<Value>, match: NumericComparisonMatch): CheckedBooleanHandle<Kind, Value>;
|
|
565
580
|
<S extends "turn" | "session" | "attempt">(value: AssertionSubject<ManagedToolCalls<S>>, match: ToolMatch): CheckedBooleanHandle<Kind, ManagedToolCalls<S>>;
|
|
@@ -579,10 +594,17 @@ export interface PassAssertionsContext extends AssertionGroupContext {
|
|
|
579
594
|
readonly evaluationKind: "pass";
|
|
580
595
|
readonly check: AssertionCheck<"pass">;
|
|
581
596
|
}
|
|
597
|
+
/** Adds direct points, or a unit-interval measurement with an explicit fixed weight. */
|
|
598
|
+
export interface ScoreFunction {
|
|
599
|
+
(points: number): DirectScoreAssertionHandle;
|
|
600
|
+
(ratio: number | NumericMaterial, options: {
|
|
601
|
+
readonly weight: number;
|
|
602
|
+
}): ScoreMeasurementAssertionHandle<false, true>;
|
|
603
|
+
}
|
|
582
604
|
export interface ScoreAssertionsContext extends AssertionGroupContext {
|
|
583
605
|
readonly evaluationKind: "score";
|
|
584
606
|
readonly check: AssertionCheck<"score">;
|
|
585
|
-
score
|
|
607
|
+
readonly score: ScoreFunction;
|
|
586
608
|
}
|
|
587
609
|
export type AssertionsContext<Kind extends AssertionEvaluationKind> = Kind extends "pass" ? PassAssertionsContext : ScoreAssertionsContext;
|
|
588
610
|
export type BooleanAssertionHandle<Kind extends AssertionEvaluationKind, Refined, HasGate extends boolean = false, HasScore extends boolean = false> = Kind extends "pass" ? PassBooleanAssertionHandle<Refined, HasGate> : ScoreBooleanAssertionHandle<Refined, HasGate, HasScore>;
|
package/dist/assertions/api.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Effect } from "effect";
|
|
2
|
-
import type { BooleanMatch, CollectionMatch, ManagedToolCalls, MatchDiagnostic, NumericComparator, NumericComparisonMatch, ScoreMatch, EventMatch, ManagedEventOccurrences, ToolMatch } from "./match.js";
|
|
2
|
+
import type { BooleanMatch, CollectionMatch, ManagedToolCalls, MatchDiagnostic, NumericComparator, NumericMaterial, NumericComparisonMatch, ScoreMatch, EventMatch, ManagedEventOccurrences, ToolMatch } from "./match.js";
|
|
3
3
|
import type { AgentWorkspaceDiff } from "./workspace-diff.js";
|
|
4
4
|
import type { EvaluationKind } from "../shared/evaluation.js";
|
|
5
5
|
import type { JudgeImage } from "../judge/image.js";
|
|
@@ -22,7 +22,7 @@ export type AssertionCoverage = {
|
|
|
22
22
|
readonly state: "complete";
|
|
23
23
|
} | {
|
|
24
24
|
readonly state: "partial";
|
|
25
|
-
readonly reason: "sampled" | "truncated" | "redacted" | "provider-limited";
|
|
25
|
+
readonly reason: "sampled" | "truncated" | "redacted" | "provider-limited" | "capacity-limited";
|
|
26
26
|
} | {
|
|
27
27
|
readonly state: "unavailable";
|
|
28
28
|
readonly reason: "not-collected" | "source-unavailable" | "producer-failed";
|
|
@@ -42,6 +42,11 @@ export type AssertionLimitation = {
|
|
|
42
42
|
readonly omittedBytes: number;
|
|
43
43
|
} | {
|
|
44
44
|
readonly kind: "provider-limited";
|
|
45
|
+
} | {
|
|
46
|
+
readonly kind: "capacity-limited";
|
|
47
|
+
readonly capturedItems: number;
|
|
48
|
+
readonly knownTotalItems: number;
|
|
49
|
+
readonly omittedBytes: number | null;
|
|
45
50
|
};
|
|
46
51
|
/**
|
|
47
52
|
* Authoring material intentionally has no blob ref, attachment entry ID, or
|
|
@@ -443,6 +448,8 @@ export type BooleanAssertionEvaluation<Refined> = {
|
|
|
443
448
|
};
|
|
444
449
|
/** A measurement is always a finite unit-interval value when it is available. */
|
|
445
450
|
export type MeasurementAssertionEvaluation = {
|
|
451
|
+
readonly receipt?: AssertionCollectionReceipt;
|
|
452
|
+
} & ({
|
|
446
453
|
readonly state: "measured";
|
|
447
454
|
readonly value: number;
|
|
448
455
|
readonly detail?: AssertionSnapshotObject;
|
|
@@ -456,7 +463,7 @@ export type MeasurementAssertionEvaluation = {
|
|
|
456
463
|
} | {
|
|
457
464
|
readonly state: "errored";
|
|
458
465
|
readonly detail?: AssertionSnapshotObject;
|
|
459
|
-
};
|
|
466
|
+
});
|
|
460
467
|
export interface CapturedAssertionSnapshot {
|
|
461
468
|
readonly material: Extract<AssertionMaterial, {
|
|
462
469
|
readonly kind: "snapshot";
|
|
@@ -465,6 +472,10 @@ export interface CapturedAssertionSnapshot {
|
|
|
465
472
|
readonly limitations: readonly AssertionLimitation[];
|
|
466
473
|
}
|
|
467
474
|
export interface AssertionRegistrationBase {
|
|
475
|
+
/** @internal Seal the criterion for the actual local or managed evaluation path. */
|
|
476
|
+
readonly terminalCriterion?: () => AssertionCriterion;
|
|
477
|
+
readonly retainedBytes?: number;
|
|
478
|
+
readonly terminalReceipt?: () => AssertionCollectionReceipt;
|
|
468
479
|
readonly criterion: AssertionCriterion;
|
|
469
480
|
readonly subject: AssertionMaterial;
|
|
470
481
|
readonly evidence?: readonly AssertionMaterial[];
|
|
@@ -559,7 +570,11 @@ export type AssertionCheckKind = AssertionEvaluationKind | "polymorphic";
|
|
|
559
570
|
type CheckedBooleanHandle<Kind extends AssertionCheckKind, Refined> = Kind extends AssertionEvaluationKind ? BooleanAssertionHandle<Kind, Refined> : PolymorphicBooleanAssertionHandle<Refined>;
|
|
560
571
|
type CheckedMeasurementHandle<Kind extends AssertionCheckKind> = Kind extends AssertionEvaluationKind ? MeasurementAssertionHandle<Kind> : PolymorphicMeasurementAssertionHandle;
|
|
561
572
|
/** Single owner for the public check overload set, including Adapter-polymorphic factories. */
|
|
562
|
-
export interface AssertionCheck<Kind extends AssertionCheckKind> {
|
|
573
|
+
export interface AssertionCheck<Kind extends AssertionCheckKind, Context = unknown> {
|
|
574
|
+
<T>(match: import("./context-match.js").MaterialMatch<Context, T>): CheckedBooleanHandle<Kind, void>;
|
|
575
|
+
<T>(match: import("./context-match.js").ContextBooleanMatch<Context, T>): CheckedBooleanHandle<Kind, void>;
|
|
576
|
+
<T>(match: import("./context-match.js").ContextScoreMatch<Context, T>): CheckedMeasurementHandle<Kind>;
|
|
577
|
+
(value: import("./match.js").NumericMaterial, match: NumericComparisonMatch): CheckedBooleanHandle<Kind, number>;
|
|
563
578
|
<Value, Refined extends Value>(value: AssertionSubject<Value>, match: BooleanMatch<NoInfer<Value>, Refined, "value">): CheckedBooleanHandle<Kind, Refined>;
|
|
564
579
|
<Value extends readonly unknown[]>(value: NumericAssertionSubject<Value>, match: NumericComparisonMatch): CheckedBooleanHandle<Kind, Value>;
|
|
565
580
|
<S extends "turn" | "session" | "attempt">(value: AssertionSubject<ManagedToolCalls<S>>, match: ToolMatch): CheckedBooleanHandle<Kind, ManagedToolCalls<S>>;
|
|
@@ -579,10 +594,17 @@ export interface PassAssertionsContext extends AssertionGroupContext {
|
|
|
579
594
|
readonly evaluationKind: "pass";
|
|
580
595
|
readonly check: AssertionCheck<"pass">;
|
|
581
596
|
}
|
|
597
|
+
/** Adds direct points, or a unit-interval measurement with an explicit fixed weight. */
|
|
598
|
+
export interface ScoreFunction {
|
|
599
|
+
(points: number): DirectScoreAssertionHandle;
|
|
600
|
+
(ratio: number | NumericMaterial, options: {
|
|
601
|
+
readonly weight: number;
|
|
602
|
+
}): ScoreMeasurementAssertionHandle<false, true>;
|
|
603
|
+
}
|
|
582
604
|
export interface ScoreAssertionsContext extends AssertionGroupContext {
|
|
583
605
|
readonly evaluationKind: "score";
|
|
584
606
|
readonly check: AssertionCheck<"score">;
|
|
585
|
-
score
|
|
607
|
+
readonly score: ScoreFunction;
|
|
586
608
|
}
|
|
587
609
|
export type AssertionsContext<Kind extends AssertionEvaluationKind> = Kind extends "pass" ? PassAssertionsContext : ScoreAssertionsContext;
|
|
588
610
|
export type BooleanAssertionHandle<Kind extends AssertionEvaluationKind, Refined, HasGate extends boolean = false, HasScore extends boolean = false> = Kind extends "pass" ? PassBooleanAssertionHandle<Refined, HasGate> : ScoreBooleanAssertionHandle<Refined, HasGate, HasScore>;
|
|
@@ -4,7 +4,13 @@ exports.freezeManagedToolCalls = freezeManagedToolCalls;
|
|
|
4
4
|
exports.managedToolCallsSidecarOf = managedToolCallsSidecarOf;
|
|
5
5
|
exports.freezeManagedEventOccurrences = freezeManagedEventOccurrences;
|
|
6
6
|
exports.managedEventOccurrencesSidecarOf = managedEventOccurrencesSidecarOf;
|
|
7
|
+
exports.toolMatcherQuery = toolMatcherQuery;
|
|
8
|
+
exports.eventMatcherQuery = eventMatcherQuery;
|
|
7
9
|
exports.collectionMatchRegistration = collectionMatchRegistration;
|
|
10
|
+
// @concord-file ne-eval-assertions-collection
|
|
11
|
+
// @concord-implements docs/feature/assertions/library/scoped-assertions.md
|
|
12
|
+
// @concord-implements docs/feature/assertions/architecture/evidence.md
|
|
13
|
+
// @concord-implements docs/feature/eval/use-case/calledtool.md
|
|
8
14
|
const effect_1 = require("effect");
|
|
9
15
|
const matcher_artifact_ts_1 = require("./matcher-artifact.cjs");
|
|
10
16
|
const match_ts_1 = require("./match.cjs");
|