@mysten-incubation/devstack 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- package/dashboard-ui/assets/grpc-Clz0oOtc.js +3 -0
- package/dashboard-ui/assets/index-B82Bh84P.css +1 -0
- package/dashboard-ui/assets/index-Cmqv9kiU.js +1283 -0
- package/dashboard-ui/index.html +2 -2
- package/dist/api/define-capabilities.d.mts +1 -20
- package/dist/api/define-capabilities.mjs +15 -22
- package/dist/api/define-capabilities.mjs.map +1 -1
- package/dist/api/define-devstack-with.d.mts +7 -1
- package/dist/api/define-devstack-with.mjs.map +1 -1
- package/dist/api/define-devstack.mjs.map +1 -1
- package/dist/api/define-plugin.d.mts +2 -1
- package/dist/api/inference-network.d.mts +31 -17
- package/dist/api/inference-network.mjs +40 -43
- package/dist/api/inference-network.mjs.map +1 -1
- package/dist/api/load-config.mjs +88 -0
- package/dist/api/load-config.mjs.map +1 -0
- package/dist/api/mode-narrowed-factory.d.mts +1 -1
- package/dist/api/mode-narrowed-factory.mjs.map +1 -1
- package/dist/api/run-stack-internal.mjs +203 -0
- package/dist/api/run-stack-internal.mjs.map +1 -0
- package/dist/api/run-stack.d.mts +82 -31
- package/dist/api/run-stack.mjs +22 -141
- package/dist/api/run-stack.mjs.map +1 -1
- package/dist/build-integrations/dapp-kit/index.d.mts +61 -0
- package/dist/build-integrations/dapp-kit/index.mjs +58 -0
- package/dist/build-integrations/dapp-kit/index.mjs.map +1 -0
- package/dist/build-integrations/playwright/config.d.mts +3 -31
- package/dist/build-integrations/playwright/config.mjs +2 -28
- package/dist/build-integrations/playwright/config.mjs.map +1 -1
- package/dist/build-integrations/playwright/errors.d.mts +4 -7
- package/dist/build-integrations/playwright/errors.mjs.map +1 -1
- package/dist/build-integrations/playwright/global-setup.d.mts +42 -71
- package/dist/build-integrations/playwright/global-setup.mjs +142 -218
- package/dist/build-integrations/playwright/global-setup.mjs.map +1 -1
- package/dist/build-integrations/playwright/index.d.mts +2 -2
- package/dist/build-integrations/playwright/index.mjs +2 -2
- package/dist/build-integrations/playwright/stack-context.d.mts +3 -1
- package/dist/build-integrations/playwright/stack-context.mjs +4 -2
- package/dist/build-integrations/playwright/stack-context.mjs.map +1 -1
- package/dist/build-integrations/playwright/wallet-context.mjs +44 -19
- package/dist/build-integrations/playwright/wallet-context.mjs.map +1 -1
- package/dist/build-integrations/runtime/cold-start-url.mjs.map +1 -1
- package/dist/build-integrations/runtime/conventional-routes.mjs.map +1 -1
- package/dist/build-integrations/runtime/dapp-kit-slot.mjs.map +1 -1
- package/dist/build-integrations/runtime/discover.d.mts +6 -4
- package/dist/build-integrations/runtime/discover.mjs +15 -4
- package/dist/build-integrations/runtime/discover.mjs.map +1 -1
- package/dist/build-integrations/runtime/endpoint-registry.mjs.map +1 -1
- package/dist/build-integrations/runtime/errors.mjs.map +1 -1
- package/dist/build-integrations/runtime/read-stack-context.mjs +3 -3
- package/dist/build-integrations/runtime/read-stack-context.mjs.map +1 -1
- package/dist/build-integrations/runtime/resolve-discovery-env.d.mts +23 -7
- package/dist/build-integrations/runtime/resolve-discovery-env.mjs +25 -12
- package/dist/build-integrations/runtime/resolve-discovery-env.mjs.map +1 -1
- package/dist/build-integrations/runtime/stack-context.d.mts +2 -2
- package/dist/build-integrations/vite/index.d.mts +114 -19
- package/dist/build-integrations/vite/index.mjs +239 -28
- package/dist/build-integrations/vite/index.mjs.map +1 -1
- package/dist/build-integrations/vitest/config.d.mts +20 -2
- package/dist/build-integrations/vitest/config.mjs +15 -4
- package/dist/build-integrations/vitest/config.mjs.map +1 -1
- package/dist/build-integrations/vitest/env.d.mts +18 -10
- package/dist/build-integrations/vitest/env.mjs +11 -10
- package/dist/build-integrations/vitest/env.mjs.map +1 -1
- package/dist/build-integrations/vitest/errors.d.mts +7 -11
- package/dist/build-integrations/vitest/errors.mjs +3 -4
- package/dist/build-integrations/vitest/errors.mjs.map +1 -1
- package/dist/build-integrations/vitest/global-setup.d.mts +35 -0
- package/dist/build-integrations/vitest/global-setup.mjs +156 -0
- package/dist/build-integrations/vitest/global-setup.mjs.map +1 -0
- package/dist/build-integrations/vitest/index.d.mts +3 -2
- package/dist/build-integrations/vitest/index.mjs +3 -2
- package/dist/build-integrations/vitest/setup.mjs +2 -2
- package/dist/build-integrations/vitest/setup.mjs.map +1 -1
- package/dist/build-integrations/vitest/stack-context.d.mts +5 -3
- package/dist/build-integrations/vitest/stack-context.mjs +3 -2
- package/dist/build-integrations/vitest/stack-context.mjs.map +1 -1
- package/dist/cli/bail.mjs.map +1 -1
- package/dist/cli/doctor-probes.mjs +8 -5
- package/dist/cli/doctor-probes.mjs.map +1 -1
- package/dist/cli/main.d.mts +23 -1
- package/dist/cli/main.mjs +63 -8
- package/dist/cli/main.mjs.map +1 -1
- package/dist/cli/prune-direct.mjs.map +1 -1
- package/dist/cli/snapshot-reader.mjs.map +1 -1
- package/dist/cli/up-lifecycle.mjs.map +1 -1
- package/dist/cli/wirings/apply.mjs +28 -21
- package/dist/cli/wirings/apply.mjs.map +1 -1
- package/dist/cli/wirings/codegen.mjs +108 -0
- package/dist/cli/wirings/codegen.mjs.map +1 -0
- package/dist/cli/wirings/config-loader.mjs +12 -62
- package/dist/cli/wirings/config-loader.mjs.map +1 -1
- package/dist/cli/wirings/dump-ids.mjs +86 -0
- package/dist/cli/wirings/dump-ids.mjs.map +1 -0
- package/dist/cli/wirings/engine-command.mjs +1 -1
- package/dist/cli/wirings/engine-command.mjs.map +1 -1
- package/dist/cli/wirings/identity.mjs +2 -2
- package/dist/cli/wirings/identity.mjs.map +1 -1
- package/dist/cli/wirings/provide-file-system.mjs.map +1 -1
- package/dist/cli/wirings/read-devstack-version.mjs +17 -0
- package/dist/cli/wirings/read-devstack-version.mjs.map +1 -0
- package/dist/cli/wirings/snapshot.mjs +27 -34
- package/dist/cli/wirings/snapshot.mjs.map +1 -1
- package/dist/cli/wirings/up-ipc.mjs +147 -0
- package/dist/cli/wirings/up-ipc.mjs.map +1 -0
- package/dist/cli/wirings/up.mjs +225 -198
- package/dist/cli/wirings/up.mjs.map +1 -1
- package/dist/cli/wirings/wipe.mjs +1 -1
- package/dist/cli/wirings/wipe.mjs.map +1 -1
- package/dist/contracts/chain-probe.d.mts +1 -1
- package/dist/contracts/chain-probe.mjs +1 -1
- package/dist/contracts/chain-probe.mjs.map +1 -1
- package/dist/contracts/codegenable.d.mts +60 -6
- package/dist/contracts/codegenable.mjs +28 -0
- package/dist/contracts/codegenable.mjs.map +1 -0
- package/dist/contracts/config-bindings.mjs +162 -0
- package/dist/contracts/config-bindings.mjs.map +1 -0
- package/dist/contracts/container-runtime.d.mts +23 -17
- package/dist/contracts/plugin-expander.mjs.map +1 -1
- package/dist/contracts/snapshotable.d.mts +5 -7
- package/dist/contracts/wallet-protocol.d.mts +2 -5
- package/dist/contracts/wallet-protocol.mjs +2 -5
- package/dist/contracts/wallet-protocol.mjs.map +1 -1
- package/dist/index.d.mts +21 -26
- package/dist/index.mjs +8 -9
- package/dist/orchestrators/boot.d.mts +28 -0
- package/dist/orchestrators/boot.mjs +450 -0
- package/dist/orchestrators/boot.mjs.map +1 -0
- package/dist/orchestrators/codegen/bindings.d.mts +13 -1
- package/dist/orchestrators/codegen/bindings.mjs +23 -9
- package/dist/orchestrators/codegen/bindings.mjs.map +1 -1
- package/dist/orchestrators/codegen/config-runtime.mjs +208 -0
- package/dist/orchestrators/codegen/config-runtime.mjs.map +1 -0
- package/dist/orchestrators/codegen/emit.mjs +1 -1
- package/dist/orchestrators/codegen/emit.mjs.map +1 -1
- package/dist/orchestrators/codegen/errors.mjs +21 -1
- package/dist/orchestrators/codegen/errors.mjs.map +1 -1
- package/dist/orchestrators/codegen/format.mjs +2 -0
- package/dist/orchestrators/codegen/format.mjs.map +1 -1
- package/dist/orchestrators/codegen/gitignore.mjs +30 -11
- package/dist/orchestrators/codegen/gitignore.mjs.map +1 -1
- package/dist/orchestrators/codegen/id-config.mjs +107 -0
- package/dist/orchestrators/codegen/id-config.mjs.map +1 -0
- package/dist/orchestrators/codegen/output-location.mjs +23 -32
- package/dist/orchestrators/codegen/output-location.mjs.map +1 -1
- package/dist/orchestrators/codegen/paths.mjs +8 -1
- package/dist/orchestrators/codegen/paths.mjs.map +1 -1
- package/dist/orchestrators/codegen/permissions.mjs.map +1 -1
- package/dist/orchestrators/codegen/service.mjs +303 -60
- package/dist/orchestrators/codegen/service.mjs.map +1 -1
- package/dist/orchestrators/layers.mjs +31 -0
- package/dist/orchestrators/layers.mjs.map +1 -0
- package/dist/orchestrators/lifecycle-prune/errors.mjs.map +1 -1
- package/dist/orchestrators/lifecycle-prune/index.mjs +8 -10
- package/dist/orchestrators/lifecycle-prune/index.mjs.map +1 -1
- package/dist/orchestrators/network-options.d.mts +52 -0
- package/dist/orchestrators/network-options.mjs +43 -0
- package/dist/orchestrators/network-options.mjs.map +1 -0
- package/dist/orchestrators/router/cleanup.mjs.map +1 -1
- package/dist/orchestrators/router/cors.mjs.map +1 -1
- package/dist/orchestrators/router/entrypoints.mjs.map +1 -1
- package/dist/orchestrators/router/errors.mjs.map +1 -1
- package/dist/orchestrators/router/file-provider.mjs.map +1 -1
- package/dist/orchestrators/router/hostname.mjs.map +1 -1
- package/dist/orchestrators/router/profile.mjs +1 -1
- package/dist/orchestrators/router/profile.mjs.map +1 -1
- package/dist/orchestrators/router/service.d.mts +2 -2
- package/dist/orchestrators/router/service.mjs +12 -27
- package/dist/orchestrators/router/service.mjs.map +1 -1
- package/dist/orchestrators/router/traefik-container.mjs +1 -1
- package/dist/orchestrators/router/traefik-container.mjs.map +1 -1
- package/dist/orchestrators/snapshot/capture.mjs +171 -195
- package/dist/orchestrators/snapshot/capture.mjs.map +1 -1
- package/dist/orchestrators/snapshot/descriptor.d.mts +1 -1
- package/dist/orchestrators/snapshot/descriptor.mjs +53 -11
- package/dist/orchestrators/snapshot/descriptor.mjs.map +1 -1
- package/dist/orchestrators/snapshot/identity-guard.mjs +3 -5
- package/dist/orchestrators/snapshot/identity-guard.mjs.map +1 -1
- package/dist/orchestrators/snapshot/image-bundle-tags.mjs +32 -101
- package/dist/orchestrators/snapshot/image-bundle-tags.mjs.map +1 -1
- package/dist/orchestrators/snapshot/index.mjs +1 -4
- package/dist/orchestrators/snapshot/integrity.mjs.map +1 -1
- package/dist/orchestrators/snapshot/interrupted-restore.mjs +116 -0
- package/dist/orchestrators/snapshot/interrupted-restore.mjs.map +1 -0
- package/dist/orchestrators/snapshot/phase-error.mjs.map +1 -1
- package/dist/orchestrators/snapshot/prune.mjs +40 -31
- package/dist/orchestrators/snapshot/prune.mjs.map +1 -1
- package/dist/orchestrators/snapshot/restore.mjs +221 -196
- package/dist/orchestrators/snapshot/restore.mjs.map +1 -1
- package/dist/orchestrators/snapshot/service.mjs +72 -62
- package/dist/orchestrators/snapshot/service.mjs.map +1 -1
- package/dist/orchestrators/snapshot/wipe.mjs +67 -56
- package/dist/orchestrators/snapshot/wipe.mjs.map +1 -1
- package/dist/plugins/account/codegen.mjs +3 -0
- package/dist/plugins/account/codegen.mjs.map +1 -1
- package/dist/plugins/account/errors.d.mts +2 -2
- package/dist/plugins/account/errors.mjs +1 -4
- package/dist/plugins/account/errors.mjs.map +1 -1
- package/dist/plugins/account/funding.mjs +3 -27
- package/dist/plugins/account/funding.mjs.map +1 -1
- package/dist/plugins/account/index.d.mts +3 -8
- package/dist/plugins/account/index.mjs +71 -35
- package/dist/plugins/account/index.mjs.map +1 -1
- package/dist/plugins/account/keypair.d.mts +8 -7
- package/dist/plugins/account/keypair.mjs +5 -18
- package/dist/plugins/account/keypair.mjs.map +1 -1
- package/dist/plugins/account/lease.mjs.map +1 -1
- package/dist/plugins/account/registry.d.mts +1 -46
- package/dist/plugins/account/registry.mjs.map +1 -1
- package/dist/plugins/account/service.d.mts +43 -34
- package/dist/plugins/account/service.mjs +9 -54
- package/dist/plugins/account/service.mjs.map +1 -1
- package/dist/plugins/account/snapshot.mjs.map +1 -1
- package/dist/plugins/account/variants/ephemeral.mjs.map +1 -1
- package/dist/plugins/account/variants/impersonate.mjs.map +1 -1
- package/dist/plugins/account/variants/signer.mjs.map +1 -1
- package/dist/plugins/action/discriminator.mjs.map +1 -1
- package/dist/plugins/action/errors.mjs +1 -4
- package/dist/plugins/action/errors.mjs.map +1 -1
- package/dist/plugins/action/execute.mjs +3 -4
- package/dist/plugins/action/execute.mjs.map +1 -1
- package/dist/plugins/action/index.d.mts +2 -2
- package/dist/plugins/action/index.mjs +7 -11
- package/dist/plugins/action/index.mjs.map +1 -1
- package/dist/plugins/action/service.d.mts +5 -7
- package/dist/plugins/action/service.mjs +2 -16
- package/dist/plugins/action/service.mjs.map +1 -1
- package/dist/plugins/coin/address-resolution.mjs.map +1 -1
- package/dist/plugins/coin/codegen.mjs +97 -16
- package/dist/plugins/coin/codegen.mjs.map +1 -1
- package/dist/plugins/coin/discovery.mjs.map +1 -1
- package/dist/plugins/coin/errors.mjs +1 -4
- package/dist/plugins/coin/errors.mjs.map +1 -1
- package/dist/plugins/coin/index.d.mts +4 -34
- package/dist/plugins/coin/index.mjs +47 -28
- package/dist/plugins/coin/index.mjs.map +1 -1
- package/dist/plugins/coin/metadata.d.mts +1 -0
- package/dist/plugins/coin/metadata.mjs +8 -9
- package/dist/plugins/coin/metadata.mjs.map +1 -1
- package/dist/plugins/coin/mint.mjs +7 -21
- package/dist/plugins/coin/mint.mjs.map +1 -1
- package/dist/plugins/coin/registry.mjs +33 -20
- package/dist/plugins/coin/registry.mjs.map +1 -1
- package/dist/plugins/coin/service.d.mts +1 -1
- package/dist/plugins/coin/service.mjs +1 -8
- package/dist/plugins/coin/service.mjs.map +1 -1
- package/dist/plugins/coin/snapshot.mjs.map +1 -1
- package/dist/plugins/coin/type-strings.mjs.map +1 -1
- package/dist/plugins/dashboard/domain.mjs +124 -168
- package/dist/plugins/dashboard/domain.mjs.map +1 -1
- package/dist/plugins/dashboard/index.mjs +13 -13
- package/dist/plugins/dashboard/index.mjs.map +1 -1
- package/dist/plugins/dashboard/origin-policy.mjs +3 -3
- package/dist/plugins/dashboard/origin-policy.mjs.map +1 -1
- package/dist/plugins/dashboard/routable.mjs.map +1 -1
- package/dist/plugins/dashboard/schema/builder.mjs.map +1 -1
- package/dist/plugins/dashboard/schema/enums.mjs.map +1 -1
- package/dist/plugins/dashboard/schema/root.mjs +25 -46
- package/dist/plugins/dashboard/schema/root.mjs.map +1 -1
- package/dist/plugins/dashboard/schema/types.mjs +52 -93
- package/dist/plugins/dashboard/schema/types.mjs.map +1 -1
- package/dist/plugins/dashboard/schema.mjs.map +1 -1
- package/dist/plugins/dashboard/server.mjs.map +1 -1
- package/dist/plugins/deepbook/codegen.d.mts +12 -11
- package/dist/plugins/deepbook/codegen.mjs +108 -11
- package/dist/plugins/deepbook/codegen.mjs.map +1 -1
- package/dist/plugins/deepbook/deploy.mjs +7 -14
- package/dist/plugins/deepbook/deploy.mjs.map +1 -1
- package/dist/plugins/deepbook/errors.mjs +4 -2
- package/dist/plugins/deepbook/errors.mjs.map +1 -1
- package/dist/plugins/deepbook/faucet-strategy.mjs +4 -10
- package/dist/plugins/deepbook/faucet-strategy.mjs.map +1 -1
- package/dist/plugins/deepbook/hash.mjs.map +1 -1
- package/dist/plugins/deepbook/index.d.mts +45 -37
- package/dist/plugins/deepbook/index.mjs +136 -67
- package/dist/plugins/deepbook/index.mjs.map +1 -1
- package/dist/plugins/deepbook/plugin-key.mjs.map +1 -1
- package/dist/plugins/deepbook/pyth/index.mjs +4 -8
- package/dist/plugins/deepbook/pyth/index.mjs.map +1 -1
- package/dist/plugins/deepbook/snapshot.mjs +0 -1
- package/dist/plugins/deepbook/snapshot.mjs.map +1 -1
- package/dist/plugins/deepbook/type-strings.mjs.map +1 -1
- package/dist/plugins/deepbook/types.d.mts +2 -1
- package/dist/plugins/deepbook/types.mjs.map +1 -1
- package/dist/plugins/faucet/dispatcher.d.mts +3 -3
- package/dist/plugins/faucet/dispatcher.mjs.map +1 -1
- package/dist/plugins/faucet/errors.mjs.map +1 -1
- package/dist/plugins/faucet/http.mjs +2 -10
- package/dist/plugins/faucet/http.mjs.map +1 -1
- package/dist/plugins/faucet/index.mjs +0 -1
- package/dist/plugins/faucet/index.mjs.map +1 -1
- package/dist/plugins/host-service/errors.d.mts +1 -3
- package/dist/plugins/host-service/errors.mjs +1 -2
- package/dist/plugins/host-service/errors.mjs.map +1 -1
- package/dist/plugins/host-service/index.d.mts +1 -2
- package/dist/plugins/host-service/index.mjs +11 -11
- package/dist/plugins/host-service/index.mjs.map +1 -1
- package/dist/plugins/host-service/routable.mjs.map +1 -1
- package/dist/plugins/host-service/service.mjs +13 -13
- package/dist/plugins/host-service/service.mjs.map +1 -1
- package/dist/plugins/internal/acquire-on-chain-artifact.mjs.map +1 -1
- package/dist/plugins/internal/codegen-helpers.mjs +2 -0
- package/dist/plugins/internal/codegen-helpers.mjs.map +1 -1
- package/dist/plugins/internal/funding-failure-error.mjs.map +1 -1
- package/dist/plugins/{postgres → internal/postgres-sidecar}/connection.mjs +1 -1
- package/dist/plugins/internal/postgres-sidecar/connection.mjs.map +1 -0
- package/dist/plugins/{postgres → internal/postgres-sidecar}/db-ensure.mjs +30 -16
- package/dist/plugins/internal/postgres-sidecar/db-ensure.mjs.map +1 -0
- package/dist/plugins/internal/postgres-sidecar/errors.mjs +21 -0
- package/dist/plugins/internal/postgres-sidecar/errors.mjs.map +1 -0
- package/dist/{substrate/runtime/scoped-multimap → plugins/internal/postgres-sidecar}/index.mjs +1 -0
- package/dist/plugins/internal/postgres-sidecar/service.mjs +121 -0
- package/dist/plugins/internal/postgres-sidecar/service.mjs.map +1 -0
- package/dist/plugins/package/build.mjs +2 -2
- package/dist/plugins/package/build.mjs.map +1 -1
- package/dist/plugins/package/codegen.d.mts +7 -14
- package/dist/plugins/package/codegen.mjs +187 -59
- package/dist/plugins/package/codegen.mjs.map +1 -1
- package/dist/plugins/package/dep-resolution.mjs +51 -3
- package/dist/plugins/package/dep-resolution.mjs.map +1 -1
- package/dist/plugins/package/errors.mjs +1 -4
- package/dist/plugins/package/errors.mjs.map +1 -1
- package/dist/plugins/package/git-source.d.mts +18 -0
- package/dist/plugins/package/git-source.mjs +119 -0
- package/dist/plugins/package/git-source.mjs.map +1 -0
- package/dist/plugins/package/index.d.mts +28 -19
- package/dist/plugins/package/index.mjs +107 -32
- package/dist/plugins/package/index.mjs.map +1 -1
- package/dist/plugins/package/mode-known.mjs +2 -2
- package/dist/plugins/package/mode-known.mjs.map +1 -1
- package/dist/plugins/package/mode-local.mjs +18 -35
- package/dist/plugins/package/mode-local.mjs.map +1 -1
- package/dist/plugins/package/publish-executor.mjs +13 -8
- package/dist/plugins/package/publish-executor.mjs.map +1 -1
- package/dist/plugins/package/publish-output.d.mts +1 -11
- package/dist/plugins/package/publish-output.mjs +1 -9
- package/dist/plugins/package/publish-output.mjs.map +1 -1
- package/dist/plugins/package/registry.d.mts +1 -1
- package/dist/plugins/package/registry.mjs +26 -14
- package/dist/plugins/package/registry.mjs.map +1 -1
- package/dist/plugins/package/service.mjs.map +1 -1
- package/dist/plugins/package/snapshot.mjs.map +1 -1
- package/dist/plugins/router-entrypoints.mjs +1 -3
- package/dist/plugins/router-entrypoints.mjs.map +1 -1
- package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs +1 -2
- package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs.map +1 -1
- package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs +1 -6
- package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs.map +1 -1
- package/dist/plugins/seal/codegen.d.mts +1 -5
- package/dist/plugins/seal/codegen.mjs +83 -12
- package/dist/plugins/seal/codegen.mjs.map +1 -1
- package/dist/plugins/seal/config-render.mjs +2 -6
- package/dist/plugins/seal/config-render.mjs.map +1 -1
- package/dist/plugins/seal/deploy.mjs +18 -29
- package/dist/plugins/seal/deploy.mjs.map +1 -1
- package/dist/plugins/seal/errors.d.mts +4 -5
- package/dist/plugins/seal/errors.mjs +1 -8
- package/dist/plugins/seal/errors.mjs.map +1 -1
- package/dist/plugins/seal/index.d.mts +7 -28
- package/dist/plugins/seal/index.mjs +69 -47
- package/dist/plugins/seal/index.mjs.map +1 -1
- package/dist/plugins/seal/key-manager.mjs.map +1 -1
- package/dist/plugins/seal/key-server.mjs +1 -6
- package/dist/plugins/seal/key-server.mjs.map +1 -1
- package/dist/plugins/seal/keygen.mjs +2 -3
- package/dist/plugins/seal/keygen.mjs.map +1 -1
- package/dist/plugins/seal/mode/fork-known.mjs.map +1 -1
- package/dist/plugins/seal/mode/live.mjs +1 -1
- package/dist/plugins/seal/mode/live.mjs.map +1 -1
- package/dist/plugins/seal/mode/local-keygen.mjs +4 -10
- package/dist/plugins/seal/mode/local-keygen.mjs.map +1 -1
- package/dist/plugins/seal/plugin-key.mjs.map +1 -1
- package/dist/plugins/seal/registry-publish.mjs.map +1 -1
- package/dist/plugins/seal/routable.mjs.map +1 -1
- package/dist/plugins/seal/service.mjs.map +1 -1
- package/dist/plugins/seal/snapshot.mjs +1 -2
- package/dist/plugins/seal/snapshot.mjs.map +1 -1
- package/dist/plugins/sui/auto-tick.mjs +5 -5
- package/dist/plugins/sui/auto-tick.mjs.map +1 -1
- package/dist/plugins/sui/chain-build-container.mjs +2 -2
- package/dist/plugins/sui/chain-build-container.mjs.map +1 -1
- package/dist/plugins/sui/chain-probe.mjs +4 -4
- package/dist/plugins/sui/chain-probe.mjs.map +1 -1
- package/dist/plugins/sui/codegen.d.mts +9 -7
- package/dist/plugins/sui/codegen.mjs +49 -46
- package/dist/plugins/sui/codegen.mjs.map +1 -1
- package/dist/plugins/sui/errors.d.mts +1 -1
- package/dist/plugins/sui/errors.mjs +1 -9
- package/dist/plugins/sui/errors.mjs.map +1 -1
- package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/index.d.mts +1 -1
- package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/index.mjs +3 -7
- package/dist/plugins/sui/exec/index.mjs.map +1 -0
- package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/sign-and-dispatch.mjs +1 -1
- package/dist/plugins/sui/exec/sign-and-dispatch.mjs.map +1 -0
- package/dist/plugins/sui/fork-faucet-strategy.mjs +2 -6
- package/dist/plugins/sui/fork-faucet-strategy.mjs.map +1 -1
- package/dist/plugins/sui/fork-orchestration.mjs +13 -23
- package/dist/plugins/sui/fork-orchestration.mjs.map +1 -1
- package/dist/plugins/sui/fork-transaction.mjs.map +1 -1
- package/dist/plugins/sui/index.d.mts +44 -93
- package/dist/plugins/sui/index.mjs +200 -68
- package/dist/plugins/sui/index.mjs.map +1 -1
- package/dist/{substrate/runtime/sui-ledger → plugins/sui/ledger}/object-ref.mjs +1 -1
- package/dist/plugins/sui/ledger/object-ref.mjs.map +1 -0
- package/dist/plugins/sui/local-faucet-strategy.mjs +1 -5
- package/dist/plugins/sui/local-faucet-strategy.mjs.map +1 -1
- package/dist/plugins/sui/log-attrs.mjs +11 -0
- package/dist/plugins/sui/log-attrs.mjs.map +1 -0
- package/dist/plugins/sui/mode/external.mjs +4 -12
- package/dist/plugins/sui/mode/external.mjs.map +1 -1
- package/dist/plugins/sui/mode/fork.mjs +19 -16
- package/dist/plugins/sui/mode/fork.mjs.map +1 -1
- package/dist/plugins/sui/mode/live.mjs +4 -17
- package/dist/plugins/sui/mode/live.mjs.map +1 -1
- package/dist/plugins/sui/mode/local.d.mts +1 -0
- package/dist/plugins/sui/mode/local.mjs +203 -61
- package/dist/plugins/sui/mode/local.mjs.map +1 -1
- package/dist/plugins/sui/mode/shared-boot.mjs +18 -23
- package/dist/plugins/sui/mode/shared-boot.mjs.map +1 -1
- package/dist/plugins/sui/mode/shared.d.mts +6 -7
- package/dist/plugins/sui/mode/shared.mjs.map +1 -1
- package/dist/plugins/sui/mode/spec.d.mts +23 -6
- package/dist/{substrate/runtime/sui-move-build → plugins/sui/move}/index.mjs +28 -30
- package/dist/plugins/sui/move/index.mjs.map +1 -0
- package/dist/plugins/sui/move-summary-runner.mjs +37 -6
- package/dist/plugins/sui/move-summary-runner.mjs.map +1 -1
- package/dist/{substrate/network.d.mts → plugins/sui/network-config.d.mts} +11 -10
- package/dist/plugins/sui/network-resolver.d.mts +6 -6
- package/dist/plugins/sui/routable.mjs.map +1 -1
- package/dist/plugins/sui/service.mjs +10 -6
- package/dist/plugins/sui/service.mjs.map +1 -1
- package/dist/plugins/sui/snapshot.mjs +10 -5
- package/dist/plugins/sui/snapshot.mjs.map +1 -1
- package/dist/plugins/wallet/codegen.d.mts +8 -6
- package/dist/plugins/wallet/codegen.mjs +4 -10
- package/dist/plugins/wallet/codegen.mjs.map +1 -1
- package/dist/plugins/wallet/errors.mjs +1 -4
- package/dist/plugins/wallet/errors.mjs.map +1 -1
- package/dist/plugins/wallet/index.d.mts +3 -6
- package/dist/plugins/wallet/index.mjs +16 -21
- package/dist/plugins/wallet/index.mjs.map +1 -1
- package/dist/plugins/wallet/origin-policy.mjs +3 -3
- package/dist/plugins/wallet/origin-policy.mjs.map +1 -1
- package/dist/plugins/wallet/pairing.mjs +6 -24
- package/dist/plugins/wallet/pairing.mjs.map +1 -1
- package/dist/plugins/wallet/protocol.mjs.map +1 -1
- package/dist/plugins/wallet/routable.mjs.map +1 -1
- package/dist/plugins/wallet/server.mjs +17 -24
- package/dist/plugins/wallet/server.mjs.map +1 -1
- package/dist/plugins/wallet/service.d.mts +2 -2
- package/dist/plugins/wallet/service.mjs +4 -15
- package/dist/plugins/wallet/service.mjs.map +1 -1
- package/dist/plugins/wallet/snapshot.mjs.map +1 -1
- package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs +1 -5
- package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs.map +1 -1
- package/dist/plugins/walrus/codegen.d.mts +2 -13
- package/dist/plugins/walrus/codegen.mjs +93 -28
- package/dist/plugins/walrus/codegen.mjs.map +1 -1
- package/dist/plugins/walrus/deploy-paths.mjs +2 -3
- package/dist/plugins/walrus/deploy-paths.mjs.map +1 -1
- package/dist/plugins/walrus/deploy.mjs +26 -19
- package/dist/plugins/walrus/deploy.mjs.map +1 -1
- package/dist/plugins/walrus/errors.mjs +1 -8
- package/dist/plugins/walrus/errors.mjs.map +1 -1
- package/dist/plugins/walrus/faucet-strategy.mjs +15 -1
- package/dist/plugins/walrus/faucet-strategy.mjs.map +1 -1
- package/dist/plugins/walrus/index.d.mts +13 -44
- package/dist/plugins/walrus/index.mjs +119 -122
- package/dist/plugins/walrus/index.mjs.map +1 -1
- package/dist/plugins/walrus/mode/known-deploy.mjs +6 -6
- package/dist/plugins/walrus/mode/known-deploy.mjs.map +1 -1
- package/dist/plugins/walrus/mode/local-cluster.d.mts +2 -2
- package/dist/plugins/walrus/mode/local-cluster.mjs +2 -10
- package/dist/plugins/walrus/mode/local-cluster.mjs.map +1 -1
- package/dist/plugins/walrus/plugin-key.mjs.map +1 -1
- package/dist/plugins/walrus/registry-publish.mjs.map +1 -1
- package/dist/plugins/walrus/routable.mjs.map +1 -1
- package/dist/plugins/walrus/service.mjs.map +1 -1
- package/dist/plugins/walrus/snapshot.mjs +3 -3
- package/dist/plugins/walrus/snapshot.mjs.map +1 -1
- package/dist/plugins/walrus/storage-nodes.mjs +53 -14
- package/dist/plugins/walrus/storage-nodes.mjs.map +1 -1
- package/dist/plugins/walrus/wal-swap.mjs +4 -8
- package/dist/plugins/walrus/wal-swap.mjs.map +1 -1
- package/dist/primitives/artifact-publisher.mjs.map +1 -1
- package/dist/primitives/cache.d.mts +1 -1
- package/dist/runtime/docker/client.mjs +47 -3
- package/dist/runtime/docker/client.mjs.map +1 -1
- package/dist/runtime/docker/container.mjs +37 -57
- package/dist/runtime/docker/container.mjs.map +1 -1
- package/dist/runtime/docker/errors.mjs.map +1 -1
- package/dist/runtime/docker/exec.mjs +2 -2
- package/dist/runtime/docker/exec.mjs.map +1 -1
- package/dist/runtime/docker/image.mjs +10 -11
- package/dist/runtime/docker/image.mjs.map +1 -1
- package/dist/runtime/docker/index.mjs +0 -1
- package/dist/runtime/docker/inspect-and-decode.mjs.map +1 -1
- package/dist/runtime/docker/inventory.mjs +9 -9
- package/dist/runtime/docker/inventory.mjs.map +1 -1
- package/dist/runtime/docker/labels.mjs +12 -1
- package/dist/runtime/docker/labels.mjs.map +1 -1
- package/dist/runtime/docker/network.mjs +6 -6
- package/dist/runtime/docker/network.mjs.map +1 -1
- package/dist/runtime/docker/render-run-args.mjs.map +1 -1
- package/dist/runtime/docker/service.mjs +31 -45
- package/dist/runtime/docker/service.mjs.map +1 -1
- package/dist/runtime/docker/sweep.mjs +14 -64
- package/dist/runtime/docker/sweep.mjs.map +1 -1
- package/dist/runtime/docker/volume.mjs +1 -1
- package/dist/runtime/docker/volume.mjs.map +1 -1
- package/dist/runtime/docker/wrap.mjs +14 -2
- package/dist/runtime/docker/wrap.mjs.map +1 -1
- package/dist/substrate/brand.d.mts +2 -5
- package/dist/substrate/brand.mjs +3 -2
- package/dist/substrate/brand.mjs.map +1 -1
- package/dist/substrate/cross-process.mjs +2 -16
- package/dist/substrate/cross-process.mjs.map +1 -1
- package/dist/substrate/event-time.mjs +0 -2
- package/dist/substrate/event-time.mjs.map +1 -1
- package/dist/substrate/events.d.mts +46 -16
- package/dist/substrate/identity.d.mts +11 -5
- package/dist/substrate/manifest.d.mts +33 -26
- package/dist/substrate/manifest.mjs +8 -3
- package/dist/substrate/manifest.mjs.map +1 -1
- package/dist/substrate/options.d.mts +33 -4
- package/dist/substrate/plugin-ctx.d.mts +70 -0
- package/dist/substrate/plugin-ctx.mjs +66 -0
- package/dist/substrate/plugin-ctx.mjs.map +1 -0
- package/dist/substrate/plugin.d.mts +46 -38
- package/dist/substrate/plugin.mjs +13 -9
- package/dist/substrate/plugin.mjs.map +1 -1
- package/dist/substrate/projection.d.mts +1 -1
- package/dist/substrate/runtime/atomic-write.mjs +3 -4
- package/dist/substrate/runtime/atomic-write.mjs.map +1 -1
- package/dist/substrate/runtime/cache/schema.mjs.map +1 -1
- package/dist/substrate/runtime/cache/service.mjs +50 -20
- package/dist/substrate/runtime/cache/service.mjs.map +1 -1
- package/dist/substrate/runtime/config-validation.mjs.map +1 -1
- package/dist/substrate/runtime/control-plane/domain.mjs +34 -12
- package/dist/substrate/runtime/control-plane/domain.mjs.map +1 -1
- package/dist/substrate/runtime/control-plane/service.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/command-channel/channel.mjs +14 -17
- package/dist/substrate/runtime/cross-process/command-channel/channel.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/command-channel/file-channel.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/command-channel/protocol.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/command-channel/runtime-control-lock.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/index.mjs +0 -2
- package/dist/substrate/runtime/cross-process/live-clock.mjs +1 -1
- package/dist/substrate/runtime/cross-process/live-clock.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/liveness.mjs +11 -18
- package/dist/substrate/runtime/cross-process/liveness.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/reclaim-stale-file.mjs +2 -2
- package/dist/substrate/runtime/cross-process/reclaim-stale-file.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/roster.mjs +17 -127
- package/dist/substrate/runtime/cross-process/roster.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/self-pid.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/stack-lock.mjs +29 -28
- package/dist/substrate/runtime/cross-process/stack-lock.mjs.map +1 -1
- package/dist/substrate/runtime/current-plugin.mjs.map +1 -1
- package/dist/substrate/runtime/errors.mjs +1 -13
- package/dist/substrate/runtime/errors.mjs.map +1 -1
- package/dist/substrate/runtime/format-unknown-error.mjs.map +1 -1
- package/dist/substrate/runtime/host-bind-mount-owner.mjs.map +1 -1
- package/dist/substrate/runtime/host-gateway.mjs.map +1 -1
- package/dist/substrate/runtime/host-tree-tar/index.mjs +15 -163
- package/dist/substrate/runtime/host-tree-tar/index.mjs.map +1 -1
- package/dist/substrate/runtime/http-probe.d.mts +1 -3
- package/dist/substrate/runtime/http-probe.mjs.map +1 -1
- package/dist/substrate/runtime/index.mjs +2 -6
- package/dist/substrate/runtime/lease-broker/service.mjs +5 -23
- package/dist/substrate/runtime/lease-broker/service.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/dep-graph.mjs +3 -3
- package/dist/substrate/runtime/lifecycle/dep-graph.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/file-watcher.mjs +54 -0
- package/dist/substrate/runtime/lifecycle/file-watcher.mjs.map +1 -0
- package/dist/substrate/runtime/lifecycle/graph-input-id.d.mts +1 -0
- package/dist/substrate/runtime/lifecycle/graph-input-id.mjs +133 -0
- package/dist/substrate/runtime/lifecycle/graph-input-id.mjs.map +1 -0
- package/dist/substrate/runtime/lifecycle/index.mjs +3 -2
- package/dist/substrate/runtime/lifecycle/plugin-registry.d.mts +1 -1
- package/dist/substrate/runtime/lifecycle/plugin-registry.mjs +22 -1
- package/dist/substrate/runtime/lifecycle/plugin-registry.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/ready-gate.mjs +2 -15
- package/dist/substrate/runtime/lifecycle/ready-gate.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/selective-restart.mjs +29 -25
- package/dist/substrate/runtime/lifecycle/selective-restart.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/signals.mjs +1 -1
- package/dist/substrate/runtime/lifecycle/signals.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/state-machine.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/watch-attribution.d.mts +1 -1
- package/dist/substrate/runtime/lifecycle/watch-attribution.mjs +76 -7
- package/dist/substrate/runtime/lifecycle/watch-attribution.mjs.map +1 -1
- package/dist/substrate/runtime/managed-container.d.mts +5 -1
- package/dist/substrate/runtime/managed-container.mjs +8 -10
- package/dist/substrate/runtime/managed-container.mjs.map +1 -1
- package/dist/substrate/runtime/manifest/manifest.mjs +8 -30
- package/dist/substrate/runtime/manifest/manifest.mjs.map +1 -1
- package/dist/substrate/runtime/mode-errors.d.mts +1 -2
- package/dist/substrate/runtime/mode-errors.mjs.map +1 -1
- package/dist/substrate/runtime/observability/cascade-formatter.mjs +1 -11
- package/dist/substrate/runtime/observability/cascade-formatter.mjs.map +1 -1
- package/dist/substrate/runtime/observability/ignore-with-log.mjs.map +1 -1
- package/dist/substrate/runtime/observability/index.d.mts +1 -1
- package/dist/substrate/runtime/observability/index.mjs +4 -6
- package/dist/substrate/runtime/observability/log-attrs.mjs +46 -0
- package/dist/substrate/runtime/observability/log-attrs.mjs.map +1 -0
- package/dist/substrate/runtime/observability/log-store.mjs.map +1 -1
- package/dist/substrate/runtime/observability/logger.mjs +3 -3
- package/dist/substrate/runtime/observability/logger.mjs.map +1 -1
- package/dist/substrate/runtime/observability/output-truncate.mjs.map +1 -1
- package/dist/substrate/runtime/observability/pretty-error.mjs.map +1 -1
- package/dist/substrate/runtime/observability/process-lines.mjs.map +1 -1
- package/dist/substrate/runtime/observability/redaction.mjs.map +1 -1
- package/dist/substrate/runtime/observability/subprocess-capture.mjs +2 -2
- package/dist/substrate/runtime/observability/subprocess-capture.mjs.map +1 -1
- package/dist/substrate/runtime/passthrough-or-wrap.mjs.map +1 -1
- package/dist/substrate/runtime/paths.mjs +27 -9
- package/dist/substrate/runtime/paths.mjs.map +1 -1
- package/dist/substrate/runtime/phase-preserving-produce.mjs.map +1 -1
- package/dist/substrate/runtime/port-broker/service.mjs +10 -27
- package/dist/substrate/runtime/port-broker/service.mjs.map +1 -1
- package/dist/substrate/runtime/post-acquire-tasks.mjs.map +1 -1
- package/dist/substrate/runtime/probes.d.mts +2 -3
- package/dist/substrate/runtime/probes.mjs.map +1 -1
- package/dist/substrate/runtime/process-supervisor.mjs.map +1 -1
- package/dist/substrate/runtime/projection/operational-endpoints.mjs.map +1 -1
- package/dist/substrate/runtime/projection/state-ref.mjs.map +1 -1
- package/dist/substrate/runtime/projection/update.mjs +87 -11
- package/dist/substrate/runtime/projection/update.mjs.map +1 -1
- package/dist/substrate/runtime/random-suffix.mjs.map +1 -1
- package/dist/substrate/runtime/reconcile/fs-plan.mjs +146 -0
- package/dist/substrate/runtime/reconcile/fs-plan.mjs.map +1 -0
- package/dist/substrate/runtime/reconcile/graph.mjs +19 -0
- package/dist/substrate/runtime/reconcile/graph.mjs.map +1 -0
- package/dist/substrate/runtime/reconcile/index.mjs +5 -0
- package/dist/substrate/runtime/reconcile/label.mjs +41 -0
- package/dist/substrate/runtime/reconcile/label.mjs.map +1 -0
- package/dist/substrate/runtime/reconcile/spec.mjs +15 -0
- package/dist/substrate/runtime/reconcile/spec.mjs.map +1 -0
- package/dist/substrate/runtime/retry-policy.d.mts +2 -3
- package/dist/substrate/runtime/retry-policy.mjs.map +1 -1
- package/dist/substrate/runtime/routed-url.mjs.map +1 -1
- package/dist/substrate/runtime/runtime-decode.mjs.map +1 -1
- package/dist/substrate/runtime/scoped-http-server.mjs.map +1 -1
- package/dist/substrate/runtime/stage-and-swap/index.mjs +49 -12
- package/dist/substrate/runtime/stage-and-swap/index.mjs.map +1 -1
- package/dist/substrate/runtime/strategy-registry/chain-keyed-strategy-for.mjs.map +1 -1
- package/dist/substrate/runtime/strategy-registry/chain-probe-for.mjs.map +1 -1
- package/dist/substrate/runtime/strategy-registry/service.mjs +29 -17
- package/dist/substrate/runtime/strategy-registry/service.mjs.map +1 -1
- package/dist/substrate/runtime/subnet-broker.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/acquire-node.mjs +188 -56
- package/dist/substrate/runtime/supervisor/acquire-node.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/background-tasks.mjs +79 -65
- package/dist/substrate/runtime/supervisor/background-tasks.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/command-loop.mjs +82 -23
- package/dist/substrate/runtime/supervisor/command-loop.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/contribution-dispatcher.d.mts +1 -0
- package/dist/substrate/runtime/supervisor/contribution-dispatcher.mjs +16 -0
- package/dist/substrate/runtime/supervisor/contribution-dispatcher.mjs.map +1 -0
- package/dist/substrate/runtime/supervisor/errors.mjs +11 -2
- package/dist/substrate/runtime/supervisor/errors.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/index.mjs +2 -0
- package/dist/substrate/runtime/supervisor/shutdown.mjs +6 -6
- package/dist/substrate/runtime/supervisor/shutdown.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/start-supervisor.mjs +61 -75
- package/dist/substrate/runtime/supervisor/start-supervisor.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/state.d.mts +1 -1
- package/dist/substrate/runtime/supervisor/state.mjs +1 -1
- package/dist/substrate/runtime/supervisor/state.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/teardown.mjs +10 -9
- package/dist/substrate/runtime/supervisor/teardown.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/wiring.mjs +6 -20
- package/dist/substrate/runtime/supervisor/wiring.mjs.map +1 -1
- package/dist/substrate/runtime/tar/reader.mjs +216 -0
- package/dist/substrate/runtime/tar/reader.mjs.map +1 -0
- package/dist/substrate/runtime/typed-env.mjs.map +1 -1
- package/dist/substrate/versioned-doc-schema.mjs.map +1 -1
- package/dist/substrate/versioned-doc-sync.mjs +5 -5
- package/dist/substrate/versioned-doc-sync.mjs.map +1 -1
- package/dist/surfaces/cli/command-tree.mjs +49 -7
- package/dist/surfaces/cli/command-tree.mjs.map +1 -1
- package/dist/surfaces/cli/commands/config.mjs +1 -1
- package/dist/surfaces/cli/commands/config.mjs.map +1 -1
- package/dist/surfaces/cli/commands/confirm-node.mjs.map +1 -1
- package/dist/surfaces/cli/commands/confirm.mjs.map +1 -1
- package/dist/surfaces/cli/commands/doctor.mjs +1 -1
- package/dist/surfaces/cli/commands/doctor.mjs.map +1 -1
- package/dist/surfaces/cli/commands/prune-picker-entry.mjs.map +1 -1
- package/dist/surfaces/cli/commands/prune-picker.mjs.map +1 -1
- package/dist/surfaces/cli/commands/prune.mjs +1 -1
- package/dist/surfaces/cli/commands/prune.mjs.map +1 -1
- package/dist/surfaces/cli/commands/snapshot.mjs +1 -1
- package/dist/surfaces/cli/commands/snapshot.mjs.map +1 -1
- package/dist/surfaces/cli/commands/status.mjs +1 -1
- package/dist/surfaces/cli/commands/status.mjs.map +1 -1
- package/dist/surfaces/cli/commands/supervisor-presence.mjs.map +1 -1
- package/dist/surfaces/cli/commands/wipe.mjs +3 -4
- package/dist/surfaces/cli/commands/wipe.mjs.map +1 -1
- package/dist/surfaces/cli/envelope.mjs.map +1 -1
- package/dist/surfaces/cli/errors.mjs.map +1 -1
- package/dist/surfaces/cli/flags.mjs.map +1 -1
- package/dist/surfaces/cli/index.mjs +45 -14
- package/dist/surfaces/cli/index.mjs.map +1 -1
- package/dist/surfaces/cli/output.mjs.map +1 -1
- package/dist/surfaces/cli/sysexits.mjs.map +1 -1
- package/dist/surfaces/tui/app.mjs +0 -21
- package/dist/surfaces/tui/app.mjs.map +1 -1
- package/dist/surfaces/tui/dashboard.mjs +0 -48
- package/dist/surfaces/tui/dashboard.mjs.map +1 -1
- package/dist/surfaces/tui/display-derivation.mjs +80 -16
- package/dist/surfaces/tui/display-derivation.mjs.map +1 -1
- package/dist/surfaces/tui/errors.mjs.map +1 -1
- package/dist/surfaces/tui/event-log.mjs +0 -9
- package/dist/surfaces/tui/event-log.mjs.map +1 -1
- package/dist/surfaces/tui/heartbeat.mjs.map +1 -1
- package/dist/surfaces/tui/index.mjs +2 -2
- package/dist/surfaces/tui/index.mjs.map +1 -1
- package/dist/surfaces/tui/input.mjs.map +1 -1
- package/dist/surfaces/tui/mode-detect.mjs.map +1 -1
- package/dist/surfaces/tui/mount-ink.mjs.map +1 -1
- package/dist/surfaces/tui/plain-renderer.mjs +26 -19
- package/dist/surfaces/tui/plain-renderer.mjs.map +1 -1
- package/dist/surfaces/tui/resource-table.mjs +8 -10
- package/dist/surfaces/tui/resource-table.mjs.map +1 -1
- package/images/postgres/Dockerfile +0 -1
- package/images/sui/Dockerfile +27 -54
- package/images/sui/entrypoint.sh +17 -179
- package/package.json +23 -15
- package/dashboard-ui/assets/index-Bmi1UtAg.js +0 -1356
- package/dashboard-ui/assets/index-D5EShVt4.js +0 -3
- package/dashboard-ui/assets/index-Deml9drg.css +0 -1
- package/dist/api/plugin-errors.d.mts +0 -7
- package/dist/api/plugin-errors.mjs +0 -10
- package/dist/api/plugin-errors.mjs.map +0 -1
- package/dist/cli/wirings/build-verb-layers.mjs +0 -42
- package/dist/cli/wirings/build-verb-layers.mjs.map +0 -1
- package/dist/contracts/capability-decl.d.mts +0 -40
- package/dist/orchestrators/built-in-plugin-layers.mjs +0 -54
- package/dist/orchestrators/built-in-plugin-layers.mjs.map +0 -1
- package/dist/orchestrators/run.mjs +0 -91
- package/dist/orchestrators/run.mjs.map +0 -1
- package/dist/orchestrators/runtime-composition.d.mts +0 -10
- package/dist/orchestrators/runtime-composition.mjs +0 -252
- package/dist/orchestrators/runtime-composition.mjs.map +0 -1
- package/dist/orchestrators/snapshot/capture-command.d.mts +0 -1
- package/dist/orchestrators/snapshot/capture-command.mjs +0 -25
- package/dist/orchestrators/snapshot/capture-command.mjs.map +0 -1
- package/dist/orchestrators/snapshot/pending-marker.mjs +0 -99
- package/dist/orchestrators/snapshot/pending-marker.mjs.map +0 -1
- package/dist/orchestrators/snapshot/recover-pending.mjs +0 -223
- package/dist/orchestrators/snapshot/recover-pending.mjs.map +0 -1
- package/dist/orchestrators/snapshot/state-document.d.mts +0 -1
- package/dist/orchestrators/snapshot/state-document.mjs +0 -58
- package/dist/orchestrators/snapshot/state-document.mjs.map +0 -1
- package/dist/plugins/account/spans.mjs +0 -16
- package/dist/plugins/account/spans.mjs.map +0 -1
- package/dist/plugins/account/variants/env.mjs +0 -24
- package/dist/plugins/account/variants/env.mjs.map +0 -1
- package/dist/plugins/account/variants/inline.mjs +0 -13
- package/dist/plugins/account/variants/inline.mjs.map +0 -1
- package/dist/plugins/account/variants/keystore.mjs +0 -91
- package/dist/plugins/account/variants/keystore.mjs.map +0 -1
- package/dist/plugins/action/spans.mjs +0 -11
- package/dist/plugins/action/spans.mjs.map +0 -1
- package/dist/plugins/coin/spans.mjs +0 -20
- package/dist/plugins/coin/spans.mjs.map +0 -1
- package/dist/plugins/deepbook/spans.mjs +0 -18
- package/dist/plugins/deepbook/spans.mjs.map +0 -1
- package/dist/plugins/faucet/spans.mjs +0 -12
- package/dist/plugins/faucet/spans.mjs.map +0 -1
- package/dist/plugins/package/spans.mjs +0 -14
- package/dist/plugins/package/spans.mjs.map +0 -1
- package/dist/plugins/postgres/codegen.mjs +0 -42
- package/dist/plugins/postgres/codegen.mjs.map +0 -1
- package/dist/plugins/postgres/connection.d.mts +0 -33
- package/dist/plugins/postgres/connection.mjs.map +0 -1
- package/dist/plugins/postgres/db-ensure.mjs.map +0 -1
- package/dist/plugins/postgres/errors.d.mts +0 -60
- package/dist/plugins/postgres/errors.mjs +0 -29
- package/dist/plugins/postgres/errors.mjs.map +0 -1
- package/dist/plugins/postgres/index.d.mts +0 -37
- package/dist/plugins/postgres/index.mjs +0 -68
- package/dist/plugins/postgres/index.mjs.map +0 -1
- package/dist/plugins/postgres/routable.mjs +0 -33
- package/dist/plugins/postgres/routable.mjs.map +0 -1
- package/dist/plugins/postgres/service.d.mts +0 -50
- package/dist/plugins/postgres/service.mjs +0 -179
- package/dist/plugins/postgres/service.mjs.map +0 -1
- package/dist/plugins/postgres/snapshot.mjs +0 -32
- package/dist/plugins/postgres/snapshot.mjs.map +0 -1
- package/dist/plugins/postgres/spans.mjs +0 -11
- package/dist/plugins/postgres/spans.mjs.map +0 -1
- package/dist/plugins/seal/spans.mjs +0 -18
- package/dist/plugins/seal/spans.mjs.map +0 -1
- package/dist/plugins/sui/spans.mjs +0 -17
- package/dist/plugins/sui/spans.mjs.map +0 -1
- package/dist/plugins/wallet/spans.mjs +0 -22
- package/dist/plugins/wallet/spans.mjs.map +0 -1
- package/dist/plugins/walrus/registry-publish.d.mts +0 -24
- package/dist/plugins/walrus/spans.mjs +0 -18
- package/dist/plugins/walrus/spans.mjs.map +0 -1
- package/dist/runtime/docker/logs.d.mts +0 -1
- package/dist/runtime/docker/logs.mjs +0 -34
- package/dist/runtime/docker/logs.mjs.map +0 -1
- package/dist/substrate/runtime/artifact-publisher/index.mjs +0 -86
- package/dist/substrate/runtime/artifact-publisher/index.mjs.map +0 -1
- package/dist/substrate/runtime/capability-sinks/index.d.mts +0 -1
- package/dist/substrate/runtime/capability-sinks/index.mjs +0 -3
- package/dist/substrate/runtime/capability-sinks/layer.d.mts +0 -1
- package/dist/substrate/runtime/capability-sinks/layer.mjs +0 -31
- package/dist/substrate/runtime/capability-sinks/layer.mjs.map +0 -1
- package/dist/substrate/runtime/capability-sinks/service.d.mts +0 -95
- package/dist/substrate/runtime/capability-sinks/service.mjs +0 -69
- package/dist/substrate/runtime/capability-sinks/service.mjs.map +0 -1
- package/dist/substrate/runtime/cross-process/lock.d.mts +0 -1
- package/dist/substrate/runtime/cross-process/lock.mjs +0 -23
- package/dist/substrate/runtime/cross-process/lock.mjs.map +0 -1
- package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs +0 -113
- package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs.map +0 -1
- package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs +0 -31
- package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs.map +0 -1
- package/dist/substrate/runtime/observability/formatter-registry.d.mts +0 -1
- package/dist/substrate/runtime/observability/formatter-registry.mjs +0 -48
- package/dist/substrate/runtime/observability/formatter-registry.mjs.map +0 -1
- package/dist/substrate/runtime/observability/span-store.d.mts +0 -1
- package/dist/substrate/runtime/observability/span-store.mjs +0 -110
- package/dist/substrate/runtime/observability/span-store.mjs.map +0 -1
- package/dist/substrate/runtime/observability/spans.d.mts +0 -1
- package/dist/substrate/runtime/observability/spans.mjs +0 -87
- package/dist/substrate/runtime/observability/spans.mjs.map +0 -1
- package/dist/substrate/runtime/projection/index.mjs +0 -4
- package/dist/substrate/runtime/projection/persisted.mjs +0 -213
- package/dist/substrate/runtime/projection/persisted.mjs.map +0 -1
- package/dist/substrate/runtime/scoped-multimap/service.mjs +0 -52
- package/dist/substrate/runtime/scoped-multimap/service.mjs.map +0 -1
- package/dist/substrate/runtime/scoped-ref-map/index.mjs +0 -2
- package/dist/substrate/runtime/scoped-ref-map/service.mjs +0 -83
- package/dist/substrate/runtime/scoped-ref-map/service.mjs.map +0 -1
- package/dist/substrate/runtime/state-store/index.mjs +0 -3
- package/dist/substrate/runtime/state-store/schema.d.mts +0 -1
- package/dist/substrate/runtime/state-store/schema.mjs +0 -41
- package/dist/substrate/runtime/state-store/schema.mjs.map +0 -1
- package/dist/substrate/runtime/state-store/service.d.mts +0 -1
- package/dist/substrate/runtime/state-store/service.mjs +0 -145
- package/dist/substrate/runtime/state-store/service.mjs.map +0 -1
- package/dist/substrate/runtime/sui-execute/index.mjs.map +0 -1
- package/dist/substrate/runtime/sui-execute/sign-and-dispatch.mjs.map +0 -1
- package/dist/substrate/runtime/sui-ledger/object-ref.mjs.map +0 -1
- package/dist/substrate/runtime/sui-move-build/index.mjs.map +0 -1
- package/dist/substrate/runtime/supervisor/dispatch-contributions.mjs +0 -151
- package/dist/substrate/runtime/supervisor/dispatch-contributions.mjs.map +0 -1
- package/dist/substrate/state-store.d.mts +0 -1
- /package/dist/orchestrators/{snapshot/pending-marker.d.mts → codegen/id-config.d.mts} +0 -0
- /package/dist/orchestrators/snapshot/{recover-pending.d.mts → interrupted-restore.d.mts} +0 -0
- /package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/sign-and-dispatch.d.mts +0 -0
- /package/dist/plugins/{postgres/snapshot.d.mts → sui/ledger/object-ref.d.mts} +0 -0
- /package/dist/{substrate/runtime/sui-move-build → plugins/sui/move}/index.d.mts +0 -0
- /package/dist/substrate/runtime/{cross-process/snapshot-reservation.d.mts → lifecycle/file-watcher.d.mts} +0 -0
- /package/dist/substrate/runtime/{state-store/index.d.mts → reconcile/graph.d.mts} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { builder } from "./builder.mjs";
|
|
2
2
|
import { StackMode } from "./enums.mjs";
|
|
3
|
-
import { Account, CoinCap, DeepbookInfo, FundableCoin, LogFilterInput, LogRecordType, Package,
|
|
3
|
+
import { Account, CoinCap, DeepbookInfo, FundableCoin, LogFilterInput, LogRecordType, Package, SealInfo, Service, SnapshotEntry, StackState } from "./types.mjs";
|
|
4
4
|
import { Effect, Fiber, Queue, Stream, SubscriptionRef } from "effect";
|
|
5
5
|
import { resolveArrayConnection } from "@pothos/plugin-relay";
|
|
6
6
|
//#region src/plugins/dashboard/schema/root.ts
|
|
@@ -48,11 +48,7 @@ const FundResult = builder.objectRef("FundResult").implement({
|
|
|
48
48
|
description: "The outcome of a faucet fund request (real result — ok reflects whether the in-process funding strategy completed).",
|
|
49
49
|
fields: (t) => ({
|
|
50
50
|
ok: t.exposeBoolean("ok"),
|
|
51
|
-
detail: t.exposeString("detail")
|
|
52
|
-
digest: t.string({
|
|
53
|
-
nullable: true,
|
|
54
|
-
resolve: (r) => r.digest
|
|
55
|
-
})
|
|
51
|
+
detail: t.exposeString("detail")
|
|
56
52
|
})
|
|
57
53
|
});
|
|
58
54
|
builder.queryType({ fields: (t) => ({
|
|
@@ -103,8 +99,8 @@ builder.queryType({ fields: (t) => ({
|
|
|
103
99
|
type: [SnapshotEntry],
|
|
104
100
|
resolve: (_parent, _args, ctx) => Effect.runPromise(ctx.domain.snapshots)
|
|
105
101
|
}),
|
|
106
|
-
/** DeepBook deployments: registry/admin/pool ids +
|
|
107
|
-
* state. (Pool prices / order books are chain-direct.) */
|
|
102
|
+
/** DeepBook deployments: registry/admin/pool ids + seed-liquidity
|
|
103
|
+
* state + Pyth feeds. (Pool prices / order books are chain-direct.) */
|
|
108
104
|
deepbookInfo: t.field({
|
|
109
105
|
type: [DeepbookInfo],
|
|
110
106
|
resolve: (_parent, _args, ctx) => Effect.runPromise(ctx.pluginDomain.deepbook)
|
|
@@ -128,12 +124,6 @@ builder.queryType({ fields: (t) => ({
|
|
|
128
124
|
type: [FundableCoin],
|
|
129
125
|
resolve: (_parent, _args, ctx) => Effect.runPromise(ctx.pluginDomain.fundableCoins)
|
|
130
126
|
}),
|
|
131
|
-
/** Postgres wire-protocol stats per instance (db size, connections,
|
|
132
|
-
* per-table rows/size). The browser cannot speak the PG protocol. */
|
|
133
|
-
postgresStats: t.field({
|
|
134
|
-
type: [PostgresStats],
|
|
135
|
-
resolve: (_parent, _args, ctx) => Effect.runPromise(ctx.pluginDomain.postgresStats)
|
|
136
|
-
}),
|
|
137
127
|
/** Cross-service queryable log history. Filterable server-side by
|
|
138
128
|
* service / level / substring / time window; returns most-recent
|
|
139
129
|
* first, capped by `filter.limit` (default = ring capacity). */
|
|
@@ -149,21 +139,6 @@ builder.queryType({ fields: (t) => ({
|
|
|
149
139
|
logServices: t.field({
|
|
150
140
|
type: ["String"],
|
|
151
141
|
resolve: (_parent, _args, ctx) => Effect.runPromise(ctx.domain.logServices)
|
|
152
|
-
}),
|
|
153
|
-
/** Completed-span ring. Filterable server-side by service / status /
|
|
154
|
-
* substring / time window; most-recent first. */
|
|
155
|
-
spans: t.field({
|
|
156
|
-
type: [SpanRecordType],
|
|
157
|
-
args: { filter: t.arg({
|
|
158
|
-
type: SpanFilterInput,
|
|
159
|
-
required: false
|
|
160
|
-
}) },
|
|
161
|
-
resolve: (_parent, args, ctx) => Effect.runPromise(ctx.domain.spans(toSpanFilter(args.filter)))
|
|
162
|
-
}),
|
|
163
|
-
/** Distinct services currently in the span ring (filter dropdown). */
|
|
164
|
-
spanServices: t.field({
|
|
165
|
-
type: ["String"],
|
|
166
|
-
resolve: (_parent, _args, ctx) => Effect.runPromise(ctx.domain.spanServices)
|
|
167
142
|
})
|
|
168
143
|
}) });
|
|
169
144
|
/** Closed log-level set used to narrow the String[] filter input back onto
|
|
@@ -196,19 +171,6 @@ const toLogFilter = (input) => {
|
|
|
196
171
|
...input.limit != null ? { limit: input.limit } : {}
|
|
197
172
|
};
|
|
198
173
|
};
|
|
199
|
-
/** Map the nullable GraphQL `SpanFilter` input onto the store's `SpanFilter`. */
|
|
200
|
-
const toSpanFilter = (input) => {
|
|
201
|
-
if (input == null) return void 0;
|
|
202
|
-
const services = nonEmpty(input.services);
|
|
203
|
-
const statuses = nonEmpty(input.statuses)?.filter((s) => s === "ok" || s === "error");
|
|
204
|
-
return {
|
|
205
|
-
...services ? { services } : {},
|
|
206
|
-
...statuses && statuses.length > 0 ? { statuses } : {},
|
|
207
|
-
...input.search != null ? { search: input.search } : {},
|
|
208
|
-
...input.sinceMillis != null ? { sinceMillis: input.sinceMillis } : {},
|
|
209
|
-
...input.limit != null ? { limit: input.limit } : {}
|
|
210
|
-
};
|
|
211
|
-
};
|
|
212
174
|
builder.mutationType({ fields: (t) => ({
|
|
213
175
|
/** Restart the whole stack. */
|
|
214
176
|
restart: t.field({
|
|
@@ -271,13 +233,30 @@ builder.mutationType({ fields: (t) => ({
|
|
|
271
233
|
type: CommandResult,
|
|
272
234
|
resolve: (_parent, _args, ctx) => run(ctx, "shutdown.requested", { tag: "shutdown.requested" })
|
|
273
235
|
}),
|
|
274
|
-
/** Restore a snapshot by id. Routes through the
|
|
275
|
-
* `
|
|
276
|
-
* `
|
|
236
|
+
/** Restore a snapshot by id. Routes through the supervisor
|
|
237
|
+
* command-loop via `submitCommand` (NOT the in-process
|
|
238
|
+
* `domain.restoreSnapshot`): restore is destructive — it removes the
|
|
239
|
+
* live managed containers and relies on a follow-on re-acquire to
|
|
240
|
+
* rebuild them. Running it in-process against a live supervisor would
|
|
241
|
+
* race the single command-queue consumer and leave services dead until
|
|
242
|
+
* a manual Restart. The command-loop's `snapshot.restore` case applies
|
|
243
|
+
* the restored tree, publishes `snapshot.restored`, THEN drains +
|
|
244
|
+
* re-acquires every service (the manual-restart sequence) — and the
|
|
245
|
+
* submitted-command completion deferred lets this mutation await the
|
|
246
|
+
* real ok/detail outcome the void `publishCommand` could not carry. */
|
|
277
247
|
restoreSnapshot: t.fieldWithInput({
|
|
278
248
|
type: SnapshotActionResult,
|
|
279
249
|
input: { id: t.input.string({ required: true }) },
|
|
280
|
-
resolve: (_parent, args, ctx) => Effect.runPromise(ctx.
|
|
250
|
+
resolve: (_parent, args, ctx) => Effect.runPromise(ctx.submitCommand({
|
|
251
|
+
tag: "snapshot.restore",
|
|
252
|
+
snapshotId: args.input.id
|
|
253
|
+
}).pipe(Effect.as({
|
|
254
|
+
ok: true,
|
|
255
|
+
detail: null
|
|
256
|
+
}), Effect.catchCause((cause) => Effect.succeed({
|
|
257
|
+
ok: false,
|
|
258
|
+
detail: String(cause)
|
|
259
|
+
}))))
|
|
281
260
|
}),
|
|
282
261
|
/** Delete a snapshot by id (via the control-plane `domain`). */
|
|
283
262
|
deleteSnapshot: t.fieldWithInput({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root.mjs","names":[],"sources":["../../../../src/plugins/dashboard/schema/root.ts"],"sourcesContent":["// Dashboard root types — Query / Mutation / Subscription.\n//\n// Queries expose the live projection (`state`), relay node/connection\n// access over the snapshot arrays, and a liveness `ping`. Mutations map to\n// `EngineCommand`s. The single subscription streams the projection over the\n// SubscriptionRef→async-generator bridge. Dependencies (the `state` ref +\n// `publishCommand`) come from the GraphQL context (`ctx`), not closure — the\n// dashboard is a pure control plane (no chain reads).\n\nimport { Effect, Fiber, Queue, Stream, SubscriptionRef } from 'effect';\nimport { resolveArrayConnection } from '@pothos/plugin-relay';\nimport { builder } from './builder.ts';\nimport {\n\tAccount,\n\tCoinCap,\n\tDeepbookInfo,\n\tFundableCoin,\n\tLogFilterInput,\n\tLogRecordType,\n\tPackage,\n\tPostgresStats,\n\tSealInfo,\n\tService,\n\tSnapshotEntry,\n\tSpanFilterInput,\n\tSpanRecordType,\n\tStackState,\n\ttype ServiceSource,\n} from './types.ts';\nimport { StackMode } from './enums.ts';\nimport type { DashboardContext } from './builder.ts';\nimport type { PluginKey } from '../../../substrate/brand.ts';\nimport type { EngineCommand } from '../../../substrate/events.ts';\nimport type { SubscribableState } from '../../../substrate/projection.ts';\nimport type {\n\tLogFilter,\n\tLogLevel,\n\tSpanFilter,\n} from '../../../substrate/runtime/observability/index.ts';\n\nconst readSnapshot = (\n\tstate: SubscriptionRef.SubscriptionRef<SubscribableState>,\n): Promise<SubscribableState> => Effect.runPromise(SubscriptionRef.get(state));\n\n// --- CommandResult ------------------------------------------------------\ninterface CommandResultShape {\n\treadonly ok: boolean;\n\treadonly command: string;\n\treadonly message?: string | null;\n}\n\nconst CommandResult = builder.objectRef<CommandResultShape>('CommandResult').implement({\n\tdescription: 'The outcome of dispatching an engine command.',\n\tfields: (t) => ({\n\t\tok: t.exposeBoolean('ok'),\n\t\tcommand: t.exposeString('command'),\n\t\tmessage: t.string({ nullable: true, resolve: (r) => r.message ?? null }),\n\t}),\n});\n\nconst run = async (\n\tctx: DashboardContext,\n\ttag: string,\n\tcommand: EngineCommand,\n): Promise<CommandResultShape> => {\n\tawait Effect.runPromise(ctx.publishCommand(command));\n\treturn { ok: true, command: tag };\n};\n\n// --- SnapshotActionResult -----------------------------------------------\n//\n// Restore/delete go through the control-plane `domain` (NOT the void\n// `publishCommand`), so the dashboard gets a real ok/detail outcome the\n// fire-and-forget command channel cannot carry.\ninterface SnapshotActionResultShape {\n\treadonly ok: boolean;\n\treadonly detail: string | null;\n}\n\nconst SnapshotActionResult = builder\n\t.objectRef<SnapshotActionResultShape>('SnapshotActionResult')\n\t.implement({\n\t\tdescription: 'The outcome of a snapshot restore/delete (real result, not fire-and-forget).',\n\t\tfields: (t) => ({\n\t\t\tok: t.exposeBoolean('ok'),\n\t\t\tdetail: t.string({ nullable: true, resolve: (r) => r.detail }),\n\t\t}),\n\t});\n\n// --- MintResult ---------------------------------------------------------\n//\n// The coin Mint action goes through the control-plane `domain` (NOT the\n// void `publishCommand`): the supervisor holds the treasury-cap-owning\n// signer in-process and returns a real ok/detail outcome plus the on-chain\n// tx `digest` on success.\ninterface MintResultShape {\n\treadonly ok: boolean;\n\treadonly detail: string;\n\treadonly digest: string | null;\n}\n\nconst MintResult = builder.objectRef<MintResultShape>('MintResult').implement({\n\tdescription: 'The outcome of a coin mint (real result, with the on-chain tx digest on success).',\n\tfields: (t) => ({\n\t\tok: t.exposeBoolean('ok'),\n\t\tdetail: t.exposeString('detail'),\n\t\tdigest: t.string({ nullable: true, resolve: (r) => r.digest }),\n\t}),\n});\n\n// --- FundResult ---------------------------------------------------------\n//\n// The Faucet `fund` action routes through the control-plane `pluginDomain`,\n// reusing devstack's IN-PROCESS funding strategies (the same registry the\n// boot-time account funding pass uses): SUI via the chain faucet strategy\n// (fixed-amount), WAL/DEEP via the coin-specific account-signed swap. The\n// strategies return `void` (no digest), so `digest` is always null here —\n// kept for shape-parity with `MintResult`. `ok` reflects whether the\n// strategy's `request(...)` actually completed.\ninterface FundResultShape {\n\treadonly ok: boolean;\n\treadonly detail: string;\n\treadonly digest: string | null;\n}\n\nconst FundResult = builder.objectRef<FundResultShape>('FundResult').implement({\n\tdescription:\n\t\t'The outcome of a faucet fund request (real result — ok reflects whether the ' +\n\t\t'in-process funding strategy completed).',\n\tfields: (t) => ({\n\t\tok: t.exposeBoolean('ok'),\n\t\tdetail: t.exposeString('detail'),\n\t\tdigest: t.string({ nullable: true, resolve: (r) => r.digest }),\n\t}),\n});\n\n// --- Query --------------------------------------------------------------\nbuilder.queryType({\n\tfields: (t) => ({\n\t\t/** Liveness probe. */\n\t\tping: t.string({ resolve: () => 'pong' }),\n\t\t/** Full live projection snapshot (status, services, endpoints, …). */\n\t\tstate: t.field({\n\t\t\ttype: StackState,\n\t\t\tresolve: (_parent, _args, ctx) => readSnapshot(ctx.state),\n\t\t}),\n\t\t/** Relay connection over the current snapshot's service rows. */\n\t\tservices: t.connection({\n\t\t\ttype: Service,\n\t\t\tresolve: async (_parent, args, ctx) => {\n\t\t\t\tconst snapshot = await readSnapshot(ctx.state);\n\t\t\t\tconst sources: ServiceSource[] = snapshot.rows.map((row) => ({ row, snapshot }));\n\t\t\t\treturn resolveArrayConnection({ args }, sources);\n\t\t\t},\n\t\t}),\n\t\t/** Relay connection over the current snapshot's accounts. */\n\t\taccounts: t.connection({\n\t\t\ttype: Account,\n\t\t\tresolve: async (_parent, args, ctx) => {\n\t\t\t\tconst snapshot = await readSnapshot(ctx.state);\n\t\t\t\treturn resolveArrayConnection({ args }, [...snapshot.accounts]);\n\t\t\t},\n\t\t}),\n\t\t/** Relay connection over the current snapshot's packages. */\n\t\tpackages: t.connection({\n\t\t\ttype: Package,\n\t\t\tresolve: async (_parent, args, ctx) => {\n\t\t\t\tconst snapshot = await readSnapshot(ctx.state);\n\t\t\t\treturn resolveArrayConnection({ args }, [...snapshot.packages]);\n\t\t\t},\n\t\t}),\n\n\t\t// --- Plugin-domain queries (data the browser cannot reach) --------\n\t\t/** Fork-vs-local stack mode (advance-clock gating). `null` when no\n\t\t * sui plugin is present. */\n\t\tmode: t.field({\n\t\t\ttype: StackMode,\n\t\t\tnullable: true,\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.pluginDomain.mode),\n\t\t}),\n\t\t/** Snapshot catalog: id/label/created/participants/containers. */\n\t\tsnapshots: t.field({\n\t\t\ttype: [SnapshotEntry],\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.domain.snapshots),\n\t\t}),\n\t\t/** DeepBook deployments: registry/admin/pool ids + market-maker\n\t\t * state. (Pool prices / order books are chain-direct.) */\n\t\tdeepbookInfo: t.field({\n\t\t\ttype: [DeepbookInfo],\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.pluginDomain.deepbook),\n\t\t}),\n\t\t/** Seal key-server deployments: objectId/threshold/mode/keyServers. */\n\t\tsealInfo: t.field({\n\t\t\ttype: [SealInfo],\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.pluginDomain.seal),\n\t\t}),\n\t\t/** Coin treasury caps (drives Mint) + addressing facts. (Supply /\n\t\t * metadata are chain-direct.) */\n\t\tcoinCaps: t.field({\n\t\t\ttype: [CoinCap],\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.pluginDomain.coinCaps),\n\t\t}),\n\t\t/** Coins the faucet can actually fund right now (drives the Faucet\n\t\t * panel's coin pills + amount gating). SUI is always present when a\n\t\t * faucet strategy is registered; WAL/DEEP appear only when their\n\t\t * plugin contributed a funding strategy. */\n\t\tfundableCoins: t.field({\n\t\t\ttype: [FundableCoin],\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.pluginDomain.fundableCoins),\n\t\t}),\n\t\t/** Postgres wire-protocol stats per instance (db size, connections,\n\t\t * per-table rows/size). The browser cannot speak the PG protocol. */\n\t\tpostgresStats: t.field({\n\t\t\ttype: [PostgresStats],\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.pluginDomain.postgresStats),\n\t\t}),\n\n\t\t// --- Observability (Console \"Logs\" + \"Traces\" tabs) ---------------\n\t\t/** Cross-service queryable log history. Filterable server-side by\n\t\t * service / level / substring / time window; returns most-recent\n\t\t * first, capped by `filter.limit` (default = ring capacity). */\n\t\tlogs: t.field({\n\t\t\ttype: [LogRecordType],\n\t\t\targs: { filter: t.arg({ type: LogFilterInput, required: false }) },\n\t\t\tresolve: (_parent, args, ctx) => Effect.runPromise(ctx.domain.logs(toLogFilter(args.filter))),\n\t\t}),\n\t\t/** Distinct services currently in the log ring (filter dropdown). */\n\t\tlogServices: t.field({\n\t\t\ttype: ['String'],\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.domain.logServices),\n\t\t}),\n\t\t/** Completed-span ring. Filterable server-side by service / status /\n\t\t * substring / time window; most-recent first. */\n\t\tspans: t.field({\n\t\t\ttype: [SpanRecordType],\n\t\t\targs: { filter: t.arg({ type: SpanFilterInput, required: false }) },\n\t\t\tresolve: (_parent, args, ctx) =>\n\t\t\t\tEffect.runPromise(ctx.domain.spans(toSpanFilter(args.filter))),\n\t\t}),\n\t\t/** Distinct services currently in the span ring (filter dropdown). */\n\t\tspanServices: t.field({\n\t\t\ttype: ['String'],\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.domain.spanServices),\n\t\t}),\n\t}),\n});\n\n/** Closed log-level set used to narrow the String[] filter input back onto\n * the store's `LogLevel` union. Unknown strings are dropped (the store would\n * just never match them anyway). */\nconst LOG_LEVELS: ReadonlySet<LogLevel> = new Set<LogLevel>([\n\t'trace',\n\t'debug',\n\t'info',\n\t'warn',\n\t'error',\n\t'fatal',\n]);\n\nconst nonEmpty = (xs: readonly (string | null)[] | null | undefined): string[] | undefined => {\n\tif (xs == null) return undefined;\n\tconst out = xs.filter((x): x is string => x != null && x.length > 0);\n\treturn out.length > 0 ? out : undefined;\n};\n\n/** Map the nullable GraphQL `LogFilter` input onto the store's `LogFilter`,\n * dropping nulls and unknown levels. */\nconst toLogFilter = (\n\tinput:\n\t\t| {\n\t\t\t\tservices?: readonly (string | null)[] | null;\n\t\t\t\tlevels?: readonly (string | null)[] | null;\n\t\t\t\tsearch?: string | null;\n\t\t\t\tsinceMillis?: number | null;\n\t\t\t\tlimit?: number | null;\n\t\t }\n\t\t| null\n\t\t| undefined,\n): LogFilter | undefined => {\n\tif (input == null) return undefined;\n\tconst services = nonEmpty(input.services);\n\tconst levelStrings = nonEmpty(input.levels);\n\tconst levels = levelStrings?.filter((l): l is LogLevel => LOG_LEVELS.has(l as LogLevel));\n\treturn {\n\t\t...(services ? { services } : {}),\n\t\t...(levels && levels.length > 0 ? { levels } : {}),\n\t\t...(input.search != null ? { search: input.search } : {}),\n\t\t...(input.sinceMillis != null ? { sinceMillis: input.sinceMillis } : {}),\n\t\t...(input.limit != null ? { limit: input.limit } : {}),\n\t};\n};\n\n/** Map the nullable GraphQL `SpanFilter` input onto the store's `SpanFilter`. */\nconst toSpanFilter = (\n\tinput:\n\t\t| {\n\t\t\t\tservices?: readonly (string | null)[] | null;\n\t\t\t\tstatuses?: readonly (string | null)[] | null;\n\t\t\t\tsearch?: string | null;\n\t\t\t\tsinceMillis?: number | null;\n\t\t\t\tlimit?: number | null;\n\t\t }\n\t\t| null\n\t\t| undefined,\n): SpanFilter | undefined => {\n\tif (input == null) return undefined;\n\tconst services = nonEmpty(input.services);\n\tconst statusStrings = nonEmpty(input.statuses);\n\tconst statuses = statusStrings?.filter((s): s is 'ok' | 'error' => s === 'ok' || s === 'error');\n\treturn {\n\t\t...(services ? { services } : {}),\n\t\t...(statuses && statuses.length > 0 ? { statuses } : {}),\n\t\t...(input.search != null ? { search: input.search } : {}),\n\t\t...(input.sinceMillis != null ? { sinceMillis: input.sinceMillis } : {}),\n\t\t...(input.limit != null ? { limit: input.limit } : {}),\n\t};\n};\n\n// --- Mutation -----------------------------------------------------------\nbuilder.mutationType({\n\tfields: (t) => ({\n\t\t/** Restart the whole stack. */\n\t\trestart: t.field({\n\t\t\ttype: CommandResult,\n\t\t\tresolve: (_parent, _args, ctx) => run(ctx, 'stack.restart', { tag: 'stack.restart' }),\n\t\t}),\n\t\t/** Selectively restart a single plugin subgraph. */\n\t\trestartPlugin: t.fieldWithInput({\n\t\t\ttype: CommandResult,\n\t\t\tinput: { pluginKey: t.input.string({ required: true }) },\n\t\t\tresolve: (_parent, args, ctx) =>\n\t\t\t\trun(ctx, 'selective-restart.requested', {\n\t\t\t\t\ttag: 'selective-restart.requested',\n\t\t\t\t\tpluginKey: args.input.pluginKey as PluginKey,\n\t\t\t\t}),\n\t\t}),\n\t\t/** Capture a snapshot, optionally naming it. */\n\t\tcaptureSnapshot: t.fieldWithInput({\n\t\t\ttype: CommandResult,\n\t\t\tinput: { name: t.input.string({ required: false }) },\n\t\t\tresolve: (_parent, args, ctx) =>\n\t\t\t\trun(ctx, 'snapshot.capture', {\n\t\t\t\t\ttag: 'snapshot.capture',\n\t\t\t\t\t...(args.input.name == null ? {} : { name: args.input.name }),\n\t\t\t\t}),\n\t\t}),\n\t\t/** Re-run codegen against the live manifest. */\n\t\tcodegen: t.field({\n\t\t\ttype: CommandResult,\n\t\t\tresolve: (_parent, _args, ctx) => run(ctx, 'codegen.requested', { tag: 'codegen.requested' }),\n\t\t}),\n\t\t/** Re-apply the manifest, optionally scoped to a single plugin. */\n\t\tapply: t.fieldWithInput({\n\t\t\ttype: CommandResult,\n\t\t\tinput: { pluginKey: t.input.string({ required: false }) },\n\t\t\tresolve: (_parent, args, ctx) =>\n\t\t\t\trun(ctx, 'apply.requested', {\n\t\t\t\t\ttag: 'apply.requested',\n\t\t\t\t\t...(args.input.pluginKey == null ? {} : { pluginKey: args.input.pluginKey as PluginKey }),\n\t\t\t\t}),\n\t\t}),\n\t\t/** Wipe the live stack footprint (preserves the snapshot catalog). */\n\t\twipe: t.field({\n\t\t\ttype: CommandResult,\n\t\t\tresolve: (_parent, _args, ctx) => run(ctx, 'wipe.requested', { tag: 'wipe.requested' }),\n\t\t}),\n\t\t/** Prune the snapshot catalog + sweep byproduct images. */\n\t\tprune: t.field({\n\t\t\ttype: CommandResult,\n\t\t\tresolve: (_parent, _args, ctx) => run(ctx, 'prune.requested', { tag: 'prune.requested' }),\n\t\t}),\n\t\t/** Advance the (fork/local) chain clock to an absolute epoch-ms. */\n\t\tadvanceClock: t.fieldWithInput({\n\t\t\ttype: CommandResult,\n\t\t\tinput: { toMillis: t.input.float({ required: true }) },\n\t\t\tresolve: (_parent, args, ctx) =>\n\t\t\t\trun(ctx, 'advance-clock.requested', {\n\t\t\t\t\ttag: 'advance-clock.requested',\n\t\t\t\t\ttoMillis: args.input.toMillis,\n\t\t\t\t}),\n\t\t}),\n\t\t/** Request a graceful stack shutdown. */\n\t\tshutdown: t.field({\n\t\t\ttype: CommandResult,\n\t\t\tresolve: (_parent, _args, ctx) =>\n\t\t\t\trun(ctx, 'shutdown.requested', { tag: 'shutdown.requested' }),\n\t\t}),\n\t\t/** Restore a snapshot by id. Routes through the control-plane\n\t\t * `domain` so the dashboard gets a real ok/detail outcome (the void\n\t\t * `publishCommand` could not carry the orchestrator's result). */\n\t\trestoreSnapshot: t.fieldWithInput({\n\t\t\ttype: SnapshotActionResult,\n\t\t\tinput: { id: t.input.string({ required: true }) },\n\t\t\tresolve: (_parent, args, ctx) => Effect.runPromise(ctx.domain.restoreSnapshot(args.input.id)),\n\t\t}),\n\t\t/** Delete a snapshot by id (via the control-plane `domain`). */\n\t\tdeleteSnapshot: t.fieldWithInput({\n\t\t\ttype: SnapshotActionResult,\n\t\t\tinput: { id: t.input.string({ required: true }) },\n\t\t\tresolve: (_parent, args, ctx) => Effect.runPromise(ctx.domain.deleteSnapshot(args.input.id)),\n\t\t}),\n\t\t/** Mint a custom coin. Routes through the control-plane `domain`:\n\t\t * the supervisor holds the treasury-cap-owning publisher signer\n\t\t * in-process and returns a real ok/detail/digest result (the void\n\t\t * `publishCommand` could not carry the tx digest). `amountBaseUnits`\n\t\t * is the raw integer amount in the coin's smallest unit (string so\n\t\t * large u64 values survive the wire without precision loss). */\n\t\tmint: t.fieldWithInput({\n\t\t\ttype: MintResult,\n\t\t\tinput: {\n\t\t\t\tcoinType: t.input.string({ required: true }),\n\t\t\t\trecipient: t.input.string({ required: true }),\n\t\t\t\tamountBaseUnits: t.input.string({ required: true }),\n\t\t\t},\n\t\t\tresolve: (_parent, args, ctx) =>\n\t\t\t\tEffect.runPromise(\n\t\t\t\t\tctx.pluginDomain.mintCoin({\n\t\t\t\t\t\tcoinType: args.input.coinType,\n\t\t\t\t\t\trecipient: args.input.recipient,\n\t\t\t\t\t\tamountBaseUnits: args.input.amountBaseUnits,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t}),\n\t\t/** Fund an account/address. Routes through the control-plane\n\t\t * `pluginDomain`, reusing devstack's in-process funding strategies:\n\t\t * SUI (absent / canonical `coinType`) via the chain faucet strategy\n\t\t * (fixed-amount — `amountBaseUnits` is ignored); WAL/DEEP via the\n\t\t * coin-specific account-signed swap (`amountBaseUnits` honored, and\n\t\t * the recipient must be a resolved account). Real result — `ok`\n\t\t * reflects whether the strategy completed. */\n\t\tfund: t.fieldWithInput({\n\t\t\ttype: FundResult,\n\t\t\tinput: {\n\t\t\t\trecipient: t.input.string({ required: true }),\n\t\t\t\tcoinType: t.input.string({ required: false }),\n\t\t\t\tamountBaseUnits: t.input.string({ required: false }),\n\t\t\t},\n\t\t\tresolve: (_parent, args, ctx) =>\n\t\t\t\tEffect.runPromise(\n\t\t\t\t\tctx.pluginDomain.fundAccount({\n\t\t\t\t\t\trecipient: args.input.recipient,\n\t\t\t\t\t\tcoinType: args.input.coinType,\n\t\t\t\t\t\tamountBaseUnits: args.input.amountBaseUnits,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t}),\n\t}),\n});\n\n// --- Subscription -------------------------------------------------------\nbuilder.subscriptionType({\n\tfields: (t) => ({\n\t\t/** Stream the projection on every change (current value first). */\n\t\tstate: t.field({\n\t\t\ttype: StackState,\n\t\t\tsubscribe: (_parent, _args, ctx) => subscribeState(ctx.state),\n\t\t\tresolve: (payload) => payload,\n\t\t}),\n\t}),\n});\n\n/** Bridge an Effect `SubscriptionRef` to an async iterable for GraphQL\n * subscriptions. `SubscriptionRef.changes` emits the current value first,\n * then each subsequent update. The pump fiber is interrupted when the\n * consumer (yoga) stops iterating. */\nasync function* subscribeState(\n\tref: SubscriptionRef.SubscriptionRef<SubscribableState>,\n): AsyncGenerator<SubscribableState> {\n\tconst queue = Effect.runSync(Queue.unbounded<SubscribableState>());\n\tconst pump = Effect.runFork(\n\t\tStream.runForEach(SubscriptionRef.changes(ref), (snapshot) => Queue.offer(queue, snapshot)),\n\t);\n\ttry {\n\t\twhile (true) {\n\t\t\tyield await Effect.runPromise(Queue.take(queue));\n\t\t}\n\t} finally {\n\t\tEffect.runFork(Fiber.interrupt(pump));\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"root.mjs","names":[],"sources":["../../../../src/plugins/dashboard/schema/root.ts"],"sourcesContent":["// Dashboard root types — Query / Mutation / Subscription.\n//\n// Queries expose the live projection (`state`), relay node/connection\n// access over the snapshot arrays, and a liveness `ping`. Mutations map to\n// `EngineCommand`s. The single subscription streams the projection over the\n// SubscriptionRef→async-generator bridge. Dependencies (the `state` ref +\n// `publishCommand`) come from the GraphQL context (`ctx`), not closure — the\n// dashboard is a pure control plane (no chain reads).\n\nimport { Effect, Fiber, Queue, Stream, SubscriptionRef } from 'effect';\nimport { resolveArrayConnection } from '@pothos/plugin-relay';\nimport { builder } from './builder.ts';\nimport {\n\tAccount,\n\tCoinCap,\n\tDeepbookInfo,\n\tFundableCoin,\n\tLogFilterInput,\n\tLogRecordType,\n\tPackage,\n\tSealInfo,\n\tService,\n\tSnapshotEntry,\n\tStackState,\n\ttype ServiceSource,\n} from './types.ts';\nimport { StackMode } from './enums.ts';\nimport type { DashboardContext } from './builder.ts';\nimport type { PluginKey } from '../../../substrate/brand.ts';\nimport type { EngineCommand } from '../../../substrate/events.ts';\nimport type { SubscribableState } from '../../../substrate/projection.ts';\nimport type { LogFilter, LogLevel } from '../../../substrate/runtime/observability/index.ts';\n\nconst readSnapshot = (\n\tstate: SubscriptionRef.SubscriptionRef<SubscribableState>,\n): Promise<SubscribableState> => Effect.runPromise(SubscriptionRef.get(state));\n\n// --- CommandResult ------------------------------------------------------\ninterface CommandResultShape {\n\treadonly ok: boolean;\n\treadonly command: string;\n\treadonly message?: string | null;\n}\n\nconst CommandResult = builder.objectRef<CommandResultShape>('CommandResult').implement({\n\tdescription: 'The outcome of dispatching an engine command.',\n\tfields: (t) => ({\n\t\tok: t.exposeBoolean('ok'),\n\t\tcommand: t.exposeString('command'),\n\t\tmessage: t.string({ nullable: true, resolve: (r) => r.message ?? null }),\n\t}),\n});\n\nconst run = async (\n\tctx: DashboardContext,\n\ttag: string,\n\tcommand: EngineCommand,\n): Promise<CommandResultShape> => {\n\tawait Effect.runPromise(ctx.publishCommand(command));\n\treturn { ok: true, command: tag };\n};\n\n// --- SnapshotActionResult -----------------------------------------------\n//\n// Restore/delete go through the control-plane `domain` (NOT the void\n// `publishCommand`), so the dashboard gets a real ok/detail outcome the\n// fire-and-forget command channel cannot carry.\ninterface SnapshotActionResultShape {\n\treadonly ok: boolean;\n\treadonly detail: string | null;\n}\n\nconst SnapshotActionResult = builder\n\t.objectRef<SnapshotActionResultShape>('SnapshotActionResult')\n\t.implement({\n\t\tdescription: 'The outcome of a snapshot restore/delete (real result, not fire-and-forget).',\n\t\tfields: (t) => ({\n\t\t\tok: t.exposeBoolean('ok'),\n\t\t\tdetail: t.string({ nullable: true, resolve: (r) => r.detail }),\n\t\t}),\n\t});\n\n// --- MintResult ---------------------------------------------------------\n//\n// The coin Mint action goes through the control-plane `domain` (NOT the\n// void `publishCommand`): the supervisor holds the treasury-cap-owning\n// signer in-process and returns a real ok/detail outcome plus the on-chain\n// tx `digest` on success.\ninterface MintResultShape {\n\treadonly ok: boolean;\n\treadonly detail: string;\n\treadonly digest: string | null;\n}\n\nconst MintResult = builder.objectRef<MintResultShape>('MintResult').implement({\n\tdescription: 'The outcome of a coin mint (real result, with the on-chain tx digest on success).',\n\tfields: (t) => ({\n\t\tok: t.exposeBoolean('ok'),\n\t\tdetail: t.exposeString('detail'),\n\t\tdigest: t.string({ nullable: true, resolve: (r) => r.digest }),\n\t}),\n});\n\n// --- FundResult ---------------------------------------------------------\n//\n// The Faucet `fund` action routes through the control-plane `pluginDomain`,\n// reusing devstack's IN-PROCESS funding strategies (the same registry the\n// boot-time account funding pass uses): SUI via the chain faucet strategy\n// (fixed-amount), WAL/DEEP via the coin-specific account-signed swap. The\n// strategies return `void` (no digest), so the result carries only\n// `ok`/`detail`. `ok` reflects whether the strategy's `request(...)`\n// actually completed.\ninterface FundResultShape {\n\treadonly ok: boolean;\n\treadonly detail: string;\n}\n\nconst FundResult = builder.objectRef<FundResultShape>('FundResult').implement({\n\tdescription:\n\t\t'The outcome of a faucet fund request (real result — ok reflects whether the ' +\n\t\t'in-process funding strategy completed).',\n\tfields: (t) => ({\n\t\tok: t.exposeBoolean('ok'),\n\t\tdetail: t.exposeString('detail'),\n\t}),\n});\n\n// --- Query --------------------------------------------------------------\nbuilder.queryType({\n\tfields: (t) => ({\n\t\t/** Liveness probe. */\n\t\tping: t.string({ resolve: () => 'pong' }),\n\t\t/** Full live projection snapshot (status, services, endpoints, …). */\n\t\tstate: t.field({\n\t\t\ttype: StackState,\n\t\t\tresolve: (_parent, _args, ctx) => readSnapshot(ctx.state),\n\t\t}),\n\t\t/** Relay connection over the current snapshot's service rows. */\n\t\tservices: t.connection({\n\t\t\ttype: Service,\n\t\t\tresolve: async (_parent, args, ctx) => {\n\t\t\t\tconst snapshot = await readSnapshot(ctx.state);\n\t\t\t\tconst sources: ServiceSource[] = snapshot.rows.map((row) => ({ row, snapshot }));\n\t\t\t\treturn resolveArrayConnection({ args }, sources);\n\t\t\t},\n\t\t}),\n\t\t/** Relay connection over the current snapshot's accounts. */\n\t\taccounts: t.connection({\n\t\t\ttype: Account,\n\t\t\tresolve: async (_parent, args, ctx) => {\n\t\t\t\tconst snapshot = await readSnapshot(ctx.state);\n\t\t\t\treturn resolveArrayConnection({ args }, [...snapshot.accounts]);\n\t\t\t},\n\t\t}),\n\t\t/** Relay connection over the current snapshot's packages. */\n\t\tpackages: t.connection({\n\t\t\ttype: Package,\n\t\t\tresolve: async (_parent, args, ctx) => {\n\t\t\t\tconst snapshot = await readSnapshot(ctx.state);\n\t\t\t\treturn resolveArrayConnection({ args }, [...snapshot.packages]);\n\t\t\t},\n\t\t}),\n\n\t\t// --- Plugin-domain queries (data the browser cannot reach) --------\n\t\t/** Fork-vs-local stack mode (advance-clock gating). `null` when no\n\t\t * sui plugin is present. */\n\t\tmode: t.field({\n\t\t\ttype: StackMode,\n\t\t\tnullable: true,\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.pluginDomain.mode),\n\t\t}),\n\t\t/** Snapshot catalog: id/label/created/participants/containers. */\n\t\tsnapshots: t.field({\n\t\t\ttype: [SnapshotEntry],\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.domain.snapshots),\n\t\t}),\n\t\t/** DeepBook deployments: registry/admin/pool ids + seed-liquidity\n\t\t * state + Pyth feeds. (Pool prices / order books are chain-direct.) */\n\t\tdeepbookInfo: t.field({\n\t\t\ttype: [DeepbookInfo],\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.pluginDomain.deepbook),\n\t\t}),\n\t\t/** Seal key-server deployments: objectId/threshold/mode/keyServers. */\n\t\tsealInfo: t.field({\n\t\t\ttype: [SealInfo],\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.pluginDomain.seal),\n\t\t}),\n\t\t/** Coin treasury caps (drives Mint) + addressing facts. (Supply /\n\t\t * metadata are chain-direct.) */\n\t\tcoinCaps: t.field({\n\t\t\ttype: [CoinCap],\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.pluginDomain.coinCaps),\n\t\t}),\n\t\t/** Coins the faucet can actually fund right now (drives the Faucet\n\t\t * panel's coin pills + amount gating). SUI is always present when a\n\t\t * faucet strategy is registered; WAL/DEEP appear only when their\n\t\t * plugin contributed a funding strategy. */\n\t\tfundableCoins: t.field({\n\t\t\ttype: [FundableCoin],\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.pluginDomain.fundableCoins),\n\t\t}),\n\t\t// --- Observability (Console \"Logs\" tab) ---------------------------\n\t\t/** Cross-service queryable log history. Filterable server-side by\n\t\t * service / level / substring / time window; returns most-recent\n\t\t * first, capped by `filter.limit` (default = ring capacity). */\n\t\tlogs: t.field({\n\t\t\ttype: [LogRecordType],\n\t\t\targs: { filter: t.arg({ type: LogFilterInput, required: false }) },\n\t\t\tresolve: (_parent, args, ctx) => Effect.runPromise(ctx.domain.logs(toLogFilter(args.filter))),\n\t\t}),\n\t\t/** Distinct services currently in the log ring (filter dropdown). */\n\t\tlogServices: t.field({\n\t\t\ttype: ['String'],\n\t\t\tresolve: (_parent, _args, ctx) => Effect.runPromise(ctx.domain.logServices),\n\t\t}),\n\t}),\n});\n\n/** Closed log-level set used to narrow the String[] filter input back onto\n * the store's `LogLevel` union. Unknown strings are dropped (the store would\n * just never match them anyway). */\nconst LOG_LEVELS: ReadonlySet<LogLevel> = new Set<LogLevel>([\n\t'trace',\n\t'debug',\n\t'info',\n\t'warn',\n\t'error',\n\t'fatal',\n]);\n\nconst nonEmpty = (xs: readonly (string | null)[] | null | undefined): string[] | undefined => {\n\tif (xs == null) return undefined;\n\tconst out = xs.filter((x): x is string => x != null && x.length > 0);\n\treturn out.length > 0 ? out : undefined;\n};\n\n/** Map the nullable GraphQL `LogFilter` input onto the store's `LogFilter`,\n * dropping nulls and unknown levels. */\nconst toLogFilter = (\n\tinput:\n\t\t| {\n\t\t\t\tservices?: readonly (string | null)[] | null;\n\t\t\t\tlevels?: readonly (string | null)[] | null;\n\t\t\t\tsearch?: string | null;\n\t\t\t\tsinceMillis?: number | null;\n\t\t\t\tlimit?: number | null;\n\t\t }\n\t\t| null\n\t\t| undefined,\n): LogFilter | undefined => {\n\tif (input == null) return undefined;\n\tconst services = nonEmpty(input.services);\n\tconst levelStrings = nonEmpty(input.levels);\n\tconst levels = levelStrings?.filter((l): l is LogLevel => LOG_LEVELS.has(l as LogLevel));\n\treturn {\n\t\t...(services ? { services } : {}),\n\t\t...(levels && levels.length > 0 ? { levels } : {}),\n\t\t...(input.search != null ? { search: input.search } : {}),\n\t\t...(input.sinceMillis != null ? { sinceMillis: input.sinceMillis } : {}),\n\t\t...(input.limit != null ? { limit: input.limit } : {}),\n\t};\n};\n\n// --- Mutation -----------------------------------------------------------\nbuilder.mutationType({\n\tfields: (t) => ({\n\t\t/** Restart the whole stack. */\n\t\trestart: t.field({\n\t\t\ttype: CommandResult,\n\t\t\tresolve: (_parent, _args, ctx) => run(ctx, 'stack.restart', { tag: 'stack.restart' }),\n\t\t}),\n\t\t/** Selectively restart a single plugin subgraph. */\n\t\trestartPlugin: t.fieldWithInput({\n\t\t\ttype: CommandResult,\n\t\t\tinput: { pluginKey: t.input.string({ required: true }) },\n\t\t\tresolve: (_parent, args, ctx) =>\n\t\t\t\trun(ctx, 'selective-restart.requested', {\n\t\t\t\t\ttag: 'selective-restart.requested',\n\t\t\t\t\tpluginKey: args.input.pluginKey as PluginKey,\n\t\t\t\t}),\n\t\t}),\n\t\t/** Capture a snapshot, optionally naming it. */\n\t\tcaptureSnapshot: t.fieldWithInput({\n\t\t\ttype: CommandResult,\n\t\t\tinput: { name: t.input.string({ required: false }) },\n\t\t\tresolve: (_parent, args, ctx) =>\n\t\t\t\trun(ctx, 'snapshot.capture', {\n\t\t\t\t\ttag: 'snapshot.capture',\n\t\t\t\t\t...(args.input.name == null ? {} : { name: args.input.name }),\n\t\t\t\t}),\n\t\t}),\n\t\t/** Re-run codegen against the live manifest. */\n\t\tcodegen: t.field({\n\t\t\ttype: CommandResult,\n\t\t\tresolve: (_parent, _args, ctx) => run(ctx, 'codegen.requested', { tag: 'codegen.requested' }),\n\t\t}),\n\t\t/** Re-apply the manifest, optionally scoped to a single plugin. */\n\t\tapply: t.fieldWithInput({\n\t\t\ttype: CommandResult,\n\t\t\tinput: { pluginKey: t.input.string({ required: false }) },\n\t\t\tresolve: (_parent, args, ctx) =>\n\t\t\t\trun(ctx, 'apply.requested', {\n\t\t\t\t\ttag: 'apply.requested',\n\t\t\t\t\t...(args.input.pluginKey == null ? {} : { pluginKey: args.input.pluginKey as PluginKey }),\n\t\t\t\t}),\n\t\t}),\n\t\t/** Wipe the live stack footprint (preserves the snapshot catalog). */\n\t\twipe: t.field({\n\t\t\ttype: CommandResult,\n\t\t\tresolve: (_parent, _args, ctx) => run(ctx, 'wipe.requested', { tag: 'wipe.requested' }),\n\t\t}),\n\t\t/** Prune the snapshot catalog + sweep byproduct images. */\n\t\tprune: t.field({\n\t\t\ttype: CommandResult,\n\t\t\tresolve: (_parent, _args, ctx) => run(ctx, 'prune.requested', { tag: 'prune.requested' }),\n\t\t}),\n\t\t/** Advance the (fork/local) chain clock to an absolute epoch-ms. */\n\t\tadvanceClock: t.fieldWithInput({\n\t\t\ttype: CommandResult,\n\t\t\tinput: { toMillis: t.input.float({ required: true }) },\n\t\t\tresolve: (_parent, args, ctx) =>\n\t\t\t\trun(ctx, 'advance-clock.requested', {\n\t\t\t\t\ttag: 'advance-clock.requested',\n\t\t\t\t\ttoMillis: args.input.toMillis,\n\t\t\t\t}),\n\t\t}),\n\t\t/** Request a graceful stack shutdown. */\n\t\tshutdown: t.field({\n\t\t\ttype: CommandResult,\n\t\t\tresolve: (_parent, _args, ctx) =>\n\t\t\t\trun(ctx, 'shutdown.requested', { tag: 'shutdown.requested' }),\n\t\t}),\n\t\t/** Restore a snapshot by id. Routes through the supervisor\n\t\t * command-loop via `submitCommand` (NOT the in-process\n\t\t * `domain.restoreSnapshot`): restore is destructive — it removes the\n\t\t * live managed containers and relies on a follow-on re-acquire to\n\t\t * rebuild them. Running it in-process against a live supervisor would\n\t\t * race the single command-queue consumer and leave services dead until\n\t\t * a manual Restart. The command-loop's `snapshot.restore` case applies\n\t\t * the restored tree, publishes `snapshot.restored`, THEN drains +\n\t\t * re-acquires every service (the manual-restart sequence) — and the\n\t\t * submitted-command completion deferred lets this mutation await the\n\t\t * real ok/detail outcome the void `publishCommand` could not carry. */\n\t\trestoreSnapshot: t.fieldWithInput({\n\t\t\ttype: SnapshotActionResult,\n\t\t\tinput: { id: t.input.string({ required: true }) },\n\t\t\tresolve: (_parent, args, ctx) =>\n\t\t\t\tEffect.runPromise(\n\t\t\t\t\tctx.submitCommand({ tag: 'snapshot.restore', snapshotId: args.input.id }).pipe(\n\t\t\t\t\t\tEffect.as({ ok: true, detail: null as string | null }),\n\t\t\t\t\t\tEffect.catchCause((cause) =>\n\t\t\t\t\t\t\tEffect.succeed({ ok: false, detail: String(cause) as string | null }),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t}),\n\t\t/** Delete a snapshot by id (via the control-plane `domain`). */\n\t\tdeleteSnapshot: t.fieldWithInput({\n\t\t\ttype: SnapshotActionResult,\n\t\t\tinput: { id: t.input.string({ required: true }) },\n\t\t\tresolve: (_parent, args, ctx) => Effect.runPromise(ctx.domain.deleteSnapshot(args.input.id)),\n\t\t}),\n\t\t/** Mint a custom coin. Routes through the control-plane `domain`:\n\t\t * the supervisor holds the treasury-cap-owning publisher signer\n\t\t * in-process and returns a real ok/detail/digest result (the void\n\t\t * `publishCommand` could not carry the tx digest). `amountBaseUnits`\n\t\t * is the raw integer amount in the coin's smallest unit (string so\n\t\t * large u64 values survive the wire without precision loss). */\n\t\tmint: t.fieldWithInput({\n\t\t\ttype: MintResult,\n\t\t\tinput: {\n\t\t\t\tcoinType: t.input.string({ required: true }),\n\t\t\t\trecipient: t.input.string({ required: true }),\n\t\t\t\tamountBaseUnits: t.input.string({ required: true }),\n\t\t\t},\n\t\t\tresolve: (_parent, args, ctx) =>\n\t\t\t\tEffect.runPromise(\n\t\t\t\t\tctx.pluginDomain.mintCoin({\n\t\t\t\t\t\tcoinType: args.input.coinType,\n\t\t\t\t\t\trecipient: args.input.recipient,\n\t\t\t\t\t\tamountBaseUnits: args.input.amountBaseUnits,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t}),\n\t\t/** Fund an account/address. Routes through the control-plane\n\t\t * `pluginDomain`, reusing devstack's in-process funding strategies:\n\t\t * SUI (absent / canonical `coinType`) via the chain faucet strategy\n\t\t * (fixed-amount — `amountBaseUnits` is ignored); WAL/DEEP via the\n\t\t * coin-specific account-signed swap (`amountBaseUnits` honored, and\n\t\t * the recipient must be a resolved account). Real result — `ok`\n\t\t * reflects whether the strategy completed. */\n\t\tfund: t.fieldWithInput({\n\t\t\ttype: FundResult,\n\t\t\tinput: {\n\t\t\t\trecipient: t.input.string({ required: true }),\n\t\t\t\tcoinType: t.input.string({ required: false }),\n\t\t\t\tamountBaseUnits: t.input.string({ required: false }),\n\t\t\t},\n\t\t\tresolve: (_parent, args, ctx) =>\n\t\t\t\tEffect.runPromise(\n\t\t\t\t\tctx.pluginDomain.fundAccount({\n\t\t\t\t\t\trecipient: args.input.recipient,\n\t\t\t\t\t\tcoinType: args.input.coinType,\n\t\t\t\t\t\tamountBaseUnits: args.input.amountBaseUnits,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t}),\n\t}),\n});\n\n// --- Subscription -------------------------------------------------------\nbuilder.subscriptionType({\n\tfields: (t) => ({\n\t\t/** Stream the projection on every change (current value first). */\n\t\tstate: t.field({\n\t\t\ttype: StackState,\n\t\t\tsubscribe: (_parent, _args, ctx) => subscribeState(ctx.state),\n\t\t\tresolve: (payload) => payload,\n\t\t}),\n\t}),\n});\n\n/** Bridge an Effect `SubscriptionRef` to an async iterable for GraphQL\n * subscriptions. `SubscriptionRef.changes` emits the current value first,\n * then each subsequent update. The pump fiber is interrupted when the\n * consumer (yoga) stops iterating. */\nasync function* subscribeState(\n\tref: SubscriptionRef.SubscriptionRef<SubscribableState>,\n): AsyncGenerator<SubscribableState> {\n\tconst queue = Effect.runSync(Queue.unbounded<SubscribableState>());\n\tconst pump = Effect.runFork(\n\t\tStream.runForEach(SubscriptionRef.changes(ref), (snapshot) => Queue.offer(queue, snapshot)),\n\t);\n\ttry {\n\t\twhile (true) {\n\t\t\tyield await Effect.runPromise(Queue.take(queue));\n\t\t}\n\t} finally {\n\t\tEffect.runFork(Fiber.interrupt(pump));\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1,41 +1,34 @@
|
|
|
1
1
|
import { builder } from "./builder.mjs";
|
|
2
2
|
import { AccountScheme, AccountSource, DeepbookMode, ErrorSeverity, FundingStatus, Health, LifecycleStatus, LogLevel, PackageKind, PluginRole, RowSection, WireProtocol } from "./enums.mjs";
|
|
3
|
+
import { deriveHealth, deriveStackViewModel } from "../../../surfaces/tui/display-derivation.mjs";
|
|
3
4
|
import { Effect, SubscriptionRef } from "effect";
|
|
4
5
|
//#region src/plugins/dashboard/schema/types.ts
|
|
5
|
-
/** Compute the stack health summary from the projection rows.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
/** Compute the stack health summary from the projection rows. Delegates to
|
|
7
|
+
* the surface-neutral `deriveStackViewModel` (the single canonical
|
|
8
|
+
* bucketing) + `deriveHealth(counts, 'web')` (the named web policy), then
|
|
9
|
+
* folds the ViewModel's discrete `stoppedRows` into this adapter's `ready`
|
|
10
|
+
* field — preserving the web GraphQL stopped→ready contract. The fold lives
|
|
11
|
+
* HERE, in the web adapter, not in the shared ViewModel, so the TUI policy
|
|
12
|
+
* is unaffected. `active` counts rows mid-flight (acquiring/stopping);
|
|
13
|
+
* `waiting` counts rows that have not started (pending). Overall `health`
|
|
14
|
+
* is `failed`→blocked, any-active→active, all-(ready|stopped) (with ≥1
|
|
15
|
+
* row)→ready, otherwise empty. */
|
|
9
16
|
const computeHealthSummary = (rows) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
ready += 1;
|
|
19
|
-
break;
|
|
20
|
-
case "acquiring":
|
|
21
|
-
case "stopping":
|
|
22
|
-
active += 1;
|
|
23
|
-
break;
|
|
24
|
-
case "failed":
|
|
25
|
-
failed += 1;
|
|
26
|
-
break;
|
|
27
|
-
case "pending":
|
|
28
|
-
waiting += 1;
|
|
29
|
-
break;
|
|
30
|
-
}
|
|
31
|
-
const total = rows.length;
|
|
17
|
+
const vm = deriveStackViewModel({
|
|
18
|
+
rows,
|
|
19
|
+
endpoints: [],
|
|
20
|
+
accounts: [],
|
|
21
|
+
packages: [],
|
|
22
|
+
errors: []
|
|
23
|
+
});
|
|
24
|
+
const health = deriveHealth(vm, "web");
|
|
32
25
|
return {
|
|
33
|
-
total,
|
|
34
|
-
ready,
|
|
35
|
-
active,
|
|
36
|
-
failed,
|
|
37
|
-
waiting,
|
|
38
|
-
health
|
|
26
|
+
total: vm.total,
|
|
27
|
+
ready: vm.readyRows + vm.stoppedRows,
|
|
28
|
+
active: vm.activeRows,
|
|
29
|
+
failed: vm.failedRows,
|
|
30
|
+
waiting: vm.waitingRows,
|
|
31
|
+
health
|
|
39
32
|
};
|
|
40
33
|
};
|
|
41
34
|
const readSnapshot = (ref) => Effect.runPromise(SubscriptionRef.get(ref));
|
|
@@ -275,6 +268,10 @@ const SnapshotEntry = builder.objectRef("SnapshotEntry").implement({
|
|
|
275
268
|
app: t.exposeString("app", { nullable: true }),
|
|
276
269
|
stack: t.exposeString("stack", { nullable: true }),
|
|
277
270
|
network: t.exposeString("network", { nullable: true }),
|
|
271
|
+
snapshotGraphInputId: t.exposeString("snapshotGraphInputId", { nullable: true }),
|
|
272
|
+
currentGraphInputId: t.exposeString("currentGraphInputId", { nullable: true }),
|
|
273
|
+
graphInputStatus: t.exposeString("graphInputStatus"),
|
|
274
|
+
graphInputWarning: t.exposeString("graphInputWarning", { nullable: true }),
|
|
278
275
|
participants: t.exposeStringList("participants"),
|
|
279
276
|
containerCount: t.exposeInt("containerCount"),
|
|
280
277
|
subtreeCount: t.exposeInt("subtreeCount"),
|
|
@@ -290,8 +287,17 @@ const DeepbookPool = builder.objectRef("DeepbookPool").implement({
|
|
|
290
287
|
quoteCoinType: t.exposeString("quoteCoinType")
|
|
291
288
|
})
|
|
292
289
|
});
|
|
290
|
+
const PythPriceFeed = builder.objectRef("PythPriceFeed").implement({
|
|
291
|
+
description: "A Pyth price feed seeded inside DeepBook at boot. `price`/`expo` are FIXED boot-time mock values (static, not a live quote).",
|
|
292
|
+
fields: (t) => ({
|
|
293
|
+
symbol: t.exposeString("symbol"),
|
|
294
|
+
priceInfoObjectId: t.exposeString("priceInfoObjectId"),
|
|
295
|
+
price: t.exposeString("price"),
|
|
296
|
+
expo: t.exposeInt("expo")
|
|
297
|
+
})
|
|
298
|
+
});
|
|
293
299
|
const DeepbookInfo = builder.objectRef("DeepbookInfo").implement({
|
|
294
|
-
description: "A DeepBook deployment: registry/admin/pool ids +
|
|
300
|
+
description: "A DeepBook deployment: registry/admin/pool ids + seed-liquidity state + Pyth feeds.",
|
|
295
301
|
fields: (t) => ({
|
|
296
302
|
pluginKey: t.exposeString("pluginKey"),
|
|
297
303
|
name: t.exposeString("name"),
|
|
@@ -299,7 +305,7 @@ const DeepbookInfo = builder.objectRef("DeepbookInfo").implement({
|
|
|
299
305
|
type: DeepbookMode,
|
|
300
306
|
resolve: (d) => d.mode
|
|
301
307
|
}),
|
|
302
|
-
|
|
308
|
+
network: t.exposeString("network"),
|
|
303
309
|
packageId: t.exposeString("packageId"),
|
|
304
310
|
registryId: t.exposeString("registryId"),
|
|
305
311
|
adminCapId: t.exposeString("adminCapId", { nullable: true }),
|
|
@@ -308,9 +314,14 @@ const DeepbookInfo = builder.objectRef("DeepbookInfo").implement({
|
|
|
308
314
|
type: [DeepbookPool],
|
|
309
315
|
resolve: (d) => d.pools
|
|
310
316
|
}),
|
|
311
|
-
|
|
317
|
+
pythFeeds: t.field({
|
|
318
|
+
type: [PythPriceFeed],
|
|
319
|
+
resolve: (d) => d.pythFeeds
|
|
320
|
+
}),
|
|
321
|
+
hasSeedLiquidity: t.exposeBoolean("hasSeedLiquidity"),
|
|
312
322
|
serverUrl: t.exposeString("serverUrl", { nullable: true }),
|
|
313
|
-
indexerUrl: t.exposeString("indexerUrl", { nullable: true })
|
|
323
|
+
indexerUrl: t.exposeString("indexerUrl", { nullable: true }),
|
|
324
|
+
narrowingFault: t.exposeString("narrowingFault", { nullable: true })
|
|
314
325
|
})
|
|
315
326
|
});
|
|
316
327
|
const SealKeyServer = builder.objectRef("SealKeyServer").implement({
|
|
@@ -334,7 +345,8 @@ const SealInfo = builder.objectRef("SealInfo").implement({
|
|
|
334
345
|
type: [SealKeyServer],
|
|
335
346
|
resolve: (s) => s.keyServers
|
|
336
347
|
}),
|
|
337
|
-
threshold: t.exposeInt("threshold")
|
|
348
|
+
threshold: t.exposeInt("threshold"),
|
|
349
|
+
narrowingFault: t.exposeString("narrowingFault", { nullable: true })
|
|
338
350
|
})
|
|
339
351
|
});
|
|
340
352
|
const CoinCap = builder.objectRef("CoinCap").implement({
|
|
@@ -349,7 +361,8 @@ const CoinCap = builder.objectRef("CoinCap").implement({
|
|
|
349
361
|
resolve: (c) => c.source
|
|
350
362
|
}),
|
|
351
363
|
treasuryCapId: t.exposeString("treasuryCapId", { nullable: true }),
|
|
352
|
-
packageId: t.exposeString("packageId", { nullable: true })
|
|
364
|
+
packageId: t.exposeString("packageId", { nullable: true }),
|
|
365
|
+
narrowingFault: t.exposeString("narrowingFault", { nullable: true })
|
|
353
366
|
})
|
|
354
367
|
});
|
|
355
368
|
const FundableCoin = builder.objectRef("FundableCoin").implement({
|
|
@@ -365,31 +378,6 @@ const FundableCoin = builder.objectRef("FundableCoin").implement({
|
|
|
365
378
|
requiresAccountSigner: t.exposeBoolean("requiresAccountSigner")
|
|
366
379
|
})
|
|
367
380
|
});
|
|
368
|
-
const PostgresTable = builder.objectRef("PostgresTable").implement({
|
|
369
|
-
description: "Per-table row estimate + total size (bytes).",
|
|
370
|
-
fields: (t) => ({
|
|
371
|
-
schema: t.exposeString("schema"),
|
|
372
|
-
name: t.exposeString("name"),
|
|
373
|
-
rowEstimate: t.exposeFloat("rowEstimate"),
|
|
374
|
-
totalBytes: t.exposeFloat("totalBytes")
|
|
375
|
-
})
|
|
376
|
-
});
|
|
377
|
-
const PostgresStats = builder.objectRef("PostgresStats").implement({
|
|
378
|
-
description: "Postgres wire-protocol stats (db size, connections, per-table). Gathered by exec; the browser cannot speak the PG protocol.",
|
|
379
|
-
fields: (t) => ({
|
|
380
|
-
pluginKey: t.exposeString("pluginKey"),
|
|
381
|
-
database: t.exposeString("database"),
|
|
382
|
-
plainUrl: t.exposeString("plainUrl"),
|
|
383
|
-
databaseBytes: t.exposeFloat("databaseBytes"),
|
|
384
|
-
connectionCount: t.exposeInt("connectionCount"),
|
|
385
|
-
tables: t.field({
|
|
386
|
-
type: [PostgresTable],
|
|
387
|
-
resolve: (p) => p.tables
|
|
388
|
-
}),
|
|
389
|
-
available: t.exposeBoolean("available"),
|
|
390
|
-
detail: t.exposeString("detail", { nullable: true })
|
|
391
|
-
})
|
|
392
|
-
});
|
|
393
381
|
const fieldsJson = (fields) => {
|
|
394
382
|
try {
|
|
395
383
|
return JSON.stringify(fields);
|
|
@@ -415,27 +403,6 @@ const LogRecordType = builder.objectRef("LogRecord").implement({
|
|
|
415
403
|
})
|
|
416
404
|
})
|
|
417
405
|
});
|
|
418
|
-
const SpanRecordType = builder.objectRef("SpanRecord").implement({
|
|
419
|
-
description: "One completed span (queryable Console \"Traces\" tab). Recorded by the supervisor's recording Tracer.",
|
|
420
|
-
fields: (t) => ({
|
|
421
|
-
traceId: t.exposeString("traceId"),
|
|
422
|
-
spanId: t.exposeString("spanId"),
|
|
423
|
-
parentId: t.exposeString("parentId", { nullable: true }),
|
|
424
|
-
name: t.exposeString("name"),
|
|
425
|
-
service: t.exposeString("service", { nullable: true }),
|
|
426
|
-
startMillis: t.exposeFloat("startMillis"),
|
|
427
|
-
durationMillis: t.exposeFloat("durationMillis"),
|
|
428
|
-
status: t.field({
|
|
429
|
-
type: "String",
|
|
430
|
-
resolve: (r) => r.status
|
|
431
|
-
}),
|
|
432
|
-
/** Flattened span attributes as a JSON string. */
|
|
433
|
-
attributesJson: t.field({
|
|
434
|
-
type: "String",
|
|
435
|
-
resolve: (r) => fieldsJson(r.attributes)
|
|
436
|
-
})
|
|
437
|
-
})
|
|
438
|
-
});
|
|
439
406
|
const LogFilterInput = builder.inputType("LogFilter", { fields: (t) => ({
|
|
440
407
|
services: t.stringList({ required: false }),
|
|
441
408
|
/** Levels (trace/debug/info/warn/error/fatal). Strings, not an enum
|
|
@@ -445,14 +412,6 @@ const LogFilterInput = builder.inputType("LogFilter", { fields: (t) => ({
|
|
|
445
412
|
sinceMillis: t.float({ required: false }),
|
|
446
413
|
limit: t.int({ required: false })
|
|
447
414
|
}) });
|
|
448
|
-
const SpanFilterInput = builder.inputType("SpanFilter", { fields: (t) => ({
|
|
449
|
-
services: t.stringList({ required: false }),
|
|
450
|
-
/** Statuses ('ok' / 'error'). Strings, not an enum. */
|
|
451
|
-
statuses: t.stringList({ required: false }),
|
|
452
|
-
search: t.string({ required: false }),
|
|
453
|
-
sinceMillis: t.float({ required: false }),
|
|
454
|
-
limit: t.int({ required: false })
|
|
455
|
-
}) });
|
|
456
415
|
const StackState = builder.objectRef("StackState").implement({
|
|
457
416
|
description: "A full live projection snapshot.",
|
|
458
417
|
fields: (t) => ({
|
|
@@ -503,6 +462,6 @@ const StackState = builder.objectRef("StackState").implement({
|
|
|
503
462
|
})
|
|
504
463
|
});
|
|
505
464
|
//#endregion
|
|
506
|
-
export { Account, CoinCap, DeepbookInfo, FundableCoin, LogFilterInput, LogRecordType, Package,
|
|
465
|
+
export { Account, CoinCap, DeepbookInfo, FundableCoin, LogFilterInput, LogRecordType, Package, SealInfo, Service, SnapshotEntry, StackState };
|
|
507
466
|
|
|
508
467
|
//# sourceMappingURL=types.mjs.map
|