niceeval 0.18.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INDEX.md +4 -2
- package/dist/adapter-usage.cjs.map +1 -1
- package/dist/adapter-usage.d.cts +1 -1
- package/dist/adapter-usage.d.mts +1 -1
- package/dist/adapter-usage.d.ts +1 -1
- package/dist/adapter.cjs +8 -7
- package/dist/adapter.cjs.map +1 -1
- package/dist/adapter.d.cts +21 -21
- package/dist/adapter.d.mts +21 -21
- package/dist/adapter.d.ts +21 -21
- package/dist/agents/{effect-runtime.cjs → agent-effects.cjs} +12 -18
- package/dist/agents/agent-effects.cjs.map +1 -0
- package/dist/agents/agent-effects.d.cts +23 -0
- package/dist/agents/agent-effects.d.mts +23 -0
- package/dist/agents/agent-effects.d.ts +23 -0
- package/dist/agents/agent-effects.js +16 -0
- package/dist/agents/agent-effects.js.map +1 -0
- package/dist/agents/ai-sdk.cjs +1 -1
- package/dist/agents/ai-sdk.cjs.map +1 -1
- package/dist/agents/bub.cjs +31 -18
- package/dist/agents/bub.cjs.map +1 -1
- package/dist/agents/bub.d.cts +9 -12
- package/dist/agents/bub.d.mts +9 -12
- package/dist/agents/bub.d.ts +9 -12
- package/dist/agents/claude-code-native.cjs +2 -2
- package/dist/agents/claude-code-native.cjs.map +1 -1
- package/dist/agents/claude-code.cjs +17 -11
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/claude-code.d.cts +11 -11
- package/dist/agents/claude-code.d.mts +11 -11
- package/dist/agents/claude-code.d.ts +11 -11
- package/dist/agents/codex-app-server.cjs +2 -2
- package/dist/agents/codex-app-server.cjs.map +1 -1
- package/dist/agents/codex.cjs +18 -12
- package/dist/agents/codex.cjs.map +1 -1
- package/dist/agents/codex.d.cts +12 -12
- package/dist/agents/codex.d.mts +12 -12
- package/dist/agents/codex.d.ts +12 -12
- package/dist/agents/deepseek-harness.cjs +2 -2
- package/dist/agents/deepseek-harness.cjs.map +1 -1
- package/dist/agents/hermes.cjs +3 -3
- package/dist/agents/hermes.cjs.map +1 -1
- package/dist/agents/index.cjs +3 -3
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +3 -3
- package/dist/agents/index.d.mts +3 -3
- package/dist/agents/index.d.ts +3 -3
- package/dist/agents/index.js +2 -2
- package/dist/agents/index.mjs +2 -2
- package/dist/agents/mcp.cjs.map +1 -1
- package/dist/agents/mcp.d.cts +2 -2
- package/dist/agents/mcp.d.mts +2 -2
- package/dist/agents/mcp.d.ts +2 -2
- package/dist/agents/omp.cjs +2 -2
- package/dist/agents/omp.cjs.map +1 -1
- package/dist/agents/openai-compat.cjs +2 -2
- package/dist/agents/openai-compat.cjs.map +1 -1
- package/dist/agents/openclaw.cjs +3 -3
- package/dist/agents/openclaw.cjs.map +1 -1
- package/dist/agents/opencode.cjs +16 -4
- package/dist/agents/opencode.cjs.map +1 -1
- package/dist/agents/plugin-extensions.cjs +71 -0
- package/dist/agents/plugin-extensions.cjs.map +1 -0
- package/dist/agents/plugin-extensions.d.cts +26 -0
- package/dist/agents/plugin-extensions.d.mts +26 -0
- package/dist/agents/plugin-extensions.d.ts +26 -0
- package/dist/agents/plugin-extensions.js +8 -0
- package/dist/agents/plugin-extensions.js.map +1 -0
- package/dist/agents/post-setup.cjs +14 -3
- package/dist/agents/post-setup.cjs.map +1 -1
- package/dist/agents/post-setup.d.cts +4 -2
- package/dist/agents/post-setup.d.mts +4 -2
- package/dist/agents/post-setup.d.ts +4 -2
- package/dist/agents/post-setup.js +8 -6
- package/dist/agents/sdk-streams.cjs +3 -3
- package/dist/agents/sdk-streams.cjs.map +1 -1
- package/dist/agents/{session-slot.cjs → session-key.cjs} +4 -4
- package/dist/agents/session-key.cjs.map +1 -0
- package/dist/agents/session-key.d.cts +12 -0
- package/dist/agents/session-key.d.mts +12 -0
- package/dist/agents/session-key.d.ts +12 -0
- package/dist/agents/session-key.js +6 -0
- package/dist/agents/session-key.js.map +1 -0
- package/dist/agents/shared.cjs +2 -2
- package/dist/agents/shared.cjs.map +1 -1
- package/dist/agents/shared.d.cts +4 -4
- package/dist/agents/shared.d.mts +4 -4
- package/dist/agents/shared.d.ts +4 -4
- package/dist/agents/skills.cjs.map +1 -1
- package/dist/agents/skills.d.cts +3 -3
- package/dist/agents/skills.d.mts +3 -3
- package/dist/agents/skills.d.ts +3 -3
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.d.cts +55 -54
- package/dist/agents/types.d.mts +55 -54
- package/dist/agents/types.d.ts +55 -54
- package/dist/agents/ui-message-stream.cjs +4 -4
- package/dist/agents/ui-message-stream.cjs.map +1 -1
- package/dist/agents/unrecognized-events.cjs +32 -0
- package/dist/agents/unrecognized-events.cjs.map +1 -0
- package/dist/agents/unrecognized-events.d.cts +8 -0
- package/dist/agents/unrecognized-events.d.mts +8 -0
- package/dist/agents/unrecognized-events.d.ts +8 -0
- package/dist/agents/unrecognized-events.js +6 -0
- package/dist/agents/unrecognized-events.js.map +1 -0
- package/dist/assertions/api.cjs.map +1 -1
- package/dist/assertions/api.d.cts +3 -0
- package/dist/assertions/api.d.mts +3 -0
- package/dist/assertions/api.d.ts +3 -0
- package/dist/assertions/collection.cjs +1 -1
- package/dist/assertions/collection.cjs.map +1 -1
- package/dist/assertions/judge.cjs +1 -1
- package/dist/assertions/judge.cjs.map +1 -1
- package/dist/assertions/match.cjs +52 -21
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +16 -5
- package/dist/assertions/match.d.mts +16 -5
- package/dist/assertions/match.d.ts +16 -5
- package/dist/assertions/match.js +96 -94
- package/dist/assertions/measurements.cjs +22 -6
- package/dist/assertions/measurements.cjs.map +1 -1
- package/dist/assertions/measurements.d.cts +8 -1
- package/dist/assertions/measurements.d.mts +8 -1
- package/dist/assertions/measurements.d.ts +8 -1
- package/dist/assertions/numeric.cjs +2 -0
- package/dist/assertions/numeric.cjs.map +1 -1
- package/dist/assertions/numeric.d.cts +1 -1
- package/dist/assertions/numeric.d.mts +1 -1
- package/dist/assertions/numeric.d.ts +1 -1
- package/dist/assertions/quantity.cjs +42 -0
- package/dist/assertions/quantity.cjs.map +1 -0
- package/dist/assertions/quantity.d.cts +18 -0
- package/dist/assertions/quantity.d.mts +18 -0
- package/dist/assertions/quantity.d.ts +18 -0
- package/dist/assertions/quantity.js +22 -0
- package/dist/assertions/quantity.js.map +1 -0
- package/dist/assertions/record/attachment.cjs +2 -0
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/codec.cjs +5 -1
- package/dist/assertions/record/codec.cjs.map +1 -1
- package/dist/assertions/record/model.cjs.map +1 -1
- package/dist/assertions/record/model.d.cts +3 -1
- package/dist/assertions/record/model.d.mts +3 -1
- package/dist/assertions/record/model.d.ts +3 -1
- package/dist/assertions/runtime.cjs +11 -6
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/cli/program.cjs +3 -0
- package/dist/cli/program.cjs.map +1 -1
- package/dist/context/assert-first.cjs +6 -4
- package/dist/context/assert-first.cjs.map +1 -1
- package/dist/context/assert-first.d.cts +9 -3
- package/dist/context/assert-first.d.mts +9 -3
- package/dist/context/assert-first.d.ts +9 -3
- package/dist/context/notes.cjs +47 -0
- package/dist/context/notes.cjs.map +1 -0
- package/dist/context/notes.d.cts +10 -0
- package/dist/context/notes.d.mts +10 -0
- package/dist/context/notes.d.ts +10 -0
- package/dist/context/notes.js +6 -0
- package/dist/context/notes.js.map +1 -0
- package/dist/context/send-failures.cjs +1 -7
- package/dist/context/send-failures.cjs.map +1 -1
- package/dist/context/send-failures.d.cts +2 -3
- package/dist/context/send-failures.d.mts +2 -3
- package/dist/context/send-failures.d.ts +2 -3
- package/dist/context/send-retry.cjs +0 -1
- package/dist/context/send-retry.cjs.map +1 -1
- package/dist/context/send-retry.d.cts +1 -2
- package/dist/context/send-retry.d.mts +1 -2
- package/dist/context/send-retry.d.ts +1 -2
- package/dist/context/session.cjs +10 -17
- package/dist/context/session.cjs.map +1 -1
- package/dist/context/session.d.cts +4 -10
- package/dist/context/session.d.mts +4 -10
- package/dist/context/session.d.ts +4 -10
- package/dist/define.cjs +88 -65
- package/dist/define.cjs.map +1 -1
- package/dist/define.d.cts +3 -3
- package/dist/define.d.mts +3 -3
- package/dist/define.d.ts +3 -3
- package/dist/eval/cli/contribution.cjs +1 -1
- package/dist/eval/cli/contribution.cjs.map +1 -1
- package/dist/eval/host/index.cjs +1 -1
- package/dist/eval/host/index.cjs.map +1 -1
- package/dist/eval/record/evaluation.cjs +1 -1
- package/dist/eval/record/evaluation.cjs.map +1 -1
- package/dist/eval/record/membership-provenance.d.cts +3 -3
- package/dist/eval/record/membership-provenance.d.mts +3 -3
- package/dist/eval/record/membership-provenance.d.ts +3 -3
- package/dist/eval/record/score.cjs +2 -2
- package/dist/eval/record/score.cjs.map +1 -1
- package/dist/eval/record/sealed-assertion.cjs +1 -1
- package/dist/eval/record/sealed-assertion.cjs.map +1 -1
- package/dist/eval/record/verdict.cjs +2 -2
- package/dist/eval/record/verdict.cjs.map +1 -1
- package/dist/expect/index.cjs +10 -1
- package/dist/expect/index.cjs.map +1 -1
- package/dist/expect/index.d.cts +3 -1
- package/dist/expect/index.d.mts +3 -1
- package/dist/expect/index.d.ts +3 -1
- package/dist/expect/index.js +92 -76
- package/dist/expect/index.mjs +92 -76
- package/dist/experiment/host/cli/contribution.cjs +52 -39
- package/dist/experiment/host/cli/contribution.cjs.map +1 -1
- package/dist/experiment/host/cli/contribution.d.cts +18 -4
- package/dist/experiment/host/cli/contribution.d.mts +18 -4
- package/dist/experiment/host/cli/contribution.d.ts +18 -4
- package/dist/experiment/host/cli/contribution.js +2 -2
- package/dist/experiment/host/cli/debug-protocol.cjs +2 -2
- package/dist/experiment/host/cli/debug-protocol.cjs.map +1 -1
- package/dist/experiment/host/cli/debug-protocol.d.cts +2 -2
- package/dist/experiment/host/cli/debug-protocol.d.mts +2 -2
- package/dist/experiment/host/cli/debug-protocol.d.ts +2 -2
- package/dist/experiment/host/cli/output-protocol.cjs +1 -1
- package/dist/experiment/host/cli/output-protocol.cjs.map +1 -1
- package/dist/experiment/host/cli/output-protocol.d.cts +2 -2
- package/dist/experiment/host/cli/output-protocol.d.mts +2 -2
- package/dist/experiment/host/cli/output-protocol.d.ts +2 -2
- package/dist/experiment/host/current.cjs +2 -2
- package/dist/experiment/host/current.cjs.map +1 -1
- package/dist/experiment/host/index.cjs +1 -1
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/experiment/host/operations.cjs +21 -22
- package/dist/experiment/host/operations.cjs.map +1 -1
- package/dist/experiment/host/runtime.cjs +8 -9
- package/dist/experiment/host/runtime.cjs.map +1 -1
- package/dist/experiment/host/runtime.d.cts +3 -3
- package/dist/experiment/host/runtime.d.mts +3 -3
- package/dist/experiment/host/runtime.d.ts +3 -3
- package/dist/experiment/host/teardown.cjs +3 -3
- package/dist/experiment/host/teardown.cjs.map +1 -1
- package/dist/experiment/host/teardown.d.cts +3 -3
- package/dist/experiment/host/teardown.d.mts +3 -3
- package/dist/experiment/host/teardown.d.ts +3 -3
- package/dist/experiment/host/types.cjs.map +1 -1
- package/dist/experiment/host/types.d.cts +19 -19
- package/dist/experiment/host/types.d.mts +19 -19
- package/dist/experiment/host/types.d.ts +19 -19
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/dist/inspection/assertions.cjs +1 -1
- package/dist/inspection/assertions.cjs.map +1 -1
- package/dist/inspection/cli/contribution.cjs +8 -7
- package/dist/inspection/cli/contribution.cjs.map +1 -1
- package/dist/inspection/facts.cjs +4 -4
- package/dist/inspection/facts.cjs.map +1 -1
- package/dist/inspection/index.cjs +1 -5
- package/dist/inspection/index.cjs.map +1 -1
- package/dist/inspection/index.d.cts +1 -2
- package/dist/inspection/index.d.mts +1 -2
- package/dist/inspection/index.d.ts +1 -2
- package/dist/inspection/index.js +20 -26
- package/dist/inspection/lifecycle.cjs +7 -0
- package/dist/inspection/lifecycle.cjs.map +1 -0
- package/dist/inspection/lifecycle.d.cts +4 -0
- package/dist/inspection/lifecycle.d.mts +4 -0
- package/dist/inspection/lifecycle.d.ts +4 -0
- package/dist/inspection/lifecycle.js +6 -0
- package/dist/inspection/lifecycle.js.map +1 -0
- package/dist/inspection/notes.cjs +40 -0
- package/dist/inspection/notes.cjs.map +1 -0
- package/dist/inspection/notes.d.cts +12 -0
- package/dist/inspection/notes.d.mts +12 -0
- package/dist/inspection/notes.d.ts +12 -0
- package/dist/inspection/notes.js +8 -0
- package/dist/inspection/notes.js.map +1 -0
- package/dist/inspection/overview.cjs +12 -15
- package/dist/inspection/overview.cjs.map +1 -1
- package/dist/inspection/overview.d.cts +8 -6
- package/dist/inspection/overview.d.mts +8 -6
- package/dist/inspection/overview.d.ts +8 -6
- package/dist/inspection/planned-attempt.cjs +45 -0
- package/dist/inspection/planned-attempt.cjs.map +1 -0
- package/dist/inspection/planned-attempt.d.cts +109 -0
- package/dist/inspection/planned-attempt.d.mts +109 -0
- package/dist/inspection/planned-attempt.d.ts +109 -0
- package/dist/inspection/planned-attempt.js +24 -0
- package/dist/inspection/planned-attempt.js.map +1 -0
- package/dist/inspection/project-result.cjs +5 -5
- package/dist/inspection/project-result.cjs.map +1 -1
- package/dist/inspection/project-result.d.cts +58 -57
- package/dist/inspection/project-result.d.mts +58 -57
- package/dist/inspection/project-result.d.ts +58 -57
- package/dist/inspection/project-result.js +4 -4
- package/dist/inspection/project.cjs +3 -3
- package/dist/inspection/project.cjs.map +1 -1
- package/dist/inspection/protocol-values.cjs +1 -1
- package/dist/inspection/protocol-values.cjs.map +1 -1
- package/dist/inspection/protocol-values.d.cts +1 -1
- package/dist/inspection/protocol-values.d.mts +1 -1
- package/dist/inspection/protocol-values.d.ts +1 -1
- package/dist/inspection/protocol.cjs +8 -8
- package/dist/inspection/protocol.cjs.map +1 -1
- package/dist/inspection/protocol.d.cts +237 -219
- package/dist/inspection/protocol.d.mts +237 -219
- package/dist/inspection/protocol.d.ts +237 -219
- package/dist/inspection/public.cjs +1 -5
- package/dist/inspection/public.cjs.map +1 -1
- package/dist/inspection/public.d.cts +1 -2
- package/dist/inspection/public.d.mts +1 -2
- package/dist/inspection/public.d.ts +1 -2
- package/dist/inspection/public.js +14 -20
- package/dist/inspection/public.mjs +166 -129
- package/dist/inspection/query.cjs +1 -1
- package/dist/inspection/query.cjs.map +1 -1
- package/dist/inspection/results.cjs +61 -52
- package/dist/inspection/results.cjs.map +1 -1
- package/dist/inspection/results.d.cts +157 -140
- package/dist/inspection/results.d.mts +157 -140
- package/dist/inspection/results.d.ts +157 -140
- package/dist/inspection/select.cjs +33 -28
- package/dist/inspection/select.cjs.map +1 -1
- package/dist/inspection/source.cjs +1 -1
- package/dist/inspection/source.cjs.map +1 -1
- package/dist/inspection/sources.cjs +2 -2
- package/dist/inspection/sources.cjs.map +1 -1
- package/dist/inspection/trace.cjs +9 -8
- package/dist/inspection/trace.cjs.map +1 -1
- package/dist/inspection/trace.d.cts +4 -4
- package/dist/inspection/trace.d.mts +4 -4
- package/dist/inspection/trace.d.ts +4 -4
- package/dist/loaders/index.cjs +7 -279
- package/dist/loaders/index.cjs.map +1 -1
- package/dist/loaders/index.d.cts +2 -95
- package/dist/loaders/index.d.mts +2 -95
- package/dist/loaders/index.d.ts +2 -95
- package/dist/loaders/index.js +10 -12
- package/dist/loaders/index.mjs +10 -12
- package/dist/loaders/runtime.cjs +283 -0
- package/dist/loaders/runtime.cjs.map +1 -0
- package/dist/loaders/runtime.d.cts +95 -0
- package/dist/loaders/runtime.d.mts +95 -0
- package/dist/loaders/runtime.d.ts +95 -0
- package/dist/loaders/runtime.js +16 -0
- package/dist/loaders/runtime.js.map +1 -0
- package/dist/migrations/judge-provider.md +6 -6
- package/dist/{model-slots.cjs → model-roles.cjs} +12 -12
- package/dist/{model-slots.cjs.map → model-roles.cjs.map} +1 -1
- package/dist/{model-slots.d.cts → model-roles.d.cts} +10 -10
- package/dist/{model-slots.d.mts → model-roles.d.mts} +10 -10
- package/dist/{model-slots.d.ts → model-roles.d.ts} +10 -10
- package/dist/model-roles.js +14 -0
- package/dist/model-roles.js.map +1 -0
- package/dist/o11y/adapter-usage-projection.cjs +9 -8
- package/dist/o11y/adapter-usage-projection.cjs.map +1 -1
- package/dist/o11y/adapter-usage-projection.d.cts +23 -15
- package/dist/o11y/adapter-usage-projection.d.mts +23 -15
- package/dist/o11y/adapter-usage-projection.d.ts +23 -15
- package/dist/o11y/cache-read.cjs +14 -14
- package/dist/o11y/cache-read.cjs.map +1 -1
- package/dist/o11y/cache-read.d.cts +5 -5
- package/dist/o11y/cache-read.d.mts +5 -5
- package/dist/o11y/cache-read.d.ts +5 -5
- package/dist/o11y/derive.cjs.map +1 -1
- package/dist/o11y/derive.d.cts +2 -2
- package/dist/o11y/derive.d.mts +2 -2
- package/dist/o11y/derive.d.ts +2 -2
- package/dist/o11y/eval-usage.cjs +9 -9
- package/dist/o11y/eval-usage.cjs.map +1 -1
- package/dist/o11y/eval-usage.d.cts +7 -7
- package/dist/o11y/eval-usage.d.mts +7 -7
- package/dist/o11y/eval-usage.d.ts +7 -7
- package/dist/o11y/parsers/bub.cjs +57 -81
- package/dist/o11y/parsers/bub.cjs.map +1 -1
- package/dist/o11y/parsers/index.cjs.map +1 -1
- package/dist/o11y/parsers/index.d.cts +2 -0
- package/dist/o11y/parsers/index.d.mts +2 -0
- package/dist/o11y/parsers/index.d.ts +2 -0
- package/dist/o11y/parsers/opencode.cjs +129 -217
- package/dist/o11y/parsers/opencode.cjs.map +1 -1
- package/dist/o11y/parsers/opencode.d.cts +2 -5
- package/dist/o11y/parsers/opencode.d.mts +2 -5
- package/dist/o11y/parsers/opencode.d.ts +2 -5
- package/dist/o11y/types.cjs.map +1 -1
- package/dist/o11y/types.d.cts +1 -1
- package/dist/o11y/types.d.mts +1 -1
- package/dist/o11y/types.d.ts +1 -1
- package/dist/plugin/contracts.cjs +170 -120
- package/dist/plugin/contracts.cjs.map +1 -1
- package/dist/plugin/contracts.d.cts +102 -90
- package/dist/plugin/contracts.d.mts +102 -90
- package/dist/plugin/contracts.d.ts +102 -90
- package/dist/plugin/contracts.js +16 -12
- package/dist/plugin/index.cjs.map +1 -1
- package/dist/plugin/index.d.cts +1 -1
- package/dist/plugin/index.d.mts +1 -1
- package/dist/plugin/index.d.ts +1 -1
- package/dist/plugin/link.cjs +69 -64
- package/dist/plugin/link.cjs.map +1 -1
- package/dist/plugin/link.d.cts +5 -3
- package/dist/plugin/link.d.mts +5 -3
- package/dist/plugin/link.d.ts +5 -3
- package/dist/plugin/link.js +12 -8
- package/dist/record/codec/seal-manifest.d.cts +3 -3
- package/dist/record/codec/seal-manifest.d.mts +3 -3
- package/dist/record/codec/seal-manifest.d.ts +3 -3
- package/dist/record/family/attempt-note/definition.cjs +12 -0
- package/dist/record/family/attempt-note/definition.cjs.map +1 -0
- package/dist/record/family/attempt-note/definition.d.cts +6 -0
- package/dist/record/family/attempt-note/definition.d.mts +6 -0
- package/dist/record/family/attempt-note/definition.d.ts +6 -0
- package/dist/record/family/attempt-note/definition.js +6 -0
- package/dist/record/family/attempt-note/definition.js.map +1 -0
- package/dist/record/family/attempt-note/persistence.cjs +10 -0
- package/dist/record/family/attempt-note/persistence.cjs.map +1 -0
- package/dist/record/family/attempt-note/persistence.d.cts +6 -0
- package/dist/record/family/attempt-note/persistence.d.mts +6 -0
- package/dist/record/family/attempt-note/persistence.d.ts +6 -0
- package/dist/record/family/attempt-note/persistence.js +6 -0
- package/dist/record/family/attempt-note/persistence.js.map +1 -0
- package/dist/record/family/attempt-note/schema.cjs +20 -0
- package/dist/record/family/attempt-note/schema.cjs.map +1 -0
- package/dist/record/family/attempt-note/schema.d.cts +21 -0
- package/dist/record/family/attempt-note/schema.d.mts +21 -0
- package/dist/record/family/attempt-note/schema.d.ts +21 -0
- package/dist/record/family/attempt-note/schema.js +10 -0
- package/dist/record/family/attempt-note/schema.js.map +1 -0
- package/dist/record/family/catalog.cjs +32 -29
- package/dist/record/family/catalog.cjs.map +1 -1
- package/dist/record/family/catalog.d.cts +7 -2
- package/dist/record/family/catalog.d.mts +7 -2
- package/dist/record/family/catalog.d.ts +7 -2
- package/dist/record/family/current.cjs +48 -45
- package/dist/record/family/current.cjs.map +1 -1
- package/dist/record/family/current.d.cts +15 -0
- package/dist/record/family/current.d.mts +15 -0
- package/dist/record/family/current.d.ts +15 -0
- package/dist/record/model/index.js +66 -64
- package/dist/record/model/run-context.cjs +9 -3
- package/dist/record/model/run-context.cjs.map +1 -1
- package/dist/record/model/run-context.d.cts +9 -2
- package/dist/record/model/run-context.d.mts +9 -2
- package/dist/record/model/run-context.d.ts +9 -2
- package/dist/record/model/run-context.js +8 -6
- package/dist/record/model/seal-manifest.d.cts +1 -1
- package/dist/record/model/seal-manifest.d.mts +1 -1
- package/dist/record/model/seal-manifest.d.ts +1 -1
- package/dist/run/cli/contribution.cjs +6 -32
- package/dist/run/cli/contribution.cjs.map +1 -1
- package/dist/run/host/runtime.cjs +1 -1
- package/dist/run/host/runtime.cjs.map +1 -1
- package/dist/run/storage/sqlite.cjs +7 -7
- package/dist/run/storage/sqlite.cjs.map +1 -1
- package/dist/runner/adapter-usage.cjs +5 -3
- package/dist/runner/adapter-usage.cjs.map +1 -1
- package/dist/runner/adapter-usage.d.cts +2 -2
- package/dist/runner/adapter-usage.d.mts +2 -2
- package/dist/runner/adapter-usage.d.ts +2 -2
- package/dist/runner/adoption.cjs +9 -12
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/attempt-notes.cjs +8 -0
- package/dist/runner/attempt-notes.cjs.map +1 -0
- package/dist/runner/attempt-notes.d.cts +4 -0
- package/dist/runner/attempt-notes.d.mts +4 -0
- package/dist/runner/attempt-notes.d.ts +4 -0
- package/dist/runner/attempt-notes.js +8 -0
- package/dist/runner/attempt-notes.js.map +1 -0
- package/dist/runner/attempt.cjs +61 -73
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/attempt.d.cts +3 -3
- package/dist/runner/attempt.d.mts +3 -3
- package/dist/runner/attempt.d.ts +3 -3
- package/dist/runner/command-plan.cjs +21 -26
- package/dist/runner/command-plan.cjs.map +1 -1
- package/dist/runner/command-plan.d.cts +4 -4
- package/dist/runner/command-plan.d.mts +4 -4
- package/dist/runner/command-plan.d.ts +4 -4
- package/dist/runner/command-plan.js +4 -4
- package/dist/runner/config-identity.cjs.map +1 -1
- package/dist/runner/config-identity.d.cts +2 -2
- package/dist/runner/config-identity.d.mts +2 -2
- package/dist/runner/config-identity.d.ts +2 -2
- package/dist/runner/discover.cjs +6 -6
- package/dist/runner/discover.cjs.map +1 -1
- package/dist/runner/eval-selection.cjs +2 -2
- package/dist/runner/eval-selection.cjs.map +1 -1
- package/dist/runner/eval-selection.d.cts +2 -2
- package/dist/runner/eval-selection.d.mts +2 -2
- package/dist/runner/eval-selection.d.ts +2 -2
- package/dist/runner/feedback/human.cjs +1 -1
- package/dist/runner/feedback/human.cjs.map +1 -1
- package/dist/runner/feedback/json.cjs +4 -2
- package/dist/runner/feedback/json.cjs.map +1 -1
- package/dist/runner/feedback/json.d.cts +1 -1
- package/dist/runner/feedback/json.d.mts +1 -1
- package/dist/runner/feedback/json.d.ts +1 -1
- package/dist/runner/feedback/sink.cjs +1 -1
- package/dist/runner/feedback/sink.cjs.map +1 -1
- package/dist/runner/feedback/sink.d.cts +1 -1
- package/dist/runner/feedback/sink.d.mts +1 -1
- package/dist/runner/feedback/sink.d.ts +1 -1
- package/dist/runner/fingerprint.cjs +1 -1
- package/dist/runner/fingerprint.cjs.map +1 -1
- package/dist/runner/project-target.cjs.map +1 -1
- package/dist/runner/project-target.d.cts +2 -2
- package/dist/runner/project-target.d.mts +2 -2
- package/dist/runner/project-target.d.ts +2 -2
- package/dist/runner/record/attachments.cjs +2 -2
- package/dist/runner/record/attachments.cjs.map +1 -1
- package/dist/runner/record/planning.cjs +8 -2
- package/dist/runner/record/planning.cjs.map +1 -1
- package/dist/runner/record.cjs +2 -0
- package/dist/runner/record.cjs.map +1 -1
- package/dist/runner/report.cjs +3 -3
- package/dist/runner/report.cjs.map +1 -1
- package/dist/runner/report.d.cts +1 -1
- package/dist/runner/report.d.mts +1 -1
- package/dist/runner/report.d.ts +1 -1
- package/dist/runner/reuse-plan.cjs +2 -2
- package/dist/runner/reuse-plan.cjs.map +1 -1
- package/dist/runner/run.cjs +10 -45
- package/dist/runner/run.cjs.map +1 -1
- package/dist/runner/sandbox-pool.cjs +1 -2
- package/dist/runner/sandbox-pool.cjs.map +1 -1
- package/dist/runner/setup-prefix-preparation.cjs +1 -1
- package/dist/runner/setup-prefix-preparation.cjs.map +1 -1
- package/dist/runner/teardown-registry.cjs +2 -2
- package/dist/runner/teardown-registry.cjs.map +1 -1
- package/dist/runner/teardown-registry.d.cts +1 -1
- package/dist/runner/teardown-registry.d.mts +1 -1
- package/dist/runner/teardown-registry.d.ts +1 -1
- package/dist/runner/types.cjs +4 -4
- package/dist/runner/types.cjs.map +1 -1
- package/dist/runner/types.d.cts +64 -93
- package/dist/runner/types.d.mts +64 -93
- package/dist/runner/types.d.ts +64 -93
- package/dist/runner/types.js +2 -2
- package/dist/sandbox/action.cjs +1 -1
- package/dist/sandbox/action.cjs.map +1 -1
- package/dist/sandbox/cli/contribution.cjs +17 -14
- package/dist/sandbox/cli/contribution.cjs.map +1 -1
- package/dist/sandbox/cli/contribution.d.cts +1 -1
- package/dist/sandbox/cli/contribution.d.mts +1 -1
- package/dist/sandbox/cli/contribution.d.ts +1 -1
- package/dist/sandbox/commands.cjs +1 -1
- package/dist/sandbox/commands.cjs.map +1 -1
- package/dist/sandbox/commands.d.cts +1 -1
- package/dist/sandbox/commands.d.mts +1 -1
- package/dist/sandbox/commands.d.ts +1 -1
- package/dist/sandbox/compose.cjs +2 -2
- package/dist/sandbox/compose.cjs.map +1 -1
- package/dist/sandbox/docker-profile/registry.cjs +5 -9
- package/dist/sandbox/docker-profile/registry.cjs.map +1 -1
- package/dist/sandbox/docker-profile/registry.d.cts +0 -3
- package/dist/sandbox/docker-profile/registry.d.mts +0 -3
- package/dist/sandbox/docker-profile/registry.d.ts +0 -3
- package/dist/sandbox/docker-profile/registry.js +6 -12
- package/dist/sandbox/docker-profile/runtime.cjs +1 -1
- package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.cjs +12 -16
- package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.d.cts +2 -6
- package/dist/sandbox/docker-profile/schema.d.mts +2 -6
- package/dist/sandbox/docker-profile/schema.d.ts +2 -6
- package/dist/sandbox/docker-profile/schema.js +24 -32
- package/dist/sandbox/incus.cjs +2 -2
- package/dist/sandbox/incus.cjs.map +1 -1
- package/dist/sandbox/index.cjs +4 -35
- package/dist/sandbox/index.cjs.map +1 -1
- package/dist/sandbox/index.d.cts +4 -8
- package/dist/sandbox/index.d.mts +4 -8
- package/dist/sandbox/index.d.ts +4 -8
- package/dist/sandbox/index.js +116 -172
- package/dist/sandbox/index.mjs +116 -172
- package/dist/sandbox/layer.cjs +3 -3
- package/dist/sandbox/layer.cjs.map +1 -1
- package/dist/sandbox/link.cjs +5 -0
- package/dist/sandbox/link.cjs.map +1 -1
- package/dist/sandbox/link.d.cts +3 -0
- package/dist/sandbox/link.d.mts +3 -0
- package/dist/sandbox/link.d.ts +3 -0
- package/dist/sandbox/runtime.cjs +9 -4
- package/dist/sandbox/runtime.cjs.map +1 -1
- package/dist/shared/failure-class.cjs +5 -5
- package/dist/shared/failure-class.cjs.map +1 -1
- package/dist/shared/failure-class.d.cts +4 -10
- package/dist/shared/failure-class.d.mts +4 -10
- package/dist/shared/failure-class.d.ts +4 -10
- package/dist/shared/types.cjs.map +1 -1
- package/dist/shared/types.d.cts +1 -1
- package/dist/shared/types.d.mts +1 -1
- package/dist/shared/types.d.ts +1 -1
- package/dist/show/contribution.cjs +17 -2
- package/dist/show/contribution.cjs.map +1 -1
- package/dist/show/contribution.d.cts +14 -0
- package/dist/show/contribution.d.mts +14 -0
- package/dist/show/contribution.d.ts +14 -0
- package/dist/show/model.cjs +8 -5
- package/dist/show/model.cjs.map +1 -1
- package/dist/show/model.d.cts +11 -8
- package/dist/show/model.d.mts +11 -8
- package/dist/show/model.d.ts +11 -8
- package/dist/show/render.cjs +34 -22
- package/dist/show/render.cjs.map +1 -1
- package/dist/sources/projector.cjs +1 -1
- package/dist/sources/projector.cjs.map +1 -1
- package/dist/types.cjs +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.js +2 -2
- package/dist/view/app-dist/.vite/manifest.json +2 -2
- package/dist/view/app-dist/assets/{index-B3ijZRph.js → index-CxrOUvHC.js} +17 -17
- package/dist/view/app-dist/assets/{quality-cost-scatter-B--DfJ9s.js → quality-cost-scatter-B6Aiss7x.js} +1 -1
- package/dist/view/app-dist/index.html +1 -1
- package/dist/view/cli/contribution.cjs +1 -1
- package/dist/view/cli/contribution.cjs.map +1 -1
- package/dist/view/function-runtime.mjs +318 -121
- package/dist/view/http-protocol.d.cts +1 -1
- package/dist/view/http-protocol.d.mts +1 -1
- package/dist/view/http-protocol.d.ts +1 -1
- package/dist/view/inspection-host.cjs +2 -2
- package/dist/view/inspection-host.cjs.map +1 -1
- package/dist/view/inspection-host.d.cts +349 -331
- package/dist/view/inspection-host.d.mts +349 -331
- package/dist/view/inspection-host.d.ts +349 -331
- package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +6 -6
- package/docs-site/zh/examples/integrations/claude-sdk.mdx +5 -5
- package/docs-site/zh/examples/integrations/codex-sdk.mdx +4 -4
- package/docs-site/zh/examples/integrations/langgraph.mdx +4 -4
- package/docs-site/zh/examples/integrations/pi-sdk.mdx +5 -5
- package/docs-site/zh/explanation/adapter.mdx +6 -6
- package/docs-site/zh/explanation/assert.mdx +7 -7
- package/docs-site/zh/explanation/drive.mdx +4 -4
- package/docs-site/zh/explanation/hitl.mdx +2 -2
- package/docs-site/zh/explanation/judge.mdx +2 -2
- package/docs-site/zh/introduction.mdx +2 -2
- package/docs-site/zh/reference/builtin-agents.mdx +46 -49
- package/docs-site/zh/reference/cli.mdx +16 -14
- package/docs-site/zh/reference/define-agent.mdx +19 -19
- package/docs-site/zh/reference/define-config.mdx +7 -15
- package/docs-site/zh/reference/define-eval.mdx +20 -14
- package/docs-site/zh/reference/define-experiment.mdx +18 -39
- package/docs-site/zh/reference/events.mdx +1 -1
- package/docs-site/zh/reference/expect.mdx +21 -0
- package/docs-site/zh/reference/official-adapters.mdx +12 -5
- package/docs-site/zh/troubleshooting/debugging.mdx +2 -2
- package/docs-site/zh/troubleshooting/recover-after-kill.mdx +1 -1
- package/docs-site/zh/tutorials/agent-onboarding.mdx +2 -2
- package/docs-site/zh/tutorials/authoring.mdx +2 -2
- package/docs-site/zh/tutorials/compare-runs.mdx +1 -1
- package/docs-site/zh/tutorials/concurrency.mdx +8 -8
- package/docs-site/zh/tutorials/configuration.mdx +5 -5
- package/docs-site/zh/tutorials/control-run-cost.mdx +19 -19
- package/docs-site/zh/tutorials/eval-groups.mdx +1 -1
- package/docs-site/zh/tutorials/evaluation-kinds.mdx +5 -5
- package/docs-site/zh/tutorials/experiment-services.mdx +32 -32
- package/docs-site/zh/tutorials/handle-execution-failures.mdx +2 -28
- package/docs-site/zh/tutorials/plugins.mdx +49 -143
- package/docs-site/zh/tutorials/sandbox-agent.mdx +1 -1
- package/docs-site/zh/tutorials/sandbox-reuse.mdx +7 -7
- package/docs-site/zh/tutorials/upgrade-0-18.mdx +1 -1
- package/docs-site/zh/tutorials/upgrade-0-19.mdx +121 -0
- package/docs-site/zh/tutorials/upgrade-0-20.mdx +12 -0
- package/docs-site/zh/tutorials/verify-judge.mdx +2 -2
- package/docs-site/zh/tutorials/viewing-results.mdx +2 -2
- package/docs-site/zh/tutorials/write-experiment.mdx +1 -1
- package/docs-site/zh/tutorials/write-send.mdx +13 -13
- package/package.json +1 -1
- package/dist/agents/effect-runtime.cjs.map +0 -1
- package/dist/agents/effect-runtime.d.cts +0 -29
- package/dist/agents/effect-runtime.d.mts +0 -29
- package/dist/agents/effect-runtime.d.ts +0 -29
- package/dist/agents/effect-runtime.js +0 -16
- package/dist/agents/effect-runtime.js.map +0 -1
- package/dist/agents/session-slot.cjs.map +0 -1
- package/dist/agents/session-slot.d.cts +0 -12
- package/dist/agents/session-slot.d.mts +0 -12
- package/dist/agents/session-slot.d.ts +0 -12
- package/dist/agents/session-slot.js +0 -6
- package/dist/agents/session-slot.js.map +0 -1
- package/dist/model-slots.js +0 -14
- package/dist/model-slots.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overview.js","sourceRoot":"","sources":["overview.ts"],"names":[],"mappings":";;AAsKA,4DAIC;AA4BD,0EAsBC;AA5ND,4CAA4C;AAC5C,wDAAwD;AACxD,0FAA0F;AAC1F,qDAAqD;AACrD,0DAAuE;AAEvE,mCAAmD;AAInD,4DAA2G;AAC3G,yCAA+F;AAC/F,yCAAuN;AAEvN,yCAAmG;AAiJnG;;;GAGG;AACH,mDAAmD;AACnD,0FAA0F;AAC1F,qDAAqD;AACrD,SAAgB,wBAAwB,CAAC,KAA4D,EAAE,cAA+C;IAClJ,MAAM,IAAI,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,6BAAkB,EAAC,KAAK,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,cAAc,IAAI,IAAI,CAAC,CAAC;IACjE,OAAO,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AAC5C,CAAC;AACD,SAAS,sBAAsB,CAAC,QAAiC;IAC7D,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,YAAY,SAAS,MAAM,EAAE,CAAC;SACrG,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1I,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC;SAC/E,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpJ,OAAO,aAAa,CAAC;QACjB,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QAClD,WAAW;QACX,KAAK;KACR,CAAC,CAAC;AACP,CAAC;AAgBD,gFAAgF;AAChF,SAAgB,+BAA+B,CAAC,MAA6C;IACzF,OAAO,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAgB,EAAE;QAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,GAAG,KAAK;YACR,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;YACnB,MAAM,EAAE,QAAQ,EAAE,MAAM;YACxB,QAAQ,EAAE,QAAQ,EAAE,QAAQ;YAC5B,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC7C,eAAe,EAAE,iBAA0B;gBAC3C,cAAc,EAAE,KAAK,CAAC,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,QAAiB,CAAC,CAAC,CAAC,MAAe;gBACtF,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,iBAAiB,EAAE;gBAC1B,OAAO,EAAE,sBAAsB,EAAE;gBACjC,UAAU,EAAE,4BAA4B,EAAE;gBAC1C,MAAM,EAAE,4BAA4B,EAAE;gBACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,GAAG,EAAE,IAAI;aACZ,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC;SAC1F,CAAC,CAAC;IACP,CAAC,CAAC,CAAC,CAAC;AACR,CAAC;AACD,SAAS,sBAAsB,CAAC,KAA4D;IACxF,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AACD,SAAS,iBAAiB,CAAC,IAAoC,EAAE,iBAAiD,IAAI;IAClH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtH,MAAM,MAAM,GAAG,IAAI,GAAG,EAGlB,CAAC;IACL,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,SAAS,IAAI,CAAC,MAAM,SAAS,IAAI,CAAC,cAAc,EAAE,CAAC;YACzF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,OAAO,KAAK,SAAS,IAAI,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;SACpC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;QAC/F,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc;QACpD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC1D,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAgB,EAAE;QACxC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS;YACjC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAA,yCAA8B,EAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACrE,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO;YAC7C,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK;YACzC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM;YACjC,MAAM;YACN,IAAI;YACJ,MAAM;YACN,QAAQ;YACR,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;SAC3D,CAAC,CAAC;IACP,CAAC,CAAC,CAAC,CAAC;AACR,CAAC;AACD,SAAS,iBAAiB,CAAC,IAAyB,EAAE,KAA0B;IAC5E,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW;QAC/C,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS;QACxC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AACD,SAAS,cAAc,CAAC,QAA+C,EAAE,MAA2B,EAAE,MAAkC,EAAE,IAAwB;IAC9J,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,MAAM,EAAE,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;QAC9E,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,eAAe,EAAE,iBAA0B;YAC3C,cAAc,EAAE,IAAI;YACpB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,iBAAiB,EAAE;YAC1B,OAAO,EAAE,sBAAsB,EAAE;YACjC,UAAU,EAAE,4BAA4B,EAAE;YAC1C,MAAM,EAAE,4BAA4B,EAAE;YACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,sBAAsB,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YAChI,GAAG,EAAE,IAAI;SACZ,CAAC,CAAC;IACP,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,IAAA,mCAAwB,EAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,eAAe,EAAE,UAAU,CAAC,KAAK;YACjC,cAAc,EAAE,IAAI;YACpB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,iBAAiB,EAAE;YAC1B,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC;YAC5B,GAAG,WAAW;YACd,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;oBAC/B,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,KAAK,EAAE,UAAU,CAAC,KAAK;iBAC1B,CAAC,CAAC,CAAC;YACR,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,GAAG;SACN,CAAC,CAAC;IACP,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,wBAAwB,GAAG,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACxC,IAAI,YAAY,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC;YAC9B,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC;YAChC,mBAAmB,IAAI,CAAC,CAAC;QAC7B,CAAC;aACI,IAAI,YAAY,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;YAC5C,SAAS,GAAG,IAAI,CAAC;YACjB,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC;YAChC,wBAAwB,IAAI,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBACtB,IAAI,EAAE,gCAAgC;gBACtC,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,YAAY,CAAC,MAAM;aAC9B,CAAC,CAAC,CAAC;QACR,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACtD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK;YACrC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,KAAK,UAAU;gBAC7C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClD,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;SAC/D,CAAC,CAAC,CAAC;IACR,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,eAAe,EAAE,WAAoB;QACrC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,QAAiB,CAAC,CAAC,CAAC,MAAe;QAC/D,OAAO,EAAE,IAAA,uCAA0B,EAAC;YAChC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO;YACjC,UAAU,EAAE,UAAU,CAAC,KAAK;SAC/B,CAAC;QACF,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACjB,SAAS;YACT,MAAM;YACN,QAAQ;YACR,QAAQ,EAAE,mBAAmB,GAAG,CAAC;YACjC,QAAQ,EAAE,SAAS,IAAI,wBAAwB,KAAK,CAAC;SACxD,CAAC;QACF,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC;QAC5B,GAAG,WAAW;QACd,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC7B,GAAG;KACN,CAAC,CAAC;AACP,CAAC;AACD,SAAS,QAAQ,CAAC,KAA8B,EAAE,SAA4B;IAC1E,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,KAAK,KAAK,SAAS;QACnB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,GAAG,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAuC,EAAE;YACnF,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;gBAC5D,OAAO,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;YACnC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;oBACd,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;oBAChC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM;oBAC5B,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM;oBAC5B,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,cAAc;oBAC5C,MAAM,EAAE,gBAAgB,CAAC,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;oBAC/C,WAAW,EAAE,mBAAmB,CAAC,QAAQ,CAAC;iBAC7C,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;KACN,CAAC,CAAC;AACP,CAAC;AACD,SAAS,cAAc,CAAC,KAA8B,EAAE,KAAwC,EAAE,SAA4B;IAC1H,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,KAAK,KAAK,SAAS;QACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IACnD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,MAAM,KAAK,SAAS;gBACpB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;;gBAE9B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;SACjC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAA2B,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/D,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7C,GAAG,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;KACpH,CAAC,CAAC,CAAC;IACJ,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;QAC1D,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;QAC1C,GAAG,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;KAChC,CAAC,CAAC;AACP,CAAC;AACD,SAAS,YAAY,CAAC,MAAkC;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;QACvE,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;QACjC,KAAK,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB;QACjD,KAAK,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAgB,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACxE,CAAC;AACD,SAAS,SAAS,CAAC,KAA8B,EAAE,KAA4B;IAC3E,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,cAAc,EAAE,gBAAgB,CAAC,KAAK,CAAC;QACvC,WAAW;QACX,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,KAAK;YACL,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC;SAClD,CAAC;QACF,KAAK;QACL,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC;QAC5B,UAAU,EAAE,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC;QAChE,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC;QACxD,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxE,MAAM;KACT,CAAC,CAAC;AACP,CAAC;AACD,SAAS,yBAAyB,CAAC,QAAmC;IAClE,MAAM,MAAM,GAAG,IAAA,+BAAoB,EAAC,MAAM,CAAC,MAAM,CAAC;QAC9C,gBAAgB,EAAE,IAAA,4BAAiB,EAAC,QAAQ,EAAE,sCAAyB,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC;KAC3G,CAAC,CAAC,CAAC;IACJ,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;QAC7E,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC;QACzD,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC,EAAE,IAAI,CAAC,CAAC;IACT,MAAM,YAAY,GAAG,IAAA,4BAAiB,EAAC,QAAQ,EAAE,sCAAyB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAChG,MAAM,KAAK,GAAG,IAAA,8BAAmB,EAAC,MAAM,CAAC,MAAM,CAAC;QAC5C,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM;QACpD,UAAU,EAAE,IAAA,4BAAiB,EAAC,QAAQ,EAAE,sCAAyB,CAAC,UAAU,CAAC,MAAM,CAAC;QACpF,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;KAC1D,CAAC,CAAC,CAAC;IACJ,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;IAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;IAC/C,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,YAAY,KAAK,SAAS;QACrC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACZ,KAAK,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC;YAC/F,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS;gBAC5B,CAAC,CAAC,QAAiB;gBACnB,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;oBACtB,CAAC,CAAC,aAAsB;oBACxB,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,WAAW;wBAC1E,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,KAAK,WAAW;wBAC/C,CAAC,CAAC,WAAoB;wBACtB,CAAC,CAAC,SAAkB;SACnC,CAAC;QACF,CAAC,CAAC,IAAA,oCAAyB,EAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5F,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;YACtB,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS;gBAC7B,CAAC,CAAC,QAAiB;gBACnB,CAAC,CAAC,UAAU,KAAK,IAAI;oBACjB,CAAC,CAAC,aAAsB;oBACxB,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO;wBAC5C,CAAC,CAAC,WAAoB;wBACtB,CAAC,CAAC,SAAkB;SACnC,CAAC;QACF,MAAM;KACT,CAAC,CAAC;AACP,CAAC;AACD,SAAS,4BAA4B;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAsB,EAAE,CAAC,CAAC;AACzE,CAAC;AACD,SAAS,cAAc,CAAC,KAA8B,EAAE,GAA4B,EAAE,IAAqB,EAAE,IAAuB;IAChI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9F,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAChH,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK;QACL,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;QAClG,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;QACpB,IAAI;QACJ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;KAClE,CAAC,CAAC;AACP,CAAC;AACD,SAAS,mBAAmB,CAAC,QAAsB;IAC/C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IACtC,IAAI,MAAM,KAAK,SAAS;QACpB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAkB,EAAE,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,QAAiB;YACxB,MAAM,EAAE,MAAM,CAAC,aAAa;SAC/B,CAAC,CAAC;IACP,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,CAAC,IAAI,EAAE,MAAM,0BAA0B,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK,EAAE,WAAoB;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;QACnC,cAAc,EAAE,QAAQ,CAAC,OAAO;QAChC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW;QACvC,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM;QACrC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;QAClC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC;QAC/B,OAAO,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC;QACjC,UAAU,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC;QACrE,MAAM,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC;KAChE,CAAC,CAAC;AACP,CAAC;AACD,SAAS,cAAc,CAAC,MAAkC;IACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;QACnB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAgB,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QACxC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAsB,EAAE,CAAC;QAClD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAoB,EAAE,KAAK,EAAE,CAAC,CAAC;AAChE,CAAC;AACD,SAAS,mBAAmB,CAAC,KAA8B;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7G,CAAC;AACD,SAAS,gBAAgB,CAAC,KAA8B,EAAE,IAAuB;IAC7E,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QACtD,GAAG;QACH,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;KACjE,CAAC,CAAC,CAAC,CAAC;AACT,CAAC;AACD,SAAS,SAAS,CAAC,QAAmC;IAClD,MAAM,YAAY,GAAG,IAAA,4BAAiB,EAAC,QAAQ,EAAE,sCAAyB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAChG,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAA,8BAAmB,EAAC,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzH,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,MAAM,GAAG,GAAG,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;QACpE,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;YACxC,OAAO,sBAAsB,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YACpC,OAAO,sBAAsB,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACpE,GAAG,CAAC,YAAY,KAAK,KAAK,CAAC,UAAU,CAAC;QAC1C,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,KAAK;YACL,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAoB,CAAC,CAAC,CAAC,SAAkB;YAC3D,MAAM,EAAE,GAAG,CAAC,MAAM;SACrB,CAAC,CAAC;IACP,CAAC;IACD,MAAM,UAAU,GAAG,IAAA,4BAAiB,EAAC,QAAQ,EAAE,sCAAyB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7F,IAAI,UAAU,KAAK,SAAS;QACxB,UAAU,CAAC,QAAQ,CAAC,cAAc,KAAK,6CAAgC,CAAC,WAAW,CAAC,QAAQ;QAC5F,OAAO,sBAAsB,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC;IAC7B,IAAI,CAAC,kBAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;QACxB,OAAO,sBAAsB,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,eAAM,CAAC,mBAAmB,CAAC,sCAAyB,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC;IACtI,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC;QACzC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;QACpD,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,QAAQ,KAAK,SAAS,IAAI,eAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;QACpD,OAAO,sBAAsB,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC;QAC3C,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;QACtD,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,SAAS,KAAK,SAAS,IAAI,eAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QACtD,OAAO,sBAAsB,EAAE,CAAC;IACpC,MAAM,aAAa,GAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC5D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,cAAc,GAAG,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;IAC/D,OAAO,cAAc,KAAK,SAAS;QAC/B,CAAC,CAAC,sBAAsB,EAAE;QAC1B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;AAC5F,CAAC;AACD,SAAS,sBAAsB;IAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,CAAC;AACD,SAAS,YAAY,CAAC,KAA8B;IAChD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,IAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAChM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAChB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7H,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,WAAW,IAAI,YAAY,CAAC,CAAC,CAAC,OAAgB;QACzD,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAmB;YAC/B,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAoB;gBACjC,CAAC,CAAC,IAAI,CAAC;IACnB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC;QAC7B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAM,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK;QACL,MAAM;QACN,KAAK,EAAE,MAAM,KAAK,IAAI;YAClB,CAAC,CAAC,aAAsB;YACxB,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,WAAW,CAAC;gBACtG,CAAC,CAAC,SAAkB;gBACpB,CAAC,CAAC,WAAoB;QAC9B,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,KAAK,EAAE,MAAe;QACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,KAAc;QACpB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;KAClE,CAAC,CAAC;AACP,CAAC;AACD,SAAS,aAAa,CAAC,KAA8B;IACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAC/E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;IACpF,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,QAAQ,EAAE,KAAK,CAAC,MAAM;QACtB,QAAQ;QACR,UAAU;QACV,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ;KACnC,CAAC,CAAC;AACP,CAAC;AACD,SAAS,OAAO,CAAC,KAA8B;IAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE,CAAC;QAC/B,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC;YACvB,KAAK,QAAQ;gBACT,MAAM,IAAI,CAAC,CAAC;gBACZ,MAAM;YACV,KAAK,QAAQ;gBACT,MAAM,IAAI,CAAC,CAAC;gBACZ,MAAM;YACV,KAAK,SAAS;gBACV,OAAO,IAAI,CAAC,CAAC;gBACb,MAAM;YACV,KAAK,SAAS;gBACV,OAAO,IAAI,CAAC,CAAC;gBACb,MAAM;YACV,KAAK,IAAI,CAAC,CAAC,MAAM;QACrB,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAC/D,CAAC;AACD,SAAS,UAAU,CAAC,KAA8B,EAAE,WAA0C,EAAE,KAA6B;IACzH,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7G,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK,EAAE,WAAW,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,UAAU;QAClF,KAAK,EAAE,WAAW,CAAC;YACf,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,OAAO,EAAE,WAAW,CAAC,UAAU;YAC/B,QAAQ,EAAE,WAAW,CAAC,UAAU,KAAK,WAAW,CAAC,QAAQ;YACzD,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC;SAClD,CAAC;QACF,OAAO,EAAE,WAAW,CAAC,UAAU;QAC/B,KAAK,EAAE,WAAW,CAAC,QAAQ;QAC3B,KAAK,EAAE,MAAe;QACtB,MAAM;QACN,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC;KAC3B,CAAC,CAAC;AACP,CAAC;AACD,SAAS,cAAc,CAAC,QAAsB;IAC1C,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAC9B,IAAI,QAAQ,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,aAAsB;YAC7B,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,MAAe;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,EAAE,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC/E,IAAI,EAAE,QAAiB;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;IACP,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IACrE,MAAM,QAAQ,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IACrD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QAC9C,KAAK,EAAE,QAAQ;YACX,CAAC,CAAC,WAAoB;YACtB,CAAC,CAAC,QAAQ;gBACN,CAAC,CAAC,SAAkB;gBACpB,CAAC,CAAC,WAAW,CAAC;oBACV,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,CAAC;oBACV,QAAQ,EAAE,KAAK;oBACf,QAAQ,EAAE,CAAC,QAAQ,CAAC;iBACvB,CAAC;QACV,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,MAAe;QACtB,MAAM,EAAE,UAAU,CAAC;YACf,GAAG,QAAQ,CAAC,MAAM;YAClB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ;gBACpD,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBAC/B,CAAC,CAAC,EAAE,CAAC;SACZ,CAAC;QACF,IAAI,EAAE,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/E,IAAI,EAAE,QAAiB;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClE,CAAC,CAAC;AACP,CAAC;AACD,wEAAwE;AACxE,SAAS,YAAY,CAAC,KAA8B;IAChD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC;IACzF,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC;IACtF,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC;IACjF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACrE,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAgB,CAAC,CAAC,CAAC,aAAsB;YACrE,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,MAAe;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,IAAI,EAAE,QAAiB;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;IACP,CAAC;IACD,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC;QACrC,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC;IACzE,gFAAgF;IAChF,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS;QACvE,QAAQ,CAAC,KAAK,CAAC,QAAQ;QACvB,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IACjG,MAAM,MAAM,GAAG,UAAU,CAAC;QACtB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtD,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ;YACtF,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC,CAAC,EAAE,CAAC;KACZ,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;QAC9D,KAAK,EAAE,WAAW,CAAC;YACf,QAAQ,EAAE,QAAQ,CAAC,MAAM;YACzB,OAAO,EAAE,QAAQ,CAAC,MAAM;YACxB,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YAC7C,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC;SACrD,CAAC;QACF,OAAO,EAAE,QAAQ,CAAC,MAAM;QACxB,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,KAAK,EAAE,MAAe;QACtB,MAAM;QACN,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC;QACtB,IAAI,EAAE,QAAiB;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;KACnD,CAAC,CAAC;AACP,CAAC;AACD,6EAA6E;AAC7E,SAAS,cAAc,CAAC,KAAwC;IAC5D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,OAAgB;YACvB,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,MAAe;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,IAAI,EAAE,QAAiB;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;IACP,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC;IACjF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,aAAsB;YAC7B,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,MAAe;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,IAAI,EAAE,QAAiB;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;IACP,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC;QAC7B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,WAAW,CAAC;YACxD,CAAC,CAAC,WAAoB;YACtB,CAAC,CAAC,SAAkB;QACxB,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK;QACL,KAAK;QACL,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,KAAK,EAAE,MAAe;QACtB,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,EAAE,QAAiB;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;SAC9E,CAAC;KACL,CAAC,CAAC;AACP,CAAC;AACD,SAAS,WAAW,CAAC,KAKpB;IACG,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;QACpB,OAAO,OAAO,CAAC;IACnB,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC;QACjB,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,eAAe,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC7E,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,eAAe,KAAK,cAAc,IAAI,eAAe,KAAK,aAAa,CAAC;QACrH,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,eAAe,KAAK,WAAW,IAAI,eAAe,KAAK,iBAAiB,CAAC,EAAE,CAAC;QAC1H,OAAO,aAAa,CAAC;IACzB,CAAC;IACD,OAAO,aAAa,CAAC;AACzB,CAAC;AACD,SAAS,gBAAgB,CAAC,KAA8B;IACpD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC;IACrF,IAAI,CAAC,SAAS;QACV,OAAO,MAAM,CAAC;IAClB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,KAAK,MAAM,CAAC;QACnE,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,QAAQ,CAAC;AACnB,CAAC;AACD,SAAS,MAAM,CAAC,KAA8B;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAgC,CAAC;IACrD,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,GAAG,KAAK,IAAI;YACrB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;SACnC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC;AACD,SAAS,UAAU,CAAC,MAAuC;IACvD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAgC,CAAC;IACrD,KAAK,MAAM,GAAG,IAAI,MAAM;QACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;SACnC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC;AACD,SAAS,oBAAoB,CAAC,MAAwC;IAClE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QACnB,OAAO,OAAO,CAAC;IACnB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC;QAC1C,OAAO,QAAQ,CAAC;IACpB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC;QAChD,OAAO,aAAa,CAAC;IACzB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;QAC3C,OAAO,SAAS,CAAC;IACrB,OAAO,aAAa,CAAC;AACzB,CAAC;AACD,SAAS,iBAAiB,CAAC,QAAyB;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI;KAClD,CAAC,CAAC;AACP,CAAC;AACD,SAAS,kBAAkB,CAAC,KAA8B,EAAE,KAAqC;IAC7F,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,SAAS;YACpB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;;YAExB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;SACrC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AACD,SAAS,SAAS,CAAC,MAAc;IAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3E,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AACD,SAAS,cAAc,CAAC,IAAuB,EAAE,MAAyB;IACtE,OAAO,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;QAC/B,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC;AAClE,CAAC;AACD,SAAS,UAAU,CAAC,OAAe;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAkB,EAAE,OAAO,EAAE,CAAC;KACjE,CAAC,CAAC;AACP,CAAC;AACD,SAAS,iBAAiB;IACtB,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;KAClB,CAAC,CAAC;AACP,CAAC;AACD,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa,EAAE,IAAwB;IACxE,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,IAAI;QACJ,KAAK;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,cAAc,EAAE,IAAI,CAAC,cAAc;KACtC,CAAC,CAAC;AACP,CAAC;AACD,SAAS,UAAU,CAAC,MAAiC;IACjD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,KAAK,MAAM,KAAK,IAAI,MAAM;QACtB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;SACrC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC;AACD,SAAS,aAAa,CAAC,KAAyB;IAC5C,MAAM,MAAM,GAAG,IAAA,8BAAmB,EAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,IAAA,iCAAsB,EAAC,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,MAAM,CAAC;IACjB,CAAC;IACD,OAAO,MAAuC,CAAC;AACnD,CAAC;AACD,SAAS,WAAW,CAAC,IAAY,EAAE,KAAa;IAC5C,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC","sourcesContent":["// @concord-file ne-eval-inspection-overview\n// @concord-implements docs/feature/inspection/README.md\n// @concord-implements docs/feature/inspection/use-case/inspection-compare-quality-cost.md\n// @concord-implements docs/feature/insight/README.md\nimport { foldRecordedAttemptVerdict } from \"../eval/record/verdict.ts\";\nimport type { VerdictState } from \"../eval/record/verdict.ts\";\nimport { Predicate, Result, Schema } from \"effect\";\nimport type { MemberDocument, RecordSlotIdentity } from \"../record/model/core.ts\";\nimport type { AdapterIdentity } from \"../record/model/run-context.ts\";\nimport type { RunSlotPublication } from \"../run/index.ts\";\nimport { NiceEvalCurrentRecordAttachments, NiceEvalRecordAttachments, } from \"../record/family/current.ts\";\nimport { closeInspectionJson, isInspectionCodecError, type InspectionJson, } from \"./codec.ts\";\nimport { attemptAttachment, loadInspectionRuns, readInspectionAssertions, resolveInspectionMemberAttempt, type InspectionAssertionsRead, type LoadedInspectionRun, type ResolvedInspectionAttempt, } from \"./facts.ts\";\nimport type { InspectionFactSource } from \"./source.ts\";\nimport { projectAdapterUsageTokens, projectAttemptTiming, projectAttemptUsage, } from \"./trace.ts\";\nexport type InspectionMetricState = \"available\" | \"partial\" | \"unavailable\" | \"empty\" | \"unsupported\" | \"failed\";\nexport interface InspectionAttemptRef {\n readonly identity: {\n readonly kind: \"attempt\";\n readonly locator: string;\n };\n}\nexport interface InspectionMetricValue {\n readonly value: number | null;\n readonly state: InspectionMetricState;\n readonly samples: number;\n readonly total: number;\n readonly basis: \"slot\" | \"eval\";\n readonly issues: readonly InspectionJson[];\n readonly refs: readonly InspectionAttemptRef[];\n readonly unit?: \"points\" | \"USD\" | \"ms\" | \"tokens\";\n readonly bounds?: {\n readonly min: number;\n readonly max: number;\n };\n}\nexport interface InspectionCostMetricValue extends InspectionMetricValue {\n readonly source: \"reported\" | \"estimated\" | \"mixed\" | null;\n}\nexport interface InspectionOverviewDenominator {\n readonly expected: number;\n readonly observed: number;\n readonly classified: number;\n readonly missing: number;\n}\nexport interface InspectionVerdictTally {\n readonly passed: number;\n readonly failed: number;\n readonly errored: number;\n readonly skipped: number;\n}\nexport type InspectionEvaluationKind = \"pass\" | \"points\" | \"mixed\";\nexport interface InspectionOverviewAggregate {\n readonly evaluationKind: InspectionEvaluationKind;\n readonly denominator: InspectionOverviewDenominator;\n readonly verdict: {\n readonly tally: InspectionVerdictTally;\n readonly passRate: InspectionMetricValue;\n };\n readonly score: InspectionMetricValue;\n readonly costUSD: InspectionCostMetricValue;\n readonly durationMs: InspectionMetricValue;\n readonly tokens: InspectionMetricValue;\n readonly coverage: readonly InspectionJson[];\n readonly issues: readonly InspectionJson[];\n}\nexport interface InspectionOverviewMember {\n readonly runId: string;\n readonly slotId: string;\n readonly evalId: string;\n readonly attemptOrdinal: number;\n readonly labels: InspectionLabels;\n readonly publication: Exclude<RunSlotPublication, {\n readonly state: \"published\";\n }> | (Extract<RunSlotPublication, {\n readonly state: \"published\";\n }> & {\n readonly verdict: VerdictState | null;\n readonly score: InspectionMetricValue;\n readonly costUSD: InspectionCostMetricValue;\n readonly durationMs: InspectionMetricValue;\n readonly tokens: InspectionMetricValue;\n });\n}\nexport interface InspectionOverviewCell extends InspectionOverviewAggregate {\n readonly experimentId: string;\n readonly evalId: string;\n readonly groupPath: readonly string[];\n readonly members: readonly InspectionOverviewMember[];\n}\nexport interface InspectionOverviewGroup extends InspectionOverviewAggregate {\n readonly groupPath: readonly string[];\n}\nexport interface InspectionOverviewExperiment extends InspectionOverviewAggregate {\n readonly experimentId: string;\n readonly adapter: InspectionAdapterValue;\n readonly model: InspectionExecutionValue;\n readonly labels: InspectionLabels;\n readonly groups: readonly InspectionOverviewGroup[];\n}\nexport type InspectionExecutionValue = {\n readonly state: \"available\";\n readonly value: string;\n} | {\n readonly state: \"mixed\";\n} | {\n readonly state: \"unavailable\";\n};\nexport type InspectionAdapterValue = {\n readonly state: \"available\";\n readonly value: AdapterIdentity;\n} | {\n readonly state: \"mixed\";\n};\nexport type InspectionLabels = Readonly<Record<string, InspectionExecutionValue>>;\nexport interface InspectionOverview {\n readonly totals: InspectionOverviewAggregate;\n readonly experiments: readonly InspectionOverviewExperiment[];\n readonly cells: readonly InspectionOverviewCell[];\n}\ninterface SelectedSlot {\n readonly experimentId: string;\n readonly evalId: string;\n readonly attemptOrdinal: number;\n readonly adapter: AdapterIdentity;\n readonly model: string | null;\n readonly labels: Readonly<Record<string, string>>;\n readonly target?: LoadedInspectionRun;\n readonly slot?: RecordSlotIdentity;\n readonly member: MemberDocument | undefined;\n readonly resolved: ResolvedInspectionAttempt | undefined;\n readonly analysis: AttemptAnalysis;\n}\ninterface AttemptAnalysis {\n readonly assertionsState: InspectionAssertionsRead[\"state\"] | \"attempt-missing\";\n readonly evaluationKind: \"pass\" | \"points\" | null;\n readonly verdict: VerdictState | null;\n readonly score: {\n readonly hasPoints: boolean;\n readonly earned: number;\n readonly possible: number;\n readonly hasValue: boolean;\n readonly complete: boolean;\n };\n readonly costUSD: {\n readonly value: number | null;\n readonly state: \"available\" | \"partial\" | \"unavailable\";\n readonly source: \"reported\" | \"estimated\" | \"mixed\" | null;\n };\n readonly durationMs: OperationalMetric;\n readonly tokens: OperationalMetric;\n readonly coverage: readonly InspectionJson[];\n readonly issues: readonly InspectionJson[];\n readonly ref: InspectionAttemptRef | null;\n}\ninterface OperationalMetric {\n readonly value: number | null;\n readonly state: \"available\" | \"partial\" | \"unavailable\" | \"failed\";\n}\n/**\n * Selects the latest sealed occurrence of every Experiment/Eval/ordinal Slot\n * and closes the shared machine/Insight Overview without platform APIs.\n */\n// @concord-code ne-eval-inspection-select-overview\n// @concord-implements docs/feature/inspection/use-case/inspection-compare-quality-cost.md\n// @concord-implements docs/feature/insight/README.md\nexport function selectInspectionOverview(facts: InspectionFactSource | readonly LoadedInspectionRun[], supportingRuns?: readonly LoadedInspectionRun[]): InspectionOverview {\n const runs = isLoadedInspectionRuns(facts) ? facts : loadInspectionRuns(facts);\n const selected = selectLatestSlots(runs, supportingRuns ?? runs);\n return aggregateSelectedSlots(selected);\n}\nfunction aggregateSelectedSlots(selected: readonly SelectedSlot[]): InspectionOverview {\n const cells = groupSelectedSlots(selected, ({ experimentId, evalId }) => `${experimentId}\\u0000${evalId}`)\n .map((slots) => makeCell(slots, inspectionLabelKeys(selected.filter(({ experimentId }) => experimentId === slots[0]?.experimentId))));\n const experiments = groupSelectedSlots(selected, ({ experimentId }) => experimentId)\n .map((slots) => makeExperiment(slots, cells.filter(({ experimentId }) => experimentId === slots[0]?.experimentId), inspectionLabelKeys(slots)));\n return closeOverview({\n totals: aggregate(selected, scoreFromCells(cells)),\n experiments,\n cells,\n });\n}\nexport interface InspectionCurrentSlotInput {\n readonly experimentId: string;\n readonly evalId: string;\n readonly attemptOrdinal: number;\n readonly evaluationKind: \"pass\" | \"score\";\n readonly adapter: AdapterIdentity;\n readonly model: string | null;\n readonly labels: Readonly<Record<string, string>>;\n readonly recorded?: {\n readonly target: LoadedInspectionRun;\n readonly slot: RecordSlotIdentity;\n readonly member: MemberDocument;\n readonly resolved: ResolvedInspectionAttempt;\n };\n}\n/** Aggregate exactly the Host-assessed current positions; gaps add no value. */\nexport function aggregateInspectionCurrentSlots(inputs: readonly InspectionCurrentSlotInput[]): InspectionOverview {\n return aggregateSelectedSlots(inputs.map((input): SelectedSlot => {\n const recorded = input.recorded;\n return Object.freeze({\n ...input,\n ...(recorded ?? {}),\n member: recorded?.member,\n resolved: recorded?.resolved,\n analysis: recorded === undefined ? Object.freeze({\n assertionsState: \"attempt-missing\" as const,\n evaluationKind: input.evaluationKind === \"score\" ? \"points\" as const : \"pass\" as const,\n verdict: null,\n score: emptyAttemptScore(),\n costUSD: unavailableAttemptCost(),\n durationMs: unavailableOperationalMetric(),\n tokens: unavailableOperationalMetric(),\n coverage: Object.freeze([]),\n issues: Object.freeze([]),\n ref: null,\n }) : analyzeAttempt(recorded.resolved, recorded.target, recorded.member, recorded.slot),\n });\n }));\n}\nfunction isLoadedInspectionRuns(facts: InspectionFactSource | readonly LoadedInspectionRun[]): facts is readonly LoadedInspectionRun[] {\n return Array.isArray(facts);\n}\nfunction selectLatestSlots(runs: readonly LoadedInspectionRun[], resolutionRuns: readonly LoadedInspectionRun[] = runs): readonly SelectedSlot[] {\n const membersByRun = new Map(runs.map((run) => [run, new Map(run.members.map((member) => [member.slotId, member]))]));\n const latest = new Map<string, {\n readonly target: LoadedInspectionRun;\n readonly slot: RecordSlotIdentity;\n }>();\n for (const target of runs) {\n for (const slot of target.run.expectedSlots) {\n const key = `${target.run.experimentId}\\u0000${slot.evalId}\\u0000${slot.attemptOrdinal}`;\n const current = latest.get(key);\n if (current === undefined || compareOccurrence(target, current.target) > 0) {\n latest.set(key, Object.freeze({ target, slot }));\n }\n }\n }\n return Object.freeze([...latest.values()]\n .sort((left, right) => compareText(left.target.run.experimentId, right.target.run.experimentId) ||\n compareText(left.slot.evalId, right.slot.evalId) ||\n left.slot.attemptOrdinal - right.slot.attemptOrdinal ||\n compareText(left.target.run.runId, right.target.run.runId))\n .map(({ target, slot }): SelectedSlot => {\n const member = membersByRun.get(target)?.get(slot.slotId);\n const resolved = member === undefined\n ? undefined\n : resolveInspectionMemberAttempt(resolutionRuns, target, member);\n return Object.freeze({\n experimentId: target.run.experimentId,\n evalId: slot.evalId,\n attemptOrdinal: slot.attemptOrdinal,\n adapter: target.run.context.execution.adapter,\n model: target.run.context.execution.model,\n labels: target.run.context.labels,\n target,\n slot,\n member,\n resolved,\n analysis: analyzeAttempt(resolved, target, member, slot),\n });\n }));\n}\nfunction compareOccurrence(left: LoadedInspectionRun, right: LoadedInspectionRun): number {\n return left.run.completedAt - right.run.completedAt ||\n left.run.startedAt - right.run.startedAt ||\n compareText(left.run.runId, right.run.runId);\n}\nfunction analyzeAttempt(resolved: ResolvedInspectionAttempt | undefined, target: LoadedInspectionRun, member: MemberDocument | undefined, slot: RecordSlotIdentity): AttemptAnalysis {\n if (resolved === undefined) {\n const hasReference = member?.attempt !== undefined && member.attempt !== null;\n return Object.freeze({\n assertionsState: \"attempt-missing\" as const,\n evaluationKind: null,\n verdict: null,\n score: emptyAttemptScore(),\n costUSD: unavailableAttemptCost(),\n durationMs: unavailableOperationalMetric(),\n tokens: unavailableOperationalMetric(),\n coverage: Object.freeze([]),\n issues: Object.freeze([overviewIssue(hasReference ? \"attempt-origin-missing\" : \"attempt-not-observed\", target.run.runId, slot)]),\n ref: null,\n });\n }\n const ref = attemptRef(resolved.locator);\n const operational = attemptOperationalMetrics(resolved);\n const assertions = readInspectionAssertions(resolved);\n if (assertions.state !== \"available\") {\n return Object.freeze({\n assertionsState: assertions.state,\n evaluationKind: null,\n verdict: null,\n score: emptyAttemptScore(),\n costUSD: costUSDOf(resolved),\n ...operational,\n coverage: Object.freeze([Object.freeze({\n identity: ref.identity,\n state: assertions.state,\n })]),\n issues: assertions.issues,\n ref,\n });\n }\n let earned = 0;\n let possible = 0;\n let hasPoints = false;\n let earnedContributions = 0;\n let unavailableContributions = 0;\n const coverage: InspectionJson[] = [];\n const issues: InspectionJson[] = [];\n for (const entry of assertions.value.entries) {\n const contribution = entry.contribution;\n if (contribution.state === \"earned\") {\n hasPoints = true;\n earned += contribution.earned;\n possible += contribution.points;\n earnedContributions += 1;\n }\n else if (contribution.state === \"unavailable\") {\n hasPoints = true;\n possible += contribution.points;\n unavailableContributions += 1;\n issues.push(Object.freeze({\n code: \"score-contribution-unavailable\",\n locator: resolved.locator,\n entryId: entry.entryId,\n reason: contribution.reason,\n }));\n }\n coverage.push(Object.freeze({\n identity: ref.identity,\n entryId: entry.entryId,\n groupPath: Object.freeze([...entry.display.groupPath]),\n state: entry.materials.coverage.state,\n ...(entry.materials.coverage.state === \"complete\"\n ? {}\n : { reason: entry.materials.coverage.reason }),\n limitations: Object.freeze([...entry.materials.limitations]),\n }));\n }\n return Object.freeze({\n assertionsState: \"available\" as const,\n evaluationKind: hasPoints ? \"points\" as const : \"pass\" as const,\n verdict: foldRecordedAttemptVerdict({\n outcome: resolved.attempt.outcome,\n assertions: assertions.value,\n }),\n score: Object.freeze({\n hasPoints,\n earned,\n possible,\n hasValue: earnedContributions > 0,\n complete: hasPoints && unavailableContributions === 0,\n }),\n costUSD: costUSDOf(resolved),\n ...operational,\n coverage: Object.freeze(coverage),\n issues: Object.freeze(issues),\n ref,\n });\n}\nfunction makeCell(slots: readonly SelectedSlot[], labelKeys: readonly string[]): InspectionOverviewCell {\n const first = slots[0];\n if (first === undefined)\n throw new Error(\"Overview cell cannot be empty\");\n return Object.freeze({\n experimentId: first.experimentId,\n evalId: first.evalId,\n groupPath: groupPath(first.evalId),\n ...aggregate(slots, scoreForCell(slots)),\n members: Object.freeze(slots.flatMap((selected): readonly InspectionOverviewMember[] => {\n if (selected.target === undefined || selected.slot === undefined)\n return [];\n const resolved = selected.resolved;\n return [Object.freeze({\n runId: selected.target.run.runId,\n slotId: selected.slot.slotId,\n evalId: selected.slot.evalId,\n attemptOrdinal: selected.slot.attemptOrdinal,\n labels: inspectionLabels([selected], labelKeys),\n publication: overviewPublication(selected),\n })];\n })),\n });\n}\nfunction makeExperiment(slots: readonly SelectedSlot[], cells: readonly InspectionOverviewCell[], labelKeys: readonly string[]): InspectionOverviewExperiment {\n const first = slots[0];\n if (first === undefined)\n throw new Error(\"Overview Experiment cannot be empty\");\n const prefixes = new Map<string, SelectedSlot[]>();\n for (const selected of slots) {\n const path = groupPath(selected.evalId);\n for (let length = 1; length <= path.length; length += 1) {\n const prefix = path.slice(0, length);\n const key = prefix.join(\"\\u0000\");\n const values = prefixes.get(key);\n if (values === undefined)\n prefixes.set(key, [selected]);\n else\n values.push(selected);\n }\n }\n const groups = [...prefixes.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([key, values]): InspectionOverviewGroup => Object.freeze({\n groupPath: Object.freeze(key.split(\"\\u0000\")),\n ...aggregate(values, scoreFromCells(cells.filter((cell) => hasGroupPrefix(cell.groupPath, key.split(\"\\u0000\"))))),\n }));\n return Object.freeze({\n experimentId: first.experimentId,\n adapter: adapterValue(slots.map(({ adapter }) => adapter)),\n model: executionValue(slots.map(({ model }) => model)),\n labels: inspectionLabels(slots, labelKeys),\n ...aggregate(slots, scoreFromCells(cells)),\n groups: Object.freeze(groups),\n });\n}\nfunction adapterValue(values: readonly AdapterIdentity[]): InspectionAdapterValue {\n const first = values[0];\n if (first === undefined || values.some((value) => value.name !== first.name ||\n value.contract !== first.contract ||\n value.behaviorRevision !== first.behaviorRevision ||\n value.cleanupTimeoutMs !== first.cleanupTimeoutMs)) {\n return Object.freeze({ state: \"mixed\" as const });\n }\n return Object.freeze({ state: \"available\" as const, value: first });\n}\nfunction aggregate(slots: readonly SelectedSlot[], score: InspectionMetricValue): InspectionOverviewAggregate {\n const denominator = denominatorOf(slots);\n const tally = tallyOf(slots);\n const issues = uniqueJson(slots.flatMap(({ analysis }) => analysis.issues));\n return Object.freeze({\n evaluationKind: evaluationKindOf(slots),\n denominator,\n verdict: Object.freeze({\n tally,\n passRate: passRateOf(slots, denominator, tally),\n }),\n score,\n costUSD: costForSlots(slots),\n durationMs: metricForSlots(slots, \"durationMs\", \"ms\", \"average\"),\n tokens: metricForSlots(slots, \"tokens\", \"tokens\", \"sum\"),\n coverage: uniqueJson(slots.flatMap(({ analysis }) => analysis.coverage)),\n issues,\n });\n}\nfunction attemptOperationalMetrics(resolved: ResolvedInspectionAttempt): Pick<AttemptAnalysis, \"durationMs\" | \"tokens\"> {\n const timing = projectAttemptTiming(Object.freeze({\n runnerActivities: attemptAttachment(resolved, NiceEvalRecordAttachments.runnerActivities.attempt.family),\n }));\n const durationMs = timing.activities.reduce<number | null>((maximum, activity) => {\n const end = activity.startOffsetMs + activity.durationMs;\n return Math.max(maximum ?? 0, end);\n }, null);\n const adapterUsage = attemptAttachment(resolved, NiceEvalRecordAttachments.adapterUsage.family);\n const usage = projectAttemptUsage(Object.freeze({\n models: resolved.origin.run.context.execution.models,\n agentTurns: attemptAttachment(resolved, NiceEvalRecordAttachments.agentTurns.family),\n ...(adapterUsage === undefined ? {} : { adapterUsage }),\n }));\n const input = usage.totals.inputTokens.value;\n const output = usage.totals.outputTokens.value;\n const tokenValues = [input, output].filter((value): value is number => value !== null);\n const tokens = adapterUsage === undefined\n ? Object.freeze({\n value: tokenValues.length === 0 ? null : tokenValues.reduce((total, value) => total + value, 0),\n state: usage.state === \"invalid\"\n ? \"failed\" as const\n : tokenValues.length === 0\n ? \"unavailable\" as const\n : usage.state === \"complete\" && usage.totals.inputTokens.state === \"available\" &&\n usage.totals.outputTokens.state === \"available\"\n ? \"available\" as const\n : \"partial\" as const,\n })\n : projectAdapterUsageTokens(adapterUsage, resolved.origin.run.context.execution.models);\n return Object.freeze({\n durationMs: Object.freeze({\n value: durationMs,\n state: timing.state === \"invalid\"\n ? \"failed\" as const\n : durationMs === null\n ? \"unavailable\" as const\n : timing.state === \"complete\" && !timing.hasMore\n ? \"available\" as const\n : \"partial\" as const,\n }),\n tokens,\n });\n}\nfunction unavailableOperationalMetric(): OperationalMetric {\n return Object.freeze({ value: null, state: \"unavailable\" as const });\n}\nfunction metricForSlots(slots: readonly SelectedSlot[], key: \"durationMs\" | \"tokens\", unit: \"ms\" | \"tokens\", fold: \"average\" | \"sum\"): InspectionMetricValue {\n const valued = slots.filter(({ analysis }) => analysis[key].value !== null);\n const total = valued.reduce((sum, { analysis }) => sum + (analysis[key].value ?? 0), 0);\n const value = valued.length === 0 ? null : fold === \"average\" ? total / valued.length : total;\n const failed = slots.some(({ analysis }) => analysis[key].state === \"failed\");\n const partial = valued.length < slots.length || slots.some(({ analysis }) => analysis[key].state === \"partial\");\n return Object.freeze({\n value,\n state: failed ? \"failed\" : valued.length === 0 ? \"unavailable\" : partial ? \"partial\" : \"available\",\n samples: valued.length,\n total: slots.length,\n basis: \"slot\",\n issues: Object.freeze([]),\n refs: refsOf(valued),\n unit,\n bounds: Object.freeze({ min: 0, max: Math.max(0, value ?? 0) }),\n });\n}\nfunction overviewPublication(selected: SelectedSlot): InspectionOverviewMember[\"publication\"] {\n const { member, resolved } = selected;\n if (member === undefined)\n return Object.freeze({ state: \"pending\" as const });\n if (member.attempt === null) {\n return Object.freeze({\n state: \"absent\" as const,\n reason: member.absenceReason,\n });\n }\n if (resolved === undefined) {\n throw new Error(`Published Slot ${selected.slot?.slotId} has no readable Attempt`);\n }\n return Object.freeze({\n state: \"published\" as const,\n action: member.action,\n attemptId: member.attempt.attemptId,\n attemptLocator: resolved.locator,\n originRunId: member.attempt.originRunId,\n originSlotId: resolved.attempt.slotId,\n verdict: selected.analysis.verdict,\n score: scoreForMember(selected),\n costUSD: costForSlots([selected]),\n durationMs: metricForSlots([selected], \"durationMs\", \"ms\", \"average\"),\n tokens: metricForSlots([selected], \"tokens\", \"tokens\", \"sum\"),\n });\n}\nfunction executionValue(values: readonly (string | null)[]): InspectionExecutionValue {\n const distinct = new Set(values);\n if (distinct.size !== 1)\n return Object.freeze({ state: \"mixed\" as const });\n const value = values[0];\n return value === null || value === undefined\n ? Object.freeze({ state: \"unavailable\" as const })\n : Object.freeze({ state: \"available\" as const, value });\n}\nfunction inspectionLabelKeys(slots: readonly SelectedSlot[]): readonly string[] {\n return Object.freeze([...new Set(slots.flatMap(({ labels }) => Object.keys(labels)))].sort(compareText));\n}\nfunction inspectionLabels(slots: readonly SelectedSlot[], keys: readonly string[]): InspectionLabels {\n return Object.freeze(Object.fromEntries(keys.map((key) => [\n key,\n executionValue(slots.map(({ labels }) => labels[key] ?? null)),\n ])));\n}\nfunction costUSDOf(resolved: ResolvedInspectionAttempt): AttemptAnalysis[\"costUSD\"] {\n const adapterUsage = attemptAttachment(resolved, NiceEvalRecordAttachments.adapterUsage.family);\n if (adapterUsage !== undefined) {\n const usage = projectAttemptUsage(Object.freeze({ adapterUsage, models: resolved.origin.run.context.execution.models }));\n const costs = usage.totals.costs;\n const usd = costs?.values.find((value) => value.currency === \"USD\");\n if (costs === undefined || usd === undefined)\n return unavailableAttemptCost();\n const value = Number(usd.value);\n if (!Number.isFinite(value) || value < 0)\n return unavailableAttemptCost();\n const complete = costs.state === \"complete\" && costs.values.length === 1 &&\n usd.coveredCalls === costs.totalCalls;\n return Object.freeze({\n value,\n state: complete ? \"available\" as const : \"partial\" as const,\n source: usd.source,\n });\n }\n const attachment = attemptAttachment(resolved, NiceEvalRecordAttachments.attemptCost.family);\n if (attachment === undefined ||\n attachment.physical.familyRevision !== NiceEvalCurrentRecordAttachments.attemptCost.revision)\n return unavailableAttemptCost();\n const raw = attachment.value;\n if (!Predicate.isObject(raw))\n return unavailableAttemptCost();\n const decode = Schema.decodeUnknownResult(NiceEvalRecordAttachments.attemptCost.schema, { errors: \"all\", onExcessProperty: \"error\" });\n const observed = Reflect.has(raw, \"observed\")\n ? decode({ observed: Reflect.get(raw, \"observed\") })\n : undefined;\n if (observed !== undefined && Result.isFailure(observed))\n return unavailableAttemptCost();\n const estimated = Reflect.has(raw, \"estimated\")\n ? decode({ estimated: Reflect.get(raw, \"estimated\") })\n : undefined;\n if (estimated !== undefined && Result.isFailure(estimated))\n return unavailableAttemptCost();\n const reportedValue = observed?.success.observed?.amountUSD;\n if (reportedValue !== undefined) {\n return Object.freeze({ value: reportedValue, state: \"available\", source: \"reported\" });\n }\n const estimatedValue = estimated?.success.estimated?.amountUSD;\n return estimatedValue === undefined\n ? unavailableAttemptCost()\n : Object.freeze({ value: estimatedValue, state: \"available\", source: \"estimated\" });\n}\nfunction unavailableAttemptCost(): AttemptAnalysis[\"costUSD\"] {\n return Object.freeze({ value: null, state: \"unavailable\", source: null });\n}\nfunction costForSlots(slots: readonly SelectedSlot[]): InspectionCostMetricValue {\n const unique = new Map<string, SelectedSlot>();\n for (const slot of slots) {\n const key = slot.resolved?.locator ?? (slot.target === undefined ? `current:${slot.experimentId}:${slot.evalId}:${slot.attemptOrdinal}` : `slot:${slot.target.run.runId}:${slot.slot!.slotId}`);\n if (!unique.has(key))\n unique.set(key, slot);\n }\n const subjects = [...unique.values()];\n const valued = subjects.filter(({ analysis }) => analysis.costUSD.value !== null);\n const sources = new Set(valued.flatMap(({ analysis }) => analysis.costUSD.source === null ? [] : [analysis.costUSD.source]));\n const hasReported = sources.has(\"reported\") || sources.has(\"mixed\");\n const hasEstimated = sources.has(\"estimated\") || sources.has(\"mixed\");\n const source = hasReported && hasEstimated ? \"mixed\" as const\n : hasReported ? \"reported\" as const\n : hasEstimated ? \"estimated\" as const\n : null;\n const value = valued.length === 0\n ? null\n : valued.reduce((sum, { analysis }) => sum + analysis.costUSD.value!, 0);\n return Object.freeze({\n value,\n source,\n state: source === null\n ? \"unavailable\" as const\n : valued.length < subjects.length || valued.some(({ analysis }) => analysis.costUSD.state !== \"available\")\n ? \"partial\" as const\n : \"available\" as const,\n samples: valued.length,\n total: subjects.length,\n basis: \"slot\" as const,\n issues: Object.freeze([]),\n refs: refsOf(valued),\n unit: \"USD\" as const,\n bounds: Object.freeze({ min: 0, max: Math.max(0, value ?? 0) }),\n });\n}\nfunction denominatorOf(slots: readonly SelectedSlot[]): InspectionOverviewDenominator {\n const observed = slots.filter(({ resolved }) => resolved !== undefined).length;\n const classified = slots.filter(({ analysis }) => analysis.verdict !== null).length;\n return Object.freeze({\n expected: slots.length,\n observed,\n classified,\n missing: slots.length - observed,\n });\n}\nfunction tallyOf(slots: readonly SelectedSlot[]): InspectionVerdictTally {\n let passed = 0;\n let failed = 0;\n let errored = 0;\n let skipped = 0;\n for (const { analysis } of slots) {\n switch (analysis.verdict) {\n case \"passed\":\n passed += 1;\n break;\n case \"failed\":\n failed += 1;\n break;\n case \"errored\":\n errored += 1;\n break;\n case \"skipped\":\n skipped += 1;\n break;\n case null: break;\n }\n }\n return Object.freeze({ passed, failed, errored, skipped });\n}\nfunction passRateOf(slots: readonly SelectedSlot[], denominator: InspectionOverviewDenominator, tally: InspectionVerdictTally): InspectionMetricValue {\n const classified = slots.filter(({ analysis }) => analysis.verdict !== null);\n const issues = uniqueJson(slots.flatMap(({ analysis }) => analysis.verdict === null ? analysis.issues : []));\n return Object.freeze({\n value: denominator.classified === 0 ? null : tally.passed / denominator.classified,\n state: metricState({\n expected: denominator.expected,\n samples: denominator.classified,\n complete: denominator.classified === denominator.expected,\n analyses: slots.map(({ analysis }) => analysis),\n }),\n samples: denominator.classified,\n total: denominator.expected,\n basis: \"slot\" as const,\n issues,\n refs: refsOf(classified),\n });\n}\nfunction scoreForMember(selected: SelectedSlot): InspectionMetricValue {\n const { analysis } = selected;\n if (analysis.evaluationKind === \"pass\") {\n return Object.freeze({\n value: null,\n state: \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"slot\" as const,\n issues: Object.freeze([]),\n refs: analysis.ref === null ? Object.freeze([]) : Object.freeze([analysis.ref]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const hasValue = analysis.score.hasPoints && analysis.score.hasValue;\n const complete = hasValue && analysis.score.complete;\n return Object.freeze({\n value: hasValue ? analysis.score.earned : null,\n state: complete\n ? \"available\" as const\n : hasValue\n ? \"partial\" as const\n : metricState({\n expected: 1,\n samples: 0,\n complete: false,\n analyses: [analysis],\n }),\n samples: complete ? 1 : 0,\n total: 1,\n basis: \"slot\" as const,\n issues: uniqueJson([\n ...analysis.issues,\n ...(analysis.score.hasPoints && !analysis.score.complete\n ? [scorePartialIssue(analysis)]\n : []),\n ]),\n refs: analysis.ref === null ? Object.freeze([]) : Object.freeze([analysis.ref]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: analysis.score.possible }),\n });\n}\n/** One Experiment × Eval cell: complete point Attempts are averaged. */\nfunction scoreForCell(slots: readonly SelectedSlot[]): InspectionMetricValue {\n const knownPoints = slots.filter(({ analysis }) => analysis.evaluationKind === \"points\");\n const hasKnownPass = slots.some(({ analysis }) => analysis.evaluationKind === \"pass\");\n const unknown = slots.filter(({ analysis }) => analysis.evaluationKind === null);\n if (knownPoints.length === 0 && (hasKnownPass || unknown.length === 0)) {\n return Object.freeze({\n value: null,\n state: slots.length === 0 ? \"empty\" as const : \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"slot\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n // In mixed historical data, explicit pass Attempts are not point-eligible.\n // Unknown facts remain in the denominator once the cell is known to score.\n const eligible = knownPoints.length === 0\n ? unknown\n : slots.filter(({ analysis }) => analysis.evaluationKind !== \"pass\");\n // Earned-score coverage is independent of gate Verdict and ranking eligibility.\n const complete = eligible.filter(({ analysis }) => analysis.score.hasPoints &&\n analysis.score.hasValue &&\n analysis.score.complete);\n const earned = complete.reduce((sum, { analysis }) => sum + analysis.score.earned, 0);\n const possible = complete.length === 0\n ? 0\n : complete.reduce((sum, { analysis }) => sum + analysis.score.possible, 0) / complete.length;\n const issues = uniqueJson([\n ...eligible.flatMap(({ analysis }) => analysis.issues),\n ...eligible.flatMap(({ analysis }) => analysis.score.hasPoints && !analysis.score.complete\n ? [scorePartialIssue(analysis)]\n : []),\n ]);\n return Object.freeze({\n value: complete.length === 0 ? null : earned / complete.length,\n state: metricState({\n expected: eligible.length,\n samples: complete.length,\n complete: complete.length === eligible.length,\n analyses: eligible.map(({ analysis }) => analysis),\n }),\n samples: complete.length,\n total: eligible.length,\n basis: \"slot\" as const,\n issues,\n refs: refsOf(eligible),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: possible }),\n });\n}\n/** Experiment, path group, and total scores sum their visible cell means. */\nfunction scoreFromCells(cells: readonly InspectionOverviewCell[]): InspectionMetricValue {\n if (cells.length === 0) {\n return Object.freeze({\n value: null,\n state: \"empty\" as const,\n samples: 0,\n total: 0,\n basis: \"eval\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const eligible = cells.filter(({ evaluationKind }) => evaluationKind !== \"pass\");\n if (eligible.length === 0) {\n return Object.freeze({\n value: null,\n state: \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"eval\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const valued = eligible.filter(({ score }) => score.value !== null);\n const value = valued.length === 0\n ? null\n : valued.reduce((sum, { score }) => sum + (score.value ?? 0), 0);\n const state = valued.length > 0\n ? eligible.every(({ score }) => score.state === \"available\")\n ? \"available\" as const\n : \"partial\" as const\n : aggregateMetricState(eligible.map(({ score }) => score.state));\n return Object.freeze({\n value,\n state,\n samples: valued.length,\n total: eligible.length,\n basis: \"eval\" as const,\n issues: uniqueJson(eligible.flatMap(({ score }) => score.issues)),\n refs: uniqueRefs(eligible.flatMap(({ score }) => score.refs)),\n unit: \"points\" as const,\n bounds: Object.freeze({\n min: 0,\n max: eligible.reduce((sum, { score }) => sum + (score.bounds?.max ?? 0), 0),\n }),\n });\n}\nfunction metricState(input: {\n readonly expected: number;\n readonly samples: number;\n readonly complete: boolean;\n readonly analyses: readonly AttemptAnalysis[];\n}): InspectionMetricState {\n if (input.expected === 0)\n return \"empty\";\n if (input.samples > 0)\n return input.complete ? \"available\" : \"partial\";\n if (input.analyses.some(({ assertionsState }) => assertionsState === \"failed\")) {\n return \"failed\";\n }\n if (input.analyses.some(({ assertionsState }) => assertionsState === \"not-recorded\" || assertionsState === \"unsupported\") &&\n input.analyses.every(({ assertionsState }) => assertionsState !== \"available\" && assertionsState !== \"attempt-missing\")) {\n return \"unsupported\";\n }\n return \"unavailable\";\n}\nfunction evaluationKindOf(slots: readonly SelectedSlot[]): InspectionEvaluationKind {\n const hasPoints = slots.some(({ analysis }) => analysis.evaluationKind === \"points\");\n if (!hasPoints)\n return \"pass\";\n return slots.some(({ analysis }) => analysis.evaluationKind === \"pass\")\n ? \"mixed\"\n : \"points\";\n}\nfunction refsOf(slots: readonly SelectedSlot[]): readonly InspectionAttemptRef[] {\n const refs = new Map<string, InspectionAttemptRef>();\n for (const { analysis } of slots) {\n if (analysis.ref !== null)\n refs.set(analysis.ref.identity.locator, analysis.ref);\n }\n return Object.freeze([...refs.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, ref]) => ref));\n}\nfunction uniqueRefs(values: readonly InspectionAttemptRef[]): readonly InspectionAttemptRef[] {\n const refs = new Map<string, InspectionAttemptRef>();\n for (const ref of values)\n refs.set(ref.identity.locator, ref);\n return Object.freeze([...refs.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, ref]) => ref));\n}\nfunction aggregateMetricState(states: readonly InspectionMetricState[]): InspectionMetricState {\n if (states.length === 0)\n return \"empty\";\n if (states.some((state) => state === \"failed\"))\n return \"failed\";\n if (states.every((state) => state === \"unsupported\"))\n return \"unsupported\";\n if (states.some((state) => state === \"partial\"))\n return \"partial\";\n return \"unavailable\";\n}\nfunction scorePartialIssue(analysis: AttemptAnalysis): InspectionJson {\n return Object.freeze({\n code: \"score-partial\",\n locator: analysis.ref?.identity.locator ?? null,\n });\n}\nfunction groupSelectedSlots(slots: readonly SelectedSlot[], keyOf: (slot: SelectedSlot) => string): readonly (readonly SelectedSlot[])[] {\n const groups = new Map<string, SelectedSlot[]>();\n for (const slot of slots) {\n const key = keyOf(slot);\n const values = groups.get(key);\n if (values === undefined)\n groups.set(key, [slot]);\n else\n values.push(slot);\n }\n return Object.freeze([...groups.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, values]) => Object.freeze(values)));\n}\nfunction groupPath(evalId: string): readonly string[] {\n const segments = evalId.split(\"/\").filter((segment) => segment.length > 0);\n return Object.freeze(segments.slice(0, -1));\n}\nfunction hasGroupPrefix(path: readonly string[], prefix: readonly string[]): boolean {\n return prefix.length <= path.length &&\n prefix.every((segment, index) => path[index] === segment);\n}\nfunction attemptRef(locator: string): InspectionAttemptRef {\n return Object.freeze({\n identity: Object.freeze({ kind: \"attempt\" as const, locator }),\n });\n}\nfunction emptyAttemptScore(): AttemptAnalysis[\"score\"] {\n return Object.freeze({\n hasPoints: false,\n earned: 0,\n possible: 0,\n hasValue: false,\n complete: false,\n });\n}\nfunction overviewIssue(code: string, runId: string, slot: RecordSlotIdentity): InspectionJson {\n return Object.freeze({\n code,\n runId,\n slotId: slot.slotId,\n evalId: slot.evalId,\n attemptOrdinal: slot.attemptOrdinal,\n });\n}\nfunction uniqueJson(values: readonly InspectionJson[]): readonly InspectionJson[] {\n const byJson = new Map<string, InspectionJson>();\n for (const value of values)\n byJson.set(JSON.stringify(value), value);\n return Object.freeze([...byJson.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, value]) => value));\n}\nfunction closeOverview(value: InspectionOverview): InspectionOverview {\n const closed = closeInspectionJson(value);\n if (isInspectionCodecError(closed)) {\n throw closed;\n }\n return closed as unknown as InspectionOverview;\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"overview.js","sourceRoot":"","sources":["overview.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file\n// @concord-implements docs/feature/inspection/README.md\n// @concord-implements docs/feature/inspection/use-case/inspection-compare-quality-cost.md\n// @concord-implements docs/feature/insight/README.md\nimport { PlannedAttemptPublicationSchema } from \"./planned-attempt.ts\";\nimport { foldRecordedAttemptVerdict } from \"../eval/record/verdict.ts\";\nimport type { VerdictState } from \"../eval/record/verdict.ts\";\nimport { Predicate, Result, Schema } from \"effect\";\nimport type { MemberDocument, RecordSlotIdentity } from \"../record/model/core.ts\";\nimport type { RunPluginIdentity, AdapterIdentity } from \"../record/model/run-context.ts\";\nimport { NiceEvalCurrentRecordAttachments, NiceEvalRecordAttachments, } from \"../record/family/current.ts\";\nimport { closeInspectionJson, isInspectionCodecError, type InspectionJson, } from \"./codec.ts\";\nimport { attemptAttachment, loadInspectionRuns, readInspectionAssertions, resolveInspectionMemberAttempt, type InspectionAssertionsRead, type LoadedInspectionRun, type ResolvedInspectionAttempt, } from \"./facts.ts\";\nimport type { InspectionFactSource } from \"./source.ts\";\nimport { projectAdapterUsageTokens, projectAttemptTiming, projectAttemptUsage, } from \"./trace.ts\";\nexport type InspectionMetricState = \"available\" | \"partial\" | \"unavailable\" | \"empty\" | \"unsupported\" | \"failed\";\nexport interface InspectionAttemptRef {\n readonly identity: {\n readonly kind: \"attempt\";\n readonly locator: string;\n };\n}\nexport interface InspectionMetricValue {\n readonly value: number | null;\n readonly state: InspectionMetricState;\n readonly samples: number;\n readonly total: number;\n readonly basis: \"planned-attempt\" | \"eval\";\n readonly issues: readonly InspectionJson[];\n readonly refs: readonly InspectionAttemptRef[];\n readonly unit?: \"points\" | \"USD\" | \"ms\" | \"tokens\";\n readonly bounds?: {\n readonly min: number;\n readonly max: number;\n };\n}\nexport interface InspectionCostMetricValue extends InspectionMetricValue {\n readonly source: \"reported\" | \"estimated\" | \"mixed\" | null;\n}\nexport interface InspectionOverviewDenominator {\n readonly expected: number;\n readonly observed: number;\n readonly classified: number;\n readonly missing: number;\n}\nexport interface InspectionVerdictTally {\n readonly passed: number;\n readonly failed: number;\n readonly errored: number;\n readonly skipped: number;\n}\nexport type InspectionEvaluationKind = \"pass\" | \"points\" | \"mixed\";\nexport interface InspectionOverviewAggregate {\n readonly evaluationKind: InspectionEvaluationKind;\n readonly denominator: InspectionOverviewDenominator;\n readonly verdict: {\n readonly tally: InspectionVerdictTally;\n readonly passRate: InspectionMetricValue;\n };\n readonly score: InspectionMetricValue;\n readonly costUSD: InspectionCostMetricValue;\n readonly durationMs: InspectionMetricValue;\n readonly tokens: InspectionMetricValue;\n readonly coverage: readonly InspectionJson[];\n readonly issues: readonly InspectionJson[];\n}\nexport interface InspectionOverviewMember {\n readonly runId: string;\n readonly plannedAttemptId: string;\n readonly evalId: string;\n readonly attemptOrdinal: number;\n readonly labels: InspectionLabels;\n readonly publication: Exclude<Schema.Schema.Type<typeof PlannedAttemptPublicationSchema>, {\n readonly state: \"published\";\n }> | (Extract<Schema.Schema.Type<typeof PlannedAttemptPublicationSchema>, {\n readonly state: \"published\";\n }> & {\n readonly verdict: VerdictState | null;\n readonly score: InspectionMetricValue;\n readonly costUSD: InspectionCostMetricValue;\n readonly durationMs: InspectionMetricValue;\n readonly tokens: InspectionMetricValue;\n });\n}\nexport interface InspectionOverviewCell extends InspectionOverviewAggregate {\n readonly experimentId: string;\n readonly evalId: string;\n readonly groupPath: readonly string[];\n readonly members: readonly InspectionOverviewMember[];\n}\nexport interface InspectionOverviewGroup extends InspectionOverviewAggregate {\n readonly groupPath: readonly string[];\n}\nexport interface InspectionOverviewExperiment extends InspectionOverviewAggregate {\n readonly plugins: readonly RunPluginIdentity[];\n readonly experimentId: string;\n readonly adapter: InspectionAdapterValue;\n readonly model: InspectionExecutionValue;\n readonly labels: InspectionLabels;\n readonly groups: readonly InspectionOverviewGroup[];\n}\nexport type InspectionExecutionValue = {\n readonly state: \"available\";\n readonly value: string;\n} | {\n readonly state: \"mixed\";\n} | {\n readonly state: \"unavailable\";\n};\nexport type InspectionAdapterValue = {\n readonly state: \"available\";\n readonly value: AdapterIdentity;\n} | {\n readonly state: \"mixed\";\n};\nexport type InspectionLabels = Readonly<Record<string, InspectionExecutionValue>>;\nexport interface InspectionOverview {\n readonly totals: InspectionOverviewAggregate;\n readonly experiments: readonly InspectionOverviewExperiment[];\n readonly cells: readonly InspectionOverviewCell[];\n}\ninterface SelectedSlot {\n readonly experimentId: string;\n readonly evalId: string;\n readonly attemptOrdinal: number;\n readonly adapter: AdapterIdentity;\n readonly model: string | null;\n readonly labels: Readonly<Record<string, string>>;\n readonly target?: LoadedInspectionRun;\n readonly slot?: RecordSlotIdentity;\n readonly member: MemberDocument | undefined;\n readonly resolved: ResolvedInspectionAttempt | undefined;\n readonly analysis: AttemptAnalysis;\n}\ninterface AttemptAnalysis {\n readonly assertionsState: InspectionAssertionsRead[\"state\"] | \"attempt-missing\";\n readonly evaluationKind: \"pass\" | \"points\" | null;\n readonly verdict: VerdictState | null;\n readonly score: {\n readonly hasPoints: boolean;\n readonly earned: number;\n readonly possible: number;\n readonly hasValue: boolean;\n readonly complete: boolean;\n };\n readonly costUSD: {\n readonly value: number | null;\n readonly state: \"available\" | \"partial\" | \"unavailable\";\n readonly source: \"reported\" | \"estimated\" | \"mixed\" | null;\n };\n readonly durationMs: OperationalMetric;\n readonly tokens: OperationalMetric;\n readonly coverage: readonly InspectionJson[];\n readonly issues: readonly InspectionJson[];\n readonly ref: InspectionAttemptRef | null;\n}\ninterface OperationalMetric {\n readonly value: number | null;\n readonly state: \"available\" | \"partial\" | \"unavailable\" | \"failed\";\n}\n/**\n * Selects the latest sealed occurrence of every Experiment/Eval/ordinal Slot\n * and closes the shared machine/Insight Overview without platform APIs.\n */\n// @concord-code\n// @concord-implements docs/feature/inspection/use-case/inspection-compare-quality-cost.md\n// @concord-implements docs/feature/insight/README.md\nexport function selectInspectionOverview(facts: InspectionFactSource | readonly LoadedInspectionRun[], supportingRuns?: readonly LoadedInspectionRun[]): InspectionOverview {\n const runs = isLoadedInspectionRuns(facts) ? facts : loadInspectionRuns(facts);\n const selected = selectLatestSlots(runs, supportingRuns ?? runs);\n return aggregateSelectedSlots(selected);\n}\nfunction aggregateSelectedSlots(selected: readonly SelectedSlot[]): InspectionOverview {\n const cells = groupSelectedSlots(selected, ({ experimentId, evalId }) => `${experimentId}\\u0000${evalId}`)\n .map((slots) => makeCell(slots, inspectionLabelKeys(selected.filter(({ experimentId }) => experimentId === slots[0]?.experimentId))));\n const experiments = groupSelectedSlots(selected, ({ experimentId }) => experimentId)\n .map((slots) => makeExperiment(slots, cells.filter(({ experimentId }) => experimentId === slots[0]?.experimentId), inspectionLabelKeys(slots)));\n return closeOverview({\n totals: aggregate(selected, scoreFromCells(cells)),\n experiments,\n cells,\n });\n}\nexport interface InspectionCurrentSlotInput {\n readonly experimentId: string;\n readonly evalId: string;\n readonly attemptOrdinal: number;\n readonly evaluationKind: \"pass\" | \"score\";\n readonly adapter: AdapterIdentity;\n readonly model: string | null;\n readonly labels: Readonly<Record<string, string>>;\n readonly recorded?: {\n readonly target: LoadedInspectionRun;\n readonly slot: RecordSlotIdentity;\n readonly member: MemberDocument;\n readonly resolved: ResolvedInspectionAttempt;\n };\n}\n/** Aggregate exactly the Host-assessed current positions; gaps add no value. */\nexport function aggregateInspectionCurrentSlots(inputs: readonly InspectionCurrentSlotInput[]): InspectionOverview {\n return aggregateSelectedSlots(inputs.map((input): SelectedSlot => {\n const recorded = input.recorded;\n return Object.freeze({\n ...input,\n ...(recorded ?? {}),\n member: recorded?.member,\n resolved: recorded?.resolved,\n analysis: recorded === undefined ? Object.freeze({\n assertionsState: \"attempt-missing\" as const,\n evaluationKind: input.evaluationKind === \"score\" ? \"points\" as const : \"pass\" as const,\n verdict: null,\n score: emptyAttemptScore(),\n costUSD: unavailableAttemptCost(),\n durationMs: unavailableOperationalMetric(),\n tokens: unavailableOperationalMetric(),\n coverage: Object.freeze([]),\n issues: Object.freeze([]),\n ref: null,\n }) : analyzeAttempt(recorded.resolved, recorded.target, recorded.member, recorded.slot),\n });\n }));\n}\nfunction isLoadedInspectionRuns(facts: InspectionFactSource | readonly LoadedInspectionRun[]): facts is readonly LoadedInspectionRun[] {\n return Array.isArray(facts);\n}\nfunction selectLatestSlots(runs: readonly LoadedInspectionRun[], resolutionRuns: readonly LoadedInspectionRun[] = runs): readonly SelectedSlot[] {\n const membersByRun = new Map(runs.map((run) => [run, new Map(run.members.map((member) => [member.slotId, member]))]));\n const latest = new Map<string, {\n readonly target: LoadedInspectionRun;\n readonly slot: RecordSlotIdentity;\n }>();\n for (const target of runs) {\n for (const slot of target.run.expectedSlots) {\n const key = `${target.run.experimentId}\\u0000${slot.evalId}\\u0000${slot.attemptOrdinal}`;\n const current = latest.get(key);\n if (current === undefined || compareOccurrence(target, current.target) > 0) {\n latest.set(key, Object.freeze({ target, slot }));\n }\n }\n }\n return Object.freeze([...latest.values()]\n .sort((left, right) => compareText(left.target.run.experimentId, right.target.run.experimentId) ||\n compareText(left.slot.evalId, right.slot.evalId) ||\n left.slot.attemptOrdinal - right.slot.attemptOrdinal ||\n compareText(left.target.run.runId, right.target.run.runId))\n .map(({ target, slot }): SelectedSlot => {\n const member = membersByRun.get(target)?.get(slot.slotId);\n const resolved = member === undefined\n ? undefined\n : resolveInspectionMemberAttempt(resolutionRuns, target, member);\n return Object.freeze({\n experimentId: target.run.experimentId,\n evalId: slot.evalId,\n attemptOrdinal: slot.attemptOrdinal,\n adapter: target.run.context.execution.adapter,\n model: target.run.context.execution.model,\n labels: target.run.context.labels,\n target,\n slot,\n member,\n resolved,\n analysis: analyzeAttempt(resolved, target, member, slot),\n });\n }));\n}\nfunction compareOccurrence(left: LoadedInspectionRun, right: LoadedInspectionRun): number {\n return left.run.completedAt - right.run.completedAt ||\n left.run.startedAt - right.run.startedAt ||\n compareText(left.run.runId, right.run.runId);\n}\nfunction analyzeAttempt(resolved: ResolvedInspectionAttempt | undefined, target: LoadedInspectionRun, member: MemberDocument | undefined, slot: RecordSlotIdentity): AttemptAnalysis {\n if (resolved === undefined) {\n const hasReference = member?.attempt !== undefined && member.attempt !== null;\n return Object.freeze({\n assertionsState: \"attempt-missing\" as const,\n evaluationKind: null,\n verdict: null,\n score: emptyAttemptScore(),\n costUSD: unavailableAttemptCost(),\n durationMs: unavailableOperationalMetric(),\n tokens: unavailableOperationalMetric(),\n coverage: Object.freeze([]),\n issues: Object.freeze([overviewIssue(hasReference ? \"attempt-origin-missing\" : \"attempt-not-observed\", target.run.runId, slot)]),\n ref: null,\n });\n }\n const ref = attemptRef(resolved.locator);\n const operational = attemptOperationalMetrics(resolved);\n const assertions = readInspectionAssertions(resolved);\n if (assertions.state !== \"available\") {\n return Object.freeze({\n assertionsState: assertions.state,\n evaluationKind: null,\n verdict: null,\n score: emptyAttemptScore(),\n costUSD: costUSDOf(resolved),\n ...operational,\n coverage: Object.freeze([Object.freeze({\n identity: ref.identity,\n state: assertions.state,\n })]),\n issues: assertions.issues,\n ref,\n });\n }\n let earned = 0;\n let possible = 0;\n let hasPoints = false;\n let earnedContributions = 0;\n let unavailableContributions = 0;\n const coverage: InspectionJson[] = [];\n const issues: InspectionJson[] = [];\n for (const entry of assertions.value.entries) {\n const contribution = entry.contribution;\n if (contribution.state === \"earned\") {\n hasPoints = true;\n earned += contribution.earned;\n possible += contribution.points;\n earnedContributions += 1;\n }\n else if (contribution.state === \"unavailable\") {\n hasPoints = true;\n possible += contribution.points;\n unavailableContributions += 1;\n issues.push(Object.freeze({\n code: \"score-contribution-unavailable\",\n locator: resolved.locator,\n entryId: entry.entryId,\n reason: contribution.reason,\n }));\n }\n coverage.push(Object.freeze({\n identity: ref.identity,\n entryId: entry.entryId,\n groupPath: Object.freeze([...entry.display.groupPath]),\n state: entry.materials.coverage.state,\n ...(entry.materials.coverage.state === \"complete\"\n ? {}\n : { reason: entry.materials.coverage.reason }),\n limitations: Object.freeze([...entry.materials.limitations]),\n }));\n }\n return Object.freeze({\n assertionsState: \"available\" as const,\n evaluationKind: hasPoints ? \"points\" as const : \"pass\" as const,\n verdict: foldRecordedAttemptVerdict({\n outcome: resolved.attempt.outcome,\n assertions: assertions.value,\n }),\n score: Object.freeze({\n hasPoints,\n earned,\n possible,\n hasValue: earnedContributions > 0,\n complete: hasPoints && unavailableContributions === 0,\n }),\n costUSD: costUSDOf(resolved),\n ...operational,\n coverage: Object.freeze(coverage),\n issues: Object.freeze(issues),\n ref,\n });\n}\nfunction makeCell(slots: readonly SelectedSlot[], labelKeys: readonly string[]): InspectionOverviewCell {\n const first = slots[0];\n if (first === undefined)\n throw new Error(\"Overview cell cannot be empty\");\n return Object.freeze({\n experimentId: first.experimentId,\n evalId: first.evalId,\n groupPath: groupPath(first.evalId),\n ...aggregate(slots, scoreForCell(slots)),\n members: Object.freeze(slots.flatMap((selected): readonly InspectionOverviewMember[] => {\n if (selected.target === undefined || selected.slot === undefined)\n return [];\n const resolved = selected.resolved;\n return [Object.freeze({\n runId: selected.target.run.runId,\n plannedAttemptId: selected.slot.slotId,\n evalId: selected.slot.evalId,\n attemptOrdinal: selected.slot.attemptOrdinal,\n labels: inspectionLabels([selected], labelKeys),\n publication: overviewPublication(selected),\n })];\n })),\n });\n}\nfunction makeExperiment(slots: readonly SelectedSlot[], cells: readonly InspectionOverviewCell[], labelKeys: readonly string[]): InspectionOverviewExperiment {\n const first = slots[0];\n if (first === undefined)\n throw new Error(\"Overview Experiment cannot be empty\");\n const prefixes = new Map<string, SelectedSlot[]>();\n for (const selected of slots) {\n const path = groupPath(selected.evalId);\n for (let length = 1; length <= path.length; length += 1) {\n const prefix = path.slice(0, length);\n const key = prefix.join(\"\\u0000\");\n const values = prefixes.get(key);\n if (values === undefined)\n prefixes.set(key, [selected]);\n else\n values.push(selected);\n }\n }\n const groups = [...prefixes.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([key, values]): InspectionOverviewGroup => Object.freeze({\n groupPath: Object.freeze(key.split(\"\\u0000\")),\n ...aggregate(values, scoreFromCells(cells.filter((cell) => hasGroupPrefix(cell.groupPath, key.split(\"\\u0000\"))))),\n }));\n return Object.freeze({\n experimentId: first.experimentId,\n plugins: Object.freeze([...new Map(slots.flatMap(({ target }) => target?.run.context.execution.plugins ?? []).map((plugin) => [JSON.stringify(plugin), plugin])).values()]),\n adapter: adapterValue(slots.map(({ adapter }) => adapter)),\n model: executionValue(slots.map(({ model }) => model)),\n labels: inspectionLabels(slots, labelKeys),\n ...aggregate(slots, scoreFromCells(cells)),\n groups: Object.freeze(groups),\n });\n}\nfunction adapterValue(values: readonly AdapterIdentity[]): InspectionAdapterValue {\n const first = values[0];\n if (first === undefined || values.some((value) => value.name !== first.name ||\n value.contract !== first.contract ||\n value.behaviorRevision !== first.behaviorRevision ||\n value.cleanupTimeoutMs !== first.cleanupTimeoutMs)) {\n return Object.freeze({ state: \"mixed\" as const });\n }\n return Object.freeze({ state: \"available\" as const, value: first });\n}\nfunction aggregate(slots: readonly SelectedSlot[], score: InspectionMetricValue): InspectionOverviewAggregate {\n const denominator = denominatorOf(slots);\n const tally = tallyOf(slots);\n const issues = uniqueJson(slots.flatMap(({ analysis }) => analysis.issues));\n return Object.freeze({\n evaluationKind: evaluationKindOf(slots),\n denominator,\n verdict: Object.freeze({\n tally,\n passRate: passRateOf(slots, denominator, tally),\n }),\n score,\n costUSD: costForSlots(slots),\n durationMs: metricForSlots(slots, \"durationMs\", \"ms\", \"average\"),\n tokens: metricForSlots(slots, \"tokens\", \"tokens\", \"sum\"),\n coverage: uniqueJson(slots.flatMap(({ analysis }) => analysis.coverage)),\n issues,\n });\n}\nfunction attemptOperationalMetrics(resolved: ResolvedInspectionAttempt): Pick<AttemptAnalysis, \"durationMs\" | \"tokens\"> {\n const timing = projectAttemptTiming(Object.freeze({\n runnerActivities: attemptAttachment(resolved, NiceEvalRecordAttachments.runnerActivities.attempt.family),\n }));\n const durationMs = timing.activities.reduce<number | null>((maximum, activity) => {\n const end = activity.startOffsetMs + activity.durationMs;\n return Math.max(maximum ?? 0, end);\n }, null);\n const adapterUsage = attemptAttachment(resolved, NiceEvalRecordAttachments.adapterUsage.family);\n const usage = projectAttemptUsage(Object.freeze({\n models: resolved.origin.run.context.execution.models,\n agentTurns: attemptAttachment(resolved, NiceEvalRecordAttachments.agentTurns.family),\n ...(adapterUsage === undefined ? {} : { adapterUsage }),\n }));\n const input = usage.totals.inputTokens.value;\n const output = usage.totals.outputTokens.value;\n const tokenValues = [input, output].filter((value): value is number => value !== null);\n const tokens = adapterUsage === undefined\n ? Object.freeze({\n value: tokenValues.length === 0 ? null : tokenValues.reduce((total, value) => total + value, 0),\n state: usage.state === \"invalid\"\n ? \"failed\" as const\n : tokenValues.length === 0\n ? \"unavailable\" as const\n : usage.state === \"complete\" && usage.totals.inputTokens.state === \"available\" &&\n usage.totals.outputTokens.state === \"available\"\n ? \"available\" as const\n : \"partial\" as const,\n })\n : projectAdapterUsageTokens(adapterUsage, resolved.origin.run.context.execution.models);\n return Object.freeze({\n durationMs: Object.freeze({\n value: durationMs,\n state: timing.state === \"invalid\"\n ? \"failed\" as const\n : durationMs === null\n ? \"unavailable\" as const\n : timing.state === \"complete\" && !timing.hasMore\n ? \"available\" as const\n : \"partial\" as const,\n }),\n tokens,\n });\n}\nfunction unavailableOperationalMetric(): OperationalMetric {\n return Object.freeze({ value: null, state: \"unavailable\" as const });\n}\nfunction metricForSlots(slots: readonly SelectedSlot[], key: \"durationMs\" | \"tokens\", unit: \"ms\" | \"tokens\", fold: \"average\" | \"sum\"): InspectionMetricValue {\n const valued = slots.filter(({ analysis }) => analysis[key].value !== null);\n const total = valued.reduce((sum, { analysis }) => sum + (analysis[key].value ?? 0), 0);\n const value = valued.length === 0 ? null : fold === \"average\" ? total / valued.length : total;\n const failed = slots.some(({ analysis }) => analysis[key].state === \"failed\");\n const partial = valued.length < slots.length || slots.some(({ analysis }) => analysis[key].state === \"partial\");\n return Object.freeze({\n value,\n state: failed ? \"failed\" : valued.length === 0 ? \"unavailable\" : partial ? \"partial\" : \"available\",\n samples: valued.length,\n total: slots.length,\n basis: \"planned-attempt\",\n issues: Object.freeze([]),\n refs: refsOf(valued),\n unit,\n bounds: Object.freeze({ min: 0, max: Math.max(0, value ?? 0) }),\n });\n}\nfunction overviewPublication(selected: SelectedSlot): InspectionOverviewMember[\"publication\"] {\n const { member, resolved } = selected;\n if (member === undefined)\n return Object.freeze({ state: \"pending\" as const });\n if (member.attempt === null) {\n return Object.freeze({\n state: \"absent\" as const,\n reason: member.absenceReason,\n });\n }\n if (resolved === undefined) {\n throw new Error(`Published Slot ${selected.slot?.slotId} has no readable Attempt`);\n }\n return Object.freeze({\n state: \"published\" as const,\n action: member.action,\n attemptId: member.attempt.attemptId,\n attemptLocator: resolved.locator,\n originRunId: member.attempt.originRunId,\n originPlannedAttemptId: resolved.attempt.slotId,\n verdict: selected.analysis.verdict,\n score: scoreForMember(selected),\n costUSD: costForSlots([selected]),\n durationMs: metricForSlots([selected], \"durationMs\", \"ms\", \"average\"),\n tokens: metricForSlots([selected], \"tokens\", \"tokens\", \"sum\"),\n });\n}\nfunction executionValue(values: readonly (string | null)[]): InspectionExecutionValue {\n const distinct = new Set(values);\n if (distinct.size !== 1)\n return Object.freeze({ state: \"mixed\" as const });\n const value = values[0];\n return value === null || value === undefined\n ? Object.freeze({ state: \"unavailable\" as const })\n : Object.freeze({ state: \"available\" as const, value });\n}\nfunction inspectionLabelKeys(slots: readonly SelectedSlot[]): readonly string[] {\n return Object.freeze([...new Set(slots.flatMap(({ labels }) => Object.keys(labels)))].sort(compareText));\n}\nfunction inspectionLabels(slots: readonly SelectedSlot[], keys: readonly string[]): InspectionLabels {\n return Object.freeze(Object.fromEntries(keys.map((key) => [\n key,\n executionValue(slots.map(({ labels }) => labels[key] ?? null)),\n ])));\n}\nfunction costUSDOf(resolved: ResolvedInspectionAttempt): AttemptAnalysis[\"costUSD\"] {\n const adapterUsage = attemptAttachment(resolved, NiceEvalRecordAttachments.adapterUsage.family);\n if (adapterUsage !== undefined) {\n const usage = projectAttemptUsage(Object.freeze({ adapterUsage, models: resolved.origin.run.context.execution.models }));\n const costs = usage.totals.costs;\n const usd = costs?.values.find((value) => value.currency === \"USD\");\n if (costs === undefined || usd === undefined)\n return unavailableAttemptCost();\n const value = Number(usd.value);\n if (!Number.isFinite(value) || value < 0)\n return unavailableAttemptCost();\n const complete = costs.state === \"complete\" && costs.values.length === 1 &&\n usd.coveredCalls === costs.totalCalls;\n return Object.freeze({\n value,\n state: complete ? \"available\" as const : \"partial\" as const,\n source: usd.source,\n });\n }\n const attachment = attemptAttachment(resolved, NiceEvalRecordAttachments.attemptCost.family);\n if (attachment === undefined ||\n attachment.physical.familyRevision !== NiceEvalCurrentRecordAttachments.attemptCost.revision)\n return unavailableAttemptCost();\n const raw = attachment.value;\n if (!Predicate.isObject(raw))\n return unavailableAttemptCost();\n const decode = Schema.decodeUnknownResult(NiceEvalRecordAttachments.attemptCost.schema, { errors: \"all\", onExcessProperty: \"error\" });\n const observed = Reflect.has(raw, \"observed\")\n ? decode({ observed: Reflect.get(raw, \"observed\") })\n : undefined;\n if (observed !== undefined && Result.isFailure(observed))\n return unavailableAttemptCost();\n const estimated = Reflect.has(raw, \"estimated\")\n ? decode({ estimated: Reflect.get(raw, \"estimated\") })\n : undefined;\n if (estimated !== undefined && Result.isFailure(estimated))\n return unavailableAttemptCost();\n const reportedValue = observed?.success.observed?.amountUSD;\n if (reportedValue !== undefined) {\n return Object.freeze({ value: reportedValue, state: \"available\", source: \"reported\" });\n }\n const estimatedValue = estimated?.success.estimated?.amountUSD;\n return estimatedValue === undefined\n ? unavailableAttemptCost()\n : Object.freeze({ value: estimatedValue, state: \"available\", source: \"estimated\" });\n}\nfunction unavailableAttemptCost(): AttemptAnalysis[\"costUSD\"] {\n return Object.freeze({ value: null, state: \"unavailable\", source: null });\n}\nfunction costForSlots(slots: readonly SelectedSlot[]): InspectionCostMetricValue {\n const unique = new Map<string, SelectedSlot>();\n for (const slot of slots) {\n const key = slot.resolved?.locator ?? (slot.target === undefined ? `current:${slot.experimentId}:${slot.evalId}:${slot.attemptOrdinal}` : `slot:${slot.target.run.runId}:${slot.slot!.slotId}`);\n if (!unique.has(key))\n unique.set(key, slot);\n }\n const subjects = [...unique.values()];\n const valued = subjects.filter(({ analysis }) => analysis.costUSD.value !== null);\n const sources = new Set(valued.flatMap(({ analysis }) => analysis.costUSD.source === null ? [] : [analysis.costUSD.source]));\n const hasReported = sources.has(\"reported\") || sources.has(\"mixed\");\n const hasEstimated = sources.has(\"estimated\") || sources.has(\"mixed\");\n const source = hasReported && hasEstimated ? \"mixed\" as const\n : hasReported ? \"reported\" as const\n : hasEstimated ? \"estimated\" as const\n : null;\n const value = valued.length === 0\n ? null\n : valued.reduce((sum, { analysis }) => sum + analysis.costUSD.value!, 0);\n return Object.freeze({\n value,\n source,\n state: source === null\n ? \"unavailable\" as const\n : valued.length < subjects.length || valued.some(({ analysis }) => analysis.costUSD.state !== \"available\")\n ? \"partial\" as const\n : \"available\" as const,\n samples: valued.length,\n total: subjects.length,\n basis: \"planned-attempt\" as const,\n issues: Object.freeze([]),\n refs: refsOf(valued),\n unit: \"USD\" as const,\n bounds: Object.freeze({ min: 0, max: Math.max(0, value ?? 0) }),\n });\n}\nfunction denominatorOf(slots: readonly SelectedSlot[]): InspectionOverviewDenominator {\n const observed = slots.filter(({ resolved }) => resolved !== undefined).length;\n const classified = slots.filter(({ analysis }) => analysis.verdict !== null).length;\n return Object.freeze({\n expected: slots.length,\n observed,\n classified,\n missing: slots.length - observed,\n });\n}\nfunction tallyOf(slots: readonly SelectedSlot[]): InspectionVerdictTally {\n let passed = 0;\n let failed = 0;\n let errored = 0;\n let skipped = 0;\n for (const { analysis } of slots) {\n switch (analysis.verdict) {\n case \"passed\":\n passed += 1;\n break;\n case \"failed\":\n failed += 1;\n break;\n case \"errored\":\n errored += 1;\n break;\n case \"skipped\":\n skipped += 1;\n break;\n case null: break;\n }\n }\n return Object.freeze({ passed, failed, errored, skipped });\n}\nfunction passRateOf(slots: readonly SelectedSlot[], denominator: InspectionOverviewDenominator, tally: InspectionVerdictTally): InspectionMetricValue {\n const classified = slots.filter(({ analysis }) => analysis.verdict !== null);\n const issues = uniqueJson(slots.flatMap(({ analysis }) => analysis.verdict === null ? analysis.issues : []));\n return Object.freeze({\n value: denominator.classified === 0 ? null : tally.passed / denominator.classified,\n state: metricState({\n expected: denominator.expected,\n samples: denominator.classified,\n complete: denominator.classified === denominator.expected,\n analyses: slots.map(({ analysis }) => analysis),\n }),\n samples: denominator.classified,\n total: denominator.expected,\n basis: \"planned-attempt\" as const,\n issues,\n refs: refsOf(classified),\n });\n}\nfunction scoreForMember(selected: SelectedSlot): InspectionMetricValue {\n const { analysis } = selected;\n if (analysis.evaluationKind === \"pass\") {\n return Object.freeze({\n value: null,\n state: \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"planned-attempt\" as const,\n issues: Object.freeze([]),\n refs: analysis.ref === null ? Object.freeze([]) : Object.freeze([analysis.ref]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const hasValue = analysis.score.hasPoints && analysis.score.hasValue;\n const complete = hasValue && analysis.score.complete;\n return Object.freeze({\n value: hasValue ? analysis.score.earned : null,\n state: complete\n ? \"available\" as const\n : hasValue\n ? \"partial\" as const\n : metricState({\n expected: 1,\n samples: 0,\n complete: false,\n analyses: [analysis],\n }),\n samples: complete ? 1 : 0,\n total: 1,\n basis: \"planned-attempt\" as const,\n issues: uniqueJson([\n ...analysis.issues,\n ...(analysis.score.hasPoints && !analysis.score.complete\n ? [scorePartialIssue(analysis)]\n : []),\n ]),\n refs: analysis.ref === null ? Object.freeze([]) : Object.freeze([analysis.ref]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: analysis.score.possible }),\n });\n}\n/** One Experiment × Eval cell: complete point Attempts are averaged. */\nfunction scoreForCell(slots: readonly SelectedSlot[]): InspectionMetricValue {\n const knownPoints = slots.filter(({ analysis }) => analysis.evaluationKind === \"points\");\n const hasKnownPass = slots.some(({ analysis }) => analysis.evaluationKind === \"pass\");\n const unknown = slots.filter(({ analysis }) => analysis.evaluationKind === null);\n if (knownPoints.length === 0 && (hasKnownPass || unknown.length === 0)) {\n return Object.freeze({\n value: null,\n state: slots.length === 0 ? \"empty\" as const : \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"planned-attempt\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n // In mixed historical data, explicit pass Attempts are not point-eligible.\n // Unknown facts remain in the denominator once the cell is known to score.\n const eligible = knownPoints.length === 0\n ? unknown\n : slots.filter(({ analysis }) => analysis.evaluationKind !== \"pass\");\n // Earned-score coverage is independent of gate Verdict and ranking eligibility.\n const complete = eligible.filter(({ analysis }) => analysis.score.hasPoints &&\n analysis.score.hasValue &&\n analysis.score.complete);\n const earned = complete.reduce((sum, { analysis }) => sum + analysis.score.earned, 0);\n const possible = complete.length === 0\n ? 0\n : complete.reduce((sum, { analysis }) => sum + analysis.score.possible, 0) / complete.length;\n const issues = uniqueJson([\n ...eligible.flatMap(({ analysis }) => analysis.issues),\n ...eligible.flatMap(({ analysis }) => analysis.score.hasPoints && !analysis.score.complete\n ? [scorePartialIssue(analysis)]\n : []),\n ]);\n return Object.freeze({\n value: complete.length === 0 ? null : earned / complete.length,\n state: metricState({\n expected: eligible.length,\n samples: complete.length,\n complete: complete.length === eligible.length,\n analyses: eligible.map(({ analysis }) => analysis),\n }),\n samples: complete.length,\n total: eligible.length,\n basis: \"planned-attempt\" as const,\n issues,\n refs: refsOf(eligible),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: possible }),\n });\n}\n/** Experiment, path group, and total scores sum their visible cell means. */\nfunction scoreFromCells(cells: readonly InspectionOverviewCell[]): InspectionMetricValue {\n if (cells.length === 0) {\n return Object.freeze({\n value: null,\n state: \"empty\" as const,\n samples: 0,\n total: 0,\n basis: \"eval\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const eligible = cells.filter(({ evaluationKind }) => evaluationKind !== \"pass\");\n if (eligible.length === 0) {\n return Object.freeze({\n value: null,\n state: \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"eval\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const valued = eligible.filter(({ score }) => score.value !== null);\n const value = valued.length === 0\n ? null\n : valued.reduce((sum, { score }) => sum + (score.value ?? 0), 0);\n const state = valued.length > 0\n ? eligible.every(({ score }) => score.state === \"available\")\n ? \"available\" as const\n : \"partial\" as const\n : aggregateMetricState(eligible.map(({ score }) => score.state));\n return Object.freeze({\n value,\n state,\n samples: valued.length,\n total: eligible.length,\n basis: \"eval\" as const,\n issues: uniqueJson(eligible.flatMap(({ score }) => score.issues)),\n refs: uniqueRefs(eligible.flatMap(({ score }) => score.refs)),\n unit: \"points\" as const,\n bounds: Object.freeze({\n min: 0,\n max: eligible.reduce((sum, { score }) => sum + (score.bounds?.max ?? 0), 0),\n }),\n });\n}\nfunction metricState(input: {\n readonly expected: number;\n readonly samples: number;\n readonly complete: boolean;\n readonly analyses: readonly AttemptAnalysis[];\n}): InspectionMetricState {\n if (input.expected === 0)\n return \"empty\";\n if (input.samples > 0)\n return input.complete ? \"available\" : \"partial\";\n if (input.analyses.some(({ assertionsState }) => assertionsState === \"failed\")) {\n return \"failed\";\n }\n if (input.analyses.some(({ assertionsState }) => assertionsState === \"not-recorded\" || assertionsState === \"unsupported\") &&\n input.analyses.every(({ assertionsState }) => assertionsState !== \"available\" && assertionsState !== \"attempt-missing\")) {\n return \"unsupported\";\n }\n return \"unavailable\";\n}\nfunction evaluationKindOf(slots: readonly SelectedSlot[]): InspectionEvaluationKind {\n const hasPoints = slots.some(({ analysis }) => analysis.evaluationKind === \"points\");\n if (!hasPoints)\n return \"pass\";\n return slots.some(({ analysis }) => analysis.evaluationKind === \"pass\")\n ? \"mixed\"\n : \"points\";\n}\nfunction refsOf(slots: readonly SelectedSlot[]): readonly InspectionAttemptRef[] {\n const refs = new Map<string, InspectionAttemptRef>();\n for (const { analysis } of slots) {\n if (analysis.ref !== null)\n refs.set(analysis.ref.identity.locator, analysis.ref);\n }\n return Object.freeze([...refs.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, ref]) => ref));\n}\nfunction uniqueRefs(values: readonly InspectionAttemptRef[]): readonly InspectionAttemptRef[] {\n const refs = new Map<string, InspectionAttemptRef>();\n for (const ref of values)\n refs.set(ref.identity.locator, ref);\n return Object.freeze([...refs.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, ref]) => ref));\n}\nfunction aggregateMetricState(states: readonly InspectionMetricState[]): InspectionMetricState {\n if (states.length === 0)\n return \"empty\";\n if (states.some((state) => state === \"failed\"))\n return \"failed\";\n if (states.every((state) => state === \"unsupported\"))\n return \"unsupported\";\n if (states.some((state) => state === \"partial\"))\n return \"partial\";\n return \"unavailable\";\n}\nfunction scorePartialIssue(analysis: AttemptAnalysis): InspectionJson {\n return Object.freeze({\n code: \"score-partial\",\n locator: analysis.ref?.identity.locator ?? null,\n });\n}\nfunction groupSelectedSlots(slots: readonly SelectedSlot[], keyOf: (slot: SelectedSlot) => string): readonly (readonly SelectedSlot[])[] {\n const groups = new Map<string, SelectedSlot[]>();\n for (const slot of slots) {\n const key = keyOf(slot);\n const values = groups.get(key);\n if (values === undefined)\n groups.set(key, [slot]);\n else\n values.push(slot);\n }\n return Object.freeze([...groups.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, values]) => Object.freeze(values)));\n}\nfunction groupPath(evalId: string): readonly string[] {\n const segments = evalId.split(\"/\").filter((segment) => segment.length > 0);\n return Object.freeze(segments.slice(0, -1));\n}\nfunction hasGroupPrefix(path: readonly string[], prefix: readonly string[]): boolean {\n return prefix.length <= path.length &&\n prefix.every((segment, index) => path[index] === segment);\n}\nfunction attemptRef(locator: string): InspectionAttemptRef {\n return Object.freeze({\n identity: Object.freeze({ kind: \"attempt\" as const, locator }),\n });\n}\nfunction emptyAttemptScore(): AttemptAnalysis[\"score\"] {\n return Object.freeze({\n hasPoints: false,\n earned: 0,\n possible: 0,\n hasValue: false,\n complete: false,\n });\n}\nfunction overviewIssue(code: string, runId: string, slot: RecordSlotIdentity): InspectionJson {\n return Object.freeze({\n code,\n runId,\n plannedAttemptId: slot.slotId,\n evalId: slot.evalId,\n attemptOrdinal: slot.attemptOrdinal,\n });\n}\nfunction uniqueJson(values: readonly InspectionJson[]): readonly InspectionJson[] {\n const byJson = new Map<string, InspectionJson>();\n for (const value of values)\n byJson.set(JSON.stringify(value), value);\n return Object.freeze([...byJson.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, value]) => value));\n}\nfunction closeOverview(value: InspectionOverview): InspectionOverview {\n const closed = closeInspectionJson(value);\n if (isInspectionCodecError(closed)) {\n throw closed;\n }\n return closed as unknown as InspectionOverview;\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { PlannedAttemptPublicationSchema } from "./planned-attempt.cjs";
|
|
1
2
|
import type { VerdictState } from "../eval/record/verdict.cjs";
|
|
3
|
+
import { Schema } from "effect";
|
|
2
4
|
import type { MemberDocument, RecordSlotIdentity } from "../record/model/core.cjs";
|
|
3
|
-
import type { AdapterIdentity } from "../record/model/run-context.cjs";
|
|
4
|
-
import type { RunSlotPublication } from "../run/index.cjs";
|
|
5
|
+
import type { RunPluginIdentity, AdapterIdentity } from "../record/model/run-context.cjs";
|
|
5
6
|
import { type InspectionJson } from "./codec.cjs";
|
|
6
7
|
import { type LoadedInspectionRun, type ResolvedInspectionAttempt } from "./facts.cjs";
|
|
7
8
|
import type { InspectionFactSource } from "./source.cjs";
|
|
@@ -17,7 +18,7 @@ export interface InspectionMetricValue {
|
|
|
17
18
|
readonly state: InspectionMetricState;
|
|
18
19
|
readonly samples: number;
|
|
19
20
|
readonly total: number;
|
|
20
|
-
readonly basis: "
|
|
21
|
+
readonly basis: "planned-attempt" | "eval";
|
|
21
22
|
readonly issues: readonly InspectionJson[];
|
|
22
23
|
readonly refs: readonly InspectionAttemptRef[];
|
|
23
24
|
readonly unit?: "points" | "USD" | "ms" | "tokens";
|
|
@@ -58,13 +59,13 @@ export interface InspectionOverviewAggregate {
|
|
|
58
59
|
}
|
|
59
60
|
export interface InspectionOverviewMember {
|
|
60
61
|
readonly runId: string;
|
|
61
|
-
readonly
|
|
62
|
+
readonly plannedAttemptId: string;
|
|
62
63
|
readonly evalId: string;
|
|
63
64
|
readonly attemptOrdinal: number;
|
|
64
65
|
readonly labels: InspectionLabels;
|
|
65
|
-
readonly publication: Exclude<
|
|
66
|
+
readonly publication: Exclude<Schema.Schema.Type<typeof PlannedAttemptPublicationSchema>, {
|
|
66
67
|
readonly state: "published";
|
|
67
|
-
}> | (Extract<
|
|
68
|
+
}> | (Extract<Schema.Schema.Type<typeof PlannedAttemptPublicationSchema>, {
|
|
68
69
|
readonly state: "published";
|
|
69
70
|
}> & {
|
|
70
71
|
readonly verdict: VerdictState | null;
|
|
@@ -84,6 +85,7 @@ export interface InspectionOverviewGroup extends InspectionOverviewAggregate {
|
|
|
84
85
|
readonly groupPath: readonly string[];
|
|
85
86
|
}
|
|
86
87
|
export interface InspectionOverviewExperiment extends InspectionOverviewAggregate {
|
|
88
|
+
readonly plugins: readonly RunPluginIdentity[];
|
|
87
89
|
readonly experimentId: string;
|
|
88
90
|
readonly adapter: InspectionAdapterValue;
|
|
89
91
|
readonly model: InspectionExecutionValue;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { PlannedAttemptPublicationSchema } from "./planned-attempt.mjs";
|
|
1
2
|
import type { VerdictState } from "../eval/record/verdict.mjs";
|
|
3
|
+
import { Schema } from "effect";
|
|
2
4
|
import type { MemberDocument, RecordSlotIdentity } from "../record/model/core.mjs";
|
|
3
|
-
import type { AdapterIdentity } from "../record/model/run-context.mjs";
|
|
4
|
-
import type { RunSlotPublication } from "../run/index.mjs";
|
|
5
|
+
import type { RunPluginIdentity, AdapterIdentity } from "../record/model/run-context.mjs";
|
|
5
6
|
import { type InspectionJson } from "./codec.mjs";
|
|
6
7
|
import { type LoadedInspectionRun, type ResolvedInspectionAttempt } from "./facts.mjs";
|
|
7
8
|
import type { InspectionFactSource } from "./source.mjs";
|
|
@@ -17,7 +18,7 @@ export interface InspectionMetricValue {
|
|
|
17
18
|
readonly state: InspectionMetricState;
|
|
18
19
|
readonly samples: number;
|
|
19
20
|
readonly total: number;
|
|
20
|
-
readonly basis: "
|
|
21
|
+
readonly basis: "planned-attempt" | "eval";
|
|
21
22
|
readonly issues: readonly InspectionJson[];
|
|
22
23
|
readonly refs: readonly InspectionAttemptRef[];
|
|
23
24
|
readonly unit?: "points" | "USD" | "ms" | "tokens";
|
|
@@ -58,13 +59,13 @@ export interface InspectionOverviewAggregate {
|
|
|
58
59
|
}
|
|
59
60
|
export interface InspectionOverviewMember {
|
|
60
61
|
readonly runId: string;
|
|
61
|
-
readonly
|
|
62
|
+
readonly plannedAttemptId: string;
|
|
62
63
|
readonly evalId: string;
|
|
63
64
|
readonly attemptOrdinal: number;
|
|
64
65
|
readonly labels: InspectionLabels;
|
|
65
|
-
readonly publication: Exclude<
|
|
66
|
+
readonly publication: Exclude<Schema.Schema.Type<typeof PlannedAttemptPublicationSchema>, {
|
|
66
67
|
readonly state: "published";
|
|
67
|
-
}> | (Extract<
|
|
68
|
+
}> | (Extract<Schema.Schema.Type<typeof PlannedAttemptPublicationSchema>, {
|
|
68
69
|
readonly state: "published";
|
|
69
70
|
}> & {
|
|
70
71
|
readonly verdict: VerdictState | null;
|
|
@@ -84,6 +85,7 @@ export interface InspectionOverviewGroup extends InspectionOverviewAggregate {
|
|
|
84
85
|
readonly groupPath: readonly string[];
|
|
85
86
|
}
|
|
86
87
|
export interface InspectionOverviewExperiment extends InspectionOverviewAggregate {
|
|
88
|
+
readonly plugins: readonly RunPluginIdentity[];
|
|
87
89
|
readonly experimentId: string;
|
|
88
90
|
readonly adapter: InspectionAdapterValue;
|
|
89
91
|
readonly model: InspectionExecutionValue;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { PlannedAttemptPublicationSchema } from "./planned-attempt.js";
|
|
1
2
|
import type { VerdictState } from "../eval/record/verdict.js";
|
|
3
|
+
import { Schema } from "effect";
|
|
2
4
|
import type { MemberDocument, RecordSlotIdentity } from "../record/model/core.js";
|
|
3
|
-
import type { AdapterIdentity } from "../record/model/run-context.js";
|
|
4
|
-
import type { RunSlotPublication } from "../run/index.js";
|
|
5
|
+
import type { RunPluginIdentity, AdapterIdentity } from "../record/model/run-context.js";
|
|
5
6
|
import { type InspectionJson } from "./codec.js";
|
|
6
7
|
import { type LoadedInspectionRun, type ResolvedInspectionAttempt } from "./facts.js";
|
|
7
8
|
import type { InspectionFactSource } from "./source.js";
|
|
@@ -17,7 +18,7 @@ export interface InspectionMetricValue {
|
|
|
17
18
|
readonly state: InspectionMetricState;
|
|
18
19
|
readonly samples: number;
|
|
19
20
|
readonly total: number;
|
|
20
|
-
readonly basis: "
|
|
21
|
+
readonly basis: "planned-attempt" | "eval";
|
|
21
22
|
readonly issues: readonly InspectionJson[];
|
|
22
23
|
readonly refs: readonly InspectionAttemptRef[];
|
|
23
24
|
readonly unit?: "points" | "USD" | "ms" | "tokens";
|
|
@@ -58,13 +59,13 @@ export interface InspectionOverviewAggregate {
|
|
|
58
59
|
}
|
|
59
60
|
export interface InspectionOverviewMember {
|
|
60
61
|
readonly runId: string;
|
|
61
|
-
readonly
|
|
62
|
+
readonly plannedAttemptId: string;
|
|
62
63
|
readonly evalId: string;
|
|
63
64
|
readonly attemptOrdinal: number;
|
|
64
65
|
readonly labels: InspectionLabels;
|
|
65
|
-
readonly publication: Exclude<
|
|
66
|
+
readonly publication: Exclude<Schema.Schema.Type<typeof PlannedAttemptPublicationSchema>, {
|
|
66
67
|
readonly state: "published";
|
|
67
|
-
}> | (Extract<
|
|
68
|
+
}> | (Extract<Schema.Schema.Type<typeof PlannedAttemptPublicationSchema>, {
|
|
68
69
|
readonly state: "published";
|
|
69
70
|
}> & {
|
|
70
71
|
readonly verdict: VerdictState | null;
|
|
@@ -84,6 +85,7 @@ export interface InspectionOverviewGroup extends InspectionOverviewAggregate {
|
|
|
84
85
|
readonly groupPath: readonly string[];
|
|
85
86
|
}
|
|
86
87
|
export interface InspectionOverviewExperiment extends InspectionOverviewAggregate {
|
|
88
|
+
readonly plugins: readonly RunPluginIdentity[];
|
|
87
89
|
readonly experimentId: string;
|
|
88
90
|
readonly adapter: InspectionAdapterValue;
|
|
89
91
|
readonly model: InspectionExecutionValue;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PlannedAttemptPublicationSchema = exports.InspectionPublishedPublicationSchema = exports.InspectionMemberSchema = exports.InspectionRunCoreSchema = exports.InspectionAttemptCoreSchema = exports.PlannedAttemptSchema = void 0;
|
|
4
|
+
exports.projectPlannedAttempt = projectPlannedAttempt;
|
|
5
|
+
exports.projectAttemptCore = projectAttemptCore;
|
|
6
|
+
exports.projectRunCore = projectRunCore;
|
|
7
|
+
exports.projectMember = projectMember;
|
|
8
|
+
const effect_1 = require("effect");
|
|
9
|
+
const core_ts_1 = require("../record/codec/core.cjs");
|
|
10
|
+
const protocol_ts_1 = require("../run/protocol.cjs");
|
|
11
|
+
// Inspection names are independent of the immutable Record and identity encoding.
|
|
12
|
+
const { slotId: plannedAttemptId, ...positionFields } = core_ts_1.RecordSlotIdentitySchema.fields;
|
|
13
|
+
exports.PlannedAttemptSchema = effect_1.Schema.Struct({ plannedAttemptId, ...positionFields });
|
|
14
|
+
const { slotId: attemptPosition, ...attemptFields } = core_ts_1.AttemptDocumentSchema.fields;
|
|
15
|
+
exports.InspectionAttemptCoreSchema = effect_1.Schema.Struct({ plannedAttemptId: attemptPosition, ...attemptFields })
|
|
16
|
+
.check(effect_1.Schema.makeFilter(({ plannedAttemptId, ...attempt }) => effect_1.Schema.is(core_ts_1.AttemptDocumentSchema)({ ...attempt, slotId: plannedAttemptId })));
|
|
17
|
+
const { expectedSlots: _expectedSlots, ...runFields } = core_ts_1.RunDocumentSchema.fields;
|
|
18
|
+
exports.InspectionRunCoreSchema = effect_1.Schema.Struct({ ...runFields, plannedAttempts: effect_1.Schema.Array(exports.PlannedAttemptSchema) })
|
|
19
|
+
.check(effect_1.Schema.makeFilter(({ plannedAttempts, ...run }) => effect_1.Schema.is(core_ts_1.RunDocumentSchema)({
|
|
20
|
+
...run, expectedSlots: plannedAttempts.map(({ plannedAttemptId, ...position }) => ({ ...position, slotId: plannedAttemptId })),
|
|
21
|
+
})));
|
|
22
|
+
exports.InspectionMemberSchema = effect_1.Schema.Union(core_ts_1.MemberDocumentSchema.members.map((member) => {
|
|
23
|
+
const { slotId, ...fields } = member.fields;
|
|
24
|
+
return effect_1.Schema.Struct({ plannedAttemptId: slotId, ...fields });
|
|
25
|
+
})).check(effect_1.Schema.makeFilter(({ plannedAttemptId, ...member }) => effect_1.Schema.is(core_ts_1.MemberDocumentSchema)({ ...member, slotId: plannedAttemptId })));
|
|
26
|
+
const { originSlotId, ...publicationFields } = protocol_ts_1.RunPublishedPublicationSchema.fields;
|
|
27
|
+
exports.InspectionPublishedPublicationSchema = effect_1.Schema.Struct({
|
|
28
|
+
...publicationFields, originPlannedAttemptId: originSlotId,
|
|
29
|
+
});
|
|
30
|
+
exports.PlannedAttemptPublicationSchema = effect_1.Schema.Union([
|
|
31
|
+
protocol_ts_1.RunPendingPublicationSchema, exports.InspectionPublishedPublicationSchema, protocol_ts_1.RunAbsentPublicationSchema,
|
|
32
|
+
]);
|
|
33
|
+
function projectPlannedAttempt({ slotId, ...position }) {
|
|
34
|
+
return Object.freeze(effect_1.Schema.decodeUnknownSync(exports.PlannedAttemptSchema)({ ...position, plannedAttemptId: slotId }));
|
|
35
|
+
}
|
|
36
|
+
function projectAttemptCore({ slotId, ...attempt }) {
|
|
37
|
+
return Object.freeze({ ...attempt, plannedAttemptId: slotId });
|
|
38
|
+
}
|
|
39
|
+
function projectRunCore({ expectedSlots, ...run }) {
|
|
40
|
+
return Object.freeze({ ...run, plannedAttempts: Object.freeze(expectedSlots.map(projectPlannedAttempt)) });
|
|
41
|
+
}
|
|
42
|
+
function projectMember({ slotId, ...member }) {
|
|
43
|
+
return Object.freeze({ ...member, plannedAttemptId: slotId });
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=planned-attempt.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planned-attempt.js","sourceRoot":"","sources":["planned-attempt.ts"],"names":[],"mappings":"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","sourcesContent":["import { Schema } from \"effect\";\nimport { AttemptDocumentSchema, MemberDocumentSchema, RecordSlotIdentitySchema, RunDocumentSchema, } from \"../record/codec/core.ts\";\nimport type { AttemptDocument, MemberDocument, RunDocument } from \"../record/model/core.ts\";\nimport { RunAbsentPublicationSchema, RunPendingPublicationSchema, RunPublishedPublicationSchema, } from \"../run/protocol.ts\";\n// Inspection names are independent of the immutable Record and identity encoding.\nconst { slotId: plannedAttemptId, ...positionFields } = RecordSlotIdentitySchema.fields;\nexport const PlannedAttemptSchema = Schema.Struct({ plannedAttemptId, ...positionFields });\nconst { slotId: attemptPosition, ...attemptFields } = AttemptDocumentSchema.fields;\nexport const InspectionAttemptCoreSchema = Schema.Struct({ plannedAttemptId: attemptPosition, ...attemptFields })\n .check(Schema.makeFilter(({ plannedAttemptId, ...attempt }) => Schema.is(AttemptDocumentSchema)({ ...attempt, slotId: plannedAttemptId })));\nconst { expectedSlots: _expectedSlots, ...runFields } = RunDocumentSchema.fields;\nexport const InspectionRunCoreSchema = Schema.Struct({ ...runFields, plannedAttempts: Schema.Array(PlannedAttemptSchema) })\n .check(Schema.makeFilter(({ plannedAttempts, ...run }) => Schema.is(RunDocumentSchema)({\n ...run, expectedSlots: plannedAttempts.map(({ plannedAttemptId, ...position }) => ({ ...position, slotId: plannedAttemptId })),\n})));\nexport const InspectionMemberSchema = Schema.Union(MemberDocumentSchema.members.map((member) => {\n const { slotId, ...fields } = member.fields;\n return Schema.Struct({ plannedAttemptId: slotId, ...fields });\n})).check(Schema.makeFilter(({ plannedAttemptId, ...member }) => Schema.is(MemberDocumentSchema)({ ...member, slotId: plannedAttemptId })));\nconst { originSlotId, ...publicationFields } = RunPublishedPublicationSchema.fields;\nexport const InspectionPublishedPublicationSchema = Schema.Struct({\n ...publicationFields, originPlannedAttemptId: originSlotId,\n});\nexport const PlannedAttemptPublicationSchema = Schema.Union([\n RunPendingPublicationSchema, InspectionPublishedPublicationSchema, RunAbsentPublicationSchema,\n]);\nexport function projectPlannedAttempt({ slotId, ...position }: {\n readonly slotId: string;\n readonly evalId: string;\n readonly attemptOrdinal: number;\n readonly executionIdentityDigest: string;\n}) {\n return Object.freeze(Schema.decodeUnknownSync(PlannedAttemptSchema)({ ...position, plannedAttemptId: slotId }));\n}\nexport function projectAttemptCore({ slotId, ...attempt }: AttemptDocument) {\n return Object.freeze({ ...attempt, plannedAttemptId: slotId });\n}\nexport function projectRunCore({ expectedSlots, ...run }: RunDocument) {\n return Object.freeze({ ...run, plannedAttempts: Object.freeze(expectedSlots.map(projectPlannedAttempt)) });\n}\nexport function projectMember({ slotId, ...member }: MemberDocument) {\n return Object.freeze({ ...member, plannedAttemptId: slotId });\n}\n"]}
|