@waiaas/daemon 2.0.0-rc.1
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/dist/api/error-hints.d.ts +15 -0
- package/dist/api/error-hints.d.ts.map +1 -0
- package/dist/api/error-hints.js +71 -0
- package/dist/api/error-hints.js.map +1 -0
- package/dist/api/index.d.ts +11 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +14 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/middleware/address-validation.d.ts +38 -0
- package/dist/api/middleware/address-validation.d.ts.map +1 -0
- package/dist/api/middleware/address-validation.js +134 -0
- package/dist/api/middleware/address-validation.js.map +1 -0
- package/dist/api/middleware/csp.d.ts +17 -0
- package/dist/api/middleware/csp.d.ts.map +1 -0
- package/dist/api/middleware/csp.js +31 -0
- package/dist/api/middleware/csp.js.map +1 -0
- package/dist/api/middleware/error-handler.d.ts +16 -0
- package/dist/api/middleware/error-handler.d.ts.map +1 -0
- package/dist/api/middleware/error-handler.js +46 -0
- package/dist/api/middleware/error-handler.js.map +1 -0
- package/dist/api/middleware/host-guard.d.ts +11 -0
- package/dist/api/middleware/host-guard.d.ts.map +1 -0
- package/dist/api/middleware/host-guard.js +25 -0
- package/dist/api/middleware/host-guard.js.map +1 -0
- package/dist/api/middleware/index.d.ts +13 -0
- package/dist/api/middleware/index.d.ts.map +1 -0
- package/dist/api/middleware/index.js +13 -0
- package/dist/api/middleware/index.js.map +1 -0
- package/dist/api/middleware/kill-switch-guard.d.ts +19 -0
- package/dist/api/middleware/kill-switch-guard.d.ts.map +1 -0
- package/dist/api/middleware/kill-switch-guard.js +49 -0
- package/dist/api/middleware/kill-switch-guard.js.map +1 -0
- package/dist/api/middleware/master-auth.d.ts +15 -0
- package/dist/api/middleware/master-auth.d.ts.map +1 -0
- package/dist/api/middleware/master-auth.js +35 -0
- package/dist/api/middleware/master-auth.js.map +1 -0
- package/dist/api/middleware/owner-auth.d.ts +30 -0
- package/dist/api/middleware/owner-auth.d.ts.map +1 -0
- package/dist/api/middleware/owner-auth.js +133 -0
- package/dist/api/middleware/owner-auth.js.map +1 -0
- package/dist/api/middleware/request-id.d.ts +10 -0
- package/dist/api/middleware/request-id.d.ts.map +1 -0
- package/dist/api/middleware/request-id.js +18 -0
- package/dist/api/middleware/request-id.js.map +1 -0
- package/dist/api/middleware/request-logger.d.ts +9 -0
- package/dist/api/middleware/request-logger.d.ts.map +1 -0
- package/dist/api/middleware/request-logger.js +18 -0
- package/dist/api/middleware/request-logger.js.map +1 -0
- package/dist/api/middleware/session-auth.d.ts +21 -0
- package/dist/api/middleware/session-auth.d.ts.map +1 -0
- package/dist/api/middleware/session-auth.js +51 -0
- package/dist/api/middleware/session-auth.js.map +1 -0
- package/dist/api/middleware/siwe-verify.d.ts +31 -0
- package/dist/api/middleware/siwe-verify.d.ts.map +1 -0
- package/dist/api/middleware/siwe-verify.js +55 -0
- package/dist/api/middleware/siwe-verify.js.map +1 -0
- package/dist/api/routes/actions.d.ts +56 -0
- package/dist/api/routes/actions.d.ts.map +1 -0
- package/dist/api/routes/actions.js +291 -0
- package/dist/api/routes/actions.js.map +1 -0
- package/dist/api/routes/admin.d.ts +99 -0
- package/dist/api/routes/admin.d.ts.map +1 -0
- package/dist/api/routes/admin.js +1304 -0
- package/dist/api/routes/admin.js.map +1 -0
- package/dist/api/routes/display-currency-helper.d.ts +26 -0
- package/dist/api/routes/display-currency-helper.d.ts.map +1 -0
- package/dist/api/routes/display-currency-helper.js +47 -0
- package/dist/api/routes/display-currency-helper.js.map +1 -0
- package/dist/api/routes/health.d.ts +14 -0
- package/dist/api/routes/health.d.ts.map +1 -0
- package/dist/api/routes/health.js +47 -0
- package/dist/api/routes/health.js.map +1 -0
- package/dist/api/routes/index.d.ts +15 -0
- package/dist/api/routes/index.d.ts.map +1 -0
- package/dist/api/routes/index.js +15 -0
- package/dist/api/routes/index.js.map +1 -0
- package/dist/api/routes/mcp.d.ts +30 -0
- package/dist/api/routes/mcp.d.ts.map +1 -0
- package/dist/api/routes/mcp.js +156 -0
- package/dist/api/routes/mcp.js.map +1 -0
- package/dist/api/routes/nonce.d.ts +20 -0
- package/dist/api/routes/nonce.d.ts.map +1 -0
- package/dist/api/routes/nonce.js +48 -0
- package/dist/api/routes/nonce.js.map +1 -0
- package/dist/api/routes/openapi-schemas.d.ts +2281 -0
- package/dist/api/routes/openapi-schemas.d.ts.map +1 -0
- package/dist/api/routes/openapi-schemas.js +770 -0
- package/dist/api/routes/openapi-schemas.js.map +1 -0
- package/dist/api/routes/policies.d.ts +29 -0
- package/dist/api/routes/policies.d.ts.map +1 -0
- package/dist/api/routes/policies.js +332 -0
- package/dist/api/routes/policies.js.map +1 -0
- package/dist/api/routes/sessions.d.ts +35 -0
- package/dist/api/routes/sessions.d.ts.map +1 -0
- package/dist/api/routes/sessions.js +347 -0
- package/dist/api/routes/sessions.js.map +1 -0
- package/dist/api/routes/skills.d.ts +9 -0
- package/dist/api/routes/skills.d.ts.map +1 -0
- package/dist/api/routes/skills.js +59 -0
- package/dist/api/routes/skills.js.map +1 -0
- package/dist/api/routes/tokens.d.ts +25 -0
- package/dist/api/routes/tokens.d.ts.map +1 -0
- package/dist/api/routes/tokens.js +161 -0
- package/dist/api/routes/tokens.js.map +1 -0
- package/dist/api/routes/transactions.d.ts +68 -0
- package/dist/api/routes/transactions.d.ts.map +1 -0
- package/dist/api/routes/transactions.js +576 -0
- package/dist/api/routes/transactions.js.map +1 -0
- package/dist/api/routes/utils.d.ts +9 -0
- package/dist/api/routes/utils.d.ts.map +1 -0
- package/dist/api/routes/utils.js +52 -0
- package/dist/api/routes/utils.js.map +1 -0
- package/dist/api/routes/wallet.d.ts +36 -0
- package/dist/api/routes/wallet.d.ts.map +1 -0
- package/dist/api/routes/wallet.js +358 -0
- package/dist/api/routes/wallet.js.map +1 -0
- package/dist/api/routes/wallets.d.ts +43 -0
- package/dist/api/routes/wallets.d.ts.map +1 -0
- package/dist/api/routes/wallets.js +630 -0
- package/dist/api/routes/wallets.js.map +1 -0
- package/dist/api/routes/wc.d.ts +46 -0
- package/dist/api/routes/wc.d.ts.map +1 -0
- package/dist/api/routes/wc.js +354 -0
- package/dist/api/routes/wc.js.map +1 -0
- package/dist/api/routes/x402.d.ts +61 -0
- package/dist/api/routes/x402.d.ts.map +1 -0
- package/dist/api/routes/x402.js +493 -0
- package/dist/api/routes/x402.js.map +1 -0
- package/dist/api/server.d.ts +81 -0
- package/dist/api/server.d.ts.map +1 -0
- package/dist/api/server.js +406 -0
- package/dist/api/server.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/action/action-provider-registry.d.ts +77 -0
- package/dist/infrastructure/action/action-provider-registry.d.ts.map +1 -0
- package/dist/infrastructure/action/action-provider-registry.js +239 -0
- package/dist/infrastructure/action/action-provider-registry.js.map +1 -0
- package/dist/infrastructure/action/api-key-store.d.ts +60 -0
- package/dist/infrastructure/action/api-key-store.d.ts.map +1 -0
- package/dist/infrastructure/action/api-key-store.js +130 -0
- package/dist/infrastructure/action/api-key-store.js.map +1 -0
- package/dist/infrastructure/action/index.d.ts +10 -0
- package/dist/infrastructure/action/index.d.ts.map +1 -0
- package/dist/infrastructure/action/index.js +9 -0
- package/dist/infrastructure/action/index.js.map +1 -0
- package/dist/infrastructure/adapter-pool.d.ts +50 -0
- package/dist/infrastructure/adapter-pool.d.ts.map +1 -0
- package/dist/infrastructure/adapter-pool.js +110 -0
- package/dist/infrastructure/adapter-pool.js.map +1 -0
- package/dist/infrastructure/backup/backup-service.d.ts +53 -0
- package/dist/infrastructure/backup/backup-service.d.ts.map +1 -0
- package/dist/infrastructure/backup/backup-service.js +158 -0
- package/dist/infrastructure/backup/backup-service.js.map +1 -0
- package/dist/infrastructure/backup/index.d.ts +2 -0
- package/dist/infrastructure/backup/index.d.ts.map +1 -0
- package/dist/infrastructure/backup/index.js +2 -0
- package/dist/infrastructure/backup/index.js.map +1 -0
- package/dist/infrastructure/config/index.d.ts +8 -0
- package/dist/infrastructure/config/index.d.ts.map +1 -0
- package/dist/infrastructure/config/index.js +7 -0
- package/dist/infrastructure/config/index.js.map +1 -0
- package/dist/infrastructure/config/loader.d.ts +555 -0
- package/dist/infrastructure/config/loader.d.ts.map +1 -0
- package/dist/infrastructure/config/loader.js +311 -0
- package/dist/infrastructure/config/loader.js.map +1 -0
- package/dist/infrastructure/database/checks.d.ts +19 -0
- package/dist/infrastructure/database/checks.d.ts.map +1 -0
- package/dist/infrastructure/database/checks.js +27 -0
- package/dist/infrastructure/database/checks.js.map +1 -0
- package/dist/infrastructure/database/compatibility.d.ts +36 -0
- package/dist/infrastructure/database/compatibility.d.ts.map +1 -0
- package/dist/infrastructure/database/compatibility.js +75 -0
- package/dist/infrastructure/database/compatibility.js.map +1 -0
- package/dist/infrastructure/database/connection.d.ts +36 -0
- package/dist/infrastructure/database/connection.d.ts.map +1 -0
- package/dist/infrastructure/database/connection.js +47 -0
- package/dist/infrastructure/database/connection.js.map +1 -0
- package/dist/infrastructure/database/id.d.ts +17 -0
- package/dist/infrastructure/database/id.d.ts.map +1 -0
- package/dist/infrastructure/database/id.js +20 -0
- package/dist/infrastructure/database/id.js.map +1 -0
- package/dist/infrastructure/database/index.d.ts +15 -0
- package/dist/infrastructure/database/index.d.ts.map +1 -0
- package/dist/infrastructure/database/index.js +12 -0
- package/dist/infrastructure/database/index.js.map +1 -0
- package/dist/infrastructure/database/migrate.d.ts +76 -0
- package/dist/infrastructure/database/migrate.d.ts.map +1 -0
- package/dist/infrastructure/database/migrate.js +1214 -0
- package/dist/infrastructure/database/migrate.js.map +1 -0
- package/dist/infrastructure/database/schema.d.ts +2352 -0
- package/dist/infrastructure/database/schema.d.ts.map +1 -0
- package/dist/infrastructure/database/schema.js +288 -0
- package/dist/infrastructure/database/schema.js.map +1 -0
- package/dist/infrastructure/jwt/index.d.ts +2 -0
- package/dist/infrastructure/jwt/index.d.ts.map +1 -0
- package/dist/infrastructure/jwt/index.js +2 -0
- package/dist/infrastructure/jwt/index.js.map +1 -0
- package/dist/infrastructure/jwt/jwt-secret-manager.d.ts +58 -0
- package/dist/infrastructure/jwt/jwt-secret-manager.d.ts.map +1 -0
- package/dist/infrastructure/jwt/jwt-secret-manager.js +222 -0
- package/dist/infrastructure/jwt/jwt-secret-manager.js.map +1 -0
- package/dist/infrastructure/keystore/crypto.d.ts +62 -0
- package/dist/infrastructure/keystore/crypto.d.ts.map +1 -0
- package/dist/infrastructure/keystore/crypto.js +89 -0
- package/dist/infrastructure/keystore/crypto.js.map +1 -0
- package/dist/infrastructure/keystore/index.d.ts +4 -0
- package/dist/infrastructure/keystore/index.d.ts.map +1 -0
- package/dist/infrastructure/keystore/index.js +5 -0
- package/dist/infrastructure/keystore/index.js.map +1 -0
- package/dist/infrastructure/keystore/keystore.d.ts +115 -0
- package/dist/infrastructure/keystore/keystore.d.ts.map +1 -0
- package/dist/infrastructure/keystore/keystore.js +327 -0
- package/dist/infrastructure/keystore/keystore.js.map +1 -0
- package/dist/infrastructure/keystore/memory.d.ts +45 -0
- package/dist/infrastructure/keystore/memory.d.ts.map +1 -0
- package/dist/infrastructure/keystore/memory.js +105 -0
- package/dist/infrastructure/keystore/memory.js.map +1 -0
- package/dist/infrastructure/oracle/coingecko-forex.d.ts +35 -0
- package/dist/infrastructure/oracle/coingecko-forex.d.ts.map +1 -0
- package/dist/infrastructure/oracle/coingecko-forex.js +69 -0
- package/dist/infrastructure/oracle/coingecko-forex.js.map +1 -0
- package/dist/infrastructure/oracle/coingecko-oracle.d.ts +73 -0
- package/dist/infrastructure/oracle/coingecko-oracle.d.ts.map +1 -0
- package/dist/infrastructure/oracle/coingecko-oracle.js +199 -0
- package/dist/infrastructure/oracle/coingecko-oracle.js.map +1 -0
- package/dist/infrastructure/oracle/coingecko-platform-ids.d.ts +32 -0
- package/dist/infrastructure/oracle/coingecko-platform-ids.d.ts.map +1 -0
- package/dist/infrastructure/oracle/coingecko-platform-ids.js +30 -0
- package/dist/infrastructure/oracle/coingecko-platform-ids.js.map +1 -0
- package/dist/infrastructure/oracle/forex-currencies.d.ts +36 -0
- package/dist/infrastructure/oracle/forex-currencies.d.ts.map +1 -0
- package/dist/infrastructure/oracle/forex-currencies.js +71 -0
- package/dist/infrastructure/oracle/forex-currencies.js.map +1 -0
- package/dist/infrastructure/oracle/forex-rate-service.d.ts +51 -0
- package/dist/infrastructure/oracle/forex-rate-service.d.ts.map +1 -0
- package/dist/infrastructure/oracle/forex-rate-service.js +149 -0
- package/dist/infrastructure/oracle/forex-rate-service.js.map +1 -0
- package/dist/infrastructure/oracle/index.d.ts +18 -0
- package/dist/infrastructure/oracle/index.d.ts.map +1 -0
- package/dist/infrastructure/oracle/index.js +19 -0
- package/dist/infrastructure/oracle/index.js.map +1 -0
- package/dist/infrastructure/oracle/oracle-chain.d.ts +101 -0
- package/dist/infrastructure/oracle/oracle-chain.d.ts.map +1 -0
- package/dist/infrastructure/oracle/oracle-chain.js +163 -0
- package/dist/infrastructure/oracle/oracle-chain.js.map +1 -0
- package/dist/infrastructure/oracle/oracle-errors.d.ts +42 -0
- package/dist/infrastructure/oracle/oracle-errors.d.ts.map +1 -0
- package/dist/infrastructure/oracle/oracle-errors.js +53 -0
- package/dist/infrastructure/oracle/oracle-errors.js.map +1 -0
- package/dist/infrastructure/oracle/price-age.d.ts +38 -0
- package/dist/infrastructure/oracle/price-age.d.ts.map +1 -0
- package/dist/infrastructure/oracle/price-age.js +44 -0
- package/dist/infrastructure/oracle/price-age.js.map +1 -0
- package/dist/infrastructure/oracle/price-cache.d.ts +99 -0
- package/dist/infrastructure/oracle/price-cache.d.ts.map +1 -0
- package/dist/infrastructure/oracle/price-cache.js +173 -0
- package/dist/infrastructure/oracle/price-cache.js.map +1 -0
- package/dist/infrastructure/oracle/pyth-feed-ids.d.ts +31 -0
- package/dist/infrastructure/oracle/pyth-feed-ids.d.ts.map +1 -0
- package/dist/infrastructure/oracle/pyth-feed-ids.js +44 -0
- package/dist/infrastructure/oracle/pyth-feed-ids.js.map +1 -0
- package/dist/infrastructure/oracle/pyth-oracle.d.ts +69 -0
- package/dist/infrastructure/oracle/pyth-oracle.d.ts.map +1 -0
- package/dist/infrastructure/oracle/pyth-oracle.js +149 -0
- package/dist/infrastructure/oracle/pyth-oracle.js.map +1 -0
- package/dist/infrastructure/settings/hot-reload.d.ts +71 -0
- package/dist/infrastructure/settings/hot-reload.d.ts.map +1 -0
- package/dist/infrastructure/settings/hot-reload.js +315 -0
- package/dist/infrastructure/settings/hot-reload.js.map +1 -0
- package/dist/infrastructure/settings/index.d.ts +13 -0
- package/dist/infrastructure/settings/index.d.ts.map +1 -0
- package/dist/infrastructure/settings/index.js +10 -0
- package/dist/infrastructure/settings/index.js.map +1 -0
- package/dist/infrastructure/settings/setting-keys.d.ts +28 -0
- package/dist/infrastructure/settings/setting-keys.d.ts.map +1 -0
- package/dist/infrastructure/settings/setting-keys.js +105 -0
- package/dist/infrastructure/settings/setting-keys.js.map +1 -0
- package/dist/infrastructure/settings/settings-crypto.d.ts +39 -0
- package/dist/infrastructure/settings/settings-crypto.d.ts.map +1 -0
- package/dist/infrastructure/settings/settings-crypto.js +73 -0
- package/dist/infrastructure/settings/settings-crypto.js.map +1 -0
- package/dist/infrastructure/settings/settings-service.d.ts +82 -0
- package/dist/infrastructure/settings/settings-service.d.ts.map +1 -0
- package/dist/infrastructure/settings/settings-service.js +267 -0
- package/dist/infrastructure/settings/settings-service.js.map +1 -0
- package/dist/infrastructure/telegram/index.d.ts +6 -0
- package/dist/infrastructure/telegram/index.d.ts.map +1 -0
- package/dist/infrastructure/telegram/index.js +5 -0
- package/dist/infrastructure/telegram/index.js.map +1 -0
- package/dist/infrastructure/telegram/telegram-api.d.ts +35 -0
- package/dist/infrastructure/telegram/telegram-api.d.ts.map +1 -0
- package/dist/infrastructure/telegram/telegram-api.js +82 -0
- package/dist/infrastructure/telegram/telegram-api.js.map +1 -0
- package/dist/infrastructure/telegram/telegram-auth.d.ts +57 -0
- package/dist/infrastructure/telegram/telegram-auth.d.ts.map +1 -0
- package/dist/infrastructure/telegram/telegram-auth.js +88 -0
- package/dist/infrastructure/telegram/telegram-auth.js.map +1 -0
- package/dist/infrastructure/telegram/telegram-bot-service.d.ts +95 -0
- package/dist/infrastructure/telegram/telegram-bot-service.d.ts.map +1 -0
- package/dist/infrastructure/telegram/telegram-bot-service.js +564 -0
- package/dist/infrastructure/telegram/telegram-bot-service.js.map +1 -0
- package/dist/infrastructure/telegram/telegram-keyboard.d.ts +27 -0
- package/dist/infrastructure/telegram/telegram-keyboard.d.ts.map +1 -0
- package/dist/infrastructure/telegram/telegram-keyboard.js +52 -0
- package/dist/infrastructure/telegram/telegram-keyboard.js.map +1 -0
- package/dist/infrastructure/telegram/telegram-types.d.ts +43 -0
- package/dist/infrastructure/telegram/telegram-types.d.ts.map +1 -0
- package/dist/infrastructure/telegram/telegram-types.js +8 -0
- package/dist/infrastructure/telegram/telegram-types.js.map +1 -0
- package/dist/infrastructure/token-registry/builtin-tokens.d.ts +39 -0
- package/dist/infrastructure/token-registry/builtin-tokens.d.ts.map +1 -0
- package/dist/infrastructure/token-registry/builtin-tokens.js +135 -0
- package/dist/infrastructure/token-registry/builtin-tokens.js.map +1 -0
- package/dist/infrastructure/token-registry/index.d.ts +8 -0
- package/dist/infrastructure/token-registry/index.d.ts.map +1 -0
- package/dist/infrastructure/token-registry/index.js +8 -0
- package/dist/infrastructure/token-registry/index.js.map +1 -0
- package/dist/infrastructure/token-registry/token-registry-service.d.ts +49 -0
- package/dist/infrastructure/token-registry/token-registry-service.d.ts.map +1 -0
- package/dist/infrastructure/token-registry/token-registry-service.js +93 -0
- package/dist/infrastructure/token-registry/token-registry-service.js.map +1 -0
- package/dist/infrastructure/version/index.d.ts +5 -0
- package/dist/infrastructure/version/index.d.ts.map +1 -0
- package/dist/infrastructure/version/index.js +5 -0
- package/dist/infrastructure/version/index.js.map +1 -0
- package/dist/infrastructure/version/version-check-service.d.ts +35 -0
- package/dist/infrastructure/version/version-check-service.d.ts.map +1 -0
- package/dist/infrastructure/version/version-check-service.js +92 -0
- package/dist/infrastructure/version/version-check-service.js.map +1 -0
- package/dist/lifecycle/daemon.d.ts +103 -0
- package/dist/lifecycle/daemon.d.ts.map +1 -0
- package/dist/lifecycle/daemon.js +934 -0
- package/dist/lifecycle/daemon.js.map +1 -0
- package/dist/lifecycle/index.d.ts +9 -0
- package/dist/lifecycle/index.d.ts.map +1 -0
- package/dist/lifecycle/index.js +9 -0
- package/dist/lifecycle/index.js.map +1 -0
- package/dist/lifecycle/signal-handler.d.ts +18 -0
- package/dist/lifecycle/signal-handler.d.ts.map +1 -0
- package/dist/lifecycle/signal-handler.js +37 -0
- package/dist/lifecycle/signal-handler.js.map +1 -0
- package/dist/lifecycle/workers.d.ts +46 -0
- package/dist/lifecycle/workers.d.ts.map +1 -0
- package/dist/lifecycle/workers.js +101 -0
- package/dist/lifecycle/workers.js.map +1 -0
- package/dist/notifications/channels/discord.d.ts +10 -0
- package/dist/notifications/channels/discord.d.ts.map +1 -0
- package/dist/notifications/channels/discord.js +54 -0
- package/dist/notifications/channels/discord.js.map +1 -0
- package/dist/notifications/channels/ntfy.d.ts +13 -0
- package/dist/notifications/channels/ntfy.d.ts.map +1 -0
- package/dist/notifications/channels/ntfy.js +58 -0
- package/dist/notifications/channels/ntfy.js.map +1 -0
- package/dist/notifications/channels/slack.d.ts +10 -0
- package/dist/notifications/channels/slack.d.ts.map +1 -0
- package/dist/notifications/channels/slack.js +55 -0
- package/dist/notifications/channels/slack.js.map +1 -0
- package/dist/notifications/channels/telegram.d.ts +10 -0
- package/dist/notifications/channels/telegram.d.ts.map +1 -0
- package/dist/notifications/channels/telegram.js +40 -0
- package/dist/notifications/channels/telegram.js.map +1 -0
- package/dist/notifications/index.d.ts +9 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +7 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/notification-service.d.ts +75 -0
- package/dist/notifications/notification-service.d.ts.map +1 -0
- package/dist/notifications/notification-service.js +213 -0
- package/dist/notifications/notification-service.js.map +1 -0
- package/dist/notifications/templates/message-templates.d.ts +12 -0
- package/dist/notifications/templates/message-templates.d.ts.map +1 -0
- package/dist/notifications/templates/message-templates.js +22 -0
- package/dist/notifications/templates/message-templates.js.map +1 -0
- package/dist/pipeline/database-policy-engine.d.ts +286 -0
- package/dist/pipeline/database-policy-engine.d.ts.map +1 -0
- package/dist/pipeline/database-policy-engine.js +992 -0
- package/dist/pipeline/database-policy-engine.js.map +1 -0
- package/dist/pipeline/default-policy-engine.d.ts +26 -0
- package/dist/pipeline/default-policy-engine.d.ts.map +1 -0
- package/dist/pipeline/default-policy-engine.js +25 -0
- package/dist/pipeline/default-policy-engine.js.map +1 -0
- package/dist/pipeline/index.d.ts +9 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +9 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/network-resolver.d.ts +22 -0
- package/dist/pipeline/network-resolver.d.ts.map +1 -0
- package/dist/pipeline/network-resolver.js +32 -0
- package/dist/pipeline/network-resolver.js.map +1 -0
- package/dist/pipeline/pipeline.d.ts +72 -0
- package/dist/pipeline/pipeline.d.ts.map +1 -0
- package/dist/pipeline/pipeline.js +87 -0
- package/dist/pipeline/pipeline.js.map +1 -0
- package/dist/pipeline/resolve-effective-amount-usd.d.ts +41 -0
- package/dist/pipeline/resolve-effective-amount-usd.d.ts.map +1 -0
- package/dist/pipeline/resolve-effective-amount-usd.js +208 -0
- package/dist/pipeline/resolve-effective-amount-usd.js.map +1 -0
- package/dist/pipeline/sign-only.d.ts +99 -0
- package/dist/pipeline/sign-only.d.ts.map +1 -0
- package/dist/pipeline/sign-only.js +267 -0
- package/dist/pipeline/sign-only.js.map +1 -0
- package/dist/pipeline/sleep.d.ts +6 -0
- package/dist/pipeline/sleep.d.ts.map +1 -0
- package/dist/pipeline/sleep.js +8 -0
- package/dist/pipeline/sleep.js.map +1 -0
- package/dist/pipeline/stages.d.ts +82 -0
- package/dist/pipeline/stages.d.ts.map +1 -0
- package/dist/pipeline/stages.js +784 -0
- package/dist/pipeline/stages.js.map +1 -0
- package/dist/services/autostop-rules.d.ts +79 -0
- package/dist/services/autostop-rules.d.ts.map +1 -0
- package/dist/services/autostop-rules.js +174 -0
- package/dist/services/autostop-rules.js.map +1 -0
- package/dist/services/autostop-service.d.ts +82 -0
- package/dist/services/autostop-service.d.ts.map +1 -0
- package/dist/services/autostop-service.js +223 -0
- package/dist/services/autostop-service.js.map +1 -0
- package/dist/services/kill-switch-service.d.ts +118 -0
- package/dist/services/kill-switch-service.d.ts.map +1 -0
- package/dist/services/kill-switch-service.js +291 -0
- package/dist/services/kill-switch-service.js.map +1 -0
- package/dist/services/monitoring/balance-monitor-service.d.ts +65 -0
- package/dist/services/monitoring/balance-monitor-service.d.ts.map +1 -0
- package/dist/services/monitoring/balance-monitor-service.js +207 -0
- package/dist/services/monitoring/balance-monitor-service.js.map +1 -0
- package/dist/services/wc-session-service.d.ts +123 -0
- package/dist/services/wc-session-service.d.ts.map +1 -0
- package/dist/services/wc-session-service.js +363 -0
- package/dist/services/wc-session-service.js.map +1 -0
- package/dist/services/wc-signing-bridge.d.ts +60 -0
- package/dist/services/wc-signing-bridge.d.ts.map +1 -0
- package/dist/services/wc-signing-bridge.js +334 -0
- package/dist/services/wc-signing-bridge.js.map +1 -0
- package/dist/services/wc-storage.d.ts +32 -0
- package/dist/services/wc-storage.d.ts.map +1 -0
- package/dist/services/wc-storage.js +64 -0
- package/dist/services/wc-storage.js.map +1 -0
- package/dist/services/x402/payment-signer.d.ts +88 -0
- package/dist/services/x402/payment-signer.d.ts.map +1 -0
- package/dist/services/x402/payment-signer.js +311 -0
- package/dist/services/x402/payment-signer.js.map +1 -0
- package/dist/services/x402/ssrf-guard.d.ts +27 -0
- package/dist/services/x402/ssrf-guard.d.ts.map +1 -0
- package/dist/services/x402/ssrf-guard.js +236 -0
- package/dist/services/x402/ssrf-guard.js.map +1 -0
- package/dist/services/x402/x402-domain-policy.d.ts +50 -0
- package/dist/services/x402/x402-domain-policy.d.ts.map +1 -0
- package/dist/services/x402/x402-domain-policy.js +78 -0
- package/dist/services/x402/x402-domain-policy.js.map +1 -0
- package/dist/services/x402/x402-handler.d.ts +71 -0
- package/dist/services/x402/x402-handler.d.ts.map +1 -0
- package/dist/services/x402/x402-handler.js +195 -0
- package/dist/services/x402/x402-handler.js.map +1 -0
- package/dist/services/x402/x402-usd-resolver.d.ts +26 -0
- package/dist/services/x402/x402-usd-resolver.d.ts.map +1 -0
- package/dist/services/x402/x402-usd-resolver.js +79 -0
- package/dist/services/x402/x402-usd-resolver.js.map +1 -0
- package/dist/workflow/approval-workflow.d.ts +103 -0
- package/dist/workflow/approval-workflow.d.ts.map +1 -0
- package/dist/workflow/approval-workflow.js +202 -0
- package/dist/workflow/approval-workflow.js.map +1 -0
- package/dist/workflow/delay-queue.d.ts +78 -0
- package/dist/workflow/delay-queue.d.ts.map +1 -0
- package/dist/workflow/delay-queue.js +174 -0
- package/dist/workflow/delay-queue.js.map +1 -0
- package/dist/workflow/index.d.ts +11 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +9 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/owner-state.d.ts +97 -0
- package/dist/workflow/owner-state.d.ts.map +1 -0
- package/dist/workflow/owner-state.js +168 -0
- package/dist/workflow/owner-state.js.map +1 -0
- package/package.json +71 -0
- package/public/admin/assets/index-BPoUSH8W.css +1 -0
- package/public/admin/assets/index-CDi1qoXB.js +1 -0
- package/public/admin/index.html +13 -0
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WcSessionService - WalletConnect SignClient lifecycle wrapper.
|
|
3
|
+
*
|
|
4
|
+
* Manages SignClient initialization, shutdown, session mapping,
|
|
5
|
+
* pairing creation, session info retrieval, and disconnect.
|
|
6
|
+
* Designed for fail-soft integration with DaemonLifecycle (Step 4c-6).
|
|
7
|
+
*
|
|
8
|
+
* Key responsibilities:
|
|
9
|
+
* - Initialize SignClient with SQLite-backed IKeyValueStorage
|
|
10
|
+
* - Register event listeners for session_delete / session_expire
|
|
11
|
+
* - Maintain in-memory walletId -> session topic mapping (restored from DB on startup)
|
|
12
|
+
* - Create WC pairings with QR code generation (createPairing)
|
|
13
|
+
* - Manage session lifecycle (getSessionInfo, getPairingStatus, disconnectSession)
|
|
14
|
+
*
|
|
15
|
+
* @see packages/daemon/src/services/wc-storage.ts
|
|
16
|
+
* @see packages/daemon/src/infrastructure/database/migrate.ts (v16: wc_sessions table)
|
|
17
|
+
*/
|
|
18
|
+
import { createRequire } from 'node:module';
|
|
19
|
+
import SignClientModule from '@walletconnect/sign-client';
|
|
20
|
+
// ESM/CJS interop: @walletconnect/sign-client has no "import" condition in its
|
|
21
|
+
// exports map, so Node.js ESM loads the CJS bundle where the actual SignClient
|
|
22
|
+
// class lives at .default.
|
|
23
|
+
const SignClient = SignClientModule.default ?? SignClientModule;
|
|
24
|
+
import { WAIaaSError } from '@waiaas/core';
|
|
25
|
+
import { SqliteKeyValueStorage } from './wc-storage.js';
|
|
26
|
+
const require = createRequire(import.meta.url);
|
|
27
|
+
const QRCode = require('qrcode');
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// CAIP-2 Chain Identifiers
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
/** CAIP-2 chain identifiers for WalletConnect v2 */
|
|
32
|
+
export const CAIP2_CHAIN_IDS = {
|
|
33
|
+
// Solana
|
|
34
|
+
'mainnet': 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',
|
|
35
|
+
'devnet': 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',
|
|
36
|
+
'testnet': 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',
|
|
37
|
+
// EVM (eip155:{chainId})
|
|
38
|
+
'ethereum-mainnet': 'eip155:1',
|
|
39
|
+
'ethereum-sepolia': 'eip155:11155111',
|
|
40
|
+
'polygon-mainnet': 'eip155:137',
|
|
41
|
+
'polygon-amoy': 'eip155:80002',
|
|
42
|
+
'arbitrum-mainnet': 'eip155:42161',
|
|
43
|
+
'arbitrum-sepolia': 'eip155:421614',
|
|
44
|
+
'optimism-mainnet': 'eip155:10',
|
|
45
|
+
'optimism-sepolia': 'eip155:11155420',
|
|
46
|
+
'base-mainnet': 'eip155:8453',
|
|
47
|
+
'base-sepolia': 'eip155:84532',
|
|
48
|
+
};
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
// WcSessionService
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
export class WcSessionService {
|
|
53
|
+
signClient = null;
|
|
54
|
+
storage = null;
|
|
55
|
+
sqlite;
|
|
56
|
+
settingsService;
|
|
57
|
+
/** walletId -> session topic mapping (in-memory cache) */
|
|
58
|
+
sessionMap = new Map();
|
|
59
|
+
/** Tracking pending pairing attempts per wallet */
|
|
60
|
+
pendingPairing = new Map();
|
|
61
|
+
constructor(deps) {
|
|
62
|
+
this.sqlite = deps.sqlite;
|
|
63
|
+
this.settingsService = deps.settingsService;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Initialize SignClient with SQLite storage.
|
|
67
|
+
* No-op if walletconnect.project_id is not configured.
|
|
68
|
+
*/
|
|
69
|
+
async initialize() {
|
|
70
|
+
const projectId = this.settingsService.get('walletconnect.project_id');
|
|
71
|
+
if (!projectId)
|
|
72
|
+
return;
|
|
73
|
+
const relayUrl = this.settingsService.get('walletconnect.relay_url') ||
|
|
74
|
+
'wss://relay.walletconnect.com';
|
|
75
|
+
this.storage = new SqliteKeyValueStorage(this.sqlite);
|
|
76
|
+
this.signClient = await SignClient.init({
|
|
77
|
+
projectId,
|
|
78
|
+
relayUrl,
|
|
79
|
+
storage: this.storage, // IKeyValueStorage compatible
|
|
80
|
+
metadata: {
|
|
81
|
+
name: 'WAIaaS Daemon',
|
|
82
|
+
description: 'AI Agent Wallet-as-a-Service',
|
|
83
|
+
url: 'http://localhost',
|
|
84
|
+
icons: [],
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
// Register event listeners for session lifecycle
|
|
88
|
+
this.signClient.on('session_delete', ({ topic }) => {
|
|
89
|
+
this.handleSessionDelete(topic);
|
|
90
|
+
});
|
|
91
|
+
this.signClient.on('session_expire', ({ topic }) => {
|
|
92
|
+
this.handleSessionDelete(topic);
|
|
93
|
+
});
|
|
94
|
+
// Restore existing sessions from DB -> in-memory map
|
|
95
|
+
this.restoreSessions();
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Restore walletId -> topic mappings from wc_sessions table.
|
|
99
|
+
*/
|
|
100
|
+
restoreSessions() {
|
|
101
|
+
const rows = this.sqlite
|
|
102
|
+
.prepare('SELECT wallet_id, topic FROM wc_sessions')
|
|
103
|
+
.all();
|
|
104
|
+
for (const row of rows) {
|
|
105
|
+
this.sessionMap.set(row.wallet_id, row.topic);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Check if a wallet has an active WC session.
|
|
110
|
+
*/
|
|
111
|
+
hasActiveSession(walletId) {
|
|
112
|
+
return this.sessionMap.has(walletId);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get the underlying SignClient instance (for route handlers / pairing).
|
|
116
|
+
* Returns null if WC is not initialized.
|
|
117
|
+
*/
|
|
118
|
+
getSignClient() {
|
|
119
|
+
return this.signClient;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get the session topic for a wallet (public accessor).
|
|
123
|
+
* Returns null if no active session exists.
|
|
124
|
+
*/
|
|
125
|
+
getSessionTopic(walletId) {
|
|
126
|
+
return this.sessionMap.get(walletId) ?? null;
|
|
127
|
+
}
|
|
128
|
+
// ---------------------------------------------------------------------------
|
|
129
|
+
// Pairing / Session Management (Phase 147)
|
|
130
|
+
// ---------------------------------------------------------------------------
|
|
131
|
+
/**
|
|
132
|
+
* Create a new WC pairing for a wallet.
|
|
133
|
+
* Returns URI + QR code immediately. Session settlement happens asynchronously.
|
|
134
|
+
*
|
|
135
|
+
* @param walletId - Wallet UUID
|
|
136
|
+
* @param network - Network name (e.g., 'devnet', 'ethereum-sepolia')
|
|
137
|
+
* @param chain - Chain type ('solana' or 'ethereum')
|
|
138
|
+
*/
|
|
139
|
+
async createPairing(walletId, network, chain) {
|
|
140
|
+
const signClient = this.getSignClient();
|
|
141
|
+
if (!signClient) {
|
|
142
|
+
throw new WAIaaSError('WC_NOT_CONFIGURED');
|
|
143
|
+
}
|
|
144
|
+
// Single session policy: reject if wallet already has an active session
|
|
145
|
+
if (this.hasActiveSession(walletId)) {
|
|
146
|
+
throw new WAIaaSError('WC_SESSION_EXISTS');
|
|
147
|
+
}
|
|
148
|
+
// If there's already a pending pairing for this wallet, return existing URI
|
|
149
|
+
const existing = this.pendingPairing.get(walletId);
|
|
150
|
+
if (existing && Math.floor(Date.now() / 1000) < existing.expiresAt) {
|
|
151
|
+
const qrDataUrl = await QRCode.toDataURL(existing.uri, {
|
|
152
|
+
width: 300,
|
|
153
|
+
margin: 2,
|
|
154
|
+
errorCorrectionLevel: 'M',
|
|
155
|
+
});
|
|
156
|
+
return { uri: existing.uri, qrDataUrl, expiresAt: existing.expiresAt };
|
|
157
|
+
}
|
|
158
|
+
// Resolve CAIP-2 chain ID
|
|
159
|
+
const chainId = CAIP2_CHAIN_IDS[network] ??
|
|
160
|
+
(chain === 'solana' ? `solana:${network}` : `eip155:${network}`);
|
|
161
|
+
// Determine namespace and methods
|
|
162
|
+
const namespace = chainId.split(':')[0]; // 'eip155' or 'solana'
|
|
163
|
+
const methods = namespace === 'solana'
|
|
164
|
+
? ['solana_signTransaction', 'solana_signMessage']
|
|
165
|
+
: ['eth_sendTransaction', 'personal_sign', 'eth_signTypedData_v4'];
|
|
166
|
+
const events = namespace === 'solana'
|
|
167
|
+
? []
|
|
168
|
+
: ['chainChanged', 'accountsChanged'];
|
|
169
|
+
const requiredNamespaces = {
|
|
170
|
+
[namespace]: {
|
|
171
|
+
chains: [chainId],
|
|
172
|
+
methods,
|
|
173
|
+
events,
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
const { uri, approval } = await signClient.connect({
|
|
177
|
+
requiredNamespaces,
|
|
178
|
+
});
|
|
179
|
+
if (!uri) {
|
|
180
|
+
throw new Error('Failed to generate pairing URI');
|
|
181
|
+
}
|
|
182
|
+
const qrDataUrl = await QRCode.toDataURL(uri, {
|
|
183
|
+
width: 300,
|
|
184
|
+
margin: 2,
|
|
185
|
+
errorCorrectionLevel: 'M',
|
|
186
|
+
});
|
|
187
|
+
const expiresAt = Math.floor(Date.now() / 1000) + 300; // 5 minutes
|
|
188
|
+
this.pendingPairing.set(walletId, { expiresAt, uri });
|
|
189
|
+
// Wait for approval in the background (do NOT await in HTTP handler)
|
|
190
|
+
this.waitForApproval(walletId, chainId, approval);
|
|
191
|
+
return { uri, qrDataUrl, expiresAt };
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Background approval waiter. Saves session to DB when external wallet approves.
|
|
195
|
+
* On failure/timeout, cleans up pending pairing state.
|
|
196
|
+
*/
|
|
197
|
+
waitForApproval(walletId, chainId, approval) {
|
|
198
|
+
const timeout = new Promise((_, reject) => setTimeout(() => reject(new Error('Pairing approval timeout')), 300_000));
|
|
199
|
+
Promise.race([approval(), timeout])
|
|
200
|
+
.then(async (session) => {
|
|
201
|
+
// Extract owner address from CAIP-10 accounts
|
|
202
|
+
const firstNamespace = Object.values(session.namespaces)[0];
|
|
203
|
+
const firstAccount = firstNamespace?.accounts?.[0] ?? '';
|
|
204
|
+
// CAIP-10 format: "namespace:chainId:address" -> extract address part
|
|
205
|
+
const parts = firstAccount.split(':');
|
|
206
|
+
const connectedAddress = parts.length >= 3 ? parts.slice(2).join(':') : firstAccount;
|
|
207
|
+
// Verify connected address matches registered owner
|
|
208
|
+
const wallet = this.sqlite
|
|
209
|
+
.prepare('SELECT owner_address, chain FROM wallets WHERE id = ?')
|
|
210
|
+
.get(walletId);
|
|
211
|
+
if (wallet?.owner_address && connectedAddress) {
|
|
212
|
+
const isEvm = wallet.chain === 'ethereum';
|
|
213
|
+
const matches = isEvm
|
|
214
|
+
? wallet.owner_address.toLowerCase() === connectedAddress.toLowerCase()
|
|
215
|
+
: wallet.owner_address === connectedAddress;
|
|
216
|
+
if (!matches) {
|
|
217
|
+
// Reject session: connected wallet doesn't match registered owner
|
|
218
|
+
const signClient = this.getSignClient();
|
|
219
|
+
if (signClient) {
|
|
220
|
+
try {
|
|
221
|
+
await signClient.disconnect({
|
|
222
|
+
topic: session.topic,
|
|
223
|
+
reason: { code: 4001, message: 'Connected wallet address does not match registered owner' },
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
// best effort disconnect
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
this.pendingPairing.delete(walletId);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
const ownerAddress = connectedAddress;
|
|
235
|
+
// Save session to DB
|
|
236
|
+
this.sqlite
|
|
237
|
+
.prepare(`INSERT OR REPLACE INTO wc_sessions (wallet_id, topic, peer_meta, chain_id, owner_address, namespaces, expiry, created_at)
|
|
238
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
239
|
+
.run(walletId, session.topic, JSON.stringify(session.peer?.metadata ?? null), chainId, ownerAddress, JSON.stringify(session.namespaces), session.expiry, Math.floor(Date.now() / 1000));
|
|
240
|
+
// Update in-memory map
|
|
241
|
+
this.sessionMap.set(walletId, session.topic);
|
|
242
|
+
this.pendingPairing.delete(walletId);
|
|
243
|
+
})
|
|
244
|
+
.catch(() => {
|
|
245
|
+
// Timeout or rejection -- clean up pending state
|
|
246
|
+
this.pendingPairing.delete(walletId);
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Get session info for a wallet from DB.
|
|
251
|
+
* Returns null if no session exists.
|
|
252
|
+
*/
|
|
253
|
+
getSessionInfo(walletId) {
|
|
254
|
+
const row = this.sqlite
|
|
255
|
+
.prepare(`SELECT wallet_id, topic, peer_meta, chain_id, owner_address, expiry, created_at
|
|
256
|
+
FROM wc_sessions WHERE wallet_id = ?`)
|
|
257
|
+
.get(walletId);
|
|
258
|
+
if (!row)
|
|
259
|
+
return null;
|
|
260
|
+
let peerName = null;
|
|
261
|
+
let peerUrl = null;
|
|
262
|
+
if (row.peer_meta) {
|
|
263
|
+
try {
|
|
264
|
+
const meta = JSON.parse(row.peer_meta);
|
|
265
|
+
peerName = meta?.name ?? null;
|
|
266
|
+
peerUrl = meta?.url ?? null;
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
// ignore parse errors
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return {
|
|
273
|
+
walletId: row.wallet_id,
|
|
274
|
+
topic: row.topic,
|
|
275
|
+
peerName,
|
|
276
|
+
peerUrl,
|
|
277
|
+
chainId: row.chain_id,
|
|
278
|
+
ownerAddress: row.owner_address,
|
|
279
|
+
expiry: row.expiry,
|
|
280
|
+
createdAt: row.created_at,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Get the current pairing/session status for a wallet.
|
|
285
|
+
*/
|
|
286
|
+
getPairingStatus(walletId) {
|
|
287
|
+
if (this.hasActiveSession(walletId)) {
|
|
288
|
+
return 'connected';
|
|
289
|
+
}
|
|
290
|
+
const pending = this.pendingPairing.get(walletId);
|
|
291
|
+
if (pending) {
|
|
292
|
+
if (Math.floor(Date.now() / 1000) < pending.expiresAt) {
|
|
293
|
+
return 'pending';
|
|
294
|
+
}
|
|
295
|
+
// Expired pending pairing -- clean up
|
|
296
|
+
this.pendingPairing.delete(walletId);
|
|
297
|
+
return 'expired';
|
|
298
|
+
}
|
|
299
|
+
return 'none';
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Disconnect a wallet's WC session.
|
|
303
|
+
* Removes from relay, DB, and in-memory map.
|
|
304
|
+
*/
|
|
305
|
+
async disconnectSession(walletId) {
|
|
306
|
+
const signClient = this.getSignClient();
|
|
307
|
+
if (!signClient) {
|
|
308
|
+
throw new WAIaaSError('WC_NOT_CONFIGURED');
|
|
309
|
+
}
|
|
310
|
+
const topic = this.sessionMap.get(walletId);
|
|
311
|
+
if (!topic) {
|
|
312
|
+
throw new WAIaaSError('WC_SESSION_NOT_FOUND');
|
|
313
|
+
}
|
|
314
|
+
await signClient.disconnect({
|
|
315
|
+
topic,
|
|
316
|
+
reason: { code: 6000, message: 'User disconnected' },
|
|
317
|
+
});
|
|
318
|
+
// Clean up DB + in-memory map
|
|
319
|
+
this.handleSessionDelete(topic);
|
|
320
|
+
}
|
|
321
|
+
// ---------------------------------------------------------------------------
|
|
322
|
+
// Lifecycle
|
|
323
|
+
// ---------------------------------------------------------------------------
|
|
324
|
+
/**
|
|
325
|
+
* Gracefully shut down SignClient resources.
|
|
326
|
+
* Clears in-memory state but does NOT delete DB sessions
|
|
327
|
+
* (they'll be restored on next startup).
|
|
328
|
+
*/
|
|
329
|
+
async shutdown() {
|
|
330
|
+
if (this.signClient) {
|
|
331
|
+
try {
|
|
332
|
+
// Attempt to disconnect the WebSocket relay connection
|
|
333
|
+
await this.signClient.core?.relayer?.provider?.disconnect?.();
|
|
334
|
+
}
|
|
335
|
+
catch {
|
|
336
|
+
// Ignore disconnect errors -- best effort cleanup
|
|
337
|
+
}
|
|
338
|
+
this.signClient = null;
|
|
339
|
+
this.sessionMap.clear();
|
|
340
|
+
this.pendingPairing.clear();
|
|
341
|
+
}
|
|
342
|
+
// Deactivate storage before DB close to prevent WC async callback errors
|
|
343
|
+
this.storage?.close();
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Handle session deletion/expiration from WC relay.
|
|
347
|
+
* Removes from both DB and in-memory map.
|
|
348
|
+
*/
|
|
349
|
+
handleSessionDelete(topic) {
|
|
350
|
+
// Remove from wc_sessions table
|
|
351
|
+
this.sqlite
|
|
352
|
+
.prepare('DELETE FROM wc_sessions WHERE topic = ?')
|
|
353
|
+
.run(topic);
|
|
354
|
+
// Remove from in-memory sessionMap
|
|
355
|
+
for (const [walletId, t] of this.sessionMap) {
|
|
356
|
+
if (t === topic) {
|
|
357
|
+
this.sessionMap.delete(walletId);
|
|
358
|
+
break;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=wc-session-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wc-session-service.js","sourceRoot":"","sources":["../../src/services/wc-session-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WcSigningBridge - Fire-and-forget WC signing request bridge.
|
|
3
|
+
*
|
|
4
|
+
* When an APPROVAL tier transaction is created and the wallet has an active
|
|
5
|
+
* WalletConnect session, this bridge sends a signing request to the Owner
|
|
6
|
+
* wallet (via personal_sign for EVM / solana_signMessage for Solana).
|
|
7
|
+
*
|
|
8
|
+
* On successful signature response, it verifies the signature using the
|
|
9
|
+
* existing ownerAuth verification logic (verifySIWE / Ed25519) and calls
|
|
10
|
+
* approvalWorkflow.approve() or .reject() accordingly.
|
|
11
|
+
*
|
|
12
|
+
* Key design decisions:
|
|
13
|
+
* - Fire-and-forget: requestSignature() is called with `void` prefix,
|
|
14
|
+
* never blocking the pipeline.
|
|
15
|
+
* - Timeout sync: WC request expiry is derived from pending_approvals.expires_at.
|
|
16
|
+
* - Optional dependency: Pipeline works without WcSigningBridge (checked via ctx.wcSigningBridge?.)
|
|
17
|
+
*
|
|
18
|
+
* @see packages/daemon/src/pipeline/stages.ts (stage4Wait APPROVAL branch)
|
|
19
|
+
* @see packages/daemon/src/services/wc-session-service.ts
|
|
20
|
+
* @see packages/daemon/src/workflow/approval-workflow.ts
|
|
21
|
+
*/
|
|
22
|
+
import type { Database } from 'better-sqlite3';
|
|
23
|
+
import type { EventBus } from '@waiaas/core';
|
|
24
|
+
import type { WcServiceRef } from './wc-session-service.js';
|
|
25
|
+
import type { ApprovalWorkflow } from '../workflow/approval-workflow.js';
|
|
26
|
+
import type { NotificationService } from '../notifications/notification-service.js';
|
|
27
|
+
export interface WcSigningBridgeDeps {
|
|
28
|
+
wcServiceRef: WcServiceRef;
|
|
29
|
+
approvalWorkflow: ApprovalWorkflow;
|
|
30
|
+
sqlite: Database;
|
|
31
|
+
notificationService?: NotificationService;
|
|
32
|
+
eventBus?: EventBus;
|
|
33
|
+
}
|
|
34
|
+
export declare class WcSigningBridge {
|
|
35
|
+
private readonly wcServiceRef;
|
|
36
|
+
private readonly approvalWorkflow;
|
|
37
|
+
private readonly sqlite;
|
|
38
|
+
private readonly notificationService?;
|
|
39
|
+
private readonly eventBus?;
|
|
40
|
+
constructor(deps: WcSigningBridgeDeps);
|
|
41
|
+
/**
|
|
42
|
+
* Send a WC signing request to the Owner wallet (fire-and-forget).
|
|
43
|
+
*
|
|
44
|
+
* Silently returns if WC is not initialized or no session exists.
|
|
45
|
+
* On signature response: verify + approve/reject via ApprovalWorkflow.
|
|
46
|
+
* On error: reject if user-rejected, ignore if expired (approval-expired worker handles it).
|
|
47
|
+
*/
|
|
48
|
+
requestSignature(walletId: string, txId: string, chain: string): Promise<void>;
|
|
49
|
+
private buildSignRequest;
|
|
50
|
+
private buildEvmSignRequest;
|
|
51
|
+
private buildSolanaSignRequest;
|
|
52
|
+
private resolveWcExpiry;
|
|
53
|
+
private handleSignatureResponse;
|
|
54
|
+
private handleEvmSignatureResponse;
|
|
55
|
+
private handleSolanaSignatureResponse;
|
|
56
|
+
private handleSignatureError;
|
|
57
|
+
private isApprovalStillPending;
|
|
58
|
+
private fallbackToTelegram;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=wc-signing-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wc-signing-bridge.d.ts","sourceRoot":"","sources":["../../src/services/wc-signing-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AA+DpF,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,EAAE,QAAQ,CAAC;IACjB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAYD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAsB;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAW;gBAEzB,IAAI,EAAE,mBAAmB;IAQrC;;;;;;OAMG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqEpF,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,eAAe;YAyBT,uBAAuB;YAevB,0BAA0B;IA6BxC,OAAO,CAAC,6BAA6B;IAgDrC,OAAO,CAAC,oBAAoB;IAoC5B,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,kBAAkB;CAgC3B"}
|