@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,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telegram Bot API fetch wrapper (Node.js 22 built-in fetch, no external libraries).
|
|
3
|
+
*
|
|
4
|
+
* Provides getUpdates (Long Polling), sendMessage (MarkdownV2), and answerCallbackQuery.
|
|
5
|
+
* AbortSignal.timeout used for request timeout control.
|
|
6
|
+
*/
|
|
7
|
+
import type { TelegramUpdate, TelegramInlineKeyboardMarkup } from './telegram-types.js';
|
|
8
|
+
export declare class TelegramApi {
|
|
9
|
+
private baseUrl;
|
|
10
|
+
constructor(botToken: string);
|
|
11
|
+
/**
|
|
12
|
+
* Long-poll for updates from Telegram Bot API.
|
|
13
|
+
*
|
|
14
|
+
* @param offset - Update offset (last update_id + 1)
|
|
15
|
+
* @param timeout - Long-poll timeout in seconds (server-side wait)
|
|
16
|
+
* @returns Array of updates (empty if no new updates)
|
|
17
|
+
*/
|
|
18
|
+
getUpdates(offset: number, timeout: number): Promise<TelegramUpdate[]>;
|
|
19
|
+
/**
|
|
20
|
+
* Send a text message to a chat.
|
|
21
|
+
*
|
|
22
|
+
* @param chatId - Target chat ID
|
|
23
|
+
* @param text - Message text (MarkdownV2 formatted)
|
|
24
|
+
* @param replyMarkup - Optional inline keyboard markup
|
|
25
|
+
*/
|
|
26
|
+
sendMessage(chatId: number, text: string, replyMarkup?: TelegramInlineKeyboardMarkup): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Answer a callback query (acknowledge button press).
|
|
29
|
+
*
|
|
30
|
+
* @param callbackQueryId - Callback query ID from the update
|
|
31
|
+
* @param text - Optional notification text shown to user
|
|
32
|
+
*/
|
|
33
|
+
answerCallbackQuery(callbackQueryId: string, text?: string): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=telegram-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telegram-api.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/telegram/telegram-api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,4BAA4B,EAC7B,MAAM,qBAAqB,CAAC;AAE7B,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAS;gBAEZ,QAAQ,EAAE,MAAM;IAI5B;;;;;;OAMG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAkB5E;;;;;;OAMG;IACG,WAAW,CACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,4BAA4B,GACzC,OAAO,CAAC,IAAI,CAAC;IAmBhB;;;;;OAKG;IACG,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUjF"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telegram Bot API fetch wrapper (Node.js 22 built-in fetch, no external libraries).
|
|
3
|
+
*
|
|
4
|
+
* Provides getUpdates (Long Polling), sendMessage (MarkdownV2), and answerCallbackQuery.
|
|
5
|
+
* AbortSignal.timeout used for request timeout control.
|
|
6
|
+
*/
|
|
7
|
+
export class TelegramApi {
|
|
8
|
+
baseUrl;
|
|
9
|
+
constructor(botToken) {
|
|
10
|
+
this.baseUrl = `https://api.telegram.org/bot${botToken}`;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Long-poll for updates from Telegram Bot API.
|
|
14
|
+
*
|
|
15
|
+
* @param offset - Update offset (last update_id + 1)
|
|
16
|
+
* @param timeout - Long-poll timeout in seconds (server-side wait)
|
|
17
|
+
* @returns Array of updates (empty if no new updates)
|
|
18
|
+
*/
|
|
19
|
+
async getUpdates(offset, timeout) {
|
|
20
|
+
const url = `${this.baseUrl}/getUpdates`;
|
|
21
|
+
const res = await fetch(url, {
|
|
22
|
+
method: 'POST',
|
|
23
|
+
headers: { 'Content-Type': 'application/json' },
|
|
24
|
+
body: JSON.stringify({
|
|
25
|
+
offset,
|
|
26
|
+
timeout,
|
|
27
|
+
allowed_updates: ['message', 'callback_query'],
|
|
28
|
+
}),
|
|
29
|
+
signal: AbortSignal.timeout((timeout + 5) * 1000),
|
|
30
|
+
});
|
|
31
|
+
if (!res.ok)
|
|
32
|
+
throw new Error(`Telegram API error: ${res.status}`);
|
|
33
|
+
const data = (await res.json());
|
|
34
|
+
if (!data.ok)
|
|
35
|
+
throw new Error('Telegram API returned ok=false');
|
|
36
|
+
return data.result;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Send a text message to a chat.
|
|
40
|
+
*
|
|
41
|
+
* @param chatId - Target chat ID
|
|
42
|
+
* @param text - Message text (MarkdownV2 formatted)
|
|
43
|
+
* @param replyMarkup - Optional inline keyboard markup
|
|
44
|
+
*/
|
|
45
|
+
async sendMessage(chatId, text, replyMarkup) {
|
|
46
|
+
const url = `${this.baseUrl}/sendMessage`;
|
|
47
|
+
const body = {
|
|
48
|
+
chat_id: chatId,
|
|
49
|
+
text,
|
|
50
|
+
parse_mode: 'MarkdownV2',
|
|
51
|
+
};
|
|
52
|
+
if (replyMarkup)
|
|
53
|
+
body.reply_markup = replyMarkup;
|
|
54
|
+
const res = await fetch(url, {
|
|
55
|
+
method: 'POST',
|
|
56
|
+
headers: { 'Content-Type': 'application/json' },
|
|
57
|
+
body: JSON.stringify(body),
|
|
58
|
+
});
|
|
59
|
+
if (!res.ok) {
|
|
60
|
+
const b = await res.text();
|
|
61
|
+
throw new Error(`sendMessage failed: ${res.status} ${b}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Answer a callback query (acknowledge button press).
|
|
66
|
+
*
|
|
67
|
+
* @param callbackQueryId - Callback query ID from the update
|
|
68
|
+
* @param text - Optional notification text shown to user
|
|
69
|
+
*/
|
|
70
|
+
async answerCallbackQuery(callbackQueryId, text) {
|
|
71
|
+
const url = `${this.baseUrl}/answerCallbackQuery`;
|
|
72
|
+
const body = { callback_query_id: callbackQueryId };
|
|
73
|
+
if (text)
|
|
74
|
+
body.text = text;
|
|
75
|
+
await fetch(url, {
|
|
76
|
+
method: 'POST',
|
|
77
|
+
headers: { 'Content-Type': 'application/json' },
|
|
78
|
+
body: JSON.stringify(body),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=telegram-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telegram-api.js","sourceRoot":"","sources":["../../../src/infrastructure/telegram/telegram-api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,OAAO,WAAW;IACd,OAAO,CAAS;IAExB,YAAY,QAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,+BAA+B,QAAQ,EAAE,CAAC;IAC3D,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,OAAe;QAC9C,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,aAAa,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,MAAM;gBACN,OAAO;gBACP,eAAe,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC;aAC/C,CAAC;YACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;SAClD,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA8C,CAAC;QAC7E,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CACf,MAAc,EACd,IAAY,EACZ,WAA0C;QAE1C,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,cAAc,CAAC;QAC1C,MAAM,IAAI,GAA4B;YACpC,OAAO,EAAE,MAAM;YACf,IAAI;YACJ,UAAU,EAAE,YAAY;SACzB,CAAC;QACF,IAAI,WAAW;YAAE,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QACjD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,mBAAmB,CAAC,eAAuB,EAAE,IAAa;QAC9D,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,sBAAsB,CAAC;QAClD,MAAM,IAAI,GAA4B,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC;QAC7E,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3B,MAAM,KAAK,CAAC,GAAG,EAAE;YACf,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telegram Bot 2-Tier Authorization module.
|
|
3
|
+
*
|
|
4
|
+
* Enforces role-based access control for Telegram Bot commands:
|
|
5
|
+
* - PUBLIC: /start, /help (anyone, even unregistered)
|
|
6
|
+
* - READONLY: /status, /wallets (READONLY + ADMIN roles)
|
|
7
|
+
* - ADMIN: /pending, /approve, /reject, /killswitch, /newsession (ADMIN only)
|
|
8
|
+
*
|
|
9
|
+
* Roles: PENDING (awaiting admin approval), READONLY, ADMIN.
|
|
10
|
+
*
|
|
11
|
+
* Uses better-sqlite3 directly (same pattern as KillSwitchService).
|
|
12
|
+
*
|
|
13
|
+
* @see packages/daemon/src/services/kill-switch-service.ts (SQLite direct pattern)
|
|
14
|
+
*/
|
|
15
|
+
import type { Database } from 'better-sqlite3';
|
|
16
|
+
import type { TelegramUserRole } from './telegram-types.js';
|
|
17
|
+
export declare const PUBLIC_COMMANDS: readonly ["/start", "/help"];
|
|
18
|
+
export declare const READONLY_COMMANDS: readonly ["/status", "/wallets"];
|
|
19
|
+
export declare const ADMIN_COMMANDS: readonly ["/pending", "/approve", "/reject", "/killswitch", "/newsession"];
|
|
20
|
+
export declare class TelegramAuth {
|
|
21
|
+
private sqlite;
|
|
22
|
+
constructor(sqlite: Database);
|
|
23
|
+
/**
|
|
24
|
+
* Look up the role for a given chat_id.
|
|
25
|
+
* Returns null if the user is not registered.
|
|
26
|
+
*/
|
|
27
|
+
getRole(chatId: number): TelegramUserRole | null;
|
|
28
|
+
/**
|
|
29
|
+
* Check whether a chat_id is allowed to execute the given command.
|
|
30
|
+
*
|
|
31
|
+
* @returns `{ allowed: true }` or `{ allowed: false, reason }`.
|
|
32
|
+
* Possible reasons: 'not_registered', 'pending_approval', 'admin_only'.
|
|
33
|
+
*/
|
|
34
|
+
checkPermission(chatId: number, command: string): {
|
|
35
|
+
allowed: boolean;
|
|
36
|
+
reason?: string;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Update a user's role (called from Admin API).
|
|
40
|
+
* Sets approved_at timestamp when changing from PENDING.
|
|
41
|
+
*
|
|
42
|
+
* @returns true if a row was updated, false if chatId not found.
|
|
43
|
+
*/
|
|
44
|
+
updateRole(chatId: number, newRole: 'ADMIN' | 'READONLY'): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* List all registered Telegram users (for Admin API).
|
|
47
|
+
* Ordered by registration time descending (newest first).
|
|
48
|
+
*/
|
|
49
|
+
listUsers(): Array<{
|
|
50
|
+
chat_id: number;
|
|
51
|
+
username: string | null;
|
|
52
|
+
role: string;
|
|
53
|
+
registered_at: number;
|
|
54
|
+
approved_at: number | null;
|
|
55
|
+
}>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=telegram-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telegram-auth.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/telegram/telegram-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAM5D,eAAO,MAAM,eAAe,8BAA+B,CAAC;AAC5D,eAAO,MAAM,iBAAiB,kCAAmC,CAAC;AAClE,eAAO,MAAM,cAAc,4EAA6E,CAAC;AAMzG,qBAAa,YAAY;IACX,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,QAAQ;IAEpC;;;OAGG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAOhD;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAsBvF;;;;;OAKG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO;IAQlE;;;OAGG;IACH,SAAS,IAAI,KAAK,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;CAaH"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telegram Bot 2-Tier Authorization module.
|
|
3
|
+
*
|
|
4
|
+
* Enforces role-based access control for Telegram Bot commands:
|
|
5
|
+
* - PUBLIC: /start, /help (anyone, even unregistered)
|
|
6
|
+
* - READONLY: /status, /wallets (READONLY + ADMIN roles)
|
|
7
|
+
* - ADMIN: /pending, /approve, /reject, /killswitch, /newsession (ADMIN only)
|
|
8
|
+
*
|
|
9
|
+
* Roles: PENDING (awaiting admin approval), READONLY, ADMIN.
|
|
10
|
+
*
|
|
11
|
+
* Uses better-sqlite3 directly (same pattern as KillSwitchService).
|
|
12
|
+
*
|
|
13
|
+
* @see packages/daemon/src/services/kill-switch-service.ts (SQLite direct pattern)
|
|
14
|
+
*/
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// Command permission tiers
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
export const PUBLIC_COMMANDS = ['/start', '/help'];
|
|
19
|
+
export const READONLY_COMMANDS = ['/status', '/wallets'];
|
|
20
|
+
export const ADMIN_COMMANDS = ['/pending', '/approve', '/reject', '/killswitch', '/newsession'];
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// TelegramAuth
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
export class TelegramAuth {
|
|
25
|
+
sqlite;
|
|
26
|
+
constructor(sqlite) {
|
|
27
|
+
this.sqlite = sqlite;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Look up the role for a given chat_id.
|
|
31
|
+
* Returns null if the user is not registered.
|
|
32
|
+
*/
|
|
33
|
+
getRole(chatId) {
|
|
34
|
+
const row = this.sqlite
|
|
35
|
+
.prepare('SELECT role FROM telegram_users WHERE chat_id = ?')
|
|
36
|
+
.get(chatId);
|
|
37
|
+
return row?.role ?? null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Check whether a chat_id is allowed to execute the given command.
|
|
41
|
+
*
|
|
42
|
+
* @returns `{ allowed: true }` or `{ allowed: false, reason }`.
|
|
43
|
+
* Possible reasons: 'not_registered', 'pending_approval', 'admin_only'.
|
|
44
|
+
*/
|
|
45
|
+
checkPermission(chatId, command) {
|
|
46
|
+
// PUBLIC commands: anyone (even unregistered) can execute
|
|
47
|
+
if (PUBLIC_COMMANDS.includes(command)) {
|
|
48
|
+
return { allowed: true };
|
|
49
|
+
}
|
|
50
|
+
const role = this.getRole(chatId);
|
|
51
|
+
if (!role)
|
|
52
|
+
return { allowed: false, reason: 'not_registered' };
|
|
53
|
+
if (role === 'PENDING')
|
|
54
|
+
return { allowed: false, reason: 'pending_approval' };
|
|
55
|
+
// READONLY: /status, /wallets only
|
|
56
|
+
if (role === 'READONLY') {
|
|
57
|
+
if (READONLY_COMMANDS.includes(command)) {
|
|
58
|
+
return { allowed: true };
|
|
59
|
+
}
|
|
60
|
+
return { allowed: false, reason: 'admin_only' };
|
|
61
|
+
}
|
|
62
|
+
// ADMIN: all commands allowed
|
|
63
|
+
return { allowed: true };
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Update a user's role (called from Admin API).
|
|
67
|
+
* Sets approved_at timestamp when changing from PENDING.
|
|
68
|
+
*
|
|
69
|
+
* @returns true if a row was updated, false if chatId not found.
|
|
70
|
+
*/
|
|
71
|
+
updateRole(chatId, newRole) {
|
|
72
|
+
const now = Math.floor(Date.now() / 1000);
|
|
73
|
+
const result = this.sqlite
|
|
74
|
+
.prepare('UPDATE telegram_users SET role = ?, approved_at = ? WHERE chat_id = ?')
|
|
75
|
+
.run(newRole, now, chatId);
|
|
76
|
+
return result.changes > 0;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* List all registered Telegram users (for Admin API).
|
|
80
|
+
* Ordered by registration time descending (newest first).
|
|
81
|
+
*/
|
|
82
|
+
listUsers() {
|
|
83
|
+
return this.sqlite
|
|
84
|
+
.prepare('SELECT chat_id, username, role, registered_at, approved_at FROM telegram_users ORDER BY registered_at DESC')
|
|
85
|
+
.all();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=telegram-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telegram-auth.js","sourceRoot":"","sources":["../../../src/infrastructure/telegram/telegram-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU,CAAC;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,UAAU,CAAU,CAAC;AAClE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,CAAU,CAAC;AAEzG,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,OAAO,YAAY;IACH;IAApB,YAAoB,MAAgB;QAAhB,WAAM,GAAN,MAAM,CAAU;IAAG,CAAC;IAExC;;;OAGG;IACH,OAAO,CAAC,MAAc;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM;aACpB,OAAO,CAAC,mDAAmD,CAAC;aAC5D,GAAG,CAAC,MAAM,CAAiC,CAAC;QAC/C,OAAQ,GAAG,EAAE,IAAyB,IAAI,IAAI,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,MAAc,EAAE,OAAe;QAC7C,0DAA0D;QAC1D,IAAK,eAAqC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;QAC/D,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QAE9E,mCAAmC;QACnC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,IAAK,iBAAuC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3B,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QAClD,CAAC;QAED,8BAA8B;QAC9B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,MAAc,EAAE,OAA6B;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;aACvB,OAAO,CAAC,uEAAuE,CAAC;aAChF,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,SAAS;QAOP,OAAO,IAAI,CAAC,MAAM;aACf,OAAO,CACN,4GAA4G,CAC7G;aACA,GAAG,EAMJ,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TelegramBotService: Long Polling bot with 2-Tier auth + 9 commands.
|
|
3
|
+
*
|
|
4
|
+
* Uses better-sqlite3 directly for DB access (same pattern as KillSwitchService).
|
|
5
|
+
* Long Polling with exponential backoff (1s -> 2s -> 4s -> ... -> 30s max).
|
|
6
|
+
* MarkdownV2 escape for all user-facing text.
|
|
7
|
+
*
|
|
8
|
+
* Commands:
|
|
9
|
+
* /start - Register chat_id as PENDING user (public)
|
|
10
|
+
* /help - Show available commands (public)
|
|
11
|
+
* /status - Show daemon status, wallet count, session count (readonly+)
|
|
12
|
+
* /wallets - List all wallets (readonly+)
|
|
13
|
+
* /pending - List pending approval transactions (admin)
|
|
14
|
+
* /approve - Approve a pending transaction (admin)
|
|
15
|
+
* /reject - Reject a pending transaction (admin)
|
|
16
|
+
* /killswitch - Activate kill switch with confirmation (admin)
|
|
17
|
+
* /newsession - Create a new session for a wallet (admin)
|
|
18
|
+
*
|
|
19
|
+
* Auth: TelegramAuth 2-Tier (PUBLIC / READONLY / ADMIN)
|
|
20
|
+
* Callback queries: inline keyboard buttons for approve/reject/killswitch/newsession
|
|
21
|
+
*
|
|
22
|
+
* @see packages/daemon/src/services/kill-switch-service.ts (SQLite direct pattern)
|
|
23
|
+
* @see packages/daemon/src/services/autostop-service.ts (service start/stop pattern)
|
|
24
|
+
*/
|
|
25
|
+
import type { Database } from 'better-sqlite3';
|
|
26
|
+
import type { SupportedLocale } from '@waiaas/core';
|
|
27
|
+
import type { TelegramApi } from './telegram-api.js';
|
|
28
|
+
import type { KillSwitchService } from '../../services/kill-switch-service.js';
|
|
29
|
+
import type { NotificationService } from '../../notifications/notification-service.js';
|
|
30
|
+
import type { SettingsService } from '../settings/settings-service.js';
|
|
31
|
+
import type { JwtSecretManager } from '../jwt/index.js';
|
|
32
|
+
/**
|
|
33
|
+
* Escape special characters for Telegram MarkdownV2 parse mode.
|
|
34
|
+
* @see https://core.telegram.org/bots/api#markdownv2-style
|
|
35
|
+
*/
|
|
36
|
+
export declare const escapeMarkdownV2: (s: string) => string;
|
|
37
|
+
export interface TelegramBotServiceOptions {
|
|
38
|
+
sqlite: Database;
|
|
39
|
+
api: TelegramApi;
|
|
40
|
+
locale?: SupportedLocale;
|
|
41
|
+
killSwitchService?: KillSwitchService;
|
|
42
|
+
notificationService?: NotificationService;
|
|
43
|
+
settingsService?: SettingsService;
|
|
44
|
+
jwtSecretManager?: JwtSecretManager;
|
|
45
|
+
sessionTtl?: number;
|
|
46
|
+
}
|
|
47
|
+
export declare class TelegramBotService {
|
|
48
|
+
private sqlite;
|
|
49
|
+
private api;
|
|
50
|
+
private locale;
|
|
51
|
+
private killSwitchService?;
|
|
52
|
+
private jwtSecretManager?;
|
|
53
|
+
private sessionTtl;
|
|
54
|
+
private auth;
|
|
55
|
+
private running;
|
|
56
|
+
private offset;
|
|
57
|
+
private backoffMs;
|
|
58
|
+
private retryCount;
|
|
59
|
+
private static readonly MAX_BACKOFF_MS;
|
|
60
|
+
private static readonly POLL_TIMEOUT_SEC;
|
|
61
|
+
constructor(opts: TelegramBotServiceOptions);
|
|
62
|
+
/**
|
|
63
|
+
* Start the Long Polling loop (fire-and-forget, runs in background).
|
|
64
|
+
* Does NOT block -- returns immediately after starting the async loop.
|
|
65
|
+
*/
|
|
66
|
+
start(): void;
|
|
67
|
+
/**
|
|
68
|
+
* Stop the Long Polling loop. The loop exits on next iteration.
|
|
69
|
+
*/
|
|
70
|
+
stop(): void;
|
|
71
|
+
/** Whether the bot service is currently running. */
|
|
72
|
+
get isRunning(): boolean;
|
|
73
|
+
/** Current backoff interval in ms (for testing). */
|
|
74
|
+
get currentBackoffMs(): number;
|
|
75
|
+
/** Current consecutive failure count (for testing). */
|
|
76
|
+
get consecutiveFailures(): number;
|
|
77
|
+
private pollLoop;
|
|
78
|
+
private handleUpdate;
|
|
79
|
+
private handleMessage;
|
|
80
|
+
private handleCallbackQuery;
|
|
81
|
+
private handleStart;
|
|
82
|
+
private handleHelp;
|
|
83
|
+
private handleStatus;
|
|
84
|
+
private handleWallets;
|
|
85
|
+
private handlePending;
|
|
86
|
+
private handleApprove;
|
|
87
|
+
private handleReject;
|
|
88
|
+
private handleKillswitch;
|
|
89
|
+
private executeKillswitchConfirm;
|
|
90
|
+
private handleNewSession;
|
|
91
|
+
private executeNewSession;
|
|
92
|
+
private formatUptime;
|
|
93
|
+
private sleep;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=telegram-bot-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telegram-bot-service.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/telegram/telegram-bot-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,iBAAiB,CAAC;AAQpE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,GAAG,MAAM,KAAG,MACK,CAAC;AAMnD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,QAAQ,CAAC;IACjB,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,iBAAiB,CAAC,CAAoB;IAC9C,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAU;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAM;gBAElC,IAAI,EAAE,yBAAyB;IAU3C;;;OAGG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ,oDAAoD;IACpD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,oDAAoD;IACpD,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,uDAAuD;IACvD,IAAI,mBAAmB,IAAI,MAAM,CAEhC;YAMa,QAAQ;YA8CR,YAAY;YAUZ,aAAa;YAqEb,mBAAmB;YA0EnB,WAAW;YAqBX,UAAU;YAKV,YAAY;YAgDZ,aAAa;YAiCb,aAAa;YAoDb,aAAa;YAmDb,YAAY;YAmDZ,gBAAgB;YAwBhB,wBAAwB;YA0BxB,gBAAgB;YAqBhB,iBAAiB;IAoE/B,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,KAAK;CAGd"}
|