@mysten-incubation/devstack 0.0.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/LICENSE +189 -0
- package/README.md +94 -0
- package/dist/_virtual/_rolldown/runtime.mjs +13 -0
- package/dist/api/define-capabilities.d.mts +25 -0
- package/dist/api/define-capabilities.mjs +19 -0
- package/dist/api/define-capabilities.mjs.map +1 -0
- package/dist/api/define-devstack-with.d.mts +41 -0
- package/dist/api/define-devstack-with.mjs +24 -0
- package/dist/api/define-devstack-with.mjs.map +1 -0
- package/dist/api/define-devstack.d.mts +62 -0
- package/dist/api/define-devstack.mjs +108 -0
- package/dist/api/define-devstack.mjs.map +1 -0
- package/dist/api/define-plugin.d.mts +1 -0
- package/dist/api/inference-network.mjs +122 -0
- package/dist/api/inference-network.mjs.map +1 -0
- package/dist/api/mode-narrowed-factory.d.mts +26 -0
- package/dist/api/mode-narrowed-factory.mjs +8 -0
- package/dist/api/mode-narrowed-factory.mjs.map +1 -0
- package/dist/api/plugin-errors.mjs +10 -0
- package/dist/api/plugin-errors.mjs.map +1 -0
- package/dist/api/run-stack.d.mts +82 -0
- package/dist/api/run-stack.mjs +127 -0
- package/dist/api/run-stack.mjs.map +1 -0
- package/dist/build-integrations/playwright/config.d.mts +92 -0
- package/dist/build-integrations/playwright/config.mjs +71 -0
- package/dist/build-integrations/playwright/config.mjs.map +1 -0
- package/dist/build-integrations/playwright/errors.d.mts +82 -0
- package/dist/build-integrations/playwright/errors.mjs +43 -0
- package/dist/build-integrations/playwright/errors.mjs.map +1 -0
- package/dist/build-integrations/playwright/global-setup.d.mts +64 -0
- package/dist/build-integrations/playwright/global-setup.mjs +44 -0
- package/dist/build-integrations/playwright/global-setup.mjs.map +1 -0
- package/dist/build-integrations/playwright/index.d.mts +6 -0
- package/dist/build-integrations/playwright/index.mjs +6 -0
- package/dist/build-integrations/playwright/stack-context.d.mts +95 -0
- package/dist/build-integrations/playwright/stack-context.mjs +277 -0
- package/dist/build-integrations/playwright/stack-context.mjs.map +1 -0
- package/dist/build-integrations/playwright/wallet-context.d.mts +87 -0
- package/dist/build-integrations/playwright/wallet-context.mjs +148 -0
- package/dist/build-integrations/playwright/wallet-context.mjs.map +1 -0
- package/dist/build-integrations/runtime/cold-start-url.d.mts +67 -0
- package/dist/build-integrations/runtime/cold-start-url.mjs +56 -0
- package/dist/build-integrations/runtime/cold-start-url.mjs.map +1 -0
- package/dist/build-integrations/runtime/dapp-kit-slot.mjs +10 -0
- package/dist/build-integrations/runtime/dapp-kit-slot.mjs.map +1 -0
- package/dist/build-integrations/runtime/discover.d.mts +78 -0
- package/dist/build-integrations/runtime/discover.mjs +124 -0
- package/dist/build-integrations/runtime/discover.mjs.map +1 -0
- package/dist/build-integrations/runtime/endpoint-registry.d.mts +26 -0
- package/dist/build-integrations/runtime/endpoint-registry.mjs +41 -0
- package/dist/build-integrations/runtime/endpoint-registry.mjs.map +1 -0
- package/dist/build-integrations/runtime/errors.d.mts +64 -0
- package/dist/build-integrations/runtime/errors.mjs +51 -0
- package/dist/build-integrations/runtime/errors.mjs.map +1 -0
- package/dist/build-integrations/runtime/index.d.mts +7 -0
- package/dist/build-integrations/runtime/index.mjs +6 -0
- package/dist/build-integrations/runtime/read-stack-context.d.mts +38 -0
- package/dist/build-integrations/runtime/read-stack-context.mjs +130 -0
- package/dist/build-integrations/runtime/read-stack-context.mjs.map +1 -0
- package/dist/build-integrations/runtime/stack-context.d.mts +53 -0
- package/dist/build-integrations/vitest/config.d.mts +62 -0
- package/dist/build-integrations/vitest/config.mjs +80 -0
- package/dist/build-integrations/vitest/config.mjs.map +1 -0
- package/dist/build-integrations/vitest/env.d.mts +48 -0
- package/dist/build-integrations/vitest/env.mjs +50 -0
- package/dist/build-integrations/vitest/env.mjs.map +1 -0
- package/dist/build-integrations/vitest/errors.d.mts +44 -0
- package/dist/build-integrations/vitest/errors.mjs +18 -0
- package/dist/build-integrations/vitest/errors.mjs.map +1 -0
- package/dist/build-integrations/vitest/index.d.mts +6 -0
- package/dist/build-integrations/vitest/index.mjs +6 -0
- package/dist/build-integrations/vitest/setup.d.mts +53 -0
- package/dist/build-integrations/vitest/setup.mjs +56 -0
- package/dist/build-integrations/vitest/setup.mjs.map +1 -0
- package/dist/build-integrations/vitest/stack-context.d.mts +58 -0
- package/dist/build-integrations/vitest/stack-context.mjs +67 -0
- package/dist/build-integrations/vitest/stack-context.mjs.map +1 -0
- package/dist/cli/main.d.mts +5 -0
- package/dist/cli/main.mjs +586 -0
- package/dist/cli/main.mjs.map +1 -0
- package/dist/cli/prune-direct.mjs +216 -0
- package/dist/cli/prune-direct.mjs.map +1 -0
- package/dist/cli/snapshot-reader.mjs +73 -0
- package/dist/cli/snapshot-reader.mjs.map +1 -0
- package/dist/cli/up-lifecycle.mjs +28 -0
- package/dist/cli/up-lifecycle.mjs.map +1 -0
- package/dist/contracts/capability-decl.d.mts +42 -0
- package/dist/contracts/chain-probe.d.mts +26 -0
- package/dist/contracts/chain-probe.mjs +8 -0
- package/dist/contracts/chain-probe.mjs.map +1 -0
- package/dist/contracts/codegenable.d.mts +43 -0
- package/dist/contracts/container-runtime.d.mts +245 -0
- package/dist/contracts/liveness-classifier.d.mts +19 -0
- package/dist/contracts/network-resolver.d.mts +15 -0
- package/dist/contracts/network-resolver.mjs +7 -0
- package/dist/contracts/network-resolver.mjs.map +1 -0
- package/dist/contracts/projection.d.mts +15 -0
- package/dist/contracts/routable.d.mts +53 -0
- package/dist/contracts/snapshotable.d.mts +39 -0
- package/dist/contracts/strategy-contributor.d.mts +26 -0
- package/dist/index.d.mts +89 -0
- package/dist/index.mjs +37 -0
- package/dist/orchestrators/codegen/bindings.d.mts +2 -0
- package/dist/orchestrators/codegen/bindings.mjs +340 -0
- package/dist/orchestrators/codegen/bindings.mjs.map +1 -0
- package/dist/orchestrators/codegen/emit.mjs +56 -0
- package/dist/orchestrators/codegen/emit.mjs.map +1 -0
- package/dist/orchestrators/codegen/errors.d.mts +1 -0
- package/dist/orchestrators/codegen/errors.mjs +66 -0
- package/dist/orchestrators/codegen/errors.mjs.map +1 -0
- package/dist/orchestrators/codegen/extras.mjs +16 -0
- package/dist/orchestrators/codegen/extras.mjs.map +1 -0
- package/dist/orchestrators/codegen/format.mjs +109 -0
- package/dist/orchestrators/codegen/format.mjs.map +1 -0
- package/dist/orchestrators/codegen/gitignore.mjs +67 -0
- package/dist/orchestrators/codegen/gitignore.mjs.map +1 -0
- package/dist/orchestrators/codegen/paths.d.mts +1 -0
- package/dist/orchestrators/codegen/paths.mjs +33 -0
- package/dist/orchestrators/codegen/paths.mjs.map +1 -0
- package/dist/orchestrators/codegen/permissions.mjs +6 -0
- package/dist/orchestrators/codegen/permissions.mjs.map +1 -0
- package/dist/orchestrators/codegen/service.d.mts +1 -0
- package/dist/orchestrators/codegen/service.mjs +276 -0
- package/dist/orchestrators/codegen/service.mjs.map +1 -0
- package/dist/orchestrators/router/cleanup.mjs +58 -0
- package/dist/orchestrators/router/cleanup.mjs.map +1 -0
- package/dist/orchestrators/router/cors.mjs +31 -0
- package/dist/orchestrators/router/cors.mjs.map +1 -0
- package/dist/orchestrators/router/entrypoints.d.mts +1 -0
- package/dist/orchestrators/router/entrypoints.mjs +80 -0
- package/dist/orchestrators/router/entrypoints.mjs.map +1 -0
- package/dist/orchestrators/router/errors.d.mts +1 -0
- package/dist/orchestrators/router/errors.mjs +103 -0
- package/dist/orchestrators/router/errors.mjs.map +1 -0
- package/dist/orchestrators/router/file-provider.d.mts +1 -0
- package/dist/orchestrators/router/file-provider.mjs +320 -0
- package/dist/orchestrators/router/file-provider.mjs.map +1 -0
- package/dist/orchestrators/router/hostname.d.mts +1 -0
- package/dist/orchestrators/router/hostname.mjs +107 -0
- package/dist/orchestrators/router/hostname.mjs.map +1 -0
- package/dist/orchestrators/router/index.d.mts +1 -0
- package/dist/orchestrators/router/profile.d.mts +1 -0
- package/dist/orchestrators/router/profile.mjs +109 -0
- package/dist/orchestrators/router/profile.mjs.map +1 -0
- package/dist/orchestrators/router/service.d.mts +3 -0
- package/dist/orchestrators/router/service.mjs +421 -0
- package/dist/orchestrators/router/service.mjs.map +1 -0
- package/dist/orchestrators/router/traefik-container.d.mts +1 -0
- package/dist/orchestrators/router/traefik-container.mjs +229 -0
- package/dist/orchestrators/router/traefik-container.mjs.map +1 -0
- package/dist/orchestrators/runtime-composition.d.mts +10 -0
- package/dist/orchestrators/runtime-composition.mjs +168 -0
- package/dist/orchestrators/runtime-composition.mjs.map +1 -0
- package/dist/orchestrators/snapshot/capture.d.mts +1 -0
- package/dist/orchestrators/snapshot/capture.mjs +350 -0
- package/dist/orchestrators/snapshot/capture.mjs.map +1 -0
- package/dist/orchestrators/snapshot/descriptor.d.mts +1 -0
- package/dist/orchestrators/snapshot/descriptor.mjs +109 -0
- package/dist/orchestrators/snapshot/descriptor.mjs.map +1 -0
- package/dist/orchestrators/snapshot/identity-guard.d.mts +1 -0
- package/dist/orchestrators/snapshot/identity-guard.mjs +132 -0
- package/dist/orchestrators/snapshot/identity-guard.mjs.map +1 -0
- package/dist/orchestrators/snapshot/image-bundle-tags.mjs +207 -0
- package/dist/orchestrators/snapshot/image-bundle-tags.mjs.map +1 -0
- package/dist/orchestrators/snapshot/index.d.mts +1 -0
- package/dist/orchestrators/snapshot/integrity.d.mts +1 -0
- package/dist/orchestrators/snapshot/integrity.mjs +74 -0
- package/dist/orchestrators/snapshot/integrity.mjs.map +1 -0
- package/dist/orchestrators/snapshot/prune.d.mts +1 -0
- package/dist/orchestrators/snapshot/prune.mjs +110 -0
- package/dist/orchestrators/snapshot/prune.mjs.map +1 -0
- package/dist/orchestrators/snapshot/restore.d.mts +1 -0
- package/dist/orchestrators/snapshot/restore.mjs +404 -0
- package/dist/orchestrators/snapshot/restore.mjs.map +1 -0
- package/dist/orchestrators/snapshot/service.d.mts +1 -0
- package/dist/orchestrators/snapshot/service.mjs +296 -0
- package/dist/orchestrators/snapshot/service.mjs.map +1 -0
- package/dist/orchestrators/snapshot/state-document.mjs +18 -0
- package/dist/orchestrators/snapshot/state-document.mjs.map +1 -0
- package/dist/orchestrators/snapshot/wipe.d.mts +1 -0
- package/dist/orchestrators/snapshot/wipe.mjs +59 -0
- package/dist/orchestrators/snapshot/wipe.mjs.map +1 -0
- package/dist/plugins/account/codegen.d.mts +12 -0
- package/dist/plugins/account/codegen.mjs +22 -0
- package/dist/plugins/account/codegen.mjs.map +1 -0
- package/dist/plugins/account/errors.d.mts +44 -0
- package/dist/plugins/account/errors.mjs +16 -0
- package/dist/plugins/account/errors.mjs.map +1 -0
- package/dist/plugins/account/funding.d.mts +94 -0
- package/dist/plugins/account/funding.mjs +199 -0
- package/dist/plugins/account/funding.mjs.map +1 -0
- package/dist/plugins/account/index.d.mts +54 -0
- package/dist/plugins/account/index.mjs +151 -0
- package/dist/plugins/account/index.mjs.map +1 -0
- package/dist/plugins/account/keypair.d.mts +32 -0
- package/dist/plugins/account/keypair.mjs +99 -0
- package/dist/plugins/account/keypair.mjs.map +1 -0
- package/dist/plugins/account/lease.mjs +21 -0
- package/dist/plugins/account/lease.mjs.map +1 -0
- package/dist/plugins/account/registry.d.mts +33 -0
- package/dist/plugins/account/registry.mjs +36 -0
- package/dist/plugins/account/registry.mjs.map +1 -0
- package/dist/plugins/account/service.d.mts +104 -0
- package/dist/plugins/account/service.mjs +405 -0
- package/dist/plugins/account/service.mjs.map +1 -0
- package/dist/plugins/account/snapshot.mjs +33 -0
- package/dist/plugins/account/snapshot.mjs.map +1 -0
- package/dist/plugins/account/variants/env.mjs +24 -0
- package/dist/plugins/account/variants/env.mjs.map +1 -0
- package/dist/plugins/account/variants/ephemeral.mjs +72 -0
- package/dist/plugins/account/variants/ephemeral.mjs.map +1 -0
- package/dist/plugins/account/variants/impersonate.d.mts +16 -0
- package/dist/plugins/account/variants/impersonate.mjs +48 -0
- package/dist/plugins/account/variants/impersonate.mjs.map +1 -0
- package/dist/plugins/account/variants/inline.mjs +13 -0
- package/dist/plugins/account/variants/inline.mjs.map +1 -0
- package/dist/plugins/account/variants/keystore.mjs +93 -0
- package/dist/plugins/account/variants/keystore.mjs.map +1 -0
- package/dist/plugins/account/variants/signer.mjs +31 -0
- package/dist/plugins/account/variants/signer.mjs.map +1 -0
- package/dist/plugins/action/build-context.d.mts +41 -0
- package/dist/plugins/action/discriminator.d.mts +20 -0
- package/dist/plugins/action/discriminator.mjs +13 -0
- package/dist/plugins/action/discriminator.mjs.map +1 -0
- package/dist/plugins/action/errors.d.mts +31 -0
- package/dist/plugins/action/errors.mjs +13 -0
- package/dist/plugins/action/errors.mjs.map +1 -0
- package/dist/plugins/action/execute.d.mts +2 -0
- package/dist/plugins/action/execute.mjs +145 -0
- package/dist/plugins/action/execute.mjs.map +1 -0
- package/dist/plugins/action/index.d.mts +56 -0
- package/dist/plugins/action/index.mjs +82 -0
- package/dist/plugins/action/index.mjs.map +1 -0
- package/dist/plugins/action/service.d.mts +26 -0
- package/dist/plugins/action/service.mjs +84 -0
- package/dist/plugins/action/service.mjs.map +1 -0
- package/dist/plugins/coin/address-resolution.d.mts +34 -0
- package/dist/plugins/coin/address-resolution.mjs +80 -0
- package/dist/plugins/coin/address-resolution.mjs.map +1 -0
- package/dist/plugins/coin/codegen.d.mts +16 -0
- package/dist/plugins/coin/codegen.mjs +21 -0
- package/dist/plugins/coin/codegen.mjs.map +1 -0
- package/dist/plugins/coin/discovery.d.mts +26 -0
- package/dist/plugins/coin/discovery.mjs +112 -0
- package/dist/plugins/coin/discovery.mjs.map +1 -0
- package/dist/plugins/coin/errors.d.mts +48 -0
- package/dist/plugins/coin/errors.mjs +13 -0
- package/dist/plugins/coin/errors.mjs.map +1 -0
- package/dist/plugins/coin/index.d.mts +95 -0
- package/dist/plugins/coin/index.mjs +172 -0
- package/dist/plugins/coin/index.mjs.map +1 -0
- package/dist/plugins/coin/metadata.d.mts +15 -0
- package/dist/plugins/coin/metadata.mjs +99 -0
- package/dist/plugins/coin/metadata.mjs.map +1 -0
- package/dist/plugins/coin/mint.d.mts +34 -0
- package/dist/plugins/coin/mint.mjs +164 -0
- package/dist/plugins/coin/mint.mjs.map +1 -0
- package/dist/plugins/coin/registry.d.mts +1 -0
- package/dist/plugins/coin/registry.mjs +37 -0
- package/dist/plugins/coin/registry.mjs.map +1 -0
- package/dist/plugins/coin/service.d.mts +47 -0
- package/dist/plugins/coin/service.mjs +51 -0
- package/dist/plugins/coin/service.mjs.map +1 -0
- package/dist/plugins/coin/snapshot.mjs +19 -0
- package/dist/plugins/coin/snapshot.mjs.map +1 -0
- package/dist/plugins/coin/type-strings.mjs +49 -0
- package/dist/plugins/coin/type-strings.mjs.map +1 -0
- package/dist/plugins/deepbook/codegen.d.mts +39 -0
- package/dist/plugins/deepbook/codegen.mjs +15 -0
- package/dist/plugins/deepbook/codegen.mjs.map +1 -0
- package/dist/plugins/deepbook/deploy.mjs +437 -0
- package/dist/plugins/deepbook/deploy.mjs.map +1 -0
- package/dist/plugins/deepbook/errors.d.mts +29 -0
- package/dist/plugins/deepbook/errors.mjs +26 -0
- package/dist/plugins/deepbook/errors.mjs.map +1 -0
- package/dist/plugins/deepbook/faucet-strategy.d.mts +8 -0
- package/dist/plugins/deepbook/faucet-strategy.mjs +81 -0
- package/dist/plugins/deepbook/faucet-strategy.mjs.map +1 -0
- package/dist/plugins/deepbook/index.d.mts +171 -0
- package/dist/plugins/deepbook/index.mjs +359 -0
- package/dist/plugins/deepbook/index.mjs.map +1 -0
- package/dist/plugins/deepbook/plugin-key.mjs +7 -0
- package/dist/plugins/deepbook/plugin-key.mjs.map +1 -0
- package/dist/plugins/deepbook/pyth/index.mjs +226 -0
- package/dist/plugins/deepbook/pyth/index.mjs.map +1 -0
- package/dist/plugins/deepbook/routable.mjs +21 -0
- package/dist/plugins/deepbook/routable.mjs.map +1 -0
- package/dist/plugins/deepbook/snapshot.mjs +49 -0
- package/dist/plugins/deepbook/snapshot.mjs.map +1 -0
- package/dist/plugins/deepbook/types.d.mts +125 -0
- package/dist/plugins/deepbook/types.mjs +12 -0
- package/dist/plugins/deepbook/types.mjs.map +1 -0
- package/dist/plugins/faucet/dispatcher.d.mts +9 -0
- package/dist/plugins/faucet/dispatcher.mjs +13 -0
- package/dist/plugins/faucet/dispatcher.mjs.map +1 -0
- package/dist/plugins/faucet/errors.d.mts +86 -0
- package/dist/plugins/faucet/errors.mjs +19 -0
- package/dist/plugins/faucet/errors.mjs.map +1 -0
- package/dist/plugins/faucet/http.mjs +127 -0
- package/dist/plugins/faucet/http.mjs.map +1 -0
- package/dist/plugins/faucet/index.d.mts +43 -0
- package/dist/plugins/faucet/index.mjs +42 -0
- package/dist/plugins/faucet/index.mjs.map +1 -0
- package/dist/plugins/faucet/service.d.mts +20 -0
- package/dist/plugins/faucet/strategies/sui-local.d.mts +23 -0
- package/dist/plugins/faucet/strategies/sui-local.mjs +29 -0
- package/dist/plugins/faucet/strategies/sui-local.mjs.map +1 -0
- package/dist/plugins/host-service/errors.d.mts +27 -0
- package/dist/plugins/host-service/errors.mjs +14 -0
- package/dist/plugins/host-service/errors.mjs.map +1 -0
- package/dist/plugins/host-service/index.d.mts +10 -0
- package/dist/plugins/host-service/index.mjs +48 -0
- package/dist/plugins/host-service/index.mjs.map +1 -0
- package/dist/plugins/host-service/routable.mjs +24 -0
- package/dist/plugins/host-service/routable.mjs.map +1 -0
- package/dist/plugins/host-service/service.d.mts +49 -0
- package/dist/plugins/host-service/service.mjs +375 -0
- package/dist/plugins/host-service/service.mjs.map +1 -0
- package/dist/plugins/package/build.d.mts +1 -0
- package/dist/plugins/package/build.mjs +24 -0
- package/dist/plugins/package/build.mjs.map +1 -0
- package/dist/plugins/package/codegen.d.mts +19 -0
- package/dist/plugins/package/codegen.mjs +41 -0
- package/dist/plugins/package/codegen.mjs.map +1 -0
- package/dist/plugins/package/dep-resolution.mjs +10 -0
- package/dist/plugins/package/dep-resolution.mjs.map +1 -0
- package/dist/plugins/package/errors.d.mts +34 -0
- package/dist/plugins/package/errors.mjs +13 -0
- package/dist/plugins/package/errors.mjs.map +1 -0
- package/dist/plugins/package/index.d.mts +109 -0
- package/dist/plugins/package/index.mjs +207 -0
- package/dist/plugins/package/index.mjs.map +1 -0
- package/dist/plugins/package/mode-known.mjs +41 -0
- package/dist/plugins/package/mode-known.mjs.map +1 -0
- package/dist/plugins/package/mode-local.d.mts +1 -0
- package/dist/plugins/package/mode-local.mjs +183 -0
- package/dist/plugins/package/mode-local.mjs.map +1 -0
- package/dist/plugins/package/publish-executor.mjs +202 -0
- package/dist/plugins/package/publish-executor.mjs.map +1 -0
- package/dist/plugins/package/publish-output.d.mts +28 -0
- package/dist/plugins/package/publish-output.mjs +45 -0
- package/dist/plugins/package/publish-output.mjs.map +1 -0
- package/dist/plugins/package/registry.d.mts +25 -0
- package/dist/plugins/package/registry.mjs +30 -0
- package/dist/plugins/package/registry.mjs.map +1 -0
- package/dist/plugins/package/service.mjs +20 -0
- package/dist/plugins/package/service.mjs.map +1 -0
- package/dist/plugins/package/snapshot.mjs +25 -0
- package/dist/plugins/package/snapshot.mjs.map +1 -0
- package/dist/plugins/postgres/codegen.mjs +42 -0
- package/dist/plugins/postgres/codegen.mjs.map +1 -0
- package/dist/plugins/postgres/connection.d.mts +33 -0
- package/dist/plugins/postgres/connection.mjs +19 -0
- package/dist/plugins/postgres/connection.mjs.map +1 -0
- package/dist/plugins/postgres/db-ensure.mjs +100 -0
- package/dist/plugins/postgres/db-ensure.mjs.map +1 -0
- package/dist/plugins/postgres/errors.d.mts +55 -0
- package/dist/plugins/postgres/errors.mjs +29 -0
- package/dist/plugins/postgres/errors.mjs.map +1 -0
- package/dist/plugins/postgres/index.d.mts +37 -0
- package/dist/plugins/postgres/index.mjs +75 -0
- package/dist/plugins/postgres/index.mjs.map +1 -0
- package/dist/plugins/postgres/routable.mjs +33 -0
- package/dist/plugins/postgres/routable.mjs.map +1 -0
- package/dist/plugins/postgres/service.d.mts +50 -0
- package/dist/plugins/postgres/service.mjs +145 -0
- package/dist/plugins/postgres/service.mjs.map +1 -0
- package/dist/plugins/postgres/snapshot.d.mts +1 -0
- package/dist/plugins/postgres/snapshot.mjs +32 -0
- package/dist/plugins/postgres/snapshot.mjs.map +1 -0
- package/dist/plugins/router-entrypoints.mjs +21 -0
- package/dist/plugins/router-entrypoints.mjs.map +1 -0
- package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs +59 -0
- package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs.map +1 -0
- package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs +132 -0
- package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs.map +1 -0
- package/dist/plugins/seal/codegen.d.mts +19 -0
- package/dist/plugins/seal/codegen.mjs +16 -0
- package/dist/plugins/seal/codegen.mjs.map +1 -0
- package/dist/plugins/seal/config-render.mjs +82 -0
- package/dist/plugins/seal/config-render.mjs.map +1 -0
- package/dist/plugins/seal/deploy.mjs +198 -0
- package/dist/plugins/seal/deploy.mjs.map +1 -0
- package/dist/plugins/seal/errors.d.mts +52 -0
- package/dist/plugins/seal/errors.mjs +19 -0
- package/dist/plugins/seal/errors.mjs.map +1 -0
- package/dist/plugins/seal/index.d.mts +161 -0
- package/dist/plugins/seal/index.mjs +235 -0
- package/dist/plugins/seal/index.mjs.map +1 -0
- package/dist/plugins/seal/key-manager.d.mts +22 -0
- package/dist/plugins/seal/key-manager.mjs +22 -0
- package/dist/plugins/seal/key-manager.mjs.map +1 -0
- package/dist/plugins/seal/key-server.mjs +175 -0
- package/dist/plugins/seal/key-server.mjs.map +1 -0
- package/dist/plugins/seal/keygen.mjs +96 -0
- package/dist/plugins/seal/keygen.mjs.map +1 -0
- package/dist/plugins/seal/mode/fork-known.d.mts +8 -0
- package/dist/plugins/seal/mode/fork-known.mjs +23 -0
- package/dist/plugins/seal/mode/fork-known.mjs.map +1 -0
- package/dist/plugins/seal/mode/live.d.mts +18 -0
- package/dist/plugins/seal/mode/live.mjs +64 -0
- package/dist/plugins/seal/mode/live.mjs.map +1 -0
- package/dist/plugins/seal/mode/local-keygen.mjs +180 -0
- package/dist/plugins/seal/mode/local-keygen.mjs.map +1 -0
- package/dist/plugins/seal/plugin-key.mjs +7 -0
- package/dist/plugins/seal/plugin-key.mjs.map +1 -0
- package/dist/plugins/seal/registry-publish.d.mts +43 -0
- package/dist/plugins/seal/registry-publish.mjs +9 -0
- package/dist/plugins/seal/registry-publish.mjs.map +1 -0
- package/dist/plugins/seal/routable.mjs +57 -0
- package/dist/plugins/seal/routable.mjs.map +1 -0
- package/dist/plugins/seal/service.mjs +17 -0
- package/dist/plugins/seal/service.mjs.map +1 -0
- package/dist/plugins/seal/snapshot.mjs +51 -0
- package/dist/plugins/seal/snapshot.mjs.map +1 -0
- package/dist/plugins/sui/auto-tick.mjs +45 -0
- package/dist/plugins/sui/auto-tick.mjs.map +1 -0
- package/dist/plugins/sui/chain-build-container.d.mts +1 -0
- package/dist/plugins/sui/chain-probe.d.mts +85 -0
- package/dist/plugins/sui/chain-probe.mjs +104 -0
- package/dist/plugins/sui/chain-probe.mjs.map +1 -0
- package/dist/plugins/sui/codegen.d.mts +14 -0
- package/dist/plugins/sui/codegen.mjs +26 -0
- package/dist/plugins/sui/codegen.mjs.map +1 -0
- package/dist/plugins/sui/errors.d.mts +74 -0
- package/dist/plugins/sui/errors.mjs +28 -0
- package/dist/plugins/sui/errors.mjs.map +1 -0
- package/dist/plugins/sui/fork-orchestration.mjs +24 -0
- package/dist/plugins/sui/fork-orchestration.mjs.map +1 -0
- package/dist/plugins/sui/fork-transaction.mjs +96 -0
- package/dist/plugins/sui/fork-transaction.mjs.map +1 -0
- package/dist/plugins/sui/index.d.mts +318 -0
- package/dist/plugins/sui/index.mjs +182 -0
- package/dist/plugins/sui/index.mjs.map +1 -0
- package/dist/plugins/sui/mode/external.mjs +60 -0
- package/dist/plugins/sui/mode/external.mjs.map +1 -0
- package/dist/plugins/sui/mode/fork.mjs +283 -0
- package/dist/plugins/sui/mode/fork.mjs.map +1 -0
- package/dist/plugins/sui/mode/live.mjs +103 -0
- package/dist/plugins/sui/mode/live.mjs.map +1 -0
- package/dist/plugins/sui/mode/local.mjs +293 -0
- package/dist/plugins/sui/mode/local.mjs.map +1 -0
- package/dist/plugins/sui/mode/shared-boot.mjs +254 -0
- package/dist/plugins/sui/mode/shared-boot.mjs.map +1 -0
- package/dist/plugins/sui/mode/shared.d.mts +103 -0
- package/dist/plugins/sui/mode/shared.mjs +12 -0
- package/dist/plugins/sui/mode/shared.mjs.map +1 -0
- package/dist/plugins/sui/mode/spec.d.mts +94 -0
- package/dist/plugins/sui/network-resolver.d.mts +23 -0
- package/dist/plugins/sui/routable.mjs +88 -0
- package/dist/plugins/sui/routable.mjs.map +1 -0
- package/dist/plugins/sui/seed-objects.d.mts +18 -0
- package/dist/plugins/sui/seed-objects.mjs +25 -0
- package/dist/plugins/sui/seed-objects.mjs.map +1 -0
- package/dist/plugins/sui/service.mjs +38 -0
- package/dist/plugins/sui/service.mjs.map +1 -0
- package/dist/plugins/sui/snapshot.mjs +53 -0
- package/dist/plugins/sui/snapshot.mjs.map +1 -0
- package/dist/plugins/wallet/codegen.d.mts +33 -0
- package/dist/plugins/wallet/codegen.mjs +34 -0
- package/dist/plugins/wallet/codegen.mjs.map +1 -0
- package/dist/plugins/wallet/errors.d.mts +66 -0
- package/dist/plugins/wallet/errors.mjs +16 -0
- package/dist/plugins/wallet/errors.mjs.map +1 -0
- package/dist/plugins/wallet/index.d.mts +63 -0
- package/dist/plugins/wallet/index.mjs +126 -0
- package/dist/plugins/wallet/index.mjs.map +1 -0
- package/dist/plugins/wallet/origin-policy.d.mts +1 -0
- package/dist/plugins/wallet/origin-policy.mjs +65 -0
- package/dist/plugins/wallet/origin-policy.mjs.map +1 -0
- package/dist/plugins/wallet/pairing.d.mts +11 -0
- package/dist/plugins/wallet/pairing.mjs +125 -0
- package/dist/plugins/wallet/pairing.mjs.map +1 -0
- package/dist/plugins/wallet/protocol.d.mts +1 -0
- package/dist/plugins/wallet/protocol.mjs +96 -0
- package/dist/plugins/wallet/protocol.mjs.map +1 -0
- package/dist/plugins/wallet/routable.mjs +32 -0
- package/dist/plugins/wallet/routable.mjs.map +1 -0
- package/dist/plugins/wallet/server.d.mts +12 -0
- package/dist/plugins/wallet/server.mjs +317 -0
- package/dist/plugins/wallet/server.mjs.map +1 -0
- package/dist/plugins/wallet/service.d.mts +68 -0
- package/dist/plugins/wallet/service.mjs +97 -0
- package/dist/plugins/wallet/service.mjs.map +1 -0
- package/dist/plugins/wallet/snapshot.d.mts +1 -0
- package/dist/plugins/wallet/snapshot.mjs +14 -0
- package/dist/plugins/wallet/snapshot.mjs.map +1 -0
- package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs +42 -0
- package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs.map +1 -0
- package/dist/plugins/walrus/codegen.d.mts +38 -0
- package/dist/plugins/walrus/codegen.mjs +34 -0
- package/dist/plugins/walrus/codegen.mjs.map +1 -0
- package/dist/plugins/walrus/deploy-paths.mjs +14 -0
- package/dist/plugins/walrus/deploy-paths.mjs.map +1 -0
- package/dist/plugins/walrus/deploy.d.mts +1 -0
- package/dist/plugins/walrus/deploy.mjs +224 -0
- package/dist/plugins/walrus/deploy.mjs.map +1 -0
- package/dist/plugins/walrus/errors.d.mts +38 -0
- package/dist/plugins/walrus/errors.mjs +26 -0
- package/dist/plugins/walrus/errors.mjs.map +1 -0
- package/dist/plugins/walrus/faucet-strategy.d.mts +12 -0
- package/dist/plugins/walrus/faucet-strategy.mjs +62 -0
- package/dist/plugins/walrus/faucet-strategy.mjs.map +1 -0
- package/dist/plugins/walrus/index.d.mts +177 -0
- package/dist/plugins/walrus/index.mjs +284 -0
- package/dist/plugins/walrus/index.mjs.map +1 -0
- package/dist/plugins/walrus/mode/known-deploy.d.mts +25 -0
- package/dist/plugins/walrus/mode/known-deploy.mjs +71 -0
- package/dist/plugins/walrus/mode/known-deploy.mjs.map +1 -0
- package/dist/plugins/walrus/mode/local-cluster.d.mts +34 -0
- package/dist/plugins/walrus/mode/local-cluster.mjs +153 -0
- package/dist/plugins/walrus/mode/local-cluster.mjs.map +1 -0
- package/dist/plugins/walrus/plugin-key.mjs +7 -0
- package/dist/plugins/walrus/plugin-key.mjs.map +1 -0
- package/dist/plugins/walrus/registry-publish.d.mts +24 -0
- package/dist/plugins/walrus/registry-publish.mjs +7 -0
- package/dist/plugins/walrus/registry-publish.mjs.map +1 -0
- package/dist/plugins/walrus/routable.mjs +99 -0
- package/dist/plugins/walrus/routable.mjs.map +1 -0
- package/dist/plugins/walrus/service.mjs +20 -0
- package/dist/plugins/walrus/service.mjs.map +1 -0
- package/dist/plugins/walrus/snapshot.mjs +53 -0
- package/dist/plugins/walrus/snapshot.mjs.map +1 -0
- package/dist/plugins/walrus/storage-nodes.d.mts +15 -0
- package/dist/plugins/walrus/storage-nodes.mjs +154 -0
- package/dist/plugins/walrus/storage-nodes.mjs.map +1 -0
- package/dist/plugins/walrus/wal-swap.d.mts +2 -0
- package/dist/plugins/walrus/wal-swap.mjs +58 -0
- package/dist/plugins/walrus/wal-swap.mjs.map +1 -0
- package/dist/primitives/artifact-publisher.d.mts +12 -0
- package/dist/primitives/cache.d.mts +1 -0
- package/dist/runtime/built-in-plugin-layers.mjs +49 -0
- package/dist/runtime/built-in-plugin-layers.mjs.map +1 -0
- package/dist/runtime/docker/client.d.mts +2 -0
- package/dist/runtime/docker/client.mjs +54 -0
- package/dist/runtime/docker/client.mjs.map +1 -0
- package/dist/runtime/docker/container.d.mts +1 -0
- package/dist/runtime/docker/container.mjs +562 -0
- package/dist/runtime/docker/container.mjs.map +1 -0
- package/dist/runtime/docker/errors.d.mts +1 -0
- package/dist/runtime/docker/errors.mjs +187 -0
- package/dist/runtime/docker/errors.mjs.map +1 -0
- package/dist/runtime/docker/exec.d.mts +1 -0
- package/dist/runtime/docker/exec.mjs +63 -0
- package/dist/runtime/docker/exec.mjs.map +1 -0
- package/dist/runtime/docker/image.d.mts +1 -0
- package/dist/runtime/docker/image.mjs +278 -0
- package/dist/runtime/docker/image.mjs.map +1 -0
- package/dist/runtime/docker/index.d.mts +1 -0
- package/dist/runtime/docker/inventory.d.mts +1 -0
- package/dist/runtime/docker/inventory.mjs +167 -0
- package/dist/runtime/docker/inventory.mjs.map +1 -0
- package/dist/runtime/docker/labels.d.mts +1 -0
- package/dist/runtime/docker/labels.mjs +97 -0
- package/dist/runtime/docker/labels.mjs.map +1 -0
- package/dist/runtime/docker/logs.d.mts +1 -0
- package/dist/runtime/docker/logs.mjs +34 -0
- package/dist/runtime/docker/logs.mjs.map +1 -0
- package/dist/runtime/docker/network.d.mts +1 -0
- package/dist/runtime/docker/network.mjs +168 -0
- package/dist/runtime/docker/network.mjs.map +1 -0
- package/dist/runtime/docker/service.d.mts +9 -0
- package/dist/runtime/docker/service.mjs +266 -0
- package/dist/runtime/docker/service.mjs.map +1 -0
- package/dist/runtime/docker/sweep.d.mts +1 -0
- package/dist/runtime/docker/sweep.mjs +220 -0
- package/dist/runtime/docker/sweep.mjs.map +1 -0
- package/dist/runtime/docker/volume.d.mts +1 -0
- package/dist/runtime/docker/volume.mjs +24 -0
- package/dist/runtime/docker/volume.mjs.map +1 -0
- package/dist/runtime/docker/wrap.d.mts +1 -0
- package/dist/runtime/docker/wrap.mjs +131 -0
- package/dist/runtime/docker/wrap.mjs.map +1 -0
- package/dist/substrate/brand.d.mts +24 -0
- package/dist/substrate/brand.mjs +14 -0
- package/dist/substrate/brand.mjs.map +1 -0
- package/dist/substrate/cross-process.d.mts +1 -0
- package/dist/substrate/cross-process.mjs +28 -0
- package/dist/substrate/cross-process.mjs.map +1 -0
- package/dist/substrate/events.d.mts +117 -0
- package/dist/substrate/identity.d.mts +13 -0
- package/dist/substrate/lifecycle.d.mts +12 -0
- package/dist/substrate/manifest.d.mts +39 -0
- package/dist/substrate/manifest.mjs +33 -0
- package/dist/substrate/manifest.mjs.map +1 -0
- package/dist/substrate/network.d.mts +34 -0
- package/dist/substrate/options.d.mts +23 -0
- package/dist/substrate/plugin.d.mts +101 -0
- package/dist/substrate/plugin.mjs +61 -0
- package/dist/substrate/plugin.mjs.map +1 -0
- package/dist/substrate/projection.d.mts +100 -0
- package/dist/substrate/runtime/artifact-publisher/index.mjs +76 -0
- package/dist/substrate/runtime/artifact-publisher/index.mjs.map +1 -0
- package/dist/substrate/runtime/atomic-write.mjs +106 -0
- package/dist/substrate/runtime/atomic-write.mjs.map +1 -0
- package/dist/substrate/runtime/cache/index.d.mts +1 -0
- package/dist/substrate/runtime/cache/schema.d.mts +1 -0
- package/dist/substrate/runtime/cache/schema.mjs +22 -0
- package/dist/substrate/runtime/cache/schema.mjs.map +1 -0
- package/dist/substrate/runtime/cache/service.d.mts +1 -0
- package/dist/substrate/runtime/cache/service.mjs +89 -0
- package/dist/substrate/runtime/cache/service.mjs.map +1 -0
- package/dist/substrate/runtime/capability-sinks/index.d.mts +1 -0
- package/dist/substrate/runtime/capability-sinks/layer.d.mts +1 -0
- package/dist/substrate/runtime/capability-sinks/layer.mjs +31 -0
- package/dist/substrate/runtime/capability-sinks/layer.mjs.map +1 -0
- package/dist/substrate/runtime/capability-sinks/service.d.mts +36 -0
- package/dist/substrate/runtime/capability-sinks/service.mjs +74 -0
- package/dist/substrate/runtime/capability-sinks/service.mjs.map +1 -0
- package/dist/substrate/runtime/config-validation.d.mts +38 -0
- package/dist/substrate/runtime/config-validation.mjs +137 -0
- package/dist/substrate/runtime/config-validation.mjs.map +1 -0
- package/dist/substrate/runtime/context-helpers.mjs +32 -0
- package/dist/substrate/runtime/context-helpers.mjs.map +1 -0
- package/dist/substrate/runtime/cross-process/command-channel/channel.mjs +128 -0
- package/dist/substrate/runtime/cross-process/command-channel/channel.mjs.map +1 -0
- package/dist/substrate/runtime/cross-process/command-channel/file-channel.mjs +136 -0
- package/dist/substrate/runtime/cross-process/command-channel/file-channel.mjs.map +1 -0
- package/dist/substrate/runtime/cross-process/command-channel/protocol.mjs +49 -0
- package/dist/substrate/runtime/cross-process/command-channel/protocol.mjs.map +1 -0
- package/dist/substrate/runtime/cross-process/command-channel/runtime-control-lock.mjs +9 -0
- package/dist/substrate/runtime/cross-process/command-channel/runtime-control-lock.mjs.map +1 -0
- package/dist/substrate/runtime/cross-process/liveness.mjs +119 -0
- package/dist/substrate/runtime/cross-process/liveness.mjs.map +1 -0
- package/dist/substrate/runtime/cross-process/roster.mjs +275 -0
- package/dist/substrate/runtime/cross-process/roster.mjs.map +1 -0
- package/dist/substrate/runtime/cross-process/snapshot-reservation.d.mts +1 -0
- package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs +117 -0
- package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs.map +1 -0
- package/dist/substrate/runtime/cross-process/stack-lock.d.mts +1 -0
- package/dist/substrate/runtime/cross-process/stack-lock.mjs +142 -0
- package/dist/substrate/runtime/cross-process/stack-lock.mjs.map +1 -0
- package/dist/substrate/runtime/current-plugin.mjs +15 -0
- package/dist/substrate/runtime/current-plugin.mjs.map +1 -0
- package/dist/substrate/runtime/errors.d.mts +1 -0
- package/dist/substrate/runtime/errors.mjs +76 -0
- package/dist/substrate/runtime/errors.mjs.map +1 -0
- package/dist/substrate/runtime/host-tree-tar/index.mjs +364 -0
- package/dist/substrate/runtime/host-tree-tar/index.mjs.map +1 -0
- package/dist/substrate/runtime/http-probe.d.mts +35 -0
- package/dist/substrate/runtime/http-probe.mjs +65 -0
- package/dist/substrate/runtime/http-probe.mjs.map +1 -0
- package/dist/substrate/runtime/lease-broker/index.d.mts +1 -0
- package/dist/substrate/runtime/lease-broker/service.d.mts +64 -0
- package/dist/substrate/runtime/lease-broker/service.mjs +155 -0
- package/dist/substrate/runtime/lease-broker/service.mjs.map +1 -0
- package/dist/substrate/runtime/lifecycle/dep-graph.d.mts +1 -0
- package/dist/substrate/runtime/lifecycle/dep-graph.mjs +138 -0
- package/dist/substrate/runtime/lifecycle/dep-graph.mjs.map +1 -0
- package/dist/substrate/runtime/lifecycle/index.d.mts +1 -0
- package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs +31 -0
- package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs.map +1 -0
- package/dist/substrate/runtime/lifecycle/plugin-registry.d.mts +1 -0
- package/dist/substrate/runtime/lifecycle/plugin-registry.mjs +133 -0
- package/dist/substrate/runtime/lifecycle/plugin-registry.mjs.map +1 -0
- package/dist/substrate/runtime/lifecycle/ready-gate.d.mts +1 -0
- package/dist/substrate/runtime/lifecycle/ready-gate.mjs +34 -0
- package/dist/substrate/runtime/lifecycle/ready-gate.mjs.map +1 -0
- package/dist/substrate/runtime/lifecycle/selective-restart.d.mts +1 -0
- package/dist/substrate/runtime/lifecycle/selective-restart.mjs +43 -0
- package/dist/substrate/runtime/lifecycle/selective-restart.mjs.map +1 -0
- package/dist/substrate/runtime/lifecycle/signals.d.mts +1 -0
- package/dist/substrate/runtime/lifecycle/signals.mjs +64 -0
- package/dist/substrate/runtime/lifecycle/signals.mjs.map +1 -0
- package/dist/substrate/runtime/lifecycle/state-machine.d.mts +1 -0
- package/dist/substrate/runtime/lifecycle/state-machine.mjs +38 -0
- package/dist/substrate/runtime/lifecycle/state-machine.mjs.map +1 -0
- package/dist/substrate/runtime/lifecycle/watch-attribution.d.mts +1 -0
- package/dist/substrate/runtime/lifecycle/watch-attribution.mjs +27 -0
- package/dist/substrate/runtime/lifecycle/watch-attribution.mjs.map +1 -0
- package/dist/substrate/runtime/managed-container.d.mts +30 -0
- package/dist/substrate/runtime/managed-container.mjs +32 -0
- package/dist/substrate/runtime/managed-container.mjs.map +1 -0
- package/dist/substrate/runtime/manifest/manifest.mjs +73 -0
- package/dist/substrate/runtime/manifest/manifest.mjs.map +1 -0
- package/dist/substrate/runtime/mode-errors.d.mts +36 -0
- package/dist/substrate/runtime/observability/cascade-formatter.d.mts +1 -0
- package/dist/substrate/runtime/observability/cascade-formatter.mjs +135 -0
- package/dist/substrate/runtime/observability/cascade-formatter.mjs.map +1 -0
- package/dist/substrate/runtime/observability/formatter-registry.d.mts +1 -0
- package/dist/substrate/runtime/observability/formatter-registry.mjs +65 -0
- package/dist/substrate/runtime/observability/formatter-registry.mjs.map +1 -0
- package/dist/substrate/runtime/observability/index.d.mts +3 -0
- package/dist/substrate/runtime/observability/logger.d.mts +58 -0
- package/dist/substrate/runtime/observability/logger.mjs +89 -0
- package/dist/substrate/runtime/observability/logger.mjs.map +1 -0
- package/dist/substrate/runtime/observability/pretty-error.d.mts +1 -0
- package/dist/substrate/runtime/observability/pretty-error.mjs +119 -0
- package/dist/substrate/runtime/observability/pretty-error.mjs.map +1 -0
- package/dist/substrate/runtime/observability/process-lines.d.mts +31 -0
- package/dist/substrate/runtime/observability/process-lines.mjs +40 -0
- package/dist/substrate/runtime/observability/process-lines.mjs.map +1 -0
- package/dist/substrate/runtime/observability/redaction.d.mts +28 -0
- package/dist/substrate/runtime/observability/redaction.mjs +45 -0
- package/dist/substrate/runtime/observability/redaction.mjs.map +1 -0
- package/dist/substrate/runtime/observability/spans.d.mts +1 -0
- package/dist/substrate/runtime/observability/spans.mjs +87 -0
- package/dist/substrate/runtime/observability/spans.mjs.map +1 -0
- package/dist/substrate/runtime/observability/subprocess-capture.d.mts +2 -0
- package/dist/substrate/runtime/observability/subprocess-capture.mjs +82 -0
- package/dist/substrate/runtime/observability/subprocess-capture.mjs.map +1 -0
- package/dist/substrate/runtime/paths.d.mts +17 -0
- package/dist/substrate/runtime/paths.mjs +61 -0
- package/dist/substrate/runtime/paths.mjs.map +1 -0
- package/dist/substrate/runtime/port-broker/index.d.mts +1 -0
- package/dist/substrate/runtime/port-broker/service.d.mts +1 -0
- package/dist/substrate/runtime/port-broker/service.mjs +319 -0
- package/dist/substrate/runtime/port-broker/service.mjs.map +1 -0
- package/dist/substrate/runtime/post-acquire-tasks.d.mts +1 -0
- package/dist/substrate/runtime/post-acquire-tasks.mjs +34 -0
- package/dist/substrate/runtime/post-acquire-tasks.mjs.map +1 -0
- package/dist/substrate/runtime/probes.d.mts +51 -0
- package/dist/substrate/runtime/probes.mjs +84 -0
- package/dist/substrate/runtime/probes.mjs.map +1 -0
- package/dist/substrate/runtime/process-supervisor.d.mts +57 -0
- package/dist/substrate/runtime/process-supervisor.mjs +73 -0
- package/dist/substrate/runtime/process-supervisor.mjs.map +1 -0
- package/dist/substrate/runtime/projection/operational-endpoints.mjs +44 -0
- package/dist/substrate/runtime/projection/operational-endpoints.mjs.map +1 -0
- package/dist/substrate/runtime/projection/persisted.mjs +195 -0
- package/dist/substrate/runtime/projection/persisted.mjs.map +1 -0
- package/dist/substrate/runtime/projection/state-ref.mjs +48 -0
- package/dist/substrate/runtime/projection/state-ref.mjs.map +1 -0
- package/dist/substrate/runtime/projection/update.mjs +200 -0
- package/dist/substrate/runtime/projection/update.mjs.map +1 -0
- package/dist/substrate/runtime/retry-policy.d.mts +18 -0
- package/dist/substrate/runtime/retry-policy.mjs +16 -0
- package/dist/substrate/runtime/retry-policy.mjs.map +1 -0
- package/dist/substrate/runtime/run.mjs +86 -0
- package/dist/substrate/runtime/run.mjs.map +1 -0
- package/dist/substrate/runtime/runtime-decode.d.mts +32 -0
- package/dist/substrate/runtime/runtime-decode.mjs +53 -0
- package/dist/substrate/runtime/runtime-decode.mjs.map +1 -0
- package/dist/substrate/runtime/scoped-http-server.mjs +36 -0
- package/dist/substrate/runtime/scoped-http-server.mjs.map +1 -0
- package/dist/substrate/runtime/scoped-ref-map/service.mjs +83 -0
- package/dist/substrate/runtime/scoped-ref-map/service.mjs.map +1 -0
- package/dist/substrate/runtime/stage-and-swap/index.d.mts +1 -0
- package/dist/substrate/runtime/stage-and-swap/index.mjs +131 -0
- package/dist/substrate/runtime/stage-and-swap/index.mjs.map +1 -0
- package/dist/substrate/runtime/state-store/schema.mjs +36 -0
- package/dist/substrate/runtime/state-store/schema.mjs.map +1 -0
- package/dist/substrate/runtime/strategy-registry/chain-probe-for.d.mts +1 -0
- package/dist/substrate/runtime/strategy-registry/chain-probe-for.mjs +22 -0
- package/dist/substrate/runtime/strategy-registry/chain-probe-for.mjs.map +1 -0
- package/dist/substrate/runtime/strategy-registry/faucet-capability-for.d.mts +1 -0
- package/dist/substrate/runtime/strategy-registry/faucet-capability-for.mjs +30 -0
- package/dist/substrate/runtime/strategy-registry/faucet-capability-for.mjs.map +1 -0
- package/dist/substrate/runtime/strategy-registry/index.d.mts +1 -0
- package/dist/substrate/runtime/strategy-registry/service.d.mts +1 -0
- package/dist/substrate/runtime/strategy-registry/service.mjs +67 -0
- package/dist/substrate/runtime/strategy-registry/service.mjs.map +1 -0
- package/dist/substrate/runtime/sui-execute/index.d.mts +11 -0
- package/dist/substrate/runtime/sui-execute/index.mjs +144 -0
- package/dist/substrate/runtime/sui-execute/index.mjs.map +1 -0
- package/dist/substrate/runtime/sui-move-build/index.d.mts +1 -0
- package/dist/substrate/runtime/sui-move-build/index.mjs +283 -0
- package/dist/substrate/runtime/sui-move-build/index.mjs.map +1 -0
- package/dist/substrate/runtime/supervisor.d.mts +1 -0
- package/dist/substrate/runtime/supervisor.mjs +831 -0
- package/dist/substrate/runtime/supervisor.mjs.map +1 -0
- package/dist/surfaces/cli/command-tree.mjs +276 -0
- package/dist/surfaces/cli/command-tree.mjs.map +1 -0
- package/dist/surfaces/cli/commands/config.mjs +31 -0
- package/dist/surfaces/cli/commands/config.mjs.map +1 -0
- package/dist/surfaces/cli/commands/confirm-node.mjs +26 -0
- package/dist/surfaces/cli/commands/confirm-node.mjs.map +1 -0
- package/dist/surfaces/cli/commands/confirm.mjs +26 -0
- package/dist/surfaces/cli/commands/confirm.mjs.map +1 -0
- package/dist/surfaces/cli/commands/doctor-probes.mjs +452 -0
- package/dist/surfaces/cli/commands/doctor-probes.mjs.map +1 -0
- package/dist/surfaces/cli/commands/doctor.mjs +38 -0
- package/dist/surfaces/cli/commands/doctor.mjs.map +1 -0
- package/dist/surfaces/cli/commands/prune-picker.mjs +347 -0
- package/dist/surfaces/cli/commands/prune-picker.mjs.map +1 -0
- package/dist/surfaces/cli/commands/prune.mjs +178 -0
- package/dist/surfaces/cli/commands/prune.mjs.map +1 -0
- package/dist/surfaces/cli/commands/snapshot.mjs +141 -0
- package/dist/surfaces/cli/commands/snapshot.mjs.map +1 -0
- package/dist/surfaces/cli/commands/status.mjs +95 -0
- package/dist/surfaces/cli/commands/status.mjs.map +1 -0
- package/dist/surfaces/cli/commands/supervisor-presence.mjs +33 -0
- package/dist/surfaces/cli/commands/supervisor-presence.mjs.map +1 -0
- package/dist/surfaces/cli/commands/wipe.mjs +28 -0
- package/dist/surfaces/cli/commands/wipe.mjs.map +1 -0
- package/dist/surfaces/cli/envelope.mjs +43 -0
- package/dist/surfaces/cli/envelope.mjs.map +1 -0
- package/dist/surfaces/cli/errors.mjs +110 -0
- package/dist/surfaces/cli/errors.mjs.map +1 -0
- package/dist/surfaces/cli/flags.mjs +56 -0
- package/dist/surfaces/cli/flags.mjs.map +1 -0
- package/dist/surfaces/cli/index.mjs +418 -0
- package/dist/surfaces/cli/index.mjs.map +1 -0
- package/dist/surfaces/cli/output.mjs +115 -0
- package/dist/surfaces/cli/output.mjs.map +1 -0
- package/dist/surfaces/cli/sysexits.mjs +139 -0
- package/dist/surfaces/cli/sysexits.mjs.map +1 -0
- package/dist/surfaces/tui/app.mjs +104 -0
- package/dist/surfaces/tui/app.mjs.map +1 -0
- package/dist/surfaces/tui/dashboard.mjs +261 -0
- package/dist/surfaces/tui/dashboard.mjs.map +1 -0
- package/dist/surfaces/tui/display-derivation.mjs +395 -0
- package/dist/surfaces/tui/display-derivation.mjs.map +1 -0
- package/dist/surfaces/tui/errors.mjs +11 -0
- package/dist/surfaces/tui/errors.mjs.map +1 -0
- package/dist/surfaces/tui/event-log.mjs +155 -0
- package/dist/surfaces/tui/event-log.mjs.map +1 -0
- package/dist/surfaces/tui/heartbeat.mjs +33 -0
- package/dist/surfaces/tui/heartbeat.mjs.map +1 -0
- package/dist/surfaces/tui/index.mjs +50 -0
- package/dist/surfaces/tui/index.mjs.map +1 -0
- package/dist/surfaces/tui/input.mjs +104 -0
- package/dist/surfaces/tui/input.mjs.map +1 -0
- package/dist/surfaces/tui/mode-detect.mjs +32 -0
- package/dist/surfaces/tui/mode-detect.mjs.map +1 -0
- package/dist/surfaces/tui/mount-ink.mjs +31 -0
- package/dist/surfaces/tui/mount-ink.mjs.map +1 -0
- package/dist/surfaces/tui/plain-renderer.mjs +170 -0
- package/dist/surfaces/tui/plain-renderer.mjs.map +1 -0
- package/dist/surfaces/tui/resource-table.mjs +507 -0
- package/dist/surfaces/tui/resource-table.mjs.map +1 -0
- package/images/_shared/signal-forward.sh +77 -0
- package/images/postgres/Dockerfile +32 -0
- package/images/seal/Dockerfile +68 -0
- package/images/seal/entrypoint.sh +65 -0
- package/images/sui/Dockerfile +73 -0
- package/images/sui/entrypoint.sh +244 -0
- package/images/sui-fork/Dockerfile +53 -0
- package/images/sui-fork/entrypoint.sh +51 -0
- package/images/walrus/Dockerfile +122 -0
- package/images/walrus/deploy-walrus.sh +305 -0
- package/images/walrus/run-walrus.sh +53 -0
- package/package.json +94 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { contentHash } from "../../substrate/brand.mjs";
|
|
2
|
+
import { pickPublishedChange, pickUpgradeCapChange } from "./publish-output.mjs";
|
|
3
|
+
import { publishError } from "./errors.mjs";
|
|
4
|
+
import { hashMoveSources, scrubLocksHost } from "./build.mjs";
|
|
5
|
+
import { mvrSlugify } from "./dep-resolution.mjs";
|
|
6
|
+
import { Duration, Effect, Schema } from "effect";
|
|
7
|
+
//#region src/plugins/package/mode-local.ts
|
|
8
|
+
/** Verify-schema: what we expect when probing `getObject(packageId)`.
|
|
9
|
+
* Minimal — the substrate's `ChainProbe` decodes against this; any
|
|
10
|
+
* decode failure surfaces structured. */
|
|
11
|
+
const PackageVerifyShape = Schema.Struct({
|
|
12
|
+
objectId: Schema.String,
|
|
13
|
+
type: Schema.Unknown
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* Build the content hash for the publish cache key. Distilled doc
|
|
17
|
+
* §Move-specific: inputs are `(sourceHash, signerAddress)`. The
|
|
18
|
+
* `hashMoveSources` helper already normalises Move.lock pinned
|
|
19
|
+
* sections via the shared `stripPinnedSections`; we fold the
|
|
20
|
+
* publisher address in here as a stable string so reusing the
|
|
21
|
+
* same source under a different signer correctly misses (Invariant
|
|
22
|
+
* 4: "Signer MUST be an explicit upstream").
|
|
23
|
+
*/
|
|
24
|
+
const LOCAL_PACKAGE_CACHE_SCHEMA_VERSION = "v3";
|
|
25
|
+
const PACKAGE_CACHE_VERIFY_MAX_ATTEMPTS = 20;
|
|
26
|
+
const PACKAGE_CACHE_VERIFY_DELAY_MS = 250;
|
|
27
|
+
const combineInputsHash = (sourceHash, publisherAddress) => contentHash(`${LOCAL_PACKAGE_CACHE_SCHEMA_VERSION}::source=${sourceHash}::publisher=${publisherAddress}`);
|
|
28
|
+
/**
|
|
29
|
+
* Verify probe — lenient `getObject(packageId)`. Returns the decoded
|
|
30
|
+
* shape on success; null for BOTH not-found AND transient (distilled
|
|
31
|
+
* doc Invariant 7 + the "lenient verify cheaper than aggressive
|
|
32
|
+
* eviction" Constraint).
|
|
33
|
+
*
|
|
34
|
+
* The cached id is hinted in via parameter. The artifact publisher substrate is
|
|
35
|
+
* expected to thread the cached payload through to this closure on
|
|
36
|
+
* cache hit; today we get the id from the registry's previous-cycle
|
|
37
|
+
* entry (in-process, per-supervisor lookup — see `acquireLocal`
|
|
38
|
+
* below). When no hint exists (first cycle / cold boot), we
|
|
39
|
+
* short-circuit to null so the substrate runs `produce`.
|
|
40
|
+
*
|
|
41
|
+
* Mirrors `coin/mint.ts::buildVerifyProbe` exactly so the two artifact publisher
|
|
42
|
+
* consumers stay shape-aligned.
|
|
43
|
+
*/
|
|
44
|
+
const buildVerifyProbe = (probe, cachedPackageIdHint, opts) => Effect.gen(function* () {
|
|
45
|
+
if (cachedPackageIdHint === null) return null;
|
|
46
|
+
const maxAttempts = opts?.maxAttempts ?? PACKAGE_CACHE_VERIFY_MAX_ATTEMPTS;
|
|
47
|
+
const delayMs = opts?.delayMs ?? PACKAGE_CACHE_VERIFY_DELAY_MS;
|
|
48
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
49
|
+
const result = yield* probe.get({
|
|
50
|
+
kind: "object",
|
|
51
|
+
objectId: cachedPackageIdHint
|
|
52
|
+
}, PackageVerifyShape, "lenient").pipe(Effect.catch(() => Effect.succeed(null)));
|
|
53
|
+
if (result !== null) return result;
|
|
54
|
+
if (attempt < maxAttempts && delayMs > 0) yield* Effect.sleep(Duration.millis(delayMs));
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
});
|
|
58
|
+
/**
|
|
59
|
+
* Compose the ArtifactSpec for a local publish.
|
|
60
|
+
*
|
|
61
|
+
* The substrate-side `ArtifactPublisher.publish` consumes
|
|
62
|
+
* this spec and handles:
|
|
63
|
+
*
|
|
64
|
+
* - cache lookup under `<namespace>/<chainId>/<contentHash>`;
|
|
65
|
+
* - verify (lenient) when there's a hit;
|
|
66
|
+
* - re-running `produce` on miss OR verify-fail;
|
|
67
|
+
* - calling `register` on EVERY cycle.
|
|
68
|
+
*/
|
|
69
|
+
const acquireLocal = (publisher, probe, registry, inputs) => Effect.gen(function* () {
|
|
70
|
+
const inputsHash = combineInputsHash(yield* hashMoveSources(inputs.sourcePath), inputs.publisherAddress);
|
|
71
|
+
const mvrPlaceholder = mvrSlugify(inputs.mvrOverride ?? inputs.packageName);
|
|
72
|
+
const priorEntry = yield* registry.find(inputs.packageName);
|
|
73
|
+
let producedOutput = null;
|
|
74
|
+
const resolved = yield* publisher.publish({
|
|
75
|
+
namespace: "package",
|
|
76
|
+
chain: inputs.chainId,
|
|
77
|
+
contentHash: inputsHash,
|
|
78
|
+
verifySchema: PackageVerifyShape,
|
|
79
|
+
verify: (cached) => cached.output === void 0 ? Effect.succeed(null) : buildVerifyProbe(probe, cached.packageId),
|
|
80
|
+
produce: Effect.gen(function* () {
|
|
81
|
+
yield* Effect.annotateCurrentSpan({
|
|
82
|
+
"package.publish.package": inputs.packageName,
|
|
83
|
+
"package.publish.sourcePath": inputs.sourcePath,
|
|
84
|
+
"package.publish.chainId": inputs.chainId,
|
|
85
|
+
"package.publish.publisher": inputs.publisherAddress
|
|
86
|
+
});
|
|
87
|
+
yield* Effect.annotateCurrentSpan({ "package.publish.phase": "scrub" });
|
|
88
|
+
yield* scrubLocksHost(inputs.sourcePath, "~/.move", { packageLockFailures: inputs.executor.scrubsInsideContainer ? "best-effort" : "fatal" });
|
|
89
|
+
yield* Effect.annotateCurrentSpan({ "package.publish.phase": "build" });
|
|
90
|
+
const buildOutput = yield* inputs.executor.build({
|
|
91
|
+
sourcePath: inputs.sourcePath,
|
|
92
|
+
packageName: inputs.packageName,
|
|
93
|
+
chainId: inputs.chainId
|
|
94
|
+
}).pipe(Effect.catchTag("PublishError", (err) => Effect.fail(err.sourcePath ? err : {
|
|
95
|
+
...err,
|
|
96
|
+
sourcePath: inputs.sourcePath,
|
|
97
|
+
packageName: inputs.packageName
|
|
98
|
+
})));
|
|
99
|
+
yield* Effect.annotateCurrentSpan({ "package.publish.phase": "publish-tx" });
|
|
100
|
+
const output = yield* inputs.executor.publishTx({
|
|
101
|
+
modules: buildOutput.modules,
|
|
102
|
+
dependencies: buildOutput.dependencies,
|
|
103
|
+
sourcePath: inputs.sourcePath,
|
|
104
|
+
packageName: inputs.packageName
|
|
105
|
+
});
|
|
106
|
+
producedOutput = output;
|
|
107
|
+
yield* Effect.annotateCurrentSpan({ "package.publish.phase": "waiting-for-index" });
|
|
108
|
+
yield* inputs.executor.waitForReady(output.packageId);
|
|
109
|
+
yield* Effect.annotateCurrentSpan({ "package.publish.phase": "parse" });
|
|
110
|
+
const published = pickPublishedChange(output.objectChanges);
|
|
111
|
+
if (!published?.objectId) return yield* Effect.fail(publishError("parse", {
|
|
112
|
+
sourcePath: inputs.sourcePath,
|
|
113
|
+
packageName: inputs.packageName,
|
|
114
|
+
message: "no \"published\" change in output — SDK shape drift (distilled doc §Edge cases)"
|
|
115
|
+
}));
|
|
116
|
+
const upgradeCap = pickUpgradeCapChange(output.objectChanges);
|
|
117
|
+
const captured = inputs.capture ? yield* Effect.try({
|
|
118
|
+
try: () => inputs.capture(output),
|
|
119
|
+
catch: (cause) => publishError("parse", {
|
|
120
|
+
sourcePath: inputs.sourcePath,
|
|
121
|
+
packageName: inputs.packageName,
|
|
122
|
+
message: "capture callback threw",
|
|
123
|
+
cause
|
|
124
|
+
})
|
|
125
|
+
}) : {};
|
|
126
|
+
return {
|
|
127
|
+
packageId: published.objectId,
|
|
128
|
+
upgradeCapId: upgradeCap?.objectId,
|
|
129
|
+
publisher: inputs.publisherAddress,
|
|
130
|
+
mvrPlaceholder,
|
|
131
|
+
captured,
|
|
132
|
+
output
|
|
133
|
+
};
|
|
134
|
+
}).pipe(Effect.mapError((err) => ({
|
|
135
|
+
_tag: "ArtifactPublishError",
|
|
136
|
+
reason: "produce-failed",
|
|
137
|
+
detail: `package.publish ${err.phase}: ${err.message}`
|
|
138
|
+
}))),
|
|
139
|
+
register: (artifact) => Effect.gen(function* () {
|
|
140
|
+
const entry = "packageId" in artifact ? {
|
|
141
|
+
...artifact,
|
|
142
|
+
captured: inputs.capture !== void 0 && artifact.output !== void 0 ? (() => {
|
|
143
|
+
try {
|
|
144
|
+
return inputs.capture(artifact.output);
|
|
145
|
+
} catch {
|
|
146
|
+
return artifact.captured;
|
|
147
|
+
}
|
|
148
|
+
})() : artifact.captured
|
|
149
|
+
} : {
|
|
150
|
+
packageId: artifact.objectId,
|
|
151
|
+
publisher: inputs.publisherAddress,
|
|
152
|
+
mvrPlaceholder: priorEntry && priorEntry.kind === "local" ? priorEntry.mvrPlaceholder : mvrPlaceholder,
|
|
153
|
+
captured: priorEntry && priorEntry.kind === "local" ? priorEntry.captured : {},
|
|
154
|
+
upgradeCapId: priorEntry && priorEntry.kind === "local" ? priorEntry.upgradeCapId : void 0
|
|
155
|
+
};
|
|
156
|
+
const r = {
|
|
157
|
+
kind: "local",
|
|
158
|
+
name: inputs.packageName,
|
|
159
|
+
packageId: entry.packageId,
|
|
160
|
+
upgradeCapId: entry.upgradeCapId,
|
|
161
|
+
sourcePath: inputs.sourcePath,
|
|
162
|
+
mvrPlaceholder: entry.mvrPlaceholder,
|
|
163
|
+
captured: entry.captured
|
|
164
|
+
};
|
|
165
|
+
yield* registry.set(r.name, r);
|
|
166
|
+
})
|
|
167
|
+
});
|
|
168
|
+
const final = yield* registry.find(inputs.packageName);
|
|
169
|
+
if (!final || final.kind !== "local") return yield* Effect.fail(publishError("parse", {
|
|
170
|
+
sourcePath: inputs.sourcePath,
|
|
171
|
+
packageName: inputs.packageName,
|
|
172
|
+
message: "register did not surface entry — artifact publisher register invariant violation"
|
|
173
|
+
}));
|
|
174
|
+
const cachedOutput = "packageId" in resolved && "output" in resolved ? resolved.output ?? null : null;
|
|
175
|
+
return {
|
|
176
|
+
resolved: final,
|
|
177
|
+
output: producedOutput ?? cachedOutput
|
|
178
|
+
};
|
|
179
|
+
});
|
|
180
|
+
//#endregion
|
|
181
|
+
export { acquireLocal };
|
|
182
|
+
|
|
183
|
+
//# sourceMappingURL=mode-local.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode-local.mjs","names":["brandContentHash"],"sources":["../../../src/plugins/package/mode-local.ts"],"sourcesContent":["// Local mode — build from source + publish.\n//\n// This is the canonical implementation of the\n// `ArtifactPublisher` substrate primitive (distilled doc\n// §Generic artifact-publisher-publish pattern). The five-phase shape:\n//\n// 1. Inputs — `{ sourceHash, signerAddress }` →\n// `contentHash(inputs)`.\n// 2. Cache key — `<namespace=package>/<chainId>/<contentHash>`.\n// Substrate folds in chainId for us; we hand\n// it the namespace + contentHash.\n// 3. Verify — `chainProbe.get({ objectId: cachedId },\n// PackageObjectSchema, 'lenient')`. Lenient mode\n// coerces transient RPC failure → null\n// → re-derive (cheap over-derive vs spurious\n// eviction — distilled doc §Constraint \"lenient\n// verify is cheaper than aggressive eviction\").\n// 4. Produce — scrub locks → build → publish-tx → wait-for-\n// index. Each phase narrates to TUI via span\n// annotation.\n// 5. Register — write registry entry on EVERY cycle (hit AND\n// miss). Distilled doc Invariant 6.\n//\n// The publish output is exposed on the resolved value and emitted as a\n// package-owned extension contribution for sibling folds.\n\nimport { Duration, Effect, Schema, type Scope } from 'effect';\n\nimport { contentHash as brandContentHash, type ChainId } from '../../substrate/brand.ts';\nimport {\n\tpickPublishedChange,\n\tpickUpgradeCapChange,\n\ttype PackagePublishObjectChange,\n\ttype LocalPackagePublishOutput,\n} from './publish-output.ts';\nimport type {\n\tArtifactPublishError,\n\tArtifactPublisher,\n} from '../../primitives/artifact-publisher.ts';\nimport type { ChainProbe } from '../../contracts/chain-probe.ts';\nimport type { SuiProbeKey } from '../sui/chain-probe.ts';\nimport { hashMoveSources, scrubLocksHost, type BuildOutput } from './build.ts';\nimport { mvrSlugify } from './dep-resolution.ts';\nimport { type PackageRegistry, type ResolvedLocalPackage } from './registry.ts';\nimport { publishError, type PublishError } from './errors.ts';\n\n/** Cache-stored payload — the stable id verify re-confirms on\n * every cycle. Distilled doc Invariant 8: the probe MUST consume\n * a stable identifier (the packageId), NOT a derived hash. */\nexport interface CachedPackageEntry {\n\treadonly packageId: string;\n\treadonly upgradeCapId?: string;\n\treadonly publisher: string;\n\treadonly mvrPlaceholder: string;\n\treadonly captured: Readonly<Record<string, string>>;\n\treadonly output?: LocalPackagePublishOutput;\n}\n\n/** Verify-schema: what we expect when probing `getObject(packageId)`.\n * Minimal — the substrate's `ChainProbe` decodes against this; any\n * decode failure surfaces structured. */\nexport const PackageVerifyShape = Schema.Struct({\n\tobjectId: Schema.String,\n\t// A Move package's `type` is the literal `\"package\"` wrapper;\n\t// the SDK's exact shape varies — we keep it open as `Unknown`\n\t// and rely on objectId presence for the \"exists\" signal.\n\ttype: Schema.Unknown,\n});\n\n/**\n * Publish-tx executor — narrow shim that abstracts the concrete\n * `@mysten/sui` wiring (Transaction builder, signer, fullnode\n * ready-probe). The mode-local produce body composes its 5-phase\n * shape against this interface; the concrete implementation lives in\n * `publish-executor.ts` and is constructed once per acquire by the\n * barrel from the resolved `SuiClient` + publisher `AccountValue` +\n * `ContainerRuntime`.\n *\n * The shim parallels `coin/mint.ts::MintSigner` + `MintSdkShim`. We\n * keep them split (publish vs sign vs ready-probe) so the produce\n * body can attribute span annotations per phase + so failures map\n * back to a typed `PublishError` phase enum.\n */\nexport interface PublishExecutor {\n\treadonly scrubsInsideContainer: boolean;\n\n\t/** Build the Move source tree into `{ modules, dependencies }`.\n\t * Dispatches between (a) per-app build container, (b) fresh\n\t * `docker run --rm`, (c) host `sui` CLI. The produce body just\n\t * calls and propagates `PublishError`. */\n\treadonly build: (inputs: {\n\t\treadonly sourcePath: string;\n\t\treadonly packageName: string;\n\t\treadonly chainId: ChainId;\n\t}) => Effect.Effect<BuildOutput, PublishError, Scope.Scope>;\n\n\t/** Construct + sign + execute a `Transaction.publish({modules,\n\t * dependencies})` against the publisher account. Returns the\n\t * output projection that downstream consumers (Coin, manifest,\n\t * capture spec) need. Distilled doc §Move-specific concerns —\n\t * the output is the source of `published` change + the\n\t * `UpgradeCap` `created` change. */\n\treadonly publishTx: (inputs: {\n\t\treadonly modules: ReadonlyArray<Uint8Array>;\n\t\treadonly dependencies: ReadonlyArray<string>;\n\t\treadonly sourcePath: string;\n\t\treadonly packageName: string;\n\t}) => Effect.Effect<LocalPackagePublishOutput, PublishError, Scope.Scope>;\n\n\t/** Post-publish fullnode/indexer ready-probe. Distilled doc\n\t * Invariant 5: publish-tx commit precedes index visibility.\n\t * Polls `getObject(packageId)` until success or a 10s ceiling\n\t * at ~200ms cadence. Failure raises `PublishError('parse')`\n\t * per the distilled doc's phase catalog (\"stuck indexer\"). */\n\treadonly waitForReady: (packageId: string) => Effect.Effect<void, PublishError, Scope.Scope>;\n}\n\nexport interface LocalModeInputs {\n\treadonly packageName: string;\n\treadonly sourcePath: string;\n\treadonly chainId: ChainId;\n\treadonly publisherAddress: string;\n\treadonly mvrOverride?: string;\n\treadonly capture?: (output: LocalPackagePublishOutput) => Readonly<Record<string, string>>;\n\t/** Publish executor — constructed per-acquire by the barrel from\n\t * the resolved SuiClient + publisher account + ContainerRuntime\n\t * (see `publish-executor.ts`). */\n\treadonly executor: PublishExecutor;\n}\n\nexport interface LocalModeOutputs {\n\treadonly resolved: ResolvedLocalPackage;\n\treadonly output: LocalPackagePublishOutput | null;\n}\n\n/**\n * Build the content hash for the publish cache key. Distilled doc\n * §Move-specific: inputs are `(sourceHash, signerAddress)`. The\n * `hashMoveSources` helper already normalises Move.lock pinned\n * sections via the shared `stripPinnedSections`; we fold the\n * publisher address in here as a stable string so reusing the\n * same source under a different signer correctly misses (Invariant\n * 4: \"Signer MUST be an explicit upstream\").\n */\nconst LOCAL_PACKAGE_CACHE_SCHEMA_VERSION = 'v3';\nconst PACKAGE_CACHE_VERIFY_MAX_ATTEMPTS = 20;\nconst PACKAGE_CACHE_VERIFY_DELAY_MS = 250;\n\nconst combineInputsHash = (sourceHash: string, publisherAddress: string) =>\n\tbrandContentHash(\n\t\t`${LOCAL_PACKAGE_CACHE_SCHEMA_VERSION}::source=${sourceHash}::publisher=${publisherAddress}`,\n\t);\n\n/**\n * Verify probe — lenient `getObject(packageId)`. Returns the decoded\n * shape on success; null for BOTH not-found AND transient (distilled\n * doc Invariant 7 + the \"lenient verify cheaper than aggressive\n * eviction\" Constraint).\n *\n * The cached id is hinted in via parameter. The artifact publisher substrate is\n * expected to thread the cached payload through to this closure on\n * cache hit; today we get the id from the registry's previous-cycle\n * entry (in-process, per-supervisor lookup — see `acquireLocal`\n * below). When no hint exists (first cycle / cold boot), we\n * short-circuit to null so the substrate runs `produce`.\n *\n * Mirrors `coin/mint.ts::buildVerifyProbe` exactly so the two artifact publisher\n * consumers stay shape-aligned.\n */\nexport const buildVerifyProbe = (\n\tprobe: ChainProbe<SuiProbeKey>,\n\tcachedPackageIdHint: string | null,\n\topts?: { readonly maxAttempts?: number; readonly delayMs?: number },\n): Effect.Effect<typeof PackageVerifyShape.Type | null, never> =>\n\tEffect.gen(function* () {\n\t\tif (cachedPackageIdHint === null) return null;\n\t\tconst maxAttempts = opts?.maxAttempts ?? PACKAGE_CACHE_VERIFY_MAX_ATTEMPTS;\n\t\tconst delayMs = opts?.delayMs ?? PACKAGE_CACHE_VERIFY_DELAY_MS;\n\t\tfor (let attempt = 1; attempt <= maxAttempts; attempt++) {\n\t\t\t// Lenient mode in the underlying probe already coerces\n\t\t\t// not-found AND transient → null. We retry nulls briefly\n\t\t\t// because local Sui restart can report ready before package\n\t\t\t// objects are immediately queryable, and a false cache miss\n\t\t\t// turns a warm restart into an unnecessary publish.\n\t\t\tconst result: typeof PackageVerifyShape.Type | null = yield* probe\n\t\t\t\t.get({ kind: 'object', objectId: cachedPackageIdHint }, PackageVerifyShape, 'lenient')\n\t\t\t\t.pipe(\n\t\t\t\t\t// The probe's own error channel is `ChainProbeError`; under\n\t\t\t\t\t// lenient mode only `decode-failed` surfaces (not-found +\n\t\t\t\t\t// transient already coerce to null). A decode failure on\n\t\t\t\t\t// verify is treated as \"stale shape\" — null so the substrate\n\t\t\t\t\t// re-publishes rather than carry forward a mismatch.\n\t\t\t\t\tEffect.catch(() => Effect.succeed(null as typeof PackageVerifyShape.Type | null)),\n\t\t\t\t);\n\t\t\tif (result !== null) return result;\n\t\t\tif (attempt < maxAttempts && delayMs > 0) {\n\t\t\t\tyield* Effect.sleep(Duration.millis(delayMs));\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t});\n\n/**\n * Compose the ArtifactSpec for a local publish.\n *\n * The substrate-side `ArtifactPublisher.publish` consumes\n * this spec and handles:\n *\n * - cache lookup under `<namespace>/<chainId>/<contentHash>`;\n * - verify (lenient) when there's a hit;\n * - re-running `produce` on miss OR verify-fail;\n * - calling `register` on EVERY cycle.\n */\nexport const acquireLocal = (\n\tpublisher: ArtifactPublisher,\n\tprobe: ChainProbe<SuiProbeKey>,\n\tregistry: PackageRegistry,\n\tinputs: LocalModeInputs,\n): Effect.Effect<LocalModeOutputs, PublishError | ArtifactPublishError, Scope.Scope> =>\n\tEffect.gen(function* () {\n\t\t// Distilled doc §Move-specific: hash inputs are `(sourceHash,\n\t\t// signerAddress)`. The hashing helper strips Move.lock pinned\n\t\t// sections (Invariant 2) so warm restarts hit the cache.\n\t\tconst sourceHash = yield* hashMoveSources(inputs.sourcePath);\n\t\tconst inputsHash = combineInputsHash(sourceHash, inputs.publisherAddress);\n\n\t\tconst mvrPlaceholder = mvrSlugify(inputs.mvrOverride ?? inputs.packageName);\n\n\t\t// The in-process registry is consulted on the `register`\n\t\t// callback (verify-hit path) to recover `mvrPlaceholder` +\n\t\t// `captured` columns when the substrate hands back the bare\n\t\t// `{objectId, type}` verify shape; see the register body below.\n\t\tconst priorEntry = yield* registry.find(inputs.packageName);\n\n\t\t// We capture the produce-side output out-of-band so the\n\t\t// returned `LocalModeOutputs.output` can expose it; the artifact publisher\n\t\t// substrate's `Produced | Verified` discrimination collapses\n\t\t// the output away.\n\t\tlet producedOutput: LocalPackagePublishOutput | null = null;\n\n\t\tconst resolved = yield* publisher.publish<CachedPackageEntry, typeof PackageVerifyShape.Type>({\n\t\t\tnamespace: 'package',\n\t\t\tchain: inputs.chainId,\n\t\t\tcontentHash: inputsHash,\n\t\t\tverifySchema: PackageVerifyShape,\n\t\t\tverify: (cached) =>\n\t\t\t\tcached.output === undefined\n\t\t\t\t\t? Effect.succeed(null)\n\t\t\t\t\t: buildVerifyProbe(probe, cached.packageId),\n\t\t\t// Produce: scrub → build → publish-tx → wait-for-index → parse.\n\t\t\t// PublishError is the plugin-internal phase taxonomy; we map\n\t\t\t// it to `ArtifactPublishError` at the substrate boundary.\n\t\t\tproduce: Effect.gen(function* () {\n\t\t\t\tyield* Effect.annotateCurrentSpan({\n\t\t\t\t\t'package.publish.package': inputs.packageName,\n\t\t\t\t\t'package.publish.sourcePath': inputs.sourcePath,\n\t\t\t\t\t'package.publish.chainId': inputs.chainId,\n\t\t\t\t\t'package.publish.publisher': inputs.publisherAddress,\n\t\t\t\t});\n\n\t\t\t\t// Produce 1/5 — scrub locks. Distilled doc §Move-specific\n\t\t\t\t// concerns + Invariant 14: strip pinned sections from BOTH\n\t\t\t\t// the package's own Move.lock AND every\n\t\t\t\t// `~/.move/git/**/Move.lock` (vendored dep caches) before\n\t\t\t\t// invoking the build. Uses the unified `stripPinnedSections`\n\t\t\t\t// (re-exported through `build.ts` → from\n\t\t\t\t// `../sui/move-lock-scrub.ts`) — NO duplicate.\n\t\t\t\tyield* Effect.annotateCurrentSpan({ 'package.publish.phase': 'scrub' });\n\t\t\t\tyield* scrubLocksHost(inputs.sourcePath, '~/.move', {\n\t\t\t\t\tpackageLockFailures: inputs.executor.scrubsInsideContainer ? 'best-effort' : 'fatal',\n\t\t\t\t});\n\n\t\t\t\t// Produce 2/5 — build. Executor dispatches between (a)\n\t\t\t\t// per-app build container, (b) `docker run --rm`, (c) host\n\t\t\t\t// `sui` CLI.\n\t\t\t\tyield* Effect.annotateCurrentSpan({ 'package.publish.phase': 'build' });\n\t\t\t\tconst buildOutput: BuildOutput = yield* inputs.executor\n\t\t\t\t\t.build({\n\t\t\t\t\t\tsourcePath: inputs.sourcePath,\n\t\t\t\t\t\tpackageName: inputs.packageName,\n\t\t\t\t\t\tchainId: inputs.chainId,\n\t\t\t\t\t})\n\t\t\t\t\t.pipe(\n\t\t\t\t\t\tEffect.catchTag(\n\t\t\t\t\t\t\t'PublishError',\n\t\t\t\t\t\t\t(err): Effect.Effect<BuildOutput, PublishError> =>\n\t\t\t\t\t\t\t\t// Re-stamp sourcePath/packageName if the underlying\n\t\t\t\t\t\t\t\t// caller omitted them (every throw site MUST surface\n\t\t\t\t\t\t\t\t// the context — see distilled doc §Opportunities).\n\t\t\t\t\t\t\t\tEffect.fail(\n\t\t\t\t\t\t\t\t\terr.sourcePath\n\t\t\t\t\t\t\t\t\t\t? err\n\t\t\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t\t\t...err,\n\t\t\t\t\t\t\t\t\t\t\t\tsourcePath: inputs.sourcePath,\n\t\t\t\t\t\t\t\t\t\t\t\tpackageName: inputs.packageName,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t// Produce 3/5 — publish-tx. Construct `Transaction.publish`,\n\t\t\t\t// sign + execute via the publisher's account signer, decode\n\t\t\t\t// the output.\n\t\t\t\tyield* Effect.annotateCurrentSpan({ 'package.publish.phase': 'publish-tx' });\n\t\t\t\tconst output: LocalPackagePublishOutput = yield* inputs.executor.publishTx({\n\t\t\t\t\tmodules: buildOutput.modules,\n\t\t\t\t\tdependencies: buildOutput.dependencies,\n\t\t\t\t\tsourcePath: inputs.sourcePath,\n\t\t\t\t\tpackageName: inputs.packageName,\n\t\t\t\t});\n\t\t\t\tproducedOutput = output;\n\n\t\t\t\t// Produce 4/5 — wait-for-index. Distilled doc Invariant 5:\n\t\t\t\t// publish-tx commit precedes index visibility. Without this\n\t\t\t\t// gate, downstream tx builders fail with \"Dependent package\n\t\t\t\t// not found\". Failure surfaces as `PublishError('parse')`\n\t\t\t\t// per the distilled doc's phase catalog (\"stuck indexer\").\n\t\t\t\tyield* Effect.annotateCurrentSpan({ 'package.publish.phase': 'waiting-for-index' });\n\t\t\t\tyield* inputs.executor.waitForReady(output.packageId);\n\n\t\t\t\t// Produce 5/5 — parse. Distilled doc §Move-specific\n\t\t\t\t// concerns: pick the `'published'` change for packageId;\n\t\t\t\t// pick the `UpgradeCap`-typed `'created'` change for the\n\t\t\t\t// upgrade cap.\n\t\t\t\tyield* Effect.annotateCurrentSpan({ 'package.publish.phase': 'parse' });\n\t\t\t\tconst published = pickPublishedChange(output.objectChanges);\n\t\t\t\tif (!published?.objectId) {\n\t\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\t\tpublishError('parse', {\n\t\t\t\t\t\t\tsourcePath: inputs.sourcePath,\n\t\t\t\t\t\t\tpackageName: inputs.packageName,\n\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t'no \"published\" change in output — SDK shape drift (distilled doc §Edge cases)',\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst upgradeCap: PackagePublishObjectChange | undefined = pickUpgradeCapChange(\n\t\t\t\t\toutput.objectChanges,\n\t\t\t\t);\n\n\t\t\t\t// Capture spec — user-declared projection from output to\n\t\t\t\t// typed object id map. Distilled doc §Outputs + Invariant:\n\t\t\t\t// safe to swallow individual key failures (callback form\n\t\t\t\t// is user code), but a callback throw bubbles up as a\n\t\t\t\t// PublishError('parse') so the user catches the typo.\n\t\t\t\tconst captured: Readonly<Record<string, string>> = inputs.capture\n\t\t\t\t\t? yield* Effect.try({\n\t\t\t\t\t\t\ttry: () => inputs.capture!(output),\n\t\t\t\t\t\t\tcatch: (cause): PublishError =>\n\t\t\t\t\t\t\t\tpublishError('parse', {\n\t\t\t\t\t\t\t\t\tsourcePath: inputs.sourcePath,\n\t\t\t\t\t\t\t\t\tpackageName: inputs.packageName,\n\t\t\t\t\t\t\t\t\tmessage: 'capture callback threw',\n\t\t\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t})\n\t\t\t\t\t: {};\n\n\t\t\t\tconst entry: CachedPackageEntry = {\n\t\t\t\t\tpackageId: published.objectId,\n\t\t\t\t\tupgradeCapId: upgradeCap?.objectId,\n\t\t\t\t\tpublisher: inputs.publisherAddress,\n\t\t\t\t\tmvrPlaceholder,\n\t\t\t\t\tcaptured,\n\t\t\t\t\toutput,\n\t\t\t\t};\n\t\t\t\treturn entry;\n\t\t\t}).pipe(\n\t\t\t\tEffect.mapError(\n\t\t\t\t\t(err): ArtifactPublishError => ({\n\t\t\t\t\t\t_tag: 'ArtifactPublishError',\n\t\t\t\t\t\treason: 'produce-failed',\n\t\t\t\t\t\tdetail: `package.publish ${err.phase}: ${err.message}`,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t),\n\t\t\t// Register: on EVERY cycle. Distilled doc Invariant 6.\n\t\t\t// The publisher hands us either `Produced` (CachedPackageEntry)\n\t\t\t// or `Verified` (`{ objectId, type }` from the verifySchema).\n\t\t\t// On verify-hit we project to a synthesized entry; on produce\n\t\t\t// we already have the full shape. The cache-hit path needs\n\t\t\t// to thread through the cached mvrPlaceholder + output. Recompute\n\t\t\t// `captured` from the current capture spec when cached output is\n\t\t\t// present so changing capture keys does not require a republish.\n\t\t\tregister: (artifact) =>\n\t\t\t\tEffect.gen(function* () {\n\t\t\t\t\tconst entry: CachedPackageEntry =\n\t\t\t\t\t\t'packageId' in artifact\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...artifact,\n\t\t\t\t\t\t\t\t\tcaptured:\n\t\t\t\t\t\t\t\t\t\tinputs.capture !== undefined && artifact.output !== undefined\n\t\t\t\t\t\t\t\t\t\t\t? (() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn inputs.capture(artifact.output);\n\t\t\t\t\t\t\t\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn artifact.captured;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t})()\n\t\t\t\t\t\t\t\t\t\t\t: artifact.captured,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t// Verify-hit path: project from the bare\n\t\t\t\t\t\t\t\t\t// `{ objectId, type }` probe shape using the\n\t\t\t\t\t\t\t\t\t// previously-resolved registry entry to recover\n\t\t\t\t\t\t\t\t\t// `mvrPlaceholder` + `captured`. If no prior\n\t\t\t\t\t\t\t\t\t// entry exists (first cold-boot verify hit —\n\t\t\t\t\t\t\t\t\t// unusual; implies a different process wrote\n\t\t\t\t\t\t\t\t\t// the cache), we fall back to safe defaults.\n\t\t\t\t\t\t\t\t\tpackageId: artifact.objectId,\n\t\t\t\t\t\t\t\t\tpublisher: inputs.publisherAddress,\n\t\t\t\t\t\t\t\t\tmvrPlaceholder:\n\t\t\t\t\t\t\t\t\t\tpriorEntry && priorEntry.kind === 'local'\n\t\t\t\t\t\t\t\t\t\t\t? priorEntry.mvrPlaceholder\n\t\t\t\t\t\t\t\t\t\t\t: mvrPlaceholder,\n\t\t\t\t\t\t\t\t\tcaptured: priorEntry && priorEntry.kind === 'local' ? priorEntry.captured : {},\n\t\t\t\t\t\t\t\t\tupgradeCapId:\n\t\t\t\t\t\t\t\t\t\tpriorEntry && priorEntry.kind === 'local' ? priorEntry.upgradeCapId : undefined,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\tconst r: ResolvedLocalPackage = {\n\t\t\t\t\t\tkind: 'local',\n\t\t\t\t\t\tname: inputs.packageName,\n\t\t\t\t\t\tpackageId: entry.packageId,\n\t\t\t\t\t\tupgradeCapId: entry.upgradeCapId,\n\t\t\t\t\t\tsourcePath: inputs.sourcePath,\n\t\t\t\t\t\tmvrPlaceholder: entry.mvrPlaceholder,\n\t\t\t\t\t\tcaptured: entry.captured,\n\t\t\t\t\t};\n\t\t\t\t\tyield* registry.set(r.name, r);\n\t\t\t\t}),\n\t\t});\n\n\t\t// Project the cached/verified entry back to the resolved shape.\n\t\t// The publisher's `Produced | Verified` union — Produced is\n\t\t// CachedPackageEntry (full); Verified is `{ objectId, type }`\n\t\t// from the verify schema. Both collapse onto the registry's\n\t\t// projected `ResolvedLocalPackage` — and `register` already\n\t\t// performed that projection. Re-read the registry to recover\n\t\t// the unified shape regardless of which arm fired.\n\t\tconst final = yield* registry.find(inputs.packageName);\n\t\tif (!final || final.kind !== 'local') {\n\t\t\t// Defensive — register fires unconditionally; missing entry\n\t\t\t// here would mean substrate skipped register, violating\n\t\t\t// Invariant 6. Surface as a parse-phase failure since it's\n\t\t\t// indistinguishable from a missing 'published' change from\n\t\t\t// the consumer's perspective.\n\t\t\treturn yield* Effect.fail(\n\t\t\t\tpublishError('parse', {\n\t\t\t\t\tsourcePath: inputs.sourcePath,\n\t\t\t\t\tpackageName: inputs.packageName,\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t'register did not surface entry — artifact publisher register invariant violation',\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\t// Silence the unused-binding lint for the artifact publisher `resolved` — the\n\t\t// substrate's `Produced | Verified` return is informational\n\t\t// here (we project through the registry instead).\n\t\tvoid resolved;\n\n\t\tconst cachedOutput =\n\t\t\t'packageId' in resolved && 'output' in resolved ? (resolved.output ?? null) : null;\n\n\t\treturn {\n\t\t\tresolved: final,\n\t\t\toutput: producedOutput ?? cachedOutput,\n\t\t};\n\t});\n"],"mappings":"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"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { buildForkImpersonationTransactionBytes } from "../sui/fork-transaction.mjs";
|
|
2
|
+
import { publishError } from "./errors.mjs";
|
|
3
|
+
import { runMoveBuild } from "./build.mjs";
|
|
4
|
+
import { Effect } from "effect";
|
|
5
|
+
import { Transaction } from "@mysten/sui/transactions";
|
|
6
|
+
//#region src/plugins/package/publish-executor.ts
|
|
7
|
+
const shouldHydrateCreatedObject = (change) => change.type === "created" && change.objectId !== void 0 && change.objectType !== void 0 && (change.objectType.includes("::coin::TreasuryCap<") || change.objectType.includes("::coin::CoinMetadata<") || change.objectType.includes("::coin_registry::Currency<"));
|
|
8
|
+
const projectObjectPayload = (raw) => {
|
|
9
|
+
if (raw !== null && typeof raw === "object" && "object" in raw) return raw.object;
|
|
10
|
+
return raw;
|
|
11
|
+
};
|
|
12
|
+
const projectHydratedObjectFields = (raw) => {
|
|
13
|
+
const object = projectObjectPayload(raw);
|
|
14
|
+
if (object === null || typeof object !== "object") return {};
|
|
15
|
+
const payload = object;
|
|
16
|
+
return {
|
|
17
|
+
...payload.owner === void 0 ? {} : { owner: payload.owner },
|
|
18
|
+
...payload.json === void 0 ? {} : { json: payload.json }
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
const hydrateCreatedObject = (sdk, change) => {
|
|
22
|
+
if (!shouldHydrateCreatedObject(change) || change.objectId === void 0) return Effect.succeed(change);
|
|
23
|
+
return Effect.tryPromise({
|
|
24
|
+
try: () => sdk.core.getObject({
|
|
25
|
+
objectId: change.objectId,
|
|
26
|
+
include: { json: true }
|
|
27
|
+
}),
|
|
28
|
+
catch: () => null
|
|
29
|
+
}).pipe(Effect.map((raw) => ({
|
|
30
|
+
...change,
|
|
31
|
+
...raw === null ? {} : projectHydratedObjectFields(raw)
|
|
32
|
+
})), Effect.catch(() => Effect.succeed(change)));
|
|
33
|
+
};
|
|
34
|
+
const hydrateCreatedObjects = (sdk, changes) => Effect.forEach(changes, (change) => hydrateCreatedObject(sdk, change), { concurrency: "unbounded" });
|
|
35
|
+
const rawEnvelopeFromAccountTx = (tx) => {
|
|
36
|
+
const objectTypes = {};
|
|
37
|
+
const changedObjects = [];
|
|
38
|
+
for (const change of tx.objectChanges) {
|
|
39
|
+
if (typeof change !== "object" || change === null) continue;
|
|
40
|
+
const objectId = change.objectId;
|
|
41
|
+
if (typeof objectId !== "string") continue;
|
|
42
|
+
const objectType = change.objectType;
|
|
43
|
+
if (typeof objectType === "string") objectTypes[objectId] = objectType;
|
|
44
|
+
const type = change.type;
|
|
45
|
+
const outputState = change.outputState;
|
|
46
|
+
const idOperation = change.idOperation;
|
|
47
|
+
const entry = { objectId };
|
|
48
|
+
if (typeof outputState === "string") entry.outputState = outputState;
|
|
49
|
+
else if (type === "published") entry.outputState = "PackageWrite";
|
|
50
|
+
else if (type === "created" || type === "mutated") entry.outputState = "ObjectWrite";
|
|
51
|
+
if (typeof idOperation === "string") entry.idOperation = idOperation;
|
|
52
|
+
else if (type === "created" || type === "published") entry.idOperation = "Created";
|
|
53
|
+
else if (type === "mutated") entry.idOperation = "None";
|
|
54
|
+
changedObjects.push(entry);
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
$kind: "Transaction",
|
|
58
|
+
Transaction: {
|
|
59
|
+
digest: tx.digest,
|
|
60
|
+
effects: { changedObjects },
|
|
61
|
+
objectTypes
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Construct a `PublishExecutor` from the barrel's resolved inputs.
|
|
67
|
+
*
|
|
68
|
+
* The factory exists so the barrel can compose the executor once per
|
|
69
|
+
* acquire and hand the result to `acquireLocal`. Internally the three
|
|
70
|
+
* methods are closures over the inputs; no per-call construction.
|
|
71
|
+
*/
|
|
72
|
+
const makePublishExecutor = (inputs) => ({
|
|
73
|
+
scrubsInsideContainer: inputs.runtime !== void 0 && inputs.buildImage !== void 0,
|
|
74
|
+
build: ({ sourcePath, packageName, chainId }) => runMoveBuild({
|
|
75
|
+
sourcePath,
|
|
76
|
+
packageName,
|
|
77
|
+
chainId,
|
|
78
|
+
...inputs.runtime !== void 0 ? { runtime: inputs.runtime } : {},
|
|
79
|
+
...inputs.buildImage !== void 0 ? { buildImage: inputs.buildImage } : {}
|
|
80
|
+
}),
|
|
81
|
+
publishTx: ({ modules, dependencies, sourcePath, packageName }) => Effect.gen(function* () {
|
|
82
|
+
const tx = new Transaction();
|
|
83
|
+
tx.setSender(inputs.account.address);
|
|
84
|
+
const upgradeCapArg = tx.publish({
|
|
85
|
+
modules: modules.map((m) => Array.from(m)),
|
|
86
|
+
dependencies: [...dependencies]
|
|
87
|
+
});
|
|
88
|
+
tx.transferObjects([upgradeCapArg], inputs.account.address);
|
|
89
|
+
const sdkClient = inputs.sdk.client;
|
|
90
|
+
const rawResult = yield* inputs.account.withTransactionSigner((lockedSigner) => Effect.gen(function* () {
|
|
91
|
+
const txBytes = inputs.account.source === "impersonate" ? yield* buildForkImpersonationTransactionBytes(tx, inputs.account.address, inputs.sdk.core).pipe(Effect.mapError((cause) => publishError("publish-tx", {
|
|
92
|
+
sourcePath,
|
|
93
|
+
packageName,
|
|
94
|
+
message: `Fork impersonation Transaction.build failed for package '${packageName}': ` + cause.message,
|
|
95
|
+
cause
|
|
96
|
+
}))) : yield* Effect.tryPromise({
|
|
97
|
+
try: () => tx.build({ client: inputs.sdk.client }),
|
|
98
|
+
catch: (cause) => publishError("publish-tx", {
|
|
99
|
+
sourcePath,
|
|
100
|
+
packageName,
|
|
101
|
+
message: `Transaction.build failed for package '${packageName}': ` + (cause instanceof Error ? cause.message : String(cause)),
|
|
102
|
+
cause
|
|
103
|
+
})
|
|
104
|
+
});
|
|
105
|
+
if (inputs.account.source === "impersonate") return rawEnvelopeFromAccountTx(yield* lockedSigner.signAndExecute(txBytes).pipe(Effect.mapError((cause) => publishError("publish-tx", {
|
|
106
|
+
sourcePath,
|
|
107
|
+
packageName,
|
|
108
|
+
message: `account.signAndExecute failed for publisher '${inputs.account.name}' (address=${inputs.account.address}): ${cause instanceof Error ? cause.message : String(cause)}`,
|
|
109
|
+
cause
|
|
110
|
+
}))));
|
|
111
|
+
const signed = yield* lockedSigner.signTransaction(txBytes).pipe(Effect.mapError((cause) => publishError("publish-tx", {
|
|
112
|
+
sourcePath,
|
|
113
|
+
packageName,
|
|
114
|
+
message: `account.signTransaction failed for publisher '${inputs.account.name}' (address=${inputs.account.address}): ${cause instanceof Error ? cause.message : String(cause)}`,
|
|
115
|
+
cause
|
|
116
|
+
})));
|
|
117
|
+
const raw = yield* Effect.tryPromise({
|
|
118
|
+
try: () => sdkClient.executeTransaction({
|
|
119
|
+
transaction: txBytes,
|
|
120
|
+
signatures: [signed.signature],
|
|
121
|
+
include: {
|
|
122
|
+
effects: true,
|
|
123
|
+
objectTypes: true
|
|
124
|
+
}
|
|
125
|
+
}),
|
|
126
|
+
catch: (cause) => publishError("publish-tx", {
|
|
127
|
+
sourcePath,
|
|
128
|
+
packageName,
|
|
129
|
+
message: `executeTransaction failed for publisher '${inputs.account.name}': ` + (cause instanceof Error ? cause.message : String(cause)),
|
|
130
|
+
cause
|
|
131
|
+
})
|
|
132
|
+
});
|
|
133
|
+
const envelope = raw;
|
|
134
|
+
const digest = envelope.Transaction?.digest ?? envelope.FailedTransaction?.digest;
|
|
135
|
+
if (digest !== void 0) yield* Effect.tryPromise({
|
|
136
|
+
try: () => sdkClient.waitForTransaction({ digest }),
|
|
137
|
+
catch: (cause) => publishError("publish-tx", {
|
|
138
|
+
sourcePath,
|
|
139
|
+
packageName,
|
|
140
|
+
message: `waitForTransaction(${digest}) failed`,
|
|
141
|
+
cause
|
|
142
|
+
})
|
|
143
|
+
});
|
|
144
|
+
return raw;
|
|
145
|
+
}));
|
|
146
|
+
const env = rawResult;
|
|
147
|
+
if (env.$kind === "FailedTransaction") return yield* Effect.fail(publishError("publish-tx", {
|
|
148
|
+
sourcePath,
|
|
149
|
+
packageName,
|
|
150
|
+
message: `executeTransaction returned FailedTransaction (digest=${env.FailedTransaction?.digest ?? "<unknown>"}): ` + (env.FailedTransaction?.status?.error ?? "<no error>")
|
|
151
|
+
}));
|
|
152
|
+
const txOk = env.Transaction;
|
|
153
|
+
if (txOk?.digest === void 0) return yield* Effect.fail(publishError("publish-tx", {
|
|
154
|
+
sourcePath,
|
|
155
|
+
packageName,
|
|
156
|
+
message: `executeTransaction returned no digest. Raw=${JSON.stringify(rawResult).slice(0, 300)}`
|
|
157
|
+
}));
|
|
158
|
+
const objectChanges = [];
|
|
159
|
+
const objectTypes = txOk.objectTypes ?? {};
|
|
160
|
+
for (const ch of txOk.effects?.changedObjects ?? []) {
|
|
161
|
+
if (!ch.objectId) continue;
|
|
162
|
+
const objectType = objectTypes[ch.objectId];
|
|
163
|
+
if (ch.outputState === "PackageWrite") objectChanges.push({
|
|
164
|
+
type: "published",
|
|
165
|
+
objectId: ch.objectId,
|
|
166
|
+
...objectType !== void 0 ? { objectType } : {}
|
|
167
|
+
});
|
|
168
|
+
else if (ch.idOperation === "Created") objectChanges.push({
|
|
169
|
+
type: "created",
|
|
170
|
+
objectId: ch.objectId,
|
|
171
|
+
...objectType !== void 0 ? { objectType } : {}
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
const published = objectChanges.find((c) => c.type === "published");
|
|
175
|
+
const upgradeCap = objectChanges.find((c) => c.type === "created" && (c.objectType?.endsWith("::package::UpgradeCap") ?? false));
|
|
176
|
+
const hydratedObjectChanges = yield* hydrateCreatedObjects(inputs.sdk, objectChanges);
|
|
177
|
+
return {
|
|
178
|
+
digest: txOk.digest,
|
|
179
|
+
packageId: published?.objectId ?? "",
|
|
180
|
+
publisher: inputs.account.address,
|
|
181
|
+
...upgradeCap?.objectId !== void 0 ? { upgradeCapId: upgradeCap.objectId } : {},
|
|
182
|
+
objectChanges: hydratedObjectChanges
|
|
183
|
+
};
|
|
184
|
+
}).pipe(Effect.withSpan("package.publish-tx", { attributes: { "package.publish.packageName": packageName } })),
|
|
185
|
+
waitForReady: (packageId) => Effect.tryPromise({
|
|
186
|
+
try: async () => {
|
|
187
|
+
try {
|
|
188
|
+
await inputs.sdk.core.getObject({ objectId: packageId });
|
|
189
|
+
} catch {}
|
|
190
|
+
},
|
|
191
|
+
catch: (cause) => publishError("parse", {
|
|
192
|
+
sourcePath: "<wait-for-ready>",
|
|
193
|
+
packageName: packageId,
|
|
194
|
+
message: `waitForReady(${packageId}) failed`,
|
|
195
|
+
cause
|
|
196
|
+
})
|
|
197
|
+
}).pipe(Effect.withSpan("package.wait-for-ready", { attributes: { "package.publish.packageId": packageId } }))
|
|
198
|
+
});
|
|
199
|
+
//#endregion
|
|
200
|
+
export { makePublishExecutor };
|
|
201
|
+
|
|
202
|
+
//# sourceMappingURL=publish-executor.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-executor.mjs","names":[],"sources":["../../../src/plugins/package/publish-executor.ts"],"sourcesContent":["// Concrete `PublishExecutor` — wires the Move build, publish-tx\n// builder, and post-publish ready-probe over (a) the resolved\n// `SuiClient` from the Sui dependency and (b) the publisher account's signer\n// from the account dependency.\n//\n// Architecture: the executor is a small adapter — `mode-local.ts`\n// owns the 5-phase produce body (scrub → build → publish-tx → wait-\n// for-index → parse); this file just satisfies the `PublishExecutor`\n// interface by:\n//\n// 1. Delegating `build` to `runMoveBuild` (the existing path-(a)/\n// path-(b)/path-(c) dispatcher in `build.ts`).\n// 2. Constructing a `Transaction.publish({modules, dependencies})`\n// for `publishTx`, serialising via `tx.build({ client })`,\n// signing/executing inside the publisher account's transaction\n// critical section, and projecting the response to a\n// `LocalPackagePublishOutput`.\n// 3. Wrapping `sdk.core.waitForTransaction({ digest })` for\n// `waitForReady` — the SDK already retries / waits for index\n// visibility internally.\n//\n// Errors:\n// - Each method maps its concrete failure → a typed `PublishError`\n// whose `phase:` matches the produce-step taxonomy\n// (`build` / `publish-tx` / `parse`).\n// - Account sign failures roll into `publish-tx` with cause-chain\n// preserved; the cascade formatter unwraps them.\n\nimport { Effect, type Scope } from 'effect';\n\nimport { Transaction } from '@mysten/sui/transactions';\n\nimport type { AccountValue, TxResult } from '../account/service.ts';\nimport type { ContainerRuntime, ImageRef } from '../../contracts/container-runtime.ts';\nimport type { ChainId } from '../../substrate/brand.ts';\nimport { buildForkImpersonationTransactionBytes } from '../sui/fork-transaction.ts';\nimport { runMoveBuild, type BuildOutput } from './build.ts';\nimport type { LocalPackagePublishOutput, PackagePublishObjectChange } from './publish-output.ts';\nimport { publishError, type PublishError } from './errors.ts';\nimport type { PublishExecutor } from './mode-local.ts';\nimport type { SuiSdkShim } from '../sui/chain-probe.ts';\n\nconst shouldHydrateCreatedObject = (change: PackagePublishObjectChange): boolean =>\n\tchange.type === 'created' &&\n\tchange.objectId !== undefined &&\n\tchange.objectType !== undefined &&\n\t(change.objectType.includes('::coin::TreasuryCap<') ||\n\t\tchange.objectType.includes('::coin::CoinMetadata<') ||\n\t\tchange.objectType.includes('::coin_registry::Currency<'));\n\nconst projectObjectPayload = (raw: unknown): unknown => {\n\tif (raw !== null && typeof raw === 'object' && 'object' in raw) {\n\t\treturn (raw as { readonly object?: unknown }).object;\n\t}\n\treturn raw;\n};\n\nconst projectHydratedObjectFields = (\n\traw: unknown,\n): Pick<PackagePublishObjectChange, 'owner' | 'json'> => {\n\tconst object = projectObjectPayload(raw);\n\tif (object === null || typeof object !== 'object') return {};\n\tconst payload = object as { readonly owner?: unknown; readonly json?: unknown };\n\treturn {\n\t\t...(payload.owner === undefined ? {} : { owner: payload.owner }),\n\t\t...(payload.json === undefined ? {} : { json: payload.json }),\n\t};\n};\n\nconst hydrateCreatedObject = (\n\tsdk: SuiSdkShim,\n\tchange: PackagePublishObjectChange,\n): Effect.Effect<PackagePublishObjectChange> => {\n\tif (!shouldHydrateCreatedObject(change) || change.objectId === undefined) {\n\t\treturn Effect.succeed(change);\n\t}\n\treturn Effect.tryPromise({\n\t\ttry: () =>\n\t\t\tsdk.core.getObject({\n\t\t\t\tobjectId: change.objectId!,\n\t\t\t\tinclude: { json: true },\n\t\t\t}),\n\t\tcatch: () => null,\n\t}).pipe(\n\t\tEffect.map((raw) => ({\n\t\t\t...change,\n\t\t\t...(raw === null ? {} : projectHydratedObjectFields(raw)),\n\t\t})),\n\t\tEffect.catch(() => Effect.succeed(change)),\n\t);\n};\n\nconst hydrateCreatedObjects = (\n\tsdk: SuiSdkShim,\n\tchanges: ReadonlyArray<PackagePublishObjectChange>,\n): Effect.Effect<ReadonlyArray<PackagePublishObjectChange>> =>\n\tEffect.forEach(changes, (change) => hydrateCreatedObject(sdk, change), {\n\t\tconcurrency: 'unbounded',\n\t});\n\nconst rawEnvelopeFromAccountTx = (tx: TxResult): unknown => {\n\tconst objectTypes: Record<string, string> = {};\n\tconst changedObjects: Array<{\n\t\treadonly objectId: string;\n\t\treadonly outputState?: string;\n\t\treadonly idOperation?: string;\n\t}> = [];\n\tfor (const change of tx.objectChanges) {\n\t\tif (typeof change !== 'object' || change === null) continue;\n\t\tconst objectId = (change as { readonly objectId?: unknown }).objectId;\n\t\tif (typeof objectId !== 'string') continue;\n\t\tconst objectType = (change as { readonly objectType?: unknown }).objectType;\n\t\tif (typeof objectType === 'string') objectTypes[objectId] = objectType;\n\t\tconst type = (change as { readonly type?: unknown }).type;\n\t\tconst outputState = (change as { readonly outputState?: unknown }).outputState;\n\t\tconst idOperation = (change as { readonly idOperation?: unknown }).idOperation;\n\t\tconst entry: {\n\t\t\tobjectId: string;\n\t\t\toutputState?: string;\n\t\t\tidOperation?: string;\n\t\t} = { objectId };\n\t\tif (typeof outputState === 'string') {\n\t\t\tentry.outputState = outputState;\n\t\t} else if (type === 'published') {\n\t\t\tentry.outputState = 'PackageWrite';\n\t\t} else if (type === 'created' || type === 'mutated') {\n\t\t\tentry.outputState = 'ObjectWrite';\n\t\t}\n\t\tif (typeof idOperation === 'string') {\n\t\t\tentry.idOperation = idOperation;\n\t\t} else if (type === 'created' || type === 'published') {\n\t\t\tentry.idOperation = 'Created';\n\t\t} else if (type === 'mutated') {\n\t\t\tentry.idOperation = 'None';\n\t\t}\n\t\tchangedObjects.push(entry);\n\t}\n\treturn {\n\t\t$kind: 'Transaction',\n\t\tTransaction: {\n\t\t\tdigest: tx.digest,\n\t\t\teffects: { changedObjects },\n\t\t\tobjectTypes,\n\t\t},\n\t};\n};\n\n// ---------------------------------------------------------------------------\n// Per-acquire inputs threaded by the barrel\n// ---------------------------------------------------------------------------\n\nexport interface PublishExecutorInputs {\n\t/** The resolved SDK shim from the Sui dependency. Carries `core.executeTransaction`,\n\t * `core.waitForTransaction`, plus the opaque `client` ref used by\n\t * `Transaction.build({ client })`. */\n\treadonly sdk: SuiSdkShim;\n\t/** Publisher account — provides `signAndExecute` (which internally\n\t * signs, submits via `executeTransaction`, and awaits finality via\n\t * `waitForTransaction`). The address surfaces as the publisher on\n\t * the output. */\n\treadonly account: AccountValue;\n\t/** Container runtime + image consumed by `runMoveBuild`'s path-(b)\n\t * (`docker run --rm`). Absent → path-(c) (host CLI). */\n\treadonly runtime?: ContainerRuntime | undefined;\n\treadonly buildImage?: ImageRef | undefined;\n}\n\n// ---------------------------------------------------------------------------\n// Executor factory\n// ---------------------------------------------------------------------------\n\n/**\n * Construct a `PublishExecutor` from the barrel's resolved inputs.\n *\n * The factory exists so the barrel can compose the executor once per\n * acquire and hand the result to `acquireLocal`. Internally the three\n * methods are closures over the inputs; no per-call construction.\n */\nexport const makePublishExecutor = (inputs: PublishExecutorInputs): PublishExecutor => ({\n\tscrubsInsideContainer: inputs.runtime !== undefined && inputs.buildImage !== undefined,\n\n\t// Build step — delegate to the Move-build dispatcher in `build.ts`.\n\tbuild: ({\n\t\tsourcePath,\n\t\tpackageName,\n\t\tchainId,\n\t}: {\n\t\treadonly sourcePath: string;\n\t\treadonly packageName: string;\n\t\treadonly chainId: ChainId;\n\t}): Effect.Effect<BuildOutput, PublishError, Scope.Scope> =>\n\t\trunMoveBuild({\n\t\t\tsourcePath,\n\t\t\tpackageName,\n\t\t\tchainId,\n\t\t\t...(inputs.runtime !== undefined ? { runtime: inputs.runtime } : {}),\n\t\t\t...(inputs.buildImage !== undefined ? { buildImage: inputs.buildImage } : {}),\n\t\t}),\n\n\t// Publish step — build + sign + execute the publish tx.\n\tpublishTx: ({\n\t\tmodules,\n\t\tdependencies,\n\t\tsourcePath,\n\t\tpackageName,\n\t}: {\n\t\treadonly modules: ReadonlyArray<Uint8Array>;\n\t\treadonly dependencies: ReadonlyArray<string>;\n\t\treadonly sourcePath: string;\n\t\treadonly packageName: string;\n\t}): Effect.Effect<LocalPackagePublishOutput, PublishError, Scope.Scope> =>\n\t\tEffect.gen(function* () {\n\t\t\t// Build the publish transaction. `tx.publish` accepts\n\t\t\t// `modules: number[][] | string[]` — coerce Uint8Array → number[].\n\t\t\t// `dependencies` is the array of dependency package ids from the\n\t\t\t// build output.\n\t\t\t//\n\t\t\t// `tx.publish` RETURNS the `UpgradeCap` (a value of `package::\n\t\t\t// UpgradeCap` — `key + store`, NO `drop`). The Move VM refuses\n\t\t\t// transactions that leave such values unused\n\t\t\t// (`UnusedValueWithoutDrop`); we MUST transfer the cap to a\n\t\t\t// concrete owner. Convention (matches v3 + dev-wallet's\n\t\t\t// MintNFT demo): transfer to the publisher account so the\n\t\t\t// stack-owner retains upgrade authority.\n\t\t\tconst tx = new Transaction();\n\t\t\ttx.setSender(inputs.account.address);\n\t\t\tconst upgradeCapArg = tx.publish({\n\t\t\t\tmodules: modules.map((m) => Array.from(m)),\n\t\t\t\tdependencies: [...dependencies],\n\t\t\t});\n\t\t\ttx.transferObjects([upgradeCapArg], inputs.account.address);\n\n\t\t\tconst sdkClient = inputs.sdk.client as {\n\t\t\t\treadonly executeTransaction: (args: {\n\t\t\t\t\treadonly transaction: Uint8Array;\n\t\t\t\t\treadonly signatures: ReadonlyArray<string>;\n\t\t\t\t\treadonly include?: {\n\t\t\t\t\t\treadonly effects?: boolean;\n\t\t\t\t\t\treadonly objectTypes?: boolean;\n\t\t\t\t\t};\n\t\t\t\t}) => Promise<unknown>;\n\t\t\t\treadonly waitForTransaction: (args: {\n\t\t\t\t\treadonly digest: string;\n\t\t\t\t\treadonly include?: { readonly effects?: boolean };\n\t\t\t\t\treadonly timeout?: number;\n\t\t\t\t}) => Promise<unknown>;\n\t\t\t};\n\n\t\t\tconst rawResult = yield* inputs.account.withTransactionSigner((lockedSigner) =>\n\t\t\t\tEffect.gen(function* () {\n\t\t\t\t\t// Serialise while the account lease is held. Real signers use the SDK resolver;\n\t\t\t\t\t// fork impersonation must build offline with explicit gas fields because the\n\t\t\t\t\t// fork binary does not support the normal gas-selection simulation path.\n\t\t\t\t\tconst txBytes =\n\t\t\t\t\t\tinputs.account.source === 'impersonate'\n\t\t\t\t\t\t\t? yield* buildForkImpersonationTransactionBytes(\n\t\t\t\t\t\t\t\t\ttx,\n\t\t\t\t\t\t\t\t\tinputs.account.address,\n\t\t\t\t\t\t\t\t\tinputs.sdk.core,\n\t\t\t\t\t\t\t\t).pipe(\n\t\t\t\t\t\t\t\t\tEffect.mapError(\n\t\t\t\t\t\t\t\t\t\t(cause): PublishError =>\n\t\t\t\t\t\t\t\t\t\t\tpublishError('publish-tx', {\n\t\t\t\t\t\t\t\t\t\t\t\tsourcePath,\n\t\t\t\t\t\t\t\t\t\t\t\tpackageName,\n\t\t\t\t\t\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t\t\t\t\t\t`Fork impersonation Transaction.build failed for package '${packageName}': ` +\n\t\t\t\t\t\t\t\t\t\t\t\t\tcause.message,\n\t\t\t\t\t\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: yield* Effect.tryPromise({\n\t\t\t\t\t\t\t\t\ttry: () =>\n\t\t\t\t\t\t\t\t\t\ttx.build({\n\t\t\t\t\t\t\t\t\t\t\tclient: inputs.sdk.client as Parameters<typeof tx.build>[0] extends\n\t\t\t\t\t\t\t\t\t\t\t\t| { client?: infer C }\n\t\t\t\t\t\t\t\t\t\t\t\t| undefined\n\t\t\t\t\t\t\t\t\t\t\t\t? C\n\t\t\t\t\t\t\t\t\t\t\t\t: never,\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\tcatch: (cause): PublishError =>\n\t\t\t\t\t\t\t\t\t\tpublishError('publish-tx', {\n\t\t\t\t\t\t\t\t\t\t\tsourcePath,\n\t\t\t\t\t\t\t\t\t\t\tpackageName,\n\t\t\t\t\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t\t\t\t\t`Transaction.build failed for package '${packageName}': ` +\n\t\t\t\t\t\t\t\t\t\t\t\t(cause instanceof Error ? cause.message : String(cause)),\n\t\t\t\t\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\tif (inputs.account.source === 'impersonate') {\n\t\t\t\t\t\tconst result = yield* lockedSigner.signAndExecute(txBytes).pipe(\n\t\t\t\t\t\t\tEffect.mapError(\n\t\t\t\t\t\t\t\t(cause): PublishError =>\n\t\t\t\t\t\t\t\t\tpublishError('publish-tx', {\n\t\t\t\t\t\t\t\t\t\tsourcePath,\n\t\t\t\t\t\t\t\t\t\tpackageName,\n\t\t\t\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t\t\t\t`account.signAndExecute failed for publisher '${inputs.account.name}' ` +\n\t\t\t\t\t\t\t\t\t\t\t`(address=${inputs.account.address}): ${\n\t\t\t\t\t\t\t\t\t\t\t\tcause instanceof Error ? cause.message : String(cause)\n\t\t\t\t\t\t\t\t\t\t\t}`,\n\t\t\t\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn rawEnvelopeFromAccountTx(result);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst signed = yield* lockedSigner.signTransaction(txBytes).pipe(\n\t\t\t\t\t\tEffect.mapError(\n\t\t\t\t\t\t\t(cause): PublishError =>\n\t\t\t\t\t\t\t\tpublishError('publish-tx', {\n\t\t\t\t\t\t\t\t\tsourcePath,\n\t\t\t\t\t\t\t\t\tpackageName,\n\t\t\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t\t\t`account.signTransaction failed for publisher '${inputs.account.name}' ` +\n\t\t\t\t\t\t\t\t\t\t`(address=${inputs.account.address}): ${\n\t\t\t\t\t\t\t\t\t\t\tcause instanceof Error ? cause.message : String(cause)\n\t\t\t\t\t\t\t\t\t\t}`,\n\t\t\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\tconst raw = yield* Effect.tryPromise({\n\t\t\t\t\t\ttry: () =>\n\t\t\t\t\t\t\tsdkClient.executeTransaction({\n\t\t\t\t\t\t\t\ttransaction: txBytes,\n\t\t\t\t\t\t\t\tsignatures: [signed.signature],\n\t\t\t\t\t\t\t\t// Include flags drive readMask paths in the SDK's\n\t\t\t\t\t\t\t\t// `executeTransaction` (see grpc/core.mjs). Effects\n\t\t\t\t\t\t\t\t// gives us `changedObjects` (PackageWrite + Created\n\t\t\t\t\t\t\t\t// upgrade cap); objectTypes maps changed ids →\n\t\t\t\t\t\t\t\t// fully-qualified type strings so the UpgradeCap is\n\t\t\t\t\t\t\t\t// identifiable unambiguously.\n\t\t\t\t\t\t\t\tinclude: { effects: true, objectTypes: true },\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\tcatch: (cause): PublishError =>\n\t\t\t\t\t\t\tpublishError('publish-tx', {\n\t\t\t\t\t\t\t\tsourcePath,\n\t\t\t\t\t\t\t\tpackageName,\n\t\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t\t`executeTransaction failed for publisher '${inputs.account.name}': ` +\n\t\t\t\t\t\t\t\t\t(cause instanceof Error ? cause.message : String(cause)),\n\t\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tconst envelope = raw as {\n\t\t\t\t\t\treadonly Transaction?: { readonly digest?: string };\n\t\t\t\t\t\treadonly FailedTransaction?: { readonly digest?: string };\n\t\t\t\t\t};\n\t\t\t\t\tconst digest = envelope.Transaction?.digest ?? envelope.FailedTransaction?.digest;\n\t\t\t\t\tif (digest !== undefined) {\n\t\t\t\t\t\tyield* Effect.tryPromise({\n\t\t\t\t\t\t\ttry: () =>\n\t\t\t\t\t\t\t\tsdkClient.waitForTransaction({\n\t\t\t\t\t\t\t\t\tdigest,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tcatch: (cause): PublishError =>\n\t\t\t\t\t\t\t\tpublishError('publish-tx', {\n\t\t\t\t\t\t\t\t\tsourcePath,\n\t\t\t\t\t\t\t\t\tpackageName,\n\t\t\t\t\t\t\t\t\tmessage: `waitForTransaction(${digest}) failed`,\n\t\t\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn raw;\n\t\t\t\t}),\n\t\t\t);\n\n\t\t\t// Project the SDK's `TransactionResult` envelope to the\n\t\t\t// output shape. On `$kind: FailedTransaction` we raise a\n\t\t\t// publish-tx error; on the success branch we walk\n\t\t\t// `effects.changedObjects` for the published package id and\n\t\t\t// the upgrade cap.\n\t\t\t//\n\t\t\t// changedObjects entries are flat: `{objectId, inputState,\n\t\t\t// outputState, idOperation, ...}` — `outputState` is a\n\t\t\t// string literal (`'PackageWrite'` | `'ObjectWrite'` |\n\t\t\t// `'DoesNotExist'`), `idOperation` is a string literal\n\t\t\t// (`'Created'` | `'Deleted'` | `'None'`).\n\t\t\tconst env = rawResult as {\n\t\t\t\treadonly $kind?: 'Transaction' | 'FailedTransaction';\n\t\t\t\treadonly Transaction?: {\n\t\t\t\t\treadonly digest?: string;\n\t\t\t\t\treadonly status?: { readonly success?: boolean; readonly error?: string };\n\t\t\t\t\treadonly effects?: {\n\t\t\t\t\t\treadonly changedObjects?: ReadonlyArray<{\n\t\t\t\t\t\t\treadonly objectId?: string;\n\t\t\t\t\t\t\treadonly outputState?: string;\n\t\t\t\t\t\t\treadonly idOperation?: string;\n\t\t\t\t\t\t}>;\n\t\t\t\t\t};\n\t\t\t\t\treadonly objectTypes?: Readonly<Record<string, string>>;\n\t\t\t\t};\n\t\t\t\treadonly FailedTransaction?: {\n\t\t\t\t\treadonly digest?: string;\n\t\t\t\t\treadonly status?: { readonly error?: string };\n\t\t\t\t};\n\t\t\t};\n\t\t\tif (env.$kind === 'FailedTransaction') {\n\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\tpublishError('publish-tx', {\n\t\t\t\t\t\tsourcePath,\n\t\t\t\t\t\tpackageName,\n\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t`executeTransaction returned FailedTransaction (digest=${env.FailedTransaction?.digest ?? '<unknown>'}): ` +\n\t\t\t\t\t\t\t(env.FailedTransaction?.status?.error ?? '<no error>'),\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst txOk = env.Transaction;\n\t\t\tif (txOk?.digest === undefined) {\n\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\tpublishError('publish-tx', {\n\t\t\t\t\t\tsourcePath,\n\t\t\t\t\t\tpackageName,\n\t\t\t\t\t\tmessage: `executeTransaction returned no digest. Raw=${JSON.stringify(rawResult).slice(0, 300)}`,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst objectChanges: Array<PackagePublishObjectChange> = [];\n\t\t\tconst objectTypes = txOk.objectTypes ?? {};\n\t\t\tfor (const ch of txOk.effects?.changedObjects ?? []) {\n\t\t\t\tif (!ch.objectId) continue;\n\t\t\t\tconst objectType = objectTypes[ch.objectId];\n\t\t\t\tif (ch.outputState === 'PackageWrite') {\n\t\t\t\t\tobjectChanges.push({\n\t\t\t\t\t\ttype: 'published',\n\t\t\t\t\t\tobjectId: ch.objectId,\n\t\t\t\t\t\t...(objectType !== undefined ? { objectType } : {}),\n\t\t\t\t\t});\n\t\t\t\t} else if (ch.idOperation === 'Created') {\n\t\t\t\t\tobjectChanges.push({\n\t\t\t\t\t\ttype: 'created',\n\t\t\t\t\t\tobjectId: ch.objectId,\n\t\t\t\t\t\t...(objectType !== undefined ? { objectType } : {}),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst published = objectChanges.find((c) => c.type === 'published');\n\t\t\tconst upgradeCap = objectChanges.find(\n\t\t\t\t(c) => c.type === 'created' && (c.objectType?.endsWith('::package::UpgradeCap') ?? false),\n\t\t\t);\n\t\t\tconst hydratedObjectChanges = yield* hydrateCreatedObjects(inputs.sdk, objectChanges);\n\n\t\t\tconst output: LocalPackagePublishOutput = {\n\t\t\t\tdigest: txOk.digest,\n\t\t\t\tpackageId: published?.objectId ?? '',\n\t\t\t\tpublisher: inputs.account.address,\n\t\t\t\t...(upgradeCap?.objectId !== undefined ? { upgradeCapId: upgradeCap.objectId } : {}),\n\t\t\t\tobjectChanges: hydratedObjectChanges,\n\t\t\t};\n\n\t\t\treturn output;\n\t\t}).pipe(\n\t\t\tEffect.withSpan('package.publish-tx', {\n\t\t\t\tattributes: { 'package.publish.packageName': packageName },\n\t\t\t}),\n\t\t),\n\n\t// Wait-for-index step — post-publish ready-probe. The SDK's\n\t// `waitForTransaction` already polls fullnode index visibility\n\t// internally; we wrap it once with a typed PublishError on failure.\n\twaitForReady: (packageId: string): Effect.Effect<void, PublishError, Scope.Scope> =>\n\t\tEffect.tryPromise({\n\t\t\ttry: async () => {\n\t\t\t\t// The publish account's `signAndExecute` already calls\n\t\t\t\t// `waitForTransaction(digest)` before returning; the read\n\t\t\t\t// on `packageId` here is a second-layer probe to catch the\n\t\t\t\t// \"tx written but object not yet queryable\" race the\n\t\t\t\t// chain-probe verify step also guards against. Falls\n\t\t\t\t// through silently — if the follow-up `getObject` succeeds\n\t\t\t\t// the index is ready, else the next verify cycle picks it\n\t\t\t\t// up.\n\t\t\t\ttry {\n\t\t\t\t\tawait inputs.sdk.core.getObject({ objectId: packageId });\n\t\t\t\t} catch {\n\t\t\t\t\t// A stale object read here is non-fatal — the next\n\t\t\t\t\t// produce phase (parse) only inspects the output.\n\t\t\t\t}\n\t\t\t},\n\t\t\tcatch: (cause): PublishError =>\n\t\t\t\tpublishError('parse', {\n\t\t\t\t\tsourcePath: '<wait-for-ready>',\n\t\t\t\t\tpackageName: packageId,\n\t\t\t\t\tmessage: `waitForReady(${packageId}) failed`,\n\t\t\t\t\tcause,\n\t\t\t\t}),\n\t\t}).pipe(\n\t\t\tEffect.withSpan('package.wait-for-ready', {\n\t\t\t\tattributes: { 'package.publish.packageId': packageId },\n\t\t\t}),\n\t\t),\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ChainId } from "../../substrate/brand.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/plugins/package/publish-output.d.ts
|
|
4
|
+
declare const LOCAL_PACKAGE_PUBLISHED_KIND: "package.local-published";
|
|
5
|
+
interface PackagePublishObjectChange {
|
|
6
|
+
readonly type: 'created' | 'published' | 'mutated' | 'wrapped' | 'transferred';
|
|
7
|
+
readonly objectId?: string;
|
|
8
|
+
readonly objectType?: string;
|
|
9
|
+
readonly owner?: unknown;
|
|
10
|
+
readonly json?: unknown;
|
|
11
|
+
}
|
|
12
|
+
interface LocalPackagePublishOutput {
|
|
13
|
+
readonly digest: string;
|
|
14
|
+
readonly packageId: string;
|
|
15
|
+
readonly upgradeCapId?: string;
|
|
16
|
+
readonly publisher: string;
|
|
17
|
+
readonly objectChanges: ReadonlyArray<PackagePublishObjectChange>;
|
|
18
|
+
}
|
|
19
|
+
interface LocalPackagePublishedDecl {
|
|
20
|
+
readonly kind: typeof LOCAL_PACKAGE_PUBLISHED_KIND;
|
|
21
|
+
readonly packageName: string;
|
|
22
|
+
readonly packageId: string;
|
|
23
|
+
readonly chain: ChainId;
|
|
24
|
+
readonly output: LocalPackagePublishOutput;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { LocalPackagePublishOutput, LocalPackagePublishedDecl, PackagePublishObjectChange };
|
|
28
|
+
//# sourceMappingURL=publish-output.d.mts.map
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
//#region src/plugins/package/publish-output.ts
|
|
2
|
+
const LOCAL_PACKAGE_PUBLISHED_KIND = "package.local-published";
|
|
3
|
+
const makeLocalPackagePublishedDecl = (inputs) => ({
|
|
4
|
+
kind: LOCAL_PACKAGE_PUBLISHED_KIND,
|
|
5
|
+
packageName: inputs.packageName,
|
|
6
|
+
packageId: inputs.packageId,
|
|
7
|
+
chain: inputs.chain,
|
|
8
|
+
output: inputs.output
|
|
9
|
+
});
|
|
10
|
+
const pickPublishedChange = (changes) => changes.find((c) => c.type === "published");
|
|
11
|
+
const pickUpgradeCapChange = (changes) => changes.find((c) => c.type === "created" && (c.objectType?.endsWith("::package::UpgradeCap") ?? false));
|
|
12
|
+
const createdKind = (change) => {
|
|
13
|
+
if (change === void 0 || change === null) return false;
|
|
14
|
+
const tag = change.type;
|
|
15
|
+
const kind = change.kind;
|
|
16
|
+
return tag === "created" || kind === "created";
|
|
17
|
+
};
|
|
18
|
+
const objectIdOf = (change) => {
|
|
19
|
+
if (change === void 0 || change === null) return void 0;
|
|
20
|
+
const objectId = change.objectId;
|
|
21
|
+
return typeof objectId === "string" ? objectId : void 0;
|
|
22
|
+
};
|
|
23
|
+
const objectTypeOf = (change) => {
|
|
24
|
+
if (change === void 0 || change === null) return void 0;
|
|
25
|
+
const objectType = change.objectType;
|
|
26
|
+
return typeof objectType === "string" ? objectType : void 0;
|
|
27
|
+
};
|
|
28
|
+
const matchesType = (objectType, opts) => {
|
|
29
|
+
if (opts.type !== void 0 && objectType === opts.type) return true;
|
|
30
|
+
if (opts.suffix !== void 0 && objectType.endsWith(opts.suffix)) return true;
|
|
31
|
+
if (opts.contains !== void 0 && objectType.includes(opts.contains)) return true;
|
|
32
|
+
return opts.type === void 0 && opts.suffix === void 0 && opts.contains === void 0;
|
|
33
|
+
};
|
|
34
|
+
const pickCreatedByType = (changes, opts) => {
|
|
35
|
+
return objectIdOf((changes ?? []).find((change) => {
|
|
36
|
+
if (!createdKind(change)) return false;
|
|
37
|
+
if (objectIdOf(change) === void 0) return false;
|
|
38
|
+
const objectType = objectTypeOf(change);
|
|
39
|
+
return objectType !== void 0 && matchesType(objectType, opts);
|
|
40
|
+
}));
|
|
41
|
+
};
|
|
42
|
+
//#endregion
|
|
43
|
+
export { LOCAL_PACKAGE_PUBLISHED_KIND, makeLocalPackagePublishedDecl, pickCreatedByType, pickPublishedChange, pickUpgradeCapChange };
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=publish-output.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-output.mjs","names":[],"sources":["../../../src/plugins/package/publish-output.ts"],"sourcesContent":["// Local package publish output.\n//\n// This is package-domain data: the transaction digest plus object-change\n// projection produced by a successful `localPackage(...)` publish.\n\nimport type { ChainId } from '../../substrate/brand.ts';\n\nexport const LOCAL_PACKAGE_PUBLISHED_KIND = 'package.local-published' as const;\n\nexport interface PackagePublishObjectChange {\n\treadonly type: 'created' | 'published' | 'mutated' | 'wrapped' | 'transferred';\n\treadonly objectId?: string;\n\treadonly objectType?: string;\n\treadonly owner?: unknown;\n\treadonly json?: unknown;\n}\n\nexport interface PickCreatedByTypeOptions {\n\treadonly type?: string;\n\treadonly suffix?: string;\n\treadonly contains?: string;\n}\n\nexport interface LocalPackagePublishOutput {\n\treadonly digest: string;\n\treadonly packageId: string;\n\treadonly upgradeCapId?: string;\n\treadonly publisher: string;\n\treadonly objectChanges: ReadonlyArray<PackagePublishObjectChange>;\n}\n\nexport interface LocalPackagePublishedDecl {\n\treadonly kind: typeof LOCAL_PACKAGE_PUBLISHED_KIND;\n\treadonly packageName: string;\n\treadonly packageId: string;\n\treadonly chain: ChainId;\n\treadonly output: LocalPackagePublishOutput;\n}\n\nexport const makeLocalPackagePublishedDecl = (inputs: {\n\treadonly packageName: string;\n\treadonly packageId: string;\n\treadonly chain: ChainId;\n\treadonly output: LocalPackagePublishOutput;\n}): LocalPackagePublishedDecl => ({\n\tkind: LOCAL_PACKAGE_PUBLISHED_KIND,\n\tpackageName: inputs.packageName,\n\tpackageId: inputs.packageId,\n\tchain: inputs.chain,\n\toutput: inputs.output,\n});\n\nexport const pickPublishedChange = (\n\tchanges: ReadonlyArray<PackagePublishObjectChange>,\n): PackagePublishObjectChange | undefined => changes.find((c) => c.type === 'published');\n\nexport const pickUpgradeCapChange = (\n\tchanges: ReadonlyArray<PackagePublishObjectChange>,\n): PackagePublishObjectChange | undefined =>\n\tchanges.find(\n\t\t(c) => c.type === 'created' && (c.objectType?.endsWith('::package::UpgradeCap') ?? false),\n\t);\n\nconst createdKind = (change: unknown): boolean => {\n\tif (change === undefined || change === null) return false;\n\tconst tag = (change as { readonly type?: unknown; readonly kind?: unknown }).type;\n\tconst kind = (change as { readonly kind?: unknown }).kind;\n\treturn tag === 'created' || kind === 'created';\n};\n\nconst objectIdOf = (change: unknown): string | undefined => {\n\tif (change === undefined || change === null) return undefined;\n\tconst objectId = (change as { readonly objectId?: unknown }).objectId;\n\treturn typeof objectId === 'string' ? objectId : undefined;\n};\n\nconst objectTypeOf = (change: unknown): string | undefined => {\n\tif (change === undefined || change === null) return undefined;\n\tconst objectType = (change as { readonly objectType?: unknown }).objectType;\n\treturn typeof objectType === 'string' ? objectType : undefined;\n};\n\nconst matchesType = (objectType: string, opts: PickCreatedByTypeOptions): boolean => {\n\tif (opts.type !== undefined && objectType === opts.type) return true;\n\tif (opts.suffix !== undefined && objectType.endsWith(opts.suffix)) return true;\n\tif (opts.contains !== undefined && objectType.includes(opts.contains)) return true;\n\treturn opts.type === undefined && opts.suffix === undefined && opts.contains === undefined;\n};\n\nexport const pickCreatedByType = (\n\tchanges: ReadonlyArray<unknown> | undefined,\n\topts: PickCreatedByTypeOptions,\n): string | undefined => {\n\tconst found = (changes ?? []).find((change) => {\n\t\tif (!createdKind(change)) return false;\n\t\tif (objectIdOf(change) === undefined) return false;\n\t\tconst objectType = objectTypeOf(change);\n\t\treturn objectType !== undefined && matchesType(objectType, opts);\n\t});\n\treturn objectIdOf(found);\n};\n"],"mappings":";AAOA,MAAa,+BAA+B;AAgC5C,MAAa,iCAAiC,YAKZ;CACjC,MAAM;CACN,aAAa,OAAO;CACpB,WAAW,OAAO;CAClB,OAAO,OAAO;CACd,QAAQ,OAAO;CACf;AAED,MAAa,uBACZ,YAC4C,QAAQ,MAAM,MAAM,EAAE,SAAS,YAAY;AAExF,MAAa,wBACZ,YAEA,QAAQ,MACN,MAAM,EAAE,SAAS,cAAc,EAAE,YAAY,SAAS,wBAAwB,IAAI,OACnF;AAEF,MAAM,eAAe,WAA6B;AACjD,KAAI,WAAW,KAAA,KAAa,WAAW,KAAM,QAAO;CACpD,MAAM,MAAO,OAAgE;CAC7E,MAAM,OAAQ,OAAuC;AACrD,QAAO,QAAQ,aAAa,SAAS;;AAGtC,MAAM,cAAc,WAAwC;AAC3D,KAAI,WAAW,KAAA,KAAa,WAAW,KAAM,QAAO,KAAA;CACpD,MAAM,WAAY,OAA2C;AAC7D,QAAO,OAAO,aAAa,WAAW,WAAW,KAAA;;AAGlD,MAAM,gBAAgB,WAAwC;AAC7D,KAAI,WAAW,KAAA,KAAa,WAAW,KAAM,QAAO,KAAA;CACpD,MAAM,aAAc,OAA6C;AACjE,QAAO,OAAO,eAAe,WAAW,aAAa,KAAA;;AAGtD,MAAM,eAAe,YAAoB,SAA4C;AACpF,KAAI,KAAK,SAAS,KAAA,KAAa,eAAe,KAAK,KAAM,QAAO;AAChE,KAAI,KAAK,WAAW,KAAA,KAAa,WAAW,SAAS,KAAK,OAAO,CAAE,QAAO;AAC1E,KAAI,KAAK,aAAa,KAAA,KAAa,WAAW,SAAS,KAAK,SAAS,CAAE,QAAO;AAC9E,QAAO,KAAK,SAAS,KAAA,KAAa,KAAK,WAAW,KAAA,KAAa,KAAK,aAAa,KAAA;;AAGlF,MAAa,qBACZ,SACA,SACwB;AAOxB,QAAO,YANQ,WAAW,EAAE,EAAE,MAAM,WAAW;AAC9C,MAAI,CAAC,YAAY,OAAO,CAAE,QAAO;AACjC,MAAI,WAAW,OAAO,KAAK,KAAA,EAAW,QAAO;EAC7C,MAAM,aAAa,aAAa,OAAO;AACvC,SAAO,eAAe,KAAA,KAAa,YAAY,YAAY,KAAK;GAE1C,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Context, Effect, Layer, Stream } from "effect";
|
|
2
|
+
|
|
3
|
+
//#region src/plugins/package/registry.d.ts
|
|
4
|
+
/** Resolved package handle for a local (built + published) package. */
|
|
5
|
+
interface ResolvedLocalPackage {
|
|
6
|
+
readonly kind: 'local';
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly packageId: string;
|
|
9
|
+
readonly upgradeCapId?: string;
|
|
10
|
+
readonly sourcePath: string;
|
|
11
|
+
readonly mvrPlaceholder: string;
|
|
12
|
+
/** Captured object ids — keyed by user-declared name. */
|
|
13
|
+
readonly captured: Readonly<Record<string, string>>;
|
|
14
|
+
}
|
|
15
|
+
/** Resolved package handle for a known (verify-only) package. */
|
|
16
|
+
interface ResolvedKnownPackage {
|
|
17
|
+
readonly kind: 'known';
|
|
18
|
+
readonly name: string;
|
|
19
|
+
readonly packageId: string;
|
|
20
|
+
readonly upgradeCapId?: string;
|
|
21
|
+
readonly mvrPlaceholder: string;
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { ResolvedKnownPackage, ResolvedLocalPackage };
|
|
25
|
+
//# sourceMappingURL=registry.d.mts.map
|