@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,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Setting key definitions (SSoT) for daemon operational settings.
|
|
3
|
+
*
|
|
4
|
+
* Each setting has a key (DB storage), category, configPath (for config.toml lookup),
|
|
5
|
+
* defaultValue (matching DaemonConfigSchema .default()), and isCredential flag.
|
|
6
|
+
*
|
|
7
|
+
* Categories: notifications, rpc, security, daemon, walletconnect, oracle, display, autostop, monitoring, telegram
|
|
8
|
+
*
|
|
9
|
+
* @see packages/daemon/src/infrastructure/config/loader.ts for DaemonConfigSchema defaults
|
|
10
|
+
*/
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Categories
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
export const SETTING_CATEGORIES = [
|
|
15
|
+
'notifications',
|
|
16
|
+
'rpc',
|
|
17
|
+
'security',
|
|
18
|
+
'daemon',
|
|
19
|
+
'walletconnect',
|
|
20
|
+
'oracle',
|
|
21
|
+
'display',
|
|
22
|
+
'autostop',
|
|
23
|
+
'monitoring',
|
|
24
|
+
'telegram',
|
|
25
|
+
];
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// Setting Definitions
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
export const SETTING_DEFINITIONS = [
|
|
30
|
+
// --- notifications category ---
|
|
31
|
+
{ key: 'notifications.enabled', category: 'notifications', configPath: 'notifications.enabled', defaultValue: 'false', isCredential: false },
|
|
32
|
+
{ key: 'notifications.telegram_bot_token', category: 'notifications', configPath: 'notifications.telegram_bot_token', defaultValue: '', isCredential: true },
|
|
33
|
+
{ key: 'notifications.telegram_chat_id', category: 'notifications', configPath: 'notifications.telegram_chat_id', defaultValue: '', isCredential: false },
|
|
34
|
+
{ key: 'notifications.discord_webhook_url', category: 'notifications', configPath: 'notifications.discord_webhook_url', defaultValue: '', isCredential: true },
|
|
35
|
+
{ key: 'notifications.ntfy_server', category: 'notifications', configPath: 'notifications.ntfy_server', defaultValue: 'https://ntfy.sh', isCredential: false },
|
|
36
|
+
{ key: 'notifications.ntfy_topic', category: 'notifications', configPath: 'notifications.ntfy_topic', defaultValue: '', isCredential: false },
|
|
37
|
+
{ key: 'notifications.slack_webhook_url', category: 'notifications', configPath: 'notifications.slack_webhook_url', defaultValue: '', isCredential: true },
|
|
38
|
+
{ key: 'notifications.locale', category: 'notifications', configPath: 'notifications.locale', defaultValue: 'en', isCredential: false },
|
|
39
|
+
{ key: 'notifications.rate_limit_rpm', category: 'notifications', configPath: 'notifications.rate_limit_rpm', defaultValue: '20', isCredential: false },
|
|
40
|
+
// --- rpc category (Solana 3 + EVM 10 + evm_default_network) ---
|
|
41
|
+
{ key: 'rpc.solana_mainnet', category: 'rpc', configPath: 'rpc.solana_mainnet', defaultValue: 'https://api.mainnet-beta.solana.com', isCredential: false },
|
|
42
|
+
{ key: 'rpc.solana_devnet', category: 'rpc', configPath: 'rpc.solana_devnet', defaultValue: 'https://api.devnet.solana.com', isCredential: false },
|
|
43
|
+
{ key: 'rpc.solana_testnet', category: 'rpc', configPath: 'rpc.solana_testnet', defaultValue: 'https://api.testnet.solana.com', isCredential: false },
|
|
44
|
+
{ key: 'rpc.evm_ethereum_mainnet', category: 'rpc', configPath: 'rpc.evm_ethereum_mainnet', defaultValue: 'https://eth.drpc.org', isCredential: false },
|
|
45
|
+
{ key: 'rpc.evm_ethereum_sepolia', category: 'rpc', configPath: 'rpc.evm_ethereum_sepolia', defaultValue: 'https://sepolia.drpc.org', isCredential: false },
|
|
46
|
+
{ key: 'rpc.evm_polygon_mainnet', category: 'rpc', configPath: 'rpc.evm_polygon_mainnet', defaultValue: 'https://polygon.drpc.org', isCredential: false },
|
|
47
|
+
{ key: 'rpc.evm_polygon_amoy', category: 'rpc', configPath: 'rpc.evm_polygon_amoy', defaultValue: 'https://polygon-amoy.drpc.org', isCredential: false },
|
|
48
|
+
{ key: 'rpc.evm_arbitrum_mainnet', category: 'rpc', configPath: 'rpc.evm_arbitrum_mainnet', defaultValue: 'https://arbitrum.drpc.org', isCredential: false },
|
|
49
|
+
{ key: 'rpc.evm_arbitrum_sepolia', category: 'rpc', configPath: 'rpc.evm_arbitrum_sepolia', defaultValue: 'https://arbitrum-sepolia.drpc.org', isCredential: false },
|
|
50
|
+
{ key: 'rpc.evm_optimism_mainnet', category: 'rpc', configPath: 'rpc.evm_optimism_mainnet', defaultValue: 'https://optimism.drpc.org', isCredential: false },
|
|
51
|
+
{ key: 'rpc.evm_optimism_sepolia', category: 'rpc', configPath: 'rpc.evm_optimism_sepolia', defaultValue: 'https://optimism-sepolia.drpc.org', isCredential: false },
|
|
52
|
+
{ key: 'rpc.evm_base_mainnet', category: 'rpc', configPath: 'rpc.evm_base_mainnet', defaultValue: 'https://base.drpc.org', isCredential: false },
|
|
53
|
+
{ key: 'rpc.evm_base_sepolia', category: 'rpc', configPath: 'rpc.evm_base_sepolia', defaultValue: 'https://base-sepolia.drpc.org', isCredential: false },
|
|
54
|
+
{ key: 'rpc.evm_default_network', category: 'rpc', configPath: 'rpc.evm_default_network', defaultValue: 'ethereum-sepolia', isCredential: false },
|
|
55
|
+
// --- security category ---
|
|
56
|
+
{ key: 'security.session_ttl', category: 'security', configPath: 'security.session_ttl', defaultValue: '86400', isCredential: false },
|
|
57
|
+
{ key: 'security.max_sessions_per_wallet', category: 'security', configPath: 'security.max_sessions_per_wallet', defaultValue: '5', isCredential: false },
|
|
58
|
+
{ key: 'security.max_pending_tx', category: 'security', configPath: 'security.max_pending_tx', defaultValue: '10', isCredential: false },
|
|
59
|
+
{ key: 'security.rate_limit_global_ip_rpm', category: 'security', configPath: 'security.rate_limit_global_ip_rpm', defaultValue: '1000', isCredential: false },
|
|
60
|
+
{ key: 'security.rate_limit_session_rpm', category: 'security', configPath: 'security.rate_limit_session_rpm', defaultValue: '300', isCredential: false },
|
|
61
|
+
{ key: 'security.rate_limit_tx_rpm', category: 'security', configPath: 'security.rate_limit_tx_rpm', defaultValue: '10', isCredential: false },
|
|
62
|
+
{ key: 'security.policy_defaults_delay_seconds', category: 'security', configPath: 'security.policy_defaults_delay_seconds', defaultValue: '300', isCredential: false },
|
|
63
|
+
{ key: 'security.policy_defaults_approval_timeout', category: 'security', configPath: 'security.policy_defaults_approval_timeout', defaultValue: '3600', isCredential: false },
|
|
64
|
+
// --- policy default deny toggles (Phase 116) ---
|
|
65
|
+
{ key: 'policy.default_deny_tokens', category: 'security', configPath: 'security.default_deny_tokens', defaultValue: 'true', isCredential: false },
|
|
66
|
+
{ key: 'policy.default_deny_contracts', category: 'security', configPath: 'security.default_deny_contracts', defaultValue: 'true', isCredential: false },
|
|
67
|
+
{ key: 'policy.default_deny_spenders', category: 'security', configPath: 'security.default_deny_spenders', defaultValue: 'true', isCredential: false },
|
|
68
|
+
// --- daemon category ---
|
|
69
|
+
{ key: 'daemon.log_level', category: 'daemon', configPath: 'daemon.log_level', defaultValue: 'info', isCredential: false },
|
|
70
|
+
// --- walletconnect category ---
|
|
71
|
+
{ key: 'walletconnect.project_id', category: 'walletconnect', configPath: 'walletconnect.project_id', defaultValue: '', isCredential: false },
|
|
72
|
+
{ key: 'walletconnect.relay_url', category: 'walletconnect', configPath: 'walletconnect.relay_url', defaultValue: 'wss://relay.walletconnect.com', isCredential: false },
|
|
73
|
+
// --- oracle category ---
|
|
74
|
+
{ key: 'oracle.coingecko_api_key', category: 'oracle', configPath: 'oracle.coingecko_api_key', defaultValue: '', isCredential: true },
|
|
75
|
+
{ key: 'oracle.cross_validation_threshold', category: 'oracle', configPath: 'oracle.cross_validation_threshold', defaultValue: '5', isCredential: false },
|
|
76
|
+
// --- display category ---
|
|
77
|
+
{ key: 'display.currency', category: 'display', configPath: 'display.currency', defaultValue: 'USD', isCredential: false },
|
|
78
|
+
// --- autostop category (AUTO-05 runtime-overridable) ---
|
|
79
|
+
{ key: 'autostop.consecutive_failures_threshold', category: 'autostop', configPath: 'security.autostop_consecutive_failures_threshold', defaultValue: '5', isCredential: false },
|
|
80
|
+
{ key: 'autostop.unusual_activity_threshold', category: 'autostop', configPath: 'security.autostop_unusual_activity_threshold', defaultValue: '20', isCredential: false },
|
|
81
|
+
{ key: 'autostop.unusual_activity_window_sec', category: 'autostop', configPath: 'security.autostop_unusual_activity_window_sec', defaultValue: '300', isCredential: false },
|
|
82
|
+
{ key: 'autostop.idle_timeout_sec', category: 'autostop', configPath: 'security.autostop_idle_timeout_sec', defaultValue: '3600', isCredential: false },
|
|
83
|
+
{ key: 'autostop.idle_check_interval_sec', category: 'autostop', configPath: 'security.autostop_idle_check_interval_sec', defaultValue: '60', isCredential: false },
|
|
84
|
+
{ key: 'autostop.enabled', category: 'autostop', configPath: 'security.autostop_enabled', defaultValue: 'true', isCredential: false },
|
|
85
|
+
// --- monitoring category (BMON-05 runtime-overridable) ---
|
|
86
|
+
{ key: 'monitoring.check_interval_sec', category: 'monitoring', configPath: 'security.monitoring_check_interval_sec', defaultValue: '300', isCredential: false },
|
|
87
|
+
{ key: 'monitoring.low_balance_threshold_sol', category: 'monitoring', configPath: 'security.monitoring_low_balance_threshold_sol', defaultValue: '0.01', isCredential: false },
|
|
88
|
+
{ key: 'monitoring.low_balance_threshold_eth', category: 'monitoring', configPath: 'security.monitoring_low_balance_threshold_eth', defaultValue: '0.005', isCredential: false },
|
|
89
|
+
{ key: 'monitoring.cooldown_hours', category: 'monitoring', configPath: 'security.monitoring_cooldown_hours', defaultValue: '24', isCredential: false },
|
|
90
|
+
{ key: 'monitoring.enabled', category: 'monitoring', configPath: 'security.monitoring_enabled', defaultValue: 'true', isCredential: false },
|
|
91
|
+
// --- telegram category (Bot service settings) ---
|
|
92
|
+
{ key: 'telegram.enabled', category: 'telegram', configPath: 'telegram.enabled', defaultValue: 'false', isCredential: false },
|
|
93
|
+
{ key: 'telegram.bot_token', category: 'telegram', configPath: 'telegram.bot_token', defaultValue: '', isCredential: true },
|
|
94
|
+
{ key: 'telegram.locale', category: 'telegram', configPath: 'telegram.locale', defaultValue: 'en', isCredential: false },
|
|
95
|
+
];
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
// Lookup helpers
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
/** Map from key -> SettingDefinition for O(1) lookup */
|
|
100
|
+
const definitionMap = new Map(SETTING_DEFINITIONS.map((def) => [def.key, def]));
|
|
101
|
+
/** Get a setting definition by key, or undefined if not found */
|
|
102
|
+
export function getSettingDefinition(key) {
|
|
103
|
+
return definitionMap.get(key);
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=setting-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setting-keys.js","sourceRoot":"","sources":["../../../src/infrastructure/settings/setting-keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AES-256-GCM encryption/decryption for daemon settings credential values.
|
|
3
|
+
*
|
|
4
|
+
* Uses HKDF(SHA-256) to derive a settings-specific 32-byte subkey from the
|
|
5
|
+
* master password. Unlike the keystore's Argon2id KDF (300ms+), this uses
|
|
6
|
+
* a lightweight derivation suitable for frequent read operations.
|
|
7
|
+
*
|
|
8
|
+
* The fixed HKDF salt ensures the same master password always derives the
|
|
9
|
+
* same key, enabling decrypt without storing an extra per-entry salt.
|
|
10
|
+
*
|
|
11
|
+
* Encrypted format: base64(JSON({ iv, ct, tag })) where iv/ct/tag are hex strings.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Derive a 32-byte AES-256 key from master password using HKDF(SHA-256).
|
|
15
|
+
*/
|
|
16
|
+
export declare function deriveSettingsKey(masterPassword: string): Buffer;
|
|
17
|
+
/**
|
|
18
|
+
* Encrypt a plaintext setting value with AES-256-GCM.
|
|
19
|
+
*
|
|
20
|
+
* @param plaintext - The value to encrypt (e.g., bot token, webhook URL)
|
|
21
|
+
* @param masterPassword - Master password for key derivation
|
|
22
|
+
* @returns Base64-encoded JSON string containing { iv, ct, tag }
|
|
23
|
+
*/
|
|
24
|
+
export declare function encryptSettingValue(plaintext: string, masterPassword: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Decrypt an AES-256-GCM encrypted setting value.
|
|
27
|
+
*
|
|
28
|
+
* @param encrypted - Base64-encoded JSON string from encryptSettingValue()
|
|
29
|
+
* @param masterPassword - Master password for key derivation
|
|
30
|
+
* @returns Decrypted plaintext string
|
|
31
|
+
* @throws Error if password is wrong or data is corrupted (GCM authTag mismatch)
|
|
32
|
+
*/
|
|
33
|
+
export declare function decryptSettingValue(encrypted: string, masterPassword: string): string;
|
|
34
|
+
/**
|
|
35
|
+
* Settings keys whose values must be encrypted before DB storage.
|
|
36
|
+
* SettingsService checks this set to determine encrypt/decrypt behavior.
|
|
37
|
+
*/
|
|
38
|
+
export declare const CREDENTIAL_KEYS: Set<string>;
|
|
39
|
+
//# sourceMappingURL=settings-crypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-crypto.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/settings/settings-crypto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAIhE;AAQD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAarF;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAWrF;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,aAK1B,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AES-256-GCM encryption/decryption for daemon settings credential values.
|
|
3
|
+
*
|
|
4
|
+
* Uses HKDF(SHA-256) to derive a settings-specific 32-byte subkey from the
|
|
5
|
+
* master password. Unlike the keystore's Argon2id KDF (300ms+), this uses
|
|
6
|
+
* a lightweight derivation suitable for frequent read operations.
|
|
7
|
+
*
|
|
8
|
+
* The fixed HKDF salt ensures the same master password always derives the
|
|
9
|
+
* same key, enabling decrypt without storing an extra per-entry salt.
|
|
10
|
+
*
|
|
11
|
+
* Encrypted format: base64(JSON({ iv, ct, tag })) where iv/ct/tag are hex strings.
|
|
12
|
+
*/
|
|
13
|
+
import { randomBytes, createCipheriv, createDecipheriv, hkdfSync } from 'node:crypto';
|
|
14
|
+
const SETTINGS_HKDF_SALT = 'waiaas-settings-v1';
|
|
15
|
+
const SETTINGS_HKDF_INFO = 'settings-encryption';
|
|
16
|
+
/**
|
|
17
|
+
* Derive a 32-byte AES-256 key from master password using HKDF(SHA-256).
|
|
18
|
+
*/
|
|
19
|
+
export function deriveSettingsKey(masterPassword) {
|
|
20
|
+
return Buffer.from(hkdfSync('sha256', masterPassword, SETTINGS_HKDF_SALT, SETTINGS_HKDF_INFO, 32));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Encrypt a plaintext setting value with AES-256-GCM.
|
|
24
|
+
*
|
|
25
|
+
* @param plaintext - The value to encrypt (e.g., bot token, webhook URL)
|
|
26
|
+
* @param masterPassword - Master password for key derivation
|
|
27
|
+
* @returns Base64-encoded JSON string containing { iv, ct, tag }
|
|
28
|
+
*/
|
|
29
|
+
export function encryptSettingValue(plaintext, masterPassword) {
|
|
30
|
+
const key = deriveSettingsKey(masterPassword);
|
|
31
|
+
const iv = randomBytes(12);
|
|
32
|
+
const cipher = createCipheriv('aes-256-gcm', key, iv);
|
|
33
|
+
const ct = Buffer.concat([cipher.update(plaintext, 'utf8'), cipher.final()]);
|
|
34
|
+
const tag = cipher.getAuthTag();
|
|
35
|
+
key.fill(0); // zero key from memory
|
|
36
|
+
const obj = {
|
|
37
|
+
iv: iv.toString('hex'),
|
|
38
|
+
ct: ct.toString('hex'),
|
|
39
|
+
tag: tag.toString('hex'),
|
|
40
|
+
};
|
|
41
|
+
return Buffer.from(JSON.stringify(obj)).toString('base64');
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Decrypt an AES-256-GCM encrypted setting value.
|
|
45
|
+
*
|
|
46
|
+
* @param encrypted - Base64-encoded JSON string from encryptSettingValue()
|
|
47
|
+
* @param masterPassword - Master password for key derivation
|
|
48
|
+
* @returns Decrypted plaintext string
|
|
49
|
+
* @throws Error if password is wrong or data is corrupted (GCM authTag mismatch)
|
|
50
|
+
*/
|
|
51
|
+
export function decryptSettingValue(encrypted, masterPassword) {
|
|
52
|
+
const key = deriveSettingsKey(masterPassword);
|
|
53
|
+
const obj = JSON.parse(Buffer.from(encrypted, 'base64').toString('utf8'));
|
|
54
|
+
const decipher = createDecipheriv('aes-256-gcm', key, Buffer.from(obj.iv, 'hex'));
|
|
55
|
+
decipher.setAuthTag(Buffer.from(obj.tag, 'hex'));
|
|
56
|
+
const plain = Buffer.concat([
|
|
57
|
+
decipher.update(Buffer.from(obj.ct, 'hex')),
|
|
58
|
+
decipher.final(),
|
|
59
|
+
]);
|
|
60
|
+
key.fill(0); // zero key from memory
|
|
61
|
+
return plain.toString('utf8');
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Settings keys whose values must be encrypted before DB storage.
|
|
65
|
+
* SettingsService checks this set to determine encrypt/decrypt behavior.
|
|
66
|
+
*/
|
|
67
|
+
export const CREDENTIAL_KEYS = new Set([
|
|
68
|
+
'notifications.telegram_bot_token',
|
|
69
|
+
'notifications.discord_webhook_url',
|
|
70
|
+
'notifications.slack_webhook_url',
|
|
71
|
+
'security.jwt_secret',
|
|
72
|
+
]);
|
|
73
|
+
//# sourceMappingURL=settings-crypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-crypto.js","sourceRoot":"","sources":["../../../src/infrastructure/settings/settings-crypto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtF,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAChD,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAEjD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,cAAsB;IACtD,OAAO,MAAM,CAAC,IAAI,CAChB,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAC/E,CAAC;AACJ,CAAC;AAQD;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB,EAAE,cAAsB;IAC3E,MAAM,GAAG,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAC9C,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAChC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB;IACpC,MAAM,GAAG,GAAmB;QAC1B,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;KACzB,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB,EAAE,cAAsB;IAC3E,MAAM,GAAG,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAmB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAClF,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3C,QAAQ,CAAC,KAAK,EAAE;KACjB,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB;IACpC,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IACrC,kCAAkC;IAClC,mCAAmC;IACnC,iCAAiC;IACjC,qBAAqB;CACtB,CAAC,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SettingsService -- operational settings CRUD with DB > config.toml > default fallback.
|
|
3
|
+
*
|
|
4
|
+
* Provides get/set/getAll/getAllMasked/importFromConfig/setMany for daemon settings.
|
|
5
|
+
*
|
|
6
|
+
* Fallback chain for get(key):
|
|
7
|
+
* 1. DB settings table (encrypted values auto-decrypted)
|
|
8
|
+
* 2. DaemonConfig object (already includes config.toml + env overrides + Zod defaults)
|
|
9
|
+
* 3. SETTING_DEFINITIONS defaultValue (last resort)
|
|
10
|
+
*
|
|
11
|
+
* Credential values (isCredential=true) are AES-256-GCM encrypted before DB storage
|
|
12
|
+
* and auto-decrypted on retrieval using HKDF-derived subkey from master password.
|
|
13
|
+
*
|
|
14
|
+
* @see setting-keys.ts for SETTING_DEFINITIONS (SSoT)
|
|
15
|
+
* @see settings-crypto.ts for AES-GCM encrypt/decrypt
|
|
16
|
+
*/
|
|
17
|
+
import type { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3';
|
|
18
|
+
import type * as schema from '../database/schema.js';
|
|
19
|
+
import type { DaemonConfig } from '../config/loader.js';
|
|
20
|
+
export interface SettingsServiceOptions {
|
|
21
|
+
db: BetterSQLite3Database<typeof schema>;
|
|
22
|
+
config: DaemonConfig;
|
|
23
|
+
masterPassword: string;
|
|
24
|
+
}
|
|
25
|
+
export declare class SettingsService {
|
|
26
|
+
private readonly db;
|
|
27
|
+
private readonly config;
|
|
28
|
+
private readonly masterPassword;
|
|
29
|
+
constructor(opts: SettingsServiceOptions);
|
|
30
|
+
/**
|
|
31
|
+
* Get a single setting value with fallback chain:
|
|
32
|
+
* DB (auto-decrypt credentials) -> config.toml -> SETTING_DEFINITIONS default.
|
|
33
|
+
*
|
|
34
|
+
* @throws WAIaaSError if key is not defined in SETTING_DEFINITIONS
|
|
35
|
+
*/
|
|
36
|
+
get(key: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Set a single setting value. Credential keys are auto-encrypted with AES-GCM.
|
|
39
|
+
*
|
|
40
|
+
* @throws WAIaaSError if key is not defined in SETTING_DEFINITIONS
|
|
41
|
+
*/
|
|
42
|
+
set(key: string, value: string): void;
|
|
43
|
+
/**
|
|
44
|
+
* Set multiple settings at once. Each entry is validated and auto-encrypted if credential.
|
|
45
|
+
*/
|
|
46
|
+
setMany(entries: Array<{
|
|
47
|
+
key: string;
|
|
48
|
+
value: string;
|
|
49
|
+
}>): void;
|
|
50
|
+
/**
|
|
51
|
+
* Get all settings grouped by category. Credential values are decrypted.
|
|
52
|
+
* For each defined key: DB value > config.toml value > default.
|
|
53
|
+
*/
|
|
54
|
+
getAll(): Record<string, Record<string, string>>;
|
|
55
|
+
/**
|
|
56
|
+
* Get all settings grouped by category. Credential values are masked:
|
|
57
|
+
* - Non-empty credential -> true
|
|
58
|
+
* - Empty credential -> false
|
|
59
|
+
* - Non-credential -> actual value
|
|
60
|
+
*/
|
|
61
|
+
getAllMasked(): Record<string, Record<string, string | boolean>>;
|
|
62
|
+
/**
|
|
63
|
+
* Import config.toml operational settings into DB.
|
|
64
|
+
* Only imports keys that:
|
|
65
|
+
* - Are NOT already in DB (preserves existing values)
|
|
66
|
+
* - Have a config.toml value different from the default
|
|
67
|
+
*
|
|
68
|
+
* Credential values are auto-encrypted during import.
|
|
69
|
+
*
|
|
70
|
+
* @returns Count of imported and skipped keys
|
|
71
|
+
*/
|
|
72
|
+
importFromConfig(): {
|
|
73
|
+
imported: number;
|
|
74
|
+
skipped: number;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Look up a value from the DaemonConfig object by configPath.
|
|
78
|
+
* configPath format: "section.field" (e.g., "notifications.telegram_bot_token")
|
|
79
|
+
*/
|
|
80
|
+
private getConfigValue;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=settings-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-service.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/settings/settings-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,KAAK,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AASxD,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,qBAAqB,CAAC,OAAO,MAAM,CAAC,CAAC;IACzC,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAuC;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAE5B,IAAI,EAAE,sBAAsB;IAUxC;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IA+BxB;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAqCrC;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAU7D;;;OAGG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAqChD;;;;;OAKG;IACH,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IAkDhE;;;;;;;;;OASG;IACH,gBAAgB,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IA6CzD;;;OAGG;IACH,OAAO,CAAC,cAAc;CAevB"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SettingsService -- operational settings CRUD with DB > config.toml > default fallback.
|
|
3
|
+
*
|
|
4
|
+
* Provides get/set/getAll/getAllMasked/importFromConfig/setMany for daemon settings.
|
|
5
|
+
*
|
|
6
|
+
* Fallback chain for get(key):
|
|
7
|
+
* 1. DB settings table (encrypted values auto-decrypted)
|
|
8
|
+
* 2. DaemonConfig object (already includes config.toml + env overrides + Zod defaults)
|
|
9
|
+
* 3. SETTING_DEFINITIONS defaultValue (last resort)
|
|
10
|
+
*
|
|
11
|
+
* Credential values (isCredential=true) are AES-256-GCM encrypted before DB storage
|
|
12
|
+
* and auto-decrypted on retrieval using HKDF-derived subkey from master password.
|
|
13
|
+
*
|
|
14
|
+
* @see setting-keys.ts for SETTING_DEFINITIONS (SSoT)
|
|
15
|
+
* @see settings-crypto.ts for AES-GCM encrypt/decrypt
|
|
16
|
+
*/
|
|
17
|
+
import { eq } from 'drizzle-orm';
|
|
18
|
+
import { WAIaaSError } from '@waiaas/core';
|
|
19
|
+
import { settings } from '../database/schema.js';
|
|
20
|
+
import { SETTING_DEFINITIONS, SETTING_CATEGORIES, getSettingDefinition } from './setting-keys.js';
|
|
21
|
+
import { encryptSettingValue, decryptSettingValue } from './settings-crypto.js';
|
|
22
|
+
export class SettingsService {
|
|
23
|
+
db;
|
|
24
|
+
config;
|
|
25
|
+
masterPassword;
|
|
26
|
+
constructor(opts) {
|
|
27
|
+
this.db = opts.db;
|
|
28
|
+
this.config = opts.config;
|
|
29
|
+
this.masterPassword = opts.masterPassword;
|
|
30
|
+
}
|
|
31
|
+
// -------------------------------------------------------------------------
|
|
32
|
+
// get(key) -- DB > config.toml > default fallback
|
|
33
|
+
// -------------------------------------------------------------------------
|
|
34
|
+
/**
|
|
35
|
+
* Get a single setting value with fallback chain:
|
|
36
|
+
* DB (auto-decrypt credentials) -> config.toml -> SETTING_DEFINITIONS default.
|
|
37
|
+
*
|
|
38
|
+
* @throws WAIaaSError if key is not defined in SETTING_DEFINITIONS
|
|
39
|
+
*/
|
|
40
|
+
get(key) {
|
|
41
|
+
const def = getSettingDefinition(key);
|
|
42
|
+
if (!def) {
|
|
43
|
+
throw new WAIaaSError('ACTION_VALIDATION_FAILED', {
|
|
44
|
+
message: `Unknown setting key: ${key}`,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
// 1. Check DB
|
|
48
|
+
const row = this.db.select().from(settings).where(eq(settings.key, key)).get();
|
|
49
|
+
if (row) {
|
|
50
|
+
if (row.encrypted) {
|
|
51
|
+
return decryptSettingValue(row.value, this.masterPassword);
|
|
52
|
+
}
|
|
53
|
+
return row.value;
|
|
54
|
+
}
|
|
55
|
+
// 2. Check config.toml (DaemonConfig already has env overrides + Zod defaults)
|
|
56
|
+
const configValue = this.getConfigValue(def);
|
|
57
|
+
if (configValue !== undefined) {
|
|
58
|
+
return String(configValue);
|
|
59
|
+
}
|
|
60
|
+
// 3. Return definition default
|
|
61
|
+
return def.defaultValue;
|
|
62
|
+
}
|
|
63
|
+
// -------------------------------------------------------------------------
|
|
64
|
+
// set(key, value) -- UPSERT, auto-encrypt credentials
|
|
65
|
+
// -------------------------------------------------------------------------
|
|
66
|
+
/**
|
|
67
|
+
* Set a single setting value. Credential keys are auto-encrypted with AES-GCM.
|
|
68
|
+
*
|
|
69
|
+
* @throws WAIaaSError if key is not defined in SETTING_DEFINITIONS
|
|
70
|
+
*/
|
|
71
|
+
set(key, value) {
|
|
72
|
+
const def = getSettingDefinition(key);
|
|
73
|
+
if (!def) {
|
|
74
|
+
throw new WAIaaSError('ACTION_VALIDATION_FAILED', {
|
|
75
|
+
message: `Unknown setting key: ${key}`,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
const isCredential = def.isCredential;
|
|
79
|
+
const storedValue = isCredential
|
|
80
|
+
? encryptSettingValue(value, this.masterPassword)
|
|
81
|
+
: value;
|
|
82
|
+
this.db
|
|
83
|
+
.insert(settings)
|
|
84
|
+
.values({
|
|
85
|
+
key,
|
|
86
|
+
value: storedValue,
|
|
87
|
+
encrypted: isCredential,
|
|
88
|
+
category: def.category,
|
|
89
|
+
updatedAt: new Date(),
|
|
90
|
+
})
|
|
91
|
+
.onConflictDoUpdate({
|
|
92
|
+
target: settings.key,
|
|
93
|
+
set: {
|
|
94
|
+
value: storedValue,
|
|
95
|
+
encrypted: isCredential,
|
|
96
|
+
updatedAt: new Date(),
|
|
97
|
+
},
|
|
98
|
+
})
|
|
99
|
+
.run();
|
|
100
|
+
}
|
|
101
|
+
// -------------------------------------------------------------------------
|
|
102
|
+
// setMany(entries) -- batch set
|
|
103
|
+
// -------------------------------------------------------------------------
|
|
104
|
+
/**
|
|
105
|
+
* Set multiple settings at once. Each entry is validated and auto-encrypted if credential.
|
|
106
|
+
*/
|
|
107
|
+
setMany(entries) {
|
|
108
|
+
for (const entry of entries) {
|
|
109
|
+
this.set(entry.key, entry.value);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// -------------------------------------------------------------------------
|
|
113
|
+
// getAll() -- all settings grouped by category, credentials decrypted
|
|
114
|
+
// -------------------------------------------------------------------------
|
|
115
|
+
/**
|
|
116
|
+
* Get all settings grouped by category. Credential values are decrypted.
|
|
117
|
+
* For each defined key: DB value > config.toml value > default.
|
|
118
|
+
*/
|
|
119
|
+
getAll() {
|
|
120
|
+
const result = {};
|
|
121
|
+
// Initialize categories
|
|
122
|
+
for (const cat of SETTING_CATEGORIES) {
|
|
123
|
+
result[cat] = {};
|
|
124
|
+
}
|
|
125
|
+
// Fetch all DB rows for O(1) lookup
|
|
126
|
+
const dbRows = this.db.select().from(settings).all();
|
|
127
|
+
const dbMap = new Map(dbRows.map((r) => [r.key, r]));
|
|
128
|
+
for (const def of SETTING_DEFINITIONS) {
|
|
129
|
+
const fieldName = def.key.split('.').slice(1).join('.');
|
|
130
|
+
const row = dbMap.get(def.key);
|
|
131
|
+
const catObj = result[def.category];
|
|
132
|
+
if (row) {
|
|
133
|
+
catObj[fieldName] = row.encrypted
|
|
134
|
+
? decryptSettingValue(row.value, this.masterPassword)
|
|
135
|
+
: row.value;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
// Fallback: config.toml -> default
|
|
139
|
+
const configValue = this.getConfigValue(def);
|
|
140
|
+
catObj[fieldName] = configValue !== undefined
|
|
141
|
+
? String(configValue)
|
|
142
|
+
: def.defaultValue;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return result;
|
|
146
|
+
}
|
|
147
|
+
// -------------------------------------------------------------------------
|
|
148
|
+
// getAllMasked() -- all settings grouped by category, credentials masked
|
|
149
|
+
// -------------------------------------------------------------------------
|
|
150
|
+
/**
|
|
151
|
+
* Get all settings grouped by category. Credential values are masked:
|
|
152
|
+
* - Non-empty credential -> true
|
|
153
|
+
* - Empty credential -> false
|
|
154
|
+
* - Non-credential -> actual value
|
|
155
|
+
*/
|
|
156
|
+
getAllMasked() {
|
|
157
|
+
const result = {};
|
|
158
|
+
for (const cat of SETTING_CATEGORIES) {
|
|
159
|
+
result[cat] = {};
|
|
160
|
+
}
|
|
161
|
+
const dbRows = this.db.select().from(settings).all();
|
|
162
|
+
const dbMap = new Map(dbRows.map((r) => [r.key, r]));
|
|
163
|
+
for (const def of SETTING_DEFINITIONS) {
|
|
164
|
+
const fieldName = def.key.split('.').slice(1).join('.');
|
|
165
|
+
const row = dbMap.get(def.key);
|
|
166
|
+
const catObj = result[def.category];
|
|
167
|
+
if (def.isCredential) {
|
|
168
|
+
if (row) {
|
|
169
|
+
// Credential in DB: mask as boolean (has value = true)
|
|
170
|
+
try {
|
|
171
|
+
const decrypted = decryptSettingValue(row.value, this.masterPassword);
|
|
172
|
+
catObj[fieldName] = decrypted !== '';
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
catObj[fieldName] = false;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
// Credential not in DB: check config fallback
|
|
180
|
+
const configValue = this.getConfigValue(def);
|
|
181
|
+
const val = configValue !== undefined ? String(configValue) : def.defaultValue;
|
|
182
|
+
catObj[fieldName] = val !== '';
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
// Non-credential: return actual value
|
|
187
|
+
if (row) {
|
|
188
|
+
catObj[fieldName] = row.value;
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
const configValue = this.getConfigValue(def);
|
|
192
|
+
catObj[fieldName] = configValue !== undefined
|
|
193
|
+
? String(configValue)
|
|
194
|
+
: def.defaultValue;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return result;
|
|
199
|
+
}
|
|
200
|
+
// -------------------------------------------------------------------------
|
|
201
|
+
// importFromConfig() -- first-boot config.toml -> DB import
|
|
202
|
+
// -------------------------------------------------------------------------
|
|
203
|
+
/**
|
|
204
|
+
* Import config.toml operational settings into DB.
|
|
205
|
+
* Only imports keys that:
|
|
206
|
+
* - Are NOT already in DB (preserves existing values)
|
|
207
|
+
* - Have a config.toml value different from the default
|
|
208
|
+
*
|
|
209
|
+
* Credential values are auto-encrypted during import.
|
|
210
|
+
*
|
|
211
|
+
* @returns Count of imported and skipped keys
|
|
212
|
+
*/
|
|
213
|
+
importFromConfig() {
|
|
214
|
+
let imported = 0;
|
|
215
|
+
let skipped = 0;
|
|
216
|
+
for (const def of SETTING_DEFINITIONS) {
|
|
217
|
+
// Check if already in DB
|
|
218
|
+
const existing = this.db.select().from(settings).where(eq(settings.key, def.key)).get();
|
|
219
|
+
if (existing) {
|
|
220
|
+
skipped++;
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
// Get config.toml value
|
|
224
|
+
const configValue = this.getConfigValue(def);
|
|
225
|
+
if (configValue === undefined) {
|
|
226
|
+
skipped++;
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
const strValue = String(configValue);
|
|
230
|
+
// Skip if value equals default (don't fill DB with defaults)
|
|
231
|
+
if (strValue === def.defaultValue) {
|
|
232
|
+
skipped++;
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
// Skip empty strings (no value to import)
|
|
236
|
+
if (strValue === '') {
|
|
237
|
+
skipped++;
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
// Import: use set() which handles encryption
|
|
241
|
+
this.set(def.key, strValue);
|
|
242
|
+
imported++;
|
|
243
|
+
}
|
|
244
|
+
return { imported, skipped };
|
|
245
|
+
}
|
|
246
|
+
// -------------------------------------------------------------------------
|
|
247
|
+
// Private: config.toml value lookup
|
|
248
|
+
// -------------------------------------------------------------------------
|
|
249
|
+
/**
|
|
250
|
+
* Look up a value from the DaemonConfig object by configPath.
|
|
251
|
+
* configPath format: "section.field" (e.g., "notifications.telegram_bot_token")
|
|
252
|
+
*/
|
|
253
|
+
getConfigValue(def) {
|
|
254
|
+
const parts = def.configPath.split('.');
|
|
255
|
+
if (parts.length < 2)
|
|
256
|
+
return undefined;
|
|
257
|
+
const section = parts[0];
|
|
258
|
+
const field = parts.slice(1).join('_'); // rejoin in case of multi-part field names
|
|
259
|
+
const sectionObj = this.config[section];
|
|
260
|
+
if (sectionObj === undefined || sectionObj === null || typeof sectionObj !== 'object') {
|
|
261
|
+
return undefined;
|
|
262
|
+
}
|
|
263
|
+
const value = sectionObj[field];
|
|
264
|
+
return value;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=settings-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-service.js","sourceRoot":"","sources":["../../../src/infrastructure/settings/settings-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { TelegramBotService } from './telegram-bot-service.js';
|
|
2
|
+
export { TelegramApi } from './telegram-api.js';
|
|
3
|
+
export { TelegramAuth, PUBLIC_COMMANDS, READONLY_COMMANDS, ADMIN_COMMANDS } from './telegram-auth.js';
|
|
4
|
+
export { buildConfirmKeyboard, buildWalletSelectKeyboard, buildApprovalKeyboard } from './telegram-keyboard.js';
|
|
5
|
+
export type { TelegramUserRole } from './telegram-types.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/telegram/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACtG,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAChH,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { TelegramBotService } from './telegram-bot-service.js';
|
|
2
|
+
export { TelegramApi } from './telegram-api.js';
|
|
3
|
+
export { TelegramAuth, PUBLIC_COMMANDS, READONLY_COMMANDS, ADMIN_COMMANDS } from './telegram-auth.js';
|
|
4
|
+
export { buildConfirmKeyboard, buildWalletSelectKeyboard, buildApprovalKeyboard } from './telegram-keyboard.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/telegram/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACtG,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC"}
|