@pattern-stack/codegen 0.15.0 → 0.15.2

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 (562) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/dist/chunk-24CWKBK5.js +94 -0
  3. package/dist/chunk-24CWKBK5.js.map +1 -0
  4. package/dist/chunk-2E224ZSN.js +20 -0
  5. package/dist/chunk-2E224ZSN.js.map +1 -0
  6. package/dist/chunk-2FTZLDBP.js +179 -0
  7. package/dist/chunk-2FTZLDBP.js.map +1 -0
  8. package/dist/chunk-2N4UG4VD.js +20 -0
  9. package/dist/chunk-2N4UG4VD.js.map +1 -0
  10. package/dist/chunk-2TVVBC53.js +92 -0
  11. package/dist/chunk-2TVVBC53.js.map +1 -0
  12. package/dist/chunk-2VHZ7EKC.js +37 -0
  13. package/dist/chunk-2VHZ7EKC.js.map +1 -0
  14. package/dist/chunk-32BMMV4H.js +109 -0
  15. package/dist/chunk-32BMMV4H.js.map +1 -0
  16. package/dist/chunk-32DOFN3T.js +4042 -0
  17. package/dist/chunk-32DOFN3T.js.map +1 -0
  18. package/dist/chunk-36U5UGIO.js +107 -0
  19. package/dist/chunk-36U5UGIO.js.map +1 -0
  20. package/dist/chunk-3CJFPU6Q.js +14 -0
  21. package/dist/chunk-3CJFPU6Q.js.map +1 -0
  22. package/dist/chunk-3NMCDN7L.js +90 -0
  23. package/dist/chunk-3NMCDN7L.js.map +1 -0
  24. package/dist/chunk-3SZFUTXE.js +62 -0
  25. package/dist/chunk-3SZFUTXE.js.map +1 -0
  26. package/dist/chunk-4DOJBQTP.js +117 -0
  27. package/dist/chunk-4DOJBQTP.js.map +1 -0
  28. package/dist/chunk-4JLJYWJC.js +308 -0
  29. package/dist/chunk-4JLJYWJC.js.map +1 -0
  30. package/dist/chunk-4KNXX6TI.js +29 -0
  31. package/dist/chunk-4KNXX6TI.js.map +1 -0
  32. package/dist/chunk-4LH67P4U.js +17 -0
  33. package/dist/chunk-4LH67P4U.js.map +1 -0
  34. package/dist/chunk-4MVGAMUA.js +40 -0
  35. package/dist/chunk-4MVGAMUA.js.map +1 -0
  36. package/dist/chunk-4OMHBMZJ.js +75 -0
  37. package/dist/chunk-4OMHBMZJ.js.map +1 -0
  38. package/dist/chunk-4RFHUZXU.js +635 -0
  39. package/dist/chunk-4RFHUZXU.js.map +1 -0
  40. package/dist/chunk-5A432NZJ.js +7 -0
  41. package/dist/chunk-5A432NZJ.js.map +1 -0
  42. package/dist/chunk-5Y7W3XR6.js +356 -0
  43. package/dist/chunk-5Y7W3XR6.js.map +1 -0
  44. package/dist/chunk-6DWFJNIK.js +15 -0
  45. package/dist/chunk-6DWFJNIK.js.map +1 -0
  46. package/dist/chunk-6I7ULIN6.js +15 -0
  47. package/dist/chunk-6I7ULIN6.js.map +1 -0
  48. package/dist/chunk-6XY6ZMMD.js +25 -0
  49. package/dist/chunk-6XY6ZMMD.js.map +1 -0
  50. package/dist/chunk-7B3RYX45.js +63 -0
  51. package/dist/chunk-7B3RYX45.js.map +1 -0
  52. package/dist/chunk-7C3FOSDI.js +1 -0
  53. package/dist/chunk-7C3FOSDI.js.map +1 -0
  54. package/dist/chunk-7KOW6PU6.js +59 -0
  55. package/dist/chunk-7KOW6PU6.js.map +1 -0
  56. package/dist/chunk-7LKAMLV4.js +92 -0
  57. package/dist/chunk-7LKAMLV4.js.map +1 -0
  58. package/dist/chunk-7RELQJIN.js +22 -0
  59. package/dist/chunk-7RELQJIN.js.map +1 -0
  60. package/dist/chunk-AHV4GDYM.js +63 -0
  61. package/dist/chunk-AHV4GDYM.js.map +1 -0
  62. package/dist/chunk-AQFQ4BYM.js +81 -0
  63. package/dist/chunk-AQFQ4BYM.js.map +1 -0
  64. package/dist/chunk-AS3NAZB6.js +14 -0
  65. package/dist/chunk-AS3NAZB6.js.map +1 -0
  66. package/dist/chunk-BGULBWKJ.js +88 -0
  67. package/dist/chunk-BGULBWKJ.js.map +1 -0
  68. package/dist/chunk-BIO6F7YI.js +17 -0
  69. package/dist/chunk-BIO6F7YI.js.map +1 -0
  70. package/dist/chunk-BOPZWRJK.js +36 -0
  71. package/dist/chunk-BOPZWRJK.js.map +1 -0
  72. package/dist/chunk-BPARRK6F.js +14 -0
  73. package/dist/chunk-BPARRK6F.js.map +1 -0
  74. package/dist/chunk-CO6LUM72.js +59 -0
  75. package/dist/chunk-CO6LUM72.js.map +1 -0
  76. package/dist/chunk-COGHTKXY.js +84 -0
  77. package/dist/chunk-COGHTKXY.js.map +1 -0
  78. package/dist/chunk-DCCZB4UC.js +100 -0
  79. package/dist/chunk-DCCZB4UC.js.map +1 -0
  80. package/dist/chunk-DKKFTHHI.js +53 -0
  81. package/dist/chunk-DKKFTHHI.js.map +1 -0
  82. package/dist/chunk-DV4RV2DC.js +59 -0
  83. package/dist/chunk-DV4RV2DC.js.map +1 -0
  84. package/dist/chunk-EDKJU5BO.js +11 -0
  85. package/dist/chunk-EDKJU5BO.js.map +1 -0
  86. package/dist/chunk-EO2QPOKH.js +116 -0
  87. package/dist/chunk-EO2QPOKH.js.map +1 -0
  88. package/dist/chunk-EOLLMEAH.js +155 -0
  89. package/dist/chunk-EOLLMEAH.js.map +1 -0
  90. package/dist/chunk-EWYCWP4H.js +14 -0
  91. package/dist/chunk-EWYCWP4H.js.map +1 -0
  92. package/dist/chunk-EXVDJMIY.js +33 -0
  93. package/dist/chunk-EXVDJMIY.js.map +1 -0
  94. package/dist/chunk-FASRXRX5.js +19 -0
  95. package/dist/chunk-FASRXRX5.js.map +1 -0
  96. package/dist/chunk-FI34KYZ5.js +1 -0
  97. package/dist/chunk-FI34KYZ5.js.map +1 -0
  98. package/dist/chunk-FN2PYDPP.js +1 -0
  99. package/dist/chunk-FN2PYDPP.js.map +1 -0
  100. package/dist/chunk-GM3RMJIJ.js +92 -0
  101. package/dist/chunk-GM3RMJIJ.js.map +1 -0
  102. package/dist/chunk-GYGNEQSC.js +9 -0
  103. package/dist/chunk-GYGNEQSC.js.map +1 -0
  104. package/dist/chunk-H5NH7KPE.js +21 -0
  105. package/dist/chunk-H5NH7KPE.js.map +1 -0
  106. package/dist/chunk-HNWZFNKP.js +168 -0
  107. package/dist/chunk-HNWZFNKP.js.map +1 -0
  108. package/dist/chunk-HUH73XGI.js +1 -0
  109. package/dist/chunk-HUH73XGI.js.map +1 -0
  110. package/dist/chunk-I6MG4M3F.js +201 -0
  111. package/dist/chunk-I6MG4M3F.js.map +1 -0
  112. package/dist/chunk-I6MVCB5A.js +39 -0
  113. package/dist/chunk-I6MVCB5A.js.map +1 -0
  114. package/dist/chunk-IBGER4YK.js +12 -0
  115. package/dist/chunk-IBGER4YK.js.map +1 -0
  116. package/dist/chunk-IF5I3DAA.js +92 -0
  117. package/dist/chunk-IF5I3DAA.js.map +1 -0
  118. package/dist/chunk-IP4OO26U.js +54 -0
  119. package/dist/chunk-IP4OO26U.js.map +1 -0
  120. package/dist/chunk-IWAOY6KC.js +1 -0
  121. package/dist/chunk-IWAOY6KC.js.map +1 -0
  122. package/dist/chunk-J37YWU7Y.js +19 -0
  123. package/dist/chunk-J37YWU7Y.js.map +1 -0
  124. package/dist/chunk-J6KZS54B.js +269 -0
  125. package/dist/chunk-J6KZS54B.js.map +1 -0
  126. package/dist/chunk-J6MN42LG.js +19 -0
  127. package/dist/chunk-J6MN42LG.js.map +1 -0
  128. package/dist/chunk-JRQO2IOF.js +65 -0
  129. package/dist/chunk-JRQO2IOF.js.map +1 -0
  130. package/dist/chunk-JRVNVKN6.js +212 -0
  131. package/dist/chunk-JRVNVKN6.js.map +1 -0
  132. package/dist/chunk-JWNHNUYL.js +96 -0
  133. package/dist/chunk-JWNHNUYL.js.map +1 -0
  134. package/dist/chunk-K2I6XIK5.js +122 -0
  135. package/dist/chunk-K2I6XIK5.js.map +1 -0
  136. package/dist/chunk-KMZCQASO.js +111 -0
  137. package/dist/chunk-KMZCQASO.js.map +1 -0
  138. package/dist/chunk-KVOWSC5S.js +1 -0
  139. package/dist/chunk-KVOWSC5S.js.map +1 -0
  140. package/dist/chunk-KYR3B3OW.js +79 -0
  141. package/dist/chunk-KYR3B3OW.js.map +1 -0
  142. package/dist/chunk-L3LZWWSX.js +61 -0
  143. package/dist/chunk-L3LZWWSX.js.map +1 -0
  144. package/dist/chunk-L4SDDEEU.js +1 -0
  145. package/dist/chunk-L4SDDEEU.js.map +1 -0
  146. package/dist/chunk-L6FTY45T.js +13 -0
  147. package/dist/chunk-L6FTY45T.js.map +1 -0
  148. package/dist/chunk-L7BNNRGI.js +134 -0
  149. package/dist/chunk-L7BNNRGI.js.map +1 -0
  150. package/dist/chunk-LG57S2SC.js +150 -0
  151. package/dist/chunk-LG57S2SC.js.map +1 -0
  152. package/dist/chunk-M6QLSLPO.js +97 -0
  153. package/dist/chunk-M6QLSLPO.js.map +1 -0
  154. package/dist/chunk-MZ6GV4YF.js +21 -0
  155. package/dist/chunk-MZ6GV4YF.js.map +1 -0
  156. package/dist/chunk-N5OTOWTP.js +55 -0
  157. package/dist/chunk-N5OTOWTP.js.map +1 -0
  158. package/dist/chunk-NN7XZEGF.js +14 -0
  159. package/dist/chunk-NN7XZEGF.js.map +1 -0
  160. package/dist/chunk-NPFPZ2HO.js +13 -0
  161. package/dist/chunk-NPFPZ2HO.js.map +1 -0
  162. package/dist/chunk-NXXDZ6ZF.js +42 -0
  163. package/dist/chunk-NXXDZ6ZF.js.map +1 -0
  164. package/dist/chunk-NYBCQZC7.js +11 -0
  165. package/dist/chunk-NYBCQZC7.js.map +1 -0
  166. package/dist/chunk-OFRRBC7M.js +78 -0
  167. package/dist/chunk-OFRRBC7M.js.map +1 -0
  168. package/dist/chunk-OGIZXGPY.js +222 -0
  169. package/dist/chunk-OGIZXGPY.js.map +1 -0
  170. package/dist/chunk-OKXZ63IA.js +168 -0
  171. package/dist/chunk-OKXZ63IA.js.map +1 -0
  172. package/dist/chunk-OSQRXVG2.js +58 -0
  173. package/dist/chunk-OSQRXVG2.js.map +1 -0
  174. package/dist/chunk-OTDN3OUQ.js +215 -0
  175. package/dist/chunk-OTDN3OUQ.js.map +1 -0
  176. package/dist/chunk-OZZJDRGW.js +122 -0
  177. package/dist/chunk-OZZJDRGW.js.map +1 -0
  178. package/dist/chunk-PNZSGAB2.js +114 -0
  179. package/dist/chunk-PNZSGAB2.js.map +1 -0
  180. package/dist/chunk-PRWIX6UW.js +21 -0
  181. package/dist/chunk-PRWIX6UW.js.map +1 -0
  182. package/dist/chunk-PSXUNOVU.js +7 -0
  183. package/dist/chunk-PSXUNOVU.js.map +1 -0
  184. package/dist/chunk-QLTJSCE6.js +44 -0
  185. package/dist/chunk-QLTJSCE6.js.map +1 -0
  186. package/dist/chunk-RC23QROE.js +447 -0
  187. package/dist/chunk-RC23QROE.js.map +1 -0
  188. package/dist/chunk-RFH7N6EP.js +36 -0
  189. package/dist/chunk-RFH7N6EP.js.map +1 -0
  190. package/dist/chunk-RHVN6NA7.js +134 -0
  191. package/dist/chunk-RHVN6NA7.js.map +1 -0
  192. package/dist/chunk-S7C6TIIF.js +21 -0
  193. package/dist/chunk-S7C6TIIF.js.map +1 -0
  194. package/dist/chunk-SNQ3TOWP.js +20 -0
  195. package/dist/chunk-SNQ3TOWP.js.map +1 -0
  196. package/dist/chunk-SOVM2VEK.js +14 -0
  197. package/dist/chunk-SOVM2VEK.js.map +1 -0
  198. package/dist/chunk-SQDOBLBP.js +13 -0
  199. package/dist/chunk-SQDOBLBP.js.map +1 -0
  200. package/dist/chunk-SR7F3TJY.js +130 -0
  201. package/dist/chunk-SR7F3TJY.js.map +1 -0
  202. package/dist/chunk-SZVPIHWE.js +129 -0
  203. package/dist/chunk-SZVPIHWE.js.map +1 -0
  204. package/dist/chunk-T4BIIU5E.js +89 -0
  205. package/dist/chunk-T4BIIU5E.js.map +1 -0
  206. package/dist/chunk-T6C4LFLC.js +112 -0
  207. package/dist/chunk-T6C4LFLC.js.map +1 -0
  208. package/dist/chunk-TNXH7BJS.js +48 -0
  209. package/dist/chunk-TNXH7BJS.js.map +1 -0
  210. package/dist/chunk-U64T4YZE.js +9 -0
  211. package/dist/chunk-U64T4YZE.js.map +1 -0
  212. package/dist/chunk-UQ5EHOH2.js +39 -0
  213. package/dist/chunk-UQ5EHOH2.js.map +1 -0
  214. package/dist/chunk-UTN4GBPQ.js +1 -0
  215. package/dist/chunk-UTN4GBPQ.js.map +1 -0
  216. package/dist/chunk-V4AF6DI4.js +16 -0
  217. package/dist/chunk-V4AF6DI4.js.map +1 -0
  218. package/dist/chunk-W72PRNJY.js +126 -0
  219. package/dist/chunk-W72PRNJY.js.map +1 -0
  220. package/dist/chunk-WEVWJKOW.js +81 -0
  221. package/dist/chunk-WEVWJKOW.js.map +1 -0
  222. package/dist/chunk-WL67FZGF.js +21 -0
  223. package/dist/chunk-WL67FZGF.js.map +1 -0
  224. package/dist/chunk-WPXNN6QS.js +290 -0
  225. package/dist/chunk-WPXNN6QS.js.map +1 -0
  226. package/dist/chunk-WRUUSZDJ.js +29 -0
  227. package/dist/chunk-WRUUSZDJ.js.map +1 -0
  228. package/dist/chunk-X2GMTYPA.js +50 -0
  229. package/dist/chunk-X2GMTYPA.js.map +1 -0
  230. package/dist/chunk-XCEI7NUH.js +41 -0
  231. package/dist/chunk-XCEI7NUH.js.map +1 -0
  232. package/dist/chunk-Y7GDG744.js +88 -0
  233. package/dist/chunk-Y7GDG744.js.map +1 -0
  234. package/dist/chunk-Y7RRSEOC.js +9 -0
  235. package/dist/chunk-Y7RRSEOC.js.map +1 -0
  236. package/dist/chunk-YPWODKD5.js +184 -0
  237. package/dist/chunk-YPWODKD5.js.map +1 -0
  238. package/dist/chunk-YSLTTQLC.js +25 -0
  239. package/dist/chunk-YSLTTQLC.js.map +1 -0
  240. package/dist/chunk-YTN6BKWA.js +121 -0
  241. package/dist/chunk-YTN6BKWA.js.map +1 -0
  242. package/dist/chunk-Z7PQCAVK.js +200 -0
  243. package/dist/chunk-Z7PQCAVK.js.map +1 -0
  244. package/dist/chunk-ZUKFQL6E.js +47 -0
  245. package/dist/chunk-ZUKFQL6E.js.map +1 -0
  246. package/dist/chunk-ZUMULSEQ.js +1 -0
  247. package/dist/chunk-ZUMULSEQ.js.map +1 -0
  248. package/dist/{job-orchestrator.protocol-CARhMLCO.d.ts → job-orchestrator.protocol-DubMVbm9.d.ts} +1 -1
  249. package/dist/runtime/analytics/index.js +8 -41
  250. package/dist/runtime/analytics/index.js.map +1 -1
  251. package/dist/runtime/analytics/types.js +8 -41
  252. package/dist/runtime/analytics/types.js.map +1 -1
  253. package/dist/runtime/base-classes/activity-entity-repository.js +6 -312
  254. package/dist/runtime/base-classes/activity-entity-repository.js.map +1 -1
  255. package/dist/runtime/base-classes/activity-entity-service.js +6 -212
  256. package/dist/runtime/base-classes/activity-entity-service.js.map +1 -1
  257. package/dist/runtime/base-classes/base-read-use-cases.js +5 -27
  258. package/dist/runtime/base-classes/base-read-use-cases.js.map +1 -1
  259. package/dist/runtime/base-classes/base-repository.js +5 -277
  260. package/dist/runtime/base-classes/base-repository.js.map +1 -1
  261. package/dist/runtime/base-classes/base-service.js +5 -184
  262. package/dist/runtime/base-classes/base-service.js.map +1 -1
  263. package/dist/runtime/base-classes/index.js +59 -1076
  264. package/dist/runtime/base-classes/index.js.map +1 -1
  265. package/dist/runtime/base-classes/integrated-entity-repository.js +6 -486
  266. package/dist/runtime/base-classes/integrated-entity-repository.js.map +1 -1
  267. package/dist/runtime/base-classes/integrated-entity-service.js +6 -213
  268. package/dist/runtime/base-classes/integrated-entity-service.js.map +1 -1
  269. package/dist/runtime/base-classes/junction-integration-repository.js +8 -448
  270. package/dist/runtime/base-classes/junction-integration-repository.js.map +1 -1
  271. package/dist/runtime/base-classes/knowledge-entity-repository.js +6 -283
  272. package/dist/runtime/base-classes/knowledge-entity-repository.js.map +1 -1
  273. package/dist/runtime/base-classes/knowledge-entity-service.js +6 -190
  274. package/dist/runtime/base-classes/knowledge-entity-service.js.map +1 -1
  275. package/dist/runtime/base-classes/lifecycle-events.js +8 -70
  276. package/dist/runtime/base-classes/lifecycle-events.js.map +1 -1
  277. package/dist/runtime/base-classes/metadata-entity-repository.js +6 -330
  278. package/dist/runtime/base-classes/metadata-entity-repository.js.map +1 -1
  279. package/dist/runtime/base-classes/metadata-entity-service.js +6 -212
  280. package/dist/runtime/base-classes/metadata-entity-service.js.map +1 -1
  281. package/dist/runtime/base-classes/tenant-context.js +10 -36
  282. package/dist/runtime/base-classes/tenant-context.js.map +1 -1
  283. package/dist/runtime/base-classes/with-analytics.js +4 -7
  284. package/dist/runtime/base-classes/with-analytics.js.map +1 -1
  285. package/dist/runtime/constants/tokens.js +5 -3
  286. package/dist/runtime/constants/tokens.js.map +1 -1
  287. package/dist/runtime/eav-helpers.js +2 -0
  288. package/dist/runtime/eav-helpers.js.map +1 -1
  289. package/dist/runtime/pipes/zod-validation.pipe.js +3 -10
  290. package/dist/runtime/pipes/zod-validation.pipe.js.map +1 -1
  291. package/dist/runtime/shared/openapi/error-response.dto.js +5 -8
  292. package/dist/runtime/shared/openapi/error-response.dto.js.map +1 -1
  293. package/dist/runtime/shared/openapi/errors.js +5 -19
  294. package/dist/runtime/shared/openapi/errors.js.map +1 -1
  295. package/dist/runtime/shared/openapi/index.js +15 -106
  296. package/dist/runtime/shared/openapi/index.js.map +1 -1
  297. package/dist/runtime/shared/openapi/registry.js +6 -103
  298. package/dist/runtime/shared/openapi/registry.js.map +1 -1
  299. package/dist/runtime/shared/openapi/registry.tokens.js +4 -2
  300. package/dist/runtime/shared/openapi/registry.tokens.js.map +1 -1
  301. package/dist/runtime/subsystems/analytics/analytics.module.js +8 -117
  302. package/dist/runtime/subsystems/analytics/analytics.module.js.map +1 -1
  303. package/dist/runtime/subsystems/analytics/analytics.tokens.js +7 -8
  304. package/dist/runtime/subsystems/analytics/analytics.tokens.js.map +1 -1
  305. package/dist/runtime/subsystems/analytics/cube-backend.js +6 -71
  306. package/dist/runtime/subsystems/analytics/cube-backend.js.map +1 -1
  307. package/dist/runtime/subsystems/analytics/index.js +16 -117
  308. package/dist/runtime/subsystems/analytics/index.js.map +1 -1
  309. package/dist/runtime/subsystems/analytics/noop-backend.js +4 -21
  310. package/dist/runtime/subsystems/analytics/noop-backend.js.map +1 -1
  311. package/dist/runtime/subsystems/auth/auth-oauth-state.schema.js +4 -8
  312. package/dist/runtime/subsystems/auth/auth-oauth-state.schema.js.map +1 -1
  313. package/dist/runtime/subsystems/auth/auth.module.js +12 -359
  314. package/dist/runtime/subsystems/auth/auth.module.js.map +1 -1
  315. package/dist/runtime/subsystems/auth/auth.tokens.js +12 -13
  316. package/dist/runtime/subsystems/auth/auth.tokens.js.map +1 -1
  317. package/dist/runtime/subsystems/auth/backends/encryption-key/env.js +4 -49
  318. package/dist/runtime/subsystems/auth/backends/encryption-key/env.js.map +1 -1
  319. package/dist/runtime/subsystems/auth/backends/state-store.drizzle-backend.js +6 -64
  320. package/dist/runtime/subsystems/auth/backends/state-store.drizzle-backend.js.map +1 -1
  321. package/dist/runtime/subsystems/auth/backends/state-store.memory-backend.js +5 -47
  322. package/dist/runtime/subsystems/auth/backends/state-store.memory-backend.js.map +1 -1
  323. package/dist/runtime/subsystems/auth/controllers/auth.controller.js +5 -139
  324. package/dist/runtime/subsystems/auth/controllers/auth.controller.js.map +1 -1
  325. package/dist/runtime/subsystems/auth/index.js +53 -542
  326. package/dist/runtime/subsystems/auth/index.js.map +1 -1
  327. package/dist/runtime/subsystems/auth/middleware/requester-context.js +9 -65
  328. package/dist/runtime/subsystems/auth/middleware/requester-context.js.map +1 -1
  329. package/dist/runtime/subsystems/auth/protocols/oauth-state-store.js +4 -9
  330. package/dist/runtime/subsystems/auth/protocols/oauth-state-store.js.map +1 -1
  331. package/dist/runtime/subsystems/auth/runtime/connection-broken.error.js +4 -15
  332. package/dist/runtime/subsystems/auth/runtime/connection-broken.error.js.map +1 -1
  333. package/dist/runtime/subsystems/auth/runtime/oauth2-refresh.strategy.js +5 -104
  334. package/dist/runtime/subsystems/auth/runtime/oauth2-refresh.strategy.js.map +1 -1
  335. package/dist/runtime/subsystems/auth/runtime/session-expired.error.js +5 -16
  336. package/dist/runtime/subsystems/auth/runtime/session-expired.error.js.map +1 -1
  337. package/dist/runtime/subsystems/auth/runtime/with-auth-retry.js +5 -29
  338. package/dist/runtime/subsystems/auth/runtime/with-auth-retry.js.map +1 -1
  339. package/dist/runtime/subsystems/bridge/assert-tenant-id.js +5 -18
  340. package/dist/runtime/subsystems/bridge/assert-tenant-id.js.map +1 -1
  341. package/dist/runtime/subsystems/bridge/bridge-delivery-handler.d.ts +2 -2
  342. package/dist/runtime/subsystems/bridge/bridge-delivery-handler.js +12 -184
  343. package/dist/runtime/subsystems/bridge/bridge-delivery-handler.js.map +1 -1
  344. package/dist/runtime/subsystems/bridge/bridge-delivery.drizzle-backend.d.ts +1 -1
  345. package/dist/runtime/subsystems/bridge/bridge-delivery.drizzle-backend.js +10 -448
  346. package/dist/runtime/subsystems/bridge/bridge-delivery.drizzle-backend.js.map +1 -1
  347. package/dist/runtime/subsystems/bridge/bridge-delivery.memory-backend.d.ts +1 -1
  348. package/dist/runtime/subsystems/bridge/bridge-delivery.memory-backend.js +5 -126
  349. package/dist/runtime/subsystems/bridge/bridge-delivery.memory-backend.js.map +1 -1
  350. package/dist/runtime/subsystems/bridge/bridge-delivery.schema.js +6 -308
  351. package/dist/runtime/subsystems/bridge/bridge-delivery.schema.js.map +1 -1
  352. package/dist/runtime/subsystems/bridge/bridge-errors.js +6 -35
  353. package/dist/runtime/subsystems/bridge/bridge-errors.js.map +1 -1
  354. package/dist/runtime/subsystems/bridge/bridge-outbox-drain-hook.d.ts +1 -1
  355. package/dist/runtime/subsystems/bridge/bridge-outbox-drain-hook.js +14 -606
  356. package/dist/runtime/subsystems/bridge/bridge-outbox-drain-hook.js.map +1 -1
  357. package/dist/runtime/subsystems/bridge/bridge.module.d.ts +2 -2
  358. package/dist/runtime/subsystems/bridge/bridge.module.js +35 -3476
  359. package/dist/runtime/subsystems/bridge/bridge.module.js.map +1 -1
  360. package/dist/runtime/subsystems/bridge/bridge.protocol.d.ts +1 -1
  361. package/dist/runtime/subsystems/bridge/bridge.tokens.js +9 -7
  362. package/dist/runtime/subsystems/bridge/bridge.tokens.js.map +1 -1
  363. package/dist/runtime/subsystems/bridge/event-flow.service.d.ts +2 -2
  364. package/dist/runtime/subsystems/bridge/event-flow.service.js +11 -137
  365. package/dist/runtime/subsystems/bridge/event-flow.service.js.map +1 -1
  366. package/dist/runtime/subsystems/bridge/generated/registry.d.ts +1 -1
  367. package/dist/runtime/subsystems/bridge/generated/registry.js +4 -2
  368. package/dist/runtime/subsystems/bridge/generated/registry.js.map +1 -1
  369. package/dist/runtime/subsystems/bridge/index.d.ts +2 -2
  370. package/dist/runtime/subsystems/bridge/index.js +60 -3470
  371. package/dist/runtime/subsystems/bridge/index.js.map +1 -1
  372. package/dist/runtime/subsystems/bridge/reserved-pools.js +4 -6
  373. package/dist/runtime/subsystems/bridge/reserved-pools.js.map +1 -1
  374. package/dist/runtime/subsystems/cache/cache.drizzle-backend.js +10 -133
  375. package/dist/runtime/subsystems/cache/cache.drizzle-backend.js.map +1 -1
  376. package/dist/runtime/subsystems/cache/cache.memory-backend.js +6 -101
  377. package/dist/runtime/subsystems/cache/cache.memory-backend.js.map +1 -1
  378. package/dist/runtime/subsystems/cache/cache.module.js +10 -278
  379. package/dist/runtime/subsystems/cache/cache.module.js.map +1 -1
  380. package/dist/runtime/subsystems/cache/cache.schema.js +4 -14
  381. package/dist/runtime/subsystems/cache/cache.schema.js.map +1 -1
  382. package/dist/runtime/subsystems/cache/cache.tokens.js +6 -7
  383. package/dist/runtime/subsystems/cache/cache.tokens.js.map +1 -1
  384. package/dist/runtime/subsystems/cache/index.js +20 -278
  385. package/dist/runtime/subsystems/cache/index.js.map +1 -1
  386. package/dist/runtime/subsystems/events/domain-events.schema.js +3 -72
  387. package/dist/runtime/subsystems/events/domain-events.schema.js.map +1 -1
  388. package/dist/runtime/subsystems/events/event-bus.drizzle-backend.d.ts +1 -1
  389. package/dist/runtime/subsystems/events/event-bus.drizzle-backend.js +9 -413
  390. package/dist/runtime/subsystems/events/event-bus.drizzle-backend.js.map +1 -1
  391. package/dist/runtime/subsystems/events/event-bus.memory-backend.js +7 -235
  392. package/dist/runtime/subsystems/events/event-bus.memory-backend.js.map +1 -1
  393. package/dist/runtime/subsystems/events/event-bus.redis-backend.js +8 -20
  394. package/dist/runtime/subsystems/events/event-bus.redis-backend.js.map +1 -1
  395. package/dist/runtime/subsystems/events/event-keyset-cursor.js +8 -30
  396. package/dist/runtime/subsystems/events/event-keyset-cursor.js.map +1 -1
  397. package/dist/runtime/subsystems/events/event-read.protocol.js +2 -0
  398. package/dist/runtime/subsystems/events/event-read.protocol.js.map +1 -1
  399. package/dist/runtime/subsystems/events/event-registry.d.ts +77 -0
  400. package/dist/runtime/subsystems/events/event-registry.js +1 -0
  401. package/dist/runtime/subsystems/events/event-registry.js.map +1 -0
  402. package/dist/runtime/subsystems/events/events-errors.js +4 -11
  403. package/dist/runtime/subsystems/events/events-errors.js.map +1 -1
  404. package/dist/runtime/subsystems/events/events.module.js +15 -949
  405. package/dist/runtime/subsystems/events/events.module.js.map +1 -1
  406. package/dist/runtime/subsystems/events/events.tokens.js +10 -11
  407. package/dist/runtime/subsystems/events/events.tokens.js.map +1 -1
  408. package/dist/runtime/subsystems/events/generated/bus.js +9 -240
  409. package/dist/runtime/subsystems/events/generated/bus.js.map +1 -1
  410. package/dist/runtime/subsystems/events/generated/index.js +23 -240
  411. package/dist/runtime/subsystems/events/generated/index.js.map +1 -1
  412. package/dist/runtime/subsystems/events/generated/registry.js +5 -82
  413. package/dist/runtime/subsystems/events/generated/registry.js.map +1 -1
  414. package/dist/runtime/subsystems/events/generated/schemas.js +12 -52
  415. package/dist/runtime/subsystems/events/generated/schemas.js.map +1 -1
  416. package/dist/runtime/subsystems/events/generated/types.js +1 -0
  417. package/dist/runtime/subsystems/events/index.d.ts +1 -0
  418. package/dist/runtime/subsystems/events/index.js +32 -949
  419. package/dist/runtime/subsystems/events/index.js.map +1 -1
  420. package/dist/runtime/subsystems/index.d.ts +2 -2
  421. package/dist/runtime/subsystems/index.js +171 -5912
  422. package/dist/runtime/subsystems/index.js.map +1 -1
  423. package/dist/runtime/subsystems/integration/build-change-source.js +6 -178
  424. package/dist/runtime/subsystems/integration/build-change-source.js.map +1 -1
  425. package/dist/runtime/subsystems/integration/deep-equal.differ.js +4 -109
  426. package/dist/runtime/subsystems/integration/deep-equal.differ.js.map +1 -1
  427. package/dist/runtime/subsystems/integration/detection-config.schema.js +11 -78
  428. package/dist/runtime/subsystems/integration/detection-config.schema.js.map +1 -1
  429. package/dist/runtime/subsystems/integration/entity-change-source-registry.memory.js +5 -30
  430. package/dist/runtime/subsystems/integration/entity-change-source-registry.memory.js.map +1 -1
  431. package/dist/runtime/subsystems/integration/entity-change-source-registry.protocol.js +4 -9
  432. package/dist/runtime/subsystems/integration/entity-change-source-registry.protocol.js.map +1 -1
  433. package/dist/runtime/subsystems/integration/execute-integration.use-case.js +6 -239
  434. package/dist/runtime/subsystems/integration/execute-integration.use-case.js.map +1 -1
  435. package/dist/runtime/subsystems/integration/incremental-read.js +5 -144
  436. package/dist/runtime/subsystems/integration/incremental-read.js.map +1 -1
  437. package/dist/runtime/subsystems/integration/index.js +83 -1352
  438. package/dist/runtime/subsystems/integration/index.js.map +1 -1
  439. package/dist/runtime/subsystems/integration/integration-audit.schema.js +10 -155
  440. package/dist/runtime/subsystems/integration/integration-audit.schema.js.map +1 -1
  441. package/dist/runtime/subsystems/integration/integration-cursor-store.drizzle-backend.js +7 -270
  442. package/dist/runtime/subsystems/integration/integration-cursor-store.drizzle-backend.js.map +1 -1
  443. package/dist/runtime/subsystems/integration/integration-cursor-store.memory-backend.js +4 -65
  444. package/dist/runtime/subsystems/integration/integration-cursor-store.memory-backend.js.map +1 -1
  445. package/dist/runtime/subsystems/integration/integration-errors.js +5 -15
  446. package/dist/runtime/subsystems/integration/integration-errors.js.map +1 -1
  447. package/dist/runtime/subsystems/integration/integration-field-diff.protocol.js +5 -7
  448. package/dist/runtime/subsystems/integration/integration-field-diff.protocol.js.map +1 -1
  449. package/dist/runtime/subsystems/integration/integration-run-recorder.drizzle-backend.js +8 -303
  450. package/dist/runtime/subsystems/integration/integration-run-recorder.drizzle-backend.js.map +1 -1
  451. package/dist/runtime/subsystems/integration/integration-run-recorder.memory-backend.js +5 -125
  452. package/dist/runtime/subsystems/integration/integration-run-recorder.memory-backend.js.map +1 -1
  453. package/dist/runtime/subsystems/integration/integration.module.js +13 -700
  454. package/dist/runtime/subsystems/integration/integration.module.js.map +1 -1
  455. package/dist/runtime/subsystems/integration/integration.tokens.js +11 -9
  456. package/dist/runtime/subsystems/integration/integration.tokens.js.map +1 -1
  457. package/dist/runtime/subsystems/integration/loopback.middleware.js +4 -16
  458. package/dist/runtime/subsystems/integration/loopback.middleware.js.map +1 -1
  459. package/dist/runtime/subsystems/integration/poll-change-source.js +4 -89
  460. package/dist/runtime/subsystems/integration/poll-change-source.js.map +1 -1
  461. package/dist/runtime/subsystems/integration/webhook-change-source.js +4 -70
  462. package/dist/runtime/subsystems/integration/webhook-change-source.js.map +1 -1
  463. package/dist/runtime/subsystems/jobs/bullmq.config.js +9 -140
  464. package/dist/runtime/subsystems/jobs/bullmq.config.js.map +1 -1
  465. package/dist/runtime/subsystems/jobs/index.d.ts +2 -2
  466. package/dist/runtime/subsystems/jobs/index.js +88 -2691
  467. package/dist/runtime/subsystems/jobs/index.js.map +1 -1
  468. package/dist/runtime/subsystems/jobs/job-handler.base.d.ts +2 -2
  469. package/dist/runtime/subsystems/jobs/job-handler.base.js +10 -49
  470. package/dist/runtime/subsystems/jobs/job-handler.base.js.map +1 -1
  471. package/dist/runtime/subsystems/jobs/job-orchestration.schema.js +13 -152
  472. package/dist/runtime/subsystems/jobs/job-orchestration.schema.js.map +1 -1
  473. package/dist/runtime/subsystems/jobs/job-orchestrator.bullmq-backend.d.ts +2 -2
  474. package/dist/runtime/subsystems/jobs/job-orchestrator.bullmq-backend.js +36 -699
  475. package/dist/runtime/subsystems/jobs/job-orchestrator.bullmq-backend.js.map +1 -1
  476. package/dist/runtime/subsystems/jobs/job-orchestrator.drizzle-backend.d.ts +2 -2
  477. package/dist/runtime/subsystems/jobs/job-orchestrator.drizzle-backend.js +10 -564
  478. package/dist/runtime/subsystems/jobs/job-orchestrator.drizzle-backend.js.map +1 -1
  479. package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.d.ts +2 -2
  480. package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.js +10 -824
  481. package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.js.map +1 -1
  482. package/dist/runtime/subsystems/jobs/job-orchestrator.protocol.d.ts +2 -2
  483. package/dist/runtime/subsystems/jobs/job-run-keyset-cursor.d.ts +2 -2
  484. package/dist/runtime/subsystems/jobs/job-run-keyset-cursor.js +9 -51
  485. package/dist/runtime/subsystems/jobs/job-run-keyset-cursor.js.map +1 -1
  486. package/dist/runtime/subsystems/jobs/job-run-service.drizzle-backend.d.ts +2 -2
  487. package/dist/runtime/subsystems/jobs/job-run-service.drizzle-backend.js +9 -416
  488. package/dist/runtime/subsystems/jobs/job-run-service.drizzle-backend.js.map +1 -1
  489. package/dist/runtime/subsystems/jobs/job-run-service.memory-backend.d.ts +2 -2
  490. package/dist/runtime/subsystems/jobs/job-run-service.memory-backend.js +9 -290
  491. package/dist/runtime/subsystems/jobs/job-run-service.memory-backend.js.map +1 -1
  492. package/dist/runtime/subsystems/jobs/job-run-service.protocol.d.ts +2 -2
  493. package/dist/runtime/subsystems/jobs/job-step-service.drizzle-backend.js +5 -213
  494. package/dist/runtime/subsystems/jobs/job-step-service.drizzle-backend.js.map +1 -1
  495. package/dist/runtime/subsystems/jobs/job-step-service.memory-backend.js +5 -131
  496. package/dist/runtime/subsystems/jobs/job-step-service.memory-backend.js.map +1 -1
  497. package/dist/runtime/subsystems/jobs/job-worker.bullmq-backend.d.ts +2 -2
  498. package/dist/runtime/subsystems/jobs/job-worker.bullmq-backend.js +9 -175
  499. package/dist/runtime/subsystems/jobs/job-worker.bullmq-backend.js.map +1 -1
  500. package/dist/runtime/subsystems/jobs/job-worker.d.ts +2 -2
  501. package/dist/runtime/subsystems/jobs/job-worker.js +14 -613
  502. package/dist/runtime/subsystems/jobs/job-worker.js.map +1 -1
  503. package/dist/runtime/subsystems/jobs/job-worker.module.d.ts +2 -2
  504. package/dist/runtime/subsystems/jobs/job-worker.module.js +23 -2647
  505. package/dist/runtime/subsystems/jobs/job-worker.module.js.map +1 -1
  506. package/dist/runtime/subsystems/jobs/jobs-domain.module.js +19 -1897
  507. package/dist/runtime/subsystems/jobs/jobs-domain.module.js.map +1 -1
  508. package/dist/runtime/subsystems/jobs/jobs-domain.tokens.js +8 -9
  509. package/dist/runtime/subsystems/jobs/jobs-domain.tokens.js.map +1 -1
  510. package/dist/runtime/subsystems/jobs/jobs-errors.d.ts +2 -2
  511. package/dist/runtime/subsystems/jobs/jobs-errors.js +10 -78
  512. package/dist/runtime/subsystems/jobs/jobs-errors.js.map +1 -1
  513. package/dist/runtime/subsystems/jobs/memory-job-store.js +4 -15
  514. package/dist/runtime/subsystems/jobs/memory-job-store.js.map +1 -1
  515. package/dist/runtime/subsystems/jobs/pool-config.loader.js +9 -124
  516. package/dist/runtime/subsystems/jobs/pool-config.loader.js.map +1 -1
  517. package/dist/runtime/subsystems/observability/index.d.ts +2 -2
  518. package/dist/runtime/subsystems/observability/index.js +21 -310
  519. package/dist/runtime/subsystems/observability/index.js.map +1 -1
  520. package/dist/runtime/subsystems/observability/observability-errors.js +4 -9
  521. package/dist/runtime/subsystems/observability/observability-errors.js.map +1 -1
  522. package/dist/runtime/subsystems/observability/observability.module.js +11 -300
  523. package/dist/runtime/subsystems/observability/observability.module.js.map +1 -1
  524. package/dist/runtime/subsystems/observability/observability.protocol.d.ts +2 -2
  525. package/dist/runtime/subsystems/observability/observability.service.d.ts +2 -2
  526. package/dist/runtime/subsystems/observability/observability.service.js +9 -197
  527. package/dist/runtime/subsystems/observability/observability.service.js.map +1 -1
  528. package/dist/runtime/subsystems/observability/observability.tokens.js +5 -3
  529. package/dist/runtime/subsystems/observability/observability.tokens.js.map +1 -1
  530. package/dist/runtime/subsystems/observability/reporters/bridge-metrics.reporter.d.ts +2 -2
  531. package/dist/runtime/subsystems/observability/reporters/bridge-metrics.reporter.js +4 -84
  532. package/dist/runtime/subsystems/observability/reporters/bridge-metrics.reporter.js.map +1 -1
  533. package/dist/runtime/subsystems/observability/reporters/index.d.ts +2 -2
  534. package/dist/runtime/subsystems/observability/reporters/index.js +5 -84
  535. package/dist/runtime/subsystems/observability/reporters/index.js.map +1 -1
  536. package/dist/runtime/subsystems/storage/index.js +15 -200
  537. package/dist/runtime/subsystems/storage/index.js.map +1 -1
  538. package/dist/runtime/subsystems/storage/storage.local-backend.js +4 -103
  539. package/dist/runtime/subsystems/storage/storage.local-backend.js.map +1 -1
  540. package/dist/runtime/subsystems/storage/storage.memory-backend.js +5 -68
  541. package/dist/runtime/subsystems/storage/storage.memory-backend.js.map +1 -1
  542. package/dist/runtime/subsystems/storage/storage.module.js +8 -200
  543. package/dist/runtime/subsystems/storage/storage.module.js.map +1 -1
  544. package/dist/runtime/subsystems/storage/storage.tokens.js +5 -6
  545. package/dist/runtime/subsystems/storage/storage.tokens.js.map +1 -1
  546. package/dist/runtime/subsystems/storage/storage.utils.js +4 -14
  547. package/dist/runtime/subsystems/storage/storage.utils.js.map +1 -1
  548. package/dist/runtime/subsystems/token-key.js +5 -3
  549. package/dist/runtime/subsystems/token-key.js.map +1 -1
  550. package/dist/src/cli/index.js +653 -5444
  551. package/dist/src/cli/index.js.map +1 -1
  552. package/dist/src/index.js +68 -4170
  553. package/dist/src/index.js.map +1 -1
  554. package/package.json +1 -1
  555. package/runtime/subsystems/bridge/bridge-delivery-handler.ts +1 -1
  556. package/runtime/subsystems/bridge/bridge-outbox-drain-hook.ts +45 -22
  557. package/runtime/subsystems/bridge/bridge.protocol.ts +1 -1
  558. package/runtime/subsystems/bridge/event-flow.service.ts +1 -1
  559. package/runtime/subsystems/events/event-registry.ts +77 -0
  560. package/runtime/subsystems/events/index.ts +12 -0
  561. package/runtime/subsystems/jobs/job-handler.base.ts +1 -1
  562. package/runtime/subsystems/jobs/job-worker.ts +17 -11
@@ -1,953 +1,36 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __decorateClass = (decorators, target, key, kind) => {
4
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
- if (decorator = decorators[i])
7
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
- if (kind && result) __defProp(target, key, result);
9
- return result;
10
- };
11
- var __decorateParam = (index2, decorator) => (target, key) => decorator(target, key, index2);
12
-
13
- // runtime/subsystems/token-key.ts
14
- var PKG = "@pattern-stack/codegen";
15
- var tokenKey = (area, name) => `${PKG}.${area}.${name}`;
16
-
17
- // runtime/subsystems/events/events.tokens.ts
18
- var EVENT_BUS = "EVENT_BUS";
19
- var EVENT_READ_PORT = "EVENT_READ_PORT";
20
- var TYPED_EVENT_BUS = "TYPED_EVENT_BUS";
21
- var EVENTS_MULTI_TENANT = "EVENTS_MULTI_TENANT";
22
- var REDIS_URL = Symbol.for(tokenKey("events", "redis-url"));
23
- var EVENTS_MODULE_OPTIONS = "EVENTS_MODULE_OPTIONS";
24
-
25
- // runtime/subsystems/events/generated/bus.ts
26
- import { Injectable, Inject } from "@nestjs/common";
27
- import { randomUUID } from "crypto";
28
-
29
- // runtime/subsystems/events/events-errors.ts
30
- var MissingTenantIdError = class extends Error {
31
- constructor(eventType) {
32
- super(
33
- `Missing tenantId for event '${eventType}'. EventsModule is configured with multiTenant: true \u2014 every publish must include opts.metadata.tenantId. Either pass the tenantId or disable multi-tenancy on the module.`
34
- );
35
- this.eventType = eventType;
36
- }
37
- eventType;
38
- name = "MissingTenantIdError";
39
- };
40
-
41
- // runtime/subsystems/events/generated/schemas.ts
42
- import { z } from "zod";
43
- var contactCreatedPayloadSchema = z.object({
44
- accountId: z.string().uuid().nullable(),
45
- contactId: z.string().uuid(),
46
- createdBy: z.string().uuid()
47
- }).strict();
48
- var contactMarkedChampionPayloadSchema = z.object({
49
- contactId: z.string().uuid(),
50
- opportunityId: z.string().uuid()
51
- }).strict();
52
- var contactMergedPayloadSchema = z.object({
53
- mergedBy: z.string().uuid(),
54
- sourceId: z.string().uuid(),
55
- targetId: z.string().uuid()
56
- }).strict();
57
- var crmSyncStartedPayloadSchema = z.object({
58
- runId: z.string().uuid(),
59
- source: z.string()
60
- }).strict();
61
- var dealCreatedPayloadSchema = z.object({
62
- accountId: z.string().uuid(),
63
- dealId: z.string().uuid(),
64
- ownerId: z.string().uuid()
65
- }).strict();
66
- var dealStageChangedPayloadSchema = z.object({
67
- dealId: z.string().uuid(),
68
- newStage: z.string(),
69
- oldStage: z.string()
70
- }).strict();
71
- var stripePaymentReceivedPayloadSchema = z.object({
72
- amountCents: z.number(),
73
- currency: z.string(),
74
- customerId: z.string(),
75
- eventId: z.string(),
76
- receivedAt: z.coerce.date()
77
- }).strict();
78
- var webhookOutboundContactSyncPayloadSchema = z.object({
79
- contactId: z.string().uuid(),
80
- occurredAt: z.coerce.date(),
81
- operation: z.string()
82
- }).strict();
83
- var eventPayloadSchemas = {
84
- "contact_created": contactCreatedPayloadSchema,
85
- "contact_marked_champion": contactMarkedChampionPayloadSchema,
86
- "contact_merged": contactMergedPayloadSchema,
87
- "crm_sync_started": crmSyncStartedPayloadSchema,
88
- "deal_created": dealCreatedPayloadSchema,
89
- "deal_stage_changed": dealStageChangedPayloadSchema,
90
- "stripe_payment_received": stripePaymentReceivedPayloadSchema,
91
- "webhook_outbound_contact_sync": webhookOutboundContactSyncPayloadSchema
92
- };
93
-
94
- // runtime/subsystems/events/generated/registry.ts
95
- var eventRegistry = {
96
- "contact_created": {
97
- type: "contact_created",
98
- tier: "domain",
99
- direction: "change",
100
- pool: "events_change",
101
- aggregate: "contact",
102
- version: 1,
103
- retry: { attempts: 3, backoff: "exponential" }
104
- },
105
- "contact_marked_champion": {
106
- type: "contact_marked_champion",
107
- tier: "domain",
108
- direction: "change",
109
- pool: "events_change",
110
- aggregate: "contact",
111
- version: 1,
112
- retry: { attempts: 3, backoff: "exponential" }
113
- },
114
- "contact_merged": {
115
- type: "contact_merged",
116
- tier: "domain",
117
- direction: "change",
118
- pool: "events_change",
119
- aggregate: "contact",
120
- version: 1,
121
- retry: { attempts: 3, backoff: "exponential" }
122
- },
123
- "crm_sync_started": {
124
- type: "crm_sync_started",
125
- tier: "audit",
126
- direction: null,
127
- pool: null,
128
- version: 1,
129
- retry: { attempts: 3, backoff: "exponential" }
130
- },
131
- "deal_created": {
132
- type: "deal_created",
133
- tier: "domain",
134
- direction: "change",
135
- pool: "events_change",
136
- aggregate: "deal",
137
- version: 1,
138
- retry: { attempts: 3, backoff: "exponential" }
139
- },
140
- "deal_stage_changed": {
141
- type: "deal_stage_changed",
142
- tier: "domain",
143
- direction: "change",
144
- pool: "events_change",
145
- aggregate: "deal",
146
- version: 1,
147
- retry: { attempts: 3, backoff: "exponential" }
148
- },
149
- "stripe_payment_received": {
150
- type: "stripe_payment_received",
151
- tier: "domain",
152
- direction: "inbound",
153
- pool: "events_inbound",
154
- source: "stripe",
155
- version: 1,
156
- retry: { attempts: 5, backoff: "exponential" }
157
- },
158
- "webhook_outbound_contact_sync": {
159
- type: "webhook_outbound_contact_sync",
160
- tier: "domain",
161
- direction: "outbound",
162
- pool: "events_outbound",
163
- aggregate: "contact",
164
- destination: "crm",
165
- version: 1,
166
- retry: { attempts: 3, backoff: "exponential" }
167
- }
168
- };
169
- function getEventMetadata(type) {
170
- const meta = eventRegistry[type];
171
- if (!meta) {
172
- throw new Error(`No registry entry for event type '${String(type)}' \u2014 declare events under events/*.yaml and re-run \`codegen entity new --all\`.`);
173
- }
174
- return meta;
175
- }
176
-
177
- // runtime/subsystems/events/generated/bus.ts
178
- var TypedEventBus = class {
179
- constructor(bus, multiTenant) {
180
- this.bus = bus;
181
- this.multiTenant = multiTenant;
182
- }
183
- bus;
184
- multiTenant;
185
- async publish(type, aggregateId, payload, opts) {
186
- const meta = getEventMetadata(type);
187
- const flag = process.env["CODEGEN_EVENT_VALIDATE"];
188
- const shouldValidate = flag === void 0 ? true : flag !== "false" && flag !== "0";
189
- if (shouldValidate) {
190
- const schema = eventPayloadSchemas[type];
191
- if (schema) {
192
- const check2 = schema.safeParse(payload);
193
- if (!check2.success) {
194
- console.warn(
195
- `[TypedEventBus] payload validation failed for ${String(type)}:`,
196
- check2.error.issues
197
- );
198
- }
199
- }
200
- }
201
- const tenantId = opts?.metadata?.["tenantId"];
202
- if (this.multiTenant && (tenantId === void 0 || tenantId === null)) {
203
- throw new MissingTenantIdError(type);
204
- }
205
- const aggregateType = meta.aggregate ?? meta.source ?? meta.destination ?? type;
206
- const baseMetadata = { ...opts?.metadata ?? {} };
207
- if (meta.tier === "audit") {
208
- if (baseMetadata["pool"] !== void 0 || baseMetadata["direction"] !== void 0) {
209
- console.debug(
210
- `[TypedEventBus] tier:audit event '${String(type)}' had pool/direction in opts.metadata; overriding to null.`
211
- );
212
- }
213
- baseMetadata["pool"] = null;
214
- baseMetadata["direction"] = null;
215
- baseMetadata["tier"] = "audit";
216
- } else {
217
- baseMetadata["pool"] = meta.pool;
218
- baseMetadata["direction"] = meta.direction;
219
- baseMetadata["tier"] = "domain";
220
- }
221
- baseMetadata["version"] = meta.version;
222
- await this.bus.publish(
223
- {
224
- id: randomUUID(),
225
- type,
226
- aggregateId,
227
- aggregateType,
228
- payload,
229
- occurredAt: /* @__PURE__ */ new Date(),
230
- metadata: baseMetadata
231
- },
232
- opts?.tx
233
- );
234
- }
235
- subscribe(type, handler) {
236
- return this.bus.subscribe(type, handler);
237
- }
238
- };
239
- TypedEventBus = __decorateClass([
240
- Injectable(),
241
- __decorateParam(0, Inject(EVENT_BUS)),
242
- __decorateParam(1, Inject(EVENTS_MULTI_TENANT))
243
- ], TypedEventBus);
244
-
245
- // runtime/subsystems/events/events.module.ts
246
- import { Module } from "@nestjs/common";
247
-
248
- // runtime/constants/tokens.ts
249
- var DRIZZLE = "DRIZZLE";
250
-
251
- // runtime/subsystems/events/event-bus.drizzle-backend.ts
252
- import { Injectable as Injectable2, Inject as Inject2, Logger, Optional } from "@nestjs/common";
253
- import { eq, and, inArray, asc, desc, gte, lt, or, sql as sql2 } from "drizzle-orm";
254
-
255
- // runtime/subsystems/events/event-keyset-cursor.ts
256
- var DEFAULT_EVENT_LIST_LIMIT = 50;
257
- var MAX_EVENT_LIST_LIMIT = 200;
258
- function clampEventLimit(limit) {
259
- if (typeof limit !== "number" || !Number.isFinite(limit)) {
260
- return DEFAULT_EVENT_LIST_LIMIT;
261
- }
262
- const floored = Math.floor(limit);
263
- if (floored < 1) return 1;
264
- if (floored > MAX_EVENT_LIST_LIMIT) return MAX_EVENT_LIST_LIMIT;
265
- return floored;
266
- }
267
- function encodeEventCursor(keyset) {
268
- const tuple = [keyset.occurredAt.toISOString(), keyset.id];
269
- return Buffer.from(JSON.stringify(tuple), "utf8").toString("base64url");
270
- }
271
- function decodeEventCursor(cursor) {
272
- try {
273
- const json = Buffer.from(cursor, "base64url").toString("utf8");
274
- const parsed = JSON.parse(json);
275
- if (!Array.isArray(parsed) || parsed.length !== 2) return null;
276
- const [iso, id] = parsed;
277
- if (typeof iso !== "string" || typeof id !== "string") return null;
278
- const occurredAt = new Date(iso);
279
- if (Number.isNaN(occurredAt.getTime())) return null;
280
- return { occurredAt, id };
281
- } catch {
282
- return null;
283
- }
284
- }
285
-
286
- // runtime/subsystems/events/domain-events.schema.ts
1
+ import "../../../chunk-FN2PYDPP.js";
287
2
  import {
288
- check,
289
- index,
290
- jsonb,
291
- pgTable,
292
- text,
293
- timestamp,
294
- uuid
295
- } from "drizzle-orm/pg-core";
296
- import { sql } from "drizzle-orm";
297
- var domainEvents = pgTable(
298
- "domain_events",
299
- {
300
- id: uuid("id").primaryKey(),
301
- type: text("type").notNull(),
302
- aggregateId: text("aggregate_id").notNull(),
303
- aggregateType: text("aggregate_type").notNull(),
304
- payload: jsonb("payload").notNull().$type(),
305
- occurredAt: timestamp("occurred_at", { withTimezone: true }).notNull(),
306
- processedAt: timestamp("processed_at", { withTimezone: true }),
307
- /** Lifecycle status: pending | processed | failed */
308
- status: text("status").notNull().default("pending"),
309
- /** Error message from the last failed dispatch attempt. */
310
- error: text("error"),
311
- metadata: jsonb("metadata").$type(),
312
- /** Routing pool (e.g. `events_inbound`, `events_change`, `events_outbound`). Populated by DrizzleEventBus.publish() in EVT-4. NULL when `tier='audit'`. */
313
- pool: text("pool"),
314
- /** Routing direction: `inbound` | `change` | `outbound`. Populated by DrizzleEventBus.publish() in EVT-4. NULL when `tier='audit'`. */
315
- direction: text("direction"),
316
- /**
317
- * Event tier: `'domain'` (default) or `'audit'`. Audit-tier rows are
318
- * observability-only and have null `pool`/`direction` by construction —
319
- * enforced by the `domain_events_tier_routing_check` CHECK constraint
320
- * declared below. (AUDIT-1)
321
- */
322
- tier: text("tier").notNull().default("domain"),
323
- // conditional: emitted only when events.multi_tenant: true
324
- tenantId: text("tenant_id")
325
- },
326
- (t) => ({
327
- /** Polling drain filter (existing — promoted from comment to declaration in EVT-1). */
328
- idxDomainEventsStatusOccurredAt: index("idx_domain_events_status_occurred_at").on(
329
- t.status,
330
- t.occurredAt
331
- ),
332
- /** Event replay per aggregate (existing — promoted from comment to declaration in EVT-1). */
333
- idxDomainEventsAggregate: index("idx_domain_events_aggregate").on(
334
- t.aggregateId,
335
- t.aggregateType
336
- ),
337
- /** Per-pool drain filter (EVT-1). Enables DrizzleEventBus to drain a single pool without scanning all events. */
338
- idxDomainEventsPoolStatusOccurredAt: index(
339
- "idx_domain_events_pool_status_occurred_at"
340
- ).on(t.pool, t.status, t.occurredAt),
341
- /** Per-tier filter (AUDIT-1). Backs the observability viewer's tier toggle. */
342
- idxDomainEventsTierStatusOccurredAt: index(
343
- "idx_domain_events_tier_status_occurred_at"
344
- ).on(t.tier, t.status, t.occurredAt),
345
- /**
346
- * Tier ↔ routing-fields invariant (AUDIT-1):
347
- * - `tier` is one of `'domain' | 'audit'`.
348
- * - `tier='audit'` ⇔ `pool IS NULL AND direction IS NULL`.
349
- * - `tier='domain'` ⇒ `pool` and `direction` are populated (the
350
- * DrizzleEventBus inserts always supply them; the bus stamps them
351
- * in AUDIT-3).
352
- */
353
- tierRoutingCheck: check(
354
- "domain_events_tier_routing_check",
355
- sql`${t.tier} in ('domain','audit') AND ((${t.tier} = 'audit') = (${t.pool} is null and ${t.direction} is null))`
356
- )
357
- })
358
- );
359
-
360
- // runtime/subsystems/bridge/bridge.tokens.ts
361
- var BRIDGE_OUTBOX_DRAIN_HOOK = "BRIDGE_OUTBOX_DRAIN_HOOK";
362
-
363
- // runtime/subsystems/events/event-bus.drizzle-backend.ts
364
- var POLL_INTERVAL_MS = 1e3;
365
- var POLL_BATCH_SIZE = 50;
366
- function toInsertValues(event, multiTenant) {
367
- const metadata = event.metadata ?? void 0;
368
- const pool = metadata?.["pool"] ?? null;
369
- const direction = metadata?.["direction"] ?? null;
370
- const tier = metadata?.["tier"] ?? "domain";
371
- const base = {
372
- id: event.id,
373
- type: event.type,
374
- aggregateId: event.aggregateId,
375
- aggregateType: event.aggregateType,
376
- payload: event.payload,
377
- occurredAt: event.occurredAt,
378
- processedAt: null,
379
- status: "pending",
380
- metadata: event.metadata,
381
- pool,
382
- direction,
383
- tier
384
- };
385
- if (!multiTenant) return base;
386
- const tenantId = metadata?.["tenantId"] ?? null;
387
- return { ...base, tenantId };
388
- }
389
- function toEventSummary(r) {
390
- const metadata = r.metadata ?? void 0;
391
- const rootRunId = metadata?.["rootRunId"];
392
- return {
393
- id: r.id,
394
- type: r.type,
395
- aggregateId: r.aggregateId,
396
- aggregateType: r.aggregateType,
397
- status: r.status,
398
- pool: r.pool,
399
- direction: r.direction,
400
- tier: r.tier,
401
- rootRunId: typeof rootRunId === "string" ? rootRunId : null,
402
- // EVT-8: `tenant_id` is a scaffold-time conditional column. Read it
403
- // structurally so this projection typechecks against both the
404
- // multi-tenant schema (column present) and the single-tenant schema
405
- // (column absent → undefined → null).
406
- tenantId: r.tenantId ?? null,
407
- occurredAt: r.occurredAt instanceof Date ? r.occurredAt : new Date(r.occurredAt),
408
- processedAt: r.processedAt == null ? null : r.processedAt instanceof Date ? r.processedAt : new Date(r.processedAt)
409
- };
410
- }
411
- var DrizzleEventBus = class {
412
- constructor(db, opts, bridgeHook = null) {
413
- this.db = db;
414
- this.bridgeHook = bridgeHook;
415
- this.opts = opts ?? { backend: "drizzle" };
416
- }
417
- db;
418
- bridgeHook;
419
- logger = new Logger(DrizzleEventBus.name);
420
- polling = false;
421
- pollTimer = null;
422
- handlers = /* @__PURE__ */ new Map();
423
- opts;
424
- // ============================================================================
425
- // Lifecycle
426
- // ============================================================================
427
- async onModuleInit() {
428
- this.polling = true;
429
- this.schedulePoll();
430
- }
431
- async onModuleDestroy() {
432
- this.polling = false;
433
- if (this.pollTimer) {
434
- clearTimeout(this.pollTimer);
435
- this.pollTimer = null;
436
- }
437
- }
438
- // ============================================================================
439
- // IEventBus
440
- // ============================================================================
441
- async publish(event, tx) {
442
- const client = tx ?? this.db;
443
- const multiTenant = this.opts.multiTenant ?? false;
444
- await client.insert(domainEvents).values(toInsertValues(event, multiTenant));
445
- }
446
- async publishMany(events, tx) {
447
- if (events.length === 0) return;
448
- const client = tx ?? this.db;
449
- const multiTenant = this.opts.multiTenant ?? false;
450
- await client.insert(domainEvents).values(events.map((e) => toInsertValues(e, multiTenant)));
451
- }
452
- async findById(eventId) {
453
- const rows = await this.db.select().from(domainEvents).where(eq(domainEvents.id, eventId)).limit(1);
454
- const row = rows[0];
455
- if (!row) return null;
456
- return {
457
- id: row.id,
458
- type: row.type,
459
- aggregateId: row.aggregateId,
460
- aggregateType: row.aggregateType,
461
- payload: row.payload,
462
- occurredAt: row.occurredAt instanceof Date ? row.occurredAt : new Date(row.occurredAt),
463
- metadata: row.metadata ?? void 0
464
- };
465
- }
466
- subscribe(eventType, handler) {
467
- if (!this.handlers.has(eventType)) {
468
- this.handlers.set(eventType, /* @__PURE__ */ new Set());
469
- }
470
- const set = this.handlers.get(eventType);
471
- const h = handler;
472
- set.add(h);
473
- return () => {
474
- set.delete(h);
475
- };
476
- }
477
- // ============================================================================
478
- // IEventReadPort (OBS-LIST-1)
479
- // ============================================================================
480
- async listEvents(query = {}) {
481
- const limit = clampEventLimit(query.limit);
482
- const conditions = [];
483
- if (query.poolId) conditions.push(eq(domainEvents.pool, query.poolId));
484
- if (query.direction)
485
- conditions.push(eq(domainEvents.direction, query.direction));
486
- if (query.since) conditions.push(gte(domainEvents.occurredAt, query.since));
487
- if (query.rootRunId) {
488
- conditions.push(
489
- sql2`${domainEvents.metadata}->>'rootRunId' = ${query.rootRunId}`
490
- );
491
- }
492
- if (this.opts.multiTenant && query.tenantId !== void 0) {
493
- const tenantIdColumn = domainEvents.tenantId;
494
- conditions.push(
495
- query.tenantId === null ? sql2`${tenantIdColumn} is null` : eq(tenantIdColumn, query.tenantId)
496
- );
497
- }
498
- if (query.cursor) {
499
- const keyset = decodeEventCursor(query.cursor);
500
- if (keyset) {
501
- conditions.push(
502
- or(
503
- lt(domainEvents.occurredAt, keyset.occurredAt),
504
- and(
505
- eq(domainEvents.occurredAt, keyset.occurredAt),
506
- lt(domainEvents.id, keyset.id)
507
- )
508
- )
509
- );
510
- }
511
- }
512
- const rows = await this.db.select().from(domainEvents).where(conditions.length > 0 ? and(...conditions) : void 0).orderBy(desc(domainEvents.occurredAt), desc(domainEvents.id)).limit(limit + 1);
513
- const hasMore = rows.length > limit;
514
- const page = hasMore ? rows.slice(0, limit) : rows;
515
- const items = page.map(toEventSummary);
516
- const last = page[page.length - 1];
517
- const nextCursor = hasMore && last ? encodeEventCursor({ occurredAt: last.occurredAt, id: last.id }) : null;
518
- return { items, nextCursor };
519
- }
520
- // ============================================================================
521
- // Polling
522
- // ============================================================================
523
- /**
524
- * Test-only hook. Runs exactly one drain cycle and returns. Production
525
- * code goes through `onModuleInit` → `schedulePoll`, which calls the
526
- * same `processBatch` under a timer.
527
- */
528
- async drainOnce() {
529
- await this.processBatch();
530
- }
531
- schedulePoll() {
532
- if (!this.polling) return;
533
- this.pollTimer = setTimeout(async () => {
534
- try {
535
- await this.processBatch();
536
- } catch (err) {
537
- this.logger.error(`Poll cycle error: ${err}`);
538
- } finally {
539
- this.schedulePoll();
540
- }
541
- }, POLL_INTERVAL_MS);
542
- }
543
- /**
544
- * Drain one batch (BRIDGE-4 restructure of EVT-4).
545
- *
546
- * Two-phase per drained event:
547
- *
548
- * 1. **Per-event transaction** — bridge fanout (`bridgeHook.processEvent`)
549
- * + `processed_at` stamp. Both write through the same `tx`. A throw
550
- * inside the tx (only infra-level failures should reach here, since
551
- * the hook tolerates null direction and registry misses inline)
552
- * rolls back the bridge inserts AND the `processed_at` stamp; the
553
- * event re-claims on the next drain cycle. Bridge `UNIQUE
554
- * (event_id, trigger_id)` makes the retry idempotent.
555
- *
556
- * 2. **After commit** — dispatch in-process subscribers (`IEventBus.subscribe`
557
- * handlers). This deliberately runs OUTSIDE the per-event tx (lead
558
- * decision 2026-04-22): subscribers are best-effort and must not
559
- * gate forward progress or roll back bridge fanout. Subscriber
560
- * errors are caught + logged; `processed_at` is already committed.
561
- * The old `MAX_RETRIES=3` in-process retry loop and the
562
- * `failed`-stamping path were removed in BRIDGE-4 along with their
563
- * coupling.
564
- *
565
- * The `processed_at` UPDATE carries `AND status='pending'` (BRIDGE-4
566
- * tightening — without it, a hypothetical double-claim could double-stamp
567
- * the timestamp). The per-event tx + `FOR UPDATE SKIP LOCKED` claim
568
- * make this defensive belt-and-suspenders.
569
- */
570
- async processBatch() {
571
- const pools = this.opts.pools;
572
- const whereClause = pools && pools.length > 0 ? and(eq(domainEvents.status, "pending"), inArray(domainEvents.pool, pools)) : eq(domainEvents.status, "pending");
573
- const rows = await this.db.transaction(async (tx) => {
574
- return tx.select().from(domainEvents).where(whereClause).orderBy(asc(domainEvents.occurredAt)).limit(POLL_BATCH_SIZE).for("update", { skipLocked: true });
575
- });
576
- for (const row of rows) {
577
- const event = {
578
- id: row.id,
579
- type: row.type,
580
- aggregateId: row.aggregateId,
581
- aggregateType: row.aggregateType,
582
- payload: row.payload,
583
- occurredAt: row.occurredAt instanceof Date ? row.occurredAt : new Date(row.occurredAt),
584
- metadata: row.metadata ?? void 0
585
- };
586
- try {
587
- await this.db.transaction(async (tx) => {
588
- if (this.bridgeHook) {
589
- await this.bridgeHook.processEvent(event, tx);
590
- }
591
- await tx.update(domainEvents).set({ status: "processed", processedAt: /* @__PURE__ */ new Date() }).where(
592
- and(
593
- eq(domainEvents.id, event.id),
594
- eq(domainEvents.status, "pending")
595
- )
596
- );
597
- });
598
- } catch (err) {
599
- this.logger.error(
600
- `Per-event tx failed for event id=${event.id} type=${event.type}: ${err}`
601
- );
602
- continue;
603
- }
604
- try {
605
- await this.dispatch(event);
606
- } catch (err) {
607
- this.logger.error(
608
- `Subscriber dispatch failed for event id=${event.id} type=${event.type} (processed_at already committed; failure does not retry): ${err}`
609
- );
610
- }
611
- }
612
- }
613
- async dispatch(event) {
614
- const set = this.handlers.get(event.type);
615
- if (!set) return;
616
- let firstError;
617
- for (const handler of set) {
618
- try {
619
- await handler(event);
620
- } catch (err) {
621
- this.logger.error(
622
- `Handler error for event type "${event.type}" (id: ${event.id}): ${err}`
623
- );
624
- if (firstError === void 0) {
625
- firstError = err;
626
- }
627
- }
628
- }
629
- if (firstError !== void 0) {
630
- throw firstError;
631
- }
632
- }
633
- };
634
- DrizzleEventBus = __decorateClass([
635
- Injectable2(),
636
- __decorateParam(0, Inject2(DRIZZLE)),
637
- __decorateParam(1, Optional()),
638
- __decorateParam(1, Inject2(EVENTS_MODULE_OPTIONS)),
639
- __decorateParam(2, Optional()),
640
- __decorateParam(2, Inject2(BRIDGE_OUTBOX_DRAIN_HOOK))
641
- ], DrizzleEventBus);
642
-
643
- // runtime/subsystems/events/event-bus.memory-backend.ts
644
- import { Inject as Inject3, Injectable as Injectable3, Logger as Logger2, Optional as Optional2 } from "@nestjs/common";
645
- function toEventSummary2(event) {
646
- const metadata = event.metadata;
647
- const str = (key) => {
648
- const v = metadata?.[key];
649
- return typeof v === "string" ? v : null;
650
- };
651
- return {
652
- id: event.id,
653
- type: event.type,
654
- aggregateId: event.aggregateId,
655
- aggregateType: event.aggregateType,
656
- status: "processed",
657
- pool: str("pool"),
658
- direction: str("direction"),
659
- tier: str("tier") ?? "domain",
660
- rootRunId: str("rootRunId"),
661
- tenantId: str("tenantId"),
662
- occurredAt: event.occurredAt,
663
- processedAt: event.occurredAt
664
- };
665
- }
666
- var MemoryEventBus = class {
667
- logger = new Logger2(MemoryEventBus.name);
668
- /** All events published since construction (or last clear). */
669
- publishedEvents = [];
670
- handlers = /* @__PURE__ */ new Map();
671
- opts;
672
- constructor(opts) {
673
- this.opts = opts ?? { backend: "memory" };
674
- }
675
- async publish(event) {
676
- this.assertTierRouting(event);
677
- this.publishedEvents.push(event);
678
- if (this.shouldDispatch(event)) {
679
- await this.dispatch(event);
680
- }
681
- }
682
- async publishMany(events) {
683
- for (const event of events) {
684
- await this.publish(event);
685
- }
686
- }
687
- async findById(eventId) {
688
- return this.publishedEvents.find((e) => e.id === eventId) ?? null;
689
- }
690
- subscribe(eventType, handler) {
691
- if (!this.handlers.has(eventType)) {
692
- this.handlers.set(eventType, /* @__PURE__ */ new Set());
693
- }
694
- const set = this.handlers.get(eventType);
695
- const h = handler;
696
- set.add(h);
697
- return () => {
698
- set.delete(h);
699
- };
700
- }
701
- // ============================================================================
702
- // IEventReadPort (OBS-LIST-1)
703
- // ============================================================================
704
- async listEvents(query = {}) {
705
- const limit = clampEventLimit(query.limit);
706
- const keyset = query.cursor ? decodeEventCursor(query.cursor) : null;
707
- const str = (e, key) => {
708
- const v = e.metadata?.[key];
709
- return typeof v === "string" ? v : null;
710
- };
711
- const matched = this.publishedEvents.filter((e) => {
712
- if (query.poolId && str(e, "pool") !== query.poolId) return false;
713
- if (query.direction && str(e, "direction") !== query.direction)
714
- return false;
715
- if (query.rootRunId && str(e, "rootRunId") !== query.rootRunId)
716
- return false;
717
- if (query.since && e.occurredAt.getTime() < query.since.getTime())
718
- return false;
719
- if (query.tenantId !== void 0) {
720
- const t = str(e, "tenantId");
721
- if (query.tenantId === null) {
722
- if (t !== null) return false;
723
- } else if (t !== query.tenantId) {
724
- return false;
725
- }
726
- }
727
- return true;
728
- });
729
- matched.sort((a, b) => {
730
- const dt = b.occurredAt.getTime() - a.occurredAt.getTime();
731
- if (dt !== 0) return dt;
732
- return a.id < b.id ? 1 : a.id > b.id ? -1 : 0;
733
- });
734
- const seeked = keyset ? matched.filter((e) => {
735
- const ct = e.occurredAt.getTime();
736
- const kt = keyset.occurredAt.getTime();
737
- if (ct < kt) return true;
738
- if (ct > kt) return false;
739
- return e.id < keyset.id;
740
- }) : matched;
741
- const hasMore = seeked.length > limit;
742
- const page = hasMore ? seeked.slice(0, limit) : seeked;
743
- const items = page.map(toEventSummary2);
744
- const last = page[page.length - 1];
745
- const nextCursor = hasMore && last ? encodeEventCursor({ occurredAt: last.occurredAt, id: last.id }) : null;
746
- return { items, nextCursor };
747
- }
748
- /** Remove all published events and subscriptions. Useful in beforeEach. */
749
- clear() {
750
- this.publishedEvents.length = 0;
751
- this.handlers.clear();
752
- }
753
- /** Filter published events by `metadata.pool`. */
754
- publishedEventsForPool(pool) {
755
- return this.publishedEvents.filter((e) => e.metadata?.["pool"] === pool);
756
- }
757
- /** Filter published events by `metadata.direction`. */
758
- publishedEventsForDirection(direction) {
759
- return this.publishedEvents.filter((e) => e.metadata?.["direction"] === direction);
760
- }
761
- /**
762
- * Decide whether `event` should be dispatched to handlers given the
763
- * current pool filter.
764
- *
765
- * Semantics (mirroring `DrizzleEventBus.processBatch`):
766
- * - `opts.pools` undefined → dispatch everything (no filter).
767
- * - `opts.pools` empty array → treated as "no filter" to match the
768
- * Drizzle backend, where `pools && pools.length > 0` is the gate on
769
- * the `inArray` WHERE clause. Empty arrays dispatch everything.
770
- * - `opts.pools` non-empty → dispatch only when `event.metadata.pool`
771
- * is in the list. Events without `metadata.pool` do NOT match — they
772
- * are out of all configured pools by definition.
773
- */
774
- shouldDispatch(event) {
775
- const pools = this.opts.pools;
776
- if (!pools || pools.length === 0) return true;
777
- const eventPool = event.metadata?.["pool"];
778
- return typeof eventPool === "string" && pools.includes(eventPool);
779
- }
780
- /**
781
- * Mirror the `domain_events_tier_routing_check` DB CHECK at the memory
782
- * backend (AUDIT-1). Audit-tier events MUST have null/undefined
783
- * `pool` and `direction` in metadata; the bridge dispatcher relies on
784
- * this invariant.
785
- */
786
- assertTierRouting(event) {
787
- const tier = event.metadata?.["tier"];
788
- if (tier !== "audit") return;
789
- const pool = event.metadata?.["pool"];
790
- const direction = event.metadata?.["direction"];
791
- const poolIsNull = pool === null || pool === void 0;
792
- const directionIsNull = direction === null || direction === void 0;
793
- if (!poolIsNull || !directionIsNull) {
794
- throw new Error(
795
- `MemoryEventBus: tier='audit' events must have null pool and direction (got pool=${String(pool)}, direction=${String(direction)}). This mirrors the domain_events CHECK constraint.`
796
- );
797
- }
798
- }
799
- async dispatch(event) {
800
- const set = this.handlers.get(event.type);
801
- if (!set) return;
802
- let firstError;
803
- for (const handler of set) {
804
- try {
805
- await handler(event);
806
- } catch (err) {
807
- this.logger.error(
808
- `Handler error for event type "${event.type}" (id: ${event.id}): ${err}`
809
- );
810
- if (firstError === void 0) {
811
- firstError = err;
812
- }
813
- }
814
- }
815
- if (firstError !== void 0) {
816
- throw firstError;
817
- }
818
- }
819
- };
820
- MemoryEventBus = __decorateClass([
821
- Injectable3(),
822
- __decorateParam(0, Optional2()),
823
- __decorateParam(0, Inject3(EVENTS_MODULE_OPTIONS))
824
- ], MemoryEventBus);
825
-
826
- // runtime/subsystems/events/events.module.ts
827
- async function loadRedisEventBus() {
828
- const specifier = "./event-bus.redis-backend";
829
- const mod = await import(specifier);
830
- return mod.RedisEventBus;
831
- }
832
- function buildTypedBusProviders(multiTenant, typedBus) {
833
- const BusClass = typedBus ?? TypedEventBus;
834
- return [
835
- BusClass,
836
- { provide: TYPED_EVENT_BUS, useExisting: BusClass },
837
- { provide: EVENTS_MULTI_TENANT, useValue: multiTenant }
838
- ];
839
- }
840
- async function buildEventBusAsync(options, db, redisUrl) {
841
- if (options.backend === "drizzle") {
842
- if (!db) {
843
- throw new Error(
844
- "EventsModule.forRootAsync: backend: 'drizzle' selected but DRIZZLE provider is not available. Ensure DatabaseModule (or another provider exposing DRIZZLE) is imported before EventsModule.forRootAsync."
845
- );
846
- }
847
- return new DrizzleEventBus(db, options);
848
- }
849
- if (options.backend === "redis") {
850
- const RedisEventBus = await loadRedisEventBus();
851
- return new RedisEventBus(redisUrl);
852
- }
853
- return new MemoryEventBus(options);
854
- }
855
- var EventsModule = class {
856
- static forRootAsync(asyncOptions) {
857
- return {
858
- module: EventsModule,
859
- global: true,
860
- imports: asyncOptions.imports ?? [],
861
- providers: [
862
- {
863
- provide: EVENTS_MODULE_OPTIONS,
864
- useFactory: asyncOptions.useFactory,
865
- inject: asyncOptions.inject ?? []
866
- },
867
- {
868
- provide: EVENTS_MULTI_TENANT,
869
- useFactory: (options) => options.multiTenant ?? false,
870
- inject: [EVENTS_MODULE_OPTIONS]
871
- },
872
- {
873
- provide: REDIS_URL,
874
- useFactory: (options) => options.redisUrl ?? process.env["REDIS_URL"] ?? "redis://localhost:6379",
875
- inject: [EVENTS_MODULE_OPTIONS]
876
- },
877
- {
878
- provide: EVENT_BUS,
879
- useFactory: (options, db, redisUrl) => buildEventBusAsync(options, db, redisUrl),
880
- inject: [
881
- EVENTS_MODULE_OPTIONS,
882
- { token: DRIZZLE, optional: true },
883
- REDIS_URL
884
- ]
885
- },
886
- {
887
- // Read port (OBS-LIST-1). Drizzle + memory backends implement
888
- // IEventReadPort on the EVENT_BUS instance; the redis backend
889
- // retains no history, so EVENT_READ_PORT resolves to `null` and
890
- // optional consumers (the observability combiner) degrade to
891
- // empty results.
892
- provide: EVENT_READ_PORT,
893
- useFactory: (options, bus) => options.backend === "redis" ? null : bus,
894
- inject: [EVENTS_MODULE_OPTIONS, EVENT_BUS]
895
- },
896
- TypedEventBus,
897
- { provide: TYPED_EVENT_BUS, useExisting: TypedEventBus }
898
- ],
899
- exports: [EVENT_BUS, EVENT_READ_PORT, TYPED_EVENT_BUS, EVENTS_MULTI_TENANT]
900
- };
901
- }
902
- static forRoot(options = { backend: "drizzle" }) {
903
- const multiTenant = options.multiTenant ?? false;
904
- if (options.backend === "redis") {
905
- const resolvedUrl = options.redisUrl ?? process.env["REDIS_URL"] ?? "redis://localhost:6379";
906
- return {
907
- module: EventsModule,
908
- global: true,
909
- providers: [
910
- { provide: EVENTS_MODULE_OPTIONS, useValue: options },
911
- { provide: REDIS_URL, useValue: resolvedUrl },
912
- {
913
- // #6: useFactory + dynamic import so the consumer's tsc never
914
- // needs to resolve `event-bus.redis-backend.ts` for drizzle/
915
- // memory installs (the file is filtered out by
916
- // `backendFileFilter`). Nest awaits async factories + manages
917
- // lifecycle on the returned instance, so we drop the old bare
918
- // `RedisEventBus` provider entry.
919
- provide: EVENT_BUS,
920
- useFactory: async (url) => {
921
- const RedisEventBus = await loadRedisEventBus();
922
- return new RedisEventBus(url);
923
- },
924
- inject: [REDIS_URL]
925
- },
926
- ...buildTypedBusProviders(multiTenant, options.typedBus)
927
- ],
928
- exports: [EVENT_BUS, TYPED_EVENT_BUS, EVENTS_MULTI_TENANT]
929
- };
930
- }
931
- const provider = options.backend === "drizzle" ? { provide: EVENT_BUS, useClass: DrizzleEventBus } : { provide: EVENT_BUS, useClass: MemoryEventBus };
932
- return {
933
- module: EventsModule,
934
- global: true,
935
- providers: [
936
- { provide: EVENTS_MODULE_OPTIONS, useValue: options },
937
- provider,
938
- // Read port (OBS-LIST-1): drizzle + memory backends implement
939
- // IEventReadPort on the same instance as EVENT_BUS. The redis
940
- // backend retains no history and does not provide this token.
941
- { provide: EVENT_READ_PORT, useExisting: EVENT_BUS },
942
- ...buildTypedBusProviders(multiTenant, options.typedBus)
943
- ],
944
- exports: [EVENT_BUS, EVENT_READ_PORT, TYPED_EVENT_BUS, EVENTS_MULTI_TENANT]
945
- };
946
- }
947
- };
948
- EventsModule = __decorateClass([
949
- Module({})
950
- ], EventsModule);
3
+ EventsModule
4
+ } from "../../../chunk-EOLLMEAH.js";
5
+ import {
6
+ TypedEventBus
7
+ } from "../../../chunk-GM3RMJIJ.js";
8
+ import "../../../chunk-BGULBWKJ.js";
9
+ import "../../../chunk-JRQO2IOF.js";
10
+ import {
11
+ MissingTenantIdError
12
+ } from "../../../chunk-V4AF6DI4.js";
13
+ import {
14
+ DrizzleEventBus
15
+ } from "../../../chunk-4JLJYWJC.js";
16
+ import {
17
+ MemoryEventBus
18
+ } from "../../../chunk-Z7PQCAVK.js";
19
+ import "../../../chunk-UQ5EHOH2.js";
20
+ import {
21
+ EVENTS_MODULE_OPTIONS,
22
+ EVENTS_MULTI_TENANT,
23
+ EVENT_BUS,
24
+ EVENT_READ_PORT,
25
+ TYPED_EVENT_BUS
26
+ } from "../../../chunk-H5NH7KPE.js";
27
+ import "../../../chunk-4LH67P4U.js";
28
+ import {
29
+ domainEvents
30
+ } from "../../../chunk-OFRRBC7M.js";
31
+ import "../../../chunk-GYGNEQSC.js";
32
+ import "../../../chunk-U64T4YZE.js";
33
+ import "../../../chunk-2E224ZSN.js";
951
34
  export {
952
35
  DrizzleEventBus,
953
36
  EVENTS_MODULE_OPTIONS,