@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,48 @@
|
|
|
1
|
+
import { definePlugin, resource } from "../../substrate/plugin.mjs";
|
|
2
|
+
import { pluginErrorContributions } from "../../api/plugin-errors.mjs";
|
|
3
|
+
import { PortBrokerService } from "../../substrate/runtime/port-broker/service.mjs";
|
|
4
|
+
import { CurrentPluginKey } from "../../substrate/runtime/current-plugin.mjs";
|
|
5
|
+
import { makeHostServiceRoutable } from "./routable.mjs";
|
|
6
|
+
import { Logger as Logger$1 } from "../../substrate/runtime/observability/logger.mjs";
|
|
7
|
+
import { HOST_SERVICE_ERROR_TAGS } from "./errors.mjs";
|
|
8
|
+
import { normalizeHostServiceOptions, prepareHostService } from "./service.mjs";
|
|
9
|
+
import { Effect } from "effect";
|
|
10
|
+
//#region src/plugins/host-service/index.ts
|
|
11
|
+
const hostServiceResourceId = (name) => `host-service/${name}`;
|
|
12
|
+
const hostServiceResource = (name) => resource(hostServiceResourceId(name));
|
|
13
|
+
const hostServiceErrorContributions = pluginErrorContributions(HOST_SERVICE_ERROR_TAGS);
|
|
14
|
+
const HOST_SERVICE_PORT_PROBE_HOST = "0.0.0.0";
|
|
15
|
+
const hostService = (options) => {
|
|
16
|
+
const normalized = normalizeHostServiceOptions(options);
|
|
17
|
+
const serviceResource = hostServiceResource(normalized.serviceName);
|
|
18
|
+
const after = options.after ?? [];
|
|
19
|
+
return definePlugin({
|
|
20
|
+
id: serviceResource.id,
|
|
21
|
+
dependsOn: after,
|
|
22
|
+
role: "service",
|
|
23
|
+
start: () => Effect.gen(function* () {
|
|
24
|
+
const portBroker = yield* PortBrokerService;
|
|
25
|
+
const prepared = yield* prepareHostService(normalized, {
|
|
26
|
+
allocatePort: (preferredPort) => portBroker.allocate({
|
|
27
|
+
kind: "http",
|
|
28
|
+
probeHost: HOST_SERVICE_PORT_PROBE_HOST,
|
|
29
|
+
...preferredPort === void 0 ? {} : { preferredPort }
|
|
30
|
+
}).pipe(Effect.map((allocation) => allocation.port)),
|
|
31
|
+
logger: yield* Logger$1,
|
|
32
|
+
pluginKey: (yield* CurrentPluginKey).key
|
|
33
|
+
});
|
|
34
|
+
yield* prepared.start;
|
|
35
|
+
return prepared.value;
|
|
36
|
+
}),
|
|
37
|
+
errorContributions: hostServiceErrorContributions,
|
|
38
|
+
capabilities: ({ value }) => [makeHostServiceRoutable({
|
|
39
|
+
endpointName: value.endpointName,
|
|
40
|
+
serviceName: value.name,
|
|
41
|
+
port: value.port
|
|
42
|
+
})]
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
//#endregion
|
|
46
|
+
export { hostService };
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["Logger"],"sources":["../../../src/plugins/host-service/index.ts"],"sourcesContent":["// Generic host-process service plugin.\n//\n// Use this for browser dev servers and other local host processes that\n// should be supervised by devstack rather than launched manually in a\n// sibling terminal.\n\nimport { Effect } from 'effect';\n\nimport { definePlugin, resource, type AnyResourceRef } from '../../api/define-plugin.ts';\nimport { pluginErrorContributions } from '../../api/plugin-errors.ts';\nimport {\n\tPortBrokerService,\n\ttype PortProbeHost,\n} from '../../substrate/runtime/port-broker/index.ts';\nimport { Logger } from '../../substrate/runtime/observability/index.ts';\nimport { CurrentPluginKey } from '../../substrate/runtime/current-plugin.ts';\n\nimport {\n\tHOST_SERVICE_ERROR_TAGS,\n\tHostServiceAcquireError,\n\ttype HostServiceConfigError,\n\ttype HostServiceError,\n} from './errors.ts';\nimport {\n\tacquireHostService,\n\tnormalizeHostServiceOptions,\n\tprepareHostService,\n\tHOST_SERVICE_PORT_TOKEN,\n\ttype HostServiceOptions,\n\ttype PreparedHostService,\n\ttype HostServiceResolvedOptions,\n\ttype HostServiceValue,\n\ttype HostServiceReadyProbe,\n\ttype HostProcessChild,\n\ttype HostProcessSpawner,\n\ttype HostProcessSpawnOptions,\n\ttype HostServiceAcquireContext,\n} from './service.ts';\nimport { HOST_SERVICE_DEFAULT_ENDPOINT_NAME, makeHostServiceRoutable } from './routable.ts';\n\nexport const hostServiceResourceId = <Name extends string>(name: Name): `host-service/${Name}` =>\n\t`host-service/${name}`;\n\nexport const hostServiceResource = <Name extends string>(name: Name) =>\n\tresource<`host-service/${Name}`, HostServiceValue>(hostServiceResourceId(name));\n\nconst hostServiceErrorContributions = pluginErrorContributions(HOST_SERVICE_ERROR_TAGS);\nconst HOST_SERVICE_PORT_PROBE_HOST: PortProbeHost = '0.0.0.0';\n\nexport type HostServiceAfter = ReadonlyArray<AnyResourceRef>;\n\nexport const hostService = <const After extends HostServiceAfter = readonly []>(\n\toptions: HostServiceOptions<After>,\n) => {\n\tconst normalized = normalizeHostServiceOptions(options);\n\tconst serviceResource = hostServiceResource(normalized.serviceName);\n\tconst after = options.after ?? ([] as unknown as After);\n\n\treturn definePlugin({\n\t\tid: serviceResource.id,\n\t\tdependsOn: after,\n\t\trole: 'service',\n\t\tstart: () =>\n\t\t\tEffect.gen(function* () {\n\t\t\t\tconst portBroker = yield* PortBrokerService;\n\t\t\t\tconst logger = yield* Logger;\n\t\t\t\tconst currentPlugin = yield* CurrentPluginKey;\n\t\t\t\tconst acquireContext = {\n\t\t\t\t\tallocatePort: (preferredPort) =>\n\t\t\t\t\t\tportBroker\n\t\t\t\t\t\t\t.allocate({\n\t\t\t\t\t\t\t\tkind: 'http',\n\t\t\t\t\t\t\t\tprobeHost: HOST_SERVICE_PORT_PROBE_HOST,\n\t\t\t\t\t\t\t\t...(preferredPort === undefined ? {} : { preferredPort }),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.pipe(Effect.map((allocation) => allocation.port)),\n\t\t\t\t\tlogger,\n\t\t\t\t\tpluginKey: currentPlugin.key,\n\t\t\t\t} satisfies HostServiceAcquireContext;\n\t\t\t\tconst prepared = yield* prepareHostService(normalized, acquireContext);\n\t\t\t\tyield* prepared.start;\n\t\t\t\treturn prepared.value;\n\t\t\t}),\n\t\terrorContributions: hostServiceErrorContributions,\n\t\tcapabilities: ({ value }) =>\n\t\t\t[\n\t\t\t\tmakeHostServiceRoutable({\n\t\t\t\t\tendpointName: value.endpointName,\n\t\t\t\t\tserviceName: value.name,\n\t\t\t\t\tport: value.port,\n\t\t\t\t}),\n\t\t\t] as const,\n\t});\n};\n\nexport type {\n\tHostServiceAcquireContext,\n\tHostServiceError,\n\tHostServiceOptions,\n\tPreparedHostService,\n\tHostServiceReadyProbe,\n\tHostServiceResolvedOptions,\n\tHostServiceValue,\n\tHostProcessChild,\n\tHostProcessSpawner,\n\tHostProcessSpawnOptions,\n\tHostServiceConfigError,\n};\nexport {\n\tacquireHostService,\n\tprepareHostService,\n\tHOST_SERVICE_DEFAULT_ENDPOINT_NAME,\n\tHOST_SERVICE_ERROR_TAGS,\n\tHOST_SERVICE_PORT_TOKEN,\n\tHostServiceAcquireError,\n\tmakeHostServiceRoutable,\n\tnormalizeHostServiceOptions,\n};\n"],"mappings":";;;;;;;;;;AAwCA,MAAa,yBAA8C,SAC1D,gBAAgB;AAEjB,MAAa,uBAA4C,SACxD,SAAmD,sBAAsB,KAAK,CAAC;AAEhF,MAAM,gCAAgC,yBAAyB,wBAAwB;AACvF,MAAM,+BAA8C;AAIpD,MAAa,eACZ,YACI;CACJ,MAAM,aAAa,4BAA4B,QAAQ;CACvD,MAAM,kBAAkB,oBAAoB,WAAW,YAAY;CACnE,MAAM,QAAQ,QAAQ,SAAU,EAAE;AAElC,QAAO,aAAa;EACnB,IAAI,gBAAgB;EACpB,WAAW;EACX,MAAM;EACN,aACC,OAAO,IAAI,aAAa;GACvB,MAAM,aAAa,OAAO;GAe1B,MAAM,WAAW,OAAO,mBAAmB,YAAY;IAXtD,eAAe,kBACd,WACE,SAAS;KACT,MAAM;KACN,WAAW;KACX,GAAI,kBAAkB,KAAA,IAAY,EAAE,GAAG,EAAE,eAAe;KACxD,CAAC,CACD,KAAK,OAAO,KAAK,eAAe,WAAW,KAAK,CAAC;IACpD,QAAA,OAXqBA;IAYrB,YAAW,OAXiB,kBAWH;IAE2C,CAAC;AACtE,UAAO,SAAS;AAChB,UAAO,SAAS;IACf;EACH,oBAAoB;EACpB,eAAe,EAAE,YAChB,CACC,wBAAwB;GACvB,cAAc,MAAM;GACpB,aAAa,MAAM;GACnB,MAAM,MAAM;GACZ,CAAC,CACF;EACF,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const HOST_SERVICE_DEFAULT_ENTRYPOINT_PORT = 5175;
|
|
2
|
+
const HOST_SERVICE_ENTRYPOINTS = [{
|
|
3
|
+
name: "dev",
|
|
4
|
+
port: HOST_SERVICE_DEFAULT_ENTRYPOINT_PORT,
|
|
5
|
+
protocol: "http"
|
|
6
|
+
}];
|
|
7
|
+
const makeHostServiceRoutable = (parts) => ({
|
|
8
|
+
kind: "routable",
|
|
9
|
+
endpointName: parts.endpointName,
|
|
10
|
+
dispatchId: {
|
|
11
|
+
serviceKey: `host-service.${parts.serviceName}`,
|
|
12
|
+
role: parts.endpointName
|
|
13
|
+
},
|
|
14
|
+
upstream: {
|
|
15
|
+
type: "host-loopback",
|
|
16
|
+
port: parts.port
|
|
17
|
+
},
|
|
18
|
+
cors: true,
|
|
19
|
+
wireProtocol: "http"
|
|
20
|
+
});
|
|
21
|
+
//#endregion
|
|
22
|
+
export { HOST_SERVICE_DEFAULT_ENTRYPOINT_PORT, HOST_SERVICE_ENTRYPOINTS, makeHostServiceRoutable };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=routable.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routable.mjs","names":[],"sources":["../../../src/plugins/host-service/routable.ts"],"sourcesContent":["import type { EntrypointDecl, RoutableDecl } from '../../contracts/routable.ts';\n\nexport const HOST_SERVICE_DEFAULT_ENDPOINT_NAME = 'dev' as const;\nexport const HOST_SERVICE_DEFAULT_ENTRYPOINT_PORT = 5175;\n\nexport const HOST_SERVICE_ENTRYPOINTS: ReadonlyArray<EntrypointDecl> = [\n\t{\n\t\tname: HOST_SERVICE_DEFAULT_ENDPOINT_NAME,\n\t\tport: HOST_SERVICE_DEFAULT_ENTRYPOINT_PORT,\n\t\tprotocol: 'http',\n\t},\n];\n\nexport const makeHostServiceRoutable = (parts: {\n\treadonly endpointName: string;\n\treadonly serviceName: string;\n\treadonly port: number;\n}): RoutableDecl => ({\n\tkind: 'routable',\n\tendpointName: parts.endpointName,\n\tdispatchId: {\n\t\tserviceKey: `host-service.${parts.serviceName}`,\n\t\trole: parts.endpointName,\n\t},\n\tupstream: { type: 'host-loopback', port: parts.port },\n\tcors: true,\n\twireProtocol: 'http',\n});\n"],"mappings":"AAGA,MAAa,uCAAuC;AAEpD,MAAa,2BAA0D,CACtE;CACC,MAAA;CACA,MAAM;CACN,UAAU;CACV,CACD;AAED,MAAa,2BAA2B,WAInB;CACpB,MAAM;CACN,cAAc,MAAM;CACpB,YAAY;EACX,YAAY,gBAAgB,MAAM;EAClC,MAAM,MAAM;EACZ;CACD,UAAU;EAAE,MAAM;EAAiB,MAAM,MAAM;EAAM;CACrD,MAAM;CACN,cAAc;CACd"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { AnyResourceRef } from "../../substrate/plugin.mjs";
|
|
2
|
+
import { Effect, Scope } from "effect";
|
|
3
|
+
|
|
4
|
+
//#region src/plugins/host-service/service.d.ts
|
|
5
|
+
declare const HOST_SERVICE_PORT_TOKEN: "{port}";
|
|
6
|
+
type HostServiceReadyProbe = {
|
|
7
|
+
readonly kind: 'http';
|
|
8
|
+
readonly url?: string;
|
|
9
|
+
readonly timeoutMs?: number;
|
|
10
|
+
readonly intervalMs?: number;
|
|
11
|
+
} | {
|
|
12
|
+
readonly kind: 'log';
|
|
13
|
+
readonly pattern: string | RegExp;
|
|
14
|
+
readonly stream?: 'stdout' | 'stderr' | 'both';
|
|
15
|
+
readonly timeoutMs?: number;
|
|
16
|
+
};
|
|
17
|
+
interface HostServiceBaseOptions<After extends ReadonlyArray<AnyResourceRef>> {
|
|
18
|
+
readonly name?: string;
|
|
19
|
+
readonly endpointName?: string;
|
|
20
|
+
readonly after?: After;
|
|
21
|
+
readonly cwd?: string;
|
|
22
|
+
readonly port?: number;
|
|
23
|
+
readonly env?: Readonly<Record<string, string>>;
|
|
24
|
+
readonly ready?: HostServiceReadyProbe;
|
|
25
|
+
readonly shutdownGraceMs?: number;
|
|
26
|
+
}
|
|
27
|
+
interface HostServiceCommandOptions<After extends ReadonlyArray<AnyResourceRef>> extends HostServiceBaseOptions<After> {
|
|
28
|
+
readonly command: string;
|
|
29
|
+
readonly args?: ReadonlyArray<string>;
|
|
30
|
+
readonly script?: never;
|
|
31
|
+
}
|
|
32
|
+
interface HostServiceScriptOptions<After extends ReadonlyArray<AnyResourceRef>> extends HostServiceBaseOptions<After> {
|
|
33
|
+
readonly script: string;
|
|
34
|
+
readonly command?: never;
|
|
35
|
+
readonly args?: never;
|
|
36
|
+
}
|
|
37
|
+
type HostServiceOptions<After extends ReadonlyArray<AnyResourceRef> = ReadonlyArray<AnyResourceRef>> = HostServiceCommandOptions<After> | HostServiceScriptOptions<After>;
|
|
38
|
+
interface HostServiceValue {
|
|
39
|
+
readonly name: string;
|
|
40
|
+
readonly endpointName: string;
|
|
41
|
+
readonly command: string;
|
|
42
|
+
readonly args: ReadonlyArray<string>;
|
|
43
|
+
readonly cwd: string;
|
|
44
|
+
readonly port: number;
|
|
45
|
+
readonly url: string;
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { HOST_SERVICE_PORT_TOKEN, HostServiceOptions, HostServiceReadyProbe, HostServiceValue };
|
|
49
|
+
//# sourceMappingURL=service.d.mts.map
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
import { observeProcessLines, readableToByteStream } from "../../substrate/runtime/observability/process-lines.mjs";
|
|
2
|
+
import { SpanAttr } from "../../substrate/runtime/observability/spans.mjs";
|
|
3
|
+
import { expectNonEmptyString, expectOneOf, expectOptionalNonEmptyString, expectOptionalPort, expectOptionalPositiveInteger, expectStringRecord } from "../../substrate/runtime/config-validation.mjs";
|
|
4
|
+
import { waitForHttpEndpoint } from "../../substrate/runtime/http-probe.mjs";
|
|
5
|
+
import { awaitManagedProcessReady, describeProcessExitStatus, nodeProcessSpawner, onceProcessError, onceProcessExit, terminateManagedProcess } from "../../substrate/runtime/process-supervisor.mjs";
|
|
6
|
+
import { HostServiceAcquireError, hostServiceConfigError } from "./errors.mjs";
|
|
7
|
+
import { Effect, Exit, Ref } from "effect";
|
|
8
|
+
import { resolve } from "node:path";
|
|
9
|
+
//#region src/plugins/host-service/service.ts
|
|
10
|
+
const HOST_SERVICE_PORT_TOKEN = "{port}";
|
|
11
|
+
const DEFAULT_SHUTDOWN_GRACE_MS = 5e3;
|
|
12
|
+
const DEFAULT_HTTP_READY_TIMEOUT_MS = 6e4;
|
|
13
|
+
const DEFAULT_HTTP_READY_INTERVAL_MS = 250;
|
|
14
|
+
const DEFAULT_LOG_READY_TIMEOUT_MS = 6e4;
|
|
15
|
+
const shellInvocationFor = (script) => {
|
|
16
|
+
if (process.platform === "win32") return {
|
|
17
|
+
command: process.env.ComSpec ?? process.env.COMSPEC ?? "cmd.exe",
|
|
18
|
+
args: [
|
|
19
|
+
"/d",
|
|
20
|
+
"/s",
|
|
21
|
+
"/c",
|
|
22
|
+
script
|
|
23
|
+
]
|
|
24
|
+
};
|
|
25
|
+
return {
|
|
26
|
+
command: "/bin/sh",
|
|
27
|
+
args: ["-c", script]
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
const configErrorFor = (serviceName) => (issue) => hostServiceConfigError(serviceName, issue);
|
|
31
|
+
const normalizeReadyProbe = (serviceName, ready) => {
|
|
32
|
+
if (ready === void 0) return void 0;
|
|
33
|
+
const mkError = configErrorFor(serviceName);
|
|
34
|
+
if (ready.kind === "http") {
|
|
35
|
+
expectOptionalNonEmptyString(ready.url, {
|
|
36
|
+
field: "ready.url",
|
|
37
|
+
mkError
|
|
38
|
+
});
|
|
39
|
+
expectOptionalPositiveInteger(ready.timeoutMs, {
|
|
40
|
+
field: "ready.timeoutMs",
|
|
41
|
+
mkError
|
|
42
|
+
});
|
|
43
|
+
expectOptionalPositiveInteger(ready.intervalMs, {
|
|
44
|
+
field: "ready.intervalMs",
|
|
45
|
+
mkError
|
|
46
|
+
});
|
|
47
|
+
return ready;
|
|
48
|
+
}
|
|
49
|
+
if (ready.kind === "log") {
|
|
50
|
+
if (typeof ready.pattern !== "string" && !(ready.pattern instanceof RegExp)) throw mkError({
|
|
51
|
+
field: "ready.pattern",
|
|
52
|
+
message: "must be a string or RegExp"
|
|
53
|
+
});
|
|
54
|
+
if (ready.stream !== void 0) expectOneOf(ready.stream, [
|
|
55
|
+
"stdout",
|
|
56
|
+
"stderr",
|
|
57
|
+
"both"
|
|
58
|
+
], {
|
|
59
|
+
field: "ready.stream",
|
|
60
|
+
mkError
|
|
61
|
+
});
|
|
62
|
+
expectOptionalPositiveInteger(ready.timeoutMs, {
|
|
63
|
+
field: "ready.timeoutMs",
|
|
64
|
+
mkError
|
|
65
|
+
});
|
|
66
|
+
return ready;
|
|
67
|
+
}
|
|
68
|
+
throw mkError({
|
|
69
|
+
field: "ready.kind",
|
|
70
|
+
message: "must be 'http' or 'log'"
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
const normalizeHostServiceOptions = (options) => {
|
|
74
|
+
const endpointName = options.endpointName ?? "dev";
|
|
75
|
+
const serviceName = options.name ?? endpointName;
|
|
76
|
+
const mkError = configErrorFor(serviceName);
|
|
77
|
+
expectNonEmptyString(serviceName, {
|
|
78
|
+
field: "name",
|
|
79
|
+
mkError
|
|
80
|
+
});
|
|
81
|
+
expectNonEmptyString(endpointName, {
|
|
82
|
+
field: "endpointName",
|
|
83
|
+
mkError
|
|
84
|
+
});
|
|
85
|
+
const rawCommand = options.command;
|
|
86
|
+
const rawArgs = options.args;
|
|
87
|
+
const rawScript = options.script;
|
|
88
|
+
if (rawCommand !== void 0 && rawScript !== void 0) throw mkError({
|
|
89
|
+
field: "command",
|
|
90
|
+
message: "use either command or script, not both"
|
|
91
|
+
});
|
|
92
|
+
if (rawCommand === void 0 && rawScript === void 0) throw mkError({
|
|
93
|
+
field: "command",
|
|
94
|
+
message: "is required unless script is provided"
|
|
95
|
+
});
|
|
96
|
+
if (rawScript !== void 0 && rawArgs !== void 0) throw mkError({
|
|
97
|
+
field: "args",
|
|
98
|
+
message: "args are only supported with command"
|
|
99
|
+
});
|
|
100
|
+
const preferredPort = expectOptionalPort(options.port, {
|
|
101
|
+
field: "port",
|
|
102
|
+
mkError
|
|
103
|
+
});
|
|
104
|
+
const cwd = resolve(options.cwd ?? process.cwd());
|
|
105
|
+
const env = expectStringRecord(options.env, {
|
|
106
|
+
field: "env",
|
|
107
|
+
mkError
|
|
108
|
+
});
|
|
109
|
+
const shutdownGraceMs = expectOptionalPositiveInteger(options.shutdownGraceMs, {
|
|
110
|
+
field: "shutdownGraceMs",
|
|
111
|
+
mkError
|
|
112
|
+
}) ?? DEFAULT_SHUTDOWN_GRACE_MS;
|
|
113
|
+
const ready = normalizeReadyProbe(serviceName, options.ready);
|
|
114
|
+
const invocation = rawScript !== void 0 ? shellInvocationFor(expectNonEmptyString(rawScript, {
|
|
115
|
+
field: "script",
|
|
116
|
+
mkError
|
|
117
|
+
})) : {
|
|
118
|
+
command: expectNonEmptyString(rawCommand, {
|
|
119
|
+
field: "command",
|
|
120
|
+
mkError
|
|
121
|
+
}),
|
|
122
|
+
args: options.args ?? []
|
|
123
|
+
};
|
|
124
|
+
return {
|
|
125
|
+
serviceName,
|
|
126
|
+
endpointName,
|
|
127
|
+
command: invocation.command,
|
|
128
|
+
args: invocation.args,
|
|
129
|
+
cwd,
|
|
130
|
+
...preferredPort === void 0 ? {} : { preferredPort },
|
|
131
|
+
env,
|
|
132
|
+
...ready === void 0 ? {} : { ready },
|
|
133
|
+
shutdownGraceMs
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
const renderPortToken = (value, port) => value.replaceAll(HOST_SERVICE_PORT_TOKEN, String(port));
|
|
137
|
+
const renderCommand = (options, port) => {
|
|
138
|
+
const renderedEnv = {};
|
|
139
|
+
for (const [key, value] of Object.entries(options.env)) renderedEnv[key] = renderPortToken(value, port);
|
|
140
|
+
return {
|
|
141
|
+
command: renderPortToken(options.command, port),
|
|
142
|
+
args: options.args.map((arg) => renderPortToken(arg, port)),
|
|
143
|
+
env: renderedEnv
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
const hostServiceValue = (options, port, rendered) => ({
|
|
147
|
+
name: options.serviceName,
|
|
148
|
+
endpointName: options.endpointName,
|
|
149
|
+
command: rendered.command,
|
|
150
|
+
args: rendered.args,
|
|
151
|
+
cwd: options.cwd,
|
|
152
|
+
port,
|
|
153
|
+
url: `http://127.0.0.1:${port}`
|
|
154
|
+
});
|
|
155
|
+
const terminateChild = (child, timeoutMs, logger, pluginKey, tag) => terminateManagedProcess(child, {
|
|
156
|
+
graceMs: timeoutMs,
|
|
157
|
+
processGroup: true,
|
|
158
|
+
onEscalate: () => logger.log(tag, pluginKey, {
|
|
159
|
+
level: "warn",
|
|
160
|
+
message: "host service did not exit after SIGTERM; sending SIGKILL",
|
|
161
|
+
fields: { [SpanAttr.event]: "process.shutdown.escalated" }
|
|
162
|
+
})
|
|
163
|
+
});
|
|
164
|
+
const httpReady = (url, timeoutMs, intervalMs, exit, processError, error) => awaitManagedProcessReady({
|
|
165
|
+
ready: waitForHttpEndpoint({
|
|
166
|
+
endpoint: url,
|
|
167
|
+
timeoutMs,
|
|
168
|
+
intervalMs,
|
|
169
|
+
validate: () => true
|
|
170
|
+
}).pipe(Effect.mapError((cause) => new HostServiceAcquireError({
|
|
171
|
+
...error,
|
|
172
|
+
phase: "ready",
|
|
173
|
+
message: `host service did not become ready at ${url} within ${timeoutMs}ms`,
|
|
174
|
+
cause
|
|
175
|
+
}))),
|
|
176
|
+
exit,
|
|
177
|
+
processError,
|
|
178
|
+
onExitBeforeReady: (status) => new HostServiceAcquireError({
|
|
179
|
+
...error,
|
|
180
|
+
phase: "exit",
|
|
181
|
+
message: "host service exited before readiness",
|
|
182
|
+
exitCode: status.code,
|
|
183
|
+
signal: status.signal
|
|
184
|
+
}),
|
|
185
|
+
onProcessErrorBeforeReady: (cause) => new HostServiceAcquireError({
|
|
186
|
+
...error,
|
|
187
|
+
phase: "spawn",
|
|
188
|
+
message: "host service process failed before readiness",
|
|
189
|
+
cause
|
|
190
|
+
})
|
|
191
|
+
});
|
|
192
|
+
const logReady = (ready, readySignal, exit, processError, error) => awaitManagedProcessReady({
|
|
193
|
+
ready: Effect.tryPromise({
|
|
194
|
+
try: () => new Promise((resolveReady, rejectReady) => {
|
|
195
|
+
const timeout = setTimeout(() => {
|
|
196
|
+
rejectReady(new HostServiceAcquireError({
|
|
197
|
+
...error,
|
|
198
|
+
phase: "ready",
|
|
199
|
+
message: `host service did not emit readiness log within ${ready.timeoutMs ?? DEFAULT_LOG_READY_TIMEOUT_MS}ms`
|
|
200
|
+
}));
|
|
201
|
+
}, ready.timeoutMs ?? DEFAULT_LOG_READY_TIMEOUT_MS);
|
|
202
|
+
readySignal.then(() => {
|
|
203
|
+
clearTimeout(timeout);
|
|
204
|
+
resolveReady();
|
|
205
|
+
});
|
|
206
|
+
}),
|
|
207
|
+
catch: (cause) => cause instanceof HostServiceAcquireError ? cause : error
|
|
208
|
+
}),
|
|
209
|
+
exit,
|
|
210
|
+
processError,
|
|
211
|
+
onExitBeforeReady: (status) => new HostServiceAcquireError({
|
|
212
|
+
...error,
|
|
213
|
+
phase: "exit",
|
|
214
|
+
message: "host service exited before readiness",
|
|
215
|
+
exitCode: status.code,
|
|
216
|
+
signal: status.signal
|
|
217
|
+
}),
|
|
218
|
+
onProcessErrorBeforeReady: (cause) => new HostServiceAcquireError({
|
|
219
|
+
...error,
|
|
220
|
+
phase: "spawn",
|
|
221
|
+
message: "host service process failed before readiness",
|
|
222
|
+
cause
|
|
223
|
+
})
|
|
224
|
+
});
|
|
225
|
+
const allocateHostPort = (options, ctx) => ctx.allocatePort(options.preferredPort).pipe(Effect.mapError((cause) => new HostServiceAcquireError({
|
|
226
|
+
serviceName: options.serviceName,
|
|
227
|
+
cwd: options.cwd,
|
|
228
|
+
command: options.command,
|
|
229
|
+
args: options.args,
|
|
230
|
+
phase: "allocate-port",
|
|
231
|
+
message: "host service failed to allocate HTTP port",
|
|
232
|
+
cause
|
|
233
|
+
})));
|
|
234
|
+
const startHostProcess = (options, ctx, port) => Effect.gen(function* () {
|
|
235
|
+
const rendered = renderCommand(options, port);
|
|
236
|
+
const env = {
|
|
237
|
+
...ctx.processEnv ?? process.env,
|
|
238
|
+
...rendered.env,
|
|
239
|
+
PORT: String(port)
|
|
240
|
+
};
|
|
241
|
+
const tag = `host-service/${options.serviceName}`;
|
|
242
|
+
let resolveLogReady;
|
|
243
|
+
const logReadySignal = options.ready?.kind === "log" ? new Promise((resolveReady) => {
|
|
244
|
+
resolveLogReady = resolveReady;
|
|
245
|
+
}) : null;
|
|
246
|
+
const observeReadinessLine = (line, stream) => {
|
|
247
|
+
if (options.ready?.kind !== "log") return;
|
|
248
|
+
if (options.ready.stream !== void 0 && options.ready.stream !== "both" && options.ready.stream !== stream) return;
|
|
249
|
+
if (typeof options.ready.pattern === "string" ? line.includes(options.ready.pattern) : options.ready.pattern.test(line)) resolveLogReady?.();
|
|
250
|
+
};
|
|
251
|
+
const spawnChild = ctx.spawner ?? nodeProcessSpawner;
|
|
252
|
+
const child = yield* Effect.try({
|
|
253
|
+
try: () => spawnChild(rendered.command, rendered.args, {
|
|
254
|
+
cwd: options.cwd,
|
|
255
|
+
env,
|
|
256
|
+
stdio: "pipe",
|
|
257
|
+
detached: process.platform !== "win32"
|
|
258
|
+
}),
|
|
259
|
+
catch: (cause) => new HostServiceAcquireError({
|
|
260
|
+
serviceName: options.serviceName,
|
|
261
|
+
cwd: options.cwd,
|
|
262
|
+
command: rendered.command,
|
|
263
|
+
args: rendered.args,
|
|
264
|
+
phase: "spawn",
|
|
265
|
+
message: "host service spawn failed",
|
|
266
|
+
cause
|
|
267
|
+
})
|
|
268
|
+
});
|
|
269
|
+
let shuttingDown = false;
|
|
270
|
+
let exitStatus = null;
|
|
271
|
+
const exited = onceProcessExit(child).then((status) => {
|
|
272
|
+
exitStatus = status;
|
|
273
|
+
return status;
|
|
274
|
+
});
|
|
275
|
+
const processError = onceProcessError(child);
|
|
276
|
+
yield* observeProcessLines({
|
|
277
|
+
stdout: readableToByteStream(child.stdout),
|
|
278
|
+
stderr: readableToByteStream(child.stderr)
|
|
279
|
+
}, {
|
|
280
|
+
logger: ctx.logger,
|
|
281
|
+
pluginKey: ctx.pluginKey,
|
|
282
|
+
tag,
|
|
283
|
+
fields: { [SpanAttr.serviceName]: options.serviceName },
|
|
284
|
+
onLine: ({ line, stream }) => Effect.sync(() => {
|
|
285
|
+
observeReadinessLine(line, stream);
|
|
286
|
+
})
|
|
287
|
+
});
|
|
288
|
+
yield* Effect.addFinalizer(() => Effect.gen(function* () {
|
|
289
|
+
shuttingDown = true;
|
|
290
|
+
if (exitStatus !== null) return;
|
|
291
|
+
yield* terminateChild(child, options.shutdownGraceMs, ctx.logger, ctx.pluginKey, tag);
|
|
292
|
+
}));
|
|
293
|
+
const baseError = new HostServiceAcquireError({
|
|
294
|
+
serviceName: options.serviceName,
|
|
295
|
+
cwd: options.cwd,
|
|
296
|
+
command: rendered.command,
|
|
297
|
+
args: rendered.args,
|
|
298
|
+
phase: "ready",
|
|
299
|
+
message: "host service readiness failed"
|
|
300
|
+
});
|
|
301
|
+
const awaitReadiness = (() => {
|
|
302
|
+
if (options.ready?.kind === "http") return httpReady(renderPortToken(options.ready.url ?? "http://127.0.0.1:{port}", port), options.ready.timeoutMs ?? DEFAULT_HTTP_READY_TIMEOUT_MS, options.ready.intervalMs ?? DEFAULT_HTTP_READY_INTERVAL_MS, exited, processError, baseError);
|
|
303
|
+
if (options.ready?.kind === "log" && logReadySignal !== null) return logReady(options.ready, logReadySignal, exited, processError, baseError);
|
|
304
|
+
return Effect.gen(function* () {
|
|
305
|
+
yield* awaitManagedProcessReady({
|
|
306
|
+
ready: Effect.promise(() => new Promise((resolveReady) => setTimeout(resolveReady, 0))),
|
|
307
|
+
exit: exited,
|
|
308
|
+
processError,
|
|
309
|
+
onExitBeforeReady: (status) => new HostServiceAcquireError({
|
|
310
|
+
...baseError,
|
|
311
|
+
phase: "exit",
|
|
312
|
+
message: "host service exited before readiness",
|
|
313
|
+
exitCode: status.code,
|
|
314
|
+
signal: status.signal
|
|
315
|
+
}),
|
|
316
|
+
onProcessErrorBeforeReady: (cause) => new HostServiceAcquireError({
|
|
317
|
+
...baseError,
|
|
318
|
+
phase: "spawn",
|
|
319
|
+
message: "host service process failed before readiness",
|
|
320
|
+
cause
|
|
321
|
+
})
|
|
322
|
+
});
|
|
323
|
+
});
|
|
324
|
+
})();
|
|
325
|
+
const readinessExit = yield* Effect.exit(awaitReadiness);
|
|
326
|
+
if (Exit.isFailure(readinessExit)) {
|
|
327
|
+
shuttingDown = true;
|
|
328
|
+
if (exitStatus === null) yield* terminateChild(child, options.shutdownGraceMs, ctx.logger, ctx.pluginKey, tag);
|
|
329
|
+
return yield* Effect.failCause(readinessExit.cause);
|
|
330
|
+
}
|
|
331
|
+
exited.then((status) => {
|
|
332
|
+
if (shuttingDown) return;
|
|
333
|
+
Effect.runPromise(ctx.logger.log(tag, ctx.pluginKey, {
|
|
334
|
+
level: "error",
|
|
335
|
+
message: "host service exited after readiness",
|
|
336
|
+
fields: {
|
|
337
|
+
[SpanAttr.event]: "process.exited",
|
|
338
|
+
[SpanAttr.serviceName]: options.serviceName,
|
|
339
|
+
[SpanAttr.exitCode]: status.code,
|
|
340
|
+
[SpanAttr.exitSignal]: status.signal,
|
|
341
|
+
[SpanAttr.exitStatus]: describeProcessExitStatus(status)
|
|
342
|
+
}
|
|
343
|
+
})).catch(() => {});
|
|
344
|
+
});
|
|
345
|
+
processError.then((cause) => {
|
|
346
|
+
if (shuttingDown) return;
|
|
347
|
+
Effect.runPromise(ctx.logger.log(tag, ctx.pluginKey, {
|
|
348
|
+
level: "error",
|
|
349
|
+
message: "host service process emitted an error after readiness",
|
|
350
|
+
fields: {
|
|
351
|
+
[SpanAttr.event]: "process.error",
|
|
352
|
+
[SpanAttr.serviceName]: options.serviceName,
|
|
353
|
+
[SpanAttr.errorCause]: cause
|
|
354
|
+
}
|
|
355
|
+
})).catch(() => {});
|
|
356
|
+
});
|
|
357
|
+
});
|
|
358
|
+
const prepareHostService = (options, ctx) => Effect.gen(function* () {
|
|
359
|
+
const port = yield* allocateHostPort(options, ctx);
|
|
360
|
+
const rendered = renderCommand(options, port);
|
|
361
|
+
const started = yield* Ref.make(false);
|
|
362
|
+
const start = Effect.gen(function* () {
|
|
363
|
+
if (yield* Ref.get(started)) return;
|
|
364
|
+
yield* startHostProcess(options, ctx, port);
|
|
365
|
+
yield* Ref.set(started, true);
|
|
366
|
+
});
|
|
367
|
+
return {
|
|
368
|
+
value: hostServiceValue(options, port, rendered),
|
|
369
|
+
start
|
|
370
|
+
};
|
|
371
|
+
});
|
|
372
|
+
//#endregion
|
|
373
|
+
export { HOST_SERVICE_PORT_TOKEN, normalizeHostServiceOptions, prepareHostService };
|
|
374
|
+
|
|
375
|
+
//# sourceMappingURL=service.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.mjs","names":[],"sources":["../../../src/plugins/host-service/service.ts"],"sourcesContent":["import { resolve } from 'node:path';\n\nimport { Effect, Exit, Ref } from 'effect';\nimport type { Scope } from 'effect';\n\nimport type { PluginKey } from '../../substrate/brand.ts';\nimport type { AnyResourceRef } from '../../api/define-plugin.ts';\nimport {\n\texpectNonEmptyString,\n\texpectOneOf,\n\texpectOptionalNonEmptyString,\n\texpectOptionalPort,\n\texpectOptionalPositiveInteger,\n\texpectStringRecord,\n} from '../../substrate/runtime/config-validation.ts';\nimport {\n\tobserveProcessLines,\n\treadableToByteStream,\n\tSpanAttr,\n\ttype LoggerShape,\n} from '../../substrate/runtime/observability/index.ts';\nimport { waitForHttpEndpoint } from '../../substrate/runtime/http-probe.ts';\nimport type { PortBrokerError } from '../../substrate/runtime/port-broker/index.ts';\nimport {\n\tawaitManagedProcessReady,\n\tdescribeProcessExitStatus,\n\tnodeProcessSpawner,\n\tonceProcessError,\n\tonceProcessExit,\n\tterminateManagedProcess,\n\ttype ManagedProcessChild,\n\ttype ManagedProcessSpawner,\n\ttype ManagedProcessSpawnOptions,\n} from '../../substrate/runtime/process-supervisor.ts';\n\nimport { HOST_SERVICE_DEFAULT_ENDPOINT_NAME } from './routable.ts';\nimport { hostServiceConfigError, HostServiceAcquireError } from './errors.ts';\n\nexport const HOST_SERVICE_PORT_TOKEN = '{port}' as const;\n\nexport type HostServiceReadyProbe =\n\t| {\n\t\t\treadonly kind: 'http';\n\t\t\treadonly url?: string;\n\t\t\treadonly timeoutMs?: number;\n\t\t\treadonly intervalMs?: number;\n\t }\n\t| {\n\t\t\treadonly kind: 'log';\n\t\t\treadonly pattern: string | RegExp;\n\t\t\treadonly stream?: 'stdout' | 'stderr' | 'both';\n\t\t\treadonly timeoutMs?: number;\n\t };\n\ninterface HostServiceBaseOptions<After extends ReadonlyArray<AnyResourceRef>> {\n\treadonly name?: string;\n\treadonly endpointName?: string;\n\treadonly after?: After;\n\treadonly cwd?: string;\n\treadonly port?: number;\n\treadonly env?: Readonly<Record<string, string>>;\n\treadonly ready?: HostServiceReadyProbe;\n\treadonly shutdownGraceMs?: number;\n}\n\ninterface HostServiceCommandOptions<\n\tAfter extends ReadonlyArray<AnyResourceRef>,\n> extends HostServiceBaseOptions<After> {\n\treadonly command: string;\n\treadonly args?: ReadonlyArray<string>;\n\treadonly script?: never;\n}\n\ninterface HostServiceScriptOptions<\n\tAfter extends ReadonlyArray<AnyResourceRef>,\n> extends HostServiceBaseOptions<After> {\n\treadonly script: string;\n\treadonly command?: never;\n\treadonly args?: never;\n}\n\nexport type HostServiceOptions<\n\tAfter extends ReadonlyArray<AnyResourceRef> = ReadonlyArray<AnyResourceRef>,\n> = HostServiceCommandOptions<After> | HostServiceScriptOptions<After>;\n\nexport interface HostServiceResolvedOptions {\n\treadonly serviceName: string;\n\treadonly endpointName: string;\n\treadonly command: string;\n\treadonly args: ReadonlyArray<string>;\n\treadonly cwd: string;\n\treadonly preferredPort?: number;\n\treadonly env: Readonly<Record<string, string>>;\n\treadonly ready?: HostServiceReadyProbe;\n\treadonly shutdownGraceMs: number;\n}\n\nexport interface HostServiceValue {\n\treadonly name: string;\n\treadonly endpointName: string;\n\treadonly command: string;\n\treadonly args: ReadonlyArray<string>;\n\treadonly cwd: string;\n\treadonly port: number;\n\treadonly url: string;\n}\n\nexport interface PreparedHostService {\n\treadonly value: HostServiceValue;\n\treadonly start: Effect.Effect<void, HostServiceAcquireError, Scope.Scope>;\n}\n\nexport type HostProcessChild = ManagedProcessChild;\nexport type HostProcessSpawnOptions = ManagedProcessSpawnOptions;\nexport type HostProcessSpawner = ManagedProcessSpawner;\n\nexport interface HostServiceAcquireContext {\n\treadonly allocatePort: (\n\t\tpreferredPort: number | undefined,\n\t) => Effect.Effect<number, PortBrokerError, Scope.Scope>;\n\treadonly logger: LoggerShape;\n\treadonly pluginKey: PluginKey;\n\treadonly spawner?: HostProcessSpawner;\n\treadonly processEnv?: NodeJS.ProcessEnv;\n}\n\nconst DEFAULT_SHUTDOWN_GRACE_MS = 5_000;\nconst DEFAULT_HTTP_READY_TIMEOUT_MS = 60_000;\nconst DEFAULT_HTTP_READY_INTERVAL_MS = 250;\nconst DEFAULT_LOG_READY_TIMEOUT_MS = 60_000;\n\nconst shellInvocationFor = (script: string): { command: string; args: ReadonlyArray<string> } => {\n\tif (process.platform === 'win32') {\n\t\treturn {\n\t\t\tcommand: process.env.ComSpec ?? process.env.COMSPEC ?? 'cmd.exe',\n\t\t\targs: ['/d', '/s', '/c', script],\n\t\t};\n\t}\n\treturn {\n\t\tcommand: '/bin/sh',\n\t\targs: ['-c', script],\n\t};\n};\n\nconst configErrorFor =\n\t(serviceName: string) => (issue: Parameters<typeof hostServiceConfigError>[1]) =>\n\t\thostServiceConfigError(serviceName, issue);\n\nconst normalizeReadyProbe = (\n\tserviceName: string,\n\tready: HostServiceReadyProbe | undefined,\n): HostServiceReadyProbe | undefined => {\n\tif (ready === undefined) return undefined;\n\tconst mkError = configErrorFor(serviceName);\n\tif (ready.kind === 'http') {\n\t\texpectOptionalNonEmptyString(ready.url, { field: 'ready.url', mkError });\n\t\texpectOptionalPositiveInteger(ready.timeoutMs, { field: 'ready.timeoutMs', mkError });\n\t\texpectOptionalPositiveInteger(ready.intervalMs, { field: 'ready.intervalMs', mkError });\n\t\treturn ready;\n\t}\n\tif (ready.kind === 'log') {\n\t\tif (typeof ready.pattern !== 'string' && !(ready.pattern instanceof RegExp)) {\n\t\t\tthrow mkError({ field: 'ready.pattern', message: 'must be a string or RegExp' });\n\t\t}\n\t\tif (ready.stream !== undefined) {\n\t\t\texpectOneOf(ready.stream, ['stdout', 'stderr', 'both'] as const, {\n\t\t\t\tfield: 'ready.stream',\n\t\t\t\tmkError,\n\t\t\t});\n\t\t}\n\t\texpectOptionalPositiveInteger(ready.timeoutMs, { field: 'ready.timeoutMs', mkError });\n\t\treturn ready;\n\t}\n\tthrow mkError({ field: 'ready.kind', message: \"must be 'http' or 'log'\" });\n};\n\nexport const normalizeHostServiceOptions = (\n\toptions: HostServiceOptions,\n): HostServiceResolvedOptions => {\n\tconst endpointName = options.endpointName ?? HOST_SERVICE_DEFAULT_ENDPOINT_NAME;\n\tconst serviceName = options.name ?? endpointName;\n\tconst mkError = configErrorFor(serviceName);\n\texpectNonEmptyString(serviceName, { field: 'name', mkError });\n\texpectNonEmptyString(endpointName, { field: 'endpointName', mkError });\n\n\tconst rawCommand = (options as { readonly command?: unknown }).command;\n\tconst rawArgs = (options as { readonly args?: unknown }).args;\n\tconst rawScript = (options as { readonly script?: unknown }).script;\n\tif (rawCommand !== undefined && rawScript !== undefined) {\n\t\tthrow mkError({ field: 'command', message: 'use either command or script, not both' });\n\t}\n\tif (rawCommand === undefined && rawScript === undefined) {\n\t\tthrow mkError({ field: 'command', message: 'is required unless script is provided' });\n\t}\n\tif (rawScript !== undefined && rawArgs !== undefined) {\n\t\tthrow mkError({ field: 'args', message: 'args are only supported with command' });\n\t}\n\n\tconst preferredPort = expectOptionalPort(options.port, { field: 'port', mkError });\n\tconst cwd = resolve(options.cwd ?? process.cwd());\n\tconst env = expectStringRecord(options.env, { field: 'env', mkError });\n\tconst shutdownGraceMs =\n\t\texpectOptionalPositiveInteger(options.shutdownGraceMs, {\n\t\t\tfield: 'shutdownGraceMs',\n\t\t\tmkError,\n\t\t}) ?? DEFAULT_SHUTDOWN_GRACE_MS;\n\tconst ready = normalizeReadyProbe(serviceName, options.ready);\n\tconst invocation =\n\t\trawScript !== undefined\n\t\t\t? shellInvocationFor(expectNonEmptyString(rawScript, { field: 'script', mkError }))\n\t\t\t: {\n\t\t\t\t\tcommand: expectNonEmptyString(rawCommand, { field: 'command', mkError }),\n\t\t\t\t\targs: options.args ?? [],\n\t\t\t\t};\n\n\treturn {\n\t\tserviceName,\n\t\tendpointName,\n\t\tcommand: invocation.command,\n\t\targs: invocation.args,\n\t\tcwd,\n\t\t...(preferredPort === undefined ? {} : { preferredPort }),\n\t\tenv,\n\t\t...(ready === undefined ? {} : { ready }),\n\t\tshutdownGraceMs,\n\t};\n};\n\nconst renderPortToken = (value: string, port: number): string =>\n\tvalue.replaceAll(HOST_SERVICE_PORT_TOKEN, String(port));\n\nconst renderCommand = (\n\toptions: HostServiceResolvedOptions,\n\tport: number,\n): {\n\treadonly command: string;\n\treadonly args: ReadonlyArray<string>;\n\treadonly env: NodeJS.ProcessEnv;\n} => {\n\tconst renderedEnv: NodeJS.ProcessEnv = {};\n\tfor (const [key, value] of Object.entries(options.env)) {\n\t\trenderedEnv[key] = renderPortToken(value, port);\n\t}\n\treturn {\n\t\tcommand: renderPortToken(options.command, port),\n\t\targs: options.args.map((arg) => renderPortToken(arg, port)),\n\t\tenv: renderedEnv,\n\t};\n};\n\nconst hostServiceValue = (\n\toptions: HostServiceResolvedOptions,\n\tport: number,\n\trendered: { readonly command: string; readonly args: ReadonlyArray<string> },\n): HostServiceValue => ({\n\tname: options.serviceName,\n\tendpointName: options.endpointName,\n\tcommand: rendered.command,\n\targs: rendered.args,\n\tcwd: options.cwd,\n\tport,\n\turl: `http://127.0.0.1:${port}`,\n});\n\nconst terminateChild = (\n\tchild: HostProcessChild,\n\ttimeoutMs: number,\n\tlogger: LoggerShape,\n\tpluginKey: PluginKey,\n\ttag: string,\n): Effect.Effect<void> =>\n\tterminateManagedProcess(child, {\n\t\tgraceMs: timeoutMs,\n\t\tprocessGroup: true,\n\t\tonEscalate: () =>\n\t\t\tlogger.log(tag, pluginKey, {\n\t\t\t\tlevel: 'warn',\n\t\t\t\tmessage: 'host service did not exit after SIGTERM; sending SIGKILL',\n\t\t\t\tfields: { [SpanAttr.event]: 'process.shutdown.escalated' },\n\t\t\t}),\n\t});\n\nconst httpReady = (\n\turl: string,\n\ttimeoutMs: number,\n\tintervalMs: number,\n\texit: Promise<{ readonly code: number | null; readonly signal: NodeJS.Signals | null }>,\n\tprocessError: Promise<unknown>,\n\terror: HostServiceAcquireError,\n): Effect.Effect<void, HostServiceAcquireError> =>\n\tawaitManagedProcessReady({\n\t\tready: waitForHttpEndpoint({\n\t\t\tendpoint: url,\n\t\t\ttimeoutMs,\n\t\t\tintervalMs,\n\t\t\t// Host services only need to prove their listener is up. App-level\n\t\t\t// 4xx/5xx responses can be transient while devstack writes generated files.\n\t\t\tvalidate: () => true,\n\t\t}).pipe(\n\t\t\tEffect.mapError(\n\t\t\t\t(cause) =>\n\t\t\t\t\tnew HostServiceAcquireError({\n\t\t\t\t\t\t...error,\n\t\t\t\t\t\tphase: 'ready',\n\t\t\t\t\t\tmessage: `host service did not become ready at ${url} within ${timeoutMs}ms`,\n\t\t\t\t\t\tcause,\n\t\t\t\t\t}),\n\t\t\t),\n\t\t),\n\t\texit,\n\t\tprocessError,\n\t\tonExitBeforeReady: (status) =>\n\t\t\tnew HostServiceAcquireError({\n\t\t\t\t...error,\n\t\t\t\tphase: 'exit',\n\t\t\t\tmessage: 'host service exited before readiness',\n\t\t\t\texitCode: status.code,\n\t\t\t\tsignal: status.signal,\n\t\t\t}),\n\t\tonProcessErrorBeforeReady: (cause) =>\n\t\t\tnew HostServiceAcquireError({\n\t\t\t\t...error,\n\t\t\t\tphase: 'spawn',\n\t\t\t\tmessage: 'host service process failed before readiness',\n\t\t\t\tcause,\n\t\t\t}),\n\t});\n\nconst logReady = (\n\tready: Extract<HostServiceReadyProbe, { readonly kind: 'log' }>,\n\treadySignal: Promise<void>,\n\texit: Promise<{ readonly code: number | null; readonly signal: NodeJS.Signals | null }>,\n\tprocessError: Promise<unknown>,\n\terror: HostServiceAcquireError,\n): Effect.Effect<void, HostServiceAcquireError> =>\n\tawaitManagedProcessReady({\n\t\tready: Effect.tryPromise({\n\t\t\ttry: () =>\n\t\t\t\tnew Promise<void>((resolveReady, rejectReady) => {\n\t\t\t\t\tconst timeout = setTimeout(() => {\n\t\t\t\t\t\trejectReady(\n\t\t\t\t\t\t\tnew HostServiceAcquireError({\n\t\t\t\t\t\t\t\t...error,\n\t\t\t\t\t\t\t\tphase: 'ready',\n\t\t\t\t\t\t\t\tmessage: `host service did not emit readiness log within ${ready.timeoutMs ?? DEFAULT_LOG_READY_TIMEOUT_MS}ms`,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t}, ready.timeoutMs ?? DEFAULT_LOG_READY_TIMEOUT_MS);\n\t\t\t\t\treadySignal.then(() => {\n\t\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\t\tresolveReady();\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\tcatch: (cause) => (cause instanceof HostServiceAcquireError ? cause : error),\n\t\t}),\n\t\texit,\n\t\tprocessError,\n\t\tonExitBeforeReady: (status) =>\n\t\t\tnew HostServiceAcquireError({\n\t\t\t\t...error,\n\t\t\t\tphase: 'exit',\n\t\t\t\tmessage: 'host service exited before readiness',\n\t\t\t\texitCode: status.code,\n\t\t\t\tsignal: status.signal,\n\t\t\t}),\n\t\tonProcessErrorBeforeReady: (cause) =>\n\t\t\tnew HostServiceAcquireError({\n\t\t\t\t...error,\n\t\t\t\tphase: 'spawn',\n\t\t\t\tmessage: 'host service process failed before readiness',\n\t\t\t\tcause,\n\t\t\t}),\n\t});\n\nconst allocateHostPort = (\n\toptions: HostServiceResolvedOptions,\n\tctx: HostServiceAcquireContext,\n): Effect.Effect<number, HostServiceAcquireError, Scope.Scope> =>\n\tctx.allocatePort(options.preferredPort).pipe(\n\t\tEffect.mapError(\n\t\t\t(cause) =>\n\t\t\t\tnew HostServiceAcquireError({\n\t\t\t\t\tserviceName: options.serviceName,\n\t\t\t\t\tcwd: options.cwd,\n\t\t\t\t\tcommand: options.command,\n\t\t\t\t\targs: options.args,\n\t\t\t\t\tphase: 'allocate-port',\n\t\t\t\t\tmessage: 'host service failed to allocate HTTP port',\n\t\t\t\t\tcause,\n\t\t\t\t}),\n\t\t),\n\t);\n\nconst startHostProcess = (\n\toptions: HostServiceResolvedOptions,\n\tctx: HostServiceAcquireContext,\n\tport: number,\n): Effect.Effect<void, HostServiceAcquireError, Scope.Scope> =>\n\tEffect.gen(function* () {\n\t\tconst rendered = renderCommand(options, port);\n\t\tconst env: NodeJS.ProcessEnv = {\n\t\t\t...(ctx.processEnv ?? process.env),\n\t\t\t...rendered.env,\n\t\t\tPORT: String(port),\n\t\t};\n\t\tconst tag = `host-service/${options.serviceName}`;\n\t\tlet resolveLogReady: (() => void) | undefined;\n\t\tconst logReadySignal =\n\t\t\toptions.ready?.kind === 'log'\n\t\t\t\t? new Promise<void>((resolveReady) => {\n\t\t\t\t\t\tresolveLogReady = resolveReady;\n\t\t\t\t\t})\n\t\t\t\t: null;\n\t\tconst observeReadinessLine = (line: string, stream: 'stdout' | 'stderr'): void => {\n\t\t\tif (options.ready?.kind !== 'log') return;\n\t\t\tif (\n\t\t\t\toptions.ready.stream !== undefined &&\n\t\t\t\toptions.ready.stream !== 'both' &&\n\t\t\t\toptions.ready.stream !== stream\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst matches =\n\t\t\t\ttypeof options.ready.pattern === 'string'\n\t\t\t\t\t? line.includes(options.ready.pattern)\n\t\t\t\t\t: options.ready.pattern.test(line);\n\t\t\tif (matches) resolveLogReady?.();\n\t\t};\n\n\t\tconst spawnChild = ctx.spawner ?? nodeProcessSpawner;\n\t\tconst child = yield* Effect.try({\n\t\t\ttry: () =>\n\t\t\t\tspawnChild(rendered.command, rendered.args, {\n\t\t\t\t\tcwd: options.cwd,\n\t\t\t\t\tenv,\n\t\t\t\t\tstdio: 'pipe',\n\t\t\t\t\tdetached: process.platform !== 'win32',\n\t\t\t\t}),\n\t\t\tcatch: (cause) =>\n\t\t\t\tnew HostServiceAcquireError({\n\t\t\t\t\tserviceName: options.serviceName,\n\t\t\t\t\tcwd: options.cwd,\n\t\t\t\t\tcommand: rendered.command,\n\t\t\t\t\targs: rendered.args,\n\t\t\t\t\tphase: 'spawn',\n\t\t\t\t\tmessage: 'host service spawn failed',\n\t\t\t\t\tcause,\n\t\t\t\t}),\n\t\t});\n\t\tlet shuttingDown = false;\n\t\tlet exitStatus: {\n\t\t\treadonly code: number | null;\n\t\t\treadonly signal: NodeJS.Signals | null;\n\t\t} | null = null;\n\t\tconst exited = onceProcessExit(child).then((status) => {\n\t\t\texitStatus = status;\n\t\t\treturn status;\n\t\t});\n\t\tconst processError = onceProcessError(child);\n\t\tyield* observeProcessLines(\n\t\t\t{\n\t\t\t\tstdout: readableToByteStream(\n\t\t\t\t\tchild.stdout as unknown as AsyncIterable<Uint8Array> | null | undefined,\n\t\t\t\t),\n\t\t\t\tstderr: readableToByteStream(\n\t\t\t\t\tchild.stderr as unknown as AsyncIterable<Uint8Array> | null | undefined,\n\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tlogger: ctx.logger,\n\t\t\t\tpluginKey: ctx.pluginKey,\n\t\t\t\ttag,\n\t\t\t\tfields: { [SpanAttr.serviceName]: options.serviceName },\n\t\t\t\tonLine: ({ line, stream }) =>\n\t\t\t\t\tEffect.sync(() => {\n\t\t\t\t\t\tobserveReadinessLine(line, stream);\n\t\t\t\t\t}),\n\t\t\t},\n\t\t);\n\t\tyield* Effect.addFinalizer(() =>\n\t\t\tEffect.gen(function* () {\n\t\t\t\tshuttingDown = true;\n\t\t\t\tif (exitStatus !== null) return;\n\t\t\t\tyield* terminateChild(child, options.shutdownGraceMs, ctx.logger, ctx.pluginKey, tag);\n\t\t\t}),\n\t\t);\n\n\t\tconst baseError = new HostServiceAcquireError({\n\t\t\tserviceName: options.serviceName,\n\t\t\tcwd: options.cwd,\n\t\t\tcommand: rendered.command,\n\t\t\targs: rendered.args,\n\t\t\tphase: 'ready',\n\t\t\tmessage: 'host service readiness failed',\n\t\t});\n\t\tconst awaitReadiness = (() => {\n\t\t\tif (options.ready?.kind === 'http') {\n\t\t\t\tconst url = renderPortToken(options.ready.url ?? 'http://127.0.0.1:{port}', port);\n\t\t\t\treturn httpReady(\n\t\t\t\t\turl,\n\t\t\t\t\toptions.ready.timeoutMs ?? DEFAULT_HTTP_READY_TIMEOUT_MS,\n\t\t\t\t\toptions.ready.intervalMs ?? DEFAULT_HTTP_READY_INTERVAL_MS,\n\t\t\t\t\texited,\n\t\t\t\t\tprocessError,\n\t\t\t\t\tbaseError,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (options.ready?.kind === 'log' && logReadySignal !== null) {\n\t\t\t\treturn logReady(options.ready, logReadySignal, exited, processError, baseError);\n\t\t\t}\n\t\t\treturn Effect.gen(function* () {\n\t\t\t\tyield* awaitManagedProcessReady({\n\t\t\t\t\tready: Effect.promise(\n\t\t\t\t\t\t() => new Promise<void>((resolveReady) => setTimeout(resolveReady, 0)),\n\t\t\t\t\t),\n\t\t\t\t\texit: exited,\n\t\t\t\t\tprocessError,\n\t\t\t\t\tonExitBeforeReady: (status) =>\n\t\t\t\t\t\tnew HostServiceAcquireError({\n\t\t\t\t\t\t\t...baseError,\n\t\t\t\t\t\t\tphase: 'exit',\n\t\t\t\t\t\t\tmessage: 'host service exited before readiness',\n\t\t\t\t\t\t\texitCode: status.code,\n\t\t\t\t\t\t\tsignal: status.signal,\n\t\t\t\t\t\t}),\n\t\t\t\t\tonProcessErrorBeforeReady: (cause) =>\n\t\t\t\t\t\tnew HostServiceAcquireError({\n\t\t\t\t\t\t\t...baseError,\n\t\t\t\t\t\t\tphase: 'spawn',\n\t\t\t\t\t\t\tmessage: 'host service process failed before readiness',\n\t\t\t\t\t\t\tcause,\n\t\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t});\n\t\t})();\n\t\tconst readinessExit = yield* Effect.exit(awaitReadiness);\n\t\tif (Exit.isFailure(readinessExit)) {\n\t\t\tshuttingDown = true;\n\t\t\tif (exitStatus === null) {\n\t\t\t\tyield* terminateChild(child, options.shutdownGraceMs, ctx.logger, ctx.pluginKey, tag);\n\t\t\t}\n\t\t\treturn yield* Effect.failCause(readinessExit.cause);\n\t\t}\n\n\t\tvoid exited.then((status) => {\n\t\t\tif (shuttingDown) return;\n\t\t\tvoid Effect.runPromise(\n\t\t\t\tctx.logger.log(tag, ctx.pluginKey, {\n\t\t\t\t\tlevel: 'error',\n\t\t\t\t\tmessage: 'host service exited after readiness',\n\t\t\t\t\tfields: {\n\t\t\t\t\t\t[SpanAttr.event]: 'process.exited',\n\t\t\t\t\t\t[SpanAttr.serviceName]: options.serviceName,\n\t\t\t\t\t\t[SpanAttr.exitCode]: status.code,\n\t\t\t\t\t\t[SpanAttr.exitSignal]: status.signal,\n\t\t\t\t\t\t[SpanAttr.exitStatus]: describeProcessExitStatus(status),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t).catch(() => {});\n\t\t});\n\t\tvoid processError.then((cause) => {\n\t\t\tif (shuttingDown) return;\n\t\t\tvoid Effect.runPromise(\n\t\t\t\tctx.logger.log(tag, ctx.pluginKey, {\n\t\t\t\t\tlevel: 'error',\n\t\t\t\t\tmessage: 'host service process emitted an error after readiness',\n\t\t\t\t\tfields: {\n\t\t\t\t\t\t[SpanAttr.event]: 'process.error',\n\t\t\t\t\t\t[SpanAttr.serviceName]: options.serviceName,\n\t\t\t\t\t\t[SpanAttr.errorCause]: cause,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t).catch(() => {});\n\t\t});\n\t});\n\nexport const prepareHostService = (\n\toptions: HostServiceResolvedOptions,\n\tctx: HostServiceAcquireContext,\n): Effect.Effect<PreparedHostService, HostServiceAcquireError, Scope.Scope> =>\n\tEffect.gen(function* () {\n\t\tconst port = yield* allocateHostPort(options, ctx);\n\t\tconst rendered = renderCommand(options, port);\n\t\tconst started = yield* Ref.make(false);\n\t\tconst start = Effect.gen(function* () {\n\t\t\tif (yield* Ref.get(started)) return;\n\t\t\tyield* startHostProcess(options, ctx, port);\n\t\t\tyield* Ref.set(started, true);\n\t\t});\n\n\t\treturn {\n\t\t\tvalue: hostServiceValue(options, port, rendered),\n\t\t\tstart,\n\t\t};\n\t});\n\nexport const acquireHostService = (\n\toptions: HostServiceResolvedOptions,\n\tctx: HostServiceAcquireContext,\n): Effect.Effect<HostServiceValue, HostServiceAcquireError, Scope.Scope> =>\n\tEffect.gen(function* () {\n\t\tconst prepared = yield* prepareHostService(options, ctx);\n\t\tyield* prepared.start;\n\t\treturn prepared.value;\n\t});\n"],"mappings":";;;;;;;;;AAsCA,MAAa,0BAA0B;AAwFvC,MAAM,4BAA4B;AAClC,MAAM,gCAAgC;AACtC,MAAM,iCAAiC;AACvC,MAAM,+BAA+B;AAErC,MAAM,sBAAsB,WAAqE;AAChG,KAAI,QAAQ,aAAa,QACxB,QAAO;EACN,SAAS,QAAQ,IAAI,WAAW,QAAQ,IAAI,WAAW;EACvD,MAAM;GAAC;GAAM;GAAM;GAAM;GAAO;EAChC;AAEF,QAAO;EACN,SAAS;EACT,MAAM,CAAC,MAAM,OAAO;EACpB;;AAGF,MAAM,kBACJ,iBAAyB,UACzB,uBAAuB,aAAa,MAAM;AAE5C,MAAM,uBACL,aACA,UACuC;AACvC,KAAI,UAAU,KAAA,EAAW,QAAO,KAAA;CAChC,MAAM,UAAU,eAAe,YAAY;AAC3C,KAAI,MAAM,SAAS,QAAQ;AAC1B,+BAA6B,MAAM,KAAK;GAAE,OAAO;GAAa;GAAS,CAAC;AACxE,gCAA8B,MAAM,WAAW;GAAE,OAAO;GAAmB;GAAS,CAAC;AACrF,gCAA8B,MAAM,YAAY;GAAE,OAAO;GAAoB;GAAS,CAAC;AACvF,SAAO;;AAER,KAAI,MAAM,SAAS,OAAO;AACzB,MAAI,OAAO,MAAM,YAAY,YAAY,EAAE,MAAM,mBAAmB,QACnE,OAAM,QAAQ;GAAE,OAAO;GAAiB,SAAS;GAA8B,CAAC;AAEjF,MAAI,MAAM,WAAW,KAAA,EACpB,aAAY,MAAM,QAAQ;GAAC;GAAU;GAAU;GAAO,EAAW;GAChE,OAAO;GACP;GACA,CAAC;AAEH,gCAA8B,MAAM,WAAW;GAAE,OAAO;GAAmB;GAAS,CAAC;AACrF,SAAO;;AAER,OAAM,QAAQ;EAAE,OAAO;EAAc,SAAS;EAA2B,CAAC;;AAG3E,MAAa,+BACZ,YACgC;CAChC,MAAM,eAAe,QAAQ,gBAAA;CAC7B,MAAM,cAAc,QAAQ,QAAQ;CACpC,MAAM,UAAU,eAAe,YAAY;AAC3C,sBAAqB,aAAa;EAAE,OAAO;EAAQ;EAAS,CAAC;AAC7D,sBAAqB,cAAc;EAAE,OAAO;EAAgB;EAAS,CAAC;CAEtE,MAAM,aAAc,QAA2C;CAC/D,MAAM,UAAW,QAAwC;CACzD,MAAM,YAAa,QAA0C;AAC7D,KAAI,eAAe,KAAA,KAAa,cAAc,KAAA,EAC7C,OAAM,QAAQ;EAAE,OAAO;EAAW,SAAS;EAA0C,CAAC;AAEvF,KAAI,eAAe,KAAA,KAAa,cAAc,KAAA,EAC7C,OAAM,QAAQ;EAAE,OAAO;EAAW,SAAS;EAAyC,CAAC;AAEtF,KAAI,cAAc,KAAA,KAAa,YAAY,KAAA,EAC1C,OAAM,QAAQ;EAAE,OAAO;EAAQ,SAAS;EAAwC,CAAC;CAGlF,MAAM,gBAAgB,mBAAmB,QAAQ,MAAM;EAAE,OAAO;EAAQ;EAAS,CAAC;CAClF,MAAM,MAAM,QAAQ,QAAQ,OAAO,QAAQ,KAAK,CAAC;CACjD,MAAM,MAAM,mBAAmB,QAAQ,KAAK;EAAE,OAAO;EAAO;EAAS,CAAC;CACtE,MAAM,kBACL,8BAA8B,QAAQ,iBAAiB;EACtD,OAAO;EACP;EACA,CAAC,IAAI;CACP,MAAM,QAAQ,oBAAoB,aAAa,QAAQ,MAAM;CAC7D,MAAM,aACL,cAAc,KAAA,IACX,mBAAmB,qBAAqB,WAAW;EAAE,OAAO;EAAU;EAAS,CAAC,CAAC,GACjF;EACA,SAAS,qBAAqB,YAAY;GAAE,OAAO;GAAW;GAAS,CAAC;EACxE,MAAM,QAAQ,QAAQ,EAAE;EACxB;AAEJ,QAAO;EACN;EACA;EACA,SAAS,WAAW;EACpB,MAAM,WAAW;EACjB;EACA,GAAI,kBAAkB,KAAA,IAAY,EAAE,GAAG,EAAE,eAAe;EACxD;EACA,GAAI,UAAU,KAAA,IAAY,EAAE,GAAG,EAAE,OAAO;EACxC;EACA;;AAGF,MAAM,mBAAmB,OAAe,SACvC,MAAM,WAAW,yBAAyB,OAAO,KAAK,CAAC;AAExD,MAAM,iBACL,SACA,SAKI;CACJ,MAAM,cAAiC,EAAE;AACzC,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,QAAQ,IAAI,CACrD,aAAY,OAAO,gBAAgB,OAAO,KAAK;AAEhD,QAAO;EACN,SAAS,gBAAgB,QAAQ,SAAS,KAAK;EAC/C,MAAM,QAAQ,KAAK,KAAK,QAAQ,gBAAgB,KAAK,KAAK,CAAC;EAC3D,KAAK;EACL;;AAGF,MAAM,oBACL,SACA,MACA,cACuB;CACvB,MAAM,QAAQ;CACd,cAAc,QAAQ;CACtB,SAAS,SAAS;CAClB,MAAM,SAAS;CACf,KAAK,QAAQ;CACb;CACA,KAAK,oBAAoB;CACzB;AAED,MAAM,kBACL,OACA,WACA,QACA,WACA,QAEA,wBAAwB,OAAO;CAC9B,SAAS;CACT,cAAc;CACd,kBACC,OAAO,IAAI,KAAK,WAAW;EAC1B,OAAO;EACP,SAAS;EACT,QAAQ,GAAG,SAAS,QAAQ,8BAA8B;EAC1D,CAAC;CACH,CAAC;AAEH,MAAM,aACL,KACA,WACA,YACA,MACA,cACA,UAEA,yBAAyB;CACxB,OAAO,oBAAoB;EAC1B,UAAU;EACV;EACA;EAGA,gBAAgB;EAChB,CAAC,CAAC,KACF,OAAO,UACL,UACA,IAAI,wBAAwB;EAC3B,GAAG;EACH,OAAO;EACP,SAAS,wCAAwC,IAAI,UAAU,UAAU;EACzE;EACA,CAAC,CACH,CACD;CACD;CACA;CACA,oBAAoB,WACnB,IAAI,wBAAwB;EAC3B,GAAG;EACH,OAAO;EACP,SAAS;EACT,UAAU,OAAO;EACjB,QAAQ,OAAO;EACf,CAAC;CACH,4BAA4B,UAC3B,IAAI,wBAAwB;EAC3B,GAAG;EACH,OAAO;EACP,SAAS;EACT;EACA,CAAC;CACH,CAAC;AAEH,MAAM,YACL,OACA,aACA,MACA,cACA,UAEA,yBAAyB;CACxB,OAAO,OAAO,WAAW;EACxB,WACC,IAAI,SAAe,cAAc,gBAAgB;GAChD,MAAM,UAAU,iBAAiB;AAChC,gBACC,IAAI,wBAAwB;KAC3B,GAAG;KACH,OAAO;KACP,SAAS,kDAAkD,MAAM,aAAa,6BAA6B;KAC3G,CAAC,CACF;MACC,MAAM,aAAa,6BAA6B;AACnD,eAAY,WAAW;AACtB,iBAAa,QAAQ;AACrB,kBAAc;KACb;IACD;EACH,QAAQ,UAAW,iBAAiB,0BAA0B,QAAQ;EACtE,CAAC;CACF;CACA;CACA,oBAAoB,WACnB,IAAI,wBAAwB;EAC3B,GAAG;EACH,OAAO;EACP,SAAS;EACT,UAAU,OAAO;EACjB,QAAQ,OAAO;EACf,CAAC;CACH,4BAA4B,UAC3B,IAAI,wBAAwB;EAC3B,GAAG;EACH,OAAO;EACP,SAAS;EACT;EACA,CAAC;CACH,CAAC;AAEH,MAAM,oBACL,SACA,QAEA,IAAI,aAAa,QAAQ,cAAc,CAAC,KACvC,OAAO,UACL,UACA,IAAI,wBAAwB;CAC3B,aAAa,QAAQ;CACrB,KAAK,QAAQ;CACb,SAAS,QAAQ;CACjB,MAAM,QAAQ;CACd,OAAO;CACP,SAAS;CACT;CACA,CAAC,CACH,CACD;AAEF,MAAM,oBACL,SACA,KACA,SAEA,OAAO,IAAI,aAAa;CACvB,MAAM,WAAW,cAAc,SAAS,KAAK;CAC7C,MAAM,MAAyB;EAC9B,GAAI,IAAI,cAAc,QAAQ;EAC9B,GAAG,SAAS;EACZ,MAAM,OAAO,KAAK;EAClB;CACD,MAAM,MAAM,gBAAgB,QAAQ;CACpC,IAAI;CACJ,MAAM,iBACL,QAAQ,OAAO,SAAS,QACrB,IAAI,SAAe,iBAAiB;AACpC,oBAAkB;GACjB,GACD;CACJ,MAAM,wBAAwB,MAAc,WAAsC;AACjF,MAAI,QAAQ,OAAO,SAAS,MAAO;AACnC,MACC,QAAQ,MAAM,WAAW,KAAA,KACzB,QAAQ,MAAM,WAAW,UACzB,QAAQ,MAAM,WAAW,OAEzB;AAMD,MAHC,OAAO,QAAQ,MAAM,YAAY,WAC9B,KAAK,SAAS,QAAQ,MAAM,QAAQ,GACpC,QAAQ,MAAM,QAAQ,KAAK,KAAK,CACvB,oBAAmB;;CAGjC,MAAM,aAAa,IAAI,WAAW;CAClC,MAAM,QAAQ,OAAO,OAAO,IAAI;EAC/B,WACC,WAAW,SAAS,SAAS,SAAS,MAAM;GAC3C,KAAK,QAAQ;GACb;GACA,OAAO;GACP,UAAU,QAAQ,aAAa;GAC/B,CAAC;EACH,QAAQ,UACP,IAAI,wBAAwB;GAC3B,aAAa,QAAQ;GACrB,KAAK,QAAQ;GACb,SAAS,SAAS;GAClB,MAAM,SAAS;GACf,OAAO;GACP,SAAS;GACT;GACA,CAAC;EACH,CAAC;CACF,IAAI,eAAe;CACnB,IAAI,aAGO;CACX,MAAM,SAAS,gBAAgB,MAAM,CAAC,MAAM,WAAW;AACtD,eAAa;AACb,SAAO;GACN;CACF,MAAM,eAAe,iBAAiB,MAAM;AAC5C,QAAO,oBACN;EACC,QAAQ,qBACP,MAAM,OACN;EACD,QAAQ,qBACP,MAAM,OACN;EACD,EACD;EACC,QAAQ,IAAI;EACZ,WAAW,IAAI;EACf;EACA,QAAQ,GAAG,SAAS,cAAc,QAAQ,aAAa;EACvD,SAAS,EAAE,MAAM,aAChB,OAAO,WAAW;AACjB,wBAAqB,MAAM,OAAO;IACjC;EACH,CACD;AACD,QAAO,OAAO,mBACb,OAAO,IAAI,aAAa;AACvB,iBAAe;AACf,MAAI,eAAe,KAAM;AACzB,SAAO,eAAe,OAAO,QAAQ,iBAAiB,IAAI,QAAQ,IAAI,WAAW,IAAI;GACpF,CACF;CAED,MAAM,YAAY,IAAI,wBAAwB;EAC7C,aAAa,QAAQ;EACrB,KAAK,QAAQ;EACb,SAAS,SAAS;EAClB,MAAM,SAAS;EACf,OAAO;EACP,SAAS;EACT,CAAC;CACF,MAAM,wBAAwB;AAC7B,MAAI,QAAQ,OAAO,SAAS,OAE3B,QAAO,UADK,gBAAgB,QAAQ,MAAM,OAAO,2BAA2B,KAExE,EACH,QAAQ,MAAM,aAAa,+BAC3B,QAAQ,MAAM,cAAc,gCAC5B,QACA,cACA,UACA;AAEF,MAAI,QAAQ,OAAO,SAAS,SAAS,mBAAmB,KACvD,QAAO,SAAS,QAAQ,OAAO,gBAAgB,QAAQ,cAAc,UAAU;AAEhF,SAAO,OAAO,IAAI,aAAa;AAC9B,UAAO,yBAAyB;IAC/B,OAAO,OAAO,cACP,IAAI,SAAe,iBAAiB,WAAW,cAAc,EAAE,CAAC,CACtE;IACD,MAAM;IACN;IACA,oBAAoB,WACnB,IAAI,wBAAwB;KAC3B,GAAG;KACH,OAAO;KACP,SAAS;KACT,UAAU,OAAO;KACjB,QAAQ,OAAO;KACf,CAAC;IACH,4BAA4B,UAC3B,IAAI,wBAAwB;KAC3B,GAAG;KACH,OAAO;KACP,SAAS;KACT;KACA,CAAC;IACH,CAAC;IACD;KACC;CACJ,MAAM,gBAAgB,OAAO,OAAO,KAAK,eAAe;AACxD,KAAI,KAAK,UAAU,cAAc,EAAE;AAClC,iBAAe;AACf,MAAI,eAAe,KAClB,QAAO,eAAe,OAAO,QAAQ,iBAAiB,IAAI,QAAQ,IAAI,WAAW,IAAI;AAEtF,SAAO,OAAO,OAAO,UAAU,cAAc,MAAM;;AAG/C,QAAO,MAAM,WAAW;AAC5B,MAAI,aAAc;AACb,SAAO,WACX,IAAI,OAAO,IAAI,KAAK,IAAI,WAAW;GAClC,OAAO;GACP,SAAS;GACT,QAAQ;KACN,SAAS,QAAQ;KACjB,SAAS,cAAc,QAAQ;KAC/B,SAAS,WAAW,OAAO;KAC3B,SAAS,aAAa,OAAO;KAC7B,SAAS,aAAa,0BAA0B,OAAO;IACxD;GACD,CAAC,CACF,CAAC,YAAY,GAAG;GAChB;AACG,cAAa,MAAM,UAAU;AACjC,MAAI,aAAc;AACb,SAAO,WACX,IAAI,OAAO,IAAI,KAAK,IAAI,WAAW;GAClC,OAAO;GACP,SAAS;GACT,QAAQ;KACN,SAAS,QAAQ;KACjB,SAAS,cAAc,QAAQ;KAC/B,SAAS,aAAa;IACvB;GACD,CAAC,CACF,CAAC,YAAY,GAAG;GAChB;EACD;AAEH,MAAa,sBACZ,SACA,QAEA,OAAO,IAAI,aAAa;CACvB,MAAM,OAAO,OAAO,iBAAiB,SAAS,IAAI;CAClD,MAAM,WAAW,cAAc,SAAS,KAAK;CAC7C,MAAM,UAAU,OAAO,IAAI,KAAK,MAAM;CACtC,MAAM,QAAQ,OAAO,IAAI,aAAa;AACrC,MAAI,OAAO,IAAI,IAAI,QAAQ,CAAE;AAC7B,SAAO,iBAAiB,SAAS,KAAK,KAAK;AAC3C,SAAO,IAAI,IAAI,SAAS,KAAK;GAC5B;AAEF,QAAO;EACN,OAAO,iBAAiB,SAAS,MAAM,SAAS;EAChD;EACA;EACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { Effect, Scope } from "effect";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { hashMoveSources as hashMoveSources$1, runMoveBuild as runMoveBuild$1, scrubLocksHost as scrubLocksHost$1 } from "../../substrate/runtime/sui-move-build/index.mjs";
|
|
2
|
+
import { publishError } from "./errors.mjs";
|
|
3
|
+
import { Effect } from "effect";
|
|
4
|
+
//#region src/plugins/package/build.ts
|
|
5
|
+
const toPublishError = (err) => publishError(err.phase, {
|
|
6
|
+
sourcePath: err.sourcePath,
|
|
7
|
+
packageName: err.packageName,
|
|
8
|
+
message: err.message,
|
|
9
|
+
...err.cause !== void 0 ? { cause: err.cause } : { cause: err }
|
|
10
|
+
});
|
|
11
|
+
const hashMoveSources = (sourcePath) => hashMoveSources$1(sourcePath).pipe(Effect.mapError(toPublishError));
|
|
12
|
+
const scrubLocksHost = (sourcePath, moveHomeRoot, options) => scrubLocksHost$1(sourcePath, moveHomeRoot, options).pipe(Effect.mapError(toPublishError));
|
|
13
|
+
const runMoveBuild = (inputs) => runMoveBuild$1({
|
|
14
|
+
sourcePath: inputs.sourcePath,
|
|
15
|
+
packageName: inputs.packageName,
|
|
16
|
+
chainId: inputs.chainId,
|
|
17
|
+
...inputs.buildContainer !== void 0 ? { buildContainer: inputs.buildContainer } : {},
|
|
18
|
+
...inputs.runtime !== void 0 ? { runtime: inputs.runtime } : {},
|
|
19
|
+
...inputs.buildImage !== void 0 ? { buildImage: inputs.buildImage } : {}
|
|
20
|
+
}).pipe(Effect.mapError(toPublishError));
|
|
21
|
+
//#endregion
|
|
22
|
+
export { hashMoveSources, runMoveBuild, scrubLocksHost };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=build.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.mjs","names":["hashMoveSourcesNeutral","scrubLocksHostNeutral","runMoveBuildNeutral"],"sources":["../../../src/plugins/package/build.ts"],"sourcesContent":["// Package plugin compatibility wrapper for shared Sui Move build helpers.\n\nimport { Effect, type Scope } from 'effect';\n\nimport type { ContainerRuntime, ImageRef } from '../../contracts/container-runtime.ts';\nimport type { ChainId, ContentHash } from '../../substrate/brand.ts';\nimport {\n\thashMoveSources as hashMoveSourcesNeutral,\n\trunMoveBuild as runMoveBuildNeutral,\n\tscrubLocksHost as scrubLocksHostNeutral,\n\ttype BuildOutput,\n\ttype MoveBuildError,\n\ttype ScrubLocksHostOptions,\n\ttype MoveBuildContainer,\n} from '../../substrate/runtime/sui-move-build/index.ts';\nimport type { ChainBuildContainer } from '../sui/chain-build-container.ts';\nimport { publishError, type PublishError } from './errors.ts';\n\nexport {\n\tcontainerInnerScript,\n\textractTrailingJson,\n\thostBuildArgv,\n\tparseBuildOutput,\n\tscrubLocksContainerShellScript,\n\tstripPinnedSections,\n\ttype MoveBuildContainer,\n\ttype MoveBuildError,\n\ttype MoveBuildPhase,\n\ttype MoveBuildInput,\n\ttype MoveBuildOutput,\n} from '../../substrate/runtime/sui-move-build/index.ts';\nexport type { BuildOutput };\n\nexport interface BuildInputs {\n\treadonly sourcePath: string;\n\treadonly packageName: string;\n\treadonly chainId: ChainId;\n\treadonly buildContainer?: ChainBuildContainer;\n\treadonly runtime?: ContainerRuntime;\n\treadonly buildImage?: ImageRef;\n}\n\nconst toPublishError = (err: MoveBuildError): PublishError =>\n\tpublishError(err.phase, {\n\t\tsourcePath: err.sourcePath,\n\t\tpackageName: err.packageName,\n\t\tmessage: err.message,\n\t\t...(err.cause !== undefined ? { cause: err.cause } : { cause: err }),\n\t});\n\nexport const hashMoveSources = (sourcePath: string): Effect.Effect<ContentHash, PublishError> =>\n\thashMoveSourcesNeutral(sourcePath).pipe(Effect.mapError(toPublishError));\n\nexport const scrubLocksHost = (\n\tsourcePath: string,\n\tmoveHomeRoot: string,\n\toptions?: ScrubLocksHostOptions,\n): Effect.Effect<void, PublishError, Scope.Scope> =>\n\tscrubLocksHostNeutral(sourcePath, moveHomeRoot, options).pipe(Effect.mapError(toPublishError));\n\nexport const runMoveBuild = (\n\tinputs: BuildInputs,\n): Effect.Effect<BuildOutput, PublishError, Scope.Scope> =>\n\trunMoveBuildNeutral({\n\t\tsourcePath: inputs.sourcePath,\n\t\tpackageName: inputs.packageName,\n\t\tchainId: inputs.chainId,\n\t\t...(inputs.buildContainer !== undefined\n\t\t\t? { buildContainer: inputs.buildContainer satisfies MoveBuildContainer }\n\t\t\t: {}),\n\t\t...(inputs.runtime !== undefined ? { runtime: inputs.runtime } : {}),\n\t\t...(inputs.buildImage !== undefined ? { buildImage: inputs.buildImage } : {}),\n\t}).pipe(Effect.mapError(toPublishError));\n"],"mappings":";;;;AA0CA,MAAM,kBAAkB,QACvB,aAAa,IAAI,OAAO;CACvB,YAAY,IAAI;CAChB,aAAa,IAAI;CACjB,SAAS,IAAI;CACb,GAAI,IAAI,UAAU,KAAA,IAAY,EAAE,OAAO,IAAI,OAAO,GAAG,EAAE,OAAO,KAAK;CACnE,CAAC;AAEH,MAAa,mBAAmB,eAC/BA,kBAAuB,WAAW,CAAC,KAAK,OAAO,SAAS,eAAe,CAAC;AAEzE,MAAa,kBACZ,YACA,cACA,YAEAC,iBAAsB,YAAY,cAAc,QAAQ,CAAC,KAAK,OAAO,SAAS,eAAe,CAAC;AAE/F,MAAa,gBACZ,WAEAC,eAAoB;CACnB,YAAY,OAAO;CACnB,aAAa,OAAO;CACpB,SAAS,OAAO;CAChB,GAAI,OAAO,mBAAmB,KAAA,IAC3B,EAAE,gBAAgB,OAAO,gBAA6C,GACtE,EAAE;CACL,GAAI,OAAO,YAAY,KAAA,IAAY,EAAE,SAAS,OAAO,SAAS,GAAG,EAAE;CACnE,GAAI,OAAO,eAAe,KAAA,IAAY,EAAE,YAAY,OAAO,YAAY,GAAG,EAAE;CAC5E,CAAC,CAAC,KAAK,OAAO,SAAS,eAAe,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/plugins/package/codegen.d.ts
|
|
2
|
+
/** Codegenable shape — what each Package contributes to the codegen
|
|
3
|
+
* orchestrator. Two variants mirror the local/known split. */
|
|
4
|
+
interface PackageBindings {
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly packageId: string;
|
|
7
|
+
readonly mvrPlaceholder: string;
|
|
8
|
+
/** Present for local packages only — the bindings emitter reads
|
|
9
|
+
* this; KnownPackages omit it and the orchestrator skips them
|
|
10
|
+
* for bindings emission (compile-time enforcement at the
|
|
11
|
+
* factory layer per distilled doc Invariant 9). */
|
|
12
|
+
readonly sourcePath: string | null;
|
|
13
|
+
/** Per-package opt-out (distilled doc §Inputs — "Codegen
|
|
14
|
+
* exclusion flag"). */
|
|
15
|
+
readonly excluded: boolean;
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { PackageBindings };
|
|
19
|
+
//# sourceMappingURL=codegen.d.mts.map
|