@pattern-stack/codegen 0.15.1 → 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 (521) hide show
  1. package/CHANGELOG.md +53 -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/runtime/analytics/index.js +8 -41
  249. package/dist/runtime/analytics/index.js.map +1 -1
  250. package/dist/runtime/analytics/types.js +8 -41
  251. package/dist/runtime/analytics/types.js.map +1 -1
  252. package/dist/runtime/base-classes/activity-entity-repository.js +6 -312
  253. package/dist/runtime/base-classes/activity-entity-repository.js.map +1 -1
  254. package/dist/runtime/base-classes/activity-entity-service.js +6 -212
  255. package/dist/runtime/base-classes/activity-entity-service.js.map +1 -1
  256. package/dist/runtime/base-classes/base-read-use-cases.js +5 -27
  257. package/dist/runtime/base-classes/base-read-use-cases.js.map +1 -1
  258. package/dist/runtime/base-classes/base-repository.js +5 -277
  259. package/dist/runtime/base-classes/base-repository.js.map +1 -1
  260. package/dist/runtime/base-classes/base-service.js +5 -184
  261. package/dist/runtime/base-classes/base-service.js.map +1 -1
  262. package/dist/runtime/base-classes/index.js +59 -1076
  263. package/dist/runtime/base-classes/index.js.map +1 -1
  264. package/dist/runtime/base-classes/integrated-entity-repository.js +6 -486
  265. package/dist/runtime/base-classes/integrated-entity-repository.js.map +1 -1
  266. package/dist/runtime/base-classes/integrated-entity-service.js +6 -213
  267. package/dist/runtime/base-classes/integrated-entity-service.js.map +1 -1
  268. package/dist/runtime/base-classes/junction-integration-repository.js +8 -448
  269. package/dist/runtime/base-classes/junction-integration-repository.js.map +1 -1
  270. package/dist/runtime/base-classes/knowledge-entity-repository.js +6 -283
  271. package/dist/runtime/base-classes/knowledge-entity-repository.js.map +1 -1
  272. package/dist/runtime/base-classes/knowledge-entity-service.js +6 -190
  273. package/dist/runtime/base-classes/knowledge-entity-service.js.map +1 -1
  274. package/dist/runtime/base-classes/lifecycle-events.js +8 -70
  275. package/dist/runtime/base-classes/lifecycle-events.js.map +1 -1
  276. package/dist/runtime/base-classes/metadata-entity-repository.js +6 -330
  277. package/dist/runtime/base-classes/metadata-entity-repository.js.map +1 -1
  278. package/dist/runtime/base-classes/metadata-entity-service.js +6 -212
  279. package/dist/runtime/base-classes/metadata-entity-service.js.map +1 -1
  280. package/dist/runtime/base-classes/tenant-context.js +10 -36
  281. package/dist/runtime/base-classes/tenant-context.js.map +1 -1
  282. package/dist/runtime/base-classes/with-analytics.js +4 -7
  283. package/dist/runtime/base-classes/with-analytics.js.map +1 -1
  284. package/dist/runtime/constants/tokens.js +5 -3
  285. package/dist/runtime/constants/tokens.js.map +1 -1
  286. package/dist/runtime/eav-helpers.js +2 -0
  287. package/dist/runtime/eav-helpers.js.map +1 -1
  288. package/dist/runtime/pipes/zod-validation.pipe.js +3 -10
  289. package/dist/runtime/pipes/zod-validation.pipe.js.map +1 -1
  290. package/dist/runtime/shared/openapi/error-response.dto.js +5 -8
  291. package/dist/runtime/shared/openapi/error-response.dto.js.map +1 -1
  292. package/dist/runtime/shared/openapi/errors.js +5 -19
  293. package/dist/runtime/shared/openapi/errors.js.map +1 -1
  294. package/dist/runtime/shared/openapi/index.js +15 -106
  295. package/dist/runtime/shared/openapi/index.js.map +1 -1
  296. package/dist/runtime/shared/openapi/registry.js +6 -103
  297. package/dist/runtime/shared/openapi/registry.js.map +1 -1
  298. package/dist/runtime/shared/openapi/registry.tokens.js +4 -2
  299. package/dist/runtime/shared/openapi/registry.tokens.js.map +1 -1
  300. package/dist/runtime/subsystems/analytics/analytics.module.js +8 -117
  301. package/dist/runtime/subsystems/analytics/analytics.module.js.map +1 -1
  302. package/dist/runtime/subsystems/analytics/analytics.tokens.js +7 -8
  303. package/dist/runtime/subsystems/analytics/analytics.tokens.js.map +1 -1
  304. package/dist/runtime/subsystems/analytics/cube-backend.js +6 -71
  305. package/dist/runtime/subsystems/analytics/cube-backend.js.map +1 -1
  306. package/dist/runtime/subsystems/analytics/index.js +16 -117
  307. package/dist/runtime/subsystems/analytics/index.js.map +1 -1
  308. package/dist/runtime/subsystems/analytics/noop-backend.js +4 -21
  309. package/dist/runtime/subsystems/analytics/noop-backend.js.map +1 -1
  310. package/dist/runtime/subsystems/auth/auth-oauth-state.schema.js +4 -8
  311. package/dist/runtime/subsystems/auth/auth-oauth-state.schema.js.map +1 -1
  312. package/dist/runtime/subsystems/auth/auth.module.js +12 -359
  313. package/dist/runtime/subsystems/auth/auth.module.js.map +1 -1
  314. package/dist/runtime/subsystems/auth/auth.tokens.js +12 -13
  315. package/dist/runtime/subsystems/auth/auth.tokens.js.map +1 -1
  316. package/dist/runtime/subsystems/auth/backends/encryption-key/env.js +4 -49
  317. package/dist/runtime/subsystems/auth/backends/encryption-key/env.js.map +1 -1
  318. package/dist/runtime/subsystems/auth/backends/state-store.drizzle-backend.js +6 -64
  319. package/dist/runtime/subsystems/auth/backends/state-store.drizzle-backend.js.map +1 -1
  320. package/dist/runtime/subsystems/auth/backends/state-store.memory-backend.js +5 -47
  321. package/dist/runtime/subsystems/auth/backends/state-store.memory-backend.js.map +1 -1
  322. package/dist/runtime/subsystems/auth/controllers/auth.controller.js +5 -139
  323. package/dist/runtime/subsystems/auth/controllers/auth.controller.js.map +1 -1
  324. package/dist/runtime/subsystems/auth/index.js +53 -542
  325. package/dist/runtime/subsystems/auth/index.js.map +1 -1
  326. package/dist/runtime/subsystems/auth/middleware/requester-context.js +9 -65
  327. package/dist/runtime/subsystems/auth/middleware/requester-context.js.map +1 -1
  328. package/dist/runtime/subsystems/auth/protocols/oauth-state-store.js +4 -9
  329. package/dist/runtime/subsystems/auth/protocols/oauth-state-store.js.map +1 -1
  330. package/dist/runtime/subsystems/auth/runtime/connection-broken.error.js +4 -15
  331. package/dist/runtime/subsystems/auth/runtime/connection-broken.error.js.map +1 -1
  332. package/dist/runtime/subsystems/auth/runtime/oauth2-refresh.strategy.js +5 -104
  333. package/dist/runtime/subsystems/auth/runtime/oauth2-refresh.strategy.js.map +1 -1
  334. package/dist/runtime/subsystems/auth/runtime/session-expired.error.js +5 -16
  335. package/dist/runtime/subsystems/auth/runtime/session-expired.error.js.map +1 -1
  336. package/dist/runtime/subsystems/auth/runtime/with-auth-retry.js +5 -29
  337. package/dist/runtime/subsystems/auth/runtime/with-auth-retry.js.map +1 -1
  338. package/dist/runtime/subsystems/bridge/assert-tenant-id.js +5 -18
  339. package/dist/runtime/subsystems/bridge/assert-tenant-id.js.map +1 -1
  340. package/dist/runtime/subsystems/bridge/bridge-delivery-handler.js +12 -184
  341. package/dist/runtime/subsystems/bridge/bridge-delivery-handler.js.map +1 -1
  342. package/dist/runtime/subsystems/bridge/bridge-delivery.drizzle-backend.js +10 -448
  343. package/dist/runtime/subsystems/bridge/bridge-delivery.drizzle-backend.js.map +1 -1
  344. package/dist/runtime/subsystems/bridge/bridge-delivery.memory-backend.js +5 -126
  345. package/dist/runtime/subsystems/bridge/bridge-delivery.memory-backend.js.map +1 -1
  346. package/dist/runtime/subsystems/bridge/bridge-delivery.schema.js +6 -308
  347. package/dist/runtime/subsystems/bridge/bridge-delivery.schema.js.map +1 -1
  348. package/dist/runtime/subsystems/bridge/bridge-errors.js +6 -35
  349. package/dist/runtime/subsystems/bridge/bridge-errors.js.map +1 -1
  350. package/dist/runtime/subsystems/bridge/bridge-outbox-drain-hook.js +14 -606
  351. package/dist/runtime/subsystems/bridge/bridge-outbox-drain-hook.js.map +1 -1
  352. package/dist/runtime/subsystems/bridge/bridge.module.js +35 -3476
  353. package/dist/runtime/subsystems/bridge/bridge.module.js.map +1 -1
  354. package/dist/runtime/subsystems/bridge/bridge.tokens.js +9 -7
  355. package/dist/runtime/subsystems/bridge/bridge.tokens.js.map +1 -1
  356. package/dist/runtime/subsystems/bridge/event-flow.service.js +11 -137
  357. package/dist/runtime/subsystems/bridge/event-flow.service.js.map +1 -1
  358. package/dist/runtime/subsystems/bridge/generated/registry.js +4 -2
  359. package/dist/runtime/subsystems/bridge/generated/registry.js.map +1 -1
  360. package/dist/runtime/subsystems/bridge/index.js +60 -3470
  361. package/dist/runtime/subsystems/bridge/index.js.map +1 -1
  362. package/dist/runtime/subsystems/bridge/reserved-pools.js +4 -6
  363. package/dist/runtime/subsystems/bridge/reserved-pools.js.map +1 -1
  364. package/dist/runtime/subsystems/cache/cache.drizzle-backend.js +10 -133
  365. package/dist/runtime/subsystems/cache/cache.drizzle-backend.js.map +1 -1
  366. package/dist/runtime/subsystems/cache/cache.memory-backend.js +6 -101
  367. package/dist/runtime/subsystems/cache/cache.memory-backend.js.map +1 -1
  368. package/dist/runtime/subsystems/cache/cache.module.js +10 -278
  369. package/dist/runtime/subsystems/cache/cache.module.js.map +1 -1
  370. package/dist/runtime/subsystems/cache/cache.schema.js +4 -14
  371. package/dist/runtime/subsystems/cache/cache.schema.js.map +1 -1
  372. package/dist/runtime/subsystems/cache/cache.tokens.js +6 -7
  373. package/dist/runtime/subsystems/cache/cache.tokens.js.map +1 -1
  374. package/dist/runtime/subsystems/cache/index.js +20 -278
  375. package/dist/runtime/subsystems/cache/index.js.map +1 -1
  376. package/dist/runtime/subsystems/events/domain-events.schema.js +3 -72
  377. package/dist/runtime/subsystems/events/domain-events.schema.js.map +1 -1
  378. package/dist/runtime/subsystems/events/event-bus.drizzle-backend.js +9 -413
  379. package/dist/runtime/subsystems/events/event-bus.drizzle-backend.js.map +1 -1
  380. package/dist/runtime/subsystems/events/event-bus.memory-backend.js +7 -235
  381. package/dist/runtime/subsystems/events/event-bus.memory-backend.js.map +1 -1
  382. package/dist/runtime/subsystems/events/event-bus.redis-backend.js +8 -20
  383. package/dist/runtime/subsystems/events/event-bus.redis-backend.js.map +1 -1
  384. package/dist/runtime/subsystems/events/event-keyset-cursor.js +8 -30
  385. package/dist/runtime/subsystems/events/event-keyset-cursor.js.map +1 -1
  386. package/dist/runtime/subsystems/events/event-read.protocol.js +2 -0
  387. package/dist/runtime/subsystems/events/event-read.protocol.js.map +1 -1
  388. package/dist/runtime/subsystems/events/events-errors.js +4 -11
  389. package/dist/runtime/subsystems/events/events-errors.js.map +1 -1
  390. package/dist/runtime/subsystems/events/events.module.js +15 -949
  391. package/dist/runtime/subsystems/events/events.module.js.map +1 -1
  392. package/dist/runtime/subsystems/events/events.tokens.js +10 -11
  393. package/dist/runtime/subsystems/events/events.tokens.js.map +1 -1
  394. package/dist/runtime/subsystems/events/generated/bus.js +9 -240
  395. package/dist/runtime/subsystems/events/generated/bus.js.map +1 -1
  396. package/dist/runtime/subsystems/events/generated/index.js +23 -240
  397. package/dist/runtime/subsystems/events/generated/index.js.map +1 -1
  398. package/dist/runtime/subsystems/events/generated/registry.js +5 -82
  399. package/dist/runtime/subsystems/events/generated/registry.js.map +1 -1
  400. package/dist/runtime/subsystems/events/generated/schemas.js +12 -52
  401. package/dist/runtime/subsystems/events/generated/schemas.js.map +1 -1
  402. package/dist/runtime/subsystems/events/generated/types.js +1 -0
  403. package/dist/runtime/subsystems/events/index.js +32 -949
  404. package/dist/runtime/subsystems/events/index.js.map +1 -1
  405. package/dist/runtime/subsystems/index.js +171 -5912
  406. package/dist/runtime/subsystems/index.js.map +1 -1
  407. package/dist/runtime/subsystems/integration/build-change-source.js +6 -178
  408. package/dist/runtime/subsystems/integration/build-change-source.js.map +1 -1
  409. package/dist/runtime/subsystems/integration/deep-equal.differ.js +4 -109
  410. package/dist/runtime/subsystems/integration/deep-equal.differ.js.map +1 -1
  411. package/dist/runtime/subsystems/integration/detection-config.schema.js +11 -78
  412. package/dist/runtime/subsystems/integration/detection-config.schema.js.map +1 -1
  413. package/dist/runtime/subsystems/integration/entity-change-source-registry.memory.js +5 -30
  414. package/dist/runtime/subsystems/integration/entity-change-source-registry.memory.js.map +1 -1
  415. package/dist/runtime/subsystems/integration/entity-change-source-registry.protocol.js +4 -9
  416. package/dist/runtime/subsystems/integration/entity-change-source-registry.protocol.js.map +1 -1
  417. package/dist/runtime/subsystems/integration/execute-integration.use-case.js +6 -239
  418. package/dist/runtime/subsystems/integration/execute-integration.use-case.js.map +1 -1
  419. package/dist/runtime/subsystems/integration/incremental-read.js +5 -144
  420. package/dist/runtime/subsystems/integration/incremental-read.js.map +1 -1
  421. package/dist/runtime/subsystems/integration/index.js +83 -1352
  422. package/dist/runtime/subsystems/integration/index.js.map +1 -1
  423. package/dist/runtime/subsystems/integration/integration-audit.schema.js +10 -155
  424. package/dist/runtime/subsystems/integration/integration-audit.schema.js.map +1 -1
  425. package/dist/runtime/subsystems/integration/integration-cursor-store.drizzle-backend.js +7 -270
  426. package/dist/runtime/subsystems/integration/integration-cursor-store.drizzle-backend.js.map +1 -1
  427. package/dist/runtime/subsystems/integration/integration-cursor-store.memory-backend.js +4 -65
  428. package/dist/runtime/subsystems/integration/integration-cursor-store.memory-backend.js.map +1 -1
  429. package/dist/runtime/subsystems/integration/integration-errors.js +5 -15
  430. package/dist/runtime/subsystems/integration/integration-errors.js.map +1 -1
  431. package/dist/runtime/subsystems/integration/integration-field-diff.protocol.js +5 -7
  432. package/dist/runtime/subsystems/integration/integration-field-diff.protocol.js.map +1 -1
  433. package/dist/runtime/subsystems/integration/integration-run-recorder.drizzle-backend.js +8 -303
  434. package/dist/runtime/subsystems/integration/integration-run-recorder.drizzle-backend.js.map +1 -1
  435. package/dist/runtime/subsystems/integration/integration-run-recorder.memory-backend.js +5 -125
  436. package/dist/runtime/subsystems/integration/integration-run-recorder.memory-backend.js.map +1 -1
  437. package/dist/runtime/subsystems/integration/integration.module.js +13 -700
  438. package/dist/runtime/subsystems/integration/integration.module.js.map +1 -1
  439. package/dist/runtime/subsystems/integration/integration.tokens.js +11 -9
  440. package/dist/runtime/subsystems/integration/integration.tokens.js.map +1 -1
  441. package/dist/runtime/subsystems/integration/loopback.middleware.js +4 -16
  442. package/dist/runtime/subsystems/integration/loopback.middleware.js.map +1 -1
  443. package/dist/runtime/subsystems/integration/poll-change-source.js +4 -89
  444. package/dist/runtime/subsystems/integration/poll-change-source.js.map +1 -1
  445. package/dist/runtime/subsystems/integration/webhook-change-source.js +4 -70
  446. package/dist/runtime/subsystems/integration/webhook-change-source.js.map +1 -1
  447. package/dist/runtime/subsystems/jobs/bullmq.config.js +9 -140
  448. package/dist/runtime/subsystems/jobs/bullmq.config.js.map +1 -1
  449. package/dist/runtime/subsystems/jobs/index.js +88 -2691
  450. package/dist/runtime/subsystems/jobs/index.js.map +1 -1
  451. package/dist/runtime/subsystems/jobs/job-handler.base.js +10 -49
  452. package/dist/runtime/subsystems/jobs/job-handler.base.js.map +1 -1
  453. package/dist/runtime/subsystems/jobs/job-orchestration.schema.js +13 -152
  454. package/dist/runtime/subsystems/jobs/job-orchestration.schema.js.map +1 -1
  455. package/dist/runtime/subsystems/jobs/job-orchestrator.bullmq-backend.js +36 -699
  456. package/dist/runtime/subsystems/jobs/job-orchestrator.bullmq-backend.js.map +1 -1
  457. package/dist/runtime/subsystems/jobs/job-orchestrator.drizzle-backend.js +10 -564
  458. package/dist/runtime/subsystems/jobs/job-orchestrator.drizzle-backend.js.map +1 -1
  459. package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.js +10 -824
  460. package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.js.map +1 -1
  461. package/dist/runtime/subsystems/jobs/job-run-keyset-cursor.js +9 -51
  462. package/dist/runtime/subsystems/jobs/job-run-keyset-cursor.js.map +1 -1
  463. package/dist/runtime/subsystems/jobs/job-run-service.drizzle-backend.js +9 -416
  464. package/dist/runtime/subsystems/jobs/job-run-service.drizzle-backend.js.map +1 -1
  465. package/dist/runtime/subsystems/jobs/job-run-service.memory-backend.js +9 -290
  466. package/dist/runtime/subsystems/jobs/job-run-service.memory-backend.js.map +1 -1
  467. package/dist/runtime/subsystems/jobs/job-step-service.drizzle-backend.js +5 -213
  468. package/dist/runtime/subsystems/jobs/job-step-service.drizzle-backend.js.map +1 -1
  469. package/dist/runtime/subsystems/jobs/job-step-service.memory-backend.js +5 -131
  470. package/dist/runtime/subsystems/jobs/job-step-service.memory-backend.js.map +1 -1
  471. package/dist/runtime/subsystems/jobs/job-worker.bullmq-backend.js +9 -175
  472. package/dist/runtime/subsystems/jobs/job-worker.bullmq-backend.js.map +1 -1
  473. package/dist/runtime/subsystems/jobs/job-worker.js +14 -613
  474. package/dist/runtime/subsystems/jobs/job-worker.js.map +1 -1
  475. package/dist/runtime/subsystems/jobs/job-worker.module.js +23 -2647
  476. package/dist/runtime/subsystems/jobs/job-worker.module.js.map +1 -1
  477. package/dist/runtime/subsystems/jobs/jobs-domain.module.js +19 -1897
  478. package/dist/runtime/subsystems/jobs/jobs-domain.module.js.map +1 -1
  479. package/dist/runtime/subsystems/jobs/jobs-domain.tokens.js +8 -9
  480. package/dist/runtime/subsystems/jobs/jobs-domain.tokens.js.map +1 -1
  481. package/dist/runtime/subsystems/jobs/jobs-errors.js +10 -78
  482. package/dist/runtime/subsystems/jobs/jobs-errors.js.map +1 -1
  483. package/dist/runtime/subsystems/jobs/memory-job-store.js +4 -15
  484. package/dist/runtime/subsystems/jobs/memory-job-store.js.map +1 -1
  485. package/dist/runtime/subsystems/jobs/pool-config.loader.js +9 -124
  486. package/dist/runtime/subsystems/jobs/pool-config.loader.js.map +1 -1
  487. package/dist/runtime/subsystems/observability/index.js +21 -310
  488. package/dist/runtime/subsystems/observability/index.js.map +1 -1
  489. package/dist/runtime/subsystems/observability/observability-errors.js +4 -9
  490. package/dist/runtime/subsystems/observability/observability-errors.js.map +1 -1
  491. package/dist/runtime/subsystems/observability/observability.module.js +11 -300
  492. package/dist/runtime/subsystems/observability/observability.module.js.map +1 -1
  493. package/dist/runtime/subsystems/observability/observability.service.js +9 -197
  494. package/dist/runtime/subsystems/observability/observability.service.js.map +1 -1
  495. package/dist/runtime/subsystems/observability/observability.tokens.js +5 -3
  496. package/dist/runtime/subsystems/observability/observability.tokens.js.map +1 -1
  497. package/dist/runtime/subsystems/observability/reporters/bridge-metrics.reporter.js +4 -84
  498. package/dist/runtime/subsystems/observability/reporters/bridge-metrics.reporter.js.map +1 -1
  499. package/dist/runtime/subsystems/observability/reporters/index.js +5 -84
  500. package/dist/runtime/subsystems/observability/reporters/index.js.map +1 -1
  501. package/dist/runtime/subsystems/storage/index.js +15 -200
  502. package/dist/runtime/subsystems/storage/index.js.map +1 -1
  503. package/dist/runtime/subsystems/storage/storage.local-backend.js +4 -103
  504. package/dist/runtime/subsystems/storage/storage.local-backend.js.map +1 -1
  505. package/dist/runtime/subsystems/storage/storage.memory-backend.js +5 -68
  506. package/dist/runtime/subsystems/storage/storage.memory-backend.js.map +1 -1
  507. package/dist/runtime/subsystems/storage/storage.module.js +8 -200
  508. package/dist/runtime/subsystems/storage/storage.module.js.map +1 -1
  509. package/dist/runtime/subsystems/storage/storage.tokens.js +5 -6
  510. package/dist/runtime/subsystems/storage/storage.tokens.js.map +1 -1
  511. package/dist/runtime/subsystems/storage/storage.utils.js +4 -14
  512. package/dist/runtime/subsystems/storage/storage.utils.js.map +1 -1
  513. package/dist/runtime/subsystems/token-key.js +5 -3
  514. package/dist/runtime/subsystems/token-key.js.map +1 -1
  515. package/dist/src/cli/index.js +637 -5454
  516. package/dist/src/cli/index.js.map +1 -1
  517. package/dist/src/index.js +68 -4170
  518. package/dist/src/index.js.map +1 -1
  519. package/package.json +1 -1
  520. package/runtime/subsystems/bridge/bridge-outbox-drain-hook.ts +44 -21
  521. package/runtime/subsystems/jobs/job-worker.ts +17 -11
@@ -1,617 +1,18 @@
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/jobs/job-worker.ts
14
- import { Inject, Injectable, Logger } from "@nestjs/common";
15
- import { and, asc, desc, eq, inArray, lt, lte, sql as sql2 } from "drizzle-orm";
16
-
17
- // runtime/subsystems/token-key.ts
18
- var PKG = "@pattern-stack/codegen";
19
- var tokenKey = (area, name) => `${PKG}.${area}.${name}`;
20
-
21
- // runtime/constants/tokens.ts
22
- var DRIZZLE = "DRIZZLE";
23
-
24
- // runtime/subsystems/jobs/job-orchestration.schema.ts
25
1
  import {
26
- pgEnum,
27
- pgTable,
28
- uuid,
29
- text,
30
- jsonb,
31
- integer,
32
- timestamp,
33
- index,
34
- uniqueIndex
35
- } from "drizzle-orm/pg-core";
36
- import { sql } from "drizzle-orm";
37
- var jobRunStatusEnum = pgEnum("job_run_status", [
38
- "pending",
39
- "running",
40
- "waiting",
41
- "completed",
42
- "failed",
43
- "timed_out",
44
- "canceled"
45
- ]);
46
- var jobStepKindEnum = pgEnum("job_step_kind", ["task"]);
47
- var jobStepStatusEnum = pgEnum("job_step_status", [
48
- "pending",
49
- "running",
50
- "completed",
51
- "failed",
52
- "skipped"
53
- ]);
54
- var collisionModeEnum = pgEnum("job_collision_mode", [
55
- "queue",
56
- "reject",
57
- "replace"
58
- ]);
59
- var replayFromEnum = pgEnum("job_replay_from", [
60
- "scratch",
61
- "last_step",
62
- "last_checkpoint"
63
- ]);
64
- var parentClosePolicyEnum = pgEnum("job_parent_close_policy", [
65
- "terminate",
66
- "cancel",
67
- "abandon"
68
- ]);
69
- var waitKindEnum = pgEnum("job_wait_kind", ["signal"]);
70
- var triggerSourceEnum = pgEnum("job_trigger_source", [
71
- "manual",
72
- "schedule",
73
- "event",
74
- "parent"
75
- ]);
76
- var jobs = pgTable("job", {
77
- type: text("type").primaryKey(),
78
- version: integer("version").notNull().default(1),
79
- pool: text("pool").notNull(),
80
- scopeEntityType: text("scope_entity_type"),
81
- retryPolicy: jsonb("retry_policy").notNull().$type(),
82
- timeoutMs: integer("timeout_ms"),
83
- concurrencyKeyTemplate: text("concurrency_key_template"),
84
- collisionMode: collisionModeEnum("collision_mode").notNull().default("queue"),
85
- dedupeKeyTemplate: text("dedupe_key_template"),
86
- dedupeWindowMs: integer("dedupe_window_ms"),
87
- priorityDefault: integer("priority_default").notNull().default(0),
88
- replayFrom: replayFromEnum("replay_from").notNull().default("last_checkpoint"),
89
- createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
90
- updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow()
91
- });
92
- var jobRuns = pgTable(
93
- "job_run",
94
- {
95
- id: uuid("id").primaryKey().defaultRandom(),
96
- jobType: text("job_type").notNull().references(() => jobs.type),
97
- jobVersion: integer("job_version").notNull(),
98
- parentRunId: uuid("parent_run_id").references(() => jobRuns.id),
99
- /**
100
- * Service generates `id` client-side via randomUUID() and sets
101
- * root_run_id = id for root runs (single INSERT, no self-FK race).
102
- */
103
- rootRunId: uuid("root_run_id").notNull(),
104
- parentClosePolicy: parentClosePolicyEnum("parent_close_policy").notNull().default("terminate"),
105
- scopeEntityType: text("scope_entity_type"),
106
- scopeEntityId: text("scope_entity_id"),
107
- tenantId: text("tenant_id"),
108
- tags: jsonb("tags").notNull().default({}).$type(),
109
- pool: text("pool").notNull(),
110
- priority: integer("priority").notNull().default(0),
111
- concurrencyKey: text("concurrency_key"),
112
- dedupeKey: text("dedupe_key"),
113
- status: jobRunStatusEnum("status").notNull().default("pending"),
114
- input: jsonb("input").notNull().$type(),
115
- output: jsonb("output").$type(),
116
- error: jsonb("error").$type(),
117
- triggerSource: triggerSourceEnum("trigger_source").notNull(),
118
- triggerRef: text("trigger_ref"),
119
- runAt: timestamp("run_at", { withTimezone: true }).notNull().defaultNow(),
120
- startedAt: timestamp("started_at", { withTimezone: true }),
121
- finishedAt: timestamp("finished_at", { withTimezone: true }),
122
- claimedAt: timestamp("claimed_at", { withTimezone: true }),
123
- attempts: integer("attempts").notNull().default(0),
124
- // Phase 3 placeholder — see ADR-025
125
- waitKind: waitKindEnum("wait_kind"),
126
- // Phase 3 placeholder — see ADR-025
127
- resumeToken: text("resume_token"),
128
- // Phase 3 placeholder — see ADR-025
129
- waitDeadline: timestamp("wait_deadline", { withTimezone: true }),
130
- createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
131
- updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow()
132
- },
133
- (t) => ({
134
- /** Claim query: ORDER BY priority DESC, run_at ASC. */
135
- idxJobRunClaim: index("idx_job_run_claim").on(t.status, t.pool, t.runAt),
136
- /** Tree traversal / cascade cancel. */
137
- idxJobRunRoot: index("idx_job_run_root").on(t.rootRunId),
138
- /** listForScope query. */
139
- idxJobRunScope: index("idx_job_run_scope").on(t.scopeEntityType, t.scopeEntityId),
140
- /** Idempotency collapse — partial index. */
141
- idxJobRunDedupe: index("idx_job_run_dedupe").on(t.jobType, t.dedupeKey).where(sql`${t.dedupeKey} IS NOT NULL`),
142
- /** Collision check — partial index. */
143
- idxJobRunConcurrency: index("idx_job_run_concurrency").on(t.concurrencyKey).where(
144
- sql`${t.concurrencyKey} IS NOT NULL AND ${t.status} IN ('pending','running')`
145
- )
146
- })
147
- );
148
- var jobSteps = pgTable(
149
- "job_step",
150
- {
151
- id: uuid("id").primaryKey().defaultRandom(),
152
- jobRunId: uuid("job_run_id").notNull().references(() => jobRuns.id),
153
- stepId: text("step_id").notNull(),
154
- kind: jobStepKindEnum("kind").notNull().default("task"),
155
- /**
156
- * Monotonic within run. integer (max ~2B per run) is sufficient —
157
- * downgraded from ADR-022's bigint; revisit only if a single run
158
- * ever exceeds 2 billion steps.
159
- */
160
- seq: integer("seq").notNull(),
161
- status: jobStepStatusEnum("status").notNull().default("pending"),
162
- input: jsonb("input").$type(),
163
- /** Memoised on success for replay. */
164
- output: jsonb("output").$type(),
165
- error: jsonb("error").$type(),
166
- attempts: integer("attempts").notNull().default(0),
167
- startedAt: timestamp("started_at", { withTimezone: true }),
168
- finishedAt: timestamp("finished_at", { withTimezone: true })
169
- },
170
- (t) => ({
171
- /** No duplicate step IDs per run. */
172
- idxJobStepRunStep: uniqueIndex("idx_job_step_run_step").on(t.jobRunId, t.stepId),
173
- /** Ordered timeline reads. */
174
- idxJobStepTimeline: index("idx_job_step_timeline").on(t.jobRunId, t.seq)
175
- })
176
- );
177
-
178
- // runtime/subsystems/jobs/jobs-domain.tokens.ts
179
- var JOB_ORCHESTRATOR = Symbol.for(tokenKey("jobs", "orchestrator"));
180
- var JOB_RUN_SERVICE = Symbol.for(tokenKey("jobs", "run-service"));
181
- var JOB_STEP_SERVICE = Symbol.for(tokenKey("jobs", "step-service"));
182
- var JOBS_MULTI_TENANT = Symbol.for(tokenKey("jobs", "multi-tenant"));
183
-
184
- // runtime/subsystems/jobs/job-handler.base.ts
185
- var JOB_HANDLER_REGISTRY = /* @__PURE__ */ new Map();
186
- var JOB_HANDLER_METADATA_KEY = Symbol.for(tokenKey("jobs", "handler-metadata"));
187
- var HandlerRegistry;
188
- ((HandlerRegistry2) => {
189
- function getAll() {
190
- return Array.from(JOB_HANDLER_REGISTRY.values());
191
- }
192
- HandlerRegistry2.getAll = getAll;
193
- function get(type) {
194
- return JOB_HANDLER_REGISTRY.get(type);
195
- }
196
- HandlerRegistry2.get = get;
197
- })(HandlerRegistry || (HandlerRegistry = {}));
198
-
199
- // runtime/subsystems/jobs/job-worker.ts
200
- var JOB_WORKER_OPTIONS = Symbol.for(tokenKey("jobs", "worker-options"));
201
- var DEFAULT_POLL_INTERVAL_MS = 1e3;
202
- var DEFAULT_STALE_SWEEPER_INTERVAL_MS = 6e4;
203
- var DEFAULT_STALE_THRESHOLD_MS = 5 * 6e4;
204
- var DEFAULT_SHUTDOWN_TIMEOUT_MS = 3e4;
205
- var TERMINAL_STATUSES = [
206
- "completed",
207
- "failed",
208
- "timed_out",
209
- "canceled"
210
- ];
211
- function computeBackoff(policy, attempts) {
212
- const base = Math.max(policy.baseMs, 0);
213
- if (policy.backoff === "fixed") {
214
- return base;
215
- }
216
- const exponent = Math.max(attempts - 1, 0);
217
- if (exponent >= 53) return Number.MAX_SAFE_INTEGER;
218
- const raw = base * Math.pow(2, exponent);
219
- if (!Number.isFinite(raw) || raw >= Number.MAX_SAFE_INTEGER) {
220
- return Number.MAX_SAFE_INTEGER;
221
- }
222
- return raw;
223
- }
224
- function classifyError(err, policy, currentAttempts) {
225
- if (!policy) return "fail";
226
- const errObj = err;
227
- const name = errObj?.name;
228
- const code = errObj?.code;
229
- const nonRetryable = policy.nonRetryableErrors ?? [];
230
- if (nonRetryable.some((n) => n === name || n === code)) return "fail";
231
- if (currentAttempts + 1 >= policy.attempts) return "fail";
232
- return "retry";
233
- }
234
- function buildClaimQuery(db, pool) {
235
- return db.select({ id: jobRuns.id }).from(jobRuns).where(
236
- and(
237
- eq(jobRuns.status, "pending"),
238
- eq(jobRuns.pool, pool),
239
- lte(jobRuns.runAt, /* @__PURE__ */ new Date())
240
- )
241
- ).orderBy(desc(jobRuns.priority), asc(jobRuns.runAt)).limit(1).for("update", { skipLocked: true });
242
- }
243
- function buildStaleSweepQuery(db, staleThresholdMs) {
244
- const threshold = new Date(Date.now() - staleThresholdMs);
245
- return db.select({ id: jobRuns.id }).from(jobRuns).where(
246
- and(
247
- eq(jobRuns.status, "running"),
248
- lt(jobRuns.claimedAt, threshold)
249
- )
250
- ).for("update", { skipLocked: true });
251
- }
252
- function serialiseError(err, attempt, retryable) {
253
- const e = err;
254
- return {
255
- message: e?.message ?? String(err),
256
- stack: e?.stack,
257
- retryable,
258
- attempt
259
- };
260
- }
261
- var JobWorker = class {
262
- constructor(db, orchestrator, runService, stepService, options, moduleRef) {
263
- this.db = db;
264
- this.orchestrator = orchestrator;
265
- this.runService = runService;
266
- this.stepService = stepService;
267
- this.options = options;
268
- this.moduleRef = moduleRef;
269
- this.pollIntervalMs = options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;
270
- this.staleSweeperIntervalMs = options.staleSweeperIntervalMs ?? DEFAULT_STALE_SWEEPER_INTERVAL_MS;
271
- this.staleThresholdMs = options.staleThresholdMs ?? DEFAULT_STALE_THRESHOLD_MS;
272
- this.shutdownTimeoutMs = options.shutdownTimeoutMs ?? DEFAULT_SHUTDOWN_TIMEOUT_MS;
273
- this.sigtermHandler = () => {
274
- if (this.sigtermHandled) return;
275
- this.sigtermHandled = true;
276
- void this.onModuleDestroy();
277
- };
278
- void this.runService;
279
- }
280
- db;
281
- orchestrator;
282
- runService;
283
- stepService;
284
- options;
285
- moduleRef;
286
- logger = new Logger(JobWorker.name);
287
- shuttingDown = false;
288
- inFlight = /* @__PURE__ */ new Set();
289
- pollTimer = null;
290
- sweeperTimer = null;
291
- sigtermHandled = false;
292
- sigtermHandler;
293
- pollIntervalMs;
294
- staleSweeperIntervalMs;
295
- staleThresholdMs;
296
- shutdownTimeoutMs;
297
- // ============================================================================
298
- // Lifecycle
299
- // ============================================================================
300
- onModuleInit() {
301
- this.pollTimer = setInterval(() => {
302
- void this.pollAndProcess();
303
- }, this.pollIntervalMs);
304
- this.sweeperTimer = setInterval(() => {
305
- void this.sweepStaleClaims();
306
- }, this.staleSweeperIntervalMs);
307
- process.on("SIGTERM", this.sigtermHandler);
308
- }
309
- async onModuleDestroy() {
310
- if (this.shuttingDown) {
311
- await this.drainInFlight();
312
- return;
313
- }
314
- this.shuttingDown = true;
315
- if (this.pollTimer) {
316
- clearInterval(this.pollTimer);
317
- this.pollTimer = null;
318
- }
319
- if (this.sweeperTimer) {
320
- clearInterval(this.sweeperTimer);
321
- this.sweeperTimer = null;
322
- }
323
- process.removeListener("SIGTERM", this.sigtermHandler);
324
- await this.drainInFlight();
325
- try {
326
- await this.db.update(jobRuns).set({ status: "pending", claimedAt: null, startedAt: null }).where(
327
- and(eq(jobRuns.status, "running"), eq(jobRuns.pool, this.options.pool))
328
- );
329
- } catch (err) {
330
- this.logger.error(`shutdown reset failed: ${err.message}`);
331
- }
332
- }
333
- async drainInFlight() {
334
- if (this.inFlight.size === 0) return;
335
- const timeout = new Promise(
336
- (resolve) => setTimeout(resolve, this.shutdownTimeoutMs)
337
- );
338
- await Promise.race([
339
- Promise.allSettled([...this.inFlight]).then(() => void 0),
340
- timeout
341
- ]);
342
- }
343
- // ============================================================================
344
- // Poll loop
345
- // ============================================================================
346
- async pollAndProcess() {
347
- if (this.shuttingDown) return;
348
- if (this.inFlight.size >= this.options.concurrency) return;
349
- let claimed;
350
- try {
351
- claimed = await this.claimNext(this.options.pool);
352
- } catch (err) {
353
- this.logger.error(`claimNext failed: ${err.message}`);
354
- return;
355
- }
356
- if (!claimed) return;
357
- const run = claimed;
358
- const promise = this.processRun(run).catch((err) => {
359
- this.logger.error(
360
- `processRun(${run.id}) unhandled: ${err.message}`
361
- );
362
- });
363
- this.inFlight.add(promise);
364
- promise.finally(() => {
365
- this.inFlight.delete(promise);
366
- });
367
- }
368
- /**
369
- * Claim the next runnable row from the pool. Transaction ensures the
370
- * select-candidate + update-to-running pair is atomic; FOR UPDATE SKIP
371
- * LOCKED lets multiple workers share the table without serialising.
372
- */
373
- async claimNext(pool) {
374
- return this.db.transaction(async (tx) => {
375
- const candidates = await tx.select({ id: jobRuns.id }).from(jobRuns).where(
376
- and(
377
- eq(jobRuns.status, "pending"),
378
- eq(jobRuns.pool, pool),
379
- lte(jobRuns.runAt, /* @__PURE__ */ new Date())
380
- )
381
- ).orderBy(desc(jobRuns.priority), asc(jobRuns.runAt)).limit(1).for("update", { skipLocked: true });
382
- const candidate = candidates[0];
383
- if (!candidate) return null;
384
- const [claimed] = await tx.update(jobRuns).set({
385
- status: "running",
386
- claimedAt: /* @__PURE__ */ new Date(),
387
- startedAt: /* @__PURE__ */ new Date(),
388
- updatedAt: /* @__PURE__ */ new Date()
389
- }).where(eq(jobRuns.id, candidate.id)).returning();
390
- return claimed ?? null;
391
- });
392
- }
393
- // ============================================================================
394
- // Stale claim sweeper
395
- // ============================================================================
396
- /**
397
- * Release rows whose `claimed_at` is older than the threshold. Safe to
398
- * run concurrently across workers — the two-phase tx (select-for-update
399
- * then update) guarantees each stranded row is only reset once.
400
- */
401
- async sweepStaleClaims() {
402
- if (this.shuttingDown) return;
403
- try {
404
- await this.db.transaction(async (tx) => {
405
- const threshold = new Date(Date.now() - this.staleThresholdMs);
406
- const stale = await tx.select({ id: jobRuns.id }).from(jobRuns).where(
407
- and(eq(jobRuns.status, "running"), lt(jobRuns.claimedAt, threshold))
408
- ).for("update", { skipLocked: true });
409
- if (stale.length === 0) return;
410
- const ids = stale.map((r) => r.id);
411
- await tx.update(jobRuns).set({ status: "pending", claimedAt: null, startedAt: null }).where(inArray(jobRuns.id, ids));
412
- for (const id of ids) {
413
- this.logger.warn(`Recovered stale claim on run ${id}`);
414
- }
415
- });
416
- } catch (err) {
417
- this.logger.error(`sweepStaleClaims failed: ${err.message}`);
418
- }
419
- }
420
- // ============================================================================
421
- // processRun
422
- // ============================================================================
423
- async processRun(claimed) {
424
- const registryEntry = JOB_HANDLER_REGISTRY.get(claimed.jobType);
425
- if (!registryEntry) {
426
- this.logger.error(
427
- `No handler registered for jobType='${claimed.jobType}' (run ${claimed.id})`
428
- );
429
- await this.markFailed(
430
- claimed,
431
- new Error(`No handler registered for jobType='${claimed.jobType}'`),
432
- /*finalAttempts*/
433
- (claimed.attempts ?? 0) + 1
434
- );
435
- return;
436
- }
437
- if (claimed.concurrencyKey) {
438
- const inflight = await this.db.select({ id: jobRuns.id }).from(jobRuns).where(
439
- and(
440
- eq(jobRuns.concurrencyKey, claimed.concurrencyKey),
441
- eq(jobRuns.status, "running")
442
- )
443
- );
444
- const other = inflight.find((r) => r.id !== claimed.id);
445
- if (other) {
446
- await this.db.update(jobRuns).set({
447
- status: "pending",
448
- claimedAt: null,
449
- startedAt: null,
450
- updatedAt: /* @__PURE__ */ new Date()
451
- }).where(eq(jobRuns.id, claimed.id));
452
- return;
453
- }
454
- }
455
- const meta = registryEntry.meta;
456
- const HandlerClass = registryEntry.handlerClass;
457
- const handler = this.moduleRef.get(
458
- HandlerClass,
459
- { strict: false }
460
- );
461
- const ctx = {
462
- input: claimed.input,
463
- run: claimed,
464
- step: this.makeStepFn(claimed),
465
- spawnChild: this.makeSpawnFn(claimed),
466
- logger: new Logger(`JobRun:${claimed.id}`)
467
- };
468
- const attemptsBefore = claimed.attempts ?? 0;
469
- try {
470
- const output = await handler.run(ctx);
471
- await this.db.update(jobRuns).set({
472
- status: "completed",
473
- output: output ?? {},
474
- finishedAt: /* @__PURE__ */ new Date(),
475
- updatedAt: /* @__PURE__ */ new Date(),
476
- attempts: attemptsBefore + 1
477
- }).where(eq(jobRuns.id, claimed.id));
478
- } catch (err) {
479
- const policy = meta.retry;
480
- const decision = classifyError(err, policy, attemptsBefore);
481
- const nextAttempts = attemptsBefore + 1;
482
- if (decision === "retry" && policy) {
483
- const delay = computeBackoff(policy, nextAttempts);
484
- await this.db.update(jobRuns).set({
485
- status: "pending",
486
- attempts: nextAttempts,
487
- runAt: new Date(Date.now() + delay),
488
- startedAt: null,
489
- claimedAt: null,
490
- error: serialiseError(err, nextAttempts, true),
491
- updatedAt: /* @__PURE__ */ new Date()
492
- }).where(eq(jobRuns.id, claimed.id));
493
- } else {
494
- await this.markFailed(claimed, err, nextAttempts);
495
- }
496
- }
497
- }
498
- async markFailed(claimed, err, finalAttempts) {
499
- await this.db.update(jobRuns).set({
500
- status: "failed",
501
- attempts: finalAttempts,
502
- finishedAt: /* @__PURE__ */ new Date(),
503
- error: serialiseError(err, finalAttempts, false),
504
- updatedAt: /* @__PURE__ */ new Date()
505
- }).where(eq(jobRuns.id, claimed.id));
506
- if (claimed.parentClosePolicy === "terminate") {
507
- try {
508
- await this.orchestrator.cancel(claimed.id, {
509
- cascade: true,
510
- reason: "parent-failed",
511
- tenantId: claimed.tenantId
512
- });
513
- } catch (cascadeErr) {
514
- this.logger.warn(
515
- `cascade on failed run ${claimed.id}: ${cascadeErr.message}`
516
- );
517
- }
518
- }
519
- }
520
- // ============================================================================
521
- // ctx.step / ctx.spawnChild builders
522
- // ============================================================================
523
- makeStepFn(run) {
524
- return async (stepId, fn, _opts) => {
525
- void _opts;
526
- const existing = await this.stepService.findStep(run.id, stepId);
527
- if (existing?.status === "completed") {
528
- return existing.output;
529
- }
530
- const seq = await this.nextStepSeq(run.id);
531
- const startedAt = /* @__PURE__ */ new Date();
532
- const nextAttempts = (existing?.attempts ?? 0) + 1;
533
- await this.stepService.recordStep({
534
- jobRunId: run.id,
535
- stepId,
536
- kind: "task",
537
- seq,
538
- status: "running",
539
- startedAt,
540
- attempts: nextAttempts
541
- });
542
- try {
543
- const output = await fn();
544
- await this.stepService.recordStep({
545
- jobRunId: run.id,
546
- stepId,
547
- kind: "task",
548
- seq,
549
- status: "completed",
550
- output,
551
- finishedAt: /* @__PURE__ */ new Date(),
552
- attempts: nextAttempts
553
- });
554
- return output;
555
- } catch (err) {
556
- await this.stepService.recordStep({
557
- jobRunId: run.id,
558
- stepId,
559
- kind: "task",
560
- seq,
561
- status: "failed",
562
- error: serialiseError(err, nextAttempts, false),
563
- finishedAt: /* @__PURE__ */ new Date(),
564
- attempts: nextAttempts
565
- });
566
- throw err;
567
- }
568
- };
569
- }
570
- makeSpawnFn(run) {
571
- return async (type, input, opts) => {
572
- return this.orchestrator.start(type, input, {
573
- parentRunId: run.id,
574
- parentClosePolicy: opts?.closePolicy,
575
- runAt: opts?.runAt,
576
- priority: opts?.priority,
577
- tags: opts?.tags,
578
- triggerSource: "parent",
579
- triggerRef: run.id
580
- });
581
- };
582
- }
583
- /**
584
- * Allocate the next `seq` for a given run. SELECT-max approach — runs
585
- * typically have <100 steps so the scan is cheap, and correctness across
586
- * retries is more important than the microseconds saved by an in-memory
587
- * counter (which would drift if the worker crashes mid-run and another
588
- * worker resumes via stale-claim sweep).
589
- */
590
- async nextStepSeq(runId) {
591
- const [row] = await this.db.execute(
592
- sql2`SELECT COALESCE(MAX(seq), 0) + 1 AS next FROM job_step WHERE job_run_id = ${runId}`
593
- );
594
- const maybeRows = row?.rows;
595
- if (Array.isArray(maybeRows) && maybeRows.length > 0) {
596
- return Number(maybeRows[0].next ?? 1);
597
- }
598
- if (row && typeof row.next !== "undefined") {
599
- return Number(row.next);
600
- }
601
- return 1;
602
- }
603
- // ============================================================================
604
- // (suppress unused-import noise)
605
- // ============================================================================
606
- };
607
- JobWorker = __decorateClass([
608
- Injectable(),
609
- __decorateParam(0, Inject(DRIZZLE)),
610
- __decorateParam(1, Inject(JOB_ORCHESTRATOR)),
611
- __decorateParam(2, Inject(JOB_RUN_SERVICE)),
612
- __decorateParam(3, Inject(JOB_STEP_SERVICE)),
613
- __decorateParam(4, Inject(JOB_WORKER_OPTIONS))
614
- ], JobWorker);
2
+ JOB_WORKER_OPTIONS,
3
+ JobWorker,
4
+ TERMINAL_STATUSES,
5
+ buildClaimQuery,
6
+ buildStaleSweepQuery,
7
+ classifyError,
8
+ computeBackoff
9
+ } from "../../../chunk-RC23QROE.js";
10
+ import "../../../chunk-CO6LUM72.js";
11
+ import "../../../chunk-BIO6F7YI.js";
12
+ import "../../../chunk-OKXZ63IA.js";
13
+ import "../../../chunk-GYGNEQSC.js";
14
+ import "../../../chunk-U64T4YZE.js";
15
+ import "../../../chunk-2E224ZSN.js";
615
16
  export {
616
17
  JOB_WORKER_OPTIONS,
617
18
  JobWorker,