@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
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { ensureManagedContainer, sanitizeAlias } from "../../../substrate/runtime/managed-container.mjs";
|
|
2
|
+
import { credentialedUrl, plainUrl, withDatabase } from "./connection.mjs";
|
|
3
|
+
import { postgresConfigError, postgresPluginError } from "./errors.mjs";
|
|
4
|
+
import { awaitReady, ensureDatabases } from "./db-ensure.mjs";
|
|
5
|
+
import { Effect } from "effect";
|
|
6
|
+
import { createHash } from "node:crypto";
|
|
7
|
+
import { fileURLToPath } from "node:url";
|
|
8
|
+
//#region src/plugins/internal/postgres-sidecar/service.ts
|
|
9
|
+
const DEFAULT_VERSION = "17-alpine";
|
|
10
|
+
const DEFAULT_USER = "devstack";
|
|
11
|
+
const DEFAULT_READY_TIMEOUT_MS = 3e4;
|
|
12
|
+
const DEFAULT_STOP_GRACE_SECONDS = 20;
|
|
13
|
+
const POSTGRES_PORT = 5432;
|
|
14
|
+
/** Sidecar password — derived from `(app, stack, role)`, deliberately without
|
|
15
|
+
* `stackRoot`. The sidecar's PGDATA rides the owning plugin's snapshots and
|
|
16
|
+
* restored image layers, so the password must remain stable across runtime
|
|
17
|
+
* roots for the same stack. */
|
|
18
|
+
const deriveSidecarPassword = (app, stack, role) => {
|
|
19
|
+
return `pg-${(app + stack + role).replace(/[^a-zA-Z0-9]/g, "")}-${createHash("sha256").update(`${app}\x1f${stack}\x1f${role}`).digest("hex").slice(0, 8)}`;
|
|
20
|
+
};
|
|
21
|
+
const resolveSidecarOptions = (identity, opts) => {
|
|
22
|
+
if (opts.database.length === 0) throw postgresConfigError({
|
|
23
|
+
field: "database",
|
|
24
|
+
message: "postgres sidecar: `database` must be non-empty"
|
|
25
|
+
});
|
|
26
|
+
return {
|
|
27
|
+
name: opts.role,
|
|
28
|
+
version: opts.version ?? DEFAULT_VERSION,
|
|
29
|
+
user: DEFAULT_USER,
|
|
30
|
+
password: deriveSidecarPassword(identity.app, identity.stack, opts.role),
|
|
31
|
+
databases: [opts.database],
|
|
32
|
+
readyTimeoutMs: opts.readyTimeoutMs ?? DEFAULT_READY_TIMEOUT_MS,
|
|
33
|
+
stopGraceSeconds: opts.stopGraceSeconds ?? DEFAULT_STOP_GRACE_SECONDS
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
const resolveImageContextPath = () => {
|
|
37
|
+
const here = new URL(import.meta.url);
|
|
38
|
+
return fileURLToPath(new URL("../../../../images/postgres/", here));
|
|
39
|
+
};
|
|
40
|
+
const containerExec = (runtime, handle) => ({ run: (argv) => runtime.exec(handle, argv).pipe(Effect.catch((err) => Effect.fail(postgresPluginError("container-start", `runtime.exec failed: ${err.reason} — ${err.detail}`, err)))) });
|
|
41
|
+
/** Boot a Postgres container owned by a sibling plugin. The container labels
|
|
42
|
+
* are stamped as `{ plugin: 'sui', role }` so Sui snapshot capture owns the
|
|
43
|
+
* database state; callers still share the internal Postgres image build. */
|
|
44
|
+
const bootPostgresSidecar = (runtime, identity, opts) => Effect.gen(function* () {
|
|
45
|
+
const resolved = yield* Effect.try({
|
|
46
|
+
try: () => resolveSidecarOptions(identity, opts),
|
|
47
|
+
catch: (cause) => cause
|
|
48
|
+
});
|
|
49
|
+
yield* runtime.ensureNetwork({
|
|
50
|
+
name: opts.network,
|
|
51
|
+
app: identity.app,
|
|
52
|
+
stack: identity.stack
|
|
53
|
+
}).pipe(Effect.catch((cause) => Effect.fail(postgresPluginError("network-create", `failed to ensure postgres sidecar network '${opts.network}'`, cause))));
|
|
54
|
+
const imageRef = yield* runtime.ensureImage({
|
|
55
|
+
contextPath: resolveImageContextPath(),
|
|
56
|
+
dockerfile: "Dockerfile",
|
|
57
|
+
buildArgs: { POSTGRES_VERSION: resolved.version },
|
|
58
|
+
owner: {
|
|
59
|
+
app: identity.app,
|
|
60
|
+
stack: identity.stack,
|
|
61
|
+
plugin: "postgres",
|
|
62
|
+
role: "db"
|
|
63
|
+
}
|
|
64
|
+
}).pipe(Effect.catch((cause) => Effect.fail(postgresPluginError("image-build", `failed to build postgres sidecar image (${resolved.version})`, cause))));
|
|
65
|
+
const containerName = sanitizeAlias(`${identity.app}-${identity.stack}-${opts.role}`);
|
|
66
|
+
const containerHandle = yield* ensureManagedContainer({
|
|
67
|
+
runtime,
|
|
68
|
+
labels: {
|
|
69
|
+
app: identity.app,
|
|
70
|
+
stack: identity.stack,
|
|
71
|
+
plugin: "sui",
|
|
72
|
+
role: opts.role
|
|
73
|
+
},
|
|
74
|
+
spec: {
|
|
75
|
+
name: containerName,
|
|
76
|
+
image: imageRef,
|
|
77
|
+
recreate: "on-config-change",
|
|
78
|
+
...opts.configHash !== void 0 ? { configHash: opts.configHash } : {},
|
|
79
|
+
env: {
|
|
80
|
+
POSTGRES_USER: resolved.user,
|
|
81
|
+
POSTGRES_PASSWORD: resolved.password,
|
|
82
|
+
POSTGRES_DB: opts.database
|
|
83
|
+
},
|
|
84
|
+
stopGraceSeconds: resolved.stopGraceSeconds,
|
|
85
|
+
networkAttach: [{
|
|
86
|
+
name: opts.network,
|
|
87
|
+
aliases: [opts.alias]
|
|
88
|
+
}]
|
|
89
|
+
},
|
|
90
|
+
mapError: (cause) => postgresPluginError("container-start", `failed to start postgres sidecar container '${opts.role}'`, cause)
|
|
91
|
+
});
|
|
92
|
+
const exec = containerExec(runtime, containerHandle);
|
|
93
|
+
yield* awaitReady(exec, resolved.user, opts.database, resolved.readyTimeoutMs);
|
|
94
|
+
yield* ensureDatabases(exec, resolved.user, resolved.databases);
|
|
95
|
+
const endpoint = credentialedUrl({
|
|
96
|
+
user: resolved.user,
|
|
97
|
+
password: resolved.password,
|
|
98
|
+
host: containerName,
|
|
99
|
+
port: POSTGRES_PORT
|
|
100
|
+
});
|
|
101
|
+
return {
|
|
102
|
+
handle: {
|
|
103
|
+
name: resolved.name,
|
|
104
|
+
user: resolved.user,
|
|
105
|
+
password: resolved.password,
|
|
106
|
+
host: containerName,
|
|
107
|
+
port: POSTGRES_PORT,
|
|
108
|
+
databases: resolved.databases,
|
|
109
|
+
endpoint,
|
|
110
|
+
plainEndpoint: plainUrl(containerName, POSTGRES_PORT),
|
|
111
|
+
url: (db) => withDatabase(endpoint, db),
|
|
112
|
+
containerNetwork: opts.network,
|
|
113
|
+
networkAlias: opts.alias
|
|
114
|
+
},
|
|
115
|
+
containerHandle
|
|
116
|
+
};
|
|
117
|
+
});
|
|
118
|
+
//#endregion
|
|
119
|
+
export { bootPostgresSidecar, deriveSidecarPassword };
|
|
120
|
+
|
|
121
|
+
//# sourceMappingURL=service.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.mjs","names":[],"sources":["../../../../src/plugins/internal/postgres-sidecar/service.ts"],"sourcesContent":["// Internal Postgres sidecar for built-in plugins.\n//\n// This is not a public `postgres()` factory. It exists so the Sui local\n// validator can own its GraphQL indexer database as a sidecar while snapshotting\n// the database under Sui's own `(plugin, role)` label tuple.\n\nimport { Effect, type Scope } from 'effect';\nimport { createHash } from 'node:crypto';\nimport { fileURLToPath } from 'node:url';\n\nimport type { ContainerHandle, ContainerRuntime } from '../../../contracts/container-runtime.ts';\nimport type { Identity } from '../../../substrate/identity.ts';\nimport {\n\tensureManagedContainer,\n\tsanitizeAlias,\n} from '../../../substrate/runtime/managed-container.ts';\n\nimport {\n\tcredentialedUrl,\n\tplainUrl,\n\twithDatabase,\n\ttype PostgresConnectionParts,\n} from './connection.ts';\nimport { awaitReady, ensureDatabases, type ContainerExec } from './db-ensure.ts';\nimport {\n\tpostgresPluginError,\n\tpostgresConfigError,\n\ttype DatabaseCreateFailed,\n\ttype PostgresConfigError,\n\ttype PostgresConnectionTimeout,\n\ttype PostgresPluginError,\n} from './errors.ts';\n\nexport interface PostgresSidecar {\n\treadonly name: string;\n\treadonly user: string;\n\treadonly password: string;\n\treadonly host: string;\n\treadonly port: number;\n\treadonly databases: ReadonlyArray<string>;\n\treadonly endpoint: string;\n\treadonly plainEndpoint: string;\n\treadonly url: (db: string) => string;\n\treadonly containerNetwork: string;\n\treadonly networkAlias: string;\n}\n\ninterface ResolvedPostgresSidecarOptions {\n\treadonly name: string;\n\treadonly version: string;\n\treadonly user: string;\n\treadonly password: string;\n\treadonly databases: ReadonlyArray<string>;\n\treadonly readyTimeoutMs: number;\n\treadonly stopGraceSeconds: number;\n}\n\nconst DEFAULT_VERSION = '17-alpine';\nconst DEFAULT_USER = 'devstack';\nconst DEFAULT_READY_TIMEOUT_MS = 30_000;\nconst DEFAULT_STOP_GRACE_SECONDS = 20;\nconst POSTGRES_PORT = 5432;\n\n/** Sidecar password — derived from `(app, stack, role)`, deliberately without\n * `stackRoot`. The sidecar's PGDATA rides the owning plugin's snapshots and\n * restored image layers, so the password must remain stable across runtime\n * roots for the same stack. */\nexport const deriveSidecarPassword = (app: string, stack: string, role: string): string => {\n\tconst body = (app + stack + role).replace(/[^a-zA-Z0-9]/g, '');\n\tconst fingerprint = createHash('sha256')\n\t\t.update(`${app}\\x1f${stack}\\x1f${role}`)\n\t\t.digest('hex')\n\t\t.slice(0, 8);\n\treturn `pg-${body}-${fingerprint}`;\n};\n\nconst resolveSidecarOptions = (\n\tidentity: Identity,\n\topts: {\n\t\treadonly role: string;\n\t\treadonly database: string;\n\t\treadonly version?: string;\n\t\treadonly readyTimeoutMs?: number;\n\t\treadonly stopGraceSeconds?: number;\n\t},\n): ResolvedPostgresSidecarOptions => {\n\tif (opts.database.length === 0) {\n\t\tthrow postgresConfigError({\n\t\t\tfield: 'database',\n\t\t\tmessage: 'postgres sidecar: `database` must be non-empty',\n\t\t});\n\t}\n\n\treturn {\n\t\tname: opts.role,\n\t\tversion: opts.version ?? DEFAULT_VERSION,\n\t\tuser: DEFAULT_USER,\n\t\tpassword: deriveSidecarPassword(identity.app, identity.stack, opts.role),\n\t\tdatabases: [opts.database],\n\t\treadyTimeoutMs: opts.readyTimeoutMs ?? DEFAULT_READY_TIMEOUT_MS,\n\t\tstopGraceSeconds: opts.stopGraceSeconds ?? DEFAULT_STOP_GRACE_SECONDS,\n\t};\n};\n\nconst resolveImageContextPath = (): string => {\n\tconst here = new URL(import.meta.url);\n\tconst ctxUrl = new URL('../../../../images/postgres/', here);\n\treturn fileURLToPath(ctxUrl);\n};\n\nconst containerExec = (runtime: ContainerRuntime, handle: ContainerHandle): ContainerExec => ({\n\trun: (argv) =>\n\t\truntime\n\t\t\t.exec(handle, argv)\n\t\t\t.pipe(\n\t\t\t\tEffect.catch((err) =>\n\t\t\t\t\tEffect.fail(\n\t\t\t\t\t\tpostgresPluginError(\n\t\t\t\t\t\t\t'container-start',\n\t\t\t\t\t\t\t`runtime.exec failed: ${err.reason} — ${err.detail}`,\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t),\n});\n\n/** Boot a Postgres container owned by a sibling plugin. The container labels\n * are stamped as `{ plugin: 'sui', role }` so Sui snapshot capture owns the\n * database state; callers still share the internal Postgres image build. */\nexport const bootPostgresSidecar = (\n\truntime: ContainerRuntime,\n\tidentity: Identity,\n\topts: {\n\t\treadonly network: string;\n\t\treadonly alias: string;\n\t\treadonly role: string;\n\t\treadonly database: string;\n\t\treadonly version?: string;\n\t\treadonly readyTimeoutMs?: number;\n\t\treadonly stopGraceSeconds?: number;\n\t\t/** Opaque caller-owned fingerprint stamped as `devstack.config-hash`.\n\t\t * With `recreate: 'on-config-change'`, a mismatch recreates the\n\t\t * mount-less sidecar with an empty DB while a match resumes rows. */\n\t\treadonly configHash?: string;\n\t},\n): Effect.Effect<\n\t{ readonly handle: PostgresSidecar; readonly containerHandle: ContainerHandle },\n\tPostgresPluginError | PostgresConfigError | PostgresConnectionTimeout | DatabaseCreateFailed,\n\tScope.Scope\n> =>\n\tEffect.gen(function* () {\n\t\tconst resolved = yield* Effect.try({\n\t\t\ttry: () => resolveSidecarOptions(identity, opts),\n\t\t\tcatch: (cause) => cause as PostgresConfigError,\n\t\t});\n\n\t\tyield* runtime\n\t\t\t.ensureNetwork({ name: opts.network, app: identity.app, stack: identity.stack })\n\t\t\t.pipe(\n\t\t\t\tEffect.catch((cause) =>\n\t\t\t\t\tEffect.fail(\n\t\t\t\t\t\tpostgresPluginError(\n\t\t\t\t\t\t\t'network-create',\n\t\t\t\t\t\t\t`failed to ensure postgres sidecar network '${opts.network}'`,\n\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t);\n\n\t\tconst imageRef = yield* runtime\n\t\t\t.ensureImage({\n\t\t\t\tcontextPath: resolveImageContextPath(),\n\t\t\t\tdockerfile: 'Dockerfile',\n\t\t\t\tbuildArgs: { POSTGRES_VERSION: resolved.version },\n\t\t\t\towner: { app: identity.app, stack: identity.stack, plugin: 'postgres', role: 'db' },\n\t\t\t})\n\t\t\t.pipe(\n\t\t\t\tEffect.catch((cause) =>\n\t\t\t\t\tEffect.fail(\n\t\t\t\t\t\tpostgresPluginError(\n\t\t\t\t\t\t\t'image-build',\n\t\t\t\t\t\t\t`failed to build postgres sidecar image (${resolved.version})`,\n\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t);\n\n\t\tconst containerName = sanitizeAlias(`${identity.app}-${identity.stack}-${opts.role}`);\n\t\tconst containerHandle = yield* ensureManagedContainer({\n\t\t\truntime,\n\t\t\tlabels: { app: identity.app, stack: identity.stack, plugin: 'sui', role: opts.role },\n\t\t\tspec: {\n\t\t\t\tname: containerName,\n\t\t\t\timage: imageRef,\n\t\t\t\trecreate: 'on-config-change',\n\t\t\t\t...(opts.configHash !== undefined ? { configHash: opts.configHash } : {}),\n\t\t\t\tenv: {\n\t\t\t\t\tPOSTGRES_USER: resolved.user,\n\t\t\t\t\tPOSTGRES_PASSWORD: resolved.password,\n\t\t\t\t\tPOSTGRES_DB: opts.database,\n\t\t\t\t},\n\t\t\t\tstopGraceSeconds: resolved.stopGraceSeconds,\n\t\t\t\tnetworkAttach: [{ name: opts.network, aliases: [opts.alias] }],\n\t\t\t},\n\t\t\tmapError: (cause) =>\n\t\t\t\tpostgresPluginError(\n\t\t\t\t\t'container-start',\n\t\t\t\t\t`failed to start postgres sidecar container '${opts.role}'`,\n\t\t\t\t\tcause,\n\t\t\t\t),\n\t\t});\n\n\t\tconst exec = containerExec(runtime, containerHandle);\n\t\tyield* awaitReady(exec, resolved.user, opts.database, resolved.readyTimeoutMs);\n\t\tyield* ensureDatabases(exec, resolved.user, resolved.databases);\n\n\t\tconst parts: PostgresConnectionParts = {\n\t\t\tuser: resolved.user,\n\t\t\tpassword: resolved.password,\n\t\t\thost: containerName,\n\t\t\tport: POSTGRES_PORT,\n\t\t};\n\t\tconst endpoint = credentialedUrl(parts);\n\t\tconst handle: PostgresSidecar = {\n\t\t\tname: resolved.name,\n\t\t\tuser: resolved.user,\n\t\t\tpassword: resolved.password,\n\t\t\thost: containerName,\n\t\t\tport: POSTGRES_PORT,\n\t\t\tdatabases: resolved.databases,\n\t\t\tendpoint,\n\t\t\tplainEndpoint: plainUrl(containerName, POSTGRES_PORT),\n\t\t\turl: (db) => withDatabase(endpoint, db),\n\t\t\tcontainerNetwork: opts.network,\n\t\t\tnetworkAlias: opts.alias,\n\t\t};\n\n\t\treturn { handle, containerHandle };\n\t});\n"],"mappings":";;;;;;;;AAyDA,MAAM,kBAAkB;AACxB,MAAM,eAAe;AACrB,MAAM,2BAA2B;AACjC,MAAM,6BAA6B;AACnC,MAAM,gBAAgB;;;;;AAMtB,MAAa,yBAAyB,KAAa,OAAe,SAAyB;CAM1F,OAAO,OALO,MAAM,QAAQ,KAAA,CAAM,QAAQ,iBAAiB,EAK3C,EAAE,GAJE,WAAW,QAAQ,CAAC,CACtC,OAAO,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,CAAC,CACvC,OAAO,KAAK,CAAC,CACb,MAAM,GAAG,CACoB;AAChC;AAEA,MAAM,yBACL,UACA,SAOoC;CACpC,IAAI,KAAK,SAAS,WAAW,GAC5B,MAAM,oBAAoB;EACzB,OAAO;EACP,SAAS;CACV,CAAC;CAGF,OAAO;EACN,MAAM,KAAK;EACX,SAAS,KAAK,WAAW;EACzB,MAAM;EACN,UAAU,sBAAsB,SAAS,KAAK,SAAS,OAAO,KAAK,IAAI;EACvE,WAAW,CAAC,KAAK,QAAQ;EACzB,gBAAgB,KAAK,kBAAkB;EACvC,kBAAkB,KAAK,oBAAoB;CAC5C;AACD;AAEA,MAAM,gCAAwC;CAC7C,MAAM,OAAO,IAAI,IAAI,OAAO,KAAK,GAAG;CAEpC,OAAO,cAAc,IADF,IAAI,gCAAgC,IAC7B,CAAC;AAC5B;AAEA,MAAM,iBAAiB,SAA2B,YAA4C,EAC7F,MAAM,SACL,QACE,KAAK,QAAQ,IAAI,CAAC,CAClB,KACA,OAAO,OAAO,QACb,OAAO,KACN,oBACC,mBACA,wBAAwB,IAAI,OAAO,KAAK,IAAI,UAC5C,GACD,CACD,CACD,CACD,EACH;;;;AAKA,MAAa,uBACZ,SACA,UACA,SAkBA,OAAO,IAAI,aAAa;CACvB,MAAM,WAAW,OAAO,OAAO,IAAI;EAClC,WAAW,sBAAsB,UAAU,IAAI;EAC/C,QAAQ,UAAU;CACnB,CAAC;CAED,OAAO,QACL,cAAc;EAAE,MAAM,KAAK;EAAS,KAAK,SAAS;EAAK,OAAO,SAAS;CAAM,CAAC,CAAC,CAC/E,KACA,OAAO,OAAO,UACb,OAAO,KACN,oBACC,kBACA,8CAA8C,KAAK,QAAQ,IAC3D,KACD,CACD,CACD,CACD;CAED,MAAM,WAAW,OAAO,QACtB,YAAY;EACZ,aAAa,wBAAwB;EACrC,YAAY;EACZ,WAAW,EAAE,kBAAkB,SAAS,QAAQ;EAChD,OAAO;GAAE,KAAK,SAAS;GAAK,OAAO,SAAS;GAAO,QAAQ;GAAY,MAAM;EAAK;CACnF,CAAC,CAAC,CACD,KACA,OAAO,OAAO,UACb,OAAO,KACN,oBACC,eACA,2CAA2C,SAAS,QAAQ,IAC5D,KACD,CACD,CACD,CACD;CAED,MAAM,gBAAgB,cAAc,GAAG,SAAS,IAAI,GAAG,SAAS,MAAM,GAAG,KAAK,MAAM;CACpF,MAAM,kBAAkB,OAAO,uBAAuB;EACrD;EACA,QAAQ;GAAE,KAAK,SAAS;GAAK,OAAO,SAAS;GAAO,QAAQ;GAAO,MAAM,KAAK;EAAK;EACnF,MAAM;GACL,MAAM;GACN,OAAO;GACP,UAAU;GACV,GAAI,KAAK,eAAe,KAAA,IAAY,EAAE,YAAY,KAAK,WAAW,IAAI,CAAC;GACvE,KAAK;IACJ,eAAe,SAAS;IACxB,mBAAmB,SAAS;IAC5B,aAAa,KAAK;GACnB;GACA,kBAAkB,SAAS;GAC3B,eAAe,CAAC;IAAE,MAAM,KAAK;IAAS,SAAS,CAAC,KAAK,KAAK;GAAE,CAAC;EAC9D;EACA,WAAW,UACV,oBACC,mBACA,+CAA+C,KAAK,KAAK,IACzD,KACD;CACF,CAAC;CAED,MAAM,OAAO,cAAc,SAAS,eAAe;CACnD,OAAO,WAAW,MAAM,SAAS,MAAM,KAAK,UAAU,SAAS,cAAc;CAC7E,OAAO,gBAAgB,MAAM,SAAS,MAAM,SAAS,SAAS;CAQ9D,MAAM,WAAW,gBAAgB;EALhC,MAAM,SAAS;EACf,UAAU,SAAS;EACnB,MAAM;EACN,MAAM;CAE8B,CAAC;CAetC,OAAO;EAAE,QAAA;GAbR,MAAM,SAAS;GACf,MAAM,SAAS;GACf,UAAU,SAAS;GACnB,MAAM;GACN,MAAM;GACN,WAAW,SAAS;GACpB;GACA,eAAe,SAAS,eAAe,aAAa;GACpD,MAAM,OAAO,aAAa,UAAU,EAAE;GACtC,kBAAkB,KAAK;GACvB,cAAc,KAAK;EAGN;EAAG;CAAgB;AAClC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { hashMoveSources as hashMoveSources$1, runMoveBuild as runMoveBuild$1, scrubLocksHost as scrubLocksHost$1 } from "
|
|
1
|
+
import { hashMoveSources as hashMoveSources$1, runMoveBuild as runMoveBuild$1, scrubLocksHost as scrubLocksHost$1 } from "../sui/move/index.mjs";
|
|
2
|
+
import "../sui/index.mjs";
|
|
2
3
|
import { publishError } from "./errors.mjs";
|
|
3
4
|
import { Effect } from "effect";
|
|
4
5
|
//#region src/plugins/package/build.ts
|
|
@@ -13,7 +14,6 @@ const scrubLocksHost = (sourcePath, moveHomeRoot) => scrubLocksHost$1(sourcePath
|
|
|
13
14
|
const runMoveBuild = (inputs) => runMoveBuild$1({
|
|
14
15
|
sourcePath: inputs.sourcePath,
|
|
15
16
|
packageName: inputs.packageName,
|
|
16
|
-
chainId: inputs.chainId,
|
|
17
17
|
...inputs.buildContainer !== void 0 ? { buildContainer: inputs.buildContainer } : {},
|
|
18
18
|
...inputs.runtime !== void 0 ? { runtime: inputs.runtime } : {},
|
|
19
19
|
...inputs.buildImage !== void 0 ? { buildImage: inputs.buildImage } : {}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.mjs","names":["hashMoveSourcesNeutral","scrubLocksHostNeutral","runMoveBuildNeutral"],"sources":["../../../src/plugins/package/build.ts"],"sourcesContent":["// Package plugin bridge for shared Sui Move build helpers.\n\nimport { Effect, type Scope } from 'effect';\n\nimport type { ContainerRuntime, ImageRef } from '../../contracts/container-runtime.ts';\nimport type {
|
|
1
|
+
{"version":3,"file":"build.mjs","names":["hashMoveSourcesNeutral","scrubLocksHostNeutral","runMoveBuildNeutral"],"sources":["../../../src/plugins/package/build.ts"],"sourcesContent":["// Package plugin bridge for shared Sui Move build helpers.\n\nimport { Effect, type Scope } from 'effect';\n\nimport type { ContainerRuntime, ImageRef } from '../../contracts/container-runtime.ts';\nimport type { ContentHash } from '../../substrate/brand.ts';\nimport {\n\thashMoveSources as hashMoveSourcesNeutral,\n\trunMoveBuild as runMoveBuildNeutral,\n\tscrubLocksHost as scrubLocksHostNeutral,\n\twithMoveBuildLock,\n\ttype BuildOutput,\n\ttype MoveBuildError,\n\ttype MoveBuildContainer,\n\ttype ChainBuildContainer,\n} from '../sui/index.ts';\nimport { publishError, type PublishError } from './errors.ts';\n\nexport type { BuildOutput };\n\n// Re-exported verbatim: the lock is generic over the wrapped effect's channels,\n// so the package plugin uses the same process-wide Move-build permit as seal.\nexport { withMoveBuildLock };\n\nexport interface BuildInputs {\n\treadonly sourcePath: string;\n\treadonly packageName: string;\n\treadonly chainId: string;\n\treadonly buildContainer?: ChainBuildContainer;\n\treadonly runtime?: ContainerRuntime;\n\treadonly buildImage?: ImageRef;\n}\n\nconst toPublishError = (err: MoveBuildError): PublishError =>\n\tpublishError(err.phase, {\n\t\tsourcePath: err.sourcePath,\n\t\tpackageName: err.packageName,\n\t\tmessage: err.message,\n\t\t...(err.cause !== undefined ? { cause: err.cause } : { cause: err }),\n\t});\n\nexport const hashMoveSources = (sourcePath: string): Effect.Effect<ContentHash, PublishError> =>\n\thashMoveSourcesNeutral(sourcePath).pipe(Effect.mapError(toPublishError));\n\nexport const scrubLocksHost = (\n\tsourcePath: string,\n\tmoveHomeRoot: string,\n): Effect.Effect<void, PublishError, Scope.Scope> =>\n\tscrubLocksHostNeutral(sourcePath, moveHomeRoot).pipe(Effect.mapError(toPublishError));\n\nexport const runMoveBuild = (\n\tinputs: BuildInputs,\n): Effect.Effect<BuildOutput, PublishError, Scope.Scope> =>\n\trunMoveBuildNeutral({\n\t\tsourcePath: inputs.sourcePath,\n\t\tpackageName: inputs.packageName,\n\t\t...(inputs.buildContainer !== undefined\n\t\t\t? { buildContainer: inputs.buildContainer satisfies MoveBuildContainer }\n\t\t\t: {}),\n\t\t...(inputs.runtime !== undefined ? { runtime: inputs.runtime } : {}),\n\t\t...(inputs.buildImage !== undefined ? { buildImage: inputs.buildImage } : {}),\n\t}).pipe(Effect.mapError(toPublishError));\n"],"mappings":";;;;;AAiCA,MAAM,kBAAkB,QACvB,aAAa,IAAI,OAAO;CACvB,YAAY,IAAI;CAChB,aAAa,IAAI;CACjB,SAAS,IAAI;CACb,GAAI,IAAI,UAAU,KAAA,IAAY,EAAE,OAAO,IAAI,MAAM,IAAI,EAAE,OAAO,IAAI;AACnE,CAAC;AAEF,MAAa,mBAAmB,eAC/BA,kBAAuB,UAAU,CAAC,CAAC,KAAK,OAAO,SAAS,cAAc,CAAC;AAExE,MAAa,kBACZ,YACA,iBAEAC,iBAAsB,YAAY,YAAY,CAAC,CAAC,KAAK,OAAO,SAAS,cAAc,CAAC;AAErF,MAAa,gBACZ,WAEAC,eAAoB;CACnB,YAAY,OAAO;CACnB,aAAa,OAAO;CACpB,GAAI,OAAO,mBAAmB,KAAA,IAC3B,EAAE,gBAAgB,OAAO,eAA4C,IACrE,CAAC;CACJ,GAAI,OAAO,YAAY,KAAA,IAAY,EAAE,SAAS,OAAO,QAAQ,IAAI,CAAC;CAClE,GAAI,OAAO,eAAe,KAAA,IAAY,EAAE,YAAY,OAAO,WAAW,IAAI,CAAC;AAC5E,CAAC,CAAC,CAAC,KAAK,OAAO,SAAS,cAAc,CAAC"}
|
|
@@ -1,19 +1,12 @@
|
|
|
1
|
+
import { PackageBindings } from "../../orchestrators/codegen/bindings.mjs";
|
|
1
2
|
//#region src/plugins/package/codegen.d.ts
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
interface
|
|
5
|
-
readonly name: string;
|
|
3
|
+
/** Per-network declared ids — pure literals the user supplies for
|
|
4
|
+
* prod-targeting (`testnet`/`mainnet`). No resolution. */
|
|
5
|
+
interface PackageNetworkEntry {
|
|
6
6
|
readonly packageId: string;
|
|
7
|
-
readonly
|
|
8
|
-
/** Present for local packages only — the bindings emitter reads
|
|
9
|
-
* this; KnownPackages omit it and the orchestrator skips them
|
|
10
|
-
* for bindings emission (compile-time enforcement at the
|
|
11
|
-
* factory layer per distilled doc Invariant 9). */
|
|
12
|
-
readonly sourcePath: string | null;
|
|
13
|
-
/** Per-package opt-out (distilled doc §Inputs — "Codegen
|
|
14
|
-
* exclusion flag"). */
|
|
15
|
-
readonly excluded: boolean;
|
|
7
|
+
readonly objects?: Readonly<Record<string, string>>;
|
|
16
8
|
}
|
|
9
|
+
type PackageNetworks = Readonly<Record<string, PackageNetworkEntry>>;
|
|
17
10
|
//#endregion
|
|
18
|
-
export {
|
|
11
|
+
export { PackageNetworkEntry, PackageNetworks };
|
|
19
12
|
//# sourceMappingURL=codegen.d.mts.map
|
|
@@ -1,67 +1,195 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LOCAL_NETWORK_NAME } from "../../api/inference-network.mjs";
|
|
2
|
+
import { configCodegenable } from "../../contracts/config-bindings.mjs";
|
|
3
|
+
import { mvrNamedForm, mvrNamedFormFrom } from "./dep-resolution.mjs";
|
|
2
4
|
//#region src/plugins/package/codegen.ts
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Build the package's config-binding set, declared ONCE. The `name` keys the
|
|
7
|
+
* `config.packages.<name>` entry; `mvrPlaceholder` is a literal in both paths;
|
|
8
|
+
* the active-network id is a RESOLVED binding (sugar `resolveId('<mvr>')` when
|
|
9
|
+
* `resolveViaRuntime`, otherwise a literal already-known id). Declared
|
|
10
|
+
* per-network literals (testnet/mainnet) and captured objects are literals.
|
|
11
|
+
*
|
|
12
|
+
* The same set drives `projectStaticConfig` (committed tree) and
|
|
13
|
+
* `projectLiveConfig` (boot id-config) — no parallel projectors.
|
|
14
|
+
*/
|
|
15
|
+
const packageConfigBindings = (input) => {
|
|
16
|
+
const { name, mvrPlaceholder } = input;
|
|
17
|
+
const bindings = [];
|
|
18
|
+
bindings.push({
|
|
19
|
+
variant: "literal",
|
|
20
|
+
configPath: [
|
|
21
|
+
"packages",
|
|
22
|
+
name,
|
|
23
|
+
"mvr"
|
|
24
|
+
],
|
|
25
|
+
value: mvrPlaceholder
|
|
26
|
+
});
|
|
27
|
+
const pinned = input.pinnedId;
|
|
28
|
+
const idBinding = (configPath) => pinned === void 0 ? {
|
|
29
|
+
variant: "resolved",
|
|
30
|
+
configPath,
|
|
31
|
+
namespace: "package",
|
|
32
|
+
key: `${name}:packageId`,
|
|
33
|
+
sugar: {
|
|
34
|
+
kind: "id",
|
|
35
|
+
mvrPlaceholder
|
|
36
|
+
},
|
|
37
|
+
live: (state) => state.packageId
|
|
38
|
+
} : {
|
|
39
|
+
variant: "literal",
|
|
40
|
+
configPath,
|
|
41
|
+
value: pinned
|
|
42
|
+
};
|
|
43
|
+
bindings.push(idBinding([
|
|
44
|
+
"packages",
|
|
45
|
+
name,
|
|
46
|
+
"packageId"
|
|
47
|
+
]));
|
|
48
|
+
bindings.push(idBinding([
|
|
49
|
+
"packages",
|
|
50
|
+
name,
|
|
51
|
+
"byNetwork",
|
|
52
|
+
LOCAL_NETWORK_NAME
|
|
53
|
+
]));
|
|
54
|
+
for (const [net, entry] of Object.entries(input.networks ?? {})) bindings.push({
|
|
55
|
+
variant: "literal",
|
|
56
|
+
configPath: [
|
|
57
|
+
"packages",
|
|
58
|
+
name,
|
|
59
|
+
"byNetwork",
|
|
60
|
+
net
|
|
61
|
+
],
|
|
62
|
+
value: entry.packageId
|
|
63
|
+
});
|
|
64
|
+
const objectKeys = input.objectKeys ?? Object.keys(input.captured);
|
|
65
|
+
if (objectKeys.length > 0) {
|
|
66
|
+
const objectsNamespace = `package:${name}:objects`;
|
|
67
|
+
for (const objectKey of objectKeys) {
|
|
68
|
+
const objectBinding = (configPath) => ({
|
|
69
|
+
variant: "resolved",
|
|
70
|
+
configPath,
|
|
71
|
+
namespace: objectsNamespace,
|
|
72
|
+
key: objectKey,
|
|
73
|
+
live: (state) => state.captured[objectKey] ?? null
|
|
74
|
+
});
|
|
75
|
+
bindings.push(objectBinding([
|
|
76
|
+
"packages",
|
|
77
|
+
name,
|
|
78
|
+
"objects",
|
|
79
|
+
objectKey
|
|
80
|
+
]));
|
|
81
|
+
bindings.push(objectBinding([
|
|
82
|
+
"objects",
|
|
83
|
+
name,
|
|
84
|
+
objectKey
|
|
85
|
+
]));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (pinned === void 0 || pinned.length > 0) bindings.push(idBinding(["mvrOverrides", mvrPlaceholder]));
|
|
89
|
+
return {
|
|
90
|
+
bucket: "config.ts",
|
|
49
91
|
kind: "package",
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
92
|
+
emitterName: "package",
|
|
93
|
+
allowEmitterNameRepetition: true,
|
|
94
|
+
bindings
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Build the package's `CodegenableDecl` from its binding set via the unified
|
|
99
|
+
* `configCodegenable` derivation. Mode `'live'` bakes concrete values + feeds
|
|
100
|
+
* the id-config; `'static'` emits resolver expressions. The decl ALSO exports
|
|
101
|
+
* `packageBindings` (the `extraExports` hook) so the orchestrator's
|
|
102
|
+
* `isPackageBindings` seam forwards it to the Move-bindings emitter (bindings
|
|
103
|
+
* stay in `generated/bindings/`).
|
|
104
|
+
*/
|
|
105
|
+
const packageDecl = (set, bindings, how) => configCodegenable(set, how, { extraExports: { packageBindings: bindings } });
|
|
106
|
+
/** Build the Codegenable contribution for a local package (LIVE path).
|
|
107
|
+
* Bakes the resolved active-network id + captured objects. */
|
|
108
|
+
const makeLocalCodegenable = (resolved, options) => {
|
|
109
|
+
const mvrPlaceholder = mvrNamedFormFrom(resolved.mvrPlaceholder);
|
|
110
|
+
return packageDecl(packageConfigBindings({
|
|
111
|
+
name: resolved.name,
|
|
112
|
+
mvrPlaceholder,
|
|
113
|
+
captured: resolved.captured,
|
|
114
|
+
...options.networks !== void 0 ? { networks: options.networks } : {}
|
|
115
|
+
}), {
|
|
116
|
+
name: resolved.name,
|
|
117
|
+
packageId: resolved.packageId,
|
|
118
|
+
mvrPlaceholder,
|
|
119
|
+
sourcePath: resolved.sourcePath,
|
|
120
|
+
excluded: options.excluded
|
|
121
|
+
}, {
|
|
122
|
+
mode: "live",
|
|
123
|
+
state: {
|
|
56
124
|
packageId: resolved.packageId,
|
|
57
|
-
|
|
125
|
+
captured: resolved.captured
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
};
|
|
129
|
+
/** Build the Codegenable contribution for a known package — `sourcePath:
|
|
130
|
+
* null`, no captured object ids. A KNOWN package's declared id is a PINNED
|
|
131
|
+
* LITERAL (not loaded runtime data), so it renders identically in both the
|
|
132
|
+
* live and static paths. */
|
|
133
|
+
const makeKnownCodegenable = (resolved, options = {}) => {
|
|
134
|
+
const mvrPlaceholder = mvrNamedFormFrom(resolved.mvrPlaceholder);
|
|
135
|
+
return packageDecl(packageConfigBindings({
|
|
136
|
+
name: resolved.name,
|
|
137
|
+
mvrPlaceholder,
|
|
138
|
+
captured: {},
|
|
139
|
+
pinnedId: resolved.packageId,
|
|
140
|
+
...options.networks !== void 0 ? { networks: options.networks } : {}
|
|
141
|
+
}), {
|
|
142
|
+
name: resolved.name,
|
|
143
|
+
packageId: resolved.packageId,
|
|
144
|
+
mvrPlaceholder,
|
|
145
|
+
sourcePath: null,
|
|
146
|
+
excluded: true
|
|
147
|
+
}, "static");
|
|
148
|
+
};
|
|
149
|
+
/** Build the static (stack-free) codegen source for a LOCAL package.
|
|
150
|
+
* `sourcePath` is the resolved on-disk Move tree the bindings emitter
|
|
151
|
+
* compiles (a local `sourcePath`; a git source whose tree has not been
|
|
152
|
+
* materialized contributes `null`, so the bindings step skips it). */
|
|
153
|
+
const makeLocalStaticCodegen = (config) => {
|
|
154
|
+
const mvrPlaceholder = mvrNamedForm(config.mvrPlaceholder ?? config.name);
|
|
155
|
+
return () => {
|
|
156
|
+
return [packageDecl(packageConfigBindings({
|
|
157
|
+
name: config.name,
|
|
158
|
+
mvrPlaceholder,
|
|
159
|
+
captured: {},
|
|
160
|
+
...config.objectKeys !== void 0 ? { objectKeys: config.objectKeys } : {},
|
|
161
|
+
...config.networks !== void 0 ? { networks: config.networks } : {}
|
|
162
|
+
}), {
|
|
163
|
+
name: config.name,
|
|
164
|
+
packageId: "",
|
|
165
|
+
mvrPlaceholder,
|
|
166
|
+
sourcePath: config.sourcePath,
|
|
167
|
+
excluded: config.sourcePath === null ? true : config.excluded
|
|
168
|
+
}, "static")];
|
|
169
|
+
};
|
|
170
|
+
};
|
|
171
|
+
/** Build the static (stack-free) codegen source for a KNOWN package. Known
|
|
172
|
+
* packages already carry a literal `packageId` in config; the committed stub
|
|
173
|
+
* emits it verbatim. */
|
|
174
|
+
const makeKnownStaticCodegen = (config) => {
|
|
175
|
+
const mvrPlaceholder = mvrNamedForm(config.mvrPlaceholder ?? config.name);
|
|
176
|
+
return () => {
|
|
177
|
+
return [packageDecl(packageConfigBindings({
|
|
178
|
+
name: config.name,
|
|
179
|
+
mvrPlaceholder,
|
|
180
|
+
captured: {},
|
|
181
|
+
pinnedId: config.packageId,
|
|
182
|
+
...config.networks !== void 0 ? { networks: config.networks } : {}
|
|
183
|
+
}), {
|
|
184
|
+
name: config.name,
|
|
185
|
+
packageId: config.packageId,
|
|
186
|
+
mvrPlaceholder,
|
|
58
187
|
sourcePath: null,
|
|
59
188
|
excluded: true
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
});
|
|
189
|
+
}, "static")];
|
|
190
|
+
};
|
|
191
|
+
};
|
|
64
192
|
//#endregion
|
|
65
|
-
export { makeKnownCodegenable, makeLocalCodegenable };
|
|
193
|
+
export { makeKnownCodegenable, makeKnownStaticCodegen, makeLocalCodegenable, makeLocalStaticCodegen };
|
|
66
194
|
|
|
67
195
|
//# sourceMappingURL=codegen.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.mjs","names":[],"sources":["../../../src/plugins/package/codegen.ts"],"sourcesContent":["// Package plugin — Codegenable contribution.\n//\n// Distilled doc §Outputs: \"Bindings input — the source path of every\n// local Package is read by the bindings emitter (KnownPackages\n// filtered out).\"\n//\n// The contribution emitted here is the LIGHTWEIGHT one: package id +\n// MVR placeholder + (for local packages) the source path the\n// bindings emitter consumes. The HEAVY codegen — `@mysten/codegen`\n// emitting typed function shims — happens in the codegen\n// ORCHESTRATOR (plugin/codegen layer, NOT this plugin). The\n// orchestrator walks every member's caps tuple, finds the\n// Package-emitted contributions, and dispatches `@mysten/codegen`\n// once across all of them so a single TS program references every\n// emitted package binding.\n//\n// This file therefore declares the SEAM, not the binding bytes.\n// Distilled doc §Cross-component references §codegen: package\n// \"consumes local Package source paths to emit bindings; respects\n// the per-package codegen-exclude flag; uses MVR placeholders so\n// emitted code stays portable.\"\n\nimport { Effect } from 'effect';\n\nimport type { CodegenableDecl } from '../../contracts/codegenable.ts';\nimport type { ResolvedLocalPackage, ResolvedKnownPackage } from './registry.ts';\n\n/** Codegenable shape — what each Package contributes to the codegen\n * orchestrator. Two variants mirror the local/known split. */\nexport interface PackageBindings {\n\treadonly name: string;\n\treadonly packageId: string;\n\treadonly mvrPlaceholder: string;\n\t/** Present for local packages only — the bindings emitter reads\n\t * this; KnownPackages omit it and the orchestrator skips them\n\t * for bindings emission (compile-time enforcement at the\n\t * factory layer per distilled doc Invariant 9). */\n\treadonly sourcePath: string | null;\n\t/** Per-package opt-out (distilled doc §Inputs — \"Codegen\n\t * exclusion flag\"). */\n\treadonly excluded: boolean;\n}\n\n/** Type guard for the `packageBindings` shape emitted into the\n * CodegenEmitContext below. Lives in the plugin so the codegen\n * orchestrator never has to recognize the shape — it only calls\n * the projector. */\nexport const isPackageBindings = (v: unknown): v is PackageBindings =>\n\ttypeof v === 'object' &&\n\tv !== null &&\n\t'name' in v &&\n\t'packageId' in v &&\n\t'mvrPlaceholder' in v &&\n\t'sourcePath' in v;\n\n/** Aggregate projection: extract the `packageBindings` shape and key\n * it by the package name into the cross-plugin `packages.ts`\n * aggregate. The orchestrator stays name-blind; this projector\n * owns the `packages.<name>` → `PackageBindings` mapping. */\nconst projectPackageBindings = (\n\texported: Readonly<Record<string, unknown>>,\n): Readonly<Record<string, unknown>> | null => {\n\tconst bindings = exported['packageBindings'];\n\tif (!isPackageBindings(bindings)) return null;\n\treturn { [bindings.name]: bindings };\n};\n\n/** Build the Codegenable contribution for a local package. */\nexport const makeLocalCodegenable = (\n\tresolved: ResolvedLocalPackage,\n\toptions: { readonly excluded: boolean },\n): CodegenableDecl<'package'> => ({\n\tkind: 'codegenable',\n\temitterName: 'package',\n\toutputPath: `package/${resolved.mvrPlaceholder}.ts`,\n\t// One Package contribution per published package. The shared\n\t// `'package'` emitter name is by-design — the codegen orchestrator\n\t// skips its emitter-name uniqueness check for this flag.\n\tallowEmitterNameRepetition: true,\n\taggregate: {\n\t\tkind: 'package',\n\t\tbucket: 'packages.ts',\n\t\tproject: projectPackageBindings,\n\t},\n\temit: (ctx) =>\n\t\tEffect.sync(() => {\n\t\t\t// The orchestrator picks up these fields and threads them\n\t\t\t// into `@mysten/codegen` along with the source-path read.\n\t\t\t// The literal binding-file bytes are written by the\n\t\t\t// orchestrator, NOT this plugin.\n\t\t\tctx.exportConst('packageBindings', {\n\t\t\t\tname: resolved.name,\n\t\t\t\tpackageId: resolved.packageId,\n\t\t\t\tmvrPlaceholder: resolved.mvrPlaceholder,\n\t\t\t\tsourcePath: resolved.sourcePath,\n\t\t\t\texcluded: options.excluded,\n\t\t\t} satisfies PackageBindings);\n\t\t\treturn ctx.done();\n\t\t}),\n});\n\n/** Build the Codegenable contribution for a known package. The\n * shape is identical except `sourcePath: null`. The codegen\n * orchestrator filters these out before invoking the bindings\n * emitter. */\nexport const makeKnownCodegenable = (\n\tresolved: ResolvedKnownPackage,\n): CodegenableDecl<'package'> => ({\n\tkind: 'codegenable',\n\temitterName: 'package',\n\toutputPath: `package/${resolved.mvrPlaceholder}.ts`,\n\t// Mirrors `makeLocalCodegenable` — one Package contribution per\n\t// known package.\n\tallowEmitterNameRepetition: true,\n\taggregate: {\n\t\tkind: 'package',\n\t\tbucket: 'packages.ts',\n\t\tproject: projectPackageBindings,\n\t},\n\temit: (ctx) =>\n\t\tEffect.sync(() => {\n\t\t\tctx.exportConst('packageBindings', {\n\t\t\t\tname: resolved.name,\n\t\t\t\tpackageId: resolved.packageId,\n\t\t\t\tmvrPlaceholder: resolved.mvrPlaceholder,\n\t\t\t\tsourcePath: null,\n\t\t\t\texcluded: true, // implicit — KnownPackages never emit bindings.\n\t\t\t} satisfies PackageBindings);\n\t\t\treturn ctx.done();\n\t\t}),\n});\n"],"mappings":";;;;;;AA+CA,MAAa,qBAAqB,MACjC,OAAO,MAAM,YACb,MAAM,QACN,UAAU,KACV,eAAe,KACf,oBAAoB,KACpB,gBAAgB;;;;;AAMjB,MAAM,0BACL,aAC8C;CAC9C,MAAM,WAAW,SAAS;AAC1B,KAAI,CAAC,kBAAkB,SAAS,CAAE,QAAO;AACzC,QAAO,GAAG,SAAS,OAAO,UAAU;;;AAIrC,MAAa,wBACZ,UACA,aACiC;CACjC,MAAM;CACN,aAAa;CACb,YAAY,WAAW,SAAS,eAAe;CAI/C,4BAA4B;CAC5B,WAAW;EACV,MAAM;EACN,QAAQ;EACR,SAAS;EACT;CACD,OAAO,QACN,OAAO,WAAW;AAKjB,MAAI,YAAY,mBAAmB;GAClC,MAAM,SAAS;GACf,WAAW,SAAS;GACpB,gBAAgB,SAAS;GACzB,YAAY,SAAS;GACrB,UAAU,QAAQ;GAClB,CAA2B;AAC5B,SAAO,IAAI,MAAM;GAChB;CACH;;;;;AAMD,MAAa,wBACZ,cACiC;CACjC,MAAM;CACN,aAAa;CACb,YAAY,WAAW,SAAS,eAAe;CAG/C,4BAA4B;CAC5B,WAAW;EACV,MAAM;EACN,QAAQ;EACR,SAAS;EACT;CACD,OAAO,QACN,OAAO,WAAW;AACjB,MAAI,YAAY,mBAAmB;GAClC,MAAM,SAAS;GACf,WAAW,SAAS;GACpB,gBAAgB,SAAS;GACzB,YAAY;GACZ,UAAU;GACV,CAA2B;AAC5B,SAAO,IAAI,MAAM;GAChB;CACH"}
|
|
1
|
+
{"version":3,"file":"codegen.mjs","names":[],"sources":["../../../src/plugins/package/codegen.ts"],"sourcesContent":["// Package plugin — Codegenable contribution, via the UNIFIED config-binding\n// declaration.\n//\n// Distilled doc §Outputs: \"Bindings input — the source path of every local\n// Package is read by the bindings emitter (KnownPackages filtered out).\"\n//\n// The contribution emitted here is the LIGHTWEIGHT one: package id + MVR\n// placeholder + (for local packages) the source path the bindings emitter\n// consumes. The HEAVY codegen — `@mysten/codegen` emitting typed function\n// shims — happens in the codegen ORCHESTRATOR (NOT this plugin). This file\n// declares the SEAM, not the binding bytes.\n//\n// ONE declaration, TWO derivations. A package declares its `config.ts`\n// contributions ONCE as a `ConfigBindingSet`; the framework's\n// `projectLiveConfig` / `projectStaticConfig` derive both behaviors:\n// - LIVE (boot): bakes the resolved package id literal — boot's\n// `assembleIdConfig` reads it into the loadable id-config.\n// - STATIC (committed-tree): emits `resolveId('<mvr>')` so the committed\n// `config.ts` carries NO on-chain id (resolved at app build/dev time).\n//\n// The package contribution is `aggregateOnly`: it projects into the combined\n// `generated/config.ts` (`config.packages.<name>` + top-level\n// `config.objects.<name>`) and emits NO standalone `package/<name>.ts`. The\n// `packageBindings` value is still exported on the emit context so the\n// orchestrator's `isPackageBindings` seam forwards it to the Move-bindings\n// emitter (bindings stay in `generated/bindings/`).\n\nimport { LOCAL_NETWORK_NAME } from '../../api/inference-network.ts';\nimport type { CodegenableDecl, StaticCodegenSource } from '../../contracts/codegenable.ts';\nimport {\n\tconfigCodegenable,\n\ttype ConfigBinding,\n\ttype ConfigBindingSet,\n} from '../../contracts/config-bindings.ts';\nimport type { PackageBindings } from '../../orchestrators/codegen/bindings.ts';\nimport type { JsonValue } from '../../orchestrators/codegen/id-config.ts';\nimport { mvrNamedForm, mvrNamedFormFrom } from './dep-resolution.ts';\nimport type { ResolvedLocalPackage, ResolvedKnownPackage } from './registry.ts';\n\n/** Per-network declared ids — pure literals the user supplies for\n * prod-targeting (`testnet`/`mainnet`). No resolution. */\nexport interface PackageNetworkEntry {\n\treadonly packageId: string;\n\treadonly objects?: Readonly<Record<string, string>>;\n}\n\nexport type PackageNetworks = Readonly<Record<string, PackageNetworkEntry>>;\n\n/** Codegenable shape — what each Package contributes to the codegen\n * orchestrator. Defined once on the orchestrator's `emitBindings` consumer\n * contract (`orchestrators/codegen/bindings.ts`); re-exported here as the\n * package plugin's public surface. */\nexport type { PackageBindings };\n\n/** The typed shape one `config.packages.<name>` entry exports. */\nexport interface PackageConfigEntry {\n\treadonly mvr: string;\n\t/** Convenience = `byNetwork[config.network]` (the active network's\n\t * id). */\n\treadonly packageId: string;\n\treadonly byNetwork: Readonly<Record<string, string>>;\n\t/** Resolved (local) + declared (prod) object ids for the active\n\t * network. Present only when at least one object is known. */\n\treadonly objects?: Readonly<Record<string, string>>;\n}\n\n/** The state the LIVE binding derivation reads — the resolved package's\n * active-network id + captured object ids. */\ninterface PackageLiveState {\n\treadonly packageId: string;\n\treadonly captured: Readonly<Record<string, string>>;\n}\n\ninterface PackageBindingInput {\n\treadonly name: string;\n\treadonly mvrPlaceholder: string;\n\t/** Pinned literal id (KNOWN package with a declared id). When set, the\n\t * active-network id is a LITERAL binding (identical in both paths). When\n\t * absent (a LOCAL package, or a KNOWN-shaped local stub), the id is a\n\t * RESOLVED binding: static emits `resolveId('<mvr>')`, live computes the\n\t * real resolved id from acquired state. */\n\treadonly pinnedId?: string | undefined;\n\t/** Resolved local object captures (keyed by user `capture` name).\n\t * Surfaced into `config.objects.<name>` + `packages.<name>.objects`\n\t * for the active (local) network. Empty on the committed-stub path —\n\t * the captured IDS are loaded config data (resolved at app build/dev\n\t * time), so the static path emits `resolveValue` from `objectKeys`. */\n\treadonly captured: Readonly<Record<string, string>>;\n\t/** The capture KEYS this package declares (the user `capture` option's\n\t * key set, known at config time). Drives the object-id bindings on BOTH\n\t * paths so the committed stub carries `resolveValue('package:<name>:\n\t * objects', '<key>')` references rather than a live-only `objects` field.\n\t * When omitted, falls back to the keys present in `captured` (live path).\n\t */\n\treadonly objectKeys?: ReadonlyArray<string> | undefined;\n\t/** Declared per-network literals (testnet/mainnet). */\n\treadonly networks?: PackageNetworks | undefined;\n}\n\n/**\n * Build the package's config-binding set, declared ONCE. The `name` keys the\n * `config.packages.<name>` entry; `mvrPlaceholder` is a literal in both paths;\n * the active-network id is a RESOLVED binding (sugar `resolveId('<mvr>')` when\n * `resolveViaRuntime`, otherwise a literal already-known id). Declared\n * per-network literals (testnet/mainnet) and captured objects are literals.\n *\n * The same set drives `projectStaticConfig` (committed tree) and\n * `projectLiveConfig` (boot id-config) — no parallel projectors.\n */\nconst packageConfigBindings = (input: PackageBindingInput): ConfigBindingSet<PackageLiveState> => {\n\tconst { name, mvrPlaceholder } = input;\n\n\tconst bindings: Array<ConfigBinding<PackageLiveState>> = [];\n\n\t// `packages.<name>.mvr` — pure literal in both paths.\n\tbindings.push({\n\t\tvariant: 'literal',\n\t\tconfigPath: ['packages', name, 'mvr'],\n\t\tvalue: mvrPlaceholder,\n\t});\n\n\t// The active-network id binding. Two cases:\n\t// - no pinned id (LOCAL, or KNOWN-shaped local stub) → RESOLVED (sugar\n\t// `resolveId('<mvr>')` static; live = the concrete resolved id from\n\t// `state.packageId`).\n\t// - pinned literal (KNOWN with a declared id) → LITERAL (the id stands\n\t// identically in both paths).\n\t// Reused for `packages.<name>.packageId`, `byNetwork.localnet`, and the\n\t// `mvrOverrides` entry so all three agree.\n\tconst pinned = input.pinnedId;\n\tconst idBinding = (configPath: ReadonlyArray<string>): ConfigBinding<PackageLiveState> =>\n\t\tpinned === undefined\n\t\t\t? {\n\t\t\t\t\tvariant: 'resolved',\n\t\t\t\t\tconfigPath,\n\t\t\t\t\tnamespace: 'package',\n\t\t\t\t\tkey: `${name}:packageId`,\n\t\t\t\t\tsugar: { kind: 'id', mvrPlaceholder },\n\t\t\t\t\tlive: (state) => state.packageId,\n\t\t\t\t}\n\t\t\t: { variant: 'literal', configPath, value: pinned };\n\n\tbindings.push(idBinding(['packages', name, 'packageId']));\n\tbindings.push(idBinding(['packages', name, 'byNetwork', LOCAL_NETWORK_NAME]));\n\n\t// Declared per-network literals (testnet/mainnet) — pure literals.\n\tfor (const [net, entry] of Object.entries(input.networks ?? {})) {\n\t\tbindings.push({\n\t\t\tvariant: 'literal',\n\t\t\tconfigPath: ['packages', name, 'byNetwork', net],\n\t\t\tvalue: entry.packageId,\n\t\t});\n\t}\n\n\t// Active-network objects — captured ids (local). The captured ids are\n\t// LOADED CONFIG DATA, so each is a RESOLVED binding on the generic\n\t// `resolveValue('package:<name>:objects', '<key>')` channel: the static\n\t// committed stub emits the resolver expr, the live path bakes the real\n\t// captured id AND feeds the id-config `values` channel. The key set comes\n\t// from `objectKeys` (config-known) so BOTH paths emit identical paths —\n\t// no live-only `objects` field. Falls back to the live capture keys when\n\t// `objectKeys` is absent (the live emit path).\n\tconst objectKeys = input.objectKeys ?? Object.keys(input.captured);\n\tif (objectKeys.length > 0) {\n\t\tconst objectsNamespace = `package:${name}:objects`;\n\t\tfor (const objectKey of objectKeys) {\n\t\t\tconst objectBinding = (\n\t\t\t\tconfigPath: ReadonlyArray<string>,\n\t\t\t): ConfigBinding<PackageLiveState> => ({\n\t\t\t\tvariant: 'resolved',\n\t\t\t\tconfigPath,\n\t\t\t\tnamespace: objectsNamespace,\n\t\t\t\tkey: objectKey,\n\t\t\t\tlive: (state) => (state.captured[objectKey] ?? null) as JsonValue,\n\t\t\t});\n\t\t\tbindings.push(objectBinding(['packages', name, 'objects', objectKey]));\n\t\t\t// Top-level `objects.<name>.<key>` mirror.\n\t\t\tbindings.push(objectBinding(['objects', name, objectKey]));\n\t\t}\n\t}\n\n\t// Active-network MVR override entry — `{ [mvr]: <active id> }`. A\n\t// resolved binding always emits (the resolver expr / live id); a pinned\n\t// literal emits only when non-empty.\n\tif (pinned === undefined || pinned.length > 0) {\n\t\tbindings.push(idBinding(['mvrOverrides', mvrPlaceholder]));\n\t}\n\n\treturn {\n\t\tbucket: 'config.ts',\n\t\tkind: 'package',\n\t\temitterName: 'package',\n\t\t// One Package contribution per published package — shared `'package'`\n\t\t// emitter name is by-design (the orchestrator skips its uniqueness\n\t\t// check for this flag).\n\t\tallowEmitterNameRepetition: true,\n\t\tbindings,\n\t};\n};\n\n/**\n * Build the package's `CodegenableDecl` from its binding set via the unified\n * `configCodegenable` derivation. Mode `'live'` bakes concrete values + feeds\n * the id-config; `'static'` emits resolver expressions. The decl ALSO exports\n * `packageBindings` (the `extraExports` hook) so the orchestrator's\n * `isPackageBindings` seam forwards it to the Move-bindings emitter (bindings\n * stay in `generated/bindings/`).\n */\nconst packageDecl = (\n\tset: ConfigBindingSet<PackageLiveState>,\n\tbindings: PackageBindings,\n\thow: 'static' | { readonly mode: 'live'; readonly state: PackageLiveState },\n): CodegenableDecl<'package'> =>\n\tconfigCodegenable<PackageLiveState, 'package'>(set, how, {\n\t\textraExports: { packageBindings: bindings },\n\t});\n\n/** Build the Codegenable contribution for a local package (LIVE path).\n * Bakes the resolved active-network id + captured objects. */\nexport const makeLocalCodegenable = (\n\tresolved: ResolvedLocalPackage,\n\toptions: {\n\t\treadonly excluded: boolean;\n\t\treadonly networks?: PackageNetworks;\n\t},\n): CodegenableDecl<'package'> => {\n\t// Coerce the resolved placeholder into the current `@local/<slug>` named\n\t// form at the emit seam rather than trusting it verbatim — a cache-served\n\t// `mvrPlaceholder` can be a STALE BARE slug. `mvrNamedFormFrom` is pure +\n\t// deterministic; computed ONCE so the binding default and `config.mvr`\n\t// stay equal. A LOCAL package has NO pinned id — the active-network id is\n\t// always a RESOLVED binding (live bakes the real id; static emits\n\t// `resolveId`).\n\tconst mvrPlaceholder = mvrNamedFormFrom(resolved.mvrPlaceholder);\n\tconst set = packageConfigBindings({\n\t\tname: resolved.name,\n\t\tmvrPlaceholder,\n\t\tcaptured: resolved.captured,\n\t\t...(options.networks !== undefined ? { networks: options.networks } : {}),\n\t});\n\tconst bindings: PackageBindings = {\n\t\tname: resolved.name,\n\t\tpackageId: resolved.packageId,\n\t\tmvrPlaceholder,\n\t\tsourcePath: resolved.sourcePath,\n\t\texcluded: options.excluded,\n\t};\n\treturn packageDecl(set, bindings, {\n\t\tmode: 'live',\n\t\tstate: { packageId: resolved.packageId, captured: resolved.captured },\n\t});\n};\n\n/** Build the Codegenable contribution for a known package — `sourcePath:\n * null`, no captured object ids. A KNOWN package's declared id is a PINNED\n * LITERAL (not loaded runtime data), so it renders identically in both the\n * live and static paths. */\nexport const makeKnownCodegenable = (\n\tresolved: ResolvedKnownPackage,\n\toptions: { readonly networks?: PackageNetworks } = {},\n): CodegenableDecl<'package'> => {\n\t// Defensive parity with the local emit seam: coerce to the current\n\t// `@local/<slug>` named form (preserving an already-named override).\n\tconst mvrPlaceholder = mvrNamedFormFrom(resolved.mvrPlaceholder);\n\tconst set = packageConfigBindings({\n\t\tname: resolved.name,\n\t\tmvrPlaceholder,\n\t\tcaptured: {},\n\t\tpinnedId: resolved.packageId,\n\t\t...(options.networks !== undefined ? { networks: options.networks } : {}),\n\t});\n\tconst bindings: PackageBindings = {\n\t\tname: resolved.name,\n\t\tpackageId: resolved.packageId,\n\t\tmvrPlaceholder,\n\t\tsourcePath: null,\n\t\texcluded: true, // implicit — KnownPackages never emit bindings.\n\t};\n\t// A pinned literal renders identically in both paths; derive as `static`\n\t// (the literal bindings ignore live state).\n\treturn packageDecl(set, bindings, 'static');\n};\n\n// ---------------------------------------------------------------------------\n// Stack-free codegen derivation (the `codegen` verb)\n//\n// The live `start` body resolves a package (publish/verify) and feeds the\n// resolved value into `makeLocalCodegenable` / `makeKnownCodegenable`. The\n// `staticCodegen` sources below reconstruct the SAME decls from CONFIG ALONE\n// — no chain, no publish — drawing the `packageId` from the projection\n// id-resolver (sentinel for `'placeholder'`, declared id for `'known'`). The\n// decl SHAPE is identical to the live path.\n// ---------------------------------------------------------------------------\n\n/** Build the static (stack-free) codegen source for a LOCAL package.\n * `sourcePath` is the resolved on-disk Move tree the bindings emitter\n * compiles (a local `sourcePath`; a git source whose tree has not been\n * materialized contributes `null`, so the bindings step skips it). */\nexport const makeLocalStaticCodegen = (config: {\n\treadonly name: string;\n\treadonly sourcePath: string | null;\n\treadonly mvrPlaceholder?: string | undefined;\n\treadonly excluded: boolean;\n\treadonly networks?: PackageNetworks | undefined;\n\t/** Capture KEYS declared by the user `capture` option (config-known).\n\t * The static stub emits `resolveValue('package:<name>:objects', '<key>')`\n\t * for each so the committed tree carries object-id references with NO\n\t * baked id and NO live-only `objects` field. */\n\treadonly objectKeys?: ReadonlyArray<string> | undefined;\n}): StaticCodegenSource => {\n\tconst mvrPlaceholder = mvrNamedForm(config.mvrPlaceholder ?? config.name);\n\treturn () => {\n\t\t// A LOCAL package has no pinned id — resolve the active id at app\n\t\t// build/dev time, never embed it in the committed tree. A git source\n\t\t// whose tree has NOT been materialized has no local path, so the\n\t\t// bindings emitter can't compile it; the `sourcePath` carries through\n\t\t// (null → bindings step skips it) but the `config.ts` entry is the same.\n\t\tconst set = packageConfigBindings({\n\t\t\tname: config.name,\n\t\t\tmvrPlaceholder,\n\t\t\tcaptured: {},\n\t\t\t...(config.objectKeys !== undefined ? { objectKeys: config.objectKeys } : {}),\n\t\t\t...(config.networks !== undefined ? { networks: config.networks } : {}),\n\t\t\t// No pinned id — the active id resolves at app build/dev time.\n\t\t});\n\t\tconst bindings: PackageBindings = {\n\t\t\tname: config.name,\n\t\t\t// No live publish → the committed stub carries no id (the resolver\n\t\t\t// fills it at app build/dev time). Carry the sentinel-free name.\n\t\t\tpackageId: '',\n\t\t\tmvrPlaceholder,\n\t\t\tsourcePath: config.sourcePath,\n\t\t\texcluded: config.sourcePath === null ? true : config.excluded,\n\t\t};\n\t\treturn [packageDecl(set, bindings, 'static')];\n\t};\n};\n\n/** Build the static (stack-free) codegen source for a KNOWN package. Known\n * packages already carry a literal `packageId` in config; the committed stub\n * emits it verbatim. */\nexport const makeKnownStaticCodegen = (config: {\n\treadonly name: string;\n\treadonly packageId: string;\n\treadonly upgradeCapId?: string | undefined;\n\treadonly mvrPlaceholder?: string | undefined;\n\treadonly networks?: PackageNetworks | undefined;\n}): StaticCodegenSource => {\n\tconst mvrPlaceholder = mvrNamedForm(config.mvrPlaceholder ?? config.name);\n\treturn () => {\n\t\tconst set = packageConfigBindings({\n\t\t\tname: config.name,\n\t\t\tmvrPlaceholder,\n\t\t\tcaptured: {},\n\t\t\tpinnedId: config.packageId,\n\t\t\t...(config.networks !== undefined ? { networks: config.networks } : {}),\n\t\t});\n\t\tconst bindings: PackageBindings = {\n\t\t\tname: config.name,\n\t\t\tpackageId: config.packageId,\n\t\t\tmvrPlaceholder,\n\t\t\tsourcePath: null,\n\t\t\texcluded: true,\n\t\t};\n\t\t// A known package's literal id renders the same in both paths — derive\n\t\t// the decl as `static` (the literal bindings ignore live state).\n\t\treturn [packageDecl(set, bindings, 'static')];\n\t};\n};\n"],"mappings":";;;;;;;;;;;;;;AA6GA,MAAM,yBAAyB,UAAmE;CACjG,MAAM,EAAE,MAAM,mBAAmB;CAEjC,MAAM,WAAmD,CAAC;CAG1D,SAAS,KAAK;EACb,SAAS;EACT,YAAY;GAAC;GAAY;GAAM;EAAK;EACpC,OAAO;CACR,CAAC;CAUD,MAAM,SAAS,MAAM;CACrB,MAAM,aAAa,eAClB,WAAW,KAAA,IACR;EACA,SAAS;EACT;EACA,WAAW;EACX,KAAK,GAAG,KAAK;EACb,OAAO;GAAE,MAAM;GAAM;EAAe;EACpC,OAAO,UAAU,MAAM;CACxB,IACC;EAAE,SAAS;EAAW;EAAY,OAAO;CAAO;CAEpD,SAAS,KAAK,UAAU;EAAC;EAAY;EAAM;CAAW,CAAC,CAAC;CACxD,SAAS,KAAK,UAAU;EAAC;EAAY;EAAM;EAAa;CAAkB,CAAC,CAAC;CAG5E,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,YAAY,CAAC,CAAC,GAC7D,SAAS,KAAK;EACb,SAAS;EACT,YAAY;GAAC;GAAY;GAAM;GAAa;EAAG;EAC/C,OAAO,MAAM;CACd,CAAC;CAWF,MAAM,aAAa,MAAM,cAAc,OAAO,KAAK,MAAM,QAAQ;CACjE,IAAI,WAAW,SAAS,GAAG;EAC1B,MAAM,mBAAmB,WAAW,KAAK;EACzC,KAAK,MAAM,aAAa,YAAY;GACnC,MAAM,iBACL,gBACsC;IACtC,SAAS;IACT;IACA,WAAW;IACX,KAAK;IACL,OAAO,UAAW,MAAM,SAAS,cAAc;GAChD;GACA,SAAS,KAAK,cAAc;IAAC;IAAY;IAAM;IAAW;GAAS,CAAC,CAAC;GAErE,SAAS,KAAK,cAAc;IAAC;IAAW;IAAM;GAAS,CAAC,CAAC;EAC1D;CACD;CAKA,IAAI,WAAW,KAAA,KAAa,OAAO,SAAS,GAC3C,SAAS,KAAK,UAAU,CAAC,gBAAgB,cAAc,CAAC,CAAC;CAG1D,OAAO;EACN,QAAQ;EACR,MAAM;EACN,aAAa;EAIb,4BAA4B;EAC5B;CACD;AACD;;;;;;;;;AAUA,MAAM,eACL,KACA,UACA,QAEA,kBAA+C,KAAK,KAAK,EACxD,cAAc,EAAE,iBAAiB,SAAS,EAC3C,CAAC;;;AAIF,MAAa,wBACZ,UACA,YAIgC;CAQhC,MAAM,iBAAiB,iBAAiB,SAAS,cAAc;CAc/D,OAAO,YAbK,sBAAsB;EACjC,MAAM,SAAS;EACf;EACA,UAAU,SAAS;EACnB,GAAI,QAAQ,aAAa,KAAA,IAAY,EAAE,UAAU,QAAQ,SAAS,IAAI,CAAC;CACxE,CAQqB,GAAG;EANvB,MAAM,SAAS;EACf,WAAW,SAAS;EACpB;EACA,YAAY,SAAS;EACrB,UAAU,QAAQ;CAEY,GAAG;EACjC,MAAM;EACN,OAAO;GAAE,WAAW,SAAS;GAAW,UAAU,SAAS;EAAS;CACrE,CAAC;AACF;;;;;AAMA,MAAa,wBACZ,UACA,UAAmD,CAAC,MACpB;CAGhC,MAAM,iBAAiB,iBAAiB,SAAS,cAAc;CAiB/D,OAAO,YAhBK,sBAAsB;EACjC,MAAM,SAAS;EACf;EACA,UAAU,CAAC;EACX,UAAU,SAAS;EACnB,GAAI,QAAQ,aAAa,KAAA,IAAY,EAAE,UAAU,QAAQ,SAAS,IAAI,CAAC;CACxE,CAUqB,GAAG;EARvB,MAAM,SAAS;EACf,WAAW,SAAS;EACpB;EACA,YAAY;EACZ,UAAU;CAIoB,GAAG,QAAQ;AAC3C;;;;;AAiBA,MAAa,0BAA0B,WAWZ;CAC1B,MAAM,iBAAiB,aAAa,OAAO,kBAAkB,OAAO,IAAI;CACxE,aAAa;EAuBZ,OAAO,CAAC,YAjBI,sBAAsB;GACjC,MAAM,OAAO;GACb;GACA,UAAU,CAAC;GACX,GAAI,OAAO,eAAe,KAAA,IAAY,EAAE,YAAY,OAAO,WAAW,IAAI,CAAC;GAC3E,GAAI,OAAO,aAAa,KAAA,IAAY,EAAE,UAAU,OAAO,SAAS,IAAI,CAAC;EAEtE,CAUsB,GAAG;GARxB,MAAM,OAAO;GAGb,WAAW;GACX;GACA,YAAY,OAAO;GACnB,UAAU,OAAO,eAAe,OAAO,OAAO,OAAO;EAEtB,GAAG,QAAQ,CAAC;CAC7C;AACD;;;;AAKA,MAAa,0BAA0B,WAMZ;CAC1B,MAAM,iBAAiB,aAAa,OAAO,kBAAkB,OAAO,IAAI;CACxE,aAAa;EAiBZ,OAAO,CAAC,YAhBI,sBAAsB;GACjC,MAAM,OAAO;GACb;GACA,UAAU,CAAC;GACX,UAAU,OAAO;GACjB,GAAI,OAAO,aAAa,KAAA,IAAY,EAAE,UAAU,OAAO,SAAS,IAAI,CAAC;EACtE,CAUsB,GAAG;GARxB,MAAM,OAAO;GACb,WAAW,OAAO;GAClB;GACA,YAAY;GACZ,UAAU;EAIqB,GAAG,QAAQ,CAAC;CAC7C;AACD"}
|
|
@@ -1,10 +1,58 @@
|
|
|
1
1
|
//#region src/plugins/package/dep-resolution.ts
|
|
2
2
|
/**
|
|
3
|
-
* Slugify a package name into the
|
|
4
|
-
*
|
|
3
|
+
* Slugify a package name into the bare slug shape (`[a-z0-9-]+`).
|
|
4
|
+
*
|
|
5
|
+
* This bare slug is what codegen writes into Move-source file stems /
|
|
6
|
+
* the dead `package/<slug>.ts` output path, and is the `{app}`
|
|
7
|
+
* component of the MVR named form (`mvrNamedForm` below).
|
|
5
8
|
*/
|
|
6
9
|
const mvrSlugify = (name) => name.toLowerCase().replace(/[^a-z0-9-]+/g, "-").replace(/^-+|-+$/g, "").replace(/-{2,}/g, "-");
|
|
10
|
+
/**
|
|
11
|
+
* Local-org used for the MVR named form devstack emits as the binding
|
|
12
|
+
* package default + `config.packages.<name>.mvr`. It is syntactically
|
|
13
|
+
* valid per `@mysten/sui`'s `isValidSuiNSName` (it contains `@`), so
|
|
14
|
+
* the resulting `@local/<slug>` passes BOTH `hasMvrName` and
|
|
15
|
+
* `isValidNamedPackage`. Resolution never hits a real registry — the
|
|
16
|
+
* dapp-kit/`MvrClient` override map keys on this exact string and
|
|
17
|
+
* short-circuits to the resolved `byNetwork.<network>` id.
|
|
18
|
+
*/
|
|
19
|
+
const MVR_LOCAL_ORG = "@local";
|
|
20
|
+
/**
|
|
21
|
+
* Build the MVR NAMED form (`@local/<slug>`) from a package name.
|
|
22
|
+
*
|
|
23
|
+
* This is the value emitted as BOTH the generated-binding package
|
|
24
|
+
* default (`options.package ?? '@local/<slug>'`) AND
|
|
25
|
+
* `config.packages.<name>.mvr` — the two MUST match so a dapp can key
|
|
26
|
+
* an `MvrClient` override on `config.mvr` and have generated functions
|
|
27
|
+
* resolve by name alone. Verified to satisfy `isValidNamedPackage` and
|
|
28
|
+
* `hasMvrName` (see `test/plugins/package/mvr-named-form.test.ts`).
|
|
29
|
+
*/
|
|
30
|
+
const mvrNamedForm = (name) => `${MVR_LOCAL_ORG}/${mvrSlugify(name)}`;
|
|
31
|
+
/**
|
|
32
|
+
* Coerce a (possibly STALE) persisted MVR placeholder into the current
|
|
33
|
+
* `@local/<slug>` named form.
|
|
34
|
+
*
|
|
35
|
+
* The package-publish cache (`projection.v4.json`'s `mvrPlaceholder`)
|
|
36
|
+
* persists whatever placeholder shape was current at publish time. A
|
|
37
|
+
* stack created BEFORE the `mvrSlugify`→`mvrNamedForm` change carries a
|
|
38
|
+
* BARE slug (e.g. `'vault'`), which an INCREMENTAL re-apply would
|
|
39
|
+
* otherwise emit verbatim — and a bare slug fails `hasMvrName`, so the
|
|
40
|
+
* generated binding's `package:` default never resolves through the
|
|
41
|
+
* `MvrClient` override map. We MUST always emit the named form.
|
|
42
|
+
*
|
|
43
|
+
* `mvrNamedForm` is not idempotent over an already-named string
|
|
44
|
+
* (`mvrSlugify('@local/vault')` → `'local-vault'`), so we cannot blindly
|
|
45
|
+
* re-wrap. Instead:
|
|
46
|
+
* - if the placeholder is ALREADY in `@<org>/...` named form, keep it
|
|
47
|
+
* verbatim (this preserves a user-supplied `mvrPlaceholder` override);
|
|
48
|
+
* - otherwise treat it as a bare slug/name and wrap it via
|
|
49
|
+
* `mvrNamedForm`.
|
|
50
|
+
*
|
|
51
|
+
* Pure + deterministic over its input, so recomputing at the emit seam is
|
|
52
|
+
* always safe and always current regardless of cached projection state.
|
|
53
|
+
*/
|
|
54
|
+
const mvrNamedFormFrom = (placeholder) => placeholder.startsWith(`${MVR_LOCAL_ORG}/`) ? placeholder : mvrNamedForm(placeholder);
|
|
7
55
|
//#endregion
|
|
8
|
-
export {
|
|
56
|
+
export { mvrNamedForm, mvrNamedFormFrom };
|
|
9
57
|
|
|
10
58
|
//# sourceMappingURL=dep-resolution.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dep-resolution.mjs","names":[],"sources":["../../../src/plugins/package/dep-resolution.ts"],"sourcesContent":["// Move-dep helpers.\n//\n// `mvrSlugify` normalises a package name into the slug shape that\n// codegen emitters write into Move source as MVR placeholders.\n// Distilled doc Invariant 13: the result MUST satisfy `[a-z0-9-]+`\n// (downstream validators reject underscores).\n\n/**\n * Slugify a package name into the
|
|
1
|
+
{"version":3,"file":"dep-resolution.mjs","names":[],"sources":["../../../src/plugins/package/dep-resolution.ts"],"sourcesContent":["// Move-dep helpers.\n//\n// `mvrSlugify` normalises a package name into the slug shape that\n// codegen emitters write into Move source as MVR placeholders.\n// Distilled doc Invariant 13: the result MUST satisfy `[a-z0-9-]+`\n// (downstream validators reject underscores).\n\n/**\n * Slugify a package name into the bare slug shape (`[a-z0-9-]+`).\n *\n * This bare slug is what codegen writes into Move-source file stems /\n * the dead `package/<slug>.ts` output path, and is the `{app}`\n * component of the MVR named form (`mvrNamedForm` below).\n */\nexport const mvrSlugify = (name: string): string =>\n\tname\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9-]+/g, '-')\n\t\t.replace(/^-+|-+$/g, '')\n\t\t.replace(/-{2,}/g, '-');\n\n/**\n * Local-org used for the MVR named form devstack emits as the binding\n * package default + `config.packages.<name>.mvr`. It is syntactically\n * valid per `@mysten/sui`'s `isValidSuiNSName` (it contains `@`), so\n * the resulting `@local/<slug>` passes BOTH `hasMvrName` and\n * `isValidNamedPackage`. Resolution never hits a real registry — the\n * dapp-kit/`MvrClient` override map keys on this exact string and\n * short-circuits to the resolved `byNetwork.<network>` id.\n */\nconst MVR_LOCAL_ORG = '@local';\n\n/**\n * Build the MVR NAMED form (`@local/<slug>`) from a package name.\n *\n * This is the value emitted as BOTH the generated-binding package\n * default (`options.package ?? '@local/<slug>'`) AND\n * `config.packages.<name>.mvr` — the two MUST match so a dapp can key\n * an `MvrClient` override on `config.mvr` and have generated functions\n * resolve by name alone. Verified to satisfy `isValidNamedPackage` and\n * `hasMvrName` (see `test/plugins/package/mvr-named-form.test.ts`).\n */\nexport const mvrNamedForm = (name: string): string => `${MVR_LOCAL_ORG}/${mvrSlugify(name)}`;\n\n/**\n * Coerce a (possibly STALE) persisted MVR placeholder into the current\n * `@local/<slug>` named form.\n *\n * The package-publish cache (`projection.v4.json`'s `mvrPlaceholder`)\n * persists whatever placeholder shape was current at publish time. A\n * stack created BEFORE the `mvrSlugify`→`mvrNamedForm` change carries a\n * BARE slug (e.g. `'vault'`), which an INCREMENTAL re-apply would\n * otherwise emit verbatim — and a bare slug fails `hasMvrName`, so the\n * generated binding's `package:` default never resolves through the\n * `MvrClient` override map. We MUST always emit the named form.\n *\n * `mvrNamedForm` is not idempotent over an already-named string\n * (`mvrSlugify('@local/vault')` → `'local-vault'`), so we cannot blindly\n * re-wrap. Instead:\n * - if the placeholder is ALREADY in `@<org>/...` named form, keep it\n * verbatim (this preserves a user-supplied `mvrPlaceholder` override);\n * - otherwise treat it as a bare slug/name and wrap it via\n * `mvrNamedForm`.\n *\n * Pure + deterministic over its input, so recomputing at the emit seam is\n * always safe and always current regardless of cached projection state.\n */\nexport const mvrNamedFormFrom = (placeholder: string): string =>\n\tplaceholder.startsWith(`${MVR_LOCAL_ORG}/`) ? placeholder : mvrNamedForm(placeholder);\n"],"mappings":";;;;;;;;AAcA,MAAa,cAAc,SAC1B,KACE,YAAY,CAAC,CACb,QAAQ,gBAAgB,GAAG,CAAC,CAC5B,QAAQ,YAAY,EAAE,CAAC,CACvB,QAAQ,UAAU,GAAG;;;;;;;;;;AAWxB,MAAM,gBAAgB;;;;;;;;;;;AAYtB,MAAa,gBAAgB,SAAyB,GAAG,cAAc,GAAG,WAAW,IAAI;;;;;;;;;;;;;;;;;;;;;;;;AAyBzF,MAAa,oBAAoB,gBAChC,YAAY,WAAW,GAAG,cAAc,EAAE,IAAI,cAAc,aAAa,WAAW"}
|
|
@@ -4,10 +4,7 @@ const publishError = (phase, parts) => ({
|
|
|
4
4
|
phase,
|
|
5
5
|
...parts
|
|
6
6
|
});
|
|
7
|
-
/** Error tags this plugin contributes — surfaced to the cause walker
|
|
8
|
-
* via `PluginErrorContribution`. */
|
|
9
|
-
const PACKAGE_ERROR_TAGS = ["PublishError"];
|
|
10
7
|
//#endregion
|
|
11
|
-
export {
|
|
8
|
+
export { publishError };
|
|
12
9
|
|
|
13
10
|
//# sourceMappingURL=errors.mjs.map
|