@mysten-incubation/devstack 0.1.0 → 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 +7 -4
- 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 -31
- 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,30 +1,34 @@
|
|
|
1
1
|
import { tarHostTree } from "../../substrate/runtime/host-tree-tar/index.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { SnapshotLayout, containerImagesBundlePath, contributionPath, deployCacheSubtreeRelPaths, isRestorableContainerImageName, isSafeSnapshotPathSegment } from "./descriptor.mjs";
|
|
3
3
|
import { makePhaseFailer } from "./phase-error.mjs";
|
|
4
4
|
import { CACHE_DIR_NAME } from "./wipe.mjs";
|
|
5
5
|
import { readImageBundleTags, verifyImageBundleTags } from "./image-bundle-tags.mjs";
|
|
6
6
|
import { writeArtifactIntegrity } from "./integrity.mjs";
|
|
7
7
|
import { mergeContributions, requireIdentity } from "./identity-guard.mjs";
|
|
8
|
-
import {
|
|
9
|
-
import { Effect, Exit, FileSystem, Schema, Stream } from "effect";
|
|
8
|
+
import { Duration, Effect, Exit, FileSystem, Schema, Stream } from "effect";
|
|
10
9
|
//#region src/orchestrators/snapshot/capture.ts
|
|
10
|
+
/** Synthetic "plugin" key for the orchestrator-owned deploy-cache subtrees.
|
|
11
|
+
* The cache is per-stack runtime state (not plugin-declared), so the capture
|
|
12
|
+
* orchestrator injects `cache/<ns>` subtrees under this key rather than
|
|
13
|
+
* attributing them to any one plugin. Distinct from any real plugin name (the
|
|
14
|
+
* `__…__` sentinel shape), so it cannot collide with a participant. */
|
|
15
|
+
const DEPLOY_CACHE_SUBTREE_PLUGIN = "__deploy-cache__";
|
|
11
16
|
/** Tagged failure during one capture step. `phase` discriminates so
|
|
12
17
|
* the user-facing message names the failing step. */
|
|
13
18
|
var CapturePhaseError = class extends Schema.TaggedErrorClass()("SnapshotCapturePhaseError", {
|
|
14
19
|
phase: Schema.Literals([
|
|
15
20
|
"enumerate-containers",
|
|
16
|
-
"
|
|
17
|
-
"pause",
|
|
21
|
+
"stop",
|
|
18
22
|
"commit",
|
|
19
23
|
"save-images",
|
|
20
24
|
"tar-subtree",
|
|
21
25
|
"tar-host-tree",
|
|
22
|
-
"read-state",
|
|
23
|
-
"write-state",
|
|
24
26
|
"write-contribution",
|
|
25
27
|
"write-meta",
|
|
26
28
|
"write-integrity",
|
|
27
|
-
"
|
|
29
|
+
"retag-image",
|
|
30
|
+
"remove-container",
|
|
31
|
+
"resume"
|
|
28
32
|
]),
|
|
29
33
|
plugin: Schema.optional(Schema.String),
|
|
30
34
|
detail: Schema.String,
|
|
@@ -41,12 +45,12 @@ const validateSnapshotPathSegment = (kind, value, phase, plugin) => isSafeSnapsh
|
|
|
41
45
|
plugin,
|
|
42
46
|
detail: `unsafe snapshot ${kind} path segment: ${value}`
|
|
43
47
|
}));
|
|
44
|
-
const validateCapturedContainer = (handle, labels,
|
|
45
|
-
yield* validateSnapshotPathSegment("plugin", labels.plugin, "commit",
|
|
46
|
-
yield* validateSnapshotPathSegment("role", labels.role, "commit",
|
|
48
|
+
const validateCapturedContainer = (handle, labels, plugin) => Effect.gen(function* () {
|
|
49
|
+
yield* validateSnapshotPathSegment("plugin", labels.plugin, "commit", plugin);
|
|
50
|
+
yield* validateSnapshotPathSegment("role", labels.role, "commit", plugin);
|
|
47
51
|
if (!isRestorableContainerImageName(handle.imageName)) return yield* Effect.fail(new CapturePhaseError({
|
|
48
52
|
phase: "commit",
|
|
49
|
-
plugin
|
|
53
|
+
plugin,
|
|
50
54
|
detail: `container ${handle.name} imageName is not a restorable Docker tag destination: ${handle.imageName}`
|
|
51
55
|
}));
|
|
52
56
|
});
|
|
@@ -57,55 +61,40 @@ const detectContainerArtifactCollisions = (planned) => Effect.gen(function* () {
|
|
|
57
61
|
const previous = seen.get(key);
|
|
58
62
|
if (previous !== void 0) return yield* Effect.fail(new CapturePhaseError({
|
|
59
63
|
phase: "commit",
|
|
60
|
-
plugin: candidate.
|
|
64
|
+
plugin: candidate.plugin,
|
|
61
65
|
detail: `duplicate managed container snapshot identity ${key} for ${previous.handle.name} and ${candidate.handle.name}`
|
|
62
66
|
}));
|
|
63
67
|
seen.set(key, candidate);
|
|
64
68
|
}
|
|
65
69
|
});
|
|
66
|
-
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
|
|
70
|
-
* capture finalization.
|
|
71
|
-
*
|
|
72
|
-
* Architecture § Invariants: "A running container must be paused
|
|
73
|
-
* around the writable-layer commit; the unpause must fire on both
|
|
74
|
-
* success and failure paths (no orphaned paused containers). A
|
|
75
|
-
* stopped container is already quiescent and must not be paused."
|
|
76
|
-
*
|
|
77
|
-
* The default quiescence is `pauseAndCommit`; participants that need
|
|
78
|
-
* an application-level flush (postgres, RocksDB) declare a longer-grace
|
|
79
|
-
* `quiesce` effect on their decl — the orchestrator runs it BEFORE
|
|
80
|
-
* `pauseAndCommit`.
|
|
81
|
-
*/
|
|
82
|
-
const quiesceParticipant = (participant, runtime) => Effect.gen(function* () {
|
|
83
|
-
const labelTuples = participant.decl.managedContainers ?? [];
|
|
70
|
+
/** Enumerate a participant's live managed containers by its declared
|
|
71
|
+
* label tuples. `inspectByLabels` matches running AND stopped/created
|
|
72
|
+
* containers (`docker ps -a`). */
|
|
73
|
+
const enumerateParticipantContainers = (plugin, labelTuples, runtime) => Effect.gen(function* () {
|
|
84
74
|
const containers = [];
|
|
85
75
|
for (const tuple of labelTuples) {
|
|
86
|
-
const matched = yield* runtime.inspectByLabels(tuple).pipe(Effect.catch(failPhase("enumerate-containers", `inspect by labels failed for ${tuple.plugin}/${tuple.role}`,
|
|
87
|
-
for (const handle of matched)
|
|
88
|
-
handle,
|
|
89
|
-
labels: tuple,
|
|
90
|
-
unpauseAfterCapture: true
|
|
91
|
-
});
|
|
92
|
-
else if (handle.status === "paused" || handle.status === "exited" || handle.status === "created") containers.push({
|
|
76
|
+
const matched = yield* runtime.inspectByLabels(tuple).pipe(Effect.catch(failPhase("enumerate-containers", `inspect by labels failed for ${tuple.plugin}/${tuple.role}`, plugin)));
|
|
77
|
+
for (const handle of matched) containers.push({
|
|
93
78
|
handle,
|
|
94
|
-
labels: tuple
|
|
95
|
-
unpauseAfterCapture: false
|
|
79
|
+
labels: tuple
|
|
96
80
|
});
|
|
97
81
|
}
|
|
98
|
-
if (participant.decl.quiesce) yield* participant.decl.quiesce.pipe(Effect.scoped, Effect.ignore);
|
|
99
82
|
return containers;
|
|
100
|
-
})
|
|
101
|
-
/** Commit one container's writable layer to a temporary snapshot
|
|
102
|
-
|
|
103
|
-
|
|
83
|
+
});
|
|
84
|
+
/** Commit one STOPPED container's writable layer to a temporary snapshot
|
|
85
|
+
* image tag. The container has already been gracefully stopped (RocksDB
|
|
86
|
+
* flushed), so this commits the faithful flushed layer. */
|
|
87
|
+
const commitStoppedContainer = (handle, labels, runtime, plugin, registerCommittedRef) => Effect.gen(function* () {
|
|
88
|
+
const stoppedHandle = {
|
|
89
|
+
...handle,
|
|
90
|
+
status: "exited"
|
|
91
|
+
};
|
|
92
|
+
const imageRef = yield* runtime.pauseAndCommit(stoppedHandle).pipe(Effect.catch(failPhase("commit", `commit failed for ${handle.name}`, plugin)));
|
|
104
93
|
const snapshotTag = imageRef.tag;
|
|
105
94
|
yield* registerCommittedRef(imageRef);
|
|
106
95
|
if (!isRestorableContainerImageName(snapshotTag)) return yield* Effect.fail(new CapturePhaseError({
|
|
107
96
|
phase: "commit",
|
|
108
|
-
plugin
|
|
97
|
+
plugin,
|
|
109
98
|
detail: `committed image for ${handle.name} did not receive a restorable snapshot tag`
|
|
110
99
|
}));
|
|
111
100
|
return {
|
|
@@ -118,16 +107,16 @@ const commitContainerToImage = (handle, labels, runtime, participant, registerCo
|
|
|
118
107
|
},
|
|
119
108
|
imageRef
|
|
120
109
|
};
|
|
121
|
-
})
|
|
110
|
+
});
|
|
122
111
|
const saveCommittedImages = (committed, stagingDir, runtime) => Effect.gen(function* () {
|
|
123
112
|
if (committed.length === 0) return;
|
|
124
113
|
const fs = yield* FileSystem.FileSystem;
|
|
125
114
|
const tarPath = containerImagesBundlePath();
|
|
126
115
|
const tarDest = `${stagingDir}/${tarPath}`;
|
|
127
116
|
yield* fs.makeDirectory(`${stagingDir}/${SnapshotLayout.containersDir}`, { recursive: true }).pipe(Effect.catch(failPhase("save-images", `mkdir containers dir failed`)));
|
|
128
|
-
yield* Stream.run(runtime.saveImages(committed.map((entry) => entry.imageRef), { removeAfterSave:
|
|
117
|
+
yield* Stream.run(runtime.saveImages(committed.map((entry) => entry.imageRef), { removeAfterSave: false }), fs.sink(tarDest)).pipe(Effect.catch(failPhase("save-images", `save ${committed.length} committed container images to ${tarDest} failed`)));
|
|
129
118
|
yield* verifyImageBundleTags(tarPath, yield* readImageBundleTags(tarDest, tarPath).pipe(Effect.catch(failImageBundleTagScan)), committed.map((entry) => entry.captured.snapshotTag)).pipe(Effect.catch(failImageBundleTagScan));
|
|
130
|
-
})
|
|
119
|
+
});
|
|
131
120
|
const cleanupCommittedRefs = (runtime, refs) => Effect.forEach(refs, (ref) => runtime.removeImage(ref).pipe(Effect.catch((cause) => Effect.logWarning(`remove committed snapshot image ${ref.tag} failed during capture cleanup: ${String(cause)}`))), { concurrency: "unbounded" }).pipe(Effect.asVoid);
|
|
132
121
|
const isSafeSubtreePath = (relPath) => relPath !== "" && relPath !== "." && !relPath.startsWith("/") && !relPath.split(/[\\/]+/).includes("..");
|
|
133
122
|
/** Resolve declared subtrees against the live stack root. Missing
|
|
@@ -162,203 +151,190 @@ const writeHostTreeTar = (stackRoot, subtrees, tarDest) => Effect.gen(function*
|
|
|
162
151
|
relPaths: subtrees.map((s) => s.relPath)
|
|
163
152
|
});
|
|
164
153
|
yield* Stream.run(archive, fs.sink(tarDest)).pipe(Effect.catch(failPhase("tar-host-tree", `tar host-tree (${subtrees.length} subtrees) to ${tarDest} failed`)));
|
|
165
|
-
})
|
|
154
|
+
});
|
|
155
|
+
/**
|
|
156
|
+
* PRE-STOP gather. Runs while every plugin is still acquired/live:
|
|
157
|
+
*
|
|
158
|
+
* - Run each participant's `captureIdentity` / `captureContribution`
|
|
159
|
+
* Effects to concrete values (they read live resolved plugin state).
|
|
160
|
+
* - Snapshot each participant's `managedContainers` label tuples and
|
|
161
|
+
* declared `subtrees` as plain data.
|
|
162
|
+
* - Merge the identity slices with the SAME `mergeContributions`
|
|
163
|
+
* predicate the restore-side guard uses (so intra-capture conflicts
|
|
164
|
+
* fail HERE, at the capture site, before any stop).
|
|
165
|
+
* - `requireIdentity` (fail-closed) HERE so an empty/conflicting
|
|
166
|
+
* identity short-circuits BEFORE the bounce stops anything.
|
|
167
|
+
*
|
|
168
|
+
* The returned `GatheredCapture` holds no live registry handles; it
|
|
169
|
+
* survives the stop + recreate.
|
|
170
|
+
*/
|
|
171
|
+
const gatherCaptureParticipants = (participants) => Effect.gen(function* () {
|
|
172
|
+
const identityContributions = [];
|
|
173
|
+
const gathered = [];
|
|
174
|
+
const participantKeys = [];
|
|
175
|
+
for (const participant of participants) {
|
|
176
|
+
const identitySlice = yield* participant.captureIdentity;
|
|
177
|
+
const opaqueState = yield* participant.captureContribution;
|
|
178
|
+
identityContributions.push({
|
|
179
|
+
plugin: participant.plugin,
|
|
180
|
+
slice: identitySlice
|
|
181
|
+
});
|
|
182
|
+
gathered.push({
|
|
183
|
+
plugin: participant.plugin,
|
|
184
|
+
labelTuples: participant.decl.managedContainers ?? [],
|
|
185
|
+
identitySlice,
|
|
186
|
+
opaqueState
|
|
187
|
+
});
|
|
188
|
+
participantKeys.push(participant.plugin);
|
|
189
|
+
}
|
|
190
|
+
const identityMerged = yield* mergeContributions(identityContributions);
|
|
191
|
+
yield* requireIdentity(identityMerged, "snapshot");
|
|
192
|
+
const pluginSubtrees = participants.flatMap((p) => p.decl.subtrees.map((relPath) => ({
|
|
193
|
+
plugin: p.plugin,
|
|
194
|
+
relPath,
|
|
195
|
+
missingTolerance: p.decl.missingTolerance,
|
|
196
|
+
secretMaterial: p.decl.secretMaterial ?? false
|
|
197
|
+
})));
|
|
198
|
+
return {
|
|
199
|
+
participants: gathered,
|
|
200
|
+
identityMerged,
|
|
201
|
+
declaredSubtrees: [...deployCacheSubtreeRelPaths(CACHE_DIR_NAME).map((relPath) => ({
|
|
202
|
+
plugin: DEPLOY_CACHE_SUBTREE_PLUGIN,
|
|
203
|
+
relPath,
|
|
204
|
+
missingTolerance: "fine",
|
|
205
|
+
secretMaterial: false
|
|
206
|
+
})), ...pluginSubtrees],
|
|
207
|
+
participantKeys
|
|
208
|
+
};
|
|
209
|
+
});
|
|
210
|
+
/** Default graceful-stop grace — mirrors the walrus storage-node grace so
|
|
211
|
+
* RocksDB flushes before the commit captures the writable layer. */
|
|
212
|
+
const DEFAULT_CAPTURE_STOP_GRACE_SECONDS = 20;
|
|
166
213
|
/**
|
|
167
|
-
* Populate `stagingDir` with a complete snapshot artifact
|
|
214
|
+
* Populate `stagingDir` with a complete snapshot artifact via the bounce:
|
|
215
|
+
* gather (live) → graceful-stop (flush) → commit + tar + meta → retag
|
|
216
|
+
* committed images onto original names + hard-rm stopped containers →
|
|
217
|
+
* resume (recreate + wait-write-ready).
|
|
168
218
|
*
|
|
169
219
|
* Discipline:
|
|
170
220
|
* - Iterate participants — no service names appear.
|
|
171
|
-
* -
|
|
172
|
-
* -
|
|
221
|
+
* - Identity gathered + fail-closed BEFORE any stop.
|
|
222
|
+
* - Graceful stop (NOT pause) so RocksDB/WAL flush — the committed image
|
|
223
|
+
* is faithful.
|
|
173
224
|
* - meta.json is written LAST so a crashed save leaves the artifact
|
|
174
|
-
* invisible to the catalog
|
|
225
|
+
* invisible to the catalog.
|
|
226
|
+
* - Resume is recreate-from-image (injected), NEVER `docker start`.
|
|
175
227
|
*
|
|
176
|
-
* Caller wraps
|
|
177
|
-
*
|
|
228
|
+
* Caller wraps the staging build in `stageAndSwap` (the publish) — but the
|
|
229
|
+
* retag/hard-rm/resume tail runs AFTER the swap so a publish failure leaves
|
|
230
|
+
* the live stack untouched (only stopped, recoverable by the next boot).
|
|
178
231
|
*/
|
|
179
232
|
const runCapture = (inputs) => Effect.gen(function* () {
|
|
180
233
|
const fs = yield* FileSystem.FileSystem;
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
"devstack.snapshot.id": inputs.snapshotId
|
|
184
|
-
});
|
|
185
|
-
const report = (progress) => inputs.onProgress?.(progress) ?? Effect.void;
|
|
234
|
+
const grace = Duration.seconds(inputs.stopGraceSeconds ?? DEFAULT_CAPTURE_STOP_GRACE_SECONDS);
|
|
235
|
+
const gathered = yield* gatherCaptureParticipants(inputs.participants);
|
|
186
236
|
return yield* Effect.scoped(Effect.gen(function* () {
|
|
187
237
|
const capturedContainers = [];
|
|
188
|
-
const pauseIntended = [];
|
|
189
|
-
const pauseConfirmed = [];
|
|
190
|
-
yield* Effect.addFinalizer(() => Effect.gen(function* () {
|
|
191
|
-
if (pauseIntended.length > 0) yield* report({
|
|
192
|
-
phase: "resuming",
|
|
193
|
-
detail: `unpausing ${pauseIntended.length} container${pauseIntended.length === 1 ? "" : "s"}`,
|
|
194
|
-
pausedContainers: pauseConfirmed.length,
|
|
195
|
-
totalContainers: pauseIntended.length
|
|
196
|
-
});
|
|
197
|
-
yield* Effect.forEach(pauseIntended, (handle) => inputs.runtime.unpause(handle).pipe(Effect.catch((cause) => Effect.logWarning(`unpause(${handle.name}) failed during snapshot capture: ${String(cause)}`))), { concurrency: "unbounded" });
|
|
198
|
-
}).pipe(Effect.asVoid));
|
|
199
|
-
const plannedContainers = [];
|
|
200
238
|
const committedRefs = [];
|
|
201
239
|
yield* Effect.addFinalizer((exit) => Exit.isFailure(exit) ? cleanupCommittedRefs(inputs.runtime, committedRefs) : Effect.void);
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
const containers = yield* quiesceParticipant(participant, inputs.runtime);
|
|
208
|
-
for (const { handle, labels, unpauseAfterCapture } of containers) {
|
|
209
|
-
yield* validateCapturedContainer(handle, labels, participant);
|
|
240
|
+
const plannedContainers = [];
|
|
241
|
+
for (const g of gathered.participants) {
|
|
242
|
+
const containers = yield* enumerateParticipantContainers(g.plugin, g.labelTuples, inputs.runtime);
|
|
243
|
+
for (const { handle, labels } of containers) {
|
|
244
|
+
yield* validateCapturedContainer(handle, labels, g.plugin);
|
|
210
245
|
plannedContainers.push({
|
|
211
246
|
handle,
|
|
212
247
|
labels,
|
|
213
|
-
|
|
214
|
-
participant
|
|
248
|
+
plugin: g.plugin
|
|
215
249
|
});
|
|
216
250
|
}
|
|
217
251
|
}
|
|
218
252
|
yield* detectContainerArtifactCollisions(plannedContainers);
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
detail: `pausing ${runningContainers.length} running container${runningContainers.length === 1 ? "" : "s"}`,
|
|
223
|
-
pausedContainers: 0,
|
|
224
|
-
totalContainers: runningContainers.length
|
|
225
|
-
});
|
|
226
|
-
const readyContainers = [];
|
|
227
|
-
for (const entry of plannedContainers) {
|
|
228
|
-
const { handle, unpauseAfterCapture } = entry;
|
|
229
|
-
if (unpauseAfterCapture) {
|
|
230
|
-
pauseIntended.push(handle);
|
|
231
|
-
yield* inputs.runtime.pause(handle).pipe(Effect.catch(failPhase("pause", `pause failed for ${handle.name}`, entry.participant.plugin)));
|
|
232
|
-
pauseConfirmed.push(handle);
|
|
233
|
-
}
|
|
234
|
-
readyContainers.push({
|
|
235
|
-
...entry,
|
|
236
|
-
commitHandle: unpauseAfterCapture ? {
|
|
237
|
-
...handle,
|
|
238
|
-
status: "paused"
|
|
239
|
-
} : handle
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
if (runningContainers.length > 0) yield* report({
|
|
243
|
-
phase: "paused",
|
|
244
|
-
detail: `stack paused for snapshot (${pauseConfirmed.length}/${runningContainers.length} containers)`,
|
|
245
|
-
pausedContainers: pauseConfirmed.length,
|
|
246
|
-
totalContainers: runningContainers.length
|
|
253
|
+
yield* Effect.forEach(plannedContainers, (entry) => inputs.runtime.stop(entry.handle, grace).pipe(Effect.catch(failPhase("stop", `graceful stop failed for ${entry.handle.name}`, entry.plugin))), {
|
|
254
|
+
concurrency: "unbounded",
|
|
255
|
+
discard: true
|
|
247
256
|
});
|
|
248
257
|
const committedContainers = [];
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
detail: `committing ${readyContainers.length} container${readyContainers.length === 1 ? "" : "s"}`,
|
|
252
|
-
pausedContainers: pauseConfirmed.length,
|
|
253
|
-
totalContainers: runningContainers.length
|
|
254
|
-
});
|
|
255
|
-
for (const { commitHandle, labels, participant } of readyContainers) {
|
|
256
|
-
const committed = yield* commitContainerToImage(commitHandle, labels, inputs.runtime, participant, (ref) => Effect.sync(() => {
|
|
258
|
+
for (const { handle, labels, plugin } of plannedContainers) {
|
|
259
|
+
const committed = yield* commitStoppedContainer(handle, labels, inputs.runtime, plugin, (ref) => Effect.sync(() => {
|
|
257
260
|
committedRefs.push(ref);
|
|
258
261
|
}));
|
|
259
262
|
committedContainers.push(committed);
|
|
260
263
|
capturedContainers.push(committed.captured);
|
|
261
264
|
}
|
|
262
|
-
if (committedContainers.length > 0) yield* report({
|
|
263
|
-
phase: "saving-images",
|
|
264
|
-
detail: `saving ${committedContainers.length} committed image${committedContainers.length === 1 ? "" : "s"}`,
|
|
265
|
-
pausedContainers: pauseConfirmed.length,
|
|
266
|
-
totalContainers: runningContainers.length
|
|
267
|
-
});
|
|
268
265
|
yield* saveCommittedImages(committedContainers, inputs.stagingDir, inputs.runtime);
|
|
269
|
-
const subtrees = yield* resolveCapturedSubtrees(
|
|
270
|
-
plugin: p.plugin,
|
|
271
|
-
relPath,
|
|
272
|
-
missingTolerance: p.decl.missingTolerance,
|
|
273
|
-
secretMaterial: p.decl.secretMaterial ?? false
|
|
274
|
-
}))), ...DEPLOY_CACHE_NAMESPACES.map((ns) => ({
|
|
275
|
-
plugin: "snapshot/deploy-cache",
|
|
276
|
-
relPath: `${CACHE_DIR_NAME}/${ns}`,
|
|
277
|
-
missingTolerance: "fine",
|
|
278
|
-
secretMaterial: false
|
|
279
|
-
}))], inputs.runtimeStackRoot);
|
|
266
|
+
const subtrees = yield* resolveCapturedSubtrees(gathered.declaredSubtrees, inputs.runtimeStackRoot);
|
|
280
267
|
const hostTreeIncluded = subtrees.length > 0;
|
|
281
|
-
if (hostTreeIncluded) {
|
|
282
|
-
yield* report({
|
|
283
|
-
phase: "capturing-host-tree",
|
|
284
|
-
detail: `archiving ${subtrees.length} host subtree${subtrees.length === 1 ? "" : "s"}`,
|
|
285
|
-
pausedContainers: pauseConfirmed.length,
|
|
286
|
-
totalContainers: runningContainers.length
|
|
287
|
-
});
|
|
288
|
-
yield* writeHostTreeTar(inputs.runtimeStackRoot, subtrees, `${inputs.stagingDir}/${SnapshotLayout.hostTreeTar}`);
|
|
289
|
-
}
|
|
290
|
-
if (yield* fs.exists(inputs.stateFilePath).pipe(Effect.catch(() => Effect.succeed(false)))) {
|
|
291
|
-
yield* report({
|
|
292
|
-
phase: "saving-state",
|
|
293
|
-
detail: "copying runtime state",
|
|
294
|
-
pausedContainers: pauseConfirmed.length,
|
|
295
|
-
totalContainers: runningContainers.length
|
|
296
|
-
});
|
|
297
|
-
const stateDoc = yield* readSnapshotStateDocument(inputs.stateFilePath).pipe(Effect.catch(failPhase("read-state", `state.json failed schema validation`)));
|
|
298
|
-
yield* writeSnapshotStateDocument(`${inputs.stagingDir}/${SnapshotLayout.stateFile}`, stateDoc).pipe(Effect.catch(failPhase("write-state", `write state.json failed`)));
|
|
299
|
-
}
|
|
300
|
-
yield* report({
|
|
301
|
-
phase: "saving-contributions",
|
|
302
|
-
detail: `writing ${inputs.participants.length} contribution document${inputs.participants.length === 1 ? "" : "s"}`,
|
|
303
|
-
pausedContainers: pauseConfirmed.length,
|
|
304
|
-
totalContainers: runningContainers.length
|
|
305
|
-
});
|
|
268
|
+
if (hostTreeIncluded) yield* writeHostTreeTar(inputs.runtimeStackRoot, subtrees, `${inputs.stagingDir}/${SnapshotLayout.hostTreeTar}`);
|
|
306
269
|
yield* fs.makeDirectory(`${inputs.stagingDir}/${SnapshotLayout.contributionsDir}`, { recursive: true }).pipe(Effect.catch(failPhase("write-contribution", `mkdir contributions dir failed`)));
|
|
307
|
-
const
|
|
308
|
-
const stateByParticipant = /* @__PURE__ */ new Map();
|
|
309
|
-
const participantKeys = [];
|
|
310
|
-
for (const participant of inputs.participants) {
|
|
311
|
-
const identity = yield* participant.captureIdentity;
|
|
312
|
-
identityContributions.push({
|
|
313
|
-
plugin: participant.plugin,
|
|
314
|
-
slice: identity
|
|
315
|
-
});
|
|
316
|
-
const state = yield* participant.captureContribution;
|
|
317
|
-
stateByParticipant.set(participant.plugin, state);
|
|
318
|
-
}
|
|
319
|
-
const identityMerged = yield* mergeContributions(identityContributions);
|
|
320
|
-
for (const participant of inputs.participants) {
|
|
321
|
-
const identity = identityContributions.find((c) => c.plugin === participant.plugin)?.slice ?? {};
|
|
322
|
-
const state = stateByParticipant.get(participant.plugin);
|
|
270
|
+
for (const g of gathered.participants) {
|
|
323
271
|
const doc = {
|
|
324
272
|
version: 1,
|
|
325
|
-
plugin:
|
|
326
|
-
identity,
|
|
327
|
-
...
|
|
273
|
+
plugin: g.plugin,
|
|
274
|
+
identity: g.identitySlice,
|
|
275
|
+
...g.opaqueState === void 0 ? {} : { opaqueState: {
|
|
328
276
|
encoding: "json",
|
|
329
|
-
value:
|
|
277
|
+
value: g.opaqueState
|
|
330
278
|
} }
|
|
331
279
|
};
|
|
332
|
-
yield* fs.writeFileString(`${inputs.stagingDir}/${contributionPath(
|
|
333
|
-
participantKeys.push(participant.plugin);
|
|
280
|
+
yield* fs.writeFileString(`${inputs.stagingDir}/${contributionPath(g.plugin)}`, JSON.stringify(doc, null, 2)).pipe(Effect.catch(failPhase("write-contribution", `write contribution doc failed`, g.plugin)));
|
|
334
281
|
}
|
|
335
|
-
yield* requireIdentity(identityMerged, "snapshot");
|
|
336
|
-
yield* report({
|
|
337
|
-
phase: "writing-metadata",
|
|
338
|
-
detail: "finalizing snapshot artifact",
|
|
339
|
-
pausedContainers: pauseConfirmed.length,
|
|
340
|
-
totalContainers: runningContainers.length
|
|
341
|
-
});
|
|
342
282
|
const meta = {
|
|
343
|
-
version:
|
|
283
|
+
version: 4,
|
|
344
284
|
id: inputs.snapshotId,
|
|
345
285
|
label: inputs.label,
|
|
346
286
|
createdAt: Date.now(),
|
|
347
287
|
app: inputs.app,
|
|
348
288
|
stack: inputs.stack,
|
|
349
289
|
network: inputs.network,
|
|
290
|
+
graphInput: inputs.graphInput,
|
|
350
291
|
hostTreeIncluded,
|
|
351
292
|
subtrees,
|
|
352
293
|
containers: capturedContainers,
|
|
353
|
-
identity: identityMerged,
|
|
354
|
-
participants: participantKeys
|
|
294
|
+
identity: gathered.identityMerged,
|
|
295
|
+
participants: [...gathered.participantKeys]
|
|
355
296
|
};
|
|
356
297
|
yield* fs.writeFileString(`${inputs.stagingDir}/${SnapshotLayout.metaFile}`, JSON.stringify(meta, null, 2)).pipe(Effect.catch(failPhase("write-meta", `write meta.json failed`)));
|
|
357
298
|
yield* writeArtifactIntegrity(inputs.stagingDir).pipe(Effect.catch(failPhase("write-integrity", `write integrity.json failed`)));
|
|
358
299
|
return meta;
|
|
359
300
|
}));
|
|
360
|
-
})
|
|
301
|
+
});
|
|
302
|
+
/**
|
|
303
|
+
* The post-publish bounce tail: retag each committed image onto its
|
|
304
|
+
* container's ORIGINAL image name (so the resume's recreate-from-image
|
|
305
|
+
* boots the node on its just-committed, flushed layer), hard-rm the stopped
|
|
306
|
+
* containers, then run the injected resume (recreate + wait-write-ready).
|
|
307
|
+
*
|
|
308
|
+
* Runs AFTER `stageAndSwap` publishes the artifact, so a publish failure
|
|
309
|
+
* never reaches here — the live stack is only stopped (recoverable). The
|
|
310
|
+
* retag aliases the original image name onto the committed layer; restore
|
|
311
|
+
* uses the SAME retag-to-original-name mechanism with its loaded bundle, so
|
|
312
|
+
* capture and restore resume identically (recreate-from-fresh off an image
|
|
313
|
+
* whose name now resolves to the snapshot layer).
|
|
314
|
+
*
|
|
315
|
+
* This is NEVER expressed as `docker start` — walrus storage nodes EXIT on
|
|
316
|
+
* `docker start` after a graceful stop; the resume's recreate is a fresh
|
|
317
|
+
* `docker run` that re-syncs and the write-ready ready-gate blocks on.
|
|
318
|
+
*/
|
|
319
|
+
const resumeAfterCapture = (meta, inputs) => Effect.gen(function* () {
|
|
320
|
+
for (const captured of meta.containers) {
|
|
321
|
+
const oldDigest = yield* inputs.runtime.inspectImageDigest(captured.imageName).pipe(Effect.catch(() => Effect.succeed(null)));
|
|
322
|
+
yield* inputs.runtime.tagImage({
|
|
323
|
+
digest: captured.snapshotTag,
|
|
324
|
+
tag: captured.snapshotTag
|
|
325
|
+
}, captured.imageName, { removeSourceAfterTag: true }).pipe(Effect.catch(failPhase("retag-image", `tag committed image ${captured.snapshotTag} as ${captured.imageName} failed`, captured.plugin)));
|
|
326
|
+
const newDigest = yield* inputs.runtime.inspectImageDigest(captured.imageName).pipe(Effect.catch(() => Effect.succeed(null)));
|
|
327
|
+
if (oldDigest !== null && oldDigest !== newDigest) yield* inputs.runtime.removeImage({ digest: oldDigest }).pipe(Effect.catch((cause) => Effect.logWarning(`GC of superseded image layer ${oldDigest} for ${captured.imageName} failed (best-effort): ${String(cause)}`)));
|
|
328
|
+
}
|
|
329
|
+
for (const captured of meta.containers) yield* inputs.runtime.removeManagedContainers({
|
|
330
|
+
app: inputs.app,
|
|
331
|
+
stack: inputs.stack,
|
|
332
|
+
plugin: captured.plugin,
|
|
333
|
+
role: captured.role
|
|
334
|
+
}).pipe(Effect.catch(failPhase("remove-container", `remove managed containers for ${captured.plugin}/${captured.role} failed`, captured.plugin)));
|
|
335
|
+
if (inputs.resume !== void 0) yield* inputs.resume.pipe(Effect.catch(failPhase("resume", `stack resume after capture failed`)));
|
|
336
|
+
});
|
|
361
337
|
//#endregion
|
|
362
|
-
export { CapturePhaseError, runCapture };
|
|
338
|
+
export { CapturePhaseError, resumeAfterCapture, runCapture };
|
|
363
339
|
|
|
364
340
|
//# sourceMappingURL=capture.mjs.map
|