@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.
Files changed (480) hide show
  1. package/dist/api/error-hints.d.ts +15 -0
  2. package/dist/api/error-hints.d.ts.map +1 -0
  3. package/dist/api/error-hints.js +71 -0
  4. package/dist/api/error-hints.js.map +1 -0
  5. package/dist/api/index.d.ts +11 -0
  6. package/dist/api/index.d.ts.map +1 -0
  7. package/dist/api/index.js +14 -0
  8. package/dist/api/index.js.map +1 -0
  9. package/dist/api/middleware/address-validation.d.ts +38 -0
  10. package/dist/api/middleware/address-validation.d.ts.map +1 -0
  11. package/dist/api/middleware/address-validation.js +134 -0
  12. package/dist/api/middleware/address-validation.js.map +1 -0
  13. package/dist/api/middleware/csp.d.ts +17 -0
  14. package/dist/api/middleware/csp.d.ts.map +1 -0
  15. package/dist/api/middleware/csp.js +31 -0
  16. package/dist/api/middleware/csp.js.map +1 -0
  17. package/dist/api/middleware/error-handler.d.ts +16 -0
  18. package/dist/api/middleware/error-handler.d.ts.map +1 -0
  19. package/dist/api/middleware/error-handler.js +46 -0
  20. package/dist/api/middleware/error-handler.js.map +1 -0
  21. package/dist/api/middleware/host-guard.d.ts +11 -0
  22. package/dist/api/middleware/host-guard.d.ts.map +1 -0
  23. package/dist/api/middleware/host-guard.js +25 -0
  24. package/dist/api/middleware/host-guard.js.map +1 -0
  25. package/dist/api/middleware/index.d.ts +13 -0
  26. package/dist/api/middleware/index.d.ts.map +1 -0
  27. package/dist/api/middleware/index.js +13 -0
  28. package/dist/api/middleware/index.js.map +1 -0
  29. package/dist/api/middleware/kill-switch-guard.d.ts +19 -0
  30. package/dist/api/middleware/kill-switch-guard.d.ts.map +1 -0
  31. package/dist/api/middleware/kill-switch-guard.js +49 -0
  32. package/dist/api/middleware/kill-switch-guard.js.map +1 -0
  33. package/dist/api/middleware/master-auth.d.ts +15 -0
  34. package/dist/api/middleware/master-auth.d.ts.map +1 -0
  35. package/dist/api/middleware/master-auth.js +35 -0
  36. package/dist/api/middleware/master-auth.js.map +1 -0
  37. package/dist/api/middleware/owner-auth.d.ts +30 -0
  38. package/dist/api/middleware/owner-auth.d.ts.map +1 -0
  39. package/dist/api/middleware/owner-auth.js +133 -0
  40. package/dist/api/middleware/owner-auth.js.map +1 -0
  41. package/dist/api/middleware/request-id.d.ts +10 -0
  42. package/dist/api/middleware/request-id.d.ts.map +1 -0
  43. package/dist/api/middleware/request-id.js +18 -0
  44. package/dist/api/middleware/request-id.js.map +1 -0
  45. package/dist/api/middleware/request-logger.d.ts +9 -0
  46. package/dist/api/middleware/request-logger.d.ts.map +1 -0
  47. package/dist/api/middleware/request-logger.js +18 -0
  48. package/dist/api/middleware/request-logger.js.map +1 -0
  49. package/dist/api/middleware/session-auth.d.ts +21 -0
  50. package/dist/api/middleware/session-auth.d.ts.map +1 -0
  51. package/dist/api/middleware/session-auth.js +51 -0
  52. package/dist/api/middleware/session-auth.js.map +1 -0
  53. package/dist/api/middleware/siwe-verify.d.ts +31 -0
  54. package/dist/api/middleware/siwe-verify.d.ts.map +1 -0
  55. package/dist/api/middleware/siwe-verify.js +55 -0
  56. package/dist/api/middleware/siwe-verify.js.map +1 -0
  57. package/dist/api/routes/actions.d.ts +56 -0
  58. package/dist/api/routes/actions.d.ts.map +1 -0
  59. package/dist/api/routes/actions.js +291 -0
  60. package/dist/api/routes/actions.js.map +1 -0
  61. package/dist/api/routes/admin.d.ts +99 -0
  62. package/dist/api/routes/admin.d.ts.map +1 -0
  63. package/dist/api/routes/admin.js +1304 -0
  64. package/dist/api/routes/admin.js.map +1 -0
  65. package/dist/api/routes/display-currency-helper.d.ts +26 -0
  66. package/dist/api/routes/display-currency-helper.d.ts.map +1 -0
  67. package/dist/api/routes/display-currency-helper.js +47 -0
  68. package/dist/api/routes/display-currency-helper.js.map +1 -0
  69. package/dist/api/routes/health.d.ts +14 -0
  70. package/dist/api/routes/health.d.ts.map +1 -0
  71. package/dist/api/routes/health.js +47 -0
  72. package/dist/api/routes/health.js.map +1 -0
  73. package/dist/api/routes/index.d.ts +15 -0
  74. package/dist/api/routes/index.d.ts.map +1 -0
  75. package/dist/api/routes/index.js +15 -0
  76. package/dist/api/routes/index.js.map +1 -0
  77. package/dist/api/routes/mcp.d.ts +30 -0
  78. package/dist/api/routes/mcp.d.ts.map +1 -0
  79. package/dist/api/routes/mcp.js +156 -0
  80. package/dist/api/routes/mcp.js.map +1 -0
  81. package/dist/api/routes/nonce.d.ts +20 -0
  82. package/dist/api/routes/nonce.d.ts.map +1 -0
  83. package/dist/api/routes/nonce.js +48 -0
  84. package/dist/api/routes/nonce.js.map +1 -0
  85. package/dist/api/routes/openapi-schemas.d.ts +2281 -0
  86. package/dist/api/routes/openapi-schemas.d.ts.map +1 -0
  87. package/dist/api/routes/openapi-schemas.js +770 -0
  88. package/dist/api/routes/openapi-schemas.js.map +1 -0
  89. package/dist/api/routes/policies.d.ts +29 -0
  90. package/dist/api/routes/policies.d.ts.map +1 -0
  91. package/dist/api/routes/policies.js +332 -0
  92. package/dist/api/routes/policies.js.map +1 -0
  93. package/dist/api/routes/sessions.d.ts +35 -0
  94. package/dist/api/routes/sessions.d.ts.map +1 -0
  95. package/dist/api/routes/sessions.js +347 -0
  96. package/dist/api/routes/sessions.js.map +1 -0
  97. package/dist/api/routes/skills.d.ts +9 -0
  98. package/dist/api/routes/skills.d.ts.map +1 -0
  99. package/dist/api/routes/skills.js +59 -0
  100. package/dist/api/routes/skills.js.map +1 -0
  101. package/dist/api/routes/tokens.d.ts +25 -0
  102. package/dist/api/routes/tokens.d.ts.map +1 -0
  103. package/dist/api/routes/tokens.js +161 -0
  104. package/dist/api/routes/tokens.js.map +1 -0
  105. package/dist/api/routes/transactions.d.ts +68 -0
  106. package/dist/api/routes/transactions.d.ts.map +1 -0
  107. package/dist/api/routes/transactions.js +576 -0
  108. package/dist/api/routes/transactions.js.map +1 -0
  109. package/dist/api/routes/utils.d.ts +9 -0
  110. package/dist/api/routes/utils.d.ts.map +1 -0
  111. package/dist/api/routes/utils.js +52 -0
  112. package/dist/api/routes/utils.js.map +1 -0
  113. package/dist/api/routes/wallet.d.ts +36 -0
  114. package/dist/api/routes/wallet.d.ts.map +1 -0
  115. package/dist/api/routes/wallet.js +358 -0
  116. package/dist/api/routes/wallet.js.map +1 -0
  117. package/dist/api/routes/wallets.d.ts +43 -0
  118. package/dist/api/routes/wallets.d.ts.map +1 -0
  119. package/dist/api/routes/wallets.js +630 -0
  120. package/dist/api/routes/wallets.js.map +1 -0
  121. package/dist/api/routes/wc.d.ts +46 -0
  122. package/dist/api/routes/wc.d.ts.map +1 -0
  123. package/dist/api/routes/wc.js +354 -0
  124. package/dist/api/routes/wc.js.map +1 -0
  125. package/dist/api/routes/x402.d.ts +61 -0
  126. package/dist/api/routes/x402.d.ts.map +1 -0
  127. package/dist/api/routes/x402.js +493 -0
  128. package/dist/api/routes/x402.js.map +1 -0
  129. package/dist/api/server.d.ts +81 -0
  130. package/dist/api/server.d.ts.map +1 -0
  131. package/dist/api/server.js +406 -0
  132. package/dist/api/server.js.map +1 -0
  133. package/dist/index.d.ts +35 -0
  134. package/dist/index.d.ts.map +1 -0
  135. package/dist/index.js +43 -0
  136. package/dist/index.js.map +1 -0
  137. package/dist/infrastructure/action/action-provider-registry.d.ts +77 -0
  138. package/dist/infrastructure/action/action-provider-registry.d.ts.map +1 -0
  139. package/dist/infrastructure/action/action-provider-registry.js +239 -0
  140. package/dist/infrastructure/action/action-provider-registry.js.map +1 -0
  141. package/dist/infrastructure/action/api-key-store.d.ts +60 -0
  142. package/dist/infrastructure/action/api-key-store.d.ts.map +1 -0
  143. package/dist/infrastructure/action/api-key-store.js +130 -0
  144. package/dist/infrastructure/action/api-key-store.js.map +1 -0
  145. package/dist/infrastructure/action/index.d.ts +10 -0
  146. package/dist/infrastructure/action/index.d.ts.map +1 -0
  147. package/dist/infrastructure/action/index.js +9 -0
  148. package/dist/infrastructure/action/index.js.map +1 -0
  149. package/dist/infrastructure/adapter-pool.d.ts +50 -0
  150. package/dist/infrastructure/adapter-pool.d.ts.map +1 -0
  151. package/dist/infrastructure/adapter-pool.js +110 -0
  152. package/dist/infrastructure/adapter-pool.js.map +1 -0
  153. package/dist/infrastructure/backup/backup-service.d.ts +53 -0
  154. package/dist/infrastructure/backup/backup-service.d.ts.map +1 -0
  155. package/dist/infrastructure/backup/backup-service.js +158 -0
  156. package/dist/infrastructure/backup/backup-service.js.map +1 -0
  157. package/dist/infrastructure/backup/index.d.ts +2 -0
  158. package/dist/infrastructure/backup/index.d.ts.map +1 -0
  159. package/dist/infrastructure/backup/index.js +2 -0
  160. package/dist/infrastructure/backup/index.js.map +1 -0
  161. package/dist/infrastructure/config/index.d.ts +8 -0
  162. package/dist/infrastructure/config/index.d.ts.map +1 -0
  163. package/dist/infrastructure/config/index.js +7 -0
  164. package/dist/infrastructure/config/index.js.map +1 -0
  165. package/dist/infrastructure/config/loader.d.ts +555 -0
  166. package/dist/infrastructure/config/loader.d.ts.map +1 -0
  167. package/dist/infrastructure/config/loader.js +311 -0
  168. package/dist/infrastructure/config/loader.js.map +1 -0
  169. package/dist/infrastructure/database/checks.d.ts +19 -0
  170. package/dist/infrastructure/database/checks.d.ts.map +1 -0
  171. package/dist/infrastructure/database/checks.js +27 -0
  172. package/dist/infrastructure/database/checks.js.map +1 -0
  173. package/dist/infrastructure/database/compatibility.d.ts +36 -0
  174. package/dist/infrastructure/database/compatibility.d.ts.map +1 -0
  175. package/dist/infrastructure/database/compatibility.js +75 -0
  176. package/dist/infrastructure/database/compatibility.js.map +1 -0
  177. package/dist/infrastructure/database/connection.d.ts +36 -0
  178. package/dist/infrastructure/database/connection.d.ts.map +1 -0
  179. package/dist/infrastructure/database/connection.js +47 -0
  180. package/dist/infrastructure/database/connection.js.map +1 -0
  181. package/dist/infrastructure/database/id.d.ts +17 -0
  182. package/dist/infrastructure/database/id.d.ts.map +1 -0
  183. package/dist/infrastructure/database/id.js +20 -0
  184. package/dist/infrastructure/database/id.js.map +1 -0
  185. package/dist/infrastructure/database/index.d.ts +15 -0
  186. package/dist/infrastructure/database/index.d.ts.map +1 -0
  187. package/dist/infrastructure/database/index.js +12 -0
  188. package/dist/infrastructure/database/index.js.map +1 -0
  189. package/dist/infrastructure/database/migrate.d.ts +76 -0
  190. package/dist/infrastructure/database/migrate.d.ts.map +1 -0
  191. package/dist/infrastructure/database/migrate.js +1214 -0
  192. package/dist/infrastructure/database/migrate.js.map +1 -0
  193. package/dist/infrastructure/database/schema.d.ts +2352 -0
  194. package/dist/infrastructure/database/schema.d.ts.map +1 -0
  195. package/dist/infrastructure/database/schema.js +288 -0
  196. package/dist/infrastructure/database/schema.js.map +1 -0
  197. package/dist/infrastructure/jwt/index.d.ts +2 -0
  198. package/dist/infrastructure/jwt/index.d.ts.map +1 -0
  199. package/dist/infrastructure/jwt/index.js +2 -0
  200. package/dist/infrastructure/jwt/index.js.map +1 -0
  201. package/dist/infrastructure/jwt/jwt-secret-manager.d.ts +58 -0
  202. package/dist/infrastructure/jwt/jwt-secret-manager.d.ts.map +1 -0
  203. package/dist/infrastructure/jwt/jwt-secret-manager.js +222 -0
  204. package/dist/infrastructure/jwt/jwt-secret-manager.js.map +1 -0
  205. package/dist/infrastructure/keystore/crypto.d.ts +62 -0
  206. package/dist/infrastructure/keystore/crypto.d.ts.map +1 -0
  207. package/dist/infrastructure/keystore/crypto.js +89 -0
  208. package/dist/infrastructure/keystore/crypto.js.map +1 -0
  209. package/dist/infrastructure/keystore/index.d.ts +4 -0
  210. package/dist/infrastructure/keystore/index.d.ts.map +1 -0
  211. package/dist/infrastructure/keystore/index.js +5 -0
  212. package/dist/infrastructure/keystore/index.js.map +1 -0
  213. package/dist/infrastructure/keystore/keystore.d.ts +115 -0
  214. package/dist/infrastructure/keystore/keystore.d.ts.map +1 -0
  215. package/dist/infrastructure/keystore/keystore.js +327 -0
  216. package/dist/infrastructure/keystore/keystore.js.map +1 -0
  217. package/dist/infrastructure/keystore/memory.d.ts +45 -0
  218. package/dist/infrastructure/keystore/memory.d.ts.map +1 -0
  219. package/dist/infrastructure/keystore/memory.js +105 -0
  220. package/dist/infrastructure/keystore/memory.js.map +1 -0
  221. package/dist/infrastructure/oracle/coingecko-forex.d.ts +35 -0
  222. package/dist/infrastructure/oracle/coingecko-forex.d.ts.map +1 -0
  223. package/dist/infrastructure/oracle/coingecko-forex.js +69 -0
  224. package/dist/infrastructure/oracle/coingecko-forex.js.map +1 -0
  225. package/dist/infrastructure/oracle/coingecko-oracle.d.ts +73 -0
  226. package/dist/infrastructure/oracle/coingecko-oracle.d.ts.map +1 -0
  227. package/dist/infrastructure/oracle/coingecko-oracle.js +199 -0
  228. package/dist/infrastructure/oracle/coingecko-oracle.js.map +1 -0
  229. package/dist/infrastructure/oracle/coingecko-platform-ids.d.ts +32 -0
  230. package/dist/infrastructure/oracle/coingecko-platform-ids.d.ts.map +1 -0
  231. package/dist/infrastructure/oracle/coingecko-platform-ids.js +30 -0
  232. package/dist/infrastructure/oracle/coingecko-platform-ids.js.map +1 -0
  233. package/dist/infrastructure/oracle/forex-currencies.d.ts +36 -0
  234. package/dist/infrastructure/oracle/forex-currencies.d.ts.map +1 -0
  235. package/dist/infrastructure/oracle/forex-currencies.js +71 -0
  236. package/dist/infrastructure/oracle/forex-currencies.js.map +1 -0
  237. package/dist/infrastructure/oracle/forex-rate-service.d.ts +51 -0
  238. package/dist/infrastructure/oracle/forex-rate-service.d.ts.map +1 -0
  239. package/dist/infrastructure/oracle/forex-rate-service.js +149 -0
  240. package/dist/infrastructure/oracle/forex-rate-service.js.map +1 -0
  241. package/dist/infrastructure/oracle/index.d.ts +18 -0
  242. package/dist/infrastructure/oracle/index.d.ts.map +1 -0
  243. package/dist/infrastructure/oracle/index.js +19 -0
  244. package/dist/infrastructure/oracle/index.js.map +1 -0
  245. package/dist/infrastructure/oracle/oracle-chain.d.ts +101 -0
  246. package/dist/infrastructure/oracle/oracle-chain.d.ts.map +1 -0
  247. package/dist/infrastructure/oracle/oracle-chain.js +163 -0
  248. package/dist/infrastructure/oracle/oracle-chain.js.map +1 -0
  249. package/dist/infrastructure/oracle/oracle-errors.d.ts +42 -0
  250. package/dist/infrastructure/oracle/oracle-errors.d.ts.map +1 -0
  251. package/dist/infrastructure/oracle/oracle-errors.js +53 -0
  252. package/dist/infrastructure/oracle/oracle-errors.js.map +1 -0
  253. package/dist/infrastructure/oracle/price-age.d.ts +38 -0
  254. package/dist/infrastructure/oracle/price-age.d.ts.map +1 -0
  255. package/dist/infrastructure/oracle/price-age.js +44 -0
  256. package/dist/infrastructure/oracle/price-age.js.map +1 -0
  257. package/dist/infrastructure/oracle/price-cache.d.ts +99 -0
  258. package/dist/infrastructure/oracle/price-cache.d.ts.map +1 -0
  259. package/dist/infrastructure/oracle/price-cache.js +173 -0
  260. package/dist/infrastructure/oracle/price-cache.js.map +1 -0
  261. package/dist/infrastructure/oracle/pyth-feed-ids.d.ts +31 -0
  262. package/dist/infrastructure/oracle/pyth-feed-ids.d.ts.map +1 -0
  263. package/dist/infrastructure/oracle/pyth-feed-ids.js +44 -0
  264. package/dist/infrastructure/oracle/pyth-feed-ids.js.map +1 -0
  265. package/dist/infrastructure/oracle/pyth-oracle.d.ts +69 -0
  266. package/dist/infrastructure/oracle/pyth-oracle.d.ts.map +1 -0
  267. package/dist/infrastructure/oracle/pyth-oracle.js +149 -0
  268. package/dist/infrastructure/oracle/pyth-oracle.js.map +1 -0
  269. package/dist/infrastructure/settings/hot-reload.d.ts +71 -0
  270. package/dist/infrastructure/settings/hot-reload.d.ts.map +1 -0
  271. package/dist/infrastructure/settings/hot-reload.js +315 -0
  272. package/dist/infrastructure/settings/hot-reload.js.map +1 -0
  273. package/dist/infrastructure/settings/index.d.ts +13 -0
  274. package/dist/infrastructure/settings/index.d.ts.map +1 -0
  275. package/dist/infrastructure/settings/index.js +10 -0
  276. package/dist/infrastructure/settings/index.js.map +1 -0
  277. package/dist/infrastructure/settings/setting-keys.d.ts +28 -0
  278. package/dist/infrastructure/settings/setting-keys.d.ts.map +1 -0
  279. package/dist/infrastructure/settings/setting-keys.js +105 -0
  280. package/dist/infrastructure/settings/setting-keys.js.map +1 -0
  281. package/dist/infrastructure/settings/settings-crypto.d.ts +39 -0
  282. package/dist/infrastructure/settings/settings-crypto.d.ts.map +1 -0
  283. package/dist/infrastructure/settings/settings-crypto.js +73 -0
  284. package/dist/infrastructure/settings/settings-crypto.js.map +1 -0
  285. package/dist/infrastructure/settings/settings-service.d.ts +82 -0
  286. package/dist/infrastructure/settings/settings-service.d.ts.map +1 -0
  287. package/dist/infrastructure/settings/settings-service.js +267 -0
  288. package/dist/infrastructure/settings/settings-service.js.map +1 -0
  289. package/dist/infrastructure/telegram/index.d.ts +6 -0
  290. package/dist/infrastructure/telegram/index.d.ts.map +1 -0
  291. package/dist/infrastructure/telegram/index.js +5 -0
  292. package/dist/infrastructure/telegram/index.js.map +1 -0
  293. package/dist/infrastructure/telegram/telegram-api.d.ts +35 -0
  294. package/dist/infrastructure/telegram/telegram-api.d.ts.map +1 -0
  295. package/dist/infrastructure/telegram/telegram-api.js +82 -0
  296. package/dist/infrastructure/telegram/telegram-api.js.map +1 -0
  297. package/dist/infrastructure/telegram/telegram-auth.d.ts +57 -0
  298. package/dist/infrastructure/telegram/telegram-auth.d.ts.map +1 -0
  299. package/dist/infrastructure/telegram/telegram-auth.js +88 -0
  300. package/dist/infrastructure/telegram/telegram-auth.js.map +1 -0
  301. package/dist/infrastructure/telegram/telegram-bot-service.d.ts +95 -0
  302. package/dist/infrastructure/telegram/telegram-bot-service.d.ts.map +1 -0
  303. package/dist/infrastructure/telegram/telegram-bot-service.js +564 -0
  304. package/dist/infrastructure/telegram/telegram-bot-service.js.map +1 -0
  305. package/dist/infrastructure/telegram/telegram-keyboard.d.ts +27 -0
  306. package/dist/infrastructure/telegram/telegram-keyboard.d.ts.map +1 -0
  307. package/dist/infrastructure/telegram/telegram-keyboard.js +52 -0
  308. package/dist/infrastructure/telegram/telegram-keyboard.js.map +1 -0
  309. package/dist/infrastructure/telegram/telegram-types.d.ts +43 -0
  310. package/dist/infrastructure/telegram/telegram-types.d.ts.map +1 -0
  311. package/dist/infrastructure/telegram/telegram-types.js +8 -0
  312. package/dist/infrastructure/telegram/telegram-types.js.map +1 -0
  313. package/dist/infrastructure/token-registry/builtin-tokens.d.ts +39 -0
  314. package/dist/infrastructure/token-registry/builtin-tokens.d.ts.map +1 -0
  315. package/dist/infrastructure/token-registry/builtin-tokens.js +135 -0
  316. package/dist/infrastructure/token-registry/builtin-tokens.js.map +1 -0
  317. package/dist/infrastructure/token-registry/index.d.ts +8 -0
  318. package/dist/infrastructure/token-registry/index.d.ts.map +1 -0
  319. package/dist/infrastructure/token-registry/index.js +8 -0
  320. package/dist/infrastructure/token-registry/index.js.map +1 -0
  321. package/dist/infrastructure/token-registry/token-registry-service.d.ts +49 -0
  322. package/dist/infrastructure/token-registry/token-registry-service.d.ts.map +1 -0
  323. package/dist/infrastructure/token-registry/token-registry-service.js +93 -0
  324. package/dist/infrastructure/token-registry/token-registry-service.js.map +1 -0
  325. package/dist/infrastructure/version/index.d.ts +5 -0
  326. package/dist/infrastructure/version/index.d.ts.map +1 -0
  327. package/dist/infrastructure/version/index.js +5 -0
  328. package/dist/infrastructure/version/index.js.map +1 -0
  329. package/dist/infrastructure/version/version-check-service.d.ts +35 -0
  330. package/dist/infrastructure/version/version-check-service.d.ts.map +1 -0
  331. package/dist/infrastructure/version/version-check-service.js +92 -0
  332. package/dist/infrastructure/version/version-check-service.js.map +1 -0
  333. package/dist/lifecycle/daemon.d.ts +103 -0
  334. package/dist/lifecycle/daemon.d.ts.map +1 -0
  335. package/dist/lifecycle/daemon.js +934 -0
  336. package/dist/lifecycle/daemon.js.map +1 -0
  337. package/dist/lifecycle/index.d.ts +9 -0
  338. package/dist/lifecycle/index.d.ts.map +1 -0
  339. package/dist/lifecycle/index.js +9 -0
  340. package/dist/lifecycle/index.js.map +1 -0
  341. package/dist/lifecycle/signal-handler.d.ts +18 -0
  342. package/dist/lifecycle/signal-handler.d.ts.map +1 -0
  343. package/dist/lifecycle/signal-handler.js +37 -0
  344. package/dist/lifecycle/signal-handler.js.map +1 -0
  345. package/dist/lifecycle/workers.d.ts +46 -0
  346. package/dist/lifecycle/workers.d.ts.map +1 -0
  347. package/dist/lifecycle/workers.js +101 -0
  348. package/dist/lifecycle/workers.js.map +1 -0
  349. package/dist/notifications/channels/discord.d.ts +10 -0
  350. package/dist/notifications/channels/discord.d.ts.map +1 -0
  351. package/dist/notifications/channels/discord.js +54 -0
  352. package/dist/notifications/channels/discord.js.map +1 -0
  353. package/dist/notifications/channels/ntfy.d.ts +13 -0
  354. package/dist/notifications/channels/ntfy.d.ts.map +1 -0
  355. package/dist/notifications/channels/ntfy.js +58 -0
  356. package/dist/notifications/channels/ntfy.js.map +1 -0
  357. package/dist/notifications/channels/slack.d.ts +10 -0
  358. package/dist/notifications/channels/slack.d.ts.map +1 -0
  359. package/dist/notifications/channels/slack.js +55 -0
  360. package/dist/notifications/channels/slack.js.map +1 -0
  361. package/dist/notifications/channels/telegram.d.ts +10 -0
  362. package/dist/notifications/channels/telegram.d.ts.map +1 -0
  363. package/dist/notifications/channels/telegram.js +40 -0
  364. package/dist/notifications/channels/telegram.js.map +1 -0
  365. package/dist/notifications/index.d.ts +9 -0
  366. package/dist/notifications/index.d.ts.map +1 -0
  367. package/dist/notifications/index.js +7 -0
  368. package/dist/notifications/index.js.map +1 -0
  369. package/dist/notifications/notification-service.d.ts +75 -0
  370. package/dist/notifications/notification-service.d.ts.map +1 -0
  371. package/dist/notifications/notification-service.js +213 -0
  372. package/dist/notifications/notification-service.js.map +1 -0
  373. package/dist/notifications/templates/message-templates.d.ts +12 -0
  374. package/dist/notifications/templates/message-templates.d.ts.map +1 -0
  375. package/dist/notifications/templates/message-templates.js +22 -0
  376. package/dist/notifications/templates/message-templates.js.map +1 -0
  377. package/dist/pipeline/database-policy-engine.d.ts +286 -0
  378. package/dist/pipeline/database-policy-engine.d.ts.map +1 -0
  379. package/dist/pipeline/database-policy-engine.js +992 -0
  380. package/dist/pipeline/database-policy-engine.js.map +1 -0
  381. package/dist/pipeline/default-policy-engine.d.ts +26 -0
  382. package/dist/pipeline/default-policy-engine.d.ts.map +1 -0
  383. package/dist/pipeline/default-policy-engine.js +25 -0
  384. package/dist/pipeline/default-policy-engine.js.map +1 -0
  385. package/dist/pipeline/index.d.ts +9 -0
  386. package/dist/pipeline/index.d.ts.map +1 -0
  387. package/dist/pipeline/index.js +9 -0
  388. package/dist/pipeline/index.js.map +1 -0
  389. package/dist/pipeline/network-resolver.d.ts +22 -0
  390. package/dist/pipeline/network-resolver.d.ts.map +1 -0
  391. package/dist/pipeline/network-resolver.js +32 -0
  392. package/dist/pipeline/network-resolver.js.map +1 -0
  393. package/dist/pipeline/pipeline.d.ts +72 -0
  394. package/dist/pipeline/pipeline.d.ts.map +1 -0
  395. package/dist/pipeline/pipeline.js +87 -0
  396. package/dist/pipeline/pipeline.js.map +1 -0
  397. package/dist/pipeline/resolve-effective-amount-usd.d.ts +41 -0
  398. package/dist/pipeline/resolve-effective-amount-usd.d.ts.map +1 -0
  399. package/dist/pipeline/resolve-effective-amount-usd.js +208 -0
  400. package/dist/pipeline/resolve-effective-amount-usd.js.map +1 -0
  401. package/dist/pipeline/sign-only.d.ts +99 -0
  402. package/dist/pipeline/sign-only.d.ts.map +1 -0
  403. package/dist/pipeline/sign-only.js +267 -0
  404. package/dist/pipeline/sign-only.js.map +1 -0
  405. package/dist/pipeline/sleep.d.ts +6 -0
  406. package/dist/pipeline/sleep.d.ts.map +1 -0
  407. package/dist/pipeline/sleep.js +8 -0
  408. package/dist/pipeline/sleep.js.map +1 -0
  409. package/dist/pipeline/stages.d.ts +82 -0
  410. package/dist/pipeline/stages.d.ts.map +1 -0
  411. package/dist/pipeline/stages.js +784 -0
  412. package/dist/pipeline/stages.js.map +1 -0
  413. package/dist/services/autostop-rules.d.ts +79 -0
  414. package/dist/services/autostop-rules.d.ts.map +1 -0
  415. package/dist/services/autostop-rules.js +174 -0
  416. package/dist/services/autostop-rules.js.map +1 -0
  417. package/dist/services/autostop-service.d.ts +82 -0
  418. package/dist/services/autostop-service.d.ts.map +1 -0
  419. package/dist/services/autostop-service.js +223 -0
  420. package/dist/services/autostop-service.js.map +1 -0
  421. package/dist/services/kill-switch-service.d.ts +118 -0
  422. package/dist/services/kill-switch-service.d.ts.map +1 -0
  423. package/dist/services/kill-switch-service.js +291 -0
  424. package/dist/services/kill-switch-service.js.map +1 -0
  425. package/dist/services/monitoring/balance-monitor-service.d.ts +65 -0
  426. package/dist/services/monitoring/balance-monitor-service.d.ts.map +1 -0
  427. package/dist/services/monitoring/balance-monitor-service.js +207 -0
  428. package/dist/services/monitoring/balance-monitor-service.js.map +1 -0
  429. package/dist/services/wc-session-service.d.ts +123 -0
  430. package/dist/services/wc-session-service.d.ts.map +1 -0
  431. package/dist/services/wc-session-service.js +363 -0
  432. package/dist/services/wc-session-service.js.map +1 -0
  433. package/dist/services/wc-signing-bridge.d.ts +60 -0
  434. package/dist/services/wc-signing-bridge.d.ts.map +1 -0
  435. package/dist/services/wc-signing-bridge.js +334 -0
  436. package/dist/services/wc-signing-bridge.js.map +1 -0
  437. package/dist/services/wc-storage.d.ts +32 -0
  438. package/dist/services/wc-storage.d.ts.map +1 -0
  439. package/dist/services/wc-storage.js +64 -0
  440. package/dist/services/wc-storage.js.map +1 -0
  441. package/dist/services/x402/payment-signer.d.ts +88 -0
  442. package/dist/services/x402/payment-signer.d.ts.map +1 -0
  443. package/dist/services/x402/payment-signer.js +311 -0
  444. package/dist/services/x402/payment-signer.js.map +1 -0
  445. package/dist/services/x402/ssrf-guard.d.ts +27 -0
  446. package/dist/services/x402/ssrf-guard.d.ts.map +1 -0
  447. package/dist/services/x402/ssrf-guard.js +236 -0
  448. package/dist/services/x402/ssrf-guard.js.map +1 -0
  449. package/dist/services/x402/x402-domain-policy.d.ts +50 -0
  450. package/dist/services/x402/x402-domain-policy.d.ts.map +1 -0
  451. package/dist/services/x402/x402-domain-policy.js +78 -0
  452. package/dist/services/x402/x402-domain-policy.js.map +1 -0
  453. package/dist/services/x402/x402-handler.d.ts +71 -0
  454. package/dist/services/x402/x402-handler.d.ts.map +1 -0
  455. package/dist/services/x402/x402-handler.js +195 -0
  456. package/dist/services/x402/x402-handler.js.map +1 -0
  457. package/dist/services/x402/x402-usd-resolver.d.ts +26 -0
  458. package/dist/services/x402/x402-usd-resolver.d.ts.map +1 -0
  459. package/dist/services/x402/x402-usd-resolver.js +79 -0
  460. package/dist/services/x402/x402-usd-resolver.js.map +1 -0
  461. package/dist/workflow/approval-workflow.d.ts +103 -0
  462. package/dist/workflow/approval-workflow.d.ts.map +1 -0
  463. package/dist/workflow/approval-workflow.js +202 -0
  464. package/dist/workflow/approval-workflow.js.map +1 -0
  465. package/dist/workflow/delay-queue.d.ts +78 -0
  466. package/dist/workflow/delay-queue.d.ts.map +1 -0
  467. package/dist/workflow/delay-queue.js +174 -0
  468. package/dist/workflow/delay-queue.js.map +1 -0
  469. package/dist/workflow/index.d.ts +11 -0
  470. package/dist/workflow/index.d.ts.map +1 -0
  471. package/dist/workflow/index.js +9 -0
  472. package/dist/workflow/index.js.map +1 -0
  473. package/dist/workflow/owner-state.d.ts +97 -0
  474. package/dist/workflow/owner-state.d.ts.map +1 -0
  475. package/dist/workflow/owner-state.js +168 -0
  476. package/dist/workflow/owner-state.js.map +1 -0
  477. package/package.json +71 -0
  478. package/public/admin/assets/index-BPoUSH8W.css +1 -0
  479. package/public/admin/assets/index-CDi1qoXB.js +1 -0
  480. package/public/admin/index.html +13 -0
@@ -0,0 +1,311 @@
1
+ /**
2
+ * Config loader: smol-toml parsing, nested section detection, env override, Zod validation.
3
+ *
4
+ * Pipeline: read config.toml -> parse with smol-toml -> detectNestedSections ->
5
+ * applyEnvOverrides -> DaemonConfigSchema.parse (Zod defaults + validation).
6
+ *
7
+ * @see docs/24-monorepo-data-directory.md section 3.5
8
+ */
9
+ import { readFileSync } from 'node:fs';
10
+ import { join } from 'node:path';
11
+ import { parse } from 'smol-toml';
12
+ import { z } from 'zod';
13
+ import { EvmNetworkTypeEnum } from '@waiaas/core';
14
+ // ---------------------------------------------------------------------------
15
+ // Zod Schema: 10 sections, flat keys, with defaults
16
+ // ---------------------------------------------------------------------------
17
+ export const DaemonConfigSchema = z.object({
18
+ daemon: z
19
+ .object({
20
+ port: z.number().int().min(1024).max(65535).default(3100),
21
+ hostname: z
22
+ .union([z.literal('127.0.0.1'), z.literal('0.0.0.0')])
23
+ .default('127.0.0.1'),
24
+ log_level: z.enum(['trace', 'debug', 'info', 'warn', 'error']).default('info'),
25
+ log_file: z.string().default('logs/daemon.log'),
26
+ log_max_size: z.string().default('50MB'),
27
+ log_max_files: z.number().int().min(1).max(100).default(5),
28
+ pid_file: z.string().default('daemon.pid'),
29
+ shutdown_timeout: z.number().int().min(5).max(300).default(30),
30
+ dev_mode: z.boolean().default(false),
31
+ admin_ui: z.boolean().default(true),
32
+ admin_timeout: z.number().int().min(60).max(7200).default(900),
33
+ update_check: z.boolean().default(true),
34
+ update_check_interval: z.number().int().min(3600).max(604800).default(86400),
35
+ })
36
+ .default({}),
37
+ keystore: z
38
+ .object({
39
+ argon2_memory: z.number().int().min(32768).max(1048576).default(65536),
40
+ argon2_time: z.number().int().min(1).max(20).default(3),
41
+ argon2_parallelism: z.number().int().min(1).max(16).default(4),
42
+ backup_on_rotate: z.boolean().default(true),
43
+ })
44
+ .default({}),
45
+ database: z
46
+ .object({
47
+ path: z.string().default('data/waiaas.db'),
48
+ wal_checkpoint_interval: z.number().int().min(60).max(3600).default(300),
49
+ busy_timeout: z.number().int().min(1000).max(30000).default(5000),
50
+ cache_size: z.number().int().min(2000).max(512000).default(64000),
51
+ mmap_size: z.number().int().min(0).max(1073741824).default(268435456),
52
+ })
53
+ .default({}),
54
+ rpc: z
55
+ .object({
56
+ // Solana (unchanged)
57
+ solana_mainnet: z.string().default('https://api.mainnet-beta.solana.com'),
58
+ solana_devnet: z.string().default('https://api.devnet.solana.com'),
59
+ solana_testnet: z.string().default('https://api.testnet.solana.com'),
60
+ solana_ws_mainnet: z.string().default('wss://api.mainnet-beta.solana.com'),
61
+ solana_ws_devnet: z.string().default('wss://api.devnet.solana.com'),
62
+ // EVM Tier 1 (replaces ethereum_mainnet/ethereum_sepolia)
63
+ evm_ethereum_mainnet: z.string().default('https://eth.drpc.org'),
64
+ evm_ethereum_sepolia: z.string().default('https://sepolia.drpc.org'),
65
+ evm_polygon_mainnet: z.string().default('https://polygon.drpc.org'),
66
+ evm_polygon_amoy: z.string().default('https://polygon-amoy.drpc.org'),
67
+ evm_arbitrum_mainnet: z.string().default('https://arbitrum.drpc.org'),
68
+ evm_arbitrum_sepolia: z.string().default('https://arbitrum-sepolia.drpc.org'),
69
+ evm_optimism_mainnet: z.string().default('https://optimism.drpc.org'),
70
+ evm_optimism_sepolia: z.string().default('https://optimism-sepolia.drpc.org'),
71
+ evm_base_mainnet: z.string().default('https://base.drpc.org'),
72
+ evm_base_sepolia: z.string().default('https://base-sepolia.drpc.org'),
73
+ // EVM default network for agent creation when network not specified
74
+ evm_default_network: EvmNetworkTypeEnum.default('ethereum-sepolia'),
75
+ })
76
+ .default({}),
77
+ notifications: z
78
+ .object({
79
+ enabled: z.boolean().default(false),
80
+ min_channels: z.number().int().min(1).max(10).default(2),
81
+ health_check_interval: z.number().int().min(60).max(3600).default(300),
82
+ log_retention_days: z.number().int().min(7).max(365).default(30),
83
+ dedup_ttl: z.number().int().min(60).max(3600).default(300),
84
+ telegram_bot_token: z.string().default(''),
85
+ telegram_chat_id: z.string().default(''),
86
+ discord_webhook_url: z.string().default(''),
87
+ ntfy_server: z.string().default('https://ntfy.sh'),
88
+ ntfy_topic: z.string().default(''),
89
+ slack_webhook_url: z.string().default(''),
90
+ locale: z.enum(['en', 'ko']).default('en'),
91
+ rate_limit_rpm: z.number().int().min(1).max(60).default(20),
92
+ })
93
+ .default({}),
94
+ security: z
95
+ .object({
96
+ session_ttl: z.number().int().min(300).max(604800).default(86400),
97
+ jwt_secret: z.string().default(''),
98
+ max_sessions_per_wallet: z.number().int().min(1).max(50).default(5),
99
+ max_pending_tx: z.number().int().min(1).max(100).default(10),
100
+ nonce_storage: z.enum(['memory', 'sqlite']).default('memory'),
101
+ nonce_cache_max: z.number().int().min(100).max(10000).default(1000),
102
+ nonce_cache_ttl: z.number().int().min(60).max(600).default(300),
103
+ rate_limit_global_ip_rpm: z.number().int().min(100).max(10000).default(1000),
104
+ rate_limit_session_rpm: z.number().int().min(10).max(5000).default(300),
105
+ rate_limit_tx_rpm: z.number().int().min(1).max(100).default(10),
106
+ cors_origins: z
107
+ .array(z.string())
108
+ .default(['http://localhost:3100', 'http://127.0.0.1:3100']),
109
+ // AutoStop engine thresholds (AUTO-05 runtime-overridable via Admin Settings)
110
+ autostop_consecutive_failures_threshold: z.number().int().min(1).max(50).default(5),
111
+ autostop_unusual_activity_threshold: z.number().int().min(5).max(200).default(20),
112
+ autostop_unusual_activity_window_sec: z.number().int().min(60).max(3600).default(300),
113
+ autostop_idle_timeout_sec: z.number().int().min(300).max(86400).default(3600),
114
+ autostop_idle_check_interval_sec: z.number().int().min(10).max(600).default(60),
115
+ autostop_enabled: z.boolean().default(true),
116
+ // Balance monitoring thresholds (BMON-05 runtime-overridable via Admin Settings)
117
+ monitoring_check_interval_sec: z.number().int().min(60).max(3600).default(300),
118
+ monitoring_low_balance_threshold_sol: z.number().min(0.001).max(100).default(0.01),
119
+ monitoring_low_balance_threshold_eth: z.number().min(0.0001).max(10).default(0.005),
120
+ monitoring_cooldown_hours: z.number().int().min(1).max(168).default(24),
121
+ monitoring_enabled: z.boolean().default(true),
122
+ policy_defaults_delay_seconds: z.number().int().min(60).max(3600).default(300),
123
+ policy_defaults_approval_timeout: z.number().int().min(300).max(86400).default(3600),
124
+ kill_switch_recovery_cooldown: z.number().int().min(600).max(86400).default(1800),
125
+ kill_switch_max_recovery_attempts: z.number().int().min(1).max(10).default(3),
126
+ })
127
+ .default({}),
128
+ walletconnect: z
129
+ .object({
130
+ project_id: z.string().default(''),
131
+ relay_url: z.string().default('wss://relay.walletconnect.com'),
132
+ })
133
+ .default({}),
134
+ x402: z
135
+ .object({
136
+ enabled: z.boolean().default(true),
137
+ request_timeout: z.number().int().min(5).max(120).default(30),
138
+ })
139
+ .default({}),
140
+ display: z
141
+ .object({
142
+ currency: z.string().default('USD'),
143
+ })
144
+ .default({}),
145
+ telegram: z
146
+ .object({
147
+ enabled: z.boolean().default(false),
148
+ bot_token: z.string().default(''),
149
+ locale: z.enum(['en', 'ko']).default('en'),
150
+ })
151
+ .default({}),
152
+ });
153
+ // ---------------------------------------------------------------------------
154
+ // Known TOML sections
155
+ // ---------------------------------------------------------------------------
156
+ const KNOWN_SECTIONS = [
157
+ 'daemon',
158
+ 'keystore',
159
+ 'database',
160
+ 'rpc',
161
+ 'notifications',
162
+ 'security',
163
+ 'walletconnect',
164
+ 'x402',
165
+ 'display',
166
+ 'telegram',
167
+ ];
168
+ // ---------------------------------------------------------------------------
169
+ // detectNestedSections: reject nested TOML sections
170
+ // ---------------------------------------------------------------------------
171
+ /**
172
+ * Walk top-level keys. If any value is a non-array object whose own values
173
+ * are also non-array objects, that indicates nested TOML sections which
174
+ * violate the flat-key config policy.
175
+ *
176
+ * Also rejects unknown top-level sections not in KNOWN_SECTIONS.
177
+ */
178
+ export function detectNestedSections(parsed) {
179
+ for (const key of Object.keys(parsed)) {
180
+ // Check unknown section
181
+ if (!KNOWN_SECTIONS.includes(key)) {
182
+ throw new Error(`Unknown config section '[${key}]'. Allowed sections: ${KNOWN_SECTIONS.join(', ')}`);
183
+ }
184
+ const value = parsed[key];
185
+ if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
186
+ // Check if any sub-value is itself a nested object (not array)
187
+ for (const [subKey, subValue] of Object.entries(value)) {
188
+ if (subValue !== null && typeof subValue === 'object' && !Array.isArray(subValue)) {
189
+ throw new Error(`Nested TOML section '[${key}.${subKey}]' detected. ` +
190
+ `WAIaaS config requires flattened keys. ` +
191
+ `Use '${key}_${subKey}_<field>' instead of nested sections.`);
192
+ }
193
+ }
194
+ }
195
+ }
196
+ }
197
+ // ---------------------------------------------------------------------------
198
+ // parseEnvValue: coerce string env values to correct types
199
+ // ---------------------------------------------------------------------------
200
+ /**
201
+ * Parse an environment variable string into the appropriate JS type.
202
+ * - 'true'/'false' -> boolean
203
+ * - Numeric strings -> number
204
+ * - JSON array strings -> parsed array
205
+ * - Otherwise -> string
206
+ */
207
+ export function parseEnvValue(value) {
208
+ // Boolean
209
+ if (value === 'true')
210
+ return true;
211
+ if (value === 'false')
212
+ return false;
213
+ // JSON array
214
+ if (value.startsWith('[') && value.endsWith(']')) {
215
+ try {
216
+ const parsed = JSON.parse(value);
217
+ if (Array.isArray(parsed))
218
+ return parsed;
219
+ }
220
+ catch {
221
+ // Fall through to string
222
+ }
223
+ }
224
+ // Number
225
+ if (/^-?\d+(\.\d+)?$/.test(value)) {
226
+ const num = Number(value);
227
+ if (Number.isFinite(num))
228
+ return num;
229
+ }
230
+ return value;
231
+ }
232
+ // ---------------------------------------------------------------------------
233
+ // applyEnvOverrides: WAIAAS_{SECTION}_{KEY} -> config override
234
+ // ---------------------------------------------------------------------------
235
+ /** Env keys to skip (not mapped to config sections). */
236
+ const SKIP_ENV_KEYS = new Set([
237
+ 'WAIAAS_DATA_DIR',
238
+ 'WAIAAS_MASTER_PASSWORD',
239
+ 'WAIAAS_MASTER_PASSWORD_FILE',
240
+ ]);
241
+ /**
242
+ * Apply environment variable overrides. Pattern: WAIAAS_{SECTION}_{KEY}.
243
+ * The first segment after WAIAAS_ is the section; the rest joined with '_' is the field.
244
+ *
245
+ * Special case: WAIAAS_DAEMON_HOSTNAME maps to daemon.hostname.
246
+ */
247
+ export function applyEnvOverrides(config) {
248
+ for (const [envKey, envValue] of Object.entries(process.env)) {
249
+ if (!envKey.startsWith('WAIAAS_') || envValue === undefined)
250
+ continue;
251
+ if (SKIP_ENV_KEYS.has(envKey))
252
+ continue;
253
+ // Strip prefix, lowercase
254
+ const stripped = envKey.slice('WAIAAS_'.length).toLowerCase();
255
+ const parts = stripped.split('_');
256
+ // First part = section, rest = field name
257
+ const section = parts[0];
258
+ if (!section)
259
+ continue;
260
+ // Check if section is known
261
+ if (!KNOWN_SECTIONS.includes(section))
262
+ continue;
263
+ const field = parts.slice(1).join('_');
264
+ if (!field)
265
+ continue;
266
+ // Ensure section object exists
267
+ if (config[section] === undefined ||
268
+ config[section] === null ||
269
+ typeof config[section] !== 'object') {
270
+ config[section] = {};
271
+ }
272
+ config[section][field] = parseEnvValue(envValue);
273
+ }
274
+ }
275
+ // ---------------------------------------------------------------------------
276
+ // loadConfig: main pipeline
277
+ // ---------------------------------------------------------------------------
278
+ /**
279
+ * Load daemon config from dataDir/config.toml with env override and Zod validation.
280
+ *
281
+ * Pipeline:
282
+ * 1. Read config.toml (ENOENT -> empty object, all defaults)
283
+ * 2. Parse with smol-toml
284
+ * 3. Detect nested sections (reject)
285
+ * 4. Apply env overrides (WAIAAS_{SECTION}_{KEY})
286
+ * 5. Validate with DaemonConfigSchema.parse() (applies defaults)
287
+ * 6. Return typed config
288
+ */
289
+ export function loadConfig(dataDir) {
290
+ let raw = {};
291
+ const configPath = join(dataDir, 'config.toml');
292
+ try {
293
+ const content = readFileSync(configPath, 'utf-8');
294
+ if (content.trim().length > 0) {
295
+ raw = parse(content);
296
+ }
297
+ }
298
+ catch (err) {
299
+ if (err.code !== 'ENOENT') {
300
+ throw err;
301
+ }
302
+ // ENOENT: no config file, use all defaults
303
+ }
304
+ // Validate structure
305
+ detectNestedSections(raw);
306
+ // Apply env overrides
307
+ applyEnvOverrides(raw);
308
+ // Validate and apply defaults via Zod
309
+ return DaemonConfigSchema.parse(raw);
310
+ }
311
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/infrastructure/config/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Utility to generate SQLite CHECK constraint SQL from SSoT enum arrays.
3
+ *
4
+ * Produces plain SQL strings (not Drizzle sql.raw()) for test comparison
5
+ * against sqlite_master CREATE TABLE output.
6
+ *
7
+ * @see docs/49-enum-config-consistency-verification.md
8
+ */
9
+ /**
10
+ * Generate SQLite CHECK constraint SQL from SSoT enum array.
11
+ * Returns plain SQL string for test comparison against sqlite_master.
12
+ *
13
+ * @param column - Column name to constrain.
14
+ * @param values - SSoT enum values (as const array).
15
+ * @returns CHECK constraint SQL, e.g. `CHECK (status IN ('ACTIVE', 'SUSPENDED'))`.
16
+ * @throws Error if any value contains a single quote (SQL injection prevention).
17
+ */
18
+ export declare function generateCheckConstraint(column: string, values: readonly string[]): string;
19
+ //# sourceMappingURL=checks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/database/checks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAQzF"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Utility to generate SQLite CHECK constraint SQL from SSoT enum arrays.
3
+ *
4
+ * Produces plain SQL strings (not Drizzle sql.raw()) for test comparison
5
+ * against sqlite_master CREATE TABLE output.
6
+ *
7
+ * @see docs/49-enum-config-consistency-verification.md
8
+ */
9
+ /**
10
+ * Generate SQLite CHECK constraint SQL from SSoT enum array.
11
+ * Returns plain SQL string for test comparison against sqlite_master.
12
+ *
13
+ * @param column - Column name to constrain.
14
+ * @param values - SSoT enum values (as const array).
15
+ * @returns CHECK constraint SQL, e.g. `CHECK (status IN ('ACTIVE', 'SUSPENDED'))`.
16
+ * @throws Error if any value contains a single quote (SQL injection prevention).
17
+ */
18
+ export function generateCheckConstraint(column, values) {
19
+ for (const v of values) {
20
+ if (v.includes("'")) {
21
+ throw new Error(`Enum value contains single quote: '${v}'`);
22
+ }
23
+ }
24
+ const quoted = values.map(v => `'${v}'`).join(', ');
25
+ return `CHECK (${column} IN (${quoted}))`;
26
+ }
27
+ //# sourceMappingURL=checks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checks.js","sourceRoot":"","sources":["../../../src/infrastructure/database/checks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAc,EAAE,MAAyB;IAC/E,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,GAAG,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,OAAO,UAAU,MAAM,QAAQ,MAAM,IAAI,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Schema compatibility checker for daemon startup.
3
+ *
4
+ * Checks whether the running code version is compatible with the DB schema version.
5
+ * Three outcomes:
6
+ * - ok: code == db schema version (or fresh DB)
7
+ * - migrate: code > db schema version (auto-migration will be applied by pushSchema)
8
+ * - reject: code < db schema version (user must upgrade) OR db < MIN_COMPATIBLE (step-by-step upgrade)
9
+ *
10
+ * @see docs/65-migration-strategy.md
11
+ */
12
+ import type { Database } from 'better-sqlite3';
13
+ /**
14
+ * Minimum DB schema version this code version can work with.
15
+ * If the DB schema is below this, a step-by-step upgrade path is required.
16
+ * Set to 1 (initial schema) -- all migrations from v1 to current are available.
17
+ * Future breaking migrations may bump this value.
18
+ */
19
+ export declare const MIN_COMPATIBLE_SCHEMA_VERSION = 1;
20
+ export type CompatibilityResult = {
21
+ action: 'ok';
22
+ } | {
23
+ action: 'migrate';
24
+ } | {
25
+ action: 'reject';
26
+ reason: 'code_too_old' | 'schema_too_old';
27
+ message: string;
28
+ };
29
+ /**
30
+ * Check compatibility between code's expected schema and DB's actual schema version.
31
+ *
32
+ * @param sqlite - Raw better-sqlite3 database instance
33
+ * @returns CompatibilityResult indicating whether to proceed, migrate, or reject
34
+ */
35
+ export declare function checkSchemaCompatibility(sqlite: Database): CompatibilityResult;
36
+ //# sourceMappingURL=compatibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/database/compatibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,GAChB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAErF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,GAAG,mBAAmB,CAsD9E"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Schema compatibility checker for daemon startup.
3
+ *
4
+ * Checks whether the running code version is compatible with the DB schema version.
5
+ * Three outcomes:
6
+ * - ok: code == db schema version (or fresh DB)
7
+ * - migrate: code > db schema version (auto-migration will be applied by pushSchema)
8
+ * - reject: code < db schema version (user must upgrade) OR db < MIN_COMPATIBLE (step-by-step upgrade)
9
+ *
10
+ * @see docs/65-migration-strategy.md
11
+ */
12
+ import { LATEST_SCHEMA_VERSION } from './migrate.js';
13
+ /**
14
+ * Minimum DB schema version this code version can work with.
15
+ * If the DB schema is below this, a step-by-step upgrade path is required.
16
+ * Set to 1 (initial schema) -- all migrations from v1 to current are available.
17
+ * Future breaking migrations may bump this value.
18
+ */
19
+ export const MIN_COMPATIBLE_SCHEMA_VERSION = 1;
20
+ /**
21
+ * Check compatibility between code's expected schema and DB's actual schema version.
22
+ *
23
+ * @param sqlite - Raw better-sqlite3 database instance
24
+ * @returns CompatibilityResult indicating whether to proceed, migrate, or reject
25
+ */
26
+ export function checkSchemaCompatibility(sqlite) {
27
+ // Check if schema_version table exists
28
+ const tableExists = sqlite
29
+ .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='schema_version'")
30
+ .get();
31
+ if (!tableExists) {
32
+ // Fresh DB, no schema yet -> pushSchema will handle everything
33
+ return { action: 'ok' };
34
+ }
35
+ // Get current max version and row count
36
+ const row = sqlite
37
+ .prepare('SELECT MAX(version) AS max_version FROM schema_version')
38
+ .get();
39
+ const dbVersion = row?.max_version ?? null;
40
+ if (dbVersion === null) {
41
+ // Empty schema_version table -> fresh DB
42
+ return { action: 'ok' };
43
+ }
44
+ if (dbVersion < MIN_COMPATIBLE_SCHEMA_VERSION) {
45
+ return {
46
+ action: 'reject',
47
+ reason: 'schema_too_old',
48
+ message: [
49
+ `DB schema version ${dbVersion} is below minimum compatible version ${MIN_COMPATIBLE_SCHEMA_VERSION}.`,
50
+ `This database was created with a much older version of WAIaaS.`,
51
+ `Step-by-step upgrade required:`,
52
+ ` 1. Install the intermediate version: npm install -g @waiaas/cli@<intermediate-version>`,
53
+ ` 2. Run: waiaas start (to migrate DB to intermediate schema)`,
54
+ ` 3. Then upgrade to latest: waiaas upgrade`,
55
+ ].join('\n'),
56
+ };
57
+ }
58
+ if (dbVersion > LATEST_SCHEMA_VERSION) {
59
+ return {
60
+ action: 'reject',
61
+ reason: 'code_too_old',
62
+ message: [
63
+ `DB schema version ${dbVersion} is newer than code expects (${LATEST_SCHEMA_VERSION}).`,
64
+ `This database was created or migrated by a newer version of WAIaaS.`,
65
+ `Run: waiaas upgrade`,
66
+ ].join('\n'),
67
+ };
68
+ }
69
+ if (dbVersion < LATEST_SCHEMA_VERSION) {
70
+ return { action: 'migrate' };
71
+ }
72
+ // dbVersion === LATEST_SCHEMA_VERSION
73
+ return { action: 'ok' };
74
+ }
75
+ //# sourceMappingURL=compatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../../src/infrastructure/database/compatibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAO/C;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAgB;IACvD,uCAAuC;IACvC,MAAM,WAAW,GAAG,MAAM;SACvB,OAAO,CAAC,6EAA6E,CAAC;SACtF,GAAG,EAAE,CAAC;IACT,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,+DAA+D;QAC/D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,wCAAwC;IACxC,MAAM,GAAG,GAAG,MAAM;SACf,OAAO,CAAC,wDAAwD,CAAC;SACjE,GAAG,EAAgD,CAAC;IACvD,MAAM,SAAS,GAAG,GAAG,EAAE,WAAW,IAAI,IAAI,CAAC;IAE3C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,yCAAyC;QACzC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,SAAS,GAAG,6BAA6B,EAAE,CAAC;QAC9C,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,gBAAgB;YACxB,OAAO,EAAE;gBACP,qBAAqB,SAAS,wCAAwC,6BAA6B,GAAG;gBACtG,gEAAgE;gBAChE,gCAAgC;gBAChC,0FAA0F;gBAC1F,+DAA+D;gBAC/D,6CAA6C;aAC9C,CAAC,IAAI,CAAC,IAAI,CAAC;SACb,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,GAAG,qBAAqB,EAAE,CAAC;QACtC,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,cAAc;YACtB,OAAO,EAAE;gBACP,qBAAqB,SAAS,gCAAgC,qBAAqB,IAAI;gBACvF,qEAAqE;gBACrE,qBAAqB;aACtB,CAAC,IAAI,CAAC,IAAI,CAAC;SACb,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,GAAG,qBAAqB,EAAE,CAAC;QACtC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,sCAAsC;IACtC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * SQLite database connection with 7 required PRAGMAs.
3
+ *
4
+ * PRAGMAs are applied in order on every new connection per doc 25 section 1.2:
5
+ * 1. journal_mode = WAL
6
+ * 2. synchronous = NORMAL
7
+ * 3. foreign_keys = ON
8
+ * 4. busy_timeout = 5000
9
+ * 5. cache_size = -64000
10
+ * 6. mmap_size = 268435456
11
+ * 7. temp_store = MEMORY
12
+ *
13
+ * @see docs/25-sqlite-schema.md
14
+ */
15
+ import type { Database as DatabaseType } from 'better-sqlite3';
16
+ import type { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3';
17
+ import * as schema from './schema.js';
18
+ export interface DatabaseConnection {
19
+ sqlite: DatabaseType;
20
+ db: BetterSQLite3Database<typeof schema>;
21
+ }
22
+ /**
23
+ * Create a new SQLite database connection with all required PRAGMAs applied.
24
+ *
25
+ * @param dbPath - Path to the SQLite database file, or ':memory:' for in-memory.
26
+ * @returns Object containing the raw better-sqlite3 instance and the Drizzle ORM instance.
27
+ */
28
+ export declare function createDatabase(dbPath: string): DatabaseConnection;
29
+ /**
30
+ * Gracefully close the database connection.
31
+ * Runs WAL checkpoint(TRUNCATE) to merge WAL into main database file before closing.
32
+ *
33
+ * @param sqlite - The raw better-sqlite3 database instance.
34
+ */
35
+ export declare function closeDatabase(sqlite: DatabaseType): void;
36
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/database/connection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,YAAY,CAAC;IACrB,EAAE,EAAE,qBAAqB,CAAC,OAAO,MAAM,CAAC,CAAC;CAC1C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAcjE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAGxD"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * SQLite database connection with 7 required PRAGMAs.
3
+ *
4
+ * PRAGMAs are applied in order on every new connection per doc 25 section 1.2:
5
+ * 1. journal_mode = WAL
6
+ * 2. synchronous = NORMAL
7
+ * 3. foreign_keys = ON
8
+ * 4. busy_timeout = 5000
9
+ * 5. cache_size = -64000
10
+ * 6. mmap_size = 268435456
11
+ * 7. temp_store = MEMORY
12
+ *
13
+ * @see docs/25-sqlite-schema.md
14
+ */
15
+ import Database from 'better-sqlite3';
16
+ import { drizzle } from 'drizzle-orm/better-sqlite3';
17
+ import * as schema from './schema.js';
18
+ /**
19
+ * Create a new SQLite database connection with all required PRAGMAs applied.
20
+ *
21
+ * @param dbPath - Path to the SQLite database file, or ':memory:' for in-memory.
22
+ * @returns Object containing the raw better-sqlite3 instance and the Drizzle ORM instance.
23
+ */
24
+ export function createDatabase(dbPath) {
25
+ const sqlite = new Database(dbPath);
26
+ // Apply 7 PRAGMAs in order (doc 25 section 1.2)
27
+ sqlite.pragma('journal_mode = WAL');
28
+ sqlite.pragma('synchronous = NORMAL');
29
+ sqlite.pragma('foreign_keys = ON');
30
+ sqlite.pragma('busy_timeout = 5000');
31
+ sqlite.pragma('cache_size = -64000');
32
+ sqlite.pragma('mmap_size = 268435456');
33
+ sqlite.pragma('temp_store = MEMORY');
34
+ const db = drizzle(sqlite, { schema });
35
+ return { sqlite, db };
36
+ }
37
+ /**
38
+ * Gracefully close the database connection.
39
+ * Runs WAL checkpoint(TRUNCATE) to merge WAL into main database file before closing.
40
+ *
41
+ * @param sqlite - The raw better-sqlite3 database instance.
42
+ */
43
+ export function closeDatabase(sqlite) {
44
+ sqlite.pragma('wal_checkpoint(TRUNCATE)');
45
+ sqlite.close();
46
+ }
47
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/infrastructure/database/connection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAOtC;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEpC,gDAAgD;IAChD,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACpC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACtC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACnC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACrC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACrC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACvC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAErC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAAoB;IAChD,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * UUID v7 ID generation for database records.
3
+ *
4
+ * Uses the `uuidv7` package per TD-09 decision: npm package for correctness
5
+ * over manual implementation. UUID v7 embeds ms-precision timestamp for
6
+ * time-ordered sorting by string comparison.
7
+ */
8
+ /**
9
+ * Generate a new UUID v7 string with ms-precision time ordering.
10
+ *
11
+ * IDs generated later will sort lexicographically after earlier IDs,
12
+ * making `ORDER BY id` equivalent to chronological ordering.
13
+ *
14
+ * @returns A new UUID v7 string (e.g., "01927f6e-3c4a-7f1b-8d2e-5f9a0b1c2d3e").
15
+ */
16
+ export declare function generateId(): string;
17
+ //# sourceMappingURL=id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/database/id.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * UUID v7 ID generation for database records.
3
+ *
4
+ * Uses the `uuidv7` package per TD-09 decision: npm package for correctness
5
+ * over manual implementation. UUID v7 embeds ms-precision timestamp for
6
+ * time-ordered sorting by string comparison.
7
+ */
8
+ import { uuidv7 } from 'uuidv7';
9
+ /**
10
+ * Generate a new UUID v7 string with ms-precision time ordering.
11
+ *
12
+ * IDs generated later will sort lexicographically after earlier IDs,
13
+ * making `ORDER BY id` equivalent to chronological ordering.
14
+ *
15
+ * @returns A new UUID v7 string (e.g., "01927f6e-3c4a-7f1b-8d2e-5f9a0b1c2d3e").
16
+ */
17
+ export function generateId() {
18
+ return uuidv7();
19
+ }
20
+ //# sourceMappingURL=id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.js","sourceRoot":"","sources":["../../../src/infrastructure/database/id.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,MAAM,EAAE,CAAC;AAClB,CAAC"}