niceeval 0.18.0 → 0.19.0
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 +4 -2
- package/dist/adapter-usage.cjs.map +1 -1
- package/dist/adapter-usage.d.cts +1 -1
- package/dist/adapter-usage.d.mts +1 -1
- package/dist/adapter-usage.d.ts +1 -1
- package/dist/adapter.cjs +8 -7
- package/dist/adapter.cjs.map +1 -1
- package/dist/adapter.d.cts +21 -21
- package/dist/adapter.d.mts +21 -21
- package/dist/adapter.d.ts +21 -21
- package/dist/agents/{effect-runtime.cjs → agent-effects.cjs} +12 -18
- package/dist/agents/agent-effects.cjs.map +1 -0
- package/dist/agents/agent-effects.d.cts +23 -0
- package/dist/agents/agent-effects.d.mts +23 -0
- package/dist/agents/agent-effects.d.ts +23 -0
- package/dist/agents/agent-effects.js +16 -0
- package/dist/agents/agent-effects.js.map +1 -0
- package/dist/agents/ai-sdk.cjs +1 -1
- package/dist/agents/ai-sdk.cjs.map +1 -1
- package/dist/agents/bub.cjs +31 -18
- package/dist/agents/bub.cjs.map +1 -1
- package/dist/agents/bub.d.cts +9 -12
- package/dist/agents/bub.d.mts +9 -12
- package/dist/agents/bub.d.ts +9 -12
- package/dist/agents/claude-code-native.cjs +2 -2
- package/dist/agents/claude-code-native.cjs.map +1 -1
- package/dist/agents/claude-code.cjs +17 -11
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/claude-code.d.cts +11 -11
- package/dist/agents/claude-code.d.mts +11 -11
- package/dist/agents/claude-code.d.ts +11 -11
- package/dist/agents/codex-app-server.cjs +2 -2
- package/dist/agents/codex-app-server.cjs.map +1 -1
- package/dist/agents/codex.cjs +18 -12
- package/dist/agents/codex.cjs.map +1 -1
- package/dist/agents/codex.d.cts +12 -12
- package/dist/agents/codex.d.mts +12 -12
- package/dist/agents/codex.d.ts +12 -12
- package/dist/agents/deepseek-harness.cjs +2 -2
- package/dist/agents/deepseek-harness.cjs.map +1 -1
- package/dist/agents/hermes.cjs +3 -3
- package/dist/agents/hermes.cjs.map +1 -1
- package/dist/agents/index.cjs +3 -3
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +3 -3
- package/dist/agents/index.d.mts +3 -3
- package/dist/agents/index.d.ts +3 -3
- package/dist/agents/index.js +2 -2
- package/dist/agents/index.mjs +2 -2
- package/dist/agents/mcp.cjs.map +1 -1
- package/dist/agents/mcp.d.cts +2 -2
- package/dist/agents/mcp.d.mts +2 -2
- package/dist/agents/mcp.d.ts +2 -2
- package/dist/agents/omp.cjs +2 -2
- package/dist/agents/omp.cjs.map +1 -1
- package/dist/agents/openai-compat.cjs +2 -2
- package/dist/agents/openai-compat.cjs.map +1 -1
- package/dist/agents/openclaw.cjs +3 -3
- package/dist/agents/openclaw.cjs.map +1 -1
- package/dist/agents/opencode.cjs +16 -4
- package/dist/agents/opencode.cjs.map +1 -1
- package/dist/agents/plugin-extensions.cjs +71 -0
- package/dist/agents/plugin-extensions.cjs.map +1 -0
- package/dist/agents/plugin-extensions.d.cts +26 -0
- package/dist/agents/plugin-extensions.d.mts +26 -0
- package/dist/agents/plugin-extensions.d.ts +26 -0
- package/dist/agents/plugin-extensions.js +8 -0
- package/dist/agents/plugin-extensions.js.map +1 -0
- package/dist/agents/post-setup.cjs +14 -3
- package/dist/agents/post-setup.cjs.map +1 -1
- package/dist/agents/post-setup.d.cts +4 -2
- package/dist/agents/post-setup.d.mts +4 -2
- package/dist/agents/post-setup.d.ts +4 -2
- package/dist/agents/post-setup.js +8 -6
- package/dist/agents/sdk-streams.cjs +3 -3
- package/dist/agents/sdk-streams.cjs.map +1 -1
- package/dist/agents/{session-slot.cjs → session-key.cjs} +4 -4
- package/dist/agents/session-key.cjs.map +1 -0
- package/dist/agents/session-key.d.cts +12 -0
- package/dist/agents/session-key.d.mts +12 -0
- package/dist/agents/session-key.d.ts +12 -0
- package/dist/agents/session-key.js +6 -0
- package/dist/agents/session-key.js.map +1 -0
- package/dist/agents/shared.cjs +2 -2
- package/dist/agents/shared.cjs.map +1 -1
- package/dist/agents/shared.d.cts +4 -4
- package/dist/agents/shared.d.mts +4 -4
- package/dist/agents/shared.d.ts +4 -4
- package/dist/agents/skills.cjs.map +1 -1
- package/dist/agents/skills.d.cts +3 -3
- package/dist/agents/skills.d.mts +3 -3
- package/dist/agents/skills.d.ts +3 -3
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.d.cts +55 -54
- package/dist/agents/types.d.mts +55 -54
- package/dist/agents/types.d.ts +55 -54
- package/dist/agents/ui-message-stream.cjs +4 -4
- package/dist/agents/ui-message-stream.cjs.map +1 -1
- package/dist/agents/unrecognized-events.cjs +32 -0
- package/dist/agents/unrecognized-events.cjs.map +1 -0
- package/dist/agents/unrecognized-events.d.cts +8 -0
- package/dist/agents/unrecognized-events.d.mts +8 -0
- package/dist/agents/unrecognized-events.d.ts +8 -0
- package/dist/agents/unrecognized-events.js +6 -0
- package/dist/agents/unrecognized-events.js.map +1 -0
- package/dist/assertions/api.cjs.map +1 -1
- package/dist/assertions/api.d.cts +3 -0
- package/dist/assertions/api.d.mts +3 -0
- package/dist/assertions/api.d.ts +3 -0
- package/dist/assertions/collection.cjs +1 -1
- package/dist/assertions/collection.cjs.map +1 -1
- package/dist/assertions/judge.cjs +1 -1
- package/dist/assertions/judge.cjs.map +1 -1
- package/dist/assertions/match.cjs +52 -21
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +16 -5
- package/dist/assertions/match.d.mts +16 -5
- package/dist/assertions/match.d.ts +16 -5
- package/dist/assertions/match.js +96 -94
- package/dist/assertions/measurements.cjs +22 -6
- package/dist/assertions/measurements.cjs.map +1 -1
- package/dist/assertions/measurements.d.cts +8 -1
- package/dist/assertions/measurements.d.mts +8 -1
- package/dist/assertions/measurements.d.ts +8 -1
- package/dist/assertions/numeric.cjs +2 -0
- package/dist/assertions/numeric.cjs.map +1 -1
- package/dist/assertions/numeric.d.cts +1 -1
- package/dist/assertions/numeric.d.mts +1 -1
- package/dist/assertions/numeric.d.ts +1 -1
- package/dist/assertions/quantity.cjs +42 -0
- package/dist/assertions/quantity.cjs.map +1 -0
- package/dist/assertions/quantity.d.cts +18 -0
- package/dist/assertions/quantity.d.mts +18 -0
- package/dist/assertions/quantity.d.ts +18 -0
- package/dist/assertions/quantity.js +22 -0
- package/dist/assertions/quantity.js.map +1 -0
- package/dist/assertions/record/attachment.cjs +2 -0
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/codec.cjs +5 -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 +3 -1
- package/dist/assertions/record/model.d.mts +3 -1
- package/dist/assertions/record/model.d.ts +3 -1
- package/dist/assertions/runtime.cjs +11 -6
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/cli/program.cjs +3 -0
- package/dist/cli/program.cjs.map +1 -1
- package/dist/context/assert-first.cjs +6 -4
- package/dist/context/assert-first.cjs.map +1 -1
- package/dist/context/assert-first.d.cts +9 -3
- package/dist/context/assert-first.d.mts +9 -3
- package/dist/context/assert-first.d.ts +9 -3
- package/dist/context/notes.cjs +47 -0
- package/dist/context/notes.cjs.map +1 -0
- package/dist/context/notes.d.cts +10 -0
- package/dist/context/notes.d.mts +10 -0
- package/dist/context/notes.d.ts +10 -0
- package/dist/context/notes.js +6 -0
- package/dist/context/notes.js.map +1 -0
- package/dist/context/send-failures.cjs +1 -7
- package/dist/context/send-failures.cjs.map +1 -1
- package/dist/context/send-failures.d.cts +2 -3
- package/dist/context/send-failures.d.mts +2 -3
- package/dist/context/send-failures.d.ts +2 -3
- package/dist/context/send-retry.cjs +0 -1
- package/dist/context/send-retry.cjs.map +1 -1
- package/dist/context/send-retry.d.cts +1 -2
- package/dist/context/send-retry.d.mts +1 -2
- package/dist/context/send-retry.d.ts +1 -2
- package/dist/context/session.cjs +10 -17
- package/dist/context/session.cjs.map +1 -1
- package/dist/context/session.d.cts +4 -10
- package/dist/context/session.d.mts +4 -10
- package/dist/context/session.d.ts +4 -10
- package/dist/define.cjs +88 -65
- package/dist/define.cjs.map +1 -1
- package/dist/define.d.cts +3 -3
- package/dist/define.d.mts +3 -3
- package/dist/define.d.ts +3 -3
- package/dist/eval/cli/contribution.cjs +1 -1
- package/dist/eval/cli/contribution.cjs.map +1 -1
- package/dist/eval/host/index.cjs +1 -1
- package/dist/eval/host/index.cjs.map +1 -1
- package/dist/eval/record/evaluation.cjs +1 -1
- package/dist/eval/record/evaluation.cjs.map +1 -1
- package/dist/eval/record/membership-provenance.d.cts +3 -3
- package/dist/eval/record/membership-provenance.d.mts +3 -3
- package/dist/eval/record/membership-provenance.d.ts +3 -3
- package/dist/eval/record/score.cjs +2 -2
- package/dist/eval/record/score.cjs.map +1 -1
- package/dist/eval/record/sealed-assertion.cjs +1 -1
- package/dist/eval/record/sealed-assertion.cjs.map +1 -1
- package/dist/eval/record/verdict.cjs +2 -2
- package/dist/eval/record/verdict.cjs.map +1 -1
- package/dist/expect/index.cjs +10 -1
- package/dist/expect/index.cjs.map +1 -1
- package/dist/expect/index.d.cts +3 -1
- package/dist/expect/index.d.mts +3 -1
- package/dist/expect/index.d.ts +3 -1
- package/dist/expect/index.js +92 -76
- package/dist/expect/index.mjs +92 -76
- package/dist/experiment/host/cli/contribution.cjs +52 -39
- package/dist/experiment/host/cli/contribution.cjs.map +1 -1
- package/dist/experiment/host/cli/contribution.d.cts +18 -4
- package/dist/experiment/host/cli/contribution.d.mts +18 -4
- package/dist/experiment/host/cli/contribution.d.ts +18 -4
- package/dist/experiment/host/cli/contribution.js +2 -2
- package/dist/experiment/host/cli/debug-protocol.cjs +2 -2
- package/dist/experiment/host/cli/debug-protocol.cjs.map +1 -1
- package/dist/experiment/host/cli/debug-protocol.d.cts +2 -2
- package/dist/experiment/host/cli/debug-protocol.d.mts +2 -2
- package/dist/experiment/host/cli/debug-protocol.d.ts +2 -2
- package/dist/experiment/host/cli/output-protocol.cjs +1 -1
- package/dist/experiment/host/cli/output-protocol.cjs.map +1 -1
- package/dist/experiment/host/cli/output-protocol.d.cts +2 -2
- package/dist/experiment/host/cli/output-protocol.d.mts +2 -2
- package/dist/experiment/host/cli/output-protocol.d.ts +2 -2
- package/dist/experiment/host/current.cjs +2 -2
- package/dist/experiment/host/current.cjs.map +1 -1
- package/dist/experiment/host/index.cjs +1 -1
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/experiment/host/operations.cjs +21 -22
- package/dist/experiment/host/operations.cjs.map +1 -1
- package/dist/experiment/host/runtime.cjs +8 -9
- package/dist/experiment/host/runtime.cjs.map +1 -1
- package/dist/experiment/host/runtime.d.cts +3 -3
- package/dist/experiment/host/runtime.d.mts +3 -3
- package/dist/experiment/host/runtime.d.ts +3 -3
- package/dist/experiment/host/teardown.cjs +3 -3
- package/dist/experiment/host/teardown.cjs.map +1 -1
- package/dist/experiment/host/teardown.d.cts +3 -3
- package/dist/experiment/host/teardown.d.mts +3 -3
- package/dist/experiment/host/teardown.d.ts +3 -3
- package/dist/experiment/host/types.cjs.map +1 -1
- package/dist/experiment/host/types.d.cts +19 -19
- package/dist/experiment/host/types.d.mts +19 -19
- package/dist/experiment/host/types.d.ts +19 -19
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/dist/inspection/assertions.cjs +1 -1
- package/dist/inspection/assertions.cjs.map +1 -1
- package/dist/inspection/cli/contribution.cjs +8 -7
- package/dist/inspection/cli/contribution.cjs.map +1 -1
- package/dist/inspection/facts.cjs +4 -4
- package/dist/inspection/facts.cjs.map +1 -1
- package/dist/inspection/index.cjs +1 -5
- package/dist/inspection/index.cjs.map +1 -1
- package/dist/inspection/index.d.cts +1 -2
- package/dist/inspection/index.d.mts +1 -2
- package/dist/inspection/index.d.ts +1 -2
- package/dist/inspection/index.js +20 -26
- package/dist/inspection/lifecycle.cjs +7 -0
- package/dist/inspection/lifecycle.cjs.map +1 -0
- package/dist/inspection/lifecycle.d.cts +4 -0
- package/dist/inspection/lifecycle.d.mts +4 -0
- package/dist/inspection/lifecycle.d.ts +4 -0
- package/dist/inspection/lifecycle.js +6 -0
- package/dist/inspection/lifecycle.js.map +1 -0
- package/dist/inspection/notes.cjs +40 -0
- package/dist/inspection/notes.cjs.map +1 -0
- package/dist/inspection/notes.d.cts +12 -0
- package/dist/inspection/notes.d.mts +12 -0
- package/dist/inspection/notes.d.ts +12 -0
- package/dist/inspection/notes.js +8 -0
- package/dist/inspection/notes.js.map +1 -0
- package/dist/inspection/overview.cjs +12 -15
- package/dist/inspection/overview.cjs.map +1 -1
- package/dist/inspection/overview.d.cts +8 -6
- package/dist/inspection/overview.d.mts +8 -6
- package/dist/inspection/overview.d.ts +8 -6
- package/dist/inspection/planned-attempt.cjs +45 -0
- package/dist/inspection/planned-attempt.cjs.map +1 -0
- package/dist/inspection/planned-attempt.d.cts +109 -0
- package/dist/inspection/planned-attempt.d.mts +109 -0
- package/dist/inspection/planned-attempt.d.ts +109 -0
- package/dist/inspection/planned-attempt.js +24 -0
- package/dist/inspection/planned-attempt.js.map +1 -0
- package/dist/inspection/project-result.cjs +5 -5
- package/dist/inspection/project-result.cjs.map +1 -1
- package/dist/inspection/project-result.d.cts +58 -57
- package/dist/inspection/project-result.d.mts +58 -57
- package/dist/inspection/project-result.d.ts +58 -57
- package/dist/inspection/project-result.js +4 -4
- package/dist/inspection/project.cjs +3 -3
- package/dist/inspection/project.cjs.map +1 -1
- package/dist/inspection/protocol-values.cjs +1 -1
- package/dist/inspection/protocol-values.cjs.map +1 -1
- package/dist/inspection/protocol-values.d.cts +1 -1
- package/dist/inspection/protocol-values.d.mts +1 -1
- package/dist/inspection/protocol-values.d.ts +1 -1
- package/dist/inspection/protocol.cjs +8 -8
- package/dist/inspection/protocol.cjs.map +1 -1
- package/dist/inspection/protocol.d.cts +237 -219
- package/dist/inspection/protocol.d.mts +237 -219
- package/dist/inspection/protocol.d.ts +237 -219
- package/dist/inspection/public.cjs +1 -5
- package/dist/inspection/public.cjs.map +1 -1
- package/dist/inspection/public.d.cts +1 -2
- package/dist/inspection/public.d.mts +1 -2
- package/dist/inspection/public.d.ts +1 -2
- package/dist/inspection/public.js +14 -20
- package/dist/inspection/public.mjs +166 -129
- package/dist/inspection/query.cjs +1 -1
- package/dist/inspection/query.cjs.map +1 -1
- package/dist/inspection/results.cjs +61 -52
- package/dist/inspection/results.cjs.map +1 -1
- package/dist/inspection/results.d.cts +157 -140
- package/dist/inspection/results.d.mts +157 -140
- package/dist/inspection/results.d.ts +157 -140
- package/dist/inspection/select.cjs +33 -28
- package/dist/inspection/select.cjs.map +1 -1
- package/dist/inspection/source.cjs +1 -1
- package/dist/inspection/source.cjs.map +1 -1
- package/dist/inspection/sources.cjs +2 -2
- package/dist/inspection/sources.cjs.map +1 -1
- package/dist/inspection/trace.cjs +9 -8
- package/dist/inspection/trace.cjs.map +1 -1
- package/dist/inspection/trace.d.cts +4 -4
- package/dist/inspection/trace.d.mts +4 -4
- package/dist/inspection/trace.d.ts +4 -4
- package/dist/loaders/index.cjs +7 -279
- package/dist/loaders/index.cjs.map +1 -1
- package/dist/loaders/index.d.cts +2 -95
- package/dist/loaders/index.d.mts +2 -95
- package/dist/loaders/index.d.ts +2 -95
- package/dist/loaders/index.js +10 -12
- package/dist/loaders/index.mjs +10 -12
- package/dist/loaders/runtime.cjs +283 -0
- package/dist/loaders/runtime.cjs.map +1 -0
- package/dist/loaders/runtime.d.cts +95 -0
- package/dist/loaders/runtime.d.mts +95 -0
- package/dist/loaders/runtime.d.ts +95 -0
- package/dist/loaders/runtime.js +16 -0
- package/dist/loaders/runtime.js.map +1 -0
- package/dist/migrations/judge-provider.md +6 -6
- package/dist/{model-slots.cjs → model-roles.cjs} +12 -12
- package/dist/{model-slots.cjs.map → model-roles.cjs.map} +1 -1
- package/dist/{model-slots.d.cts → model-roles.d.cts} +10 -10
- package/dist/{model-slots.d.mts → model-roles.d.mts} +10 -10
- package/dist/{model-slots.d.ts → model-roles.d.ts} +10 -10
- package/dist/model-roles.js +14 -0
- package/dist/model-roles.js.map +1 -0
- package/dist/o11y/adapter-usage-projection.cjs +9 -8
- package/dist/o11y/adapter-usage-projection.cjs.map +1 -1
- package/dist/o11y/adapter-usage-projection.d.cts +23 -15
- package/dist/o11y/adapter-usage-projection.d.mts +23 -15
- package/dist/o11y/adapter-usage-projection.d.ts +23 -15
- package/dist/o11y/cache-read.cjs +14 -14
- package/dist/o11y/cache-read.cjs.map +1 -1
- package/dist/o11y/cache-read.d.cts +5 -5
- package/dist/o11y/cache-read.d.mts +5 -5
- package/dist/o11y/cache-read.d.ts +5 -5
- package/dist/o11y/derive.cjs.map +1 -1
- package/dist/o11y/derive.d.cts +2 -2
- package/dist/o11y/derive.d.mts +2 -2
- package/dist/o11y/derive.d.ts +2 -2
- package/dist/o11y/eval-usage.cjs +9 -9
- package/dist/o11y/eval-usage.cjs.map +1 -1
- package/dist/o11y/eval-usage.d.cts +7 -7
- package/dist/o11y/eval-usage.d.mts +7 -7
- package/dist/o11y/eval-usage.d.ts +7 -7
- package/dist/o11y/parsers/bub.cjs +57 -81
- package/dist/o11y/parsers/bub.cjs.map +1 -1
- package/dist/o11y/parsers/index.cjs.map +1 -1
- package/dist/o11y/parsers/index.d.cts +2 -0
- package/dist/o11y/parsers/index.d.mts +2 -0
- package/dist/o11y/parsers/index.d.ts +2 -0
- package/dist/o11y/parsers/opencode.cjs +129 -217
- package/dist/o11y/parsers/opencode.cjs.map +1 -1
- package/dist/o11y/parsers/opencode.d.cts +2 -5
- package/dist/o11y/parsers/opencode.d.mts +2 -5
- package/dist/o11y/parsers/opencode.d.ts +2 -5
- package/dist/o11y/types.cjs.map +1 -1
- package/dist/o11y/types.d.cts +1 -1
- package/dist/o11y/types.d.mts +1 -1
- package/dist/o11y/types.d.ts +1 -1
- package/dist/plugin/contracts.cjs +170 -120
- package/dist/plugin/contracts.cjs.map +1 -1
- package/dist/plugin/contracts.d.cts +102 -90
- package/dist/plugin/contracts.d.mts +102 -90
- package/dist/plugin/contracts.d.ts +102 -90
- package/dist/plugin/contracts.js +16 -12
- package/dist/plugin/index.cjs.map +1 -1
- package/dist/plugin/index.d.cts +1 -1
- package/dist/plugin/index.d.mts +1 -1
- package/dist/plugin/index.d.ts +1 -1
- package/dist/plugin/link.cjs +69 -64
- package/dist/plugin/link.cjs.map +1 -1
- package/dist/plugin/link.d.cts +5 -3
- package/dist/plugin/link.d.mts +5 -3
- package/dist/plugin/link.d.ts +5 -3
- package/dist/plugin/link.js +12 -8
- 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/attempt-note/definition.cjs +12 -0
- package/dist/record/family/attempt-note/definition.cjs.map +1 -0
- package/dist/record/family/attempt-note/definition.d.cts +6 -0
- package/dist/record/family/attempt-note/definition.d.mts +6 -0
- package/dist/record/family/attempt-note/definition.d.ts +6 -0
- package/dist/record/family/attempt-note/definition.js +6 -0
- package/dist/record/family/attempt-note/definition.js.map +1 -0
- package/dist/record/family/attempt-note/persistence.cjs +10 -0
- package/dist/record/family/attempt-note/persistence.cjs.map +1 -0
- package/dist/record/family/attempt-note/persistence.d.cts +6 -0
- package/dist/record/family/attempt-note/persistence.d.mts +6 -0
- package/dist/record/family/attempt-note/persistence.d.ts +6 -0
- package/dist/record/family/attempt-note/persistence.js +6 -0
- package/dist/record/family/attempt-note/persistence.js.map +1 -0
- package/dist/record/family/attempt-note/schema.cjs +20 -0
- package/dist/record/family/attempt-note/schema.cjs.map +1 -0
- package/dist/record/family/attempt-note/schema.d.cts +21 -0
- package/dist/record/family/attempt-note/schema.d.mts +21 -0
- package/dist/record/family/attempt-note/schema.d.ts +21 -0
- package/dist/record/family/attempt-note/schema.js +10 -0
- package/dist/record/family/attempt-note/schema.js.map +1 -0
- package/dist/record/family/catalog.cjs +32 -29
- package/dist/record/family/catalog.cjs.map +1 -1
- package/dist/record/family/catalog.d.cts +7 -2
- package/dist/record/family/catalog.d.mts +7 -2
- package/dist/record/family/catalog.d.ts +7 -2
- package/dist/record/family/current.cjs +48 -45
- package/dist/record/family/current.cjs.map +1 -1
- package/dist/record/family/current.d.cts +15 -0
- package/dist/record/family/current.d.mts +15 -0
- package/dist/record/family/current.d.ts +15 -0
- package/dist/record/model/index.js +66 -64
- package/dist/record/model/run-context.cjs +9 -3
- package/dist/record/model/run-context.cjs.map +1 -1
- package/dist/record/model/run-context.d.cts +9 -2
- package/dist/record/model/run-context.d.mts +9 -2
- package/dist/record/model/run-context.d.ts +9 -2
- package/dist/record/model/run-context.js +8 -6
- 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/run/cli/contribution.cjs +6 -32
- package/dist/run/cli/contribution.cjs.map +1 -1
- package/dist/run/host/runtime.cjs +1 -1
- package/dist/run/host/runtime.cjs.map +1 -1
- package/dist/run/storage/sqlite.cjs +7 -7
- package/dist/run/storage/sqlite.cjs.map +1 -1
- package/dist/runner/adapter-usage.cjs +5 -3
- package/dist/runner/adapter-usage.cjs.map +1 -1
- package/dist/runner/adapter-usage.d.cts +2 -2
- package/dist/runner/adapter-usage.d.mts +2 -2
- package/dist/runner/adapter-usage.d.ts +2 -2
- package/dist/runner/adoption.cjs +9 -12
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/attempt-notes.cjs +8 -0
- package/dist/runner/attempt-notes.cjs.map +1 -0
- package/dist/runner/attempt-notes.d.cts +4 -0
- package/dist/runner/attempt-notes.d.mts +4 -0
- package/dist/runner/attempt-notes.d.ts +4 -0
- package/dist/runner/attempt-notes.js +8 -0
- package/dist/runner/attempt-notes.js.map +1 -0
- package/dist/runner/attempt.cjs +61 -73
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/attempt.d.cts +3 -3
- package/dist/runner/attempt.d.mts +3 -3
- package/dist/runner/attempt.d.ts +3 -3
- package/dist/runner/command-plan.cjs +21 -26
- package/dist/runner/command-plan.cjs.map +1 -1
- package/dist/runner/command-plan.d.cts +4 -4
- package/dist/runner/command-plan.d.mts +4 -4
- package/dist/runner/command-plan.d.ts +4 -4
- package/dist/runner/command-plan.js +4 -4
- package/dist/runner/config-identity.cjs.map +1 -1
- package/dist/runner/config-identity.d.cts +2 -2
- package/dist/runner/config-identity.d.mts +2 -2
- package/dist/runner/config-identity.d.ts +2 -2
- package/dist/runner/discover.cjs +6 -6
- package/dist/runner/discover.cjs.map +1 -1
- package/dist/runner/eval-selection.cjs +2 -2
- package/dist/runner/eval-selection.cjs.map +1 -1
- package/dist/runner/eval-selection.d.cts +2 -2
- package/dist/runner/eval-selection.d.mts +2 -2
- package/dist/runner/eval-selection.d.ts +2 -2
- package/dist/runner/feedback/human.cjs +1 -1
- package/dist/runner/feedback/human.cjs.map +1 -1
- package/dist/runner/feedback/json.cjs +4 -2
- package/dist/runner/feedback/json.cjs.map +1 -1
- package/dist/runner/feedback/json.d.cts +1 -1
- package/dist/runner/feedback/json.d.mts +1 -1
- package/dist/runner/feedback/json.d.ts +1 -1
- package/dist/runner/feedback/sink.cjs +1 -1
- package/dist/runner/feedback/sink.cjs.map +1 -1
- package/dist/runner/feedback/sink.d.cts +1 -1
- package/dist/runner/feedback/sink.d.mts +1 -1
- package/dist/runner/feedback/sink.d.ts +1 -1
- package/dist/runner/fingerprint.cjs +1 -1
- package/dist/runner/fingerprint.cjs.map +1 -1
- package/dist/runner/project-target.cjs.map +1 -1
- package/dist/runner/project-target.d.cts +2 -2
- package/dist/runner/project-target.d.mts +2 -2
- package/dist/runner/project-target.d.ts +2 -2
- package/dist/runner/record/attachments.cjs +2 -2
- package/dist/runner/record/attachments.cjs.map +1 -1
- package/dist/runner/record/planning.cjs +8 -2
- package/dist/runner/record/planning.cjs.map +1 -1
- package/dist/runner/record.cjs +2 -0
- package/dist/runner/record.cjs.map +1 -1
- package/dist/runner/report.cjs +3 -3
- package/dist/runner/report.cjs.map +1 -1
- package/dist/runner/report.d.cts +1 -1
- package/dist/runner/report.d.mts +1 -1
- package/dist/runner/report.d.ts +1 -1
- package/dist/runner/reuse-plan.cjs +2 -2
- package/dist/runner/reuse-plan.cjs.map +1 -1
- package/dist/runner/run.cjs +10 -45
- package/dist/runner/run.cjs.map +1 -1
- package/dist/runner/sandbox-pool.cjs +1 -2
- package/dist/runner/sandbox-pool.cjs.map +1 -1
- package/dist/runner/setup-prefix-preparation.cjs +1 -1
- package/dist/runner/setup-prefix-preparation.cjs.map +1 -1
- package/dist/runner/teardown-registry.cjs +2 -2
- package/dist/runner/teardown-registry.cjs.map +1 -1
- package/dist/runner/teardown-registry.d.cts +1 -1
- package/dist/runner/teardown-registry.d.mts +1 -1
- package/dist/runner/teardown-registry.d.ts +1 -1
- package/dist/runner/types.cjs +4 -4
- package/dist/runner/types.cjs.map +1 -1
- package/dist/runner/types.d.cts +64 -93
- package/dist/runner/types.d.mts +64 -93
- package/dist/runner/types.d.ts +64 -93
- package/dist/runner/types.js +2 -2
- package/dist/sandbox/action.cjs +1 -1
- package/dist/sandbox/action.cjs.map +1 -1
- package/dist/sandbox/cli/contribution.cjs +17 -14
- package/dist/sandbox/cli/contribution.cjs.map +1 -1
- package/dist/sandbox/cli/contribution.d.cts +1 -1
- package/dist/sandbox/cli/contribution.d.mts +1 -1
- package/dist/sandbox/cli/contribution.d.ts +1 -1
- package/dist/sandbox/commands.cjs +1 -1
- package/dist/sandbox/commands.cjs.map +1 -1
- package/dist/sandbox/commands.d.cts +1 -1
- package/dist/sandbox/commands.d.mts +1 -1
- package/dist/sandbox/commands.d.ts +1 -1
- package/dist/sandbox/compose.cjs +2 -2
- package/dist/sandbox/compose.cjs.map +1 -1
- package/dist/sandbox/docker-profile/registry.cjs +5 -9
- package/dist/sandbox/docker-profile/registry.cjs.map +1 -1
- package/dist/sandbox/docker-profile/registry.d.cts +0 -3
- package/dist/sandbox/docker-profile/registry.d.mts +0 -3
- package/dist/sandbox/docker-profile/registry.d.ts +0 -3
- package/dist/sandbox/docker-profile/registry.js +6 -12
- package/dist/sandbox/docker-profile/runtime.cjs +1 -1
- package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.cjs +12 -16
- package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.d.cts +2 -6
- package/dist/sandbox/docker-profile/schema.d.mts +2 -6
- package/dist/sandbox/docker-profile/schema.d.ts +2 -6
- package/dist/sandbox/docker-profile/schema.js +24 -32
- package/dist/sandbox/incus.cjs +2 -2
- package/dist/sandbox/incus.cjs.map +1 -1
- package/dist/sandbox/index.cjs +4 -35
- package/dist/sandbox/index.cjs.map +1 -1
- package/dist/sandbox/index.d.cts +4 -8
- package/dist/sandbox/index.d.mts +4 -8
- package/dist/sandbox/index.d.ts +4 -8
- package/dist/sandbox/index.js +116 -172
- package/dist/sandbox/index.mjs +116 -172
- package/dist/sandbox/layer.cjs +3 -3
- package/dist/sandbox/layer.cjs.map +1 -1
- package/dist/sandbox/link.cjs +5 -0
- package/dist/sandbox/link.cjs.map +1 -1
- package/dist/sandbox/link.d.cts +3 -0
- package/dist/sandbox/link.d.mts +3 -0
- package/dist/sandbox/link.d.ts +3 -0
- package/dist/sandbox/runtime.cjs +9 -4
- package/dist/sandbox/runtime.cjs.map +1 -1
- package/dist/shared/failure-class.cjs +5 -5
- package/dist/shared/failure-class.cjs.map +1 -1
- package/dist/shared/failure-class.d.cts +4 -10
- package/dist/shared/failure-class.d.mts +4 -10
- package/dist/shared/failure-class.d.ts +4 -10
- package/dist/shared/types.cjs.map +1 -1
- package/dist/shared/types.d.cts +1 -1
- package/dist/shared/types.d.mts +1 -1
- package/dist/shared/types.d.ts +1 -1
- package/dist/show/contribution.cjs +17 -2
- package/dist/show/contribution.cjs.map +1 -1
- package/dist/show/contribution.d.cts +14 -0
- package/dist/show/contribution.d.mts +14 -0
- package/dist/show/contribution.d.ts +14 -0
- package/dist/show/model.cjs +8 -5
- package/dist/show/model.cjs.map +1 -1
- package/dist/show/model.d.cts +11 -8
- package/dist/show/model.d.mts +11 -8
- package/dist/show/model.d.ts +11 -8
- package/dist/show/render.cjs +34 -22
- package/dist/show/render.cjs.map +1 -1
- package/dist/sources/projector.cjs +1 -1
- package/dist/sources/projector.cjs.map +1 -1
- package/dist/types.cjs +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/types.js +2 -2
- package/dist/view/app-dist/.vite/manifest.json +2 -2
- package/dist/view/app-dist/assets/{index-B3ijZRph.js → index-CxrOUvHC.js} +17 -17
- package/dist/view/app-dist/assets/{quality-cost-scatter-B--DfJ9s.js → quality-cost-scatter-B6Aiss7x.js} +1 -1
- package/dist/view/app-dist/index.html +1 -1
- package/dist/view/cli/contribution.cjs +1 -1
- package/dist/view/cli/contribution.cjs.map +1 -1
- package/dist/view/function-runtime.mjs +318 -121
- package/dist/view/http-protocol.d.cts +1 -1
- package/dist/view/http-protocol.d.mts +1 -1
- package/dist/view/http-protocol.d.ts +1 -1
- package/dist/view/inspection-host.cjs +2 -2
- package/dist/view/inspection-host.cjs.map +1 -1
- package/dist/view/inspection-host.d.cts +349 -331
- package/dist/view/inspection-host.d.mts +349 -331
- package/dist/view/inspection-host.d.ts +349 -331
- package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +6 -6
- package/docs-site/zh/examples/integrations/claude-sdk.mdx +5 -5
- package/docs-site/zh/examples/integrations/codex-sdk.mdx +4 -4
- package/docs-site/zh/examples/integrations/langgraph.mdx +4 -4
- package/docs-site/zh/examples/integrations/pi-sdk.mdx +5 -5
- package/docs-site/zh/explanation/adapter.mdx +6 -6
- package/docs-site/zh/explanation/assert.mdx +7 -7
- package/docs-site/zh/explanation/drive.mdx +4 -4
- package/docs-site/zh/explanation/hitl.mdx +2 -2
- package/docs-site/zh/explanation/judge.mdx +2 -2
- package/docs-site/zh/introduction.mdx +2 -2
- package/docs-site/zh/reference/builtin-agents.mdx +46 -49
- package/docs-site/zh/reference/cli.mdx +16 -14
- package/docs-site/zh/reference/define-agent.mdx +19 -19
- package/docs-site/zh/reference/define-config.mdx +7 -15
- package/docs-site/zh/reference/define-eval.mdx +20 -14
- package/docs-site/zh/reference/define-experiment.mdx +18 -39
- package/docs-site/zh/reference/events.mdx +1 -1
- package/docs-site/zh/reference/expect.mdx +21 -0
- package/docs-site/zh/reference/official-adapters.mdx +12 -5
- package/docs-site/zh/troubleshooting/debugging.mdx +2 -2
- package/docs-site/zh/troubleshooting/recover-after-kill.mdx +1 -1
- package/docs-site/zh/tutorials/agent-onboarding.mdx +2 -2
- package/docs-site/zh/tutorials/authoring.mdx +2 -2
- package/docs-site/zh/tutorials/compare-runs.mdx +1 -1
- package/docs-site/zh/tutorials/concurrency.mdx +8 -8
- package/docs-site/zh/tutorials/configuration.mdx +5 -5
- package/docs-site/zh/tutorials/control-run-cost.mdx +19 -19
- package/docs-site/zh/tutorials/eval-groups.mdx +1 -1
- package/docs-site/zh/tutorials/evaluation-kinds.mdx +5 -5
- package/docs-site/zh/tutorials/experiment-services.mdx +32 -32
- package/docs-site/zh/tutorials/handle-execution-failures.mdx +2 -28
- package/docs-site/zh/tutorials/plugins.mdx +49 -143
- package/docs-site/zh/tutorials/sandbox-agent.mdx +1 -1
- package/docs-site/zh/tutorials/sandbox-reuse.mdx +7 -7
- package/docs-site/zh/tutorials/upgrade-0-18.mdx +1 -1
- package/docs-site/zh/tutorials/upgrade-0-19.mdx +121 -0
- package/docs-site/zh/tutorials/upgrade-0-20.mdx +12 -0
- package/docs-site/zh/tutorials/verify-judge.mdx +2 -2
- package/docs-site/zh/tutorials/viewing-results.mdx +2 -2
- package/docs-site/zh/tutorials/write-experiment.mdx +1 -1
- package/docs-site/zh/tutorials/write-send.mdx +13 -13
- package/package.json +1 -1
- package/dist/agents/effect-runtime.cjs.map +0 -1
- package/dist/agents/effect-runtime.d.cts +0 -29
- package/dist/agents/effect-runtime.d.mts +0 -29
- package/dist/agents/effect-runtime.d.ts +0 -29
- package/dist/agents/effect-runtime.js +0 -16
- package/dist/agents/effect-runtime.js.map +0 -1
- package/dist/agents/session-slot.cjs.map +0 -1
- package/dist/agents/session-slot.d.cts +0 -12
- package/dist/agents/session-slot.d.mts +0 -12
- package/dist/agents/session-slot.d.ts +0 -12
- package/dist/agents/session-slot.js +0 -6
- package/dist/agents/session-slot.js.map +0 -1
- package/dist/model-slots.js +0 -14
- package/dist/model-slots.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"judge.js","sourceRoot":"","sources":["judge.ts"],"names":[],"mappings":";;AAyEA,kCAyCC;AAqID,gEAEC;AACD,sDASC;AACD,oDAuBC;AACD,8BAiBC;AAED,oCAGC;AAkDD,oCASC;AAsBD,gDAGC;AACD,0DAGC;AAyBD,sDAMC;AAGD,0CAEC;AAED,0DAGC;AAoED,8DAoDC;AA3iBD,yCAAyC;AACzC,mDAAmD;AACnD,oDAAoD;AACpD,kEAAkE;AAClE,kEAAkE;AAClE,2EAA2E;AAC3E,4EAA4E;AAC5E,mCAA2C;AAC3C,yCAA+D;AAE/D,gDAAsG;AActG,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;AAC/B,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC;IAC9E,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;CAChF,CAAC,CAAC;AACH,SAAS,SAAS,CAAC,KAAa,IAAY,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACnF,SAAS,gBAAgB,CAAC,IAAY,EAAE,KAAa,IAAY,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnH,SAAS,eAAe,CAAC,KAAc,EAAE,KAAa,EAAE,IAAuB;IAC3E,IAAI,CAAC,kBAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAClD,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC;IACtD,IAAI,OAA+B,CAAC;IACpC,IAAI,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,CAAC;QACH,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,sBAAsB,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,QAAQ,GAGT,EAAE,CAAC;IACR,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC9C,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,uBAAuB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtE,IAAI,UAA0C,CAAC;QAC/C,IAAI,CAAC;YACD,UAAU,GAAG,OAAO,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,CAAC;YACH,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,IAAI,GAAG,sBAAsB,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC;YACpD,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,IAAI,GAAG,0BAA0B,CAAC,CAAC;QACnE,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvD,CAAC;AACD,SAAS,WAAW,CAAC,KAAc,EAAE,KAAa,EAAE,YAAoB,EAAE,WAAW,GAAG,KAAK;IACzF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY,IAAI,WAAW,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpI,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,kCAAkC,YAAY,eAAe,WAAW,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjJ,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,SAAS,eAAe,CAAC,KAAc,EAAE,KAAa,EAAE,OAAe;IACnE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,OAAO;QACtF,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,uCAAuC,OAAO,EAAE,CAAC,CAAC;IAClF,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,mFAAmF;AACnF,SAAgB,WAAW,CAAC,OAAqB;IAC7C,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,uBAAuB,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;IAChJ,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC;IACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE;QAC7E,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAC;IAC/E,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;IAClB,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAClJ,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;IAC1E,CAAC;IACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,UAAU,GAAG,OAAO,CAAC,wBAAwB,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/E,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC;YACpD,MAAM,IAAI,SAAS,CAAC,iBAAiB,KAAK,2BAA2B,CAAC,CAAC;QAC3E,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC;QAC7B,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,iBAAiB,KAAK,GAAG,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;QAC/F,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACvC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,QAAQ;YACjI,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;QACnG,QAAQ,GAAG,WAAW,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,iBAAiB,KAAK,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5I,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,KAAK,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,KAAK,CAAC;QAClE,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;IAC9D,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAC/J,MAAM,UAAU,GAAG,IAAA,2BAAgB,EAAU;QACzC,IAAI;QACJ,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE;QACrE,GAAG,EAAE;YACD,gBAAgB;YAChB,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,CAAC;YAC5G,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,KAAK,CAAC,aAAa,EAAE,qBAAqB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;SAChJ;QACD,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAyB,EAAE,CAAC;aACpG,IAAI,CAAC,eAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,UAAmB,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;KACjF,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACtB,CAAC;AAqBD,SAAS,gBAAgB,CAAC,KAAc,EAAE,KAAoB,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE;IAChF,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IACjB,IAAI,KAAK,CAAC,KAAK,GAAG,OAAO;QACrB,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;IAC5E,IAAI,KAAK,GAAG,EAAE;QACV,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;IAC3D,IAAI,IAAA,uBAAY,EAAC,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAC1B,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,IAAA,yBAAc,EAAC,KAAK,CAAC,CAAC;QACpC,KAAK,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACzD,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;QAC9D,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;YAC/D,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,QAAQ,KAAK,SAAS;YACtB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;YAEpH,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QACzE,OAAO,KAAK,CAAC;IACjB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YACvB,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5C,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,MAAM;QAC/F,MAAM,IAAI,SAAS,CAAC,iCAAiC,OAAO,KAAK,EAAE,CAAC,CAAC;IACzE,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAC;IAC3E,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,IAA4B,CAAC;YACjC,IAAI,CAAC;gBACD,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;YACD,MAAM,CAAC;gBACH,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;YAClE,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM;oBAC7G,SAAS;gBACb,IAAI,UAA0C,CAAC;gBAC/C,IAAI,CAAC;oBACD,UAAU,GAAG,OAAO,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9D,CAAC;gBACD,MAAM,CAAC;oBACH,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;gBAClE,CAAC;gBACD,IAAI,UAAU,EAAE,UAAU;oBACtB,MAAM,IAAI,SAAS,CAAC,4EAA4E,CAAC,CAAC;YAC1G,CAAC;YACD,MAAM,OAAO,GAAc,EAAE,CAAC;YAC9B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;gBACnD,IAAI,UAA0C,CAAC;gBAC/C,IAAI,CAAC;oBACD,UAAU,GAAG,OAAO,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxE,CAAC;gBACD,MAAM,CAAC;oBACH,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;gBAClE,CAAC;gBACD,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS;oBACtF,MAAM,IAAI,SAAS,CAAC,qEAAqE,CAAC,CAAC;gBAC/F,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;YAC3F,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,SAAwB,CAAC;QAC7B,IAAI,CAAC;YACD,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,CAAC;YACH,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI;YACpD,MAAM,IAAI,SAAS,CAAC,gEAAgE,CAAC,CAAC;QAC1F,IAAI,IAA4B,CAAC;QACjC,IAAI,CAAC;YACD,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,CAAC;YACH,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,OAAO,GAGR,EAAE,CAAC;QACR,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,UAA0C,CAAC;YAC/C,IAAI,CAAC;gBACD,UAAU,GAAG,OAAO,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,CAAC;gBACH,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;YACrE,CAAC;YACD,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,UAAU;gBAClD,SAAS;YACb,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC;gBACnD,MAAM,IAAI,SAAS,CAAC,qEAAqE,CAAC,CAAC;YAC/F,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS;gBAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/I,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/G,CAAC;YACO,CAAC;QACL,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;AACL,CAAC;AACD,gFAAgF;AAChF,SAAgB,0BAA0B,CAAC,KAAc;IACrD,OAAO,gBAAgB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,OAAO,EAAE,EAAE,CAAc,CAAC;AACxF,CAAC;AACD,SAAgB,qBAAqB,CAAC,KAAoB;IAKtD,MAAM,KAAK,GAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;IAC1H,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAkB,CAAC;IACjE,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,EAA0B,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAA,yBAAc,EAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3R,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvI,CAAC;AACD,SAAgB,oBAAoB,CAAC,KAAoB,EAAE,MAAuD;IAI9G,MAAM,KAAK,GAA6B,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,CAAC,IAAmB,EAAa,EAAE;QAC7C,IAAI,IAAA,uBAAY,EAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,KAAK,KAAK,SAAS;gBACnB,MAAM,IAAI,SAAS,CAAC,+DAA+D,CAAC,CAAC;YACzF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,OAAO,kBAAkB,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7C,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACnB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YACzC,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,OAAO,IAAiB,CAAC;IAC7B,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;QAC7F,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;IAC1D,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC;AACD,SAAgB,SAAS,CAAC,KAAa;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,GAAG,CAAC,CAAC;QACd,CAAC;QACD,OAAO,IAAI,KAAK,CAAC;QACjB,KAAK,IAAI,IAAI,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE;QAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AACD,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,SAAgB,YAAY,CAAC,KAAc;IACvC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACtD,CAAC;AACD,SAAS,WAAW,CAAC,KAAc,EAAE,GAAW;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAC3C,OAAO,SAAS,CAAC;IACrB,IAAI,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,CAAC;QACH,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AACD,SAAS,WAAW,CAAC,KAAc;IAC/B,IAAI,OAAO,GAAY,KAAK,CAAC;IAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC9C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;YACtD,OAAO,MAAM,CAAC;QAClB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC;YAClE,OAAO,YAAY,CAAC;QACxB,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AACD,SAAS,SAAS,CAAC,KAAc;IAC7B,IAAI,OAAO,GAAY,KAAK,CAAC;IAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE;YACvC,OAAO,IAAI,CAAC;QAChB,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QACtE,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,EAAE;YACnD,OAAO,UAAU,CAAC;QACtB,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AACD,SAAS,WAAW,CAAC,OAAgB,EAAE,IAAY;IAC/C,IAAI,OAAO,YAAY,OAAO;QAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;IAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;QAC/C,OAAO,SAAS,CAAC;IACrB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YACxD,OAAO,KAAK,CAAC;IACrB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AACD,SAAgB,YAAY,CAAC,OAAgB,EAAE,KAAa;IACxD,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;IACxD,IAAI,CAAC,GAAG;QACJ,OAAO,SAAS,CAAC;IACrB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;QACxC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnF,CAAC;AACD,SAAS,sBAAsB,CAAC,MAA0B;IACtD,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC;AACxG,CAAC;AACD,SAAS,mBAAmB,CAAC,KAAc;IACvC,IAAI,OAAO,GAAY,KAAK,CAAC;IAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,IAAI,KAAK,mBAAmB;YAC5B,OAAO,KAAK,CAAC;QACjB,IAAI,IAAI,KAAK,oBAAoB,IAAI,IAAI,KAAK,2BAA2B;YACrE,OAAO,IAAI,CAAC;QAChB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,4EAA4E,CAAC,IAAI,CAAC,IAAI,CAAC;YACnH,OAAO,IAAI,CAAC;QAChB,IAAI,mLAAmL,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAClN,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,SAAgB,kBAAkB,CAAC,KAAc;IAC7C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,mBAAmB,CAAC,KAAK,CAAC,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC;AACD,SAAgB,uBAAuB,CAAC,KAAc;IAClD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AAClG,CAAC;AACD;;;GAGG;AACH,SAAS,oBAAoB,CAAC,MAAmB;IAC7C,OAAO,eAAM,CAAC,QAAQ,CAAQ,CAAC,MAAM,EAAE,EAAE;QACrC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,MAAM,WAAW,GAAG,GAAG,EAAE;YACrB,IAAI,SAAS;gBACT,OAAO;YACX,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM,CAAC,eAAM,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,yEAAyE;QACzE,2CAA2C;QAC3C,IAAI,MAAM,CAAC,OAAO;YACd,WAAW,EAAE,CAAC;QAClB,OAAO,eAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YACpB,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AACD,SAAgB,qBAAqB,CAAU,MAA8B,EAAE,MAA+B;IAC1G,IAAI,MAAM,KAAK,SAAS;QACpB,OAAO,MAAM,CAAC;IAClB,OAAO,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO;QACtC,CAAC,CAAC,eAAM,CAAC,SAAS;QAClB,CAAC,CAAC,eAAM,CAAC,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AACD,MAAM,qBAAsB,SAAQ,KAAK;CACxC;AACD,SAAgB,eAAe,CAAC,eAAuB;IACnD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,GAAG,wBAAwB,CAAC,CAAC;AACtE,CAAC;AACD,gFAAgF;AACzE,KAAK,UAAU,uBAAuB,CAAC,QAAkB,EAAE,QAAgB;IAC9E,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7D,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AACvH,CAAC;AACD,KAAK,UAAU,qBAAqB,CAAC,QAAkB,EAAE,QAAgB,EAAE,MAAoB,EAAE,KAA+D,EAAE,UAAU,GAAG,QAAQ;IACnL,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC1D,IAAI,UAAU,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,EAAE,CAAC;QACvD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAC7C,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC7B,KAAK,EAAE,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC9C,KAAK,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,IAAI,qBAAqB,CAAC,qCAAqC,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI;QACtB,OAAO,EAAE,CAAC;IACd,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,WAAW,GAA8B,GAAG,EAAE,CAAC,SAAS,CAAC;IAC7D,MAAM,WAAW,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC,CAAC;IAC3F,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,IAAI,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,CAAC;IACZ,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,CAAC;QACD,SAAS,CAAC;YACN,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;YAC9D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACV,CAAC;YACD,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YAC/B,IAAI,KAAK,GAAG,QAAQ;gBAChB,MAAM,IAAI,qBAAqB,CAAC,qCAAqC,CAAC,CAAC;YAC3E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;YACO,CAAC;QACL,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,QAAQ;YACR,MAAM,CAAC,WAAW,EAAE,CAAC;aACpB,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YACzE,KAAK,EAAE,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC9C,KAAK,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;AACL,CAAC;AACD,SAAS,SAAS,CAAC,MAAmB;IAIlC,IAAI,KAAK,GAAe,GAAG,EAAE,CAAC,SAAS,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAC7C,KAAK,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC,CAAC;QAChF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,OAAO;YACd,KAAK,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;AAClF,CAAC;AACD,2EAA2E;AACpE,KAAK,UAAU,yBAAyB,CAAC,KAS/C;IAKG,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,QAAQ,CAAC;IAChD,IAAI,cAAc,GAAe,GAAG,EAAE,CAAC,SAAS,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,GAAG,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,OAAsC,CAAC;IAC3C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC;QACD,OAAO,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE;YACtE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,MAAM,EAAE,EAAE;YACxF,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM;SACzC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QACpE,QAAQ,GAAG,IAAI,CAAC;QAChB,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1G,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACX,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO;YACpB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;;YAEtB,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,YAAY,qBAAqB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;QAC9G,IAAI,CAAC,QAAQ,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACrF,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC/C,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,KAAK,CAAC;IAChB,CAAC;YACO,CAAC;QACL,WAAW,CAAC,OAAO,EAAE,CAAC;QACtB,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAClD,cAAc,EAAE,CAAC;IACrB,CAAC;AACL,CAAC","sourcesContent":["// @concord-file ne-eval-assertions-judge\n// @concord-implements docs/feature/judge/README.md\n// @concord-implements docs/feature/judge/library.md\n// @concord-implements docs/feature/judge/use-case/verify-judge.md\n// @concord-implements docs/feature/eval/use-case/judge-quality.md\n// Native LLM-as-Judge evaluator. Definition and material capture are pure;\n// provider I/O, timeout, retry, and interruption stay in the owning Effect.\nimport { Effect, Predicate } from \"effect\";\nimport { defineScoreMatch, type ScoreMatch } from \"./match.ts\";\nimport type { JsonValue } from \"../shared/types.ts\";\nimport { isJudgeImage, readJudgeImage, type JudgeImage, type JudgeMaterial } from \"../judge/image.ts\";\nexport interface JudgeAnchor {\n readonly measurement: number;\n readonly description: string;\n}\nexport interface JudgeOptions {\n readonly name: string;\n readonly rubric: string;\n readonly anchors?: readonly JudgeAnchor[];\n readonly maxMaterialBytes?: number;\n readonly maxCalls?: number;\n readonly maxAuditBytes?: number;\n}\nexport type JudgeDefinition = ScoreMatch<unknown>;\nconst UTF8 = new TextEncoder();\nconst DEFAULT_ANCHORS = Object.freeze([\n Object.freeze({ measurement: 0, description: \"Does not satisfy the rubric.\" }),\n Object.freeze({ measurement: 1, description: \"Fully satisfies the rubric.\" }),\n]);\nfunction utf8Bytes(value: string): number { return UTF8.encode(value).byteLength; }\nfunction compareCodeUnits(left: string, right: string): number { return left < right ? -1 : left > right ? 1 : 0; }\nfunction exactDataObject(value: unknown, label: string, keys: readonly string[]): Readonly<Record<string, unknown>> {\n if (!Predicate.isObject(value) || Array.isArray(value))\n throw new TypeError(`${label} must be an object`);\n let ownKeys: readonly PropertyKey[];\n try {\n ownKeys = Reflect.ownKeys(value);\n }\n catch {\n throw new TypeError(`${label} cannot be reflected`);\n }\n const captured: Array<readonly [\n string,\n unknown\n ]> = [];\n for (const key of ownKeys) {\n if (typeof key !== \"string\" || !keys.includes(key))\n throw new TypeError(`${label} has unknown option ${String(key)}`);\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n }\n catch {\n throw new TypeError(`${label}.${key} cannot be reflected`);\n }\n if (descriptor === undefined || !(\"value\" in descriptor))\n throw new TypeError(`${label}.${key} must be a data property`);\n captured.push([key, descriptor.value]);\n }\n return Object.freeze(Object.fromEntries(captured));\n}\nfunction boundedText(value: unknown, label: string, maximumBytes: number, controlFree = false): string {\n if (typeof value !== \"string\" || value.trim().length === 0 || utf8Bytes(value) > maximumBytes || controlFree && /\\p{Cc}/u.test(value)) {\n throw new TypeError(`${label} must be non-empty and at most ${maximumBytes} UTF-8 bytes${controlFree ? \" without control characters\" : \"\"}`);\n }\n return value;\n}\nfunction positiveInteger(value: unknown, label: string, maximum: number): number {\n if (!Number.isInteger(value) || typeof value !== \"number\" || value <= 0 || value > maximum)\n throw new TypeError(`${label} must be a positive integer at most ${maximum}`);\n return value;\n}\n/** Defines one immutable scoring standard and returns the managed Match itself. */\nexport function defineJudge(options: JudgeOptions): JudgeDefinition {\n const input = exactDataObject(options, \"defineJudge() options\", [\"name\", \"rubric\", \"anchors\", \"maxMaterialBytes\", \"maxCalls\", \"maxAuditBytes\"]);\n const name = boundedText(input.name, \"Judge name\", 128, true);\n const rubric = boundedText(input.rubric, \"Judge rubric\", 8 * 1024);\n const rawAnchors = input.anchors ?? DEFAULT_ANCHORS;\n if (!Array.isArray(rawAnchors) || rawAnchors.length < 2 || rawAnchors.length > 32)\n throw new TypeError(\"Judge anchors must contain between 2 and 32 entries\");\n let previous = -1;\n const anchors: JudgeAnchor[] = [];\n const anchorKeys = Reflect.ownKeys(rawAnchors);\n if (anchorKeys.some((key) => key !== \"length\" && !(typeof key === \"string\" && /^(?:0|[1-9][0-9]*)$/u.test(key) && Number(key) < rawAnchors.length))) {\n throw new TypeError(\"Judge anchors cannot contain custom properties\");\n }\n for (let index = 0; index < rawAnchors.length; index += 1) {\n const descriptor = Reflect.getOwnPropertyDescriptor(rawAnchors, String(index));\n if (descriptor === undefined || !(\"value\" in descriptor))\n throw new TypeError(`Judge anchors[${index}] must be a data property`);\n const raw = descriptor.value;\n const anchor = exactDataObject(raw, `Judge anchors[${index}]`, [\"measurement\", \"description\"]);\n const measurement = anchor.measurement;\n if (typeof measurement !== \"number\" || !Number.isFinite(measurement) || measurement < 0 || measurement > 1 || measurement <= previous)\n throw new TypeError(\"Judge anchors must be strictly increasing finite measurements in [0, 1]\");\n previous = measurement;\n anchors.push(Object.freeze({ measurement, description: boundedText(anchor.description, `Judge anchors[${index}].description`, 1024) }));\n }\n if (anchors[0]?.measurement !== 0 || anchors.at(-1)?.measurement !== 1)\n throw new TypeError(\"Judge anchors must include 0 and 1\");\n const maxMaterialBytes = input.maxMaterialBytes === undefined ? 32 * 1024 : positiveInteger(input.maxMaterialBytes, \"Judge maxMaterialBytes\", 4 * 1024 * 1024);\n const definition = defineScoreMatch<unknown>({\n name,\n version: \"1\",\n config: { rubric, anchors: anchors.map((anchor) => ({ ...anchor })) },\n llm: {\n maxMaterialBytes,\n ...(input.maxCalls === undefined ? {} : { maxCalls: positiveInteger(input.maxCalls, \"Judge maxCalls\", 16) }),\n ...(input.maxAuditBytes === undefined ? {} : { maxAuditBytes: positiveInteger(input.maxAuditBytes, \"Judge maxAuditBytes\", 8 * 1024 * 1024) }),\n },\n score: (material, context) => context.llm.score({ rubric, anchors, material: material as JudgeMaterial })\n .pipe(Effect.map((result) => ({ state: \"measured\" as const, ...result }))),\n });\n return definition;\n}\nexport interface CapturedImageReference {\n readonly image: JudgeImage;\n readonly imageId: string;\n readonly evidenceIndex: number;\n readonly mediaType: \"image/png\" | \"image/jpeg\";\n readonly byteLength: number;\n readonly sha256: string;\n readonly paths: readonly string[];\n}\ninterface SnapshotState {\n nodes: number;\n readonly ancestors: WeakSet<object>;\n readonly images?: Map<JudgeImage, {\n imageId: string;\n evidenceIndex: number;\n paths: string[];\n }>;\n imageBytes?: number;\n imageReferences?: number;\n}\nfunction snapshotMaterial(value: unknown, state: SnapshotState, depth = 0, path = \"\"): unknown {\n state.nodes += 1;\n if (state.nodes > 2097152)\n throw new TypeError(\"Judge material exceeds 2,097,152 traversal nodes\");\n if (depth > 72)\n throw new TypeError(\"Judge material exceeds depth 72\");\n if (isJudgeImage(value)) {\n if (state.images === undefined)\n throw new TypeError(\"Judge image is only valid in material\");\n const image = readJudgeImage(value);\n state.imageReferences = (state.imageReferences ?? 0) + 1;\n state.imageBytes = (state.imageBytes ?? 0) + image.byteLength;\n if (state.imageReferences > 4 || state.imageBytes > 8 * 1024 * 1024)\n throw new TypeError(\"Judge material image budget exceeded\");\n const existing = state.images.get(value);\n if (existing === undefined)\n state.images.set(value, { imageId: `image-${state.images.size}`, evidenceIndex: state.images.size, paths: [path] });\n else\n existing.paths.push(path);\n return value;\n }\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\")\n return value;\n if (typeof value === \"number\") {\n if (!Number.isFinite(value))\n throw new TypeError(\"Judge material numbers must be finite\");\n return Object.is(value, -0) ? 0 : value;\n }\n if (typeof value !== \"object\" || value === null || value instanceof Date || value instanceof RegExp)\n throw new TypeError(`Judge material cannot contain ${typeof value}`);\n if (state.ancestors.has(value))\n throw new TypeError(\"Judge material cannot contain an ancestor cycle\");\n state.ancestors.add(value);\n try {\n if (Array.isArray(value)) {\n let keys: readonly PropertyKey[];\n try {\n keys = Reflect.ownKeys(value);\n }\n catch {\n throw new TypeError(\"Judge material array reflection failed\");\n }\n for (const key of keys) {\n if (key === \"length\" || typeof key === \"string\" && /^(?:0|[1-9][0-9]*)$/u.test(key) && Number(key) < value.length)\n continue;\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n }\n catch {\n throw new TypeError(\"Judge material array reflection failed\");\n }\n if (descriptor?.enumerable)\n throw new TypeError(\"Judge material arrays cannot contain extra enumerable properties or toJSON\");\n }\n const entries: unknown[] = [];\n for (let index = 0; index < value.length; index += 1) {\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, String(index));\n }\n catch {\n throw new TypeError(\"Judge material array reflection failed\");\n }\n if (descriptor === undefined || !(\"value\" in descriptor) || descriptor.value === undefined)\n throw new TypeError(\"Judge material arrays cannot contain holes, accessors, or undefined\");\n entries.push(snapshotMaterial(descriptor.value, state, depth + 1, `${path}/${index}`));\n }\n return Object.freeze(entries);\n }\n let prototype: object | null;\n try {\n prototype = Reflect.getPrototypeOf(value);\n }\n catch {\n throw new TypeError(\"Judge material prototype reflection failed\");\n }\n if (prototype !== Object.prototype && prototype !== null)\n throw new TypeError(\"Judge material objects must be plain or null-prototype objects\");\n let keys: readonly PropertyKey[];\n try {\n keys = Reflect.ownKeys(value);\n }\n catch {\n throw new TypeError(\"Judge material key reflection failed\");\n }\n const entries: Array<readonly [\n string,\n unknown\n ]> = [];\n for (const key of keys) {\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n }\n catch {\n throw new TypeError(\"Judge material property reflection failed\");\n }\n if (descriptor === undefined || !descriptor.enumerable)\n continue;\n if (typeof key !== \"string\" || !(\"value\" in descriptor))\n throw new TypeError(\"Judge material enumerable properties must be string data properties\");\n if (descriptor.value !== undefined)\n entries.push([key, snapshotMaterial(descriptor.value, state, depth + 1, `${path}/${key.replace(/~/gu, \"~0\").replace(/\\//gu, \"~1\")}`)]);\n }\n return Object.freeze(Object.fromEntries(entries.sort(([left], [right]) => compareCodeUnits(left, right))));\n }\n finally {\n state.ancestors.delete(value);\n }\n}\n/** @internal Shared strict call-time capture for all managed Match material. */\nexport function snapshotScoreMatchMaterial(value: unknown): JsonValue {\n return snapshotMaterial(value, { nodes: 0, ancestors: new WeakSet() }) as JsonValue;\n}\nexport function snapshotJudgeMaterial(value: JudgeMaterial): {\n readonly material: JudgeMaterial;\n readonly images: readonly CapturedImageReference[];\n readonly imageByValue: ReadonlyMap<JudgeImage, CapturedImageReference>;\n} {\n const state: SnapshotState = { nodes: 0, ancestors: new WeakSet(), images: new Map(), imageBytes: 0, imageReferences: 0 };\n const material = snapshotMaterial(value, state) as JudgeMaterial;\n const images = [...state.images!.entries()].map(([image, identity]): CapturedImageReference => Object.freeze({ image, ...identity, ...((({ mediaType, byteLength, sha256 }) => ({ mediaType, byteLength, sha256 }))(readJudgeImage(image))), paths: Object.freeze([...identity.paths]) }));\n return Object.freeze({ material, images: Object.freeze(images), imageByValue: new Map(images.map((item) => [item.image, item])) });\n}\nexport function projectJudgeMaterial(value: JudgeMaterial, images: ReadonlyMap<JudgeImage, CapturedImageReference>): {\n readonly json: JsonValue;\n readonly parts: readonly CapturedImageReference[];\n} {\n const parts: CapturedImageReference[] = [];\n const visit = (item: JudgeMaterial): JsonValue => {\n if (isJudgeImage(item)) {\n const image = images.get(item);\n if (image === undefined)\n throw new TypeError(\"LLM material contains an image not captured by this Assertion\");\n parts.push(image);\n return `niceeval-image:${image.imageId}`;\n }\n if (Array.isArray(item))\n return item.map(visit);\n if (item !== null && typeof item === \"object\")\n return Object.fromEntries(Object.entries(item).map(([key, child]) => [key, visit(child)]));\n return item as JsonValue;\n };\n const json = visit(value);\n if (parts.length > 4 || parts.reduce((sum, image) => sum + image.byteLength, 0) > 8 * 1024 * 1024)\n throw new TypeError(\"LLM step image budget exceeded\");\n return { json, parts };\n}\nexport function chunkUtf8(value: string): readonly string[] {\n const chunks: string[] = [];\n let current = \"\";\n let bytes = 0;\n for (const point of value) {\n const size = utf8Bytes(point);\n if (bytes + size > 4 * 1024) {\n chunks.push(current);\n current = \"\";\n bytes = 0;\n }\n current += point;\n bytes += size;\n }\n if (current !== \"\" || value === \"\")\n chunks.push(current);\n return Object.freeze(chunks);\n}\nconst RESPONSE_BYTES_PER_TOKEN = 8;\nexport function errorSummary(error: unknown): string {\n const message = error instanceof Error ? error.message : String(error);\n return message.replace(/\\s+/g, \" \").slice(0, 300);\n}\nfunction objectField(value: unknown, key: string): unknown {\n if (typeof value !== \"object\" || value === null)\n return undefined;\n try {\n return Reflect.get(value, key);\n }\n catch {\n return undefined;\n }\n}\nfunction judgeStatus(error: unknown): number | undefined {\n let current: unknown = error;\n for (let depth = 0; current !== undefined && depth < 5; depth++) {\n const status = objectField(current, \"status\");\n if (typeof status === \"number\" && Number.isInteger(status))\n return status;\n const nested = objectField(current, \"error\");\n const nestedStatus = objectField(nested, \"status\");\n if (typeof nestedStatus === \"number\" && Number.isInteger(nestedStatus))\n return nestedStatus;\n current = objectField(current, \"cause\");\n }\n return undefined;\n}\nfunction judgeCode(error: unknown): string | undefined {\n let current: unknown = error;\n for (let depth = 0; current !== undefined && depth < 5; depth++) {\n const code = objectField(current, \"code\");\n if (typeof code === \"string\" && code !== \"\")\n return code;\n const nestedCode = objectField(objectField(current, \"error\"), \"code\");\n if (typeof nestedCode === \"string\" && nestedCode !== \"\")\n return nestedCode;\n current = objectField(current, \"cause\");\n }\n return undefined;\n}\nfunction headerValue(headers: unknown, name: string): string | undefined {\n if (headers instanceof Headers)\n return headers.get(name) ?? undefined;\n if (typeof headers !== \"object\" || headers === null)\n return undefined;\n const lower = name.toLowerCase();\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === lower && typeof value === \"string\")\n return value;\n }\n return undefined;\n}\nexport function retryAfterMs(headers: unknown, nowMs: number): number | undefined {\n const raw = headerValue(headers, \"retry-after\")?.trim();\n if (!raw)\n return undefined;\n const seconds = Number(raw);\n if (Number.isFinite(seconds) && seconds >= 0)\n return Math.round(seconds * 1000);\n const timestamp = Date.parse(raw);\n return Number.isFinite(timestamp) ? Math.max(0, timestamp - nowMs) : undefined;\n}\nfunction isTransientJudgeStatus(status: number | undefined): boolean {\n return status === 408 || status === 429 || (status !== undefined && status >= 500 && status <= 599);\n}\nfunction isConnectionFailure(error: unknown): boolean {\n let current: unknown = error;\n for (let depth = 0; current !== undefined && depth < 5; depth++) {\n const name = objectField(current, \"name\");\n const code = objectField(current, \"code\");\n if (name === \"APIUserAbortError\")\n return false;\n if (name === \"APIConnectionError\" || name === \"APIConnectionTimeoutError\")\n return true;\n if (typeof code === \"string\" && /^(?:ECONN|ENOTFOUND|EAI_AGAIN|ENETUNREACH|EHOSTUNREACH|ETIMEDOUT|ERR_TLS)/i.test(code))\n return true;\n if (/fetch failed|socket hang up|connection (?:reset|closed|refused)|network error|other side closed|timed? out|timeout|\\b(?:ECONNRESET|ECONNREFUSED|ENOTFOUND|EAI_AGAIN|ETIMEDOUT)\\b/i.test(errorSummary(current))) {\n return true;\n }\n current = objectField(current, \"cause\");\n }\n return false;\n}\nexport function isTransportFailure(error: unknown): boolean {\n const status = judgeStatus(error);\n return isConnectionFailure(error) || isTransientJudgeStatus(status);\n}\nexport function isTransientJudgeFailure(error: unknown): boolean {\n const status = judgeStatus(error);\n return isTransientJudgeStatus(status) || (status === undefined && isConnectionFailure(error));\n}\n/**\n * An author-facing AbortSignal is external to this fiber. It must interrupt\n * the owning Effect instead of being reclassified as a Judge result.\n */\nfunction interruptWhenAborted(signal: AbortSignal): Effect.Effect<never> {\n return Effect.callback<never>((resume) => {\n let completed = false;\n const interrupted = () => {\n if (completed)\n return;\n completed = true;\n resume(Effect.interrupt);\n };\n signal.addEventListener(\"abort\", interrupted, { once: true });\n // Register first, then inspect state so an abort cannot fall between the\n // initial check and listener installation.\n if (signal.aborted)\n interrupted();\n return Effect.sync(() => {\n completed = true;\n signal.removeEventListener(\"abort\", interrupted);\n });\n });\n}\nexport function interruptibleByCaller<A, E, R>(effect: Effect.Effect<A, E, R>, signal: AbortSignal | undefined): Effect.Effect<A, E, R> {\n if (signal === undefined)\n return effect;\n return Effect.suspend(() => signal.aborted\n ? Effect.interrupt\n : Effect.raceFirst(effect, interruptWhenAborted(signal)));\n}\nclass JudgeResponseTooLarge extends Error {\n}\nexport function responseByteCap(maxOutputTokens: number): number {\n return Math.max(1024, maxOutputTokens * RESPONSE_BYTES_PER_TOKEN);\n}\n/** @internal transport seam: cap bytes before any JSON parser observes them. */\nexport async function readJudgeResponseCapped(response: Response, maxBytes: number): Promise<Response> {\n const body = await readJudgeResponseText(response, maxBytes);\n return new Response(body, { status: response.status, statusText: response.statusText, headers: response.headers });\n}\nasync function readJudgeResponseText(response: Response, maxBytes: number, signal?: AbortSignal, usage?: import(\"../o11y/judge-usage.ts\").JudgeUsageTransmission, deadlineAt = Infinity): Promise<string> {\n const advertised = response.headers.get(\"content-length\");\n if (advertised !== null && Number(advertised) > maxBytes) {\n const cancellation = response.body?.cancel();\n if (cancellation !== undefined) {\n usage?.trackCleanup(cancellation, deadlineAt);\n void cancellation.catch(() => undefined);\n }\n throw new JudgeResponseTooLarge(\"judge response exceeds the byte cap\");\n }\n if (response.body === null)\n return \"\";\n const reader = response.body.getReader();\n let bytes = 0;\n let complete = false;\n let rejectAbort: (reason: unknown) => void = () => undefined;\n const interrupted = new Promise<never>((_, reject) => { rejectAbort = reject; });\n const abort = () => rejectAbort(new DOMException(\"Judge request cancelled\", \"AbortError\"));\n signal?.addEventListener(\"abort\", abort, { once: true });\n if (signal?.aborted)\n abort();\n const chunks: Uint8Array[] = [];\n try {\n for (;;) {\n const next = await Promise.race([reader.read(), interrupted]);\n if (next.done) {\n complete = true;\n break;\n }\n bytes += next.value.byteLength;\n if (bytes > maxBytes)\n throw new JudgeResponseTooLarge(\"judge response exceeds the byte cap\");\n chunks.push(next.value);\n }\n const joined = new Uint8Array(bytes);\n let offset = 0;\n for (const chunk of chunks) {\n joined.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return new TextDecoder().decode(joined);\n }\n finally {\n signal?.removeEventListener(\"abort\", abort);\n if (complete)\n reader.releaseLock();\n else {\n const cancellation = reader.cancel().finally(() => reader.releaseLock());\n usage?.trackCleanup(cancellation, deadlineAt);\n void cancellation.catch(() => undefined);\n }\n }\n}\nfunction abortWait(signal: AbortSignal): {\n promise: Promise<never>;\n dispose: () => void;\n} {\n let abort: () => void = () => undefined;\n const promise = new Promise<never>((_, reject) => {\n abort = () => reject(new DOMException(\"Judge request cancelled\", \"AbortError\"));\n signal.addEventListener(\"abort\", abort, { once: true });\n if (signal.aborted)\n abort();\n });\n return { promise, dispose: () => signal.removeEventListener(\"abort\", abort) };\n}\n/** The single bounded HTTP adapter used by every managed LLM primitive. */\nexport async function requestScoreMatchProvider(input: {\n readonly baseUrl: string;\n readonly endpoint: \"chat/completions\" | \"systemone\";\n readonly apiKey: string;\n readonly body: string;\n readonly maxBytes: number;\n readonly signal: AbortSignal;\n readonly usage?: import(\"../o11y/judge-usage.ts\").JudgeUsageTransmission;\n readonly deadlineAt?: number;\n}): Promise<{\n readonly status: number;\n readonly headers: Headers;\n readonly body: string;\n}> {\n const deadlineAt = input.deadlineAt ?? Infinity;\n let resolveSettled: () => void = () => undefined;\n const settled = new Promise<void>((resolve) => { resolveSettled = resolve; });\n const cancel = () => { input.usage?.cancel(); input.usage?.trackCleanup(settled, deadlineAt); };\n input.signal.addEventListener(\"abort\", cancel, { once: true });\n const interrupted = abortWait(input.signal);\n let request: Promise<Response> | undefined;\n let received = false;\n try {\n request = fetch(`${input.baseUrl.replace(/\\/$/u, \"\")}/${input.endpoint}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", Authorization: `Bearer ${input.apiKey}` },\n body: input.body, signal: input.signal,\n });\n const response = await Promise.race([request, interrupted.promise]);\n received = true;\n input.usage?.headers(response.status);\n const body = await readJudgeResponseText(response, input.maxBytes, input.signal, input.usage, deadlineAt);\n input.usage?.body(body);\n return { status: response.status, headers: response.headers, body };\n }\n catch (error) {\n if (input.signal.aborted)\n input.usage?.cancel();\n else\n input.usage?.fail(error instanceof JudgeResponseTooLarge ? \"response-too-large\" : \"response-unavailable\");\n if (!received && request !== undefined) {\n const cleanup = request.then((response) => response.body?.cancel(), () => undefined);\n input.usage?.trackCleanup(cleanup, deadlineAt);\n void cleanup.catch(() => undefined);\n }\n throw error;\n }\n finally {\n interrupted.dispose();\n input.signal.removeEventListener(\"abort\", cancel);\n resolveSettled();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"judge.js","sourceRoot":"","sources":["judge.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file\n// @concord-implements docs/feature/judge/README.md\n// @concord-implements docs/feature/judge/library.md\n// @concord-implements docs/feature/judge/use-case/verify-judge.md\n// @concord-implements docs/feature/eval/use-case/judge-quality.md\n// Native LLM-as-Judge evaluator. Definition and material capture are pure;\n// provider I/O, timeout, retry, and interruption stay in the owning Effect.\nimport { Effect, Predicate } from \"effect\";\nimport { defineScoreMatch, type ScoreMatch } from \"./match.ts\";\nimport type { JsonValue } from \"../shared/types.ts\";\nimport { isJudgeImage, readJudgeImage, type JudgeImage, type JudgeMaterial } from \"../judge/image.ts\";\nexport interface JudgeAnchor {\n readonly measurement: number;\n readonly description: string;\n}\nexport interface JudgeOptions {\n readonly name: string;\n readonly rubric: string;\n readonly anchors?: readonly JudgeAnchor[];\n readonly maxMaterialBytes?: number;\n readonly maxCalls?: number;\n readonly maxAuditBytes?: number;\n}\nexport type JudgeDefinition = ScoreMatch<unknown>;\nconst UTF8 = new TextEncoder();\nconst DEFAULT_ANCHORS = Object.freeze([\n Object.freeze({ measurement: 0, description: \"Does not satisfy the rubric.\" }),\n Object.freeze({ measurement: 1, description: \"Fully satisfies the rubric.\" }),\n]);\nfunction utf8Bytes(value: string): number { return UTF8.encode(value).byteLength; }\nfunction compareCodeUnits(left: string, right: string): number { return left < right ? -1 : left > right ? 1 : 0; }\nfunction exactDataObject(value: unknown, label: string, keys: readonly string[]): Readonly<Record<string, unknown>> {\n if (!Predicate.isObject(value) || Array.isArray(value))\n throw new TypeError(`${label} must be an object`);\n let ownKeys: readonly PropertyKey[];\n try {\n ownKeys = Reflect.ownKeys(value);\n }\n catch {\n throw new TypeError(`${label} cannot be reflected`);\n }\n const captured: Array<readonly [\n string,\n unknown\n ]> = [];\n for (const key of ownKeys) {\n if (typeof key !== \"string\" || !keys.includes(key))\n throw new TypeError(`${label} has unknown option ${String(key)}`);\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n }\n catch {\n throw new TypeError(`${label}.${key} cannot be reflected`);\n }\n if (descriptor === undefined || !(\"value\" in descriptor))\n throw new TypeError(`${label}.${key} must be a data property`);\n captured.push([key, descriptor.value]);\n }\n return Object.freeze(Object.fromEntries(captured));\n}\nfunction boundedText(value: unknown, label: string, maximumBytes: number, controlFree = false): string {\n if (typeof value !== \"string\" || value.trim().length === 0 || utf8Bytes(value) > maximumBytes || controlFree && /\\p{Cc}/u.test(value)) {\n throw new TypeError(`${label} must be non-empty and at most ${maximumBytes} UTF-8 bytes${controlFree ? \" without control characters\" : \"\"}`);\n }\n return value;\n}\nfunction positiveInteger(value: unknown, label: string, maximum: number): number {\n if (!Number.isInteger(value) || typeof value !== \"number\" || value <= 0 || value > maximum)\n throw new TypeError(`${label} must be a positive integer at most ${maximum}`);\n return value;\n}\n/** Defines one immutable scoring standard and returns the managed Match itself. */\nexport function defineJudge(options: JudgeOptions): JudgeDefinition {\n const input = exactDataObject(options, \"defineJudge() options\", [\"name\", \"rubric\", \"anchors\", \"maxMaterialBytes\", \"maxCalls\", \"maxAuditBytes\"]);\n const name = boundedText(input.name, \"Judge name\", 128, true);\n const rubric = boundedText(input.rubric, \"Judge rubric\", 8 * 1024);\n const rawAnchors = input.anchors ?? DEFAULT_ANCHORS;\n if (!Array.isArray(rawAnchors) || rawAnchors.length < 2 || rawAnchors.length > 32)\n throw new TypeError(\"Judge anchors must contain between 2 and 32 entries\");\n let previous = -1;\n const anchors: JudgeAnchor[] = [];\n const anchorKeys = Reflect.ownKeys(rawAnchors);\n if (anchorKeys.some((key) => key !== \"length\" && !(typeof key === \"string\" && /^(?:0|[1-9][0-9]*)$/u.test(key) && Number(key) < rawAnchors.length))) {\n throw new TypeError(\"Judge anchors cannot contain custom properties\");\n }\n for (let index = 0; index < rawAnchors.length; index += 1) {\n const descriptor = Reflect.getOwnPropertyDescriptor(rawAnchors, String(index));\n if (descriptor === undefined || !(\"value\" in descriptor))\n throw new TypeError(`Judge anchors[${index}] must be a data property`);\n const raw = descriptor.value;\n const anchor = exactDataObject(raw, `Judge anchors[${index}]`, [\"measurement\", \"description\"]);\n const measurement = anchor.measurement;\n if (typeof measurement !== \"number\" || !Number.isFinite(measurement) || measurement < 0 || measurement > 1 || measurement <= previous)\n throw new TypeError(\"Judge anchors must be strictly increasing finite measurements in [0, 1]\");\n previous = measurement;\n anchors.push(Object.freeze({ measurement, description: boundedText(anchor.description, `Judge anchors[${index}].description`, 1024) }));\n }\n if (anchors[0]?.measurement !== 0 || anchors.at(-1)?.measurement !== 1)\n throw new TypeError(\"Judge anchors must include 0 and 1\");\n const maxMaterialBytes = input.maxMaterialBytes === undefined ? 32 * 1024 : positiveInteger(input.maxMaterialBytes, \"Judge maxMaterialBytes\", 4 * 1024 * 1024);\n const definition = defineScoreMatch<unknown>({\n name,\n version: \"1\",\n config: { rubric, anchors: anchors.map((anchor) => ({ ...anchor })) },\n llm: {\n maxMaterialBytes,\n ...(input.maxCalls === undefined ? {} : { maxCalls: positiveInteger(input.maxCalls, \"Judge maxCalls\", 16) }),\n ...(input.maxAuditBytes === undefined ? {} : { maxAuditBytes: positiveInteger(input.maxAuditBytes, \"Judge maxAuditBytes\", 8 * 1024 * 1024) }),\n },\n score: (material, context) => context.llm.score({ rubric, anchors, material: material as JudgeMaterial })\n .pipe(Effect.map((result) => ({ state: \"measured\" as const, ...result }))),\n });\n return definition;\n}\nexport interface CapturedImageReference {\n readonly image: JudgeImage;\n readonly imageId: string;\n readonly evidenceIndex: number;\n readonly mediaType: \"image/png\" | \"image/jpeg\";\n readonly byteLength: number;\n readonly sha256: string;\n readonly paths: readonly string[];\n}\ninterface SnapshotState {\n nodes: number;\n readonly ancestors: WeakSet<object>;\n readonly images?: Map<JudgeImage, {\n imageId: string;\n evidenceIndex: number;\n paths: string[];\n }>;\n imageBytes?: number;\n imageReferences?: number;\n}\nfunction snapshotMaterial(value: unknown, state: SnapshotState, depth = 0, path = \"\"): unknown {\n state.nodes += 1;\n if (state.nodes > 2097152)\n throw new TypeError(\"Judge material exceeds 2,097,152 traversal nodes\");\n if (depth > 72)\n throw new TypeError(\"Judge material exceeds depth 72\");\n if (isJudgeImage(value)) {\n if (state.images === undefined)\n throw new TypeError(\"Judge image is only valid in material\");\n const image = readJudgeImage(value);\n state.imageReferences = (state.imageReferences ?? 0) + 1;\n state.imageBytes = (state.imageBytes ?? 0) + image.byteLength;\n if (state.imageReferences > 4 || state.imageBytes > 8 * 1024 * 1024)\n throw new TypeError(\"Judge material image budget exceeded\");\n const existing = state.images.get(value);\n if (existing === undefined)\n state.images.set(value, { imageId: `image-${state.images.size}`, evidenceIndex: state.images.size, paths: [path] });\n else\n existing.paths.push(path);\n return value;\n }\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\")\n return value;\n if (typeof value === \"number\") {\n if (!Number.isFinite(value))\n throw new TypeError(\"Judge material numbers must be finite\");\n return Object.is(value, -0) ? 0 : value;\n }\n if (typeof value !== \"object\" || value === null || value instanceof Date || value instanceof RegExp)\n throw new TypeError(`Judge material cannot contain ${typeof value}`);\n if (state.ancestors.has(value))\n throw new TypeError(\"Judge material cannot contain an ancestor cycle\");\n state.ancestors.add(value);\n try {\n if (Array.isArray(value)) {\n let keys: readonly PropertyKey[];\n try {\n keys = Reflect.ownKeys(value);\n }\n catch {\n throw new TypeError(\"Judge material array reflection failed\");\n }\n for (const key of keys) {\n if (key === \"length\" || typeof key === \"string\" && /^(?:0|[1-9][0-9]*)$/u.test(key) && Number(key) < value.length)\n continue;\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n }\n catch {\n throw new TypeError(\"Judge material array reflection failed\");\n }\n if (descriptor?.enumerable)\n throw new TypeError(\"Judge material arrays cannot contain extra enumerable properties or toJSON\");\n }\n const entries: unknown[] = [];\n for (let index = 0; index < value.length; index += 1) {\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, String(index));\n }\n catch {\n throw new TypeError(\"Judge material array reflection failed\");\n }\n if (descriptor === undefined || !(\"value\" in descriptor) || descriptor.value === undefined)\n throw new TypeError(\"Judge material arrays cannot contain holes, accessors, or undefined\");\n entries.push(snapshotMaterial(descriptor.value, state, depth + 1, `${path}/${index}`));\n }\n return Object.freeze(entries);\n }\n let prototype: object | null;\n try {\n prototype = Reflect.getPrototypeOf(value);\n }\n catch {\n throw new TypeError(\"Judge material prototype reflection failed\");\n }\n if (prototype !== Object.prototype && prototype !== null)\n throw new TypeError(\"Judge material objects must be plain or null-prototype objects\");\n let keys: readonly PropertyKey[];\n try {\n keys = Reflect.ownKeys(value);\n }\n catch {\n throw new TypeError(\"Judge material key reflection failed\");\n }\n const entries: Array<readonly [\n string,\n unknown\n ]> = [];\n for (const key of keys) {\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n }\n catch {\n throw new TypeError(\"Judge material property reflection failed\");\n }\n if (descriptor === undefined || !descriptor.enumerable)\n continue;\n if (typeof key !== \"string\" || !(\"value\" in descriptor))\n throw new TypeError(\"Judge material enumerable properties must be string data properties\");\n if (descriptor.value !== undefined)\n entries.push([key, snapshotMaterial(descriptor.value, state, depth + 1, `${path}/${key.replace(/~/gu, \"~0\").replace(/\\//gu, \"~1\")}`)]);\n }\n return Object.freeze(Object.fromEntries(entries.sort(([left], [right]) => compareCodeUnits(left, right))));\n }\n finally {\n state.ancestors.delete(value);\n }\n}\n/** @internal Shared strict call-time capture for all managed Match material. */\nexport function snapshotScoreMatchMaterial(value: unknown): JsonValue {\n return snapshotMaterial(value, { nodes: 0, ancestors: new WeakSet() }) as JsonValue;\n}\nexport function snapshotJudgeMaterial(value: JudgeMaterial): {\n readonly material: JudgeMaterial;\n readonly images: readonly CapturedImageReference[];\n readonly imageByValue: ReadonlyMap<JudgeImage, CapturedImageReference>;\n} {\n const state: SnapshotState = { nodes: 0, ancestors: new WeakSet(), images: new Map(), imageBytes: 0, imageReferences: 0 };\n const material = snapshotMaterial(value, state) as JudgeMaterial;\n const images = [...state.images!.entries()].map(([image, identity]): CapturedImageReference => Object.freeze({ image, ...identity, ...((({ mediaType, byteLength, sha256 }) => ({ mediaType, byteLength, sha256 }))(readJudgeImage(image))), paths: Object.freeze([...identity.paths]) }));\n return Object.freeze({ material, images: Object.freeze(images), imageByValue: new Map(images.map((item) => [item.image, item])) });\n}\nexport function projectJudgeMaterial(value: JudgeMaterial, images: ReadonlyMap<JudgeImage, CapturedImageReference>): {\n readonly json: JsonValue;\n readonly parts: readonly CapturedImageReference[];\n} {\n const parts: CapturedImageReference[] = [];\n const visit = (item: JudgeMaterial): JsonValue => {\n if (isJudgeImage(item)) {\n const image = images.get(item);\n if (image === undefined)\n throw new TypeError(\"LLM material contains an image not captured by this Assertion\");\n parts.push(image);\n return `niceeval-image:${image.imageId}`;\n }\n if (Array.isArray(item))\n return item.map(visit);\n if (item !== null && typeof item === \"object\")\n return Object.fromEntries(Object.entries(item).map(([key, child]) => [key, visit(child)]));\n return item as JsonValue;\n };\n const json = visit(value);\n if (parts.length > 4 || parts.reduce((sum, image) => sum + image.byteLength, 0) > 8 * 1024 * 1024)\n throw new TypeError(\"LLM step image budget exceeded\");\n return { json, parts };\n}\nexport function chunkUtf8(value: string): readonly string[] {\n const chunks: string[] = [];\n let current = \"\";\n let bytes = 0;\n for (const point of value) {\n const size = utf8Bytes(point);\n if (bytes + size > 4 * 1024) {\n chunks.push(current);\n current = \"\";\n bytes = 0;\n }\n current += point;\n bytes += size;\n }\n if (current !== \"\" || value === \"\")\n chunks.push(current);\n return Object.freeze(chunks);\n}\nconst RESPONSE_BYTES_PER_TOKEN = 8;\nexport function errorSummary(error: unknown): string {\n const message = error instanceof Error ? error.message : String(error);\n return message.replace(/\\s+/g, \" \").slice(0, 300);\n}\nfunction objectField(value: unknown, key: string): unknown {\n if (typeof value !== \"object\" || value === null)\n return undefined;\n try {\n return Reflect.get(value, key);\n }\n catch {\n return undefined;\n }\n}\nfunction judgeStatus(error: unknown): number | undefined {\n let current: unknown = error;\n for (let depth = 0; current !== undefined && depth < 5; depth++) {\n const status = objectField(current, \"status\");\n if (typeof status === \"number\" && Number.isInteger(status))\n return status;\n const nested = objectField(current, \"error\");\n const nestedStatus = objectField(nested, \"status\");\n if (typeof nestedStatus === \"number\" && Number.isInteger(nestedStatus))\n return nestedStatus;\n current = objectField(current, \"cause\");\n }\n return undefined;\n}\nfunction judgeCode(error: unknown): string | undefined {\n let current: unknown = error;\n for (let depth = 0; current !== undefined && depth < 5; depth++) {\n const code = objectField(current, \"code\");\n if (typeof code === \"string\" && code !== \"\")\n return code;\n const nestedCode = objectField(objectField(current, \"error\"), \"code\");\n if (typeof nestedCode === \"string\" && nestedCode !== \"\")\n return nestedCode;\n current = objectField(current, \"cause\");\n }\n return undefined;\n}\nfunction headerValue(headers: unknown, name: string): string | undefined {\n if (headers instanceof Headers)\n return headers.get(name) ?? undefined;\n if (typeof headers !== \"object\" || headers === null)\n return undefined;\n const lower = name.toLowerCase();\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === lower && typeof value === \"string\")\n return value;\n }\n return undefined;\n}\nexport function retryAfterMs(headers: unknown, nowMs: number): number | undefined {\n const raw = headerValue(headers, \"retry-after\")?.trim();\n if (!raw)\n return undefined;\n const seconds = Number(raw);\n if (Number.isFinite(seconds) && seconds >= 0)\n return Math.round(seconds * 1000);\n const timestamp = Date.parse(raw);\n return Number.isFinite(timestamp) ? Math.max(0, timestamp - nowMs) : undefined;\n}\nfunction isTransientJudgeStatus(status: number | undefined): boolean {\n return status === 408 || status === 429 || (status !== undefined && status >= 500 && status <= 599);\n}\nfunction isConnectionFailure(error: unknown): boolean {\n let current: unknown = error;\n for (let depth = 0; current !== undefined && depth < 5; depth++) {\n const name = objectField(current, \"name\");\n const code = objectField(current, \"code\");\n if (name === \"APIUserAbortError\")\n return false;\n if (name === \"APIConnectionError\" || name === \"APIConnectionTimeoutError\")\n return true;\n if (typeof code === \"string\" && /^(?:ECONN|ENOTFOUND|EAI_AGAIN|ENETUNREACH|EHOSTUNREACH|ETIMEDOUT|ERR_TLS)/i.test(code))\n return true;\n if (/fetch failed|socket hang up|connection (?:reset|closed|refused)|network error|other side closed|timed? out|timeout|\\b(?:ECONNRESET|ECONNREFUSED|ENOTFOUND|EAI_AGAIN|ETIMEDOUT)\\b/i.test(errorSummary(current))) {\n return true;\n }\n current = objectField(current, \"cause\");\n }\n return false;\n}\nexport function isTransportFailure(error: unknown): boolean {\n const status = judgeStatus(error);\n return isConnectionFailure(error) || isTransientJudgeStatus(status);\n}\nexport function isTransientJudgeFailure(error: unknown): boolean {\n const status = judgeStatus(error);\n return isTransientJudgeStatus(status) || (status === undefined && isConnectionFailure(error));\n}\n/**\n * An author-facing AbortSignal is external to this fiber. It must interrupt\n * the owning Effect instead of being reclassified as a Judge result.\n */\nfunction interruptWhenAborted(signal: AbortSignal): Effect.Effect<never> {\n return Effect.callback<never>((resume) => {\n let completed = false;\n const interrupted = () => {\n if (completed)\n return;\n completed = true;\n resume(Effect.interrupt);\n };\n signal.addEventListener(\"abort\", interrupted, { once: true });\n // Register first, then inspect state so an abort cannot fall between the\n // initial check and listener installation.\n if (signal.aborted)\n interrupted();\n return Effect.sync(() => {\n completed = true;\n signal.removeEventListener(\"abort\", interrupted);\n });\n });\n}\nexport function interruptibleByCaller<A, E, R>(effect: Effect.Effect<A, E, R>, signal: AbortSignal | undefined): Effect.Effect<A, E, R> {\n if (signal === undefined)\n return effect;\n return Effect.suspend(() => signal.aborted\n ? Effect.interrupt\n : Effect.raceFirst(effect, interruptWhenAborted(signal)));\n}\nclass JudgeResponseTooLarge extends Error {\n}\nexport function responseByteCap(maxOutputTokens: number): number {\n return Math.max(1024, maxOutputTokens * RESPONSE_BYTES_PER_TOKEN);\n}\n/** @internal transport seam: cap bytes before any JSON parser observes them. */\nexport async function readJudgeResponseCapped(response: Response, maxBytes: number): Promise<Response> {\n const body = await readJudgeResponseText(response, maxBytes);\n return new Response(body, { status: response.status, statusText: response.statusText, headers: response.headers });\n}\nasync function readJudgeResponseText(response: Response, maxBytes: number, signal?: AbortSignal, usage?: import(\"../o11y/judge-usage.ts\").JudgeUsageTransmission, deadlineAt = Infinity): Promise<string> {\n const advertised = response.headers.get(\"content-length\");\n if (advertised !== null && Number(advertised) > maxBytes) {\n const cancellation = response.body?.cancel();\n if (cancellation !== undefined) {\n usage?.trackCleanup(cancellation, deadlineAt);\n void cancellation.catch(() => undefined);\n }\n throw new JudgeResponseTooLarge(\"judge response exceeds the byte cap\");\n }\n if (response.body === null)\n return \"\";\n const reader = response.body.getReader();\n let bytes = 0;\n let complete = false;\n let rejectAbort: (reason: unknown) => void = () => undefined;\n const interrupted = new Promise<never>((_, reject) => { rejectAbort = reject; });\n const abort = () => rejectAbort(new DOMException(\"Judge request cancelled\", \"AbortError\"));\n signal?.addEventListener(\"abort\", abort, { once: true });\n if (signal?.aborted)\n abort();\n const chunks: Uint8Array[] = [];\n try {\n for (;;) {\n const next = await Promise.race([reader.read(), interrupted]);\n if (next.done) {\n complete = true;\n break;\n }\n bytes += next.value.byteLength;\n if (bytes > maxBytes)\n throw new JudgeResponseTooLarge(\"judge response exceeds the byte cap\");\n chunks.push(next.value);\n }\n const joined = new Uint8Array(bytes);\n let offset = 0;\n for (const chunk of chunks) {\n joined.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return new TextDecoder().decode(joined);\n }\n finally {\n signal?.removeEventListener(\"abort\", abort);\n if (complete)\n reader.releaseLock();\n else {\n const cancellation = reader.cancel().finally(() => reader.releaseLock());\n usage?.trackCleanup(cancellation, deadlineAt);\n void cancellation.catch(() => undefined);\n }\n }\n}\nfunction abortWait(signal: AbortSignal): {\n promise: Promise<never>;\n dispose: () => void;\n} {\n let abort: () => void = () => undefined;\n const promise = new Promise<never>((_, reject) => {\n abort = () => reject(new DOMException(\"Judge request cancelled\", \"AbortError\"));\n signal.addEventListener(\"abort\", abort, { once: true });\n if (signal.aborted)\n abort();\n });\n return { promise, dispose: () => signal.removeEventListener(\"abort\", abort) };\n}\n/** The single bounded HTTP adapter used by every managed LLM primitive. */\nexport async function requestScoreMatchProvider(input: {\n readonly baseUrl: string;\n readonly endpoint: \"chat/completions\" | \"systemone\";\n readonly apiKey: string;\n readonly body: string;\n readonly maxBytes: number;\n readonly signal: AbortSignal;\n readonly usage?: import(\"../o11y/judge-usage.ts\").JudgeUsageTransmission;\n readonly deadlineAt?: number;\n}): Promise<{\n readonly status: number;\n readonly headers: Headers;\n readonly body: string;\n}> {\n const deadlineAt = input.deadlineAt ?? Infinity;\n let resolveSettled: () => void = () => undefined;\n const settled = new Promise<void>((resolve) => { resolveSettled = resolve; });\n const cancel = () => { input.usage?.cancel(); input.usage?.trackCleanup(settled, deadlineAt); };\n input.signal.addEventListener(\"abort\", cancel, { once: true });\n const interrupted = abortWait(input.signal);\n let request: Promise<Response> | undefined;\n let received = false;\n try {\n request = fetch(`${input.baseUrl.replace(/\\/$/u, \"\")}/${input.endpoint}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", Authorization: `Bearer ${input.apiKey}` },\n body: input.body, signal: input.signal,\n });\n const response = await Promise.race([request, interrupted.promise]);\n received = true;\n input.usage?.headers(response.status);\n const body = await readJudgeResponseText(response, input.maxBytes, input.signal, input.usage, deadlineAt);\n input.usage?.body(body);\n return { status: response.status, headers: response.headers, body };\n }\n catch (error) {\n if (input.signal.aborted)\n input.usage?.cancel();\n else\n input.usage?.fail(error instanceof JudgeResponseTooLarge ? \"response-too-large\" : \"response-unavailable\");\n if (!received && request !== undefined) {\n const cleanup = request.then((response) => response.body?.cancel(), () => undefined);\n input.usage?.trackCleanup(cleanup, deadlineAt);\n void cleanup.catch(() => undefined);\n }\n throw error;\n }\n finally {\n interrupted.dispose();\n input.signal.removeEventListener(\"abort\", cancel);\n resolveSettled();\n }\n}\n"]}
|
|
@@ -12,6 +12,7 @@ exports.lessThan = lessThan;
|
|
|
12
12
|
exports.atMost = atMost;
|
|
13
13
|
exports.greaterThan = greaterThan;
|
|
14
14
|
exports.atLeast = atLeast;
|
|
15
|
+
exports.between = between;
|
|
15
16
|
exports.makeAssertionMessageEvent = makeAssertionMessageEvent;
|
|
16
17
|
exports.makeAssertionToolEvent = makeAssertionToolEvent;
|
|
17
18
|
exports.assertionEventOccurrence = assertionEventOccurrence;
|
|
@@ -55,6 +56,11 @@ exports.mapValue = mapValue;
|
|
|
55
56
|
exports.mapEach = mapEach;
|
|
56
57
|
exports.filterWhere = filterWhere;
|
|
57
58
|
exports.countWhere = countWhere;
|
|
59
|
+
// @concord-file
|
|
60
|
+
// @concord-implements docs/feature/assertions/library/value-assertions.md
|
|
61
|
+
// @concord-implements docs/feature/assertions/library/scoped-assertions.md
|
|
62
|
+
// @concord-implements docs/feature/judge/library.md
|
|
63
|
+
const quantity_ts_1 = require("./quantity.cjs");
|
|
58
64
|
const effect_1 = require("effect");
|
|
59
65
|
const json_match_ts_1 = require("../shared/json-match.cjs");
|
|
60
66
|
const util_ts_1 = require("../util.cjs");
|
|
@@ -71,7 +77,7 @@ const assertionEventPositionBrand = Symbol("niceeval.assertionEventPosition");
|
|
|
71
77
|
const toolOccurrenceIdentityBrand = Symbol("niceeval.toolOccurrenceIdentity");
|
|
72
78
|
const matchBrands = new WeakSet();
|
|
73
79
|
const numericComparisons = new WeakMap();
|
|
74
|
-
exports.NUMERIC_COMPARATORS = ["less-than", "at-most", "greater-than", "at-least"];
|
|
80
|
+
exports.NUMERIC_COMPARATORS = ["less-than", "at-most", "greater-than", "at-least", "between"];
|
|
75
81
|
const managedScoreMatches = new WeakMap();
|
|
76
82
|
const scoreEvaluators = new WeakMap();
|
|
77
83
|
function managedScoreMatchOf(value) {
|
|
@@ -204,8 +210,8 @@ function createBooleanMatch(domain, name, evaluate, options = {}) {
|
|
|
204
210
|
}
|
|
205
211
|
function numericDiagnostic(comparison, material, code, message) {
|
|
206
212
|
return diagnostic(code, message, {
|
|
207
|
-
expected: `${comparison.comparator} ${comparison.threshold}`,
|
|
208
|
-
received: material.state === "unavailable" ? material.reason :
|
|
213
|
+
expected: `${comparison.comparator} ${(0, quantity_ts_1.formatNumericUnit)(comparison.threshold, comparison.unit)}${comparison.upperThreshold === undefined ? "" : ` … ${(0, quantity_ts_1.formatNumericUnit)(comparison.upperThreshold, comparison.unit)}`}`,
|
|
214
|
+
received: material.state === "unavailable" ? material.reason : (0, quantity_ts_1.formatNumericUnit)(material.value, material.unit),
|
|
209
215
|
...(material.state === "unavailable" ? { reason: material.reason } : {}),
|
|
210
216
|
});
|
|
211
217
|
}
|
|
@@ -219,6 +225,8 @@ function compareExact(value, comparison) {
|
|
|
219
225
|
return value > comparison.threshold;
|
|
220
226
|
case "at-least":
|
|
221
227
|
return value >= comparison.threshold;
|
|
228
|
+
case "between":
|
|
229
|
+
return value >= comparison.threshold && value <= comparison.upperThreshold;
|
|
222
230
|
}
|
|
223
231
|
}
|
|
224
232
|
/**
|
|
@@ -229,6 +237,9 @@ function evaluateNumericComparison(material, comparison) {
|
|
|
229
237
|
if (material.state === "unavailable") {
|
|
230
238
|
return unavailable(material.reason, numericDiagnostic(comparison, material, "numeric-value-unavailable", "the numeric value is unavailable"));
|
|
231
239
|
}
|
|
240
|
+
if (material.unit !== comparison.unit) {
|
|
241
|
+
return unavailable("numeric-unit-mismatch", numericDiagnostic(comparison, material, "numeric-unit-mismatch", `numeric units differ: ${material.unit ?? "unitless"} and ${comparison.unit ?? "unitless"}`));
|
|
242
|
+
}
|
|
232
243
|
if (!Number.isFinite(material.value)) {
|
|
233
244
|
const unavailableMaterial = Object.freeze({
|
|
234
245
|
state: "unavailable",
|
|
@@ -241,21 +252,23 @@ function evaluateNumericComparison(material, comparison) {
|
|
|
241
252
|
? matched(material.value)
|
|
242
253
|
: mismatched(numericDiagnostic(comparison, material, "numeric-comparison-failed", "the numeric comparison did not match"));
|
|
243
254
|
}
|
|
244
|
-
const decided = comparison.comparator === "
|
|
245
|
-
? material.value > comparison.
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
: comparison.comparator === "less-than"
|
|
249
|
-
? material.value >= comparison.threshold
|
|
255
|
+
const decided = comparison.comparator === "between"
|
|
256
|
+
? material.value > comparison.upperThreshold ? "mismatched" : undefined
|
|
257
|
+
: comparison.comparator === "at-most"
|
|
258
|
+
? material.value > comparison.threshold
|
|
250
259
|
? "mismatched"
|
|
251
260
|
: undefined
|
|
252
|
-
: comparison.comparator === "
|
|
261
|
+
: comparison.comparator === "less-than"
|
|
253
262
|
? material.value >= comparison.threshold
|
|
254
|
-
? "
|
|
263
|
+
? "mismatched"
|
|
255
264
|
: undefined
|
|
256
|
-
:
|
|
257
|
-
?
|
|
258
|
-
|
|
265
|
+
: comparison.comparator === "at-least"
|
|
266
|
+
? material.value >= comparison.threshold
|
|
267
|
+
? "matched"
|
|
268
|
+
: undefined
|
|
269
|
+
: material.value > comparison.threshold
|
|
270
|
+
? "matched"
|
|
271
|
+
: undefined;
|
|
259
272
|
if (decided === "matched")
|
|
260
273
|
return matched(material.value);
|
|
261
274
|
if (decided === "mismatched") {
|
|
@@ -263,14 +276,29 @@ function evaluateNumericComparison(material, comparison) {
|
|
|
263
276
|
}
|
|
264
277
|
return unavailable("partial-numeric-material", numericDiagnostic(comparison, material, "numeric-lower-bound-inconclusive", "the known lower bound cannot decide the numeric comparison"));
|
|
265
278
|
}
|
|
266
|
-
function numericMatch(comparator,
|
|
279
|
+
function numericMatch(comparator, input, upper) {
|
|
280
|
+
const threshold = (0, quantity_ts_1.isQuantity)(input) ? input.value : input;
|
|
281
|
+
const unit = (0, quantity_ts_1.isQuantity)(input) ? input.unit : undefined;
|
|
267
282
|
if (typeof threshold !== "number" || !Number.isFinite(threshold)) {
|
|
268
283
|
throw new TypeError(`${comparator} threshold must be a finite number`);
|
|
269
284
|
}
|
|
270
|
-
const
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
285
|
+
const upperThreshold = (0, quantity_ts_1.isQuantity)(upper) ? upper.value : upper;
|
|
286
|
+
if (comparator === "between") {
|
|
287
|
+
if (((0, quantity_ts_1.isQuantity)(upper) ? upper.unit : undefined) !== unit)
|
|
288
|
+
throw new TypeError("between() bounds must have the same unit.");
|
|
289
|
+
if (typeof upperThreshold !== "number" || !Number.isFinite(upperThreshold) || upperThreshold < threshold) {
|
|
290
|
+
throw new RangeError("between() requires finite, ordered inclusive bounds.");
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
const comparison = Object.freeze({ comparator, threshold, ...(upperThreshold === undefined ? {} : { upperThreshold }), ...(unit === undefined ? {} : { unit }) });
|
|
294
|
+
const match = createBooleanMatch("value", `${comparator}(${(0, quantity_ts_1.formatNumericUnit)(threshold, unit)}${upperThreshold === undefined ? "" : `, ${(0, quantity_ts_1.formatNumericUnit)(upperThreshold, unit)}`})`, (candidate) => {
|
|
295
|
+
const result = evaluateNumericComparison((0, quantity_ts_1.isQuantity)(candidate)
|
|
296
|
+
? Object.freeze({ state: "exact", value: candidate.value, unit: candidate.unit })
|
|
297
|
+
: typeof candidate === "number" && Number.isFinite(candidate)
|
|
298
|
+
? Object.freeze({ state: "exact", value: candidate })
|
|
299
|
+
: Object.freeze({ state: "unavailable", reason: "non-finite-number" }), comparison);
|
|
300
|
+
return result.state === "matched" ? matched(candidate) : result;
|
|
301
|
+
});
|
|
274
302
|
numericComparisons.set(match, comparison);
|
|
275
303
|
return match;
|
|
276
304
|
}
|
|
@@ -286,6 +314,9 @@ function greaterThan(threshold) {
|
|
|
286
314
|
function atLeast(threshold) {
|
|
287
315
|
return numericMatch("at-least", threshold);
|
|
288
316
|
}
|
|
317
|
+
function between(minimum, maximum) {
|
|
318
|
+
return numericMatch("between", minimum, maximum);
|
|
319
|
+
}
|
|
289
320
|
function createScoreMatch(name, evaluate) {
|
|
290
321
|
const result = {
|
|
291
322
|
domain: "value",
|
|
@@ -544,7 +575,7 @@ function textCandidate(value, options) {
|
|
|
544
575
|
return undefined;
|
|
545
576
|
return options.stripComments === true ? (0, util_ts_1.stripComments)(value) : value;
|
|
546
577
|
}
|
|
547
|
-
// @concord-code
|
|
578
|
+
// @concord-code
|
|
548
579
|
// @concord-implements docs/feature/assertions/library/value-assertions.md
|
|
549
580
|
// @concord-implements docs/feature/eval/use-case/first-single-turn.md
|
|
550
581
|
function includes(text, options) {
|
|
@@ -827,7 +858,7 @@ function satisfies(label, predicate) {
|
|
|
827
858
|
return mismatched(diagnostic("value-mismatch", `satisfies(${label}) did not match`));
|
|
828
859
|
});
|
|
829
860
|
}
|
|
830
|
-
// @concord-code
|
|
861
|
+
// @concord-code
|
|
831
862
|
// @concord-implements docs/feature/assertions/library/value-assertions.md
|
|
832
863
|
function defineValueMatch(spec) {
|
|
833
864
|
if (!isRecord(spec))
|