@waiaas/daemon 2.11.0-rc.8 → 2.11.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 +5 -5
- package/dist/api/middleware/address-validation.d.ts +6 -33
- package/dist/api/middleware/address-validation.d.ts.map +1 -1
- package/dist/api/middleware/address-validation.js +5 -129
- package/dist/api/middleware/address-validation.js.map +1 -1
- package/dist/api/middleware/host-guard.d.ts +1 -1
- package/dist/api/middleware/host-guard.js +2 -2
- package/dist/api/middleware/host-guard.js.map +1 -1
- package/dist/api/middleware/index.d.ts +1 -0
- package/dist/api/middleware/index.d.ts.map +1 -1
- package/dist/api/middleware/index.js +1 -0
- package/dist/api/middleware/index.js.map +1 -1
- package/dist/api/middleware/master-auth.d.ts +2 -5
- package/dist/api/middleware/master-auth.d.ts.map +1 -1
- package/dist/api/middleware/master-auth.js.map +1 -1
- package/dist/api/middleware/rate-limiter.d.ts +51 -0
- package/dist/api/middleware/rate-limiter.d.ts.map +1 -0
- package/dist/api/middleware/rate-limiter.js +146 -0
- package/dist/api/middleware/rate-limiter.js.map +1 -0
- package/dist/api/middleware/siwe-verify.d.ts +6 -26
- package/dist/api/middleware/siwe-verify.d.ts.map +1 -1
- package/dist/api/middleware/siwe-verify.js +5 -50
- package/dist/api/middleware/siwe-verify.js.map +1 -1
- package/dist/api/routes/actions.d.ts +1 -0
- package/dist/api/routes/actions.d.ts.map +1 -1
- package/dist/api/routes/actions.js +52 -4
- package/dist/api/routes/actions.js.map +1 -1
- package/dist/api/routes/admin-actions.d.ts +1 -0
- package/dist/api/routes/admin-actions.d.ts.map +1 -1
- package/dist/api/routes/admin-actions.js +3 -3
- package/dist/api/routes/admin-actions.js.map +1 -1
- package/dist/api/routes/admin-auth.d.ts.map +1 -1
- package/dist/api/routes/admin-auth.js +12 -7
- package/dist/api/routes/admin-auth.js.map +1 -1
- package/dist/api/routes/admin-credentials.js +2 -2
- package/dist/api/routes/admin-credentials.js.map +1 -1
- package/dist/api/routes/admin-monitoring.d.ts +10 -0
- package/dist/api/routes/admin-monitoring.d.ts.map +1 -1
- package/dist/api/routes/admin-monitoring.js +59 -14
- package/dist/api/routes/admin-monitoring.js.map +1 -1
- package/dist/api/routes/admin-notifications.d.ts.map +1 -1
- package/dist/api/routes/admin-notifications.js +2 -15
- package/dist/api/routes/admin-notifications.js.map +1 -1
- package/dist/api/routes/admin-settings.d.ts.map +1 -1
- package/dist/api/routes/admin-settings.js +90 -1
- package/dist/api/routes/admin-settings.js.map +1 -1
- package/dist/api/routes/admin-wallets.d.ts +16 -1
- package/dist/api/routes/admin-wallets.d.ts.map +1 -1
- package/dist/api/routes/admin-wallets.js +64 -75
- package/dist/api/routes/admin-wallets.js.map +1 -1
- package/dist/api/routes/admin.d.ts +1 -0
- package/dist/api/routes/admin.d.ts.map +1 -1
- package/dist/api/routes/admin.js.map +1 -1
- package/dist/api/routes/credentials.js +2 -2
- package/dist/api/routes/credentials.js.map +1 -1
- package/dist/api/routes/defi-positions.js.map +1 -1
- package/dist/api/routes/nfts.js.map +1 -1
- package/dist/api/routes/openapi-schemas.d.ts +412 -12
- package/dist/api/routes/openapi-schemas.d.ts.map +1 -1
- package/dist/api/routes/openapi-schemas.js +38 -5
- package/dist/api/routes/openapi-schemas.js.map +1 -1
- package/dist/api/routes/policies.d.ts +2 -0
- package/dist/api/routes/policies.d.ts.map +1 -1
- package/dist/api/routes/policies.js +55 -6
- package/dist/api/routes/policies.js.map +1 -1
- package/dist/api/routes/rpc-proxy.js.map +1 -1
- package/dist/api/routes/sessions.d.ts.map +1 -1
- package/dist/api/routes/sessions.js +47 -28
- package/dist/api/routes/sessions.js.map +1 -1
- package/dist/api/routes/staking.d.ts.map +1 -1
- package/dist/api/routes/staking.js +4 -76
- package/dist/api/routes/staking.js.map +1 -1
- package/dist/api/routes/tokens.d.ts.map +1 -1
- package/dist/api/routes/tokens.js.map +1 -1
- package/dist/api/routes/transactions.d.ts +1 -0
- package/dist/api/routes/transactions.d.ts.map +1 -1
- package/dist/api/routes/transactions.js +8 -2
- package/dist/api/routes/transactions.js.map +1 -1
- package/dist/api/routes/userop.d.ts.map +1 -1
- package/dist/api/routes/userop.js +0 -2
- package/dist/api/routes/userop.js.map +1 -1
- package/dist/api/routes/wallet-apps.d.ts.map +1 -1
- package/dist/api/routes/wallet-apps.js +20 -13
- package/dist/api/routes/wallet-apps.js.map +1 -1
- package/dist/api/routes/wallet.js.map +1 -1
- package/dist/api/routes/wallets.d.ts.map +1 -1
- package/dist/api/routes/wallets.js +3 -0
- package/dist/api/routes/wallets.js.map +1 -1
- package/dist/api/routes/wc.d.ts.map +1 -1
- package/dist/api/routes/wc.js +13 -8
- package/dist/api/routes/wc.js.map +1 -1
- package/dist/api/routes/x402.d.ts.map +1 -1
- package/dist/api/routes/x402.js +1 -2
- package/dist/api/routes/x402.js.map +1 -1
- package/dist/api/server.d.ts +8 -4
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +46 -5
- package/dist/api/server.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/infrastructure/action/action-provider-registry.d.ts.map +1 -1
- package/dist/infrastructure/action/action-provider-registry.js +2 -3
- package/dist/infrastructure/action/action-provider-registry.js.map +1 -1
- package/dist/infrastructure/action/builtin-metadata.d.ts +22 -0
- package/dist/infrastructure/action/builtin-metadata.d.ts.map +1 -0
- package/dist/infrastructure/action/builtin-metadata.js +29 -0
- package/dist/infrastructure/action/builtin-metadata.js.map +1 -0
- package/dist/infrastructure/adapter-pool.d.ts +2 -1
- package/dist/infrastructure/adapter-pool.d.ts.map +1 -1
- package/dist/infrastructure/adapter-pool.js.map +1 -1
- package/dist/infrastructure/auth/address-validation.d.ts +38 -0
- package/dist/infrastructure/auth/address-validation.d.ts.map +1 -0
- package/dist/infrastructure/auth/address-validation.js +134 -0
- package/dist/infrastructure/auth/address-validation.js.map +1 -0
- package/dist/infrastructure/auth/siwe-verify.d.ts +34 -0
- package/dist/infrastructure/auth/siwe-verify.d.ts.map +1 -0
- package/dist/infrastructure/auth/siwe-verify.js +58 -0
- package/dist/infrastructure/auth/siwe-verify.js.map +1 -0
- package/dist/infrastructure/auth/types.d.ts +12 -0
- package/dist/infrastructure/auth/types.d.ts.map +1 -0
- package/dist/infrastructure/auth/types.js +8 -0
- package/dist/infrastructure/auth/types.js.map +1 -0
- package/dist/infrastructure/config/loader.d.ts +1 -10
- package/dist/infrastructure/config/loader.d.ts.map +1 -1
- package/dist/infrastructure/config/loader.js +0 -2
- package/dist/infrastructure/config/loader.js.map +1 -1
- package/dist/infrastructure/database/migrate.d.ts +6 -18
- package/dist/infrastructure/database/migrate.d.ts.map +1 -1
- package/dist/infrastructure/database/migrate.js +25 -2856
- package/dist/infrastructure/database/migrate.js.map +1 -1
- package/dist/infrastructure/database/migrations/v11-v20.d.ts +17 -0
- package/dist/infrastructure/database/migrations/v11-v20.d.ts.map +1 -0
- package/dist/infrastructure/database/migrations/v11-v20.js +295 -0
- package/dist/infrastructure/database/migrations/v11-v20.js.map +1 -0
- package/dist/infrastructure/database/migrations/v2-v10.d.ts +16 -0
- package/dist/infrastructure/database/migrations/v2-v10.d.ts.map +1 -0
- package/dist/infrastructure/database/migrations/v2-v10.js +539 -0
- package/dist/infrastructure/database/migrations/v2-v10.js.map +1 -0
- package/dist/infrastructure/database/migrations/v21-v30.d.ts +17 -0
- package/dist/infrastructure/database/migrations/v21-v30.d.ts.map +1 -0
- package/dist/infrastructure/database/migrations/v21-v30.js +507 -0
- package/dist/infrastructure/database/migrations/v21-v30.js.map +1 -0
- package/dist/infrastructure/database/migrations/v31-v40.d.ts +17 -0
- package/dist/infrastructure/database/migrations/v31-v40.d.ts.map +1 -0
- package/dist/infrastructure/database/migrations/v31-v40.js +203 -0
- package/dist/infrastructure/database/migrations/v31-v40.js.map +1 -0
- package/dist/infrastructure/database/migrations/v41-v50.d.ts +17 -0
- package/dist/infrastructure/database/migrations/v41-v50.d.ts.map +1 -0
- package/dist/infrastructure/database/migrations/v41-v50.js +188 -0
- package/dist/infrastructure/database/migrations/v41-v50.js.map +1 -0
- package/dist/infrastructure/database/migrations/v51-v59.d.ts +17 -0
- package/dist/infrastructure/database/migrations/v51-v59.d.ts.map +1 -0
- package/dist/infrastructure/database/migrations/v51-v59.js +420 -0
- package/dist/infrastructure/database/migrations/v51-v59.js.map +1 -0
- package/dist/infrastructure/database/schema-ddl.d.ts +24 -0
- package/dist/infrastructure/database/schema-ddl.d.ts.map +1 -0
- package/dist/infrastructure/database/schema-ddl.js +596 -0
- package/dist/infrastructure/database/schema-ddl.js.map +1 -0
- package/dist/infrastructure/database/schema.d.ts +38 -0
- package/dist/infrastructure/database/schema.d.ts.map +1 -1
- package/dist/infrastructure/database/schema.js +2 -0
- package/dist/infrastructure/database/schema.js.map +1 -1
- package/dist/infrastructure/jwt/jwt-secret-manager.d.ts.map +1 -1
- package/dist/infrastructure/jwt/jwt-secret-manager.js +16 -3
- package/dist/infrastructure/jwt/jwt-secret-manager.js.map +1 -1
- package/dist/infrastructure/nft/alchemy-nft-indexer.d.ts.map +1 -1
- package/dist/infrastructure/nft/alchemy-nft-indexer.js +0 -1
- package/dist/infrastructure/nft/alchemy-nft-indexer.js.map +1 -1
- package/dist/infrastructure/nft/helius-nft-indexer.d.ts.map +1 -1
- package/dist/infrastructure/nft/helius-nft-indexer.js +1 -2
- package/dist/infrastructure/nft/helius-nft-indexer.js.map +1 -1
- package/dist/infrastructure/nft/nft-indexer-client.d.ts.map +1 -1
- package/dist/infrastructure/nft/nft-indexer-client.js +0 -2
- package/dist/infrastructure/nft/nft-indexer-client.js.map +1 -1
- package/dist/infrastructure/security/ssrf-guard.d.ts +33 -0
- package/dist/infrastructure/security/ssrf-guard.d.ts.map +1 -0
- package/dist/infrastructure/security/ssrf-guard.js +244 -0
- package/dist/infrastructure/security/ssrf-guard.js.map +1 -0
- package/dist/infrastructure/settings/hot-reload.d.ts +1 -1
- package/dist/infrastructure/settings/hot-reload.d.ts.map +1 -1
- package/dist/infrastructure/settings/hot-reload.js +0 -2
- package/dist/infrastructure/settings/hot-reload.js.map +1 -1
- package/dist/infrastructure/settings/index.d.ts +2 -2
- package/dist/infrastructure/settings/index.d.ts.map +1 -1
- package/dist/infrastructure/settings/index.js +1 -1
- package/dist/infrastructure/settings/index.js.map +1 -1
- package/dist/infrastructure/settings/setting-keys.d.ts +14 -0
- package/dist/infrastructure/settings/setting-keys.d.ts.map +1 -1
- package/dist/infrastructure/settings/setting-keys.js +296 -214
- package/dist/infrastructure/settings/setting-keys.js.map +1 -1
- package/dist/infrastructure/settings/settings-service.d.ts +6 -1
- package/dist/infrastructure/settings/settings-service.d.ts.map +1 -1
- package/dist/infrastructure/settings/settings-service.js +15 -5
- package/dist/infrastructure/settings/settings-service.js.map +1 -1
- package/dist/infrastructure/telegram/telegram-bot-service.d.ts.map +1 -1
- package/dist/infrastructure/telegram/telegram-bot-service.js +3 -2
- package/dist/infrastructure/telegram/telegram-bot-service.js.map +1 -1
- package/dist/infrastructure/token-registry/builtin-tokens.d.ts.map +1 -1
- package/dist/infrastructure/token-registry/builtin-tokens.js +4 -7
- package/dist/infrastructure/token-registry/builtin-tokens.js.map +1 -1
- package/dist/lifecycle/daemon-pipeline.d.ts +49 -0
- package/dist/lifecycle/daemon-pipeline.d.ts.map +1 -0
- package/dist/lifecycle/daemon-pipeline.js +281 -0
- package/dist/lifecycle/daemon-pipeline.js.map +1 -0
- package/dist/lifecycle/daemon-shutdown.d.ts +14 -0
- package/dist/lifecycle/daemon-shutdown.d.ts.map +1 -0
- package/dist/lifecycle/daemon-shutdown.js +176 -0
- package/dist/lifecycle/daemon-shutdown.js.map +1 -0
- package/dist/lifecycle/daemon-startup.d.ts +15 -0
- package/dist/lifecycle/daemon-startup.d.ts.map +1 -0
- package/dist/lifecycle/daemon-startup.js +1527 -0
- package/dist/lifecycle/daemon-startup.js.map +1 -0
- package/dist/lifecycle/daemon.d.ts +171 -114
- package/dist/lifecycle/daemon.d.ts.map +1 -1
- package/dist/lifecycle/daemon.js +22 -1904
- package/dist/lifecycle/daemon.js.map +1 -1
- package/dist/notifications/channels/discord.d.ts.map +1 -1
- package/dist/notifications/channels/discord.js +1 -0
- package/dist/notifications/channels/discord.js.map +1 -1
- package/dist/notifications/channels/slack.d.ts.map +1 -1
- package/dist/notifications/channels/slack.js +1 -0
- package/dist/notifications/channels/slack.js.map +1 -1
- package/dist/notifications/index.d.ts +0 -1
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +0 -1
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/notification-service.d.ts.map +1 -1
- package/dist/notifications/notification-service.js +8 -6
- package/dist/notifications/notification-service.js.map +1 -1
- package/dist/pipeline/database-policy-engine.d.ts +18 -438
- package/dist/pipeline/database-policy-engine.d.ts.map +1 -1
- package/dist/pipeline/database-policy-engine.js +154 -1321
- package/dist/pipeline/database-policy-engine.js.map +1 -1
- package/dist/pipeline/dry-run.d.ts +5 -2
- package/dist/pipeline/dry-run.d.ts.map +1 -1
- package/dist/pipeline/dry-run.js +102 -8
- package/dist/pipeline/dry-run.js.map +1 -1
- package/dist/pipeline/evaluators/allowed-tokens.d.ts +28 -0
- package/dist/pipeline/evaluators/allowed-tokens.d.ts.map +1 -0
- package/dist/pipeline/evaluators/allowed-tokens.js +129 -0
- package/dist/pipeline/evaluators/allowed-tokens.js.map +1 -0
- package/dist/pipeline/evaluators/approved-spenders.d.ts +26 -0
- package/dist/pipeline/evaluators/approved-spenders.d.ts.map +1 -0
- package/dist/pipeline/evaluators/approved-spenders.js +115 -0
- package/dist/pipeline/evaluators/approved-spenders.js.map +1 -0
- package/dist/pipeline/evaluators/contract-whitelist.d.ts +28 -0
- package/dist/pipeline/evaluators/contract-whitelist.d.ts.map +1 -0
- package/dist/pipeline/evaluators/contract-whitelist.js +168 -0
- package/dist/pipeline/evaluators/contract-whitelist.js.map +1 -0
- package/dist/pipeline/evaluators/helpers.d.ts +9 -0
- package/dist/pipeline/evaluators/helpers.d.ts.map +1 -0
- package/dist/pipeline/evaluators/helpers.js +13 -0
- package/dist/pipeline/evaluators/helpers.js.map +1 -0
- package/dist/pipeline/evaluators/lending-asset-whitelist.d.ts +18 -0
- package/dist/pipeline/evaluators/lending-asset-whitelist.d.ts.map +1 -0
- package/dist/pipeline/evaluators/lending-asset-whitelist.js +44 -0
- package/dist/pipeline/evaluators/lending-asset-whitelist.js.map +1 -0
- package/dist/pipeline/evaluators/lending-ltv-limit.d.ts +24 -0
- package/dist/pipeline/evaluators/lending-ltv-limit.d.ts.map +1 -0
- package/dist/pipeline/evaluators/lending-ltv-limit.js +130 -0
- package/dist/pipeline/evaluators/lending-ltv-limit.js.map +1 -0
- package/dist/pipeline/evaluators/spending-limit.d.ts +46 -0
- package/dist/pipeline/evaluators/spending-limit.d.ts.map +1 -0
- package/dist/pipeline/evaluators/spending-limit.js +241 -0
- package/dist/pipeline/evaluators/spending-limit.js.map +1 -0
- package/dist/pipeline/evaluators/types.d.ts +71 -0
- package/dist/pipeline/evaluators/types.d.ts.map +1 -0
- package/dist/pipeline/evaluators/types.js +7 -0
- package/dist/pipeline/evaluators/types.js.map +1 -0
- package/dist/pipeline/external-action-pipeline.js.map +1 -1
- package/dist/pipeline/gas-condition-tracker.d.ts +1 -1
- package/dist/pipeline/gas-condition-tracker.js +1 -1
- package/dist/pipeline/pipeline-helpers.d.ts +146 -0
- package/dist/pipeline/pipeline-helpers.d.ts.map +1 -0
- package/dist/pipeline/pipeline-helpers.js +260 -0
- package/dist/pipeline/pipeline-helpers.js.map +1 -0
- package/dist/pipeline/pipeline.d.ts +1 -0
- package/dist/pipeline/pipeline.d.ts.map +1 -1
- package/dist/pipeline/pipeline.js +3 -2
- package/dist/pipeline/pipeline.js.map +1 -1
- package/dist/pipeline/resolve-effective-amount-usd.d.ts.map +1 -1
- package/dist/pipeline/resolve-effective-amount-usd.js +4 -10
- package/dist/pipeline/resolve-effective-amount-usd.js.map +1 -1
- package/dist/pipeline/sign-message.js +1 -1
- package/dist/pipeline/sign-message.js.map +1 -1
- package/dist/pipeline/sleep.d.ts +1 -5
- package/dist/pipeline/sleep.d.ts.map +1 -1
- package/dist/pipeline/sleep.js +2 -7
- package/dist/pipeline/sleep.js.map +1 -1
- package/dist/pipeline/stage1-validate.d.ts +8 -0
- package/dist/pipeline/stage1-validate.d.ts.map +1 -0
- package/dist/pipeline/stage1-validate.js +69 -0
- package/dist/pipeline/stage1-validate.js.map +1 -0
- package/dist/pipeline/stage2-auth.d.ts +12 -0
- package/dist/pipeline/stage2-auth.d.ts.map +1 -0
- package/dist/pipeline/stage2-auth.js +18 -0
- package/dist/pipeline/stage2-auth.js.map +1 -0
- package/dist/pipeline/stage3-policy.d.ts +26 -0
- package/dist/pipeline/stage3-policy.d.ts.map +1 -0
- package/dist/pipeline/stage3-policy.js +384 -0
- package/dist/pipeline/stage3-policy.js.map +1 -0
- package/dist/pipeline/stage4-wait.d.ts +8 -0
- package/dist/pipeline/stage4-wait.d.ts.map +1 -0
- package/dist/pipeline/stage4-wait.js +87 -0
- package/dist/pipeline/stage4-wait.js.map +1 -0
- package/dist/pipeline/stage5-execute.d.ts +120 -0
- package/dist/pipeline/stage5-execute.d.ts.map +1 -0
- package/dist/pipeline/stage5-execute.js +1070 -0
- package/dist/pipeline/stage5-execute.js.map +1 -0
- package/dist/pipeline/stage6-confirm.d.ts +11 -0
- package/dist/pipeline/stage6-confirm.d.ts.map +1 -0
- package/dist/pipeline/stage6-confirm.js +110 -0
- package/dist/pipeline/stage6-confirm.js.map +1 -0
- package/dist/pipeline/stages.d.ts +11 -245
- package/dist/pipeline/stages.d.ts.map +1 -1
- package/dist/pipeline/stages.js +11 -1896
- package/dist/pipeline/stages.js.map +1 -1
- package/dist/rpc-proxy/sync-pipeline.js +2 -2
- package/dist/rpc-proxy/sync-pipeline.js.map +1 -1
- package/dist/services/autostop/autostop-service.d.ts +4 -1
- package/dist/services/autostop/autostop-service.d.ts.map +1 -1
- package/dist/services/autostop/autostop-service.js +27 -7
- package/dist/services/autostop/autostop-service.js.map +1 -1
- package/dist/services/defi/position-tracker.d.ts +5 -0
- package/dist/services/defi/position-tracker.d.ts.map +1 -1
- package/dist/services/defi/position-tracker.js +41 -6
- package/dist/services/defi/position-tracker.js.map +1 -1
- package/dist/services/defi/position-write-queue.d.ts.map +1 -1
- package/dist/services/defi/position-write-queue.js +3 -2
- package/dist/services/defi/position-write-queue.js.map +1 -1
- package/dist/services/incoming/__tests__/integration-wiring.test.js +58 -0
- package/dist/services/incoming/__tests__/integration-wiring.test.js.map +1 -1
- package/dist/services/incoming/incoming-tx-monitor-service.d.ts.map +1 -1
- package/dist/services/incoming/incoming-tx-monitor-service.js +11 -14
- package/dist/services/incoming/incoming-tx-monitor-service.js.map +1 -1
- package/dist/services/incoming/incoming-tx-workers.d.ts +2 -2
- package/dist/services/incoming/incoming-tx-workers.d.ts.map +1 -1
- package/dist/services/incoming/incoming-tx-workers.js +1 -1
- package/dist/services/incoming/incoming-tx-workers.js.map +1 -1
- package/dist/services/incoming/safety-rules.d.ts.map +1 -1
- package/dist/services/incoming/safety-rules.js +3 -2
- package/dist/services/incoming/safety-rules.js.map +1 -1
- package/dist/services/incoming/subscription-multiplexer.d.ts +2 -6
- package/dist/services/incoming/subscription-multiplexer.d.ts.map +1 -1
- package/dist/services/incoming/subscription-multiplexer.js +1 -3
- package/dist/services/incoming/subscription-multiplexer.js.map +1 -1
- package/dist/services/monitoring/balance-monitor-service.d.ts.map +1 -1
- package/dist/services/monitoring/balance-monitor-service.js +2 -2
- package/dist/services/monitoring/balance-monitor-service.js.map +1 -1
- package/dist/services/signing-sdk/approval-channel-router.d.ts +7 -7
- package/dist/services/signing-sdk/approval-channel-router.d.ts.map +1 -1
- package/dist/services/signing-sdk/approval-channel-router.js +13 -13
- package/dist/services/signing-sdk/approval-channel-router.js.map +1 -1
- package/dist/services/signing-sdk/channels/index.d.ts +2 -2
- package/dist/services/signing-sdk/channels/index.d.ts.map +1 -1
- package/dist/services/signing-sdk/channels/index.js +1 -1
- package/dist/services/signing-sdk/channels/index.js.map +1 -1
- package/dist/services/signing-sdk/channels/push-relay-signing-channel.d.ts +59 -0
- package/dist/services/signing-sdk/channels/push-relay-signing-channel.d.ts.map +1 -0
- package/dist/services/signing-sdk/channels/push-relay-signing-channel.js +190 -0
- package/dist/services/signing-sdk/channels/push-relay-signing-channel.js.map +1 -0
- package/dist/services/signing-sdk/channels/telegram-signing-channel.d.ts +1 -1
- package/dist/services/signing-sdk/channels/telegram-signing-channel.js +1 -1
- package/dist/services/signing-sdk/channels/wallet-notification-channel.d.ts +6 -7
- package/dist/services/signing-sdk/channels/wallet-notification-channel.d.ts.map +1 -1
- package/dist/services/signing-sdk/channels/wallet-notification-channel.js +38 -55
- package/dist/services/signing-sdk/channels/wallet-notification-channel.js.map +1 -1
- package/dist/services/signing-sdk/index.d.ts +3 -3
- package/dist/services/signing-sdk/index.d.ts.map +1 -1
- package/dist/services/signing-sdk/index.js +2 -2
- package/dist/services/signing-sdk/index.js.map +1 -1
- package/dist/services/signing-sdk/preset-auto-setup.js +2 -2
- package/dist/services/signing-sdk/preset-auto-setup.js.map +1 -1
- package/dist/services/signing-sdk/sign-request-builder.d.ts +2 -2
- package/dist/services/signing-sdk/sign-request-builder.d.ts.map +1 -1
- package/dist/services/signing-sdk/sign-request-builder.js +17 -25
- package/dist/services/signing-sdk/sign-request-builder.js.map +1 -1
- package/dist/services/signing-sdk/wallet-app-service.d.ts +4 -0
- package/dist/services/signing-sdk/wallet-app-service.d.ts.map +1 -1
- package/dist/services/signing-sdk/wallet-app-service.js +12 -5
- package/dist/services/signing-sdk/wallet-app-service.js.map +1 -1
- package/dist/services/staking/aggregate-staking-balance.d.ts +24 -0
- package/dist/services/staking/aggregate-staking-balance.d.ts.map +1 -0
- package/dist/services/staking/aggregate-staking-balance.js +82 -0
- package/dist/services/staking/aggregate-staking-balance.js.map +1 -0
- package/dist/services/wc-session-service.d.ts.map +1 -1
- package/dist/services/wc-session-service.js +2 -1
- package/dist/services/wc-session-service.js.map +1 -1
- package/dist/services/wc-signing-bridge.js +2 -2
- package/dist/services/wc-signing-bridge.js.map +1 -1
- package/dist/services/x402/payment-signer.d.ts.map +1 -1
- package/dist/services/x402/payment-signer.js +2 -5
- package/dist/services/x402/payment-signer.js.map +1 -1
- package/dist/services/x402/ssrf-guard.d.ts +4 -23
- package/dist/services/x402/ssrf-guard.d.ts.map +1 -1
- package/dist/services/x402/ssrf-guard.js +3 -232
- package/dist/services/x402/ssrf-guard.js.map +1 -1
- package/dist/signing/capabilities/eip712-signer.d.ts.map +1 -1
- package/dist/signing/capabilities/eip712-signer.js +2 -0
- package/dist/signing/capabilities/eip712-signer.js.map +1 -1
- package/package.json +5 -5
- package/public/admin/assets/index-CpFF2lCo.js +3 -0
- package/public/admin/index.html +1 -1
- package/dist/notifications/channels/ntfy.d.ts +0 -13
- package/dist/notifications/channels/ntfy.d.ts.map +0 -1
- package/dist/notifications/channels/ntfy.js +0 -74
- package/dist/notifications/channels/ntfy.js.map +0 -1
- package/dist/services/signing-sdk/channels/ntfy-signing-channel.d.ts +0 -66
- package/dist/services/signing-sdk/channels/ntfy-signing-channel.d.ts.map +0 -1
- package/dist/services/signing-sdk/channels/ntfy-signing-channel.js +0 -270
- package/dist/services/signing-sdk/channels/ntfy-signing-channel.js.map +0 -1
- package/public/admin/assets/index-CQ3i4P2U.js +0 -3
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon-pipeline.ts - Extracted pipeline re-entry logic from DaemonLifecycle.
|
|
3
|
+
*
|
|
4
|
+
* Contains executeFromStage4(), executeFromStage5(), and handleApprovalApproved()
|
|
5
|
+
* that were previously ~300 lines in daemon.ts.
|
|
6
|
+
* Receives a DaemonState context object to read/write daemon fields.
|
|
7
|
+
*/
|
|
8
|
+
import { WAIaaSError, getSingleNetwork, safeJsonParse } from '@waiaas/core';
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
import { resolveRpcUrl } from '../infrastructure/adapter-pool.js';
|
|
11
|
+
import { transactions as txTable } from '../infrastructure/database/schema.js';
|
|
12
|
+
import { eq } from 'drizzle-orm';
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Null-object policy engine for stage 5-6 re-entry (policy already evaluated)
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
const NULL_POLICY_ENGINE = {
|
|
17
|
+
evaluate: async () => ({ allowed: true, tier: 'INSTANT' }),
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Re-enter the pipeline at stage4 for a gas-condition-met transaction.
|
|
21
|
+
*
|
|
22
|
+
* Called by the resumePipeline callback in AsyncPollingService when
|
|
23
|
+
* GasConditionTracker returns COMPLETED. Skips stages 1-3 and 3.5
|
|
24
|
+
* (already evaluated). Runs stage5Execute + stage6Confirm.
|
|
25
|
+
*
|
|
26
|
+
* Gas-condition transactions bypass stage4Wait (policy was already evaluated
|
|
27
|
+
* at Stage 3, and the transaction was only waiting for gas price -- no further
|
|
28
|
+
* delay/approval needed).
|
|
29
|
+
*
|
|
30
|
+
* @param state - DaemonState context
|
|
31
|
+
* @param txId - Transaction ID to execute
|
|
32
|
+
* @param walletId - Wallet that owns the transaction
|
|
33
|
+
*/
|
|
34
|
+
export async function executeFromStage4(state, txId, walletId) {
|
|
35
|
+
try {
|
|
36
|
+
if (!state._db || !state.adapterPool || !state.keyStore || !state._config) {
|
|
37
|
+
console.warn(`executeFromStage4(${txId}): missing deps, skipping`);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// Import stages and schema
|
|
41
|
+
const { stage5Execute, stage6Confirm } = await import('../pipeline/stages.js');
|
|
42
|
+
const { wallets, transactions } = await import('../infrastructure/database/schema.js');
|
|
43
|
+
const { eq } = await import('drizzle-orm');
|
|
44
|
+
// Look up wallet from DB
|
|
45
|
+
const wallet = state._db.select().from(wallets).where(eq(wallets.id, walletId)).get();
|
|
46
|
+
if (!wallet) {
|
|
47
|
+
console.warn(`executeFromStage4(${txId}): wallet ${walletId} not found`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// Look up transaction to get request data
|
|
51
|
+
const tx = state._db.select().from(transactions).where(eq(transactions.id, txId)).get();
|
|
52
|
+
if (!tx) {
|
|
53
|
+
console.warn(`executeFromStage4(${txId}): transaction not found`);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
// Use network recorded at Stage 1 (NOT re-resolve)
|
|
57
|
+
const resolvedNetwork = tx.network
|
|
58
|
+
?? getSingleNetwork(wallet.chain, wallet.environment)
|
|
59
|
+
?? (() => { throw new WAIaaSError('NETWORK_REQUIRED'); })();
|
|
60
|
+
// Resolve adapter from pool using recorded network
|
|
61
|
+
const rpcUrl = resolveRpcUrl(state._config.rpc, wallet.chain, resolvedNetwork);
|
|
62
|
+
const adapter = await state.adapterPool.resolve(wallet.chain, resolvedNetwork, rpcUrl);
|
|
63
|
+
// Restore original request from metadata (#208)
|
|
64
|
+
// DELAY/GAS_WAITING re-entry needs full request to rebuild correct tx type
|
|
65
|
+
const TxMetadataSchema = z.object({ originalRequest: z.record(z.unknown()).optional() }).passthrough();
|
|
66
|
+
const meta = tx.metadata
|
|
67
|
+
? (() => { const r = safeJsonParse(tx.metadata, TxMetadataSchema); return r.success ? r.data : {}; })()
|
|
68
|
+
: {};
|
|
69
|
+
const request = (meta.originalRequest ?? {
|
|
70
|
+
to: tx.toAddress ?? '',
|
|
71
|
+
amount: tx.amount ?? '0',
|
|
72
|
+
memo: undefined,
|
|
73
|
+
});
|
|
74
|
+
// Construct PipelineContext for stages 5-6
|
|
75
|
+
// Policy already evaluated at Stage 3 before GAS_WAITING entry
|
|
76
|
+
const ctx = {
|
|
77
|
+
db: state._db,
|
|
78
|
+
adapter,
|
|
79
|
+
keyStore: state.keyStore,
|
|
80
|
+
policyEngine: NULL_POLICY_ENGINE, // Not needed for stages 5-6
|
|
81
|
+
masterPassword: state.masterPassword,
|
|
82
|
+
walletId,
|
|
83
|
+
wallet: {
|
|
84
|
+
publicKey: wallet.publicKey,
|
|
85
|
+
chain: wallet.chain,
|
|
86
|
+
environment: wallet.environment,
|
|
87
|
+
// #251: pass AA fields for Smart Account re-entry
|
|
88
|
+
accountType: wallet.accountType,
|
|
89
|
+
aaProvider: wallet.aaProvider,
|
|
90
|
+
aaProviderApiKeyEncrypted: wallet.aaProviderApiKeyEncrypted,
|
|
91
|
+
aaBundlerUrl: wallet.aaBundlerUrl,
|
|
92
|
+
aaPaymasterUrl: wallet.aaPaymasterUrl,
|
|
93
|
+
aaPaymasterPolicyId: wallet.aaPaymasterPolicyId,
|
|
94
|
+
},
|
|
95
|
+
resolvedNetwork,
|
|
96
|
+
resolvedRpcUrl: rpcUrl,
|
|
97
|
+
request,
|
|
98
|
+
txId,
|
|
99
|
+
eventBus: state.eventBus,
|
|
100
|
+
notificationService: state.notificationService ?? undefined,
|
|
101
|
+
};
|
|
102
|
+
// Skip stage4Wait -- gas condition met, proceed directly to execution
|
|
103
|
+
await stage5Execute(ctx);
|
|
104
|
+
await stage6Confirm(ctx);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
// Mark as FAILED if stages 5-6 throw
|
|
108
|
+
try {
|
|
109
|
+
if (state._db) {
|
|
110
|
+
const { transactions } = await import('../infrastructure/database/schema.js');
|
|
111
|
+
const { eq } = await import('drizzle-orm');
|
|
112
|
+
const errorMessage = error instanceof Error ? error.message : 'Gas condition pipeline re-entry failed';
|
|
113
|
+
state._db
|
|
114
|
+
.update(transactions)
|
|
115
|
+
.set({ status: 'FAILED', error: errorMessage })
|
|
116
|
+
.where(eq(transactions.id, txId))
|
|
117
|
+
.run();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// Swallow DB update errors in background
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Resume pipeline after APPROVAL tier owner sign-off (fix #246).
|
|
127
|
+
*
|
|
128
|
+
* Shared handler for all 4 approval paths:
|
|
129
|
+
* 1. REST API (ApprovalWorkflow.approve)
|
|
130
|
+
* 2. WalletConnect (WcSigningBridge -> ApprovalWorkflow.approve)
|
|
131
|
+
* 3. Signing SDK (SignResponseHandler.handleApprove)
|
|
132
|
+
* 4. Telegram Bot (TelegramBotService.handleApprove)
|
|
133
|
+
*
|
|
134
|
+
* Looks up the transaction's walletId, then delegates to executeFromStage5.
|
|
135
|
+
*/
|
|
136
|
+
export function handleApprovalApproved(state, txId) {
|
|
137
|
+
try {
|
|
138
|
+
if (!state._db)
|
|
139
|
+
return;
|
|
140
|
+
const tx = state._db.select().from(txTable).where(eq(txTable.id, txId)).get();
|
|
141
|
+
if (tx) {
|
|
142
|
+
void executeFromStage5(state, txId, tx.walletId);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
console.warn(`[handleApprovalApproved] Failed for ${txId}:`, error);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Re-enter the pipeline at stage5 for a delay-expired transaction.
|
|
151
|
+
*
|
|
152
|
+
* Called by the delay-expired BackgroundWorker when processExpired()
|
|
153
|
+
* returns transactions whose cooldown has elapsed.
|
|
154
|
+
* Also called by handleApprovalApproved for APPROVAL tier transactions.
|
|
155
|
+
*
|
|
156
|
+
* @param state - DaemonState context
|
|
157
|
+
* @param txId - Transaction ID to execute
|
|
158
|
+
* @param walletId - Wallet that owns the transaction
|
|
159
|
+
*/
|
|
160
|
+
export async function executeFromStage5(state, txId, walletId) {
|
|
161
|
+
try {
|
|
162
|
+
if (!state._db || !state.adapterPool || !state.keyStore || !state._config) {
|
|
163
|
+
console.warn(`executeFromStage5(${txId}): missing deps, skipping`);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
// Import stages and schema
|
|
167
|
+
const { stage5Execute, stage6Confirm } = await import('../pipeline/stages.js');
|
|
168
|
+
const { wallets, transactions } = await import('../infrastructure/database/schema.js');
|
|
169
|
+
const { eq } = await import('drizzle-orm');
|
|
170
|
+
// Look up wallet from DB
|
|
171
|
+
const wallet = state._db.select().from(wallets).where(eq(wallets.id, walletId)).get();
|
|
172
|
+
if (!wallet) {
|
|
173
|
+
console.warn(`executeFromStage5(${txId}): wallet ${walletId} not found`);
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
// Look up transaction to get request data
|
|
177
|
+
const tx = state._db.select().from(transactions).where(eq(transactions.id, txId)).get();
|
|
178
|
+
if (!tx) {
|
|
179
|
+
console.warn(`executeFromStage5(${txId}): transaction not found`);
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
// Use network recorded at Stage 1 (NOT re-resolve)
|
|
183
|
+
const resolvedNetwork = tx.network
|
|
184
|
+
?? getSingleNetwork(wallet.chain, wallet.environment)
|
|
185
|
+
?? (() => { throw new WAIaaSError('NETWORK_REQUIRED'); })();
|
|
186
|
+
// Resolve adapter from pool using recorded network
|
|
187
|
+
const rpcUrl = resolveRpcUrl(state._config.rpc, wallet.chain, resolvedNetwork);
|
|
188
|
+
const adapter = await state.adapterPool.resolve(wallet.chain, resolvedNetwork, rpcUrl);
|
|
189
|
+
// Restore original request from metadata (#208)
|
|
190
|
+
const TxMetadataSchema2 = z.object({ originalRequest: z.record(z.unknown()).optional() }).passthrough();
|
|
191
|
+
const meta = tx.metadata
|
|
192
|
+
? (() => { const r = safeJsonParse(tx.metadata, TxMetadataSchema2); return r.success ? r.data : {}; })()
|
|
193
|
+
: {};
|
|
194
|
+
let request = (meta.originalRequest ?? {
|
|
195
|
+
to: tx.toAddress ?? '',
|
|
196
|
+
amount: tx.amount ?? '0',
|
|
197
|
+
memo: undefined,
|
|
198
|
+
});
|
|
199
|
+
// Phase 321: Re-encode calldata for EIP-712 approvals (setAgentWallet)
|
|
200
|
+
// The original calldata has a placeholder '0x' signature. On approval,
|
|
201
|
+
// the Owner's real EIP-712 signature is stored in pending_approvals.
|
|
202
|
+
// Re-encode the calldata with the real signature before stage5Execute.
|
|
203
|
+
if (state.sqlite) {
|
|
204
|
+
const approvalRow = state.sqlite.prepare('SELECT approval_type, typed_data_json, owner_signature FROM pending_approvals WHERE tx_id = ?').get(txId);
|
|
205
|
+
if (approvalRow?.approval_type === 'EIP712' && approvalRow.typed_data_json && approvalRow.owner_signature) {
|
|
206
|
+
try {
|
|
207
|
+
const Eip712DataSchema = z.object({ message: z.object({ agentId: z.union([z.string(), z.number()]), newWallet: z.string(), deadline: z.union([z.string(), z.number()]) }) }).passthrough();
|
|
208
|
+
const typedDataResult = safeJsonParse(approvalRow.typed_data_json, Eip712DataSchema);
|
|
209
|
+
if (!typedDataResult.success)
|
|
210
|
+
throw new Error('Invalid typed_data_json');
|
|
211
|
+
const typedData = typedDataResult.data;
|
|
212
|
+
const { encodeFunctionData } = await import('viem');
|
|
213
|
+
const { IDENTITY_REGISTRY_ABI } = await import('@waiaas/actions');
|
|
214
|
+
const reEncodedCalldata = encodeFunctionData({
|
|
215
|
+
abi: IDENTITY_REGISTRY_ABI,
|
|
216
|
+
functionName: 'setAgentWallet',
|
|
217
|
+
args: [
|
|
218
|
+
BigInt(typedData.message.agentId),
|
|
219
|
+
typedData.message.newWallet,
|
|
220
|
+
BigInt(typedData.message.deadline),
|
|
221
|
+
approvalRow.owner_signature,
|
|
222
|
+
],
|
|
223
|
+
});
|
|
224
|
+
// Replace calldata in the request object
|
|
225
|
+
request = { ...request, calldata: reEncodedCalldata };
|
|
226
|
+
}
|
|
227
|
+
catch (err) {
|
|
228
|
+
console.warn(`[executeFromStage5] EIP-712 calldata re-encoding failed for ${txId}:`, err);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
// Construct PipelineContext for stages 5-6
|
|
233
|
+
const ctx = {
|
|
234
|
+
db: state._db,
|
|
235
|
+
adapter,
|
|
236
|
+
keyStore: state.keyStore,
|
|
237
|
+
policyEngine: NULL_POLICY_ENGINE, // Not needed for stages 5-6
|
|
238
|
+
masterPassword: state.masterPassword,
|
|
239
|
+
walletId,
|
|
240
|
+
wallet: {
|
|
241
|
+
publicKey: wallet.publicKey,
|
|
242
|
+
chain: wallet.chain,
|
|
243
|
+
environment: wallet.environment,
|
|
244
|
+
// #251: pass AA fields for Smart Account re-entry
|
|
245
|
+
accountType: wallet.accountType,
|
|
246
|
+
aaProvider: wallet.aaProvider,
|
|
247
|
+
aaProviderApiKeyEncrypted: wallet.aaProviderApiKeyEncrypted,
|
|
248
|
+
aaBundlerUrl: wallet.aaBundlerUrl,
|
|
249
|
+
aaPaymasterUrl: wallet.aaPaymasterUrl,
|
|
250
|
+
aaPaymasterPolicyId: wallet.aaPaymasterPolicyId,
|
|
251
|
+
},
|
|
252
|
+
resolvedNetwork,
|
|
253
|
+
resolvedRpcUrl: rpcUrl,
|
|
254
|
+
request,
|
|
255
|
+
txId,
|
|
256
|
+
eventBus: state.eventBus,
|
|
257
|
+
notificationService: state.notificationService ?? undefined,
|
|
258
|
+
};
|
|
259
|
+
await stage5Execute(ctx);
|
|
260
|
+
await stage6Confirm(ctx);
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
// Mark as FAILED if stages 5-6 throw
|
|
264
|
+
try {
|
|
265
|
+
if (state._db) {
|
|
266
|
+
const { transactions } = await import('../infrastructure/database/schema.js');
|
|
267
|
+
const { eq } = await import('drizzle-orm');
|
|
268
|
+
const errorMessage = error instanceof Error ? error.message : 'Pipeline re-entry failed';
|
|
269
|
+
state._db
|
|
270
|
+
.update(transactions)
|
|
271
|
+
.set({ status: 'FAILED', error: errorMessage })
|
|
272
|
+
.where(eq(transactions.id, txId))
|
|
273
|
+
.run();
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
// Swallow DB update errors in background
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=daemon-pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-pipeline.js","sourceRoot":"","sources":["../../src/lifecycle/daemon-pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon-shutdown.ts - Extracted 10-step shutdown cascade from DaemonLifecycle.
|
|
3
|
+
*
|
|
4
|
+
* Contains the full shutdown() body that was previously ~180 lines in daemon.ts.
|
|
5
|
+
* Receives a DaemonState context object to read/write daemon fields.
|
|
6
|
+
*
|
|
7
|
+
* @see docs/28-daemon-lifecycle-cli.md
|
|
8
|
+
*/
|
|
9
|
+
import type { DaemonState } from './daemon.js';
|
|
10
|
+
/**
|
|
11
|
+
* 10-step graceful shutdown cascade.
|
|
12
|
+
*/
|
|
13
|
+
export declare function shutdownDaemon(state: DaemonState, signal: string): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=daemon-shutdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-shutdown.d.ts","sourceRoot":"","sources":["../../src/lifecycle/daemon-shutdown.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmLtF"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon-shutdown.ts - Extracted 10-step shutdown cascade from DaemonLifecycle.
|
|
3
|
+
*
|
|
4
|
+
* Contains the full shutdown() body that was previously ~180 lines in daemon.ts.
|
|
5
|
+
* Receives a DaemonState context object to read/write daemon fields.
|
|
6
|
+
*
|
|
7
|
+
* @see docs/28-daemon-lifecycle-cli.md
|
|
8
|
+
*/
|
|
9
|
+
import { unlinkSync } from 'node:fs';
|
|
10
|
+
/**
|
|
11
|
+
* 10-step graceful shutdown cascade.
|
|
12
|
+
*/
|
|
13
|
+
export async function shutdownDaemon(state, signal) {
|
|
14
|
+
// Guard against double shutdown
|
|
15
|
+
if (state._isShuttingDown)
|
|
16
|
+
return;
|
|
17
|
+
state._isShuttingDown = true;
|
|
18
|
+
console.log(`Shutdown initiated by ${signal}`);
|
|
19
|
+
// Start force-exit timer (configurable, default 30s)
|
|
20
|
+
const timeout = state._config?.daemon.shutdown_timeout ?? 30;
|
|
21
|
+
state.forceTimer = setTimeout(() => {
|
|
22
|
+
console.error('Force exit: shutdown timeout exceeded');
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}, timeout * 1000);
|
|
25
|
+
state.forceTimer.unref(); // don't prevent exit
|
|
26
|
+
try {
|
|
27
|
+
// Steps 1: Set flag + log (done above)
|
|
28
|
+
// Steps 2-4: HTTP server close
|
|
29
|
+
if (state.httpServer) {
|
|
30
|
+
state.httpServer.close();
|
|
31
|
+
console.log('Steps 2-4: HTTP server closed');
|
|
32
|
+
}
|
|
33
|
+
// Steps 5-6: In-flight signing + pending queue persistence -- not yet implemented
|
|
34
|
+
// Disconnect all chain adapters
|
|
35
|
+
if (state.adapterPool) {
|
|
36
|
+
try {
|
|
37
|
+
await state.adapterPool.disconnectAll();
|
|
38
|
+
console.log('Adapter pool disconnected');
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
console.warn('Adapter pool disconnect warning:', err);
|
|
42
|
+
}
|
|
43
|
+
state.adapterPool = null;
|
|
44
|
+
}
|
|
45
|
+
// Stop AutoStop engine (before EventBus cleanup)
|
|
46
|
+
if (state.autoStopService) {
|
|
47
|
+
state.autoStopService.stop();
|
|
48
|
+
state.autoStopService = null;
|
|
49
|
+
}
|
|
50
|
+
// Stop PositionTracker (before BalanceMonitor for cleaner ordering)
|
|
51
|
+
if (state.positionTracker) {
|
|
52
|
+
state.positionTracker.stop();
|
|
53
|
+
state.positionTracker = null;
|
|
54
|
+
}
|
|
55
|
+
// Stop DeFiMonitorService
|
|
56
|
+
if (state.defiMonitorService) {
|
|
57
|
+
state.defiMonitorService.stop();
|
|
58
|
+
state.defiMonitorService = null;
|
|
59
|
+
}
|
|
60
|
+
// Stop BalanceMonitorService (before EventBus cleanup)
|
|
61
|
+
if (state.balanceMonitorService) {
|
|
62
|
+
state.balanceMonitorService.stop();
|
|
63
|
+
state.balanceMonitorService = null;
|
|
64
|
+
}
|
|
65
|
+
// Stop TelegramBotService (before EventBus cleanup)
|
|
66
|
+
if (state.telegramBotService) {
|
|
67
|
+
state.telegramBotService.stop();
|
|
68
|
+
state.telegramBotService = null;
|
|
69
|
+
state.telegramBotRef.current = null;
|
|
70
|
+
}
|
|
71
|
+
// Stop ApprovalChannelRouter (shuts down signing channels)
|
|
72
|
+
if (state.approvalChannelRouter) {
|
|
73
|
+
state.approvalChannelRouter.shutdown();
|
|
74
|
+
state.approvalChannelRouter = null;
|
|
75
|
+
}
|
|
76
|
+
// Stop WcSessionService (before EventBus cleanup)
|
|
77
|
+
if (state.wcSessionService) {
|
|
78
|
+
try {
|
|
79
|
+
await state.wcSessionService.shutdown();
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
console.warn('WcSessionService shutdown warning:', err);
|
|
83
|
+
}
|
|
84
|
+
state.wcSessionService = null;
|
|
85
|
+
state.wcServiceRef.current = null;
|
|
86
|
+
}
|
|
87
|
+
// Stop IncomingTxMonitorService (final flush + destroy subscribers)
|
|
88
|
+
if (state.incomingTxMonitorService) {
|
|
89
|
+
try {
|
|
90
|
+
await state.incomingTxMonitorService.stop();
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
console.warn('IncomingTxMonitorService shutdown warning:', err);
|
|
94
|
+
}
|
|
95
|
+
state.incomingTxMonitorService = null;
|
|
96
|
+
}
|
|
97
|
+
// Clear AsyncPollingService reference (workers.stopAll() handles the timer)
|
|
98
|
+
state._asyncPollingService = null;
|
|
99
|
+
// WebhookService destroy (before removing EventBus listeners)
|
|
100
|
+
state.webhookService?.destroy();
|
|
101
|
+
state.webhookService = null;
|
|
102
|
+
// Step 6b: Remove all EventBus listeners
|
|
103
|
+
state.eventBus.removeAllListeners();
|
|
104
|
+
// Step 7: Stop background workers
|
|
105
|
+
if (state.workers) {
|
|
106
|
+
await state.workers.stopAll();
|
|
107
|
+
console.log('Step 7: Workers stopped');
|
|
108
|
+
}
|
|
109
|
+
// Step 8: WAL checkpoint(TRUNCATE)
|
|
110
|
+
if (state.sqlite) {
|
|
111
|
+
try {
|
|
112
|
+
state.sqlite.pragma('wal_checkpoint(TRUNCATE)');
|
|
113
|
+
console.log('Step 8: WAL checkpoint complete');
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
console.warn('Step 8: WAL checkpoint warning:', err);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Step 9: Keystore lock (sodium_memzero all guarded buffers)
|
|
120
|
+
if (state.keyStore) {
|
|
121
|
+
state.keyStore.lockAll();
|
|
122
|
+
console.log('Step 9: Keystore locked');
|
|
123
|
+
}
|
|
124
|
+
// Clear master password and hash from memory
|
|
125
|
+
state.masterPassword = '';
|
|
126
|
+
state.masterPasswordHash = '';
|
|
127
|
+
if (state.passwordRef) {
|
|
128
|
+
state.passwordRef.password = '';
|
|
129
|
+
state.passwordRef.hash = '';
|
|
130
|
+
state.passwordRef = null;
|
|
131
|
+
}
|
|
132
|
+
// Step 10: Close DB, unlink PID, release lock
|
|
133
|
+
if (state.sqlite) {
|
|
134
|
+
try {
|
|
135
|
+
state.sqlite.close();
|
|
136
|
+
console.log('Step 10: Database closed');
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
console.warn('Step 10: DB close warning:', err);
|
|
140
|
+
}
|
|
141
|
+
state.sqlite = null;
|
|
142
|
+
state._db = null;
|
|
143
|
+
}
|
|
144
|
+
// Delete PID file
|
|
145
|
+
if (state.pidPath) {
|
|
146
|
+
try {
|
|
147
|
+
unlinkSync(state.pidPath);
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
// Ignore if already deleted
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Release daemon lock
|
|
154
|
+
if (state.releaseLock) {
|
|
155
|
+
try {
|
|
156
|
+
await state.releaseLock();
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// Ignore lock release errors during shutdown
|
|
160
|
+
}
|
|
161
|
+
state.releaseLock = null;
|
|
162
|
+
}
|
|
163
|
+
// Cancel force timer
|
|
164
|
+
if (state.forceTimer) {
|
|
165
|
+
clearTimeout(state.forceTimer);
|
|
166
|
+
state.forceTimer = null;
|
|
167
|
+
}
|
|
168
|
+
console.log('Shutdown complete');
|
|
169
|
+
process.exit(0);
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
console.error('Shutdown error:', err);
|
|
173
|
+
process.exit(1);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=daemon-shutdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-shutdown.js","sourceRoot":"","sources":["../../src/lifecycle/daemon-shutdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon-startup.ts - Extracted 6-step startup sequence from DaemonLifecycle.
|
|
3
|
+
*
|
|
4
|
+
* Contains the full _startInternal() body that was previously ~1,650 lines
|
|
5
|
+
* in daemon.ts. Receives a DaemonState context object to read/write daemon fields.
|
|
6
|
+
*
|
|
7
|
+
* @see docs/28-daemon-lifecycle-cli.md
|
|
8
|
+
*/
|
|
9
|
+
import type { DaemonState } from './daemon.js';
|
|
10
|
+
/**
|
|
11
|
+
* 6-step startup sequence with per-step timeouts.
|
|
12
|
+
* Receives DaemonState to read/write daemon fields.
|
|
13
|
+
*/
|
|
14
|
+
export declare function startDaemon(state: DaemonState, dataDir: string, masterPassword: string): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=daemon-startup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-startup.d.ts","sourceRoot":"","sources":["../../src/lifecycle/daemon-startup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAyBH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAU/C;;;GAGG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAq2C5G"}
|