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
package/dist/define.cjs
CHANGED
|
@@ -12,7 +12,7 @@ exports.defineEvalForContext = defineEvalForContext;
|
|
|
12
12
|
exports.defineExperiment = defineExperiment;
|
|
13
13
|
exports.defineConfig = defineConfig;
|
|
14
14
|
exports.defineSandbox = defineSandbox;
|
|
15
|
-
const
|
|
15
|
+
const model_roles_ts_1 = require("./model-roles.cjs");
|
|
16
16
|
const adapter_flags_ts_1 = require("./adapter-flags.cjs");
|
|
17
17
|
const flags_ts_1 = require("./experiment/flags.cjs");
|
|
18
18
|
const judge_config_ts_1 = require("./runner/judge-config.cjs");
|
|
@@ -22,7 +22,7 @@ const types_ts_1 = require("./types.cjs");
|
|
|
22
22
|
const layer_ts_1 = require("./sandbox/layer.cjs");
|
|
23
23
|
const effect_1 = require("effect");
|
|
24
24
|
const coverage_ts_1 = require("./assertions/coverage.cjs");
|
|
25
|
-
const
|
|
25
|
+
const agent_effects_ts_1 = require("./agents/agent-effects.cjs");
|
|
26
26
|
const contracts_ts_1 = require("./plugin/contracts.cjs");
|
|
27
27
|
/** Recognize only the retired flat configuration, without evaluating getters. */
|
|
28
28
|
function normalizeDefinitionJudge(value, label) {
|
|
@@ -71,8 +71,15 @@ function defineEvalGroup(input) {
|
|
|
71
71
|
function isDefinedScoreEval(value) {
|
|
72
72
|
return definedScoreEvals.has(value);
|
|
73
73
|
}
|
|
74
|
+
function assertAuthorLifecycleNames(def, owner) {
|
|
75
|
+
for (const [previous, current] of [["setup", "before"], ["teardown", "after"]]) {
|
|
76
|
+
if (Object.hasOwn(def, previous))
|
|
77
|
+
throw new TypeError(`${owner}.${previous} is no longer supported; use ${current}.`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
74
80
|
/** 沙箱型 agent:在沙箱里 spawn 一个 coding agent 的 CLI,跑完读回 transcript。 */
|
|
75
81
|
function defineSandboxAgent(def) {
|
|
82
|
+
assertAuthorLifecycleNames(def, "Agent");
|
|
76
83
|
if (!def.name)
|
|
77
84
|
throw new Error(`defineSandboxAgent requires name.`);
|
|
78
85
|
(0, coverage_ts_1.assertEvidenceCoverage)(def.evidenceCoverage, "defineSandboxAgent");
|
|
@@ -89,7 +96,7 @@ function defineSandboxAgent(def) {
|
|
|
89
96
|
throw new TypeError("defineSandboxAgent sandbox must be command-only; an Agent cannot provide a Sandbox template.");
|
|
90
97
|
}
|
|
91
98
|
}
|
|
92
|
-
|
|
99
|
+
const agent = {
|
|
93
100
|
name: def.name,
|
|
94
101
|
kind: "sandbox",
|
|
95
102
|
defineEval,
|
|
@@ -98,69 +105,80 @@ function defineSandboxAgent(def) {
|
|
|
98
105
|
...(def.sandbox === undefined ? {} : { sandbox: def.sandbox }),
|
|
99
106
|
ensure,
|
|
100
107
|
installers: def.installers ?? [],
|
|
101
|
-
|
|
108
|
+
before: def.before,
|
|
102
109
|
tracing: def.tracing,
|
|
103
110
|
spanMapper: def.spanMapper,
|
|
104
111
|
send: def.send,
|
|
105
112
|
classifySendFailure: def.classifySendFailure,
|
|
106
|
-
|
|
113
|
+
after: def.after,
|
|
107
114
|
};
|
|
115
|
+
return (0, agent_effects_ts_1.attachAgentEffects)(agent, {
|
|
116
|
+
send: (input, context) => (0, agent_effects_ts_1.authorCallbackEffect)(() => def.send(input, context)),
|
|
117
|
+
before: def.before === undefined ? undefined : (sandbox, context) => (0, agent_effects_ts_1.authorCallbackEffect)(() => def.before(sandbox, context)),
|
|
118
|
+
after: def.after === undefined ? undefined : (sandbox, context) => (0, agent_effects_ts_1.authorCallbackEffect)(() => def.after(sandbox, { ...context, sandbox })),
|
|
119
|
+
});
|
|
108
120
|
}
|
|
109
121
|
/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
|
|
110
122
|
function makeSandboxAgent(def) {
|
|
111
|
-
const { send,
|
|
123
|
+
const { send, before, after, ...publicDefinition } = def;
|
|
112
124
|
const agent = defineSandboxAgent({
|
|
113
125
|
...publicDefinition,
|
|
114
|
-
send: (0,
|
|
115
|
-
...(
|
|
116
|
-
|
|
126
|
+
send: (0, agent_effects_ts_1.effectAgentCallback)(send, (_input, context) => context.signal),
|
|
127
|
+
...(before === undefined ? {} : {
|
|
128
|
+
before: (0, agent_effects_ts_1.effectAgentCallback)(before, (_sandbox, context) => context.signal),
|
|
117
129
|
}),
|
|
118
|
-
...(
|
|
119
|
-
|
|
130
|
+
...(after === undefined ? {} : {
|
|
131
|
+
after: (0, agent_effects_ts_1.effectAgentCallback)(after, (_sandbox, context) => context.signal),
|
|
120
132
|
}),
|
|
121
133
|
});
|
|
122
|
-
return (0,
|
|
123
|
-
send
|
|
124
|
-
|
|
125
|
-
|
|
134
|
+
return (0, agent_effects_ts_1.attachAgentEffects)(agent, {
|
|
135
|
+
send,
|
|
136
|
+
before,
|
|
137
|
+
after,
|
|
126
138
|
});
|
|
127
139
|
}
|
|
128
140
|
/** Direct Agent:在 send 里直接驱动函数、SDK 或服务端点。 */
|
|
129
141
|
function defineAgent(def) {
|
|
142
|
+
assertAuthorLifecycleNames(def, "Agent");
|
|
130
143
|
if (!def.name)
|
|
131
144
|
throw new Error(`defineAgent requires name.`);
|
|
132
145
|
(0, coverage_ts_1.assertEvidenceCoverage)(def.evidenceCoverage, "defineAgent");
|
|
133
|
-
|
|
146
|
+
const agent = {
|
|
134
147
|
name: def.name,
|
|
135
148
|
kind: "direct",
|
|
136
149
|
defineEval,
|
|
137
150
|
defineScoreEval,
|
|
138
151
|
evidenceCoverage: def.evidenceCoverage,
|
|
139
|
-
|
|
152
|
+
before: def.before,
|
|
140
153
|
tracing: def.tracing,
|
|
141
154
|
spanMapper: def.spanMapper,
|
|
142
155
|
send: def.send,
|
|
143
156
|
classifySendFailure: def.classifySendFailure,
|
|
144
|
-
|
|
157
|
+
after: def.after,
|
|
145
158
|
};
|
|
159
|
+
return (0, agent_effects_ts_1.attachAgentEffects)(agent, {
|
|
160
|
+
send: (input, context) => (0, agent_effects_ts_1.authorCallbackEffect)(() => def.send(input, context)),
|
|
161
|
+
before: def.before === undefined ? undefined : (_sandbox, context) => (0, agent_effects_ts_1.authorCallbackEffect)(() => def.before(context)),
|
|
162
|
+
after: def.after === undefined ? undefined : (_sandbox, context) => (0, agent_effects_ts_1.authorCallbackEffect)(() => def.after(context)),
|
|
163
|
+
});
|
|
146
164
|
}
|
|
147
165
|
/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
|
|
148
166
|
function makeDirectAgent(def) {
|
|
149
|
-
const { send,
|
|
167
|
+
const { send, before, after, ...publicDefinition } = def;
|
|
150
168
|
const agent = defineAgent({
|
|
151
169
|
...publicDefinition,
|
|
152
|
-
send: (0,
|
|
153
|
-
...(
|
|
154
|
-
|
|
170
|
+
send: (0, agent_effects_ts_1.effectAgentCallback)(send, (_input, context) => context.signal),
|
|
171
|
+
...(before === undefined ? {} : {
|
|
172
|
+
before: (0, agent_effects_ts_1.effectAgentCallback)(before, (context) => context.signal),
|
|
155
173
|
}),
|
|
156
|
-
...(
|
|
157
|
-
|
|
174
|
+
...(after === undefined ? {} : {
|
|
175
|
+
after: (0, agent_effects_ts_1.effectAgentCallback)(after, (context) => context.signal),
|
|
158
176
|
}),
|
|
159
177
|
});
|
|
160
|
-
return (0,
|
|
178
|
+
return (0, agent_effects_ts_1.attachAgentEffects)(agent, {
|
|
161
179
|
send,
|
|
162
|
-
|
|
163
|
-
|
|
180
|
+
before: before === undefined ? undefined : (_sandbox, context) => before(context),
|
|
181
|
+
after: after === undefined ? undefined : (_sandbox, context) => after(context),
|
|
164
182
|
});
|
|
165
183
|
}
|
|
166
184
|
/** 会话型 eval(通过制:一个 eval 折叠成一分)。禁止提供 id —— 从路径推导。 */
|
|
@@ -175,7 +193,7 @@ function defineScoreEval(def) {
|
|
|
175
193
|
return defineEvalForContext("score", def);
|
|
176
194
|
}
|
|
177
195
|
/** @internal Shared normalization and provenance path for root and Adapter-bound Eval factories. */
|
|
178
|
-
// @concord-code
|
|
196
|
+
// @concord-code
|
|
179
197
|
// @concord-implements docs/feature/compile-time-contracts/use-case/three-levels.md
|
|
180
198
|
function defineEvalForContext(kind, def, internalFields = {}) {
|
|
181
199
|
const factory = kind === "pass" ? "defineEval" : "defineScoreEval";
|
|
@@ -202,25 +220,28 @@ function defineEvalForContext(kind, def, internalFields = {}) {
|
|
|
202
220
|
definedScoreEvals.add(result);
|
|
203
221
|
return result;
|
|
204
222
|
}
|
|
205
|
-
// @concord-code
|
|
223
|
+
// @concord-code
|
|
206
224
|
// @concord-implements docs/feature/compile-time-contracts/use-case/three-levels.md
|
|
207
225
|
function defineExperiment(def) {
|
|
226
|
+
rejectRemovedField(def, "judgeRuntime", "Use judge.");
|
|
227
|
+
rejectRemovedField(def, "classifyFailure", "Use built-in failure classification or ExperimentFatalError / EvalFatalError.");
|
|
228
|
+
rejectRemovedField(def, "agent", "Use adapter to select the tested Agent or Adapter.");
|
|
208
229
|
if (Object.hasOwn(def, "id")) {
|
|
209
230
|
throw new Error(`defineExperiment does not accept id; ids are derived from file paths.`);
|
|
210
231
|
}
|
|
211
|
-
if (
|
|
212
|
-
throw new Error(`defineExperiment requires
|
|
232
|
+
if (def.adapter === undefined) {
|
|
233
|
+
throw new Error(`defineExperiment requires adapter.`);
|
|
213
234
|
}
|
|
214
|
-
const adapter = def.adapter
|
|
235
|
+
const adapter = def.adapter;
|
|
215
236
|
if (adapter.kind !== "custom" && def.models !== undefined) {
|
|
216
237
|
throw new TypeError("Experiment models is only supported by custom Adapters.");
|
|
217
238
|
}
|
|
218
|
-
const models = adapter.kind === "custom" ? (0,
|
|
239
|
+
const models = adapter.kind === "custom" ? (0, model_roles_ts_1.normalizeModelRoles)(def) : undefined;
|
|
219
240
|
if (adapter.kind === "custom")
|
|
220
|
-
(0,
|
|
221
|
-
const
|
|
241
|
+
(0, model_roles_ts_1.assertRequiredModelRoles)(adapter.requiredModelRoles, models, `Adapter "${adapter.name}"`);
|
|
242
|
+
const judge = def.judge === undefined
|
|
222
243
|
? undefined
|
|
223
|
-
: normalizeDefinitionJudge(def.
|
|
244
|
+
: normalizeDefinitionJudge(def.judge, "defineExperiment() judge");
|
|
224
245
|
assertSandboxLayer(def.sandbox, "defineExperiment");
|
|
225
246
|
if (adapter.kind === "custom") {
|
|
226
247
|
if (def.sandbox !== undefined || def.sandboxReuse === true || def.sandboxCache !== undefined) {
|
|
@@ -230,21 +251,17 @@ function defineExperiment(def) {
|
|
|
230
251
|
throw new Error(`Custom Adapter experiments do not support budget because Adapter usage is not collected.`);
|
|
231
252
|
}
|
|
232
253
|
}
|
|
233
|
-
|
|
254
|
+
assertAuthorLifecycleNames(def, "Experiment");
|
|
255
|
+
// before 是实验级生命周期钩子(整场一次,宿主机侧,见 runner/types.ts 的 ExperimentDef.before);
|
|
234
256
|
// 传成非函数(如误把 sandbox 钩子对象塞进来)在解析时就报,不等到调度才炸。
|
|
235
|
-
if (def.
|
|
236
|
-
throw new Error(`experiment.
|
|
257
|
+
if (def.before !== undefined && typeof def.before !== "function") {
|
|
258
|
+
throw new Error(`experiment.before must be a function ((ctx) => void); use experiment.after for cleanup; to prepare the in-sandbox environment per experiment, chain .before() hooks on the sandbox spec instead.`);
|
|
237
259
|
}
|
|
238
260
|
// teardown 与 setup 是同一个 Experiment lifecycle 边界。非函数值绝不能
|
|
239
261
|
// 伪装成已声明的 cleanup,否则 explicit sharedState recovery 可能在没有
|
|
240
262
|
// 执行补偿的情况下释放 immutable owner generation。
|
|
241
|
-
if (def.
|
|
242
|
-
throw new Error(`Experiment
|
|
243
|
-
}
|
|
244
|
-
// classifyFailure 是失败分类链上的实验通道(见 runner/types.ts 的 ExperimentDef.classifyFailure):
|
|
245
|
-
// 传成非函数在解析时就报,不等到某条 attempt 撞死才发现这一路声明白写。
|
|
246
|
-
if (def.classifyFailure !== undefined && typeof def.classifyFailure !== "function") {
|
|
247
|
-
throw new Error(`experiment.classifyFailure must be a function ((failure) => FailureClass | undefined); it classifies failures that surface as third-party errors and must return undefined for anything it does not recognize.`);
|
|
263
|
+
if (def.after !== undefined && typeof def.after !== "function") {
|
|
264
|
+
throw new Error(`Experiment after must be a function ((ctx) => void); use a function-valued paired lifecycle hook so normal cleanup and explicit sharedState recovery can both execute it.`);
|
|
248
265
|
}
|
|
249
266
|
// labels 是报告归类坐标(进 ExperimentRunInfo.labels,不透传 ctx/t):值域 string | number,
|
|
250
267
|
// 解析时即校验,布尔 / 对象 / NaN 直接报错,不等到落盘或报告分组才炸。
|
|
@@ -257,7 +274,7 @@ function defineExperiment(def) {
|
|
|
257
274
|
}
|
|
258
275
|
const sharedState = normalizeSharedState(def.sharedState);
|
|
259
276
|
const sandboxCache = normalizeSandboxCache(def.sandboxCache, "defineExperiment");
|
|
260
|
-
const { id: _derivedId,
|
|
277
|
+
const { id: _derivedId, adapter: _adapter, sharedState: _sharedState, sandboxCache: _sandboxCache, models: _models, ...author } = def;
|
|
261
278
|
const flags = (0, flags_ts_1.decodeExperimentFlags)(def.flags === undefined ? {} : def.flags);
|
|
262
279
|
return (0, types_ts_1.brandExperimentDefinition)({
|
|
263
280
|
...author,
|
|
@@ -267,7 +284,6 @@ function defineExperiment(def) {
|
|
|
267
284
|
reasoningEffort: models.default?.reasoningEffort ?? undefined,
|
|
268
285
|
}),
|
|
269
286
|
adapter,
|
|
270
|
-
...(adapter.kind === "custom" ? {} : { agent: adapter }),
|
|
271
287
|
flags: adapter.kind === "custom" && adapter.parseFlags !== undefined
|
|
272
288
|
? (0, adapter_flags_ts_1.parseAdapterFlags)(adapter.parseFlags, flags)
|
|
273
289
|
: flags,
|
|
@@ -276,7 +292,7 @@ function defineExperiment(def) {
|
|
|
276
292
|
earlyExit: def.earlyExit ?? false,
|
|
277
293
|
evals: Array.isArray(def.evals) ? Object.freeze([...def.evals]) : (def.evals ?? "*"),
|
|
278
294
|
sandboxReuse: def.sandboxReuse === true,
|
|
279
|
-
...(
|
|
295
|
+
...(judge === undefined ? {} : { judge }),
|
|
280
296
|
...(sharedState === undefined ? {} : { sharedState }),
|
|
281
297
|
...(sandboxCache === undefined ? {} : { sandboxCache }),
|
|
282
298
|
plugins: normalizePlugins(def.plugins ?? [], "defineExperiment plugins", "experiment"),
|
|
@@ -286,15 +302,17 @@ function normalizeSandboxCache(value, factory) {
|
|
|
286
302
|
if (value === undefined)
|
|
287
303
|
return undefined;
|
|
288
304
|
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
289
|
-
throw new TypeError(`${factory} sandboxCache must be an object with optional
|
|
305
|
+
throw new TypeError(`${factory} sandboxCache must be an object with optional before "use" or "bypass".`);
|
|
290
306
|
}
|
|
307
|
+
if (Object.hasOwn(value, "setup"))
|
|
308
|
+
throw new TypeError(`${factory} sandboxCache.setup is no longer supported. Use sandboxCache.before.`);
|
|
291
309
|
const keys = Object.keys(value);
|
|
292
|
-
const
|
|
293
|
-
if (keys.some((key) => key !== "
|
|
294
|
-
(
|
|
295
|
-
throw new TypeError(`${factory} sandboxCache must be an object with optional
|
|
310
|
+
const before = Reflect.get(value, "before");
|
|
311
|
+
if (keys.some((key) => key !== "before") ||
|
|
312
|
+
(before !== undefined && before !== "use" && before !== "bypass")) {
|
|
313
|
+
throw new TypeError(`${factory} sandboxCache must be an object with optional before "use" or "bypass".`);
|
|
296
314
|
}
|
|
297
|
-
return Object.freeze(
|
|
315
|
+
return Object.freeze(before === undefined ? {} : { before });
|
|
298
316
|
}
|
|
299
317
|
const SharedStateKeyPattern = /^[a-z0-9][a-z0-9._/-]{0,127}$/u;
|
|
300
318
|
function normalizeSharedState(value) {
|
|
@@ -313,6 +331,7 @@ function normalizeSharedState(value) {
|
|
|
313
331
|
return Object.freeze({ key: candidate.key });
|
|
314
332
|
}
|
|
315
333
|
function normalizeEvalFields(def) {
|
|
334
|
+
rejectRemovedField(def, "reporters", "Use Config.reporters for project-level reporting.");
|
|
316
335
|
const judge = def.judge === undefined
|
|
317
336
|
? undefined
|
|
318
337
|
: normalizeDefinitionJudge(def.judge, "defineEval() judge");
|
|
@@ -322,7 +341,6 @@ function normalizeEvalFields(def) {
|
|
|
322
341
|
...(def.sandbox !== undefined ? { sandbox: def.sandbox } : {}),
|
|
323
342
|
plugins: normalizePlugins(def.plugins ?? [], "defineEval plugins", "eval"),
|
|
324
343
|
...(judge !== undefined ? { judge } : {}),
|
|
325
|
-
reporters: Object.freeze([...(def.reporters ?? [])]),
|
|
326
344
|
...(def.timeoutMs !== undefined ? { timeoutMs: def.timeoutMs } : {}),
|
|
327
345
|
metadata: decodeJsonRecord(def.metadata ?? {}, "Eval metadata"),
|
|
328
346
|
diff: Object.freeze({
|
|
@@ -331,7 +349,7 @@ function normalizeEvalFields(def) {
|
|
|
331
349
|
}),
|
|
332
350
|
};
|
|
333
351
|
}
|
|
334
|
-
// @concord-code
|
|
352
|
+
// @concord-code
|
|
335
353
|
// @concord-implements docs/feature/plugins/library.md
|
|
336
354
|
function normalizePlugins(value, label, owner) {
|
|
337
355
|
if (!Array.isArray(value))
|
|
@@ -339,9 +357,7 @@ function normalizePlugins(value, label, owner) {
|
|
|
339
357
|
return Object.freeze(value.map((plugin, index) => {
|
|
340
358
|
if (!(0, contracts_ts_1.isPluginInstance)(plugin))
|
|
341
359
|
throw new TypeError(`${label}[${index}] must be created by definePlugin().`);
|
|
342
|
-
|
|
343
|
-
throw new TypeError(`${label}[${index}] does not support ${owner} attachment.`);
|
|
344
|
-
}
|
|
360
|
+
(0, contracts_ts_1.assertPluginOwner)(plugin, owner, `${label}[${index}]`);
|
|
345
361
|
return plugin;
|
|
346
362
|
}));
|
|
347
363
|
}
|
|
@@ -388,17 +404,20 @@ function assertSandboxLayer(value, factory) {
|
|
|
388
404
|
}
|
|
389
405
|
/** 项目级配置。 */
|
|
390
406
|
function defineConfig(config) {
|
|
407
|
+
rejectRemovedField(config, "judgeRuntime", "Use judgeProvider.");
|
|
408
|
+
rejectRemovedField(config, "maxSetupPrefixConcurrency", "Use maxBeforeCacheConcurrency.");
|
|
409
|
+
rejectRemovedField(config, "workspace", "Use the project directory as the working directory.");
|
|
391
410
|
const sandboxCache = normalizeSandboxCache(config.sandboxCache, "defineConfig");
|
|
392
|
-
const
|
|
411
|
+
const judgeProvider = config.judgeProvider === undefined
|
|
393
412
|
? undefined
|
|
394
|
-
: normalizeDefinitionJudge(config.
|
|
395
|
-
if (
|
|
396
|
-
throw new TypeError("defineConfig()
|
|
413
|
+
: normalizeDefinitionJudge(config.judgeProvider, "defineConfig() judgeProvider");
|
|
414
|
+
if (judgeProvider !== undefined && !(0, provider_ts_1.isJudgeProvider)(judgeProvider)) {
|
|
415
|
+
throw new TypeError("defineConfig() judgeProvider must be a Judge Provider created by niceeval/judge");
|
|
397
416
|
}
|
|
398
417
|
return Object.freeze({
|
|
399
418
|
...config,
|
|
400
419
|
...(sandboxCache === undefined ? {} : { sandboxCache }),
|
|
401
|
-
...(
|
|
420
|
+
...(judgeProvider === undefined ? {} : { judgeProvider }),
|
|
402
421
|
});
|
|
403
422
|
}
|
|
404
423
|
/**
|
|
@@ -408,4 +427,8 @@ function defineConfig(config) {
|
|
|
408
427
|
function defineSandbox(def) {
|
|
409
428
|
return (0, layer_ts_1.customProviderSandbox)(def);
|
|
410
429
|
}
|
|
430
|
+
function rejectRemovedField(value, field, replacement) {
|
|
431
|
+
if (Object.hasOwn(value, field))
|
|
432
|
+
throw new TypeError(`${field} is no longer supported. ${replacement}`);
|
|
433
|
+
}
|
|
411
434
|
//# sourceMappingURL=define.cjs.map
|
package/dist/define.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.js","sourceRoot":"","sources":["define.ts"],"names":[],"mappings":";;AAwCA,0CAoBC;AAED,gDAEC;AAED,gDAiCC;AAED,4CAiBC;AAED,kCAiBC;AAED,0CAiBC;AAED,gCAEC;AAKD,0CAEC;AAOD,oDAwBC;AAKD,4CA+EC;AA4GD,oCAaC;AAKD,sCAEC;AAvZD,qDAAiF;AACjF,yDAAuD;AACvD,oDAA8D;AAI9D,8DAAmE;AACnE,qDAAsD;AACtD,0DAA6F;AAC7F,yCAAyH;AACzH,iDAAuJ;AACvJ,mCAAwC;AACxC,0DAAkE;AAClE,kEAAuK;AACvK,wDAAsH;AACtH,iFAAiF;AACjF,SAAS,wBAAwB,CAAC,KAAc,EAAE,KAAa;IAC3D,IAAI,CAAC,IAAA,6BAAe,EAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClG,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;QACrF,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/F,MAAM,UAAU,GAAG,OAAO,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAChE,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,IAAI,UAAU,CAAC;QACpH,CAAC,CAAC,EAAE,CAAC;YACD,MAAM,IAAI,iCAAsB,CAAC,EAAE,WAAW,EAAE,CAAC;wBACrC,OAAO,EAAE,gBAAgB;wBACzB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;wBAClC,MAAM,EAAE,IAAA,iCAAsB,GAAE;qBACnC,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACL,CAAC;IACD,OAAO,IAAA,yCAAuB,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACjD,CAAC;AACD,0EAA0E;AAC1E,kEAAkE;AAClE,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAU,CAAC;AAChD,iFAAiF;AACjF,SAAgB,eAAe,CAAiD,KAA8B;IAC1G,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,SAAS,CAAC,gGAAgG,CAAC,CAAC;IAC1H,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAClC,IAAI,CAAC,IAAA,2BAAgB,EAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,SAAS,CAAC,yBAAyB,KAAK,qEAAqE,CAAC,CAAC;QAC7H,CAAC;IACL,CAAC,CAAC,CAAC;IACH,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACrD,IAAI,KAAK,CAAC,aAAa,KAAK,YAAY,IAAI,KAAK,CAAC,aAAa,KAAK,iBAAiB,EAAE,CAAC;QACpF,MAAM,IAAI,SAAS,CAAC,8EAA8E,CAAC,CAAC;IACxG,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IACrC,OAAO,IAAA,mCAAwB,EAAC;QAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;QACtC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,yBAAyB,EAAE,OAAO,CAAC,EAAE,CAAC;KAC3H,CAAC,CAAC;AACP,CAAC;AACD,gDAAgD;AAChD,SAAgB,kBAAkB,CAAC,KAAa;IAC5C,OAAO,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AACD,kEAAkE;AAClE,SAAgB,kBAAkB,CAAC,GAAoB;IACnD,IAAI,CAAC,GAAG,CAAC,IAAI;QACT,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACzD,IAAA,oCAAsB,EAAC,GAAG,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;IACnE,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QACxB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC1E,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAA,yBAAc,EAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CAAC,8EAA8E,CAAC,CAAC;QACxG,CAAC;QACD,IAAI,IAAA,8BAAmB,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC3D,MAAM,IAAI,SAAS,CAAC,8FAA8F,CAAC,CAAC;QACxH,CAAC;IACL,CAAC;IACD,OAAO;QACH,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,SAAS;QACf,UAAU;QACV,eAAe;QACf,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAC9D,MAAM;QACN,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;QAChC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;QAC5C,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACzB,CAAC;AACN,CAAC;AACD,oFAAoF;AACpF,SAAgB,gBAAgB,CAAC,GAA0F;IACvH,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,GAAG,GAAG,CAAC;IAC3D,MAAM,KAAK,GAAG,kBAAkB,CAAC;QAC7B,GAAG,gBAAgB;QACnB,IAAI,EAAE,IAAA,uCAAmB,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;QACpE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,KAAK,EAAE,IAAA,uCAAmB,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;SAC3E,CAAC;QACF,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9B,QAAQ,EAAE,IAAA,uCAAmB,EAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;SACjF,CAAC;KACL,CAAC,CAAC;IACH,OAAO,IAAA,8CAA0B,EAAC,KAAK,EAAE;QACrC,IAAI,EAAE,IAA6C;QACnD,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,QAAQ;KAC5B,CAAC,CAAC;AACP,CAAC;AACD,6CAA6C;AAC7C,SAAgB,WAAW,CAAC,GAAmB;IAC3C,IAAI,CAAC,GAAG,CAAC,IAAI;QACT,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAClD,IAAA,oCAAsB,EAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAC5D,OAAO;QACH,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,QAAQ;QACd,UAAU;QACV,eAAe;QACf,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;QAC5C,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACzB,CAAC;AACN,CAAC;AACD,oFAAoF;AACpF,SAAgB,eAAe,CAAC,GAAwF;IACpH,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,GAAG,GAAG,CAAC;IAC3D,MAAM,KAAK,GAAG,WAAW,CAAC;QACtB,GAAG,gBAAgB;QACnB,IAAI,EAAE,IAAA,uCAAmB,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;QACpE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,KAAK,EAAE,IAAA,uCAAmB,EAAC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;SACjE,CAAC;QACF,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9B,QAAQ,EAAE,IAAA,uCAAmB,EAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;SACvE,CAAC;KACL,CAAC,CAAC;IACH,OAAO,IAAA,8CAA0B,EAAC,KAAK,EAAE;QACrC,IAAI;QACJ,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,QAAQ;KAC3B,CAAC,CAAC;AACP,CAAC;AACD,oDAAoD;AACpD,SAAgB,UAAU,CAA6D,GAAuB;IAC1G,OAAO,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC;AACD;;;GAGG;AACH,SAAgB,eAAe,CAA6D,GAA4B;IACpH,OAAO,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC;AAID,oGAAoG;AACpG,+CAA+C;AAC/C,mFAAmF;AACnF,SAAgB,oBAAoB,CAAqG,IAAU,EAAE,GAA8B,EAAE,iBAAyD,EAAE;IAC5O,MAAM,OAAO,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACnE,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,uDAAuD,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,wDAAwD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/G,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,0EAA0E,CAAC,CAAC;IAC1G,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,sCAAsC,CAAC,CAAC;IACtE,CAAC;IACD,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAA,8BAAmB,EAAC;QAC/B,GAAG,mBAAmB,CAAC,GAAG,CAAC;QAC3B,GAAG,cAAc;QACjB,cAAc,EAAE,IAAI;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI;KACjB,CAAC,CAAC;IACH,IAAI,IAAI,KAAK,OAAO;QAChB,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,MAAgD,CAAC;AAC5D,CAAC;AAGD,6CAA6C;AAC7C,mFAAmF;AACnF,SAAgB,gBAAgB,CAAC,GAEhC;IACG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,KAAM,CAAC;IAC1C,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACxD,MAAM,IAAI,SAAS,CAAC,yDAAyD,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,oCAAmB,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;QACzB,IAAA,yCAAwB,EAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,EAAE,YAAY,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IAC9F,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,KAAK,SAAS;QAC/C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,YAAY,EAAE,iCAAiC,CAAC,CAAC;IACpF,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,YAAY,KAAK,IAAI,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC3F,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;QACzG,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;QAChH,CAAC;IACL,CAAC;IACD,uEAAuE;IACvE,4CAA4C;IAC5C,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,mMAAmM,CAAC,CAAC;IACzN,CAAC;IACD,wDAAwD;IACxD,yDAAyD;IACzD,yCAAyC;IACzC,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,8KAA8K,CAAC,CAAC;IACpM,CAAC;IACD,mFAAmF;IACnF,0CAA0C;IAC1C,IAAI,GAAG,CAAC,eAAe,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,gNAAgN,CAAC,CAAC;IACtO,CAAC;IACD,2EAA2E;IAC3E,0CAA0C;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACpD,MAAM,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9F,IAAI,CAAC,EAAE;gBACH,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,wHAAwH,CAAC,CAAC;QAC1K,CAAC;IACL,CAAC;IACD,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,qBAAqB,CAAC,GAAG,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACjF,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,GAAG,CAAC;IACrJ,MAAM,KAAK,GAAG,IAAA,gCAAqB,EAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9E,OAAO,IAAA,oCAAyB,EAAC;QAC7B,GAAG,MAAM;QACT,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,SAAS;YACzC,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,eAAe,IAAI,SAAS;SAChE,CAAC;QACF,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QACxD,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAChE,CAAC,CAAC,IAAA,oCAAiB,EAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;YAC9C,CAAC,CAAC,KAAK;QACX,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAChD,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC;QAC3B,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,KAAK;QACjC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC;QACpF,YAAY,EAAE,GAAG,CAAC,YAAY,KAAK,IAAI;QACvC,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;QACrD,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,0BAA0B,EAAE,YAAY,CAAC;KACzF,CAAC,CAAC;AACP,CAAC;AACD,SAAS,qBAAqB,CAAC,KAAc,EAAE,OAA4C;IACvF,IAAI,KAAK,KAAK,SAAS;QACnB,OAAO,SAAS,CAAC;IACrB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,SAAS,CAAC,GAAG,OAAO,wEAAwE,CAAC,CAAC;IAC5G,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC;QACnC,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,SAAS,CAAC,GAAG,OAAO,wEAAwE,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/D,CAAC;AACD,MAAM,qBAAqB,GAAG,gCAAgC,CAAC;AAC/D,SAAS,oBAAoB,CAAC,KAAc;IACxC,IAAI,KAAK,KAAK,SAAS;QACnB,OAAO,SAAS,CAAC;IACrB,MAAM,SAAS,GAAG,KAEjB,CAAC;IACF,IAAI,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;QAC/B,OAAO,SAAS,CAAC,GAAG,KAAK,QAAQ;QACjC,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,SAAS,CAAC,gIAAgI,CAAC,CAAC;IAC1J,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;AACjD,CAAC;AACD,SAAS,mBAAmB,CAAiD,GAAiD;IAC1H,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK,SAAS;QACjC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;IAChE,OAAO;QACH,GAAG,CAAC,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1C,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,oBAAoB,EAAE,MAAM,CAAC;QAC1E,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,eAAe,CAAC;QAC/D,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;YACtD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;SACvD,CAAC;KACL,CAAC;AACN,CAAC;AACD,6CAA6C;AAC7C,sDAAsD;AACtD,SAAS,gBAAgB,CAA4B,KAAuC,EAAE,KAAa,EAAE,KAAY;IACrH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC7C,IAAI,CAAC,IAAA,+BAAgB,EAAC,MAAM,CAAC;YACzB,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,IAAI,KAAK,sCAAsC,CAAC,CAAC;QACjF,IAAI,IAAA,mCAAoB,EAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;YACpD,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,IAAI,KAAK,sBAAsB,KAAK,cAAc,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC,CAAC;AACR,CAAC;AACD,SAAS,WAAW,CAAC,KAAc;IAC/B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QACzE,OAAO,IAAI,CAAC;IAChB,IAAI,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,OAAO,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,CAAC;IACjB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACnD,CAAC;AACD,MAAM,eAAe,GAAG,eAAM,CAAC,OAAO,CAAY,WAAW,CAAC,CAAC;AAC/D,MAAM,gBAAgB,GAAG,eAAM,CAAC,MAAM,CAAC,eAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AACvE,SAAS,cAAc,CAAC,KAAgB;IACpC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,GAAgB,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAyC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnJ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,SAAS,gBAAgB,CAAC,KAAc,EAAE,KAAa;IACnD,MAAM,OAAO,GAAG,eAAM,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACvF,IAAI,eAAM,CAAC,SAAS,CAAC,OAAO,CAAC;QACzB,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,6BAA6B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClI,CAAC;AACD;;;GAGG;AACH,SAAS,kBAAkB,CAAC,KAAc,EAAE,OAAe;IACvD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,IAAA,yBAAc,EAAC,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,SAAS,CAAC,GAAG,OAAO,gKAAgK,CAAC,CAAC;IACpM,CAAC;AACL,CAAC;AACD,aAAa;AACb,SAAgB,YAAY,CAAC,MAAc;IACvC,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAChF,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,KAAK,SAAS;QAClD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,YAAY,EAAE,6BAA6B,CAAC,CAAC;IACnF,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,IAAA,6BAAe,EAAC,YAAY,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,SAAS,CAAC,gFAAgF,CAAC,CAAC;IAC1G,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,GAAG,MAAM;QACT,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;KAC1D,CAAC,CAAC;AACP,CAAC;AACD;;;GAGG;AACH,SAAgB,aAAa,CAAC,GAAiC;IAC3D,OAAO,IAAA,gCAAqB,EAAC,GAAG,CAAC,CAAC;AACtC,CAAC","sourcesContent":["// @concord-file ne-surface-definition-entry\n// @concord-implements docs/feature/plugins/library.md\nimport type { Adapter } from \"./adapter.ts\";\nimport { assertRequiredModelSlots, normalizeModelSlots } from \"./model-slots.ts\";\nimport { parseAdapterFlags } from \"./adapter-flags.ts\";\nimport { decodeExperimentFlags } from \"./experiment/flags.ts\";\n// 定义入口:把用户对象规格化成核心认得的形状。路径即身份 —— 这里禁止手写 id,\n// 由发现阶段从文件路径推导(见 runner/discover.ts)。\nimport type { DirectAgent, DirectAgentDef, Config, EvalInput, EvalGroupDefinition, EvalGroupInput, EvalDefinition, EvalDefinitionFields, ExperimentDefinition, ExperimentInput, SharedStateConfig, SandboxCacheConfig, SandboxAgent, SandboxAgentDef, ScoreEvalInput, ScoreTestContext, TestContext, JsonValue, } from \"./types.ts\";\nimport { normalizeJudgeSelection } from \"./runner/judge-config.ts\";\nimport { isJudgeProvider } from \"./judge/provider.ts\";\nimport { MigrationRequiredError, captureMigrationSource } from \"./error-assistance/index.ts\";\nimport { brandEvalDefinition, brandEvalGroupDefinition, brandExperimentDefinition, isEvalDefinition, } from \"./types.ts\";\nimport { customProviderSandbox, isSandboxLayer, sandboxLayerStateOf, type CustomProviderSandboxOptions, type SandboxLayer, } from \"./sandbox/layer.ts\";\nimport { Result, Schema } from \"effect\";\nimport { assertEvidenceCoverage } from \"./assertions/coverage.ts\";\nimport { effectAgentCallback, registerAgentEffectRuntime, type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition, } from \"./agents/effect-runtime.ts\";\nimport { isPluginInstance, pluginInstanceDataOf, type PluginInstance, type PluginOwner } from \"./plugin/contracts.ts\";\n/** Recognize only the retired flat configuration, without evaluating getters. */\nfunction normalizeDefinitionJudge(value: unknown, label: string) {\n if (!isJudgeProvider(value) && typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n const prototype = Object.getPrototypeOf(value);\n const legacyKeys = [\"model\", \"baseUrl\", \"apiKeyEnv\", \"timeoutMs\", \"maxOutputTokens\"];\n if ((prototype === Object.prototype || prototype === null) && Reflect.ownKeys(value).every((key) => {\n const descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n return typeof key === \"string\" && legacyKeys.includes(key) && descriptor !== undefined && \"value\" in descriptor;\n })) {\n throw new MigrationRequiredError({ occurrences: [{\n guideId: \"judge-provider\",\n subject: label.replace(\"() \", \".\"),\n source: captureMigrationSource(),\n }] });\n }\n }\n return normalizeJudgeSelection(value, label);\n}\n// 发现期必须区分 defineScoreEval 的真正产物与运行时手写 `{ evaluationKind: \"score\" }` 的裸对象。\n// WeakSet 是模块私有来源证明;Definition 本身另有 types.ts 的私有 symbol 品牌供类型层使用。\nconst definedScoreEvals = new WeakSet<object>();\n/** Define a closed set of real Eval definitions sharing one physical Sandbox. */\nexport function defineEvalGroup<const Sandbox extends SandboxLayer | undefined>(input: EvalGroupInput<Sandbox>): EvalGroupDefinition {\n if (!Array.isArray(input.evals) || input.evals.length === 0) {\n throw new TypeError(\"defineEvalGroup evals must be a non-empty array of defineEval()/defineScoreEval() definitions.\");\n }\n input.evals.forEach((member, index) => {\n if (!isEvalDefinition(member)) {\n throw new TypeError(`defineEvalGroup evals[${index}] must be the object returned by defineEval() or defineScoreEval().`);\n }\n });\n assertSandboxLayer(input.sandbox, \"defineEvalGroup\");\n if (input.onUnavailable !== \"stop-group\" && input.onUnavailable !== \"replace-sandbox\") {\n throw new TypeError(\"defineEvalGroup onUnavailable must be \\\"stop-group\\\" or \\\"replace-sandbox\\\".\");\n }\n const [first, ...rest] = input.evals;\n return brandEvalGroupDefinition({\n evals: Object.freeze([first, ...rest]),\n onUnavailable: input.onUnavailable,\n ...(input.sandbox ? { sandbox: input.sandbox } : {}),\n ...(input.plugins === undefined ? {} : { plugins: normalizePlugins(input.plugins, \"defineEvalGroup plugins\", \"group\") }),\n });\n}\n/** @internal 仅供 discoverEvals 验证 score 题型来源。 */\nexport function isDefinedScoreEval(value: object): boolean {\n return definedScoreEvals.has(value);\n}\n/** 沙箱型 agent:在沙箱里 spawn 一个 coding agent 的 CLI,跑完读回 transcript。 */\nexport function defineSandboxAgent(def: SandboxAgentDef): SandboxAgent {\n if (!def.name)\n throw new Error(`defineSandboxAgent requires name.`);\n assertEvidenceCoverage(def.evidenceCoverage, \"defineSandboxAgent\");\n if (def.ensure === undefined)\n throw new Error(`defineSandboxAgent requires an ensure declaration.`);\n const ensure = Array.isArray(def.ensure) ? def.ensure : [def.ensure];\n if (ensure.length === 0)\n throw new Error(`defineSandboxAgent requires an ensure declaration.`);\n if (def.sandbox !== undefined) {\n if (!isSandboxLayer(def.sandbox)) {\n throw new TypeError(\"defineSandboxAgent sandbox must be a SandboxLayer created by sandboxLayer().\");\n }\n if (sandboxLayerStateOf(def.sandbox).kind !== \"command-only\") {\n throw new TypeError(\"defineSandboxAgent sandbox must be command-only; an Agent cannot provide a Sandbox template.\");\n }\n }\n return {\n name: def.name,\n kind: \"sandbox\",\n defineEval,\n defineScoreEval,\n evidenceCoverage: def.evidenceCoverage,\n ...(def.sandbox === undefined ? {} : { sandbox: def.sandbox }),\n ensure,\n installers: def.installers ?? [],\n setup: def.setup,\n tracing: def.tracing,\n spanMapper: def.spanMapper,\n send: def.send,\n classifySendFailure: def.classifySendFailure,\n teardown: def.teardown,\n };\n}\n/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */\nexport function makeSandboxAgent(def: Omit<SandboxAgentDef, \"send\" | \"setup\" | \"teardown\"> & InternalSandboxAgentDefinition): SandboxAgent {\n const { send, setup, teardown, ...publicDefinition } = def;\n const agent = defineSandboxAgent({\n ...publicDefinition,\n send: effectAgentCallback(send, (_input, context) => context.signal),\n ...(setup === undefined ? {} : {\n setup: effectAgentCallback(setup, (_sandbox, context) => context.signal),\n }),\n ...(teardown === undefined ? {} : {\n teardown: effectAgentCallback(teardown, (_sandbox, context) => context.signal),\n }),\n });\n return registerAgentEffectRuntime(agent, {\n send: send as InternalDirectAgentDefinition[\"send\"],\n sandboxSetup: setup,\n sandboxTeardown: teardown,\n });\n}\n/** Direct Agent:在 send 里直接驱动函数、SDK 或服务端点。 */\nexport function defineAgent(def: DirectAgentDef): DirectAgent {\n if (!def.name)\n throw new Error(`defineAgent requires name.`);\n assertEvidenceCoverage(def.evidenceCoverage, \"defineAgent\");\n return {\n name: def.name,\n kind: \"direct\",\n defineEval,\n defineScoreEval,\n evidenceCoverage: def.evidenceCoverage,\n setup: def.setup,\n tracing: def.tracing,\n spanMapper: def.spanMapper,\n send: def.send,\n classifySendFailure: def.classifySendFailure,\n teardown: def.teardown,\n };\n}\n/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */\nexport function makeDirectAgent(def: Omit<DirectAgentDef, \"send\" | \"setup\" | \"teardown\"> & InternalDirectAgentDefinition): DirectAgent {\n const { send, setup, teardown, ...publicDefinition } = def;\n const agent = defineAgent({\n ...publicDefinition,\n send: effectAgentCallback(send, (_input, context) => context.signal),\n ...(setup === undefined ? {} : {\n setup: effectAgentCallback(setup, (context) => context.signal),\n }),\n ...(teardown === undefined ? {} : {\n teardown: effectAgentCallback(teardown, (context) => context.signal),\n }),\n });\n return registerAgentEffectRuntime(agent, {\n send,\n directSetup: setup,\n directTeardown: teardown,\n });\n}\n/** 会话型 eval(通过制:一个 eval 折叠成一分)。禁止提供 id —— 从路径推导。 */\nexport function defineEval<const Sandbox extends SandboxLayer | undefined = undefined>(def: EvalInput<Sandbox>): EvalDefinition<\"pass\", TestContext, Sandbox> {\n return defineEvalForContext(\"pass\", def);\n}\n/**\n * 计分制 eval:Fact verdict uses 与 Fact score uses 可以读取同一份证据;正常返回由 Runner\n * 自动关闭计分收集器。字段与 `defineEval` 同形,禁止提供 id,由发现期推导。\n */\nexport function defineScoreEval<const Sandbox extends SandboxLayer | undefined = undefined>(def: ScoreEvalInput<Sandbox>): EvalDefinition<\"score\", ScoreTestContext, Sandbox> {\n return defineEvalForContext(\"score\", def);\n}\ntype EvalFactoryInput<Sandbox extends SandboxLayer | undefined> = Omit<EvalInput<Sandbox> | ScoreEvalInput<Sandbox>, \"test\"> & {\n readonly test: (...args: never[]) => ReturnType<EvalDefinition<\"pass\", unknown, Sandbox>[\"test\"]>;\n};\n/** @internal Shared normalization and provenance path for root and Adapter-bound Eval factories. */\n// @concord-code ne-surface-define-eval-context\n// @concord-implements docs/feature/compile-time-contracts/use-case/three-levels.md\nexport function defineEvalForContext<Kind extends \"pass\" | \"score\", Context, const Sandbox extends SandboxLayer | undefined = undefined>(kind: Kind, def: EvalFactoryInput<Sandbox>, internalFields: Readonly<Record<PropertyKey, unknown>> = {}): EvalDefinition<Kind, Context, Sandbox> {\n const factory = kind === \"pass\" ? \"defineEval\" : \"defineScoreEval\";\n if (Object.hasOwn(def, \"id\")) {\n throw new Error(`${factory} does not accept id; ids are derived from file paths.`);\n }\n if (Object.hasOwn(def, \"evaluationKind\")) {\n throw new Error(`${factory} does not accept evaluationKind; it is always set to ${JSON.stringify(kind)}.`);\n }\n if (Object.hasOwn(def, \"configHash\")) {\n throw new Error(`${factory} does not accept configHash; configHash is computed during run planning.`);\n }\n if (typeof def.test !== \"function\") {\n throw new Error(`${factory} requires an async test(t) function.`);\n }\n assertSandboxLayer(def.sandbox, factory);\n const result = brandEvalDefinition({\n ...normalizeEvalFields(def),\n ...internalFields,\n evaluationKind: kind,\n test: def.test,\n });\n if (kind === \"score\")\n definedScoreEvals.add(result);\n return result as EvalDefinition<Kind, Context, Sandbox>;\n}\n/** 实验:可签入的运行配置(怎么跑这批 eval)。 */\nexport function defineExperiment<const A extends Adapter>(def: ExperimentInput<A>): ExperimentDefinition<A>;\n// @concord-code ne-surface-define-experiment\n// @concord-implements docs/feature/compile-time-contracts/use-case/three-levels.md\nexport function defineExperiment(def: Omit<ExperimentInput, \"flags\"> & {\n readonly flags?: unknown;\n}): ExperimentDefinition {\n if (Object.hasOwn(def, \"id\")) {\n throw new Error(`defineExperiment does not accept id; ids are derived from file paths.`);\n }\n if ((def.agent === undefined) === (def.adapter === undefined)) {\n throw new Error(`defineExperiment requires exactly one of agent or adapter.`);\n }\n const adapter = def.adapter ?? def.agent!;\n if (adapter.kind !== \"custom\" && def.models !== undefined) {\n throw new TypeError(\"Experiment models is only supported by custom Adapters.\");\n }\n const models = adapter.kind === \"custom\" ? normalizeModelSlots(def) : undefined;\n if (adapter.kind === \"custom\")\n assertRequiredModelSlots(adapter.requiredModelSlots, models, `Adapter \"${adapter.name}\"`);\n const judgeRuntime = def.judgeRuntime === undefined\n ? undefined\n : normalizeDefinitionJudge(def.judgeRuntime, \"defineExperiment() judgeRuntime\");\n assertSandboxLayer(def.sandbox, \"defineExperiment\");\n if (adapter.kind === \"custom\") {\n if (def.sandbox !== undefined || def.sandboxReuse === true || def.sandboxCache !== undefined) {\n throw new Error(`Custom Adapter experiments do not support sandbox, sandboxReuse, or sandboxCache.`);\n }\n if (def.budget !== undefined) {\n throw new Error(`Custom Adapter experiments do not support budget because Adapter usage is not collected.`);\n }\n }\n // setup 是实验级生命周期钩子(整场一次,宿主机侧,见 runner/types.ts 的 ExperimentDef.setup);\n // 传成非函数(如误把 sandbox 钩子对象塞进来)在解析时就报,不等到调度才炸。\n if (def.setup !== undefined && typeof def.setup !== \"function\") {\n throw new Error(`experiment.setup must be a function ((ctx) => void); use experiment.teardown for cleanup; to prepare the in-sandbox environment per experiment, chain .setup() hooks on the sandbox spec instead.`);\n }\n // teardown 与 setup 是同一个 Experiment lifecycle 边界。非函数值绝不能\n // 伪装成已声明的 cleanup,否则 explicit sharedState recovery 可能在没有\n // 执行补偿的情况下释放 immutable owner generation。\n if (def.teardown !== undefined && typeof def.teardown !== \"function\") {\n throw new Error(`Experiment teardown must be a function ((ctx) => void); use a function-valued paired lifecycle hook so normal cleanup and explicit sharedState recovery can both execute it.`);\n }\n // classifyFailure 是失败分类链上的实验通道(见 runner/types.ts 的 ExperimentDef.classifyFailure):\n // 传成非函数在解析时就报,不等到某条 attempt 撞死才发现这一路声明白写。\n if (def.classifyFailure !== undefined && typeof def.classifyFailure !== \"function\") {\n throw new Error(`experiment.classifyFailure must be a function ((failure) => FailureClass | undefined); it classifies failures that surface as third-party errors and must return undefined for anything it does not recognize.`);\n }\n // labels 是报告归类坐标(进 ExperimentRunInfo.labels,不透传 ctx/t):值域 string | number,\n // 解析时即校验,布尔 / 对象 / NaN 直接报错,不等到落盘或报告分组才炸。\n if (def.labels !== undefined) {\n for (const [key, value] of Object.entries(def.labels)) {\n const ok = typeof value === \"string\" || (typeof value === \"number\" && Number.isFinite(value));\n if (!ok)\n throw new Error(`experiment.labels.${key} must be a string or a finite number; labels are report-side grouping coordinates persisted verbatim into result runs.`);\n }\n }\n const sharedState = normalizeSharedState(def.sharedState);\n const sandboxCache = normalizeSandboxCache(def.sandboxCache, \"defineExperiment\");\n const { id: _derivedId, agent: _agent, adapter: _adapter, sharedState: _sharedState, sandboxCache: _sandboxCache, models: _models, ...author } = def;\n const flags = decodeExperimentFlags(def.flags === undefined ? {} : def.flags);\n return brandExperimentDefinition({\n ...author,\n ...(models === undefined ? {} : {\n models,\n model: models.default?.model ?? undefined,\n reasoningEffort: models.default?.reasoningEffort ?? undefined,\n }),\n adapter,\n ...(adapter.kind === \"custom\" ? {} : { agent: adapter }),\n flags: adapter.kind === \"custom\" && adapter.parseFlags !== undefined\n ? parseAdapterFlags(adapter.parseFlags, flags)\n : flags,\n labels: Object.freeze({ ...(def.labels ?? {}) }),\n attempts: def.attempts ?? 1,\n earlyExit: def.earlyExit ?? false,\n evals: Array.isArray(def.evals) ? Object.freeze([...def.evals]) : (def.evals ?? \"*\"),\n sandboxReuse: def.sandboxReuse === true,\n ...(judgeRuntime === undefined ? {} : { judgeRuntime }),\n ...(sharedState === undefined ? {} : { sharedState }),\n ...(sandboxCache === undefined ? {} : { sandboxCache }),\n plugins: normalizePlugins(def.plugins ?? [], \"defineExperiment plugins\", \"experiment\"),\n });\n}\nfunction normalizeSandboxCache(value: unknown, factory: \"defineConfig\" | \"defineExperiment\"): SandboxCacheConfig | undefined {\n if (value === undefined)\n return undefined;\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${factory} sandboxCache must be an object with optional setup \"use\" or \"bypass\".`);\n }\n const keys = Object.keys(value);\n const setup = Reflect.get(value, \"setup\");\n if (keys.some((key) => key !== \"setup\") ||\n (setup !== undefined && setup !== \"use\" && setup !== \"bypass\")) {\n throw new TypeError(`${factory} sandboxCache must be an object with optional setup \"use\" or \"bypass\".`);\n }\n return Object.freeze(setup === undefined ? {} : { setup });\n}\nconst SharedStateKeyPattern = /^[a-z0-9][a-z0-9._/-]{0,127}$/u;\nfunction normalizeSharedState(value: unknown): SharedStateConfig | undefined {\n if (value === undefined)\n return undefined;\n const candidate = value as {\n key?: unknown;\n };\n if (typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value) ||\n !Object.hasOwn(value, \"key\") ||\n Object.keys(value).length !== 1 ||\n typeof candidate.key !== \"string\" ||\n !SharedStateKeyPattern.test(candidate.key)) {\n throw new TypeError(`experiment.sharedState must be exactly { key }, where key is a stable, non-secret string matching [a-z0-9][a-z0-9._/-]{0,127}.`);\n }\n return Object.freeze({ key: candidate.key });\n}\nfunction normalizeEvalFields<const Sandbox extends SandboxLayer | undefined>(def: EvalInput<Sandbox> | ScoreEvalInput<Sandbox>): EvalDefinitionFields<Sandbox> {\n const judge = def.judge === undefined\n ? undefined\n : normalizeDefinitionJudge(def.judge, \"defineEval() judge\");\n return {\n ...(def.description !== undefined ? { description: def.description } : {}),\n tags: Object.freeze([...(def.tags ?? [])]),\n ...(def.sandbox !== undefined ? { sandbox: def.sandbox } : {}),\n plugins: normalizePlugins(def.plugins ?? [], \"defineEval plugins\", \"eval\"),\n ...(judge !== undefined ? { judge } : {}),\n reporters: Object.freeze([...(def.reporters ?? [])]),\n ...(def.timeoutMs !== undefined ? { timeoutMs: def.timeoutMs } : {}),\n metadata: decodeJsonRecord(def.metadata ?? {}, \"Eval metadata\"),\n diff: Object.freeze({\n include: Object.freeze([...(def.diff?.include ?? [])]),\n ignore: Object.freeze([...(def.diff?.ignore ?? [])]),\n }),\n };\n}\n// @concord-code ne-surface-normalize-plugins\n// @concord-implements docs/feature/plugins/library.md\nfunction normalizePlugins<Owner extends PluginOwner>(value: readonly PluginInstance<Owner>[], label: string, owner: Owner): readonly PluginInstance<Owner>[] {\n if (!Array.isArray(value))\n throw new TypeError(`${label} must be an array.`);\n return Object.freeze(value.map((plugin, index) => {\n if (!isPluginInstance(plugin))\n throw new TypeError(`${label}[${index}] must be created by definePlugin().`);\n if (pluginInstanceDataOf(plugin)[owner] === undefined) {\n throw new TypeError(`${label}[${index}] does not support ${owner} attachment.`);\n }\n return plugin;\n }));\n}\nfunction isJsonValue(value: unknown): value is JsonValue {\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\")\n return true;\n if (typeof value === \"number\")\n return Number.isFinite(value);\n if (Array.isArray(value))\n return value.every(isJsonValue);\n if (typeof value !== \"object\")\n return false;\n return Object.values(value).every(isJsonValue);\n}\nconst JsonValueSchema = Schema.declare<JsonValue>(isJsonValue);\nconst JsonRecordSchema = Schema.Record(Schema.String, JsonValueSchema);\nfunction deepFreezeJson(value: JsonValue): JsonValue {\n if (Array.isArray(value)) {\n const items: JsonValue[] = value.map(deepFreezeJson);\n Object.freeze(items);\n return items;\n }\n if (value !== null && typeof value === \"object\") {\n const record: globalThis.Record<string, JsonValue> = Object.fromEntries(Object.entries(value).map(([key, child]) => [key, deepFreezeJson(child)]));\n Object.freeze(record);\n return record;\n }\n return value;\n}\nfunction decodeJsonRecord(value: unknown, label: string): Readonly<globalThis.Record<string, JsonValue>> {\n const decoded = Schema.decodeUnknownResult(JsonRecordSchema, { errors: \"all\" })(value);\n if (Result.isFailure(decoded))\n throw new TypeError(`${label} must be JSON-compatible: ${String(decoded.failure)}`);\n return Object.freeze(Object.fromEntries(Object.entries(decoded.success).map(([key, child]) => [key, deepFreezeJson(child)])));\n}\n/**\n * `SandboxLayer` 的品牌只由 `niceeval/sandbox` 工厂写入。动态 TSX/JS 调用绕过静态类型时,\n * 不接受看似相同的裸对象,以免在 linker 阶段才得到难以定位的错误。\n */\nfunction assertSandboxLayer(value: unknown, factory: string): void {\n if (value !== undefined && !isSandboxLayer(value)) {\n throw new TypeError(`${factory} sandbox must be a SandboxLayer created by a niceeval/sandbox factory (for example dockerSandbox(), dockerComposeSandbox(), e2bSandbox(), or vercelSandbox()).`);\n }\n}\n/** 项目级配置。 */\nexport function defineConfig(config: Config): Config {\n const sandboxCache = normalizeSandboxCache(config.sandboxCache, \"defineConfig\");\n const judgeRuntime = config.judgeRuntime === undefined\n ? undefined\n : normalizeDefinitionJudge(config.judgeRuntime, \"defineConfig() judgeRuntime\");\n if (judgeRuntime !== undefined && !isJudgeProvider(judgeRuntime)) {\n throw new TypeError(\"defineConfig() judgeRuntime must be a Judge Provider created by niceeval/judge\");\n }\n return Object.freeze({\n ...config,\n ...(sandboxCache === undefined ? {} : { sandboxCache }),\n ...(judgeRuntime === undefined ? {} : { judgeRuntime }),\n });\n}\n/**\n * 自定义沙箱 provider:`create` 直接返回一个实现 `Sandbox` 接口的实例,不需要 niceeval 内置支持\n * 这个 provider 名字。用于接入 docker/vercel/e2b 之外的运行环境(自建 VM、Modal、Fly 等)。\n */\nexport function defineSandbox(def: CustomProviderSandboxOptions): SandboxLayer<\"template-bearing\"> {\n return customProviderSandbox(def);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["define.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file\n// @concord-implements docs/feature/plugins/library.md\nimport type { Adapter } from \"./adapter.ts\";\nimport { assertRequiredModelRoles, normalizeModelRoles } from \"./model-roles.ts\";\nimport { parseAdapterFlags } from \"./adapter-flags.ts\";\nimport { decodeExperimentFlags } from \"./experiment/flags.ts\";\n// 定义入口:把用户对象规格化成核心认得的形状。路径即身份 —— 这里禁止手写 id,\n// 由发现阶段从文件路径推导(见 runner/discover.ts)。\nimport type { DirectAgent, DirectAgentDef, Config, EvalInput, EvalGroupDefinition, EvalGroupInput, EvalDefinition, EvalDefinitionFields, ExperimentDefinition, ExperimentInput, SharedStateConfig, SandboxCacheConfig, SandboxAgent, SandboxAgentDef, ScoreEvalInput, ScoreTestContext, TestContext, JsonValue, } from \"./types.ts\";\nimport { normalizeJudgeSelection } from \"./runner/judge-config.ts\";\nimport { isJudgeProvider } from \"./judge/provider.ts\";\nimport { MigrationRequiredError, captureMigrationSource } from \"./error-assistance/index.ts\";\nimport { brandEvalDefinition, brandEvalGroupDefinition, brandExperimentDefinition, isEvalDefinition, } from \"./types.ts\";\nimport { customProviderSandbox, isSandboxLayer, sandboxLayerStateOf, type CustomProviderSandboxOptions, type SandboxLayer, } from \"./sandbox/layer.ts\";\nimport { Result, Schema } from \"effect\";\nimport { assertEvidenceCoverage } from \"./assertions/coverage.ts\";\nimport { effectAgentCallback, attachAgentEffects, authorCallbackEffect, type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition, } from \"./agents/agent-effects.ts\";\nimport { isPluginInstance, assertPluginOwner, type PluginInstance, type PluginOwner } from \"./plugin/contracts.ts\";\n/** Recognize only the retired flat configuration, without evaluating getters. */\nfunction normalizeDefinitionJudge(value: unknown, label: string) {\n if (!isJudgeProvider(value) && typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n const prototype = Object.getPrototypeOf(value);\n const legacyKeys = [\"model\", \"baseUrl\", \"apiKeyEnv\", \"timeoutMs\", \"maxOutputTokens\"];\n if ((prototype === Object.prototype || prototype === null) && Reflect.ownKeys(value).every((key) => {\n const descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n return typeof key === \"string\" && legacyKeys.includes(key) && descriptor !== undefined && \"value\" in descriptor;\n })) {\n throw new MigrationRequiredError({ occurrences: [{\n guideId: \"judge-provider\",\n subject: label.replace(\"() \", \".\"),\n source: captureMigrationSource(),\n }] });\n }\n }\n return normalizeJudgeSelection(value, label);\n}\n// 发现期必须区分 defineScoreEval 的真正产物与运行时手写 `{ evaluationKind: \"score\" }` 的裸对象。\n// WeakSet 是模块私有来源证明;Definition 本身另有 types.ts 的私有 symbol 品牌供类型层使用。\nconst definedScoreEvals = new WeakSet<object>();\n/** Define a closed set of real Eval definitions sharing one physical Sandbox. */\nexport function defineEvalGroup<const Sandbox extends SandboxLayer | undefined>(input: EvalGroupInput<Sandbox>): EvalGroupDefinition {\n if (!Array.isArray(input.evals) || input.evals.length === 0) {\n throw new TypeError(\"defineEvalGroup evals must be a non-empty array of defineEval()/defineScoreEval() definitions.\");\n }\n input.evals.forEach((member, index) => {\n if (!isEvalDefinition(member)) {\n throw new TypeError(`defineEvalGroup evals[${index}] must be the object returned by defineEval() or defineScoreEval().`);\n }\n });\n assertSandboxLayer(input.sandbox, \"defineEvalGroup\");\n if (input.onUnavailable !== \"stop-group\" && input.onUnavailable !== \"replace-sandbox\") {\n throw new TypeError(\"defineEvalGroup onUnavailable must be \\\"stop-group\\\" or \\\"replace-sandbox\\\".\");\n }\n const [first, ...rest] = input.evals;\n return brandEvalGroupDefinition({\n evals: Object.freeze([first, ...rest]),\n onUnavailable: input.onUnavailable,\n ...(input.sandbox ? { sandbox: input.sandbox } : {}),\n ...(input.plugins === undefined ? {} : { plugins: normalizePlugins(input.plugins, \"defineEvalGroup plugins\", \"group\") }),\n });\n}\n/** @internal 仅供 discoverEvals 验证 score 题型来源。 */\nexport function isDefinedScoreEval(value: object): boolean {\n return definedScoreEvals.has(value);\n}\nfunction assertAuthorLifecycleNames(def: object, owner: string): void {\n for (const [previous, current] of [[\"setup\", \"before\"], [\"teardown\", \"after\"]] as const) {\n if (Object.hasOwn(def, previous))\n throw new TypeError(`${owner}.${previous} is no longer supported; use ${current}.`);\n }\n}\n/** 沙箱型 agent:在沙箱里 spawn 一个 coding agent 的 CLI,跑完读回 transcript。 */\nexport function defineSandboxAgent(def: SandboxAgentDef): SandboxAgent {\n assertAuthorLifecycleNames(def, \"Agent\");\n if (!def.name)\n throw new Error(`defineSandboxAgent requires name.`);\n assertEvidenceCoverage(def.evidenceCoverage, \"defineSandboxAgent\");\n if (def.ensure === undefined)\n throw new Error(`defineSandboxAgent requires an ensure declaration.`);\n const ensure = Array.isArray(def.ensure) ? def.ensure : [def.ensure];\n if (ensure.length === 0)\n throw new Error(`defineSandboxAgent requires an ensure declaration.`);\n if (def.sandbox !== undefined) {\n if (!isSandboxLayer(def.sandbox)) {\n throw new TypeError(\"defineSandboxAgent sandbox must be a SandboxLayer created by sandboxLayer().\");\n }\n if (sandboxLayerStateOf(def.sandbox).kind !== \"command-only\") {\n throw new TypeError(\"defineSandboxAgent sandbox must be command-only; an Agent cannot provide a Sandbox template.\");\n }\n }\n const agent: SandboxAgent = {\n name: def.name,\n kind: \"sandbox\",\n defineEval,\n defineScoreEval,\n evidenceCoverage: def.evidenceCoverage,\n ...(def.sandbox === undefined ? {} : { sandbox: def.sandbox }),\n ensure,\n installers: def.installers ?? [],\n before: def.before,\n tracing: def.tracing,\n spanMapper: def.spanMapper,\n send: def.send,\n classifySendFailure: def.classifySendFailure,\n after: def.after,\n };\n return attachAgentEffects(agent, {\n send: (input, context) => authorCallbackEffect(() => def.send(input, context)),\n before: def.before === undefined ? undefined : (sandbox, context) => authorCallbackEffect(() => def.before!(sandbox, context)),\n after: def.after === undefined ? undefined : (sandbox, context) => authorCallbackEffect(() => def.after!(sandbox, { ...context, sandbox })),\n });\n}\n/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */\nexport function makeSandboxAgent(def: Omit<SandboxAgentDef, \"send\" | \"before\" | \"after\"> & InternalSandboxAgentDefinition): SandboxAgent {\n const { send, before, after, ...publicDefinition } = def;\n const agent = defineSandboxAgent({\n ...publicDefinition,\n send: effectAgentCallback(send, (_input, context) => context.signal),\n ...(before === undefined ? {} : {\n before: effectAgentCallback(before, (_sandbox, context) => context.signal),\n }),\n ...(after === undefined ? {} : {\n after: effectAgentCallback(after, (_sandbox, context) => context.signal),\n }),\n });\n return attachAgentEffects(agent, {\n send,\n before,\n after,\n });\n}\n/** Direct Agent:在 send 里直接驱动函数、SDK 或服务端点。 */\nexport function defineAgent(def: DirectAgentDef): DirectAgent {\n assertAuthorLifecycleNames(def, \"Agent\");\n if (!def.name)\n throw new Error(`defineAgent requires name.`);\n assertEvidenceCoverage(def.evidenceCoverage, \"defineAgent\");\n const agent: DirectAgent = {\n name: def.name,\n kind: \"direct\",\n defineEval,\n defineScoreEval,\n evidenceCoverage: def.evidenceCoverage,\n before: def.before,\n tracing: def.tracing,\n spanMapper: def.spanMapper,\n send: def.send,\n classifySendFailure: def.classifySendFailure,\n after: def.after,\n };\n return attachAgentEffects(agent, {\n send: (input, context) => authorCallbackEffect(() => def.send(input, context)),\n before: def.before === undefined ? undefined : (_sandbox, context) => authorCallbackEffect(() => def.before!(context)),\n after: def.after === undefined ? undefined : (_sandbox, context) => authorCallbackEffect(() => def.after!(context)),\n });\n}\n/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */\nexport function makeDirectAgent(def: Omit<DirectAgentDef, \"send\" | \"before\" | \"after\"> & InternalDirectAgentDefinition): DirectAgent {\n const { send, before, after, ...publicDefinition } = def;\n const agent = defineAgent({\n ...publicDefinition,\n send: effectAgentCallback(send, (_input, context) => context.signal),\n ...(before === undefined ? {} : {\n before: effectAgentCallback(before, (context) => context.signal),\n }),\n ...(after === undefined ? {} : {\n after: effectAgentCallback(after, (context) => context.signal),\n }),\n });\n return attachAgentEffects(agent, {\n send,\n before: before === undefined ? undefined : (_sandbox, context) => before(context),\n after: after === undefined ? undefined : (_sandbox, context) => after(context),\n });\n}\n/** 会话型 eval(通过制:一个 eval 折叠成一分)。禁止提供 id —— 从路径推导。 */\nexport function defineEval<const Sandbox extends SandboxLayer | undefined = undefined>(def: EvalInput<Sandbox>): EvalDefinition<\"pass\", TestContext, Sandbox> {\n return defineEvalForContext(\"pass\", def);\n}\n/**\n * 计分制 eval:Fact verdict uses 与 Fact score uses 可以读取同一份证据;正常返回由 Runner\n * 自动关闭计分收集器。字段与 `defineEval` 同形,禁止提供 id,由发现期推导。\n */\nexport function defineScoreEval<const Sandbox extends SandboxLayer | undefined = undefined>(def: ScoreEvalInput<Sandbox>): EvalDefinition<\"score\", ScoreTestContext, Sandbox> {\n return defineEvalForContext(\"score\", def);\n}\ntype EvalFactoryInput<Sandbox extends SandboxLayer | undefined> = Omit<EvalInput<Sandbox> | ScoreEvalInput<Sandbox>, \"test\"> & {\n readonly test: (...args: never[]) => ReturnType<EvalDefinition<\"pass\", unknown, Sandbox>[\"test\"]>;\n};\n/** @internal Shared normalization and provenance path for root and Adapter-bound Eval factories. */\n// @concord-code\n// @concord-implements docs/feature/compile-time-contracts/use-case/three-levels.md\nexport function defineEvalForContext<Kind extends \"pass\" | \"score\", Context, const Sandbox extends SandboxLayer | undefined = undefined>(kind: Kind, def: EvalFactoryInput<Sandbox>, internalFields: Readonly<Record<PropertyKey, unknown>> = {}): EvalDefinition<Kind, Context, Sandbox> {\n const factory = kind === \"pass\" ? \"defineEval\" : \"defineScoreEval\";\n if (Object.hasOwn(def, \"id\")) {\n throw new Error(`${factory} does not accept id; ids are derived from file paths.`);\n }\n if (Object.hasOwn(def, \"evaluationKind\")) {\n throw new Error(`${factory} does not accept evaluationKind; it is always set to ${JSON.stringify(kind)}.`);\n }\n if (Object.hasOwn(def, \"configHash\")) {\n throw new Error(`${factory} does not accept configHash; configHash is computed during run planning.`);\n }\n if (typeof def.test !== \"function\") {\n throw new Error(`${factory} requires an async test(t) function.`);\n }\n assertSandboxLayer(def.sandbox, factory);\n const result = brandEvalDefinition({\n ...normalizeEvalFields(def),\n ...internalFields,\n evaluationKind: kind,\n test: def.test,\n });\n if (kind === \"score\")\n definedScoreEvals.add(result);\n return result as EvalDefinition<Kind, Context, Sandbox>;\n}\n/** 实验:可签入的运行配置(怎么跑这批 eval)。 */\nexport function defineExperiment<const A extends Adapter>(def: ExperimentInput<A>): ExperimentDefinition<A>;\n// @concord-code\n// @concord-implements docs/feature/compile-time-contracts/use-case/three-levels.md\nexport function defineExperiment(def: Omit<ExperimentInput, \"flags\"> & {\n readonly flags?: unknown;\n}): ExperimentDefinition {\n rejectRemovedField(def, \"judgeRuntime\", \"Use judge.\");\n rejectRemovedField(def, \"classifyFailure\", \"Use built-in failure classification or ExperimentFatalError / EvalFatalError.\");\n rejectRemovedField(def, \"agent\", \"Use adapter to select the tested Agent or Adapter.\");\n if (Object.hasOwn(def, \"id\")) {\n throw new Error(`defineExperiment does not accept id; ids are derived from file paths.`);\n }\n if (def.adapter === undefined) {\n throw new Error(`defineExperiment requires adapter.`);\n }\n const adapter = def.adapter;\n if (adapter.kind !== \"custom\" && def.models !== undefined) {\n throw new TypeError(\"Experiment models is only supported by custom Adapters.\");\n }\n const models = adapter.kind === \"custom\" ? normalizeModelRoles(def) : undefined;\n if (adapter.kind === \"custom\")\n assertRequiredModelRoles(adapter.requiredModelRoles, models, `Adapter \"${adapter.name}\"`);\n const judge = def.judge === undefined\n ? undefined\n : normalizeDefinitionJudge(def.judge, \"defineExperiment() judge\");\n assertSandboxLayer(def.sandbox, \"defineExperiment\");\n if (adapter.kind === \"custom\") {\n if (def.sandbox !== undefined || def.sandboxReuse === true || def.sandboxCache !== undefined) {\n throw new Error(`Custom Adapter experiments do not support sandbox, sandboxReuse, or sandboxCache.`);\n }\n if (def.budget !== undefined) {\n throw new Error(`Custom Adapter experiments do not support budget because Adapter usage is not collected.`);\n }\n }\n assertAuthorLifecycleNames(def, \"Experiment\");\n // before 是实验级生命周期钩子(整场一次,宿主机侧,见 runner/types.ts 的 ExperimentDef.before);\n // 传成非函数(如误把 sandbox 钩子对象塞进来)在解析时就报,不等到调度才炸。\n if (def.before !== undefined && typeof def.before !== \"function\") {\n throw new Error(`experiment.before must be a function ((ctx) => void); use experiment.after for cleanup; to prepare the in-sandbox environment per experiment, chain .before() hooks on the sandbox spec instead.`);\n }\n // teardown 与 setup 是同一个 Experiment lifecycle 边界。非函数值绝不能\n // 伪装成已声明的 cleanup,否则 explicit sharedState recovery 可能在没有\n // 执行补偿的情况下释放 immutable owner generation。\n if (def.after !== undefined && typeof def.after !== \"function\") {\n throw new Error(`Experiment after must be a function ((ctx) => void); use a function-valued paired lifecycle hook so normal cleanup and explicit sharedState recovery can both execute it.`);\n }\n // labels 是报告归类坐标(进 ExperimentRunInfo.labels,不透传 ctx/t):值域 string | number,\n // 解析时即校验,布尔 / 对象 / NaN 直接报错,不等到落盘或报告分组才炸。\n if (def.labels !== undefined) {\n for (const [key, value] of Object.entries(def.labels)) {\n const ok = typeof value === \"string\" || (typeof value === \"number\" && Number.isFinite(value));\n if (!ok)\n throw new Error(`experiment.labels.${key} must be a string or a finite number; labels are report-side grouping coordinates persisted verbatim into result runs.`);\n }\n }\n const sharedState = normalizeSharedState(def.sharedState);\n const sandboxCache = normalizeSandboxCache(def.sandboxCache, \"defineExperiment\");\n const { id: _derivedId, adapter: _adapter, sharedState: _sharedState, sandboxCache: _sandboxCache, models: _models, ...author } = def;\n const flags = decodeExperimentFlags(def.flags === undefined ? {} : def.flags);\n return brandExperimentDefinition({\n ...author,\n ...(models === undefined ? {} : {\n models,\n model: models.default?.model ?? undefined,\n reasoningEffort: models.default?.reasoningEffort ?? undefined,\n }),\n adapter,\n flags: adapter.kind === \"custom\" && adapter.parseFlags !== undefined\n ? parseAdapterFlags(adapter.parseFlags, flags)\n : flags,\n labels: Object.freeze({ ...(def.labels ?? {}) }),\n attempts: def.attempts ?? 1,\n earlyExit: def.earlyExit ?? false,\n evals: Array.isArray(def.evals) ? Object.freeze([...def.evals]) : (def.evals ?? \"*\"),\n sandboxReuse: def.sandboxReuse === true,\n ...(judge === undefined ? {} : { judge }),\n ...(sharedState === undefined ? {} : { sharedState }),\n ...(sandboxCache === undefined ? {} : { sandboxCache }),\n plugins: normalizePlugins(def.plugins ?? [], \"defineExperiment plugins\", \"experiment\"),\n });\n}\nfunction normalizeSandboxCache(value: unknown, factory: \"defineConfig\" | \"defineExperiment\"): SandboxCacheConfig | undefined {\n if (value === undefined)\n return undefined;\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${factory} sandboxCache must be an object with optional before \"use\" or \"bypass\".`);\n }\n if (Object.hasOwn(value, \"setup\"))\n throw new TypeError(`${factory} sandboxCache.setup is no longer supported. Use sandboxCache.before.`);\n const keys = Object.keys(value);\n const before = Reflect.get(value, \"before\");\n if (keys.some((key) => key !== \"before\") ||\n (before !== undefined && before !== \"use\" && before !== \"bypass\")) {\n throw new TypeError(`${factory} sandboxCache must be an object with optional before \"use\" or \"bypass\".`);\n }\n return Object.freeze(before === undefined ? {} : { before });\n}\nconst SharedStateKeyPattern = /^[a-z0-9][a-z0-9._/-]{0,127}$/u;\nfunction normalizeSharedState(value: unknown): SharedStateConfig | undefined {\n if (value === undefined)\n return undefined;\n const candidate = value as {\n key?: unknown;\n };\n if (typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value) ||\n !Object.hasOwn(value, \"key\") ||\n Object.keys(value).length !== 1 ||\n typeof candidate.key !== \"string\" ||\n !SharedStateKeyPattern.test(candidate.key)) {\n throw new TypeError(`experiment.sharedState must be exactly { key }, where key is a stable, non-secret string matching [a-z0-9][a-z0-9._/-]{0,127}.`);\n }\n return Object.freeze({ key: candidate.key });\n}\nfunction normalizeEvalFields<const Sandbox extends SandboxLayer | undefined>(def: EvalInput<Sandbox> | ScoreEvalInput<Sandbox>): EvalDefinitionFields<Sandbox> {\n rejectRemovedField(def, \"reporters\", \"Use Config.reporters for project-level reporting.\");\n const judge = def.judge === undefined\n ? undefined\n : normalizeDefinitionJudge(def.judge, \"defineEval() judge\");\n return {\n ...(def.description !== undefined ? { description: def.description } : {}),\n tags: Object.freeze([...(def.tags ?? [])]),\n ...(def.sandbox !== undefined ? { sandbox: def.sandbox } : {}),\n plugins: normalizePlugins(def.plugins ?? [], \"defineEval plugins\", \"eval\"),\n ...(judge !== undefined ? { judge } : {}),\n ...(def.timeoutMs !== undefined ? { timeoutMs: def.timeoutMs } : {}),\n metadata: decodeJsonRecord(def.metadata ?? {}, \"Eval metadata\"),\n diff: Object.freeze({\n include: Object.freeze([...(def.diff?.include ?? [])]),\n ignore: Object.freeze([...(def.diff?.ignore ?? [])]),\n }),\n };\n}\n// @concord-code\n// @concord-implements docs/feature/plugins/library.md\nfunction normalizePlugins<Owner extends PluginOwner>(value: readonly PluginInstance<Owner>[], label: string, owner: Owner): readonly PluginInstance<Owner>[] {\n if (!Array.isArray(value))\n throw new TypeError(`${label} must be an array.`);\n return Object.freeze(value.map((plugin, index) => {\n if (!isPluginInstance(plugin))\n throw new TypeError(`${label}[${index}] must be created by definePlugin().`);\n assertPluginOwner(plugin, owner, `${label}[${index}]`);\n return plugin;\n }));\n}\nfunction isJsonValue(value: unknown): value is JsonValue {\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\")\n return true;\n if (typeof value === \"number\")\n return Number.isFinite(value);\n if (Array.isArray(value))\n return value.every(isJsonValue);\n if (typeof value !== \"object\")\n return false;\n return Object.values(value).every(isJsonValue);\n}\nconst JsonValueSchema = Schema.declare<JsonValue>(isJsonValue);\nconst JsonRecordSchema = Schema.Record(Schema.String, JsonValueSchema);\nfunction deepFreezeJson(value: JsonValue): JsonValue {\n if (Array.isArray(value)) {\n const items: JsonValue[] = value.map(deepFreezeJson);\n Object.freeze(items);\n return items;\n }\n if (value !== null && typeof value === \"object\") {\n const record: globalThis.Record<string, JsonValue> = Object.fromEntries(Object.entries(value).map(([key, child]) => [key, deepFreezeJson(child)]));\n Object.freeze(record);\n return record;\n }\n return value;\n}\nfunction decodeJsonRecord(value: unknown, label: string): Readonly<globalThis.Record<string, JsonValue>> {\n const decoded = Schema.decodeUnknownResult(JsonRecordSchema, { errors: \"all\" })(value);\n if (Result.isFailure(decoded))\n throw new TypeError(`${label} must be JSON-compatible: ${String(decoded.failure)}`);\n return Object.freeze(Object.fromEntries(Object.entries(decoded.success).map(([key, child]) => [key, deepFreezeJson(child)])));\n}\n/**\n * `SandboxLayer` 的品牌只由 `niceeval/sandbox` 工厂写入。动态 TSX/JS 调用绕过静态类型时,\n * 不接受看似相同的裸对象,以免在 linker 阶段才得到难以定位的错误。\n */\nfunction assertSandboxLayer(value: unknown, factory: string): void {\n if (value !== undefined && !isSandboxLayer(value)) {\n throw new TypeError(`${factory} sandbox must be a SandboxLayer created by a niceeval/sandbox factory (for example dockerSandbox(), dockerComposeSandbox(), e2bSandbox(), or vercelSandbox()).`);\n }\n}\n/** 项目级配置。 */\nexport function defineConfig(config: Config): Config {\n rejectRemovedField(config, \"judgeRuntime\", \"Use judgeProvider.\");\n rejectRemovedField(config, \"maxSetupPrefixConcurrency\", \"Use maxBeforeCacheConcurrency.\");\n rejectRemovedField(config, \"workspace\", \"Use the project directory as the working directory.\");\n const sandboxCache = normalizeSandboxCache(config.sandboxCache, \"defineConfig\");\n const judgeProvider = config.judgeProvider === undefined\n ? undefined\n : normalizeDefinitionJudge(config.judgeProvider, \"defineConfig() judgeProvider\");\n if (judgeProvider !== undefined && !isJudgeProvider(judgeProvider)) {\n throw new TypeError(\"defineConfig() judgeProvider must be a Judge Provider created by niceeval/judge\");\n }\n return Object.freeze({\n ...config,\n ...(sandboxCache === undefined ? {} : { sandboxCache }),\n ...(judgeProvider === undefined ? {} : { judgeProvider }),\n });\n}\n/**\n * 自定义沙箱 provider:`create` 直接返回一个实现 `Sandbox` 接口的实例,不需要 niceeval 内置支持\n * 这个 provider 名字。用于接入 docker/vercel/e2b 之外的运行环境(自建 VM、Modal、Fly 等)。\n */\nexport function defineSandbox(def: CustomProviderSandboxOptions): SandboxLayer<\"template-bearing\"> {\n return customProviderSandbox(def);\n}\nfunction rejectRemovedField(value: object, field: string, replacement: string): void {\n if (Object.hasOwn(value, field))\n throw new TypeError(`${field} is no longer supported. ${replacement}`);\n}\n"]}
|
package/dist/define.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Adapter } from "./adapter.cjs";
|
|
2
2
|
import type { DirectAgent, DirectAgentDef, Config, EvalInput, EvalGroupDefinition, EvalGroupInput, EvalDefinition, ExperimentDefinition, ExperimentInput, SandboxAgent, SandboxAgentDef, ScoreEvalInput, ScoreTestContext, TestContext } from "./types.cjs";
|
|
3
3
|
import { type CustomProviderSandboxOptions, type SandboxLayer } from "./sandbox/layer.cjs";
|
|
4
|
-
import { type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition } from "./agents/
|
|
4
|
+
import { type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition } from "./agents/agent-effects.cjs";
|
|
5
5
|
/** Define a closed set of real Eval definitions sharing one physical Sandbox. */
|
|
6
6
|
export declare function defineEvalGroup<const Sandbox extends SandboxLayer | undefined>(input: EvalGroupInput<Sandbox>): EvalGroupDefinition;
|
|
7
7
|
/** @internal 仅供 discoverEvals 验证 score 题型来源。 */
|
|
@@ -9,11 +9,11 @@ export declare function isDefinedScoreEval(value: object): boolean;
|
|
|
9
9
|
/** 沙箱型 agent:在沙箱里 spawn 一个 coding agent 的 CLI,跑完读回 transcript。 */
|
|
10
10
|
export declare function defineSandboxAgent(def: SandboxAgentDef): SandboxAgent;
|
|
11
11
|
/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
|
|
12
|
-
export declare function makeSandboxAgent(def: Omit<SandboxAgentDef, "send" | "
|
|
12
|
+
export declare function makeSandboxAgent(def: Omit<SandboxAgentDef, "send" | "before" | "after"> & InternalSandboxAgentDefinition): SandboxAgent;
|
|
13
13
|
/** Direct Agent:在 send 里直接驱动函数、SDK 或服务端点。 */
|
|
14
14
|
export declare function defineAgent(def: DirectAgentDef): DirectAgent;
|
|
15
15
|
/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
|
|
16
|
-
export declare function makeDirectAgent(def: Omit<DirectAgentDef, "send" | "
|
|
16
|
+
export declare function makeDirectAgent(def: Omit<DirectAgentDef, "send" | "before" | "after"> & InternalDirectAgentDefinition): DirectAgent;
|
|
17
17
|
/** 会话型 eval(通过制:一个 eval 折叠成一分)。禁止提供 id —— 从路径推导。 */
|
|
18
18
|
export declare function defineEval<const Sandbox extends SandboxLayer | undefined = undefined>(def: EvalInput<Sandbox>): EvalDefinition<"pass", TestContext, Sandbox>;
|
|
19
19
|
/**
|
package/dist/define.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Adapter } from "./adapter.mjs";
|
|
2
2
|
import type { DirectAgent, DirectAgentDef, Config, EvalInput, EvalGroupDefinition, EvalGroupInput, EvalDefinition, ExperimentDefinition, ExperimentInput, SandboxAgent, SandboxAgentDef, ScoreEvalInput, ScoreTestContext, TestContext } from "./types.mjs";
|
|
3
3
|
import { type CustomProviderSandboxOptions, type SandboxLayer } from "./sandbox/layer.mjs";
|
|
4
|
-
import { type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition } from "./agents/
|
|
4
|
+
import { type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition } from "./agents/agent-effects.mjs";
|
|
5
5
|
/** Define a closed set of real Eval definitions sharing one physical Sandbox. */
|
|
6
6
|
export declare function defineEvalGroup<const Sandbox extends SandboxLayer | undefined>(input: EvalGroupInput<Sandbox>): EvalGroupDefinition;
|
|
7
7
|
/** @internal 仅供 discoverEvals 验证 score 题型来源。 */
|
|
@@ -9,11 +9,11 @@ export declare function isDefinedScoreEval(value: object): boolean;
|
|
|
9
9
|
/** 沙箱型 agent:在沙箱里 spawn 一个 coding agent 的 CLI,跑完读回 transcript。 */
|
|
10
10
|
export declare function defineSandboxAgent(def: SandboxAgentDef): SandboxAgent;
|
|
11
11
|
/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
|
|
12
|
-
export declare function makeSandboxAgent(def: Omit<SandboxAgentDef, "send" | "
|
|
12
|
+
export declare function makeSandboxAgent(def: Omit<SandboxAgentDef, "send" | "before" | "after"> & InternalSandboxAgentDefinition): SandboxAgent;
|
|
13
13
|
/** Direct Agent:在 send 里直接驱动函数、SDK 或服务端点。 */
|
|
14
14
|
export declare function defineAgent(def: DirectAgentDef): DirectAgent;
|
|
15
15
|
/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
|
|
16
|
-
export declare function makeDirectAgent(def: Omit<DirectAgentDef, "send" | "
|
|
16
|
+
export declare function makeDirectAgent(def: Omit<DirectAgentDef, "send" | "before" | "after"> & InternalDirectAgentDefinition): DirectAgent;
|
|
17
17
|
/** 会话型 eval(通过制:一个 eval 折叠成一分)。禁止提供 id —— 从路径推导。 */
|
|
18
18
|
export declare function defineEval<const Sandbox extends SandboxLayer | undefined = undefined>(def: EvalInput<Sandbox>): EvalDefinition<"pass", TestContext, Sandbox>;
|
|
19
19
|
/**
|
package/dist/define.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Adapter } from "./adapter.js";
|
|
2
2
|
import type { DirectAgent, DirectAgentDef, Config, EvalInput, EvalGroupDefinition, EvalGroupInput, EvalDefinition, ExperimentDefinition, ExperimentInput, SandboxAgent, SandboxAgentDef, ScoreEvalInput, ScoreTestContext, TestContext } from "./types.js";
|
|
3
3
|
import { type CustomProviderSandboxOptions, type SandboxLayer } from "./sandbox/layer.js";
|
|
4
|
-
import { type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition } from "./agents/
|
|
4
|
+
import { type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition } from "./agents/agent-effects.js";
|
|
5
5
|
/** Define a closed set of real Eval definitions sharing one physical Sandbox. */
|
|
6
6
|
export declare function defineEvalGroup<const Sandbox extends SandboxLayer | undefined>(input: EvalGroupInput<Sandbox>): EvalGroupDefinition;
|
|
7
7
|
/** @internal 仅供 discoverEvals 验证 score 题型来源。 */
|
|
@@ -9,11 +9,11 @@ export declare function isDefinedScoreEval(value: object): boolean;
|
|
|
9
9
|
/** 沙箱型 agent:在沙箱里 spawn 一个 coding agent 的 CLI,跑完读回 transcript。 */
|
|
10
10
|
export declare function defineSandboxAgent(def: SandboxAgentDef): SandboxAgent;
|
|
11
11
|
/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
|
|
12
|
-
export declare function makeSandboxAgent(def: Omit<SandboxAgentDef, "send" | "
|
|
12
|
+
export declare function makeSandboxAgent(def: Omit<SandboxAgentDef, "send" | "before" | "after"> & InternalSandboxAgentDefinition): SandboxAgent;
|
|
13
13
|
/** Direct Agent:在 send 里直接驱动函数、SDK 或服务端点。 */
|
|
14
14
|
export declare function defineAgent(def: DirectAgentDef): DirectAgent;
|
|
15
15
|
/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
|
|
16
|
-
export declare function makeDirectAgent(def: Omit<DirectAgentDef, "send" | "
|
|
16
|
+
export declare function makeDirectAgent(def: Omit<DirectAgentDef, "send" | "before" | "after"> & InternalDirectAgentDefinition): DirectAgent;
|
|
17
17
|
/** 会话型 eval(通过制:一个 eval 折叠成一分)。禁止提供 id —— 从路径推导。 */
|
|
18
18
|
export declare function defineEval<const Sandbox extends SandboxLayer | undefined = undefined>(def: EvalInput<Sandbox>): EvalDefinition<"pass", TestContext, Sandbox>;
|
|
19
19
|
/**
|