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
package/dist/adapter.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExperimentFlags } from \"./shared/types.ts\";\nimport { assertAdapterFlagsParser, type AdapterFlagsParser, type AdapterFlagsOutput, type AdapterFlagsParserValidation, type AdapterFlagsParserValidationArgs, } from \"./adapter-flags.ts\";\nimport type { AssertionCheck, AssertionSubject, AssertionsRuntime, BooleanAssertionHandle, MeasurementAssertionHandle, PolymorphicBooleanAssertionHandle, PolymorphicMeasurementAssertionHandle, } from \"./assertions/api.ts\";\nimport type { ScoreMatch } from \"./assertions/match.ts\";\nimport { defineEvalForContext } from \"./define.ts\";\nimport type { EvalDefinition, EvalInput, ScoreEvalInput } from \"./runner/types.ts\";\nimport type { EvaluationKind } from \"./shared/evaluation.ts\";\nimport type { JudgePresetMethods } from \"./context/assert-first.ts\";\nimport type { DiagnosticInput, ProgressUpdate } from \"./shared/types.ts\";\nimport type { AdapterIdentity } from \"./record/model/run-context.ts\";\nexport type { AdapterIdentity } from \"./record/model/run-context.ts\";\nconst ADAPTER_CONTRACT_TOKEN: unique symbol = Symbol(\"niceeval.adapterContractToken\");\nconst EVAL_ADAPTER_CONTRACT_TOKEN: unique symbol = Symbol(\"niceeval.evalAdapterContractToken\");\n/**\n * Synchronously assembles Attempt-local Assertion methods from the guarded app\n * facade and the shared check registrar. The returned object must contain only\n * ordinary, synchronously returning methods. Generic and overloaded Assertion\n * sugar is intentionally not callable after binding; use ordinary named\n * parameters so argument and native handle types remain exact.\n */\nexport type AdapterAssertionsFactory<Context extends object, Assertions extends object = object> = (context: AdapterAssertionsFactoryContext<Context>) => Assertions;\n/**\n * Definition inputs for Adapter Assertion sugar. `app` becomes callable after\n * assembly, and `check` may only be called by a returned Assertion method.\n */\nexport interface AdapterAssertionsFactoryContext<Context extends object> {\n readonly app: Readonly<Context>;\n readonly check: AssertionCheck<\"polymorphic\">;\n}\ntype BoundAdapterAssertionResult<Kind extends EvaluationKind, Result> = Result extends PolymorphicBooleanAssertionHandle<infer Refined, infer HasGate> ? BooleanAssertionHandle<Kind, Refined, HasGate> : Result extends PolymorphicMeasurementAssertionHandle<infer HasCondition> ? MeasurementAssertionHandle<Kind, HasCondition> : never;\ntype BoundAdapterAssertionMethod<Kind extends EvaluationKind, Method> = Method extends (...args: infer Args) => infer Result ? ((...args: Args) => Result) extends Method ? (...args: Args) => BoundAdapterAssertionResult<Kind, Result> : never : never;\ntype AdapterAssertionsFor<Assertions extends object | undefined, Kind extends EvaluationKind> = Assertions extends object ? {\n readonly [Key in keyof Assertions]: BoundAdapterAssertionMethod<Kind, Assertions[Key]>;\n} : {};\n/** Keys owned by the neutral Eval runtime or unsafe on a merged object root. */\nconst RESERVED_ADAPTER_CONTEXT_KEYS = [\n \"evaluationKind\",\n \"check\",\n \"judge\",\n \"factuality\",\n \"faithfulness\",\n \"instructionFollowing\",\n \"pairwisePreference\",\n \"closeQA\",\n \"score\",\n \"group\",\n \"skip\",\n \"signal\",\n \"model\",\n \"reasoningEffort\",\n \"flags\",\n \"progress\",\n \"diagnostic\",\n \"log\",\n \"then\",\n \"Object\",\n \"constructor\",\n \"__defineGetter__\",\n \"__defineSetter__\",\n \"hasOwnProperty\",\n \"__lookupGetter__\",\n \"__lookupSetter__\",\n \"isPrototypeOf\",\n \"propertyIsEnumerable\",\n \"toString\",\n \"valueOf\",\n \"__proto__\",\n \"toLocaleString\",\n] as const;\nexport type ReservedAdapterContextKey = typeof RESERVED_ADAPTER_CONTEXT_KEYS[number];\ntype InvalidContextBranch<Context> = Context extends unknown ? Context extends object ? Context extends readonly unknown[] ? Context : Context extends (...args: readonly never[]) => unknown ? Context : string extends keyof Context ? Context : Extract<keyof Context, ReservedAdapterContextKey> extends never ? never : Context : Context : never;\ntype AdapterContextValidation<Context> = unknown extends Context ? unknown : [\n InvalidContextBranch<Context>\n] extends [\n never\n] ? unknown : {\n readonly invalidAdapterContext: InvalidContextBranch<Context>;\n};\ntype InvalidAssertionMethodKey<Context extends object, Assertions> = Assertions extends object ? {\n [Key in keyof Assertions]: Key extends string ? Key extends ReservedAdapterContextKey | keyof Context ? Key : Assertions[Key] extends (...args: readonly never[]) => infer Result ? Result extends PolymorphicBooleanAssertionHandle<unknown, boolean> | PolymorphicMeasurementAssertionHandle<boolean> ? never : Key : Key : Key;\n}[keyof Assertions] : \"assertions\";\ntype InvalidAdapterAssertions<Context extends object, Assertions extends object> = InvalidAssertionMethodKey<Context, Assertions>;\ntype AdapterAssertionsValidation<Context extends object, Assertions extends object> = [\n InvalidAdapterAssertions<Context, Assertions>\n] extends [\n never\n] ? unknown : {\n readonly invalidAdapterAssertions: InvalidAdapterAssertions<Context, Assertions>;\n};\ntype AdapterAssertionsValidationArgs<Context extends object, Assertions extends object> = [\n InvalidAdapterAssertions<Context, Assertions>\n] extends [\n never\n] ? [\n] : [\n error: {\n readonly invalidAdapterAssertions: InvalidAdapterAssertions<Context, Assertions>;\n }\n];\ntype AdapterFactory<Context extends object, Flags extends AdapterFlagsParser = undefined> = (context: AdapterCreateContext<AdapterFlagsOutput<Flags>>) => (Context & ThisType<Context>) | Promise<Context & ThisType<Context>>;\nexport interface AdapterCleanupContext {\n /** 当前 Adapter cleanup 总窗口的取消信号。它独立于 Attempt signal,并在 30 秒总预算结束时取消。 */\n readonly signal: AbortSignal;\n}\nexport interface AdapterCreateContext<Flags = ExperimentFlags> {\n recordUsage(input: import(\"./adapter-usage.ts\").AdapterUsageInput): void;\n attach(input: import(\"./adapter-attachments.ts\").AdapterAttachmentInput): Promise<import(\"./adapter-attachments.ts\").AdapterAttachmentReceipt>;\n recordTrace<Event extends import(\"./adapter-execution-trace.ts\").ExecutionTraceEvent>(input: import(\"./adapter-execution-trace.ts\").ExecutionTraceInput<Event>): Promise<import(\"./adapter-execution-trace.ts\").ExecutionTraceReceipt>;\n /** 当前 Eval 的公开 ID。 */\n readonly evalId: string;\n /** 当前 Experiment 的公开 ID。 */\n readonly experimentId: string;\n /** 当前 Attempt 的零起始序号。 */\n readonly attempt: number;\n /** Attempt 执行信号;取消或超时后会中止,不用于 cleanup 窗口。 */\n readonly signal: AbortSignal;\n /** Experiment 选择的模型。 */\n readonly model?: string;\n /** Experiment 选择的推理强度。 */\n readonly reasoningEffort?: string;\n /** Experiment 传给 Adapter 的只读 flags。 */\n readonly flags: Flags;\n /** 更新当前 Attempt 的人读进度。 */\n progress(update: ProgressUpdate): void;\n /** 为当前 Attempt 追加结构化诊断。 */\n diagnostic(input: DiagnosticInput): void;\n /** 为当前 Attempt 追加日志。 */\n log(message: string): void;\n /**\n * 登记 Attempt-local 资源释放。回调按全局 LIFO 执行;一项失败不会跳过其余项。\n * 零参数回调仍可直接传入。传入的 context 已冻结,同一 cleanup 窗口的回调共享一个 signal。\n */\n onCleanup(cleanup: (context: AdapterCleanupContext) => void | Promise<void>): void;\n}\ntype EvalContextBase<Kind extends EvaluationKind, Flags> = JudgePresetMethods<Kind> & {\n readonly evaluationKind: Kind;\n readonly signal: AbortSignal;\n readonly model?: string;\n readonly reasoningEffort?: string;\n readonly flags: Flags;\n progress(update: ProgressUpdate): void;\n diagnostic(input: DiagnosticInput): void;\n log(message: string): void;\n skip(reason: string): never;\n group<Value>(title: string, body: () => Value | PromiseLike<Value>): Promise<Awaited<Value>>;\n readonly check: AssertionsRuntime<Kind>[\"t\"][\"check\"];\n readonly judge: <Value>(value: AssertionSubject<Value>, definition: ScoreMatch<NoInfer<Value>>) => MeasurementAssertionHandle<Kind>;\n};\n/** Agent-neutral author context shared by every Adapter Eval. */\nexport type EvalContext<Kind extends EvaluationKind = \"pass\", Flags = ExperimentFlags> = EvalContextBase<Kind, Flags> & (Kind extends \"score\" ? {\n readonly score: AssertionsRuntime<\"score\">[\"t\"][\"score\"];\n} : {});\ntype AdapterEvalFields = Omit<EvalInput<undefined>, \"test\" | \"sandbox\" | \"diff\"> & {\n readonly sandbox?: never;\n readonly diff?: never;\n};\ntype AdapterScoreEvalFields = Omit<ScoreEvalInput<undefined>, \"test\" | \"sandbox\" | \"diff\"> & {\n readonly sandbox?: never;\n readonly diff?: never;\n};\nexport type AdapterEvalInput<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> = AdapterEvalFields & {\n test(t: EvalContext<\"pass\", AdapterFlagsOutput<Flags>> & Readonly<Context> & AdapterAssertionsFor<Assertions, \"pass\">): void | Promise<void>;\n};\nexport type AdapterScoreEvalInput<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> = AdapterScoreEvalFields & {\n test(t: EvalContext<\"score\", AdapterFlagsOutput<Flags>> & Readonly<Context> & AdapterAssertionsFor<Assertions, \"score\">): void | Promise<void>;\n};\ninterface AdapterContractToken<Context extends object, Assertions extends object | undefined, Flags extends AdapterFlagsParser = undefined> {\n readonly name: string;\n readonly assertions: AdapterAssertionsFactory<Context> | undefined;\n readonly parseFlags: Flags;\n /** Keeps the Assertion method shape invariant without exposing a constructible brand. */\n readonly assertionTypes: (value: Assertions) => Assertions;\n /** Keeps the context parameter invariant without exposing a constructible brand. */\n readonly context: (value: Context) => Context;\n}\nexport interface AdapterEvalDefinition<Kind extends EvaluationKind, Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> extends EvalDefinition<Kind, EvalContext<Kind, AdapterFlagsOutput<Flags>> & Readonly<Context> & AdapterAssertionsFor<Assertions, Kind>, undefined> {\n readonly [EVAL_ADAPTER_CONTRACT_TOKEN]: AdapterContractToken<Context, Assertions, Flags>;\n}\n/** @internal Existential discovery view; concrete bound factories retain their exact Context. */\nexport interface AdapterRuntimeEvalDefinition<Kind extends EvaluationKind> extends EvalDefinition<Kind, never, undefined> {\n readonly [EVAL_ADAPTER_CONTRACT_TOKEN]: object;\n}\n/** Common public surface for an Adapter definition with bound Eval factories. */\nexport interface AdapterDefinition<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> {\n readonly name: string;\n readonly parseFlags: Flags;\n defineEval(input: AdapterEvalInput<Context, Assertions, Flags>): AdapterEvalDefinition<\"pass\", Context, Assertions, Flags>;\n defineScoreEval(input: AdapterScoreEvalInput<Context, Assertions, Flags>): AdapterEvalDefinition<\"score\", Context, Assertions, Flags>;\n}\n/** Existential runtime view used by Experiment without erasing a concrete context to `any`. */\nexport interface AdapterRuntimeDefinition {\n readonly parseFlags?: Exclude<AdapterFlagsParser, undefined>;\n readonly kind: \"custom\";\n readonly name: string;\n readonly contract: string;\n readonly behaviorRevision: string | null;\n readonly [ADAPTER_CONTRACT_TOKEN]: object;\n readonly defineEval: (...args: never[]) => unknown;\n readonly defineScoreEval: (...args: never[]) => unknown;\n create(context: AdapterCreateContext<unknown>): object | Promise<object>;\n}\nexport interface AdapterImplementation<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> extends AdapterDefinition<Context, Assertions, Flags> {\n readonly kind: \"custom\";\n readonly contract: string;\n readonly behaviorRevision: string | null;\n readonly [ADAPTER_CONTRACT_TOKEN]: AdapterContractToken<Context, Assertions, Flags>;\n create(context: AdapterCreateContext<AdapterFlagsOutput<Flags>>): Context | Promise<Context>;\n}\nexport type AdapterImplementationInput<Context extends object, ImplementationContext extends Context = Context, Flags extends AdapterFlagsParser = undefined> = {\n readonly name: string;\n readonly behaviorRevision?: string;\n readonly create: AdapterFactory<ImplementationContext, Flags>;\n} & AdapterContextValidation<NoInfer<ImplementationContext>>;\nexport interface AdapterContract<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> extends AdapterDefinition<Context, Assertions, Flags> {\n readonly name: string;\n implement<ImplementationContext extends Context>(input: AdapterImplementationInput<Context, ImplementationContext, Flags>): AdapterImplementation<Context, Assertions, Flags>;\n /**\n * Returns a contract whose Eval factories and implementations share one flags parser.\n */\n withParseFlags<NextFlags extends Exclude<AdapterFlagsParser, undefined>>(parseFlags: NextFlags, ...validation: AdapterFlagsParserValidationArgs<NoInfer<NextFlags>>): AdapterContract<Context, Assertions, NextFlags>;\n /** Returns a contract whose implementations share this exact Assertion factory. */\n withAssertions<NextAssertions extends object>(factory: AdapterAssertionsFactory<Context, NextAssertions>, ...validation: AdapterAssertionsValidationArgs<Context, NoInfer<NextAssertions>>): AdapterContract<Context, NextAssertions, Flags>;\n}\nexport type Adapter = import(\"./agents/types.ts\").Agent | AdapterRuntimeDefinition;\nfunction assertNonEmptyString(value: unknown, field: string, factory: string): asserts value is string {\n if (typeof value !== \"string\" || value.trim() === \"\") {\n throw new TypeError(`${factory} requires a non-empty ${field}.`);\n }\n}\nfunction contractToken<Context extends object, Assertions extends object | undefined, Flags extends AdapterFlagsParser>(name: string, assertions: AdapterAssertionsFactory<Context> | undefined, parseFlags: Flags): AdapterContractToken<Context, Assertions, Flags> {\n return Object.freeze({\n name,\n assertions,\n parseFlags,\n assertionTypes: (value: Assertions) => value,\n context: (value: Context) => value,\n });\n}\nfunction assertAdapterEvalInput(value: {\n readonly sandbox?: unknown;\n readonly diff?: unknown;\n}, factory: \"defineEval\" | \"defineScoreEval\"): void {\n if (Object.hasOwn(value, \"sandbox\")) {\n throw new TypeError(`${factory} for an Adapter does not support sandbox.`);\n }\n if (Object.hasOwn(value, \"diff\")) {\n throw new TypeError(`${factory} for an Adapter does not support Agent workspace diff configuration.`);\n }\n}\nfunction boundEvalFactories<Context extends object, Assertions extends object | undefined, Flags extends AdapterFlagsParser>(token: AdapterContractToken<Context, Assertions, Flags>): Pick<AdapterDefinition<Context, Assertions, Flags>, \"defineEval\" | \"defineScoreEval\"> {\n return {\n defineEval(input) {\n assertAdapterEvalInput(input, \"defineEval\");\n return defineEvalForContext(\"pass\", input, {\n [EVAL_ADAPTER_CONTRACT_TOKEN]: token,\n }) as AdapterEvalDefinition<\"pass\", Context, Assertions, Flags>;\n },\n defineScoreEval(input) {\n assertAdapterEvalInput(input, \"defineScoreEval\");\n return defineEvalForContext(\"score\", input, {\n [EVAL_ADAPTER_CONTRACT_TOKEN]: token,\n }) as AdapterEvalDefinition<\"score\", Context, Assertions, Flags>;\n },\n };\n}\nfunction implementAdapter<Context extends object, Assertions extends object | undefined, Flags extends AdapterFlagsParser>(token: AdapterContractToken<Context, Assertions, Flags>, input: {\n readonly name: string;\n readonly behaviorRevision?: string;\n readonly create: AdapterFactory<Context, Flags>;\n}, factory: \"defineAdapter\" | \"AdapterContract.implement\"): AdapterImplementation<Context, Assertions, Flags> {\n assertNonEmptyString(input.name, \"name\", factory);\n if (input.behaviorRevision !== undefined) {\n assertNonEmptyString(input.behaviorRevision, \"behaviorRevision\", factory);\n }\n if (typeof input.create !== \"function\") {\n throw new TypeError(`${factory} requires create(context).`);\n }\n const authorCreate = input.create;\n const create = (context: AdapterCreateContext<AdapterFlagsOutput<Flags>>): Context | Promise<Context> => {\n const created = authorCreate(context);\n if (created instanceof Promise) {\n return created.then((value) => {\n assertPlainAdapterContext(value);\n return value;\n });\n }\n // Validate before a caller can pass a synchronous thenable to Promise adaptation.\n assertPlainAdapterContext(created);\n return created;\n };\n return Object.freeze({\n kind: \"custom\" as const,\n parseFlags: token.parseFlags,\n name: input.name,\n contract: token.name,\n behaviorRevision: input.behaviorRevision ?? null,\n create,\n [ADAPTER_CONTRACT_TOKEN]: token,\n ...boundEvalFactories(token),\n }) as AdapterImplementation<Context, Assertions, Flags>;\n}\n/** Defines one Adapter implementation with an automatically private contract. */\nexport function defineAdapter<Context extends object, Flags extends AdapterFlagsParser = undefined>(input: {\n readonly name: string;\n readonly behaviorRevision?: string;\n readonly create: AdapterFactory<Context, Flags>;\n readonly parseFlags?: Flags;\n readonly assertions?: undefined;\n} & AdapterContextValidation<NoInfer<Context>> & AdapterFlagsParserValidation<NoInfer<Flags>>): AdapterImplementation<Context, undefined, Flags>;\nexport function defineAdapter<Context extends object, Assertions extends object, Flags extends AdapterFlagsParser = undefined>(input: {\n readonly name: string;\n readonly behaviorRevision?: string;\n readonly create: AdapterFactory<Context, Flags>;\n readonly parseFlags?: Flags;\n /** Attempt-local Assertion sugar, assembled once after create() succeeds. */\n readonly assertions: AdapterAssertionsFactory<Context, Assertions>;\n} & AdapterContextValidation<NoInfer<Context>> & AdapterFlagsParserValidation<NoInfer<Flags>> & AdapterAssertionsValidation<Context, NoInfer<Assertions>>): AdapterImplementation<Context, Assertions, Flags>;\nexport function defineAdapter(input: {\n readonly name: string;\n readonly behaviorRevision?: string;\n readonly create: AdapterFactory<object, AdapterFlagsParser>;\n readonly parseFlags?: Exclude<AdapterFlagsParser, undefined>;\n readonly assertions?: AdapterAssertionsFactory<object>;\n}): AdapterRuntimeDefinition {\n if (input.parseFlags !== undefined)\n assertAdapterFlagsParser(input.parseFlags);\n const assertions = input.assertions;\n if (assertions !== undefined && typeof assertions !== \"function\") {\n throw new TypeError(\"defineAdapter assertions must be a function.\");\n }\n return implementAdapter(contractToken<object, object | undefined, AdapterFlagsParser>(input.name, assertions, input.parseFlags), input, \"defineAdapter\");\n}\n/** Defines a reusable contract whose implementations and Evals share one runtime-only token. */\nexport function defineAdapterContract<Context extends object>(input: {\n readonly name: string;\n} & AdapterContextValidation<NoInfer<Context>>): AdapterContract<Context> {\n assertNonEmptyString(input.name, \"name\", \"defineAdapterContract\");\n return makeAdapterContract(contractToken<Context, undefined, undefined>(input.name, undefined, undefined));\n}\nfunction makeAdapterContract<Context extends object, Assertions extends object | undefined, Flags extends AdapterFlagsParser>(token: AdapterContractToken<Context, Assertions, Flags>): AdapterContract<Context, Assertions, Flags> {\n const factories = boundEvalFactories(token);\n return Object.freeze({\n name: token.name,\n parseFlags: token.parseFlags,\n ...factories,\n implement<ImplementationContext extends Context>(implementation: AdapterImplementationInput<Context, ImplementationContext, Flags>) {\n return implementAdapter(token, implementation, \"AdapterContract.implement\");\n },\n withParseFlags<NextFlags extends Exclude<AdapterFlagsParser, undefined>>(parseFlags: NextFlags, ..._validation: AdapterFlagsParserValidationArgs<NoInfer<NextFlags>>) {\n assertAdapterFlagsParser(parseFlags);\n return makeAdapterContract(contractToken<Context, Assertions, NextFlags>(token.name, token.assertions, parseFlags));\n },\n withAssertions<NextAssertions extends object>(factory: AdapterAssertionsFactory<Context, NextAssertions>, ..._validation: AdapterAssertionsValidationArgs<Context, NoInfer<NextAssertions>>) {\n if (typeof factory !== \"function\") {\n throw new TypeError(\"AdapterContract.withAssertions requires a function.\");\n }\n return makeAdapterContract(contractToken<Context, NextAssertions, Flags>(token.name, factory, token.parseFlags));\n },\n });\n}\n/** The single credential-free persistence projection for an Adapter. */\nexport function adapterIdentity(adapter: Adapter): AdapterIdentity {\n return adapter.kind === \"custom\"\n ? Object.freeze({\n name: adapter.name,\n contract: adapter.contract,\n behaviorRevision: adapter.behaviorRevision,\n })\n : Object.freeze({\n name: adapter.name,\n contract: \"niceeval.agent/v1\",\n behaviorRevision: null,\n });\n}\n/** @internal Runtime contract pairing; the token itself never enters persistence. */\nexport function adapterAcceptsEval(adapter: Adapter, definition: object): boolean {\n const required = (definition as {\n readonly [EVAL_ADAPTER_CONTRACT_TOKEN]?: unknown;\n })[EVAL_ADAPTER_CONTRACT_TOKEN];\n if (adapter.kind === \"custom\") {\n const provided = adapter[ADAPTER_CONTRACT_TOKEN];\n return required !== undefined && provided !== undefined && required === provided;\n }\n return required === undefined;\n}\n/** @internal Returns the readable contract name without revealing the pairing token. */\nexport function adapterContractRequiredByEval(definition: object): string | undefined {\n return (definition as {\n readonly [EVAL_ADAPTER_CONTRACT_TOKEN]?: {\n readonly name: string;\n };\n })[EVAL_ADAPTER_CONTRACT_TOKEN]?.name;\n}\nconst RESERVED_ADAPTER_CONTEXT_KEY_SET: ReadonlySet<string> = new Set(RESERVED_ADAPTER_CONTEXT_KEYS);\nfunction assertPlainAdapterContext(value: unknown): asserts value is object {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(\"Adapter create(context) must return a plain object.\");\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new TypeError(\"Adapter create(context) must return an explicit plain object.\");\n }\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key === \"string\" && RESERVED_ADAPTER_CONTEXT_KEY_SET.has(key)) {\n throw new TypeError(`Adapter context key ${JSON.stringify(key)} is reserved.`);\n }\n }\n}\nfunction forwardProperties(target: object, source: object, guardAccess: boolean, assertAuthorOpen: () => void): void {\n for (const key of Reflect.ownKeys(source)) {\n const descriptor = Object.getOwnPropertyDescriptor(source, key);\n if (descriptor === undefined)\n continue;\n if (\"value\" in descriptor && typeof descriptor.value === \"function\") {\n const method = guardAccess\n ? function (this: unknown, ...args: readonly unknown[]) {\n assertAuthorOpen();\n return Reflect.apply(descriptor.value, source, args);\n }\n : descriptor.value.bind(source);\n Object.defineProperty(target, key, {\n enumerable: true,\n configurable: false,\n writable: false,\n value: method,\n });\n }\n else {\n Object.defineProperty(target, key, {\n enumerable: true,\n configurable: false,\n get: () => {\n if (guardAccess)\n assertAuthorOpen();\n const value = Reflect.get(source, key, source);\n if (typeof value !== \"function\")\n return value;\n return guardAccess\n ? (...args: readonly unknown[]) => {\n assertAuthorOpen();\n return Reflect.apply(value, source, args);\n }\n : value.bind(source);\n },\n });\n }\n }\n}\n/** Observes only branded native Promises without reading an arbitrary `.then` property. */\nfunction observeNativePromiseRejection(value: unknown): boolean {\n if ((typeof value !== \"object\" && typeof value !== \"function\") || value === null)\n return false;\n try {\n void Reflect.apply(Promise.prototype.then, value, [\n undefined,\n () => undefined,\n ]);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction assertPlainAdapterAssertions(value: unknown, context: object): asserts value is object {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(\"Adapter assertions factory must return a plain object of methods.\");\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n observeNativePromiseRejection(value);\n throw new TypeError(\"Adapter assertions factory must return an explicit plain object.\");\n }\n const contextKeys = new Set(Reflect.ownKeys(context));\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== \"string\") {\n throw new TypeError(\"Adapter assertion method names must be strings.\");\n }\n if (RESERVED_ADAPTER_CONTEXT_KEY_SET.has(key)) {\n throw new TypeError(`Adapter assertion method name ${JSON.stringify(key)} is reserved.`);\n }\n if (contextKeys.has(key)) {\n throw new TypeError(`Adapter assertion method name ${JSON.stringify(key)} conflicts with an app member.`);\n }\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !(\"value\" in descriptor) || typeof descriptor.value !== \"function\") {\n throw new TypeError(`Adapter assertion ${JSON.stringify(key)} must be an own data method.`);\n }\n }\n}\nfunction bindAdapterAppContext<Context>(context: Context, assertAppOpen: () => void): Readonly<Context> {\n const target = Object.create(null) as object;\n forwardProperties(target, context as object, true, assertAppOpen);\n return Object.freeze(target) as Readonly<Context>;\n}\nfunction bindAdapterAssertions<Kind extends EvaluationKind, Context extends object>(core: EvalContext<Kind>, context: Context, factory: AdapterAssertionsFactory<Context>, assertAuthorOpen: () => void): {\n readonly app: Readonly<Context>;\n readonly assertions: object;\n} {\n let assembled = false;\n const assertAppOpen = (): void => {\n assertAuthorOpen();\n if (!assembled) {\n throw new TypeError(\"Adapter assertions factory may only assemble methods; app access starts afterward.\");\n }\n };\n const app = bindAdapterAppContext(context, assertAppOpen);\n const handleFrames: Array<WeakSet<object>> = [];\n const check = (...args: readonly unknown[]): unknown => {\n assertAuthorOpen();\n const frame = handleFrames.at(-1);\n if (frame === undefined) {\n throw new TypeError(\"Adapter assertions factory may call check only from an assertion method.\");\n }\n const handle = Reflect.apply(core.check, undefined, args);\n if ((typeof handle !== \"object\" && typeof handle !== \"function\") || handle === null) {\n throw new TypeError(\"Adapter assertion check did not return an AssertionHandle.\");\n }\n frame.add(handle);\n return handle;\n };\n const authored = factory({\n app,\n check: check as AssertionCheck<\"polymorphic\">,\n });\n assertPlainAdapterAssertions(authored, context);\n Object.freeze(authored);\n assembled = true;\n const assertions = Object.create(null) as object;\n for (const key of Reflect.ownKeys(authored)) {\n const descriptor = Object.getOwnPropertyDescriptor(authored, key)!;\n const method = descriptor.value as (...args: readonly unknown[]) => unknown;\n Object.defineProperty(assertions, key, {\n enumerable: true,\n configurable: false,\n writable: false,\n value: (...args: readonly unknown[]) => {\n assertAuthorOpen();\n const frame = new WeakSet<object>();\n handleFrames.push(frame);\n try {\n const handle = Reflect.apply(method, authored, args);\n if ((typeof handle !== \"object\" && typeof handle !== \"function\") || handle === null || !frame.has(handle)) {\n observeNativePromiseRejection(handle);\n throw new TypeError(`Adapter assertion ${JSON.stringify(key)} must synchronously return its own check() handle.`);\n }\n return handle;\n }\n finally {\n handleFrames.pop();\n }\n },\n });\n }\n return Object.freeze({ app, assertions: Object.freeze(assertions) });\n}\n/** @internal Builds the frozen single-t facade after create settles. */\nexport function bindAdapterEvalContext<Kind extends EvaluationKind, Context>(core: EvalContext<Kind>, context: Context, adapter: AdapterRuntimeDefinition, assertAuthorOpen: () => void): EvalContext<Kind> & Readonly<Context> {\n assertPlainAdapterContext(context);\n const token = adapter[ADAPTER_CONTRACT_TOKEN] as AdapterContractToken<Context & object, object | undefined>;\n let app: Readonly<Context>;\n let assertions: object | undefined;\n if (token.assertions === undefined) {\n app = bindAdapterAppContext(context, assertAuthorOpen);\n }\n else {\n const bound = bindAdapterAssertions(core, context, token.assertions, assertAuthorOpen);\n app = bound.app;\n assertions = bound.assertions;\n }\n const target = Object.create(null) as object;\n forwardProperties(target, core, false, assertAuthorOpen);\n forwardProperties(target, app, false, assertAuthorOpen);\n if (assertions !== undefined)\n forwardProperties(target, assertions, false, assertAuthorOpen);\n return Object.freeze(target) as EvalContext<Kind> & Readonly<Context>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ResolvedModelSlots } from \"./model-slots.ts\";\nimport { resolveAdapterCleanupTimeoutMs } from \"./shared/adapter-cleanup.ts\";\nimport type { AttemptSignal } from \"./shared/attempt-lifecycle.ts\";\nexport type { AttemptCancellation, AttemptSignal } from \"./shared/attempt-lifecycle.ts\";\nimport { bindAssertionContext } from \"./assertions/runtime.ts\";\nimport type { MatchContext } from \"./assertions/context-match.ts\";\nimport type { EvalUsage } from \"./o11y/eval-usage.ts\";\nimport type { ExperimentFlags } from \"./shared/types.ts\";\nimport { assertAdapterFlagsParser, type AdapterFlagsParser, type AdapterFlagsOutput, type AdapterFlagsParserValidation, type AdapterFlagsParserValidationArgs, } from \"./adapter-flags.ts\";\nimport type { AssertionCheck, AssertionSubject, AssertionsRuntime, BooleanAssertionHandle, MeasurementAssertionHandle, PolymorphicBooleanAssertionHandle, PolymorphicMeasurementAssertionHandle, } from \"./assertions/api.ts\";\nimport type { ScoreMatch } from \"./assertions/match.ts\";\nimport { defineEvalForContext } from \"./define.ts\";\nimport type { EvalDefinition, EvalInput, ScoreEvalInput } from \"./runner/types.ts\";\nimport type { EvaluationKind } from \"./shared/evaluation.ts\";\nimport type { JudgePresetMethods } from \"./context/assert-first.ts\";\nimport type { DiagnosticInput, ProgressUpdate } from \"./shared/types.ts\";\nimport type { AdapterIdentity } from \"./record/model/run-context.ts\";\nexport type { AdapterIdentity } from \"./record/model/run-context.ts\";\nconst ADAPTER_CONTRACT_TOKEN: unique symbol = Symbol(\"niceeval.adapterContractToken\");\nconst EVAL_ADAPTER_CONTRACT_TOKEN: unique symbol = Symbol(\"niceeval.evalAdapterContractToken\");\n/**\n * Synchronously assembles Attempt-local Assertion methods from the guarded app\n * facade and the shared check registrar. The returned object must contain only\n * ordinary, synchronously returning methods. Generic and overloaded Assertion\n * sugar is intentionally not callable after binding; use ordinary named\n * parameters so argument and native handle types remain exact.\n */\nexport type AdapterAssertionsFactory<Context extends object, Assertions extends object = object> = (context: AdapterAssertionsFactoryContext<Context>) => Assertions;\n/**\n * Definition inputs for Adapter Assertion sugar. `app` becomes callable after\n * assembly, and `check` may only be called by a returned Assertion method.\n */\nexport interface AdapterAssertionsFactoryContext<Context extends object> {\n readonly app: MatchContext<Context>;\n readonly check: AssertionCheck<\"polymorphic\", Context>;\n}\ntype BoundAdapterAssertionResult<Kind extends EvaluationKind, Result> = Result extends PolymorphicBooleanAssertionHandle<infer Refined, infer HasGate> ? BooleanAssertionHandle<Kind, Refined, HasGate> : Result extends PolymorphicMeasurementAssertionHandle<infer HasCondition> ? MeasurementAssertionHandle<Kind, HasCondition> : never;\ntype BoundAdapterAssertionMethod<Kind extends EvaluationKind, Method> = Method extends (...args: infer Args) => infer Result ? ((...args: Args) => Result) extends Method ? (...args: Args) => BoundAdapterAssertionResult<Kind, Result> : never : never;\ntype AdapterAssertionsFor<Assertions extends object | undefined, Kind extends EvaluationKind> = Assertions extends object ? {\n readonly [Key in keyof Assertions]: BoundAdapterAssertionMethod<Kind, Assertions[Key]>;\n} : {};\n/** Keys owned by the neutral Eval runtime or unsafe on a merged object root. */\nconst RESERVED_ADAPTER_CONTEXT_KEYS = [\n \"evaluationKind\",\n \"check\",\n \"judge\",\n \"factuality\",\n \"faithfulness\",\n \"instructionFollowing\",\n \"pairwisePreference\",\n \"closeQA\",\n \"usage\",\n \"elapsedMs\",\n \"maxTokens\",\n \"maxCost\",\n \"score\",\n \"group\",\n \"skip\",\n \"signal\",\n \"model\",\n \"reasoningEffort\",\n \"flags\",\n \"progress\",\n \"diagnostic\",\n \"log\",\n \"then\",\n \"Object\",\n \"constructor\",\n \"__defineGetter__\",\n \"__defineSetter__\",\n \"hasOwnProperty\",\n \"__lookupGetter__\",\n \"__lookupSetter__\",\n \"isPrototypeOf\",\n \"propertyIsEnumerable\",\n \"toString\",\n \"valueOf\",\n \"__proto__\",\n \"toLocaleString\",\n] as const;\nexport type ReservedAdapterContextKey = typeof RESERVED_ADAPTER_CONTEXT_KEYS[number];\ntype InvalidContextBranch<Context> = Context extends unknown ? Context extends object ? Context extends readonly unknown[] ? Context : Context extends (...args: readonly never[]) => unknown ? Context : string extends keyof Context ? Context : Extract<keyof Context, ReservedAdapterContextKey> extends never ? never : Context : Context : never;\ntype AdapterContextValidation<Context> = unknown extends Context ? unknown : [\n InvalidContextBranch<Context>\n] extends [\n never\n] ? unknown : {\n readonly invalidAdapterContext: InvalidContextBranch<Context>;\n};\ntype InvalidAssertionMethodKey<Context extends object, Assertions> = Assertions extends object ? {\n [Key in keyof Assertions]: Key extends string ? Key extends ReservedAdapterContextKey | keyof Context ? Key : Assertions[Key] extends (...args: readonly never[]) => infer Result ? Result extends PolymorphicBooleanAssertionHandle<unknown, boolean> | PolymorphicMeasurementAssertionHandle<boolean> ? never : Key : Key : Key;\n}[keyof Assertions] : \"assertions\";\ntype InvalidAdapterAssertions<Context extends object, Assertions extends object> = InvalidAssertionMethodKey<Context, Assertions>;\ntype AdapterAssertionsValidation<Context extends object, Assertions extends object> = [\n InvalidAdapterAssertions<Context, Assertions>\n] extends [\n never\n] ? unknown : {\n readonly invalidAdapterAssertions: InvalidAdapterAssertions<Context, Assertions>;\n};\ntype AdapterAssertionsValidationArgs<Context extends object, Assertions extends object> = [\n InvalidAdapterAssertions<Context, Assertions>\n] extends [\n never\n] ? [\n] : [\n error: {\n readonly invalidAdapterAssertions: InvalidAdapterAssertions<Context, Assertions>;\n }\n];\ntype AdapterFactory<Context extends object, Flags extends AdapterFlagsParser = undefined> = (context: AdapterCreateContext<AdapterFlagsOutput<Flags>>) => (Context & ThisType<Context>) | Promise<Context & ThisType<Context>>;\nexport interface AdapterCleanupContext {\n /** 整个清理窗口的固定毫秒预算,不为每个回调续期。 */\n readonly timeoutMs: number;\n /** 清理窗口实际开始时确定的 Unix 毫秒截止时间。 */\n readonly deadlineAt: number;\n /** 独立于执行信号;整个 Adapter 清理窗口截止时中止。 */\n readonly signal: AbortSignal;\n}\nexport interface AdapterCreateContext<Flags = ExperimentFlags> {\n /** Frozen application model selections for this Attempt. */\n readonly models: ResolvedModelSlots;\n recordUsage(input: import(\"./adapter-usage.ts\").AdapterUsageInput): void;\n /** Close application usage admission and declare whether the recorded collection is complete. */\n sealUsage(input: import(\"./adapter-usage.ts\").AdapterUsageSeal): void;\n attach(input: import(\"./adapter-attachments.ts\").AdapterAttachmentInput): Promise<import(\"./adapter-attachments.ts\").AdapterAttachmentReceipt>;\n recordTrace<Event extends import(\"./adapter-execution-trace.ts\").ExecutionTraceEvent>(input: import(\"./adapter-execution-trace.ts\").ExecutionTraceInput<Event>): Promise<import(\"./adapter-execution-trace.ts\").ExecutionTraceReceipt>;\n /** 当前 Eval 的公开 ID。 */\n readonly evalId: string;\n /** 当前 Experiment 的公开 ID。 */\n readonly experimentId: string;\n /** 当前 Attempt 的零起始序号。 */\n readonly attempt: number;\n /** Attempt 执行信号;reason 区分 timeout 与 cancelled,不用于 cleanup 窗口。 */\n readonly signal: AttemptSignal;\n /** Experiment 选择的模型。 */\n readonly model?: string;\n /** Experiment 选择的推理强度。 */\n readonly reasoningEffort?: string;\n /** Experiment 传给 Adapter 的只读 flags。 */\n readonly flags: Flags;\n /** 更新当前 Attempt 的人读进度。 */\n progress(update: ProgressUpdate): void;\n /** 为当前 Attempt 追加结构化诊断。 */\n diagnostic(input: DiagnosticInput): void;\n /** 为当前 Attempt 追加日志。 */\n log(message: string): void;\n /**\n * 登记 Attempt-local 资源释放。回调按全局 LIFO 执行;一项失败不会跳过其余项。\n * 零参数回调仍可直接传入。传入的 context 已冻结,同一 cleanup 窗口的回调共享一个 signal。\n */\n onCleanup(cleanup: (context: AdapterCleanupContext) => void | Promise<void>): void;\n}\ntype EvalContextBase<Kind extends EvaluationKind, Flags, Context> = JudgePresetMethods<Kind, Context> & {\n readonly usage: EvalUsage;\n readonly elapsedMs: import(\"./assertions/match.ts\").NumericMaterial;\n maxTokens(max: number): BooleanAssertionHandle<Kind, number>;\n maxCost(usd: number | string): BooleanAssertionHandle<Kind, string>;\n readonly evaluationKind: Kind;\n readonly signal: AbortSignal;\n readonly model?: string;\n readonly reasoningEffort?: string;\n readonly flags: Flags;\n progress(update: ProgressUpdate): void;\n diagnostic(input: DiagnosticInput): void;\n log(message: string): void;\n skip(reason: string): never;\n group<Value>(title: string, body: () => Value | PromiseLike<Value>): Promise<Awaited<Value>>;\n readonly check: AssertionCheck<Kind, Context>;\n readonly judge: <Value>(value: AssertionSubject<Value>, definition: ScoreMatch<NoInfer<Value>>) => MeasurementAssertionHandle<Kind>;\n};\n/** Agent-neutral author context shared by every Adapter Eval. */\nexport type EvalContext<Kind extends EvaluationKind = \"pass\", Flags = ExperimentFlags, Context = unknown> = EvalContextBase<Kind, Flags, Context> & (Kind extends \"score\" ? {\n readonly score: AssertionsRuntime<\"score\">[\"t\"][\"score\"];\n} : {});\ntype AdapterEvalFields = Omit<EvalInput<undefined>, \"test\" | \"sandbox\" | \"diff\"> & {\n readonly sandbox?: never;\n readonly diff?: never;\n};\ntype AdapterScoreEvalFields = Omit<ScoreEvalInput<undefined>, \"test\" | \"sandbox\" | \"diff\"> & {\n readonly sandbox?: never;\n readonly diff?: never;\n};\nexport type AdapterEvalInput<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> = AdapterEvalFields & {\n test(t: EvalContext<\"pass\", AdapterFlagsOutput<Flags>, Context> & Readonly<Context> & AdapterAssertionsFor<Assertions, \"pass\">): void | Promise<void>;\n};\nexport type AdapterScoreEvalInput<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> = AdapterScoreEvalFields & {\n test(t: EvalContext<\"score\", AdapterFlagsOutput<Flags>, Context> & Readonly<Context> & AdapterAssertionsFor<Assertions, \"score\">): void | Promise<void>;\n};\ninterface AdapterContractToken<Context extends object, Assertions extends object | undefined, Flags extends AdapterFlagsParser = undefined> {\n readonly name: string;\n readonly assertions: AdapterAssertionsFactory<Context> | undefined;\n readonly parseFlags: Flags;\n /** Keeps the Assertion method shape invariant without exposing a constructible brand. */\n readonly assertionTypes: (value: Assertions) => Assertions;\n /** Keeps the context parameter invariant without exposing a constructible brand. */\n readonly context: (value: Context) => Context;\n}\nexport interface AdapterEvalDefinition<Kind extends EvaluationKind, Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> extends EvalDefinition<Kind, EvalContext<Kind, AdapterFlagsOutput<Flags>, Context> & Readonly<Context> & AdapterAssertionsFor<Assertions, Kind>, undefined> {\n readonly [EVAL_ADAPTER_CONTRACT_TOKEN]: AdapterContractToken<Context, Assertions, Flags>;\n}\n/** @internal Existential discovery view; concrete bound factories retain their exact Context. */\nexport interface AdapterRuntimeEvalDefinition<Kind extends EvaluationKind> extends EvalDefinition<Kind, never, undefined> {\n readonly [EVAL_ADAPTER_CONTRACT_TOKEN]: object;\n}\n/** Common public surface for an Adapter definition with bound Eval factories. */\nexport interface AdapterDefinition<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> {\n readonly name: string;\n readonly parseFlags: Flags;\n defineEval(input: AdapterEvalInput<Context, Assertions, Flags>): AdapterEvalDefinition<\"pass\", Context, Assertions, Flags>;\n defineScoreEval(input: AdapterScoreEvalInput<Context, Assertions, Flags>): AdapterEvalDefinition<\"score\", Context, Assertions, Flags>;\n}\n/** Existential runtime view used by Experiment without erasing a concrete context to `any`. */\nexport interface AdapterRuntimeDefinition {\n readonly parseFlags?: Exclude<AdapterFlagsParser, undefined>;\n readonly kind: \"custom\";\n readonly name: string;\n readonly contract: string;\n readonly behaviorRevision: string | null;\n readonly cleanupTimeoutMs: number;\n readonly [ADAPTER_CONTRACT_TOKEN]: object;\n readonly defineEval: (...args: never[]) => unknown;\n readonly defineScoreEval: (...args: never[]) => unknown;\n create(context: AdapterCreateContext<unknown>): object | Promise<object>;\n}\nexport interface AdapterImplementation<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> extends AdapterDefinition<Context, Assertions, Flags> {\n readonly kind: \"custom\";\n readonly contract: string;\n readonly behaviorRevision: string | null;\n readonly cleanupTimeoutMs: number;\n readonly [ADAPTER_CONTRACT_TOKEN]: AdapterContractToken<Context, Assertions, Flags>;\n create(context: AdapterCreateContext<AdapterFlagsOutput<Flags>>): Context | Promise<Context>;\n}\nexport type AdapterImplementationInput<Context extends object, ImplementationContext extends Context = Context, Flags extends AdapterFlagsParser = undefined> = {\n readonly name: string;\n readonly behaviorRevision?: string;\n /** Adapter 总清理预算,默认 30000 ms;允许整数 1–300000。 */\n readonly cleanupTimeoutMs?: number;\n readonly create: AdapterFactory<ImplementationContext, Flags>;\n} & AdapterContextValidation<NoInfer<ImplementationContext>>;\nexport interface AdapterContract<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> extends AdapterDefinition<Context, Assertions, Flags> {\n readonly name: string;\n implement<ImplementationContext extends Context>(input: AdapterImplementationInput<Context, ImplementationContext, Flags>): AdapterImplementation<Context, Assertions, Flags>;\n /**\n * Returns a contract whose Eval factories and implementations share one flags parser.\n */\n withParseFlags<NextFlags extends Exclude<AdapterFlagsParser, undefined>>(parseFlags: NextFlags, ...validation: AdapterFlagsParserValidationArgs<NoInfer<NextFlags>>): AdapterContract<Context, Assertions, NextFlags>;\n /** Returns a contract whose implementations share this exact Assertion factory. */\n withAssertions<NextAssertions extends object>(factory: AdapterAssertionsFactory<Context, NextAssertions>, ...validation: AdapterAssertionsValidationArgs<Context, NoInfer<NextAssertions>>): AdapterContract<Context, NextAssertions, Flags>;\n}\nexport type Adapter = import(\"./agents/types.ts\").Agent | AdapterRuntimeDefinition;\nfunction assertNonEmptyString(value: unknown, field: string, factory: string): asserts value is string {\n if (typeof value !== \"string\" || value.trim() === \"\") {\n throw new TypeError(`${factory} requires a non-empty ${field}.`);\n }\n}\nfunction contractToken<Context extends object, Assertions extends object | undefined, Flags extends AdapterFlagsParser>(name: string, assertions: AdapterAssertionsFactory<Context> | undefined, parseFlags: Flags): AdapterContractToken<Context, Assertions, Flags> {\n return Object.freeze({\n name,\n assertions,\n parseFlags,\n assertionTypes: (value: Assertions) => value,\n context: (value: Context) => value,\n });\n}\nfunction assertAdapterEvalInput(value: {\n readonly sandbox?: unknown;\n readonly diff?: unknown;\n}, factory: \"defineEval\" | \"defineScoreEval\"): void {\n if (Object.hasOwn(value, \"sandbox\")) {\n throw new TypeError(`${factory} for an Adapter does not support sandbox.`);\n }\n if (Object.hasOwn(value, \"diff\")) {\n throw new TypeError(`${factory} for an Adapter does not support Agent workspace diff configuration.`);\n }\n}\nfunction boundEvalFactories<Context extends object, Assertions extends object | undefined, Flags extends AdapterFlagsParser>(token: AdapterContractToken<Context, Assertions, Flags>): Pick<AdapterDefinition<Context, Assertions, Flags>, \"defineEval\" | \"defineScoreEval\"> {\n return {\n defineEval(input) {\n assertAdapterEvalInput(input, \"defineEval\");\n return defineEvalForContext(\"pass\", input, {\n [EVAL_ADAPTER_CONTRACT_TOKEN]: token,\n }) as AdapterEvalDefinition<\"pass\", Context, Assertions, Flags>;\n },\n defineScoreEval(input) {\n assertAdapterEvalInput(input, \"defineScoreEval\");\n return defineEvalForContext(\"score\", input, {\n [EVAL_ADAPTER_CONTRACT_TOKEN]: token,\n }) as AdapterEvalDefinition<\"score\", Context, Assertions, Flags>;\n },\n };\n}\nfunction implementAdapter<Context extends object, Assertions extends object | undefined, Flags extends AdapterFlagsParser>(token: AdapterContractToken<Context, Assertions, Flags>, input: {\n readonly name: string;\n readonly behaviorRevision?: string;\n /** Adapter 总清理预算,默认 30000 ms;允许整数 1–300000。 */\n readonly cleanupTimeoutMs?: number;\n readonly create: AdapterFactory<Context, Flags>;\n}, factory: \"defineAdapter\" | \"AdapterContract.implement\"): AdapterImplementation<Context, Assertions, Flags> {\n assertNonEmptyString(input.name, \"name\", factory);\n if (input.behaviorRevision !== undefined) {\n assertNonEmptyString(input.behaviorRevision, \"behaviorRevision\", factory);\n }\n if (typeof input.create !== \"function\") {\n throw new TypeError(`${factory} requires create(context).`);\n }\n const cleanupTimeoutMs = resolveAdapterCleanupTimeoutMs(input.cleanupTimeoutMs);\n const authorCreate = input.create;\n const create = (context: AdapterCreateContext<AdapterFlagsOutput<Flags>>): Context | Promise<Context> => {\n const created = authorCreate(context);\n if (created instanceof Promise) {\n return created.then((value) => {\n assertPlainAdapterContext(value);\n return value;\n });\n }\n // Validate before a caller can pass a synchronous thenable to Promise adaptation.\n assertPlainAdapterContext(created);\n return created;\n };\n return Object.freeze({\n kind: \"custom\" as const,\n parseFlags: token.parseFlags,\n name: input.name,\n contract: token.name,\n behaviorRevision: input.behaviorRevision ?? null,\n cleanupTimeoutMs,\n create,\n [ADAPTER_CONTRACT_TOKEN]: token,\n ...boundEvalFactories(token),\n }) as AdapterImplementation<Context, Assertions, Flags>;\n}\n/** Defines one Adapter implementation with an automatically private contract. */\nexport function defineAdapter<Context extends object, Flags extends AdapterFlagsParser = undefined>(input: {\n readonly name: string;\n readonly behaviorRevision?: string;\n /** Adapter 总清理预算,默认 30000 ms;允许整数 1–300000。 */\n readonly cleanupTimeoutMs?: number;\n readonly create: AdapterFactory<Context, Flags>;\n readonly parseFlags?: Flags;\n readonly assertions?: undefined;\n} & AdapterContextValidation<NoInfer<Context>> & AdapterFlagsParserValidation<NoInfer<Flags>>): AdapterImplementation<Context, undefined, Flags>;\nexport function defineAdapter<Context extends object, Assertions extends object, Flags extends AdapterFlagsParser = undefined>(input: {\n readonly name: string;\n readonly behaviorRevision?: string;\n /** Adapter 总清理预算,默认 30000 ms;允许整数 1–300000。 */\n readonly cleanupTimeoutMs?: number;\n readonly create: AdapterFactory<Context, Flags>;\n readonly parseFlags?: Flags;\n /** Attempt-local Assertion sugar, assembled once after create() succeeds. */\n readonly assertions: AdapterAssertionsFactory<Context, Assertions>;\n} & AdapterContextValidation<NoInfer<Context>> & AdapterFlagsParserValidation<NoInfer<Flags>> & AdapterAssertionsValidation<Context, NoInfer<Assertions>>): AdapterImplementation<Context, Assertions, Flags>;\n// @concord-code ne-adapter-define-adapter\n// @concord-implements docs/feature/adapters/README.md\n// @concord-implements docs/feature/adapters/library/writing-an-adapter.md\nexport function defineAdapter(input: {\n readonly name: string;\n readonly behaviorRevision?: string;\n /** Adapter 总清理预算,默认 30000 ms;允许整数 1–300000。 */\n readonly cleanupTimeoutMs?: number;\n readonly create: AdapterFactory<object, AdapterFlagsParser>;\n readonly parseFlags?: Exclude<AdapterFlagsParser, undefined>;\n readonly assertions?: AdapterAssertionsFactory<object>;\n}): AdapterRuntimeDefinition {\n if (input.parseFlags !== undefined)\n assertAdapterFlagsParser(input.parseFlags);\n const assertions = input.assertions;\n if (assertions !== undefined && typeof assertions !== \"function\") {\n throw new TypeError(\"defineAdapter assertions must be a function.\");\n }\n return implementAdapter(contractToken<object, object | undefined, AdapterFlagsParser>(input.name, assertions, input.parseFlags), input, \"defineAdapter\");\n}\n/** Defines a reusable contract whose implementations and Evals share one runtime-only token. */\n// @concord-code ne-adapter-define-contract\n// @concord-implements docs/feature/adapters/README.md\n// @concord-implements docs/feature/adapters/architecture/agent-contract.md\nexport function defineAdapterContract<Context extends object>(input: {\n readonly name: string;\n} & AdapterContextValidation<NoInfer<Context>>): AdapterContract<Context> {\n assertNonEmptyString(input.name, \"name\", \"defineAdapterContract\");\n return makeAdapterContract(contractToken<Context, undefined, undefined>(input.name, undefined, undefined));\n}\nfunction makeAdapterContract<Context extends object, Assertions extends object | undefined, Flags extends AdapterFlagsParser>(token: AdapterContractToken<Context, Assertions, Flags>): AdapterContract<Context, Assertions, Flags> {\n const factories = boundEvalFactories(token);\n return Object.freeze({\n name: token.name,\n parseFlags: token.parseFlags,\n ...factories,\n implement<ImplementationContext extends Context>(implementation: AdapterImplementationInput<Context, ImplementationContext, Flags>) {\n return implementAdapter(token, implementation, \"AdapterContract.implement\");\n },\n withParseFlags<NextFlags extends Exclude<AdapterFlagsParser, undefined>>(parseFlags: NextFlags, ..._validation: AdapterFlagsParserValidationArgs<NoInfer<NextFlags>>) {\n assertAdapterFlagsParser(parseFlags);\n return makeAdapterContract(contractToken<Context, Assertions, NextFlags>(token.name, token.assertions, parseFlags));\n },\n withAssertions<NextAssertions extends object>(factory: AdapterAssertionsFactory<Context, NextAssertions>, ..._validation: AdapterAssertionsValidationArgs<Context, NoInfer<NextAssertions>>) {\n if (typeof factory !== \"function\") {\n throw new TypeError(\"AdapterContract.withAssertions requires a function.\");\n }\n return makeAdapterContract(contractToken<Context, NextAssertions, Flags>(token.name, factory, token.parseFlags));\n },\n });\n}\n/** The single credential-free persistence projection for an Adapter. */\nexport function adapterIdentity(adapter: Adapter): AdapterIdentity {\n return adapter.kind === \"custom\"\n ? Object.freeze({\n name: adapter.name,\n contract: adapter.contract,\n behaviorRevision: adapter.behaviorRevision,\n cleanupTimeoutMs: adapter.cleanupTimeoutMs,\n })\n : Object.freeze({\n name: adapter.name,\n contract: \"niceeval.agent/v1\",\n behaviorRevision: null,\n });\n}\n/** @internal Runtime contract pairing; the token itself never enters persistence. */\nexport function adapterAcceptsEval(adapter: Adapter, definition: object): boolean {\n const required = (definition as {\n readonly [EVAL_ADAPTER_CONTRACT_TOKEN]?: unknown;\n })[EVAL_ADAPTER_CONTRACT_TOKEN];\n if (adapter.kind === \"custom\") {\n const provided = adapter[ADAPTER_CONTRACT_TOKEN];\n return required !== undefined && provided !== undefined && required === provided;\n }\n return required === undefined;\n}\n/** @internal Returns the readable contract name without revealing the pairing token. */\nexport function adapterContractRequiredByEval(definition: object): string | undefined {\n return (definition as {\n readonly [EVAL_ADAPTER_CONTRACT_TOKEN]?: {\n readonly name: string;\n };\n })[EVAL_ADAPTER_CONTRACT_TOKEN]?.name;\n}\nconst RESERVED_ADAPTER_CONTEXT_KEY_SET: ReadonlySet<string> = new Set(RESERVED_ADAPTER_CONTEXT_KEYS);\nfunction assertPlainAdapterContext(value: unknown): asserts value is object {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(\"Adapter create(context) must return a plain object.\");\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new TypeError(\"Adapter create(context) must return an explicit plain object.\");\n }\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key === \"string\" && RESERVED_ADAPTER_CONTEXT_KEY_SET.has(key)) {\n throw new TypeError(`Adapter context key ${JSON.stringify(key)} is reserved.`);\n }\n }\n}\nfunction forwardProperties(target: object, source: object, guardAccess: boolean, assertAuthorOpen: () => void): void {\n for (const key of Reflect.ownKeys(source)) {\n const descriptor = Object.getOwnPropertyDescriptor(source, key);\n if (descriptor === undefined)\n continue;\n if (\"value\" in descriptor && typeof descriptor.value === \"function\") {\n const method = guardAccess\n ? function (this: unknown, ...args: readonly unknown[]) {\n assertAuthorOpen();\n return Reflect.apply(descriptor.value, source, args);\n }\n : descriptor.value.bind(source);\n Object.defineProperty(target, key, {\n enumerable: true,\n configurable: false,\n writable: false,\n value: method,\n });\n }\n else {\n Object.defineProperty(target, key, {\n enumerable: true,\n configurable: false,\n get: () => {\n if (guardAccess)\n assertAuthorOpen();\n const value = Reflect.get(source, key, source);\n if (typeof value !== \"function\")\n return value;\n return guardAccess\n ? (...args: readonly unknown[]) => {\n assertAuthorOpen();\n return Reflect.apply(value, source, args);\n }\n : value.bind(source);\n },\n });\n }\n }\n}\n/** Observes only branded native Promises without reading an arbitrary `.then` property. */\nfunction observeNativePromiseRejection(value: unknown): boolean {\n if ((typeof value !== \"object\" && typeof value !== \"function\") || value === null)\n return false;\n try {\n void Reflect.apply(Promise.prototype.then, value, [\n undefined,\n () => undefined,\n ]);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction assertPlainAdapterAssertions(value: unknown, context: object): asserts value is object {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(\"Adapter assertions factory must return a plain object of methods.\");\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n observeNativePromiseRejection(value);\n throw new TypeError(\"Adapter assertions factory must return an explicit plain object.\");\n }\n const contextKeys = new Set(Reflect.ownKeys(context));\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== \"string\") {\n throw new TypeError(\"Adapter assertion method names must be strings.\");\n }\n if (RESERVED_ADAPTER_CONTEXT_KEY_SET.has(key)) {\n throw new TypeError(`Adapter assertion method name ${JSON.stringify(key)} is reserved.`);\n }\n if (contextKeys.has(key)) {\n throw new TypeError(`Adapter assertion method name ${JSON.stringify(key)} conflicts with an app member.`);\n }\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !(\"value\" in descriptor) || typeof descriptor.value !== \"function\") {\n throw new TypeError(`Adapter assertion ${JSON.stringify(key)} must be an own data method.`);\n }\n }\n}\nfunction bindAdapterAppContext<Context>(context: Context, assertAppOpen: () => void): Readonly<Context> {\n const target = Object.create(null) as object;\n forwardProperties(target, context as object, true, assertAppOpen);\n return Object.freeze(target) as Readonly<Context>;\n}\nfunction bindAdapterAssertions<Kind extends EvaluationKind, Context extends object>(core: EvalContext<Kind>, context: Context, factory: AdapterAssertionsFactory<Context>, assertAuthorOpen: () => void): {\n readonly app: Readonly<Context>;\n readonly assertions: object;\n} {\n let assembled = false;\n const assertAppOpen = (): void => {\n assertAuthorOpen();\n if (!assembled) {\n throw new TypeError(\"Adapter assertions factory may only assemble methods; app access starts afterward.\");\n }\n };\n const app = bindAdapterAppContext(context, assertAppOpen);\n const handleFrames: Array<WeakSet<object>> = [];\n const check = (...args: readonly unknown[]): unknown => {\n assertAuthorOpen();\n const frame = handleFrames.at(-1);\n if (frame === undefined) {\n throw new TypeError(\"Adapter assertions factory may call check only from an assertion method.\");\n }\n const handle = Reflect.apply(core.check, undefined, args);\n if ((typeof handle !== \"object\" && typeof handle !== \"function\") || handle === null) {\n throw new TypeError(\"Adapter assertion check did not return an AssertionHandle.\");\n }\n frame.add(handle);\n return handle;\n };\n const authored = factory({ app: app as MatchContext<Context>, check: check as AssertionCheck<\"polymorphic\", Context> });\n assertPlainAdapterAssertions(authored, context);\n Object.freeze(authored);\n assembled = true;\n const assertions = Object.create(null) as object;\n for (const key of Reflect.ownKeys(authored)) {\n const descriptor = Object.getOwnPropertyDescriptor(authored, key)!;\n const method = descriptor.value as (...args: readonly unknown[]) => unknown;\n Object.defineProperty(assertions, key, {\n enumerable: true,\n configurable: false,\n writable: false,\n value: (...args: readonly unknown[]) => {\n assertAuthorOpen();\n const frame = new WeakSet<object>();\n handleFrames.push(frame);\n try {\n const handle = Reflect.apply(method, authored, args);\n if ((typeof handle !== \"object\" && typeof handle !== \"function\") || handle === null || !frame.has(handle)) {\n observeNativePromiseRejection(handle);\n throw new TypeError(`Adapter assertion ${JSON.stringify(key)} must synchronously return its own check() handle.`);\n }\n return handle;\n }\n finally {\n handleFrames.pop();\n }\n },\n });\n }\n return Object.freeze({ app, assertions: Object.freeze(assertions) });\n}\n/** @internal Builds the frozen single-t facade after create settles. */\n// @concord-code ne-adapter-bind-eval-context\n// @concord-implements docs/feature/adapters/architecture/agent-contract.md\nexport function bindAdapterEvalContext<Kind extends EvaluationKind, Context>(core: EvalContext<Kind>, context: Context, adapter: AdapterRuntimeDefinition, assertAuthorOpen: () => void): EvalContext<Kind> & Readonly<Context> {\n assertPlainAdapterContext(context);\n const token = adapter[ADAPTER_CONTRACT_TOKEN] as AdapterContractToken<Context & object, object | undefined>;\n let app: Readonly<Context>;\n let assertions: object | undefined;\n if (token.assertions === undefined) {\n app = bindAdapterAppContext(context, assertAuthorOpen);\n }\n else {\n const bound = bindAdapterAssertions(core, context, token.assertions, assertAuthorOpen);\n app = bound.app;\n assertions = bound.assertions;\n }\n bindAssertionContext(core.check, () => app);\n const target = Object.create(null) as object;\n forwardProperties(target, core, false, assertAuthorOpen);\n forwardProperties(target, app, false, assertAuthorOpen);\n if (assertions !== undefined)\n forwardProperties(target, assertions, false, assertAuthorOpen);\n return Object.freeze(target) as EvalContext<Kind> & Readonly<Context>;\n}\n"]}
|
package/dist/adapter.d.cts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import type { ResolvedModelSlots } from "./model-slots.cjs";
|
|
2
|
+
import type { AttemptSignal } from "./shared/attempt-lifecycle.cjs";
|
|
3
|
+
export type { AttemptCancellation, AttemptSignal } from "./shared/attempt-lifecycle.cjs";
|
|
4
|
+
import type { MatchContext } from "./assertions/context-match.cjs";
|
|
5
|
+
import type { EvalUsage } from "./o11y/eval-usage.cjs";
|
|
1
6
|
import type { ExperimentFlags } from "./shared/types.cjs";
|
|
2
7
|
import { type AdapterFlagsParser, type AdapterFlagsOutput, type AdapterFlagsParserValidation, type AdapterFlagsParserValidationArgs } from "./adapter-flags.cjs";
|
|
3
8
|
import type { AssertionCheck, AssertionSubject, AssertionsRuntime, BooleanAssertionHandle, MeasurementAssertionHandle, PolymorphicBooleanAssertionHandle, PolymorphicMeasurementAssertionHandle } from "./assertions/api.cjs";
|
|
@@ -23,8 +28,8 @@ export type AdapterAssertionsFactory<Context extends object, Assertions extends
|
|
|
23
28
|
* assembly, and `check` may only be called by a returned Assertion method.
|
|
24
29
|
*/
|
|
25
30
|
export interface AdapterAssertionsFactoryContext<Context extends object> {
|
|
26
|
-
readonly app:
|
|
27
|
-
readonly check: AssertionCheck<"polymorphic">;
|
|
31
|
+
readonly app: MatchContext<Context>;
|
|
32
|
+
readonly check: AssertionCheck<"polymorphic", Context>;
|
|
28
33
|
}
|
|
29
34
|
type BoundAdapterAssertionResult<Kind extends EvaluationKind, Result> = Result extends PolymorphicBooleanAssertionHandle<infer Refined, infer HasGate> ? BooleanAssertionHandle<Kind, Refined, HasGate> : Result extends PolymorphicMeasurementAssertionHandle<infer HasCondition> ? MeasurementAssertionHandle<Kind, HasCondition> : never;
|
|
30
35
|
type BoundAdapterAssertionMethod<Kind extends EvaluationKind, Method> = Method extends (...args: infer Args) => infer Result ? ((...args: Args) => Result) extends Method ? (...args: Args) => BoundAdapterAssertionResult<Kind, Result> : never : never;
|
|
@@ -32,7 +37,7 @@ type AdapterAssertionsFor<Assertions extends object | undefined, Kind extends Ev
|
|
|
32
37
|
readonly [Key in keyof Assertions]: BoundAdapterAssertionMethod<Kind, Assertions[Key]>;
|
|
33
38
|
} : {};
|
|
34
39
|
/** Keys owned by the neutral Eval runtime or unsafe on a merged object root. */
|
|
35
|
-
declare const RESERVED_ADAPTER_CONTEXT_KEYS: readonly ["evaluationKind", "check", "judge", "factuality", "faithfulness", "instructionFollowing", "pairwisePreference", "closeQA", "score", "group", "skip", "signal", "model", "reasoningEffort", "flags", "progress", "diagnostic", "log", "then", "Object", "constructor", "__defineGetter__", "__defineSetter__", "hasOwnProperty", "__lookupGetter__", "__lookupSetter__", "isPrototypeOf", "propertyIsEnumerable", "toString", "valueOf", "__proto__", "toLocaleString"];
|
|
40
|
+
declare const RESERVED_ADAPTER_CONTEXT_KEYS: readonly ["evaluationKind", "check", "judge", "factuality", "faithfulness", "instructionFollowing", "pairwisePreference", "closeQA", "usage", "elapsedMs", "maxTokens", "maxCost", "score", "group", "skip", "signal", "model", "reasoningEffort", "flags", "progress", "diagnostic", "log", "then", "Object", "constructor", "__defineGetter__", "__defineSetter__", "hasOwnProperty", "__lookupGetter__", "__lookupSetter__", "isPrototypeOf", "propertyIsEnumerable", "toString", "valueOf", "__proto__", "toLocaleString"];
|
|
36
41
|
export type ReservedAdapterContextKey = typeof RESERVED_ADAPTER_CONTEXT_KEYS[number];
|
|
37
42
|
type InvalidContextBranch<Context> = Context extends unknown ? Context extends object ? Context extends readonly unknown[] ? Context : Context extends (...args: readonly never[]) => unknown ? Context : string extends keyof Context ? Context : Extract<keyof Context, ReservedAdapterContextKey> extends never ? never : Context : Context : never;
|
|
38
43
|
type AdapterContextValidation<Context> = unknown extends Context ? unknown : [InvalidContextBranch<Context>] extends [never] ? unknown : {
|
|
@@ -50,11 +55,19 @@ type AdapterAssertionsValidationArgs<Context extends object, Assertions extends
|
|
|
50
55
|
}];
|
|
51
56
|
type AdapterFactory<Context extends object, Flags extends AdapterFlagsParser = undefined> = (context: AdapterCreateContext<AdapterFlagsOutput<Flags>>) => (Context & ThisType<Context>) | Promise<Context & ThisType<Context>>;
|
|
52
57
|
export interface AdapterCleanupContext {
|
|
53
|
-
/**
|
|
58
|
+
/** 整个清理窗口的固定毫秒预算,不为每个回调续期。 */
|
|
59
|
+
readonly timeoutMs: number;
|
|
60
|
+
/** 清理窗口实际开始时确定的 Unix 毫秒截止时间。 */
|
|
61
|
+
readonly deadlineAt: number;
|
|
62
|
+
/** 独立于执行信号;整个 Adapter 清理窗口截止时中止。 */
|
|
54
63
|
readonly signal: AbortSignal;
|
|
55
64
|
}
|
|
56
65
|
export interface AdapterCreateContext<Flags = ExperimentFlags> {
|
|
66
|
+
/** Frozen application model selections for this Attempt. */
|
|
67
|
+
readonly models: ResolvedModelSlots;
|
|
57
68
|
recordUsage(input: import("./adapter-usage.cjs").AdapterUsageInput): void;
|
|
69
|
+
/** Close application usage admission and declare whether the recorded collection is complete. */
|
|
70
|
+
sealUsage(input: import("./adapter-usage.cjs").AdapterUsageSeal): void;
|
|
58
71
|
attach(input: import("./adapter-attachments.cjs").AdapterAttachmentInput): Promise<import("./adapter-attachments.cjs").AdapterAttachmentReceipt>;
|
|
59
72
|
recordTrace<Event extends import("./adapter-execution-trace.cjs").ExecutionTraceEvent>(input: import("./adapter-execution-trace.cjs").ExecutionTraceInput<Event>): Promise<import("./adapter-execution-trace.cjs").ExecutionTraceReceipt>;
|
|
60
73
|
/** 当前 Eval 的公开 ID。 */
|
|
@@ -63,8 +76,8 @@ export interface AdapterCreateContext<Flags = ExperimentFlags> {
|
|
|
63
76
|
readonly experimentId: string;
|
|
64
77
|
/** 当前 Attempt 的零起始序号。 */
|
|
65
78
|
readonly attempt: number;
|
|
66
|
-
/** Attempt
|
|
67
|
-
readonly signal:
|
|
79
|
+
/** Attempt 执行信号;reason 区分 timeout 与 cancelled,不用于 cleanup 窗口。 */
|
|
80
|
+
readonly signal: AttemptSignal;
|
|
68
81
|
/** Experiment 选择的模型。 */
|
|
69
82
|
readonly model?: string;
|
|
70
83
|
/** Experiment 选择的推理强度。 */
|
|
@@ -83,7 +96,11 @@ export interface AdapterCreateContext<Flags = ExperimentFlags> {
|
|
|
83
96
|
*/
|
|
84
97
|
onCleanup(cleanup: (context: AdapterCleanupContext) => void | Promise<void>): void;
|
|
85
98
|
}
|
|
86
|
-
type EvalContextBase<Kind extends EvaluationKind, Flags> = JudgePresetMethods<Kind> & {
|
|
99
|
+
type EvalContextBase<Kind extends EvaluationKind, Flags, Context> = JudgePresetMethods<Kind, Context> & {
|
|
100
|
+
readonly usage: EvalUsage;
|
|
101
|
+
readonly elapsedMs: import("./assertions/match.cjs").NumericMaterial;
|
|
102
|
+
maxTokens(max: number): BooleanAssertionHandle<Kind, number>;
|
|
103
|
+
maxCost(usd: number | string): BooleanAssertionHandle<Kind, string>;
|
|
87
104
|
readonly evaluationKind: Kind;
|
|
88
105
|
readonly signal: AbortSignal;
|
|
89
106
|
readonly model?: string;
|
|
@@ -94,11 +111,11 @@ type EvalContextBase<Kind extends EvaluationKind, Flags> = JudgePresetMethods<Ki
|
|
|
94
111
|
log(message: string): void;
|
|
95
112
|
skip(reason: string): never;
|
|
96
113
|
group<Value>(title: string, body: () => Value | PromiseLike<Value>): Promise<Awaited<Value>>;
|
|
97
|
-
readonly check:
|
|
114
|
+
readonly check: AssertionCheck<Kind, Context>;
|
|
98
115
|
readonly judge: <Value>(value: AssertionSubject<Value>, definition: ScoreMatch<NoInfer<Value>>) => MeasurementAssertionHandle<Kind>;
|
|
99
116
|
};
|
|
100
117
|
/** Agent-neutral author context shared by every Adapter Eval. */
|
|
101
|
-
export type EvalContext<Kind extends EvaluationKind = "pass", Flags = ExperimentFlags> = EvalContextBase<Kind, Flags> & (Kind extends "score" ? {
|
|
118
|
+
export type EvalContext<Kind extends EvaluationKind = "pass", Flags = ExperimentFlags, Context = unknown> = EvalContextBase<Kind, Flags, Context> & (Kind extends "score" ? {
|
|
102
119
|
readonly score: AssertionsRuntime<"score">["t"]["score"];
|
|
103
120
|
} : {});
|
|
104
121
|
type AdapterEvalFields = Omit<EvalInput<undefined>, "test" | "sandbox" | "diff"> & {
|
|
@@ -110,10 +127,10 @@ type AdapterScoreEvalFields = Omit<ScoreEvalInput<undefined>, "test" | "sandbox"
|
|
|
110
127
|
readonly diff?: never;
|
|
111
128
|
};
|
|
112
129
|
export type AdapterEvalInput<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> = AdapterEvalFields & {
|
|
113
|
-
test(t: EvalContext<"pass", AdapterFlagsOutput<Flags
|
|
130
|
+
test(t: EvalContext<"pass", AdapterFlagsOutput<Flags>, Context> & Readonly<Context> & AdapterAssertionsFor<Assertions, "pass">): void | Promise<void>;
|
|
114
131
|
};
|
|
115
132
|
export type AdapterScoreEvalInput<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> = AdapterScoreEvalFields & {
|
|
116
|
-
test(t: EvalContext<"score", AdapterFlagsOutput<Flags
|
|
133
|
+
test(t: EvalContext<"score", AdapterFlagsOutput<Flags>, Context> & Readonly<Context> & AdapterAssertionsFor<Assertions, "score">): void | Promise<void>;
|
|
117
134
|
};
|
|
118
135
|
interface AdapterContractToken<Context extends object, Assertions extends object | undefined, Flags extends AdapterFlagsParser = undefined> {
|
|
119
136
|
readonly name: string;
|
|
@@ -124,7 +141,7 @@ interface AdapterContractToken<Context extends object, Assertions extends object
|
|
|
124
141
|
/** Keeps the context parameter invariant without exposing a constructible brand. */
|
|
125
142
|
readonly context: (value: Context) => Context;
|
|
126
143
|
}
|
|
127
|
-
export interface AdapterEvalDefinition<Kind extends EvaluationKind, Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> extends EvalDefinition<Kind, EvalContext<Kind, AdapterFlagsOutput<Flags
|
|
144
|
+
export interface AdapterEvalDefinition<Kind extends EvaluationKind, Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> extends EvalDefinition<Kind, EvalContext<Kind, AdapterFlagsOutput<Flags>, Context> & Readonly<Context> & AdapterAssertionsFor<Assertions, Kind>, undefined> {
|
|
128
145
|
readonly [EVAL_ADAPTER_CONTRACT_TOKEN]: AdapterContractToken<Context, Assertions, Flags>;
|
|
129
146
|
}
|
|
130
147
|
/** @internal Existential discovery view; concrete bound factories retain their exact Context. */
|
|
@@ -145,6 +162,7 @@ export interface AdapterRuntimeDefinition {
|
|
|
145
162
|
readonly name: string;
|
|
146
163
|
readonly contract: string;
|
|
147
164
|
readonly behaviorRevision: string | null;
|
|
165
|
+
readonly cleanupTimeoutMs: number;
|
|
148
166
|
readonly [ADAPTER_CONTRACT_TOKEN]: object;
|
|
149
167
|
readonly defineEval: (...args: never[]) => unknown;
|
|
150
168
|
readonly defineScoreEval: (...args: never[]) => unknown;
|
|
@@ -154,12 +172,15 @@ export interface AdapterImplementation<Context extends object, Assertions extend
|
|
|
154
172
|
readonly kind: "custom";
|
|
155
173
|
readonly contract: string;
|
|
156
174
|
readonly behaviorRevision: string | null;
|
|
175
|
+
readonly cleanupTimeoutMs: number;
|
|
157
176
|
readonly [ADAPTER_CONTRACT_TOKEN]: AdapterContractToken<Context, Assertions, Flags>;
|
|
158
177
|
create(context: AdapterCreateContext<AdapterFlagsOutput<Flags>>): Context | Promise<Context>;
|
|
159
178
|
}
|
|
160
179
|
export type AdapterImplementationInput<Context extends object, ImplementationContext extends Context = Context, Flags extends AdapterFlagsParser = undefined> = {
|
|
161
180
|
readonly name: string;
|
|
162
181
|
readonly behaviorRevision?: string;
|
|
182
|
+
/** Adapter 总清理预算,默认 30000 ms;允许整数 1–300000。 */
|
|
183
|
+
readonly cleanupTimeoutMs?: number;
|
|
163
184
|
readonly create: AdapterFactory<ImplementationContext, Flags>;
|
|
164
185
|
} & AdapterContextValidation<NoInfer<ImplementationContext>>;
|
|
165
186
|
export interface AdapterContract<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> extends AdapterDefinition<Context, Assertions, Flags> {
|
|
@@ -177,6 +198,8 @@ export type Adapter = import("./agents/types.cjs").Agent | AdapterRuntimeDefinit
|
|
|
177
198
|
export declare function defineAdapter<Context extends object, Flags extends AdapterFlagsParser = undefined>(input: {
|
|
178
199
|
readonly name: string;
|
|
179
200
|
readonly behaviorRevision?: string;
|
|
201
|
+
/** Adapter 总清理预算,默认 30000 ms;允许整数 1–300000。 */
|
|
202
|
+
readonly cleanupTimeoutMs?: number;
|
|
180
203
|
readonly create: AdapterFactory<Context, Flags>;
|
|
181
204
|
readonly parseFlags?: Flags;
|
|
182
205
|
readonly assertions?: undefined;
|
|
@@ -184,6 +207,8 @@ export declare function defineAdapter<Context extends object, Flags extends Adap
|
|
|
184
207
|
export declare function defineAdapter<Context extends object, Assertions extends object, Flags extends AdapterFlagsParser = undefined>(input: {
|
|
185
208
|
readonly name: string;
|
|
186
209
|
readonly behaviorRevision?: string;
|
|
210
|
+
/** Adapter 总清理预算,默认 30000 ms;允许整数 1–300000。 */
|
|
211
|
+
readonly cleanupTimeoutMs?: number;
|
|
187
212
|
readonly create: AdapterFactory<Context, Flags>;
|
|
188
213
|
readonly parseFlags?: Flags;
|
|
189
214
|
/** Attempt-local Assertion sugar, assembled once after create() succeeds. */
|
package/dist/adapter.d.mts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import type { ResolvedModelSlots } from "./model-slots.mjs";
|
|
2
|
+
import type { AttemptSignal } from "./shared/attempt-lifecycle.mjs";
|
|
3
|
+
export type { AttemptCancellation, AttemptSignal } from "./shared/attempt-lifecycle.mjs";
|
|
4
|
+
import type { MatchContext } from "./assertions/context-match.mjs";
|
|
5
|
+
import type { EvalUsage } from "./o11y/eval-usage.mjs";
|
|
1
6
|
import type { ExperimentFlags } from "./shared/types.mjs";
|
|
2
7
|
import { type AdapterFlagsParser, type AdapterFlagsOutput, type AdapterFlagsParserValidation, type AdapterFlagsParserValidationArgs } from "./adapter-flags.mjs";
|
|
3
8
|
import type { AssertionCheck, AssertionSubject, AssertionsRuntime, BooleanAssertionHandle, MeasurementAssertionHandle, PolymorphicBooleanAssertionHandle, PolymorphicMeasurementAssertionHandle } from "./assertions/api.mjs";
|
|
@@ -23,8 +28,8 @@ export type AdapterAssertionsFactory<Context extends object, Assertions extends
|
|
|
23
28
|
* assembly, and `check` may only be called by a returned Assertion method.
|
|
24
29
|
*/
|
|
25
30
|
export interface AdapterAssertionsFactoryContext<Context extends object> {
|
|
26
|
-
readonly app:
|
|
27
|
-
readonly check: AssertionCheck<"polymorphic">;
|
|
31
|
+
readonly app: MatchContext<Context>;
|
|
32
|
+
readonly check: AssertionCheck<"polymorphic", Context>;
|
|
28
33
|
}
|
|
29
34
|
type BoundAdapterAssertionResult<Kind extends EvaluationKind, Result> = Result extends PolymorphicBooleanAssertionHandle<infer Refined, infer HasGate> ? BooleanAssertionHandle<Kind, Refined, HasGate> : Result extends PolymorphicMeasurementAssertionHandle<infer HasCondition> ? MeasurementAssertionHandle<Kind, HasCondition> : never;
|
|
30
35
|
type BoundAdapterAssertionMethod<Kind extends EvaluationKind, Method> = Method extends (...args: infer Args) => infer Result ? ((...args: Args) => Result) extends Method ? (...args: Args) => BoundAdapterAssertionResult<Kind, Result> : never : never;
|
|
@@ -32,7 +37,7 @@ type AdapterAssertionsFor<Assertions extends object | undefined, Kind extends Ev
|
|
|
32
37
|
readonly [Key in keyof Assertions]: BoundAdapterAssertionMethod<Kind, Assertions[Key]>;
|
|
33
38
|
} : {};
|
|
34
39
|
/** Keys owned by the neutral Eval runtime or unsafe on a merged object root. */
|
|
35
|
-
declare const RESERVED_ADAPTER_CONTEXT_KEYS: readonly ["evaluationKind", "check", "judge", "factuality", "faithfulness", "instructionFollowing", "pairwisePreference", "closeQA", "score", "group", "skip", "signal", "model", "reasoningEffort", "flags", "progress", "diagnostic", "log", "then", "Object", "constructor", "__defineGetter__", "__defineSetter__", "hasOwnProperty", "__lookupGetter__", "__lookupSetter__", "isPrototypeOf", "propertyIsEnumerable", "toString", "valueOf", "__proto__", "toLocaleString"];
|
|
40
|
+
declare const RESERVED_ADAPTER_CONTEXT_KEYS: readonly ["evaluationKind", "check", "judge", "factuality", "faithfulness", "instructionFollowing", "pairwisePreference", "closeQA", "usage", "elapsedMs", "maxTokens", "maxCost", "score", "group", "skip", "signal", "model", "reasoningEffort", "flags", "progress", "diagnostic", "log", "then", "Object", "constructor", "__defineGetter__", "__defineSetter__", "hasOwnProperty", "__lookupGetter__", "__lookupSetter__", "isPrototypeOf", "propertyIsEnumerable", "toString", "valueOf", "__proto__", "toLocaleString"];
|
|
36
41
|
export type ReservedAdapterContextKey = typeof RESERVED_ADAPTER_CONTEXT_KEYS[number];
|
|
37
42
|
type InvalidContextBranch<Context> = Context extends unknown ? Context extends object ? Context extends readonly unknown[] ? Context : Context extends (...args: readonly never[]) => unknown ? Context : string extends keyof Context ? Context : Extract<keyof Context, ReservedAdapterContextKey> extends never ? never : Context : Context : never;
|
|
38
43
|
type AdapterContextValidation<Context> = unknown extends Context ? unknown : [InvalidContextBranch<Context>] extends [never] ? unknown : {
|
|
@@ -50,11 +55,19 @@ type AdapterAssertionsValidationArgs<Context extends object, Assertions extends
|
|
|
50
55
|
}];
|
|
51
56
|
type AdapterFactory<Context extends object, Flags extends AdapterFlagsParser = undefined> = (context: AdapterCreateContext<AdapterFlagsOutput<Flags>>) => (Context & ThisType<Context>) | Promise<Context & ThisType<Context>>;
|
|
52
57
|
export interface AdapterCleanupContext {
|
|
53
|
-
/**
|
|
58
|
+
/** 整个清理窗口的固定毫秒预算,不为每个回调续期。 */
|
|
59
|
+
readonly timeoutMs: number;
|
|
60
|
+
/** 清理窗口实际开始时确定的 Unix 毫秒截止时间。 */
|
|
61
|
+
readonly deadlineAt: number;
|
|
62
|
+
/** 独立于执行信号;整个 Adapter 清理窗口截止时中止。 */
|
|
54
63
|
readonly signal: AbortSignal;
|
|
55
64
|
}
|
|
56
65
|
export interface AdapterCreateContext<Flags = ExperimentFlags> {
|
|
66
|
+
/** Frozen application model selections for this Attempt. */
|
|
67
|
+
readonly models: ResolvedModelSlots;
|
|
57
68
|
recordUsage(input: import("./adapter-usage.mjs").AdapterUsageInput): void;
|
|
69
|
+
/** Close application usage admission and declare whether the recorded collection is complete. */
|
|
70
|
+
sealUsage(input: import("./adapter-usage.mjs").AdapterUsageSeal): void;
|
|
58
71
|
attach(input: import("./adapter-attachments.mjs").AdapterAttachmentInput): Promise<import("./adapter-attachments.mjs").AdapterAttachmentReceipt>;
|
|
59
72
|
recordTrace<Event extends import("./adapter-execution-trace.mjs").ExecutionTraceEvent>(input: import("./adapter-execution-trace.mjs").ExecutionTraceInput<Event>): Promise<import("./adapter-execution-trace.mjs").ExecutionTraceReceipt>;
|
|
60
73
|
/** 当前 Eval 的公开 ID。 */
|
|
@@ -63,8 +76,8 @@ export interface AdapterCreateContext<Flags = ExperimentFlags> {
|
|
|
63
76
|
readonly experimentId: string;
|
|
64
77
|
/** 当前 Attempt 的零起始序号。 */
|
|
65
78
|
readonly attempt: number;
|
|
66
|
-
/** Attempt
|
|
67
|
-
readonly signal:
|
|
79
|
+
/** Attempt 执行信号;reason 区分 timeout 与 cancelled,不用于 cleanup 窗口。 */
|
|
80
|
+
readonly signal: AttemptSignal;
|
|
68
81
|
/** Experiment 选择的模型。 */
|
|
69
82
|
readonly model?: string;
|
|
70
83
|
/** Experiment 选择的推理强度。 */
|
|
@@ -83,7 +96,11 @@ export interface AdapterCreateContext<Flags = ExperimentFlags> {
|
|
|
83
96
|
*/
|
|
84
97
|
onCleanup(cleanup: (context: AdapterCleanupContext) => void | Promise<void>): void;
|
|
85
98
|
}
|
|
86
|
-
type EvalContextBase<Kind extends EvaluationKind, Flags> = JudgePresetMethods<Kind> & {
|
|
99
|
+
type EvalContextBase<Kind extends EvaluationKind, Flags, Context> = JudgePresetMethods<Kind, Context> & {
|
|
100
|
+
readonly usage: EvalUsage;
|
|
101
|
+
readonly elapsedMs: import("./assertions/match.mjs").NumericMaterial;
|
|
102
|
+
maxTokens(max: number): BooleanAssertionHandle<Kind, number>;
|
|
103
|
+
maxCost(usd: number | string): BooleanAssertionHandle<Kind, string>;
|
|
87
104
|
readonly evaluationKind: Kind;
|
|
88
105
|
readonly signal: AbortSignal;
|
|
89
106
|
readonly model?: string;
|
|
@@ -94,11 +111,11 @@ type EvalContextBase<Kind extends EvaluationKind, Flags> = JudgePresetMethods<Ki
|
|
|
94
111
|
log(message: string): void;
|
|
95
112
|
skip(reason: string): never;
|
|
96
113
|
group<Value>(title: string, body: () => Value | PromiseLike<Value>): Promise<Awaited<Value>>;
|
|
97
|
-
readonly check:
|
|
114
|
+
readonly check: AssertionCheck<Kind, Context>;
|
|
98
115
|
readonly judge: <Value>(value: AssertionSubject<Value>, definition: ScoreMatch<NoInfer<Value>>) => MeasurementAssertionHandle<Kind>;
|
|
99
116
|
};
|
|
100
117
|
/** Agent-neutral author context shared by every Adapter Eval. */
|
|
101
|
-
export type EvalContext<Kind extends EvaluationKind = "pass", Flags = ExperimentFlags> = EvalContextBase<Kind, Flags> & (Kind extends "score" ? {
|
|
118
|
+
export type EvalContext<Kind extends EvaluationKind = "pass", Flags = ExperimentFlags, Context = unknown> = EvalContextBase<Kind, Flags, Context> & (Kind extends "score" ? {
|
|
102
119
|
readonly score: AssertionsRuntime<"score">["t"]["score"];
|
|
103
120
|
} : {});
|
|
104
121
|
type AdapterEvalFields = Omit<EvalInput<undefined>, "test" | "sandbox" | "diff"> & {
|
|
@@ -110,10 +127,10 @@ type AdapterScoreEvalFields = Omit<ScoreEvalInput<undefined>, "test" | "sandbox"
|
|
|
110
127
|
readonly diff?: never;
|
|
111
128
|
};
|
|
112
129
|
export type AdapterEvalInput<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> = AdapterEvalFields & {
|
|
113
|
-
test(t: EvalContext<"pass", AdapterFlagsOutput<Flags
|
|
130
|
+
test(t: EvalContext<"pass", AdapterFlagsOutput<Flags>, Context> & Readonly<Context> & AdapterAssertionsFor<Assertions, "pass">): void | Promise<void>;
|
|
114
131
|
};
|
|
115
132
|
export type AdapterScoreEvalInput<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> = AdapterScoreEvalFields & {
|
|
116
|
-
test(t: EvalContext<"score", AdapterFlagsOutput<Flags
|
|
133
|
+
test(t: EvalContext<"score", AdapterFlagsOutput<Flags>, Context> & Readonly<Context> & AdapterAssertionsFor<Assertions, "score">): void | Promise<void>;
|
|
117
134
|
};
|
|
118
135
|
interface AdapterContractToken<Context extends object, Assertions extends object | undefined, Flags extends AdapterFlagsParser = undefined> {
|
|
119
136
|
readonly name: string;
|
|
@@ -124,7 +141,7 @@ interface AdapterContractToken<Context extends object, Assertions extends object
|
|
|
124
141
|
/** Keeps the context parameter invariant without exposing a constructible brand. */
|
|
125
142
|
readonly context: (value: Context) => Context;
|
|
126
143
|
}
|
|
127
|
-
export interface AdapterEvalDefinition<Kind extends EvaluationKind, Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> extends EvalDefinition<Kind, EvalContext<Kind, AdapterFlagsOutput<Flags
|
|
144
|
+
export interface AdapterEvalDefinition<Kind extends EvaluationKind, Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> extends EvalDefinition<Kind, EvalContext<Kind, AdapterFlagsOutput<Flags>, Context> & Readonly<Context> & AdapterAssertionsFor<Assertions, Kind>, undefined> {
|
|
128
145
|
readonly [EVAL_ADAPTER_CONTRACT_TOKEN]: AdapterContractToken<Context, Assertions, Flags>;
|
|
129
146
|
}
|
|
130
147
|
/** @internal Existential discovery view; concrete bound factories retain their exact Context. */
|
|
@@ -145,6 +162,7 @@ export interface AdapterRuntimeDefinition {
|
|
|
145
162
|
readonly name: string;
|
|
146
163
|
readonly contract: string;
|
|
147
164
|
readonly behaviorRevision: string | null;
|
|
165
|
+
readonly cleanupTimeoutMs: number;
|
|
148
166
|
readonly [ADAPTER_CONTRACT_TOKEN]: object;
|
|
149
167
|
readonly defineEval: (...args: never[]) => unknown;
|
|
150
168
|
readonly defineScoreEval: (...args: never[]) => unknown;
|
|
@@ -154,12 +172,15 @@ export interface AdapterImplementation<Context extends object, Assertions extend
|
|
|
154
172
|
readonly kind: "custom";
|
|
155
173
|
readonly contract: string;
|
|
156
174
|
readonly behaviorRevision: string | null;
|
|
175
|
+
readonly cleanupTimeoutMs: number;
|
|
157
176
|
readonly [ADAPTER_CONTRACT_TOKEN]: AdapterContractToken<Context, Assertions, Flags>;
|
|
158
177
|
create(context: AdapterCreateContext<AdapterFlagsOutput<Flags>>): Context | Promise<Context>;
|
|
159
178
|
}
|
|
160
179
|
export type AdapterImplementationInput<Context extends object, ImplementationContext extends Context = Context, Flags extends AdapterFlagsParser = undefined> = {
|
|
161
180
|
readonly name: string;
|
|
162
181
|
readonly behaviorRevision?: string;
|
|
182
|
+
/** Adapter 总清理预算,默认 30000 ms;允许整数 1–300000。 */
|
|
183
|
+
readonly cleanupTimeoutMs?: number;
|
|
163
184
|
readonly create: AdapterFactory<ImplementationContext, Flags>;
|
|
164
185
|
} & AdapterContextValidation<NoInfer<ImplementationContext>>;
|
|
165
186
|
export interface AdapterContract<Context extends object, Assertions extends object | undefined = undefined, Flags extends AdapterFlagsParser = undefined> extends AdapterDefinition<Context, Assertions, Flags> {
|
|
@@ -177,6 +198,8 @@ export type Adapter = import("./agents/types.mjs").Agent | AdapterRuntimeDefinit
|
|
|
177
198
|
export declare function defineAdapter<Context extends object, Flags extends AdapterFlagsParser = undefined>(input: {
|
|
178
199
|
readonly name: string;
|
|
179
200
|
readonly behaviorRevision?: string;
|
|
201
|
+
/** Adapter 总清理预算,默认 30000 ms;允许整数 1–300000。 */
|
|
202
|
+
readonly cleanupTimeoutMs?: number;
|
|
180
203
|
readonly create: AdapterFactory<Context, Flags>;
|
|
181
204
|
readonly parseFlags?: Flags;
|
|
182
205
|
readonly assertions?: undefined;
|
|
@@ -184,6 +207,8 @@ export declare function defineAdapter<Context extends object, Flags extends Adap
|
|
|
184
207
|
export declare function defineAdapter<Context extends object, Assertions extends object, Flags extends AdapterFlagsParser = undefined>(input: {
|
|
185
208
|
readonly name: string;
|
|
186
209
|
readonly behaviorRevision?: string;
|
|
210
|
+
/** Adapter 总清理预算,默认 30000 ms;允许整数 1–300000。 */
|
|
211
|
+
readonly cleanupTimeoutMs?: number;
|
|
187
212
|
readonly create: AdapterFactory<Context, Flags>;
|
|
188
213
|
readonly parseFlags?: Flags;
|
|
189
214
|
/** Attempt-local Assertion sugar, assembled once after create() succeeds. */
|