@mysten-incubation/devstack 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- package/dashboard-ui/assets/grpc-a4usE3Nk.js +3 -0
- package/dashboard-ui/assets/index-B82Bh84P.css +1 -0
- package/dashboard-ui/assets/index-CRYJ4pru.js +1277 -0
- package/dashboard-ui/index.html +2 -2
- package/dist/api/define-capabilities.d.mts +1 -20
- package/dist/api/define-capabilities.mjs +15 -22
- package/dist/api/define-capabilities.mjs.map +1 -1
- package/dist/api/define-devstack-with.d.mts +7 -1
- package/dist/api/define-devstack-with.mjs.map +1 -1
- package/dist/api/define-devstack.mjs.map +1 -1
- package/dist/api/define-plugin.d.mts +2 -1
- package/dist/api/inference-network.d.mts +31 -17
- package/dist/api/inference-network.mjs +40 -43
- package/dist/api/inference-network.mjs.map +1 -1
- package/dist/api/load-config.mjs +88 -0
- package/dist/api/load-config.mjs.map +1 -0
- package/dist/api/mode-narrowed-factory.d.mts +1 -1
- package/dist/api/mode-narrowed-factory.mjs.map +1 -1
- package/dist/api/run-stack-internal.mjs +202 -0
- package/dist/api/run-stack-internal.mjs.map +1 -0
- package/dist/api/run-stack.d.mts +82 -31
- package/dist/api/run-stack.mjs +22 -141
- package/dist/api/run-stack.mjs.map +1 -1
- package/dist/build-integrations/dapp-kit/index.d.mts +61 -0
- package/dist/build-integrations/dapp-kit/index.mjs +58 -0
- package/dist/build-integrations/dapp-kit/index.mjs.map +1 -0
- package/dist/build-integrations/playwright/config.d.mts +1 -30
- package/dist/build-integrations/playwright/config.mjs +1 -27
- package/dist/build-integrations/playwright/config.mjs.map +1 -1
- package/dist/build-integrations/playwright/errors.d.mts +4 -7
- package/dist/build-integrations/playwright/errors.mjs.map +1 -1
- package/dist/build-integrations/playwright/global-setup.d.mts +42 -71
- package/dist/build-integrations/playwright/global-setup.mjs +142 -218
- package/dist/build-integrations/playwright/global-setup.mjs.map +1 -1
- package/dist/build-integrations/playwright/index.d.mts +2 -2
- package/dist/build-integrations/playwright/index.mjs +2 -2
- package/dist/build-integrations/playwright/stack-context.d.mts +3 -1
- package/dist/build-integrations/playwright/stack-context.mjs +4 -2
- package/dist/build-integrations/playwright/stack-context.mjs.map +1 -1
- package/dist/build-integrations/playwright/wallet-context.mjs +44 -19
- package/dist/build-integrations/playwright/wallet-context.mjs.map +1 -1
- package/dist/build-integrations/runtime/cold-start-url.mjs.map +1 -1
- package/dist/build-integrations/runtime/conventional-routes.mjs.map +1 -1
- package/dist/build-integrations/runtime/dapp-kit-slot.mjs.map +1 -1
- package/dist/build-integrations/runtime/discover.d.mts +6 -4
- package/dist/build-integrations/runtime/discover.mjs +15 -4
- package/dist/build-integrations/runtime/discover.mjs.map +1 -1
- package/dist/build-integrations/runtime/endpoint-registry.mjs.map +1 -1
- package/dist/build-integrations/runtime/errors.mjs.map +1 -1
- package/dist/build-integrations/runtime/read-stack-context.mjs +3 -3
- package/dist/build-integrations/runtime/read-stack-context.mjs.map +1 -1
- package/dist/build-integrations/runtime/resolve-discovery-env.d.mts +23 -7
- package/dist/build-integrations/runtime/resolve-discovery-env.mjs +25 -12
- package/dist/build-integrations/runtime/resolve-discovery-env.mjs.map +1 -1
- package/dist/build-integrations/runtime/stack-context.d.mts +2 -2
- package/dist/build-integrations/vite/index.d.mts +84 -19
- package/dist/build-integrations/vite/index.mjs +203 -28
- package/dist/build-integrations/vite/index.mjs.map +1 -1
- package/dist/build-integrations/vitest/config.d.mts +20 -2
- package/dist/build-integrations/vitest/config.mjs +16 -4
- package/dist/build-integrations/vitest/config.mjs.map +1 -1
- package/dist/build-integrations/vitest/env.d.mts +18 -10
- package/dist/build-integrations/vitest/env.mjs +11 -10
- package/dist/build-integrations/vitest/env.mjs.map +1 -1
- package/dist/build-integrations/vitest/errors.d.mts +7 -11
- package/dist/build-integrations/vitest/errors.mjs +3 -4
- package/dist/build-integrations/vitest/errors.mjs.map +1 -1
- package/dist/build-integrations/vitest/global-setup.d.mts +35 -0
- package/dist/build-integrations/vitest/global-setup.mjs +156 -0
- package/dist/build-integrations/vitest/global-setup.mjs.map +1 -0
- package/dist/build-integrations/vitest/index.d.mts +3 -2
- package/dist/build-integrations/vitest/index.mjs +3 -2
- package/dist/build-integrations/vitest/setup.mjs +2 -2
- package/dist/build-integrations/vitest/setup.mjs.map +1 -1
- package/dist/build-integrations/vitest/stack-context.d.mts +5 -3
- package/dist/build-integrations/vitest/stack-context.mjs +3 -2
- package/dist/build-integrations/vitest/stack-context.mjs.map +1 -1
- package/dist/cli/bail.mjs.map +1 -1
- package/dist/cli/doctor-probes.mjs +1 -3
- package/dist/cli/doctor-probes.mjs.map +1 -1
- package/dist/cli/main.d.mts +23 -1
- package/dist/cli/main.mjs +63 -8
- package/dist/cli/main.mjs.map +1 -1
- package/dist/cli/prune-direct.mjs.map +1 -1
- package/dist/cli/snapshot-reader.mjs.map +1 -1
- package/dist/cli/up-lifecycle.mjs.map +1 -1
- package/dist/cli/wirings/apply.mjs +28 -21
- package/dist/cli/wirings/apply.mjs.map +1 -1
- package/dist/cli/wirings/codegen.mjs +108 -0
- package/dist/cli/wirings/codegen.mjs.map +1 -0
- package/dist/cli/wirings/config-loader.mjs +12 -62
- package/dist/cli/wirings/config-loader.mjs.map +1 -1
- package/dist/cli/wirings/dump-ids.mjs +86 -0
- package/dist/cli/wirings/dump-ids.mjs.map +1 -0
- package/dist/cli/wirings/engine-command.mjs +1 -1
- package/dist/cli/wirings/engine-command.mjs.map +1 -1
- package/dist/cli/wirings/identity.mjs +2 -2
- package/dist/cli/wirings/identity.mjs.map +1 -1
- package/dist/cli/wirings/provide-file-system.mjs.map +1 -1
- package/dist/cli/wirings/read-devstack-version.mjs +17 -0
- package/dist/cli/wirings/read-devstack-version.mjs.map +1 -0
- package/dist/cli/wirings/snapshot.mjs +27 -34
- package/dist/cli/wirings/snapshot.mjs.map +1 -1
- package/dist/cli/wirings/up-ipc.mjs +147 -0
- package/dist/cli/wirings/up-ipc.mjs.map +1 -0
- package/dist/cli/wirings/up.mjs +218 -198
- package/dist/cli/wirings/up.mjs.map +1 -1
- package/dist/cli/wirings/wipe.mjs +1 -1
- package/dist/cli/wirings/wipe.mjs.map +1 -1
- package/dist/contracts/chain-probe.d.mts +1 -1
- package/dist/contracts/chain-probe.mjs +1 -1
- package/dist/contracts/chain-probe.mjs.map +1 -1
- package/dist/contracts/codegenable.d.mts +60 -6
- package/dist/contracts/codegenable.mjs +28 -0
- package/dist/contracts/codegenable.mjs.map +1 -0
- package/dist/contracts/config-bindings.mjs +162 -0
- package/dist/contracts/config-bindings.mjs.map +1 -0
- package/dist/contracts/container-runtime.d.mts +23 -17
- package/dist/contracts/plugin-expander.mjs.map +1 -1
- package/dist/contracts/snapshotable.d.mts +5 -7
- package/dist/contracts/wallet-protocol.d.mts +2 -5
- package/dist/contracts/wallet-protocol.mjs +2 -5
- package/dist/contracts/wallet-protocol.mjs.map +1 -1
- package/dist/index.d.mts +21 -26
- package/dist/index.mjs +8 -9
- package/dist/orchestrators/boot.d.mts +28 -0
- package/dist/orchestrators/boot.mjs +440 -0
- package/dist/orchestrators/boot.mjs.map +1 -0
- package/dist/orchestrators/codegen/bindings.d.mts +13 -1
- package/dist/orchestrators/codegen/bindings.mjs +23 -9
- package/dist/orchestrators/codegen/bindings.mjs.map +1 -1
- package/dist/orchestrators/codegen/config-runtime.mjs +208 -0
- package/dist/orchestrators/codegen/config-runtime.mjs.map +1 -0
- package/dist/orchestrators/codegen/emit.mjs +1 -1
- package/dist/orchestrators/codegen/emit.mjs.map +1 -1
- package/dist/orchestrators/codegen/errors.mjs +21 -1
- package/dist/orchestrators/codegen/errors.mjs.map +1 -1
- package/dist/orchestrators/codegen/format.mjs +2 -0
- package/dist/orchestrators/codegen/format.mjs.map +1 -1
- package/dist/orchestrators/codegen/gitignore.mjs +30 -11
- package/dist/orchestrators/codegen/gitignore.mjs.map +1 -1
- package/dist/orchestrators/codegen/id-config.mjs +107 -0
- package/dist/orchestrators/codegen/id-config.mjs.map +1 -0
- package/dist/orchestrators/codegen/output-location.mjs +23 -32
- package/dist/orchestrators/codegen/output-location.mjs.map +1 -1
- package/dist/orchestrators/codegen/paths.mjs +8 -1
- package/dist/orchestrators/codegen/paths.mjs.map +1 -1
- package/dist/orchestrators/codegen/permissions.mjs.map +1 -1
- package/dist/orchestrators/codegen/service.mjs +286 -58
- package/dist/orchestrators/codegen/service.mjs.map +1 -1
- package/dist/orchestrators/layers.mjs +31 -0
- package/dist/orchestrators/layers.mjs.map +1 -0
- package/dist/orchestrators/lifecycle-prune/errors.mjs.map +1 -1
- package/dist/orchestrators/lifecycle-prune/index.mjs +8 -10
- package/dist/orchestrators/lifecycle-prune/index.mjs.map +1 -1
- package/dist/orchestrators/network-options.d.mts +52 -0
- package/dist/orchestrators/network-options.mjs +43 -0
- package/dist/orchestrators/network-options.mjs.map +1 -0
- package/dist/orchestrators/router/cleanup.mjs.map +1 -1
- package/dist/orchestrators/router/cors.mjs.map +1 -1
- package/dist/orchestrators/router/entrypoints.mjs.map +1 -1
- package/dist/orchestrators/router/errors.mjs.map +1 -1
- package/dist/orchestrators/router/file-provider.mjs.map +1 -1
- package/dist/orchestrators/router/hostname.mjs.map +1 -1
- package/dist/orchestrators/router/profile.mjs +1 -1
- package/dist/orchestrators/router/profile.mjs.map +1 -1
- package/dist/orchestrators/router/service.d.mts +2 -2
- package/dist/orchestrators/router/service.mjs +12 -27
- package/dist/orchestrators/router/service.mjs.map +1 -1
- package/dist/orchestrators/router/traefik-container.mjs +1 -1
- package/dist/orchestrators/router/traefik-container.mjs.map +1 -1
- package/dist/orchestrators/snapshot/capture.mjs +171 -195
- package/dist/orchestrators/snapshot/capture.mjs.map +1 -1
- package/dist/orchestrators/snapshot/descriptor.d.mts +1 -1
- package/dist/orchestrators/snapshot/descriptor.mjs +53 -11
- package/dist/orchestrators/snapshot/descriptor.mjs.map +1 -1
- package/dist/orchestrators/snapshot/identity-guard.mjs +3 -5
- package/dist/orchestrators/snapshot/identity-guard.mjs.map +1 -1
- package/dist/orchestrators/snapshot/image-bundle-tags.mjs +32 -101
- package/dist/orchestrators/snapshot/image-bundle-tags.mjs.map +1 -1
- package/dist/orchestrators/snapshot/index.mjs +1 -4
- package/dist/orchestrators/snapshot/integrity.mjs.map +1 -1
- package/dist/orchestrators/snapshot/interrupted-restore.mjs +116 -0
- package/dist/orchestrators/snapshot/interrupted-restore.mjs.map +1 -0
- package/dist/orchestrators/snapshot/phase-error.mjs.map +1 -1
- package/dist/orchestrators/snapshot/prune.mjs +40 -31
- package/dist/orchestrators/snapshot/prune.mjs.map +1 -1
- package/dist/orchestrators/snapshot/restore.mjs +221 -196
- package/dist/orchestrators/snapshot/restore.mjs.map +1 -1
- package/dist/orchestrators/snapshot/service.mjs +72 -62
- package/dist/orchestrators/snapshot/service.mjs.map +1 -1
- package/dist/orchestrators/snapshot/wipe.mjs +67 -56
- package/dist/orchestrators/snapshot/wipe.mjs.map +1 -1
- package/dist/plugins/account/codegen.mjs +3 -0
- package/dist/plugins/account/codegen.mjs.map +1 -1
- package/dist/plugins/account/errors.d.mts +2 -2
- package/dist/plugins/account/errors.mjs +1 -4
- package/dist/plugins/account/errors.mjs.map +1 -1
- package/dist/plugins/account/funding.mjs +3 -27
- package/dist/plugins/account/funding.mjs.map +1 -1
- package/dist/plugins/account/index.d.mts +3 -8
- package/dist/plugins/account/index.mjs +71 -35
- package/dist/plugins/account/index.mjs.map +1 -1
- package/dist/plugins/account/keypair.d.mts +8 -7
- package/dist/plugins/account/keypair.mjs +5 -18
- package/dist/plugins/account/keypair.mjs.map +1 -1
- package/dist/plugins/account/lease.mjs.map +1 -1
- package/dist/plugins/account/registry.d.mts +1 -46
- package/dist/plugins/account/registry.mjs.map +1 -1
- package/dist/plugins/account/service.d.mts +43 -34
- package/dist/plugins/account/service.mjs +9 -54
- package/dist/plugins/account/service.mjs.map +1 -1
- package/dist/plugins/account/snapshot.mjs.map +1 -1
- package/dist/plugins/account/variants/ephemeral.mjs.map +1 -1
- package/dist/plugins/account/variants/impersonate.mjs.map +1 -1
- package/dist/plugins/account/variants/signer.mjs.map +1 -1
- package/dist/plugins/action/discriminator.mjs.map +1 -1
- package/dist/plugins/action/errors.mjs +1 -4
- package/dist/plugins/action/errors.mjs.map +1 -1
- package/dist/plugins/action/execute.mjs +3 -4
- package/dist/plugins/action/execute.mjs.map +1 -1
- package/dist/plugins/action/index.d.mts +2 -2
- package/dist/plugins/action/index.mjs +7 -11
- package/dist/plugins/action/index.mjs.map +1 -1
- package/dist/plugins/action/service.d.mts +5 -7
- package/dist/plugins/action/service.mjs +2 -16
- package/dist/plugins/action/service.mjs.map +1 -1
- package/dist/plugins/coin/address-resolution.mjs.map +1 -1
- package/dist/plugins/coin/codegen.mjs +97 -16
- package/dist/plugins/coin/codegen.mjs.map +1 -1
- package/dist/plugins/coin/discovery.mjs.map +1 -1
- package/dist/plugins/coin/errors.mjs +1 -4
- package/dist/plugins/coin/errors.mjs.map +1 -1
- package/dist/plugins/coin/index.d.mts +4 -34
- package/dist/plugins/coin/index.mjs +47 -28
- package/dist/plugins/coin/index.mjs.map +1 -1
- package/dist/plugins/coin/metadata.d.mts +1 -0
- package/dist/plugins/coin/metadata.mjs +8 -9
- package/dist/plugins/coin/metadata.mjs.map +1 -1
- package/dist/plugins/coin/mint.mjs +7 -21
- package/dist/plugins/coin/mint.mjs.map +1 -1
- package/dist/plugins/coin/registry.mjs +33 -20
- package/dist/plugins/coin/registry.mjs.map +1 -1
- package/dist/plugins/coin/service.d.mts +1 -1
- package/dist/plugins/coin/service.mjs +1 -8
- package/dist/plugins/coin/service.mjs.map +1 -1
- package/dist/plugins/coin/snapshot.mjs.map +1 -1
- package/dist/plugins/coin/type-strings.mjs.map +1 -1
- package/dist/plugins/dashboard/domain.mjs +106 -167
- package/dist/plugins/dashboard/domain.mjs.map +1 -1
- package/dist/plugins/dashboard/index.mjs +13 -13
- package/dist/plugins/dashboard/index.mjs.map +1 -1
- package/dist/plugins/dashboard/origin-policy.mjs +3 -3
- package/dist/plugins/dashboard/origin-policy.mjs.map +1 -1
- package/dist/plugins/dashboard/routable.mjs.map +1 -1
- package/dist/plugins/dashboard/schema/builder.mjs.map +1 -1
- package/dist/plugins/dashboard/schema/enums.mjs.map +1 -1
- package/dist/plugins/dashboard/schema/root.mjs +23 -44
- package/dist/plugins/dashboard/schema/root.mjs.map +1 -1
- package/dist/plugins/dashboard/schema/types.mjs +37 -91
- package/dist/plugins/dashboard/schema/types.mjs.map +1 -1
- package/dist/plugins/dashboard/schema.mjs.map +1 -1
- package/dist/plugins/dashboard/server.mjs.map +1 -1
- package/dist/plugins/deepbook/codegen.d.mts +12 -11
- package/dist/plugins/deepbook/codegen.mjs +108 -11
- package/dist/plugins/deepbook/codegen.mjs.map +1 -1
- package/dist/plugins/deepbook/deploy.mjs +7 -14
- package/dist/plugins/deepbook/deploy.mjs.map +1 -1
- package/dist/plugins/deepbook/errors.mjs +4 -2
- package/dist/plugins/deepbook/errors.mjs.map +1 -1
- package/dist/plugins/deepbook/faucet-strategy.mjs +4 -10
- package/dist/plugins/deepbook/faucet-strategy.mjs.map +1 -1
- package/dist/plugins/deepbook/hash.mjs.map +1 -1
- package/dist/plugins/deepbook/index.d.mts +38 -34
- package/dist/plugins/deepbook/index.mjs +133 -64
- package/dist/plugins/deepbook/index.mjs.map +1 -1
- package/dist/plugins/deepbook/plugin-key.mjs.map +1 -1
- package/dist/plugins/deepbook/pyth/index.mjs +4 -8
- package/dist/plugins/deepbook/pyth/index.mjs.map +1 -1
- package/dist/plugins/deepbook/snapshot.mjs +0 -1
- package/dist/plugins/deepbook/snapshot.mjs.map +1 -1
- package/dist/plugins/deepbook/type-strings.mjs.map +1 -1
- package/dist/plugins/deepbook/types.d.mts +2 -1
- package/dist/plugins/deepbook/types.mjs.map +1 -1
- package/dist/plugins/faucet/dispatcher.d.mts +3 -3
- package/dist/plugins/faucet/dispatcher.mjs.map +1 -1
- package/dist/plugins/faucet/errors.mjs.map +1 -1
- package/dist/plugins/faucet/http.mjs +2 -10
- package/dist/plugins/faucet/http.mjs.map +1 -1
- package/dist/plugins/faucet/index.mjs +0 -1
- package/dist/plugins/faucet/index.mjs.map +1 -1
- package/dist/plugins/host-service/errors.d.mts +1 -3
- package/dist/plugins/host-service/errors.mjs +1 -2
- package/dist/plugins/host-service/errors.mjs.map +1 -1
- package/dist/plugins/host-service/index.d.mts +1 -2
- package/dist/plugins/host-service/index.mjs +11 -11
- package/dist/plugins/host-service/index.mjs.map +1 -1
- package/dist/plugins/host-service/routable.mjs.map +1 -1
- package/dist/plugins/host-service/service.mjs +13 -13
- package/dist/plugins/host-service/service.mjs.map +1 -1
- package/dist/plugins/internal/acquire-on-chain-artifact.mjs.map +1 -1
- package/dist/plugins/internal/codegen-helpers.mjs +2 -0
- package/dist/plugins/internal/codegen-helpers.mjs.map +1 -1
- package/dist/plugins/internal/funding-failure-error.mjs.map +1 -1
- package/dist/plugins/{postgres → internal/postgres-sidecar}/connection.mjs +1 -1
- package/dist/plugins/internal/postgres-sidecar/connection.mjs.map +1 -0
- package/dist/plugins/{postgres → internal/postgres-sidecar}/db-ensure.mjs +30 -16
- package/dist/plugins/internal/postgres-sidecar/db-ensure.mjs.map +1 -0
- package/dist/plugins/internal/postgres-sidecar/errors.mjs +21 -0
- package/dist/plugins/internal/postgres-sidecar/errors.mjs.map +1 -0
- package/dist/{substrate/runtime/scoped-multimap → plugins/internal/postgres-sidecar}/index.mjs +1 -0
- package/dist/plugins/internal/postgres-sidecar/service.mjs +121 -0
- package/dist/plugins/internal/postgres-sidecar/service.mjs.map +1 -0
- package/dist/plugins/package/build.mjs +2 -2
- package/dist/plugins/package/build.mjs.map +1 -1
- package/dist/plugins/package/codegen.d.mts +7 -14
- package/dist/plugins/package/codegen.mjs +187 -59
- package/dist/plugins/package/codegen.mjs.map +1 -1
- package/dist/plugins/package/dep-resolution.mjs +51 -3
- package/dist/plugins/package/dep-resolution.mjs.map +1 -1
- package/dist/plugins/package/errors.mjs +1 -4
- package/dist/plugins/package/errors.mjs.map +1 -1
- package/dist/plugins/package/git-source.d.mts +18 -0
- package/dist/plugins/package/git-source.mjs +119 -0
- package/dist/plugins/package/git-source.mjs.map +1 -0
- package/dist/plugins/package/index.d.mts +28 -19
- package/dist/plugins/package/index.mjs +107 -32
- package/dist/plugins/package/index.mjs.map +1 -1
- package/dist/plugins/package/mode-known.mjs +2 -2
- package/dist/plugins/package/mode-known.mjs.map +1 -1
- package/dist/plugins/package/mode-local.mjs +18 -35
- package/dist/plugins/package/mode-local.mjs.map +1 -1
- package/dist/plugins/package/publish-executor.mjs +13 -8
- package/dist/plugins/package/publish-executor.mjs.map +1 -1
- package/dist/plugins/package/publish-output.d.mts +1 -11
- package/dist/plugins/package/publish-output.mjs +1 -9
- package/dist/plugins/package/publish-output.mjs.map +1 -1
- package/dist/plugins/package/registry.d.mts +1 -1
- package/dist/plugins/package/registry.mjs +26 -14
- package/dist/plugins/package/registry.mjs.map +1 -1
- package/dist/plugins/package/service.mjs.map +1 -1
- package/dist/plugins/package/snapshot.mjs.map +1 -1
- package/dist/plugins/router-entrypoints.mjs +1 -3
- package/dist/plugins/router-entrypoints.mjs.map +1 -1
- package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs +1 -2
- package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs.map +1 -1
- package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs +1 -6
- package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs.map +1 -1
- package/dist/plugins/seal/codegen.d.mts +1 -5
- package/dist/plugins/seal/codegen.mjs +83 -12
- package/dist/plugins/seal/codegen.mjs.map +1 -1
- package/dist/plugins/seal/config-render.mjs +2 -6
- package/dist/plugins/seal/config-render.mjs.map +1 -1
- package/dist/plugins/seal/deploy.mjs +18 -29
- package/dist/plugins/seal/deploy.mjs.map +1 -1
- package/dist/plugins/seal/errors.d.mts +4 -5
- package/dist/plugins/seal/errors.mjs +1 -8
- package/dist/plugins/seal/errors.mjs.map +1 -1
- package/dist/plugins/seal/index.d.mts +7 -28
- package/dist/plugins/seal/index.mjs +69 -47
- package/dist/plugins/seal/index.mjs.map +1 -1
- package/dist/plugins/seal/key-manager.mjs.map +1 -1
- package/dist/plugins/seal/key-server.mjs +1 -6
- package/dist/plugins/seal/key-server.mjs.map +1 -1
- package/dist/plugins/seal/keygen.mjs +2 -3
- package/dist/plugins/seal/keygen.mjs.map +1 -1
- package/dist/plugins/seal/mode/fork-known.mjs.map +1 -1
- package/dist/plugins/seal/mode/live.mjs +1 -1
- package/dist/plugins/seal/mode/live.mjs.map +1 -1
- package/dist/plugins/seal/mode/local-keygen.mjs +4 -10
- package/dist/plugins/seal/mode/local-keygen.mjs.map +1 -1
- package/dist/plugins/seal/plugin-key.mjs.map +1 -1
- package/dist/plugins/seal/registry-publish.mjs.map +1 -1
- package/dist/plugins/seal/routable.mjs.map +1 -1
- package/dist/plugins/seal/service.mjs.map +1 -1
- package/dist/plugins/seal/snapshot.mjs +1 -2
- package/dist/plugins/seal/snapshot.mjs.map +1 -1
- package/dist/plugins/sui/auto-tick.mjs +5 -5
- package/dist/plugins/sui/auto-tick.mjs.map +1 -1
- package/dist/plugins/sui/chain-build-container.mjs +2 -2
- package/dist/plugins/sui/chain-build-container.mjs.map +1 -1
- package/dist/plugins/sui/chain-probe.mjs +4 -4
- package/dist/plugins/sui/chain-probe.mjs.map +1 -1
- package/dist/plugins/sui/codegen.d.mts +9 -7
- package/dist/plugins/sui/codegen.mjs +49 -46
- package/dist/plugins/sui/codegen.mjs.map +1 -1
- package/dist/plugins/sui/errors.d.mts +1 -1
- package/dist/plugins/sui/errors.mjs +1 -9
- package/dist/plugins/sui/errors.mjs.map +1 -1
- package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/index.d.mts +1 -1
- package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/index.mjs +3 -7
- package/dist/plugins/sui/exec/index.mjs.map +1 -0
- package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/sign-and-dispatch.mjs +1 -1
- package/dist/plugins/sui/exec/sign-and-dispatch.mjs.map +1 -0
- package/dist/plugins/sui/fork-faucet-strategy.mjs +2 -6
- package/dist/plugins/sui/fork-faucet-strategy.mjs.map +1 -1
- package/dist/plugins/sui/fork-orchestration.mjs +13 -23
- package/dist/plugins/sui/fork-orchestration.mjs.map +1 -1
- package/dist/plugins/sui/fork-transaction.mjs.map +1 -1
- package/dist/plugins/sui/index.d.mts +34 -83
- package/dist/plugins/sui/index.mjs +200 -68
- package/dist/plugins/sui/index.mjs.map +1 -1
- package/dist/{substrate/runtime/sui-ledger → plugins/sui/ledger}/object-ref.mjs +1 -1
- package/dist/plugins/sui/ledger/object-ref.mjs.map +1 -0
- package/dist/plugins/sui/local-faucet-strategy.mjs +1 -5
- package/dist/plugins/sui/local-faucet-strategy.mjs.map +1 -1
- package/dist/plugins/sui/log-attrs.mjs +11 -0
- package/dist/plugins/sui/log-attrs.mjs.map +1 -0
- package/dist/plugins/sui/mode/external.mjs +4 -12
- package/dist/plugins/sui/mode/external.mjs.map +1 -1
- package/dist/plugins/sui/mode/fork.mjs +19 -16
- package/dist/plugins/sui/mode/fork.mjs.map +1 -1
- package/dist/plugins/sui/mode/live.mjs +4 -17
- package/dist/plugins/sui/mode/live.mjs.map +1 -1
- package/dist/plugins/sui/mode/local.d.mts +1 -0
- package/dist/plugins/sui/mode/local.mjs +203 -61
- package/dist/plugins/sui/mode/local.mjs.map +1 -1
- package/dist/plugins/sui/mode/shared-boot.mjs +18 -23
- package/dist/plugins/sui/mode/shared-boot.mjs.map +1 -1
- package/dist/plugins/sui/mode/shared.d.mts +6 -7
- package/dist/plugins/sui/mode/shared.mjs.map +1 -1
- package/dist/plugins/sui/mode/spec.d.mts +23 -6
- package/dist/{substrate/runtime/sui-move-build → plugins/sui/move}/index.mjs +28 -30
- package/dist/plugins/sui/move/index.mjs.map +1 -0
- package/dist/plugins/sui/move-summary-runner.mjs +8 -4
- package/dist/plugins/sui/move-summary-runner.mjs.map +1 -1
- package/dist/{substrate/network.d.mts → plugins/sui/network-config.d.mts} +11 -10
- package/dist/plugins/sui/network-resolver.d.mts +6 -6
- package/dist/plugins/sui/routable.mjs.map +1 -1
- package/dist/plugins/sui/service.mjs +10 -6
- package/dist/plugins/sui/service.mjs.map +1 -1
- package/dist/plugins/sui/snapshot.mjs +10 -5
- package/dist/plugins/sui/snapshot.mjs.map +1 -1
- package/dist/plugins/wallet/codegen.d.mts +8 -6
- package/dist/plugins/wallet/codegen.mjs +4 -10
- package/dist/plugins/wallet/codegen.mjs.map +1 -1
- package/dist/plugins/wallet/errors.mjs +1 -4
- package/dist/plugins/wallet/errors.mjs.map +1 -1
- package/dist/plugins/wallet/index.d.mts +3 -6
- package/dist/plugins/wallet/index.mjs +16 -21
- package/dist/plugins/wallet/index.mjs.map +1 -1
- package/dist/plugins/wallet/origin-policy.mjs +3 -3
- package/dist/plugins/wallet/origin-policy.mjs.map +1 -1
- package/dist/plugins/wallet/pairing.mjs +6 -24
- package/dist/plugins/wallet/pairing.mjs.map +1 -1
- package/dist/plugins/wallet/protocol.mjs.map +1 -1
- package/dist/plugins/wallet/routable.mjs.map +1 -1
- package/dist/plugins/wallet/server.mjs +17 -24
- package/dist/plugins/wallet/server.mjs.map +1 -1
- package/dist/plugins/wallet/service.d.mts +2 -2
- package/dist/plugins/wallet/service.mjs +4 -15
- package/dist/plugins/wallet/service.mjs.map +1 -1
- package/dist/plugins/wallet/snapshot.mjs.map +1 -1
- package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs +1 -5
- package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs.map +1 -1
- package/dist/plugins/walrus/codegen.d.mts +2 -13
- package/dist/plugins/walrus/codegen.mjs +93 -28
- package/dist/plugins/walrus/codegen.mjs.map +1 -1
- package/dist/plugins/walrus/deploy-paths.mjs +2 -3
- package/dist/plugins/walrus/deploy-paths.mjs.map +1 -1
- package/dist/plugins/walrus/deploy.mjs +26 -19
- package/dist/plugins/walrus/deploy.mjs.map +1 -1
- package/dist/plugins/walrus/errors.mjs +1 -8
- package/dist/plugins/walrus/errors.mjs.map +1 -1
- package/dist/plugins/walrus/faucet-strategy.mjs +15 -1
- package/dist/plugins/walrus/faucet-strategy.mjs.map +1 -1
- package/dist/plugins/walrus/index.d.mts +13 -44
- package/dist/plugins/walrus/index.mjs +119 -122
- package/dist/plugins/walrus/index.mjs.map +1 -1
- package/dist/plugins/walrus/mode/known-deploy.mjs +6 -6
- package/dist/plugins/walrus/mode/known-deploy.mjs.map +1 -1
- package/dist/plugins/walrus/mode/local-cluster.d.mts +2 -2
- package/dist/plugins/walrus/mode/local-cluster.mjs +2 -10
- package/dist/plugins/walrus/mode/local-cluster.mjs.map +1 -1
- package/dist/plugins/walrus/plugin-key.mjs.map +1 -1
- package/dist/plugins/walrus/registry-publish.mjs.map +1 -1
- package/dist/plugins/walrus/routable.mjs.map +1 -1
- package/dist/plugins/walrus/service.mjs.map +1 -1
- package/dist/plugins/walrus/snapshot.mjs +3 -3
- package/dist/plugins/walrus/snapshot.mjs.map +1 -1
- package/dist/plugins/walrus/storage-nodes.mjs +53 -14
- package/dist/plugins/walrus/storage-nodes.mjs.map +1 -1
- package/dist/plugins/walrus/wal-swap.mjs +4 -8
- package/dist/plugins/walrus/wal-swap.mjs.map +1 -1
- package/dist/primitives/artifact-publisher.mjs.map +1 -1
- package/dist/primitives/cache.d.mts +1 -1
- package/dist/runtime/docker/client.mjs +47 -3
- package/dist/runtime/docker/client.mjs.map +1 -1
- package/dist/runtime/docker/container.mjs +37 -57
- package/dist/runtime/docker/container.mjs.map +1 -1
- package/dist/runtime/docker/errors.mjs.map +1 -1
- package/dist/runtime/docker/exec.mjs +2 -2
- package/dist/runtime/docker/exec.mjs.map +1 -1
- package/dist/runtime/docker/image.mjs +10 -11
- package/dist/runtime/docker/image.mjs.map +1 -1
- package/dist/runtime/docker/index.mjs +0 -1
- package/dist/runtime/docker/inspect-and-decode.mjs.map +1 -1
- package/dist/runtime/docker/inventory.mjs +9 -9
- package/dist/runtime/docker/inventory.mjs.map +1 -1
- package/dist/runtime/docker/labels.mjs +12 -1
- package/dist/runtime/docker/labels.mjs.map +1 -1
- package/dist/runtime/docker/network.mjs +6 -6
- package/dist/runtime/docker/network.mjs.map +1 -1
- package/dist/runtime/docker/render-run-args.mjs.map +1 -1
- package/dist/runtime/docker/service.mjs +31 -45
- package/dist/runtime/docker/service.mjs.map +1 -1
- package/dist/runtime/docker/sweep.mjs +14 -64
- package/dist/runtime/docker/sweep.mjs.map +1 -1
- package/dist/runtime/docker/volume.mjs +1 -1
- package/dist/runtime/docker/volume.mjs.map +1 -1
- package/dist/runtime/docker/wrap.mjs +14 -2
- package/dist/runtime/docker/wrap.mjs.map +1 -1
- package/dist/substrate/brand.d.mts +2 -5
- package/dist/substrate/brand.mjs +3 -2
- package/dist/substrate/brand.mjs.map +1 -1
- package/dist/substrate/cross-process.mjs +2 -16
- package/dist/substrate/cross-process.mjs.map +1 -1
- package/dist/substrate/event-time.mjs +0 -2
- package/dist/substrate/event-time.mjs.map +1 -1
- package/dist/substrate/events.d.mts +46 -16
- package/dist/substrate/identity.d.mts +11 -5
- package/dist/substrate/manifest.d.mts +33 -26
- package/dist/substrate/manifest.mjs +8 -3
- package/dist/substrate/manifest.mjs.map +1 -1
- package/dist/substrate/options.d.mts +33 -4
- package/dist/substrate/plugin-ctx.d.mts +70 -0
- package/dist/substrate/plugin-ctx.mjs +66 -0
- package/dist/substrate/plugin-ctx.mjs.map +1 -0
- package/dist/substrate/plugin.d.mts +46 -38
- package/dist/substrate/plugin.mjs +13 -9
- package/dist/substrate/plugin.mjs.map +1 -1
- package/dist/substrate/projection.d.mts +1 -1
- package/dist/substrate/runtime/atomic-write.mjs +3 -4
- package/dist/substrate/runtime/atomic-write.mjs.map +1 -1
- package/dist/substrate/runtime/cache/schema.mjs.map +1 -1
- package/dist/substrate/runtime/cache/service.mjs +50 -20
- package/dist/substrate/runtime/cache/service.mjs.map +1 -1
- package/dist/substrate/runtime/config-validation.mjs.map +1 -1
- package/dist/substrate/runtime/control-plane/domain.mjs +34 -12
- package/dist/substrate/runtime/control-plane/domain.mjs.map +1 -1
- package/dist/substrate/runtime/control-plane/service.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/command-channel/channel.mjs +14 -17
- package/dist/substrate/runtime/cross-process/command-channel/channel.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/command-channel/file-channel.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/command-channel/protocol.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/command-channel/runtime-control-lock.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/index.mjs +0 -2
- package/dist/substrate/runtime/cross-process/live-clock.mjs +1 -1
- package/dist/substrate/runtime/cross-process/live-clock.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/liveness.mjs +11 -18
- package/dist/substrate/runtime/cross-process/liveness.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/reclaim-stale-file.mjs +2 -2
- package/dist/substrate/runtime/cross-process/reclaim-stale-file.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/roster.mjs +17 -127
- package/dist/substrate/runtime/cross-process/roster.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/self-pid.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/stack-lock.mjs +29 -28
- package/dist/substrate/runtime/cross-process/stack-lock.mjs.map +1 -1
- package/dist/substrate/runtime/current-plugin.mjs.map +1 -1
- package/dist/substrate/runtime/errors.mjs +1 -13
- package/dist/substrate/runtime/errors.mjs.map +1 -1
- package/dist/substrate/runtime/format-unknown-error.mjs.map +1 -1
- package/dist/substrate/runtime/host-bind-mount-owner.mjs.map +1 -1
- package/dist/substrate/runtime/host-gateway.mjs.map +1 -1
- package/dist/substrate/runtime/host-tree-tar/index.mjs +15 -163
- package/dist/substrate/runtime/host-tree-tar/index.mjs.map +1 -1
- package/dist/substrate/runtime/http-probe.d.mts +1 -3
- package/dist/substrate/runtime/http-probe.mjs.map +1 -1
- package/dist/substrate/runtime/index.mjs +1 -6
- package/dist/substrate/runtime/lease-broker/service.mjs +5 -23
- package/dist/substrate/runtime/lease-broker/service.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/dep-graph.mjs +3 -3
- package/dist/substrate/runtime/lifecycle/dep-graph.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/graph-input-id.d.mts +1 -0
- package/dist/substrate/runtime/lifecycle/graph-input-id.mjs +133 -0
- package/dist/substrate/runtime/lifecycle/graph-input-id.mjs.map +1 -0
- package/dist/substrate/runtime/lifecycle/index.mjs +2 -2
- package/dist/substrate/runtime/lifecycle/plugin-registry.d.mts +1 -1
- package/dist/substrate/runtime/lifecycle/plugin-registry.mjs +22 -1
- package/dist/substrate/runtime/lifecycle/plugin-registry.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/ready-gate.mjs +2 -15
- package/dist/substrate/runtime/lifecycle/ready-gate.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/selective-restart.mjs +29 -25
- package/dist/substrate/runtime/lifecycle/selective-restart.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/signals.mjs +1 -1
- package/dist/substrate/runtime/lifecycle/signals.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/state-machine.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/watch-attribution.d.mts +1 -1
- package/dist/substrate/runtime/lifecycle/watch-attribution.mjs +0 -1
- package/dist/substrate/runtime/lifecycle/watch-attribution.mjs.map +1 -1
- package/dist/substrate/runtime/managed-container.d.mts +5 -1
- package/dist/substrate/runtime/managed-container.mjs +8 -10
- package/dist/substrate/runtime/managed-container.mjs.map +1 -1
- package/dist/substrate/runtime/manifest/manifest.mjs +8 -30
- package/dist/substrate/runtime/manifest/manifest.mjs.map +1 -1
- package/dist/substrate/runtime/mode-errors.d.mts +1 -2
- package/dist/substrate/runtime/mode-errors.mjs.map +1 -1
- package/dist/substrate/runtime/observability/cascade-formatter.mjs +1 -11
- package/dist/substrate/runtime/observability/cascade-formatter.mjs.map +1 -1
- package/dist/substrate/runtime/observability/ignore-with-log.mjs.map +1 -1
- package/dist/substrate/runtime/observability/index.d.mts +1 -1
- package/dist/substrate/runtime/observability/index.mjs +4 -6
- package/dist/substrate/runtime/observability/log-attrs.mjs +46 -0
- package/dist/substrate/runtime/observability/log-attrs.mjs.map +1 -0
- package/dist/substrate/runtime/observability/log-store.mjs.map +1 -1
- package/dist/substrate/runtime/observability/logger.mjs +3 -3
- package/dist/substrate/runtime/observability/logger.mjs.map +1 -1
- package/dist/substrate/runtime/observability/output-truncate.mjs.map +1 -1
- package/dist/substrate/runtime/observability/pretty-error.mjs.map +1 -1
- package/dist/substrate/runtime/observability/process-lines.mjs.map +1 -1
- package/dist/substrate/runtime/observability/redaction.mjs.map +1 -1
- package/dist/substrate/runtime/observability/subprocess-capture.mjs +2 -2
- package/dist/substrate/runtime/observability/subprocess-capture.mjs.map +1 -1
- package/dist/substrate/runtime/passthrough-or-wrap.mjs.map +1 -1
- package/dist/substrate/runtime/paths.mjs +27 -9
- package/dist/substrate/runtime/paths.mjs.map +1 -1
- package/dist/substrate/runtime/phase-preserving-produce.mjs.map +1 -1
- package/dist/substrate/runtime/port-broker/service.mjs +10 -27
- package/dist/substrate/runtime/port-broker/service.mjs.map +1 -1
- package/dist/substrate/runtime/post-acquire-tasks.mjs.map +1 -1
- package/dist/substrate/runtime/probes.d.mts +2 -3
- package/dist/substrate/runtime/probes.mjs.map +1 -1
- package/dist/substrate/runtime/process-supervisor.mjs.map +1 -1
- package/dist/substrate/runtime/projection/operational-endpoints.mjs.map +1 -1
- package/dist/substrate/runtime/projection/state-ref.mjs.map +1 -1
- package/dist/substrate/runtime/projection/update.mjs +87 -11
- package/dist/substrate/runtime/projection/update.mjs.map +1 -1
- package/dist/substrate/runtime/random-suffix.mjs.map +1 -1
- package/dist/substrate/runtime/reconcile/fs-plan.mjs +146 -0
- package/dist/substrate/runtime/reconcile/fs-plan.mjs.map +1 -0
- package/dist/substrate/runtime/reconcile/graph.mjs +19 -0
- package/dist/substrate/runtime/reconcile/graph.mjs.map +1 -0
- package/dist/substrate/runtime/reconcile/index.mjs +5 -0
- package/dist/substrate/runtime/reconcile/label.mjs +41 -0
- package/dist/substrate/runtime/reconcile/label.mjs.map +1 -0
- package/dist/substrate/runtime/reconcile/spec.mjs +15 -0
- package/dist/substrate/runtime/reconcile/spec.mjs.map +1 -0
- package/dist/substrate/runtime/retry-policy.d.mts +2 -3
- package/dist/substrate/runtime/retry-policy.mjs.map +1 -1
- package/dist/substrate/runtime/routed-url.mjs.map +1 -1
- package/dist/substrate/runtime/runtime-decode.mjs.map +1 -1
- package/dist/substrate/runtime/scoped-http-server.mjs.map +1 -1
- package/dist/substrate/runtime/stage-and-swap/index.mjs +49 -12
- package/dist/substrate/runtime/stage-and-swap/index.mjs.map +1 -1
- package/dist/substrate/runtime/strategy-registry/chain-keyed-strategy-for.mjs.map +1 -1
- package/dist/substrate/runtime/strategy-registry/chain-probe-for.mjs.map +1 -1
- package/dist/substrate/runtime/strategy-registry/service.mjs +29 -17
- package/dist/substrate/runtime/strategy-registry/service.mjs.map +1 -1
- package/dist/substrate/runtime/subnet-broker.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/acquire-node.mjs +188 -56
- package/dist/substrate/runtime/supervisor/acquire-node.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/background-tasks.mjs +79 -65
- package/dist/substrate/runtime/supervisor/background-tasks.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/command-loop.mjs +82 -23
- package/dist/substrate/runtime/supervisor/command-loop.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/contribution-dispatcher.mjs +16 -0
- package/dist/substrate/runtime/supervisor/contribution-dispatcher.mjs.map +1 -0
- package/dist/substrate/runtime/supervisor/errors.mjs +11 -2
- package/dist/substrate/runtime/supervisor/errors.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/index.mjs +2 -0
- package/dist/substrate/runtime/supervisor/shutdown.mjs +6 -6
- package/dist/substrate/runtime/supervisor/shutdown.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/start-supervisor.mjs +60 -70
- package/dist/substrate/runtime/supervisor/start-supervisor.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/state.d.mts +1 -1
- package/dist/substrate/runtime/supervisor/state.mjs +1 -1
- package/dist/substrate/runtime/supervisor/state.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/teardown.mjs +10 -9
- package/dist/substrate/runtime/supervisor/teardown.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/wiring.mjs +6 -20
- package/dist/substrate/runtime/supervisor/wiring.mjs.map +1 -1
- package/dist/substrate/runtime/tar/reader.mjs +216 -0
- package/dist/substrate/runtime/tar/reader.mjs.map +1 -0
- package/dist/substrate/runtime/typed-env.mjs.map +1 -1
- package/dist/substrate/versioned-doc-schema.mjs.map +1 -1
- package/dist/substrate/versioned-doc-sync.mjs +5 -5
- package/dist/substrate/versioned-doc-sync.mjs.map +1 -1
- package/dist/surfaces/cli/command-tree.mjs +49 -7
- package/dist/surfaces/cli/command-tree.mjs.map +1 -1
- package/dist/surfaces/cli/commands/config.mjs +1 -1
- package/dist/surfaces/cli/commands/config.mjs.map +1 -1
- package/dist/surfaces/cli/commands/confirm-node.mjs.map +1 -1
- package/dist/surfaces/cli/commands/confirm.mjs.map +1 -1
- package/dist/surfaces/cli/commands/doctor.mjs +1 -1
- package/dist/surfaces/cli/commands/doctor.mjs.map +1 -1
- package/dist/surfaces/cli/commands/prune-picker-entry.mjs.map +1 -1
- package/dist/surfaces/cli/commands/prune-picker.mjs.map +1 -1
- package/dist/surfaces/cli/commands/prune.mjs +1 -1
- package/dist/surfaces/cli/commands/prune.mjs.map +1 -1
- package/dist/surfaces/cli/commands/snapshot.mjs +1 -1
- package/dist/surfaces/cli/commands/snapshot.mjs.map +1 -1
- package/dist/surfaces/cli/commands/status.mjs +1 -1
- package/dist/surfaces/cli/commands/status.mjs.map +1 -1
- package/dist/surfaces/cli/commands/supervisor-presence.mjs.map +1 -1
- package/dist/surfaces/cli/commands/wipe.mjs +3 -4
- package/dist/surfaces/cli/commands/wipe.mjs.map +1 -1
- package/dist/surfaces/cli/envelope.mjs.map +1 -1
- package/dist/surfaces/cli/errors.mjs.map +1 -1
- package/dist/surfaces/cli/flags.mjs.map +1 -1
- package/dist/surfaces/cli/index.mjs +45 -14
- package/dist/surfaces/cli/index.mjs.map +1 -1
- package/dist/surfaces/cli/output.mjs.map +1 -1
- package/dist/surfaces/cli/sysexits.mjs.map +1 -1
- package/dist/surfaces/tui/app.mjs +0 -21
- package/dist/surfaces/tui/app.mjs.map +1 -1
- package/dist/surfaces/tui/dashboard.mjs +0 -48
- package/dist/surfaces/tui/dashboard.mjs.map +1 -1
- package/dist/surfaces/tui/display-derivation.mjs +80 -16
- package/dist/surfaces/tui/display-derivation.mjs.map +1 -1
- package/dist/surfaces/tui/errors.mjs.map +1 -1
- package/dist/surfaces/tui/event-log.mjs +0 -9
- package/dist/surfaces/tui/event-log.mjs.map +1 -1
- package/dist/surfaces/tui/heartbeat.mjs.map +1 -1
- package/dist/surfaces/tui/index.mjs +2 -2
- package/dist/surfaces/tui/index.mjs.map +1 -1
- package/dist/surfaces/tui/input.mjs.map +1 -1
- package/dist/surfaces/tui/mode-detect.mjs.map +1 -1
- package/dist/surfaces/tui/mount-ink.mjs.map +1 -1
- package/dist/surfaces/tui/plain-renderer.mjs +26 -19
- package/dist/surfaces/tui/plain-renderer.mjs.map +1 -1
- package/dist/surfaces/tui/resource-table.mjs +8 -10
- package/dist/surfaces/tui/resource-table.mjs.map +1 -1
- package/images/postgres/Dockerfile +0 -1
- package/images/sui/Dockerfile +27 -54
- package/images/sui/entrypoint.sh +17 -179
- package/package.json +23 -15
- package/dashboard-ui/assets/index-Bmi1UtAg.js +0 -1356
- package/dashboard-ui/assets/index-D5EShVt4.js +0 -3
- package/dashboard-ui/assets/index-Deml9drg.css +0 -1
- package/dist/api/plugin-errors.d.mts +0 -7
- package/dist/api/plugin-errors.mjs +0 -10
- package/dist/api/plugin-errors.mjs.map +0 -1
- package/dist/cli/wirings/build-verb-layers.mjs +0 -42
- package/dist/cli/wirings/build-verb-layers.mjs.map +0 -1
- package/dist/contracts/capability-decl.d.mts +0 -40
- package/dist/orchestrators/built-in-plugin-layers.mjs +0 -54
- package/dist/orchestrators/built-in-plugin-layers.mjs.map +0 -1
- package/dist/orchestrators/run.mjs +0 -91
- package/dist/orchestrators/run.mjs.map +0 -1
- package/dist/orchestrators/runtime-composition.d.mts +0 -10
- package/dist/orchestrators/runtime-composition.mjs +0 -252
- package/dist/orchestrators/runtime-composition.mjs.map +0 -1
- package/dist/orchestrators/snapshot/capture-command.d.mts +0 -1
- package/dist/orchestrators/snapshot/capture-command.mjs +0 -25
- package/dist/orchestrators/snapshot/capture-command.mjs.map +0 -1
- package/dist/orchestrators/snapshot/pending-marker.mjs +0 -99
- package/dist/orchestrators/snapshot/pending-marker.mjs.map +0 -1
- package/dist/orchestrators/snapshot/recover-pending.mjs +0 -223
- package/dist/orchestrators/snapshot/recover-pending.mjs.map +0 -1
- package/dist/orchestrators/snapshot/state-document.d.mts +0 -1
- package/dist/orchestrators/snapshot/state-document.mjs +0 -58
- package/dist/orchestrators/snapshot/state-document.mjs.map +0 -1
- package/dist/plugins/account/spans.mjs +0 -16
- package/dist/plugins/account/spans.mjs.map +0 -1
- package/dist/plugins/account/variants/env.mjs +0 -24
- package/dist/plugins/account/variants/env.mjs.map +0 -1
- package/dist/plugins/account/variants/inline.mjs +0 -13
- package/dist/plugins/account/variants/inline.mjs.map +0 -1
- package/dist/plugins/account/variants/keystore.mjs +0 -91
- package/dist/plugins/account/variants/keystore.mjs.map +0 -1
- package/dist/plugins/action/spans.mjs +0 -11
- package/dist/plugins/action/spans.mjs.map +0 -1
- package/dist/plugins/coin/spans.mjs +0 -20
- package/dist/plugins/coin/spans.mjs.map +0 -1
- package/dist/plugins/deepbook/spans.mjs +0 -18
- package/dist/plugins/deepbook/spans.mjs.map +0 -1
- package/dist/plugins/faucet/spans.mjs +0 -12
- package/dist/plugins/faucet/spans.mjs.map +0 -1
- package/dist/plugins/package/spans.mjs +0 -14
- package/dist/plugins/package/spans.mjs.map +0 -1
- package/dist/plugins/postgres/codegen.mjs +0 -42
- package/dist/plugins/postgres/codegen.mjs.map +0 -1
- package/dist/plugins/postgres/connection.d.mts +0 -33
- package/dist/plugins/postgres/connection.mjs.map +0 -1
- package/dist/plugins/postgres/db-ensure.mjs.map +0 -1
- package/dist/plugins/postgres/errors.d.mts +0 -60
- package/dist/plugins/postgres/errors.mjs +0 -29
- package/dist/plugins/postgres/errors.mjs.map +0 -1
- package/dist/plugins/postgres/index.d.mts +0 -37
- package/dist/plugins/postgres/index.mjs +0 -68
- package/dist/plugins/postgres/index.mjs.map +0 -1
- package/dist/plugins/postgres/routable.mjs +0 -33
- package/dist/plugins/postgres/routable.mjs.map +0 -1
- package/dist/plugins/postgres/service.d.mts +0 -50
- package/dist/plugins/postgres/service.mjs +0 -179
- package/dist/plugins/postgres/service.mjs.map +0 -1
- package/dist/plugins/postgres/snapshot.mjs +0 -32
- package/dist/plugins/postgres/snapshot.mjs.map +0 -1
- package/dist/plugins/postgres/spans.mjs +0 -11
- package/dist/plugins/postgres/spans.mjs.map +0 -1
- package/dist/plugins/seal/spans.mjs +0 -18
- package/dist/plugins/seal/spans.mjs.map +0 -1
- package/dist/plugins/sui/spans.mjs +0 -17
- package/dist/plugins/sui/spans.mjs.map +0 -1
- package/dist/plugins/wallet/spans.mjs +0 -22
- package/dist/plugins/wallet/spans.mjs.map +0 -1
- package/dist/plugins/walrus/registry-publish.d.mts +0 -24
- package/dist/plugins/walrus/spans.mjs +0 -18
- package/dist/plugins/walrus/spans.mjs.map +0 -1
- package/dist/runtime/docker/logs.d.mts +0 -1
- package/dist/runtime/docker/logs.mjs +0 -34
- package/dist/runtime/docker/logs.mjs.map +0 -1
- package/dist/substrate/runtime/artifact-publisher/index.mjs +0 -86
- package/dist/substrate/runtime/artifact-publisher/index.mjs.map +0 -1
- package/dist/substrate/runtime/capability-sinks/index.d.mts +0 -1
- package/dist/substrate/runtime/capability-sinks/index.mjs +0 -3
- package/dist/substrate/runtime/capability-sinks/layer.d.mts +0 -1
- package/dist/substrate/runtime/capability-sinks/layer.mjs +0 -31
- package/dist/substrate/runtime/capability-sinks/layer.mjs.map +0 -1
- package/dist/substrate/runtime/capability-sinks/service.d.mts +0 -95
- package/dist/substrate/runtime/capability-sinks/service.mjs +0 -69
- package/dist/substrate/runtime/capability-sinks/service.mjs.map +0 -1
- package/dist/substrate/runtime/cross-process/lock.d.mts +0 -1
- package/dist/substrate/runtime/cross-process/lock.mjs +0 -23
- package/dist/substrate/runtime/cross-process/lock.mjs.map +0 -1
- package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs +0 -113
- package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs.map +0 -1
- package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs +0 -31
- package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs.map +0 -1
- package/dist/substrate/runtime/observability/formatter-registry.d.mts +0 -1
- package/dist/substrate/runtime/observability/formatter-registry.mjs +0 -48
- package/dist/substrate/runtime/observability/formatter-registry.mjs.map +0 -1
- package/dist/substrate/runtime/observability/span-store.d.mts +0 -1
- package/dist/substrate/runtime/observability/span-store.mjs +0 -110
- package/dist/substrate/runtime/observability/span-store.mjs.map +0 -1
- package/dist/substrate/runtime/observability/spans.d.mts +0 -1
- package/dist/substrate/runtime/observability/spans.mjs +0 -87
- package/dist/substrate/runtime/observability/spans.mjs.map +0 -1
- package/dist/substrate/runtime/projection/index.mjs +0 -4
- package/dist/substrate/runtime/projection/persisted.mjs +0 -213
- package/dist/substrate/runtime/projection/persisted.mjs.map +0 -1
- package/dist/substrate/runtime/scoped-multimap/service.mjs +0 -52
- package/dist/substrate/runtime/scoped-multimap/service.mjs.map +0 -1
- package/dist/substrate/runtime/scoped-ref-map/index.mjs +0 -2
- package/dist/substrate/runtime/scoped-ref-map/service.mjs +0 -83
- package/dist/substrate/runtime/scoped-ref-map/service.mjs.map +0 -1
- package/dist/substrate/runtime/state-store/index.mjs +0 -3
- package/dist/substrate/runtime/state-store/schema.d.mts +0 -1
- package/dist/substrate/runtime/state-store/schema.mjs +0 -41
- package/dist/substrate/runtime/state-store/schema.mjs.map +0 -1
- package/dist/substrate/runtime/state-store/service.d.mts +0 -1
- package/dist/substrate/runtime/state-store/service.mjs +0 -145
- package/dist/substrate/runtime/state-store/service.mjs.map +0 -1
- package/dist/substrate/runtime/sui-execute/index.mjs.map +0 -1
- package/dist/substrate/runtime/sui-execute/sign-and-dispatch.mjs.map +0 -1
- package/dist/substrate/runtime/sui-ledger/object-ref.mjs.map +0 -1
- package/dist/substrate/runtime/sui-move-build/index.mjs.map +0 -1
- package/dist/substrate/runtime/supervisor/dispatch-contributions.mjs +0 -151
- package/dist/substrate/runtime/supervisor/dispatch-contributions.mjs.map +0 -1
- package/dist/substrate/state-store.d.mts +0 -1
- /package/dist/orchestrators/{snapshot/pending-marker.d.mts → codegen/id-config.d.mts} +0 -0
- /package/dist/orchestrators/snapshot/{recover-pending.d.mts → interrupted-restore.d.mts} +0 -0
- /package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/sign-and-dispatch.d.mts +0 -0
- /package/dist/plugins/{postgres/snapshot.d.mts → sui/ledger/object-ref.d.mts} +0 -0
- /package/dist/{substrate/runtime/sui-move-build → plugins/sui/move}/index.d.mts +0 -0
- /package/dist/substrate/runtime/{state-store/index.d.mts → reconcile/graph.d.mts} +0 -0
- /package/dist/substrate/runtime/{cross-process/snapshot-reservation.d.mts → supervisor/contribution-dispatcher.d.mts} +0 -0
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Context, Effect, FileSystem, Layer, Scope } from "effect";
|
|
2
|
-
//#region src/orchestrators/runtime-composition.d.ts
|
|
3
|
-
interface ProductionCodegenOptions {
|
|
4
|
-
readonly appRoot?: string;
|
|
5
|
-
readonly outputDir?: string;
|
|
6
|
-
readonly stackSubdir?: string | null;
|
|
7
|
-
}
|
|
8
|
-
//#endregion
|
|
9
|
-
export { ProductionCodegenOptions };
|
|
10
|
-
//# sourceMappingURL=runtime-composition.d.mts.map
|
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
import { endpointKey } from "../substrate/brand.mjs";
|
|
2
|
-
import { StackPathsService } from "../substrate/runtime/paths.mjs";
|
|
3
|
-
import { readResolvedSync } from "../substrate/runtime/lifecycle/plugin-registry.mjs";
|
|
4
|
-
import { SnapshotOrchestratorService, layerSnapshotOrchestrator } from "./snapshot/service.mjs";
|
|
5
|
-
import "../substrate/runtime/lifecycle/index.mjs";
|
|
6
|
-
import { operationalEndpointEventsFromResolvedValue } from "../substrate/runtime/projection/operational-endpoints.mjs";
|
|
7
|
-
import { PostAcquireTasksService } from "../substrate/runtime/post-acquire-tasks.mjs";
|
|
8
|
-
import { MoveCodegenService, MoveSummaryRunnerService, layerMystenMoveCodegen } from "./codegen/bindings.mjs";
|
|
9
|
-
import { layerSuiMoveSummaryRunnerDocker } from "../plugins/sui/move-summary-runner.mjs";
|
|
10
|
-
import { CodegenPathsService, layerCodegenPaths, layerCodegenRoot } from "./codegen/paths.mjs";
|
|
11
|
-
import { CodegenOrchestratorService, layerCodegenOrchestrator } from "./codegen/service.mjs";
|
|
12
|
-
import { layerTraefikContainerOpsDocker } from "./router/traefik-container.mjs";
|
|
13
|
-
import { makeDefaultRouterProfile } from "./router/profile.mjs";
|
|
14
|
-
import { layerEntrypointRegistry } from "./router/entrypoints.mjs";
|
|
15
|
-
import { RouterService, layerDockerUpstreamResolver, layerRouterConfigLiteral, layerRouterService } from "./router/service.mjs";
|
|
16
|
-
import "./router/index.mjs";
|
|
17
|
-
import { BUILT_IN_ENTRYPOINTS } from "../plugins/router-entrypoints.mjs";
|
|
18
|
-
import "./snapshot/index.mjs";
|
|
19
|
-
import { ManifestExtrasLookupError, resolveManifestExtras } from "../substrate/manifest.mjs";
|
|
20
|
-
import { buildEnvelope, writeManifest } from "../substrate/runtime/manifest/manifest.mjs";
|
|
21
|
-
import "../substrate/runtime/manifest/index.mjs";
|
|
22
|
-
import { Context, Effect, FileSystem, Layer, Ref } from "effect";
|
|
23
|
-
import { isAbsolute, join, resolve } from "node:path";
|
|
24
|
-
//#region src/orchestrators/runtime-composition.ts
|
|
25
|
-
var ManifestEndpointRegistryService = class extends Context.Service()("@devstack/orchestrators/ManifestEndpointRegistry") {};
|
|
26
|
-
const layerManifestEndpointRegistry = Layer.effect(ManifestEndpointRegistryService, Effect.gen(function* () {
|
|
27
|
-
const entriesRef = yield* Ref.make([]);
|
|
28
|
-
const seqRef = yield* Ref.make(0);
|
|
29
|
-
const register = (entry) => Effect.gen(function* () {
|
|
30
|
-
const seq = yield* Ref.updateAndGet(seqRef, (n) => n + 1);
|
|
31
|
-
yield* Ref.update(entriesRef, (entries) => [...entries, {
|
|
32
|
-
...entry,
|
|
33
|
-
seq
|
|
34
|
-
}]);
|
|
35
|
-
yield* Effect.addFinalizer(() => Ref.update(entriesRef, (entries) => entries.filter((candidate) => candidate.seq !== seq)));
|
|
36
|
-
});
|
|
37
|
-
return ManifestEndpointRegistryService.of({
|
|
38
|
-
register,
|
|
39
|
-
entries: Ref.get(entriesRef).pipe(Effect.map((entries) => entries.map((entryWithSeq) => {
|
|
40
|
-
const { seq, ...entry } = entryWithSeq;
|
|
41
|
-
return entry;
|
|
42
|
-
})))
|
|
43
|
-
});
|
|
44
|
-
}));
|
|
45
|
-
const productionRouterProfile = (options = {}) => makeDefaultRouterProfile(options);
|
|
46
|
-
const productionCodegenOutputDir = (appRoot, outputDir) => {
|
|
47
|
-
const target = outputDir ?? "src/generated";
|
|
48
|
-
return isAbsolute(target) ? target : resolve(appRoot, target);
|
|
49
|
-
};
|
|
50
|
-
/** Codegenable wrapping the resolved manifest-extras blob into a
|
|
51
|
-
* generated `extras.ts` for app-side consumption. Single-callsite
|
|
52
|
-
* helper — declared here to keep the orchestrator's view of the
|
|
53
|
-
* contribution self-contained. */
|
|
54
|
-
const makeExtrasCodegenable = (extras) => ({
|
|
55
|
-
kind: "codegenable",
|
|
56
|
-
emitterName: "app-extras",
|
|
57
|
-
outputPath: "extras.ts",
|
|
58
|
-
sensitive: true,
|
|
59
|
-
emit: (ctx) => Effect.sync(() => {
|
|
60
|
-
ctx.exportConst("extras", extras);
|
|
61
|
-
return ctx.done();
|
|
62
|
-
})
|
|
63
|
-
});
|
|
64
|
-
const layerProductionOrchestrators = (router = {}) => {
|
|
65
|
-
const profile = router.profile ?? productionRouterProfile();
|
|
66
|
-
return Layer.mergeAll(layerSnapshotOrchestrator, layerManifestEndpointRegistry, layerRouterService.pipe(Layer.provideMerge(Layer.mergeAll(layerEntrypointRegistry(BUILT_IN_ENTRYPOINTS), layerTraefikContainerOpsDocker, layerDockerUpstreamResolver(profile), layerRouterConfigLiteral({
|
|
67
|
-
disabled: router.disabled ?? false,
|
|
68
|
-
profile,
|
|
69
|
-
image: router.image ?? "traefik:v3.5",
|
|
70
|
-
routeReadinessProbe: { enabled: router.disabled !== true }
|
|
71
|
-
})))), layerCodegenOrchestrator, layerCodegenPaths.pipe(Layer.provideMerge(layerCodegenRoot({
|
|
72
|
-
outputDir: productionCodegenOutputDir(router.codegen?.appRoot ?? process.cwd(), router.codegen?.outputDir),
|
|
73
|
-
stackSubdir: router.codegen?.stackSubdir ?? null
|
|
74
|
-
}))), layerSuiMoveSummaryRunnerDocker, layerMystenMoveCodegen);
|
|
75
|
-
};
|
|
76
|
-
Effect.gen(function* () {
|
|
77
|
-
yield* (yield* RouterService).boot().pipe(Effect.orDie);
|
|
78
|
-
});
|
|
79
|
-
/** Project a `(pluginKey, EndpointUrl)` pair into the field-set both
|
|
80
|
-
* the engine event and the manifest entry stamp identically. Callers
|
|
81
|
-
* spread this and then add their output-specific fields (the engine
|
|
82
|
-
* event's branded `endpointKey` + `registeredAt`; the manifest
|
|
83
|
-
* entry's stringified `endpointKey` + `pluginKey`). */
|
|
84
|
-
const routableToEndpointFields = (pluginKey, endpoint) => ({
|
|
85
|
-
name: endpoint.endpointName,
|
|
86
|
-
url: endpoint.url,
|
|
87
|
-
displayUrl: null,
|
|
88
|
-
wireProtocol: endpoint.wireProtocol,
|
|
89
|
-
endpointKeyString: `${pluginKey}:${endpoint.endpointName}`
|
|
90
|
-
});
|
|
91
|
-
const endpointEventFromRoutable = (pluginKey, endpoint, registeredAt = Date.now()) => {
|
|
92
|
-
const { endpointKeyString, ...common } = routableToEndpointFields(pluginKey, endpoint);
|
|
93
|
-
return {
|
|
94
|
-
tag: "endpoint.registered",
|
|
95
|
-
endpoint: {
|
|
96
|
-
...common,
|
|
97
|
-
endpointKey: endpointKey(endpointKeyString),
|
|
98
|
-
pluginKey,
|
|
99
|
-
registeredAt
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
};
|
|
103
|
-
const manifestEndpointEntryFromRoutable = (pluginKey, endpoint) => {
|
|
104
|
-
const { endpointKeyString, ...common } = routableToEndpointFields(pluginKey, endpoint);
|
|
105
|
-
return {
|
|
106
|
-
...common,
|
|
107
|
-
endpointKey: endpointKeyString,
|
|
108
|
-
pluginKey: String(pluginKey)
|
|
109
|
-
};
|
|
110
|
-
};
|
|
111
|
-
const manifestEndpointEntryFromOperationalEndpoint = (endpoint) => ({
|
|
112
|
-
endpointKey: String(endpoint.endpointKey),
|
|
113
|
-
name: endpoint.name,
|
|
114
|
-
url: endpoint.url,
|
|
115
|
-
displayUrl: endpoint.displayUrl,
|
|
116
|
-
wireProtocol: endpoint.wireProtocol,
|
|
117
|
-
pluginKey: String(endpoint.pluginKey)
|
|
118
|
-
});
|
|
119
|
-
const orchestratorSink = (sink) => sink;
|
|
120
|
-
const makeProjectionCapabilitySink = () => orchestratorSink({
|
|
121
|
-
kind: "projection",
|
|
122
|
-
accept: (decl, ctx) => Effect.gen(function* () {
|
|
123
|
-
const payload = decl.event.payload;
|
|
124
|
-
const payloadWithRowKey = payload !== null && typeof payload === "object" && "rowKey" in payload && payload.rowKey === null ? {
|
|
125
|
-
...payload,
|
|
126
|
-
rowKey: ctx.pluginKey
|
|
127
|
-
} : payload;
|
|
128
|
-
yield* ctx.publish({
|
|
129
|
-
...decl.event,
|
|
130
|
-
payload: payloadWithRowKey
|
|
131
|
-
});
|
|
132
|
-
})
|
|
133
|
-
});
|
|
134
|
-
const makeStrategyContributorCapabilitySink = () => orchestratorSink({
|
|
135
|
-
kind: "strategy-contributor",
|
|
136
|
-
accept: (decl, ctx) => Effect.gen(function* () {
|
|
137
|
-
yield* ctx.registerStrategy(decl);
|
|
138
|
-
const at = Date.now();
|
|
139
|
-
yield* ctx.publish({
|
|
140
|
-
tag: "strategy.registered",
|
|
141
|
-
capabilityKey: decl.capabilityKey,
|
|
142
|
-
autoMounted: decl.autoMounted,
|
|
143
|
-
at
|
|
144
|
-
});
|
|
145
|
-
yield* Effect.addFinalizer(() => ctx.publish({
|
|
146
|
-
tag: "strategy.unregistered",
|
|
147
|
-
capabilityKey: decl.capabilityKey,
|
|
148
|
-
at: Date.now()
|
|
149
|
-
}));
|
|
150
|
-
})
|
|
151
|
-
});
|
|
152
|
-
const buildProductionOrchestratorSinks = (observers = {}) => Effect.gen(function* () {
|
|
153
|
-
const snapshot = yield* SnapshotOrchestratorService;
|
|
154
|
-
const router = yield* RouterService;
|
|
155
|
-
const codegen = yield* CodegenOrchestratorService;
|
|
156
|
-
const manifestEndpoints = yield* ManifestEndpointRegistryService;
|
|
157
|
-
return [
|
|
158
|
-
orchestratorSink({
|
|
159
|
-
kind: "snapshotable",
|
|
160
|
-
accept: (decl, ctx) => snapshot.registerParticipant(ctx.pluginKey, decl)
|
|
161
|
-
}),
|
|
162
|
-
orchestratorSink({
|
|
163
|
-
kind: "routable",
|
|
164
|
-
accept: (decl, ctx) => router.boot().pipe(Effect.andThen(router.contributeRoute(decl)), Effect.flatMap((endpoint) => {
|
|
165
|
-
const event = endpointEventFromRoutable(ctx.pluginKey, endpoint);
|
|
166
|
-
const manifestEntry = manifestEndpointEntryFromRoutable(ctx.pluginKey, endpoint);
|
|
167
|
-
return manifestEndpoints.register(manifestEntry).pipe(Effect.andThen(ctx.publish(event)), Effect.andThen(observers.routable ? observers.routable(ctx.pluginKey, endpoint, event) : Effect.void));
|
|
168
|
-
}))
|
|
169
|
-
}),
|
|
170
|
-
orchestratorSink({
|
|
171
|
-
kind: "codegenable",
|
|
172
|
-
accept: (decl, ctx) => codegen.registerContribution(ctx.pluginKey, decl).pipe(Effect.flatMap(() => observers.codegenable ? observers.codegenable(ctx.pluginKey, decl) : Effect.void))
|
|
173
|
-
}),
|
|
174
|
-
makeProjectionCapabilitySink(),
|
|
175
|
-
makeStrategyContributorCapabilitySink()
|
|
176
|
-
];
|
|
177
|
-
});
|
|
178
|
-
const makeManifestExtrasContext = (ctx) => {
|
|
179
|
-
const resourceIdToKey = /* @__PURE__ */ new Map();
|
|
180
|
-
for (const [key, node] of ctx.graph.nodes) resourceIdToKey.set(node.member.id, key);
|
|
181
|
-
const lookup = (resourceId) => {
|
|
182
|
-
const key = resourceIdToKey.get(resourceId);
|
|
183
|
-
if (key === void 0) throw new ManifestExtrasLookupError({
|
|
184
|
-
kind: "unknown-resource",
|
|
185
|
-
resourceId
|
|
186
|
-
});
|
|
187
|
-
const resolved = readResolvedSync(ctx.registry, key);
|
|
188
|
-
if (resolved === void 0) throw new ManifestExtrasLookupError({
|
|
189
|
-
kind: "unresolved-resource",
|
|
190
|
-
resourceId
|
|
191
|
-
});
|
|
192
|
-
return resolved;
|
|
193
|
-
};
|
|
194
|
-
return { value: (resource) => lookup(resource.id) };
|
|
195
|
-
};
|
|
196
|
-
const operationalManifestEndpointEntries = (ctx, routableEntries) => {
|
|
197
|
-
const routablePluginKeys = new Set(routableEntries.map((entry) => entry.pluginKey));
|
|
198
|
-
const registeredAt = Date.now();
|
|
199
|
-
const entries = [];
|
|
200
|
-
for (const [key] of ctx.graph.nodes) {
|
|
201
|
-
if (routablePluginKeys.has(String(key))) continue;
|
|
202
|
-
const resolved = readResolvedSync(ctx.registry, key);
|
|
203
|
-
if (resolved === void 0) continue;
|
|
204
|
-
for (const event of operationalEndpointEventsFromResolvedValue(key, resolved, registeredAt)) entries.push(manifestEndpointEntryFromOperationalEndpoint(event.endpoint));
|
|
205
|
-
}
|
|
206
|
-
return entries;
|
|
207
|
-
};
|
|
208
|
-
const buildProductionPostAcquireHook = (options = {}) => Effect.gen(function* () {
|
|
209
|
-
const codegen = yield* CodegenOrchestratorService;
|
|
210
|
-
const paths = yield* CodegenPathsService;
|
|
211
|
-
const summaryRunner = yield* MoveSummaryRunnerService;
|
|
212
|
-
const moveCodegen = yield* MoveCodegenService;
|
|
213
|
-
const fs = yield* FileSystem.FileSystem;
|
|
214
|
-
const stackPaths = yield* StackPathsService;
|
|
215
|
-
const postAcquireTasks = yield* PostAcquireTasksService;
|
|
216
|
-
const manifestEndpoints = yield* ManifestEndpointRegistryService;
|
|
217
|
-
return (ctx) => Effect.gen(function* () {
|
|
218
|
-
const extras = yield* resolveManifestExtras(options.extras, makeManifestExtrasContext(ctx));
|
|
219
|
-
const routableEndpoints = yield* manifestEndpoints.entries;
|
|
220
|
-
const endpoints = [...routableEndpoints, ...operationalManifestEndpointEntries(ctx, routableEndpoints)];
|
|
221
|
-
yield* writeManifest(yield* buildEnvelope({
|
|
222
|
-
identity: {
|
|
223
|
-
app: ctx.identity.app,
|
|
224
|
-
stack: ctx.identity.stack,
|
|
225
|
-
chain: ctx.identity.chain
|
|
226
|
-
},
|
|
227
|
-
contributions: [],
|
|
228
|
-
endpoints,
|
|
229
|
-
extras,
|
|
230
|
-
codegen: { generatedDir: paths.outputDir }
|
|
231
|
-
}), join(stackPaths.stackRoot, "manifest.json")).pipe(Effect.provideService(FileSystem.FileSystem, fs));
|
|
232
|
-
const result = yield* codegen.runCycle({ extraContributions: [makeExtrasCodegenable(extras)] }).pipe(Effect.provideService(CodegenPathsService, paths), Effect.provideService(MoveSummaryRunnerService, summaryRunner), Effect.provideService(MoveCodegenService, moveCodegen), Effect.provideService(FileSystem.FileSystem, fs));
|
|
233
|
-
yield* postAcquireTasks.runAll;
|
|
234
|
-
return [{
|
|
235
|
-
tag: "manifest.flushed",
|
|
236
|
-
manifestVersion: 1,
|
|
237
|
-
at: Date.now()
|
|
238
|
-
}, {
|
|
239
|
-
tag: "codegen.emitted",
|
|
240
|
-
files: [
|
|
241
|
-
...result.filesWritten,
|
|
242
|
-
...result.filesChmod,
|
|
243
|
-
...result.bindings?.filesWritten ?? []
|
|
244
|
-
],
|
|
245
|
-
at: Date.now()
|
|
246
|
-
}];
|
|
247
|
-
});
|
|
248
|
-
});
|
|
249
|
-
//#endregion
|
|
250
|
-
export { buildProductionOrchestratorSinks, buildProductionPostAcquireHook, layerProductionOrchestrators };
|
|
251
|
-
|
|
252
|
-
//# sourceMappingURL=runtime-composition.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-composition.mjs","names":[],"sources":["../../src/orchestrators/runtime-composition.ts"],"sourcesContent":["// Shared production orchestrator composition.\n//\n// CLI, programmatic runStack, and the e2e boot harness all use this\n// module for capability delivery. Tests may swap service\n// implementations (Traefik ops, upstream resolver, codegen paths), but\n// the sink registrations and router boot step stay shared.\n\nimport { Context, Effect, FileSystem, Layer, Ref, Scope } from 'effect';\nimport { isAbsolute, join, resolve } from 'node:path';\n\nimport {\n\tlayerMystenMoveCodegen,\n\tMoveCodegenService,\n\tMoveSummaryRunnerService,\n} from './codegen/bindings.ts';\nimport { layerSuiMoveSummaryRunnerDocker } from '../plugins/sui/move-summary-runner.ts';\nimport { CodegenPathsService, layerCodegenPaths, layerCodegenRoot } from './codegen/paths.ts';\nimport {\n\tCodegenOrchestratorService,\n\tlayerCodegenOrchestrator,\n\ttype Codegenable,\n} from './codegen/service.ts';\nimport type { CodegenableDecl } from '../contracts/codegenable.ts';\nimport {\n\tDEFAULT_TRAEFIK_IMAGE,\n\tlayerDockerUpstreamResolver,\n\tlayerEntrypointRegistry,\n\tlayerRouterConfigLiteral,\n\tlayerRouterService,\n\tlayerTraefikContainerOpsDocker,\n\tRouterService,\n\ttype EndpointUrl,\n\ttype ResolvedRoute,\n} from './router/index.ts';\nimport { BUILT_IN_ENTRYPOINTS } from '../plugins/router-entrypoints.ts';\nimport {\n\tmakeDefaultRouterProfile,\n\ttype DefaultRouterProfileOptions,\n\ttype RouterProfile,\n} from './router/profile.ts';\nimport { layerSnapshotOrchestrator, SnapshotOrchestratorService } from './snapshot/index.ts';\nimport type { ProjectionDecl } from '../contracts/projection.ts';\nimport type { RoutableDecl } from '../contracts/routable.ts';\nimport type { SnapshotableDecl } from '../contracts/snapshotable.ts';\nimport type { StrategyContributorDecl } from '../contracts/strategy-contributor.ts';\nimport { endpointKey, type PluginKey } from '../substrate/brand.ts';\nimport type { EngineEvent } from '../substrate/events.ts';\nimport {\n\tbuildEnvelope,\n\tCURRENT_MANIFEST_VERSION,\n\twriteManifest,\n} from '../substrate/runtime/manifest/index.ts';\nimport { readResolvedSync } from '../substrate/runtime/lifecycle/index.ts';\nimport { operationalEndpointEventsFromResolvedValue } from '../substrate/runtime/projection/operational-endpoints.ts';\nimport {\n\tManifestExtrasLookupError,\n\tresolveManifestExtras,\n\ttype EndpointEntry,\n\ttype ManifestExtras,\n\ttype ManifestExtrasInput,\n} from '../substrate/manifest.ts';\nimport { StackPathsService } from '../substrate/runtime/paths.ts';\nimport { PostAcquireTasksService } from '../substrate/runtime/post-acquire-tasks.ts';\nimport type {\n\tCapabilitySink,\n\tContributionKind,\n\tHarvestContext,\n\tOrchestratorSinks,\n} from '../substrate/runtime/capability-sinks/index.ts';\nimport type {\n\tSupervisorPostAcquireContext,\n\tSupervisorPostAcquireHook,\n} from '../substrate/runtime/supervisor/index.ts';\n\nexport interface ProductionCodegenOptions {\n\treadonly appRoot?: string;\n\treadonly outputDir?: string;\n\treadonly stackSubdir?: string | null;\n}\n\nexport interface ProductionRouterOptions {\n\treadonly codegen?: ProductionCodegenOptions;\n\treadonly disabled?: boolean;\n\treadonly image?: string;\n\treadonly profile?: RouterProfile;\n}\n\nexport interface ProductionPostAcquireOptions {\n\treadonly extras?: ManifestExtrasInput;\n}\n\nexport interface ManifestEndpointRegistry {\n\treadonly register: (entry: EndpointEntry) => Effect.Effect<void, never, Scope.Scope>;\n\treadonly entries: Effect.Effect<ReadonlyArray<EndpointEntry>>;\n}\n\nexport class ManifestEndpointRegistryService extends Context.Service<\n\tManifestEndpointRegistryService,\n\tManifestEndpointRegistry\n>()('@devstack/orchestrators/ManifestEndpointRegistry') {}\n\nexport const layerManifestEndpointRegistry: Layer.Layer<ManifestEndpointRegistryService> =\n\tLayer.effect(\n\t\tManifestEndpointRegistryService,\n\t\tEffect.gen(function* () {\n\t\t\tconst entriesRef = yield* Ref.make<ReadonlyArray<EndpointEntry & { readonly seq: number }>>(\n\t\t\t\t[],\n\t\t\t);\n\t\t\tconst seqRef = yield* Ref.make(0);\n\n\t\t\tconst register = (entry: EndpointEntry): Effect.Effect<void, never, Scope.Scope> =>\n\t\t\t\tEffect.gen(function* () {\n\t\t\t\t\tconst seq = yield* Ref.updateAndGet(seqRef, (n) => n + 1);\n\t\t\t\t\tyield* Ref.update(entriesRef, (entries) => [...entries, { ...entry, seq }]);\n\t\t\t\t\tyield* Effect.addFinalizer(() =>\n\t\t\t\t\t\tRef.update(entriesRef, (entries) =>\n\t\t\t\t\t\t\tentries.filter((candidate) => candidate.seq !== seq),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\treturn ManifestEndpointRegistryService.of({\n\t\t\t\tregister,\n\t\t\t\tentries: Ref.get(entriesRef).pipe(\n\t\t\t\t\tEffect.map((entries) =>\n\t\t\t\t\t\tentries.map((entryWithSeq) => {\n\t\t\t\t\t\t\tconst { seq, ...entry } = entryWithSeq;\n\t\t\t\t\t\t\tvoid seq;\n\t\t\t\t\t\t\treturn entry;\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t});\n\t\t}),\n\t);\n\nexport interface CapabilityDeliveryObservers {\n\treadonly routable?: (\n\t\tpluginKey: PluginKey,\n\t\tendpoint: EndpointUrl,\n\t\tevent: Extract<EngineEvent, { readonly tag: 'endpoint.registered' }>,\n\t) => Effect.Effect<void, never, Scope.Scope>;\n\treadonly codegenable?: (\n\t\tpluginKey: PluginKey,\n\t\tdecl: Codegenable,\n\t) => Effect.Effect<void, never, Scope.Scope>;\n}\n\nexport const productionRouterProfile = (options: DefaultRouterProfileOptions = {}): RouterProfile =>\n\tmakeDefaultRouterProfile(options);\n\nconst productionCodegenOutputDir = (appRoot: string, outputDir: string | undefined): string => {\n\tconst target = outputDir ?? 'src/generated';\n\treturn isAbsolute(target) ? target : resolve(appRoot, target);\n};\n\n/** Codegenable wrapping the resolved manifest-extras blob into a\n * generated `extras.ts` for app-side consumption. Single-callsite\n * helper — declared here to keep the orchestrator's view of the\n * contribution self-contained. */\nconst makeExtrasCodegenable = (extras: ManifestExtras): CodegenableDecl<'app-extras'> => ({\n\tkind: 'codegenable',\n\temitterName: 'app-extras',\n\toutputPath: 'extras.ts',\n\tsensitive: true,\n\temit: (ctx) =>\n\t\tEffect.sync(() => {\n\t\t\tctx.exportConst('extras', extras);\n\t\t\treturn ctx.done();\n\t\t}),\n});\n\nexport const layerProductionOrchestrators = (router: ProductionRouterOptions = {}) => {\n\tconst profile = router.profile ?? productionRouterProfile();\n\treturn Layer.mergeAll(\n\t\tlayerSnapshotOrchestrator,\n\t\tlayerManifestEndpointRegistry,\n\t\tlayerRouterService.pipe(\n\t\t\tLayer.provideMerge(\n\t\t\t\tLayer.mergeAll(\n\t\t\t\t\tlayerEntrypointRegistry(BUILT_IN_ENTRYPOINTS),\n\t\t\t\t\tlayerTraefikContainerOpsDocker,\n\t\t\t\t\tlayerDockerUpstreamResolver(profile),\n\t\t\t\t\tlayerRouterConfigLiteral({\n\t\t\t\t\t\tdisabled: router.disabled ?? false,\n\t\t\t\t\t\tprofile,\n\t\t\t\t\t\timage: router.image ?? DEFAULT_TRAEFIK_IMAGE,\n\t\t\t\t\t\trouteReadinessProbe: {\n\t\t\t\t\t\t\tenabled: router.disabled !== true,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t),\n\t\t),\n\t\tlayerCodegenOrchestrator,\n\t\tlayerCodegenPaths.pipe(\n\t\t\tLayer.provideMerge(\n\t\t\t\tlayerCodegenRoot({\n\t\t\t\t\toutputDir: productionCodegenOutputDir(\n\t\t\t\t\t\trouter.codegen?.appRoot ?? process.cwd(),\n\t\t\t\t\t\trouter.codegen?.outputDir,\n\t\t\t\t\t),\n\t\t\t\t\tstackSubdir: router.codegen?.stackSubdir ?? null,\n\t\t\t\t}),\n\t\t\t),\n\t\t),\n\t\tlayerSuiMoveSummaryRunnerDocker,\n\t\tlayerMystenMoveCodegen,\n\t);\n};\n\nexport const bootRouterOrchestrator: Effect.Effect<void, never, RouterService> = Effect.gen(\n\tfunction* () {\n\t\tconst router = yield* RouterService;\n\t\tyield* router.boot().pipe(Effect.orDie);\n\t},\n);\n\n/** Project a `(pluginKey, EndpointUrl)` pair into the field-set both\n * the engine event and the manifest entry stamp identically. Callers\n * spread this and then add their output-specific fields (the engine\n * event's branded `endpointKey` + `registeredAt`; the manifest\n * entry's stringified `endpointKey` + `pluginKey`). */\nconst routableToEndpointFields = (\n\tpluginKey: PluginKey,\n\tendpoint: EndpointUrl,\n): {\n\treadonly name: string;\n\treadonly url: string;\n\treadonly displayUrl: null;\n\treadonly wireProtocol: EndpointUrl['wireProtocol'];\n\treadonly endpointKeyString: string;\n} => ({\n\tname: endpoint.endpointName,\n\turl: endpoint.url,\n\tdisplayUrl: null,\n\twireProtocol: endpoint.wireProtocol,\n\tendpointKeyString: `${pluginKey}:${endpoint.endpointName}`,\n});\n\nexport const endpointEventFromRoutable = (\n\tpluginKey: PluginKey,\n\tendpoint: EndpointUrl,\n\tregisteredAt = Date.now(),\n): Extract<EngineEvent, { readonly tag: 'endpoint.registered' }> => {\n\tconst { endpointKeyString, ...common } = routableToEndpointFields(pluginKey, endpoint);\n\treturn {\n\t\ttag: 'endpoint.registered',\n\t\tendpoint: {\n\t\t\t...common,\n\t\t\tendpointKey: endpointKey(endpointKeyString),\n\t\t\tpluginKey,\n\t\t\tregisteredAt,\n\t\t},\n\t};\n};\n\nexport const manifestEndpointEntryFromRoutable = (\n\tpluginKey: PluginKey,\n\tendpoint: EndpointUrl,\n): EndpointEntry => {\n\tconst { endpointKeyString, ...common } = routableToEndpointFields(pluginKey, endpoint);\n\treturn {\n\t\t...common,\n\t\tendpointKey: endpointKeyString,\n\t\tpluginKey: String(pluginKey),\n\t};\n};\n\nconst manifestEndpointEntryFromOperationalEndpoint = (\n\tendpoint: Extract<EngineEvent, { readonly tag: 'endpoint.registered' }>['endpoint'],\n): EndpointEntry => ({\n\tendpointKey: String(endpoint.endpointKey),\n\tname: endpoint.name,\n\turl: endpoint.url,\n\tdisplayUrl: endpoint.displayUrl,\n\twireProtocol: endpoint.wireProtocol,\n\tpluginKey: String(endpoint.pluginKey),\n});\n\nconst orchestratorSink = <K extends ContributionKind, TDecl>(\n\tsink: CapabilitySink<K, TDecl>,\n): OrchestratorSinks[number] => sink as OrchestratorSinks[number];\n\nexport const makeProjectionCapabilitySink = (): OrchestratorSinks[number] =>\n\torchestratorSink<'projection', ProjectionDecl>({\n\t\tkind: 'projection',\n\t\taccept: (decl, ctx) =>\n\t\t\tEffect.gen(function* () {\n\t\t\t\t// Stamp `rowKey` (when absent) so projection consumers can\n\t\t\t\t// attribute the row to the contributing plugin. The payload\n\t\t\t\t// stays opaque from the substrate's POV; we project just\n\t\t\t\t// enough to set the row-key field if the payload exposes it.\n\t\t\t\tconst payload = decl.event.payload;\n\t\t\t\tconst payloadWithRowKey =\n\t\t\t\t\tpayload !== null &&\n\t\t\t\t\ttypeof payload === 'object' &&\n\t\t\t\t\t'rowKey' in payload &&\n\t\t\t\t\t(payload as { rowKey: unknown }).rowKey === null\n\t\t\t\t\t\t? { ...payload, rowKey: ctx.pluginKey }\n\t\t\t\t\t\t: payload;\n\t\t\t\tyield* ctx.publish({\n\t\t\t\t\t...decl.event,\n\t\t\t\t\tpayload: payloadWithRowKey,\n\t\t\t\t});\n\t\t\t}),\n\t});\n\nexport const makeStrategyContributorCapabilitySink = (): OrchestratorSinks[number] =>\n\torchestratorSink<'strategy-contributor', StrategyContributorDecl<string, unknown>>({\n\t\tkind: 'strategy-contributor',\n\t\taccept: (decl, ctx) =>\n\t\t\tEffect.gen(function* () {\n\t\t\t\tyield* ctx.registerStrategy(decl);\n\t\t\t\tconst at = Date.now();\n\t\t\t\tyield* ctx.publish({\n\t\t\t\t\ttag: 'strategy.registered',\n\t\t\t\t\tcapabilityKey: decl.capabilityKey,\n\t\t\t\t\tautoMounted: decl.autoMounted,\n\t\t\t\t\tat,\n\t\t\t\t});\n\t\t\t\tyield* Effect.addFinalizer(() =>\n\t\t\t\t\tctx.publish({\n\t\t\t\t\t\ttag: 'strategy.unregistered',\n\t\t\t\t\t\tcapabilityKey: decl.capabilityKey,\n\t\t\t\t\t\tat: Date.now(),\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}),\n\t});\n\nexport const buildProductionOrchestratorSinks = (\n\tobservers: CapabilityDeliveryObservers = {},\n): Effect.Effect<\n\tOrchestratorSinks,\n\tnever,\n\t| SnapshotOrchestratorService\n\t| RouterService\n\t| CodegenOrchestratorService\n\t| ManifestEndpointRegistryService\n> =>\n\tEffect.gen(function* () {\n\t\tconst snapshot = yield* SnapshotOrchestratorService;\n\t\tconst router = yield* RouterService;\n\t\tconst codegen = yield* CodegenOrchestratorService;\n\t\tconst manifestEndpoints = yield* ManifestEndpointRegistryService;\n\t\treturn [\n\t\t\torchestratorSink<'snapshotable', SnapshotableDecl>({\n\t\t\t\tkind: 'snapshotable',\n\t\t\t\taccept: (decl, ctx) => snapshot.registerParticipant(ctx.pluginKey, decl),\n\t\t\t}),\n\t\t\torchestratorSink<'routable', RoutableDecl>({\n\t\t\t\tkind: 'routable',\n\t\t\t\taccept: (decl, ctx: HarvestContext) =>\n\t\t\t\t\trouter.boot().pipe(\n\t\t\t\t\t\tEffect.andThen(router.contributeRoute(decl)),\n\t\t\t\t\t\tEffect.flatMap((endpoint) => {\n\t\t\t\t\t\t\tconst event = endpointEventFromRoutable(ctx.pluginKey, endpoint);\n\t\t\t\t\t\t\tconst manifestEntry = manifestEndpointEntryFromRoutable(ctx.pluginKey, endpoint);\n\t\t\t\t\t\t\treturn manifestEndpoints\n\t\t\t\t\t\t\t\t.register(manifestEntry)\n\t\t\t\t\t\t\t\t.pipe(\n\t\t\t\t\t\t\t\t\tEffect.andThen(ctx.publish(event)),\n\t\t\t\t\t\t\t\t\tEffect.andThen(\n\t\t\t\t\t\t\t\t\t\tobservers.routable\n\t\t\t\t\t\t\t\t\t\t\t? observers.routable(ctx.pluginKey, endpoint, event)\n\t\t\t\t\t\t\t\t\t\t\t: Effect.void,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t}),\n\t\t\torchestratorSink<'codegenable', Codegenable>({\n\t\t\t\tkind: 'codegenable',\n\t\t\t\taccept: (decl, ctx) =>\n\t\t\t\t\tcodegen\n\t\t\t\t\t\t.registerContribution(ctx.pluginKey, decl)\n\t\t\t\t\t\t.pipe(\n\t\t\t\t\t\t\tEffect.flatMap(() =>\n\t\t\t\t\t\t\t\tobservers.codegenable ? observers.codegenable(ctx.pluginKey, decl) : Effect.void,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t}),\n\t\t\tmakeProjectionCapabilitySink(),\n\t\t\tmakeStrategyContributorCapabilitySink(),\n\t\t];\n\t});\n\nconst makeManifestExtrasContext = (ctx: SupervisorPostAcquireContext) => {\n\tconst resourceIdToKey = new Map<string, PluginKey>();\n\tfor (const [key, node] of ctx.graph.nodes) {\n\t\tresourceIdToKey.set(node.member.id, key);\n\t}\n\t// `lookup` throws `ManifestExtrasLookupError` synchronously from\n\t// inside the user-supplied `extras` factory.\n\t// `resolveManifestExtras` invokes that factory under `Effect.try`\n\t// with a typed `catch` mapper, so the throw promotes to the typed\n\t// failure channel — callers `catchTag('ManifestExtrasLookupError',\n\t// ...)` rather than reading the die-cause. Non-tagged throws stay\n\t// defects, preserving the previous semantics for genuine\n\t// programmer errors inside the factory body.\n\tconst lookup = (resourceId: string): unknown => {\n\t\tconst key = resourceIdToKey.get(resourceId);\n\t\tif (key === undefined) {\n\t\t\tthrow new ManifestExtrasLookupError({\n\t\t\t\tkind: 'unknown-resource',\n\t\t\t\tresourceId,\n\t\t\t});\n\t\t}\n\t\tconst resolved = readResolvedSync(ctx.registry, key);\n\t\tif (resolved === undefined) {\n\t\t\tthrow new ManifestExtrasLookupError({\n\t\t\t\tkind: 'unresolved-resource',\n\t\t\t\tresourceId,\n\t\t\t});\n\t\t}\n\t\treturn resolved;\n\t};\n\treturn {\n\t\tvalue: (resource: { readonly id: string }) => lookup(resource.id),\n\t};\n};\n\nconst operationalManifestEndpointEntries = (\n\tctx: SupervisorPostAcquireContext,\n\troutableEntries: ReadonlyArray<EndpointEntry>,\n): ReadonlyArray<EndpointEntry> => {\n\tconst routablePluginKeys = new Set(routableEntries.map((entry) => entry.pluginKey));\n\tconst registeredAt = Date.now();\n\tconst entries: EndpointEntry[] = [];\n\tfor (const [key] of ctx.graph.nodes) {\n\t\tif (routablePluginKeys.has(String(key))) continue;\n\t\tconst resolved = readResolvedSync(ctx.registry, key);\n\t\tif (resolved === undefined) continue;\n\t\tfor (const event of operationalEndpointEventsFromResolvedValue(key, resolved, registeredAt)) {\n\t\t\tentries.push(manifestEndpointEntryFromOperationalEndpoint(event.endpoint));\n\t\t}\n\t}\n\treturn entries;\n};\n\nexport const buildProductionPostAcquireHook = (\n\toptions: ProductionPostAcquireOptions = {},\n): Effect.Effect<\n\tSupervisorPostAcquireHook,\n\tnever,\n\t| CodegenOrchestratorService\n\t| CodegenPathsService\n\t| MoveSummaryRunnerService\n\t| MoveCodegenService\n\t| FileSystem.FileSystem\n\t| StackPathsService\n\t| PostAcquireTasksService\n\t| ManifestEndpointRegistryService\n> =>\n\tEffect.gen(function* () {\n\t\tconst codegen = yield* CodegenOrchestratorService;\n\t\tconst paths = yield* CodegenPathsService;\n\t\tconst summaryRunner = yield* MoveSummaryRunnerService;\n\t\tconst moveCodegen = yield* MoveCodegenService;\n\t\tconst fs = yield* FileSystem.FileSystem;\n\t\tconst stackPaths = yield* StackPathsService;\n\t\tconst postAcquireTasks = yield* PostAcquireTasksService;\n\t\tconst manifestEndpoints = yield* ManifestEndpointRegistryService;\n\t\treturn (ctx) =>\n\t\t\tEffect.gen(function* () {\n\t\t\t\tconst extras = yield* resolveManifestExtras(options.extras, makeManifestExtrasContext(ctx));\n\t\t\t\tconst routableEndpoints = yield* manifestEndpoints.entries;\n\t\t\t\tconst endpoints = [\n\t\t\t\t\t...routableEndpoints,\n\t\t\t\t\t...operationalManifestEndpointEntries(ctx, routableEndpoints),\n\t\t\t\t];\n\t\t\t\tconst envelope = yield* buildEnvelope({\n\t\t\t\t\tidentity: {\n\t\t\t\t\t\tapp: ctx.identity.app,\n\t\t\t\t\t\tstack: ctx.identity.stack,\n\t\t\t\t\t\tchain: ctx.identity.chain,\n\t\t\t\t\t},\n\t\t\t\t\tcontributions: [],\n\t\t\t\t\tendpoints,\n\t\t\t\t\textras,\n\t\t\t\t\t// Record the EXACT dir codegen emits into for this stack so\n\t\t\t\t\t// the read-side `@generated` alias (the Vite plugin) points\n\t\t\t\t\t// where the files actually are — one decision, one source of\n\t\t\t\t\t// truth (notes/per-stack-codegen-design.md §\"Resolved: read\n\t\t\t\t\t// and write share one gate\"). `paths.outputDir` is already\n\t\t\t\t\t// the resolved, stack-subdir-applied absolute path the emit\n\t\t\t\t\t// pipeline writes to.\n\t\t\t\t\tcodegen: { generatedDir: paths.outputDir },\n\t\t\t\t});\n\t\t\t\tconst manifestPath = join(stackPaths.stackRoot, 'manifest.json');\n\t\t\t\tyield* writeManifest(envelope, manifestPath).pipe(\n\t\t\t\t\tEffect.provideService(FileSystem.FileSystem, fs),\n\t\t\t\t);\n\t\t\t\tconst result = yield* codegen\n\t\t\t\t\t.runCycle({ extraContributions: [makeExtrasCodegenable(extras)] })\n\t\t\t\t\t.pipe(\n\t\t\t\t\t\tEffect.provideService(CodegenPathsService, paths),\n\t\t\t\t\t\tEffect.provideService(MoveSummaryRunnerService, summaryRunner),\n\t\t\t\t\t\tEffect.provideService(MoveCodegenService, moveCodegen),\n\t\t\t\t\t\tEffect.provideService(FileSystem.FileSystem, fs),\n\t\t\t\t\t);\n\t\t\t\tyield* postAcquireTasks.runAll;\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\ttag: 'manifest.flushed' as const,\n\t\t\t\t\t\tmanifestVersion: CURRENT_MANIFEST_VERSION,\n\t\t\t\t\t\tat: Date.now(),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttag: 'codegen.emitted' as const,\n\t\t\t\t\t\tfiles: [\n\t\t\t\t\t\t\t...result.filesWritten,\n\t\t\t\t\t\t\t...result.filesChmod,\n\t\t\t\t\t\t\t...(result.bindings?.filesWritten ?? []),\n\t\t\t\t\t\t],\n\t\t\t\t\t\tat: Date.now(),\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t});\n\t});\n\nexport type { EndpointUrl, ResolvedRoute };\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import { Effect, FileSystem } from "effect";
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { SnapshotOrchestratorService } from "./service.mjs";
|
|
2
|
-
import { Effect } from "effect";
|
|
3
|
-
//#region src/orchestrators/snapshot/capture-command.ts
|
|
4
|
-
/** Capture a snapshot via the registered `SnapshotOrchestratorService`.
|
|
5
|
-
* Returns the orchestrator's typed `SnapshotMetadata` on success;
|
|
6
|
-
* fails with the orchestrator's tagged `SnapshotOrchestratorError`
|
|
7
|
-
* union (callers `catchTags` on the precise tags they care about).
|
|
8
|
-
*
|
|
9
|
-
* The required context — `SnapshotOrchestratorService` and the
|
|
10
|
-
* `FileSystem` service the orchestrator's `capture` call consumes —
|
|
11
|
-
* flows in through the ambient Effect Context (NOT closure args);
|
|
12
|
-
* identity and stack-paths come transitively from the orchestrator
|
|
13
|
-
* layer's own requirements.
|
|
14
|
-
*/
|
|
15
|
-
const captureSnapshot = (args) => Effect.gen(function* () {
|
|
16
|
-
return yield* (yield* SnapshotOrchestratorService).capture({
|
|
17
|
-
id: args.snapshotId,
|
|
18
|
-
label: args.name,
|
|
19
|
-
onProgress: args.onProgress
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
//#endregion
|
|
23
|
-
export { captureSnapshot };
|
|
24
|
-
|
|
25
|
-
//# sourceMappingURL=capture-command.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capture-command.mjs","names":[],"sources":["../../../src/orchestrators/snapshot/capture-command.ts"],"sourcesContent":["// Shared `captureSnapshot` command primitive.\n//\n// This is the hoisted core of `EngineCommand` `snapshot.capture` —\n// the single Effect both publishers reach for:\n//\n// - The supervisor's command handler in `cli/wirings/up.ts`\n// consumes a queued `snapshot.capture` EngineCommand and forwards\n// its `{ snapshotId, name }` payload here (with `onProgress`\n// wired to `handlerCtx.publish` so progress lands on the engine\n// event stream).\n//\n// - The CLI's direct/offline `snapshot save` path in\n// `cli/wirings/snapshot.ts` calls this from inside its one-shot\n// `superviseStackEffect` scope (no supervisor alive).\n//\n// - A future web-dashboard command receiver lands here too — it\n// only needs the `SnapshotOrchestratorService` + `FileSystem` in\n// its layer stack, with no CLI wiring imported.\n//\n// The primitive's contract is intentionally narrow: it owns the\n// EngineCommand-payload → orchestrator-call shape and nothing else.\n// CLI-specific concerns (logger config, exit codes, ack/event\n// shaping, error narration) stay at the call sites — this file\n// MUST NOT bake them in.\n\nimport { Effect, FileSystem } from 'effect';\n\nimport type { SnapshotProgressReporter } from './capture.ts';\nimport type { SnapshotMetadata } from './descriptor.ts';\nimport {\n\tSnapshotOrchestratorService,\n\ttype SnapshotOrchestratorError,\n} from './service.ts';\n\n/** Inputs mirror the `snapshot.capture` EngineCommand payload\n * (`{ snapshotId?, name? }`) plus the optional progress reporter\n * the supervisor wires into its event-publish bridge. The offline\n * CLI path passes the same payload (from CLI flags) and omits\n * `onProgress` (no engine stream to publish to). */\nexport interface CaptureSnapshotArgs {\n\treadonly snapshotId?: string;\n\treadonly name?: string;\n\treadonly onProgress?: SnapshotProgressReporter;\n}\n\n/** Capture a snapshot via the registered `SnapshotOrchestratorService`.\n * Returns the orchestrator's typed `SnapshotMetadata` on success;\n * fails with the orchestrator's tagged `SnapshotOrchestratorError`\n * union (callers `catchTags` on the precise tags they care about).\n *\n * The required context — `SnapshotOrchestratorService` and the\n * `FileSystem` service the orchestrator's `capture` call consumes —\n * flows in through the ambient Effect Context (NOT closure args);\n * identity and stack-paths come transitively from the orchestrator\n * layer's own requirements.\n */\nexport const captureSnapshot = (\n\targs: CaptureSnapshotArgs,\n): Effect.Effect<\n\tSnapshotMetadata,\n\tSnapshotOrchestratorError,\n\tSnapshotOrchestratorService | FileSystem.FileSystem\n> =>\n\tEffect.gen(function* () {\n\t\tconst snapshot = yield* SnapshotOrchestratorService;\n\t\treturn yield* snapshot.capture({\n\t\t\tid: args.snapshotId,\n\t\t\tlabel: args.name,\n\t\t\tonProgress: args.onProgress,\n\t\t});\n\t});\n"],"mappings":";;;;;;;;;;;;;;AAwDA,MAAa,mBACZ,SAMA,OAAO,IAAI,aAAa;AAEvB,QAAO,QAAO,OADU,6BACD,QAAQ;EAC9B,IAAI,KAAK;EACT,OAAO,KAAK;EACZ,YAAY,KAAK;EACjB,CAAC;EACD"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { versionedDocSchema } from "../../substrate/versioned-doc-schema.mjs";
|
|
2
|
-
import { atomicWriteFile } from "../../substrate/runtime/atomic-write.mjs";
|
|
3
|
-
import { Effect, FileSystem, Schema } from "effect";
|
|
4
|
-
const RESTORE_PENDING_FILE_NAME = "snapshot.restore-pending.json";
|
|
5
|
-
const RestorePendingContainerSchema = Schema.Struct({
|
|
6
|
-
plugin: Schema.String,
|
|
7
|
-
role: Schema.String,
|
|
8
|
-
targetImageName: Schema.String,
|
|
9
|
-
stagedImageTag: Schema.String,
|
|
10
|
-
/** Content-addressed image identity (e.g. `sha256:...`). The
|
|
11
|
-
* scanner uses this as the third-and-final recovery source when
|
|
12
|
-
* both `targetImageName` and `stagedImageTag` have been removed
|
|
13
|
-
* from the daemon (e.g. operator `docker system prune` between
|
|
14
|
-
* crash and restart). Digests survive prune because they ARE the
|
|
15
|
-
* image — Docker can re-tag from any digest still backed by a
|
|
16
|
-
* pinned layer. */
|
|
17
|
-
digest: Schema.String
|
|
18
|
-
});
|
|
19
|
-
/** v2 marker variant — current shape. New variants are added by
|
|
20
|
-
* appending another `versionedDocSchema(N, ...)` arm to the Union
|
|
21
|
-
* below; consumers switch on `version` after decode. */
|
|
22
|
-
const RestorePendingDocumentV2Schema = versionedDocSchema(2, {
|
|
23
|
-
snapshotId: Schema.String,
|
|
24
|
-
artifactDir: Schema.String,
|
|
25
|
-
app: Schema.String,
|
|
26
|
-
stack: Schema.String,
|
|
27
|
-
network: Schema.String,
|
|
28
|
-
containers: Schema.Array(RestorePendingContainerSchema)
|
|
29
|
-
});
|
|
30
|
-
/** Discriminated union of every supported marker version. Today only
|
|
31
|
-
* v2 is on disk; the Union shape exists so a v3 migration is a
|
|
32
|
-
* one-line `Schema.Union(...v2, ...v3)` extension here plus a new
|
|
33
|
-
* `case` in the recovery scanner. Stale pre-v2 markers fail decode
|
|
34
|
-
* cleanly — the scanner translates that into a "leave on disk for
|
|
35
|
-
* operator review" warning rather than a fatal error. */
|
|
36
|
-
const RestorePendingDocumentSchema = Schema.Union([RestorePendingDocumentV2Schema]);
|
|
37
|
-
/** Path the marker lives at, relative to a runtime stack root or
|
|
38
|
-
* staged-tree root. */
|
|
39
|
-
const pendingMarkerPath = (root) => `${root}/${RESTORE_PENDING_FILE_NAME}`;
|
|
40
|
-
/** Failure shape for marker IO. The scanner / restore both map this
|
|
41
|
-
* onto their own typed channels. */
|
|
42
|
-
var RestorePendingMarkerIoError = class extends Schema.TaggedErrorClass()("SnapshotRestorePendingMarkerIoError", {
|
|
43
|
-
op: Schema.Literals([
|
|
44
|
-
"read",
|
|
45
|
-
"write",
|
|
46
|
-
"remove",
|
|
47
|
-
"decode"
|
|
48
|
-
]),
|
|
49
|
-
path: Schema.String,
|
|
50
|
-
detail: Schema.String,
|
|
51
|
-
cause: Schema.optional(Schema.Defect)
|
|
52
|
-
}) {};
|
|
53
|
-
/** Write or rewrite the marker. The serialized payload is one trailing
|
|
54
|
-
* newline larger than `JSON.stringify(doc, null, 2)`. */
|
|
55
|
-
const writePendingMarker = (root, doc) => Effect.gen(function* () {
|
|
56
|
-
const path = pendingMarkerPath(root);
|
|
57
|
-
yield* atomicWriteFile(path, new TextEncoder().encode(`${JSON.stringify(doc, null, 2)}\n`)).pipe(Effect.catch((cause) => Effect.fail(new RestorePendingMarkerIoError({
|
|
58
|
-
op: "write",
|
|
59
|
-
path,
|
|
60
|
-
detail: `write ${RESTORE_PENDING_FILE_NAME} failed`,
|
|
61
|
-
cause
|
|
62
|
-
}))));
|
|
63
|
-
});
|
|
64
|
-
/** Build a marker document from the snapshot metadata + outstanding
|
|
65
|
-
* per-image entries. Caller decides what's outstanding. */
|
|
66
|
-
const makePendingMarkerDocument = (args) => ({
|
|
67
|
-
version: 2,
|
|
68
|
-
snapshotId: args.meta.id,
|
|
69
|
-
artifactDir: args.artifactDir,
|
|
70
|
-
app: args.meta.app,
|
|
71
|
-
stack: args.meta.stack,
|
|
72
|
-
network: args.meta.network,
|
|
73
|
-
containers: args.containers
|
|
74
|
-
});
|
|
75
|
-
/** Rewrite an existing marker, replacing the `containers` list.
|
|
76
|
-
* The recovery scanner uses this to whittle the outstanding entry
|
|
77
|
-
* list down as it retags each image — the next supervise (or the
|
|
78
|
-
* next loop iteration after a transient daemon hiccup) sees an
|
|
79
|
-
* up-to-date marker without re-deriving identity from `meta.json`. */
|
|
80
|
-
const rewritePendingMarkerContainers = (doc, containers) => ({
|
|
81
|
-
...doc,
|
|
82
|
-
containers
|
|
83
|
-
});
|
|
84
|
-
/** Remove the marker. Idempotent — `force: true` swallows "already
|
|
85
|
-
* gone". Other IO failures surface as `RestorePendingMarkerIoError`. */
|
|
86
|
-
const removePendingMarker = (root) => Effect.gen(function* () {
|
|
87
|
-
const fs = yield* FileSystem.FileSystem;
|
|
88
|
-
const path = pendingMarkerPath(root);
|
|
89
|
-
yield* fs.remove(path, { force: true }).pipe(Effect.catch((cause) => Effect.fail(new RestorePendingMarkerIoError({
|
|
90
|
-
op: "remove",
|
|
91
|
-
path,
|
|
92
|
-
detail: `remove ${RESTORE_PENDING_FILE_NAME} failed`,
|
|
93
|
-
cause
|
|
94
|
-
}))));
|
|
95
|
-
});
|
|
96
|
-
//#endregion
|
|
97
|
-
export { RESTORE_PENDING_FILE_NAME, RestorePendingDocumentSchema, RestorePendingMarkerIoError, makePendingMarkerDocument, pendingMarkerPath, removePendingMarker, rewritePendingMarkerContainers, writePendingMarker };
|
|
98
|
-
|
|
99
|
-
//# sourceMappingURL=pending-marker.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pending-marker.mjs","names":[],"sources":["../../../src/orchestrators/snapshot/pending-marker.ts"],"sourcesContent":["// Restore-pending marker — shared schema + IO between `restore.ts`\n// (writer/clearer) and `recover-pending.ts` (reader/recoverer).\n//\n// Recovery contract:\n//\n// The marker is written into the snapshot's staged tree BEFORE the\n// atomic stage-and-swap publish, then survives the swap into the\n// restored runtime root. After publish, `runRestore` runs the\n// Docker handoff (promote staged tags → recorded names, remove\n// captured managed containers) under `Effect.uninterruptible`. If\n// the process is hard-killed mid-handoff — or any step fails after\n// K of N images promoted — the marker stays on disk and lists which\n// `(targetImageName ← stagedImageTag, digest)` operations remain\n// pending. The digest is the loaded image's content-addressed\n// identity; the scanner falls back to it when the staging tag has\n// been pruned from the daemon between crash and restart.\n//\n// On the next supervise startup, `recoverPendingRestore` reads the\n// marker, retries each pending entry's `tagImage`, removes the\n// marker only when every entry verifies, and is idempotent: a\n// marker present with zero outstanding entries is treated as\n// already-recovered and cleared in one call.\n//\n// The marker is updated AFTER EACH successful image promote in the\n// happy path (see `restore.ts:promoteStagedImages`) so the\n// recovery scanner only has to address the entries still listed —\n// it never has to know which of the original N images was the one\n// that failed.\n\nimport { Effect, FileSystem, Schema } from 'effect';\n\nimport { atomicWriteFile } from '../../substrate/runtime/atomic-write.ts';\nimport { versionedDocSchema } from '../../substrate/versioned-doc-schema.ts';\nimport type { SnapshotMetadata } from './descriptor.ts';\n\nexport const SNAPSHOT_RESTORE_PENDING_VERSION = 2 as const;\nexport const RESTORE_PENDING_FILE_NAME = 'snapshot.restore-pending.json' as const;\n\nexport const RestorePendingContainerSchema = Schema.Struct({\n\tplugin: Schema.String,\n\trole: Schema.String,\n\ttargetImageName: Schema.String,\n\tstagedImageTag: Schema.String,\n\t/** Content-addressed image identity (e.g. `sha256:...`). The\n\t * scanner uses this as the third-and-final recovery source when\n\t * both `targetImageName` and `stagedImageTag` have been removed\n\t * from the daemon (e.g. operator `docker system prune` between\n\t * crash and restart). Digests survive prune because they ARE the\n\t * image — Docker can re-tag from any digest still backed by a\n\t * pinned layer. */\n\tdigest: Schema.String,\n});\nexport type RestorePendingContainer = Schema.Schema.Type<typeof RestorePendingContainerSchema>;\n\nconst RestorePendingDocumentV2Payload = {\n\tsnapshotId: Schema.String,\n\tartifactDir: Schema.String,\n\tapp: Schema.String,\n\tstack: Schema.String,\n\tnetwork: Schema.String,\n\tcontainers: Schema.Array(RestorePendingContainerSchema),\n} as const;\n\n/** v2 marker variant — current shape. New variants are added by\n * appending another `versionedDocSchema(N, ...)` arm to the Union\n * below; consumers switch on `version` after decode. */\nexport const RestorePendingDocumentV2Schema = versionedDocSchema(\n\tSNAPSHOT_RESTORE_PENDING_VERSION,\n\tRestorePendingDocumentV2Payload,\n);\nexport type RestorePendingDocumentV2 = Schema.Schema.Type<typeof RestorePendingDocumentV2Schema>;\n\n/** Discriminated union of every supported marker version. Today only\n * v2 is on disk; the Union shape exists so a v3 migration is a\n * one-line `Schema.Union(...v2, ...v3)` extension here plus a new\n * `case` in the recovery scanner. Stale pre-v2 markers fail decode\n * cleanly — the scanner translates that into a \"leave on disk for\n * operator review\" warning rather than a fatal error. */\nexport const RestorePendingDocumentSchema = Schema.Union([RestorePendingDocumentV2Schema]);\nexport type RestorePendingDocument = Schema.Schema.Type<typeof RestorePendingDocumentSchema>;\n\n/** Path the marker lives at, relative to a runtime stack root or\n * staged-tree root. */\nexport const pendingMarkerPath = (root: string): string =>\n\t`${root}/${RESTORE_PENDING_FILE_NAME}`;\n\n/** Failure shape for marker IO. The scanner / restore both map this\n * onto their own typed channels. */\nexport class RestorePendingMarkerIoError extends Schema.TaggedErrorClass<RestorePendingMarkerIoError>()(\n\t'SnapshotRestorePendingMarkerIoError',\n\t{\n\t\top: Schema.Literals(['read', 'write', 'remove', 'decode']),\n\t\tpath: Schema.String,\n\t\tdetail: Schema.String,\n\t\tcause: Schema.optional(Schema.Defect),\n\t},\n) {}\n\n/** Write or rewrite the marker. The serialized payload is one trailing\n * newline larger than `JSON.stringify(doc, null, 2)`. */\nexport const writePendingMarker = (\n\troot: string,\n\tdoc: RestorePendingDocument,\n): Effect.Effect<void, RestorePendingMarkerIoError, FileSystem.FileSystem> =>\n\tEffect.gen(function* () {\n\t\tconst path = pendingMarkerPath(root);\n\t\t// The marker is durable cross-process state on the LIVE runtime\n\t\t// root (recovery scanner reads it on the next supervise). Route\n\t\t// through the canonical atomic primitive (STYLE_GUIDE §17) so a\n\t\t// crashed mid-rewrite never leaves the scanner a half-written /\n\t\t// undecodable marker. `atomicWriteFile` (not `atomicWriteJson`)\n\t\t// preserves the exact `JSON.stringify(…, 2)` + trailing-newline\n\t\t// byte shape this writer has always produced.\n\t\tconst bytes = new TextEncoder().encode(`${JSON.stringify(doc, null, 2)}\\n`);\n\t\tyield* atomicWriteFile(path, bytes).pipe(\n\t\t\tEffect.catch(\n\t\t\t\t(cause): Effect.Effect<never, RestorePendingMarkerIoError> =>\n\t\t\t\t\tEffect.fail(\n\t\t\t\t\t\tnew RestorePendingMarkerIoError({\n\t\t\t\t\t\t\top: 'write',\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tdetail: `write ${RESTORE_PENDING_FILE_NAME} failed`,\n\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t),\n\t\t);\n\t});\n\n/** Build a marker document from the snapshot metadata + outstanding\n * per-image entries. Caller decides what's outstanding. */\nexport const makePendingMarkerDocument = (args: {\n\treadonly meta: SnapshotMetadata;\n\treadonly artifactDir: string;\n\treadonly containers: ReadonlyArray<RestorePendingContainer>;\n}): RestorePendingDocument => ({\n\tversion: SNAPSHOT_RESTORE_PENDING_VERSION,\n\tsnapshotId: args.meta.id,\n\tartifactDir: args.artifactDir,\n\tapp: args.meta.app,\n\tstack: args.meta.stack,\n\tnetwork: args.meta.network,\n\tcontainers: args.containers,\n});\n\n/** Rewrite an existing marker, replacing the `containers` list.\n * The recovery scanner uses this to whittle the outstanding entry\n * list down as it retags each image — the next supervise (or the\n * next loop iteration after a transient daemon hiccup) sees an\n * up-to-date marker without re-deriving identity from `meta.json`. */\nexport const rewritePendingMarkerContainers = (\n\tdoc: RestorePendingDocument,\n\tcontainers: ReadonlyArray<RestorePendingContainer>,\n): RestorePendingDocument => ({\n\t...doc,\n\tcontainers,\n});\n\n/** Remove the marker. Idempotent — `force: true` swallows \"already\n * gone\". Other IO failures surface as `RestorePendingMarkerIoError`. */\nexport const removePendingMarker = (\n\troot: string,\n): Effect.Effect<void, RestorePendingMarkerIoError, FileSystem.FileSystem> =>\n\tEffect.gen(function* () {\n\t\tconst fs = yield* FileSystem.FileSystem;\n\t\tconst path = pendingMarkerPath(root);\n\t\tyield* fs.remove(path, { force: true }).pipe(\n\t\t\tEffect.catch(\n\t\t\t\t(cause): Effect.Effect<never, RestorePendingMarkerIoError> =>\n\t\t\t\t\tEffect.fail(\n\t\t\t\t\t\tnew RestorePendingMarkerIoError({\n\t\t\t\t\t\t\top: 'remove',\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tdetail: `remove ${RESTORE_PENDING_FILE_NAME} failed`,\n\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t),\n\t\t);\n\t});\n"],"mappings":";;;AAoCA,MAAa,4BAA4B;AAEzC,MAAa,gCAAgC,OAAO,OAAO;CAC1D,QAAQ,OAAO;CACf,MAAM,OAAO;CACb,iBAAiB,OAAO;CACxB,gBAAgB,OAAO;;;;;;;;CAQvB,QAAQ,OAAO;CACf,CAAC;;;;AAeF,MAAa,iCAAiC,mBAAA,GAE7C;CAbA,YAAY,OAAO;CACnB,aAAa,OAAO;CACpB,KAAK,OAAO;CACZ,OAAO,OAAO;CACd,SAAS,OAAO;CAChB,YAAY,OAAO,MAAM,8BAA8B;CAQvD,CACA;;;;;;;AASD,MAAa,+BAA+B,OAAO,MAAM,CAAC,+BAA+B,CAAC;;;AAK1F,MAAa,qBAAqB,SACjC,GAAG,KAAK,GAAG;;;AAIZ,IAAa,8BAAb,cAAiD,OAAO,kBAA+C,CACtG,uCACA;CACC,IAAI,OAAO,SAAS;EAAC;EAAQ;EAAS;EAAU;EAAS,CAAC;CAC1D,MAAM,OAAO;CACb,QAAQ,OAAO;CACf,OAAO,OAAO,SAAS,OAAO,OAAO;CACrC,CACD,CAAC;;;AAIF,MAAa,sBACZ,MACA,QAEA,OAAO,IAAI,aAAa;CACvB,MAAM,OAAO,kBAAkB,KAAK;AASpC,QAAO,gBAAgB,MADT,IAAI,aAAa,CAAC,OAAO,GAAG,KAAK,UAAU,KAAK,MAAM,EAAE,CAAC,IACrC,CAAC,CAAC,KACnC,OAAO,OACL,UACA,OAAO,KACN,IAAI,4BAA4B;EAC/B,IAAI;EACJ;EACA,QAAQ,SAAS,0BAA0B;EAC3C;EACA,CAAC,CACF,CACF,CACD;EACA;;;AAIH,MAAa,6BAA6B,UAIX;CAC9B,SAAA;CACA,YAAY,KAAK,KAAK;CACtB,aAAa,KAAK;CAClB,KAAK,KAAK,KAAK;CACf,OAAO,KAAK,KAAK;CACjB,SAAS,KAAK,KAAK;CACnB,YAAY,KAAK;CACjB;;;;;;AAOD,MAAa,kCACZ,KACA,gBAC6B;CAC7B,GAAG;CACH;CACA;;;AAID,MAAa,uBACZ,SAEA,OAAO,IAAI,aAAa;CACvB,MAAM,KAAK,OAAO,WAAW;CAC7B,MAAM,OAAO,kBAAkB,KAAK;AACpC,QAAO,GAAG,OAAO,MAAM,EAAE,OAAO,MAAM,CAAC,CAAC,KACvC,OAAO,OACL,UACA,OAAO,KACN,IAAI,4BAA4B;EAC/B,IAAI;EACJ;EACA,QAAQ,UAAU,0BAA0B;EAC5C;EACA,CAAC,CACF,CACF,CACD;EACA"}
|