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
|
@@ -11,6 +11,7 @@ class ProjectStateDatabase extends effect_1.Context.Service()("@niceeval/record/
|
|
|
11
11
|
exports.ProjectStateDatabase = ProjectStateDatabase;
|
|
12
12
|
function makeProjectStateResource() {
|
|
13
13
|
let invocationPortableClosed = false;
|
|
14
|
+
let closing;
|
|
14
15
|
let state = { kind: "unbound" };
|
|
15
16
|
const currentState = () => state;
|
|
16
17
|
const open = async (portableRoot) => {
|
|
@@ -68,10 +69,14 @@ function makeProjectStateResource() {
|
|
|
68
69
|
if (state.kind === "open")
|
|
69
70
|
return facets(state.client);
|
|
70
71
|
if (state.kind === "opening") {
|
|
71
|
-
|
|
72
|
+
const client = await state.client;
|
|
73
|
+
if (currentState().kind === "closed")
|
|
74
|
+
throw new Error("ProjectStateDatabase is closed");
|
|
75
|
+
return facets(client);
|
|
72
76
|
}
|
|
73
|
-
const
|
|
74
|
-
|
|
77
|
+
const initialization = new AbortController();
|
|
78
|
+
const pending = (0, client_ts_1.makeStorageWorkerClient)(portableRoot, undefined, undefined, initialization.signal);
|
|
79
|
+
state = { kind: "opening", root: portableRoot, client: pending, initialization };
|
|
75
80
|
try {
|
|
76
81
|
const client = await pending;
|
|
77
82
|
if (currentState().kind === "closed") {
|
|
@@ -87,16 +92,32 @@ function makeProjectStateResource() {
|
|
|
87
92
|
throw cause;
|
|
88
93
|
}
|
|
89
94
|
};
|
|
90
|
-
const close =
|
|
95
|
+
const close = (expectedRoot) => {
|
|
91
96
|
const current = state;
|
|
92
97
|
if (expectedRoot !== undefined && current.kind !== "unbound" && current.kind !== "closed" && current.root !== expectedRoot) {
|
|
93
|
-
|
|
98
|
+
return Promise.reject(new Error("ProjectStateDatabase is bound to another canonical root"));
|
|
94
99
|
}
|
|
100
|
+
if (closing !== undefined)
|
|
101
|
+
return closing;
|
|
95
102
|
state = { kind: "closed" };
|
|
96
|
-
|
|
97
|
-
await current.client.close();
|
|
103
|
+
const reason = new Error("ProjectStateDatabase closed while its storage worker was opening");
|
|
98
104
|
if (current.kind === "opening")
|
|
99
|
-
|
|
105
|
+
current.initialization.abort(reason);
|
|
106
|
+
closing = (async () => {
|
|
107
|
+
if (current.kind === "open")
|
|
108
|
+
await current.client.close();
|
|
109
|
+
if (current.kind === "opening") {
|
|
110
|
+
try {
|
|
111
|
+
await (await current.client).close();
|
|
112
|
+
}
|
|
113
|
+
catch (cause) {
|
|
114
|
+
// Only our initialization cancellation is expected during release.
|
|
115
|
+
if (cause !== reason)
|
|
116
|
+
throw cause;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
})();
|
|
120
|
+
return closing;
|
|
100
121
|
};
|
|
101
122
|
return {
|
|
102
123
|
service: ProjectStateDatabase.of({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-state-database.js","sourceRoot":"","sources":["project-state-database.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context, Effect, Layer } from \"effect\";\nimport { SqliteRecordError } from \"./errors.ts\";\nimport { makeStorageWorkerClient, type StorageWorkerClient } from \"./client.ts\";\nimport { finalizeInvocationPortable, recordSqlitePath } from \"./database.ts\";\nimport type { KeptSandboxLeaseRow, KeptSandboxRow, SharedStateGenerationRow, TeardownObligationRow, } from \"./registry-repository.ts\";\nconst OPERATION_DEADLINE_MS = 5000;\ntype CommandInput<Tag extends string, Input extends object = object> = Input & {\n readonly _tag: Tag;\n};\nexport interface TeardownFacet {\n readonly put: (input: CommandInput<\"teardown-put\", {\n readonly id: string;\n readonly experimentId: string;\n readonly ownerPid: number;\n readonly ownerHost: string;\n readonly payload: Uint8Array;\n }>) => Promise<void>;\n readonly get: (id: string) => Promise<TeardownObligationRow | undefined>;\n readonly list: () => Promise<readonly TeardownObligationRow[]>;\n readonly claim: (id: string) => Promise<boolean>;\n}\nexport interface SharedStateFacet {\n readonly list: (key: string) => Promise<readonly SharedStateGenerationRow[]>;\n readonly append: (input: CommandInput<\"shared-append\", {\n readonly key: string;\n readonly expectedGeneration: number;\n readonly generation: number;\n readonly parentGeneration: number;\n readonly kind: \"active\" | \"recovering\" | \"free\";\n readonly ownerToken: string;\n readonly ownerPid: number;\n readonly ownerHost: string;\n readonly ownerProcessIdentity: string;\n readonly heartbeatAt: string;\n readonly payload: Uint8Array;\n }>) => Promise<boolean>;\n readonly heartbeat: (input: CommandInput<\"shared-heartbeat\", {\n readonly key: string;\n readonly generation: number;\n readonly ownerToken: string;\n readonly heartbeatAt: string;\n }>) => Promise<boolean>;\n}\nexport interface KeepFacet {\n readonly put: (input: CommandInput<\"keep-put\", {\n readonly id: string;\n readonly provider: string;\n readonly sandboxId: string;\n readonly keptAt: string;\n readonly payload: Uint8Array;\n }>) => Promise<void>;\n readonly get: (id: string) => Promise<KeptSandboxRow | undefined>;\n readonly list: () => Promise<readonly KeptSandboxRow[]>;\n readonly update: (id: string, payload: Uint8Array) => Promise<boolean>;\n readonly delete: (id: string) => Promise<void>;\n readonly getLease: (id: string) => Promise<KeptSandboxLeaseRow | undefined>;\n readonly acquireLease: (input: CommandInput<\"keep-lease-acquire\", {\n readonly id: string;\n readonly token: string;\n readonly holder: string;\n readonly operation: string;\n readonly acquiredAt: string;\n readonly ttlMs: number;\n readonly ownerPid: number;\n readonly ownerHost: string;\n readonly ownerProcessIdentity: string;\n }>) => Promise<{\n readonly acquired: true;\n readonly generation: number;\n } | {\n readonly acquired: false;\n readonly lease: KeptSandboxLeaseRow;\n }>;\n readonly releaseLease: (input: CommandInput<\"keep-lease-release\", {\n readonly id: string;\n readonly generation: number;\n readonly token: string;\n readonly ownerPid: number;\n readonly ownerHost: string;\n readonly ownerProcessIdentity: string;\n }>) => Promise<boolean>;\n}\nexport interface CaseCoordinationFacet {\n readonly execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"./worker-protocol.ts\").CaseCoordinationCommand) => Promise<A>;\n}\nexport interface InvocationFacet {\n readonly execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"./worker-protocol.ts\").InvocationCommand) => Promise<A>;\n}\nexport interface RunFacet {\n readonly execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"./worker-protocol.ts\").RunCommand) => Promise<A>;\n}\nexport interface AdmissionFacet {\n readonly execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"../../coordination/platform/node-record-admission-protocol.ts\").AdmissionInput) => Promise<A>;\n}\nexport interface ProjectStateFacets {\n readonly record: StorageWorkerClient;\n readonly teardown: TeardownFacet;\n readonly sharedState: SharedStateFacet;\n readonly keep: KeepFacet;\n readonly caseCoordination: CaseCoordinationFacet;\n readonly invocation: InvocationFacet;\n readonly run: RunFacet;\n readonly admission: AdmissionFacet;\n}\nexport interface ProjectStateDatabaseService {\n /** Bind this composition's single storage worker to its one canonical root. */\n readonly bind: (portableRoot: string) => Effect.Effect<ProjectStateFacets, SqliteRecordError>;\n /** Invocation owner only: stop operational commands before its portable gate. */\n readonly closeOperational: (portableRoot: string) => Effect.Effect<void, SqliteRecordError>;\n /** Invocation outer owner only: operational shutdown followed by the unique portable gate. */\n readonly closeInvocationPortable: (portableRoot: string) => Effect.Effect<void, SqliteRecordError>;\n}\nexport class ProjectStateDatabase extends Context.Service<ProjectStateDatabase, ProjectStateDatabaseService>()(\"@niceeval/record/ProjectStateDatabase\") {\n}\ninterface ProjectStateResource {\n readonly service: ProjectStateDatabaseService;\n readonly close: () => Promise<void>;\n}\nfunction makeProjectStateResource(): ProjectStateResource {\n let invocationPortableClosed = false;\n let state: {\n readonly kind: \"unbound\";\n } | {\n readonly kind: \"opening\";\n readonly root: string;\n readonly client: Promise<StorageWorkerClient>;\n } | {\n readonly kind: \"open\";\n readonly root: string;\n readonly client: StorageWorkerClient;\n } | {\n readonly kind: \"closed\";\n } = { kind: \"unbound\" };\n const currentState = () => state;\n const open = async (portableRoot: string): Promise<ProjectStateFacets> => {\n if (state.kind === \"closed\")\n throw new Error(\"ProjectStateDatabase is closed\");\n if (state.kind !== \"unbound\" && state.root !== portableRoot) {\n throw new Error(\"ProjectStateDatabase is already bound to another canonical root\");\n }\n const facets = (client: StorageWorkerClient): ProjectStateFacets => {\n const execute = <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"./worker-protocol.ts\").RegistryCommand) => client.registry<A>(command, Date.now() + OPERATION_DEADLINE_MS);\n const teardown: TeardownFacet = Object.freeze({\n put: (input: Parameters<TeardownFacet[\"put\"]>[0]) => execute<undefined>(input),\n get: (id: string) => execute<TeardownObligationRow | undefined>({ _tag: \"teardown-get\", id }),\n list: () => execute<readonly TeardownObligationRow[]>({ _tag: \"teardown-list\" }),\n claim: (id: string) => execute<boolean>({ _tag: \"teardown-claim\", id }),\n });\n const sharedState: SharedStateFacet = Object.freeze({\n list: (key: string) => execute<readonly SharedStateGenerationRow[]>({ _tag: \"shared-list\", key }),\n append: (input: Parameters<SharedStateFacet[\"append\"]>[0]) => execute<boolean>(input),\n heartbeat: (input: Parameters<SharedStateFacet[\"heartbeat\"]>[0]) => execute<boolean>(input),\n });\n const keep: KeepFacet = Object.freeze({\n put: (input: Parameters<KeepFacet[\"put\"]>[0]) => execute<undefined>(input),\n get: (id: string) => execute<KeptSandboxRow | undefined>({ _tag: \"keep-get\", id }),\n list: () => execute<readonly KeptSandboxRow[]>({ _tag: \"keep-list\" }),\n update: (id: string, payload: Uint8Array) => execute<boolean>({ _tag: \"keep-update\", id, payload }),\n delete: (id: string) => execute<undefined>({ _tag: \"keep-delete\", id }),\n getLease: (id: string) => execute<KeptSandboxLeaseRow | undefined>({ _tag: \"keep-lease-get\", id }),\n acquireLease: (input: Parameters<KeepFacet[\"acquireLease\"]>[0]) => execute<{\n readonly acquired: true;\n readonly generation: number;\n } | {\n readonly acquired: false;\n readonly lease: KeptSandboxLeaseRow;\n }>(input),\n releaseLease: (input: Parameters<KeepFacet[\"releaseLease\"]>[0]) => execute<boolean>(input),\n });\n const caseCoordination: CaseCoordinationFacet = Object.freeze({\n execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"./worker-protocol.ts\").CaseCoordinationCommand) => client.caseCoordination<A>(command),\n });\n const invocation: InvocationFacet = Object.freeze({\n execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"./worker-protocol.ts\").InvocationCommand) => client.invocation<A>(command),\n });\n const run: RunFacet = Object.freeze({\n execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"./worker-protocol.ts\").RunCommand) => client.run<A>(command),\n });\n const admission: AdmissionFacet = Object.freeze({\n execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"../../coordination/platform/node-record-admission-protocol.ts\").AdmissionInput) => client.admission<A>(command),\n });\n return Object.freeze({\n record: client,\n teardown,\n sharedState,\n keep,\n caseCoordination,\n invocation,\n run,\n admission,\n });\n };\n if (state.kind === \"open\")\n return facets(state.client);\n if (state.kind === \"opening\") {\n return facets(await state.client);\n }\n const pending = makeStorageWorkerClient(portableRoot);\n state = { kind: \"opening\", root: portableRoot, client: pending };\n try {\n const client = await pending;\n if (currentState().kind === \"closed\") {\n await client.close();\n throw new Error(\"ProjectStateDatabase closed while its storage worker was opening\");\n }\n state = { kind: \"open\", root: portableRoot, client };\n return facets(client);\n }\n catch (cause) {\n if (currentState().kind !== \"closed\")\n state = { kind: \"unbound\" };\n throw cause;\n }\n };\n const close = async (expectedRoot?: string): Promise<void> => {\n const current = state;\n if (expectedRoot !== undefined && current.kind !== \"unbound\" && current.kind !== \"closed\" && current.root !== expectedRoot) {\n throw new Error(\"ProjectStateDatabase is bound to another canonical root\");\n }\n state = { kind: \"closed\" };\n if (current.kind === \"open\")\n await current.client.close();\n if (current.kind === \"opening\")\n await (await current.client).close();\n };\n return {\n service: ProjectStateDatabase.of({\n bind: (portableRoot) => Effect.tryPromise({\n try: () => open(portableRoot),\n catch: (cause) => cause instanceof SqliteRecordError\n ? cause\n : new SqliteRecordError(\"record-sqlite-error\", \"bind-project-state\", \"failed to bind ProjectStateDatabase\", { cause }),\n }),\n closeOperational: (portableRoot) => Effect.tryPromise({\n try: () => close(portableRoot),\n catch: (cause) => cause instanceof SqliteRecordError\n ? cause\n : new SqliteRecordError(\"record-sqlite-error\", \"close-project-state\", \"failed to close ProjectStateDatabase operational worker\", { cause }),\n }),\n closeInvocationPortable: (portableRoot) => Effect.tryPromise({\n try: async () => {\n if (invocationPortableClosed)\n return;\n await close(portableRoot);\n // Another Invocation may still own project-local work. In that case\n // the gate atomically restores `open`; the last Invocation to close\n // will retry portability after its own terminal writes.\n finalizeInvocationPortable(recordSqlitePath(portableRoot));\n invocationPortableClosed = true;\n },\n catch: (cause) => cause instanceof SqliteRecordError\n ? cause\n : new SqliteRecordError(\"record-sqlite-error\", \"close-invocation-portable\", \"failed to close the Invocation ProjectDatabase portable gate\", { cause }),\n }),\n }),\n close,\n };\n}\nexport const ProjectStateDatabaseLive = Layer.effect(ProjectStateDatabase, Effect.acquireRelease(Effect.sync(makeProjectStateResource), (resource) => Effect.promise(() => resource.close().catch(() => undefined))).pipe(Effect.map((resource) => resource.service)));\n"]}
|
|
1
|
+
{"version":3,"file":"project-state-database.js","sourceRoot":"","sources":["project-state-database.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context, Effect, Layer } from \"effect\";\nimport { SqliteRecordError } from \"./errors.ts\";\nimport { makeStorageWorkerClient, type StorageWorkerClient } from \"./client.ts\";\nimport { finalizeInvocationPortable, recordSqlitePath } from \"./database.ts\";\nimport type { KeptSandboxLeaseRow, KeptSandboxRow, SharedStateGenerationRow, TeardownObligationRow, } from \"./registry-repository.ts\";\nconst OPERATION_DEADLINE_MS = 5000;\ntype CommandInput<Tag extends string, Input extends object = object> = Input & {\n readonly _tag: Tag;\n};\nexport interface TeardownFacet {\n readonly put: (input: CommandInput<\"teardown-put\", {\n readonly id: string;\n readonly experimentId: string;\n readonly ownerPid: number;\n readonly ownerHost: string;\n readonly payload: Uint8Array;\n }>) => Promise<void>;\n readonly get: (id: string) => Promise<TeardownObligationRow | undefined>;\n readonly list: () => Promise<readonly TeardownObligationRow[]>;\n readonly claim: (id: string) => Promise<boolean>;\n}\nexport interface SharedStateFacet {\n readonly list: (key: string) => Promise<readonly SharedStateGenerationRow[]>;\n readonly append: (input: CommandInput<\"shared-append\", {\n readonly key: string;\n readonly expectedGeneration: number;\n readonly generation: number;\n readonly parentGeneration: number;\n readonly kind: \"active\" | \"recovering\" | \"free\";\n readonly ownerToken: string;\n readonly ownerPid: number;\n readonly ownerHost: string;\n readonly ownerProcessIdentity: string;\n readonly heartbeatAt: string;\n readonly payload: Uint8Array;\n }>) => Promise<boolean>;\n readonly heartbeat: (input: CommandInput<\"shared-heartbeat\", {\n readonly key: string;\n readonly generation: number;\n readonly ownerToken: string;\n readonly heartbeatAt: string;\n }>) => Promise<boolean>;\n}\nexport interface KeepFacet {\n readonly put: (input: CommandInput<\"keep-put\", {\n readonly id: string;\n readonly provider: string;\n readonly sandboxId: string;\n readonly keptAt: string;\n readonly payload: Uint8Array;\n }>) => Promise<void>;\n readonly get: (id: string) => Promise<KeptSandboxRow | undefined>;\n readonly list: () => Promise<readonly KeptSandboxRow[]>;\n readonly update: (id: string, payload: Uint8Array) => Promise<boolean>;\n readonly delete: (id: string) => Promise<void>;\n readonly getLease: (id: string) => Promise<KeptSandboxLeaseRow | undefined>;\n readonly acquireLease: (input: CommandInput<\"keep-lease-acquire\", {\n readonly id: string;\n readonly token: string;\n readonly holder: string;\n readonly operation: string;\n readonly acquiredAt: string;\n readonly ttlMs: number;\n readonly ownerPid: number;\n readonly ownerHost: string;\n readonly ownerProcessIdentity: string;\n }>) => Promise<{\n readonly acquired: true;\n readonly generation: number;\n } | {\n readonly acquired: false;\n readonly lease: KeptSandboxLeaseRow;\n }>;\n readonly releaseLease: (input: CommandInput<\"keep-lease-release\", {\n readonly id: string;\n readonly generation: number;\n readonly token: string;\n readonly ownerPid: number;\n readonly ownerHost: string;\n readonly ownerProcessIdentity: string;\n }>) => Promise<boolean>;\n}\nexport interface CaseCoordinationFacet {\n readonly execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"./worker-protocol.ts\").CaseCoordinationCommand) => Promise<A>;\n}\nexport interface InvocationFacet {\n readonly execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"./worker-protocol.ts\").InvocationCommand) => Promise<A>;\n}\nexport interface RunFacet {\n readonly execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"./worker-protocol.ts\").RunCommand) => Promise<A>;\n}\nexport interface AdmissionFacet {\n readonly execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"../../coordination/platform/node-record-admission-protocol.ts\").AdmissionInput) => Promise<A>;\n}\nexport interface ProjectStateFacets {\n readonly record: StorageWorkerClient;\n readonly teardown: TeardownFacet;\n readonly sharedState: SharedStateFacet;\n readonly keep: KeepFacet;\n readonly caseCoordination: CaseCoordinationFacet;\n readonly invocation: InvocationFacet;\n readonly run: RunFacet;\n readonly admission: AdmissionFacet;\n}\nexport interface ProjectStateDatabaseService {\n /** Bind this composition's single storage worker to its one canonical root. */\n readonly bind: (portableRoot: string) => Effect.Effect<ProjectStateFacets, SqliteRecordError>;\n /** Invocation owner only: stop operational commands before its portable gate. */\n readonly closeOperational: (portableRoot: string) => Effect.Effect<void, SqliteRecordError>;\n /** Invocation outer owner only: operational shutdown followed by the unique portable gate. */\n readonly closeInvocationPortable: (portableRoot: string) => Effect.Effect<void, SqliteRecordError>;\n}\nexport class ProjectStateDatabase extends Context.Service<ProjectStateDatabase, ProjectStateDatabaseService>()(\"@niceeval/record/ProjectStateDatabase\") {\n}\ninterface ProjectStateResource {\n readonly service: ProjectStateDatabaseService;\n readonly close: () => Promise<void>;\n}\nfunction makeProjectStateResource(): ProjectStateResource {\n let invocationPortableClosed = false;\n let closing: Promise<void> | undefined;\n let state: {\n readonly kind: \"unbound\";\n } | {\n readonly kind: \"opening\";\n readonly root: string;\n readonly client: Promise<StorageWorkerClient>;\n readonly initialization: AbortController;\n } | {\n readonly kind: \"open\";\n readonly root: string;\n readonly client: StorageWorkerClient;\n } | {\n readonly kind: \"closed\";\n } = { kind: \"unbound\" };\n const currentState = () => state;\n const open = async (portableRoot: string): Promise<ProjectStateFacets> => {\n if (state.kind === \"closed\")\n throw new Error(\"ProjectStateDatabase is closed\");\n if (state.kind !== \"unbound\" && state.root !== portableRoot) {\n throw new Error(\"ProjectStateDatabase is already bound to another canonical root\");\n }\n const facets = (client: StorageWorkerClient): ProjectStateFacets => {\n const execute = <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"./worker-protocol.ts\").RegistryCommand) => client.registry<A>(command, Date.now() + OPERATION_DEADLINE_MS);\n const teardown: TeardownFacet = Object.freeze({\n put: (input: Parameters<TeardownFacet[\"put\"]>[0]) => execute<undefined>(input),\n get: (id: string) => execute<TeardownObligationRow | undefined>({ _tag: \"teardown-get\", id }),\n list: () => execute<readonly TeardownObligationRow[]>({ _tag: \"teardown-list\" }),\n claim: (id: string) => execute<boolean>({ _tag: \"teardown-claim\", id }),\n });\n const sharedState: SharedStateFacet = Object.freeze({\n list: (key: string) => execute<readonly SharedStateGenerationRow[]>({ _tag: \"shared-list\", key }),\n append: (input: Parameters<SharedStateFacet[\"append\"]>[0]) => execute<boolean>(input),\n heartbeat: (input: Parameters<SharedStateFacet[\"heartbeat\"]>[0]) => execute<boolean>(input),\n });\n const keep: KeepFacet = Object.freeze({\n put: (input: Parameters<KeepFacet[\"put\"]>[0]) => execute<undefined>(input),\n get: (id: string) => execute<KeptSandboxRow | undefined>({ _tag: \"keep-get\", id }),\n list: () => execute<readonly KeptSandboxRow[]>({ _tag: \"keep-list\" }),\n update: (id: string, payload: Uint8Array) => execute<boolean>({ _tag: \"keep-update\", id, payload }),\n delete: (id: string) => execute<undefined>({ _tag: \"keep-delete\", id }),\n getLease: (id: string) => execute<KeptSandboxLeaseRow | undefined>({ _tag: \"keep-lease-get\", id }),\n acquireLease: (input: Parameters<KeepFacet[\"acquireLease\"]>[0]) => execute<{\n readonly acquired: true;\n readonly generation: number;\n } | {\n readonly acquired: false;\n readonly lease: KeptSandboxLeaseRow;\n }>(input),\n releaseLease: (input: Parameters<KeepFacet[\"releaseLease\"]>[0]) => execute<boolean>(input),\n });\n const caseCoordination: CaseCoordinationFacet = Object.freeze({\n execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"./worker-protocol.ts\").CaseCoordinationCommand) => client.caseCoordination<A>(command),\n });\n const invocation: InvocationFacet = Object.freeze({\n execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"./worker-protocol.ts\").InvocationCommand) => client.invocation<A>(command),\n });\n const run: RunFacet = Object.freeze({\n execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"./worker-protocol.ts\").RunCommand) => client.run<A>(command),\n });\n const admission: AdmissionFacet = Object.freeze({\n execute: <A extends import(\"./worker-protocol.ts\").StorageWorkerResult>(command: import(\"../../coordination/platform/node-record-admission-protocol.ts\").AdmissionInput) => client.admission<A>(command),\n });\n return Object.freeze({\n record: client,\n teardown,\n sharedState,\n keep,\n caseCoordination,\n invocation,\n run,\n admission,\n });\n };\n if (state.kind === \"open\")\n return facets(state.client);\n if (state.kind === \"opening\") {\n const client = await state.client;\n if (currentState().kind === \"closed\")\n throw new Error(\"ProjectStateDatabase is closed\");\n return facets(client);\n }\n const initialization = new AbortController();\n const pending = makeStorageWorkerClient(portableRoot, undefined, undefined, initialization.signal);\n state = { kind: \"opening\", root: portableRoot, client: pending, initialization };\n try {\n const client = await pending;\n if (currentState().kind === \"closed\") {\n await client.close();\n throw new Error(\"ProjectStateDatabase closed while its storage worker was opening\");\n }\n state = { kind: \"open\", root: portableRoot, client };\n return facets(client);\n }\n catch (cause) {\n if (currentState().kind !== \"closed\")\n state = { kind: \"unbound\" };\n throw cause;\n }\n };\n const close = (expectedRoot?: string): Promise<void> => {\n const current = state;\n if (expectedRoot !== undefined && current.kind !== \"unbound\" && current.kind !== \"closed\" && current.root !== expectedRoot) {\n return Promise.reject(new Error(\"ProjectStateDatabase is bound to another canonical root\"));\n }\n if (closing !== undefined)\n return closing;\n state = { kind: \"closed\" };\n const reason = new Error(\"ProjectStateDatabase closed while its storage worker was opening\");\n if (current.kind === \"opening\")\n current.initialization.abort(reason);\n closing = (async () => {\n if (current.kind === \"open\")\n await current.client.close();\n if (current.kind === \"opening\") {\n try {\n await (await current.client).close();\n }\n catch (cause) {\n // Only our initialization cancellation is expected during release.\n if (cause !== reason)\n throw cause;\n }\n }\n })();\n return closing;\n };\n return {\n service: ProjectStateDatabase.of({\n bind: (portableRoot) => Effect.tryPromise({\n try: () => open(portableRoot),\n catch: (cause) => cause instanceof SqliteRecordError\n ? cause\n : new SqliteRecordError(\"record-sqlite-error\", \"bind-project-state\", \"failed to bind ProjectStateDatabase\", { cause }),\n }),\n closeOperational: (portableRoot) => Effect.tryPromise({\n try: () => close(portableRoot),\n catch: (cause) => cause instanceof SqliteRecordError\n ? cause\n : new SqliteRecordError(\"record-sqlite-error\", \"close-project-state\", \"failed to close ProjectStateDatabase operational worker\", { cause }),\n }),\n closeInvocationPortable: (portableRoot) => Effect.tryPromise({\n try: async () => {\n if (invocationPortableClosed)\n return;\n await close(portableRoot);\n // Another Invocation may still own project-local work. In that case\n // the gate atomically restores `open`; the last Invocation to close\n // will retry portability after its own terminal writes.\n finalizeInvocationPortable(recordSqlitePath(portableRoot));\n invocationPortableClosed = true;\n },\n catch: (cause) => cause instanceof SqliteRecordError\n ? cause\n : new SqliteRecordError(\"record-sqlite-error\", \"close-invocation-portable\", \"failed to close the Invocation ProjectDatabase portable gate\", { cause }),\n }),\n }),\n close,\n };\n}\nexport const ProjectStateDatabaseLive = Layer.effect(ProjectStateDatabase, Effect.acquireRelease(Effect.sync(makeProjectStateResource), (resource) => Effect.promise(() => resource.close().catch(() => undefined))).pipe(Effect.map((resource) => resource.service)));\n"]}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.rawRunHost = void 0;
|
|
4
|
+
// @concord-file ne-run-host-runtime
|
|
5
|
+
// @concord-implements docs/feature/run/library.md
|
|
6
|
+
// @concord-implements docs/feature/run/cli.md
|
|
7
|
+
// @concord-implements docs/feature/inspection/architecture.md
|
|
4
8
|
const node_fs_1 = require("node:fs");
|
|
5
9
|
const node_path_1 = require("node:path");
|
|
6
10
|
const effect_1 = require("effect");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { Effect, Result, Schema } from \"effect\";\nimport { RunIdSchema } from \"../../record/codec/identifiers.ts\";\nimport type { ProjectStateDatabase } from \"../../record/sqlite/project-state-database.ts\";\nimport { acquireProjectRecordReadSession } from \"../../record/sqlite/index.ts\";\nimport { EMPTY_PUBLICATION_CUTOFF_IDENTITY } from \"../protocol.ts\";\nimport { publicationCutoffIdentity, type PublicationCutoff, type ReadableRunResource, } from \"../storage/index.ts\";\nimport { sqliteRunLifecycleAdapter, type RunLifecycleAdapter, } from \"./lifecycle-adapter.ts\";\nimport { RunDeleteError, RunReadError, RunRecoverError, type RunDeleteReceipt, type RunDetail, type RunDeleteRequest, type RunGetRequest, type RunListRequest, type RunListResult, type RunRecoverReceipt, type RunRecoverRequest, type RunResult, type RunSummary, } from \"./types.ts\";\nconst CONTINUATION_PROTOCOL = \"niceeval.run-continuation/v1\";\nconst EMPTY_CUTOFF = Object.freeze({\n identity: EMPTY_PUBLICATION_CUTOFF_IDENTITY,\n revision: 0,\n});\nfunction readFailure(operation: \"list\" | \"get\", cause: unknown): RunReadError {\n const message = cause instanceof Error\n ? cause.message\n : `Run ${operation} failed.`;\n return new RunReadError({\n operation,\n code: \"run-read-failed\",\n message,\n cause,\n });\n}\nfunction recordStorageRoot(cwd: string): string {\n return resolve(cwd, \".niceeval\");\n}\nfunction recordDatabaseExists(cwd: string): boolean {\n return existsSync(resolve(recordStorageRoot(cwd), \"record.sqlite\"));\n}\ninterface RawRunHost {\n readonly list: (request: RunListRequest) => Effect.Effect<RunListResult, RunReadError, ProjectStateDatabase>;\n readonly get: (request: RunGetRequest) => Effect.Effect<RunResult, RunReadError, ProjectStateDatabase>;\n readonly delete: (request: RunDeleteRequest) => Effect.Effect<RunDeleteReceipt, RunDeleteError, ProjectStateDatabase>;\n readonly recover: (request: RunRecoverRequest) => Effect.Effect<RunRecoverReceipt, RunRecoverError, ProjectStateDatabase>;\n}\nfunction publicCutoff(cutoff: PublicationCutoff) {\n return Object.freeze({\n identity: publicationCutoffIdentity(cutoff),\n revision: cutoff.revision,\n });\n}\nfunction projectSummary(run: ReadableRunResource): RunSummary {\n return Object.freeze({\n runId: run.runId,\n invocationId: run.invocationId,\n experimentId: run.experimentId,\n state: run.state,\n startedAt: run.startedAt,\n ...(run.completedAt === undefined ? {} : { completedAt: run.completedAt }),\n coverage: Object.freeze({\n published: run.published,\n expected: run.expected,\n missing: run.missing,\n }),\n });\n}\nfunction projectDetail(run: ReadableRunResource): RunDetail {\n return Object.freeze({\n ...projectSummary(run),\n slots: Object.freeze(run.slots.map((slot) => Object.freeze({\n slotId: slot.slotId,\n evalId: slot.evalId,\n attemptOrdinal: slot.attemptOrdinal,\n executionIdentityDigest: slot.executionIdentityDigest,\n publication: slot.publication.state === \"published\"\n ? Object.freeze({\n state: \"published\" as const,\n action: slot.publication.action,\n attemptId: slot.publication.attemptId,\n attemptLocator: slot.publication.attemptLocator,\n originRunId: slot.publication.originRunId,\n originSlotId: slot.publication.originSlotId,\n })\n : slot.publication.state === \"absent\"\n ? Object.freeze({ state: \"absent\" as const, reason: slot.publication.reason })\n : Object.freeze({ state: \"pending\" as const }),\n }))),\n });\n}\nfunction encodeContinuation(cutoff: PublicationCutoff, afterRunId: string, invocationId: string | undefined): string {\n return Buffer.from(JSON.stringify([\n CONTINUATION_PROTOCOL,\n cutoff.storeGeneration,\n cutoff.revision,\n afterRunId,\n invocationId ?? null,\n ]), \"utf8\").toString(\"base64url\");\n}\nfunction decodeContinuation(token: string, invocationId: string | undefined): Effect.Effect<{\n readonly cutoff: PublicationCutoff;\n readonly afterRunId: string;\n}, RunReadError> {\n return Effect.try({\n try: () => {\n const value = JSON.parse(Buffer.from(token, \"base64url\").toString(\"utf8\")) as unknown;\n if (!Array.isArray(value) || value.length !== 5 || value[0] !== CONTINUATION_PROTOCOL ||\n typeof value[1] !== \"string\" || !Number.isSafeInteger(value[2]) || Number(value[2]) < 0 ||\n typeof value[3] !== \"string\" || (value[4] !== null && typeof value[4] !== \"string\") ||\n value[4] !== (invocationId ?? null)) {\n throw new Error(\"Run continuation binding is invalid.\");\n }\n return Object.freeze({\n cutoff: Object.freeze({ storeGeneration: value[1], revision: Number(value[2]) }),\n afterRunId: value[3],\n });\n },\n catch: (cause) => new RunReadError({\n operation: \"list\",\n code: \"run-continuation-invalid\",\n message: \"Run continuation is invalid or belongs to a different filter.\",\n cause,\n }),\n });\n}\nfunction decodeRunId(value: string): Result.Result<Schema.Schema.Type<typeof RunIdSchema>, string> {\n const decoded = Schema.decodeUnknownResult(RunIdSchema)(value);\n return Result.isFailure(decoded)\n ? Result.fail(`Invalid exact Run ID ${JSON.stringify(value)}.`)\n : Result.succeed(decoded.success);\n}\nfunction makeRunHost(lifecycle: RunLifecycleAdapter): RawRunHost {\n const list: RawRunHost[\"list\"] = (request) => {\n if (!recordDatabaseExists(request.cwd)) {\n return Effect.succeed(Object.freeze({\n operation: \"run.list\" as const,\n publicationCutoff: EMPTY_CUTOFF,\n runs: Object.freeze([]),\n }));\n }\n return Effect.gen(function* () {\n const continuation = request.continuation === undefined\n ? undefined\n : yield* decodeContinuation(request.continuation, request.invocationId);\n const session = yield* acquireProjectRecordReadSession(recordStorageRoot(request.cwd));\n const page = yield* Effect.try({ try: () => session.listRunResources({\n ...(continuation === undefined ? {} : {\n cutoff: continuation.cutoff,\n afterRunId: continuation.afterRunId,\n }),\n ...(request.invocationId === undefined ? {} : { invocationId: request.invocationId }),\n }), catch: (cause) => cause });\n return Object.freeze({\n operation: \"run.list\" as const,\n publicationCutoff: publicCutoff(page.cutoff),\n runs: Object.freeze(page.runs.map(projectSummary)),\n ...(page.nextAfterRunId === null ? {} : {\n continuation: encodeContinuation(page.cutoff, page.nextAfterRunId, request.invocationId),\n }),\n });\n }).pipe(Effect.scoped, Effect.mapError((cause) => cause instanceof RunReadError ? cause : readFailure(\"list\", cause)));\n };\n const get: RawRunHost[\"get\"] = (request) => {\n const runId = decodeRunId(request.runId);\n if (Result.isFailure(runId)) {\n return Effect.fail(new RunReadError({\n operation: \"get\",\n code: \"run-id-invalid\",\n message: runId.failure,\n }));\n }\n if (!recordDatabaseExists(request.cwd)) {\n return Effect.fail(new RunReadError({\n operation: \"get\",\n code: \"run-not-found\",\n message: `Run ${runId.success} was not found.`,\n }));\n }\n return Effect.gen(function* () {\n const root = recordStorageRoot(request.cwd);\n const session = yield* acquireProjectRecordReadSession(root);\n const cutoff = yield* Effect.try({ try: () => session.publicationCutoff(), catch: (cause) => cause });\n const run = yield* Effect.try({ try: () => session.readRunResource(runId.success), catch: (cause) => cause });\n if (run === undefined) {\n return yield* Effect.fail(new RunReadError({\n operation: \"get\",\n code: \"run-not-found\",\n message: `Run ${runId.success} was not found.`,\n }));\n }\n return Object.freeze({\n operation: \"run.get\" as const,\n publicationCutoff: publicCutoff(cutoff),\n run: projectDetail(run),\n });\n }).pipe(Effect.scoped, Effect.mapError((cause) => cause instanceof RunReadError ? cause : readFailure(\"get\", cause)));\n };\n const deleteRun: RawRunHost[\"delete\"] = (request) => {\n const runId = decodeRunId(request.runId);\n return Result.isFailure(runId)\n ? Effect.fail(new RunDeleteError({\n operation: \"delete\",\n code: \"run-id-invalid\",\n message: runId.failure,\n }))\n : lifecycle.delete({ cwd: request.cwd, runId: runId.success });\n };\n const recover: RawRunHost[\"recover\"] = (request) => {\n const runId = decodeRunId(request.runId);\n return Result.isFailure(runId)\n ? Effect.fail(new RunRecoverError({\n operation: \"recover\",\n code: \"run-id-invalid\",\n message: runId.failure,\n }))\n : lifecycle.recover({ cwd: request.cwd, runId: runId.success });\n };\n return Object.freeze({ list, get, delete: deleteRun, recover });\n}\nexport const rawRunHost: RawRunHost = makeRunHost(sqliteRunLifecycleAdapter);\n"]}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["runtime.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file ne-run-host-runtime\n// @concord-implements docs/feature/run/library.md\n// @concord-implements docs/feature/run/cli.md\n// @concord-implements docs/feature/inspection/architecture.md\nimport { existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { Effect, Result, Schema } from \"effect\";\nimport { RunIdSchema } from \"../../record/codec/identifiers.ts\";\nimport type { ProjectStateDatabase } from \"../../record/sqlite/project-state-database.ts\";\nimport { acquireProjectRecordReadSession } from \"../../record/sqlite/index.ts\";\nimport { EMPTY_PUBLICATION_CUTOFF_IDENTITY } from \"../protocol.ts\";\nimport { publicationCutoffIdentity, type PublicationCutoff, type ReadableRunResource, } from \"../storage/index.ts\";\nimport { sqliteRunLifecycleAdapter, type RunLifecycleAdapter, } from \"./lifecycle-adapter.ts\";\nimport { RunDeleteError, RunReadError, RunRecoverError, type RunDeleteReceipt, type RunDetail, type RunDeleteRequest, type RunGetRequest, type RunListRequest, type RunListResult, type RunRecoverReceipt, type RunRecoverRequest, type RunResult, type RunSummary, } from \"./types.ts\";\nconst CONTINUATION_PROTOCOL = \"niceeval.run-continuation/v1\";\nconst EMPTY_CUTOFF = Object.freeze({\n identity: EMPTY_PUBLICATION_CUTOFF_IDENTITY,\n revision: 0,\n});\nfunction readFailure(operation: \"list\" | \"get\", cause: unknown): RunReadError {\n const message = cause instanceof Error\n ? cause.message\n : `Run ${operation} failed.`;\n return new RunReadError({\n operation,\n code: \"run-read-failed\",\n message,\n cause,\n });\n}\nfunction recordStorageRoot(cwd: string): string {\n return resolve(cwd, \".niceeval\");\n}\nfunction recordDatabaseExists(cwd: string): boolean {\n return existsSync(resolve(recordStorageRoot(cwd), \"record.sqlite\"));\n}\ninterface RawRunHost {\n readonly list: (request: RunListRequest) => Effect.Effect<RunListResult, RunReadError, ProjectStateDatabase>;\n readonly get: (request: RunGetRequest) => Effect.Effect<RunResult, RunReadError, ProjectStateDatabase>;\n readonly delete: (request: RunDeleteRequest) => Effect.Effect<RunDeleteReceipt, RunDeleteError, ProjectStateDatabase>;\n readonly recover: (request: RunRecoverRequest) => Effect.Effect<RunRecoverReceipt, RunRecoverError, ProjectStateDatabase>;\n}\nfunction publicCutoff(cutoff: PublicationCutoff) {\n return Object.freeze({\n identity: publicationCutoffIdentity(cutoff),\n revision: cutoff.revision,\n });\n}\nfunction projectSummary(run: ReadableRunResource): RunSummary {\n return Object.freeze({\n runId: run.runId,\n invocationId: run.invocationId,\n experimentId: run.experimentId,\n state: run.state,\n startedAt: run.startedAt,\n ...(run.completedAt === undefined ? {} : { completedAt: run.completedAt }),\n coverage: Object.freeze({\n published: run.published,\n expected: run.expected,\n missing: run.missing,\n }),\n });\n}\nfunction projectDetail(run: ReadableRunResource): RunDetail {\n return Object.freeze({\n ...projectSummary(run),\n slots: Object.freeze(run.slots.map((slot) => Object.freeze({\n slotId: slot.slotId,\n evalId: slot.evalId,\n attemptOrdinal: slot.attemptOrdinal,\n executionIdentityDigest: slot.executionIdentityDigest,\n publication: slot.publication.state === \"published\"\n ? Object.freeze({\n state: \"published\" as const,\n action: slot.publication.action,\n attemptId: slot.publication.attemptId,\n attemptLocator: slot.publication.attemptLocator,\n originRunId: slot.publication.originRunId,\n originSlotId: slot.publication.originSlotId,\n })\n : slot.publication.state === \"absent\"\n ? Object.freeze({ state: \"absent\" as const, reason: slot.publication.reason })\n : Object.freeze({ state: \"pending\" as const }),\n }))),\n });\n}\nfunction encodeContinuation(cutoff: PublicationCutoff, afterRunId: string, invocationId: string | undefined): string {\n return Buffer.from(JSON.stringify([\n CONTINUATION_PROTOCOL,\n cutoff.storeGeneration,\n cutoff.revision,\n afterRunId,\n invocationId ?? null,\n ]), \"utf8\").toString(\"base64url\");\n}\nfunction decodeContinuation(token: string, invocationId: string | undefined): Effect.Effect<{\n readonly cutoff: PublicationCutoff;\n readonly afterRunId: string;\n}, RunReadError> {\n return Effect.try({\n try: () => {\n const value = JSON.parse(Buffer.from(token, \"base64url\").toString(\"utf8\")) as unknown;\n if (!Array.isArray(value) || value.length !== 5 || value[0] !== CONTINUATION_PROTOCOL ||\n typeof value[1] !== \"string\" || !Number.isSafeInteger(value[2]) || Number(value[2]) < 0 ||\n typeof value[3] !== \"string\" || (value[4] !== null && typeof value[4] !== \"string\") ||\n value[4] !== (invocationId ?? null)) {\n throw new Error(\"Run continuation binding is invalid.\");\n }\n return Object.freeze({\n cutoff: Object.freeze({ storeGeneration: value[1], revision: Number(value[2]) }),\n afterRunId: value[3],\n });\n },\n catch: (cause) => new RunReadError({\n operation: \"list\",\n code: \"run-continuation-invalid\",\n message: \"Run continuation is invalid or belongs to a different filter.\",\n cause,\n }),\n });\n}\nfunction decodeRunId(value: string): Result.Result<Schema.Schema.Type<typeof RunIdSchema>, string> {\n const decoded = Schema.decodeUnknownResult(RunIdSchema)(value);\n return Result.isFailure(decoded)\n ? Result.fail(`Invalid exact Run ID ${JSON.stringify(value)}.`)\n : Result.succeed(decoded.success);\n}\nfunction makeRunHost(lifecycle: RunLifecycleAdapter): RawRunHost {\n const list: RawRunHost[\"list\"] = (request) => {\n if (!recordDatabaseExists(request.cwd)) {\n return Effect.succeed(Object.freeze({\n operation: \"run.list\" as const,\n publicationCutoff: EMPTY_CUTOFF,\n runs: Object.freeze([]),\n }));\n }\n return Effect.gen(function* () {\n const continuation = request.continuation === undefined\n ? undefined\n : yield* decodeContinuation(request.continuation, request.invocationId);\n const session = yield* acquireProjectRecordReadSession(recordStorageRoot(request.cwd));\n const page = yield* Effect.try({ try: () => session.listRunResources({\n ...(continuation === undefined ? {} : {\n cutoff: continuation.cutoff,\n afterRunId: continuation.afterRunId,\n }),\n ...(request.invocationId === undefined ? {} : { invocationId: request.invocationId }),\n }), catch: (cause) => cause });\n return Object.freeze({\n operation: \"run.list\" as const,\n publicationCutoff: publicCutoff(page.cutoff),\n runs: Object.freeze(page.runs.map(projectSummary)),\n ...(page.nextAfterRunId === null ? {} : {\n continuation: encodeContinuation(page.cutoff, page.nextAfterRunId, request.invocationId),\n }),\n });\n }).pipe(Effect.scoped, Effect.mapError((cause) => cause instanceof RunReadError ? cause : readFailure(\"list\", cause)));\n };\n const get: RawRunHost[\"get\"] = (request) => {\n const runId = decodeRunId(request.runId);\n if (Result.isFailure(runId)) {\n return Effect.fail(new RunReadError({\n operation: \"get\",\n code: \"run-id-invalid\",\n message: runId.failure,\n }));\n }\n if (!recordDatabaseExists(request.cwd)) {\n return Effect.fail(new RunReadError({\n operation: \"get\",\n code: \"run-not-found\",\n message: `Run ${runId.success} was not found.`,\n }));\n }\n return Effect.gen(function* () {\n const root = recordStorageRoot(request.cwd);\n const session = yield* acquireProjectRecordReadSession(root);\n const cutoff = yield* Effect.try({ try: () => session.publicationCutoff(), catch: (cause) => cause });\n const run = yield* Effect.try({ try: () => session.readRunResource(runId.success), catch: (cause) => cause });\n if (run === undefined) {\n return yield* Effect.fail(new RunReadError({\n operation: \"get\",\n code: \"run-not-found\",\n message: `Run ${runId.success} was not found.`,\n }));\n }\n return Object.freeze({\n operation: \"run.get\" as const,\n publicationCutoff: publicCutoff(cutoff),\n run: projectDetail(run),\n });\n }).pipe(Effect.scoped, Effect.mapError((cause) => cause instanceof RunReadError ? cause : readFailure(\"get\", cause)));\n };\n const deleteRun: RawRunHost[\"delete\"] = (request) => {\n const runId = decodeRunId(request.runId);\n return Result.isFailure(runId)\n ? Effect.fail(new RunDeleteError({\n operation: \"delete\",\n code: \"run-id-invalid\",\n message: runId.failure,\n }))\n : lifecycle.delete({ cwd: request.cwd, runId: runId.success });\n };\n const recover: RawRunHost[\"recover\"] = (request) => {\n const runId = decodeRunId(request.runId);\n return Result.isFailure(runId)\n ? Effect.fail(new RunRecoverError({\n operation: \"recover\",\n code: \"run-id-invalid\",\n message: runId.failure,\n }))\n : lifecycle.recover({ cwd: request.cwd, runId: runId.success });\n };\n return Object.freeze({ list, get, delete: deleteRun, recover });\n}\nexport const rawRunHost: RawRunHost = makeRunHost(sqliteRunLifecycleAdapter);\n"]}
|
|
@@ -21,6 +21,10 @@ exports.readRunResource = readRunResource;
|
|
|
21
21
|
exports.listRunResources = listRunResources;
|
|
22
22
|
exports.readPublishedAttempt = readPublishedAttempt;
|
|
23
23
|
exports.asRunStorageError = asRunStorageError;
|
|
24
|
+
// @concord-file ne-run-storage-sqlite
|
|
25
|
+
// @concord-implements docs/feature/run/architecture.md
|
|
26
|
+
// @concord-implements docs/feature/run/lifecycle.md
|
|
27
|
+
// @concord-implements docs/feature/run-inspection/README.md
|
|
24
28
|
const node_crypto_1 = require("node:crypto");
|
|
25
29
|
const effect_1 = require("effect");
|
|
26
30
|
const locator_ts_1 = require("../../record/locator.cjs");
|
|
@@ -186,6 +190,9 @@ function validateExpectedSlots(slots) {
|
|
|
186
190
|
function currentPublicationCutoffOnConnection(connection) {
|
|
187
191
|
return requireCutoff(connection);
|
|
188
192
|
}
|
|
193
|
+
// @concord-code ne-run-create-resource
|
|
194
|
+
// @concord-implements docs/feature/run/architecture.md
|
|
195
|
+
// @concord-implements docs/feature/run/lifecycle.md
|
|
189
196
|
function createRunResourceOnConnection(connection, input) {
|
|
190
197
|
requireIdentity(input.runId, "runId");
|
|
191
198
|
requireIdentity(input.invocationId, "invocationId");
|
|
@@ -211,6 +218,9 @@ function createRunResourceOnConnection(connection, input) {
|
|
|
211
218
|
return Object.freeze({ runId: input.runId, cutoff: cutoffAt(connection, revision) });
|
|
212
219
|
});
|
|
213
220
|
}
|
|
221
|
+
// @concord-code ne-run-publish-origin-attempt
|
|
222
|
+
// @concord-implements docs/feature/run/architecture.md
|
|
223
|
+
// @concord-implements docs/feature/run/lifecycle.md
|
|
214
224
|
function publishOriginAttemptOnConnection(connection, input) {
|
|
215
225
|
requireIdentity(input.runId, "runId");
|
|
216
226
|
requireIdentity(input.writerGeneration, "writerGeneration");
|
|
@@ -275,6 +285,8 @@ function publishOriginAttemptOnConnection(connection, input) {
|
|
|
275
285
|
});
|
|
276
286
|
});
|
|
277
287
|
}
|
|
288
|
+
// @concord-code ne-run-bind-attempt-reference
|
|
289
|
+
// @concord-implements docs/feature/run/architecture.md
|
|
278
290
|
function bindAttemptReferenceOnConnection(connection, input) {
|
|
279
291
|
requireIdentity(input.runId, "runId");
|
|
280
292
|
requireIdentity(input.writerGeneration, "writerGeneration");
|
|
@@ -339,6 +351,9 @@ function insertAbsences(connection, runId, revision, absences) {
|
|
|
339
351
|
for (const absence of absences)
|
|
340
352
|
insert.run(runId, absence.slotId, absence.reason, revision);
|
|
341
353
|
}
|
|
354
|
+
// @concord-code ne-run-close-resource
|
|
355
|
+
// @concord-implements docs/feature/run/architecture.md
|
|
356
|
+
// @concord-implements docs/feature/run/lifecycle.md
|
|
342
357
|
function closeRunResourceOnConnection(connection, input) {
|
|
343
358
|
requireTerminalState(input.state);
|
|
344
359
|
requireIsoInstant(input.completedAt, "completedAt");
|
|
@@ -364,6 +379,8 @@ function closeRunResourceOnConnection(connection, input) {
|
|
|
364
379
|
return Object.freeze({ runId: input.runId, cutoff: cutoffAt(connection, revision) });
|
|
365
380
|
});
|
|
366
381
|
}
|
|
382
|
+
// @concord-code ne-run-recover-resource
|
|
383
|
+
// @concord-implements docs/feature/run/lifecycle.md
|
|
367
384
|
function recoverRunResourceOnConnection(connection, input) {
|
|
368
385
|
requireIdentity(input.runId, "runId");
|
|
369
386
|
requireIdentity(input.expectedWriterGeneration, "expectedWriterGeneration");
|
|
@@ -423,6 +440,9 @@ function incomingReferences(connection, originRunId) {
|
|
|
423
440
|
attemptLocator: text(row, "attempt_locator"),
|
|
424
441
|
})));
|
|
425
442
|
}
|
|
443
|
+
// @concord-code ne-run-delete-resource
|
|
444
|
+
// @concord-implements docs/feature/run/architecture.md
|
|
445
|
+
// @concord-implements docs/feature/run/lifecycle.md
|
|
426
446
|
function deleteRunResourceOnConnection(connection, input) {
|
|
427
447
|
requireIdentity(input.runId, "runId");
|
|
428
448
|
requireTerminalState(input.expectedState);
|