@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
package/dashboard-ui/index.html
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>devstack dashboard</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-CRYJ4pru.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-B82Bh84P.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="root"></div>
|
|
@@ -1,19 +1,6 @@
|
|
|
1
|
-
import { CodegenableDecl } from "../contracts/codegenable.mjs";
|
|
2
1
|
import { ProjectionDecl, ProjectionEvent } from "../contracts/projection.mjs";
|
|
3
|
-
import { RoutableDecl } from "../contracts/routable.mjs";
|
|
4
|
-
import { SnapshotableDecl } from "../contracts/snapshotable.mjs";
|
|
5
|
-
import { StrategyContributorDecl } from "../contracts/strategy-contributor.mjs";
|
|
6
|
-
import { CapabilityDecl, CapabilityKind, CapabilityPayloadFor, ExactCapabilityPayload } from "../contracts/capability-decl.mjs";
|
|
7
|
-
import { CapabilitySink, ContributionKind, HarvestContext } from "../substrate/runtime/capability-sinks/service.mjs";
|
|
8
|
-
import { Effect, Scope } from "effect";
|
|
9
2
|
|
|
10
3
|
//#region src/api/define-capabilities.d.ts
|
|
11
|
-
declare const capability: <const Kind extends string, const Data extends CapabilityPayloadFor<Kind>>(kind: Kind, data: Data & ExactCapabilityPayload<Kind, Data>) => CapabilityDecl<Kind> & Readonly<Data>;
|
|
12
|
-
declare const defineCapability: <const Kind extends string>(kind: Kind) => <const Data extends CapabilityPayloadFor<Kind>>(data: Data & ExactCapabilityPayload<Kind, Data>) => CapabilityDecl<Kind> & Readonly<Data>;
|
|
13
|
-
declare const codegenable: <const Emitter extends string>(decl: Omit<CodegenableDecl<Emitter>, "kind">) => CodegenableDecl<Emitter>;
|
|
14
|
-
declare const snapshotable: (decl: Omit<SnapshotableDecl, "kind">) => SnapshotableDecl;
|
|
15
|
-
type RoutableDeclInput = RoutableDecl extends infer T ? T extends RoutableDecl ? Omit<T, 'kind'> : never : never;
|
|
16
|
-
declare const routable: (decl: RoutableDeclInput) => RoutableDecl;
|
|
17
4
|
/** Build a `ProjectionDecl` envelope from a `{kind, key, payload}`
|
|
18
5
|
* shorthand. Stamps `tag: 'projection.updated'` and (when `at` is
|
|
19
6
|
* omitted) the current `Date.now()`. Callers that want the projection
|
|
@@ -25,12 +12,6 @@ declare const routable: (decl: RoutableDeclInput) => RoutableDecl;
|
|
|
25
12
|
declare const projection: (input: (Omit<ProjectionEvent, "tag" | "at"> & {
|
|
26
13
|
readonly at?: number;
|
|
27
14
|
}) | Omit<ProjectionDecl, "kind">) => ProjectionDecl;
|
|
28
|
-
declare const strategyContributor: <const Key extends string, Strategy>(decl: Omit<StrategyContributorDecl<Key, Strategy>, "kind">) => StrategyContributorDecl<Key, Strategy>;
|
|
29
|
-
declare const capabilitySink: <const Kind extends ContributionKind, Decl extends (Kind extends CapabilityKind ? Extract<CapabilityDecl, {
|
|
30
|
-
readonly kind: Kind;
|
|
31
|
-
}> : Readonly<{
|
|
32
|
-
readonly kind: Kind;
|
|
33
|
-
} & object>)>(kind: Kind, accept: (decl: Decl, ctx: HarvestContext) => Effect.Effect<void, never, Scope.Scope>) => CapabilitySink<Kind, Decl>;
|
|
34
15
|
//#endregion
|
|
35
|
-
export {
|
|
16
|
+
export { projection };
|
|
36
17
|
//# sourceMappingURL=define-capabilities.d.mts.map
|
|
@@ -1,12 +1,4 @@
|
|
|
1
1
|
//#region src/api/define-capabilities.ts
|
|
2
|
-
const capability = (kind, data) => ({
|
|
3
|
-
...data,
|
|
4
|
-
kind
|
|
5
|
-
});
|
|
6
|
-
const defineCapability = (kind) => (data) => capability(kind, data);
|
|
7
|
-
const codegenable = (decl) => capability("codegenable", decl);
|
|
8
|
-
const snapshotable = (decl) => capability("snapshotable", decl);
|
|
9
|
-
const routable = (decl) => capability("routable", decl);
|
|
10
2
|
/** Build a `ProjectionDecl` envelope from a `{kind, key, payload}`
|
|
11
3
|
* shorthand. Stamps `tag: 'projection.updated'` and (when `at` is
|
|
12
4
|
* omitted) the current `Date.now()`. Callers that want the projection
|
|
@@ -16,21 +8,22 @@ const routable = (decl) => capability("routable", decl);
|
|
|
16
8
|
* right to extend the envelope shape (e.g. add cause metadata)
|
|
17
9
|
* without consumers re-spelling each emission site. */
|
|
18
10
|
const projection = (input) => {
|
|
19
|
-
if ("event" in input) return
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
11
|
+
if ("event" in input) return {
|
|
12
|
+
...input,
|
|
13
|
+
kind: "projection"
|
|
14
|
+
};
|
|
15
|
+
return {
|
|
16
|
+
kind: "projection",
|
|
17
|
+
event: {
|
|
18
|
+
tag: "projection.updated",
|
|
19
|
+
kind: input.kind,
|
|
20
|
+
key: input.key,
|
|
21
|
+
payload: input.payload,
|
|
22
|
+
at: input.at ?? Date.now()
|
|
23
|
+
}
|
|
24
|
+
};
|
|
27
25
|
};
|
|
28
|
-
const strategyContributor = (decl) => capability("strategy-contributor", decl);
|
|
29
|
-
const capabilitySink = (kind, accept) => ({
|
|
30
|
-
kind,
|
|
31
|
-
accept
|
|
32
|
-
});
|
|
33
26
|
//#endregion
|
|
34
|
-
export {
|
|
27
|
+
export { projection };
|
|
35
28
|
|
|
36
29
|
//# sourceMappingURL=define-capabilities.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-capabilities.mjs","names":[],"sources":["../../src/api/define-capabilities.ts"],"sourcesContent":["// Typed
|
|
1
|
+
{"version":3,"file":"define-capabilities.mjs","names":[],"sources":["../../src/api/define-capabilities.ts"],"sourcesContent":["// Typed contribution-decl authoring helpers.\n//\n// Plugin authors emit contributions inline from `start` via the typed\n// `ctx` verbs (`ctx.codegen`/`ctx.endpoint`/`ctx.snapshotExtra`/\n// `ctx.publish`/`ctx.provides`). This helper builds the payload-shaped\n// decl `ctx.publish` accepts, stamping the `kind` discriminant while\n// preserving narrow payload types. `projection` is the one helper with\n// live plugin-author call sites; the remaining contribution kinds\n// (codegenable / routable / snapshotable / strategy-contributor) are\n// built inline by the built-in plugins as object literals.\n\nimport type { ProjectionDecl, ProjectionEvent } from '../contracts/projection.ts';\n\n/** Build a `ProjectionDecl` envelope from a `{kind, key, payload}`\n * shorthand. Stamps `tag: 'projection.updated'` and (when `at` is\n * omitted) the current `Date.now()`. Callers that want the projection\n * payload's `updatedAt` field to match the envelope's `at` should pass\n * `at` explicitly. Plugin authors should prefer this shorthand over\n * building the full envelope by hand — the substrate reserves the\n * right to extend the envelope shape (e.g. add cause metadata)\n * without consumers re-spelling each emission site. */\nexport const projection = (\n\tinput:\n\t\t| (Omit<ProjectionEvent, 'tag' | 'at'> & { readonly at?: number })\n\t\t| Omit<ProjectionDecl, 'kind'>,\n): ProjectionDecl => {\n\tif ('event' in input) return { ...input, kind: 'projection' };\n\treturn {\n\t\tkind: 'projection',\n\t\tevent: {\n\t\t\ttag: 'projection.updated',\n\t\t\tkind: input.kind,\n\t\t\tkey: input.key,\n\t\t\tpayload: input.payload,\n\t\t\tat: input.at ?? Date.now(),\n\t\t},\n\t};\n};\n"],"mappings":";;;;;;;;;AAqBA,MAAa,cACZ,UAGoB;CACpB,IAAI,WAAW,OAAO,OAAO;EAAE,GAAG;EAAO,MAAM;CAAa;CAC5D,OAAO;EACN,MAAM;EACN,OAAO;GACN,KAAK;GACL,MAAM,MAAM;GACZ,KAAK,MAAM;GACX,SAAS,MAAM;GACf,IAAI,MAAM,MAAM,KAAK,IAAI;EAC1B;CACD;AACD"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { AnyPlugin, MissingProviders, __MissingProvidersError } from "../substrate/plugin.mjs";
|
|
2
|
-
import { NetworkConfig, NetworkMode } from "../substrate/network.mjs";
|
|
3
2
|
import { DevstackOptions } from "../substrate/options.mjs";
|
|
4
3
|
import { ComposedMembers, Stack } from "./define-devstack.mjs";
|
|
4
|
+
import { NetworkScopedOptions } from "../orchestrators/network-options.mjs";
|
|
5
|
+
import { DevstackNetworkName } from "./inference-network.mjs";
|
|
6
|
+
import { NetworkConfig, NetworkMode } from "../plugins/sui/network-config.mjs";
|
|
5
7
|
|
|
6
8
|
//#region src/api/define-devstack-with.d.ts
|
|
7
9
|
/**
|
|
@@ -16,6 +18,10 @@ interface BuildCtx<Mode extends NetworkMode> {
|
|
|
16
18
|
* callback's `BuildCtx` is typed. */
|
|
17
19
|
interface DevstackOptionsWith<Mode extends NetworkMode> extends DevstackOptions {
|
|
18
20
|
readonly network: NetworkConfig<Mode>;
|
|
21
|
+
/** Per-network feature toggles, with keys narrowed to the canonical
|
|
22
|
+
* `DevstackNetworkName`s (autocomplete + typo-catching). Same shape as
|
|
23
|
+
* the flat-form `DevstackOptions.networkOptions`. */
|
|
24
|
+
readonly networkOptions?: Partial<Record<DevstackNetworkName, NetworkScopedOptions>>;
|
|
19
25
|
}
|
|
20
26
|
/** Validation gate. Mirrors the flat-form rule: resolves to the
|
|
21
27
|
* caller's `Members` tuple on a clean check, branded error
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-devstack-with.mjs","names":[],"sources":["../../src/api/define-devstack-with.ts"],"sourcesContent":["// `defineDevstackWith` — callback form.\n//\n// Architecture § Programmable API: the canonical surface when one or\n// more plugin factories need mode-narrowing. The callback receives a\n// `BuildCtx` whose `network` is the resolved-narrow `NetworkConfig`;\n// plugin-author factories that take `(network)` recover the mode\n// discriminator structurally, and the compiler refuses illegal-mode\n// factory access at the call site.\n\nimport { isPlugin, type AnyPlugin } from '../substrate/plugin.ts';\nimport type { DevstackOptions } from '../substrate/options.ts';\nimport type { NetworkConfig, NetworkMode } from '../
|
|
1
|
+
{"version":3,"file":"define-devstack-with.mjs","names":[],"sources":["../../src/api/define-devstack-with.ts"],"sourcesContent":["// `defineDevstackWith` — callback form.\n//\n// Architecture § Programmable API: the canonical surface when one or\n// more plugin factories need mode-narrowing. The callback receives a\n// `BuildCtx` whose `network` is the resolved-narrow `NetworkConfig`;\n// plugin-author factories that take `(network)` recover the mode\n// discriminator structurally, and the compiler refuses illegal-mode\n// factory access at the call site.\n\nimport { isPlugin, type AnyPlugin } from '../substrate/plugin.ts';\nimport type { DevstackOptions } from '../substrate/options.ts';\nimport type { NetworkScopedOptions } from '../orchestrators/network-options.ts';\nimport type { DevstackNetworkName } from './inference-network.ts';\nimport type { NetworkConfig, NetworkMode } from '../plugins/sui/network-config.ts';\nimport type { __MissingProvidersError, MissingProviders } from '../substrate/plugin.ts';\nimport { defineDevstack, type ComposedMembers, type Stack } from './define-devstack.ts';\n\n// --- Callback context ---------------------------------------------------\n\n/**\n * Build context handed to the callback. The `network` field carries\n * the resolved-narrow `NetworkConfig`; mode-narrowed factories that\n * take `(network)` recover the discriminator at the type level.\n */\nexport interface BuildCtx<Mode extends NetworkMode> {\n\treadonly network: NetworkConfig<Mode>;\n}\n\n/** Options bag for the callback form. `network` MUST be present so the\n * callback's `BuildCtx` is typed. */\nexport interface DevstackOptionsWith<Mode extends NetworkMode> extends DevstackOptions {\n\treadonly network: NetworkConfig<Mode>;\n\t/** Per-network feature toggles, with keys narrowed to the canonical\n\t * `DevstackNetworkName`s (autocomplete + typo-catching). Same shape as\n\t * the flat-form `DevstackOptions.networkOptions`. */\n\treadonly networkOptions?: Partial<Record<DevstackNetworkName, NetworkScopedOptions>>;\n}\n\n/** Validation gate. Mirrors the flat-form rule: resolves to the\n * caller's `Members` tuple on a clean check, branded error\n * otherwise.\n *\n * Validation runs against the recursively expanded tuple\n * (`ComposedMembers<Members>`) so plugin-valued dependencies are\n * included before missing-provider checks. Bare resource dependencies\n * still require an explicit provider in the returned member tuple. */\ntype ValidateBuild<Members> =\n\tMembers extends ReadonlyArray<AnyPlugin>\n\t\t? ComposedMembers<Members> extends infer M\n\t\t\t? M extends ReadonlyArray<unknown>\n\t\t\t\t? [MissingProviders<M>] extends [never]\n\t\t\t\t\t? Members\n\t\t\t\t\t: __MissingProvidersError<MissingProviders<M>>\n\t\t\t\t: never\n\t\t\t: never\n\t\t: never;\n\n// --- Public surface -----------------------------------------------------\n\n/**\n * Callback-form devstack composer. The first arg is the options bag\n * (including the mode-narrow `network`); the second is a builder that\n * receives a `BuildCtx<Mode>` and returns the member tuple.\n *\n * The `Mode` generic is inferred from `options.network.mode`; the\n * callback's `BuildCtx` carries it, and plugin factories that accept\n * the narrowed network see the matching branch only.\n */\nexport function defineDevstackWith<\n\tMode extends NetworkMode,\n\tMembers extends ReadonlyArray<AnyPlugin>,\n>(\n\toptions: DevstackOptionsWith<Mode>,\n\tbuild: (ctx: BuildCtx<Mode>) => ValidateBuild<Members>,\n): Stack<ComposedMembers<Members>> {\n\tconst rawMembers = build({ network: options.network }) as ReadonlyArray<AnyPlugin>;\n\n\t// Defensive runtime check: every element returned by the builder\n\t// must be a plugin resource. Type system enforces this, but a\n\t// runtime check guards against `as unknown as AnyPlugin` casts.\n\tfor (const m of rawMembers) {\n\t\tif (!isPlugin(m)) {\n\t\t\tthrow new Error(\n\t\t\t\t'defineDevstackWith: builder returned a value that is not a plugin member ' +\n\t\t\t\t\t'(missing plugin brand). Did you forget to wrap it with definePlugin?',\n\t\t\t);\n\t\t}\n\t}\n\n\treturn defineDevstack({ ...options, members: rawMembers }) as unknown as Stack<\n\t\tComposedMembers<Members>\n\t>;\n}\n"],"mappings":";;;;;;;;;;;;AAoEA,SAAgB,mBAIf,SACA,OACkC;CAClC,MAAM,aAAa,MAAM,EAAE,SAAS,QAAQ,QAAQ,CAAC;CAKrD,KAAK,MAAM,KAAK,YACf,IAAI,CAAC,SAAS,CAAC,GACd,MAAM,IAAI,MACT,+IAED;CAIF,OAAO,eAAe;EAAE,GAAG;EAAS,SAAS;CAAW,CAAC;AAG1D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-devstack.mjs","names":[],"sources":["../../src/api/define-devstack.ts"],"sourcesContent":["// `defineDevstack` — object-form stack composer.\n//\n// Listed members are entrypoints. Plugin-valued dependencies are\n// expanded recursively before the engine sees the plugin list.\n\nimport {\n\ttype __MissingProvidersError,\n\ttype AnyPlugin,\n\ttype MissingProviders,\n\tpluginDependencyRefs,\n} from '../substrate/plugin.ts';\nimport type { DevstackOptions } from '../substrate/options.ts';\nimport { isPluginExpanderPair, runPluginExpanders } from '../contracts/plugin-expander.ts';\nimport { isPlugin, type AnyResourceRef } from './define-plugin.ts';\n\n// --- Type-level helpers -------------------------------------------------\n\nconst STACK_ENGINE = Symbol.for('@mysten-incubation/devstack.stack.engine');\n\ntype PluginDependencyMembers<Member> = Member extends {\n\treadonly dependsOn: ReadonlyArray<infer Dependency>;\n}\n\t? Dependency extends AnyPlugin\n\t\t? Dependency\n\t\t: never\n\t: never;\n\ntype ReachableMember<Member, Seen extends string = never> = Member extends {\n\treadonly id: infer Id extends string;\n}\n\t? Id extends Seen\n\t\t? never\n\t\t: Member | ReachableMember<PluginDependencyMembers<Member>, Seen | Id>\n\t: never;\n\nexport type DependencyClosure<Members extends ReadonlyArray<AnyPlugin>> = ReadonlyArray<\n\tMembers[number] extends infer Member ? ReachableMember<Member> : never\n>;\n\nexport type ComposedMembers<Members extends ReadonlyArray<AnyPlugin>> = DependencyClosure<Members>;\n\nexport interface DevstackConfig<Members extends ReadonlyArray<AnyPlugin>> extends DevstackOptions {\n\treadonly members: Members;\n}\n\nconst ACCOUNT_RESOURCE_PREFIX = 'account/';\n\n// --- Stack handle -------------------------------------------------------\n\n/**\n * The compile-time stack handle. Carries:\n * - the plugin tuple (narrow),\n * - the union of resource ids it provides,\n * - an opaque marker the orchestrator boot path consumes.\n *\n * The runtime value is a struct; orchestrators consume it through\n * the supervisor entry point.\n */\nexport interface Stack<Members extends ReadonlyArray<AnyPlugin> = ReadonlyArray<AnyPlugin>> {\n\treadonly _tag: 'Stack';\n\treadonly options: DevstackOptions;\n\t/** Phantom — preserves the union of provided ids for downstream\n\t * introspection. Covariant per the phantom-variance rule. */\n\treadonly _providedIds?: () => {\n\t\t[K in keyof Members]: Members[K]['id'];\n\t}[number];\n}\n\nexport interface StackEngine<Members extends ReadonlyArray<AnyPlugin> = ReadonlyArray<AnyPlugin>> {\n\treadonly _tag: 'Stack';\n\treadonly members: Members;\n\treadonly options: DevstackOptions;\n}\n\nexport const readStackEngine = <Members extends ReadonlyArray<AnyPlugin>>(\n\tstack: Stack<Members>,\n): StackEngine<Members> => {\n\tconst engine = (stack as unknown as Readonly<Record<symbol, StackEngine<Members> | undefined>>)[\n\t\tSTACK_ENGINE\n\t];\n\tif (engine === undefined) {\n\t\tthrow new Error('Invalid devstack Stack handle: missing internal engine stack');\n\t}\n\treturn engine;\n};\n\n// --- Diagnostic gating --------------------------------------------------\n//\n// If `MissingProviders` is non-empty, the call signature surfaces a\n// branded structured error so the IDE diagnostic names the missing\n// piece.\n\n/** Validation gate. Resolves to `unknown` when every check passes\n * (assignable to any `Args`); to a branded structured error\n * otherwise (not assignable, surfacing the field name in the IDE).\n * UNCONSTRAINED Members — every helper sidesteps constraint widening\n * via an internal `Members extends ReadonlyArray<unknown> ? ... : never`\n * shape.\n *\n * IMPORTANT: validation runs against the recursively expanded member\n * tuple (`ComposedMembers<Members>`). Bare resource dependencies must\n * have an explicit provider in the stack; plugin-valued dependencies\n * are pulled in by the closure first. */\nexport type ValidateArgs<Members> =\n\tMembers extends ReadonlyArray<AnyPlugin>\n\t\t? ComposedMembers<Members> extends infer M\n\t\t\t? M extends ReadonlyArray<unknown>\n\t\t\t\t? [MissingProviders<M>] extends [never]\n\t\t\t\t\t? unknown\n\t\t\t\t\t: __MissingProvidersError<MissingProviders<M>>\n\t\t\t\t: never\n\t\t\t: never\n\t\t: never;\n\n// --- Public surface -----------------------------------------------------\n\n/**\n * Object-form devstack composer.\n *\n * Compile-time checks performed:\n * - missing-provider: every dependency id has a matching plugin id\n * somewhere in the plugin set.\n *\n * Validation surfaces at the PARAMETER (not the return type) — the\n * generic `Args` is constrained against a branded error type whose\n * field name names the missing piece (type-prototype finding #6,\n * architecture open question #11). Failed validation makes the\n * config type un-assignable, surfacing as the standard\n * \"not assignable to parameter of type\" diagnostic with the branded\n * error field visible in the IDE.\n */\nexport function defineDevstack<const Members extends ReadonlyArray<AnyPlugin>>(\n\tconfig: DevstackConfig<Members> & ValidateArgs<Members>,\n): Stack<ComposedMembers<Members>> {\n\tconst roots = expandPluginDependencies(config.members);\n\tconst expanded = runPluginExpanders(roots);\n\tconst members = expanded === roots ? roots : expandPluginDependencies(expanded);\n\tconst { members: _members, ...options } = config;\n\tvoid _members;\n\n\tconst engine: StackEngine<ReadonlyArray<AnyPlugin>> = {\n\t\t_tag: 'Stack',\n\t\tmembers,\n\t\toptions,\n\t};\n\tconst stack: Stack<ReadonlyArray<AnyPlugin>> = {\n\t\t_tag: 'Stack',\n\t\toptions,\n\t};\n\tObject.defineProperty(stack, STACK_ENGINE, {\n\t\tvalue: engine,\n\t\tenumerable: false,\n\t\tconfigurable: false,\n\t\twritable: false,\n\t});\n\n\treturn stack as unknown as Stack<ComposedMembers<Members>>;\n}\n\nexport const expandPluginDependencies = (\n\tmembers: ReadonlyArray<AnyPlugin>,\n): ReadonlyArray<AnyPlugin> => {\n\tconst expanded: AnyPlugin[] = [];\n\tconst seen = new Map<string, AnyPlugin>();\n\tconst accountNameByCaseFold = new Map<string, string>();\n\tconst visiting = new Set<string>();\n\n\tconst visit = (member: AnyPlugin) => {\n\t\tconst id = member.id;\n\t\tconst previous = seen.get(id);\n\t\tif (previous === member) {\n\t\t\treturn;\n\t\t}\n\t\tif (previous !== undefined) {\n\t\t\tif (isPluginExpanderPair(previous, member)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthrow new Error(`Duplicate devstack provider for ${id}`);\n\t\t}\n\t\tconst accountName = accountNameFromResourceId(id);\n\t\tif (accountName !== null) {\n\t\t\tconst caseFoldedName = accountName.toLowerCase();\n\t\t\tconst previousAccountName = accountNameByCaseFold.get(caseFoldedName);\n\t\t\tif (previousAccountName !== undefined && previousAccountName !== accountName) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Duplicate devstack account name '${accountName}' differs only by casing from '${previousAccountName}'`,\n\t\t\t\t);\n\t\t\t}\n\t\t\taccountNameByCaseFold.set(caseFoldedName, accountName);\n\t\t}\n\t\tif (visiting.has(id)) {\n\t\t\tthrow new Error(`Circular devstack dependency through ${id}`);\n\t\t}\n\n\t\tvisiting.add(id);\n\t\tif (isPlugin(member)) {\n\t\t\tfor (const dependency of pluginDependencyRefs(member) as readonly AnyResourceRef[]) {\n\t\t\t\tif (isPlugin(dependency)) {\n\t\t\t\t\tvisit(dependency);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvisiting.delete(id);\n\t\tseen.set(id, member);\n\t\texpanded.push(member);\n\t};\n\n\tfor (const member of members) {\n\t\tvisit(member);\n\t}\n\n\treturn expanded;\n};\n\nconst accountNameFromResourceId = (id: string): string | null => {\n\tif (!id.startsWith(ACCOUNT_RESOURCE_PREFIX)) return null;\n\treturn id.slice(ACCOUNT_RESOURCE_PREFIX.length);\n};\n"],"mappings":";;;;AAiBA,MAAM,eAAe,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"define-devstack.mjs","names":[],"sources":["../../src/api/define-devstack.ts"],"sourcesContent":["// `defineDevstack` — object-form stack composer.\n//\n// Listed members are entrypoints. Plugin-valued dependencies are\n// expanded recursively before the engine sees the plugin list.\n\nimport {\n\ttype __MissingProvidersError,\n\ttype AnyPlugin,\n\ttype MissingProviders,\n\tpluginDependencyRefs,\n} from '../substrate/plugin.ts';\nimport type { DevstackOptions } from '../substrate/options.ts';\nimport { isPluginExpanderPair, runPluginExpanders } from '../contracts/plugin-expander.ts';\nimport { isPlugin, type AnyResourceRef } from './define-plugin.ts';\n\n// --- Type-level helpers -------------------------------------------------\n\nconst STACK_ENGINE = Symbol.for('@mysten-incubation/devstack.stack.engine');\n\ntype PluginDependencyMembers<Member> = Member extends {\n\treadonly dependsOn: ReadonlyArray<infer Dependency>;\n}\n\t? Dependency extends AnyPlugin\n\t\t? Dependency\n\t\t: never\n\t: never;\n\ntype ReachableMember<Member, Seen extends string = never> = Member extends {\n\treadonly id: infer Id extends string;\n}\n\t? Id extends Seen\n\t\t? never\n\t\t: Member | ReachableMember<PluginDependencyMembers<Member>, Seen | Id>\n\t: never;\n\nexport type DependencyClosure<Members extends ReadonlyArray<AnyPlugin>> = ReadonlyArray<\n\tMembers[number] extends infer Member ? ReachableMember<Member> : never\n>;\n\nexport type ComposedMembers<Members extends ReadonlyArray<AnyPlugin>> = DependencyClosure<Members>;\n\nexport interface DevstackConfig<Members extends ReadonlyArray<AnyPlugin>> extends DevstackOptions {\n\treadonly members: Members;\n}\n\nconst ACCOUNT_RESOURCE_PREFIX = 'account/';\n\n// --- Stack handle -------------------------------------------------------\n\n/**\n * The compile-time stack handle. Carries:\n * - the plugin tuple (narrow),\n * - the union of resource ids it provides,\n * - an opaque marker the orchestrator boot path consumes.\n *\n * The runtime value is a struct; orchestrators consume it through\n * the supervisor entry point.\n */\nexport interface Stack<Members extends ReadonlyArray<AnyPlugin> = ReadonlyArray<AnyPlugin>> {\n\treadonly _tag: 'Stack';\n\treadonly options: DevstackOptions;\n\t/** Phantom — preserves the union of provided ids for downstream\n\t * introspection. Covariant per the phantom-variance rule. */\n\treadonly _providedIds?: () => {\n\t\t[K in keyof Members]: Members[K]['id'];\n\t}[number];\n}\n\nexport interface StackEngine<Members extends ReadonlyArray<AnyPlugin> = ReadonlyArray<AnyPlugin>> {\n\treadonly _tag: 'Stack';\n\treadonly members: Members;\n\treadonly options: DevstackOptions;\n}\n\nexport const readStackEngine = <Members extends ReadonlyArray<AnyPlugin>>(\n\tstack: Stack<Members>,\n): StackEngine<Members> => {\n\tconst engine = (stack as unknown as Readonly<Record<symbol, StackEngine<Members> | undefined>>)[\n\t\tSTACK_ENGINE\n\t];\n\tif (engine === undefined) {\n\t\tthrow new Error('Invalid devstack Stack handle: missing internal engine stack');\n\t}\n\treturn engine;\n};\n\n// --- Diagnostic gating --------------------------------------------------\n//\n// If `MissingProviders` is non-empty, the call signature surfaces a\n// branded structured error so the IDE diagnostic names the missing\n// piece.\n\n/** Validation gate. Resolves to `unknown` when every check passes\n * (assignable to any `Args`); to a branded structured error\n * otherwise (not assignable, surfacing the field name in the IDE).\n * UNCONSTRAINED Members — every helper sidesteps constraint widening\n * via an internal `Members extends ReadonlyArray<unknown> ? ... : never`\n * shape.\n *\n * IMPORTANT: validation runs against the recursively expanded member\n * tuple (`ComposedMembers<Members>`). Bare resource dependencies must\n * have an explicit provider in the stack; plugin-valued dependencies\n * are pulled in by the closure first. */\nexport type ValidateArgs<Members> =\n\tMembers extends ReadonlyArray<AnyPlugin>\n\t\t? ComposedMembers<Members> extends infer M\n\t\t\t? M extends ReadonlyArray<unknown>\n\t\t\t\t? [MissingProviders<M>] extends [never]\n\t\t\t\t\t? unknown\n\t\t\t\t\t: __MissingProvidersError<MissingProviders<M>>\n\t\t\t\t: never\n\t\t\t: never\n\t\t: never;\n\n// --- Public surface -----------------------------------------------------\n\n/**\n * Object-form devstack composer.\n *\n * Compile-time checks performed:\n * - missing-provider: every dependency id has a matching plugin id\n * somewhere in the plugin set.\n *\n * Validation surfaces at the PARAMETER (not the return type) — the\n * generic `Args` is constrained against a branded error type whose\n * field name names the missing piece (type-prototype finding #6,\n * architecture open question #11). Failed validation makes the\n * config type un-assignable, surfacing as the standard\n * \"not assignable to parameter of type\" diagnostic with the branded\n * error field visible in the IDE.\n */\nexport function defineDevstack<const Members extends ReadonlyArray<AnyPlugin>>(\n\tconfig: DevstackConfig<Members> & ValidateArgs<Members>,\n): Stack<ComposedMembers<Members>> {\n\tconst roots = expandPluginDependencies(config.members);\n\tconst expanded = runPluginExpanders(roots);\n\tconst members = expanded === roots ? roots : expandPluginDependencies(expanded);\n\tconst { members: _members, ...options } = config;\n\tvoid _members;\n\n\tconst engine: StackEngine<ReadonlyArray<AnyPlugin>> = {\n\t\t_tag: 'Stack',\n\t\tmembers,\n\t\toptions,\n\t};\n\tconst stack: Stack<ReadonlyArray<AnyPlugin>> = {\n\t\t_tag: 'Stack',\n\t\toptions,\n\t};\n\tObject.defineProperty(stack, STACK_ENGINE, {\n\t\tvalue: engine,\n\t\tenumerable: false,\n\t\tconfigurable: false,\n\t\twritable: false,\n\t});\n\n\treturn stack as unknown as Stack<ComposedMembers<Members>>;\n}\n\nexport const expandPluginDependencies = (\n\tmembers: ReadonlyArray<AnyPlugin>,\n): ReadonlyArray<AnyPlugin> => {\n\tconst expanded: AnyPlugin[] = [];\n\tconst seen = new Map<string, AnyPlugin>();\n\tconst accountNameByCaseFold = new Map<string, string>();\n\tconst visiting = new Set<string>();\n\n\tconst visit = (member: AnyPlugin) => {\n\t\tconst id = member.id;\n\t\tconst previous = seen.get(id);\n\t\tif (previous === member) {\n\t\t\treturn;\n\t\t}\n\t\tif (previous !== undefined) {\n\t\t\tif (isPluginExpanderPair(previous, member)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthrow new Error(`Duplicate devstack provider for ${id}`);\n\t\t}\n\t\tconst accountName = accountNameFromResourceId(id);\n\t\tif (accountName !== null) {\n\t\t\tconst caseFoldedName = accountName.toLowerCase();\n\t\t\tconst previousAccountName = accountNameByCaseFold.get(caseFoldedName);\n\t\t\tif (previousAccountName !== undefined && previousAccountName !== accountName) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Duplicate devstack account name '${accountName}' differs only by casing from '${previousAccountName}'`,\n\t\t\t\t);\n\t\t\t}\n\t\t\taccountNameByCaseFold.set(caseFoldedName, accountName);\n\t\t}\n\t\tif (visiting.has(id)) {\n\t\t\tthrow new Error(`Circular devstack dependency through ${id}`);\n\t\t}\n\n\t\tvisiting.add(id);\n\t\tif (isPlugin(member)) {\n\t\t\tfor (const dependency of pluginDependencyRefs(member) as readonly AnyResourceRef[]) {\n\t\t\t\tif (isPlugin(dependency)) {\n\t\t\t\t\tvisit(dependency);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvisiting.delete(id);\n\t\tseen.set(id, member);\n\t\texpanded.push(member);\n\t};\n\n\tfor (const member of members) {\n\t\tvisit(member);\n\t}\n\n\treturn expanded;\n};\n\nconst accountNameFromResourceId = (id: string): string | null => {\n\tif (!id.startsWith(ACCOUNT_RESOURCE_PREFIX)) return null;\n\treturn id.slice(ACCOUNT_RESOURCE_PREFIX.length);\n};\n"],"mappings":";;;;AAiBA,MAAM,eAAe,OAAO,IAAI,0CAA0C;AA4B1E,MAAM,0BAA0B;AA6BhC,MAAa,mBACZ,UAC0B;CAC1B,MAAM,SAAU,MACf;CAED,IAAI,WAAW,KAAA,GACd,MAAM,IAAI,MAAM,8DAA8D;CAE/E,OAAO;AACR;;;;;;;;;;;;;;;;AA+CA,SAAgB,eACf,QACkC;CAClC,MAAM,QAAQ,yBAAyB,OAAO,OAAO;CACrD,MAAM,WAAW,mBAAmB,KAAK;CACzC,MAAM,UAAU,aAAa,QAAQ,QAAQ,yBAAyB,QAAQ;CAC9E,MAAM,EAAE,SAAS,UAAU,GAAG,YAAY;CAG1C,MAAM,SAAgD;EACrD,MAAM;EACN;EACA;CACD;CACA,MAAM,QAAyC;EAC9C,MAAM;EACN;CACD;CACA,OAAO,eAAe,OAAO,cAAc;EAC1C,OAAO;EACP,YAAY;EACZ,cAAc;EACd,UAAU;CACX,CAAC;CAED,OAAO;AACR;AAEA,MAAa,4BACZ,YAC8B;CAC9B,MAAM,WAAwB,CAAC;CAC/B,MAAM,uBAAO,IAAI,IAAuB;CACxC,MAAM,wCAAwB,IAAI,IAAoB;CACtD,MAAM,2BAAW,IAAI,IAAY;CAEjC,MAAM,SAAS,WAAsB;EACpC,MAAM,KAAK,OAAO;EAClB,MAAM,WAAW,KAAK,IAAI,EAAE;EAC5B,IAAI,aAAa,QAChB;EAED,IAAI,aAAa,KAAA,GAAW;GAC3B,IAAI,qBAAqB,UAAU,MAAM,GACxC;GAED,MAAM,IAAI,MAAM,mCAAmC,IAAI;EACxD;EACA,MAAM,cAAc,0BAA0B,EAAE;EAChD,IAAI,gBAAgB,MAAM;GACzB,MAAM,iBAAiB,YAAY,YAAY;GAC/C,MAAM,sBAAsB,sBAAsB,IAAI,cAAc;GACpE,IAAI,wBAAwB,KAAA,KAAa,wBAAwB,aAChE,MAAM,IAAI,MACT,oCAAoC,YAAY,iCAAiC,oBAAoB,EACtG;GAED,sBAAsB,IAAI,gBAAgB,WAAW;EACtD;EACA,IAAI,SAAS,IAAI,EAAE,GAClB,MAAM,IAAI,MAAM,wCAAwC,IAAI;EAG7D,SAAS,IAAI,EAAE;EACf,IAAI,SAAS,MAAM;QACb,MAAM,cAAc,qBAAqB,MAAM,GACnD,IAAI,SAAS,UAAU,GACtB,MAAM,UAAU;EAAA;EAInB,SAAS,OAAO,EAAE;EAClB,KAAK,IAAI,IAAI,MAAM;EACnB,SAAS,KAAK,MAAM;CACrB;CAEA,KAAK,MAAM,UAAU,SACpB,MAAM,MAAM;CAGb,OAAO;AACR;AAEA,MAAM,6BAA6B,OAA8B;CAChE,IAAI,CAAC,GAAG,WAAW,uBAAuB,GAAG,OAAO;CACpD,OAAO,GAAG,MAAM,CAA8B;AAC/C"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { RowSection } from "../substrate/projection.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { StaticCodegenSource } from "../contracts/codegenable.mjs";
|
|
3
|
+
import { AnyPlugin, AnyResourceRef, DependencyInput, DependencyList, NodeInputContribution, Plugin, PluginSpec, ResolvedDependencies, ResolvedDependencyList, ResolvedDependencyObject, ResourceIdOf, ResourceRef, ResourceValueOf, WatchDecl, defineId, definePlugin, resource } from "../substrate/plugin.mjs";
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
|
|
3
3
|
//#region src/api/inference-network.d.ts
|
|
4
|
-
/** Canonical default stack name (`'main'`).
|
|
5
|
-
*
|
|
6
|
-
* (
|
|
7
|
-
*
|
|
4
|
+
/** Canonical default stack name (`'main'`). The literal's single source
|
|
5
|
+
* of truth lives HERE: the discovery ladder
|
|
6
|
+
* (`build-integrations/runtime/resolve-discovery-env.ts`) imports
|
|
7
|
+
* `inferPackageNameFromCwd` from this module for its package-name
|
|
8
|
+
* rung, so this module must not import the ladder's consts back — a
|
|
9
|
+
* two-way top-level-const read would TDZ-crash under one import
|
|
10
|
+
* order. The ladder re-exports this value as `DEFAULT_DISCOVERY_STACK`
|
|
11
|
+
* (and the vitest env module as its own `DEFAULT_STACK_NAME`) so all
|
|
12
|
+
* entry points still agree on one literal. */
|
|
8
13
|
declare const DEFAULT_STACK_NAME = "main";
|
|
9
14
|
interface StackNameResolutionOptions {
|
|
10
15
|
readonly explicit?: string;
|
|
@@ -25,6 +30,13 @@ declare const DEVSTACK_NETWORK_NAMES: readonly ["localnet", "testnet", "mainnet"
|
|
|
25
30
|
type ForkDevstackNetworkName = (typeof FORK_DEVSTACK_NETWORK_NAMES)[number];
|
|
26
31
|
type DevstackNetworkName = (typeof DEVSTACK_NETWORK_NAMES)[number];
|
|
27
32
|
type LiveDevstackNetworkName = 'testnet' | 'mainnet' | 'devnet';
|
|
33
|
+
/** The network every local stack actually runs, and the active key in the
|
|
34
|
+
* generated `config.ts` (`config.network`, `networks.<key>`, each package's
|
|
35
|
+
* `byNetwork.<key>`). A fork runs on a local node too, so this is `localnet`
|
|
36
|
+
* for every mode — the fork's upstream identity lives separately in the
|
|
37
|
+
* network entry's `forkUpstream`. The sui and package codegen contributions
|
|
38
|
+
* share this one literal so their active-network keys can never drift. */
|
|
39
|
+
declare const LOCAL_NETWORK_NAME = "localnet";
|
|
28
40
|
type ParsedDevstackNetwork = {
|
|
29
41
|
readonly mode: 'local';
|
|
30
42
|
readonly name: 'localnet';
|
|
@@ -37,6 +49,12 @@ type ParsedDevstackNetwork = {
|
|
|
37
49
|
readonly name: ForkDevstackNetworkName;
|
|
38
50
|
readonly upstream: LiveDevstackNetworkName;
|
|
39
51
|
};
|
|
52
|
+
/** The sole network→chain mapping: prefix the canonical name with `sui:`.
|
|
53
|
+
* `localnet` → `sui:localnet`, `testnet` → `sui:testnet`. No lookup table. */
|
|
54
|
+
declare const chainIdForNetwork: (name: DevstackNetworkName) => string;
|
|
55
|
+
/** Inverse of {@link chainIdForNetwork}: strip the `sui:` prefix to recover the
|
|
56
|
+
* network name. Returns the input unchanged if it carries no prefix. */
|
|
57
|
+
declare const networkNameFromChain: (chain: string) => string;
|
|
40
58
|
declare class DevstackNetworkParseError extends Error {
|
|
41
59
|
readonly _tag = "DevstackNetworkParseError";
|
|
42
60
|
readonly value: string;
|
|
@@ -65,21 +83,17 @@ interface ResolveNetworkOptions {
|
|
|
65
83
|
readonly explicitSource?: string;
|
|
66
84
|
readonly envSource?: string;
|
|
67
85
|
}
|
|
68
|
-
/** Default
|
|
69
|
-
*
|
|
70
|
-
* it through `parseDevstackNetwork` first
|
|
71
|
-
|
|
72
|
-
* truth shapes for "what is the default network?". */
|
|
73
|
-
declare const DEFAULT_DEVSTACK_NETWORK: "sui:local";
|
|
86
|
+
/** Default network when neither caller nor env provides one — the canonical
|
|
87
|
+
* name (not a chain id or a `ParsedDevstackNetwork`), because every call site
|
|
88
|
+
* folds it through `parseDevstackNetwork` first, exactly like an env value. */
|
|
89
|
+
declare const DEFAULT_DEVSTACK_NETWORK: "localnet";
|
|
74
90
|
/**
|
|
75
|
-
* Result shape —
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
* the
|
|
79
|
-
* branch on mode (local/live/fork) read `parsed`.
|
|
91
|
+
* Result shape — the typed parse of the network the resolver picked.
|
|
92
|
+
* Consumers branch on `parsed.mode` (local/live/fork) or derive the chain id
|
|
93
|
+
* via `chainIdForNetwork(parsed.name)`; there is no second "raw spelling"
|
|
94
|
+
* field, because the chain id is canonical and never depends on input form.
|
|
80
95
|
*/
|
|
81
96
|
interface ResolvedDevstackNetwork {
|
|
82
|
-
readonly raw: string;
|
|
83
97
|
readonly parsed: ParsedDevstackNetwork;
|
|
84
98
|
}
|
|
85
99
|
/**
|
|
@@ -128,5 +142,5 @@ interface ResolveStateDirOptions {
|
|
|
128
142
|
*/
|
|
129
143
|
declare const resolveStateDir: (options: ResolveStateDirOptions) => string;
|
|
130
144
|
//#endregion
|
|
131
|
-
export { DEFAULT_DEVSTACK_NETWORK, DEFAULT_STACK_NAME, DEVSTACK_NETWORK_NAMES, DevstackNetworkName, DevstackNetworkParseError, ParsedDevstackNetwork, ResolveNetworkOptions, ResolveStateDirOptions, ResolvedDevstackNetwork, parseDevstackNetwork, parseDevstackNetworkName, resolveAppName, resolveNetwork, resolveNetworkSync, resolveStackName, resolveStateDir };
|
|
145
|
+
export { DEFAULT_DEVSTACK_NETWORK, DEFAULT_STACK_NAME, DEVSTACK_NETWORK_NAMES, DevstackNetworkName, DevstackNetworkParseError, LOCAL_NETWORK_NAME, ParsedDevstackNetwork, ResolveNetworkOptions, ResolveStateDirOptions, ResolvedDevstackNetwork, chainIdForNetwork, networkNameFromChain, parseDevstackNetwork, parseDevstackNetworkName, resolveAppName, resolveNetwork, resolveNetworkSync, resolveStackName, resolveStateDir };
|
|
132
146
|
//# sourceMappingURL=inference-network.d.mts.map
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import { DEFAULT_DISCOVERY_STACK } from "../build-integrations/runtime/resolve-discovery-env.mjs";
|
|
2
1
|
import { Effect } from "effect";
|
|
3
2
|
import { readFileSync } from "node:fs";
|
|
4
3
|
import { dirname, resolve } from "node:path";
|
|
5
4
|
//#region src/api/inference-network.ts
|
|
6
|
-
/** Canonical default stack name (`'main'`).
|
|
7
|
-
*
|
|
8
|
-
* (
|
|
9
|
-
*
|
|
10
|
-
|
|
5
|
+
/** Canonical default stack name (`'main'`). The literal's single source
|
|
6
|
+
* of truth lives HERE: the discovery ladder
|
|
7
|
+
* (`build-integrations/runtime/resolve-discovery-env.ts`) imports
|
|
8
|
+
* `inferPackageNameFromCwd` from this module for its package-name
|
|
9
|
+
* rung, so this module must not import the ladder's consts back — a
|
|
10
|
+
* two-way top-level-const read would TDZ-crash under one import
|
|
11
|
+
* order. The ladder re-exports this value as `DEFAULT_DISCOVERY_STACK`
|
|
12
|
+
* (and the vitest env module as its own `DEFAULT_STACK_NAME`) so all
|
|
13
|
+
* entry points still agree on one literal. */
|
|
14
|
+
const DEFAULT_STACK_NAME = "main";
|
|
11
15
|
/** Normalize a candidate name: trim, strip an `@scope/` prefix, then
|
|
12
16
|
* strip any leading non-alphanumeric run. Returns `undefined` for empty
|
|
13
17
|
* or whitespace-only input, and for inputs that normalize to an empty
|
|
@@ -56,7 +60,7 @@ const resolveStackName = (options = {}) => resolveInferredName({
|
|
|
56
60
|
envKey: "DEVSTACK_STACK",
|
|
57
61
|
env: options.env,
|
|
58
62
|
cwd: options.cwd,
|
|
59
|
-
defaultName: options.defaultName ??
|
|
63
|
+
defaultName: options.defaultName ?? "main"
|
|
60
64
|
});
|
|
61
65
|
const resolveAppName = (options = {}) => resolveInferredName({
|
|
62
66
|
explicit: options.explicit,
|
|
@@ -77,24 +81,24 @@ const FORK_DEVSTACK_NETWORK_NAMES = [
|
|
|
77
81
|
"devnet-fork"
|
|
78
82
|
];
|
|
79
83
|
const DEVSTACK_NETWORK_NAMES = [...ACTIVE_DEVSTACK_NETWORK_NAMES, ...FORK_DEVSTACK_NETWORK_NAMES];
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
84
|
+
/** The network every local stack actually runs, and the active key in the
|
|
85
|
+
* generated `config.ts` (`config.network`, `networks.<key>`, each package's
|
|
86
|
+
* `byNetwork.<key>`). A fork runs on a local node too, so this is `localnet`
|
|
87
|
+
* for every mode — the fork's upstream identity lives separately in the
|
|
88
|
+
* network entry's `forkUpstream`. The sui and package codegen contributions
|
|
89
|
+
* share this one literal so their active-network keys can never drift. */
|
|
90
|
+
const LOCAL_NETWORK_NAME = "localnet";
|
|
91
|
+
/** Canonical network names accepted as input. There is no alias table:
|
|
92
|
+
* a network has ONE spelling (`localnet`, `testnet`, …). The chain id is
|
|
93
|
+
* that name with a `sui:` prefix (see {@link chainIdForNetwork}); the reverse
|
|
94
|
+
* is stripping the prefix (see {@link networkNameFromChain}). */
|
|
95
|
+
const NETWORK_NAME_SET = new Set(DEVSTACK_NETWORK_NAMES);
|
|
96
|
+
/** The sole network→chain mapping: prefix the canonical name with `sui:`.
|
|
97
|
+
* `localnet` → `sui:localnet`, `testnet` → `sui:testnet`. No lookup table. */
|
|
98
|
+
const chainIdForNetwork = (name) => `sui:${name}`;
|
|
99
|
+
/** Inverse of {@link chainIdForNetwork}: strip the `sui:` prefix to recover the
|
|
100
|
+
* network name. Returns the input unchanged if it carries no prefix. */
|
|
101
|
+
const networkNameFromChain = (chain) => chain.replace(/^sui:/, "");
|
|
98
102
|
var DevstackNetworkParseError = class extends Error {
|
|
99
103
|
_tag = "DevstackNetworkParseError";
|
|
100
104
|
value;
|
|
@@ -110,11 +114,12 @@ var DevstackNetworkParseError = class extends Error {
|
|
|
110
114
|
};
|
|
111
115
|
const parseDevstackNetwork = (value, source = "DEVSTACK_NETWORK") => {
|
|
112
116
|
const raw = value?.trim();
|
|
113
|
-
const
|
|
114
|
-
if (
|
|
117
|
+
const candidate = raw === void 0 || raw.length === 0 ? "localnet" : raw;
|
|
118
|
+
if (!NETWORK_NAME_SET.has(candidate)) throw new DevstackNetworkParseError({
|
|
115
119
|
value: raw ?? "",
|
|
116
120
|
source
|
|
117
121
|
});
|
|
122
|
+
const name = candidate;
|
|
118
123
|
switch (name) {
|
|
119
124
|
case "localnet": return {
|
|
120
125
|
mode: "local",
|
|
@@ -137,12 +142,10 @@ const parseDevstackNetwork = (value, source = "DEVSTACK_NETWORK") => {
|
|
|
137
142
|
}
|
|
138
143
|
};
|
|
139
144
|
const parseDevstackNetworkName = (value, source = "DEVSTACK_NETWORK") => parseDevstackNetwork(value, source).name;
|
|
140
|
-
/** Default
|
|
141
|
-
*
|
|
142
|
-
* it through `parseDevstackNetwork` first
|
|
143
|
-
|
|
144
|
-
* truth shapes for "what is the default network?". */
|
|
145
|
-
const DEFAULT_DEVSTACK_NETWORK = "sui:local";
|
|
145
|
+
/** Default network when neither caller nor env provides one — the canonical
|
|
146
|
+
* name (not a chain id or a `ParsedDevstackNetwork`), because every call site
|
|
147
|
+
* folds it through `parseDevstackNetwork` first, exactly like an env value. */
|
|
148
|
+
const DEFAULT_DEVSTACK_NETWORK = "localnet";
|
|
146
149
|
const pickInput = (options) => {
|
|
147
150
|
if (options.explicit !== void 0 && options.explicit.length > 0) return {
|
|
148
151
|
value: options.explicit,
|
|
@@ -153,7 +156,7 @@ const pickInput = (options) => {
|
|
|
153
156
|
source: options.envSource ?? "DEVSTACK_NETWORK"
|
|
154
157
|
};
|
|
155
158
|
return {
|
|
156
|
-
value: options.defaultName ?? "
|
|
159
|
+
value: options.defaultName ?? "localnet",
|
|
157
160
|
source: "default"
|
|
158
161
|
};
|
|
159
162
|
};
|
|
@@ -172,10 +175,7 @@ const pickInput = (options) => {
|
|
|
172
175
|
const resolveNetwork = (options = {}) => Effect.try({
|
|
173
176
|
try: () => {
|
|
174
177
|
const { value, source } = pickInput(options);
|
|
175
|
-
return {
|
|
176
|
-
raw: value,
|
|
177
|
-
parsed: parseDevstackNetwork(value, source)
|
|
178
|
-
};
|
|
178
|
+
return { parsed: parseDevstackNetwork(value, source) };
|
|
179
179
|
},
|
|
180
180
|
catch: (cause) => cause
|
|
181
181
|
});
|
|
@@ -187,10 +187,7 @@ const resolveNetwork = (options = {}) => Effect.try({
|
|
|
187
187
|
*/
|
|
188
188
|
const resolveNetworkSync = (options = {}) => {
|
|
189
189
|
const { value, source } = pickInput(options);
|
|
190
|
-
return {
|
|
191
|
-
raw: value,
|
|
192
|
-
parsed: parseDevstackNetwork(value, source)
|
|
193
|
-
};
|
|
190
|
+
return { parsed: parseDevstackNetwork(value, source) };
|
|
194
191
|
};
|
|
195
192
|
/**
|
|
196
193
|
* Resolve the substrate's on-disk runtime root using the canonical
|
|
@@ -206,6 +203,6 @@ const resolveStateDir = (options) => {
|
|
|
206
203
|
return resolve(options.cwd, pick);
|
|
207
204
|
};
|
|
208
205
|
//#endregion
|
|
209
|
-
export { DEFAULT_DEVSTACK_NETWORK, DEFAULT_STACK_NAME, DEVSTACK_NETWORK_NAMES, DevstackNetworkParseError, inferPackageNameFromCwd, parseDevstackNetwork, parseDevstackNetworkName, readPackageName, resolveAppName, resolveNetwork, resolveNetworkSync, resolveStackName, resolveStateDir };
|
|
206
|
+
export { DEFAULT_DEVSTACK_NETWORK, DEFAULT_STACK_NAME, DEVSTACK_NETWORK_NAMES, DevstackNetworkParseError, LOCAL_NETWORK_NAME, chainIdForNetwork, inferPackageNameFromCwd, networkNameFromChain, parseDevstackNetwork, parseDevstackNetworkName, readPackageName, resolveAppName, resolveNetwork, resolveNetworkSync, resolveStackName, resolveStateDir };
|
|
210
207
|
|
|
211
208
|
//# sourceMappingURL=inference-network.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inference-network.mjs","names":[],"sources":["../../src/api/inference-network.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\n\nimport { Effect } from 'effect';\n\nimport { DEFAULT_DISCOVERY_STACK } from '../build-integrations/runtime/resolve-discovery-env.ts';\n\n/** Canonical default stack name (`'main'`). Single source of truth lives\n * in the discovery ladder's `DEFAULT_DISCOVERY_STACK`; re-exported here\n * (and from the vitest env module) so all entry points agree on one\n * literal. */\nexport const DEFAULT_STACK_NAME = DEFAULT_DISCOVERY_STACK;\n\nexport interface StackNameResolutionOptions {\n\treadonly explicit?: string;\n\treadonly env?: Readonly<Record<string, string | undefined>>;\n\treadonly cwd?: string;\n\treadonly defaultName?: string;\n}\n\nexport interface AppNameResolutionOptions {\n\treadonly explicit?: string;\n\treadonly env?: Readonly<Record<string, string | undefined>>;\n\treadonly cwd?: string;\n\treadonly defaultName?: string;\n}\n\n/** Normalize a candidate name: trim, strip an `@scope/` prefix, then\n * strip any leading non-alphanumeric run. Returns `undefined` for empty\n * or whitespace-only input, and for inputs that normalize to an empty\n * string. Shared by every inferred-name resolver so explicit / env /\n * package paths all reject the same junk. */\nconst usefulName = (value: string | undefined): string | undefined => {\n\tconst trimmed = value?.trim();\n\tif (trimmed === undefined || trimmed.length === 0) return undefined;\n\tconst unscoped = trimmed.replace(/^@[^/]+\\//, '').replace(/^[^a-zA-Z0-9]+/, '');\n\treturn unscoped.length > 0 ? unscoped : undefined;\n};\n\nexport const readPackageName = (dir: string): string | undefined => {\n\ttry {\n\t\tconst pkg = JSON.parse(readFileSync(resolve(dir, 'package.json'), 'utf8')) as {\n\t\t\treadonly name?: string;\n\t\t};\n\t\treturn typeof pkg.name === 'string' ? usefulName(pkg.name) : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nexport const inferPackageNameFromCwd = (cwd: string = process.cwd()): string | undefined => {\n\tlet dir = resolve(cwd);\n\tfor (let i = 0; i < 32; i += 1) {\n\t\tconst name = readPackageName(dir);\n\t\tif (name !== undefined) return name;\n\t\tconst parent = dirname(dir);\n\t\tif (parent === dir) return undefined;\n\t\tdir = parent;\n\t}\n\treturn undefined;\n};\n\n/** Shared `explicit > env > package > default` precedence ladder for the\n * app/stack name resolvers. Each input is fed through `usefulName` so a\n * whitespace-only or junk-prefixed value falls through to the next rung\n * rather than poisoning identity. `envKey` is the environment variable\n * whose value (under `env`) supplies the env rung. */\nconst resolveInferredName = (params: {\n\treadonly explicit: string | undefined;\n\treadonly envKey: string;\n\treadonly env: Readonly<Record<string, string | undefined>> | undefined;\n\treadonly cwd: string | undefined;\n\treadonly defaultName: string;\n}): string => {\n\tconst explicit = usefulName(params.explicit);\n\tif (explicit !== undefined) return explicit;\n\tconst env = params.env ?? process.env;\n\tconst fromEnv = usefulName(env[params.envKey]);\n\tif (fromEnv !== undefined) return fromEnv;\n\tconst fromPackage = inferPackageNameFromCwd(params.cwd);\n\tif (fromPackage !== undefined) return fromPackage;\n\treturn params.defaultName;\n};\n\nexport const resolveStackName = (options: StackNameResolutionOptions = {}): string =>\n\tresolveInferredName({\n\t\texplicit: options.explicit,\n\t\tenvKey: 'DEVSTACK_STACK',\n\t\tenv: options.env,\n\t\tcwd: options.cwd,\n\t\tdefaultName: options.defaultName ?? DEFAULT_STACK_NAME,\n\t});\n\nexport const resolveAppName = (options: AppNameResolutionOptions = {}): string =>\n\tresolveInferredName({\n\t\texplicit: options.explicit,\n\t\tenvKey: 'DEVSTACK_APP',\n\t\tenv: options.env,\n\t\tcwd: options.cwd,\n\t\tdefaultName: options.defaultName ?? 'devstack',\n\t});\n\nexport const ACTIVE_DEVSTACK_NETWORK_NAMES = ['localnet', 'testnet', 'mainnet', 'devnet'] as const;\n\nexport const FORK_DEVSTACK_NETWORK_NAMES = ['testnet-fork', 'mainnet-fork', 'devnet-fork'] as const;\n\nexport const DEVSTACK_NETWORK_NAMES = [\n\t...ACTIVE_DEVSTACK_NETWORK_NAMES,\n\t...FORK_DEVSTACK_NETWORK_NAMES,\n] as const;\n\nexport type ActiveDevstackNetworkName = (typeof ACTIVE_DEVSTACK_NETWORK_NAMES)[number];\nexport type ForkDevstackNetworkName = (typeof FORK_DEVSTACK_NETWORK_NAMES)[number];\nexport type DevstackNetworkName = (typeof DEVSTACK_NETWORK_NAMES)[number];\nexport type LiveDevstackNetworkName = 'testnet' | 'mainnet' | 'devnet';\n\nexport type ParsedDevstackNetwork =\n\t| {\n\t\t\treadonly mode: 'local';\n\t\t\treadonly name: 'localnet';\n\t }\n\t| {\n\t\t\treadonly mode: 'live';\n\t\t\treadonly name: LiveDevstackNetworkName;\n\t\t\treadonly network: LiveDevstackNetworkName;\n\t }\n\t| {\n\t\t\treadonly mode: 'fork';\n\t\t\treadonly name: ForkDevstackNetworkName;\n\t\t\treadonly upstream: LiveDevstackNetworkName;\n\t };\n\nconst NETWORK_ALIASES: Readonly<Record<string, DevstackNetworkName>> = {\n\tlocal: 'localnet',\n\tlocalnet: 'localnet',\n\t'sui:local': 'localnet',\n\t'sui:localnet': 'localnet',\n\ttestnet: 'testnet',\n\t'sui:testnet': 'testnet',\n\tmainnet: 'mainnet',\n\t'sui:mainnet': 'mainnet',\n\tdevnet: 'devnet',\n\t'sui:devnet': 'devnet',\n\t'testnet-fork': 'testnet-fork',\n\t'sui:testnet-fork': 'testnet-fork',\n\t'mainnet-fork': 'mainnet-fork',\n\t'sui:mainnet-fork': 'mainnet-fork',\n\t'devnet-fork': 'devnet-fork',\n\t'sui:devnet-fork': 'devnet-fork',\n};\n\nexport class DevstackNetworkParseError extends Error {\n\treadonly _tag = 'DevstackNetworkParseError';\n\treadonly value: string;\n\treadonly source: string;\n\treadonly supported: ReadonlyArray<DevstackNetworkName>;\n\n\tconstructor(args: { readonly value: string; readonly source: string }) {\n\t\tsuper(\n\t\t\t`${args.source} must be one of: ${DEVSTACK_NETWORK_NAMES.join(', ')} (got ${JSON.stringify(args.value)})`,\n\t\t);\n\t\tthis.name = 'DevstackNetworkParseError';\n\t\tthis.value = args.value;\n\t\tthis.source = args.source;\n\t\tthis.supported = DEVSTACK_NETWORK_NAMES;\n\t}\n}\n\nexport const parseDevstackNetwork = (\n\tvalue: string | undefined,\n\tsource = 'DEVSTACK_NETWORK',\n): ParsedDevstackNetwork => {\n\tconst raw = value?.trim();\n\tconst name = raw === undefined || raw.length === 0 ? 'localnet' : NETWORK_ALIASES[raw];\n\tif (name === undefined) {\n\t\tthrow new DevstackNetworkParseError({ value: raw ?? '', source });\n\t}\n\tswitch (name) {\n\t\tcase 'localnet':\n\t\t\treturn { mode: 'local', name };\n\t\tcase 'testnet':\n\t\tcase 'mainnet':\n\t\tcase 'devnet':\n\t\t\treturn { mode: 'live', name, network: name };\n\t\tcase 'testnet-fork':\n\t\tcase 'mainnet-fork':\n\t\tcase 'devnet-fork':\n\t\t\treturn {\n\t\t\t\tmode: 'fork',\n\t\t\t\tname,\n\t\t\t\tupstream: name.replace(/-fork$/, '') as LiveDevstackNetworkName,\n\t\t\t};\n\t}\n};\n\nexport const parseDevstackNetworkName = (\n\tvalue: string | undefined,\n\tsource = 'DEVSTACK_NETWORK',\n): DevstackNetworkName => parseDevstackNetwork(value, source).name;\n\n// ---------------------------------------------------------------------------\n// resolveNetwork — single precedence ladder for every entry point.\n// ---------------------------------------------------------------------------\n\n/**\n * Options for `resolveNetwork`. `explicit` is the caller-supplied\n * override (typically a CLI flag or programmatic option). `env` is the\n * environment value (typically `process.env.DEVSTACK_NETWORK`).\n * `defaultName` is the final fallback when both miss. The precedence is\n * explicit > env > default. The `source` string is embedded in the\n * parse error's `source` field so the diagnosis names the offending\n * input (e.g. `--network` vs `DEVSTACK_NETWORK`).\n */\nexport interface ResolveNetworkOptions {\n\treadonly explicit?: string | undefined;\n\treadonly env?: string | undefined;\n\treadonly defaultName?: string;\n\treadonly explicitSource?: string;\n\treadonly envSource?: string;\n}\n\n/** Default value when neither caller nor env provides one. Kept as a\n * string (not a `ParsedDevstackNetwork`) because every call site folds\n * it through `parseDevstackNetwork` first — keeping the default in the\n * same lookup table the env value flows through avoids two source-of-\n * truth shapes for \"what is the default network?\". */\nexport const DEFAULT_DEVSTACK_NETWORK = 'sui:local' as const;\n\n/**\n * Result shape — both the typed parse AND the original input string the\n * resolver picked. Consumers that thread the value through chain-keyed\n * caches (the substrate folds chain id into cache namespaces) MUST keep\n * the raw form to preserve existing on-disk cache keys; consumers that\n * branch on mode (local/live/fork) read `parsed`.\n */\nexport interface ResolvedDevstackNetwork {\n\treadonly raw: string;\n\treadonly parsed: ParsedDevstackNetwork;\n}\n\nconst pickInput = (\n\toptions: ResolveNetworkOptions,\n): { readonly value: string; readonly source: string } => {\n\tif (options.explicit !== undefined && options.explicit.length > 0) {\n\t\treturn { value: options.explicit, source: options.explicitSource ?? '--network' };\n\t}\n\tif (options.env !== undefined && options.env.length > 0) {\n\t\treturn { value: options.env, source: options.envSource ?? 'DEVSTACK_NETWORK' };\n\t}\n\treturn { value: options.defaultName ?? DEFAULT_DEVSTACK_NETWORK, source: 'default' };\n};\n\n/**\n * Resolve a network from the canonical explicit > env > default ladder\n * and parse the winning value through `parseDevstackNetwork`. Returns\n * the typed parse alongside the raw input the resolver picked. A\n * malformed value surfaces as `DevstackNetworkParseError` on the\n * failure channel so CLI / library boot fail fast with a structured\n * error rather than a downstream cryptic message.\n *\n * Used by both `api/run-stack.ts` (library embedding) and the CLI\n * identity resolver so the two paths share one precedence rule + one\n * parse error type.\n */\nexport const resolveNetwork = (\n\toptions: ResolveNetworkOptions = {},\n): Effect.Effect<ResolvedDevstackNetwork, DevstackNetworkParseError> =>\n\tEffect.try({\n\t\ttry: (): ResolvedDevstackNetwork => {\n\t\t\tconst { value, source } = pickInput(options);\n\t\t\treturn { raw: value, parsed: parseDevstackNetwork(value, source) };\n\t\t},\n\t\tcatch: (cause) => cause as DevstackNetworkParseError,\n\t});\n\n/**\n * Sync sibling of `resolveNetwork` for entry points that aren't running\n * inside an Effect (the CLI identity resolver builds a plain TS record).\n * Throws `DevstackNetworkParseError` on bad input — caller's job to lift\n * into a typed failure channel if needed.\n */\nexport const resolveNetworkSync = (\n\toptions: ResolveNetworkOptions = {},\n): ResolvedDevstackNetwork => {\n\tconst { value, source } = pickInput(options);\n\treturn { raw: value, parsed: parseDevstackNetwork(value, source) };\n};\n\n// ---------------------------------------------------------------------------\n// resolveStateDir — single precedence ladder for the on-disk runtime root.\n// ---------------------------------------------------------------------------\n\nexport interface ResolveStateDirOptions {\n\t/** Caller-supplied `runtimeRoot` override (the canonical\n\t * `RunStackOptions.runtimeRoot` / CLI `--state-dir` field). Wins\n\t * over every other input. */\n\treadonly runtimeRoot?: string;\n\t/** Caller-supplied `stateDir` override (the\n\t * `DevstackOptions.stateDir` field on `defineDevstack(...)`).\n\t * Lower precedence than `runtimeRoot`. */\n\treadonly stateDir?: string;\n\t/** Env-var value (typically `process.env.DEVSTACK_STATE_DIR`).\n\t * Lower precedence than either explicit override. */\n\treadonly env?: string;\n\t/** Working directory used for the `.devstack` fallback and for\n\t * resolving any relative override path. */\n\treadonly cwd: string;\n}\n\n/**\n * Resolve the substrate's on-disk runtime root using the canonical\n * precedence ladder: `runtimeRoot` > `stateDir` > `env` > `<cwd>/.devstack`.\n * Relative paths are resolved against `cwd`; absolute paths pass through.\n *\n * Shared by `runStack`, the CLI bin, and the build-integrations\n * discover module so all three entry points agree on the same ladder.\n */\nexport const resolveStateDir = (options: ResolveStateDirOptions): string => {\n\tconst pick =\n\t\t(options.runtimeRoot !== undefined && options.runtimeRoot.length > 0\n\t\t\t? options.runtimeRoot\n\t\t\t: undefined) ??\n\t\t(options.stateDir !== undefined && options.stateDir.length > 0\n\t\t\t? options.stateDir\n\t\t\t: undefined) ??\n\t\t(options.env !== undefined && options.env.length > 0 ? options.env : undefined);\n\tif (pick === undefined) return resolve(options.cwd, '.devstack');\n\treturn resolve(options.cwd, pick);\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inference-network.mjs","names":[],"sources":["../../src/api/inference-network.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\n\nimport { Effect } from 'effect';\n\n/** Canonical default stack name (`'main'`). The literal's single source\n * of truth lives HERE: the discovery ladder\n * (`build-integrations/runtime/resolve-discovery-env.ts`) imports\n * `inferPackageNameFromCwd` from this module for its package-name\n * rung, so this module must not import the ladder's consts back — a\n * two-way top-level-const read would TDZ-crash under one import\n * order. The ladder re-exports this value as `DEFAULT_DISCOVERY_STACK`\n * (and the vitest env module as its own `DEFAULT_STACK_NAME`) so all\n * entry points still agree on one literal. */\nexport const DEFAULT_STACK_NAME = 'main';\n\nexport interface StackNameResolutionOptions {\n\treadonly explicit?: string;\n\treadonly env?: Readonly<Record<string, string | undefined>>;\n\treadonly cwd?: string;\n\treadonly defaultName?: string;\n}\n\nexport interface AppNameResolutionOptions {\n\treadonly explicit?: string;\n\treadonly env?: Readonly<Record<string, string | undefined>>;\n\treadonly cwd?: string;\n\treadonly defaultName?: string;\n}\n\n/** Normalize a candidate name: trim, strip an `@scope/` prefix, then\n * strip any leading non-alphanumeric run. Returns `undefined` for empty\n * or whitespace-only input, and for inputs that normalize to an empty\n * string. Shared by every inferred-name resolver so explicit / env /\n * package paths all reject the same junk. */\nconst usefulName = (value: string | undefined): string | undefined => {\n\tconst trimmed = value?.trim();\n\tif (trimmed === undefined || trimmed.length === 0) return undefined;\n\tconst unscoped = trimmed.replace(/^@[^/]+\\//, '').replace(/^[^a-zA-Z0-9]+/, '');\n\treturn unscoped.length > 0 ? unscoped : undefined;\n};\n\nexport const readPackageName = (dir: string): string | undefined => {\n\ttry {\n\t\tconst pkg = JSON.parse(readFileSync(resolve(dir, 'package.json'), 'utf8')) as {\n\t\t\treadonly name?: string;\n\t\t};\n\t\treturn typeof pkg.name === 'string' ? usefulName(pkg.name) : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nexport const inferPackageNameFromCwd = (cwd: string = process.cwd()): string | undefined => {\n\tlet dir = resolve(cwd);\n\tfor (let i = 0; i < 32; i += 1) {\n\t\tconst name = readPackageName(dir);\n\t\tif (name !== undefined) return name;\n\t\tconst parent = dirname(dir);\n\t\tif (parent === dir) return undefined;\n\t\tdir = parent;\n\t}\n\treturn undefined;\n};\n\n/** Shared `explicit > env > package > default` precedence ladder for the\n * app/stack name resolvers. Each input is fed through `usefulName` so a\n * whitespace-only or junk-prefixed value falls through to the next rung\n * rather than poisoning identity. `envKey` is the environment variable\n * whose value (under `env`) supplies the env rung. */\nconst resolveInferredName = (params: {\n\treadonly explicit: string | undefined;\n\treadonly envKey: string;\n\treadonly env: Readonly<Record<string, string | undefined>> | undefined;\n\treadonly cwd: string | undefined;\n\treadonly defaultName: string;\n}): string => {\n\tconst explicit = usefulName(params.explicit);\n\tif (explicit !== undefined) return explicit;\n\tconst env = params.env ?? process.env;\n\tconst fromEnv = usefulName(env[params.envKey]);\n\tif (fromEnv !== undefined) return fromEnv;\n\tconst fromPackage = inferPackageNameFromCwd(params.cwd);\n\tif (fromPackage !== undefined) return fromPackage;\n\treturn params.defaultName;\n};\n\nexport const resolveStackName = (options: StackNameResolutionOptions = {}): string =>\n\tresolveInferredName({\n\t\texplicit: options.explicit,\n\t\tenvKey: 'DEVSTACK_STACK',\n\t\tenv: options.env,\n\t\tcwd: options.cwd,\n\t\tdefaultName: options.defaultName ?? DEFAULT_STACK_NAME,\n\t});\n\nexport const resolveAppName = (options: AppNameResolutionOptions = {}): string =>\n\tresolveInferredName({\n\t\texplicit: options.explicit,\n\t\tenvKey: 'DEVSTACK_APP',\n\t\tenv: options.env,\n\t\tcwd: options.cwd,\n\t\tdefaultName: options.defaultName ?? 'devstack',\n\t});\n\nexport const ACTIVE_DEVSTACK_NETWORK_NAMES = ['localnet', 'testnet', 'mainnet', 'devnet'] as const;\n\nexport const FORK_DEVSTACK_NETWORK_NAMES = ['testnet-fork', 'mainnet-fork', 'devnet-fork'] as const;\n\nexport const DEVSTACK_NETWORK_NAMES = [\n\t...ACTIVE_DEVSTACK_NETWORK_NAMES,\n\t...FORK_DEVSTACK_NETWORK_NAMES,\n] as const;\n\nexport type ActiveDevstackNetworkName = (typeof ACTIVE_DEVSTACK_NETWORK_NAMES)[number];\nexport type ForkDevstackNetworkName = (typeof FORK_DEVSTACK_NETWORK_NAMES)[number];\nexport type DevstackNetworkName = (typeof DEVSTACK_NETWORK_NAMES)[number];\nexport type LiveDevstackNetworkName = 'testnet' | 'mainnet' | 'devnet';\n\n/** The network every local stack actually runs, and the active key in the\n * generated `config.ts` (`config.network`, `networks.<key>`, each package's\n * `byNetwork.<key>`). A fork runs on a local node too, so this is `localnet`\n * for every mode — the fork's upstream identity lives separately in the\n * network entry's `forkUpstream`. The sui and package codegen contributions\n * share this one literal so their active-network keys can never drift. */\nexport const LOCAL_NETWORK_NAME = 'localnet' satisfies DevstackNetworkName;\n\nexport type ParsedDevstackNetwork =\n\t| {\n\t\t\treadonly mode: 'local';\n\t\t\treadonly name: 'localnet';\n\t }\n\t| {\n\t\t\treadonly mode: 'live';\n\t\t\treadonly name: LiveDevstackNetworkName;\n\t\t\treadonly network: LiveDevstackNetworkName;\n\t }\n\t| {\n\t\t\treadonly mode: 'fork';\n\t\t\treadonly name: ForkDevstackNetworkName;\n\t\t\treadonly upstream: LiveDevstackNetworkName;\n\t };\n\n/** Canonical network names accepted as input. There is no alias table:\n * a network has ONE spelling (`localnet`, `testnet`, …). The chain id is\n * that name with a `sui:` prefix (see {@link chainIdForNetwork}); the reverse\n * is stripping the prefix (see {@link networkNameFromChain}). */\nconst NETWORK_NAME_SET: ReadonlySet<string> = new Set(DEVSTACK_NETWORK_NAMES);\n\n/** The sole network→chain mapping: prefix the canonical name with `sui:`.\n * `localnet` → `sui:localnet`, `testnet` → `sui:testnet`. No lookup table. */\nexport const chainIdForNetwork = (name: DevstackNetworkName): string => `sui:${name}`;\n\n/** Inverse of {@link chainIdForNetwork}: strip the `sui:` prefix to recover the\n * network name. Returns the input unchanged if it carries no prefix. */\nexport const networkNameFromChain = (chain: string): string => chain.replace(/^sui:/, '');\n\nexport class DevstackNetworkParseError extends Error {\n\treadonly _tag = 'DevstackNetworkParseError';\n\treadonly value: string;\n\treadonly source: string;\n\treadonly supported: ReadonlyArray<DevstackNetworkName>;\n\n\tconstructor(args: { readonly value: string; readonly source: string }) {\n\t\tsuper(\n\t\t\t`${args.source} must be one of: ${DEVSTACK_NETWORK_NAMES.join(', ')} (got ${JSON.stringify(args.value)})`,\n\t\t);\n\t\tthis.name = 'DevstackNetworkParseError';\n\t\tthis.value = args.value;\n\t\tthis.source = args.source;\n\t\tthis.supported = DEVSTACK_NETWORK_NAMES;\n\t}\n}\n\nexport const parseDevstackNetwork = (\n\tvalue: string | undefined,\n\tsource = 'DEVSTACK_NETWORK',\n): ParsedDevstackNetwork => {\n\tconst raw = value?.trim();\n\tconst candidate = raw === undefined || raw.length === 0 ? 'localnet' : raw;\n\tif (!NETWORK_NAME_SET.has(candidate)) {\n\t\tthrow new DevstackNetworkParseError({ value: raw ?? '', source });\n\t}\n\tconst name = candidate as DevstackNetworkName;\n\tswitch (name) {\n\t\tcase 'localnet':\n\t\t\treturn { mode: 'local', name };\n\t\tcase 'testnet':\n\t\tcase 'mainnet':\n\t\tcase 'devnet':\n\t\t\treturn { mode: 'live', name, network: name };\n\t\tcase 'testnet-fork':\n\t\tcase 'mainnet-fork':\n\t\tcase 'devnet-fork':\n\t\t\treturn {\n\t\t\t\tmode: 'fork',\n\t\t\t\tname,\n\t\t\t\tupstream: name.replace(/-fork$/, '') as LiveDevstackNetworkName,\n\t\t\t};\n\t}\n};\n\nexport const parseDevstackNetworkName = (\n\tvalue: string | undefined,\n\tsource = 'DEVSTACK_NETWORK',\n): DevstackNetworkName => parseDevstackNetwork(value, source).name;\n\n// ---------------------------------------------------------------------------\n// resolveNetwork — single precedence ladder for every entry point.\n// ---------------------------------------------------------------------------\n\n/**\n * Options for `resolveNetwork`. `explicit` is the caller-supplied\n * override (typically a CLI flag or programmatic option). `env` is the\n * environment value (typically `process.env.DEVSTACK_NETWORK`).\n * `defaultName` is the final fallback when both miss. The precedence is\n * explicit > env > default. The `source` string is embedded in the\n * parse error's `source` field so the diagnosis names the offending\n * input (e.g. `--network` vs `DEVSTACK_NETWORK`).\n */\nexport interface ResolveNetworkOptions {\n\treadonly explicit?: string | undefined;\n\treadonly env?: string | undefined;\n\treadonly defaultName?: string;\n\treadonly explicitSource?: string;\n\treadonly envSource?: string;\n}\n\n/** Default network when neither caller nor env provides one — the canonical\n * name (not a chain id or a `ParsedDevstackNetwork`), because every call site\n * folds it through `parseDevstackNetwork` first, exactly like an env value. */\nexport const DEFAULT_DEVSTACK_NETWORK = 'localnet' as const;\n\n/**\n * Result shape — the typed parse of the network the resolver picked.\n * Consumers branch on `parsed.mode` (local/live/fork) or derive the chain id\n * via `chainIdForNetwork(parsed.name)`; there is no second \"raw spelling\"\n * field, because the chain id is canonical and never depends on input form.\n */\nexport interface ResolvedDevstackNetwork {\n\treadonly parsed: ParsedDevstackNetwork;\n}\n\nconst pickInput = (\n\toptions: ResolveNetworkOptions,\n): { readonly value: string; readonly source: string } => {\n\tif (options.explicit !== undefined && options.explicit.length > 0) {\n\t\treturn { value: options.explicit, source: options.explicitSource ?? '--network' };\n\t}\n\tif (options.env !== undefined && options.env.length > 0) {\n\t\treturn { value: options.env, source: options.envSource ?? 'DEVSTACK_NETWORK' };\n\t}\n\treturn { value: options.defaultName ?? DEFAULT_DEVSTACK_NETWORK, source: 'default' };\n};\n\n/**\n * Resolve a network from the canonical explicit > env > default ladder\n * and parse the winning value through `parseDevstackNetwork`. Returns\n * the typed parse alongside the raw input the resolver picked. A\n * malformed value surfaces as `DevstackNetworkParseError` on the\n * failure channel so CLI / library boot fail fast with a structured\n * error rather than a downstream cryptic message.\n *\n * Used by both `api/run-stack.ts` (library embedding) and the CLI\n * identity resolver so the two paths share one precedence rule + one\n * parse error type.\n */\nexport const resolveNetwork = (\n\toptions: ResolveNetworkOptions = {},\n): Effect.Effect<ResolvedDevstackNetwork, DevstackNetworkParseError> =>\n\tEffect.try({\n\t\ttry: (): ResolvedDevstackNetwork => {\n\t\t\tconst { value, source } = pickInput(options);\n\t\t\treturn { parsed: parseDevstackNetwork(value, source) };\n\t\t},\n\t\tcatch: (cause) => cause as DevstackNetworkParseError,\n\t});\n\n/**\n * Sync sibling of `resolveNetwork` for entry points that aren't running\n * inside an Effect (the CLI identity resolver builds a plain TS record).\n * Throws `DevstackNetworkParseError` on bad input — caller's job to lift\n * into a typed failure channel if needed.\n */\nexport const resolveNetworkSync = (\n\toptions: ResolveNetworkOptions = {},\n): ResolvedDevstackNetwork => {\n\tconst { value, source } = pickInput(options);\n\treturn { parsed: parseDevstackNetwork(value, source) };\n};\n\n// ---------------------------------------------------------------------------\n// resolveStateDir — single precedence ladder for the on-disk runtime root.\n// ---------------------------------------------------------------------------\n\nexport interface ResolveStateDirOptions {\n\t/** Caller-supplied `runtimeRoot` override (the canonical\n\t * `RunStackOptions.runtimeRoot` / CLI `--state-dir` field). Wins\n\t * over every other input. */\n\treadonly runtimeRoot?: string;\n\t/** Caller-supplied `stateDir` override (the\n\t * `DevstackOptions.stateDir` field on `defineDevstack(...)`).\n\t * Lower precedence than `runtimeRoot`. */\n\treadonly stateDir?: string;\n\t/** Env-var value (typically `process.env.DEVSTACK_STATE_DIR`).\n\t * Lower precedence than either explicit override. */\n\treadonly env?: string;\n\t/** Working directory used for the `.devstack` fallback and for\n\t * resolving any relative override path. */\n\treadonly cwd: string;\n}\n\n/**\n * Resolve the substrate's on-disk runtime root using the canonical\n * precedence ladder: `runtimeRoot` > `stateDir` > `env` > `<cwd>/.devstack`.\n * Relative paths are resolved against `cwd`; absolute paths pass through.\n *\n * Shared by `runStack`, the CLI bin, and the build-integrations\n * discover module so all three entry points agree on the same ladder.\n */\nexport const resolveStateDir = (options: ResolveStateDirOptions): string => {\n\tconst pick =\n\t\t(options.runtimeRoot !== undefined && options.runtimeRoot.length > 0\n\t\t\t? options.runtimeRoot\n\t\t\t: undefined) ??\n\t\t(options.stateDir !== undefined && options.stateDir.length > 0\n\t\t\t? options.stateDir\n\t\t\t: undefined) ??\n\t\t(options.env !== undefined && options.env.length > 0 ? options.env : undefined);\n\tif (pick === undefined) return resolve(options.cwd, '.devstack');\n\treturn resolve(options.cwd, pick);\n};\n"],"mappings":"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"}
|