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":"runtime.js","sourceRoot":"","sources":["runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { once } from \"node:events\";\nimport { lstat, readFile, readdir, stat } from \"node:fs/promises\";\nimport { connect } from \"node:net\";\nimport { dirname, join, parse } from \"node:path\";\nimport type { Readable } from \"node:stream\";\nimport { Effect, type Scope } from \"effect\";\nimport type { SandboxSetupPrefixCacheOperation } from \"../backend.ts\";\nimport type { JsonValue } from \"../../shared/types.ts\";\nimport { digestOf } from \"../identity.ts\";\nimport { sandboxState } from \"../action.ts\";\nimport { indexDockerProfiles, resolveDockerProfile, type ResolvedDockerProfileEntry } from \"./registry.ts\";\nimport { DOCKER_PROFILE_SETUP_PREFIX_CONTROL_PROTOCOL, type DockerExecutionProfileV1, type DockerProfileSetupPrefixFullCopyCapabilityV1, } from \"./schema.ts\";\nexport const DOCKER_PROFILE_REGISTRY_DIR = \"/etc/niceeval/docker-profiles\";\nexport interface DockerProfileRuntimeBinding {\n readonly alias: string;\n readonly profile: DockerExecutionProfileV1;\n readonly descriptorDigest: string;\n readonly daemonGeneration: string;\n readonly daemonId: string;\n readonly dockerSocketPath: string;\n readonly controlSocketPath: string;\n readonly platform: string;\n}\nexport interface DockerProfileLease {\n readonly binding: DockerProfileRuntimeBinding;\n readonly invocationId: string;\n readonly leaseToken: string;\n readonly stopHeartbeat: () => Promise<void>;\n}\nexport interface DockerProfileReservation {\n readonly reservationId: string;\n readonly provisionToken: string;\n readonly state: \"queued\" | \"blocked\" | \"granted\" | \"provisioning\" | \"committed\" | \"releasing\" | \"quarantined\";\n readonly containerId?: string;\n readonly networkId?: string;\n readonly locator?: string;\n readonly buildTerminated?: boolean;\n readonly buildError?: string;\n readonly slotId?: string;\n readonly slotGeneration?: number;\n}\nexport class DockerProfileCapacityBlockedError extends Error {\n readonly code: \"CAPACITY_BLOCKED\" | \"CAPACITY_QUEUE_TIMEOUT\";\n constructor(policy: \"blocked\" | \"doctor-timeout\" = \"blocked\") {\n super(policy === \"doctor-timeout\"\n ? \"Docker profile capacity queue timed out after 30 seconds\"\n : \"Docker profile capacity is blocked\");\n this.code = policy === \"doctor-timeout\" ? \"CAPACITY_QUEUE_TIMEOUT\" : \"CAPACITY_BLOCKED\";\n }\n}\nexport class DockerProfileReservationStateError extends Error {\n readonly code = \"RESERVATION_NOT_GRANTED\";\n constructor(readonly state: DockerProfileReservation[\"state\"]) {\n super(`Docker profile reservation cannot run from non-granted state ${JSON.stringify(state)}`);\n }\n}\n/**\n * Runner-owned permits that must not be retained while a profile reservation is\n * waiting in the control service's fair queue. The Effect values are stateful\n * and idempotent at their owner; this boundary only brackets the wait.\n */\nexport interface DockerProfileReservationWaitSlot {\n readonly release: Effect.Effect<void>;\n readonly reacquire: Effect.Effect<void>;\n}\n/** Provider-neutral admission notifications supplied by the Sandbox runtime. */\nexport interface DockerProfileReservationAdmission {\n readonly queued: Effect.Effect<void>;\n readonly granted: Effect.Effect<void>;\n readonly slot?: DockerProfileReservationWaitSlot;\n}\n/**\n * Scope-owned reservation. `release` is shared by the Scope finalizer and the\n * provider's normal after-stop path, so either path may win without double\n * disposal or leaving a grant-to-install ownership gap. Queued/blocked owners\n * cancel; capacity-owning states release.\n */\nexport interface DockerProfileReservationOwner {\n readonly reservation: DockerProfileReservation;\n readonly release: () => Promise<void>;\n}\ninterface MutableDockerProfileReservationOwner extends DockerProfileReservationOwner {\n readonly update: (reservation: DockerProfileReservation) => void;\n}\nexport interface DockerProfileContainerCreateInput {\n readonly image: string;\n readonly attemptId: string;\n readonly command?: readonly string[];\n readonly entrypoint?: string;\n readonly environment?: readonly string[];\n readonly workingDir?: string;\n readonly user?: string;\n readonly tmpfs?: Readonly<Record<string, string>>;\n}\nexport type DockerProfileContainerIntent = {\n readonly intent: \"workload\";\n readonly create: DockerProfileContainerCreateInput;\n} | {\n readonly intent: \"diagnostic\";\n};\nexport interface DockerProfileContainerCreateResult {\n readonly containerId: string;\n readonly networkId: string;\n readonly state: \"active\";\n}\nexport interface DockerProfileBuildCreateInput {\n readonly buildKey: string;\n readonly platform: string;\n readonly dockerfile: string;\n readonly buildArgs?: Readonly<Record<string, string>>;\n readonly target?: string;\n readonly retention?: \"cache\" | \"ephemeral\";\n}\nexport interface DockerProfileBuildCreateResult {\n readonly locator: string;\n readonly state: \"terminated\";\n readonly cleanupProven?: boolean;\n}\nexport interface DockerProfileSetupPrefixArtifactIdentityV1 {\n readonly requiredState: \"dockerData\";\n readonly copyProtocol: DockerProfileSetupPrefixFullCopyCapabilityV1[\"copyProtocol\"];\n readonly copyRevision: string;\n /** Provider-neutral identifier; it is not a Docker image id or a raw-filesystem digest slot. */\n readonly artifactId: string;\n readonly sizeBytes: number;\n}\ninterface DockerProfileSetupPrefixReceiptV1 {\n readonly daemonGeneration: string;\n readonly slotGeneration: number;\n readonly requiredState: \"dockerData\";\n readonly setupPrefixKey: string;\n readonly setupManifestDigest: string;\n readonly artifact: DockerProfileSetupPrefixArtifactIdentityV1;\n}\nexport interface DockerProfileSetupPrefixCaptureResultV1 extends DockerProfileSetupPrefixReceiptV1 {\n readonly state: \"captured\" | \"already-published\";\n}\nexport interface DockerProfileSetupPrefixRestoreResultV1 extends DockerProfileSetupPrefixReceiptV1 {\n readonly state: \"restored\" | \"already-restored\";\n}\nexport class DockerProfileControlError extends Error {\n constructor(readonly code: string, message: string, readonly details?: Readonly<Record<string, unknown>>) {\n super(`${code}: ${message}`);\n this.name = \"DockerProfileControlError\";\n }\n}\n/** The publish outcome is unknown after transport loss; callers must inspect\n * terminal rather than treating this as a cache miss or ordinary domain error. */\nexport class DockerProfileControlAmbiguityError extends Error {\n constructor(readonly operationId: string, readonly terminal: \"cancel-fenced\" | \"unresolved\", message: string) {\n super(message);\n this.name = \"DockerProfileControlAmbiguityError\";\n }\n}\nexport class DockerProfileControlCancellationError extends Error {\n constructor(readonly operationId: string, message: string) {\n super(message);\n this.name = \"DockerProfileControlCancellationError\";\n }\n}\ninterface DockerProfileReleaseReceipt {\n readonly released: true;\n readonly cleanupProven?: true;\n}\ninterface DockerProfileCancelReceipt {\n readonly cancelled: true;\n}\ninterface DockerProfileCleanupStatusReceipt {\n readonly profileId: string;\n readonly generation: string;\n readonly leases: readonly {\n readonly invocationId: string;\n readonly daemonGeneration: string;\n }[];\n readonly reservations: readonly {\n readonly reservationId: string;\n readonly invocationId: string;\n }[];\n readonly queue: readonly {\n readonly reservationId: string;\n readonly invocationId: string;\n }[];\n readonly slots: readonly {\n readonly slotId: string;\n readonly invocationId?: string;\n readonly reservationId?: string;\n readonly state: string;\n }[];\n readonly degraded: readonly string[];\n}\ntype DockerProfileLeaseDrainState = \"draining\" | \"recovered\";\nconst DOCKER_PROFILE_DRAIN_RECONCILE_TIMEOUT_MS = 60000;\nconst DOCKER_PROFILE_DRAIN_RECONCILE_INTERVAL_MS = 200;\nfunction validateLeaseDrainReceipt(value: unknown): DockerProfileLeaseDrainState {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new Error(\"Docker profile lease drain receipt is not an object\");\n }\n const receipt = value as Readonly<Record<string, unknown>>;\n if (Object.keys(receipt).length !== 1 || !(\"state\" in receipt)) {\n throw new Error(\"Docker profile lease drain receipt fields changed\");\n }\n if (receipt.state !== \"draining\" && receipt.state !== \"recovered\") {\n throw new Error(\"Docker profile lease drain did not reach a cleanup-owned state\");\n }\n return receipt.state;\n}\nfunction validateReleaseReceipt(value: unknown): DockerProfileReleaseReceipt {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new Error(\"Docker profile reservation release receipt is not an object\");\n }\n const receipt = value as Readonly<Record<string, unknown>>;\n const fields = Object.keys(receipt).sort();\n if (receipt.released !== true ||\n (receipt.cleanupProven !== undefined && receipt.cleanupProven !== true) ||\n (fields.length !== 1 &&\n !(fields.length === 2 && fields[0] === \"cleanupProven\" && fields[1] === \"released\")) ||\n (fields.length === 1 && fields[0] !== \"released\")) {\n throw new Error(\"Docker profile reservation release receipt is not exact or does not prove release\");\n }\n return Object.freeze({\n released: true,\n ...(receipt.cleanupProven === true ? { cleanupProven: true as const } : {}),\n });\n}\nfunction validateCancelReceipt(value: unknown): DockerProfileCancelReceipt {\n if (typeof value !== \"object\" || value === null || Array.isArray(value) ||\n Object.keys(value).length !== 1 || (value as Readonly<Record<string, unknown>>).cancelled !== true) {\n throw new Error(\"Docker profile reservation cancel receipt is not exact or does not prove cancellation\");\n }\n return Object.freeze({ cancelled: true });\n}\nfunction validateCleanupStatusReceipt(value: unknown): DockerProfileCleanupStatusReceipt {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new Error(\"Docker profile cleanup status receipt is not an object\");\n }\n const receipt = value as Readonly<Record<string, unknown>>;\n if (typeof receipt.profileId !== \"string\" ||\n typeof receipt.generation !== \"string\" ||\n !Array.isArray(receipt.leases) ||\n !Array.isArray(receipt.reservations) ||\n !Array.isArray(receipt.queue) ||\n !Array.isArray(receipt.slots) ||\n !Array.isArray(receipt.degraded)) {\n throw new Error(\"Docker profile cleanup status receipt is missing ownership fields\");\n }\n const leases = receipt.leases.map((item) => {\n if (typeof item !== \"object\" || item === null || Array.isArray(item) ||\n typeof item.invocationId !== \"string\" || typeof item.daemonGeneration !== \"string\")\n throw new Error(\"Docker profile cleanup status lease identity is invalid\");\n return { invocationId: item.invocationId, daemonGeneration: item.daemonGeneration };\n });\n const reservations = receipt.reservations.map((item) => {\n if (typeof item !== \"object\" || item === null || Array.isArray(item) ||\n typeof item.reservationId !== \"string\" || typeof item.invocationId !== \"string\")\n throw new Error(\"Docker profile cleanup status reservation identity is invalid\");\n return { reservationId: item.reservationId, invocationId: item.invocationId };\n });\n const queue = receipt.queue.map((item) => {\n if (typeof item !== \"object\" || item === null || Array.isArray(item) ||\n typeof item.reservationId !== \"string\" || typeof item.invocationId !== \"string\")\n throw new Error(\"Docker profile cleanup status queue ownership is invalid\");\n return { reservationId: item.reservationId, invocationId: item.invocationId };\n });\n const slots = receipt.slots.map((item) => {\n if (typeof item !== \"object\" || item === null || Array.isArray(item) ||\n typeof item.slotId !== \"string\" || typeof item.state !== \"string\" ||\n (item.invocationId !== undefined && typeof item.invocationId !== \"string\") ||\n (item.reservationId !== undefined && typeof item.reservationId !== \"string\"))\n throw new Error(\"Docker profile cleanup status slot ownership is invalid\");\n return {\n slotId: item.slotId,\n state: item.state,\n ...(item.invocationId === undefined ? {} : { invocationId: item.invocationId }),\n ...(item.reservationId === undefined ? {} : { reservationId: item.reservationId }),\n };\n });\n if (!receipt.degraded.every((item) => typeof item === \"string\")) {\n throw new Error(\"Docker profile cleanup status diagnostics are invalid\");\n }\n return Object.freeze({\n profileId: receipt.profileId,\n generation: receipt.generation,\n leases: Object.freeze(leases),\n reservations: Object.freeze(reservations),\n queue: Object.freeze(queue),\n slots: Object.freeze(slots),\n degraded: Object.freeze([...receipt.degraded]),\n });\n}\nfunction leaseCleanupProven(receipt: DockerProfileCleanupStatusReceipt, binding: DockerProfileRuntimeBinding, invocationId: string): boolean {\n return receipt.profileId === binding.profile.profileId &&\n receipt.generation === binding.daemonGeneration &&\n !receipt.leases.some((item) => item.invocationId === invocationId) &&\n !receipt.reservations.some((item) => item.invocationId === invocationId) &&\n !receipt.queue.some((item) => item.invocationId === invocationId) &&\n !receipt.slots.some((item) => item.invocationId === invocationId);\n}\nexport async function lookupDockerProfileBuild(binding: DockerProfileRuntimeBinding, buildKey: string): Promise<{\n readonly hit: boolean;\n readonly locator: string;\n}> {\n return await dockerProfileControlRequest(binding.controlSocketPath, {\n kind: \"build.lookup\",\n profileId: binding.profile.profileId,\n daemonGeneration: binding.daemonGeneration,\n buildKey,\n });\n}\nfunction modeOf(value: number): number {\n return value & 0o7777;\n}\nasync function parentModes(path: string): Promise<number[]> {\n const result: number[] = [];\n const root = parse(path).root;\n let current = dirname(path);\n while (true) {\n result.push(modeOf((await stat(current)).mode));\n if (current === root)\n break;\n current = dirname(current);\n }\n return result;\n}\n/** Production registry location is fixed; tests may exercise descriptor I/O at an explicit directory. */\nexport async function loadDockerProfileRegistryAt(registryDir: string): Promise<ReturnType<typeof indexDockerProfiles>> {\n const names = (await readdir(registryDir)).filter((name) => name.endsWith(\".json\")\n && !name.endsWith(\".host.json\")\n && !name.endsWith(\".daemon.json\")\n && !/^assets-v[1-9]\\d*\\.json$/.test(name)).sort();\n const entries = await Promise.all(names.map(async (name) => {\n const source = join(registryDir, name);\n const facts = await lstat(source);\n return {\n alias: name.slice(0, -\".json\".length),\n profile: JSON.parse(await readFile(source, \"utf8\")) as unknown,\n source,\n fileFacts: {\n isSymlink: facts.isSymbolicLink(),\n ownerUid: facts.uid,\n mode: modeOf(facts.mode),\n parentModes: await parentModes(source),\n },\n };\n }));\n return indexDockerProfiles(entries, { expectedOwnerUid: 0 });\n}\nexport async function loadDockerProfileRegistry(): Promise<ReturnType<typeof indexDockerProfiles>> {\n return loadDockerProfileRegistryAt(DOCKER_PROFILE_REGISTRY_DIR);\n}\n// @concord-code ne-sandbox-docker-profile-control\n// @concord-implements docs/feature/sandbox-docker-profiles/architecture.md\n// @concord-implements docs/feature/sandbox-docker-profiles/lifecycle.md\nexport function dockerProfileControlRequest<T>(path: string, request: Readonly<Record<string, unknown>>, signal?: AbortSignal, timeoutMs = 10000): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const socket = connect(path);\n let response = \"\";\n let settled = false;\n const settle = (outcome: {\n value: T;\n } | {\n error: unknown;\n }) => {\n if (settled)\n return;\n settled = true;\n signal?.removeEventListener(\"abort\", abort);\n if (\"value\" in outcome)\n resolve(outcome.value);\n else\n reject(outcome.error);\n };\n const abort = () => socket.destroy(signal?.reason instanceof Error\n ? signal.reason\n : new DOMException(\"Docker profile control request aborted\", \"AbortError\"));\n if (signal?.aborted)\n abort();\n else\n signal?.addEventListener(\"abort\", abort, { once: true });\n socket.setTimeout(timeoutMs);\n socket.on(\"connect\", () => socket.end(`${JSON.stringify(request)}\\n`));\n socket.on(\"data\", (chunk: Buffer) => { response += chunk.toString(); });\n socket.on(\"timeout\", () => socket.destroy(new Error(`Docker profile control timeout: ${path}`)));\n socket.on(\"error\", (error) => settle({ error }));\n socket.on(\"close\", () => {\n if (settled)\n return;\n try {\n const parsed = JSON.parse(response) as {\n ok?: boolean;\n result?: T;\n error?: Readonly<Record<string, unknown>> & {\n readonly code?: string;\n readonly message?: string;\n };\n };\n if (parsed.ok !== true || parsed.result === undefined) {\n settle({\n error: new DockerProfileControlError(parsed.error?.code ?? \"control-error\", parsed.error?.message ?? \"invalid control reply\", parsed.error),\n });\n }\n else\n settle({ value: parsed.result });\n }\n catch (error) {\n settle({ error });\n }\n });\n });\n}\nfunction setupPrefixCapability(lease: DockerProfileLease): DockerProfileSetupPrefixFullCopyCapabilityV1 {\n const capability = lease.binding.profile.backend.filesystem.setupPrefix;\n if (capability === undefined) {\n throw new Error(\"Docker profile descriptor does not declare setup-prefix full-copy capability\");\n }\n if (capability.protocol !== DOCKER_PROFILE_SETUP_PREFIX_CONTROL_PROTOCOL ||\n capability.coverage !== sandboxState.dockerData ||\n capability.requiredState !== sandboxState.dockerData ||\n lease.binding.profile.backend.filesystem.dockerDataPool.attestation !==\n capability.slotAttestation ||\n lease.binding.profile.backend.filesystem.dockerDataPool.bytesPerAllocation !==\n capability.filesystemSizeBytes) {\n throw new Error(\"Docker profile setup-prefix capability is not backed by independent fixed-filesystem slots\");\n }\n return capability;\n}\nfunction setupPrefixExpectedWire(lease: DockerProfileLease, reservation: DockerProfileReservation, input: SandboxSetupPrefixCacheOperation): Readonly<Record<string, unknown>> {\n const capability = setupPrefixCapability(lease);\n return Object.freeze({\n protocol: capability.protocol,\n requiredState: capability.requiredState,\n descriptorDigest: lease.binding.descriptorDigest,\n setupPrefixKey: input.manifest.setupPrefixKey,\n setupManifestDigest: input.manifest.setupManifestDigest,\n providerIdentity: capability.providerIdentity,\n baseIdentity: input.manifest.baseImageId,\n executionDomain: capability.executionDomain,\n helperRevision: capability.helperRevision,\n copyProtocol: capability.copyProtocol,\n copyRevision: capability.copyRevision,\n quiesceRevision: capability.quiesceRevision,\n publicationRevision: capability.publicationRevision,\n recoveryRevision: capability.recoveryRevision,\n manifestSchema: capability.manifestSchema,\n filesystemSizeBytes: capability.filesystemSizeBytes,\n filesystemFeatures: Object.freeze([...capability.filesystemFeatures]),\n daemonGeneration: lease.binding.daemonGeneration,\n slotGeneration: reservation.slotGeneration,\n });\n}\nfunction setupPrefixControlFrame(kind: \"setup-prefix.capture\" | \"setup-prefix.capture.publish\" | \"setup-prefix.restore\", lease: DockerProfileLease, reservation: DockerProfileReservation, input: SandboxSetupPrefixCacheOperation): Readonly<Record<string, unknown>> {\n if (!Number.isSafeInteger(reservation.slotGeneration) || reservation.slotGeneration! < 0) {\n throw new Error(\"Docker profile reservation has no attested private slot generation\");\n }\n const manifestDigest = digestOf(input.manifest.declarationMetadata as JsonValue);\n if (input.manifest.requiredState !== sandboxState.dockerData ||\n input.manifest.setupPrefixKey !== `prefix:${manifestDigest}` ||\n input.manifest.setupManifestDigest !== `sha256:${manifestDigest}`) {\n throw new Error(\"Docker profile setup-prefix key is not bound to its complete canonical manifest identity\");\n }\n if (input.operationId.length === 0 || input.operationId.length > 512 || /[\\u0000-\\u001f\\u007f]/u.test(input.operationId)) {\n throw new Error(\"Docker profile setup-prefix operationId is invalid\");\n }\n return Object.freeze({\n kind,\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId: reservation.reservationId,\n operationId: input.operationId,\n ...setupPrefixExpectedWire(lease, reservation, input),\n });\n}\nfunction setupPrefixWireRecord(value: unknown): Readonly<Record<string, unknown>> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new Error(\"Docker profile setup-prefix control response is not an object\");\n }\n return value as Readonly<Record<string, unknown>>;\n}\nfunction validateExactSetupPrefixFields(value: Readonly<Record<string, unknown>>, expectedFields: readonly string[], label: string): void {\n const actual = Object.keys(value).sort();\n const expected = [...expectedFields].sort();\n if (actual.length !== expected.length ||\n actual.some((field, index) => field !== expected[index])) {\n throw new Error(`Docker profile setup-prefix ${label} fields changed: ` +\n `expected ${expected.join(\", \")}; received ${actual.join(\", \")}`);\n }\n}\nfunction validateSetupPrefixArtifactIdentity(value: unknown, lease: DockerProfileLease, expected?: DockerProfileSetupPrefixArtifactIdentityV1): DockerProfileSetupPrefixArtifactIdentityV1 {\n const artifact = setupPrefixWireRecord(value);\n validateExactSetupPrefixFields(artifact, [\"requiredState\", \"copyProtocol\", \"copyRevision\", \"artifactId\", \"sizeBytes\"], \"artifact receipt\");\n const capability = setupPrefixCapability(lease);\n if (artifact.requiredState !== capability.requiredState) {\n throw new Error(\"Docker profile setup-prefix artifact requiredState does not match the descriptor\");\n }\n if (artifact.copyProtocol !== capability.copyProtocol) {\n throw new Error(\"Docker profile setup-prefix artifact copyProtocol does not match the descriptor\");\n }\n if (artifact.copyRevision !== capability.copyRevision) {\n throw new Error(\"Docker profile setup-prefix artifact copyRevision does not match the descriptor\");\n }\n if (typeof artifact.artifactId !== \"string\" ||\n artifact.artifactId.length === 0 ||\n artifact.artifactId.length > 512 ||\n /[\\u0000-\\u001f\\u007f]/u.test(artifact.artifactId)) {\n throw new Error(\"Docker profile setup-prefix artifactId is not a bounded provider identity\");\n }\n if (!Number.isSafeInteger(artifact.sizeBytes) || (artifact.sizeBytes as number) < 0) {\n throw new Error(\"Docker profile setup-prefix artifact sizeBytes is invalid\");\n }\n if ((artifact.sizeBytes as number) > capability.seedLimitBytes) {\n throw new Error(\"Docker profile setup-prefix artifact exceeds descriptor seedLimitBytes\");\n }\n if (capability.copyProtocol === \"raw-image/v1\" &&\n artifact.sizeBytes !== capability.filesystemSizeBytes) {\n throw new Error(\"Docker profile raw-image artifact does not cover the complete fixed Docker data filesystem\");\n }\n const identity = Object.freeze({\n requiredState: capability.requiredState,\n copyProtocol: capability.copyProtocol,\n copyRevision: capability.copyRevision,\n artifactId: artifact.artifactId,\n sizeBytes: artifact.sizeBytes as number,\n });\n if (expected !== undefined &&\n (identity.copyProtocol !== expected.copyProtocol ||\n identity.copyRevision !== expected.copyRevision ||\n identity.requiredState !== expected.requiredState ||\n identity.artifactId !== expected.artifactId ||\n identity.sizeBytes !== expected.sizeBytes)) {\n throw new Error(\"Docker profile setup-prefix restored artifact identity changed after capture\");\n }\n return identity;\n}\nfunction wireValueMatches(actual: unknown, expected: unknown): boolean {\n if (Array.isArray(expected)) {\n return Array.isArray(actual) && actual.length === expected.length &&\n expected.every((value, index) => actual[index] === value);\n }\n return actual === expected;\n}\nfunction validateSetupPrefixWireBinding(receipt: Readonly<Record<string, unknown>>, lease: DockerProfileLease, reservation: DockerProfileReservation, input: SandboxSetupPrefixCacheOperation, label: string): void {\n const expected = setupPrefixExpectedWire(lease, reservation, input);\n for (const [field, value] of Object.entries(expected)) {\n if (!wireValueMatches(receipt[field], value)) {\n throw new Error(`Docker profile setup-prefix ${label} ${field} changed`);\n }\n }\n}\nfunction validateSetupPrefixReceipt(value: unknown, lease: DockerProfileLease, reservation: DockerProfileReservation, input: SandboxSetupPrefixCacheOperation, expectedArtifact?: DockerProfileSetupPrefixArtifactIdentityV1): DockerProfileSetupPrefixReceiptV1 & {\n readonly status: Readonly<Record<string, unknown>>;\n} {\n const response = setupPrefixWireRecord(value);\n validateExactSetupPrefixFields(response, [...Object.keys(setupPrefixExpectedWire(lease, reservation, input)), \"artifact\", \"status\"], \"success receipt\");\n validateSetupPrefixWireBinding(response, lease, reservation, input, \"response\");\n const status = setupPrefixWireRecord(response.status);\n validateExactSetupPrefixFields(status, [\"state\", \"capacity\"], \"success status\");\n setupPrefixWireRecord(status.capacity);\n return Object.freeze({\n daemonGeneration: response.daemonGeneration as string,\n slotGeneration: response.slotGeneration as number,\n requiredState: response.requiredState as \"dockerData\",\n setupPrefixKey: response.setupPrefixKey as string,\n setupManifestDigest: response.setupManifestDigest as string,\n artifact: validateSetupPrefixArtifactIdentity(response.artifact, lease, expectedArtifact),\n status,\n });\n}\nfunction validateSetupPrefixControlError(cause: unknown, lease: DockerProfileLease, reservation: DockerProfileReservation, input: SandboxSetupPrefixCacheOperation): void {\n if (!(cause instanceof DockerProfileControlError))\n return;\n try {\n const details = setupPrefixWireRecord(cause.details);\n validateExactSetupPrefixFields(details, [\n \"code\",\n \"message\",\n ...Object.keys(setupPrefixExpectedWire(lease, reservation, input)),\n \"artifact\",\n \"status\",\n ], \"failure receipt\");\n validateSetupPrefixWireBinding(details, lease, reservation, input, \"failure receipt\");\n if (typeof details.code !== \"string\" || details.code.length === 0 || details.code !== cause.code ||\n typeof details.message !== \"string\" || details.message.length === 0 || details.message.length > 65536) {\n throw new Error(\"Docker profile setup-prefix failure code or message identity is invalid\");\n }\n const artifact = setupPrefixWireRecord(details.artifact);\n validateExactSetupPrefixFields(artifact, [\"artifactId\"], \"failure artifact receipt\");\n if (artifact.artifactId !== null) {\n throw new Error(\"Docker profile setup-prefix terminal failure must not claim an artifact identity\");\n }\n const status = setupPrefixWireRecord(details.status);\n validateExactSetupPrefixFields(status, [\"state\", \"diagnostic\"], \"failure status\");\n if (status.state !== \"failed\" || status.diagnostic !== cause.code) {\n throw new Error(\"Docker profile setup-prefix failure status does not match its diagnostic\");\n }\n }\n catch (error) {\n throw new Error(error instanceof Error ? error.message : String(error), { cause });\n }\n}\nexport async function captureDockerProfileSetupPrefix(lease: DockerProfileLease, reservation: DockerProfileReservation, input: SandboxSetupPrefixCacheOperation, signal?: AbortSignal, controlTimeoutMs = 120000): Promise<DockerProfileSetupPrefixCaptureResultV1> {\n setupPrefixCapability(lease);\n let rawResponse: unknown;\n try {\n rawResponse = await dockerProfileControlRequest<unknown>(lease.binding.controlSocketPath, setupPrefixControlFrame(\"setup-prefix.capture\", lease, reservation, input), signal, controlTimeoutMs);\n }\n catch (cause) {\n validateSetupPrefixControlError(cause, lease, reservation, input);\n throw cause;\n }\n let response = validateSetupPrefixReceipt(rawResponse, lease, reservation, input);\n let state = response.status.state;\n if (state === \"prepared\") {\n // Copy/prepare may legitimately use the caller's long control budget. Publish is\n // only a journal transition, so response-loss reconciliation owns a separate,\n // short budget. It must also outlive caller abort: once prepare succeeded, only\n // the Host can prove published or cancel-fenced for this operation identity.\n const publishReconciliationDeadline = Date.now() + 30000;\n let lastError: unknown;\n for (let attempt = 0; attempt < 3; attempt += 1) {\n const reconcileController = new AbortController();\n const reconcileTimeoutMs = Math.max(1, Math.min(10000, publishReconciliationDeadline - Date.now()));\n const reconcileTimer = setTimeout(() => reconcileController.abort(), reconcileTimeoutMs);\n try {\n rawResponse = await dockerProfileControlRequest<unknown>(lease.binding.controlSocketPath, setupPrefixControlFrame(\"setup-prefix.capture.publish\", lease, reservation, input), reconcileController.signal, reconcileTimeoutMs);\n response = validateSetupPrefixReceipt(rawResponse, lease, reservation, input);\n lastError = undefined;\n clearTimeout(reconcileTimer);\n break;\n }\n catch (cause) {\n clearTimeout(reconcileTimer);\n validateSetupPrefixControlError(cause, lease, reservation, input);\n lastError = cause;\n if (cause instanceof DockerProfileControlError &&\n (cause.code === \"setup-prefix-operation-cancelled\" || cause.code === \"setup-prefix-operation-cancel-fenced\")) {\n throw new DockerProfileControlCancellationError(input.operationId, \"setup-prefix capture was fenced and scrubbed\");\n }\n if (attempt === 2)\n break;\n await new Promise<void>((resolve) => setTimeout(resolve, 100 * (attempt + 1)));\n }\n }\n if (lastError !== undefined) {\n throw new DockerProfileControlAmbiguityError(input.operationId, \"unresolved\", \"setup-prefix publish outcome is ambiguous; retry/reconcile is exhausted\");\n }\n state = response.status.state;\n }\n if (state !== \"captured\" && state !== \"already-published\") {\n throw new Error(`Docker profile setup-prefix capture returned invalid state ${JSON.stringify(state)}`);\n }\n return Object.freeze({\n daemonGeneration: response.daemonGeneration,\n slotGeneration: response.slotGeneration,\n requiredState: response.requiredState,\n setupPrefixKey: response.setupPrefixKey,\n setupManifestDigest: response.setupManifestDigest,\n state,\n artifact: response.artifact,\n });\n}\nexport async function restoreDockerProfileSetupPrefix(lease: DockerProfileLease, reservation: DockerProfileReservation, input: SandboxSetupPrefixCacheOperation, expected?: DockerProfileSetupPrefixArtifactIdentityV1, signal?: AbortSignal, controlTimeoutMs = 120000): Promise<DockerProfileSetupPrefixRestoreResultV1> {\n setupPrefixCapability(lease);\n let rawResponse: unknown;\n try {\n rawResponse = await dockerProfileControlRequest<unknown>(lease.binding.controlSocketPath, setupPrefixControlFrame(\"setup-prefix.restore\", lease, reservation, input), signal, controlTimeoutMs);\n }\n catch (cause) {\n validateSetupPrefixControlError(cause, lease, reservation, input);\n throw cause;\n }\n const response = validateSetupPrefixReceipt(rawResponse, lease, reservation, input, expected);\n const state = response.status.state;\n if (state !== \"restored\" && state !== \"already-restored\") {\n throw new Error(`Docker profile setup-prefix restore returned invalid state ${JSON.stringify(state)}`);\n }\n return Object.freeze({\n daemonGeneration: response.daemonGeneration,\n slotGeneration: response.slotGeneration,\n requiredState: response.requiredState,\n setupPrefixKey: response.setupPrefixKey,\n setupManifestDigest: response.setupManifestDigest,\n state,\n artifact: response.artifact,\n });\n}\nasync function socketFact(path: string, expectedUid: number): Promise<void> {\n const value = await lstat(path);\n if (!value.isSocket())\n throw new Error(`Docker profile endpoint is not a Unix socket: ${path}`);\n if (value.uid !== expectedUid)\n throw new Error(`Docker profile endpoint ${path} owner is ${value.uid}, expected ${expectedUid}`);\n if ((modeOf(value.mode) & 0o002) !== 0)\n throw new Error(`Docker profile endpoint is world-writable: ${path}`);\n}\nfunction rootlessSecurityOptions(info: {\n readonly SecurityOptions?: readonly string[];\n}): boolean {\n return (info.SecurityOptions ?? []).some((option: string) => option.toLowerCase().includes(\"rootless\"));\n}\nasync function attestEntry(entry: ResolvedDockerProfileEntry): Promise<DockerProfileRuntimeBinding> {\n const profile = entry.profile;\n await Promise.all([\n socketFact(profile.transport.dockerSocket.path, profile.transport.dockerSocket.peerUid),\n socketFact(profile.transport.controlSocket.path, profile.transport.controlSocket.peerUid),\n ]);\n const nonce = randomUUID();\n const challenge = await dockerProfileControlRequest<{\n readonly protocol: string;\n readonly profileId: string;\n readonly descriptorDigest: string;\n readonly hostMachineIdentity: string;\n readonly backendMachineIdentity: string;\n readonly daemonGeneration: string;\n readonly clientNonce: string;\n }>(profile.transport.controlSocket.path, { kind: \"challenge\", clientNonce: nonce });\n if (challenge.protocol !== profile.transport.controlSocket.protocol || challenge.profileId !== profile.profileId ||\n challenge.descriptorDigest !== entry.descriptorDigest || challenge.clientNonce !== nonce ||\n challenge.hostMachineIdentity !== profile.transport.hostMachineIdentity ||\n challenge.backendMachineIdentity !== profile.backend.machineIdentity) {\n throw new Error(`Docker profile ${entry.alias} control attestation does not match its descriptor`);\n }\n // dockerode 是 optional peer;只有用户实际使用 Docker profile 时才加载。\n // 保持这里为热路径动态 import,避免不使用 Docker 的最小安装仅因 CLI 启动就崩溃。\n const { default: Docker } = await __niceevalDynamicImport(\"dockerode\");\n const docker = new Docker({ socketPath: profile.transport.dockerSocket.path });\n const info = await docker.info();\n if (profile.securityLevel !== \"raw-dind-storage/v1\" && !rootlessSecurityOptions(info)) {\n throw new Error(`Docker profile ${entry.alias} daemon is not rootless`);\n }\n if (info.DockerRootDir !== profile.backend.filesystem.dockerRootDir) {\n throw new Error(`Docker profile ${entry.alias} DockerRootDir does not match descriptor`);\n }\n if (String(info.CgroupVersion) !== \"2\" || info.CgroupDriver !== \"systemd\") {\n throw new Error(`Docker profile ${entry.alias} requires cgroup v2 with the systemd driver`);\n }\n const os = info.OSType || \"linux\";\n const arch = info.Architecture || \"amd64\";\n if (typeof info.ID !== \"string\" || info.ID === \"\")\n throw new Error(`Docker profile ${entry.alias} daemon ID is missing`);\n return Object.freeze({\n alias: entry.alias,\n profile,\n descriptorDigest: entry.descriptorDigest,\n daemonGeneration: challenge.daemonGeneration,\n daemonId: info.ID,\n dockerSocketPath: profile.transport.dockerSocket.path,\n controlSocketPath: profile.transport.controlSocket.path,\n platform: `${os}/${arch}`,\n });\n}\nexport async function attestDockerProfile(alias: string): Promise<DockerProfileRuntimeBinding> {\n return attestEntry(resolveDockerProfile(await loadDockerProfileRegistry(), alias));\n}\nexport async function createDockerProfileLease(binding: DockerProfileRuntimeBinding): Promise<DockerProfileLease> {\n const invocationId = randomUUID();\n const created = await dockerProfileControlRequest<{\n readonly leaseToken: string;\n }>(binding.controlSocketPath, {\n kind: \"lease.create\",\n profileId: binding.profile.profileId,\n daemonGeneration: binding.daemonGeneration,\n invocationId,\n });\n let stopped = false;\n let heartbeatEnabled = true;\n let drainInFlight: Promise<void> | undefined;\n let timer: ReturnType<typeof setInterval> | undefined;\n const heartbeat = async () => {\n if (!heartbeatEnabled)\n return;\n await dockerProfileControlRequest(binding.controlSocketPath, {\n kind: \"lease.heartbeat\", invocationId, leaseToken: created.leaseToken,\n });\n };\n timer = setInterval(() => { void heartbeat().catch(() => { }); }, 5000);\n timer.unref();\n return {\n binding,\n invocationId,\n leaseToken: created.leaseToken,\n stopHeartbeat: async () => {\n if (stopped)\n return;\n heartbeatEnabled = false;\n if (timer !== undefined) {\n clearInterval(timer);\n timer = undefined;\n }\n if (drainInFlight !== undefined)\n return await drainInFlight;\n const draining = (async () => {\n const deadline = Date.now() + DOCKER_PROFILE_DRAIN_RECONCILE_TIMEOUT_MS;\n let lastError: unknown;\n while (true) {\n try {\n validateLeaseDrainReceipt(await dockerProfileControlRequest<unknown>(binding.controlSocketPath, {\n kind: \"lease.drain\", invocationId, leaseToken: created.leaseToken,\n }));\n }\n catch (error) {\n // The Host operation and recovery owner outlive a client socket.\n // A disconnect here is not cleanup proof; retry the idempotent\n // drain and verify the ledger independently.\n lastError = error;\n }\n try {\n const status = validateCleanupStatusReceipt(await dockerProfileControlRequest<unknown>(binding.controlSocketPath, { kind: \"status\" }));\n if (leaseCleanupProven(status, binding, invocationId)) {\n stopped = true;\n return;\n }\n lastError = new Error(`Docker profile lease ${invocationId} remains visible after drain reconciliation`);\n }\n catch (error) {\n lastError = error;\n }\n if (Date.now() >= deadline) {\n throw new Error(`Docker profile lease ${invocationId} did not reach recovered state within ` +\n `${DOCKER_PROFILE_DRAIN_RECONCILE_TIMEOUT_MS}ms`, lastError === undefined ? undefined : { cause: lastError });\n }\n await new Promise((resolve) => setTimeout(resolve, DOCKER_PROFILE_DRAIN_RECONCILE_INTERVAL_MS));\n }\n })();\n drainInFlight = draining;\n try {\n await draining;\n }\n finally {\n if (!stopped && drainInFlight === draining)\n drainInFlight = undefined;\n }\n },\n };\n}\nfunction nonGrantedReservationError(reservation: DockerProfileReservation): Error {\n return reservation.state === \"blocked\"\n ? new DockerProfileCapacityBlockedError()\n : new DockerProfileReservationStateError(reservation.state);\n}\nexport async function acquireDockerProfileReservation(lease: DockerProfileLease, reservationKind: \"container\" | \"build\", resources: Readonly<Record<string, number>>, signal?: AbortSignal): Promise<DockerProfileReservation> {\n const reservationId = randomUUID();\n // This Promise entry is shared by the ordinary build path (which always\n // supplies its Attempt signal) and `docker profile doctor`. Only doctor owns\n // the explicit 30-second diagnostic policy; normal builds have no queue TTL.\n const doctorDeadline = signal === undefined ? Date.now() + 30000 : undefined;\n let reservation: DockerProfileReservation | undefined;\n try {\n reservation = await dockerProfileControlRequest<DockerProfileReservation>(lease.binding.controlSocketPath, {\n kind: \"reservation.acquire\", invocationId: lease.invocationId, leaseToken: lease.leaseToken,\n reservationId, reservationKind, resources,\n }, signal);\n while (reservation.state === \"queued\") {\n if (doctorDeadline !== undefined && Date.now() >= doctorDeadline) {\n throw new DockerProfileCapacityBlockedError(\"doctor-timeout\");\n }\n if (signal?.aborted)\n throw signal.reason ?? new DOMException(\"Docker profile reservation aborted\", \"AbortError\");\n await new Promise<void>((resolve, reject) => {\n let abort: (() => void) | undefined;\n const timer = setTimeout(() => {\n if (abort !== undefined)\n signal?.removeEventListener(\"abort\", abort);\n resolve();\n }, 100);\n if (signal === undefined)\n return;\n abort = () => {\n clearTimeout(timer);\n signal.removeEventListener(\"abort\", abort!);\n reject(signal.reason ?? new DOMException(\"Docker profile reservation aborted\", \"AbortError\"));\n };\n signal.addEventListener(\"abort\", abort, { once: true });\n });\n reservation = await dockerProfileControlRequest<DockerProfileReservation>(lease.binding.controlSocketPath, {\n kind: \"reservation.get\", invocationId: lease.invocationId, leaseToken: lease.leaseToken, reservationId,\n }, signal);\n if (signal?.aborted)\n throw signal.reason ?? new DOMException(\"Docker profile reservation aborted\", \"AbortError\");\n }\n if (reservation.state !== \"granted\") {\n if (reservation.state === \"blocked\" && doctorDeadline !== undefined) {\n throw new DockerProfileCapacityBlockedError(\"doctor-timeout\");\n }\n throw nonGrantedReservationError(reservation);\n }\n }\n catch (error) {\n if (reservation !== undefined) {\n try {\n await relinquishDockerProfileReservation(lease, reservationId, reservation);\n }\n catch (releaseError) {\n throw new AggregateError([error, releaseError], `Docker profile reservation ${reservationId} acquisition and disposal both failed`);\n }\n }\n throw error;\n }\n return reservation;\n}\nfunction profileControlEffect<T>(lease: DockerProfileLease, request: Readonly<Record<string, unknown>>, signal?: AbortSignal): Effect.Effect<T, Error> {\n return Effect.tryPromise({\n try: (runtimeSignal) => dockerProfileControlRequest<T>(lease.binding.controlSocketPath, request, signal === undefined ? runtimeSignal : AbortSignal.any([signal, runtimeSignal])),\n catch: (cause) => cause instanceof Error ? cause : new Error(String(cause)),\n });\n}\nfunction profileQueueDelay(milliseconds: number, signal?: AbortSignal): Effect.Effect<void, Error> {\n return Effect.tryPromise({\n try: (runtimeSignal) => {\n const combined = signal === undefined ? runtimeSignal : AbortSignal.any([signal, runtimeSignal]);\n return new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n combined.removeEventListener(\"abort\", abort);\n resolve();\n }, milliseconds);\n const abort = () => {\n clearTimeout(timer);\n combined.removeEventListener(\"abort\", abort);\n reject(combined.reason instanceof Error\n ? combined.reason\n : new DOMException(\"Docker profile reservation aborted\", \"AbortError\"));\n };\n if (combined.aborted)\n abort();\n else\n combined.addEventListener(\"abort\", abort, { once: true });\n });\n },\n catch: (cause) => cause instanceof Error ? cause : new Error(String(cause)),\n });\n}\nfunction makeDockerProfileReservationOwner(lease: DockerProfileLease, reservationId: string, initial: DockerProfileReservation): MutableDockerProfileReservationOwner {\n let current = initial;\n let released = false;\n let releaseInFlight: Promise<void> | undefined;\n return {\n get reservation() { return current; },\n update(next) { current = next; },\n async release() {\n if (released)\n return;\n if (releaseInFlight !== undefined)\n return await releaseInFlight;\n const releasing = relinquishDockerProfileReservation(lease, reservationId, current).then(() => {\n released = true;\n });\n releaseInFlight = releasing;\n try {\n await releasing;\n }\n finally {\n if (!released && releaseInFlight === releasing)\n releaseInFlight = undefined;\n }\n },\n };\n}\nfunction releaseReservationOwner(owner: DockerProfileReservationOwner): Effect.Effect<void> {\n return Effect.tryPromise({\n try: () => owner.release(),\n catch: (cause) => cause instanceof Error ? cause : new Error(String(cause)),\n }).pipe(Effect.orDie);\n}\n/**\n * Effect-native reservation acquisition used by the Sandbox runtime. A queued\n * reservation is still owned by the control service, while runner permits are\n * explicitly released before polling. A successful grant may interruptibly\n * reacquire them; cancellation during polling or reacquisition falls through\n * to the semaphore owners' own finalizers and the reservation Scope finalizer.\n */\nexport function acquireDockerProfileReservationEffect(lease: DockerProfileLease, reservationKind: \"container\" | \"build\", resources: Readonly<Record<string, number>>, admission: DockerProfileReservationAdmission, signal?: AbortSignal): Effect.Effect<DockerProfileReservationOwner, Error, Scope.Scope> {\n const reservationId = randomUUID();\n const request = <T>(frame: Readonly<Record<string, unknown>>, requestSignal = signal) => profileControlEffect<T>(lease, frame, requestSignal);\n return Effect.gen(function* () {\n // Effect 3.22.1 acquireRelease runs acquire and finalizer registration in\n // one uninterruptible region. Once acquire returns the first reservation\n // object, every later poll/grant/reacquire interruption is Scope-owned.\n const owner = yield* Effect.acquireRelease(request<DockerProfileReservation>({\n kind: \"reservation.acquire\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n reservationKind,\n resources,\n }).pipe(Effect.map((initial) => makeDockerProfileReservationOwner(lease, reservationId, initial))), (owned) => releaseReservationOwner(owned));\n if (owner.reservation.state !== \"granted\")\n yield* admission.queued;\n if (owner.reservation.state === \"queued\") {\n const awaitGrant = Effect.gen(function* () {\n while (owner.reservation.state === \"queued\") {\n yield* profileQueueDelay(100, signal);\n owner.update(yield* request<DockerProfileReservation>({\n kind: \"reservation.get\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n }));\n }\n return owner;\n });\n if (admission.slot === undefined) {\n yield* awaitGrant;\n }\n else {\n const slot = admission.slot;\n // Release queue-held permits explicitly. Effect.acquireRelease masks\n // its acquisition in v4, so reopen interruption only for this wait:\n // the reservation owner is already Scope-owned and can be released\n // before provider materialization ever reaches container.create.\n yield* Effect.uninterruptible(slot.release);\n const granted = yield* awaitGrant;\n if (granted.reservation.state !== \"granted\") {\n return yield* Effect.fail(nonGrantedReservationError(granted.reservation));\n }\n yield* Effect.interruptible(slot.reacquire);\n }\n }\n if (owner.reservation.state !== \"granted\") {\n return yield* Effect.fail(nonGrantedReservationError(owner.reservation));\n }\n yield* admission.granted;\n return owner;\n });\n}\nasync function writeControlFrame(socket: import(\"node:net\").Socket, bytes: Buffer): Promise<void> {\n if (socket.write(bytes))\n return;\n await once(socket, \"drain\");\n}\nfunction controlBuildRequest<T>(path: string, request: Readonly<Record<string, unknown>>, context: Readable, signal?: AbortSignal): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const socket = connect(path);\n let response = \"\";\n let settled = false;\n const settle = (outcome: {\n value: T;\n } | {\n error: unknown;\n }) => {\n if (settled)\n return;\n settled = true;\n signal?.removeEventListener(\"abort\", abort);\n if (\"value\" in outcome)\n resolve(outcome.value);\n else {\n context.destroy(outcome.error instanceof Error ? outcome.error : new Error(String(outcome.error)));\n reject(outcome.error);\n }\n };\n const abort = () => socket.destroy(signal?.reason instanceof Error\n ? signal.reason\n : new DOMException(\"Docker profile build aborted\", \"AbortError\"));\n if (signal?.aborted)\n abort();\n else\n signal?.addEventListener(\"abort\", abort, { once: true });\n socket.setTimeout(15 * 60000);\n socket.on(\"connect\", () => {\n void (async () => {\n await writeControlFrame(socket, Buffer.from(`${JSON.stringify(request)}\\n`));\n for await (const value of context) {\n const chunk = Buffer.isBuffer(value) ? value : Buffer.from(value);\n if (chunk.length === 0)\n continue;\n const length = Buffer.allocUnsafe(4);\n length.writeUInt32BE(chunk.length);\n await writeControlFrame(socket, length);\n await writeControlFrame(socket, chunk);\n }\n const end = Buffer.alloc(4);\n socket.end(end);\n })().catch((error: unknown) => socket.destroy(error instanceof Error ? error : new Error(String(error))));\n });\n socket.on(\"data\", (chunk: Buffer) => { response += chunk.toString(); });\n socket.on(\"timeout\", () => socket.destroy(new Error(`Docker profile build control timeout: ${path}`)));\n socket.on(\"error\", (error) => settle({ error }));\n socket.on(\"close\", () => {\n if (settled)\n return;\n try {\n const parsed = JSON.parse(response) as {\n ok?: boolean;\n result?: T;\n error?: {\n code?: string;\n message?: string;\n };\n };\n if (parsed.ok !== true || parsed.result === undefined) {\n settle({ error: new Error(`${parsed.error?.code ?? \"control-error\"}: ${parsed.error?.message ?? \"invalid control reply\"}`) });\n }\n else\n settle({ value: parsed.result });\n }\n catch (error) {\n settle({ error });\n }\n });\n });\n}\nexport async function createDockerProfileContainer(lease: DockerProfileLease, reservationId: string, request: DockerProfileContainerCreateInput | DockerProfileContainerIntent, signal?: AbortSignal): Promise<DockerProfileContainerCreateResult> {\n const create = \"intent\" in request ? request : { intent: \"workload\" as const, create: request };\n try {\n return await dockerProfileControlRequest<DockerProfileContainerCreateResult>(lease.binding.controlSocketPath, {\n kind: \"container.create\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n create,\n }, signal);\n }\n catch (error) {\n // A lost reply can leave the journal committed. Recover the control-owned IDs instead of\n // issuing a second create or asking DockerSandbox's legacy reconciler to remove them.\n const reservation = await dockerProfileControlRequest<DockerProfileReservation>(lease.binding.controlSocketPath, {\n kind: \"reservation.get\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n }, signal).catch(() => undefined);\n if (reservation?.state === \"committed\" &&\n reservation.containerId !== undefined &&\n reservation.networkId !== undefined) {\n return { containerId: reservation.containerId, networkId: reservation.networkId, state: \"active\" };\n }\n throw error;\n }\n}\nexport async function createDockerProfileBuild(lease: DockerProfileLease, reservationId: string, build: DockerProfileBuildCreateInput, context: Readable, signal?: AbortSignal): Promise<DockerProfileBuildCreateResult> {\n const cancelBuild = async () => {\n await dockerProfileControlRequest(lease.binding.controlSocketPath, {\n kind: \"build.cancel\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n }).catch(() => undefined);\n };\n try {\n return await controlBuildRequest<DockerProfileBuildCreateResult>(lease.binding.controlSocketPath, {\n kind: \"build.create\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n build,\n contextEncoding: \"tar-chunked/v1\",\n }, context, signal);\n }\n catch (error) {\n // The operation survives a client-side reply loss. Its durable reservation is\n // the recovery handle; never retry a build under a second provision token.\n if (signal?.aborted) {\n await cancelBuild();\n throw error;\n }\n for (let attempt = 0; attempt < 300; attempt += 1) {\n if (signal?.aborted) {\n await cancelBuild();\n throw error;\n }\n const reservation = await dockerProfileControlRequest<DockerProfileReservation>(lease.binding.controlSocketPath, {\n kind: \"reservation.get\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n }, signal).catch(() => undefined);\n if (signal?.aborted) {\n await cancelBuild();\n throw error;\n }\n if (reservation?.state === \"committed\" && reservation.buildTerminated === true) {\n if (reservation.buildError === undefined && !signal?.aborted && reservation.locator !== undefined) {\n return { locator: reservation.locator, state: \"terminated\" };\n }\n break;\n }\n if (reservation?.state === \"quarantined\")\n break;\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n throw error;\n }\n}\nexport async function releaseDockerProfileReservation(lease: DockerProfileLease, reservationId: string, proof?: Pick<DockerProfileReservation, \"slotId\">): Promise<DockerProfileReleaseReceipt> {\n const release = async (): Promise<DockerProfileReleaseReceipt> => validateReleaseReceipt(await dockerProfileControlRequest<unknown>(lease.binding.controlSocketPath, {\n kind: \"reservation.release\", invocationId: lease.invocationId, leaseToken: lease.leaseToken,\n reservationId,\n }));\n try {\n return await release();\n }\n catch (primary) {\n // A reply can be lost after the durable release. Treat that as success\n // only after the same profile generation confirms every owned handle is\n // absent and no reservation-specific recovery uncertainty remains.\n const deadline = Date.now() + 60000;\n while (Date.now() < deadline) {\n // Setup-prefix copy work can outlive a cancelled client socket. The host\n // rejects release while that journaled operation is active; retry until\n // it publishes/rolls back, then perform the same verified scrub release.\n const retried = await release().catch(() => undefined);\n if (retried !== undefined)\n return retried;\n const status = await dockerProfileControlRequest<unknown>(lease.binding.controlSocketPath, { kind: \"status\" }).then(validateCleanupStatusReceipt).catch(() => undefined);\n if (status?.profileId === lease.binding.profile.profileId && status.generation === lease.binding.daemonGeneration) {\n const reservationAbsent = !status.reservations.some((item) => item.reservationId === reservationId);\n const queueAbsent = !status.queue.some((item) => item.reservationId === reservationId);\n const leaseIdentitySafe = !status.leases.some((item) => item.invocationId === lease.invocationId) ||\n status.leases.some((item) => item.invocationId === lease.invocationId && item.daemonGeneration === lease.binding.daemonGeneration);\n const slot = proof?.slotId === undefined ? undefined : status.slots.find((item) => item.slotId === proof.slotId);\n const slotFree = proof?.slotId === undefined || (slot?.state === \"free\" && slot.reservationId === undefined);\n const uncertain = status.degraded.some((item) => item.includes(reservationId));\n if (reservationAbsent && queueAbsent && leaseIdentitySafe && slotFree && !uncertain) {\n return { released: true, cleanupProven: true };\n }\n }\n await new Promise((resolve) => setTimeout(resolve, 200));\n }\n throw primary;\n }\n}\nasync function cancelDockerProfileReservation(lease: DockerProfileLease, reservationId: string): Promise<void> {\n try {\n validateCancelReceipt(await dockerProfileControlRequest<unknown>(lease.binding.controlSocketPath, {\n kind: \"reservation.cancel\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n }));\n }\n catch (primary) {\n // A successful cancellation can outlive a lost client reply. Accept that\n // only when the attested generation proves every reservation handle gone.\n const status = await dockerProfileControlRequest<unknown>(lease.binding.controlSocketPath, { kind: \"status\" }).then(validateCleanupStatusReceipt).catch(() => undefined);\n const absent = status?.profileId === lease.binding.profile.profileId &&\n status.generation === lease.binding.daemonGeneration &&\n !status.reservations.some((item) => item.reservationId === reservationId) &&\n !status.queue.some((item) => item.reservationId === reservationId) &&\n !status.slots.some((item) => item.reservationId === reservationId) &&\n !status.degraded.some((item) => item.includes(reservationId));\n if (absent)\n return;\n throw primary;\n }\n}\nasync function relinquishDockerProfileReservation(lease: DockerProfileLease, reservationId: string, reservation: DockerProfileReservation): Promise<void> {\n if (reservation.state !== \"queued\" && reservation.state !== \"blocked\") {\n await releaseDockerProfileReservation(lease, reservationId, reservation);\n return;\n }\n try {\n await cancelDockerProfileReservation(lease, reservationId);\n return;\n }\n catch (cancelError) {\n // Capacity may become available between the last poll and cancellation.\n // Once granted, the reservation owns provider capacity and must use the\n // release path instead of pretending the failed cancel disposed it.\n let current: DockerProfileReservation;\n try {\n current = await dockerProfileControlRequest<DockerProfileReservation>(lease.binding.controlSocketPath, {\n kind: \"reservation.get\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n });\n }\n catch (refreshError) {\n throw new AggregateError([cancelError, refreshError], `Docker profile reservation ${reservationId} cancellation state could not be reconciled`);\n }\n if (current.state === \"queued\" || current.state === \"blocked\")\n throw cancelError;\n try {\n await releaseDockerProfileReservation(lease, reservationId, current);\n }\n catch (releaseError) {\n throw new AggregateError([cancelError, releaseError], `Docker profile reservation ${reservationId} raced from cancellation to release and both failed`);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["runtime.ts"],"names":[],"mappings":";;;AA0SA,4DAUC;AAiBD,kEAqBC;AACD,8DAEC;AAID,kEAwDC;AA8LD,0EA4DC;AACD,0EAwBC;AAkED,kDAEC;AACD,4DAgFC;AAMD,0EA2DC;AAuED,sFAqDC;AA8ED,oEA2BC;AACD,4DAqDC;AACD,0EAqCC;AAnsCD,6CAAyC;AACzC,6CAAmC;AACnC,+CAAkE;AAClE,uCAAmC;AACnC,yCAAiD;AAEjD,mCAA4C;AAG5C,gDAA0C;AAC1C,4CAA4C;AAC5C,+CAA2G;AAC3G,2CAA8J;AACjJ,QAAA,2BAA2B,GAAG,+BAA+B,CAAC;AA6B3E,MAAa,iCAAkC,SAAQ,KAAK;IAC/C,IAAI,CAAgD;IAC7D,YAAY,SAAuC,SAAS;QACxD,KAAK,CAAC,MAAM,KAAK,gBAAgB;YAC7B,CAAC,CAAC,0DAA0D;YAC5D,CAAC,CAAC,oCAAoC,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,MAAM,KAAK,gBAAgB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC5F,CAAC;CACJ;AARD,8EAQC;AACD,MAAa,kCAAmC,SAAQ,KAAK;IAEpC;IADZ,IAAI,GAAG,yBAAyB,CAAC;IAC1C,YAAqB,KAAwC;QACzD,KAAK,CAAC,gEAAgE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAD9E,UAAK,GAAL,KAAK,CAAmC;IAE7D,CAAC;CACJ;AALD,gFAKC;AAqFD,MAAa,yBAA0B,SAAQ,KAAK;IAC3B;IAAwC;IAA7D,YAAqB,IAAY,EAAE,OAAe,EAAW,OAA2C;QACpG,KAAK,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QADZ,SAAI,GAAJ,IAAI,CAAQ;QAA4B,YAAO,GAAP,OAAO,CAAoC;QAEpG,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC5C,CAAC;CACJ;AALD,8DAKC;AACD;kFACkF;AAClF,MAAa,kCAAmC,SAAQ,KAAK;IACpC;IAA8B;IAAnD,YAAqB,WAAmB,EAAW,QAAwC,EAAE,OAAe;QACxG,KAAK,CAAC,OAAO,CAAC,CAAC;QADE,gBAAW,GAAX,WAAW,CAAQ;QAAW,aAAQ,GAAR,QAAQ,CAAgC;QAEvF,IAAI,CAAC,IAAI,GAAG,oCAAoC,CAAC;IACrD,CAAC;CACJ;AALD,gFAKC;AACD,MAAa,qCAAsC,SAAQ,KAAK;IACvC;IAArB,YAAqB,WAAmB,EAAE,OAAe;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QADE,gBAAW,GAAX,WAAW,CAAQ;QAEpC,IAAI,CAAC,IAAI,GAAG,uCAAuC,CAAC;IACxD,CAAC;CACJ;AALD,sFAKC;AAgCD,MAAM,yCAAyC,GAAG,KAAK,CAAC;AACxD,MAAM,0CAA0C,GAAG,GAAG,CAAC;AACvD,SAAS,yBAAyB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,OAAO,GAAG,KAA0C,CAAC;IAC3D,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC;AACzB,CAAC;AACD,SAAS,sBAAsB,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,OAAO,GAAG,KAA0C,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI;QACzB,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC;QACvE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAChB,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,eAAe,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC;QACxF,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;IACzG,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,QAAQ,EAAE,IAAI;QACd,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9E,CAAC,CAAC;AACP,CAAC;AACD,SAAS,qBAAqB,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAK,KAA2C,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QACrG,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;IAC7G,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC;AACD,SAAS,4BAA4B,CAAC,KAAc;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,OAAO,GAAG,KAA0C,CAAC;IAC3D,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ;QACrC,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;QACtC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;QACpC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAC7B,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAC7B,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACvC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAChE,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ;YAClF,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC/E,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACxF,CAAC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACnD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAChE,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;YAC/E,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACrF,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IAClF,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAChE,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;YAC/E,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAChF,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IAClF,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAChE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;YACjE,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC;YAC1E,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC/E,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;YAC/E,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;SACrF,CAAC;IACN,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC7B,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;QACzC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;KACjD,CAAC,CAAC;AACP,CAAC;AACD,SAAS,kBAAkB,CAAC,OAA0C,EAAE,OAAoC,EAAE,YAAoB;IAC9H,OAAO,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS;QAClD,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,gBAAgB;QAC/C,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC;QAClE,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC;QACxE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC;QACjE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC;AAC1E,CAAC;AACM,KAAK,UAAU,wBAAwB,CAAC,OAAoC,EAAE,QAAgB;IAIjG,OAAO,MAAM,2BAA2B,CAAC,OAAO,CAAC,iBAAiB,EAAE;QAChE,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS;QACpC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,QAAQ;KACX,CAAC,CAAC;AACP,CAAC;AACD,SAAS,MAAM,CAAC,KAAa;IACzB,OAAO,KAAK,GAAG,MAAM,CAAC;AAC1B,CAAC;AACD,KAAK,UAAU,WAAW,CAAC,IAAY;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAA,iBAAK,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IAC9B,IAAI,OAAO,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,IAAA,eAAI,EAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,IAAI,OAAO,KAAK,IAAI;YAChB,MAAM;QACV,OAAO,GAAG,IAAA,mBAAO,EAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,yGAAyG;AAClG,KAAK,UAAU,2BAA2B,CAAC,WAAmB;IACjE,MAAM,KAAK,GAAG,CAAC,MAAM,IAAA,kBAAO,EAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;WAC3E,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;WAC5B,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;WAC9B,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACvD,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,IAAA,gBAAK,EAAC,MAAM,CAAC,CAAC;QAClC,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;YACrC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,mBAAQ,EAAC,MAAM,EAAE,MAAM,CAAC,CAAY;YAC9D,MAAM;YACN,SAAS,EAAE;gBACP,SAAS,EAAE,KAAK,CAAC,cAAc,EAAE;gBACjC,QAAQ,EAAE,KAAK,CAAC,GAAG;gBACnB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBACxB,WAAW,EAAE,MAAM,WAAW,CAAC,MAAM,CAAC;aACzC;SACJ,CAAC;IACN,CAAC,CAAC,CAAC,CAAC;IACJ,OAAO,IAAA,iCAAmB,EAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC;AACM,KAAK,UAAU,yBAAyB;IAC3C,OAAO,2BAA2B,CAAC,mCAA2B,CAAC,CAAC;AACpE,CAAC;AACD,gBAAgB;AAChB,2EAA2E;AAC3E,wEAAwE;AACxE,SAAgB,2BAA2B,CAAI,IAAY,EAAE,OAA0C,EAAE,MAAoB,EAAE,SAAS,GAAG,KAAK;IAC5I,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtC,MAAM,MAAM,GAAG,IAAA,kBAAO,EAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,OAIf,EAAE,EAAE;YACD,IAAI,OAAO;gBACP,OAAO;YACX,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5C,IAAI,OAAO,IAAI,OAAO;gBAClB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;gBAEvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,YAAY,KAAK;YAC9D,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,IAAI,YAAY,CAAC,wCAAwC,EAAE,YAAY,CAAC,CAAC,CAAC;QAChF,IAAI,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC;;YAER,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjG,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,IAAI,OAAO;gBACP,OAAO;YACX,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAOjC,CAAC;gBACF,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACpD,MAAM,CAAC;wBACH,KAAK,EAAE,IAAI,yBAAyB,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,CAAC,KAAK,CAAC;qBAC9I,CAAC,CAAC;gBACP,CAAC;;oBAEG,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACzC,CAAC;YACD,OAAO,KAAK,EAAE,CAAC;gBACX,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACtB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AACD,SAAS,qBAAqB,CAAC,KAAyB;IACpD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC;IACxE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,KAAK,wDAA4C;QACpE,UAAU,CAAC,QAAQ,KAAK,wBAAY,CAAC,UAAU;QAC/C,UAAU,CAAC,aAAa,KAAK,wBAAY,CAAC,UAAU;QACpD,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW;YAC/D,UAAU,CAAC,eAAe;QAC9B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB;YACtE,UAAU,CAAC,mBAAmB,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;IAClH,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AACD,SAAS,uBAAuB,CAAC,KAAyB,EAAE,WAAqC,EAAE,KAAuC;IACtI,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,aAAa,EAAE,UAAU,CAAC,aAAa;QACvC,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB;QAChD,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,cAAc;QAC7C,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,mBAAmB;QACvD,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;QAC7C,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW;QACxC,eAAe,EAAE,UAAU,CAAC,eAAe;QAC3C,cAAc,EAAE,UAAU,CAAC,cAAc;QACzC,YAAY,EAAE,UAAU,CAAC,YAAY;QACrC,YAAY,EAAE,UAAU,CAAC,YAAY;QACrC,eAAe,EAAE,UAAU,CAAC,eAAe;QAC3C,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;QACnD,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;QAC7C,cAAc,EAAE,UAAU,CAAC,cAAc;QACzC,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;QACnD,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACrE,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB;QAChD,cAAc,EAAE,WAAW,CAAC,cAAc;KAC7C,CAAC,CAAC;AACP,CAAC;AACD,SAAS,uBAAuB,CAAC,IAAsF,EAAE,KAAyB,EAAE,WAAqC,EAAE,KAAuC;IAC9N,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,WAAW,CAAC,cAAe,GAAG,CAAC,EAAE,CAAC;QACvF,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,cAAc,GAAG,IAAA,sBAAQ,EAAC,KAAK,CAAC,QAAQ,CAAC,mBAAgC,CAAC,CAAC;IACjF,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,KAAK,wBAAY,CAAC,UAAU;QACxD,KAAK,CAAC,QAAQ,CAAC,cAAc,KAAK,UAAU,cAAc,EAAE;QAC5D,KAAK,CAAC,QAAQ,CAAC,mBAAmB,KAAK,UAAU,cAAc,EAAE,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;IAChH,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACvH,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,IAAI;QACJ,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,aAAa,EAAE,WAAW,CAAC,aAAa;QACxC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,GAAG,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC;KACxD,CAAC,CAAC;AACP,CAAC;AACD,SAAS,qBAAqB,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,KAA0C,CAAC;AACtD,CAAC;AACD,SAAS,8BAA8B,CAAC,KAAwC,EAAE,cAAiC,EAAE,KAAa;IAC9H,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QACjC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,mBAAmB;YACnE,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;AACL,CAAC;AACD,SAAS,mCAAmC,CAAC,KAAc,EAAE,KAAyB,EAAE,QAAqD;IACzI,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC9C,8BAA8B,CAAC,QAAQ,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAC3I,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,QAAQ,CAAC,aAAa,KAAK,UAAU,CAAC,aAAa,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,QAAQ,CAAC,YAAY,KAAK,UAAU,CAAC,YAAY,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;IACvG,CAAC;IACD,IAAI,QAAQ,CAAC,YAAY,KAAK,UAAU,CAAC,YAAY,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;IACvG,CAAC;IACD,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ;QACvC,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QAChC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG;QAChC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAK,QAAQ,CAAC,SAAoB,GAAG,CAAC,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IACjF,CAAC;IACD,IAAK,QAAQ,CAAC,SAAoB,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,UAAU,CAAC,YAAY,KAAK,cAAc;QAC1C,QAAQ,CAAC,SAAS,KAAK,UAAU,CAAC,mBAAmB,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;IAClH,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,aAAa,EAAE,UAAU,CAAC,aAAa;QACvC,YAAY,EAAE,UAAU,CAAC,YAAY;QACrC,YAAY,EAAE,UAAU,CAAC,YAAY;QACrC,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,SAAS,EAAE,QAAQ,CAAC,SAAmB;KAC1C,CAAC,CAAC;IACH,IAAI,QAAQ,KAAK,SAAS;QACtB,CAAC,QAAQ,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY;YAC5C,QAAQ,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY;YAC/C,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa;YACjD,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU;YAC3C,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AACD,SAAS,gBAAgB,CAAC,MAAe,EAAE,QAAiB;IACxD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YAC7D,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,MAAM,KAAK,QAAQ,CAAC;AAC/B,CAAC;AACD,SAAS,8BAA8B,CAAC,OAA0C,EAAE,KAAyB,EAAE,WAAqC,EAAE,KAAuC,EAAE,KAAa;IACxM,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACpE,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,IAAI,KAAK,UAAU,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;AACL,CAAC;AACD,SAAS,0BAA0B,CAAC,KAAc,EAAE,KAAyB,EAAE,WAAqC,EAAE,KAAuC,EAAE,gBAA6D;IAGxN,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC9C,8BAA8B,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACxJ,8BAA8B,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtD,8BAA8B,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAChF,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,gBAAgB,EAAE,QAAQ,CAAC,gBAA0B;QACrD,cAAc,EAAE,QAAQ,CAAC,cAAwB;QACjD,aAAa,EAAE,QAAQ,CAAC,aAA6B;QACrD,cAAc,EAAE,QAAQ,CAAC,cAAwB;QACjD,mBAAmB,EAAE,QAAQ,CAAC,mBAA6B;QAC3D,QAAQ,EAAE,mCAAmC,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,gBAAgB,CAAC;QACzF,MAAM;KACT,CAAC,CAAC;AACP,CAAC;AACD,SAAS,+BAA+B,CAAC,KAAc,EAAE,KAAyB,EAAE,WAAqC,EAAE,KAAuC;IAC9J,IAAI,CAAC,CAAC,KAAK,YAAY,yBAAyB,CAAC;QAC7C,OAAO;IACX,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrD,8BAA8B,CAAC,OAAO,EAAE;YACpC,MAAM;YACN,SAAS;YACT,GAAG,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YAClE,UAAU;YACV,QAAQ;SACX,EAAE,iBAAiB,CAAC,CAAC;QACtB,8BAA8B,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;QACtF,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YAC5F,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YACxG,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAC/F,CAAC;QACD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,8BAA8B,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,0BAA0B,CAAC,CAAC;QACrF,IAAI,QAAQ,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;QACxG,CAAC;QACD,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrD,8BAA8B,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAClF,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAChG,CAAC;IACL,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACvF,CAAC;AACL,CAAC;AACM,KAAK,UAAU,+BAA+B,CAAC,KAAyB,EAAE,WAAqC,EAAE,KAAuC,EAAE,MAAoB,EAAE,gBAAgB,GAAG,MAAM;IAC5M,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,WAAoB,CAAC;IACzB,IAAI,CAAC;QACD,WAAW,GAAG,MAAM,2BAA2B,CAAU,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,sBAAsB,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACpM,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACX,+BAA+B,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAClE,MAAM,KAAK,CAAC;IAChB,CAAC;IACD,IAAI,QAAQ,GAAG,0BAA0B,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAClF,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;IAClC,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACvB,iFAAiF;QACjF,8EAA8E;QAC9E,gFAAgF;QAChF,6EAA6E;QAC7E,MAAM,6BAA6B,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACzD,IAAI,SAAkB,CAAC;QACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YAC9C,MAAM,mBAAmB,GAAG,IAAI,eAAe,EAAE,CAAC;YAClD,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,6BAA6B,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpG,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAC;YACzF,IAAI,CAAC;gBACD,WAAW,GAAG,MAAM,2BAA2B,CAAU,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,8BAA8B,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;gBAC9N,QAAQ,GAAG,0BAA0B,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;gBAC9E,SAAS,GAAG,SAAS,CAAC;gBACtB,YAAY,CAAC,cAAc,CAAC,CAAC;gBAC7B,MAAM;YACV,CAAC;YACD,OAAO,KAAK,EAAE,CAAC;gBACX,YAAY,CAAC,cAAc,CAAC,CAAC;gBAC7B,+BAA+B,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;gBAClE,SAAS,GAAG,KAAK,CAAC;gBAClB,IAAI,KAAK,YAAY,yBAAyB;oBAC1C,CAAC,KAAK,CAAC,IAAI,KAAK,kCAAkC,IAAI,KAAK,CAAC,IAAI,KAAK,sCAAsC,CAAC,EAAE,CAAC;oBAC/G,MAAM,IAAI,qCAAqC,CAAC,KAAK,CAAC,WAAW,EAAE,8CAA8C,CAAC,CAAC;gBACvH,CAAC;gBACD,IAAI,OAAO,KAAK,CAAC;oBACb,MAAM;gBACV,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,CAAC;QACL,CAAC;QACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,kCAAkC,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,EAAE,yEAAyE,CAAC,CAAC;QAC7J,CAAC;QACD,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;IAClC,CAAC;IACD,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,mBAAmB,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,8DAA8D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;QACjD,KAAK;QACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC9B,CAAC,CAAC;AACP,CAAC;AACM,KAAK,UAAU,+BAA+B,CAAC,KAAyB,EAAE,WAAqC,EAAE,KAAuC,EAAE,QAAqD,EAAE,MAAoB,EAAE,gBAAgB,GAAG,MAAM;IACnQ,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,WAAoB,CAAC;IACzB,IAAI,CAAC;QACD,WAAW,GAAG,MAAM,2BAA2B,CAAU,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,sBAAsB,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACpM,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACX,+BAA+B,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAClE,MAAM,KAAK,CAAC;IAChB,CAAC;IACD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;IACpC,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,8DAA8D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;QACjD,KAAK;QACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC9B,CAAC,CAAC;AACP,CAAC;AACD,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,WAAmB;IACvD,MAAM,KAAK,GAAG,MAAM,IAAA,gBAAK,EAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,iDAAiD,IAAI,EAAE,CAAC,CAAC;IAC7E,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW;QACzB,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,aAAa,KAAK,CAAC,GAAG,cAAc,WAAW,EAAE,CAAC,CAAC;IACtG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,EAAE,CAAC,CAAC;AAC9E,CAAC;AACD,SAAS,uBAAuB,CAAC,IAEhC;IACG,OAAO,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5G,CAAC;AACD,KAAK,UAAU,WAAW,CAAC,KAAiC;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC;QACvF,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC;KAC5F,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,IAAA,wBAAU,GAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,MAAM,2BAA2B,CAQhD,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IACpF,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,IAAI,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;QAC5G,SAAS,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB,IAAI,SAAS,CAAC,WAAW,KAAK,KAAK;QACxF,SAAS,CAAC,mBAAmB,KAAK,OAAO,CAAC,SAAS,CAAC,mBAAmB;QACvE,SAAS,CAAC,sBAAsB,KAAK,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,KAAK,oDAAoD,CAAC,CAAC;IACvG,CAAC;IACD,0DAA0D;IAC1D,oDAAoD;IACpD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,OAAO,CAAC,aAAa,KAAK,qBAAqB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,KAAK,yBAAyB,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,KAAK,0CAA0C,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,KAAK,6CAA6C,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC;IAC1C,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE;QAC7C,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,KAAK,uBAAuB,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO;QACP,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;QAC5C,QAAQ,EAAE,IAAI,CAAC,EAAE;QACjB,gBAAgB,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI;QACrD,iBAAiB,EAAE,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI;QACvD,QAAQ,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE;KAC5B,CAAC,CAAC;AACP,CAAC;AACM,KAAK,UAAU,mBAAmB,CAAC,KAAa;IACnD,OAAO,WAAW,CAAC,IAAA,kCAAoB,EAAC,MAAM,yBAAyB,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AACvF,CAAC;AACM,KAAK,UAAU,wBAAwB,CAAC,OAAoC;IAC/E,MAAM,YAAY,GAAG,IAAA,wBAAU,GAAE,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,2BAA2B,CAE9C,OAAO,CAAC,iBAAiB,EAAE;QAC1B,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS;QACpC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,YAAY;KACf,CAAC,CAAC;IACH,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,gBAAgB,GAAG,IAAI,CAAC;IAC5B,IAAI,aAAwC,CAAC;IAC7C,IAAI,KAAiD,CAAC;IACtD,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QACzB,IAAI,CAAC,gBAAgB;YACjB,OAAO;QACX,MAAM,2BAA2B,CAAC,OAAO,CAAC,iBAAiB,EAAE;YACzD,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU;SACxE,CAAC,CAAC;IACP,CAAC,CAAC;IACF,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxE,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,OAAO;QACH,OAAO;QACP,YAAY;QACZ,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,aAAa,EAAE,KAAK,IAAI,EAAE;YACtB,IAAI,OAAO;gBACP,OAAO;YACX,gBAAgB,GAAG,KAAK,CAAC;YACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtB,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,KAAK,GAAG,SAAS,CAAC;YACtB,CAAC;YACD,IAAI,aAAa,KAAK,SAAS;gBAC3B,OAAO,MAAM,aAAa,CAAC;YAC/B,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE;gBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,yCAAyC,CAAC;gBACxE,IAAI,SAAkB,CAAC;gBACvB,OAAO,IAAI,EAAE,CAAC;oBACV,IAAI,CAAC;wBACD,yBAAyB,CAAC,MAAM,2BAA2B,CAAU,OAAO,CAAC,iBAAiB,EAAE;4BAC5F,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU;yBACpE,CAAC,CAAC,CAAC;oBACR,CAAC;oBACD,OAAO,KAAK,EAAE,CAAC;wBACX,iEAAiE;wBACjE,+DAA+D;wBAC/D,6CAA6C;wBAC7C,SAAS,GAAG,KAAK,CAAC;oBACtB,CAAC;oBACD,IAAI,CAAC;wBACD,MAAM,MAAM,GAAG,4BAA4B,CAAC,MAAM,2BAA2B,CAAU,OAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;wBACvI,IAAI,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC;4BACpD,OAAO,GAAG,IAAI,CAAC;4BACf,OAAO;wBACX,CAAC;wBACD,SAAS,GAAG,IAAI,KAAK,CAAC,wBAAwB,YAAY,6CAA6C,CAAC,CAAC;oBAC7G,CAAC;oBACD,OAAO,KAAK,EAAE,CAAC;wBACX,SAAS,GAAG,KAAK,CAAC;oBACtB,CAAC;oBACD,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;wBACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,wCAAwC;4BACxF,GAAG,yCAAyC,IAAI,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;oBACtH,CAAC;oBACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,0CAA0C,CAAC,CAAC,CAAC;gBACpG,CAAC;YACL,CAAC,CAAC,EAAE,CAAC;YACL,aAAa,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC;gBACD,MAAM,QAAQ,CAAC;YACnB,CAAC;oBACO,CAAC;gBACL,IAAI,CAAC,OAAO,IAAI,aAAa,KAAK,QAAQ;oBACtC,aAAa,GAAG,SAAS,CAAC;YAClC,CAAC;QACL,CAAC;KACJ,CAAC;AACN,CAAC;AACD,SAAS,0BAA0B,CAAC,WAAqC;IACrE,OAAO,WAAW,CAAC,KAAK,KAAK,SAAS;QAClC,CAAC,CAAC,IAAI,iCAAiC,EAAE;QACzC,CAAC,CAAC,IAAI,kCAAkC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC;AACM,KAAK,UAAU,+BAA+B,CAAC,KAAyB,EAAE,eAAsC,EAAE,SAA2C,EAAE,MAAoB;IACtL,MAAM,aAAa,GAAG,IAAA,wBAAU,GAAE,CAAC;IACnC,wEAAwE;IACxE,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,cAAc,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,IAAI,WAAiD,CAAC;IACtD,IAAI,CAAC;QACD,WAAW,GAAG,MAAM,2BAA2B,CAA2B,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE;YACvG,IAAI,EAAE,qBAAqB,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU;YAC3F,aAAa,EAAE,eAAe,EAAE,SAAS;SAC5C,EAAE,MAAM,CAAC,CAAC;QACX,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACpC,IAAI,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,cAAc,EAAE,CAAC;gBAC/D,MAAM,IAAI,iCAAiC,CAAC,gBAAgB,CAAC,CAAC;YAClE,CAAC;YACD,IAAI,MAAM,EAAE,OAAO;gBACf,MAAM,MAAM,CAAC,MAAM,IAAI,IAAI,YAAY,CAAC,oCAAoC,EAAE,YAAY,CAAC,CAAC;YAChG,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACxC,IAAI,KAA+B,CAAC;gBACpC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC1B,IAAI,KAAK,KAAK,SAAS;wBACnB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAChD,OAAO,EAAE,CAAC;gBACd,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,IAAI,MAAM,KAAK,SAAS;oBACpB,OAAO;gBACX,KAAK,GAAG,GAAG,EAAE;oBACT,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAM,CAAC,CAAC;oBAC5C,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,YAAY,CAAC,oCAAoC,EAAE,YAAY,CAAC,CAAC,CAAC;gBAClG,CAAC,CAAC;gBACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YACH,WAAW,GAAG,MAAM,2BAA2B,CAA2B,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE;gBACvG,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa;aACzG,EAAE,MAAM,CAAC,CAAC;YACX,IAAI,MAAM,EAAE,OAAO;gBACf,MAAM,MAAM,CAAC,MAAM,IAAI,IAAI,YAAY,CAAC,oCAAoC,EAAE,YAAY,CAAC,CAAC;QACpG,CAAC;QACD,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBAClE,MAAM,IAAI,iCAAiC,CAAC,gBAAgB,CAAC,CAAC;YAClE,CAAC;YACD,MAAM,0BAA0B,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC;IACL,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACX,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACD,MAAM,kCAAkC,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;YAChF,CAAC;YACD,OAAO,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,cAAc,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,8BAA8B,aAAa,uCAAuC,CAAC,CAAC;YACxI,CAAC;QACL,CAAC;QACD,MAAM,KAAK,CAAC;IAChB,CAAC;IACD,OAAO,WAAW,CAAC;AACvB,CAAC;AACD,SAAS,oBAAoB,CAAI,KAAyB,EAAE,OAA0C,EAAE,MAAoB;IACxH,OAAO,eAAM,CAAC,UAAU,CAAC;QACrB,GAAG,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,2BAA2B,CAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QACjL,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC9E,CAAC,CAAC;AACP,CAAC;AACD,SAAS,iBAAiB,CAAC,YAAoB,EAAE,MAAoB;IACjE,OAAO,eAAM,CAAC,UAAU,CAAC;QACrB,GAAG,EAAE,CAAC,aAAa,EAAE,EAAE;YACnB,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;YACjG,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC1B,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC7C,OAAO,EAAE,CAAC;gBACd,CAAC,EAAE,YAAY,CAAC,CAAC;gBACjB,MAAM,KAAK,GAAG,GAAG,EAAE;oBACf,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC7C,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY,KAAK;wBACnC,CAAC,CAAC,QAAQ,CAAC,MAAM;wBACjB,CAAC,CAAC,IAAI,YAAY,CAAC,oCAAoC,EAAE,YAAY,CAAC,CAAC,CAAC;gBAChF,CAAC,CAAC;gBACF,IAAI,QAAQ,CAAC,OAAO;oBAChB,KAAK,EAAE,CAAC;;oBAER,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACP,CAAC;QACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC9E,CAAC,CAAC;AACP,CAAC;AACD,SAAS,iCAAiC,CAAC,KAAyB,EAAE,aAAqB,EAAE,OAAiC;IAC1H,IAAI,OAAO,GAAG,OAAO,CAAC;IACtB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,eAA0C,CAAC;IAC/C,OAAO;QACH,IAAI,WAAW,KAAK,OAAO,OAAO,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;QAChC,KAAK,CAAC,OAAO;YACT,IAAI,QAAQ;gBACR,OAAO;YACX,IAAI,eAAe,KAAK,SAAS;gBAC7B,OAAO,MAAM,eAAe,CAAC;YACjC,MAAM,SAAS,GAAG,kCAAkC,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC1F,QAAQ,GAAG,IAAI,CAAC;YACpB,CAAC,CAAC,CAAC;YACH,eAAe,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC;gBACD,MAAM,SAAS,CAAC;YACpB,CAAC;oBACO,CAAC;gBACL,IAAI,CAAC,QAAQ,IAAI,eAAe,KAAK,SAAS;oBAC1C,eAAe,GAAG,SAAS,CAAC;YACpC,CAAC;QACL,CAAC;KACJ,CAAC;AACN,CAAC;AACD,SAAS,uBAAuB,CAAC,KAAoC;IACjE,OAAO,eAAM,CAAC,UAAU,CAAC;QACrB,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;QAC1B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC9E,CAAC,CAAC,IAAI,CAAC,eAAM,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AACD;;;;;;GAMG;AACH,SAAgB,qCAAqC,CAAC,KAAyB,EAAE,eAAsC,EAAE,SAA2C,EAAE,SAA4C,EAAE,MAAoB;IACpO,MAAM,aAAa,GAAG,IAAA,wBAAU,GAAE,CAAC;IACnC,MAAM,OAAO,GAAG,CAAI,KAAwC,EAAE,aAAa,GAAG,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAI,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IAC9I,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACvB,0EAA0E;QAC1E,yEAAyE;QACzE,wEAAwE;QACxE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,cAAc,CAAC,OAAO,CAA2B;YACzE,IAAI,EAAE,qBAAqB;YAC3B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,aAAa;YACb,eAAe;YACf,SAAS;SACZ,CAAC,CAAC,IAAI,CAAC,eAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,iCAAiC,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/I,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS;YACrC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;QAC5B,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACnC,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC1C,KAAK,CAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;oBACtC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAA2B;wBAClD,IAAI,EAAE,iBAAiB;wBACvB,YAAY,EAAE,KAAK,CAAC,YAAY;wBAChC,UAAU,EAAE,KAAK,CAAC,UAAU;wBAC5B,aAAa;qBAChB,CAAC,CAAC,CAAC;gBACR,CAAC;gBACD,OAAO,KAAK,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC/B,KAAK,CAAC,CAAC,UAAU,CAAC;YACtB,CAAC;iBACI,CAAC;gBACF,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;gBAC5B,qEAAqE;gBACrE,oEAAoE;gBACpE,mEAAmE;gBACnE,iEAAiE;gBACjE,KAAK,CAAC,CAAC,eAAM,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC;gBAClC,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC1C,OAAO,KAAK,CAAC,CAAC,eAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC/E,CAAC;gBACD,KAAK,CAAC,CAAC,eAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC,CAAC,eAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;QACzB,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC;AACD,KAAK,UAAU,iBAAiB,CAAC,MAAiC,EAAE,KAAa;IAC7E,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACnB,OAAO;IACX,MAAM,IAAA,kBAAI,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAChC,CAAC;AACD,SAAS,mBAAmB,CAAI,IAAY,EAAE,OAA0C,EAAE,OAAiB,EAAE,MAAoB;IAC7H,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtC,MAAM,MAAM,GAAG,IAAA,kBAAO,EAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,OAIf,EAAE,EAAE;YACD,IAAI,OAAO;gBACP,OAAO;YACX,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5C,IAAI,OAAO,IAAI,OAAO;gBAClB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBACtB,CAAC;gBACF,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,YAAY,KAAK;YAC9D,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,IAAI,YAAY,CAAC,8BAA8B,EAAE,YAAY,CAAC,CAAC,CAAC;QACtE,IAAI,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC;;YAER,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACtB,KAAK,CAAC,KAAK,IAAI,EAAE;gBACb,MAAM,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7E,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAChC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAClE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;wBAClB,SAAS;oBACb,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBACrC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACnC,MAAM,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBACxC,MAAM,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC3C,CAAC;gBACD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9G,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvG,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,IAAI,OAAO;gBACP,OAAO;YACX,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAOjC,CAAC;gBACF,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACpD,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,eAAe,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,uBAAuB,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClI,CAAC;;oBAEG,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACzC,CAAC;YACD,OAAO,KAAK,EAAE,CAAC;gBACX,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACtB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AACM,KAAK,UAAU,4BAA4B,CAAC,KAAyB,EAAE,aAAqB,EAAE,OAAyE,EAAE,MAAoB;IAChM,MAAM,MAAM,GAAG,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAmB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAChG,IAAI,CAAC;QACD,OAAO,MAAM,2BAA2B,CAAqC,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE;YAC1G,IAAI,EAAE,kBAAkB;YACxB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,aAAa;YACb,MAAM;SACT,EAAE,MAAM,CAAC,CAAC;IACf,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACX,yFAAyF;QACzF,sFAAsF;QACtF,MAAM,WAAW,GAAG,MAAM,2BAA2B,CAA2B,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE;YAC7G,IAAI,EAAE,iBAAiB;YACvB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,aAAa;SAChB,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,WAAW,EAAE,KAAK,KAAK,WAAW;YAClC,WAAW,CAAC,WAAW,KAAK,SAAS;YACrC,WAAW,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACvG,CAAC;QACD,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC;AACM,KAAK,UAAU,wBAAwB,CAAC,KAAyB,EAAE,aAAqB,EAAE,KAAoC,EAAE,OAAiB,EAAE,MAAoB;IAC1K,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;QAC3B,MAAM,2BAA2B,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE;YAC/D,IAAI,EAAE,cAAc;YACpB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,aAAa;SAChB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC,CAAC;IACF,IAAI,CAAC;QACD,OAAO,MAAM,mBAAmB,CAAiC,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE;YAC9F,IAAI,EAAE,cAAc;YACpB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,aAAa;YACb,KAAK;YACL,eAAe,EAAE,gBAAgB;SACpC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACX,8EAA8E;QAC9E,2EAA2E;QAC3E,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YAClB,MAAM,WAAW,EAAE,CAAC;YACpB,MAAM,KAAK,CAAC;QAChB,CAAC;QACD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YAChD,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBAClB,MAAM,WAAW,EAAE,CAAC;gBACpB,MAAM,KAAK,CAAC;YAChB,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,2BAA2B,CAA2B,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE;gBAC7G,IAAI,EAAE,iBAAiB;gBACvB,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,aAAa;aAChB,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAClC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBAClB,MAAM,WAAW,EAAE,CAAC;gBACpB,MAAM,KAAK,CAAC;YAChB,CAAC;YACD,IAAI,WAAW,EAAE,KAAK,KAAK,WAAW,IAAI,WAAW,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;gBAC7E,IAAI,WAAW,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,WAAW,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAChG,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;gBACjE,CAAC;gBACD,MAAM;YACV,CAAC;YACD,IAAI,WAAW,EAAE,KAAK,KAAK,aAAa;gBACpC,MAAM;YACV,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC;AACM,KAAK,UAAU,+BAA+B,CAAC,KAAyB,EAAE,aAAqB,EAAE,KAAgD;IACpJ,MAAM,OAAO,GAAG,KAAK,IAA0C,EAAE,CAAC,sBAAsB,CAAC,MAAM,2BAA2B,CAAU,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE;QACjK,IAAI,EAAE,qBAAqB,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU;QAC3F,aAAa;KAChB,CAAC,CAAC,CAAC;IACJ,IAAI,CAAC;QACD,OAAO,MAAM,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,EAAE,CAAC;QACb,wEAAwE;QACxE,wEAAwE;QACxE,mEAAmE;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACpC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC3B,yEAAyE;YACzE,wEAAwE;YACxE,yEAAyE;YACzE,MAAM,OAAO,GAAG,MAAM,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,OAAO,KAAK,SAAS;gBACrB,OAAO,OAAO,CAAC;YACnB,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAU,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACzK,IAAI,MAAM,EAAE,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAChH,MAAM,iBAAiB,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,KAAK,aAAa,CAAC,CAAC;gBACpG,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,KAAK,aAAa,CAAC,CAAC;gBACvF,MAAM,iBAAiB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,CAAC;oBAC7F,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBACvI,MAAM,IAAI,GAAG,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjH,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC;gBAC7G,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC/E,IAAI,iBAAiB,IAAI,WAAW,IAAI,iBAAiB,IAAI,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;oBAClF,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;gBACnD,CAAC;YACL,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,OAAO,CAAC;IAClB,CAAC;AACL,CAAC;AACD,KAAK,UAAU,8BAA8B,CAAC,KAAyB,EAAE,aAAqB;IAC1F,IAAI,CAAC;QACD,qBAAqB,CAAC,MAAM,2BAA2B,CAAU,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE;YAC9F,IAAI,EAAE,oBAAoB;YAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,aAAa;SAChB,CAAC,CAAC,CAAC;IACR,CAAC;IACD,OAAO,OAAO,EAAE,CAAC;QACb,yEAAyE;QACzE,0EAA0E;QAC1E,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAU,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACzK,MAAM,MAAM,GAAG,MAAM,EAAE,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS;YAChE,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,OAAO,CAAC,gBAAgB;YACpD,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,KAAK,aAAa,CAAC;YACzE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,KAAK,aAAa,CAAC;YAClE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,KAAK,aAAa,CAAC;YAClE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QAClE,IAAI,MAAM;YACN,OAAO;QACX,MAAM,OAAO,CAAC;IAClB,CAAC;AACL,CAAC;AACD,KAAK,UAAU,kCAAkC,CAAC,KAAyB,EAAE,aAAqB,EAAE,WAAqC;IACrI,IAAI,WAAW,CAAC,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACpE,MAAM,+BAA+B,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;QACzE,OAAO;IACX,CAAC;IACD,IAAI,CAAC;QACD,MAAM,8BAA8B,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC3D,OAAO;IACX,CAAC;IACD,OAAO,WAAW,EAAE,CAAC;QACjB,wEAAwE;QACxE,wEAAwE;QACxE,oEAAoE;QACpE,IAAI,OAAiC,CAAC;QACtC,IAAI,CAAC;YACD,OAAO,GAAG,MAAM,2BAA2B,CAA2B,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE;gBACnG,IAAI,EAAE,iBAAiB;gBACvB,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,aAAa;aAChB,CAAC,CAAC;QACP,CAAC;QACD,OAAO,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,cAAc,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,8BAA8B,aAAa,6CAA6C,CAAC,CAAC;QACpJ,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;YACzD,MAAM,WAAW,CAAC;QACtB,IAAI,CAAC;YACD,MAAM,+BAA+B,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,cAAc,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,8BAA8B,aAAa,qDAAqD,CAAC,CAAC;QAC5J,CAAC;IACL,CAAC;AACL,CAAC","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { once } from \"node:events\";\nimport { lstat, readFile, readdir, stat } from \"node:fs/promises\";\nimport { connect } from \"node:net\";\nimport { dirname, join, parse } from \"node:path\";\nimport type { Readable } from \"node:stream\";\nimport { Effect, type Scope } from \"effect\";\nimport type { SandboxSetupPrefixCacheOperation } from \"../backend.ts\";\nimport type { JsonValue } from \"../../shared/types.ts\";\nimport { digestOf } from \"../identity.ts\";\nimport { sandboxState } from \"../action.ts\";\nimport { indexDockerProfiles, resolveDockerProfile, type ResolvedDockerProfileEntry } from \"./registry.ts\";\nimport { DOCKER_PROFILE_SETUP_PREFIX_CONTROL_PROTOCOL, type DockerExecutionProfileV1, type DockerProfileSetupPrefixFullCopyCapabilityV1, } from \"./schema.ts\";\nexport const DOCKER_PROFILE_REGISTRY_DIR = \"/etc/niceeval/docker-profiles\";\nexport interface DockerProfileRuntimeBinding {\n readonly alias: string;\n readonly profile: DockerExecutionProfileV1;\n readonly descriptorDigest: string;\n readonly daemonGeneration: string;\n readonly daemonId: string;\n readonly dockerSocketPath: string;\n readonly controlSocketPath: string;\n readonly platform: string;\n}\nexport interface DockerProfileLease {\n readonly binding: DockerProfileRuntimeBinding;\n readonly invocationId: string;\n readonly leaseToken: string;\n readonly stopHeartbeat: () => Promise<void>;\n}\nexport interface DockerProfileReservation {\n readonly reservationId: string;\n readonly provisionToken: string;\n readonly state: \"queued\" | \"blocked\" | \"granted\" | \"provisioning\" | \"committed\" | \"releasing\" | \"quarantined\";\n readonly containerId?: string;\n readonly networkId?: string;\n readonly locator?: string;\n readonly buildTerminated?: boolean;\n readonly buildError?: string;\n readonly slotId?: string;\n readonly slotGeneration?: number;\n}\nexport class DockerProfileCapacityBlockedError extends Error {\n readonly code: \"CAPACITY_BLOCKED\" | \"CAPACITY_QUEUE_TIMEOUT\";\n constructor(policy: \"blocked\" | \"doctor-timeout\" = \"blocked\") {\n super(policy === \"doctor-timeout\"\n ? \"Docker profile capacity queue timed out after 30 seconds\"\n : \"Docker profile capacity is blocked\");\n this.code = policy === \"doctor-timeout\" ? \"CAPACITY_QUEUE_TIMEOUT\" : \"CAPACITY_BLOCKED\";\n }\n}\nexport class DockerProfileReservationStateError extends Error {\n readonly code = \"RESERVATION_NOT_GRANTED\";\n constructor(readonly state: DockerProfileReservation[\"state\"]) {\n super(`Docker profile reservation cannot run from non-granted state ${JSON.stringify(state)}`);\n }\n}\n/**\n * Runner-owned permits that must not be retained while a profile reservation is\n * waiting in the control service's fair queue. The Effect values are stateful\n * and idempotent at their owner; this boundary only brackets the wait.\n */\nexport interface DockerProfileReservationWaitSlot {\n readonly release: Effect.Effect<void>;\n readonly reacquire: Effect.Effect<void>;\n}\n/** Provider-neutral admission notifications supplied by the Sandbox runtime. */\nexport interface DockerProfileReservationAdmission {\n readonly queued: Effect.Effect<void>;\n readonly granted: Effect.Effect<void>;\n readonly slot?: DockerProfileReservationWaitSlot;\n}\n/**\n * Scope-owned reservation. `release` is shared by the Scope finalizer and the\n * provider's normal after-stop path, so either path may win without double\n * disposal or leaving a grant-to-install ownership gap. Queued/blocked owners\n * cancel; capacity-owning states release.\n */\nexport interface DockerProfileReservationOwner {\n readonly reservation: DockerProfileReservation;\n readonly release: () => Promise<void>;\n}\ninterface MutableDockerProfileReservationOwner extends DockerProfileReservationOwner {\n readonly update: (reservation: DockerProfileReservation) => void;\n}\nexport interface DockerProfileContainerCreateInput {\n readonly image: string;\n readonly attemptId: string;\n readonly command?: readonly string[];\n readonly entrypoint?: string;\n readonly environment?: readonly string[];\n readonly workingDir?: string;\n readonly user?: string;\n readonly tmpfs?: Readonly<Record<string, string>>;\n}\nexport type DockerProfileContainerIntent = {\n readonly intent: \"workload\";\n readonly create: DockerProfileContainerCreateInput;\n} | {\n readonly intent: \"diagnostic\";\n};\nexport interface DockerProfileContainerCreateResult {\n readonly containerId: string;\n readonly networkId: string;\n readonly state: \"active\";\n}\nexport interface DockerProfileBuildCreateInput {\n readonly buildKey: string;\n readonly platform: string;\n readonly dockerfile: string;\n readonly buildArgs?: Readonly<Record<string, string>>;\n readonly target?: string;\n readonly retention?: \"cache\" | \"ephemeral\";\n}\nexport interface DockerProfileBuildCreateResult {\n readonly locator: string;\n readonly state: \"terminated\";\n readonly cleanupProven?: boolean;\n}\nexport interface DockerProfileSetupPrefixArtifactIdentityV1 {\n readonly requiredState: \"dockerData\";\n readonly copyProtocol: DockerProfileSetupPrefixFullCopyCapabilityV1[\"copyProtocol\"];\n readonly copyRevision: string;\n /** Provider-neutral identifier; it is not a Docker image id or a raw-filesystem digest slot. */\n readonly artifactId: string;\n readonly sizeBytes: number;\n}\ninterface DockerProfileSetupPrefixReceiptV1 {\n readonly daemonGeneration: string;\n readonly slotGeneration: number;\n readonly requiredState: \"dockerData\";\n readonly setupPrefixKey: string;\n readonly setupManifestDigest: string;\n readonly artifact: DockerProfileSetupPrefixArtifactIdentityV1;\n}\nexport interface DockerProfileSetupPrefixCaptureResultV1 extends DockerProfileSetupPrefixReceiptV1 {\n readonly state: \"captured\" | \"already-published\";\n}\nexport interface DockerProfileSetupPrefixRestoreResultV1 extends DockerProfileSetupPrefixReceiptV1 {\n readonly state: \"restored\" | \"already-restored\";\n}\nexport class DockerProfileControlError extends Error {\n constructor(readonly code: string, message: string, readonly details?: Readonly<Record<string, unknown>>) {\n super(`${code}: ${message}`);\n this.name = \"DockerProfileControlError\";\n }\n}\n/** The publish outcome is unknown after transport loss; callers must inspect\n * terminal rather than treating this as a cache miss or ordinary domain error. */\nexport class DockerProfileControlAmbiguityError extends Error {\n constructor(readonly operationId: string, readonly terminal: \"cancel-fenced\" | \"unresolved\", message: string) {\n super(message);\n this.name = \"DockerProfileControlAmbiguityError\";\n }\n}\nexport class DockerProfileControlCancellationError extends Error {\n constructor(readonly operationId: string, message: string) {\n super(message);\n this.name = \"DockerProfileControlCancellationError\";\n }\n}\ninterface DockerProfileReleaseReceipt {\n readonly released: true;\n readonly cleanupProven?: true;\n}\ninterface DockerProfileCancelReceipt {\n readonly cancelled: true;\n}\ninterface DockerProfileCleanupStatusReceipt {\n readonly profileId: string;\n readonly generation: string;\n readonly leases: readonly {\n readonly invocationId: string;\n readonly daemonGeneration: string;\n }[];\n readonly reservations: readonly {\n readonly reservationId: string;\n readonly invocationId: string;\n }[];\n readonly queue: readonly {\n readonly reservationId: string;\n readonly invocationId: string;\n }[];\n readonly slots: readonly {\n readonly slotId: string;\n readonly invocationId?: string;\n readonly reservationId?: string;\n readonly state: string;\n }[];\n readonly degraded: readonly string[];\n}\ntype DockerProfileLeaseDrainState = \"draining\" | \"recovered\";\nconst DOCKER_PROFILE_DRAIN_RECONCILE_TIMEOUT_MS = 60000;\nconst DOCKER_PROFILE_DRAIN_RECONCILE_INTERVAL_MS = 200;\nfunction validateLeaseDrainReceipt(value: unknown): DockerProfileLeaseDrainState {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new Error(\"Docker profile lease drain receipt is not an object\");\n }\n const receipt = value as Readonly<Record<string, unknown>>;\n if (Object.keys(receipt).length !== 1 || !(\"state\" in receipt)) {\n throw new Error(\"Docker profile lease drain receipt fields changed\");\n }\n if (receipt.state !== \"draining\" && receipt.state !== \"recovered\") {\n throw new Error(\"Docker profile lease drain did not reach a cleanup-owned state\");\n }\n return receipt.state;\n}\nfunction validateReleaseReceipt(value: unknown): DockerProfileReleaseReceipt {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new Error(\"Docker profile reservation release receipt is not an object\");\n }\n const receipt = value as Readonly<Record<string, unknown>>;\n const fields = Object.keys(receipt).sort();\n if (receipt.released !== true ||\n (receipt.cleanupProven !== undefined && receipt.cleanupProven !== true) ||\n (fields.length !== 1 &&\n !(fields.length === 2 && fields[0] === \"cleanupProven\" && fields[1] === \"released\")) ||\n (fields.length === 1 && fields[0] !== \"released\")) {\n throw new Error(\"Docker profile reservation release receipt is not exact or does not prove release\");\n }\n return Object.freeze({\n released: true,\n ...(receipt.cleanupProven === true ? { cleanupProven: true as const } : {}),\n });\n}\nfunction validateCancelReceipt(value: unknown): DockerProfileCancelReceipt {\n if (typeof value !== \"object\" || value === null || Array.isArray(value) ||\n Object.keys(value).length !== 1 || (value as Readonly<Record<string, unknown>>).cancelled !== true) {\n throw new Error(\"Docker profile reservation cancel receipt is not exact or does not prove cancellation\");\n }\n return Object.freeze({ cancelled: true });\n}\nfunction validateCleanupStatusReceipt(value: unknown): DockerProfileCleanupStatusReceipt {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new Error(\"Docker profile cleanup status receipt is not an object\");\n }\n const receipt = value as Readonly<Record<string, unknown>>;\n if (typeof receipt.profileId !== \"string\" ||\n typeof receipt.generation !== \"string\" ||\n !Array.isArray(receipt.leases) ||\n !Array.isArray(receipt.reservations) ||\n !Array.isArray(receipt.queue) ||\n !Array.isArray(receipt.slots) ||\n !Array.isArray(receipt.degraded)) {\n throw new Error(\"Docker profile cleanup status receipt is missing ownership fields\");\n }\n const leases = receipt.leases.map((item) => {\n if (typeof item !== \"object\" || item === null || Array.isArray(item) ||\n typeof item.invocationId !== \"string\" || typeof item.daemonGeneration !== \"string\")\n throw new Error(\"Docker profile cleanup status lease identity is invalid\");\n return { invocationId: item.invocationId, daemonGeneration: item.daemonGeneration };\n });\n const reservations = receipt.reservations.map((item) => {\n if (typeof item !== \"object\" || item === null || Array.isArray(item) ||\n typeof item.reservationId !== \"string\" || typeof item.invocationId !== \"string\")\n throw new Error(\"Docker profile cleanup status reservation identity is invalid\");\n return { reservationId: item.reservationId, invocationId: item.invocationId };\n });\n const queue = receipt.queue.map((item) => {\n if (typeof item !== \"object\" || item === null || Array.isArray(item) ||\n typeof item.reservationId !== \"string\" || typeof item.invocationId !== \"string\")\n throw new Error(\"Docker profile cleanup status queue ownership is invalid\");\n return { reservationId: item.reservationId, invocationId: item.invocationId };\n });\n const slots = receipt.slots.map((item) => {\n if (typeof item !== \"object\" || item === null || Array.isArray(item) ||\n typeof item.slotId !== \"string\" || typeof item.state !== \"string\" ||\n (item.invocationId !== undefined && typeof item.invocationId !== \"string\") ||\n (item.reservationId !== undefined && typeof item.reservationId !== \"string\"))\n throw new Error(\"Docker profile cleanup status slot ownership is invalid\");\n return {\n slotId: item.slotId,\n state: item.state,\n ...(item.invocationId === undefined ? {} : { invocationId: item.invocationId }),\n ...(item.reservationId === undefined ? {} : { reservationId: item.reservationId }),\n };\n });\n if (!receipt.degraded.every((item) => typeof item === \"string\")) {\n throw new Error(\"Docker profile cleanup status diagnostics are invalid\");\n }\n return Object.freeze({\n profileId: receipt.profileId,\n generation: receipt.generation,\n leases: Object.freeze(leases),\n reservations: Object.freeze(reservations),\n queue: Object.freeze(queue),\n slots: Object.freeze(slots),\n degraded: Object.freeze([...receipt.degraded]),\n });\n}\nfunction leaseCleanupProven(receipt: DockerProfileCleanupStatusReceipt, binding: DockerProfileRuntimeBinding, invocationId: string): boolean {\n return receipt.profileId === binding.profile.profileId &&\n receipt.generation === binding.daemonGeneration &&\n !receipt.leases.some((item) => item.invocationId === invocationId) &&\n !receipt.reservations.some((item) => item.invocationId === invocationId) &&\n !receipt.queue.some((item) => item.invocationId === invocationId) &&\n !receipt.slots.some((item) => item.invocationId === invocationId);\n}\nexport async function lookupDockerProfileBuild(binding: DockerProfileRuntimeBinding, buildKey: string): Promise<{\n readonly hit: boolean;\n readonly locator: string;\n}> {\n return await dockerProfileControlRequest(binding.controlSocketPath, {\n kind: \"build.lookup\",\n profileId: binding.profile.profileId,\n daemonGeneration: binding.daemonGeneration,\n buildKey,\n });\n}\nfunction modeOf(value: number): number {\n return value & 0o7777;\n}\nasync function parentModes(path: string): Promise<number[]> {\n const result: number[] = [];\n const root = parse(path).root;\n let current = dirname(path);\n while (true) {\n result.push(modeOf((await stat(current)).mode));\n if (current === root)\n break;\n current = dirname(current);\n }\n return result;\n}\n/** Production registry location is fixed; tests may exercise descriptor I/O at an explicit directory. */\nexport async function loadDockerProfileRegistryAt(registryDir: string): Promise<ReturnType<typeof indexDockerProfiles>> {\n const names = (await readdir(registryDir)).filter((name) => name.endsWith(\".json\")\n && !name.endsWith(\".host.json\")\n && !name.endsWith(\".daemon.json\")\n && !/^assets-v[1-9]\\d*\\.json$/.test(name)).sort();\n const entries = await Promise.all(names.map(async (name) => {\n const source = join(registryDir, name);\n const facts = await lstat(source);\n return {\n alias: name.slice(0, -\".json\".length),\n profile: JSON.parse(await readFile(source, \"utf8\")) as unknown,\n source,\n fileFacts: {\n isSymlink: facts.isSymbolicLink(),\n ownerUid: facts.uid,\n mode: modeOf(facts.mode),\n parentModes: await parentModes(source),\n },\n };\n }));\n return indexDockerProfiles(entries, { expectedOwnerUid: 0 });\n}\nexport async function loadDockerProfileRegistry(): Promise<ReturnType<typeof indexDockerProfiles>> {\n return loadDockerProfileRegistryAt(DOCKER_PROFILE_REGISTRY_DIR);\n}\n// @concord-code\n// @concord-implements docs/feature/sandbox-docker-profiles/architecture.md\n// @concord-implements docs/feature/sandbox-docker-profiles/lifecycle.md\nexport function dockerProfileControlRequest<T>(path: string, request: Readonly<Record<string, unknown>>, signal?: AbortSignal, timeoutMs = 10000): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const socket = connect(path);\n let response = \"\";\n let settled = false;\n const settle = (outcome: {\n value: T;\n } | {\n error: unknown;\n }) => {\n if (settled)\n return;\n settled = true;\n signal?.removeEventListener(\"abort\", abort);\n if (\"value\" in outcome)\n resolve(outcome.value);\n else\n reject(outcome.error);\n };\n const abort = () => socket.destroy(signal?.reason instanceof Error\n ? signal.reason\n : new DOMException(\"Docker profile control request aborted\", \"AbortError\"));\n if (signal?.aborted)\n abort();\n else\n signal?.addEventListener(\"abort\", abort, { once: true });\n socket.setTimeout(timeoutMs);\n socket.on(\"connect\", () => socket.end(`${JSON.stringify(request)}\\n`));\n socket.on(\"data\", (chunk: Buffer) => { response += chunk.toString(); });\n socket.on(\"timeout\", () => socket.destroy(new Error(`Docker profile control timeout: ${path}`)));\n socket.on(\"error\", (error) => settle({ error }));\n socket.on(\"close\", () => {\n if (settled)\n return;\n try {\n const parsed = JSON.parse(response) as {\n ok?: boolean;\n result?: T;\n error?: Readonly<Record<string, unknown>> & {\n readonly code?: string;\n readonly message?: string;\n };\n };\n if (parsed.ok !== true || parsed.result === undefined) {\n settle({\n error: new DockerProfileControlError(parsed.error?.code ?? \"control-error\", parsed.error?.message ?? \"invalid control reply\", parsed.error),\n });\n }\n else\n settle({ value: parsed.result });\n }\n catch (error) {\n settle({ error });\n }\n });\n });\n}\nfunction setupPrefixCapability(lease: DockerProfileLease): DockerProfileSetupPrefixFullCopyCapabilityV1 {\n const capability = lease.binding.profile.backend.filesystem.setupPrefix;\n if (capability === undefined) {\n throw new Error(\"Docker profile descriptor does not declare setup-prefix full-copy capability\");\n }\n if (capability.protocol !== DOCKER_PROFILE_SETUP_PREFIX_CONTROL_PROTOCOL ||\n capability.coverage !== sandboxState.dockerData ||\n capability.requiredState !== sandboxState.dockerData ||\n lease.binding.profile.backend.filesystem.dockerDataPool.attestation !==\n capability.slotAttestation ||\n lease.binding.profile.backend.filesystem.dockerDataPool.bytesPerAllocation !==\n capability.filesystemSizeBytes) {\n throw new Error(\"Docker profile setup-prefix capability is not backed by independent fixed-filesystem slots\");\n }\n return capability;\n}\nfunction setupPrefixExpectedWire(lease: DockerProfileLease, reservation: DockerProfileReservation, input: SandboxSetupPrefixCacheOperation): Readonly<Record<string, unknown>> {\n const capability = setupPrefixCapability(lease);\n return Object.freeze({\n protocol: capability.protocol,\n requiredState: capability.requiredState,\n descriptorDigest: lease.binding.descriptorDigest,\n setupPrefixKey: input.manifest.setupPrefixKey,\n setupManifestDigest: input.manifest.setupManifestDigest,\n providerIdentity: capability.providerIdentity,\n baseIdentity: input.manifest.baseImageId,\n executionDomain: capability.executionDomain,\n helperRevision: capability.helperRevision,\n copyProtocol: capability.copyProtocol,\n copyRevision: capability.copyRevision,\n quiesceRevision: capability.quiesceRevision,\n publicationRevision: capability.publicationRevision,\n recoveryRevision: capability.recoveryRevision,\n manifestSchema: capability.manifestSchema,\n filesystemSizeBytes: capability.filesystemSizeBytes,\n filesystemFeatures: Object.freeze([...capability.filesystemFeatures]),\n daemonGeneration: lease.binding.daemonGeneration,\n slotGeneration: reservation.slotGeneration,\n });\n}\nfunction setupPrefixControlFrame(kind: \"setup-prefix.capture\" | \"setup-prefix.capture.publish\" | \"setup-prefix.restore\", lease: DockerProfileLease, reservation: DockerProfileReservation, input: SandboxSetupPrefixCacheOperation): Readonly<Record<string, unknown>> {\n if (!Number.isSafeInteger(reservation.slotGeneration) || reservation.slotGeneration! < 0) {\n throw new Error(\"Docker profile reservation has no attested private slot generation\");\n }\n const manifestDigest = digestOf(input.manifest.declarationMetadata as JsonValue);\n if (input.manifest.requiredState !== sandboxState.dockerData ||\n input.manifest.setupPrefixKey !== `prefix:${manifestDigest}` ||\n input.manifest.setupManifestDigest !== `sha256:${manifestDigest}`) {\n throw new Error(\"Docker profile setup-prefix key is not bound to its complete canonical manifest identity\");\n }\n if (input.operationId.length === 0 || input.operationId.length > 512 || /[\\u0000-\\u001f\\u007f]/u.test(input.operationId)) {\n throw new Error(\"Docker profile setup-prefix operationId is invalid\");\n }\n return Object.freeze({\n kind,\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId: reservation.reservationId,\n operationId: input.operationId,\n ...setupPrefixExpectedWire(lease, reservation, input),\n });\n}\nfunction setupPrefixWireRecord(value: unknown): Readonly<Record<string, unknown>> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new Error(\"Docker profile setup-prefix control response is not an object\");\n }\n return value as Readonly<Record<string, unknown>>;\n}\nfunction validateExactSetupPrefixFields(value: Readonly<Record<string, unknown>>, expectedFields: readonly string[], label: string): void {\n const actual = Object.keys(value).sort();\n const expected = [...expectedFields].sort();\n if (actual.length !== expected.length ||\n actual.some((field, index) => field !== expected[index])) {\n throw new Error(`Docker profile setup-prefix ${label} fields changed: ` +\n `expected ${expected.join(\", \")}; received ${actual.join(\", \")}`);\n }\n}\nfunction validateSetupPrefixArtifactIdentity(value: unknown, lease: DockerProfileLease, expected?: DockerProfileSetupPrefixArtifactIdentityV1): DockerProfileSetupPrefixArtifactIdentityV1 {\n const artifact = setupPrefixWireRecord(value);\n validateExactSetupPrefixFields(artifact, [\"requiredState\", \"copyProtocol\", \"copyRevision\", \"artifactId\", \"sizeBytes\"], \"artifact receipt\");\n const capability = setupPrefixCapability(lease);\n if (artifact.requiredState !== capability.requiredState) {\n throw new Error(\"Docker profile setup-prefix artifact requiredState does not match the descriptor\");\n }\n if (artifact.copyProtocol !== capability.copyProtocol) {\n throw new Error(\"Docker profile setup-prefix artifact copyProtocol does not match the descriptor\");\n }\n if (artifact.copyRevision !== capability.copyRevision) {\n throw new Error(\"Docker profile setup-prefix artifact copyRevision does not match the descriptor\");\n }\n if (typeof artifact.artifactId !== \"string\" ||\n artifact.artifactId.length === 0 ||\n artifact.artifactId.length > 512 ||\n /[\\u0000-\\u001f\\u007f]/u.test(artifact.artifactId)) {\n throw new Error(\"Docker profile setup-prefix artifactId is not a bounded provider identity\");\n }\n if (!Number.isSafeInteger(artifact.sizeBytes) || (artifact.sizeBytes as number) < 0) {\n throw new Error(\"Docker profile setup-prefix artifact sizeBytes is invalid\");\n }\n if ((artifact.sizeBytes as number) > capability.seedLimitBytes) {\n throw new Error(\"Docker profile setup-prefix artifact exceeds descriptor seedLimitBytes\");\n }\n if (capability.copyProtocol === \"raw-image/v1\" &&\n artifact.sizeBytes !== capability.filesystemSizeBytes) {\n throw new Error(\"Docker profile raw-image artifact does not cover the complete fixed Docker data filesystem\");\n }\n const identity = Object.freeze({\n requiredState: capability.requiredState,\n copyProtocol: capability.copyProtocol,\n copyRevision: capability.copyRevision,\n artifactId: artifact.artifactId,\n sizeBytes: artifact.sizeBytes as number,\n });\n if (expected !== undefined &&\n (identity.copyProtocol !== expected.copyProtocol ||\n identity.copyRevision !== expected.copyRevision ||\n identity.requiredState !== expected.requiredState ||\n identity.artifactId !== expected.artifactId ||\n identity.sizeBytes !== expected.sizeBytes)) {\n throw new Error(\"Docker profile setup-prefix restored artifact identity changed after capture\");\n }\n return identity;\n}\nfunction wireValueMatches(actual: unknown, expected: unknown): boolean {\n if (Array.isArray(expected)) {\n return Array.isArray(actual) && actual.length === expected.length &&\n expected.every((value, index) => actual[index] === value);\n }\n return actual === expected;\n}\nfunction validateSetupPrefixWireBinding(receipt: Readonly<Record<string, unknown>>, lease: DockerProfileLease, reservation: DockerProfileReservation, input: SandboxSetupPrefixCacheOperation, label: string): void {\n const expected = setupPrefixExpectedWire(lease, reservation, input);\n for (const [field, value] of Object.entries(expected)) {\n if (!wireValueMatches(receipt[field], value)) {\n throw new Error(`Docker profile setup-prefix ${label} ${field} changed`);\n }\n }\n}\nfunction validateSetupPrefixReceipt(value: unknown, lease: DockerProfileLease, reservation: DockerProfileReservation, input: SandboxSetupPrefixCacheOperation, expectedArtifact?: DockerProfileSetupPrefixArtifactIdentityV1): DockerProfileSetupPrefixReceiptV1 & {\n readonly status: Readonly<Record<string, unknown>>;\n} {\n const response = setupPrefixWireRecord(value);\n validateExactSetupPrefixFields(response, [...Object.keys(setupPrefixExpectedWire(lease, reservation, input)), \"artifact\", \"status\"], \"success receipt\");\n validateSetupPrefixWireBinding(response, lease, reservation, input, \"response\");\n const status = setupPrefixWireRecord(response.status);\n validateExactSetupPrefixFields(status, [\"state\", \"capacity\"], \"success status\");\n setupPrefixWireRecord(status.capacity);\n return Object.freeze({\n daemonGeneration: response.daemonGeneration as string,\n slotGeneration: response.slotGeneration as number,\n requiredState: response.requiredState as \"dockerData\",\n setupPrefixKey: response.setupPrefixKey as string,\n setupManifestDigest: response.setupManifestDigest as string,\n artifact: validateSetupPrefixArtifactIdentity(response.artifact, lease, expectedArtifact),\n status,\n });\n}\nfunction validateSetupPrefixControlError(cause: unknown, lease: DockerProfileLease, reservation: DockerProfileReservation, input: SandboxSetupPrefixCacheOperation): void {\n if (!(cause instanceof DockerProfileControlError))\n return;\n try {\n const details = setupPrefixWireRecord(cause.details);\n validateExactSetupPrefixFields(details, [\n \"code\",\n \"message\",\n ...Object.keys(setupPrefixExpectedWire(lease, reservation, input)),\n \"artifact\",\n \"status\",\n ], \"failure receipt\");\n validateSetupPrefixWireBinding(details, lease, reservation, input, \"failure receipt\");\n if (typeof details.code !== \"string\" || details.code.length === 0 || details.code !== cause.code ||\n typeof details.message !== \"string\" || details.message.length === 0 || details.message.length > 65536) {\n throw new Error(\"Docker profile setup-prefix failure code or message identity is invalid\");\n }\n const artifact = setupPrefixWireRecord(details.artifact);\n validateExactSetupPrefixFields(artifact, [\"artifactId\"], \"failure artifact receipt\");\n if (artifact.artifactId !== null) {\n throw new Error(\"Docker profile setup-prefix terminal failure must not claim an artifact identity\");\n }\n const status = setupPrefixWireRecord(details.status);\n validateExactSetupPrefixFields(status, [\"state\", \"diagnostic\"], \"failure status\");\n if (status.state !== \"failed\" || status.diagnostic !== cause.code) {\n throw new Error(\"Docker profile setup-prefix failure status does not match its diagnostic\");\n }\n }\n catch (error) {\n throw new Error(error instanceof Error ? error.message : String(error), { cause });\n }\n}\nexport async function captureDockerProfileSetupPrefix(lease: DockerProfileLease, reservation: DockerProfileReservation, input: SandboxSetupPrefixCacheOperation, signal?: AbortSignal, controlTimeoutMs = 120000): Promise<DockerProfileSetupPrefixCaptureResultV1> {\n setupPrefixCapability(lease);\n let rawResponse: unknown;\n try {\n rawResponse = await dockerProfileControlRequest<unknown>(lease.binding.controlSocketPath, setupPrefixControlFrame(\"setup-prefix.capture\", lease, reservation, input), signal, controlTimeoutMs);\n }\n catch (cause) {\n validateSetupPrefixControlError(cause, lease, reservation, input);\n throw cause;\n }\n let response = validateSetupPrefixReceipt(rawResponse, lease, reservation, input);\n let state = response.status.state;\n if (state === \"prepared\") {\n // Copy/prepare may legitimately use the caller's long control budget. Publish is\n // only a journal transition, so response-loss reconciliation owns a separate,\n // short budget. It must also outlive caller abort: once prepare succeeded, only\n // the Host can prove published or cancel-fenced for this operation identity.\n const publishReconciliationDeadline = Date.now() + 30000;\n let lastError: unknown;\n for (let attempt = 0; attempt < 3; attempt += 1) {\n const reconcileController = new AbortController();\n const reconcileTimeoutMs = Math.max(1, Math.min(10000, publishReconciliationDeadline - Date.now()));\n const reconcileTimer = setTimeout(() => reconcileController.abort(), reconcileTimeoutMs);\n try {\n rawResponse = await dockerProfileControlRequest<unknown>(lease.binding.controlSocketPath, setupPrefixControlFrame(\"setup-prefix.capture.publish\", lease, reservation, input), reconcileController.signal, reconcileTimeoutMs);\n response = validateSetupPrefixReceipt(rawResponse, lease, reservation, input);\n lastError = undefined;\n clearTimeout(reconcileTimer);\n break;\n }\n catch (cause) {\n clearTimeout(reconcileTimer);\n validateSetupPrefixControlError(cause, lease, reservation, input);\n lastError = cause;\n if (cause instanceof DockerProfileControlError &&\n (cause.code === \"setup-prefix-operation-cancelled\" || cause.code === \"setup-prefix-operation-cancel-fenced\")) {\n throw new DockerProfileControlCancellationError(input.operationId, \"setup-prefix capture was fenced and scrubbed\");\n }\n if (attempt === 2)\n break;\n await new Promise<void>((resolve) => setTimeout(resolve, 100 * (attempt + 1)));\n }\n }\n if (lastError !== undefined) {\n throw new DockerProfileControlAmbiguityError(input.operationId, \"unresolved\", \"setup-prefix publish outcome is ambiguous; retry/reconcile is exhausted\");\n }\n state = response.status.state;\n }\n if (state !== \"captured\" && state !== \"already-published\") {\n throw new Error(`Docker profile setup-prefix capture returned invalid state ${JSON.stringify(state)}`);\n }\n return Object.freeze({\n daemonGeneration: response.daemonGeneration,\n slotGeneration: response.slotGeneration,\n requiredState: response.requiredState,\n setupPrefixKey: response.setupPrefixKey,\n setupManifestDigest: response.setupManifestDigest,\n state,\n artifact: response.artifact,\n });\n}\nexport async function restoreDockerProfileSetupPrefix(lease: DockerProfileLease, reservation: DockerProfileReservation, input: SandboxSetupPrefixCacheOperation, expected?: DockerProfileSetupPrefixArtifactIdentityV1, signal?: AbortSignal, controlTimeoutMs = 120000): Promise<DockerProfileSetupPrefixRestoreResultV1> {\n setupPrefixCapability(lease);\n let rawResponse: unknown;\n try {\n rawResponse = await dockerProfileControlRequest<unknown>(lease.binding.controlSocketPath, setupPrefixControlFrame(\"setup-prefix.restore\", lease, reservation, input), signal, controlTimeoutMs);\n }\n catch (cause) {\n validateSetupPrefixControlError(cause, lease, reservation, input);\n throw cause;\n }\n const response = validateSetupPrefixReceipt(rawResponse, lease, reservation, input, expected);\n const state = response.status.state;\n if (state !== \"restored\" && state !== \"already-restored\") {\n throw new Error(`Docker profile setup-prefix restore returned invalid state ${JSON.stringify(state)}`);\n }\n return Object.freeze({\n daemonGeneration: response.daemonGeneration,\n slotGeneration: response.slotGeneration,\n requiredState: response.requiredState,\n setupPrefixKey: response.setupPrefixKey,\n setupManifestDigest: response.setupManifestDigest,\n state,\n artifact: response.artifact,\n });\n}\nasync function socketFact(path: string, expectedUid: number): Promise<void> {\n const value = await lstat(path);\n if (!value.isSocket())\n throw new Error(`Docker profile endpoint is not a Unix socket: ${path}`);\n if (value.uid !== expectedUid)\n throw new Error(`Docker profile endpoint ${path} owner is ${value.uid}, expected ${expectedUid}`);\n if ((modeOf(value.mode) & 0o002) !== 0)\n throw new Error(`Docker profile endpoint is world-writable: ${path}`);\n}\nfunction rootlessSecurityOptions(info: {\n readonly SecurityOptions?: readonly string[];\n}): boolean {\n return (info.SecurityOptions ?? []).some((option: string) => option.toLowerCase().includes(\"rootless\"));\n}\nasync function attestEntry(entry: ResolvedDockerProfileEntry): Promise<DockerProfileRuntimeBinding> {\n const profile = entry.profile;\n await Promise.all([\n socketFact(profile.transport.dockerSocket.path, profile.transport.dockerSocket.peerUid),\n socketFact(profile.transport.controlSocket.path, profile.transport.controlSocket.peerUid),\n ]);\n const nonce = randomUUID();\n const challenge = await dockerProfileControlRequest<{\n readonly protocol: string;\n readonly profileId: string;\n readonly descriptorDigest: string;\n readonly hostMachineIdentity: string;\n readonly backendMachineIdentity: string;\n readonly daemonGeneration: string;\n readonly clientNonce: string;\n }>(profile.transport.controlSocket.path, { kind: \"challenge\", clientNonce: nonce });\n if (challenge.protocol !== profile.transport.controlSocket.protocol || challenge.profileId !== profile.profileId ||\n challenge.descriptorDigest !== entry.descriptorDigest || challenge.clientNonce !== nonce ||\n challenge.hostMachineIdentity !== profile.transport.hostMachineIdentity ||\n challenge.backendMachineIdentity !== profile.backend.machineIdentity) {\n throw new Error(`Docker profile ${entry.alias} control attestation does not match its descriptor`);\n }\n // dockerode 是 optional peer;只有用户实际使用 Docker profile 时才加载。\n // 保持这里为热路径动态 import,避免不使用 Docker 的最小安装仅因 CLI 启动就崩溃。\n const { default: Docker } = await __niceevalDynamicImport(\"dockerode\");\n const docker = new Docker({ socketPath: profile.transport.dockerSocket.path });\n const info = await docker.info();\n if (profile.securityLevel !== \"raw-dind-storage/v1\" && !rootlessSecurityOptions(info)) {\n throw new Error(`Docker profile ${entry.alias} daemon is not rootless`);\n }\n if (info.DockerRootDir !== profile.backend.filesystem.dockerRootDir) {\n throw new Error(`Docker profile ${entry.alias} DockerRootDir does not match descriptor`);\n }\n if (String(info.CgroupVersion) !== \"2\" || info.CgroupDriver !== \"systemd\") {\n throw new Error(`Docker profile ${entry.alias} requires cgroup v2 with the systemd driver`);\n }\n const os = info.OSType || \"linux\";\n const arch = info.Architecture || \"amd64\";\n if (typeof info.ID !== \"string\" || info.ID === \"\")\n throw new Error(`Docker profile ${entry.alias} daemon ID is missing`);\n return Object.freeze({\n alias: entry.alias,\n profile,\n descriptorDigest: entry.descriptorDigest,\n daemonGeneration: challenge.daemonGeneration,\n daemonId: info.ID,\n dockerSocketPath: profile.transport.dockerSocket.path,\n controlSocketPath: profile.transport.controlSocket.path,\n platform: `${os}/${arch}`,\n });\n}\nexport async function attestDockerProfile(alias: string): Promise<DockerProfileRuntimeBinding> {\n return attestEntry(resolveDockerProfile(await loadDockerProfileRegistry(), alias));\n}\nexport async function createDockerProfileLease(binding: DockerProfileRuntimeBinding): Promise<DockerProfileLease> {\n const invocationId = randomUUID();\n const created = await dockerProfileControlRequest<{\n readonly leaseToken: string;\n }>(binding.controlSocketPath, {\n kind: \"lease.create\",\n profileId: binding.profile.profileId,\n daemonGeneration: binding.daemonGeneration,\n invocationId,\n });\n let stopped = false;\n let heartbeatEnabled = true;\n let drainInFlight: Promise<void> | undefined;\n let timer: ReturnType<typeof setInterval> | undefined;\n const heartbeat = async () => {\n if (!heartbeatEnabled)\n return;\n await dockerProfileControlRequest(binding.controlSocketPath, {\n kind: \"lease.heartbeat\", invocationId, leaseToken: created.leaseToken,\n });\n };\n timer = setInterval(() => { void heartbeat().catch(() => { }); }, 5000);\n timer.unref();\n return {\n binding,\n invocationId,\n leaseToken: created.leaseToken,\n stopHeartbeat: async () => {\n if (stopped)\n return;\n heartbeatEnabled = false;\n if (timer !== undefined) {\n clearInterval(timer);\n timer = undefined;\n }\n if (drainInFlight !== undefined)\n return await drainInFlight;\n const draining = (async () => {\n const deadline = Date.now() + DOCKER_PROFILE_DRAIN_RECONCILE_TIMEOUT_MS;\n let lastError: unknown;\n while (true) {\n try {\n validateLeaseDrainReceipt(await dockerProfileControlRequest<unknown>(binding.controlSocketPath, {\n kind: \"lease.drain\", invocationId, leaseToken: created.leaseToken,\n }));\n }\n catch (error) {\n // The Host operation and recovery owner outlive a client socket.\n // A disconnect here is not cleanup proof; retry the idempotent\n // drain and verify the ledger independently.\n lastError = error;\n }\n try {\n const status = validateCleanupStatusReceipt(await dockerProfileControlRequest<unknown>(binding.controlSocketPath, { kind: \"status\" }));\n if (leaseCleanupProven(status, binding, invocationId)) {\n stopped = true;\n return;\n }\n lastError = new Error(`Docker profile lease ${invocationId} remains visible after drain reconciliation`);\n }\n catch (error) {\n lastError = error;\n }\n if (Date.now() >= deadline) {\n throw new Error(`Docker profile lease ${invocationId} did not reach recovered state within ` +\n `${DOCKER_PROFILE_DRAIN_RECONCILE_TIMEOUT_MS}ms`, lastError === undefined ? undefined : { cause: lastError });\n }\n await new Promise((resolve) => setTimeout(resolve, DOCKER_PROFILE_DRAIN_RECONCILE_INTERVAL_MS));\n }\n })();\n drainInFlight = draining;\n try {\n await draining;\n }\n finally {\n if (!stopped && drainInFlight === draining)\n drainInFlight = undefined;\n }\n },\n };\n}\nfunction nonGrantedReservationError(reservation: DockerProfileReservation): Error {\n return reservation.state === \"blocked\"\n ? new DockerProfileCapacityBlockedError()\n : new DockerProfileReservationStateError(reservation.state);\n}\nexport async function acquireDockerProfileReservation(lease: DockerProfileLease, reservationKind: \"container\" | \"build\", resources: Readonly<Record<string, number>>, signal?: AbortSignal): Promise<DockerProfileReservation> {\n const reservationId = randomUUID();\n // This Promise entry is shared by the ordinary build path (which always\n // supplies its Attempt signal) and `docker profile doctor`. Only doctor owns\n // the explicit 30-second diagnostic policy; normal builds have no queue TTL.\n const doctorDeadline = signal === undefined ? Date.now() + 30000 : undefined;\n let reservation: DockerProfileReservation | undefined;\n try {\n reservation = await dockerProfileControlRequest<DockerProfileReservation>(lease.binding.controlSocketPath, {\n kind: \"reservation.acquire\", invocationId: lease.invocationId, leaseToken: lease.leaseToken,\n reservationId, reservationKind, resources,\n }, signal);\n while (reservation.state === \"queued\") {\n if (doctorDeadline !== undefined && Date.now() >= doctorDeadline) {\n throw new DockerProfileCapacityBlockedError(\"doctor-timeout\");\n }\n if (signal?.aborted)\n throw signal.reason ?? new DOMException(\"Docker profile reservation aborted\", \"AbortError\");\n await new Promise<void>((resolve, reject) => {\n let abort: (() => void) | undefined;\n const timer = setTimeout(() => {\n if (abort !== undefined)\n signal?.removeEventListener(\"abort\", abort);\n resolve();\n }, 100);\n if (signal === undefined)\n return;\n abort = () => {\n clearTimeout(timer);\n signal.removeEventListener(\"abort\", abort!);\n reject(signal.reason ?? new DOMException(\"Docker profile reservation aborted\", \"AbortError\"));\n };\n signal.addEventListener(\"abort\", abort, { once: true });\n });\n reservation = await dockerProfileControlRequest<DockerProfileReservation>(lease.binding.controlSocketPath, {\n kind: \"reservation.get\", invocationId: lease.invocationId, leaseToken: lease.leaseToken, reservationId,\n }, signal);\n if (signal?.aborted)\n throw signal.reason ?? new DOMException(\"Docker profile reservation aborted\", \"AbortError\");\n }\n if (reservation.state !== \"granted\") {\n if (reservation.state === \"blocked\" && doctorDeadline !== undefined) {\n throw new DockerProfileCapacityBlockedError(\"doctor-timeout\");\n }\n throw nonGrantedReservationError(reservation);\n }\n }\n catch (error) {\n if (reservation !== undefined) {\n try {\n await relinquishDockerProfileReservation(lease, reservationId, reservation);\n }\n catch (releaseError) {\n throw new AggregateError([error, releaseError], `Docker profile reservation ${reservationId} acquisition and disposal both failed`);\n }\n }\n throw error;\n }\n return reservation;\n}\nfunction profileControlEffect<T>(lease: DockerProfileLease, request: Readonly<Record<string, unknown>>, signal?: AbortSignal): Effect.Effect<T, Error> {\n return Effect.tryPromise({\n try: (runtimeSignal) => dockerProfileControlRequest<T>(lease.binding.controlSocketPath, request, signal === undefined ? runtimeSignal : AbortSignal.any([signal, runtimeSignal])),\n catch: (cause) => cause instanceof Error ? cause : new Error(String(cause)),\n });\n}\nfunction profileQueueDelay(milliseconds: number, signal?: AbortSignal): Effect.Effect<void, Error> {\n return Effect.tryPromise({\n try: (runtimeSignal) => {\n const combined = signal === undefined ? runtimeSignal : AbortSignal.any([signal, runtimeSignal]);\n return new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n combined.removeEventListener(\"abort\", abort);\n resolve();\n }, milliseconds);\n const abort = () => {\n clearTimeout(timer);\n combined.removeEventListener(\"abort\", abort);\n reject(combined.reason instanceof Error\n ? combined.reason\n : new DOMException(\"Docker profile reservation aborted\", \"AbortError\"));\n };\n if (combined.aborted)\n abort();\n else\n combined.addEventListener(\"abort\", abort, { once: true });\n });\n },\n catch: (cause) => cause instanceof Error ? cause : new Error(String(cause)),\n });\n}\nfunction makeDockerProfileReservationOwner(lease: DockerProfileLease, reservationId: string, initial: DockerProfileReservation): MutableDockerProfileReservationOwner {\n let current = initial;\n let released = false;\n let releaseInFlight: Promise<void> | undefined;\n return {\n get reservation() { return current; },\n update(next) { current = next; },\n async release() {\n if (released)\n return;\n if (releaseInFlight !== undefined)\n return await releaseInFlight;\n const releasing = relinquishDockerProfileReservation(lease, reservationId, current).then(() => {\n released = true;\n });\n releaseInFlight = releasing;\n try {\n await releasing;\n }\n finally {\n if (!released && releaseInFlight === releasing)\n releaseInFlight = undefined;\n }\n },\n };\n}\nfunction releaseReservationOwner(owner: DockerProfileReservationOwner): Effect.Effect<void> {\n return Effect.tryPromise({\n try: () => owner.release(),\n catch: (cause) => cause instanceof Error ? cause : new Error(String(cause)),\n }).pipe(Effect.orDie);\n}\n/**\n * Effect-native reservation acquisition used by the Sandbox runtime. A queued\n * reservation is still owned by the control service, while runner permits are\n * explicitly released before polling. A successful grant may interruptibly\n * reacquire them; cancellation during polling or reacquisition falls through\n * to the semaphore owners' own finalizers and the reservation Scope finalizer.\n */\nexport function acquireDockerProfileReservationEffect(lease: DockerProfileLease, reservationKind: \"container\" | \"build\", resources: Readonly<Record<string, number>>, admission: DockerProfileReservationAdmission, signal?: AbortSignal): Effect.Effect<DockerProfileReservationOwner, Error, Scope.Scope> {\n const reservationId = randomUUID();\n const request = <T>(frame: Readonly<Record<string, unknown>>, requestSignal = signal) => profileControlEffect<T>(lease, frame, requestSignal);\n return Effect.gen(function* () {\n // Effect 3.22.1 acquireRelease runs acquire and finalizer registration in\n // one uninterruptible region. Once acquire returns the first reservation\n // object, every later poll/grant/reacquire interruption is Scope-owned.\n const owner = yield* Effect.acquireRelease(request<DockerProfileReservation>({\n kind: \"reservation.acquire\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n reservationKind,\n resources,\n }).pipe(Effect.map((initial) => makeDockerProfileReservationOwner(lease, reservationId, initial))), (owned) => releaseReservationOwner(owned));\n if (owner.reservation.state !== \"granted\")\n yield* admission.queued;\n if (owner.reservation.state === \"queued\") {\n const awaitGrant = Effect.gen(function* () {\n while (owner.reservation.state === \"queued\") {\n yield* profileQueueDelay(100, signal);\n owner.update(yield* request<DockerProfileReservation>({\n kind: \"reservation.get\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n }));\n }\n return owner;\n });\n if (admission.slot === undefined) {\n yield* awaitGrant;\n }\n else {\n const slot = admission.slot;\n // Release queue-held permits explicitly. Effect.acquireRelease masks\n // its acquisition in v4, so reopen interruption only for this wait:\n // the reservation owner is already Scope-owned and can be released\n // before provider materialization ever reaches container.create.\n yield* Effect.uninterruptible(slot.release);\n const granted = yield* awaitGrant;\n if (granted.reservation.state !== \"granted\") {\n return yield* Effect.fail(nonGrantedReservationError(granted.reservation));\n }\n yield* Effect.interruptible(slot.reacquire);\n }\n }\n if (owner.reservation.state !== \"granted\") {\n return yield* Effect.fail(nonGrantedReservationError(owner.reservation));\n }\n yield* admission.granted;\n return owner;\n });\n}\nasync function writeControlFrame(socket: import(\"node:net\").Socket, bytes: Buffer): Promise<void> {\n if (socket.write(bytes))\n return;\n await once(socket, \"drain\");\n}\nfunction controlBuildRequest<T>(path: string, request: Readonly<Record<string, unknown>>, context: Readable, signal?: AbortSignal): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const socket = connect(path);\n let response = \"\";\n let settled = false;\n const settle = (outcome: {\n value: T;\n } | {\n error: unknown;\n }) => {\n if (settled)\n return;\n settled = true;\n signal?.removeEventListener(\"abort\", abort);\n if (\"value\" in outcome)\n resolve(outcome.value);\n else {\n context.destroy(outcome.error instanceof Error ? outcome.error : new Error(String(outcome.error)));\n reject(outcome.error);\n }\n };\n const abort = () => socket.destroy(signal?.reason instanceof Error\n ? signal.reason\n : new DOMException(\"Docker profile build aborted\", \"AbortError\"));\n if (signal?.aborted)\n abort();\n else\n signal?.addEventListener(\"abort\", abort, { once: true });\n socket.setTimeout(15 * 60000);\n socket.on(\"connect\", () => {\n void (async () => {\n await writeControlFrame(socket, Buffer.from(`${JSON.stringify(request)}\\n`));\n for await (const value of context) {\n const chunk = Buffer.isBuffer(value) ? value : Buffer.from(value);\n if (chunk.length === 0)\n continue;\n const length = Buffer.allocUnsafe(4);\n length.writeUInt32BE(chunk.length);\n await writeControlFrame(socket, length);\n await writeControlFrame(socket, chunk);\n }\n const end = Buffer.alloc(4);\n socket.end(end);\n })().catch((error: unknown) => socket.destroy(error instanceof Error ? error : new Error(String(error))));\n });\n socket.on(\"data\", (chunk: Buffer) => { response += chunk.toString(); });\n socket.on(\"timeout\", () => socket.destroy(new Error(`Docker profile build control timeout: ${path}`)));\n socket.on(\"error\", (error) => settle({ error }));\n socket.on(\"close\", () => {\n if (settled)\n return;\n try {\n const parsed = JSON.parse(response) as {\n ok?: boolean;\n result?: T;\n error?: {\n code?: string;\n message?: string;\n };\n };\n if (parsed.ok !== true || parsed.result === undefined) {\n settle({ error: new Error(`${parsed.error?.code ?? \"control-error\"}: ${parsed.error?.message ?? \"invalid control reply\"}`) });\n }\n else\n settle({ value: parsed.result });\n }\n catch (error) {\n settle({ error });\n }\n });\n });\n}\nexport async function createDockerProfileContainer(lease: DockerProfileLease, reservationId: string, request: DockerProfileContainerCreateInput | DockerProfileContainerIntent, signal?: AbortSignal): Promise<DockerProfileContainerCreateResult> {\n const create = \"intent\" in request ? request : { intent: \"workload\" as const, create: request };\n try {\n return await dockerProfileControlRequest<DockerProfileContainerCreateResult>(lease.binding.controlSocketPath, {\n kind: \"container.create\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n create,\n }, signal);\n }\n catch (error) {\n // A lost reply can leave the journal committed. Recover the control-owned IDs instead of\n // issuing a second create or asking DockerSandbox's legacy reconciler to remove them.\n const reservation = await dockerProfileControlRequest<DockerProfileReservation>(lease.binding.controlSocketPath, {\n kind: \"reservation.get\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n }, signal).catch(() => undefined);\n if (reservation?.state === \"committed\" &&\n reservation.containerId !== undefined &&\n reservation.networkId !== undefined) {\n return { containerId: reservation.containerId, networkId: reservation.networkId, state: \"active\" };\n }\n throw error;\n }\n}\nexport async function createDockerProfileBuild(lease: DockerProfileLease, reservationId: string, build: DockerProfileBuildCreateInput, context: Readable, signal?: AbortSignal): Promise<DockerProfileBuildCreateResult> {\n const cancelBuild = async () => {\n await dockerProfileControlRequest(lease.binding.controlSocketPath, {\n kind: \"build.cancel\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n }).catch(() => undefined);\n };\n try {\n return await controlBuildRequest<DockerProfileBuildCreateResult>(lease.binding.controlSocketPath, {\n kind: \"build.create\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n build,\n contextEncoding: \"tar-chunked/v1\",\n }, context, signal);\n }\n catch (error) {\n // The operation survives a client-side reply loss. Its durable reservation is\n // the recovery handle; never retry a build under a second provision token.\n if (signal?.aborted) {\n await cancelBuild();\n throw error;\n }\n for (let attempt = 0; attempt < 300; attempt += 1) {\n if (signal?.aborted) {\n await cancelBuild();\n throw error;\n }\n const reservation = await dockerProfileControlRequest<DockerProfileReservation>(lease.binding.controlSocketPath, {\n kind: \"reservation.get\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n }, signal).catch(() => undefined);\n if (signal?.aborted) {\n await cancelBuild();\n throw error;\n }\n if (reservation?.state === \"committed\" && reservation.buildTerminated === true) {\n if (reservation.buildError === undefined && !signal?.aborted && reservation.locator !== undefined) {\n return { locator: reservation.locator, state: \"terminated\" };\n }\n break;\n }\n if (reservation?.state === \"quarantined\")\n break;\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n throw error;\n }\n}\nexport async function releaseDockerProfileReservation(lease: DockerProfileLease, reservationId: string, proof?: Pick<DockerProfileReservation, \"slotId\">): Promise<DockerProfileReleaseReceipt> {\n const release = async (): Promise<DockerProfileReleaseReceipt> => validateReleaseReceipt(await dockerProfileControlRequest<unknown>(lease.binding.controlSocketPath, {\n kind: \"reservation.release\", invocationId: lease.invocationId, leaseToken: lease.leaseToken,\n reservationId,\n }));\n try {\n return await release();\n }\n catch (primary) {\n // A reply can be lost after the durable release. Treat that as success\n // only after the same profile generation confirms every owned handle is\n // absent and no reservation-specific recovery uncertainty remains.\n const deadline = Date.now() + 60000;\n while (Date.now() < deadline) {\n // Setup-prefix copy work can outlive a cancelled client socket. The host\n // rejects release while that journaled operation is active; retry until\n // it publishes/rolls back, then perform the same verified scrub release.\n const retried = await release().catch(() => undefined);\n if (retried !== undefined)\n return retried;\n const status = await dockerProfileControlRequest<unknown>(lease.binding.controlSocketPath, { kind: \"status\" }).then(validateCleanupStatusReceipt).catch(() => undefined);\n if (status?.profileId === lease.binding.profile.profileId && status.generation === lease.binding.daemonGeneration) {\n const reservationAbsent = !status.reservations.some((item) => item.reservationId === reservationId);\n const queueAbsent = !status.queue.some((item) => item.reservationId === reservationId);\n const leaseIdentitySafe = !status.leases.some((item) => item.invocationId === lease.invocationId) ||\n status.leases.some((item) => item.invocationId === lease.invocationId && item.daemonGeneration === lease.binding.daemonGeneration);\n const slot = proof?.slotId === undefined ? undefined : status.slots.find((item) => item.slotId === proof.slotId);\n const slotFree = proof?.slotId === undefined || (slot?.state === \"free\" && slot.reservationId === undefined);\n const uncertain = status.degraded.some((item) => item.includes(reservationId));\n if (reservationAbsent && queueAbsent && leaseIdentitySafe && slotFree && !uncertain) {\n return { released: true, cleanupProven: true };\n }\n }\n await new Promise((resolve) => setTimeout(resolve, 200));\n }\n throw primary;\n }\n}\nasync function cancelDockerProfileReservation(lease: DockerProfileLease, reservationId: string): Promise<void> {\n try {\n validateCancelReceipt(await dockerProfileControlRequest<unknown>(lease.binding.controlSocketPath, {\n kind: \"reservation.cancel\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n }));\n }\n catch (primary) {\n // A successful cancellation can outlive a lost client reply. Accept that\n // only when the attested generation proves every reservation handle gone.\n const status = await dockerProfileControlRequest<unknown>(lease.binding.controlSocketPath, { kind: \"status\" }).then(validateCleanupStatusReceipt).catch(() => undefined);\n const absent = status?.profileId === lease.binding.profile.profileId &&\n status.generation === lease.binding.daemonGeneration &&\n !status.reservations.some((item) => item.reservationId === reservationId) &&\n !status.queue.some((item) => item.reservationId === reservationId) &&\n !status.slots.some((item) => item.reservationId === reservationId) &&\n !status.degraded.some((item) => item.includes(reservationId));\n if (absent)\n return;\n throw primary;\n }\n}\nasync function relinquishDockerProfileReservation(lease: DockerProfileLease, reservationId: string, reservation: DockerProfileReservation): Promise<void> {\n if (reservation.state !== \"queued\" && reservation.state !== \"blocked\") {\n await releaseDockerProfileReservation(lease, reservationId, reservation);\n return;\n }\n try {\n await cancelDockerProfileReservation(lease, reservationId);\n return;\n }\n catch (cancelError) {\n // Capacity may become available between the last poll and cancellation.\n // Once granted, the reservation owns provider capacity and must use the\n // release path instead of pretending the failed cancel disposed it.\n let current: DockerProfileReservation;\n try {\n current = await dockerProfileControlRequest<DockerProfileReservation>(lease.binding.controlSocketPath, {\n kind: \"reservation.get\",\n invocationId: lease.invocationId,\n leaseToken: lease.leaseToken,\n reservationId,\n });\n }\n catch (refreshError) {\n throw new AggregateError([cancelError, refreshError], `Docker profile reservation ${reservationId} cancellation state could not be reconciled`);\n }\n if (current.state === \"queued\" || current.state === \"blocked\")\n throw cancelError;\n try {\n await releaseDockerProfileReservation(lease, reservationId, current);\n }\n catch (releaseError) {\n throw new AggregateError([cancelError, releaseError], `Docker profile reservation ${reservationId} raced from cancellation to release and both failed`);\n }\n }\n}\n"]}
|