niceeval 0.15.1-canary.76 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INDEX.md +45 -40
- package/dist/adapter-execution-trace.cjs.map +1 -1
- package/dist/adapter-execution-trace.d.cts +26 -0
- package/dist/adapter-execution-trace.d.mts +26 -0
- package/dist/adapter-execution-trace.d.ts +26 -0
- package/dist/adapter-usage.cjs.map +1 -1
- package/dist/adapter-usage.d.cts +9 -0
- package/dist/adapter-usage.d.mts +9 -0
- package/dist/adapter-usage.d.ts +9 -0
- package/dist/adapter.cjs +19 -4
- package/dist/adapter.cjs.map +1 -1
- package/dist/adapter.d.cts +37 -12
- package/dist/adapter.d.mts +37 -12
- package/dist/adapter.d.ts +37 -12
- package/dist/agents/ai-sdk.cjs +3 -0
- package/dist/agents/ai-sdk.cjs.map +1 -1
- package/dist/agents/bub.cjs +3 -0
- package/dist/agents/bub.cjs.map +1 -1
- package/dist/agents/claude-code-native.cjs +28 -2
- package/dist/agents/claude-code-native.cjs.map +1 -1
- package/dist/agents/claude-code.cjs +3 -0
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/codex.cjs +3 -0
- package/dist/agents/codex.cjs.map +1 -1
- package/dist/agents/coding-cli-versions.cjs +9 -10
- package/dist/agents/coding-cli-versions.cjs.map +1 -1
- package/dist/agents/coding-cli-versions.d.cts +1 -1
- package/dist/agents/coding-cli-versions.d.mts +1 -1
- package/dist/agents/coding-cli-versions.d.ts +1 -1
- package/dist/agents/deepseek-harness.cjs +3 -0
- package/dist/agents/deepseek-harness.cjs.map +1 -1
- package/dist/agents/hermes.cjs +3 -0
- package/dist/agents/hermes.cjs.map +1 -1
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +3 -2
- package/dist/agents/index.d.mts +3 -2
- package/dist/agents/index.d.ts +3 -2
- package/dist/agents/omp.cjs +3 -0
- package/dist/agents/omp.cjs.map +1 -1
- package/dist/agents/openai-compat.cjs +6 -0
- package/dist/agents/openai-compat.cjs.map +1 -1
- package/dist/agents/openclaw.cjs +3 -0
- package/dist/agents/openclaw.cjs.map +1 -1
- package/dist/agents/opencode.cjs +3 -0
- package/dist/agents/opencode.cjs.map +1 -1
- package/dist/agents/sdk-streams.cjs +9 -0
- package/dist/agents/sdk-streams.cjs.map +1 -1
- package/dist/agents/ui-message-stream.cjs +3 -0
- package/dist/agents/ui-message-stream.cjs.map +1 -1
- package/dist/assertions/api.cjs.map +1 -1
- package/dist/assertions/api.d.cts +27 -5
- package/dist/assertions/api.d.mts +27 -5
- package/dist/assertions/api.d.ts +27 -5
- package/dist/assertions/collection.cjs +6 -0
- package/dist/assertions/collection.cjs.map +1 -1
- package/dist/assertions/collection.d.cts +4 -2
- package/dist/assertions/collection.d.mts +4 -2
- package/dist/assertions/collection.d.ts +4 -2
- package/dist/assertions/collection.js +12 -8
- package/dist/assertions/context-match.cjs +70 -0
- package/dist/assertions/context-match.cjs.map +1 -0
- package/dist/assertions/context-match.d.cts +107 -0
- package/dist/assertions/context-match.d.mts +107 -0
- package/dist/assertions/context-match.d.ts +107 -0
- package/dist/assertions/context-match.js +12 -0
- package/dist/assertions/context-match.js.map +1 -0
- package/dist/assertions/full-content.cjs +109 -0
- package/dist/assertions/full-content.cjs.map +1 -0
- package/dist/assertions/full-content.d.cts +6 -0
- package/dist/assertions/full-content.d.mts +6 -0
- package/dist/assertions/full-content.d.ts +6 -0
- package/dist/assertions/full-content.js +12 -0
- package/dist/assertions/full-content.js.map +1 -0
- package/dist/assertions/judge-presets.cjs +2 -34
- package/dist/assertions/judge-presets.cjs.map +1 -1
- package/dist/assertions/judge-presets.d.cts +6 -9
- package/dist/assertions/judge-presets.d.mts +6 -9
- package/dist/assertions/judge-presets.d.ts +6 -9
- package/dist/assertions/judge-presets.js +8 -8
- package/dist/assertions/judge.cjs +107 -29
- package/dist/assertions/judge.cjs.map +1 -1
- package/dist/assertions/judge.d.cts +2 -0
- package/dist/assertions/judge.d.mts +2 -0
- package/dist/assertions/judge.d.ts +2 -0
- package/dist/assertions/match.cjs +244 -5
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +43 -3
- package/dist/assertions/match.d.mts +43 -3
- package/dist/assertions/match.d.ts +43 -3
- package/dist/assertions/match.js +88 -78
- package/dist/assertions/material.cjs +520 -0
- package/dist/assertions/material.cjs.map +1 -0
- package/dist/assertions/material.d.cts +56 -0
- package/dist/assertions/material.d.mts +56 -0
- package/dist/assertions/material.d.ts +56 -0
- package/dist/assertions/material.js +20 -0
- package/dist/assertions/material.js.map +1 -0
- package/dist/assertions/record/attachment.cjs +5 -2
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/codec.cjs +2 -1
- package/dist/assertions/record/codec.cjs.map +1 -1
- package/dist/assertions/record/model.cjs.map +1 -1
- package/dist/assertions/record/model.d.cts +6 -1
- package/dist/assertions/record/model.d.mts +6 -1
- package/dist/assertions/record/model.d.ts +6 -1
- package/dist/assertions/runtime.cjs +207 -14
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/assertions/runtime.d.cts +9 -0
- package/dist/assertions/runtime.d.mts +9 -0
- package/dist/assertions/runtime.d.ts +9 -0
- package/dist/assertions/runtime.js +14 -8
- package/dist/assertions/score-match-audit.cjs +18 -8
- package/dist/assertions/score-match-audit.cjs.map +1 -1
- package/dist/assertions/score-match-gateway.cjs +83 -25
- package/dist/assertions/score-match-gateway.cjs.map +1 -1
- package/dist/assertions/score-match-gateway.d.cts +2 -0
- package/dist/assertions/score-match-gateway.d.mts +2 -0
- package/dist/assertions/score-match-gateway.d.ts +2 -0
- package/dist/assertions/value-composition.test-d.cjs +77 -0
- package/dist/assertions/value-composition.test-d.cjs.map +1 -0
- package/dist/assertions/value-composition.test-d.d.cts +1 -0
- package/dist/assertions/value-composition.test-d.d.mts +1 -0
- package/dist/assertions/value-composition.test-d.d.ts +1 -0
- package/dist/assertions/value-composition.test-d.js +4 -0
- package/dist/assertions/value-composition.test-d.js.map +1 -0
- package/dist/context/assert-first.cjs +207 -213
- package/dist/context/assert-first.cjs.map +1 -1
- package/dist/context/assert-first.d.cts +49 -23
- package/dist/context/assert-first.d.mts +49 -23
- package/dist/context/assert-first.d.ts +49 -23
- package/dist/context/session.cjs +111 -9
- package/dist/context/session.cjs.map +1 -1
- package/dist/context/session.d.cts +18 -0
- package/dist/context/session.d.mts +18 -0
- package/dist/context/session.d.ts +18 -0
- package/dist/define.cjs +17 -1
- package/dist/define.cjs.map +1 -1
- package/dist/eval/cli/contribution.cjs +2 -0
- package/dist/eval/cli/contribution.cjs.map +1 -1
- package/dist/eval/host/index.cjs +2 -0
- package/dist/eval/host/index.cjs.map +1 -1
- package/dist/eval/record/evaluation.cjs +3 -0
- package/dist/eval/record/evaluation.cjs.map +1 -1
- package/dist/eval/record/membership-provenance.d.cts +15 -15
- package/dist/eval/record/membership-provenance.d.mts +15 -15
- package/dist/eval/record/membership-provenance.d.ts +15 -15
- package/dist/eval/record/score.cjs +7 -0
- package/dist/eval/record/score.cjs.map +1 -1
- package/dist/eval/record/sealed-assertion.cjs +3 -0
- package/dist/eval/record/sealed-assertion.cjs.map +1 -1
- package/dist/eval/record/verdict.cjs +7 -0
- package/dist/eval/record/verdict.cjs.map +1 -1
- package/dist/expect/index.cjs +8 -2
- package/dist/expect/index.cjs.map +1 -1
- package/dist/expect/index.d.cts +9 -4
- package/dist/expect/index.d.mts +9 -4
- package/dist/expect/index.d.ts +9 -4
- package/dist/expect/index.js +72 -62
- package/dist/expect/index.mjs +72 -62
- package/dist/experiment/host/cli/contribution.cjs +37 -23
- package/dist/experiment/host/cli/contribution.cjs.map +1 -1
- package/dist/experiment/host/cli/contribution.d.cts +9 -1
- package/dist/experiment/host/cli/contribution.d.mts +9 -1
- package/dist/experiment/host/cli/contribution.d.ts +9 -1
- package/dist/experiment/host/current.cjs +74 -0
- package/dist/experiment/host/current.cjs.map +1 -0
- package/dist/experiment/host/current.d.cts +33 -0
- package/dist/experiment/host/current.d.mts +33 -0
- package/dist/experiment/host/current.d.ts +33 -0
- package/dist/experiment/host/current.js +10 -0
- package/dist/experiment/host/current.js.map +1 -0
- package/dist/experiment/host/index.cjs +17 -174
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/experiment/host/index.d.cts +8 -54
- package/dist/experiment/host/index.d.mts +8 -54
- package/dist/experiment/host/index.d.ts +8 -54
- package/dist/experiment/host/operations.cjs +33 -10
- package/dist/experiment/host/operations.cjs.map +1 -1
- package/dist/experiment/host/operations.d.cts +29 -1
- package/dist/experiment/host/operations.d.mts +29 -1
- package/dist/experiment/host/operations.d.ts +29 -1
- package/dist/experiment/host/operations.js +6 -4
- package/dist/experiment/host/requirements.cjs +3 -0
- package/dist/experiment/host/requirements.cjs.map +1 -0
- package/dist/experiment/host/requirements.d.cts +3 -0
- package/dist/experiment/host/requirements.d.mts +3 -0
- package/dist/experiment/host/requirements.d.ts +3 -0
- package/dist/experiment/host/requirements.js +4 -0
- package/dist/experiment/host/requirements.js.map +1 -0
- package/dist/experiment/host/runtime.cjs +179 -0
- package/dist/experiment/host/runtime.cjs.map +1 -0
- package/dist/experiment/host/runtime.d.cts +79 -0
- package/dist/experiment/host/runtime.d.mts +79 -0
- package/dist/experiment/host/runtime.d.ts +79 -0
- package/dist/experiment/host/runtime.js +6 -0
- package/dist/experiment/host/runtime.js.map +1 -0
- package/dist/experiment/host/types.cjs.map +1 -1
- package/dist/experiment/host/types.d.cts +17 -16
- package/dist/experiment/host/types.d.mts +17 -16
- package/dist/experiment/host/types.d.ts +17 -16
- package/dist/fresh-import.cjs +2 -1
- package/dist/fresh-import.cjs.map +1 -1
- package/dist/index.cjs +4 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -6
- package/dist/index.d.mts +12 -6
- package/dist/index.d.ts +12 -6
- package/dist/index.js +32 -30
- package/dist/index.mjs +32 -30
- package/dist/inspection/artifacts.cjs +83 -54
- package/dist/inspection/artifacts.cjs.map +1 -1
- package/dist/inspection/artifacts.d.cts +8 -0
- package/dist/inspection/artifacts.d.mts +8 -0
- package/dist/inspection/artifacts.d.ts +8 -0
- package/dist/inspection/artifacts.js +2 -0
- package/dist/inspection/assertions.cjs +4 -1
- package/dist/inspection/assertions.cjs.map +1 -1
- package/dist/inspection/cli/contribution.cjs +27 -4
- package/dist/inspection/cli/contribution.cjs.map +1 -1
- package/dist/inspection/cli/contribution.d.cts +2 -1
- package/dist/inspection/cli/contribution.d.mts +2 -1
- package/dist/inspection/cli/contribution.d.ts +2 -1
- package/dist/inspection/execution-traces.cjs +114 -8
- package/dist/inspection/execution-traces.cjs.map +1 -1
- package/dist/inspection/execution-traces.d.cts +38 -0
- package/dist/inspection/execution-traces.d.mts +38 -0
- package/dist/inspection/execution-traces.d.ts +38 -0
- package/dist/inspection/facts.cjs +12 -0
- package/dist/inspection/facts.cjs.map +1 -1
- package/dist/inspection/limits.cjs +5 -1
- package/dist/inspection/limits.cjs.map +1 -1
- package/dist/inspection/limits.d.cts +4 -0
- package/dist/inspection/limits.d.mts +4 -0
- package/dist/inspection/limits.d.ts +4 -0
- package/dist/inspection/limits.js +6 -2
- package/dist/inspection/overview.cjs +74 -33
- package/dist/inspection/overview.cjs.map +1 -1
- package/dist/inspection/overview.d.cts +19 -1
- package/dist/inspection/overview.d.mts +19 -1
- package/dist/inspection/overview.d.ts +19 -1
- package/dist/inspection/overview.js +4 -2
- package/dist/inspection/project-input.cjs +9 -0
- package/dist/inspection/project-input.cjs.map +1 -0
- package/dist/inspection/project-input.d.cts +20 -0
- package/dist/inspection/project-input.d.mts +20 -0
- package/dist/inspection/project-input.d.ts +20 -0
- package/dist/inspection/project-input.js +8 -0
- package/dist/inspection/project-input.js.map +1 -0
- package/dist/inspection/project-result.cjs +60 -0
- package/dist/inspection/project-result.cjs.map +1 -0
- package/dist/inspection/project-result.d.cts +1264 -0
- package/dist/inspection/project-result.d.mts +1264 -0
- package/dist/inspection/project-result.d.ts +1264 -0
- package/dist/inspection/project-result.js +10 -0
- package/dist/inspection/project-result.js.map +1 -0
- package/dist/inspection/project-source.cjs +109 -0
- package/dist/inspection/project-source.cjs.map +1 -0
- package/dist/inspection/project-source.d.cts +10 -0
- package/dist/inspection/project-source.d.mts +10 -0
- package/dist/inspection/project-source.d.ts +10 -0
- package/dist/inspection/project-source.js +6 -0
- package/dist/inspection/project-source.js.map +1 -0
- package/dist/inspection/project.cjs +100 -0
- package/dist/inspection/project.cjs.map +1 -0
- package/dist/inspection/project.d.cts +3 -0
- package/dist/inspection/project.d.mts +3 -0
- package/dist/inspection/project.d.ts +3 -0
- package/dist/inspection/project.js +6 -0
- package/dist/inspection/project.js.map +1 -0
- package/dist/inspection/protocol.cjs +19 -9
- package/dist/inspection/protocol.cjs.map +1 -1
- package/dist/inspection/protocol.d.cts +5506 -38189
- package/dist/inspection/protocol.d.mts +5506 -38189
- package/dist/inspection/protocol.d.ts +5506 -38189
- package/dist/inspection/public.mjs +896 -84
- package/dist/inspection/query.cjs +2 -0
- package/dist/inspection/query.cjs.map +1 -1
- package/dist/inspection/results.cjs +234 -29
- package/dist/inspection/results.cjs.map +1 -1
- package/dist/inspection/results.d.cts +870 -13
- package/dist/inspection/results.d.mts +870 -13
- package/dist/inspection/results.d.ts +870 -13
- package/dist/inspection/results.js +36 -34
- package/dist/inspection/select.cjs +126 -14
- package/dist/inspection/select.cjs.map +1 -1
- package/dist/inspection/select.d.cts +1 -1
- package/dist/inspection/select.d.mts +1 -1
- package/dist/inspection/select.d.ts +1 -1
- package/dist/inspection/source.cjs +4 -0
- package/dist/inspection/source.cjs.map +1 -1
- package/dist/inspection/sources.cjs +5 -0
- package/dist/inspection/sources.cjs.map +1 -1
- package/dist/inspection/trace.cjs +82 -84
- package/dist/inspection/trace.cjs.map +1 -1
- package/dist/inspection/trace.d.cts +7 -2
- package/dist/inspection/trace.d.mts +7 -2
- package/dist/inspection/trace.d.ts +7 -2
- package/dist/model-slots.cjs +35 -0
- package/dist/model-slots.cjs.map +1 -0
- package/dist/model-slots.d.cts +19 -0
- package/dist/model-slots.d.mts +19 -0
- package/dist/model-slots.d.ts +19 -0
- package/dist/model-slots.js +8 -0
- package/dist/model-slots.js.map +1 -0
- package/dist/o11y/adapter-call-price.cjs +4 -0
- package/dist/o11y/adapter-call-price.cjs.map +1 -1
- package/dist/o11y/adapter-call-price.d.cts +24 -0
- package/dist/o11y/adapter-call-price.d.mts +24 -0
- package/dist/o11y/adapter-call-price.d.ts +24 -0
- package/dist/o11y/adapter-call-price.js +6 -2
- package/dist/o11y/adapter-usage-projection.cjs +158 -0
- package/dist/o11y/adapter-usage-projection.cjs.map +1 -0
- package/dist/o11y/adapter-usage-projection.d.cts +141 -0
- package/dist/o11y/adapter-usage-projection.d.mts +141 -0
- package/dist/o11y/adapter-usage-projection.d.ts +141 -0
- package/dist/o11y/adapter-usage-projection.js +20 -0
- package/dist/o11y/adapter-usage-projection.js.map +1 -0
- package/dist/o11y/eval-usage.cjs +149 -0
- package/dist/o11y/eval-usage.cjs.map +1 -0
- package/dist/o11y/eval-usage.d.cts +46 -0
- package/dist/o11y/eval-usage.d.mts +46 -0
- package/dist/o11y/eval-usage.d.ts +46 -0
- package/dist/o11y/eval-usage.js +8 -0
- package/dist/o11y/eval-usage.js.map +1 -0
- package/dist/o11y/judge-call-price.cjs +62 -0
- package/dist/o11y/judge-call-price.cjs.map +1 -0
- package/dist/o11y/judge-call-price.d.cts +3 -0
- package/dist/o11y/judge-call-price.d.mts +3 -0
- package/dist/o11y/judge-call-price.d.ts +3 -0
- package/dist/o11y/judge-call-price.js +6 -0
- package/dist/o11y/judge-call-price.js.map +1 -0
- package/dist/o11y/judge-usage-projection.cjs +134 -0
- package/dist/o11y/judge-usage-projection.cjs.map +1 -0
- package/dist/o11y/judge-usage-projection.d.cts +18 -0
- package/dist/o11y/judge-usage-projection.d.mts +18 -0
- package/dist/o11y/judge-usage-projection.d.ts +18 -0
- package/dist/o11y/judge-usage-projection.js +20 -0
- package/dist/o11y/judge-usage-projection.js.map +1 -0
- package/dist/o11y/judge-usage-receipt.cjs +135 -0
- package/dist/o11y/judge-usage-receipt.cjs.map +1 -0
- package/dist/o11y/judge-usage-receipt.d.cts +5 -0
- package/dist/o11y/judge-usage-receipt.d.mts +5 -0
- package/dist/o11y/judge-usage-receipt.d.ts +5 -0
- package/dist/o11y/judge-usage-receipt.js +6 -0
- package/dist/o11y/judge-usage-receipt.js.map +1 -0
- package/dist/o11y/judge-usage.cjs +171 -0
- package/dist/o11y/judge-usage.cjs.map +1 -0
- package/dist/o11y/judge-usage.d.cts +35 -0
- package/dist/o11y/judge-usage.d.mts +35 -0
- package/dist/o11y/judge-usage.d.ts +35 -0
- package/dist/o11y/judge-usage.js +6 -0
- package/dist/o11y/judge-usage.js.map +1 -0
- package/dist/plugin/contracts.cjs +2 -0
- package/dist/plugin/contracts.cjs.map +1 -1
- package/dist/plugin/link.cjs +7 -0
- package/dist/plugin/link.cjs.map +1 -1
- package/dist/record/attachment/protocol.cjs +8 -6
- package/dist/record/attachment/protocol.cjs.map +1 -1
- package/dist/record/attachment/protocol.d.cts +10 -0
- package/dist/record/attachment/protocol.d.mts +10 -0
- package/dist/record/attachment/protocol.d.ts +10 -0
- package/dist/record/attachment/protocol.js +38 -36
- package/dist/record/codec/seal-manifest.d.cts +3 -3
- package/dist/record/codec/seal-manifest.d.mts +3 -3
- package/dist/record/codec/seal-manifest.d.ts +3 -3
- package/dist/record/family/adapter-usage/definition.d.cts +1 -0
- package/dist/record/family/adapter-usage/definition.d.mts +1 -0
- package/dist/record/family/adapter-usage/definition.d.ts +1 -0
- package/dist/record/family/adapter-usage/persistence.cjs +1 -1
- package/dist/record/family/adapter-usage/persistence.cjs.map +1 -1
- package/dist/record/family/adapter-usage/persistence.d.cts +2 -1
- package/dist/record/family/adapter-usage/persistence.d.mts +2 -1
- package/dist/record/family/adapter-usage/persistence.d.ts +2 -1
- package/dist/record/family/adapter-usage/schema.cjs +21 -2
- package/dist/record/family/adapter-usage/schema.cjs.map +1 -1
- package/dist/record/family/adapter-usage/schema.d.cts +85 -0
- package/dist/record/family/adapter-usage/schema.d.mts +85 -0
- package/dist/record/family/adapter-usage/schema.d.ts +85 -0
- package/dist/record/family/adapter-usage/schema.js +18 -12
- package/dist/record/family/catalog.cjs +31 -27
- package/dist/record/family/catalog.cjs.map +1 -1
- package/dist/record/family/catalog.d.cts +94 -3
- package/dist/record/family/catalog.d.mts +94 -3
- package/dist/record/family/catalog.d.ts +94 -3
- package/dist/record/family/current.cjs +45 -42
- package/dist/record/family/current.cjs.map +1 -1
- package/dist/record/family/current.d.cts +240 -1
- package/dist/record/family/current.d.mts +240 -1
- package/dist/record/family/current.d.ts +240 -1
- package/dist/record/family/execution-traces/definition.d.cts +26 -0
- package/dist/record/family/execution-traces/definition.d.mts +26 -0
- package/dist/record/family/execution-traces/definition.d.ts +26 -0
- package/dist/record/family/execution-traces/definition.js +20 -14
- package/dist/record/family/execution-traces/schema.cjs +57 -1
- package/dist/record/family/execution-traces/schema.cjs.map +1 -1
- package/dist/record/family/execution-traces/schema.d.cts +114 -0
- package/dist/record/family/execution-traces/schema.d.mts +114 -0
- package/dist/record/family/execution-traces/schema.d.ts +114 -0
- package/dist/record/family/execution-traces/schema.js +18 -12
- package/dist/record/family/judge-usage/definition.cjs +12 -0
- package/dist/record/family/judge-usage/definition.cjs.map +1 -0
- package/dist/record/family/judge-usage/definition.d.cts +91 -0
- package/dist/record/family/judge-usage/definition.d.mts +91 -0
- package/dist/record/family/judge-usage/definition.d.ts +91 -0
- package/dist/record/family/judge-usage/definition.js +6 -0
- package/dist/record/family/judge-usage/definition.js.map +1 -0
- package/dist/record/family/judge-usage/persistence.cjs +10 -0
- package/dist/record/family/judge-usage/persistence.cjs.map +1 -0
- package/dist/record/family/judge-usage/persistence.d.cts +91 -0
- package/dist/record/family/judge-usage/persistence.d.mts +91 -0
- package/dist/record/family/judge-usage/persistence.d.ts +91 -0
- package/dist/record/family/judge-usage/persistence.js +6 -0
- package/dist/record/family/judge-usage/persistence.js.map +1 -0
- package/dist/record/family/judge-usage/schema.cjs +307 -0
- package/dist/record/family/judge-usage/schema.cjs.map +1 -0
- package/dist/record/family/judge-usage/schema.d.cts +351 -0
- package/dist/record/family/judge-usage/schema.d.mts +351 -0
- package/dist/record/family/judge-usage/schema.d.ts +351 -0
- package/dist/record/family/judge-usage/schema.js +18 -0
- package/dist/record/family/judge-usage/schema.js.map +1 -0
- package/dist/record/host/sqlite-host.cjs +55 -9
- package/dist/record/host/sqlite-host.cjs.map +1 -1
- package/dist/record/host/types.cjs.map +1 -1
- package/dist/record/host/types.d.cts +7 -0
- package/dist/record/host/types.d.mts +7 -0
- package/dist/record/host/types.d.ts +7 -0
- package/dist/record/model/run-context.cjs +7 -1
- package/dist/record/model/run-context.cjs.map +1 -1
- package/dist/record/model/run-context.d.cts +4 -0
- package/dist/record/model/run-context.d.mts +4 -0
- package/dist/record/model/run-context.d.ts +4 -0
- package/dist/record/model/seal-manifest.d.cts +1 -1
- package/dist/record/model/seal-manifest.d.mts +1 -1
- package/dist/record/model/seal-manifest.d.ts +1 -1
- package/dist/record/sqlite/client.cjs +18 -5
- package/dist/record/sqlite/client.cjs.map +1 -1
- package/dist/record/sqlite/client.d.cts +1 -1
- package/dist/record/sqlite/client.d.mts +1 -1
- package/dist/record/sqlite/client.d.ts +1 -1
- package/dist/record/sqlite/project-state-database.cjs +29 -8
- package/dist/record/sqlite/project-state-database.cjs.map +1 -1
- package/dist/run/host/runtime.cjs +4 -0
- package/dist/run/host/runtime.cjs.map +1 -1
- package/dist/run/storage/sqlite.cjs +20 -0
- package/dist/run/storage/sqlite.cjs.map +1 -1
- package/dist/runner/adapter-execution-trace.cjs +125 -2
- package/dist/runner/adapter-execution-trace.cjs.map +1 -1
- package/dist/runner/adapter-execution-trace.d.cts +1 -1
- package/dist/runner/adapter-execution-trace.d.mts +1 -1
- package/dist/runner/adapter-execution-trace.d.ts +1 -1
- package/dist/runner/adapter-usage.cjs +55 -7
- package/dist/runner/adapter-usage.cjs.map +1 -1
- package/dist/runner/adapter-usage.d.cts +9 -2
- package/dist/runner/adapter-usage.d.mts +9 -2
- package/dist/runner/adapter-usage.d.ts +9 -2
- package/dist/runner/adoption.cjs +9 -0
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/attempt-cancellation.cjs +12 -0
- package/dist/runner/attempt-cancellation.cjs.map +1 -0
- package/dist/runner/attempt-cancellation.d.cts +6 -0
- package/dist/runner/attempt-cancellation.d.mts +6 -0
- package/dist/runner/attempt-cancellation.d.ts +6 -0
- package/dist/runner/attempt-cancellation.js +6 -0
- package/dist/runner/attempt-cancellation.js.map +1 -0
- package/dist/runner/attempt-resources.cjs +10 -4
- package/dist/runner/attempt-resources.cjs.map +1 -1
- package/dist/runner/attempt-resources.d.cts +2 -1
- package/dist/runner/attempt-resources.d.mts +2 -1
- package/dist/runner/attempt-resources.d.ts +2 -1
- package/dist/runner/attempt.cjs +1177 -1139
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/config-identity.cjs +20 -1
- package/dist/runner/config-identity.cjs.map +1 -1
- package/dist/runner/config-identity.d.cts +5 -0
- package/dist/runner/config-identity.d.mts +5 -0
- package/dist/runner/config-identity.d.ts +5 -0
- package/dist/runner/discover.cjs +14 -0
- package/dist/runner/discover.cjs.map +1 -1
- package/dist/runner/discover.d.cts +3 -0
- package/dist/runner/discover.d.mts +3 -0
- package/dist/runner/discover.d.ts +3 -0
- package/dist/runner/feedback/human.cjs +9 -4
- package/dist/runner/feedback/human.cjs.map +1 -1
- package/dist/runner/fingerprint.cjs +1 -0
- package/dist/runner/fingerprint.cjs.map +1 -1
- package/dist/runner/judge-usage.cjs +18 -0
- package/dist/runner/judge-usage.cjs.map +1 -0
- package/dist/runner/judge-usage.d.cts +5 -0
- package/dist/runner/judge-usage.d.mts +5 -0
- package/dist/runner/judge-usage.d.ts +5 -0
- package/dist/runner/judge-usage.js +8 -0
- package/dist/runner/judge-usage.js.map +1 -0
- package/dist/runner/project-target.cjs.map +1 -1
- package/dist/runner/project-target.d.cts +2 -0
- package/dist/runner/project-target.d.mts +2 -0
- package/dist/runner/project-target.d.ts +2 -0
- package/dist/runner/record/planning.cjs +1 -0
- package/dist/runner/record/planning.cjs.map +1 -1
- package/dist/runner/record.cjs +4 -0
- package/dist/runner/record.cjs.map +1 -1
- package/dist/runner/reporters/braintrust.cjs +2 -0
- package/dist/runner/reporters/braintrust.cjs.map +1 -1
- package/dist/runner/reuse-diagnostics.cjs +9 -10
- package/dist/runner/reuse-diagnostics.cjs.map +1 -1
- package/dist/runner/reuse-diagnostics.d.cts +5 -6
- package/dist/runner/reuse-diagnostics.d.mts +5 -6
- package/dist/runner/reuse-diagnostics.d.ts +5 -6
- package/dist/runner/reuse-diagnostics.js +4 -4
- package/dist/runner/reuse-plan.cjs +100 -48
- package/dist/runner/reuse-plan.cjs.map +1 -1
- package/dist/runner/reuse-plan.d.cts +60 -3
- package/dist/runner/reuse-plan.d.mts +60 -3
- package/dist/runner/reuse-plan.d.ts +60 -3
- package/dist/runner/reuse-plan.js +14 -10
- package/dist/runner/run.cjs +8 -6
- package/dist/runner/run.cjs.map +1 -1
- package/dist/runner/session.cjs +1 -1
- package/dist/runner/session.cjs.map +1 -1
- package/dist/runner/session.d.cts +1 -1
- package/dist/runner/session.d.mts +1 -1
- package/dist/runner/session.d.ts +1 -1
- package/dist/runner/source-producer.cjs +3 -1
- package/dist/runner/source-producer.cjs.map +1 -1
- package/dist/runner/types.cjs.map +1 -1
- package/dist/runner/types.d.cts +26 -5
- package/dist/runner/types.d.mts +26 -5
- package/dist/runner/types.d.ts +26 -5
- package/dist/sandbox/action.cjs +3 -0
- package/dist/sandbox/action.cjs.map +1 -1
- package/dist/sandbox/commands.cjs +3 -0
- package/dist/sandbox/commands.cjs.map +1 -1
- package/dist/sandbox/compose.cjs +6 -0
- package/dist/sandbox/compose.cjs.map +1 -1
- package/dist/sandbox/docker-profile/registry.cjs +7 -0
- package/dist/sandbox/docker-profile/registry.cjs.map +1 -1
- package/dist/sandbox/docker-profile/runtime.cjs +3 -0
- package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
- package/dist/sandbox/docker-profile/schema.cjs +7 -0
- package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
- package/dist/sandbox/incus.cjs +7 -0
- package/dist/sandbox/incus.cjs.map +1 -1
- package/dist/sandbox/layer.cjs +12 -0
- package/dist/sandbox/layer.cjs.map +1 -1
- package/dist/shared/adapter-cleanup.cjs +18 -0
- package/dist/shared/adapter-cleanup.cjs.map +1 -0
- package/dist/shared/adapter-cleanup.d.cts +4 -0
- package/dist/shared/adapter-cleanup.d.mts +4 -0
- package/dist/shared/adapter-cleanup.d.ts +4 -0
- package/dist/shared/adapter-cleanup.js +10 -0
- package/dist/shared/adapter-cleanup.js.map +1 -0
- package/dist/shared/attempt-lifecycle.cjs +3 -0
- package/dist/shared/attempt-lifecycle.cjs.map +1 -0
- package/dist/shared/attempt-lifecycle.d.cts +13 -0
- package/dist/shared/attempt-lifecycle.d.mts +13 -0
- package/dist/shared/attempt-lifecycle.d.ts +13 -0
- package/dist/shared/attempt-lifecycle.js +4 -0
- package/dist/shared/attempt-lifecycle.js.map +1 -0
- package/dist/show/contribution.cjs +52 -14
- package/dist/show/contribution.cjs.map +1 -1
- package/dist/show/contribution.d.cts +23 -1
- package/dist/show/contribution.d.mts +23 -1
- package/dist/show/contribution.d.ts +23 -1
- package/dist/show/model.cjs +8 -1
- package/dist/show/model.cjs.map +1 -1
- package/dist/show/model.d.cts +10 -1
- package/dist/show/model.d.mts +10 -1
- package/dist/show/model.d.ts +10 -1
- package/dist/show/render.cjs +287 -49
- package/dist/show/render.cjs.map +1 -1
- package/dist/show/render.d.cts +3 -0
- package/dist/show/render.d.mts +3 -0
- package/dist/show/render.d.ts +3 -0
- package/dist/sources/projector.cjs +3 -0
- package/dist/sources/projector.cjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/view/app-dist/.vite/manifest.json +2 -2
- package/dist/view/app-dist/assets/index-CmVoXbwG.js +63 -0
- package/dist/view/app-dist/assets/{quality-cost-scatter-CFB3wnkN.js → quality-cost-scatter-BuLISaH4.js} +1 -1
- package/dist/view/app-dist/index.html +1 -1
- package/dist/view/cli/contribution.cjs +54 -21
- package/dist/view/cli/contribution.cjs.map +1 -1
- package/dist/view/cli/contribution.d.cts +2 -1
- package/dist/view/cli/contribution.d.mts +2 -1
- package/dist/view/cli/contribution.d.ts +2 -1
- package/dist/view/function-runtime.mjs +13231 -11647
- package/dist/view/http-protocol.cjs +3 -0
- package/dist/view/http-protocol.cjs.map +1 -1
- package/dist/view/http-protocol.d.cts +8 -0
- package/dist/view/http-protocol.d.mts +8 -0
- package/dist/view/http-protocol.d.ts +8 -0
- package/dist/view/inspection-host.cjs +17 -1
- package/dist/view/inspection-host.cjs.map +1 -1
- package/dist/view/render.cjs +1 -0
- package/dist/view/render.cjs.map +1 -1
- package/dist/view/render.d.cts +2 -1
- package/dist/view/render.d.mts +2 -1
- package/dist/view/render.d.ts +2 -1
- package/dist/view/revision.cjs.map +1 -1
- package/dist/view/revision.d.cts +12 -0
- package/dist/view/revision.d.mts +12 -0
- package/dist/view/revision.d.ts +12 -0
- package/dist/view/server.cjs +10 -9
- package/dist/view/server.cjs.map +1 -1
- package/docs-site/zh/examples/ai-agent-application.mdx +1 -1
- package/docs-site/zh/explanation/adapter.mdx +2 -2
- package/docs-site/zh/explanation/assert.mdx +60 -24
- package/docs-site/zh/explanation/drive.mdx +1 -1
- package/docs-site/zh/explanation/evals.mdx +31 -29
- package/docs-site/zh/explanation/experiment.mdx +15 -15
- package/docs-site/zh/explanation/judge.mdx +23 -15
- package/docs-site/zh/explanation/overview.mdx +44 -21
- package/docs-site/zh/explanation/record.mdx +28 -13
- package/docs-site/zh/explanation/results-flow.mdx +37 -0
- package/docs-site/zh/explanation/runner.mdx +27 -6
- package/docs-site/zh/index.mdx +22 -115
- package/docs-site/zh/introduction.mdx +89 -61
- package/docs-site/zh/reference/cli.mdx +50 -26
- package/docs-site/zh/reference/define-agent.mdx +37 -5
- package/docs-site/zh/reference/define-eval.mdx +130 -29
- package/docs-site/zh/reference/define-experiment.mdx +251 -0
- package/docs-site/zh/reference/events.mdx +34 -30
- package/docs-site/zh/reference/expect.mdx +77 -2
- package/docs-site/zh/reference/official-adapters.mdx +2 -2
- package/docs-site/zh/troubleshooting/debug-sandbox.mdx +43 -24
- package/docs-site/zh/troubleshooting/debugging.mdx +65 -42
- package/docs-site/zh/troubleshooting/recover-after-kill.mdx +35 -28
- package/docs-site/zh/tutorials/accept-results.mdx +34 -24
- package/docs-site/zh/tutorials/agent-feedback-loop.mdx +74 -43
- package/docs-site/zh/tutorials/agent-onboarding.mdx +27 -20
- package/docs-site/zh/tutorials/authoring.mdx +138 -121
- package/docs-site/zh/tutorials/ci-integration.mdx +46 -22
- package/docs-site/zh/tutorials/compare-runs.mdx +40 -13
- package/docs-site/zh/tutorials/concurrency.mdx +66 -62
- package/docs-site/zh/tutorials/configuration.mdx +17 -17
- package/docs-site/zh/tutorials/connect-otel.mdx +48 -37
- package/docs-site/zh/tutorials/connect-your-agent.mdx +80 -173
- package/docs-site/zh/tutorials/control-run-cost.mdx +63 -12
- package/docs-site/zh/tutorials/criteria-files.mdx +28 -21
- package/docs-site/zh/tutorials/custom-application.mdx +75 -55
- package/docs-site/zh/tutorials/dataset-fanout.mdx +32 -22
- package/docs-site/zh/tutorials/debug-lifecycle-plan.mdx +38 -31
- package/docs-site/zh/tutorials/docker-in-docker.mdx +83 -89
- package/docs-site/zh/tutorials/eval-groups.mdx +70 -89
- package/docs-site/zh/tutorials/evaluation-kinds.mdx +12 -5
- package/docs-site/zh/tutorials/experiment-services.mdx +243 -0
- package/docs-site/zh/tutorials/fixtures.mdx +42 -26
- package/docs-site/zh/tutorials/handle-execution-failures.mdx +41 -19
- package/docs-site/zh/tutorials/install-custom-sandbox-agent.mdx +21 -16
- package/docs-site/zh/tutorials/niceeval-taste-application.mdx +394 -0
- package/docs-site/zh/tutorials/niceeval-taste.mdx +190 -0
- package/docs-site/zh/tutorials/nixos-managed-dind.mdx +51 -39
- package/docs-site/zh/tutorials/plugins.mdx +55 -31
- package/docs-site/zh/tutorials/prebuilt-sandbox.mdx +204 -0
- package/docs-site/zh/tutorials/quickstart.mdx +91 -47
- package/docs-site/zh/tutorials/reporters.mdx +45 -30
- package/docs-site/zh/tutorials/rerun-and-cache.mdx +39 -40
- package/docs-site/zh/tutorials/sandbox-agent.mdx +65 -40
- package/docs-site/zh/tutorials/sandbox-providers.mdx +104 -282
- package/docs-site/zh/tutorials/sandbox-reuse.mdx +65 -97
- package/docs-site/zh/tutorials/select-and-preview.mdx +25 -20
- package/docs-site/zh/tutorials/verify-judge.mdx +49 -26
- package/docs-site/zh/tutorials/viewing-results.mdx +130 -80
- package/docs-site/zh/tutorials/write-experiment.mdx +116 -298
- package/docs-site/zh/tutorials/write-send.mdx +53 -52
- package/node_modules/undici/docs/docs/api/Agent.md +8 -8
- package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +9 -6
- package/node_modules/undici/docs/docs/api/Errors.md +25 -0
- package/node_modules/undici/docs/docs/api/Interceptors.md +4 -3
- package/node_modules/undici/docs/docs/api/Pool.md +5 -6
- package/node_modules/undici/lib/api/readable.js +1 -2
- package/node_modules/undici/lib/core/request.js +23 -2
- package/node_modules/undici/lib/core/util.js +0 -39
- package/node_modules/undici/lib/dispatcher/client-h1.js +11 -4
- package/node_modules/undici/lib/dispatcher/client-h2.js +52 -8
- package/node_modules/undici/lib/dispatcher/client.js +1 -1
- package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +3 -2
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +21 -6
- package/node_modules/undici/lib/dispatcher/pool-base.js +63 -2
- package/node_modules/undici/lib/dispatcher/pool.js +90 -7
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +16 -3
- package/node_modules/undici/lib/handler/deduplication-handler.js +24 -11
- package/node_modules/undici/lib/handler/redirect-handler.js +5 -0
- package/node_modules/undici/lib/handler/retry-handler.js +72 -13
- package/node_modules/undici/lib/interceptor/cache.js +4 -1
- package/node_modules/undici/lib/interceptor/decompress.js +236 -69
- package/node_modules/undici/lib/web/cache/cache.js +17 -8
- package/node_modules/undici/lib/web/cache/cachestorage.js +11 -5
- package/node_modules/undici/lib/web/cookies/index.js +19 -7
- package/node_modules/undici/lib/web/cookies/util.js +3 -1
- package/node_modules/undici/lib/web/eventsource/eventsource.js +25 -1
- package/node_modules/undici/lib/web/fetch/body.js +22 -15
- package/node_modules/undici/lib/web/fetch/data-url.js +6 -6
- package/node_modules/undici/lib/web/fetch/formdata.js +30 -36
- package/node_modules/undici/lib/web/fetch/headers.js +34 -31
- package/node_modules/undici/lib/web/fetch/index.js +38 -14
- package/node_modules/undici/lib/web/fetch/request.js +74 -79
- package/node_modules/undici/lib/web/fetch/response.js +43 -44
- package/node_modules/undici/lib/web/fetch/util.js +7 -7
- package/node_modules/undici/lib/web/infra/index.js +16 -1
- package/node_modules/undici/lib/web/webidl/index.js +2 -14
- package/node_modules/undici/lib/web/websocket/events.js +43 -26
- package/node_modules/undici/lib/web/websocket/receiver.js +5 -0
- package/node_modules/undici/lib/web/websocket/stream/websocketerror.js +13 -10
- package/node_modules/undici/lib/web/websocket/websocket.js +44 -41
- package/node_modules/undici/package.json +1 -1
- package/node_modules/undici/types/diagnostics-channel.d.ts +2 -1
- package/node_modules/undici/types/interceptors.d.ts +1 -1
- package/node_modules/undici/types/webidl.d.ts +13 -7
- package/package.json +4 -4
- package/dist/view/app-dist/assets/index-DFzw1L97.js +0 -63
- package/docs-site/zh/tutorials/experiments.mdx +0 -101
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["sqlite.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash, randomUUID } from \"node:crypto\";\nimport type { SQLOutputValue } from \"node:sqlite\";\nimport { Effect } from \"effect\";\nimport { decodeAttemptLocator } from \"../../record/locator.ts\";\nimport { recordStatement, type RecordDatabase, } from \"../../record/sqlite/database.ts\";\nimport { ProjectStateDatabase } from \"../../record/sqlite/project-state-database.ts\";\nimport { SqliteRecordError, sqliteError } from \"../../record/sqlite/errors.ts\";\nimport { withImmediateTransaction } from \"../../record/sqlite/transaction.ts\";\nimport { RECORD_SQLITE_MAX_ROW_BYTES } from \"../../record/sqlite/types.ts\";\nimport { RunStorageError, type RunStorageErrorCode } from \"./errors.ts\";\nimport { RUN_ABSENCE_REASONS, RUN_TERMINAL_STATES, type AttemptPublicationIdentity, type AttemptPublicationReceipt, type BindAttemptReferenceInput, type CloseRunResourceInput, type CreateRunResourceInput, type DeleteRunReceipt, type DeleteRunResourceInput, type ExpectedRunSlot, type PublicationCutoff, type PublishedAttempt, type PublishOriginAttemptInput, type ReadableRunResource, type RecoverRunReceipt, type RecoverRunResourceInput, type ReferenceBindingReceipt, type RunAbsenceReason, type RunMutationReceipt, type RunReferenceDependency, type RunResourcePage, type RunSlotPublication, type RunState, type RunTerminalState, } from \"./types.ts\";\ntype Row = Readonly<Record<string, SQLOutputValue>>;\nfunction text(row: Row, field: string): string {\n const value = row[field];\n if (typeof value !== \"string\")\n throw invalid(`SQLite field ${field} is not text`);\n return value;\n}\nfunction optionalText(row: Row, field: string): string | undefined {\n const value = row[field];\n if (value === null || value === undefined)\n return undefined;\n if (typeof value !== \"string\")\n throw invalid(`SQLite field ${field} is not nullable text`);\n return value;\n}\nfunction integer(row: Row, field: string): number {\n const value = row[field];\n const number = typeof value === \"bigint\" ? Number(value) : value;\n if (typeof number !== \"number\" || !Number.isSafeInteger(number)) {\n throw invalid(`SQLite field ${field} is not a safe integer`);\n }\n return number;\n}\nfunction bytes(row: Row, field: string): Uint8Array {\n const value = row[field];\n if (!(value instanceof Uint8Array))\n throw invalid(`SQLite field ${field} is not bytes`);\n return new Uint8Array(value);\n}\nfunction invalid(message: string): RunStorageError {\n return new RunStorageError(\"run-storage-invalid\", message);\n}\nfunction requireIdentity(value: string, field: string): void {\n if (value.length === 0 || value.length > 1024 || /[\\u0000-\\u001f\\u007f]/u.test(value)) {\n throw invalid(`${field} is not a bounded domain identity`);\n }\n}\nfunction requireIsoInstant(value: string, field: string): void {\n requireIdentity(value, field);\n if (!Number.isFinite(Date.parse(value)))\n throw invalid(`${field} is not an ISO instant`);\n}\nfunction requireDigest(value: string, field: string): void {\n if (!/^[a-f0-9]{64}$/u.test(value))\n throw invalid(`${field} is not a lowercase SHA-256 digest`);\n}\nfunction requireTerminalState(value: string): asserts value is RunTerminalState {\n if (!(RUN_TERMINAL_STATES as readonly string[]).includes(value))\n throw invalid(`Run state ${value} is not terminal`);\n}\nfunction requireAbsenceReason(value: string): asserts value is RunAbsenceReason {\n if (!(RUN_ABSENCE_REASONS as readonly string[]).includes(value))\n throw invalid(`Run absence reason ${value} is invalid`);\n}\nfunction requireClosure(bytes: Uint8Array, digest: string): void {\n requireDigest(digest, \"closureDigest\");\n if (bytes.byteLength > RECORD_SQLITE_MAX_ROW_BYTES) {\n throw invalid(`Attempt closure exceeds the ${RECORD_SQLITE_MAX_ROW_BYTES} byte row ceiling`);\n }\n if (createHash(\"sha256\").update(bytes).digest(\"hex\") !== digest) {\n throw invalid(\"Attempt closure bytes do not match closureDigest\");\n }\n}\nfunction metadataGeneration(connection: RecordDatabase): string {\n const row = recordStatement(connection, \"SELECT storage_generation FROM ne18_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (row === undefined)\n throw invalid(\"ProjectDatabase storage generation is missing\");\n return text(row, \"storage_generation\");\n}\nfunction currentRevision(connection: RecordDatabase): number {\n const row = recordStatement(connection, \"SELECT revision FROM ne18_run_publication_clock WHERE singleton=1\").get() as Row | undefined;\n if (row === undefined)\n throw invalid(\"Run publication clock is missing\");\n return integer(row, \"revision\");\n}\nfunction cutoffAt(connection: RecordDatabase, revision: number): PublicationCutoff {\n return Object.freeze({ storeGeneration: metadataGeneration(connection), revision });\n}\nfunction nextRevision(connection: RecordDatabase): number {\n const changed = recordStatement(connection, \"UPDATE ne18_run_publication_clock SET revision=revision+1 WHERE singleton=1\").run();\n if (Number(changed.changes) !== 1)\n throw invalid(\"Run publication clock could not advance\");\n return currentRevision(connection);\n}\nfunction requireCutoff(connection: RecordDatabase, requested?: PublicationCutoff): PublicationCutoff {\n const latest = cutoffAt(connection, currentRevision(connection));\n if (requested === undefined)\n return latest;\n if (requested.storeGeneration !== latest.storeGeneration || requested.revision < 0 ||\n !Number.isSafeInteger(requested.revision) || requested.revision > latest.revision) {\n throw new RunStorageError(\"publication-cutoff-restart-required\", \"PublicationCutoff cannot be continued in the current store generation\");\n }\n return Object.freeze({ ...requested });\n}\ninterface RunHeader {\n readonly runId: string;\n readonly writerGeneration: string;\n readonly terminalState?: RunTerminalState;\n readonly createdRevision: number;\n readonly closeRevision?: number;\n}\nfunction runHeader(connection: RecordDatabase, runId: string): RunHeader | undefined {\n const row = recordStatement(connection, `SELECT run_id,current_writer_generation,terminal_state,created_revision,close_revision\n FROM ne18_run_resources WHERE run_id=?`).get(runId) as Row | undefined;\n if (row === undefined)\n return undefined;\n const terminalState = optionalText(row, \"terminal_state\");\n if (terminalState !== undefined)\n requireTerminalState(terminalState);\n return Object.freeze({\n runId: text(row, \"run_id\"),\n writerGeneration: text(row, \"current_writer_generation\"),\n ...(terminalState === undefined ? {} : { terminalState }),\n createdRevision: integer(row, \"created_revision\"),\n ...(row.close_revision === null ? {} : { closeRevision: integer(row, \"close_revision\") }),\n });\n}\nfunction requireActiveWriter(connection: RecordDatabase, runId: string, writerGeneration: string): RunHeader {\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne18_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase writer barrier is not open\");\n }\n const run = runHeader(connection, runId);\n if (run === undefined)\n throw new RunStorageError(\"run-not-found\", `Run ${runId} does not exist`);\n if (run.terminalState !== undefined)\n throw new RunStorageError(\"run-not-active\", `Run ${runId} is already ${run.terminalState}`);\n if (run.writerGeneration !== writerGeneration) {\n throw new RunStorageError(\"writer-generation-mismatch\", `Run ${runId} writer generation is fenced`);\n }\n return run;\n}\nfunction slotExists(connection: RecordDatabase, runId: string, slotId: string): boolean {\n return recordStatement(connection, \"SELECT 1 AS present FROM ne18_run_expected_slots WHERE run_id=? AND slot_id=?\")\n .get(runId, slotId) !== undefined;\n}\nfunction slotBound(connection: RecordDatabase, runId: string, slotId: string): boolean {\n return recordStatement(connection, \"SELECT 1 AS present FROM ne18_run_slot_bindings WHERE target_run_id=? AND slot_id=?\")\n .get(runId, slotId) !== undefined;\n}\nfunction sourceDeleted(connection: RecordDatabase, runId: string): boolean {\n return recordStatement(connection, \"SELECT 1 AS present FROM ne18_run_deletion_tombstones WHERE run_id=?\").get(runId) !== undefined;\n}\nfunction validateExpectedSlots(slots: readonly ExpectedRunSlot[]): void {\n if (slots.length > RECORD_SQLITE_MAX_ROW_BYTES / 256) {\n throw invalid(\"Run expected slot plan exceeds its bounded publication inventory\");\n }\n const ids = new Set<string>();\n slots.forEach((slot) => {\n requireIdentity(slot.slotId, \"expectedSlots.slotId\");\n requireIdentity(slot.evalId, \"expectedSlots.evalId\");\n if (!Number.isSafeInteger(slot.attemptOrdinal) || slot.attemptOrdinal < 0) {\n throw invalid(\"expectedSlots.attemptOrdinal is not a non-negative safe integer\");\n }\n requireDigest(slot.executionIdentityDigest, \"expectedSlots.executionIdentityDigest\");\n if (ids.has(slot.slotId))\n throw invalid(`expected slot ${slot.slotId} is duplicated`);\n ids.add(slot.slotId);\n });\n}\nexport function currentPublicationCutoffOnConnection(connection: RecordDatabase): PublicationCutoff {\n return requireCutoff(connection);\n}\nexport function createRunResourceOnConnection(connection: RecordDatabase, input: CreateRunResourceInput): RunMutationReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.invocationId, \"invocationId\");\n requireIdentity(input.experimentId, \"experimentId\");\n requireIdentity(input.writerGeneration, \"writerGeneration\");\n requireIsoInstant(input.startedAt, \"startedAt\");\n validateExpectedSlots(input.expectedSlots);\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"create-run-resource\", () => {\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne18_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase writer barrier is not open\");\n }\n if (runHeader(connection, input.runId) !== undefined) {\n throw new RunStorageError(\"run-storage-invalid\", `Run ${input.runId} already exists`);\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne18_run_resources(run_id,invocation_id,experiment_id,started_at,\n initial_writer_generation,current_writer_generation,terminal_state,completed_at,created_revision,close_revision)\n VALUES (?,?,?,?,?,?,NULL,NULL,?,NULL)`).run(input.runId, input.invocationId, input.experimentId, input.startedAt, input.writerGeneration, input.writerGeneration, revision);\n const insertSlot = recordStatement(connection, `INSERT INTO ne18_run_expected_slots(run_id,slot_id,ordinal,eval_id,\n attempt_ordinal,execution_identity_digest) VALUES (?,?,?,?,?,?)`);\n input.expectedSlots.forEach((slot, ordinal) => insertSlot.run(input.runId, slot.slotId, ordinal, slot.evalId, slot.attemptOrdinal, slot.executionIdentityDigest));\n return Object.freeze({ runId: input.runId, cutoff: cutoffAt(connection, revision) });\n });\n}\nexport function publishOriginAttemptOnConnection(connection: RecordDatabase, input: PublishOriginAttemptInput): AttemptPublicationReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.writerGeneration, \"writerGeneration\");\n requireIdentity(input.slotId, \"slotId\");\n requireIdentity(input.attemptId, \"attemptId\");\n if (!decodeAttemptLocator(input.attemptLocator).valid)\n throw invalid(\"attemptLocator is malformed\");\n requireClosure(input.closureBytes, input.closureDigest);\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"publish-origin-attempt\", () => {\n requireActiveWriter(connection, input.runId, input.writerGeneration);\n if (!slotExists(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-not-found\", `Run ${input.runId} does not expect slot ${input.slotId}`);\n }\n if (slotBound(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-already-bound\", `Run ${input.runId} slot ${input.slotId} is already bound`);\n }\n if (recordStatement(connection, \"SELECT 1 AS present FROM ne18_attempt_publications WHERE attempt_id=?\").get(input.attemptId) !== undefined) {\n throw new RunStorageError(\"attempt-already-published\", `Attempt ${input.attemptId} is already published`);\n }\n const aggregate = recordStatement(connection, `SELECT r.status,r.writer_generation,a.attempt_locator,a.publication_state,a.core_payload,a.core_digest,\n m.slot_id AS member_slot FROM ne18_runs r\n JOIN ne18_attempts a ON a.origin_run_id=r.run_id AND a.attempt_id=?\n JOIN ne18_members m ON m.target_run_id=r.run_id AND m.slot_id=? AND m.origin_run_id=r.run_id AND m.attempt_id=a.attempt_id\n WHERE r.run_id=?`).get(input.attemptId, input.slotId, input.runId) as unknown as Row | undefined;\n if (aggregate === undefined || text(aggregate, \"writer_generation\") !== input.writerGeneration ||\n (text(aggregate, \"status\") !== \"open\" && text(aggregate, \"status\") !== \"sealing\") ||\n text(aggregate, \"publication_state\") !== \"sealing\" ||\n text(aggregate, \"attempt_locator\") !== input.attemptLocator || !(aggregate.core_payload instanceof Uint8Array) ||\n typeof aggregate.core_digest !== \"string\") {\n throw new RunStorageError(\"run-storage-invalid\", \"Attempt aggregate is not complete at its publication fence\");\n }\n const incomplete = recordStatement(connection, `SELECT count(*) AS count FROM ne18_attachments a\n LEFT JOIN ne18_contents c ON c.attachment_id=a.attachment_id\n WHERE a.owner_run_id=? AND a.owner_attempt_id=? AND\n (a.logical_identity IS NULL OR a.canonical_payload IS NULL OR a.canonical_digest IS NULL OR\n a.logical_inventory IS NULL OR a.inventory_digest IS NULL OR\n (c.content_id IS NOT NULL AND (c.byte_length IS NULL OR c.overall_digest IS NULL OR c.chunk_count IS NULL)))`)\n .get(input.runId, input.attemptId) as unknown as Row;\n if (integer(incomplete, \"count\") !== 0) {\n throw new RunStorageError(\"run-storage-invalid\", \"Attempt attachment closure is incomplete at its publication fence\");\n }\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne18_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase portable barrier is not open\");\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne18_attempt_publications(attempt_id,attempt_locator,origin_run_id,origin_slot_id,\n closure_payload,closure_digest,published_revision) VALUES (?,?,?,?,?,?,?)`).run(input.attemptId, input.attemptLocator, input.runId, input.slotId, input.closureBytes, input.closureDigest, revision);\n recordStatement(connection, `INSERT INTO ne18_run_slot_bindings(target_run_id,slot_id,attempt_id,origin_run_id,\n origin_slot_id,attempt_publication_revision,action,binding_revision) VALUES (?,?,?,?,?,?,'executed',?)`).run(input.runId, input.slotId, input.attemptId, input.runId, input.slotId, revision, revision);\n const publicationIdentity = Object.freeze({ originRunId: input.runId, attemptId: input.attemptId, revision });\n const frozen = recordStatement(connection, `UPDATE ne18_attempts SET publication_state='published'\n WHERE origin_run_id=? AND attempt_id=? AND publication_state='sealing'`).run(input.runId, input.attemptId);\n if (Number(frozen.changes) !== 1) {\n throw new RunStorageError(\"run-storage-invalid\", \"Attempt publication fence changed before freeze\");\n }\n return Object.freeze({\n runId: input.runId,\n slotId: input.slotId,\n publicationIdentity,\n cutoff: cutoffAt(connection, revision),\n });\n });\n}\nexport function bindAttemptReferenceOnConnection(connection: RecordDatabase, input: BindAttemptReferenceInput): ReferenceBindingReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.writerGeneration, \"writerGeneration\");\n requireIdentity(input.slotId, \"slotId\");\n requireIdentity(input.publicationIdentity.originRunId, \"publicationIdentity.originRunId\");\n requireIdentity(input.publicationIdentity.attemptId, \"publicationIdentity.attemptId\");\n if (!Number.isSafeInteger(input.publicationIdentity.revision) || input.publicationIdentity.revision <= 0) {\n throw invalid(\"publicationIdentity.revision is invalid\");\n }\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"bind-attempt-reference\", () => {\n requireActiveWriter(connection, input.runId, input.writerGeneration);\n if (!slotExists(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-not-found\", `Run ${input.runId} does not expect slot ${input.slotId}`);\n }\n if (slotBound(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-already-bound\", `Run ${input.runId} slot ${input.slotId} is already bound`);\n }\n const source = recordStatement(connection, `SELECT origin_run_id,origin_slot_id,published_revision FROM ne18_attempt_publications\n WHERE attempt_id=?`).get(input.publicationIdentity.attemptId) as Row | undefined;\n if (source === undefined || text(source, \"origin_run_id\") !== input.publicationIdentity.originRunId ||\n integer(source, \"published_revision\") !== input.publicationIdentity.revision) {\n throw new RunStorageError(\"attempt-not-published\", `Attempt ${input.publicationIdentity.attemptId} is not published at the supplied identity`);\n }\n if (sourceDeleted(connection, input.publicationIdentity.originRunId)) {\n throw new RunStorageError(\"source-run-deleted\", `Origin Run ${input.publicationIdentity.originRunId} is deleted`);\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne18_run_slot_bindings(target_run_id,slot_id,attempt_id,origin_run_id,\n origin_slot_id,attempt_publication_revision,action,binding_revision) VALUES (?,?,?,?,?,?,?,?)`).run(input.runId, input.slotId, input.publicationIdentity.attemptId, input.publicationIdentity.originRunId, text(source, \"origin_slot_id\"), input.publicationIdentity.revision, input.action, revision);\n return Object.freeze({\n runId: input.runId,\n slotId: input.slotId,\n publicationIdentity: Object.freeze({ ...input.publicationIdentity }),\n cutoff: cutoffAt(connection, revision),\n });\n });\n}\nfunction pendingSlotIds(connection: RecordDatabase, runId: string): readonly string[] {\n const rows = recordStatement(connection, `SELECT s.slot_id FROM ne18_run_expected_slots s\n LEFT JOIN ne18_run_slot_bindings b ON b.target_run_id=s.run_id AND b.slot_id=s.slot_id\n WHERE s.run_id=? AND b.slot_id IS NULL ORDER BY s.ordinal`).all(runId) as readonly Row[];\n return Object.freeze(rows.map((row) => text(row, \"slot_id\")));\n}\nfunction validateAbsenceClosure(connection: RecordDatabase, runId: string, absences: CloseRunResourceInput[\"absences\"]): void {\n const expected = pendingSlotIds(connection, runId);\n const supplied = new Map<string, RunAbsenceReason>();\n for (const absence of absences) {\n requireIdentity(absence.slotId, \"absences.slotId\");\n requireAbsenceReason(absence.reason);\n if (supplied.has(absence.slotId)) {\n throw new RunStorageError(\"absence-coverage-invalid\", `Run ${runId} absence repeats slot ${absence.slotId}`);\n }\n supplied.set(absence.slotId, absence.reason);\n }\n if (expected.length !== supplied.size || expected.some((slotId) => !supplied.has(slotId))) {\n throw new RunStorageError(\"absence-coverage-invalid\", `Run ${runId} absence closure does not exactly cover pending slots`);\n }\n}\nfunction insertAbsences(connection: RecordDatabase, runId: string, revision: number, absences: CloseRunResourceInput[\"absences\"]): void {\n const insert = recordStatement(connection, `INSERT INTO ne18_run_slot_absences(run_id,slot_id,reason,absence_revision)\n VALUES (?,?,?,?)`);\n for (const absence of absences)\n insert.run(runId, absence.slotId, absence.reason, revision);\n}\nexport function closeRunResourceOnConnection(connection: RecordDatabase, input: CloseRunResourceInput): RunMutationReceipt {\n requireTerminalState(input.state);\n requireIsoInstant(input.completedAt, \"completedAt\");\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"close-run-resource\", () => {\n requireActiveWriter(connection, input.runId, input.writerGeneration);\n validateAbsenceClosure(connection, input.runId, input.absences);\n const aggregate = recordStatement(connection, \"SELECT status,writer_generation FROM ne18_runs WHERE run_id=?\")\n .get(input.runId) as unknown as Row | undefined;\n if (aggregate === undefined || text(aggregate, \"status\") !== \"sealed\" ||\n text(aggregate, \"writer_generation\") !== input.writerGeneration) {\n throw new RunStorageError(\"run-storage-invalid\", `Run ${input.runId} aggregate is not sealed at close`);\n }\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne18_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase portable barrier is not open\");\n }\n const revision = nextRevision(connection);\n insertAbsences(connection, input.runId, revision, input.absences);\n const changed = recordStatement(connection, `UPDATE ne18_run_resources SET terminal_state=?,completed_at=?,close_revision=?\n WHERE run_id=? AND terminal_state IS NULL AND current_writer_generation=?`).run(input.state, input.completedAt, revision, input.runId, input.writerGeneration);\n if (Number(changed.changes) !== 1)\n throw new RunStorageError(\"run-not-active\", `Run ${input.runId} changed before close`);\n return Object.freeze({ runId: input.runId, cutoff: cutoffAt(connection, revision) });\n });\n}\nexport function recoverRunResourceOnConnection(connection: RecordDatabase, input: RecoverRunResourceInput): RecoverRunReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.expectedWriterGeneration, \"expectedWriterGeneration\");\n requireIdentity(input.recoveryWriterGeneration, \"recoveryWriterGeneration\");\n requireIsoInstant(input.completedAt, \"completedAt\");\n requireIdentity(input.evidence.kind, \"evidence.kind\");\n requireIdentity(input.evidence.identity, \"evidence.identity\");\n requireIsoInstant(input.evidence.observedAt, \"evidence.observedAt\");\n if (input.expectedWriterGeneration === input.recoveryWriterGeneration) {\n throw new RunStorageError(\"recovery-evidence-required\", \"Recovery must advance to a distinct writer generation\");\n }\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"recover-run-resource\", () => {\n requireActiveWriter(connection, input.runId, input.expectedWriterGeneration);\n const absences = pendingSlotIds(connection, input.runId).map((slotId) => Object.freeze({\n slotId,\n reason: \"interrupted-before-publication\" as const,\n }));\n const revision = nextRevision(connection);\n insertAbsences(connection, input.runId, revision, absences);\n const changed = recordStatement(connection, `UPDATE ne18_run_resources SET current_writer_generation=?,terminal_state='interrupted',\n completed_at=?,close_revision=? WHERE run_id=? AND terminal_state IS NULL AND current_writer_generation=?`).run(input.recoveryWriterGeneration, input.completedAt, revision, input.runId, input.expectedWriterGeneration);\n if (Number(changed.changes) !== 1) {\n throw new RunStorageError(\"writer-generation-mismatch\", `Run ${input.runId} changed before recovery fence`);\n }\n recordStatement(connection, `DELETE FROM ne18_attachments WHERE owner_run_id=? AND\n (owner_kind='run' OR owner_attempt_id NOT IN (SELECT attempt_id FROM ne18_attempt_publications WHERE origin_run_id=?))`)\n .run(input.runId, input.runId);\n recordStatement(connection, `DELETE FROM ne18_members WHERE target_run_id=? AND\n (attempt_id IS NULL OR attempt_id NOT IN (SELECT attempt_id FROM ne18_attempt_publications WHERE origin_run_id=?))`)\n .run(input.runId, input.runId);\n recordStatement(connection, `DELETE FROM ne18_attempts WHERE origin_run_id=? AND\n attempt_id NOT IN (SELECT attempt_id FROM ne18_attempt_publications WHERE origin_run_id=?)`).run(input.runId, input.runId);\n recordStatement(connection, `INSERT INTO ne18_run_recoveries(run_id,previous_writer_generation,recovery_writer_generation,\n evidence_kind,evidence_identity,evidence_observed_at,recovery_revision) VALUES (?,?,?,?,?,?,?)`).run(input.runId, input.expectedWriterGeneration, input.recoveryWriterGeneration, input.evidence.kind, input.evidence.identity, input.evidence.observedAt, revision);\n return Object.freeze({\n runId: input.runId,\n previousWriterGeneration: input.expectedWriterGeneration,\n writerGeneration: input.recoveryWriterGeneration,\n state: \"interrupted\",\n cutoff: cutoffAt(connection, revision),\n });\n });\n}\nfunction incomingReferences(connection: RecordDatabase, originRunId: string): readonly RunReferenceDependency[] {\n const rows = recordStatement(connection, `SELECT b.target_run_id,b.slot_id,b.attempt_id,a.attempt_locator\n FROM ne18_run_slot_bindings b JOIN ne18_attempt_publications a ON a.attempt_id=b.attempt_id\n LEFT JOIN ne18_run_deletion_tombstones d ON d.run_id=b.target_run_id\n WHERE b.origin_run_id=? AND b.target_run_id<>? AND d.run_id IS NULL\n ORDER BY b.target_run_id,b.slot_id,b.attempt_id LIMIT ?`).all(originRunId, originRunId, Math.trunc(RECORD_SQLITE_MAX_ROW_BYTES / 256) + 1) as readonly Row[];\n if (rows.length > RECORD_SQLITE_MAX_ROW_BYTES / 256) {\n throw invalid(`Run ${originRunId} incoming reference inventory exceeds its bounded delete receipt`);\n }\n return Object.freeze(rows.map((row) => Object.freeze({\n dependentRunId: text(row, \"target_run_id\"),\n dependentSlotId: text(row, \"slot_id\"),\n attemptId: text(row, \"attempt_id\"),\n attemptLocator: text(row, \"attempt_locator\"),\n })));\n}\nexport function deleteRunResourceOnConnection(connection: RecordDatabase, input: DeleteRunResourceInput): DeleteRunReceipt {\n requireIdentity(input.runId, \"runId\");\n requireTerminalState(input.expectedState);\n requireIsoInstant(input.deletedAt, \"deletedAt\");\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"delete-run-resource\", () => {\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne18_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") === \"draining\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase writer barrier is not open\");\n }\n if (text(barrier, \"barrier_state\") === \"portable\") {\n const generation = randomUUID();\n recordStatement(connection, `UPDATE ne18_record_metadata SET barrier_state='open',storage_generation=?,portable_generation=NULL,\n portable_revision=NULL,portable_gate_id=NULL WHERE singleton=1 AND barrier_state='portable'`).run(generation);\n recordStatement(connection, \"UPDATE ne18_coordination_state SET operational_generation=?,revision=revision+1 WHERE singleton=1\")\n .run(generation);\n }\n const run = runHeader(connection, input.runId);\n if (run === undefined)\n throw new RunStorageError(\"run-not-found\", `Run ${input.runId} does not exist`);\n if (run.terminalState !== input.expectedState) {\n throw new RunStorageError(\"run-state-mismatch\", `Run ${input.runId} is ${run.terminalState ?? \"active\"}, not ${input.expectedState}`);\n }\n const tombstone = recordStatement(connection, \"SELECT deletion_revision FROM ne18_run_deletion_tombstones WHERE run_id=?\")\n .get(input.runId) as Row | undefined;\n if (tombstone !== undefined) {\n const revision = integer(tombstone, \"deletion_revision\");\n return Object.freeze({ runId: input.runId, state: input.expectedState, cutoff: cutoffAt(connection, revision) });\n }\n const dependencies = incomingReferences(connection, input.runId);\n if (dependencies.length > 0) {\n throw new RunStorageError(\"run-delete-reference-conflict\", `Run ${input.runId} has incoming Attempt references`, dependencies);\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne18_run_deletion_tombstones(run_id,terminal_state,deleted_at,deletion_revision)\n VALUES (?,?,?,?)`).run(input.runId, input.expectedState, input.deletedAt, revision);\n return Object.freeze({ runId: input.runId, state: input.expectedState, cutoff: cutoffAt(connection, revision) });\n });\n}\nfunction publicationIdentity(row: Row): AttemptPublicationIdentity {\n return Object.freeze({\n originRunId: text(row, \"origin_run_id\"),\n attemptId: text(row, \"attempt_id\"),\n revision: integer(row, \"attempt_publication_revision\"),\n });\n}\nfunction readSlotPublication(connection: RecordDatabase, runId: string, slotId: string, cutoff: PublicationCutoff): RunSlotPublication {\n const binding = recordStatement(connection, `SELECT b.action,b.binding_revision,b.attempt_id,b.origin_run_id,b.origin_slot_id,\n b.attempt_publication_revision,a.attempt_locator FROM ne18_run_slot_bindings b\n JOIN ne18_attempt_publications a ON a.attempt_id=b.attempt_id\n WHERE b.target_run_id=? AND b.slot_id=? AND b.binding_revision<=?`).get(runId, slotId, cutoff.revision) as Row | undefined;\n if (binding !== undefined) {\n const action = text(binding, \"action\");\n if (action !== \"executed\" && action !== \"carried\" && action !== \"accepted\") {\n throw invalid(`Run ${runId} slot ${slotId} has an invalid binding action`);\n }\n return Object.freeze({\n state: \"published\",\n action,\n attemptId: text(binding, \"attempt_id\"),\n attemptLocator: text(binding, \"attempt_locator\"),\n originRunId: text(binding, \"origin_run_id\"),\n originSlotId: text(binding, \"origin_slot_id\"),\n publicationIdentity: publicationIdentity(binding),\n bindingRevision: integer(binding, \"binding_revision\"),\n });\n }\n const absence = recordStatement(connection, `SELECT reason,absence_revision FROM ne18_run_slot_absences\n WHERE run_id=? AND slot_id=? AND absence_revision<=?`).get(runId, slotId, cutoff.revision) as Row | undefined;\n if (absence !== undefined) {\n const reason = text(absence, \"reason\");\n requireAbsenceReason(reason);\n return Object.freeze({ state: \"absent\", reason, absenceRevision: integer(absence, \"absence_revision\") });\n }\n return Object.freeze({ state: \"pending\" });\n}\nfunction readRunAtCutoff(connection: RecordDatabase, runId: string, cutoff: PublicationCutoff): ReadableRunResource | undefined {\n const row = recordStatement(connection, `SELECT r.run_id,r.invocation_id,r.experiment_id,r.started_at,r.initial_writer_generation,r.current_writer_generation,\n r.terminal_state,r.completed_at,r.created_revision,r.close_revision,d.deletion_revision\n FROM ne18_run_resources r LEFT JOIN ne18_run_deletion_tombstones d ON d.run_id=r.run_id WHERE r.run_id=?`).get(runId) as Row | undefined;\n if (row === undefined || integer(row, \"created_revision\") > cutoff.revision ||\n row.deletion_revision !== null && row.deletion_revision !== undefined && integer(row, \"deletion_revision\") <= cutoff.revision) {\n return undefined;\n }\n const closeRevision = row.close_revision === null ? undefined : integer(row, \"close_revision\");\n const closeVisible = closeRevision !== undefined && closeRevision <= cutoff.revision;\n const terminalState = optionalText(row, \"terminal_state\");\n if (terminalState !== undefined)\n requireTerminalState(terminalState);\n const state: RunState = closeVisible\n ? terminalState ?? (() => { throw invalid(`Run ${runId} close revision lacks terminal state`); })()\n : \"active\";\n const slotRows = recordStatement(connection, `SELECT slot_id,eval_id,attempt_ordinal,execution_identity_digest\n FROM ne18_run_expected_slots WHERE run_id=? ORDER BY ordinal LIMIT ?`).all(runId, Math.trunc(RECORD_SQLITE_MAX_ROW_BYTES / 256) + 1) as readonly Row[];\n if (slotRows.length > RECORD_SQLITE_MAX_ROW_BYTES / 256) {\n throw invalid(`Run ${runId} expected slot inventory exceeds its bounded read`);\n }\n const slots = slotRows.map((slot): ReadableRunResource[\"slots\"][number] => Object.freeze({\n slotId: text(slot, \"slot_id\"),\n evalId: text(slot, \"eval_id\"),\n attemptOrdinal: integer(slot, \"attempt_ordinal\"),\n executionIdentityDigest: text(slot, \"execution_identity_digest\"),\n publication: readSlotPublication(connection, runId, text(slot, \"slot_id\"), cutoff),\n }));\n const published = slots.filter((slot) => slot.publication.state === \"published\").length;\n return Object.freeze({\n runId: text(row, \"run_id\"),\n invocationId: text(row, \"invocation_id\"),\n experimentId: text(row, \"experiment_id\"),\n startedAt: text(row, \"started_at\"),\n ...(closeVisible ? { completedAt: text(row, \"completed_at\") } : {}),\n state,\n writerGeneration: text(row, closeVisible ? \"current_writer_generation\" : \"initial_writer_generation\"),\n createdRevision: integer(row, \"created_revision\"),\n ...(closeVisible && closeRevision !== undefined ? { closeRevision } : {}),\n expected: slots.length,\n published,\n missing: slots.length - published,\n slots: Object.freeze(slots),\n });\n}\nexport function readRunResourceOnConnection(connection: RecordDatabase, runId: string, requestedCutoff?: PublicationCutoff): ReadableRunResource | undefined {\n requireIdentity(runId, \"runId\");\n return readRunAtCutoff(connection, runId, requireCutoff(connection, requestedCutoff));\n}\nexport function listRunResourcesOnConnection(connection: RecordDatabase, input: {\n readonly cutoff?: PublicationCutoff;\n readonly invocationId?: string;\n readonly afterRunId?: string;\n readonly pageSize?: number;\n} = {}): RunResourcePage {\n const cutoff = requireCutoff(connection, input.cutoff);\n const afterRunId = input.afterRunId ?? \"\";\n const pageSize = input.pageSize ?? 100;\n if (input.invocationId !== undefined)\n requireIdentity(input.invocationId, \"invocationId\");\n if (!Number.isSafeInteger(pageSize) || pageSize < 1 || pageSize > 256)\n throw invalid(\"Run page size must be between 1 and 256\");\n const rows = (input.invocationId === undefined\n ? recordStatement(connection, `SELECT r.run_id FROM ne18_run_resources r\n LEFT JOIN ne18_run_deletion_tombstones d ON d.run_id=r.run_id\n WHERE r.created_revision<=? AND (d.deletion_revision IS NULL OR d.deletion_revision>?) AND r.run_id>?\n ORDER BY r.run_id LIMIT ?`).all(cutoff.revision, cutoff.revision, afterRunId, pageSize + 1)\n : recordStatement(connection, `SELECT r.run_id FROM ne18_run_resources r\n LEFT JOIN ne18_run_deletion_tombstones d ON d.run_id=r.run_id\n WHERE r.created_revision<=? AND (d.deletion_revision IS NULL OR d.deletion_revision>?) AND r.invocation_id=? AND r.run_id>?\n ORDER BY r.run_id LIMIT ?`).all(cutoff.revision, cutoff.revision, input.invocationId, afterRunId, pageSize + 1)) as readonly Row[];\n const selected = rows.slice(0, pageSize);\n const runs = selected.map((row) => readRunAtCutoff(connection, text(row, \"run_id\"), cutoff)).filter((run): run is ReadableRunResource => run !== undefined);\n return Object.freeze({\n cutoff,\n runs: Object.freeze(runs),\n nextAfterRunId: rows.length > pageSize && selected.length > 0 ? text(selected.at(-1)!, \"run_id\") : null,\n });\n}\nexport function readPublishedAttemptOnConnection(connection: RecordDatabase, attemptId: string, requestedCutoff?: PublicationCutoff): PublishedAttempt | undefined {\n requireIdentity(attemptId, \"attemptId\");\n const cutoff = requireCutoff(connection, requestedCutoff);\n const row = recordStatement(connection, `SELECT a.attempt_id,a.attempt_locator,a.origin_run_id,a.origin_slot_id,a.closure_payload,\n a.closure_digest,a.published_revision,d.deletion_revision FROM ne18_attempt_publications a\n LEFT JOIN ne18_run_deletion_tombstones d ON d.run_id=a.origin_run_id WHERE a.attempt_id=?`).get(attemptId) as Row | undefined;\n if (row === undefined || integer(row, \"published_revision\") > cutoff.revision ||\n row.deletion_revision !== null && row.deletion_revision !== undefined && integer(row, \"deletion_revision\") <= cutoff.revision) {\n return undefined;\n }\n const revision = integer(row, \"published_revision\");\n const originRunId = text(row, \"origin_run_id\");\n return Object.freeze({\n attemptId: text(row, \"attempt_id\"),\n attemptLocator: text(row, \"attempt_locator\"),\n originRunId,\n originSlotId: text(row, \"origin_slot_id\"),\n publicationIdentity: Object.freeze({ originRunId, attemptId: text(row, \"attempt_id\"), revision }),\n closureBytes: bytes(row, \"closure_payload\"),\n closureDigest: text(row, \"closure_digest\"),\n });\n}\nconst runStorageErrorCodes = new Set<RunStorageErrorCode>([\n \"run-not-found\", \"run-not-active\", \"writer-generation-mismatch\", \"slot-not-found\", \"slot-already-bound\",\n \"attempt-already-published\", \"attempt-not-published\", \"source-run-deleted\", \"absence-coverage-invalid\",\n \"run-state-mismatch\", \"run-delete-reference-conflict\", \"recovery-evidence-required\",\n \"publication-cutoff-restart-required\", \"run-storage-invalid\",\n]);\nfunction decodeWorkerRunError(cause: unknown): unknown {\n if (!(cause instanceof SqliteRecordError) || !(cause.cause instanceof Error) ||\n !runStorageErrorCodes.has(cause.cause.name as RunStorageErrorCode))\n return cause;\n const details = Reflect.get(cause.cause, \"details\");\n return new RunStorageError(cause.cause.name as RunStorageErrorCode, cause.cause.message, Array.isArray(details) ? details : []);\n}\nfunction runCommand<A extends import(\"../../record/sqlite/worker-protocol.ts\").StorageWorkerResult>(recordStorageRoot: string, command: import(\"../../record/sqlite/worker-protocol.ts\").RunCommand): Effect.Effect<A, unknown, ProjectStateDatabase> {\n return Effect.flatMap(ProjectStateDatabase, (database) => Effect.flatMap(database.bind(recordStorageRoot), (facets) => Effect.tryPromise({ try: () => facets.run.execute<A>(command), catch: decodeWorkerRunError })));\n}\nexport function currentPublicationCutoff(recordStorageRoot: string) { return runCommand<PublicationCutoff>(recordStorageRoot, { _tag: \"run-cutoff\" }); }\nexport function createRunResource(recordStorageRoot: string, input: CreateRunResourceInput) { return runCommand<RunMutationReceipt>(recordStorageRoot, { _tag: \"run-create\", input }); }\nexport function publishOriginAttempt(recordStorageRoot: string, input: PublishOriginAttemptInput) { return runCommand<AttemptPublicationReceipt>(recordStorageRoot, { _tag: \"run-publish-attempt\", input }); }\nexport function bindAttemptReference(recordStorageRoot: string, input: BindAttemptReferenceInput) { return runCommand<ReferenceBindingReceipt>(recordStorageRoot, { _tag: \"run-bind-reference\", input }); }\nexport function closeRunResource(recordStorageRoot: string, input: CloseRunResourceInput) { return runCommand<RunMutationReceipt>(recordStorageRoot, { _tag: \"run-close\", input }); }\nexport function recoverRunResource(recordStorageRoot: string, input: RecoverRunResourceInput) { return runCommand<RecoverRunReceipt>(recordStorageRoot, { _tag: \"run-recover\", input }); }\nexport function deleteRunResource(recordStorageRoot: string, input: DeleteRunResourceInput) { return runCommand<DeleteRunReceipt>(recordStorageRoot, { _tag: \"run-delete\", input }); }\nexport function readRunResource(recordStorageRoot: string, runId: string, cutoff?: PublicationCutoff) {\n return runCommand<ReadableRunResource | undefined>(recordStorageRoot, { _tag: \"run-read\", runId, ...(cutoff === undefined ? {} : { cutoff }) });\n}\nexport function listRunResources(recordStorageRoot: string, input?: Parameters<typeof listRunResourcesOnConnection>[1]) {\n return runCommand<RunResourcePage>(recordStorageRoot, { _tag: \"run-list\", ...(input === undefined ? {} : { input }) });\n}\nexport function readPublishedAttempt(recordStorageRoot: string, attemptId: string, cutoff?: PublicationCutoff) {\n return runCommand<PublishedAttempt | undefined>(recordStorageRoot, { _tag: \"run-read-attempt\", attemptId, ...(cutoff === undefined ? {} : { cutoff }) });\n}\n/** Convert unexpected SQLite constraint failures into the internal storage vocabulary. */\nexport function asRunStorageError(cause: unknown): RunStorageError {\n if (cause instanceof RunStorageError)\n return cause;\n if (cause instanceof Error)\n return invalid(cause.message);\n throw sqliteError(\"record-sqlite-error\", \"run-storage\", \"Run storage failed with a non-Error defect\", cause);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["sqlite.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file ne-run-storage-sqlite\n// @concord-implements docs/feature/run/architecture.md\n// @concord-implements docs/feature/run/lifecycle.md\n// @concord-implements docs/feature/run-inspection/README.md\nimport { createHash, randomUUID } from \"node:crypto\";\nimport type { SQLOutputValue } from \"node:sqlite\";\nimport { Effect } from \"effect\";\nimport { decodeAttemptLocator } from \"../../record/locator.ts\";\nimport { recordStatement, type RecordDatabase, } from \"../../record/sqlite/database.ts\";\nimport { ProjectStateDatabase } from \"../../record/sqlite/project-state-database.ts\";\nimport { SqliteRecordError, sqliteError } from \"../../record/sqlite/errors.ts\";\nimport { withImmediateTransaction } from \"../../record/sqlite/transaction.ts\";\nimport { RECORD_SQLITE_MAX_ROW_BYTES } from \"../../record/sqlite/types.ts\";\nimport { RunStorageError, type RunStorageErrorCode } from \"./errors.ts\";\nimport { RUN_ABSENCE_REASONS, RUN_TERMINAL_STATES, type AttemptPublicationIdentity, type AttemptPublicationReceipt, type BindAttemptReferenceInput, type CloseRunResourceInput, type CreateRunResourceInput, type DeleteRunReceipt, type DeleteRunResourceInput, type ExpectedRunSlot, type PublicationCutoff, type PublishedAttempt, type PublishOriginAttemptInput, type ReadableRunResource, type RecoverRunReceipt, type RecoverRunResourceInput, type ReferenceBindingReceipt, type RunAbsenceReason, type RunMutationReceipt, type RunReferenceDependency, type RunResourcePage, type RunSlotPublication, type RunState, type RunTerminalState, } from \"./types.ts\";\ntype Row = Readonly<Record<string, SQLOutputValue>>;\nfunction text(row: Row, field: string): string {\n const value = row[field];\n if (typeof value !== \"string\")\n throw invalid(`SQLite field ${field} is not text`);\n return value;\n}\nfunction optionalText(row: Row, field: string): string | undefined {\n const value = row[field];\n if (value === null || value === undefined)\n return undefined;\n if (typeof value !== \"string\")\n throw invalid(`SQLite field ${field} is not nullable text`);\n return value;\n}\nfunction integer(row: Row, field: string): number {\n const value = row[field];\n const number = typeof value === \"bigint\" ? Number(value) : value;\n if (typeof number !== \"number\" || !Number.isSafeInteger(number)) {\n throw invalid(`SQLite field ${field} is not a safe integer`);\n }\n return number;\n}\nfunction bytes(row: Row, field: string): Uint8Array {\n const value = row[field];\n if (!(value instanceof Uint8Array))\n throw invalid(`SQLite field ${field} is not bytes`);\n return new Uint8Array(value);\n}\nfunction invalid(message: string): RunStorageError {\n return new RunStorageError(\"run-storage-invalid\", message);\n}\nfunction requireIdentity(value: string, field: string): void {\n if (value.length === 0 || value.length > 1024 || /[\\u0000-\\u001f\\u007f]/u.test(value)) {\n throw invalid(`${field} is not a bounded domain identity`);\n }\n}\nfunction requireIsoInstant(value: string, field: string): void {\n requireIdentity(value, field);\n if (!Number.isFinite(Date.parse(value)))\n throw invalid(`${field} is not an ISO instant`);\n}\nfunction requireDigest(value: string, field: string): void {\n if (!/^[a-f0-9]{64}$/u.test(value))\n throw invalid(`${field} is not a lowercase SHA-256 digest`);\n}\nfunction requireTerminalState(value: string): asserts value is RunTerminalState {\n if (!(RUN_TERMINAL_STATES as readonly string[]).includes(value))\n throw invalid(`Run state ${value} is not terminal`);\n}\nfunction requireAbsenceReason(value: string): asserts value is RunAbsenceReason {\n if (!(RUN_ABSENCE_REASONS as readonly string[]).includes(value))\n throw invalid(`Run absence reason ${value} is invalid`);\n}\nfunction requireClosure(bytes: Uint8Array, digest: string): void {\n requireDigest(digest, \"closureDigest\");\n if (bytes.byteLength > RECORD_SQLITE_MAX_ROW_BYTES) {\n throw invalid(`Attempt closure exceeds the ${RECORD_SQLITE_MAX_ROW_BYTES} byte row ceiling`);\n }\n if (createHash(\"sha256\").update(bytes).digest(\"hex\") !== digest) {\n throw invalid(\"Attempt closure bytes do not match closureDigest\");\n }\n}\nfunction metadataGeneration(connection: RecordDatabase): string {\n const row = recordStatement(connection, \"SELECT storage_generation FROM ne18_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (row === undefined)\n throw invalid(\"ProjectDatabase storage generation is missing\");\n return text(row, \"storage_generation\");\n}\nfunction currentRevision(connection: RecordDatabase): number {\n const row = recordStatement(connection, \"SELECT revision FROM ne18_run_publication_clock WHERE singleton=1\").get() as Row | undefined;\n if (row === undefined)\n throw invalid(\"Run publication clock is missing\");\n return integer(row, \"revision\");\n}\nfunction cutoffAt(connection: RecordDatabase, revision: number): PublicationCutoff {\n return Object.freeze({ storeGeneration: metadataGeneration(connection), revision });\n}\nfunction nextRevision(connection: RecordDatabase): number {\n const changed = recordStatement(connection, \"UPDATE ne18_run_publication_clock SET revision=revision+1 WHERE singleton=1\").run();\n if (Number(changed.changes) !== 1)\n throw invalid(\"Run publication clock could not advance\");\n return currentRevision(connection);\n}\nfunction requireCutoff(connection: RecordDatabase, requested?: PublicationCutoff): PublicationCutoff {\n const latest = cutoffAt(connection, currentRevision(connection));\n if (requested === undefined)\n return latest;\n if (requested.storeGeneration !== latest.storeGeneration || requested.revision < 0 ||\n !Number.isSafeInteger(requested.revision) || requested.revision > latest.revision) {\n throw new RunStorageError(\"publication-cutoff-restart-required\", \"PublicationCutoff cannot be continued in the current store generation\");\n }\n return Object.freeze({ ...requested });\n}\ninterface RunHeader {\n readonly runId: string;\n readonly writerGeneration: string;\n readonly terminalState?: RunTerminalState;\n readonly createdRevision: number;\n readonly closeRevision?: number;\n}\nfunction runHeader(connection: RecordDatabase, runId: string): RunHeader | undefined {\n const row = recordStatement(connection, `SELECT run_id,current_writer_generation,terminal_state,created_revision,close_revision\n FROM ne18_run_resources WHERE run_id=?`).get(runId) as Row | undefined;\n if (row === undefined)\n return undefined;\n const terminalState = optionalText(row, \"terminal_state\");\n if (terminalState !== undefined)\n requireTerminalState(terminalState);\n return Object.freeze({\n runId: text(row, \"run_id\"),\n writerGeneration: text(row, \"current_writer_generation\"),\n ...(terminalState === undefined ? {} : { terminalState }),\n createdRevision: integer(row, \"created_revision\"),\n ...(row.close_revision === null ? {} : { closeRevision: integer(row, \"close_revision\") }),\n });\n}\nfunction requireActiveWriter(connection: RecordDatabase, runId: string, writerGeneration: string): RunHeader {\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne18_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase writer barrier is not open\");\n }\n const run = runHeader(connection, runId);\n if (run === undefined)\n throw new RunStorageError(\"run-not-found\", `Run ${runId} does not exist`);\n if (run.terminalState !== undefined)\n throw new RunStorageError(\"run-not-active\", `Run ${runId} is already ${run.terminalState}`);\n if (run.writerGeneration !== writerGeneration) {\n throw new RunStorageError(\"writer-generation-mismatch\", `Run ${runId} writer generation is fenced`);\n }\n return run;\n}\nfunction slotExists(connection: RecordDatabase, runId: string, slotId: string): boolean {\n return recordStatement(connection, \"SELECT 1 AS present FROM ne18_run_expected_slots WHERE run_id=? AND slot_id=?\")\n .get(runId, slotId) !== undefined;\n}\nfunction slotBound(connection: RecordDatabase, runId: string, slotId: string): boolean {\n return recordStatement(connection, \"SELECT 1 AS present FROM ne18_run_slot_bindings WHERE target_run_id=? AND slot_id=?\")\n .get(runId, slotId) !== undefined;\n}\nfunction sourceDeleted(connection: RecordDatabase, runId: string): boolean {\n return recordStatement(connection, \"SELECT 1 AS present FROM ne18_run_deletion_tombstones WHERE run_id=?\").get(runId) !== undefined;\n}\nfunction validateExpectedSlots(slots: readonly ExpectedRunSlot[]): void {\n if (slots.length > RECORD_SQLITE_MAX_ROW_BYTES / 256) {\n throw invalid(\"Run expected slot plan exceeds its bounded publication inventory\");\n }\n const ids = new Set<string>();\n slots.forEach((slot) => {\n requireIdentity(slot.slotId, \"expectedSlots.slotId\");\n requireIdentity(slot.evalId, \"expectedSlots.evalId\");\n if (!Number.isSafeInteger(slot.attemptOrdinal) || slot.attemptOrdinal < 0) {\n throw invalid(\"expectedSlots.attemptOrdinal is not a non-negative safe integer\");\n }\n requireDigest(slot.executionIdentityDigest, \"expectedSlots.executionIdentityDigest\");\n if (ids.has(slot.slotId))\n throw invalid(`expected slot ${slot.slotId} is duplicated`);\n ids.add(slot.slotId);\n });\n}\nexport function currentPublicationCutoffOnConnection(connection: RecordDatabase): PublicationCutoff {\n return requireCutoff(connection);\n}\n// @concord-code ne-run-create-resource\n// @concord-implements docs/feature/run/architecture.md\n// @concord-implements docs/feature/run/lifecycle.md\nexport function createRunResourceOnConnection(connection: RecordDatabase, input: CreateRunResourceInput): RunMutationReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.invocationId, \"invocationId\");\n requireIdentity(input.experimentId, \"experimentId\");\n requireIdentity(input.writerGeneration, \"writerGeneration\");\n requireIsoInstant(input.startedAt, \"startedAt\");\n validateExpectedSlots(input.expectedSlots);\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"create-run-resource\", () => {\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne18_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase writer barrier is not open\");\n }\n if (runHeader(connection, input.runId) !== undefined) {\n throw new RunStorageError(\"run-storage-invalid\", `Run ${input.runId} already exists`);\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne18_run_resources(run_id,invocation_id,experiment_id,started_at,\n initial_writer_generation,current_writer_generation,terminal_state,completed_at,created_revision,close_revision)\n VALUES (?,?,?,?,?,?,NULL,NULL,?,NULL)`).run(input.runId, input.invocationId, input.experimentId, input.startedAt, input.writerGeneration, input.writerGeneration, revision);\n const insertSlot = recordStatement(connection, `INSERT INTO ne18_run_expected_slots(run_id,slot_id,ordinal,eval_id,\n attempt_ordinal,execution_identity_digest) VALUES (?,?,?,?,?,?)`);\n input.expectedSlots.forEach((slot, ordinal) => insertSlot.run(input.runId, slot.slotId, ordinal, slot.evalId, slot.attemptOrdinal, slot.executionIdentityDigest));\n return Object.freeze({ runId: input.runId, cutoff: cutoffAt(connection, revision) });\n });\n}\n// @concord-code ne-run-publish-origin-attempt\n// @concord-implements docs/feature/run/architecture.md\n// @concord-implements docs/feature/run/lifecycle.md\nexport function publishOriginAttemptOnConnection(connection: RecordDatabase, input: PublishOriginAttemptInput): AttemptPublicationReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.writerGeneration, \"writerGeneration\");\n requireIdentity(input.slotId, \"slotId\");\n requireIdentity(input.attemptId, \"attemptId\");\n if (!decodeAttemptLocator(input.attemptLocator).valid)\n throw invalid(\"attemptLocator is malformed\");\n requireClosure(input.closureBytes, input.closureDigest);\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"publish-origin-attempt\", () => {\n requireActiveWriter(connection, input.runId, input.writerGeneration);\n if (!slotExists(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-not-found\", `Run ${input.runId} does not expect slot ${input.slotId}`);\n }\n if (slotBound(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-already-bound\", `Run ${input.runId} slot ${input.slotId} is already bound`);\n }\n if (recordStatement(connection, \"SELECT 1 AS present FROM ne18_attempt_publications WHERE attempt_id=?\").get(input.attemptId) !== undefined) {\n throw new RunStorageError(\"attempt-already-published\", `Attempt ${input.attemptId} is already published`);\n }\n const aggregate = recordStatement(connection, `SELECT r.status,r.writer_generation,a.attempt_locator,a.publication_state,a.core_payload,a.core_digest,\n m.slot_id AS member_slot FROM ne18_runs r\n JOIN ne18_attempts a ON a.origin_run_id=r.run_id AND a.attempt_id=?\n JOIN ne18_members m ON m.target_run_id=r.run_id AND m.slot_id=? AND m.origin_run_id=r.run_id AND m.attempt_id=a.attempt_id\n WHERE r.run_id=?`).get(input.attemptId, input.slotId, input.runId) as unknown as Row | undefined;\n if (aggregate === undefined || text(aggregate, \"writer_generation\") !== input.writerGeneration ||\n (text(aggregate, \"status\") !== \"open\" && text(aggregate, \"status\") !== \"sealing\") ||\n text(aggregate, \"publication_state\") !== \"sealing\" ||\n text(aggregate, \"attempt_locator\") !== input.attemptLocator || !(aggregate.core_payload instanceof Uint8Array) ||\n typeof aggregate.core_digest !== \"string\") {\n throw new RunStorageError(\"run-storage-invalid\", \"Attempt aggregate is not complete at its publication fence\");\n }\n const incomplete = recordStatement(connection, `SELECT count(*) AS count FROM ne18_attachments a\n LEFT JOIN ne18_contents c ON c.attachment_id=a.attachment_id\n WHERE a.owner_run_id=? AND a.owner_attempt_id=? AND\n (a.logical_identity IS NULL OR a.canonical_payload IS NULL OR a.canonical_digest IS NULL OR\n a.logical_inventory IS NULL OR a.inventory_digest IS NULL OR\n (c.content_id IS NOT NULL AND (c.byte_length IS NULL OR c.overall_digest IS NULL OR c.chunk_count IS NULL)))`)\n .get(input.runId, input.attemptId) as unknown as Row;\n if (integer(incomplete, \"count\") !== 0) {\n throw new RunStorageError(\"run-storage-invalid\", \"Attempt attachment closure is incomplete at its publication fence\");\n }\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne18_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase portable barrier is not open\");\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne18_attempt_publications(attempt_id,attempt_locator,origin_run_id,origin_slot_id,\n closure_payload,closure_digest,published_revision) VALUES (?,?,?,?,?,?,?)`).run(input.attemptId, input.attemptLocator, input.runId, input.slotId, input.closureBytes, input.closureDigest, revision);\n recordStatement(connection, `INSERT INTO ne18_run_slot_bindings(target_run_id,slot_id,attempt_id,origin_run_id,\n origin_slot_id,attempt_publication_revision,action,binding_revision) VALUES (?,?,?,?,?,?,'executed',?)`).run(input.runId, input.slotId, input.attemptId, input.runId, input.slotId, revision, revision);\n const publicationIdentity = Object.freeze({ originRunId: input.runId, attemptId: input.attemptId, revision });\n const frozen = recordStatement(connection, `UPDATE ne18_attempts SET publication_state='published'\n WHERE origin_run_id=? AND attempt_id=? AND publication_state='sealing'`).run(input.runId, input.attemptId);\n if (Number(frozen.changes) !== 1) {\n throw new RunStorageError(\"run-storage-invalid\", \"Attempt publication fence changed before freeze\");\n }\n return Object.freeze({\n runId: input.runId,\n slotId: input.slotId,\n publicationIdentity,\n cutoff: cutoffAt(connection, revision),\n });\n });\n}\n// @concord-code ne-run-bind-attempt-reference\n// @concord-implements docs/feature/run/architecture.md\nexport function bindAttemptReferenceOnConnection(connection: RecordDatabase, input: BindAttemptReferenceInput): ReferenceBindingReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.writerGeneration, \"writerGeneration\");\n requireIdentity(input.slotId, \"slotId\");\n requireIdentity(input.publicationIdentity.originRunId, \"publicationIdentity.originRunId\");\n requireIdentity(input.publicationIdentity.attemptId, \"publicationIdentity.attemptId\");\n if (!Number.isSafeInteger(input.publicationIdentity.revision) || input.publicationIdentity.revision <= 0) {\n throw invalid(\"publicationIdentity.revision is invalid\");\n }\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"bind-attempt-reference\", () => {\n requireActiveWriter(connection, input.runId, input.writerGeneration);\n if (!slotExists(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-not-found\", `Run ${input.runId} does not expect slot ${input.slotId}`);\n }\n if (slotBound(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-already-bound\", `Run ${input.runId} slot ${input.slotId} is already bound`);\n }\n const source = recordStatement(connection, `SELECT origin_run_id,origin_slot_id,published_revision FROM ne18_attempt_publications\n WHERE attempt_id=?`).get(input.publicationIdentity.attemptId) as Row | undefined;\n if (source === undefined || text(source, \"origin_run_id\") !== input.publicationIdentity.originRunId ||\n integer(source, \"published_revision\") !== input.publicationIdentity.revision) {\n throw new RunStorageError(\"attempt-not-published\", `Attempt ${input.publicationIdentity.attemptId} is not published at the supplied identity`);\n }\n if (sourceDeleted(connection, input.publicationIdentity.originRunId)) {\n throw new RunStorageError(\"source-run-deleted\", `Origin Run ${input.publicationIdentity.originRunId} is deleted`);\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne18_run_slot_bindings(target_run_id,slot_id,attempt_id,origin_run_id,\n origin_slot_id,attempt_publication_revision,action,binding_revision) VALUES (?,?,?,?,?,?,?,?)`).run(input.runId, input.slotId, input.publicationIdentity.attemptId, input.publicationIdentity.originRunId, text(source, \"origin_slot_id\"), input.publicationIdentity.revision, input.action, revision);\n return Object.freeze({\n runId: input.runId,\n slotId: input.slotId,\n publicationIdentity: Object.freeze({ ...input.publicationIdentity }),\n cutoff: cutoffAt(connection, revision),\n });\n });\n}\nfunction pendingSlotIds(connection: RecordDatabase, runId: string): readonly string[] {\n const rows = recordStatement(connection, `SELECT s.slot_id FROM ne18_run_expected_slots s\n LEFT JOIN ne18_run_slot_bindings b ON b.target_run_id=s.run_id AND b.slot_id=s.slot_id\n WHERE s.run_id=? AND b.slot_id IS NULL ORDER BY s.ordinal`).all(runId) as readonly Row[];\n return Object.freeze(rows.map((row) => text(row, \"slot_id\")));\n}\nfunction validateAbsenceClosure(connection: RecordDatabase, runId: string, absences: CloseRunResourceInput[\"absences\"]): void {\n const expected = pendingSlotIds(connection, runId);\n const supplied = new Map<string, RunAbsenceReason>();\n for (const absence of absences) {\n requireIdentity(absence.slotId, \"absences.slotId\");\n requireAbsenceReason(absence.reason);\n if (supplied.has(absence.slotId)) {\n throw new RunStorageError(\"absence-coverage-invalid\", `Run ${runId} absence repeats slot ${absence.slotId}`);\n }\n supplied.set(absence.slotId, absence.reason);\n }\n if (expected.length !== supplied.size || expected.some((slotId) => !supplied.has(slotId))) {\n throw new RunStorageError(\"absence-coverage-invalid\", `Run ${runId} absence closure does not exactly cover pending slots`);\n }\n}\nfunction insertAbsences(connection: RecordDatabase, runId: string, revision: number, absences: CloseRunResourceInput[\"absences\"]): void {\n const insert = recordStatement(connection, `INSERT INTO ne18_run_slot_absences(run_id,slot_id,reason,absence_revision)\n VALUES (?,?,?,?)`);\n for (const absence of absences)\n insert.run(runId, absence.slotId, absence.reason, revision);\n}\n// @concord-code ne-run-close-resource\n// @concord-implements docs/feature/run/architecture.md\n// @concord-implements docs/feature/run/lifecycle.md\nexport function closeRunResourceOnConnection(connection: RecordDatabase, input: CloseRunResourceInput): RunMutationReceipt {\n requireTerminalState(input.state);\n requireIsoInstant(input.completedAt, \"completedAt\");\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"close-run-resource\", () => {\n requireActiveWriter(connection, input.runId, input.writerGeneration);\n validateAbsenceClosure(connection, input.runId, input.absences);\n const aggregate = recordStatement(connection, \"SELECT status,writer_generation FROM ne18_runs WHERE run_id=?\")\n .get(input.runId) as unknown as Row | undefined;\n if (aggregate === undefined || text(aggregate, \"status\") !== \"sealed\" ||\n text(aggregate, \"writer_generation\") !== input.writerGeneration) {\n throw new RunStorageError(\"run-storage-invalid\", `Run ${input.runId} aggregate is not sealed at close`);\n }\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne18_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase portable barrier is not open\");\n }\n const revision = nextRevision(connection);\n insertAbsences(connection, input.runId, revision, input.absences);\n const changed = recordStatement(connection, `UPDATE ne18_run_resources SET terminal_state=?,completed_at=?,close_revision=?\n WHERE run_id=? AND terminal_state IS NULL AND current_writer_generation=?`).run(input.state, input.completedAt, revision, input.runId, input.writerGeneration);\n if (Number(changed.changes) !== 1)\n throw new RunStorageError(\"run-not-active\", `Run ${input.runId} changed before close`);\n return Object.freeze({ runId: input.runId, cutoff: cutoffAt(connection, revision) });\n });\n}\n// @concord-code ne-run-recover-resource\n// @concord-implements docs/feature/run/lifecycle.md\nexport function recoverRunResourceOnConnection(connection: RecordDatabase, input: RecoverRunResourceInput): RecoverRunReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.expectedWriterGeneration, \"expectedWriterGeneration\");\n requireIdentity(input.recoveryWriterGeneration, \"recoveryWriterGeneration\");\n requireIsoInstant(input.completedAt, \"completedAt\");\n requireIdentity(input.evidence.kind, \"evidence.kind\");\n requireIdentity(input.evidence.identity, \"evidence.identity\");\n requireIsoInstant(input.evidence.observedAt, \"evidence.observedAt\");\n if (input.expectedWriterGeneration === input.recoveryWriterGeneration) {\n throw new RunStorageError(\"recovery-evidence-required\", \"Recovery must advance to a distinct writer generation\");\n }\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"recover-run-resource\", () => {\n requireActiveWriter(connection, input.runId, input.expectedWriterGeneration);\n const absences = pendingSlotIds(connection, input.runId).map((slotId) => Object.freeze({\n slotId,\n reason: \"interrupted-before-publication\" as const,\n }));\n const revision = nextRevision(connection);\n insertAbsences(connection, input.runId, revision, absences);\n const changed = recordStatement(connection, `UPDATE ne18_run_resources SET current_writer_generation=?,terminal_state='interrupted',\n completed_at=?,close_revision=? WHERE run_id=? AND terminal_state IS NULL AND current_writer_generation=?`).run(input.recoveryWriterGeneration, input.completedAt, revision, input.runId, input.expectedWriterGeneration);\n if (Number(changed.changes) !== 1) {\n throw new RunStorageError(\"writer-generation-mismatch\", `Run ${input.runId} changed before recovery fence`);\n }\n recordStatement(connection, `DELETE FROM ne18_attachments WHERE owner_run_id=? AND\n (owner_kind='run' OR owner_attempt_id NOT IN (SELECT attempt_id FROM ne18_attempt_publications WHERE origin_run_id=?))`)\n .run(input.runId, input.runId);\n recordStatement(connection, `DELETE FROM ne18_members WHERE target_run_id=? AND\n (attempt_id IS NULL OR attempt_id NOT IN (SELECT attempt_id FROM ne18_attempt_publications WHERE origin_run_id=?))`)\n .run(input.runId, input.runId);\n recordStatement(connection, `DELETE FROM ne18_attempts WHERE origin_run_id=? AND\n attempt_id NOT IN (SELECT attempt_id FROM ne18_attempt_publications WHERE origin_run_id=?)`).run(input.runId, input.runId);\n recordStatement(connection, `INSERT INTO ne18_run_recoveries(run_id,previous_writer_generation,recovery_writer_generation,\n evidence_kind,evidence_identity,evidence_observed_at,recovery_revision) VALUES (?,?,?,?,?,?,?)`).run(input.runId, input.expectedWriterGeneration, input.recoveryWriterGeneration, input.evidence.kind, input.evidence.identity, input.evidence.observedAt, revision);\n return Object.freeze({\n runId: input.runId,\n previousWriterGeneration: input.expectedWriterGeneration,\n writerGeneration: input.recoveryWriterGeneration,\n state: \"interrupted\",\n cutoff: cutoffAt(connection, revision),\n });\n });\n}\nfunction incomingReferences(connection: RecordDatabase, originRunId: string): readonly RunReferenceDependency[] {\n const rows = recordStatement(connection, `SELECT b.target_run_id,b.slot_id,b.attempt_id,a.attempt_locator\n FROM ne18_run_slot_bindings b JOIN ne18_attempt_publications a ON a.attempt_id=b.attempt_id\n LEFT JOIN ne18_run_deletion_tombstones d ON d.run_id=b.target_run_id\n WHERE b.origin_run_id=? AND b.target_run_id<>? AND d.run_id IS NULL\n ORDER BY b.target_run_id,b.slot_id,b.attempt_id LIMIT ?`).all(originRunId, originRunId, Math.trunc(RECORD_SQLITE_MAX_ROW_BYTES / 256) + 1) as readonly Row[];\n if (rows.length > RECORD_SQLITE_MAX_ROW_BYTES / 256) {\n throw invalid(`Run ${originRunId} incoming reference inventory exceeds its bounded delete receipt`);\n }\n return Object.freeze(rows.map((row) => Object.freeze({\n dependentRunId: text(row, \"target_run_id\"),\n dependentSlotId: text(row, \"slot_id\"),\n attemptId: text(row, \"attempt_id\"),\n attemptLocator: text(row, \"attempt_locator\"),\n })));\n}\n// @concord-code ne-run-delete-resource\n// @concord-implements docs/feature/run/architecture.md\n// @concord-implements docs/feature/run/lifecycle.md\nexport function deleteRunResourceOnConnection(connection: RecordDatabase, input: DeleteRunResourceInput): DeleteRunReceipt {\n requireIdentity(input.runId, \"runId\");\n requireTerminalState(input.expectedState);\n requireIsoInstant(input.deletedAt, \"deletedAt\");\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"delete-run-resource\", () => {\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne18_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") === \"draining\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase writer barrier is not open\");\n }\n if (text(barrier, \"barrier_state\") === \"portable\") {\n const generation = randomUUID();\n recordStatement(connection, `UPDATE ne18_record_metadata SET barrier_state='open',storage_generation=?,portable_generation=NULL,\n portable_revision=NULL,portable_gate_id=NULL WHERE singleton=1 AND barrier_state='portable'`).run(generation);\n recordStatement(connection, \"UPDATE ne18_coordination_state SET operational_generation=?,revision=revision+1 WHERE singleton=1\")\n .run(generation);\n }\n const run = runHeader(connection, input.runId);\n if (run === undefined)\n throw new RunStorageError(\"run-not-found\", `Run ${input.runId} does not exist`);\n if (run.terminalState !== input.expectedState) {\n throw new RunStorageError(\"run-state-mismatch\", `Run ${input.runId} is ${run.terminalState ?? \"active\"}, not ${input.expectedState}`);\n }\n const tombstone = recordStatement(connection, \"SELECT deletion_revision FROM ne18_run_deletion_tombstones WHERE run_id=?\")\n .get(input.runId) as Row | undefined;\n if (tombstone !== undefined) {\n const revision = integer(tombstone, \"deletion_revision\");\n return Object.freeze({ runId: input.runId, state: input.expectedState, cutoff: cutoffAt(connection, revision) });\n }\n const dependencies = incomingReferences(connection, input.runId);\n if (dependencies.length > 0) {\n throw new RunStorageError(\"run-delete-reference-conflict\", `Run ${input.runId} has incoming Attempt references`, dependencies);\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne18_run_deletion_tombstones(run_id,terminal_state,deleted_at,deletion_revision)\n VALUES (?,?,?,?)`).run(input.runId, input.expectedState, input.deletedAt, revision);\n return Object.freeze({ runId: input.runId, state: input.expectedState, cutoff: cutoffAt(connection, revision) });\n });\n}\nfunction publicationIdentity(row: Row): AttemptPublicationIdentity {\n return Object.freeze({\n originRunId: text(row, \"origin_run_id\"),\n attemptId: text(row, \"attempt_id\"),\n revision: integer(row, \"attempt_publication_revision\"),\n });\n}\nfunction readSlotPublication(connection: RecordDatabase, runId: string, slotId: string, cutoff: PublicationCutoff): RunSlotPublication {\n const binding = recordStatement(connection, `SELECT b.action,b.binding_revision,b.attempt_id,b.origin_run_id,b.origin_slot_id,\n b.attempt_publication_revision,a.attempt_locator FROM ne18_run_slot_bindings b\n JOIN ne18_attempt_publications a ON a.attempt_id=b.attempt_id\n WHERE b.target_run_id=? AND b.slot_id=? AND b.binding_revision<=?`).get(runId, slotId, cutoff.revision) as Row | undefined;\n if (binding !== undefined) {\n const action = text(binding, \"action\");\n if (action !== \"executed\" && action !== \"carried\" && action !== \"accepted\") {\n throw invalid(`Run ${runId} slot ${slotId} has an invalid binding action`);\n }\n return Object.freeze({\n state: \"published\",\n action,\n attemptId: text(binding, \"attempt_id\"),\n attemptLocator: text(binding, \"attempt_locator\"),\n originRunId: text(binding, \"origin_run_id\"),\n originSlotId: text(binding, \"origin_slot_id\"),\n publicationIdentity: publicationIdentity(binding),\n bindingRevision: integer(binding, \"binding_revision\"),\n });\n }\n const absence = recordStatement(connection, `SELECT reason,absence_revision FROM ne18_run_slot_absences\n WHERE run_id=? AND slot_id=? AND absence_revision<=?`).get(runId, slotId, cutoff.revision) as Row | undefined;\n if (absence !== undefined) {\n const reason = text(absence, \"reason\");\n requireAbsenceReason(reason);\n return Object.freeze({ state: \"absent\", reason, absenceRevision: integer(absence, \"absence_revision\") });\n }\n return Object.freeze({ state: \"pending\" });\n}\nfunction readRunAtCutoff(connection: RecordDatabase, runId: string, cutoff: PublicationCutoff): ReadableRunResource | undefined {\n const row = recordStatement(connection, `SELECT r.run_id,r.invocation_id,r.experiment_id,r.started_at,r.initial_writer_generation,r.current_writer_generation,\n r.terminal_state,r.completed_at,r.created_revision,r.close_revision,d.deletion_revision\n FROM ne18_run_resources r LEFT JOIN ne18_run_deletion_tombstones d ON d.run_id=r.run_id WHERE r.run_id=?`).get(runId) as Row | undefined;\n if (row === undefined || integer(row, \"created_revision\") > cutoff.revision ||\n row.deletion_revision !== null && row.deletion_revision !== undefined && integer(row, \"deletion_revision\") <= cutoff.revision) {\n return undefined;\n }\n const closeRevision = row.close_revision === null ? undefined : integer(row, \"close_revision\");\n const closeVisible = closeRevision !== undefined && closeRevision <= cutoff.revision;\n const terminalState = optionalText(row, \"terminal_state\");\n if (terminalState !== undefined)\n requireTerminalState(terminalState);\n const state: RunState = closeVisible\n ? terminalState ?? (() => { throw invalid(`Run ${runId} close revision lacks terminal state`); })()\n : \"active\";\n const slotRows = recordStatement(connection, `SELECT slot_id,eval_id,attempt_ordinal,execution_identity_digest\n FROM ne18_run_expected_slots WHERE run_id=? ORDER BY ordinal LIMIT ?`).all(runId, Math.trunc(RECORD_SQLITE_MAX_ROW_BYTES / 256) + 1) as readonly Row[];\n if (slotRows.length > RECORD_SQLITE_MAX_ROW_BYTES / 256) {\n throw invalid(`Run ${runId} expected slot inventory exceeds its bounded read`);\n }\n const slots = slotRows.map((slot): ReadableRunResource[\"slots\"][number] => Object.freeze({\n slotId: text(slot, \"slot_id\"),\n evalId: text(slot, \"eval_id\"),\n attemptOrdinal: integer(slot, \"attempt_ordinal\"),\n executionIdentityDigest: text(slot, \"execution_identity_digest\"),\n publication: readSlotPublication(connection, runId, text(slot, \"slot_id\"), cutoff),\n }));\n const published = slots.filter((slot) => slot.publication.state === \"published\").length;\n return Object.freeze({\n runId: text(row, \"run_id\"),\n invocationId: text(row, \"invocation_id\"),\n experimentId: text(row, \"experiment_id\"),\n startedAt: text(row, \"started_at\"),\n ...(closeVisible ? { completedAt: text(row, \"completed_at\") } : {}),\n state,\n writerGeneration: text(row, closeVisible ? \"current_writer_generation\" : \"initial_writer_generation\"),\n createdRevision: integer(row, \"created_revision\"),\n ...(closeVisible && closeRevision !== undefined ? { closeRevision } : {}),\n expected: slots.length,\n published,\n missing: slots.length - published,\n slots: Object.freeze(slots),\n });\n}\nexport function readRunResourceOnConnection(connection: RecordDatabase, runId: string, requestedCutoff?: PublicationCutoff): ReadableRunResource | undefined {\n requireIdentity(runId, \"runId\");\n return readRunAtCutoff(connection, runId, requireCutoff(connection, requestedCutoff));\n}\nexport function listRunResourcesOnConnection(connection: RecordDatabase, input: {\n readonly cutoff?: PublicationCutoff;\n readonly invocationId?: string;\n readonly afterRunId?: string;\n readonly pageSize?: number;\n} = {}): RunResourcePage {\n const cutoff = requireCutoff(connection, input.cutoff);\n const afterRunId = input.afterRunId ?? \"\";\n const pageSize = input.pageSize ?? 100;\n if (input.invocationId !== undefined)\n requireIdentity(input.invocationId, \"invocationId\");\n if (!Number.isSafeInteger(pageSize) || pageSize < 1 || pageSize > 256)\n throw invalid(\"Run page size must be between 1 and 256\");\n const rows = (input.invocationId === undefined\n ? recordStatement(connection, `SELECT r.run_id FROM ne18_run_resources r\n LEFT JOIN ne18_run_deletion_tombstones d ON d.run_id=r.run_id\n WHERE r.created_revision<=? AND (d.deletion_revision IS NULL OR d.deletion_revision>?) AND r.run_id>?\n ORDER BY r.run_id LIMIT ?`).all(cutoff.revision, cutoff.revision, afterRunId, pageSize + 1)\n : recordStatement(connection, `SELECT r.run_id FROM ne18_run_resources r\n LEFT JOIN ne18_run_deletion_tombstones d ON d.run_id=r.run_id\n WHERE r.created_revision<=? AND (d.deletion_revision IS NULL OR d.deletion_revision>?) AND r.invocation_id=? AND r.run_id>?\n ORDER BY r.run_id LIMIT ?`).all(cutoff.revision, cutoff.revision, input.invocationId, afterRunId, pageSize + 1)) as readonly Row[];\n const selected = rows.slice(0, pageSize);\n const runs = selected.map((row) => readRunAtCutoff(connection, text(row, \"run_id\"), cutoff)).filter((run): run is ReadableRunResource => run !== undefined);\n return Object.freeze({\n cutoff,\n runs: Object.freeze(runs),\n nextAfterRunId: rows.length > pageSize && selected.length > 0 ? text(selected.at(-1)!, \"run_id\") : null,\n });\n}\nexport function readPublishedAttemptOnConnection(connection: RecordDatabase, attemptId: string, requestedCutoff?: PublicationCutoff): PublishedAttempt | undefined {\n requireIdentity(attemptId, \"attemptId\");\n const cutoff = requireCutoff(connection, requestedCutoff);\n const row = recordStatement(connection, `SELECT a.attempt_id,a.attempt_locator,a.origin_run_id,a.origin_slot_id,a.closure_payload,\n a.closure_digest,a.published_revision,d.deletion_revision FROM ne18_attempt_publications a\n LEFT JOIN ne18_run_deletion_tombstones d ON d.run_id=a.origin_run_id WHERE a.attempt_id=?`).get(attemptId) as Row | undefined;\n if (row === undefined || integer(row, \"published_revision\") > cutoff.revision ||\n row.deletion_revision !== null && row.deletion_revision !== undefined && integer(row, \"deletion_revision\") <= cutoff.revision) {\n return undefined;\n }\n const revision = integer(row, \"published_revision\");\n const originRunId = text(row, \"origin_run_id\");\n return Object.freeze({\n attemptId: text(row, \"attempt_id\"),\n attemptLocator: text(row, \"attempt_locator\"),\n originRunId,\n originSlotId: text(row, \"origin_slot_id\"),\n publicationIdentity: Object.freeze({ originRunId, attemptId: text(row, \"attempt_id\"), revision }),\n closureBytes: bytes(row, \"closure_payload\"),\n closureDigest: text(row, \"closure_digest\"),\n });\n}\nconst runStorageErrorCodes = new Set<RunStorageErrorCode>([\n \"run-not-found\", \"run-not-active\", \"writer-generation-mismatch\", \"slot-not-found\", \"slot-already-bound\",\n \"attempt-already-published\", \"attempt-not-published\", \"source-run-deleted\", \"absence-coverage-invalid\",\n \"run-state-mismatch\", \"run-delete-reference-conflict\", \"recovery-evidence-required\",\n \"publication-cutoff-restart-required\", \"run-storage-invalid\",\n]);\nfunction decodeWorkerRunError(cause: unknown): unknown {\n if (!(cause instanceof SqliteRecordError) || !(cause.cause instanceof Error) ||\n !runStorageErrorCodes.has(cause.cause.name as RunStorageErrorCode))\n return cause;\n const details = Reflect.get(cause.cause, \"details\");\n return new RunStorageError(cause.cause.name as RunStorageErrorCode, cause.cause.message, Array.isArray(details) ? details : []);\n}\nfunction runCommand<A extends import(\"../../record/sqlite/worker-protocol.ts\").StorageWorkerResult>(recordStorageRoot: string, command: import(\"../../record/sqlite/worker-protocol.ts\").RunCommand): Effect.Effect<A, unknown, ProjectStateDatabase> {\n return Effect.flatMap(ProjectStateDatabase, (database) => Effect.flatMap(database.bind(recordStorageRoot), (facets) => Effect.tryPromise({ try: () => facets.run.execute<A>(command), catch: decodeWorkerRunError })));\n}\nexport function currentPublicationCutoff(recordStorageRoot: string) { return runCommand<PublicationCutoff>(recordStorageRoot, { _tag: \"run-cutoff\" }); }\nexport function createRunResource(recordStorageRoot: string, input: CreateRunResourceInput) { return runCommand<RunMutationReceipt>(recordStorageRoot, { _tag: \"run-create\", input }); }\nexport function publishOriginAttempt(recordStorageRoot: string, input: PublishOriginAttemptInput) { return runCommand<AttemptPublicationReceipt>(recordStorageRoot, { _tag: \"run-publish-attempt\", input }); }\nexport function bindAttemptReference(recordStorageRoot: string, input: BindAttemptReferenceInput) { return runCommand<ReferenceBindingReceipt>(recordStorageRoot, { _tag: \"run-bind-reference\", input }); }\nexport function closeRunResource(recordStorageRoot: string, input: CloseRunResourceInput) { return runCommand<RunMutationReceipt>(recordStorageRoot, { _tag: \"run-close\", input }); }\nexport function recoverRunResource(recordStorageRoot: string, input: RecoverRunResourceInput) { return runCommand<RecoverRunReceipt>(recordStorageRoot, { _tag: \"run-recover\", input }); }\nexport function deleteRunResource(recordStorageRoot: string, input: DeleteRunResourceInput) { return runCommand<DeleteRunReceipt>(recordStorageRoot, { _tag: \"run-delete\", input }); }\nexport function readRunResource(recordStorageRoot: string, runId: string, cutoff?: PublicationCutoff) {\n return runCommand<ReadableRunResource | undefined>(recordStorageRoot, { _tag: \"run-read\", runId, ...(cutoff === undefined ? {} : { cutoff }) });\n}\nexport function listRunResources(recordStorageRoot: string, input?: Parameters<typeof listRunResourcesOnConnection>[1]) {\n return runCommand<RunResourcePage>(recordStorageRoot, { _tag: \"run-list\", ...(input === undefined ? {} : { input }) });\n}\nexport function readPublishedAttempt(recordStorageRoot: string, attemptId: string, cutoff?: PublicationCutoff) {\n return runCommand<PublishedAttempt | undefined>(recordStorageRoot, { _tag: \"run-read-attempt\", attemptId, ...(cutoff === undefined ? {} : { cutoff }) });\n}\n/** Convert unexpected SQLite constraint failures into the internal storage vocabulary. */\nexport function asRunStorageError(cause: unknown): RunStorageError {\n if (cause instanceof RunStorageError)\n return cause;\n if (cause instanceof Error)\n return invalid(cause.message);\n throw sqliteError(\"record-sqlite-error\", \"run-storage\", \"Run storage failed with a non-Error defect\", cause);\n}\n"]}
|
|
@@ -52,6 +52,15 @@ const PERSISTED_ITEM_LIMITS = Object.freeze({
|
|
|
52
52
|
const exactDecode = effect_1.Schema.decodeUnknownResult(schema_ts_1.ExecutionTraceInputSchema, {
|
|
53
53
|
onExcessProperty: "error",
|
|
54
54
|
});
|
|
55
|
+
const formatSchemaIssues = effect_1.SchemaIssue.makeFormatterStandardSchemaV1();
|
|
56
|
+
function invalidEnvelope(error) {
|
|
57
|
+
const displayIssue = formatSchemaIssues(error.issue).issues.find((issue) => issue.path?.[0] === "events" && issue.path?.[2] === "display");
|
|
58
|
+
if (displayIssue !== undefined) {
|
|
59
|
+
const path = (displayIssue.path ?? []).map((part) => typeof part === "number" ? `[${part}]` : `.${String(part)}`).join("").replace(/^\./u, "");
|
|
60
|
+
return traceError("execution-display-invalid", `${path}: invalid display block shape.`);
|
|
61
|
+
}
|
|
62
|
+
return traceError("execution-trace-invalid", "Execution trace envelope is invalid.");
|
|
63
|
+
}
|
|
55
64
|
const utf8 = new TextEncoder();
|
|
56
65
|
function traceError(code, message) {
|
|
57
66
|
return new AdapterExecutionTraceError({ code, message });
|
|
@@ -191,6 +200,96 @@ function parseArtifactJson(artifact) {
|
|
|
191
200
|
}
|
|
192
201
|
return parsed;
|
|
193
202
|
}
|
|
203
|
+
function displayInvalid(eventIndex, blockIndex, field, reason) {
|
|
204
|
+
const path = blockIndex === undefined ? `events[${eventIndex}].display` : `events[${eventIndex}].display[${blockIndex}]`;
|
|
205
|
+
return traceError("execution-display-invalid", `${path}.${field}: ${reason}`);
|
|
206
|
+
}
|
|
207
|
+
function checkDisplayString(value, eventIndex, blockIndex, field, options) {
|
|
208
|
+
if ((0, schema_ts_1.displayTextHasForbiddenCharacter)(value)) {
|
|
209
|
+
throw displayInvalid(eventIndex, blockIndex, field, "contains a control or bidirectional formatting character.");
|
|
210
|
+
}
|
|
211
|
+
if (options.singleLine === true && value.includes("\n")) {
|
|
212
|
+
throw displayInvalid(eventIndex, blockIndex, field, "must not contain a line break.");
|
|
213
|
+
}
|
|
214
|
+
if (options.maximumBytes !== undefined && utf8.encode(value).byteLength > options.maximumBytes) {
|
|
215
|
+
throw displayInvalid(eventIndex, blockIndex, field, `exceeds ${options.maximumBytes} UTF-8 bytes.`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/** Validates one event's display blocks against the closed vocabulary limits. */
|
|
219
|
+
function verifyDisplay(event, eventIndex) {
|
|
220
|
+
const display = event.display;
|
|
221
|
+
if (display === undefined)
|
|
222
|
+
return;
|
|
223
|
+
const limits = schema_ts_1.ExecutionTraceRecordLimits;
|
|
224
|
+
if (display.length === 0)
|
|
225
|
+
throw displayInvalid(eventIndex, undefined, "length", "must not be empty; omit display instead.");
|
|
226
|
+
if (display.length > limits.maximumDisplayBlocksPerEvent) {
|
|
227
|
+
throw displayInvalid(eventIndex, undefined, "length", `exceeds ${limits.maximumDisplayBlocksPerEvent} blocks.`);
|
|
228
|
+
}
|
|
229
|
+
for (const [blockIndex, block] of display.entries()) {
|
|
230
|
+
switch (block.kind) {
|
|
231
|
+
case "text":
|
|
232
|
+
checkDisplayString(block.text, eventIndex, blockIndex, "text", {});
|
|
233
|
+
break;
|
|
234
|
+
case "message":
|
|
235
|
+
checkDisplayString(block.text, eventIndex, blockIndex, "text", {});
|
|
236
|
+
if (block.speaker !== undefined) {
|
|
237
|
+
checkDisplayString(block.speaker, eventIndex, blockIndex, "speaker", { maximumBytes: limits.maximumDisplayLabelBytes, singleLine: true });
|
|
238
|
+
}
|
|
239
|
+
break;
|
|
240
|
+
case "fields":
|
|
241
|
+
if (block.fields.length > limits.maximumDisplayFields) {
|
|
242
|
+
throw displayInvalid(eventIndex, blockIndex, "fields", `exceeds ${limits.maximumDisplayFields} entries.`);
|
|
243
|
+
}
|
|
244
|
+
for (const [fieldIndex, field] of block.fields.entries()) {
|
|
245
|
+
checkDisplayString(field.label, eventIndex, blockIndex, `fields[${fieldIndex}].label`, { maximumBytes: limits.maximumDisplayLabelBytes, singleLine: true });
|
|
246
|
+
if (typeof field.value === "string")
|
|
247
|
+
checkDisplayString(field.value, eventIndex, blockIndex, `fields[${fieldIndex}].value`, {});
|
|
248
|
+
}
|
|
249
|
+
break;
|
|
250
|
+
case "code":
|
|
251
|
+
checkDisplayString(block.text, eventIndex, blockIndex, "text", {});
|
|
252
|
+
if (block.language !== undefined) {
|
|
253
|
+
checkDisplayString(block.language, eventIndex, blockIndex, "language", { maximumBytes: limits.maximumDisplayLabelBytes, singleLine: true });
|
|
254
|
+
}
|
|
255
|
+
break;
|
|
256
|
+
case "image":
|
|
257
|
+
checkDisplayString(block.alt, eventIndex, blockIndex, "alt", { maximumBytes: limits.maximumDisplayAltBytes, singleLine: true });
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
if (utf8.encode((0, canonical_ts_1.canonicalRecordJsonText)(display)).byteLength > limits.maximumDisplayBytesPerEvent) {
|
|
262
|
+
throw displayInvalid(eventIndex, undefined, "length", `exceeds ${limits.maximumDisplayBytesPerEvent} UTF-8 bytes.`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/** Fixes each image block to the accepted attachment descriptor. */
|
|
266
|
+
function durableDisplay(display, eventIndex, byArtifactId) {
|
|
267
|
+
if (display === undefined)
|
|
268
|
+
return undefined;
|
|
269
|
+
const blocks = display.map((block, blockIndex) => {
|
|
270
|
+
if (block.kind !== "image")
|
|
271
|
+
return Object.freeze(structuredClone(block));
|
|
272
|
+
const artifact = byArtifactId.get(block.artifactId);
|
|
273
|
+
if (artifact === undefined) {
|
|
274
|
+
throw displayInvalid(eventIndex, blockIndex, "artifactId", `${block.artifactId} is not attached to this Attempt.`);
|
|
275
|
+
}
|
|
276
|
+
if (!schema_ts_1.ExecutionDisplayImageMediaTypes.has(artifact.mediaType)) {
|
|
277
|
+
throw displayInvalid(eventIndex, blockIndex, "artifactId", `${block.artifactId} is ${artifact.mediaType}, not a supported image type.`);
|
|
278
|
+
}
|
|
279
|
+
return Object.freeze({
|
|
280
|
+
kind: "image",
|
|
281
|
+
artifactId: block.artifactId,
|
|
282
|
+
alt: block.alt,
|
|
283
|
+
mediaType: artifact.mediaType,
|
|
284
|
+
byteLength: artifact.byteLength,
|
|
285
|
+
sha256: artifact.sha256,
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
if (utf8.encode((0, canonical_ts_1.canonicalRecordJsonText)(blocks)).byteLength > schema_ts_1.ExecutionTraceRecordLimits.maximumDisplayBytesPerEvent) {
|
|
289
|
+
throw displayInvalid(eventIndex, undefined, "length", `exceeds ${schema_ts_1.ExecutionTraceRecordLimits.maximumDisplayBytesPerEvent} UTF-8 bytes.`);
|
|
290
|
+
}
|
|
291
|
+
return Object.freeze(blocks);
|
|
292
|
+
}
|
|
194
293
|
function verifySemantics(input) {
|
|
195
294
|
const limits = schema_ts_1.ExecutionTraceRecordLimits;
|
|
196
295
|
if (input.events.length > limits.maximumEvents) {
|
|
@@ -205,7 +304,8 @@ function verifySemantics(input) {
|
|
|
205
304
|
const eventKeys = new Set();
|
|
206
305
|
const causeEdges = new Map();
|
|
207
306
|
const clockUnits = new Map();
|
|
208
|
-
for (const event of input.events) {
|
|
307
|
+
for (const [eventIndex, event] of input.events.entries()) {
|
|
308
|
+
verifyDisplay(event, eventIndex);
|
|
209
309
|
if (eventKeys.has(event.key))
|
|
210
310
|
throw traceError("execution-trace-invalid", "Execution trace event keys must be unique.");
|
|
211
311
|
eventKeys.add(event.key);
|
|
@@ -291,6 +391,16 @@ function createAdapterExecutionTraceCollector(artifacts) {
|
|
|
291
391
|
throw traceError("execution-trace-closed", "Execution trace collection is closed.");
|
|
292
392
|
const canonical = (0, canonical_ts_1.canonicalizeRecordJson)(input, INPUT_LIMITS);
|
|
293
393
|
if (effect_1.Result.isFailure(canonical)) {
|
|
394
|
+
if (canonical.failure.path[0] === "events" && canonical.failure.path[2] === "display") {
|
|
395
|
+
const path = canonical.failure.path.map((part) => /^\d+$/u.test(part) ? `[${part}]` : `.${part}`).join("").replace(/^\./u, "");
|
|
396
|
+
throw traceError("execution-display-invalid", `${path}: display must contain finite plain JSON and valid UTF-8 text within its limits.`);
|
|
397
|
+
}
|
|
398
|
+
const shape = exactDecode(input);
|
|
399
|
+
if (effect_1.Result.isFailure(shape)) {
|
|
400
|
+
const error = invalidEnvelope(shape.failure);
|
|
401
|
+
if (error.code === "execution-display-invalid")
|
|
402
|
+
throw error;
|
|
403
|
+
}
|
|
294
404
|
throw traceError(canonical.failure.code === "record-json-limit-exceeded" ? "execution-trace-limit" : "execution-trace-invalid", "Execution trace must be finite plain JSON within the 64 MiB and depth limits.");
|
|
295
405
|
}
|
|
296
406
|
const canonicalText = (0, canonical_ts_1.canonicalRecordJsonText)(canonical.success);
|
|
@@ -298,7 +408,7 @@ function createAdapterExecutionTraceCollector(artifacts) {
|
|
|
298
408
|
const canonicalInputDigest = digest(canonicalText);
|
|
299
409
|
const decoded = exactDecode(canonical.success);
|
|
300
410
|
if (effect_1.Result.isFailure(decoded))
|
|
301
|
-
throw
|
|
411
|
+
throw invalidEnvelope(decoded.failure);
|
|
302
412
|
const snapshot = decoded.success;
|
|
303
413
|
verifySemantics(snapshot);
|
|
304
414
|
const prior = accepted.get(snapshot.traceId);
|
|
@@ -408,6 +518,10 @@ function createAdapterExecutionTraceCollector(artifacts) {
|
|
|
408
518
|
: { relation: link.relation, unresolved: Object.freeze({ ...link.unresolved }) }))),
|
|
409
519
|
evidence: Object.freeze(durableEvidence),
|
|
410
520
|
scopeMemberships: Object.freeze((event.scopeMemberships ?? []).map((membership) => Object.freeze({ ...membership }))),
|
|
521
|
+
...(() => {
|
|
522
|
+
const display = durableDisplay(event.display, ordinal, byArtifactId);
|
|
523
|
+
return display === undefined ? {} : { display };
|
|
524
|
+
})(),
|
|
411
525
|
});
|
|
412
526
|
records.push(durable);
|
|
413
527
|
receiptEvents.push(Object.freeze({
|
|
@@ -542,6 +656,15 @@ function validateExecutionTracePublication(snapshot, artifacts) {
|
|
|
542
656
|
causeEdges.set(record.key, targets);
|
|
543
657
|
}
|
|
544
658
|
}
|
|
659
|
+
for (const block of record.display ?? []) {
|
|
660
|
+
if (block.kind !== "image")
|
|
661
|
+
continue;
|
|
662
|
+
const artifact = byArtifactId.get(block.artifactId);
|
|
663
|
+
if (artifact === undefined || artifact.sha256 !== block.sha256 ||
|
|
664
|
+
artifact.byteLength !== block.byteLength || artifact.mediaType !== block.mediaType) {
|
|
665
|
+
throw traceError("execution-trace-evidence-missing", "Execution display image artifact closure is invalid.");
|
|
666
|
+
}
|
|
667
|
+
}
|
|
545
668
|
for (const evidence of record.evidence) {
|
|
546
669
|
const artifact = byArtifactId.get(evidence.artifactId);
|
|
547
670
|
if (artifact === undefined || artifact.sha256 !== evidence.artifactSha256) {
|