niceeval 0.13.2 → 0.13.3
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/dist/agents/bub.cjs +4 -4
- package/dist/agents/bub.cjs.map +1 -1
- package/dist/agents/bub.d.cts +2 -2
- package/dist/agents/bub.d.mts +2 -2
- package/dist/agents/bub.d.ts +2 -2
- package/dist/agents/claude-code-native.cjs +213 -0
- package/dist/agents/claude-code-native.cjs.map +1 -0
- package/dist/agents/claude-code-native.d.cts +5 -0
- package/dist/agents/claude-code-native.d.mts +5 -0
- package/dist/agents/claude-code-native.d.ts +5 -0
- package/dist/agents/claude-code-native.js +6 -0
- package/dist/agents/claude-code-native.js.map +1 -0
- package/dist/agents/claude-code.cjs +26 -80
- package/dist/agents/claude-code.cjs.map +1 -1
- package/dist/agents/codex-app-server.cjs +314 -0
- package/dist/agents/codex-app-server.cjs.map +1 -0
- package/dist/agents/codex-app-server.d.cts +9 -0
- package/dist/agents/codex-app-server.d.mts +9 -0
- package/dist/agents/codex-app-server.d.ts +9 -0
- package/dist/agents/codex-app-server.js +6 -0
- package/dist/agents/codex-app-server.js.map +1 -0
- package/dist/agents/codex.cjs +19 -68
- package/dist/agents/codex.cjs.map +1 -1
- package/dist/agents/codex.d.cts +3 -3
- package/dist/agents/codex.d.mts +3 -3
- package/dist/agents/codex.d.ts +3 -3
- package/dist/agents/index.cjs +3 -1
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +1 -0
- package/dist/agents/index.d.mts +1 -0
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.js +84 -82
- package/dist/agents/index.mjs +84 -82
- package/dist/agents/managed-jsonl.cjs +207 -0
- package/dist/agents/managed-jsonl.cjs.map +1 -0
- package/dist/agents/managed-jsonl.d.cts +39 -0
- package/dist/agents/managed-jsonl.d.mts +39 -0
- package/dist/agents/managed-jsonl.d.ts +39 -0
- package/dist/agents/managed-jsonl.js +6 -0
- package/dist/agents/managed-jsonl.js.map +1 -0
- package/dist/agents/managed-process.cjs +31 -0
- package/dist/agents/managed-process.cjs.map +1 -0
- package/dist/agents/managed-process.d.cts +3 -0
- package/dist/agents/managed-process.d.mts +3 -0
- package/dist/agents/managed-process.d.ts +3 -0
- package/dist/agents/managed-process.js +6 -0
- package/dist/agents/managed-process.js.map +1 -0
- package/dist/agents/omp.cjs +18 -1
- package/dist/agents/omp.cjs.map +1 -1
- package/dist/agents/sdk-streams.cjs +11 -4
- package/dist/agents/sdk-streams.cjs.map +1 -1
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.d.cts +8 -0
- package/dist/agents/types.d.mts +8 -0
- package/dist/agents/types.d.ts +8 -0
- package/dist/analysis/bindings.cjs +74 -19
- package/dist/analysis/bindings.cjs.map +1 -1
- package/dist/analysis/bindings.d.cts +534 -156
- package/dist/analysis/bindings.d.mts +534 -156
- package/dist/analysis/bindings.d.ts +534 -156
- package/dist/analysis/domain-view.cjs.map +1 -1
- package/dist/analysis/domain-view.d.cts +137 -8
- package/dist/analysis/domain-view.d.mts +137 -8
- package/dist/analysis/domain-view.d.ts +137 -8
- package/dist/analysis/index.cjs.map +1 -1
- package/dist/analysis/index.d.cts +1 -1
- package/dist/analysis/index.d.mts +1 -1
- package/dist/analysis/index.d.ts +1 -1
- package/dist/assertions/api.cjs.map +1 -1
- package/dist/assertions/api.d.cts +62 -0
- package/dist/assertions/api.d.mts +62 -0
- package/dist/assertions/api.d.ts +62 -0
- package/dist/assertions/judge.cjs +56 -5
- package/dist/assertions/judge.cjs.map +1 -1
- package/dist/assertions/match.cjs +66 -42
- package/dist/assertions/match.cjs.map +1 -1
- package/dist/assertions/match.d.cts +13 -0
- package/dist/assertions/match.d.mts +13 -0
- package/dist/assertions/match.d.ts +13 -0
- package/dist/assertions/record/attachment.cjs +104 -33
- package/dist/assertions/record/attachment.cjs.map +1 -1
- package/dist/assertions/record/attachment.d.cts +294 -57
- package/dist/assertions/record/attachment.d.mts +294 -57
- package/dist/assertions/record/attachment.d.ts +294 -57
- package/dist/assertions/record/codec.cjs +91 -17
- package/dist/assertions/record/codec.cjs.map +1 -1
- package/dist/assertions/record/codec.d.cts +280 -52
- package/dist/assertions/record/codec.d.mts +280 -52
- package/dist/assertions/record/codec.d.ts +280 -52
- package/dist/assertions/record/index.js +2 -0
- package/dist/assertions/record/model.cjs +16 -0
- package/dist/assertions/record/model.cjs.map +1 -1
- package/dist/assertions/record/model.d.cts +120 -13
- package/dist/assertions/record/model.d.mts +120 -13
- package/dist/assertions/record/model.d.ts +120 -13
- package/dist/assertions/record/model.js +2 -0
- package/dist/assertions/record/producer.cjs +70 -50
- package/dist/assertions/record/producer.cjs.map +1 -1
- package/dist/assertions/record/producer.d.cts +8 -7
- package/dist/assertions/record/producer.d.mts +8 -7
- package/dist/assertions/record/producer.d.ts +8 -7
- package/dist/assertions/runtime.cjs +49 -7
- package/dist/assertions/runtime.cjs.map +1 -1
- package/dist/cli/application.cjs +40 -0
- package/dist/cli/application.cjs.map +1 -0
- package/dist/cli/application.d.cts +129 -0
- package/dist/cli/application.d.mts +129 -0
- package/dist/cli/application.d.ts +129 -0
- package/dist/cli/application.js +24 -0
- package/dist/cli/application.js.map +1 -0
- package/dist/cli/bootstrap.cjs +10 -4
- package/dist/cli/bootstrap.cjs.map +1 -1
- package/dist/cli/node-application.cjs +123 -0
- package/dist/cli/node-application.cjs.map +1 -0
- package/dist/cli/node-application.d.cts +14 -0
- package/dist/cli/node-application.d.mts +14 -0
- package/dist/cli/node-application.d.ts +14 -0
- package/dist/cli/node-application.js +26 -0
- package/dist/cli/node-application.js.map +1 -0
- package/dist/cli/program.cjs +2807 -0
- package/dist/cli/program.cjs.map +1 -0
- package/dist/cli/program.d.cts +352 -0
- package/dist/cli/program.d.mts +352 -0
- package/dist/cli/program.d.ts +352 -0
- package/dist/cli/program.js +36 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/project-configuration.cjs +134 -0
- package/dist/cli/project-configuration.cjs.map +1 -0
- package/dist/cli/project-configuration.d.cts +64 -0
- package/dist/cli/project-configuration.d.mts +64 -0
- package/dist/cli/project-configuration.d.ts +64 -0
- package/dist/cli/project-configuration.js +22 -0
- package/dist/cli/project-configuration.js.map +1 -0
- package/dist/cli/record.cjs +20 -4
- package/dist/cli/record.cjs.map +1 -1
- package/dist/cli/record.d.cts +3 -3
- package/dist/cli/record.d.mts +3 -3
- package/dist/cli/record.d.ts +3 -3
- package/dist/cli.cjs +19 -3130
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +2 -148
- package/dist/cli.d.mts +2 -148
- package/dist/cli.d.ts +2 -148
- package/dist/cli.js +22 -30
- package/dist/context/assert-first.cjs +21 -15
- package/dist/context/assert-first.cjs.map +1 -1
- package/dist/context/assert-first.d.cts +1 -0
- package/dist/context/assert-first.d.mts +1 -0
- package/dist/context/assert-first.d.ts +1 -0
- package/dist/context/attempt-resources.cjs +13 -0
- package/dist/context/attempt-resources.cjs.map +1 -0
- package/dist/context/attempt-resources.d.cts +3 -0
- package/dist/context/attempt-resources.d.mts +3 -0
- package/dist/context/attempt-resources.d.ts +3 -0
- package/dist/context/attempt-resources.js +8 -0
- package/dist/context/attempt-resources.js.map +1 -0
- package/dist/context/session.cjs +4 -3
- package/dist/context/session.cjs.map +1 -1
- package/dist/context/session.d.cts +1 -0
- package/dist/context/session.d.mts +1 -0
- package/dist/context/session.d.ts +1 -0
- package/dist/eval/record/verdict.cjs +3 -2
- package/dist/eval/record/verdict.cjs.map +1 -1
- package/dist/experiment/host/index.cjs +1 -6
- package/dist/experiment/host/index.cjs.map +1 -1
- package/dist/experiment/host/index.d.cts +1 -0
- package/dist/experiment/host/index.d.mts +1 -0
- package/dist/experiment/host/index.d.ts +1 -0
- package/dist/load-config.cjs +13 -4
- package/dist/load-config.cjs.map +1 -1
- package/dist/load-config.d.cts +4 -3
- package/dist/load-config.d.mts +4 -3
- package/dist/load-config.d.ts +4 -3
- package/dist/load-config.js +4 -2
- package/dist/o11y/parsers/codex.cjs +29 -7
- package/dist/o11y/parsers/codex.cjs.map +1 -1
- package/dist/record/codec/core.d.cts +0 -2
- package/dist/record/codec/core.d.mts +0 -2
- package/dist/record/codec/core.d.ts +0 -2
- package/dist/record/codec/identifiers.cjs +2 -3
- package/dist/record/codec/identifiers.cjs.map +1 -1
- package/dist/record/codec/identifiers.d.cts +1 -2
- package/dist/record/codec/identifiers.d.mts +1 -2
- package/dist/record/codec/identifiers.d.ts +1 -2
- package/dist/record/codec/identifiers.js +10 -12
- package/dist/record/codec/index.js +42 -44
- package/dist/record/definition/attachment.cjs +1 -0
- package/dist/record/definition/attachment.cjs.map +1 -1
- package/dist/record/definition/attachment.d.cts +14 -0
- package/dist/record/definition/attachment.d.mts +14 -0
- package/dist/record/definition/attachment.d.ts +14 -0
- package/dist/record/family/assertions-v1.cjs +104 -0
- package/dist/record/family/assertions-v1.cjs.map +1 -0
- package/dist/record/family/assertions-v1.d.cts +2 -0
- package/dist/record/family/assertions-v1.d.mts +2 -0
- package/dist/record/family/assertions-v1.d.ts +2 -0
- package/dist/record/family/assertions-v1.js +6 -0
- package/dist/record/family/assertions-v1.js.map +1 -0
- package/dist/record/family/assertions.cjs +16 -5
- package/dist/record/family/assertions.cjs.map +1 -1
- package/dist/record/family/assertions.d.cts +510 -56
- package/dist/record/family/assertions.d.mts +510 -56
- package/dist/record/family/assertions.d.ts +510 -56
- package/dist/record/family/assertions.js +14 -10
- package/dist/record/family/catalog.cjs +17 -1
- package/dist/record/family/catalog.cjs.map +1 -1
- package/dist/record/family/catalog.d.cts +1292 -104
- package/dist/record/family/catalog.d.mts +1292 -104
- package/dist/record/family/catalog.d.ts +1292 -104
- package/dist/record/family/catalog.js +22 -20
- package/dist/record/family/index.js +144 -138
- package/dist/record/family/observability-v1.cjs +5 -0
- package/dist/record/family/observability-v1.cjs.map +1 -1
- package/dist/record/family/observability.cjs +1 -1
- package/dist/record/family/observability.cjs.map +1 -1
- package/dist/record/host/runtime.cjs +323 -173
- package/dist/record/host/runtime.cjs.map +1 -1
- package/dist/record/host/types.cjs.map +1 -1
- package/dist/record/host/types.d.cts +9 -7
- package/dist/record/host/types.d.mts +9 -7
- package/dist/record/host/types.d.ts +9 -7
- package/dist/record/model/core.cjs.map +1 -1
- package/dist/record/model/core.d.cts +1 -2
- package/dist/record/model/core.d.mts +1 -2
- package/dist/record/model/core.d.ts +1 -2
- package/dist/record/model/definition.cjs +1 -2
- package/dist/record/model/definition.cjs.map +1 -1
- package/dist/record/model/definition.d.cts +1 -7
- package/dist/record/model/definition.d.mts +1 -7
- package/dist/record/model/definition.d.ts +1 -7
- package/dist/record/model/identifiers.cjs +2 -3
- package/dist/record/model/identifiers.cjs.map +1 -1
- package/dist/record/model/identifiers.d.cts +1 -3
- package/dist/record/model/identifiers.d.mts +1 -3
- package/dist/record/model/identifiers.d.ts +1 -3
- package/dist/record/model/identifiers.js +36 -38
- package/dist/record/model/index.js +60 -62
- package/dist/record/platform/node.cjs +17 -7
- package/dist/record/platform/node.cjs.map +1 -1
- package/dist/record/platform/services.cjs.map +1 -1
- package/dist/record/platform/services.d.cts +8 -3
- package/dist/record/platform/services.d.mts +8 -3
- package/dist/record/platform/services.d.ts +8 -3
- package/dist/record/reader/format.cjs +16 -65
- package/dist/record/reader/format.cjs.map +1 -1
- package/dist/record/reader/format.d.cts +5 -9
- package/dist/record/reader/format.d.mts +5 -9
- package/dist/record/reader/format.d.ts +5 -9
- package/dist/record/reader/index.js +10 -8
- package/dist/record/reader/runtime.cjs +63 -32
- package/dist/record/reader/runtime.cjs.map +1 -1
- package/dist/record/reader/runtime.d.cts +40 -4
- package/dist/record/reader/runtime.d.mts +40 -4
- package/dist/record/reader/runtime.d.ts +40 -4
- package/dist/record/reader/runtime.js +6 -4
- package/dist/report/assets/enhance.js +5 -5
- package/dist/report/assets/styles.css +190 -24
- package/dist/report/built-in/result-components.cjs +8 -5
- package/dist/report/built-in/result-components.cjs.map +1 -1
- package/dist/report/built-in/standard.cjs +3 -0
- package/dist/report/built-in/standard.cjs.map +1 -1
- package/dist/report/built-in/standard.d.cts +2 -0
- package/dist/report/built-in/standard.d.mts +2 -0
- package/dist/report/built-in/standard.d.ts +2 -0
- package/dist/report/client-dist/app.js +53 -0
- package/dist/report/components/attempt-detail/compute.cjs +108 -231
- package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
- package/dist/report/components/attempt-detail/compute.d.cts +11 -45
- package/dist/report/components/attempt-detail/compute.d.mts +11 -45
- package/dist/report/components/attempt-detail/compute.d.ts +11 -45
- package/dist/report/components/attempt-detail/compute.js +2 -4
- package/dist/report/components/attempt-detail/content.cjs +4 -4
- package/dist/report/components/attempt-detail/content.cjs.map +1 -1
- package/dist/report/components/attempt-detail/validate.cjs +47 -4
- package/dist/report/components/attempt-detail/validate.cjs.map +1 -1
- package/dist/report/components/entity-lists/compute.cjs +9 -15
- package/dist/report/components/entity-lists/compute.cjs.map +1 -1
- package/dist/report/components/entity-lists/content.cjs +53 -40
- package/dist/report/components/entity-lists/content.cjs.map +1 -1
- package/dist/report/components/entity-lists/index.cjs +1 -3
- package/dist/report/components/entity-lists/index.cjs.map +1 -1
- package/dist/report/components/experiment-detail/compute.cjs +4 -6
- package/dist/report/components/experiment-detail/compute.cjs.map +1 -1
- package/dist/report/components/summaries/index.cjs +5 -1
- package/dist/report/components/summaries/index.cjs.map +1 -1
- package/dist/report/definition/cell.cjs +14 -7
- package/dist/report/definition/cell.cjs.map +1 -1
- package/dist/report/definition/cell.d.cts +4 -0
- package/dist/report/definition/cell.d.mts +4 -0
- package/dist/report/definition/cell.d.ts +4 -0
- package/dist/report/definition/primitives/assertion-evidence.cjs +96 -0
- package/dist/report/definition/primitives/assertion-evidence.cjs.map +1 -0
- package/dist/report/definition/primitives/assertion-evidence.d.cts +11 -0
- package/dist/report/definition/primitives/assertion-evidence.d.mts +11 -0
- package/dist/report/definition/primitives/assertion-evidence.d.ts +11 -0
- package/dist/report/definition/primitives/assertion-evidence.js +6 -0
- package/dist/report/definition/primitives/assertion-evidence.js.map +1 -0
- package/dist/report/definition/primitives/conversation.cjs +7 -0
- package/dist/report/definition/primitives/conversation.cjs.map +1 -1
- package/dist/report/definition/primitives/conversation.d.cts +2 -0
- package/dist/report/definition/primitives/conversation.d.mts +2 -0
- package/dist/report/definition/primitives/conversation.d.ts +2 -0
- package/dist/report/definition/primitives/turn-trace.cjs +53 -3
- package/dist/report/definition/primitives/turn-trace.cjs.map +1 -1
- package/dist/report/definition/primitives.cjs +14 -1
- package/dist/report/definition/primitives.cjs.map +1 -1
- package/dist/report/definition/report.cjs +16 -8
- package/dist/report/definition/report.cjs.map +1 -1
- package/dist/report/definition/report.d.cts +6 -0
- package/dist/report/definition/report.d.mts +6 -0
- package/dist/report/definition/report.d.ts +6 -0
- package/dist/report/definition/table-text.cjs +12 -3
- package/dist/report/definition/table-text.cjs.map +1 -1
- package/dist/report/definition/table-text.d.cts +6 -1
- package/dist/report/definition/table-text.d.mts +6 -1
- package/dist/report/definition/table-text.d.ts +6 -1
- package/dist/report/execution/model.cjs +6 -14
- package/dist/report/execution/model.cjs.map +1 -1
- package/dist/report/execution/model.d.cts +5 -10
- package/dist/report/execution/model.d.mts +5 -10
- package/dist/report/execution/model.d.ts +5 -10
- package/dist/report/execution/model.js +6 -6
- package/dist/report/execution/paths.cjs +0 -11
- package/dist/report/execution/paths.cjs.map +1 -1
- package/dist/report/execution/paths.d.cts +0 -1
- package/dist/report/execution/paths.d.mts +0 -1
- package/dist/report/execution/paths.d.ts +0 -1
- package/dist/report/execution/paths.js +6 -8
- package/dist/report/host/execute.cjs +13 -22
- package/dist/report/host/execute.cjs.map +1 -1
- package/dist/report/host/execute.d.cts +1 -4
- package/dist/report/host/execute.d.mts +1 -4
- package/dist/report/host/execute.d.ts +1 -4
- package/dist/report/host/from-record.cjs +3 -0
- package/dist/report/host/from-record.cjs.map +1 -1
- package/dist/report/host/from-record.d.cts +4 -1
- package/dist/report/host/from-record.d.mts +4 -1
- package/dist/report/host/from-record.d.ts +4 -1
- package/dist/report/host/site-assets.cjs +1 -2
- package/dist/report/host/site-assets.cjs.map +1 -1
- package/dist/report/host/site-assets.d.cts +0 -1
- package/dist/report/host/site-assets.d.mts +0 -1
- package/dist/report/host/site-assets.d.ts +0 -1
- package/dist/report/host/site-assets.js +2 -4
- package/dist/report/host/static.cjs +71 -346
- package/dist/report/host/static.cjs.map +1 -1
- package/dist/report/host/static.d.cts +1 -3
- package/dist/report/host/static.d.mts +1 -3
- package/dist/report/host/static.d.ts +1 -3
- package/dist/report/host/static.js +2 -2
- package/dist/report/host/view-session.cjs.map +1 -1
- package/dist/report/host/view-session.d.cts +1 -1
- package/dist/report/host/view-session.d.mts +1 -1
- package/dist/report/host/view-session.d.ts +1 -1
- package/dist/report/model/locale.cjs +1 -1
- package/dist/report/model/locale.cjs.map +1 -1
- package/dist/report/model/locale.d.cts +1 -1
- package/dist/report/model/locale.d.mts +1 -1
- package/dist/report/model/locale.d.ts +1 -1
- package/dist/report/model/pricing.cjs +2 -2
- package/dist/report/model/pricing.cjs.map +1 -1
- package/dist/report/react/enhance.js +5 -5
- package/dist/report/react/styles.css +190 -24
- package/dist/runner/adoption.cjs +4 -7
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/attempt-resources.cjs +60 -0
- package/dist/runner/attempt-resources.cjs.map +1 -0
- package/dist/runner/attempt-resources.d.cts +13 -0
- package/dist/runner/attempt-resources.d.mts +13 -0
- package/dist/runner/attempt-resources.d.ts +13 -0
- package/dist/runner/attempt-resources.js +6 -0
- package/dist/runner/attempt-resources.js.map +1 -0
- package/dist/runner/attempt.cjs +37 -3
- package/dist/runner/attempt.cjs.map +1 -1
- package/dist/runner/feedback/failure.cjs +77 -2
- package/dist/runner/feedback/failure.cjs.map +1 -1
- package/dist/runner/feedback/failure.d.cts +2 -1
- package/dist/runner/feedback/failure.d.mts +2 -1
- package/dist/runner/feedback/failure.d.ts +2 -1
- package/dist/runner/project-current.cjs +2 -13
- package/dist/runner/project-current.cjs.map +1 -1
- package/dist/runner/project-current.d.cts +4 -2
- package/dist/runner/project-current.d.mts +4 -2
- package/dist/runner/project-current.d.ts +4 -2
- package/dist/runner/reporters/braintrust.cjs +7 -7
- package/dist/runner/reporters/braintrust.cjs.map +1 -1
- package/dist/runner/reuse-readback.cjs +3 -4
- package/dist/runner/reuse-readback.cjs.map +1 -1
- package/dist/runner/run.cjs +5 -2
- package/dist/runner/run.cjs.map +1 -1
- package/dist/sandbox/backend.cjs +32 -2
- package/dist/sandbox/backend.cjs.map +1 -1
- package/dist/sandbox/backend.d.cts +12 -1
- package/dist/sandbox/backend.d.mts +12 -1
- package/dist/sandbox/backend.d.ts +12 -1
- package/dist/sandbox/backend.js +28 -22
- package/dist/sandbox/docker.cjs +140 -0
- package/dist/sandbox/docker.cjs.map +1 -1
- package/dist/sandbox/docker.d.cts +3 -1
- package/dist/sandbox/docker.d.mts +3 -1
- package/dist/sandbox/docker.d.ts +3 -1
- package/dist/sandbox/e2b.cjs +42 -0
- package/dist/sandbox/e2b.cjs.map +1 -1
- package/dist/sandbox/e2b.d.cts +2 -0
- package/dist/sandbox/e2b.d.mts +2 -0
- package/dist/sandbox/e2b.d.ts +2 -0
- package/dist/sandbox/local.cjs +64 -0
- package/dist/sandbox/local.cjs.map +1 -1
- package/dist/sandbox/local.d.cts +3 -1
- package/dist/sandbox/local.d.mts +3 -1
- package/dist/sandbox/local.d.ts +3 -1
- package/dist/sandbox/managed-process.cjs +49 -0
- package/dist/sandbox/managed-process.cjs.map +1 -0
- package/dist/sandbox/managed-process.d.cts +11 -0
- package/dist/sandbox/managed-process.d.mts +11 -0
- package/dist/sandbox/managed-process.d.ts +11 -0
- package/dist/sandbox/managed-process.js +6 -0
- package/dist/sandbox/managed-process.js.map +1 -0
- package/dist/sandbox/types.cjs.map +1 -1
- package/dist/sandbox/types.d.cts +24 -0
- package/dist/sandbox/types.d.mts +24 -0
- package/dist/sandbox/types.d.ts +24 -0
- package/dist/sandbox/vercel.cjs +1 -0
- package/dist/sandbox/vercel.cjs.map +1 -1
- package/dist/sandbox/vercel.d.cts +1 -0
- package/dist/sandbox/vercel.d.mts +1 -0
- package/dist/sandbox/vercel.d.ts +1 -0
- package/dist/view/server.cjs +2 -37
- package/dist/view/server.cjs.map +1 -1
- package/dist/view/server.d.cts +0 -3
- package/dist/view/server.d.mts +0 -3
- package/dist/view/server.d.ts +0 -3
- package/docs-site/zh/reference/builtin-agents.mdx +7 -7
- package/docs-site/zh/reference/official-adapters.mdx +4 -4
- package/docs-site/zh/reference/report-components.mdx +2 -2
- package/docs-site/zh/tutorials/configuration.mdx +2 -2
- package/docs-site/zh/tutorials/deploy-report-site.mdx +24 -2
- package/docs-site/zh/tutorials/publish-report.mdx +4 -4
- package/docs-site/zh/tutorials/sandbox-agent.mdx +5 -5
- package/docs-site/zh/tutorials/theming.mdx +2 -2
- package/package.json +4 -6
- package/dist/record/migration/index.cjs +0 -5
- package/dist/record/migration/index.cjs.map +0 -1
- package/dist/record/migration/index.d.cts +0 -11
- package/dist/record/migration/index.d.mts +0 -11
- package/dist/record/migration/index.d.ts +0 -11
- package/dist/record/migration/index.js +0 -6
- package/dist/record/migration/index.js.map +0 -1
- package/dist/report/host/site-runtime.cjs +0 -92
- package/dist/report/host/site-runtime.cjs.map +0 -1
- package/dist/report/host/site-runtime.d.cts +0 -9
- package/dist/report/host/site-runtime.d.mts +0 -9
- package/dist/report/host/site-runtime.d.ts +0 -9
- package/dist/report/host/site-runtime.js +0 -10
- package/dist/report/host/site-runtime.js.map +0 -1
- package/dist/view/client-dist/app.css +0 -2
- package/dist/view/client-dist/app.js +0 -49
- package/dist/view/data.cjs +0 -3
- package/dist/view/data.cjs.map +0 -1
- package/dist/view/data.d.cts +0 -9
- package/dist/view/data.d.mts +0 -9
- package/dist/view/data.d.ts +0 -9
- package/dist/view/data.js +0 -4
- package/dist/view/data.js.map +0 -1
- package/dist/view/index.cjs +0 -24
- package/dist/view/index.cjs.map +0 -1
- package/dist/view/index.d.cts +0 -9
- package/dist/view/index.d.mts +0 -9
- package/dist/view/index.d.ts +0 -9
- package/dist/view/index.js +0 -28
- package/dist/view/index.js.map +0 -1
- package/dist/view/report-view-cache.cjs +0 -200
- package/dist/view/report-view-cache.cjs.map +0 -1
- package/dist/view/report-view-cache.d.cts +0 -67
- package/dist/view/report-view-cache.d.mts +0 -67
- package/dist/view/report-view-cache.d.ts +0 -67
- package/dist/view/report-view-cache.js +0 -8
- package/dist/view/report-view-cache.js.map +0 -1
- package/dist/view/shared/types.cjs +0 -3
- package/dist/view/shared/types.cjs.map +0 -1
- package/dist/view/shared/types.d.cts +0 -51
- package/dist/view/shared/types.d.mts +0 -51
- package/dist/view/shared/types.d.ts +0 -51
- package/dist/view/shared/types.js +0 -4
- package/dist/view/shared/types.js.map +0 -1
- package/dist/view/site.cjs +0 -32
- package/dist/view/site.cjs.map +0 -1
- package/dist/view/site.d.cts +0 -24
- package/dist/view/site.d.mts +0 -24
- package/dist/view/site.d.ts +0 -24
- package/dist/view/site.js +0 -8
- package/dist/view/site.js.map +0 -1
- package/dist/view/styles.css +0 -170
- package/dist/view/template.html +0 -17
|
@@ -25,42 +25,40 @@ const __niceevalExport10 = __niceevalCanonical["RECORD_FORMAT_ID_BRAND"];
|
|
|
25
25
|
export { __niceevalExport10 as RECORD_FORMAT_ID_BRAND };
|
|
26
26
|
const __niceevalExport11 = __niceevalCanonical["RECORD_ID_BRAND"];
|
|
27
27
|
export { __niceevalExport11 as RECORD_ID_BRAND };
|
|
28
|
-
const __niceevalExport12 = __niceevalCanonical["
|
|
29
|
-
export { __niceevalExport12 as
|
|
30
|
-
const __niceevalExport13 = __niceevalCanonical["
|
|
31
|
-
export { __niceevalExport13 as
|
|
32
|
-
const __niceevalExport14 = __niceevalCanonical["
|
|
33
|
-
export { __niceevalExport14 as
|
|
34
|
-
const __niceevalExport15 = __niceevalCanonical["
|
|
35
|
-
export { __niceevalExport15 as
|
|
36
|
-
const __niceevalExport16 = __niceevalCanonical["
|
|
37
|
-
export { __niceevalExport16 as
|
|
38
|
-
const __niceevalExport17 = __niceevalCanonical["
|
|
39
|
-
export { __niceevalExport17 as
|
|
40
|
-
const __niceevalExport18 = __niceevalCanonical["
|
|
41
|
-
export { __niceevalExport18 as
|
|
42
|
-
const __niceevalExport19 = __niceevalCanonical["
|
|
43
|
-
export { __niceevalExport19 as
|
|
44
|
-
const __niceevalExport20 = __niceevalCanonical["
|
|
45
|
-
export { __niceevalExport20 as
|
|
46
|
-
const __niceevalExport21 = __niceevalCanonical["
|
|
47
|
-
export { __niceevalExport21 as
|
|
48
|
-
const __niceevalExport22 = __niceevalCanonical["
|
|
49
|
-
export { __niceevalExport22 as
|
|
50
|
-
const __niceevalExport23 = __niceevalCanonical["
|
|
51
|
-
export { __niceevalExport23 as
|
|
52
|
-
const __niceevalExport24 = __niceevalCanonical["
|
|
53
|
-
export { __niceevalExport24 as
|
|
54
|
-
const __niceevalExport25 = __niceevalCanonical["
|
|
55
|
-
export { __niceevalExport25 as
|
|
56
|
-
const __niceevalExport26 = __niceevalCanonical["
|
|
57
|
-
export { __niceevalExport26 as
|
|
58
|
-
const __niceevalExport27 = __niceevalCanonical["
|
|
59
|
-
export { __niceevalExport27 as
|
|
60
|
-
const __niceevalExport28 = __niceevalCanonical["
|
|
61
|
-
export { __niceevalExport28 as
|
|
62
|
-
const __niceevalExport29 = __niceevalCanonical["
|
|
63
|
-
export { __niceevalExport29 as
|
|
64
|
-
const __niceevalExport30 = __niceevalCanonical["recordAttachmentNameTextOfSchemaId"];
|
|
65
|
-
export { __niceevalExport30 as recordAttachmentNameTextOfSchemaId };
|
|
28
|
+
const __niceevalExport12 = __niceevalCanonical["RUN_ID_BRAND"];
|
|
29
|
+
export { __niceevalExport12 as RUN_ID_BRAND };
|
|
30
|
+
const __niceevalExport13 = __niceevalCanonical["SHA256_DIGEST_BRAND"];
|
|
31
|
+
export { __niceevalExport13 as SHA256_DIGEST_BRAND };
|
|
32
|
+
const __niceevalExport14 = __niceevalCanonical["SLOT_ID_BRAND"];
|
|
33
|
+
export { __niceevalExport14 as SLOT_ID_BRAND };
|
|
34
|
+
const __niceevalExport15 = __niceevalCanonical["SOURCE_ITEM_ID_BRAND"];
|
|
35
|
+
export { __niceevalExport15 as SOURCE_ITEM_ID_BRAND };
|
|
36
|
+
const __niceevalExport16 = __niceevalCanonical["UTC_MILLIS_BRAND"];
|
|
37
|
+
export { __niceevalExport16 as UTC_MILLIS_BRAND };
|
|
38
|
+
const __niceevalExport17 = __niceevalCanonical["compareCanonicalIdentity"];
|
|
39
|
+
export { __niceevalExport17 as compareCanonicalIdentity };
|
|
40
|
+
const __niceevalExport18 = __niceevalCanonical["isCanonicalProjectRelativePath"];
|
|
41
|
+
export { __niceevalExport18 as isCanonicalProjectRelativePath };
|
|
42
|
+
const __niceevalExport19 = __niceevalCanonical["isNiceEvalRecordAttachmentName"];
|
|
43
|
+
export { __niceevalExport19 as isNiceEvalRecordAttachmentName };
|
|
44
|
+
const __niceevalExport20 = __niceevalCanonical["isPortableSegment"];
|
|
45
|
+
export { __niceevalExport20 as isPortableSegment };
|
|
46
|
+
const __niceevalExport21 = __niceevalCanonical["isRecordAttachmentName"];
|
|
47
|
+
export { __niceevalExport21 as isRecordAttachmentName };
|
|
48
|
+
const __niceevalExport22 = __niceevalCanonical["isRecordAttachmentSchemaId"];
|
|
49
|
+
export { __niceevalExport22 as isRecordAttachmentSchemaId };
|
|
50
|
+
const __niceevalExport23 = __niceevalCanonical["isRecordDomainIdentity"];
|
|
51
|
+
export { __niceevalExport23 as isRecordDomainIdentity };
|
|
52
|
+
const __niceevalExport24 = __niceevalCanonical["isRecordFormat"];
|
|
53
|
+
export { __niceevalExport24 as isRecordFormat };
|
|
54
|
+
const __niceevalExport25 = __niceevalCanonical["isRecordFormatId"];
|
|
55
|
+
export { __niceevalExport25 as isRecordFormatId };
|
|
56
|
+
const __niceevalExport26 = __niceevalCanonical["isSha256Digest"];
|
|
57
|
+
export { __niceevalExport26 as isSha256Digest };
|
|
58
|
+
const __niceevalExport27 = __niceevalCanonical["isUtcMillis"];
|
|
59
|
+
export { __niceevalExport27 as isUtcMillis };
|
|
60
|
+
const __niceevalExport28 = __niceevalCanonical["parseRecordAttachmentSchemaId"];
|
|
61
|
+
export { __niceevalExport28 as parseRecordAttachmentSchemaId };
|
|
62
|
+
const __niceevalExport29 = __niceevalCanonical["recordAttachmentNameTextOfSchemaId"];
|
|
63
|
+
export { __niceevalExport29 as recordAttachmentNameTextOfSchemaId };
|
|
66
64
|
//# sourceMappingURL=identifiers.js.map
|
|
@@ -25,66 +25,64 @@ const __niceevalExport10 = __niceevalCanonical["RECORD_FORMAT_ID_BRAND"];
|
|
|
25
25
|
export { __niceevalExport10 as RECORD_FORMAT_ID_BRAND };
|
|
26
26
|
const __niceevalExport11 = __niceevalCanonical["RECORD_ID_BRAND"];
|
|
27
27
|
export { __niceevalExport11 as RECORD_ID_BRAND };
|
|
28
|
-
const __niceevalExport12 = __niceevalCanonical["
|
|
29
|
-
export { __niceevalExport12 as
|
|
30
|
-
const __niceevalExport13 = __niceevalCanonical["
|
|
31
|
-
export { __niceevalExport13 as
|
|
32
|
-
const __niceevalExport14 = __niceevalCanonical["
|
|
33
|
-
export { __niceevalExport14 as
|
|
34
|
-
const __niceevalExport15 = __niceevalCanonical["
|
|
35
|
-
export { __niceevalExport15 as
|
|
36
|
-
const __niceevalExport16 = __niceevalCanonical["
|
|
37
|
-
export { __niceevalExport16 as
|
|
38
|
-
const __niceevalExport17 = __niceevalCanonical["
|
|
39
|
-
export { __niceevalExport17 as
|
|
40
|
-
const __niceevalExport18 = __niceevalCanonical["
|
|
41
|
-
export { __niceevalExport18 as
|
|
42
|
-
const __niceevalExport19 = __niceevalCanonical["
|
|
43
|
-
export { __niceevalExport19 as
|
|
44
|
-
const __niceevalExport20 = __niceevalCanonical["
|
|
45
|
-
export { __niceevalExport20 as
|
|
46
|
-
const __niceevalExport21 = __niceevalCanonical["
|
|
47
|
-
export { __niceevalExport21 as
|
|
48
|
-
const __niceevalExport22 = __niceevalCanonical["
|
|
49
|
-
export { __niceevalExport22 as
|
|
50
|
-
const __niceevalExport23 = __niceevalCanonical["
|
|
51
|
-
export { __niceevalExport23 as
|
|
52
|
-
const __niceevalExport24 = __niceevalCanonical["
|
|
53
|
-
export { __niceevalExport24 as
|
|
54
|
-
const __niceevalExport25 = __niceevalCanonical["
|
|
55
|
-
export { __niceevalExport25 as
|
|
56
|
-
const __niceevalExport26 = __niceevalCanonical["
|
|
57
|
-
export { __niceevalExport26 as
|
|
58
|
-
const __niceevalExport27 = __niceevalCanonical["
|
|
59
|
-
export { __niceevalExport27 as
|
|
60
|
-
const __niceevalExport28 = __niceevalCanonical["
|
|
61
|
-
export { __niceevalExport28 as
|
|
62
|
-
const __niceevalExport29 = __niceevalCanonical["
|
|
63
|
-
export { __niceevalExport29 as
|
|
64
|
-
const __niceevalExport30 = __niceevalCanonical["
|
|
65
|
-
export { __niceevalExport30 as
|
|
66
|
-
const __niceevalExport31 = __niceevalCanonical["
|
|
67
|
-
export { __niceevalExport31 as
|
|
68
|
-
const __niceevalExport32 = __niceevalCanonical["
|
|
69
|
-
export { __niceevalExport32 as
|
|
70
|
-
const __niceevalExport33 = __niceevalCanonical["
|
|
71
|
-
export { __niceevalExport33 as
|
|
72
|
-
const __niceevalExport34 = __niceevalCanonical["
|
|
73
|
-
export { __niceevalExport34 as
|
|
74
|
-
const __niceevalExport35 = __niceevalCanonical["
|
|
75
|
-
export { __niceevalExport35 as
|
|
76
|
-
const __niceevalExport36 = __niceevalCanonical["
|
|
77
|
-
export { __niceevalExport36 as
|
|
78
|
-
const __niceevalExport37 = __niceevalCanonical["
|
|
79
|
-
export { __niceevalExport37 as
|
|
80
|
-
const __niceevalExport38 = __niceevalCanonical["
|
|
81
|
-
export { __niceevalExport38 as
|
|
82
|
-
const __niceevalExport39 = __niceevalCanonical["
|
|
83
|
-
export { __niceevalExport39 as
|
|
84
|
-
const __niceevalExport40 = __niceevalCanonical["
|
|
85
|
-
export { __niceevalExport40 as
|
|
86
|
-
const __niceevalExport41 = __niceevalCanonical["
|
|
87
|
-
export { __niceevalExport41 as
|
|
88
|
-
const __niceevalExport42 = __niceevalCanonical["validateRunDocument"];
|
|
89
|
-
export { __niceevalExport42 as validateRunDocument };
|
|
28
|
+
const __niceevalExport12 = __niceevalCanonical["RUN_ID_BRAND"];
|
|
29
|
+
export { __niceevalExport12 as RUN_ID_BRAND };
|
|
30
|
+
const __niceevalExport13 = __niceevalCanonical["RunContextLimits"];
|
|
31
|
+
export { __niceevalExport13 as RunContextLimits };
|
|
32
|
+
const __niceevalExport14 = __niceevalCanonical["RunContextSchema"];
|
|
33
|
+
export { __niceevalExport14 as RunContextSchema };
|
|
34
|
+
const __niceevalExport15 = __niceevalCanonical["SHA256_DIGEST_BRAND"];
|
|
35
|
+
export { __niceevalExport15 as SHA256_DIGEST_BRAND };
|
|
36
|
+
const __niceevalExport16 = __niceevalCanonical["SLOT_ID_BRAND"];
|
|
37
|
+
export { __niceevalExport16 as SLOT_ID_BRAND };
|
|
38
|
+
const __niceevalExport17 = __niceevalCanonical["SOURCE_ITEM_ID_BRAND"];
|
|
39
|
+
export { __niceevalExport17 as SOURCE_ITEM_ID_BRAND };
|
|
40
|
+
const __niceevalExport18 = __niceevalCanonical["UTC_MILLIS_BRAND"];
|
|
41
|
+
export { __niceevalExport18 as UTC_MILLIS_BRAND };
|
|
42
|
+
const __niceevalExport19 = __niceevalCanonical["canonicalizeRunContext"];
|
|
43
|
+
export { __niceevalExport19 as canonicalizeRunContext };
|
|
44
|
+
const __niceevalExport20 = __niceevalCanonical["compareCanonicalIdentity"];
|
|
45
|
+
export { __niceevalExport20 as compareCanonicalIdentity };
|
|
46
|
+
const __niceevalExport21 = __niceevalCanonical["isCanonicalProjectRelativePath"];
|
|
47
|
+
export { __niceevalExport21 as isCanonicalProjectRelativePath };
|
|
48
|
+
const __niceevalExport22 = __niceevalCanonical["isNiceEvalRecordAttachmentName"];
|
|
49
|
+
export { __niceevalExport22 as isNiceEvalRecordAttachmentName };
|
|
50
|
+
const __niceevalExport23 = __niceevalCanonical["isPortableSegment"];
|
|
51
|
+
export { __niceevalExport23 as isPortableSegment };
|
|
52
|
+
const __niceevalExport24 = __niceevalCanonical["isRecordAttachmentName"];
|
|
53
|
+
export { __niceevalExport24 as isRecordAttachmentName };
|
|
54
|
+
const __niceevalExport25 = __niceevalCanonical["isRecordAttachmentSchemaId"];
|
|
55
|
+
export { __niceevalExport25 as isRecordAttachmentSchemaId };
|
|
56
|
+
const __niceevalExport26 = __niceevalCanonical["isRecordDomainIdentity"];
|
|
57
|
+
export { __niceevalExport26 as isRecordDomainIdentity };
|
|
58
|
+
const __niceevalExport27 = __niceevalCanonical["isRecordFormat"];
|
|
59
|
+
export { __niceevalExport27 as isRecordFormat };
|
|
60
|
+
const __niceevalExport28 = __niceevalCanonical["isRecordFormatId"];
|
|
61
|
+
export { __niceevalExport28 as isRecordFormatId };
|
|
62
|
+
const __niceevalExport29 = __niceevalCanonical["isSha256Digest"];
|
|
63
|
+
export { __niceevalExport29 as isSha256Digest };
|
|
64
|
+
const __niceevalExport30 = __niceevalCanonical["isUtcMillis"];
|
|
65
|
+
export { __niceevalExport30 as isUtcMillis };
|
|
66
|
+
const __niceevalExport31 = __niceevalCanonical["nonEmptyRecordIssues"];
|
|
67
|
+
export { __niceevalExport31 as nonEmptyRecordIssues };
|
|
68
|
+
const __niceevalExport32 = __niceevalCanonical["parseRecordAttachmentSchemaId"];
|
|
69
|
+
export { __niceevalExport32 as parseRecordAttachmentSchemaId };
|
|
70
|
+
const __niceevalExport33 = __niceevalCanonical["recordAttachmentNameTextOfSchemaId"];
|
|
71
|
+
export { __niceevalExport33 as recordAttachmentNameTextOfSchemaId };
|
|
72
|
+
const __niceevalExport34 = __niceevalCanonical["recordAttemptReferenceKey"];
|
|
73
|
+
export { __niceevalExport34 as recordAttemptReferenceKey };
|
|
74
|
+
const __niceevalExport35 = __niceevalCanonical["runContextCanonicalJson"];
|
|
75
|
+
export { __niceevalExport35 as runContextCanonicalJson };
|
|
76
|
+
const __niceevalExport36 = __niceevalCanonical["validateAttemptDocument"];
|
|
77
|
+
export { __niceevalExport36 as validateAttemptDocument };
|
|
78
|
+
const __niceevalExport37 = __niceevalCanonical["validateExpectedSlots"];
|
|
79
|
+
export { __niceevalExport37 as validateExpectedSlots };
|
|
80
|
+
const __niceevalExport38 = __niceevalCanonical["validateMemberDocument"];
|
|
81
|
+
export { __niceevalExport38 as validateMemberDocument };
|
|
82
|
+
const __niceevalExport39 = __niceevalCanonical["validateRecordCore"];
|
|
83
|
+
export { __niceevalExport39 as validateRecordCore };
|
|
84
|
+
const __niceevalExport40 = __niceevalCanonical["validateRunContext"];
|
|
85
|
+
export { __niceevalExport40 as validateRunContext };
|
|
86
|
+
const __niceevalExport41 = __niceevalCanonical["validateRunDocument"];
|
|
87
|
+
export { __niceevalExport41 as validateRunDocument };
|
|
90
88
|
//# sourceMappingURL=index.js.map
|
|
@@ -15,7 +15,7 @@ const services_ts_1 = require("./services.cjs");
|
|
|
15
15
|
const DEFAULT_STREAM_CHUNK_BYTES = 64 * 1024;
|
|
16
16
|
const GIT_MAX_OUTPUT_BYTES = 1024 * 1024;
|
|
17
17
|
const GIT_MAX_STATUS_ENTRIES = 10000;
|
|
18
|
-
const MIGRATION_SENTINEL_MAXIMUM_BYTES =
|
|
18
|
+
const MIGRATION_SENTINEL_MAXIMUM_BYTES = 16 * 1024 * 1024;
|
|
19
19
|
function nodeErrorCode(cause) {
|
|
20
20
|
if (typeof cause !== "object" || cause === null) {
|
|
21
21
|
return undefined;
|
|
@@ -491,6 +491,7 @@ const nodeFileSystem = {
|
|
|
491
491
|
yield* syncDirectoryAt(parent);
|
|
492
492
|
})),
|
|
493
493
|
syncDirectory: (directory) => effect_1.Effect.flatMap(resolvePortablePath(directory, false), (path) => syncDirectoryAt(path)),
|
|
494
|
+
removeFile: (file) => effect_1.Effect.flatMap(resolvePortablePath(file, true), (path) => removeFileIfPresentAt(path, "remove-path")),
|
|
494
495
|
createRunDirectory: ({ root, runId }) => effect_1.Effect.gen(function* () {
|
|
495
496
|
yield* nodeFileSystem.ensureDirectory((0, services_ts_1.recordPortablePath)(root, "runs"));
|
|
496
497
|
yield* nodeFileSystem.createDirectory((0, services_ts_1.recordPortablePath)(root, "runs", runId));
|
|
@@ -506,13 +507,13 @@ const nodeFileSystem = {
|
|
|
506
507
|
maximumBytes: 0,
|
|
507
508
|
}).pipe(effect_1.Effect.map((bytes) => bytes !== undefined && bytes.byteLength === 0), effect_1.Effect.catchTag("RecordResourceLimitExceeded", () => effect_1.Effect.succeed(false)), effect_1.Effect.catchTag("RecordPathTypeInvalid", () => effect_1.Effect.succeed(false))),
|
|
508
509
|
migrationSentinelPresent: (root) => effect_1.Effect.map(nodeFileSystem.pathKind((0, services_ts_1.recordPortablePath)(root, "migration.in-progress")), (kind) => kind !== "missing"),
|
|
509
|
-
createMigrationSentinel: (root, restoreCommit) => effect_1.Effect.uninterruptible(nodeFileSystem.writeFile({
|
|
510
|
+
createMigrationSentinel: (root, restoreCommit, expectedRelativePaths) => effect_1.Effect.uninterruptible(nodeFileSystem.writeFile({
|
|
510
511
|
file: (0, services_ts_1.recordPortablePath)(root, "migration.in-progress"),
|
|
511
|
-
bytes: new TextEncoder().encode(`${JSON.stringify({ restoreCommit })}\n`),
|
|
512
|
+
bytes: new TextEncoder().encode(`${JSON.stringify({ restoreCommit, expectedRelativePaths })}\n`),
|
|
512
513
|
maximumBytes: MIGRATION_SENTINEL_MAXIMUM_BYTES,
|
|
513
514
|
mode: "exclusive",
|
|
514
515
|
})),
|
|
515
|
-
|
|
516
|
+
readMigrationSentinel: (root) => effect_1.Effect.map(nodeFileSystem.readFile({
|
|
516
517
|
file: (0, services_ts_1.recordPortablePath)(root, "migration.in-progress"),
|
|
517
518
|
maximumBytes: MIGRATION_SENTINEL_MAXIMUM_BYTES,
|
|
518
519
|
}), (bytes) => {
|
|
@@ -524,9 +525,18 @@ const nodeFileSystem = {
|
|
|
524
525
|
return undefined;
|
|
525
526
|
const keys = Object.keys(value);
|
|
526
527
|
const restoreCommit = Reflect.get(value, "restoreCommit");
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
528
|
+
const expectedRelativePaths = Reflect.get(value, "expectedRelativePaths");
|
|
529
|
+
if (keys.length !== 2 ||
|
|
530
|
+
typeof restoreCommit !== "string" ||
|
|
531
|
+
!/^[0-9a-f]{40,64}$/.test(restoreCommit) ||
|
|
532
|
+
!Array.isArray(expectedRelativePaths) ||
|
|
533
|
+
expectedRelativePaths.some((path) => typeof path !== "string" || path.length === 0 || path.startsWith("/") ||
|
|
534
|
+
path.includes("\\") || path.split("/").some((segment) => segment.length === 0 || segment === "." || segment === "..")))
|
|
535
|
+
return undefined;
|
|
536
|
+
return Object.freeze({
|
|
537
|
+
restoreCommit,
|
|
538
|
+
expectedRelativePaths: Object.freeze([...expectedRelativePaths]),
|
|
539
|
+
});
|
|
530
540
|
}
|
|
531
541
|
catch {
|
|
532
542
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["node.ts"],"names":[],"mappings":"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","sourcesContent":["import { execFile } from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport { lstat, mkdir, open, opendir, rm, unlink, type FileHandle, } from \"node:fs/promises\";\nimport { constants, type Dir } from \"node:fs\";\nimport { dirname, isAbsolute, join, relative, sep } from \"node:path\";\nimport { Either, Effect, Layer, Stream } from \"effect\";\nimport { NodeRecordCoordinationLive } from \"../../coordination/platform/node.ts\";\nimport { isPortableSegment } from \"../model/identifiers.ts\";\nimport { RecordGitCommandError, RecordIoError, RecordPathAlreadyExists, RecordPathInvalid, RecordPathTypeInvalid, RecordPermissionError, RecordResourceLimitExceeded, RecordResourceLimitInvalid, RecordRootInvalid, type RecordFileSystemError, type RecordGitError, type RecordPathKind, type RecordPlatformOperation, type RecordPlatformResource, } from \"./errors.ts\";\nimport { recordRootPaths } from \"./root.ts\";\nimport { RecordEntropy, RecordFileSystem, RecordGit, recordPortablePath, type RecordBackupState, type RecordDirectoryEntry, type RecordFileSystemService, type RecordIncompleteRunDelete, type RecordPortablePath, type RecordWriteFileStreamInput, } from \"./services.ts\";\nconst DEFAULT_STREAM_CHUNK_BYTES = 64 * 1024;\nconst GIT_MAX_OUTPUT_BYTES = 1024 * 1024;\nconst GIT_MAX_STATUS_ENTRIES = 10000;\nconst MIGRATION_SENTINEL_MAXIMUM_BYTES = 256;\nfunction nodeErrorCode(cause: unknown): string | undefined {\n if (typeof cause !== \"object\" || cause === null) {\n return undefined;\n }\n const code = Reflect.get(cause, \"code\");\n return typeof code === \"string\" ? code : undefined;\n}\nfunction nodeErrorMessage(cause: unknown): string {\n if (typeof cause !== \"object\" || cause === null) {\n return \"\";\n }\n const message = Reflect.get(cause, \"message\");\n return typeof message === \"string\" ? message : \"\";\n}\nfunction isPermissionError(cause: unknown): boolean {\n const code = nodeErrorCode(cause);\n return code === \"EACCES\" || code === \"EPERM\";\n}\nfunction isMissingError(cause: unknown): boolean {\n return nodeErrorCode(cause) === \"ENOENT\";\n}\nfunction isAlreadyExistsError(cause: unknown): boolean {\n return nodeErrorCode(cause) === \"EEXIST\";\n}\nfunction fileSystemError(operation: RecordPlatformOperation, path: string, cause: unknown): RecordIoError | RecordPermissionError {\n return isPermissionError(cause)\n ? new RecordPermissionError({\n code: \"record-permission-denied\",\n operation,\n path,\n cause,\n })\n : new RecordIoError({\n code: \"record-io-error\",\n operation,\n path,\n cause,\n });\n}\nfunction isFileSystemError(cause: unknown): cause is RecordFileSystemError {\n return (cause instanceof RecordRootInvalid ||\n cause instanceof RecordPathInvalid ||\n cause instanceof RecordPathTypeInvalid ||\n cause instanceof RecordPathAlreadyExists ||\n cause instanceof RecordResourceLimitInvalid ||\n cause instanceof RecordResourceLimitExceeded ||\n cause instanceof RecordIoError ||\n cause instanceof RecordPermissionError);\n}\nfunction isFiniteNonNegativeInteger(value: number): boolean {\n return Number.isFinite(value) && Number.isInteger(value) && value >= 0;\n}\nfunction validateLimit(resource: RecordPlatformResource, maximum: number): Effect.Effect<void, RecordResourceLimitInvalid> {\n return isFiniteNonNegativeInteger(maximum)\n ? Effect.void\n : Effect.fail(new RecordResourceLimitInvalid({\n code: \"record-resource-limit-invalid\",\n resource,\n maximum,\n }));\n}\nfunction limitExceeded(resource: RecordPlatformResource, maximum: number, observedAtLeast: number, path: string): RecordResourceLimitExceeded {\n return new RecordResourceLimitExceeded({\n code: \"record-resource-limit-exceeded\",\n resource,\n maximum,\n observedAtLeast,\n path,\n });\n}\ntype PathResolutionError = RecordRootInvalid | RecordPathInvalid;\n/**\n * `recordPortablePath` is convenience data only. Every live call reaches this\n * function, so a copied or forged JS object cannot skip portable-segment\n * validation or escape the issued root.\n */\nfunction resolvePortablePath(path: RecordPortablePath, requireFilePath: boolean): Effect.Effect<string, PathResolutionError> {\n const candidate: unknown = path;\n if (typeof candidate !== \"object\" || candidate === null) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"segment-invalid\",\n segments: [],\n }));\n }\n const root = Reflect.get(candidate, \"root\");\n const paths = recordRootPaths(root);\n if (paths === undefined) {\n return Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n const rawSegments = Reflect.get(candidate, \"segments\");\n if (!Array.isArray(rawSegments)) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"segment-invalid\",\n segments: [],\n }));\n }\n const segments: string[] = [];\n for (const segment of rawSegments) {\n if (typeof segment !== \"string\" || !isPortableSegment(segment)) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"segment-invalid\",\n segments,\n }));\n }\n segments.push(segment);\n }\n if (requireFilePath && segments.length === 0) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"file-path-empty\",\n segments,\n }));\n }\n return Effect.succeed(join(paths.portableRoot, ...segments));\n}\n/**\n * Record must classify a symlink as `other` without following it. The platform\n * FileSystem service exposes following `stat` and names-only directory reads,\n * so this intentionally stays the narrow native no-follow adapter.\n */\nasync function nodePathKind(path: string): Promise<RecordPathKind> {\n try {\n const state = await lstat(path);\n if (state.isFile())\n return \"file\";\n if (state.isDirectory())\n return \"directory\";\n return \"other\";\n }\n catch (cause) {\n if (isMissingError(cause))\n return \"missing\";\n throw cause;\n }\n}\nfunction pathKindAt(path: string): Effect.Effect<RecordPathKind, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: () => nodePathKind(path),\n catch: (cause) => fileSystemError(\"read-file\", path, cause),\n });\n}\nfunction ensureDirectoryAt(path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: async () => {\n await mkdir(path, { recursive: true });\n },\n catch: (cause) => fileSystemError(\"create-directory\", path, cause),\n }).pipe(Effect.zipRight(syncDirectoryAt(path)), Effect.zipRight(dirname(path) === path ? Effect.void : syncDirectoryAt(dirname(path))));\n}\nfunction closeHandle(handle: FileHandle, operation: RecordPlatformOperation, path: string): Effect.Effect<void> {\n return Effect.tryPromise({\n try: () => handle.close(),\n catch: (cause) => fileSystemError(operation, path, cause),\n }).pipe(Effect.orDie);\n}\nfunction syncHandle(handle: FileHandle, operation: RecordPlatformOperation, path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: () => handle.sync(),\n catch: (cause) => fileSystemError(operation, path, cause),\n });\n}\nfunction syncDirectoryAt(path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n // Durable publication requires an explicit directory fsync. High-level\n // platform write helpers do not include this parent-directory commit step.\n const acquire = Effect.tryPromise({\n try: () => open(path, \"r\"),\n catch: (cause) => fileSystemError(\"sync-directory\", path, cause),\n });\n return Effect.scoped(Effect.acquireRelease(acquire, (handle) => closeHandle(handle, \"sync-directory\", path)).pipe(Effect.flatMap((handle) => syncHandle(handle, \"sync-directory\", path))));\n}\nfunction createDirectoryAt(path: string): Effect.Effect<void, RecordFileSystemError> {\n return Effect.tryPromise({\n try: () => mkdir(path),\n catch: (cause) => isAlreadyExistsError(cause)\n ? new RecordPathAlreadyExists({\n code: \"record-path-already-exists\",\n path,\n })\n : fileSystemError(\"create-directory\", path, cause),\n }).pipe(Effect.zipRight(syncDirectoryAt(dirname(path))));\n}\nfunction writeFileHandle(handle: FileHandle, bytes: Uint8Array, path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: () => handle.writeFile(bytes),\n catch: (cause) => fileSystemError(\"write-file\", path, cause),\n });\n}\nfunction openForWrite(path: string, mode: \"exclusive\" | \"replace\" | \"replace-no-follow\", portableRoot: string): Effect.Effect<FileHandle, RecordFileSystemError> {\n // `wx` + 0600 + fsync is Record's create-exclusive publication primitive;\n // do not replace it with a high-level write that weakens those guarantees.\n return Effect.tryPromise({\n try: async () => {\n if (mode !== \"replace-no-follow\") {\n return open(path, mode === \"exclusive\" ? \"wx\" : \"w\", 0o600);\n }\n const relativePath = relative(portableRoot, path);\n const segments = relativePath.split(sep);\n let current = portableRoot;\n const rootState = await lstat(current);\n if (!rootState.isDirectory()) {\n throw new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path: current,\n expected: \"directory\",\n actual: rootState.isFile() ? \"file\" : \"other\",\n });\n }\n for (const segment of segments.slice(0, -1)) {\n current = join(current, segment);\n const state = await lstat(current);\n if (!state.isDirectory()) {\n throw new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path: current,\n expected: \"directory\",\n actual: state.isFile() ? \"file\" : \"other\",\n });\n }\n }\n const expected = await lstat(path);\n if (!expected.isFile() || expected.nlink !== 1) {\n throw new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"file\",\n actual: expected.isDirectory() ? \"directory\" : \"other\",\n });\n }\n const handle = await open(path, constants.O_WRONLY | constants.O_NOFOLLOW, 0o600);\n try {\n const actual = await handle.stat();\n if (!actual.isFile() || actual.nlink !== 1 ||\n actual.dev !== expected.dev || actual.ino !== expected.ino) {\n throw new Error(\"record replace target identity changed before write\");\n }\n await handle.truncate(0);\n return handle;\n }\n catch (cause) {\n await handle.close().catch(() => { });\n throw cause;\n }\n },\n catch: (cause) => isFileSystemError(cause)\n ? cause\n : mode === \"exclusive\" && isAlreadyExistsError(cause)\n ? new RecordPathAlreadyExists({\n code: \"record-path-already-exists\",\n path,\n })\n : fileSystemError(\"write-file\", path, cause),\n });\n}\nfunction writeBytesAt(input: {\n readonly path: string;\n readonly bytes: Uint8Array;\n readonly maximumBytes: number;\n readonly mode: \"exclusive\" | \"replace\" | \"replace-no-follow\";\n readonly portableRoot: string;\n}): Effect.Effect<void, RecordFileSystemError> {\n return Effect.gen(function* () {\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n if (input.bytes.byteLength > input.maximumBytes) {\n return yield* Effect.fail(limitExceeded(\"file-bytes\", input.maximumBytes, input.bytes.byteLength, input.path));\n }\n const parent = dirname(input.path);\n yield* ensureDirectoryAt(parent);\n yield* Effect.scoped(Effect.acquireRelease(openForWrite(input.path, input.mode, input.portableRoot), (handle) => closeHandle(handle, \"write-file\", input.path)).pipe(Effect.flatMap((handle) => writeFileHandle(handle, input.bytes, input.path).pipe(Effect.zipRight(syncHandle(handle, \"sync-file\", input.path))))));\n yield* syncDirectoryAt(parent);\n });\n}\nfunction writeChunk(handle: FileHandle, bytes: Uint8Array, path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: async () => {\n let offset = 0;\n while (offset < bytes.byteLength) {\n const written = await handle.write(bytes, offset, bytes.byteLength - offset);\n if (written.bytesWritten === 0) {\n throw new Error(\"Node wrote zero bytes before the chunk was complete\");\n }\n offset += written.bytesWritten;\n }\n },\n catch: (cause) => fileSystemError(\"write-file\", path, cause),\n });\n}\nasync function* readChunks(handle: FileHandle, path: string, maximumBytes: number, chunkBytes: number): AsyncGenerator<Uint8Array, void, undefined> {\n let observed = 0;\n for (;;) {\n // A one-byte probe after the cap distinguishes exact-size data from an\n // over-limit file without materializing its remainder.\n const capacity = observed < maximumBytes\n ? Math.min(chunkBytes, maximumBytes - observed + 1)\n : 1;\n const chunk = new Uint8Array(capacity);\n const result = await handle.read(chunk, 0, chunk.byteLength, null);\n if (result.bytesRead === 0)\n return;\n observed += result.bytesRead;\n if (observed > maximumBytes) {\n throw limitExceeded(\"file-bytes\", maximumBytes, observed, path);\n }\n yield chunk.slice(0, result.bytesRead);\n }\n}\nfunction readStreamAt(path: string, maximumBytes: number, chunkBytes: number): Stream.Stream<Uint8Array, RecordFileSystemError> {\n const acquire = Effect.tryPromise({\n try: () => open(path, \"r\"),\n catch: (cause) => fileSystemError(\"read-file\", path, cause),\n });\n return Stream.unwrapScoped(Effect.map(Effect.acquireRelease(acquire, (handle) => closeHandle(handle, \"read-file\", path)), (handle) => Stream.fromAsyncIterable(readChunks(handle, path, maximumBytes, chunkBytes), (cause) => isFileSystemError(cause)\n ? cause\n : fileSystemError(\"read-file\", path, cause))));\n}\nfunction concatChunks(chunks: readonly Uint8Array[]): Uint8Array {\n let length = 0;\n for (const chunk of chunks) {\n length += chunk.byteLength;\n }\n const result = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return result;\n}\nfunction closeDirectory(directory: Dir, path: string): Effect.Effect<void> {\n return Effect.tryPromise({\n try: () => directory.close(),\n catch: (cause) => fileSystemError(\"list-directory\", path, cause),\n }).pipe(Effect.orDie);\n}\nasync function readDirectoryBounded(directory: Dir, maximumEntries: number, path: string): Promise<readonly RecordDirectoryEntry[]> {\n // Dirent classification preserves the same no-follow policy as lstat above;\n // the platform names-only directory API cannot supply these entry kinds.\n const entries: RecordDirectoryEntry[] = [];\n for (;;) {\n const entry = await directory.read();\n if (entry === null)\n break;\n if (entries.length === maximumEntries) {\n throw limitExceeded(\"directory-entries\", maximumEntries, maximumEntries + 1, path);\n }\n entries.push({\n name: entry.name,\n kind: entry.isFile()\n ? \"file\"\n : entry.isDirectory()\n ? \"directory\"\n : \"other\",\n });\n }\n entries.sort((left, right) => left.name === right.name ? 0 : left.name < right.name ? -1 : 1);\n return Object.freeze(entries);\n}\nfunction directoryEntriesAt(path: string, maximumEntries: number): Effect.Effect<readonly RecordDirectoryEntry[], RecordFileSystemError> {\n const acquire = Effect.tryPromise({\n try: () => opendir(path),\n catch: (cause) => fileSystemError(\"list-directory\", path, cause),\n });\n return Effect.scoped(Effect.acquireRelease(acquire, (directory) => closeDirectory(directory, path)).pipe(Effect.flatMap((directory) => Effect.tryPromise({\n try: () => readDirectoryBounded(directory, maximumEntries, path),\n catch: (cause) => isFileSystemError(cause)\n ? cause\n : fileSystemError(\"list-directory\", path, cause),\n }))));\n}\nfunction removeFileIfPresentAt(path: string, operation: \"remove-path\"): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: async () => {\n try {\n await unlink(path);\n }\n catch (cause) {\n if (!isMissingError(cause))\n throw cause;\n }\n },\n catch: (cause) => fileSystemError(operation, path, cause),\n }).pipe(Effect.zipRight(syncDirectoryAt(dirname(path))));\n}\nconst nodeFileSystem: RecordFileSystemService = {\n pathKind: (path) => Effect.flatMap(resolvePortablePath(path, false), (resolved) => pathKindAt(resolved)),\n ensureDirectory: (directory) => Effect.flatMap(resolvePortablePath(directory, false), (resolved) => ensureDirectoryAt(resolved)),\n createDirectory: (directory) => Effect.flatMap(resolvePortablePath(directory, true), (resolved) => createDirectoryAt(resolved)),\n listDirectory: (input) => Effect.gen(function* () {\n const path = yield* resolvePortablePath(input.directory, false);\n yield* validateLimit(\"directory-entries\", input.maximumEntries);\n const kind = yield* pathKindAt(path);\n if (kind === \"missing\")\n return Object.freeze([]) as readonly RecordDirectoryEntry[];\n if (kind !== \"directory\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"directory\",\n actual: kind,\n }));\n }\n return yield* directoryEntriesAt(path, input.maximumEntries);\n }),\n readFile: (input) => Effect.gen(function* () {\n const path = yield* resolvePortablePath(input.file, true);\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n const kind = yield* pathKindAt(path);\n if (kind === \"missing\")\n return undefined;\n if (kind !== \"file\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"file\",\n actual: kind,\n }));\n }\n const chunks = yield* Stream.runFold(readStreamAt(path, input.maximumBytes, DEFAULT_STREAM_CHUNK_BYTES), [] as readonly Uint8Array[], (all, chunk) => [...all, chunk]);\n return concatChunks(chunks);\n }),\n readFileStream: (input) => Stream.unwrap(Effect.gen(function* () {\n const path = yield* resolvePortablePath(input.file, true);\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n const chunkBytes = input.chunkBytes ?? DEFAULT_STREAM_CHUNK_BYTES;\n yield* validateLimit(\"file-bytes\", chunkBytes);\n if (chunkBytes === 0) {\n return yield* Effect.fail(new RecordResourceLimitInvalid({\n code: \"record-resource-limit-invalid\",\n resource: \"file-bytes\",\n maximum: chunkBytes,\n }));\n }\n const kind = yield* pathKindAt(path);\n if (kind !== \"file\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"file\",\n actual: kind,\n }));\n }\n return readStreamAt(path, input.maximumBytes, chunkBytes);\n })),\n writeFile: (input) => Effect.flatMap(resolvePortablePath(input.file, true), (path) => {\n const paths = recordRootPaths(input.file.root);\n if (paths === undefined) {\n return Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n return writeBytesAt({\n path,\n portableRoot: paths.portableRoot,\n bytes: input.bytes,\n maximumBytes: input.maximumBytes,\n mode: input.mode,\n });\n }),\n writeFileStream: <E, R>(input: RecordWriteFileStreamInput<E, R>): Effect.Effect<void, RecordFileSystemError | E, R> => Effect.flatMap(resolvePortablePath(input.file, true), (path) => Effect.gen(function* () {\n const paths = recordRootPaths(input.file.root);\n if (paths === undefined) {\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n const parent = dirname(path);\n yield* ensureDirectoryAt(parent);\n let written = 0;\n yield* Effect.scoped(Effect.acquireRelease(openForWrite(path, input.mode, paths.portableRoot), (handle) => closeHandle(handle, \"write-file\", path)).pipe(Effect.flatMap((handle) => {\n const writeOne = (chunk: Uint8Array): Effect.Effect<void, RecordFileSystemError> => {\n const observedAtLeast = written + chunk.byteLength;\n if (observedAtLeast > input.maximumBytes) {\n return Effect.fail(limitExceeded(\"file-bytes\", input.maximumBytes, observedAtLeast, path));\n }\n return writeChunk(handle, chunk, path).pipe(Effect.tap(() => Effect.sync(() => {\n written = observedAtLeast;\n })));\n };\n return Stream.runForEach(input.stream, writeOne).pipe(Effect.zipRight(syncHandle(handle, \"sync-file\", path)));\n })));\n yield* syncDirectoryAt(parent);\n })),\n syncDirectory: (directory) => Effect.flatMap(resolvePortablePath(directory, false), (path) => syncDirectoryAt(path)),\n createRunDirectory: ({ root, runId }) => Effect.gen(function* () {\n yield* nodeFileSystem.ensureDirectory(recordPortablePath(root, \"runs\"));\n yield* nodeFileSystem.createDirectory(recordPortablePath(root, \"runs\", runId));\n }),\n createCompleteMarker: ({ root, runId }) => Effect.uninterruptible(nodeFileSystem.writeFile({\n file: recordPortablePath(root, \"runs\", runId, \"complete\"),\n bytes: new Uint8Array(),\n maximumBytes: 0,\n mode: \"exclusive\",\n })),\n isCompleteMarker: ({ root, runId }) => nodeFileSystem.readFile({\n file: recordPortablePath(root, \"runs\", runId, \"complete\"),\n maximumBytes: 0,\n }).pipe(Effect.map((bytes) => bytes !== undefined && bytes.byteLength === 0), Effect.catchTag(\"RecordResourceLimitExceeded\", () => Effect.succeed(false)), Effect.catchTag(\"RecordPathTypeInvalid\", () => Effect.succeed(false))),\n migrationSentinelPresent: (root) => Effect.map(nodeFileSystem.pathKind(recordPortablePath(root, \"migration.in-progress\")), (kind) => kind !== \"missing\"),\n createMigrationSentinel: (root, restoreCommit) => Effect.uninterruptible(nodeFileSystem.writeFile({\n file: recordPortablePath(root, \"migration.in-progress\"),\n bytes: new TextEncoder().encode(`${JSON.stringify({ restoreCommit })}\\n`),\n maximumBytes: MIGRATION_SENTINEL_MAXIMUM_BYTES,\n mode: \"exclusive\",\n })),\n readMigrationSentinelRestoreCommit: (root) => Effect.map(nodeFileSystem.readFile({\n file: recordPortablePath(root, \"migration.in-progress\"),\n maximumBytes: MIGRATION_SENTINEL_MAXIMUM_BYTES,\n }), (bytes) => {\n if (bytes === undefined)\n return undefined;\n try {\n const value: unknown = JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes));\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n return undefined;\n const keys = Object.keys(value);\n const restoreCommit = Reflect.get(value, \"restoreCommit\");\n return keys.length === 1 && typeof restoreCommit === \"string\" && /^[0-9a-f]{40,64}$/.test(restoreCommit)\n ? restoreCommit\n : undefined;\n }\n catch {\n return undefined;\n }\n }),\n removeMigrationSentinel: (root) => Effect.flatMap(resolvePortablePath(recordPortablePath(root, \"migration.in-progress\"), true), (path) => removeFileIfPresentAt(path, \"remove-path\")),\n deleteIncompleteRun: ({ root, runId }) => Effect.gen(function* () {\n const runPath = yield* resolvePortablePath(recordPortablePath(root, \"runs\", runId), true);\n const runKind = yield* pathKindAt(runPath);\n if (runKind === \"missing\") {\n return { state: \"missing\" } satisfies RecordIncompleteRunDelete;\n }\n if (runKind !== \"directory\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path: runPath,\n expected: \"directory\",\n actual: runKind,\n }));\n }\n if (yield* nodeFileSystem.isCompleteMarker({ root, runId })) {\n return { state: \"skipped-complete\" } satisfies RecordIncompleteRunDelete;\n }\n yield* Effect.tryPromise({\n try: () => rm(runPath, { recursive: true, force: true }),\n catch: (cause) => fileSystemError(\"remove-path\", runPath, cause),\n });\n yield* syncDirectoryAt(dirname(runPath));\n return { state: \"deleted\" } satisfies RecordIncompleteRunDelete;\n }),\n};\ninterface GitOutput {\n readonly stdout: string;\n readonly stderr: string;\n}\nfunction executeGit(args: readonly string[], cwd: string, signal: AbortSignal): Promise<GitOutput> {\n // Keep the native adapter: Record requires one bounded collection covering\n // stdout and stderr, exact argv execution, and AbortSignal cancellation.\n // CommandExecutor has no single primitive with all of those guarantees.\n return new Promise((resolve, reject) => {\n execFile(\"git\", [...args], { cwd, encoding: \"utf8\", maxBuffer: GIT_MAX_OUTPUT_BYTES, signal }, (error, stdout, stderr) => {\n if (error !== null) {\n reject(error);\n return;\n }\n resolve({ stdout: String(stdout), stderr: String(stderr) });\n });\n });\n}\nfunction gitError(operation: \"locate-worktree\" | \"read-head\" | \"inspect-status\", cause: unknown): RecordGitError {\n if (nodeErrorCode(cause) === \"ERR_CHILD_PROCESS_STDIO_MAXBUFFER\") {\n return limitExceeded(\"git-output\", GIT_MAX_OUTPUT_BYTES, GIT_MAX_OUTPUT_BYTES, \"git\");\n }\n return new RecordGitCommandError({\n code: \"record-git-command-failed\",\n operation,\n cause,\n });\n}\nfunction runGit(operation: \"locate-worktree\" | \"read-head\" | \"inspect-status\", args: readonly string[], cwd: string): Effect.Effect<GitOutput, RecordGitError> {\n return Effect.tryPromise({\n try: (signal) => executeGit(args, cwd, signal),\n catch: (cause) => gitError(operation, cause),\n });\n}\nfunction isNotGitWorktree(error: RecordGitCommandError): boolean {\n const code = nodeErrorCode(error.cause);\n return code === \"ENOENT\" || nodeErrorMessage(error.cause).includes(\"not a git repository\");\n}\nfunction portablePathWithinWorktree(worktree: string, portableRoot: string): string | undefined {\n const rootRelative = relative(worktree, portableRoot);\n if (rootRelative === \"..\" ||\n rootRelative.startsWith(`..${sep}`) ||\n isAbsolute(rootRelative)) {\n return undefined;\n }\n return rootRelative === \"\" ? \".\" : rootRelative;\n}\ninterface GitStatusEntry {\n readonly status: string;\n readonly path: string;\n}\nfunction statusEntries(stdout: string): readonly GitStatusEntry[] {\n const records = stdout.split(\"\\0\").filter((entry) => entry !== \"\");\n const entries: GitStatusEntry[] = [];\n for (let index = 0; index < records.length; index += 1) {\n const record = records[index]!;\n const status = record.slice(0, 2);\n const path = record.length > 3 ? record.slice(3) : \"\";\n entries.push(Object.freeze({ status, path }));\n if (status.includes(\"R\") || status.includes(\"C\"))\n index += 1;\n }\n return Object.freeze(entries);\n}\nconst nodeGit = {\n inspectBackupState: (root: unknown): Effect.Effect<RecordBackupState, RecordGitError> => Effect.gen(function* () {\n const paths = recordRootPaths(root);\n if (paths === undefined) {\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n const location = yield* Effect.either(runGit(\"locate-worktree\", [\"rev-parse\", \"--show-toplevel\"], dirname(paths.portableRoot)));\n if (Either.isLeft(location)) {\n if (location.left instanceof RecordGitCommandError &&\n isNotGitWorktree(location.left)) {\n return { state: \"not-git-worktree\" } satisfies RecordBackupState;\n }\n return yield* Effect.fail(location.left);\n }\n const worktree = location.right.stdout.trim();\n const rootRelative = portablePathWithinWorktree(worktree, paths.portableRoot);\n if (rootRelative === undefined) {\n return { state: \"root-outside-worktree\" } satisfies RecordBackupState;\n }\n const head = yield* runGit(\"read-head\", [\"rev-parse\", \"--verify\", \"HEAD\"], worktree);\n const commit = head.stdout.trim();\n if (commit === \"\") {\n return yield* Effect.fail(new RecordGitCommandError({\n code: \"record-git-command-failed\",\n operation: \"read-head\",\n cause: new Error(\"git returned an empty HEAD\"),\n }));\n }\n const status = yield* runGit(\"inspect-status\", [\n \"status\",\n \"--porcelain=v1\",\n \"-z\",\n \"--ignored\",\n \"--untracked-files=all\",\n \"--\",\n rootRelative,\n ], worktree);\n const entries = statusEntries(status.stdout);\n if (entries.length > GIT_MAX_STATUS_ENTRIES) {\n return yield* Effect.fail(limitExceeded(\"git-output\", GIT_MAX_STATUS_ENTRIES, GIT_MAX_STATUS_ENTRIES + 1, \"git status\"));\n }\n return entries.length === 0\n ? ({ state: \"git-restore-point\", commit } satisfies RecordBackupState)\n : ({\n state: \"portable-root-dirty\",\n entries: Object.freeze(entries.map((entry) => `${entry.status} ${entry.path}`)),\n } satisfies RecordBackupState);\n }),\n recoveryChangesAreExpected: (input: {\n readonly root: unknown;\n readonly restoreCommit: string;\n readonly expectedPaths: readonly RecordPortablePath[];\n }): Effect.Effect<boolean, RecordGitError | RecordFileSystemError> => Effect.gen(function* () {\n const paths = recordRootPaths(input.root);\n if (paths === undefined) {\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n const location = yield* Effect.either(runGit(\"locate-worktree\", [\"rev-parse\", \"--show-toplevel\"], dirname(paths.portableRoot)));\n if (Either.isLeft(location))\n return false;\n const worktree = location.right.stdout.trim();\n const rootRelative = portablePathWithinWorktree(worktree, paths.portableRoot);\n if (rootRelative === undefined)\n return false;\n const head = yield* runGit(\"read-head\", [\"rev-parse\", \"--verify\", \"HEAD\"], worktree);\n if (head.stdout.trim() !== input.restoreCommit)\n return false;\n const expected = new Set<string>();\n for (const path of input.expectedPaths) {\n const resolved = yield* resolvePortablePath(path, true);\n const relativePath = portablePathWithinWorktree(worktree, resolved);\n if (relativePath === undefined)\n return false;\n expected.add(relativePath.split(sep).join(\"/\"));\n }\n const status = yield* runGit(\"inspect-status\", [\"status\", \"--porcelain=v1\", \"-z\", \"--ignored\", \"--untracked-files=all\", \"--\", rootRelative], worktree);\n const entries = statusEntries(status.stdout);\n if (entries.length === 0 || entries.length > GIT_MAX_STATUS_ENTRIES)\n return false;\n return entries.every((entry) => {\n const normalized = entry.path.split(sep).join(\"/\");\n if (!expected.has(normalized))\n return false;\n return normalized.endsWith(\"/migration.in-progress\")\n ? entry.status === \"??\" || entry.status === \"!!\"\n : entry.status === \" M\";\n });\n }),\n};\nexport const NodeRecordFileSystemLive = Layer.succeed(RecordFileSystem, nodeFileSystem);\nexport const NodeRecordEntropyLive = Layer.succeed(RecordEntropy, {\n uuid: Effect.sync(randomUUID),\n});\nexport const NodeRecordGitLive = Layer.succeed(RecordGit, nodeGit);\n/**\n * Convenience composition for an application boundary. Consumers still name\n * only the Tags they need in their own Effect requirements.\n */\nexport const NodeRecordLive = Layer.mergeAll(NodeRecordFileSystemLive, NodeRecordCoordinationLive, NodeRecordEntropyLive, NodeRecordGitLive);\n"]}
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["node.ts"],"names":[],"mappings":"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","sourcesContent":["import { execFile } from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport { lstat, mkdir, open, opendir, rm, unlink, type FileHandle, } from \"node:fs/promises\";\nimport { constants, type Dir } from \"node:fs\";\nimport { dirname, isAbsolute, join, relative, sep } from \"node:path\";\nimport { Either, Effect, Layer, Stream } from \"effect\";\nimport { NodeRecordCoordinationLive } from \"../../coordination/platform/node.ts\";\nimport { isPortableSegment } from \"../model/identifiers.ts\";\nimport { RecordGitCommandError, RecordIoError, RecordPathAlreadyExists, RecordPathInvalid, RecordPathTypeInvalid, RecordPermissionError, RecordResourceLimitExceeded, RecordResourceLimitInvalid, RecordRootInvalid, type RecordFileSystemError, type RecordGitError, type RecordPathKind, type RecordPlatformOperation, type RecordPlatformResource, } from \"./errors.ts\";\nimport { recordRootPaths } from \"./root.ts\";\nimport { RecordEntropy, RecordFileSystem, RecordGit, recordPortablePath, type RecordBackupState, type RecordDirectoryEntry, type RecordFileSystemService, type RecordIncompleteRunDelete, type RecordPortablePath, type RecordWriteFileStreamInput, } from \"./services.ts\";\nconst DEFAULT_STREAM_CHUNK_BYTES = 64 * 1024;\nconst GIT_MAX_OUTPUT_BYTES = 1024 * 1024;\nconst GIT_MAX_STATUS_ENTRIES = 10000;\nconst MIGRATION_SENTINEL_MAXIMUM_BYTES = 16 * 1024 * 1024;\nfunction nodeErrorCode(cause: unknown): string | undefined {\n if (typeof cause !== \"object\" || cause === null) {\n return undefined;\n }\n const code = Reflect.get(cause, \"code\");\n return typeof code === \"string\" ? code : undefined;\n}\nfunction nodeErrorMessage(cause: unknown): string {\n if (typeof cause !== \"object\" || cause === null) {\n return \"\";\n }\n const message = Reflect.get(cause, \"message\");\n return typeof message === \"string\" ? message : \"\";\n}\nfunction isPermissionError(cause: unknown): boolean {\n const code = nodeErrorCode(cause);\n return code === \"EACCES\" || code === \"EPERM\";\n}\nfunction isMissingError(cause: unknown): boolean {\n return nodeErrorCode(cause) === \"ENOENT\";\n}\nfunction isAlreadyExistsError(cause: unknown): boolean {\n return nodeErrorCode(cause) === \"EEXIST\";\n}\nfunction fileSystemError(operation: RecordPlatformOperation, path: string, cause: unknown): RecordIoError | RecordPermissionError {\n return isPermissionError(cause)\n ? new RecordPermissionError({\n code: \"record-permission-denied\",\n operation,\n path,\n cause,\n })\n : new RecordIoError({\n code: \"record-io-error\",\n operation,\n path,\n cause,\n });\n}\nfunction isFileSystemError(cause: unknown): cause is RecordFileSystemError {\n return (cause instanceof RecordRootInvalid ||\n cause instanceof RecordPathInvalid ||\n cause instanceof RecordPathTypeInvalid ||\n cause instanceof RecordPathAlreadyExists ||\n cause instanceof RecordResourceLimitInvalid ||\n cause instanceof RecordResourceLimitExceeded ||\n cause instanceof RecordIoError ||\n cause instanceof RecordPermissionError);\n}\nfunction isFiniteNonNegativeInteger(value: number): boolean {\n return Number.isFinite(value) && Number.isInteger(value) && value >= 0;\n}\nfunction validateLimit(resource: RecordPlatformResource, maximum: number): Effect.Effect<void, RecordResourceLimitInvalid> {\n return isFiniteNonNegativeInteger(maximum)\n ? Effect.void\n : Effect.fail(new RecordResourceLimitInvalid({\n code: \"record-resource-limit-invalid\",\n resource,\n maximum,\n }));\n}\nfunction limitExceeded(resource: RecordPlatformResource, maximum: number, observedAtLeast: number, path: string): RecordResourceLimitExceeded {\n return new RecordResourceLimitExceeded({\n code: \"record-resource-limit-exceeded\",\n resource,\n maximum,\n observedAtLeast,\n path,\n });\n}\ntype PathResolutionError = RecordRootInvalid | RecordPathInvalid;\n/**\n * `recordPortablePath` is convenience data only. Every live call reaches this\n * function, so a copied or forged JS object cannot skip portable-segment\n * validation or escape the issued root.\n */\nfunction resolvePortablePath(path: RecordPortablePath, requireFilePath: boolean): Effect.Effect<string, PathResolutionError> {\n const candidate: unknown = path;\n if (typeof candidate !== \"object\" || candidate === null) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"segment-invalid\",\n segments: [],\n }));\n }\n const root = Reflect.get(candidate, \"root\");\n const paths = recordRootPaths(root);\n if (paths === undefined) {\n return Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n const rawSegments = Reflect.get(candidate, \"segments\");\n if (!Array.isArray(rawSegments)) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"segment-invalid\",\n segments: [],\n }));\n }\n const segments: string[] = [];\n for (const segment of rawSegments) {\n if (typeof segment !== \"string\" || !isPortableSegment(segment)) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"segment-invalid\",\n segments,\n }));\n }\n segments.push(segment);\n }\n if (requireFilePath && segments.length === 0) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"file-path-empty\",\n segments,\n }));\n }\n return Effect.succeed(join(paths.portableRoot, ...segments));\n}\n/**\n * Record must classify a symlink as `other` without following it. The platform\n * FileSystem service exposes following `stat` and names-only directory reads,\n * so this intentionally stays the narrow native no-follow adapter.\n */\nasync function nodePathKind(path: string): Promise<RecordPathKind> {\n try {\n const state = await lstat(path);\n if (state.isFile())\n return \"file\";\n if (state.isDirectory())\n return \"directory\";\n return \"other\";\n }\n catch (cause) {\n if (isMissingError(cause))\n return \"missing\";\n throw cause;\n }\n}\nfunction pathKindAt(path: string): Effect.Effect<RecordPathKind, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: () => nodePathKind(path),\n catch: (cause) => fileSystemError(\"read-file\", path, cause),\n });\n}\nfunction ensureDirectoryAt(path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: async () => {\n await mkdir(path, { recursive: true });\n },\n catch: (cause) => fileSystemError(\"create-directory\", path, cause),\n }).pipe(Effect.zipRight(syncDirectoryAt(path)), Effect.zipRight(dirname(path) === path ? Effect.void : syncDirectoryAt(dirname(path))));\n}\nfunction closeHandle(handle: FileHandle, operation: RecordPlatformOperation, path: string): Effect.Effect<void> {\n return Effect.tryPromise({\n try: () => handle.close(),\n catch: (cause) => fileSystemError(operation, path, cause),\n }).pipe(Effect.orDie);\n}\nfunction syncHandle(handle: FileHandle, operation: RecordPlatformOperation, path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: () => handle.sync(),\n catch: (cause) => fileSystemError(operation, path, cause),\n });\n}\nfunction syncDirectoryAt(path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n // Durable publication requires an explicit directory fsync. High-level\n // platform write helpers do not include this parent-directory commit step.\n const acquire = Effect.tryPromise({\n try: () => open(path, \"r\"),\n catch: (cause) => fileSystemError(\"sync-directory\", path, cause),\n });\n return Effect.scoped(Effect.acquireRelease(acquire, (handle) => closeHandle(handle, \"sync-directory\", path)).pipe(Effect.flatMap((handle) => syncHandle(handle, \"sync-directory\", path))));\n}\nfunction createDirectoryAt(path: string): Effect.Effect<void, RecordFileSystemError> {\n return Effect.tryPromise({\n try: () => mkdir(path),\n catch: (cause) => isAlreadyExistsError(cause)\n ? new RecordPathAlreadyExists({\n code: \"record-path-already-exists\",\n path,\n })\n : fileSystemError(\"create-directory\", path, cause),\n }).pipe(Effect.zipRight(syncDirectoryAt(dirname(path))));\n}\nfunction writeFileHandle(handle: FileHandle, bytes: Uint8Array, path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: () => handle.writeFile(bytes),\n catch: (cause) => fileSystemError(\"write-file\", path, cause),\n });\n}\nfunction openForWrite(path: string, mode: \"exclusive\" | \"replace\" | \"replace-no-follow\", portableRoot: string): Effect.Effect<FileHandle, RecordFileSystemError> {\n // `wx` + 0600 + fsync is Record's create-exclusive publication primitive;\n // do not replace it with a high-level write that weakens those guarantees.\n return Effect.tryPromise({\n try: async () => {\n if (mode !== \"replace-no-follow\") {\n return open(path, mode === \"exclusive\" ? \"wx\" : \"w\", 0o600);\n }\n const relativePath = relative(portableRoot, path);\n const segments = relativePath.split(sep);\n let current = portableRoot;\n const rootState = await lstat(current);\n if (!rootState.isDirectory()) {\n throw new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path: current,\n expected: \"directory\",\n actual: rootState.isFile() ? \"file\" : \"other\",\n });\n }\n for (const segment of segments.slice(0, -1)) {\n current = join(current, segment);\n const state = await lstat(current);\n if (!state.isDirectory()) {\n throw new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path: current,\n expected: \"directory\",\n actual: state.isFile() ? \"file\" : \"other\",\n });\n }\n }\n const expected = await lstat(path);\n if (!expected.isFile() || expected.nlink !== 1) {\n throw new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"file\",\n actual: expected.isDirectory() ? \"directory\" : \"other\",\n });\n }\n const handle = await open(path, constants.O_WRONLY | constants.O_NOFOLLOW, 0o600);\n try {\n const actual = await handle.stat();\n if (!actual.isFile() || actual.nlink !== 1 ||\n actual.dev !== expected.dev || actual.ino !== expected.ino) {\n throw new Error(\"record replace target identity changed before write\");\n }\n await handle.truncate(0);\n return handle;\n }\n catch (cause) {\n await handle.close().catch(() => { });\n throw cause;\n }\n },\n catch: (cause) => isFileSystemError(cause)\n ? cause\n : mode === \"exclusive\" && isAlreadyExistsError(cause)\n ? new RecordPathAlreadyExists({\n code: \"record-path-already-exists\",\n path,\n })\n : fileSystemError(\"write-file\", path, cause),\n });\n}\nfunction writeBytesAt(input: {\n readonly path: string;\n readonly bytes: Uint8Array;\n readonly maximumBytes: number;\n readonly mode: \"exclusive\" | \"replace\" | \"replace-no-follow\";\n readonly portableRoot: string;\n}): Effect.Effect<void, RecordFileSystemError> {\n return Effect.gen(function* () {\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n if (input.bytes.byteLength > input.maximumBytes) {\n return yield* Effect.fail(limitExceeded(\"file-bytes\", input.maximumBytes, input.bytes.byteLength, input.path));\n }\n const parent = dirname(input.path);\n yield* ensureDirectoryAt(parent);\n yield* Effect.scoped(Effect.acquireRelease(openForWrite(input.path, input.mode, input.portableRoot), (handle) => closeHandle(handle, \"write-file\", input.path)).pipe(Effect.flatMap((handle) => writeFileHandle(handle, input.bytes, input.path).pipe(Effect.zipRight(syncHandle(handle, \"sync-file\", input.path))))));\n yield* syncDirectoryAt(parent);\n });\n}\nfunction writeChunk(handle: FileHandle, bytes: Uint8Array, path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: async () => {\n let offset = 0;\n while (offset < bytes.byteLength) {\n const written = await handle.write(bytes, offset, bytes.byteLength - offset);\n if (written.bytesWritten === 0) {\n throw new Error(\"Node wrote zero bytes before the chunk was complete\");\n }\n offset += written.bytesWritten;\n }\n },\n catch: (cause) => fileSystemError(\"write-file\", path, cause),\n });\n}\nasync function* readChunks(handle: FileHandle, path: string, maximumBytes: number, chunkBytes: number): AsyncGenerator<Uint8Array, void, undefined> {\n let observed = 0;\n for (;;) {\n // A one-byte probe after the cap distinguishes exact-size data from an\n // over-limit file without materializing its remainder.\n const capacity = observed < maximumBytes\n ? Math.min(chunkBytes, maximumBytes - observed + 1)\n : 1;\n const chunk = new Uint8Array(capacity);\n const result = await handle.read(chunk, 0, chunk.byteLength, null);\n if (result.bytesRead === 0)\n return;\n observed += result.bytesRead;\n if (observed > maximumBytes) {\n throw limitExceeded(\"file-bytes\", maximumBytes, observed, path);\n }\n yield chunk.slice(0, result.bytesRead);\n }\n}\nfunction readStreamAt(path: string, maximumBytes: number, chunkBytes: number): Stream.Stream<Uint8Array, RecordFileSystemError> {\n const acquire = Effect.tryPromise({\n try: () => open(path, \"r\"),\n catch: (cause) => fileSystemError(\"read-file\", path, cause),\n });\n return Stream.unwrapScoped(Effect.map(Effect.acquireRelease(acquire, (handle) => closeHandle(handle, \"read-file\", path)), (handle) => Stream.fromAsyncIterable(readChunks(handle, path, maximumBytes, chunkBytes), (cause) => isFileSystemError(cause)\n ? cause\n : fileSystemError(\"read-file\", path, cause))));\n}\nfunction concatChunks(chunks: readonly Uint8Array[]): Uint8Array {\n let length = 0;\n for (const chunk of chunks) {\n length += chunk.byteLength;\n }\n const result = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return result;\n}\nfunction closeDirectory(directory: Dir, path: string): Effect.Effect<void> {\n return Effect.tryPromise({\n try: () => directory.close(),\n catch: (cause) => fileSystemError(\"list-directory\", path, cause),\n }).pipe(Effect.orDie);\n}\nasync function readDirectoryBounded(directory: Dir, maximumEntries: number, path: string): Promise<readonly RecordDirectoryEntry[]> {\n // Dirent classification preserves the same no-follow policy as lstat above;\n // the platform names-only directory API cannot supply these entry kinds.\n const entries: RecordDirectoryEntry[] = [];\n for (;;) {\n const entry = await directory.read();\n if (entry === null)\n break;\n if (entries.length === maximumEntries) {\n throw limitExceeded(\"directory-entries\", maximumEntries, maximumEntries + 1, path);\n }\n entries.push({\n name: entry.name,\n kind: entry.isFile()\n ? \"file\"\n : entry.isDirectory()\n ? \"directory\"\n : \"other\",\n });\n }\n entries.sort((left, right) => left.name === right.name ? 0 : left.name < right.name ? -1 : 1);\n return Object.freeze(entries);\n}\nfunction directoryEntriesAt(path: string, maximumEntries: number): Effect.Effect<readonly RecordDirectoryEntry[], RecordFileSystemError> {\n const acquire = Effect.tryPromise({\n try: () => opendir(path),\n catch: (cause) => fileSystemError(\"list-directory\", path, cause),\n });\n return Effect.scoped(Effect.acquireRelease(acquire, (directory) => closeDirectory(directory, path)).pipe(Effect.flatMap((directory) => Effect.tryPromise({\n try: () => readDirectoryBounded(directory, maximumEntries, path),\n catch: (cause) => isFileSystemError(cause)\n ? cause\n : fileSystemError(\"list-directory\", path, cause),\n }))));\n}\nfunction removeFileIfPresentAt(path: string, operation: \"remove-path\"): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: async () => {\n try {\n await unlink(path);\n }\n catch (cause) {\n if (!isMissingError(cause))\n throw cause;\n }\n },\n catch: (cause) => fileSystemError(operation, path, cause),\n }).pipe(Effect.zipRight(syncDirectoryAt(dirname(path))));\n}\nconst nodeFileSystem: RecordFileSystemService = {\n pathKind: (path) => Effect.flatMap(resolvePortablePath(path, false), (resolved) => pathKindAt(resolved)),\n ensureDirectory: (directory) => Effect.flatMap(resolvePortablePath(directory, false), (resolved) => ensureDirectoryAt(resolved)),\n createDirectory: (directory) => Effect.flatMap(resolvePortablePath(directory, true), (resolved) => createDirectoryAt(resolved)),\n listDirectory: (input) => Effect.gen(function* () {\n const path = yield* resolvePortablePath(input.directory, false);\n yield* validateLimit(\"directory-entries\", input.maximumEntries);\n const kind = yield* pathKindAt(path);\n if (kind === \"missing\")\n return Object.freeze([]) as readonly RecordDirectoryEntry[];\n if (kind !== \"directory\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"directory\",\n actual: kind,\n }));\n }\n return yield* directoryEntriesAt(path, input.maximumEntries);\n }),\n readFile: (input) => Effect.gen(function* () {\n const path = yield* resolvePortablePath(input.file, true);\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n const kind = yield* pathKindAt(path);\n if (kind === \"missing\")\n return undefined;\n if (kind !== \"file\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"file\",\n actual: kind,\n }));\n }\n const chunks = yield* Stream.runFold(readStreamAt(path, input.maximumBytes, DEFAULT_STREAM_CHUNK_BYTES), [] as readonly Uint8Array[], (all, chunk) => [...all, chunk]);\n return concatChunks(chunks);\n }),\n readFileStream: (input) => Stream.unwrap(Effect.gen(function* () {\n const path = yield* resolvePortablePath(input.file, true);\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n const chunkBytes = input.chunkBytes ?? DEFAULT_STREAM_CHUNK_BYTES;\n yield* validateLimit(\"file-bytes\", chunkBytes);\n if (chunkBytes === 0) {\n return yield* Effect.fail(new RecordResourceLimitInvalid({\n code: \"record-resource-limit-invalid\",\n resource: \"file-bytes\",\n maximum: chunkBytes,\n }));\n }\n const kind = yield* pathKindAt(path);\n if (kind !== \"file\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"file\",\n actual: kind,\n }));\n }\n return readStreamAt(path, input.maximumBytes, chunkBytes);\n })),\n writeFile: (input) => Effect.flatMap(resolvePortablePath(input.file, true), (path) => {\n const paths = recordRootPaths(input.file.root);\n if (paths === undefined) {\n return Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n return writeBytesAt({\n path,\n portableRoot: paths.portableRoot,\n bytes: input.bytes,\n maximumBytes: input.maximumBytes,\n mode: input.mode,\n });\n }),\n writeFileStream: <E, R>(input: RecordWriteFileStreamInput<E, R>): Effect.Effect<void, RecordFileSystemError | E, R> => Effect.flatMap(resolvePortablePath(input.file, true), (path) => Effect.gen(function* () {\n const paths = recordRootPaths(input.file.root);\n if (paths === undefined) {\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n const parent = dirname(path);\n yield* ensureDirectoryAt(parent);\n let written = 0;\n yield* Effect.scoped(Effect.acquireRelease(openForWrite(path, input.mode, paths.portableRoot), (handle) => closeHandle(handle, \"write-file\", path)).pipe(Effect.flatMap((handle) => {\n const writeOne = (chunk: Uint8Array): Effect.Effect<void, RecordFileSystemError> => {\n const observedAtLeast = written + chunk.byteLength;\n if (observedAtLeast > input.maximumBytes) {\n return Effect.fail(limitExceeded(\"file-bytes\", input.maximumBytes, observedAtLeast, path));\n }\n return writeChunk(handle, chunk, path).pipe(Effect.tap(() => Effect.sync(() => {\n written = observedAtLeast;\n })));\n };\n return Stream.runForEach(input.stream, writeOne).pipe(Effect.zipRight(syncHandle(handle, \"sync-file\", path)));\n })));\n yield* syncDirectoryAt(parent);\n })),\n syncDirectory: (directory) => Effect.flatMap(resolvePortablePath(directory, false), (path) => syncDirectoryAt(path)),\n removeFile: (file) => Effect.flatMap(resolvePortablePath(file, true), (path) => removeFileIfPresentAt(path, \"remove-path\")),\n createRunDirectory: ({ root, runId }) => Effect.gen(function* () {\n yield* nodeFileSystem.ensureDirectory(recordPortablePath(root, \"runs\"));\n yield* nodeFileSystem.createDirectory(recordPortablePath(root, \"runs\", runId));\n }),\n createCompleteMarker: ({ root, runId }) => Effect.uninterruptible(nodeFileSystem.writeFile({\n file: recordPortablePath(root, \"runs\", runId, \"complete\"),\n bytes: new Uint8Array(),\n maximumBytes: 0,\n mode: \"exclusive\",\n })),\n isCompleteMarker: ({ root, runId }) => nodeFileSystem.readFile({\n file: recordPortablePath(root, \"runs\", runId, \"complete\"),\n maximumBytes: 0,\n }).pipe(Effect.map((bytes) => bytes !== undefined && bytes.byteLength === 0), Effect.catchTag(\"RecordResourceLimitExceeded\", () => Effect.succeed(false)), Effect.catchTag(\"RecordPathTypeInvalid\", () => Effect.succeed(false))),\n migrationSentinelPresent: (root) => Effect.map(nodeFileSystem.pathKind(recordPortablePath(root, \"migration.in-progress\")), (kind) => kind !== \"missing\"),\n createMigrationSentinel: (root, restoreCommit, expectedRelativePaths) => Effect.uninterruptible(nodeFileSystem.writeFile({\n file: recordPortablePath(root, \"migration.in-progress\"),\n bytes: new TextEncoder().encode(`${JSON.stringify({ restoreCommit, expectedRelativePaths })}\\n`),\n maximumBytes: MIGRATION_SENTINEL_MAXIMUM_BYTES,\n mode: \"exclusive\",\n })),\n readMigrationSentinel: (root) => Effect.map(nodeFileSystem.readFile({\n file: recordPortablePath(root, \"migration.in-progress\"),\n maximumBytes: MIGRATION_SENTINEL_MAXIMUM_BYTES,\n }), (bytes) => {\n if (bytes === undefined)\n return undefined;\n try {\n const value: unknown = JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes));\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n return undefined;\n const keys = Object.keys(value);\n const restoreCommit = Reflect.get(value, \"restoreCommit\");\n const expectedRelativePaths = Reflect.get(value, \"expectedRelativePaths\");\n if (keys.length !== 2 ||\n typeof restoreCommit !== \"string\" ||\n !/^[0-9a-f]{40,64}$/.test(restoreCommit) ||\n !Array.isArray(expectedRelativePaths) ||\n expectedRelativePaths.some((path) => typeof path !== \"string\" || path.length === 0 || path.startsWith(\"/\") ||\n path.includes(\"\\\\\") || path.split(\"/\").some((segment) => segment.length === 0 || segment === \".\" || segment === \"..\")))\n return undefined;\n return Object.freeze({\n restoreCommit,\n expectedRelativePaths: Object.freeze([...expectedRelativePaths]),\n });\n }\n catch {\n return undefined;\n }\n }),\n removeMigrationSentinel: (root) => Effect.flatMap(resolvePortablePath(recordPortablePath(root, \"migration.in-progress\"), true), (path) => removeFileIfPresentAt(path, \"remove-path\")),\n deleteIncompleteRun: ({ root, runId }) => Effect.gen(function* () {\n const runPath = yield* resolvePortablePath(recordPortablePath(root, \"runs\", runId), true);\n const runKind = yield* pathKindAt(runPath);\n if (runKind === \"missing\") {\n return { state: \"missing\" } satisfies RecordIncompleteRunDelete;\n }\n if (runKind !== \"directory\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path: runPath,\n expected: \"directory\",\n actual: runKind,\n }));\n }\n if (yield* nodeFileSystem.isCompleteMarker({ root, runId })) {\n return { state: \"skipped-complete\" } satisfies RecordIncompleteRunDelete;\n }\n yield* Effect.tryPromise({\n try: () => rm(runPath, { recursive: true, force: true }),\n catch: (cause) => fileSystemError(\"remove-path\", runPath, cause),\n });\n yield* syncDirectoryAt(dirname(runPath));\n return { state: \"deleted\" } satisfies RecordIncompleteRunDelete;\n }),\n};\ninterface GitOutput {\n readonly stdout: string;\n readonly stderr: string;\n}\nfunction executeGit(args: readonly string[], cwd: string, signal: AbortSignal): Promise<GitOutput> {\n // Keep the native adapter: Record requires one bounded collection covering\n // stdout and stderr, exact argv execution, and AbortSignal cancellation.\n // CommandExecutor has no single primitive with all of those guarantees.\n return new Promise((resolve, reject) => {\n execFile(\"git\", [...args], { cwd, encoding: \"utf8\", maxBuffer: GIT_MAX_OUTPUT_BYTES, signal }, (error, stdout, stderr) => {\n if (error !== null) {\n reject(error);\n return;\n }\n resolve({ stdout: String(stdout), stderr: String(stderr) });\n });\n });\n}\nfunction gitError(operation: \"locate-worktree\" | \"read-head\" | \"inspect-status\", cause: unknown): RecordGitError {\n if (nodeErrorCode(cause) === \"ERR_CHILD_PROCESS_STDIO_MAXBUFFER\") {\n return limitExceeded(\"git-output\", GIT_MAX_OUTPUT_BYTES, GIT_MAX_OUTPUT_BYTES, \"git\");\n }\n return new RecordGitCommandError({\n code: \"record-git-command-failed\",\n operation,\n cause,\n });\n}\nfunction runGit(operation: \"locate-worktree\" | \"read-head\" | \"inspect-status\", args: readonly string[], cwd: string): Effect.Effect<GitOutput, RecordGitError> {\n return Effect.tryPromise({\n try: (signal) => executeGit(args, cwd, signal),\n catch: (cause) => gitError(operation, cause),\n });\n}\nfunction isNotGitWorktree(error: RecordGitCommandError): boolean {\n const code = nodeErrorCode(error.cause);\n return code === \"ENOENT\" || nodeErrorMessage(error.cause).includes(\"not a git repository\");\n}\nfunction portablePathWithinWorktree(worktree: string, portableRoot: string): string | undefined {\n const rootRelative = relative(worktree, portableRoot);\n if (rootRelative === \"..\" ||\n rootRelative.startsWith(`..${sep}`) ||\n isAbsolute(rootRelative)) {\n return undefined;\n }\n return rootRelative === \"\" ? \".\" : rootRelative;\n}\ninterface GitStatusEntry {\n readonly status: string;\n readonly path: string;\n}\nfunction statusEntries(stdout: string): readonly GitStatusEntry[] {\n const records = stdout.split(\"\\0\").filter((entry) => entry !== \"\");\n const entries: GitStatusEntry[] = [];\n for (let index = 0; index < records.length; index += 1) {\n const record = records[index]!;\n const status = record.slice(0, 2);\n const path = record.length > 3 ? record.slice(3) : \"\";\n entries.push(Object.freeze({ status, path }));\n if (status.includes(\"R\") || status.includes(\"C\"))\n index += 1;\n }\n return Object.freeze(entries);\n}\nconst nodeGit = {\n inspectBackupState: (root: unknown): Effect.Effect<RecordBackupState, RecordGitError> => Effect.gen(function* () {\n const paths = recordRootPaths(root);\n if (paths === undefined) {\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n const location = yield* Effect.either(runGit(\"locate-worktree\", [\"rev-parse\", \"--show-toplevel\"], dirname(paths.portableRoot)));\n if (Either.isLeft(location)) {\n if (location.left instanceof RecordGitCommandError &&\n isNotGitWorktree(location.left)) {\n return { state: \"not-git-worktree\" } satisfies RecordBackupState;\n }\n return yield* Effect.fail(location.left);\n }\n const worktree = location.right.stdout.trim();\n const rootRelative = portablePathWithinWorktree(worktree, paths.portableRoot);\n if (rootRelative === undefined) {\n return { state: \"root-outside-worktree\" } satisfies RecordBackupState;\n }\n const head = yield* runGit(\"read-head\", [\"rev-parse\", \"--verify\", \"HEAD\"], worktree);\n const commit = head.stdout.trim();\n if (commit === \"\") {\n return yield* Effect.fail(new RecordGitCommandError({\n code: \"record-git-command-failed\",\n operation: \"read-head\",\n cause: new Error(\"git returned an empty HEAD\"),\n }));\n }\n const status = yield* runGit(\"inspect-status\", [\n \"status\",\n \"--porcelain=v1\",\n \"-z\",\n \"--ignored\",\n \"--untracked-files=all\",\n \"--\",\n rootRelative,\n ], worktree);\n const entries = statusEntries(status.stdout);\n if (entries.length > GIT_MAX_STATUS_ENTRIES) {\n return yield* Effect.fail(limitExceeded(\"git-output\", GIT_MAX_STATUS_ENTRIES, GIT_MAX_STATUS_ENTRIES + 1, \"git status\"));\n }\n return entries.length === 0\n ? ({ state: \"git-restore-point\", commit } satisfies RecordBackupState)\n : ({\n state: \"portable-root-dirty\",\n entries: Object.freeze(entries.map((entry) => `${entry.status} ${entry.path}`)),\n } satisfies RecordBackupState);\n }),\n recoveryChangesAreExpected: (input: {\n readonly root: unknown;\n readonly restoreCommit: string;\n readonly expectedPaths: readonly RecordPortablePath[];\n }): Effect.Effect<boolean, RecordGitError | RecordFileSystemError> => Effect.gen(function* () {\n const paths = recordRootPaths(input.root);\n if (paths === undefined) {\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n const location = yield* Effect.either(runGit(\"locate-worktree\", [\"rev-parse\", \"--show-toplevel\"], dirname(paths.portableRoot)));\n if (Either.isLeft(location))\n return false;\n const worktree = location.right.stdout.trim();\n const rootRelative = portablePathWithinWorktree(worktree, paths.portableRoot);\n if (rootRelative === undefined)\n return false;\n const head = yield* runGit(\"read-head\", [\"rev-parse\", \"--verify\", \"HEAD\"], worktree);\n if (head.stdout.trim() !== input.restoreCommit)\n return false;\n const expected = new Set<string>();\n for (const path of input.expectedPaths) {\n const resolved = yield* resolvePortablePath(path, true);\n const relativePath = portablePathWithinWorktree(worktree, resolved);\n if (relativePath === undefined)\n return false;\n expected.add(relativePath.split(sep).join(\"/\"));\n }\n const status = yield* runGit(\"inspect-status\", [\"status\", \"--porcelain=v1\", \"-z\", \"--ignored\", \"--untracked-files=all\", \"--\", rootRelative], worktree);\n const entries = statusEntries(status.stdout);\n if (entries.length === 0 || entries.length > GIT_MAX_STATUS_ENTRIES)\n return false;\n return entries.every((entry) => {\n const normalized = entry.path.split(sep).join(\"/\");\n if (!expected.has(normalized))\n return false;\n return normalized.endsWith(\"/migration.in-progress\")\n ? entry.status === \"??\" || entry.status === \"!!\"\n : entry.status === \" M\";\n });\n }),\n};\nexport const NodeRecordFileSystemLive = Layer.succeed(RecordFileSystem, nodeFileSystem);\nexport const NodeRecordEntropyLive = Layer.succeed(RecordEntropy, {\n uuid: Effect.sync(randomUUID),\n});\nexport const NodeRecordGitLive = Layer.succeed(RecordGit, nodeGit);\n/**\n * Convenience composition for an application boundary. Consumers still name\n * only the Tags they need in their own Effect requirements.\n */\nexport const NodeRecordLive = Layer.mergeAll(NodeRecordFileSystemLive, NodeRecordCoordinationLive, NodeRecordEntropyLive, NodeRecordGitLive);\n"]}
|