@open-mercato/core 0.4.2-canary-f821f89ef6 → 0.4.2-canary-3b5064ce72

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 (632) hide show
  1. package/dist/generated/entities/notification/index.js +57 -0
  2. package/dist/generated/entities/notification/index.js.map +7 -0
  3. package/dist/generated/entities.ids.generated.js +5 -2
  4. package/dist/generated/entities.ids.generated.js.map +2 -2
  5. package/dist/generated/entity-fields-registry.js +2 -2
  6. package/dist/generated/entity-fields-registry.js.map +2 -2
  7. package/dist/modules/api_docs/frontend/docs/api/page.js +3 -2
  8. package/dist/modules/api_docs/frontend/docs/api/page.js.map +2 -2
  9. package/dist/modules/api_keys/backend/api-keys/page.js +1 -1
  10. package/dist/modules/api_keys/backend/api-keys/page.js.map +2 -2
  11. package/dist/modules/attachments/components/AttachmentLibrary.js +4 -0
  12. package/dist/modules/attachments/components/AttachmentLibrary.js.map +2 -2
  13. package/dist/modules/attachments/components/AttachmentPartitionSettings.js +2 -0
  14. package/dist/modules/attachments/components/AttachmentPartitionSettings.js.map +2 -2
  15. package/dist/modules/auth/api/admin/nav.js +4 -3
  16. package/dist/modules/auth/api/admin/nav.js.map +2 -2
  17. package/dist/modules/auth/api/login.js +25 -6
  18. package/dist/modules/auth/api/login.js.map +2 -2
  19. package/dist/modules/auth/api/profile/route.js +157 -0
  20. package/dist/modules/auth/api/profile/route.js.map +7 -0
  21. package/dist/modules/auth/api/reset/confirm.js +25 -2
  22. package/dist/modules/auth/api/reset/confirm.js.map +2 -2
  23. package/dist/modules/auth/api/reset.js +23 -0
  24. package/dist/modules/auth/api/reset.js.map +2 -2
  25. package/dist/modules/auth/api/sidebar/preferences/route.js +14 -9
  26. package/dist/modules/auth/api/sidebar/preferences/route.js.map +2 -2
  27. package/dist/modules/auth/api/users/route.js +4 -2
  28. package/dist/modules/auth/api/users/route.js.map +2 -2
  29. package/dist/modules/auth/backend/auth/profile/page.js +141 -0
  30. package/dist/modules/auth/backend/auth/profile/page.js.map +7 -0
  31. package/dist/modules/auth/backend/auth/profile/page.meta.js +13 -0
  32. package/dist/modules/auth/backend/auth/profile/page.meta.js.map +7 -0
  33. package/dist/modules/auth/backend/roles/[id]/edit/page.js +4 -1
  34. package/dist/modules/auth/backend/roles/[id]/edit/page.js.map +2 -2
  35. package/dist/modules/auth/backend/roles/page.js +3 -3
  36. package/dist/modules/auth/backend/roles/page.js.map +2 -2
  37. package/dist/modules/auth/backend/users/[id]/edit/page.js +18 -3
  38. package/dist/modules/auth/backend/users/[id]/edit/page.js.map +2 -2
  39. package/dist/modules/auth/backend/users/create/page.js +15 -2
  40. package/dist/modules/auth/backend/users/create/page.js.map +2 -2
  41. package/dist/modules/auth/backend/users/page.js +3 -3
  42. package/dist/modules/auth/backend/users/page.js.map +2 -2
  43. package/dist/modules/auth/cli.js +25 -11
  44. package/dist/modules/auth/cli.js.map +2 -2
  45. package/dist/modules/auth/commands/users.js +59 -2
  46. package/dist/modules/auth/commands/users.js.map +2 -2
  47. package/dist/modules/auth/data/validators.js +6 -3
  48. package/dist/modules/auth/data/validators.js.map +2 -2
  49. package/dist/modules/auth/frontend/login.js +112 -3
  50. package/dist/modules/auth/frontend/login.js.map +2 -2
  51. package/dist/modules/auth/frontend/reset/[token]/page.js +20 -10
  52. package/dist/modules/auth/frontend/reset/[token]/page.js.map +2 -2
  53. package/dist/modules/auth/lib/setup-app.js +42 -8
  54. package/dist/modules/auth/lib/setup-app.js.map +2 -2
  55. package/dist/modules/auth/notifications.js +112 -0
  56. package/dist/modules/auth/notifications.js.map +7 -0
  57. package/dist/modules/auth/services/authService.js +24 -3
  58. package/dist/modules/auth/services/authService.js.map +2 -2
  59. package/dist/modules/business_rules/api/execute/route.js +7 -1
  60. package/dist/modules/business_rules/api/execute/route.js.map +2 -2
  61. package/dist/modules/business_rules/backend/rules/page.js +4 -0
  62. package/dist/modules/business_rules/backend/rules/page.js.map +2 -2
  63. package/dist/modules/business_rules/backend/sets/page.js +3 -0
  64. package/dist/modules/business_rules/backend/sets/page.js.map +2 -2
  65. package/dist/modules/business_rules/cli.js +2 -1
  66. package/dist/modules/business_rules/cli.js.map +2 -2
  67. package/dist/modules/business_rules/data/validators.js +0 -34
  68. package/dist/modules/business_rules/data/validators.js.map +2 -2
  69. package/dist/modules/business_rules/index.js +1 -21
  70. package/dist/modules/business_rules/index.js.map +2 -2
  71. package/dist/modules/business_rules/lib/rule-engine.js +34 -185
  72. package/dist/modules/business_rules/lib/rule-engine.js.map +2 -2
  73. package/dist/modules/business_rules/notifications.js +28 -0
  74. package/dist/modules/business_rules/notifications.js.map +7 -0
  75. package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js +37 -0
  76. package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js.map +7 -0
  77. package/dist/modules/catalog/components/PriceKindSettings.js +2 -0
  78. package/dist/modules/catalog/components/PriceKindSettings.js.map +2 -2
  79. package/dist/modules/catalog/components/categories/CategoriesDataTable.js +2 -2
  80. package/dist/modules/catalog/components/categories/CategoriesDataTable.js.map +2 -2
  81. package/dist/modules/catalog/components/products/ProductsDataTable.js +2 -0
  82. package/dist/modules/catalog/components/products/ProductsDataTable.js.map +2 -2
  83. package/dist/modules/catalog/notifications.js +28 -0
  84. package/dist/modules/catalog/notifications.js.map +7 -0
  85. package/dist/modules/catalog/subscribers/low-stock-notification.js +38 -0
  86. package/dist/modules/catalog/subscribers/low-stock-notification.js.map +7 -0
  87. package/dist/modules/configs/cli.js +6 -0
  88. package/dist/modules/configs/cli.js.map +2 -2
  89. package/dist/modules/configs/components/CachePanel.js +4 -4
  90. package/dist/modules/configs/components/CachePanel.js.map +2 -2
  91. package/dist/modules/configs/lib/system-status.js +48 -1
  92. package/dist/modules/configs/lib/system-status.js.map +2 -2
  93. package/dist/modules/configs/lib/upgrade-actions.js +18 -0
  94. package/dist/modules/configs/lib/upgrade-actions.js.map +2 -2
  95. package/dist/modules/currencies/backend/currencies/page.js +3 -0
  96. package/dist/modules/currencies/backend/currencies/page.js.map +2 -2
  97. package/dist/modules/currencies/backend/exchange-rates/page.js +2 -0
  98. package/dist/modules/currencies/backend/exchange-rates/page.js.map +2 -2
  99. package/dist/modules/customers/backend/customers/companies/page.js +3 -0
  100. package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
  101. package/dist/modules/customers/backend/customers/deals/page.js +3 -0
  102. package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
  103. package/dist/modules/customers/backend/customers/people/page.js +3 -0
  104. package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
  105. package/dist/modules/customers/commands/deals.js +31 -0
  106. package/dist/modules/customers/commands/deals.js.map +2 -2
  107. package/dist/modules/customers/components/CustomerTodosTable.js +1 -0
  108. package/dist/modules/customers/components/CustomerTodosTable.js.map +2 -2
  109. package/dist/modules/customers/notifications.js +48 -0
  110. package/dist/modules/customers/notifications.js.map +7 -0
  111. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js +2 -1
  112. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js.map +2 -2
  113. package/dist/modules/customers/widgets/dashboard/new-customers/widget.js +2 -1
  114. package/dist/modules/customers/widgets/dashboard/new-customers/widget.js.map +2 -2
  115. package/dist/modules/customers/widgets/dashboard/new-deals/widget.js +2 -1
  116. package/dist/modules/customers/widgets/dashboard/new-deals/widget.js.map +2 -2
  117. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js +2 -1
  118. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js.map +2 -2
  119. package/dist/modules/dashboards/cli.js +44 -5
  120. package/dist/modules/dashboards/cli.js.map +2 -2
  121. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js +16 -11
  122. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js.map +3 -3
  123. package/dist/modules/dashboards/lib/role-widgets.js +58 -0
  124. package/dist/modules/dashboards/lib/role-widgets.js.map +7 -0
  125. package/dist/modules/dashboards/services/widgetDataService.js +139 -3
  126. package/dist/modules/dashboards/services/widgetDataService.js.map +2 -2
  127. package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js +2 -1
  128. package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js.map +2 -2
  129. package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js +2 -1
  130. package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js.map +2 -2
  131. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js +2 -1
  132. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js.map +2 -2
  133. package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js +2 -1
  134. package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js.map +2 -2
  135. package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js +2 -1
  136. package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js.map +2 -2
  137. package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js +2 -1
  138. package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js.map +2 -2
  139. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js +2 -1
  140. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js.map +2 -2
  141. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js +2 -1
  142. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js.map +2 -2
  143. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js +2 -1
  144. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js.map +2 -2
  145. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js +2 -1
  146. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js.map +2 -2
  147. package/dist/modules/dictionaries/components/DictionaryTable.js +2 -0
  148. package/dist/modules/dictionaries/components/DictionaryTable.js.map +2 -2
  149. package/dist/modules/directory/api/get/tenants/lookup.js +70 -0
  150. package/dist/modules/directory/api/get/tenants/lookup.js.map +7 -0
  151. package/dist/modules/directory/backend/directory/organizations/page.js +2 -2
  152. package/dist/modules/directory/backend/directory/organizations/page.js.map +2 -2
  153. package/dist/modules/directory/backend/directory/tenants/page.js +2 -2
  154. package/dist/modules/directory/backend/directory/tenants/page.js.map +2 -2
  155. package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js +2 -2
  156. package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js.map +2 -2
  157. package/dist/modules/entities/components/SystemEntitiesTable.js +1 -1
  158. package/dist/modules/entities/components/SystemEntitiesTable.js.map +2 -2
  159. package/dist/modules/entities/components/UserEntitiesTable.js +2 -2
  160. package/dist/modules/entities/components/UserEntitiesTable.js.map +2 -2
  161. package/dist/modules/feature_toggles/components/FeatureTogglesTable.js +3 -3
  162. package/dist/modules/feature_toggles/components/FeatureTogglesTable.js.map +2 -2
  163. package/dist/modules/feature_toggles/components/OverridesTable.js +1 -1
  164. package/dist/modules/feature_toggles/components/OverridesTable.js.map +2 -2
  165. package/dist/modules/notifications/acl.js +11 -0
  166. package/dist/modules/notifications/acl.js.map +7 -0
  167. package/dist/modules/notifications/api/[id]/action/route.js +74 -0
  168. package/dist/modules/notifications/api/[id]/action/route.js.map +7 -0
  169. package/dist/modules/notifications/api/[id]/dismiss/route.js +15 -0
  170. package/dist/modules/notifications/api/[id]/dismiss/route.js.map +7 -0
  171. package/dist/modules/notifications/api/[id]/read/route.js +15 -0
  172. package/dist/modules/notifications/api/[id]/read/route.js.map +7 -0
  173. package/dist/modules/notifications/api/[id]/restore/route.js +53 -0
  174. package/dist/modules/notifications/api/[id]/restore/route.js.map +7 -0
  175. package/dist/modules/notifications/api/batch/route.js +17 -0
  176. package/dist/modules/notifications/api/batch/route.js.map +7 -0
  177. package/dist/modules/notifications/api/feature/route.js +17 -0
  178. package/dist/modules/notifications/api/feature/route.js.map +7 -0
  179. package/dist/modules/notifications/api/mark-all-read/route.js +35 -0
  180. package/dist/modules/notifications/api/mark-all-read/route.js.map +7 -0
  181. package/dist/modules/notifications/api/openapi.js +76 -0
  182. package/dist/modules/notifications/api/openapi.js.map +7 -0
  183. package/dist/modules/notifications/api/role/route.js +17 -0
  184. package/dist/modules/notifications/api/role/route.js.map +7 -0
  185. package/dist/modules/notifications/api/route.js +85 -0
  186. package/dist/modules/notifications/api/route.js.map +7 -0
  187. package/dist/modules/notifications/api/settings/route.js +155 -0
  188. package/dist/modules/notifications/api/settings/route.js.map +7 -0
  189. package/dist/modules/notifications/api/unread-count/route.js +38 -0
  190. package/dist/modules/notifications/api/unread-count/route.js.map +7 -0
  191. package/dist/modules/notifications/backend/config/notifications/page.js +10 -0
  192. package/dist/modules/notifications/backend/config/notifications/page.js.map +7 -0
  193. package/dist/modules/notifications/backend/config/notifications/page.meta.js +24 -0
  194. package/dist/modules/notifications/backend/config/notifications/page.meta.js.map +7 -0
  195. package/dist/modules/notifications/cli.js +16 -0
  196. package/dist/modules/notifications/cli.js.map +7 -0
  197. package/dist/modules/notifications/data/entities.js +112 -0
  198. package/dist/modules/notifications/data/entities.js.map +7 -0
  199. package/dist/modules/notifications/data/validators.js +98 -0
  200. package/dist/modules/notifications/data/validators.js.map +7 -0
  201. package/dist/modules/notifications/di.js +13 -0
  202. package/dist/modules/notifications/di.js.map +7 -0
  203. package/dist/modules/notifications/emails/NotificationEmail.js +58 -0
  204. package/dist/modules/notifications/emails/NotificationEmail.js.map +7 -0
  205. package/dist/modules/notifications/frontend/NotificationInboxPageClient.js +44 -0
  206. package/dist/modules/notifications/frontend/NotificationInboxPageClient.js.map +7 -0
  207. package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js +220 -0
  208. package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js.map +7 -0
  209. package/dist/modules/notifications/index.js +14 -0
  210. package/dist/modules/notifications/index.js.map +7 -0
  211. package/dist/modules/notifications/lib/deliveryConfig.js +107 -0
  212. package/dist/modules/notifications/lib/deliveryConfig.js.map +7 -0
  213. package/dist/modules/notifications/lib/deliveryStrategies.js +14 -0
  214. package/dist/modules/notifications/lib/deliveryStrategies.js.map +7 -0
  215. package/dist/modules/notifications/lib/events.js +12 -0
  216. package/dist/modules/notifications/lib/events.js.map +7 -0
  217. package/dist/modules/notifications/lib/notificationBuilder.js +66 -0
  218. package/dist/modules/notifications/lib/notificationBuilder.js.map +7 -0
  219. package/dist/modules/notifications/lib/notificationFactory.js +54 -0
  220. package/dist/modules/notifications/lib/notificationFactory.js.map +7 -0
  221. package/dist/modules/notifications/lib/notificationMapper.js +34 -0
  222. package/dist/modules/notifications/lib/notificationMapper.js.map +7 -0
  223. package/dist/modules/notifications/lib/notificationRecipients.js +35 -0
  224. package/dist/modules/notifications/lib/notificationRecipients.js.map +7 -0
  225. package/dist/modules/notifications/lib/notificationService.js +279 -0
  226. package/dist/modules/notifications/lib/notificationService.js.map +7 -0
  227. package/dist/modules/notifications/lib/routeHelpers.js +101 -0
  228. package/dist/modules/notifications/lib/routeHelpers.js.map +7 -0
  229. package/dist/modules/notifications/lib/safeHref.js +24 -0
  230. package/dist/modules/notifications/lib/safeHref.js.map +7 -0
  231. package/dist/modules/notifications/migrations/Migration20260123000001.js +70 -0
  232. package/dist/modules/notifications/migrations/Migration20260123000001.js.map +7 -0
  233. package/dist/modules/notifications/migrations/Migration20260126150000.js +37 -0
  234. package/dist/modules/notifications/migrations/Migration20260126150000.js.map +7 -0
  235. package/dist/modules/notifications/migrations/Migration20260129082610.js +13 -0
  236. package/dist/modules/notifications/migrations/Migration20260129082610.js.map +7 -0
  237. package/dist/modules/notifications/subscribers/deliver-notification.js +165 -0
  238. package/dist/modules/notifications/subscribers/deliver-notification.js.map +7 -0
  239. package/dist/modules/notifications/workers/create-notification.worker.js +70 -0
  240. package/dist/modules/notifications/workers/create-notification.worker.js.map +7 -0
  241. package/dist/modules/planner/backend/planner/availability-rulesets/page.js +2 -2
  242. package/dist/modules/planner/backend/planner/availability-rulesets/page.js.map +2 -2
  243. package/dist/modules/query_index/cli.js +63 -7
  244. package/dist/modules/query_index/cli.js.map +2 -2
  245. package/dist/modules/query_index/components/QueryIndexesTable.js +7 -1
  246. package/dist/modules/query_index/components/QueryIndexesTable.js.map +2 -2
  247. package/dist/modules/resources/backend/resources/resource-types/page.js +2 -2
  248. package/dist/modules/resources/backend/resources/resource-types/page.js.map +2 -2
  249. package/dist/modules/resources/backend/resources/resources/page.js +2 -2
  250. package/dist/modules/resources/backend/resources/resources/page.js.map +2 -2
  251. package/dist/modules/sales/acl.js +0 -1
  252. package/dist/modules/sales/acl.js.map +2 -2
  253. package/dist/modules/sales/backend/sales/channels/offers/page.js +2 -0
  254. package/dist/modules/sales/backend/sales/channels/offers/page.js.map +2 -2
  255. package/dist/modules/sales/backend/sales/channels/page.js +2 -0
  256. package/dist/modules/sales/backend/sales/channels/page.js.map +2 -2
  257. package/dist/modules/sales/backend/sales/documents/[id]/page.js +0 -12
  258. package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
  259. package/dist/modules/sales/commands/documents.js +53 -62
  260. package/dist/modules/sales/commands/documents.js.map +2 -2
  261. package/dist/modules/sales/commands/payments.js +26 -0
  262. package/dist/modules/sales/commands/payments.js.map +2 -2
  263. package/dist/modules/sales/components/AdjustmentKindSettings.js +2 -2
  264. package/dist/modules/sales/components/AdjustmentKindSettings.js.map +2 -2
  265. package/dist/modules/sales/components/PaymentMethodsSettings.js +2 -2
  266. package/dist/modules/sales/components/PaymentMethodsSettings.js.map +2 -2
  267. package/dist/modules/sales/components/ShippingMethodsSettings.js +2 -2
  268. package/dist/modules/sales/components/ShippingMethodsSettings.js.map +2 -2
  269. package/dist/modules/sales/components/TaxRatesSettings.js +2 -2
  270. package/dist/modules/sales/components/TaxRatesSettings.js.map +2 -2
  271. package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js +2 -0
  272. package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js.map +2 -2
  273. package/dist/modules/sales/components/documents/AdjustmentsSection.js +2 -0
  274. package/dist/modules/sales/components/documents/AdjustmentsSection.js.map +2 -2
  275. package/dist/modules/sales/components/documents/PaymentsSection.js +2 -1
  276. package/dist/modules/sales/components/documents/PaymentsSection.js.map +2 -2
  277. package/dist/modules/sales/components/documents/SalesDocumentsTable.js +2 -0
  278. package/dist/modules/sales/components/documents/SalesDocumentsTable.js.map +2 -2
  279. package/dist/modules/sales/lib/dictionaries.js +0 -3
  280. package/dist/modules/sales/lib/dictionaries.js.map +2 -2
  281. package/dist/modules/sales/notifications.client.js +51 -0
  282. package/dist/modules/sales/notifications.client.js.map +7 -0
  283. package/dist/modules/sales/notifications.js +88 -0
  284. package/dist/modules/sales/notifications.js.map +7 -0
  285. package/dist/modules/sales/subscribers/quote-expiring-notification.js +38 -0
  286. package/dist/modules/sales/subscribers/quote-expiring-notification.js.map +7 -0
  287. package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js +137 -0
  288. package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js.map +7 -0
  289. package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js +137 -0
  290. package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js.map +7 -0
  291. package/dist/modules/sales/widgets/notifications/index.js +7 -0
  292. package/dist/modules/sales/widgets/notifications/index.js.map +7 -0
  293. package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js +60 -0
  294. package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js.map +7 -0
  295. package/dist/modules/staff/backend/staff/team-members/page.js +1 -1
  296. package/dist/modules/staff/backend/staff/team-members/page.js.map +2 -2
  297. package/dist/modules/staff/backend/staff/team-roles/page.js +2 -2
  298. package/dist/modules/staff/backend/staff/team-roles/page.js.map +2 -2
  299. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js +2 -2
  300. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js.map +2 -2
  301. package/dist/modules/staff/backend/staff/teams/page.js +2 -2
  302. package/dist/modules/staff/backend/staff/teams/page.js.map +2 -2
  303. package/dist/modules/staff/commands/leave-requests.js +79 -0
  304. package/dist/modules/staff/commands/leave-requests.js.map +2 -2
  305. package/dist/modules/staff/notifications.js +75 -0
  306. package/dist/modules/staff/notifications.js.map +7 -0
  307. package/dist/modules/workflows/acl.js +0 -2
  308. package/dist/modules/workflows/acl.js.map +2 -2
  309. package/dist/modules/workflows/api/instances/route.js +6 -18
  310. package/dist/modules/workflows/api/instances/route.js.map +2 -2
  311. package/dist/modules/workflows/api/tasks/route.js +1 -6
  312. package/dist/modules/workflows/api/tasks/route.js.map +2 -2
  313. package/dist/modules/workflows/backend/definitions/[id]/page.js +1 -9
  314. package/dist/modules/workflows/backend/definitions/[id]/page.js.map +2 -2
  315. package/dist/modules/workflows/backend/definitions/[id]/page.meta.js +1 -1
  316. package/dist/modules/workflows/backend/definitions/[id]/page.meta.js.map +2 -2
  317. package/dist/modules/workflows/backend/definitions/create/page.js +15 -24
  318. package/dist/modules/workflows/backend/definitions/create/page.js.map +2 -2
  319. package/dist/modules/workflows/backend/definitions/create/page.meta.js +1 -1
  320. package/dist/modules/workflows/backend/definitions/create/page.meta.js.map +2 -2
  321. package/dist/modules/workflows/backend/definitions/page.js +5 -0
  322. package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
  323. package/dist/modules/workflows/backend/definitions/visual-editor/page.js +132 -150
  324. package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
  325. package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js +1 -1
  326. package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js.map +2 -2
  327. package/dist/modules/workflows/backend/events/[id]/page.js +1 -1
  328. package/dist/modules/workflows/backend/events/[id]/page.js.map +2 -2
  329. package/dist/modules/workflows/backend/events/[id]/page.meta.js +2 -2
  330. package/dist/modules/workflows/backend/events/[id]/page.meta.js.map +2 -2
  331. package/dist/modules/workflows/backend/instances/[id]/page.meta.js +2 -2
  332. package/dist/modules/workflows/backend/instances/[id]/page.meta.js.map +2 -2
  333. package/dist/modules/workflows/backend/instances/page.js +3 -0
  334. package/dist/modules/workflows/backend/instances/page.js.map +2 -2
  335. package/dist/modules/workflows/backend/tasks/[id]/page.js +1 -1
  336. package/dist/modules/workflows/backend/tasks/[id]/page.js.map +2 -2
  337. package/dist/modules/workflows/backend/tasks/[id]/page.meta.js +2 -2
  338. package/dist/modules/workflows/backend/tasks/[id]/page.meta.js.map +2 -2
  339. package/dist/modules/workflows/backend/tasks/page.js +9 -5
  340. package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
  341. package/dist/modules/workflows/cli.js +15 -93
  342. package/dist/modules/workflows/cli.js.map +3 -3
  343. package/dist/modules/workflows/data/entities.js +1 -64
  344. package/dist/modules/workflows/data/entities.js.map +2 -2
  345. package/dist/modules/workflows/data/validators.js +0 -115
  346. package/dist/modules/workflows/data/validators.js.map +2 -2
  347. package/dist/modules/workflows/examples/checkout-demo-definition.json +5 -1
  348. package/dist/modules/workflows/lib/activity-executor.js +13 -75
  349. package/dist/modules/workflows/lib/activity-executor.js.map +2 -2
  350. package/dist/modules/workflows/lib/graph-utils.js +2 -71
  351. package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
  352. package/dist/modules/workflows/lib/seeds.js +5 -22
  353. package/dist/modules/workflows/lib/seeds.js.map +2 -2
  354. package/dist/modules/workflows/lib/start-validator.js +23 -33
  355. package/dist/modules/workflows/lib/start-validator.js.map +2 -2
  356. package/dist/modules/workflows/lib/transition-handler.js +57 -161
  357. package/dist/modules/workflows/lib/transition-handler.js.map +3 -3
  358. package/dist/modules/workflows/notifications.js +28 -0
  359. package/dist/modules/workflows/notifications.js.map +7 -0
  360. package/dist/modules/workflows/subscribers/task-assigned-notification.js +38 -0
  361. package/dist/modules/workflows/subscribers/task-assigned-notification.js.map +7 -0
  362. package/generated/entities/notification/index.ts +27 -0
  363. package/generated/entities.ids.generated.ts +5 -2
  364. package/generated/entity-fields-registry.ts +2 -2
  365. package/package.json +2 -2
  366. package/src/modules/api_docs/frontend/docs/api/page.tsx +3 -2
  367. package/src/modules/api_keys/backend/api-keys/page.tsx +1 -1
  368. package/src/modules/attachments/components/AttachmentLibrary.tsx +4 -0
  369. package/src/modules/attachments/components/AttachmentPartitionSettings.tsx +2 -0
  370. package/src/modules/auth/README.md +1 -1
  371. package/src/modules/auth/__tests__/cli-setup-acl.test.ts +1 -1
  372. package/src/modules/auth/api/__tests__/login.test.ts +2 -0
  373. package/src/modules/auth/api/admin/nav.ts +10 -6
  374. package/src/modules/auth/api/login.ts +26 -7
  375. package/src/modules/auth/api/profile/route.ts +163 -0
  376. package/src/modules/auth/api/reset/confirm.ts +25 -2
  377. package/src/modules/auth/api/reset.ts +23 -0
  378. package/src/modules/auth/api/sidebar/preferences/route.ts +21 -12
  379. package/src/modules/auth/api/users/route.ts +5 -2
  380. package/src/modules/auth/backend/auth/profile/page.meta.ts +9 -0
  381. package/src/modules/auth/backend/auth/profile/page.tsx +174 -0
  382. package/src/modules/auth/backend/roles/[id]/edit/page.tsx +4 -1
  383. package/src/modules/auth/backend/roles/page.tsx +3 -3
  384. package/src/modules/auth/backend/users/[id]/edit/page.tsx +22 -3
  385. package/src/modules/auth/backend/users/create/page.tsx +19 -2
  386. package/src/modules/auth/backend/users/page.tsx +3 -3
  387. package/src/modules/auth/cli.ts +38 -11
  388. package/src/modules/auth/commands/users.ts +73 -2
  389. package/src/modules/auth/data/validators.ts +6 -2
  390. package/src/modules/auth/frontend/login.tsx +134 -5
  391. package/src/modules/auth/frontend/reset/[token]/page.tsx +24 -11
  392. package/src/modules/auth/i18n/de.json +48 -1
  393. package/src/modules/auth/i18n/en.json +48 -1
  394. package/src/modules/auth/i18n/es.json +48 -1
  395. package/src/modules/auth/i18n/pl.json +48 -1
  396. package/src/modules/auth/lib/setup-app.ts +58 -9
  397. package/src/modules/auth/notifications.ts +109 -0
  398. package/src/modules/auth/services/authService.ts +27 -4
  399. package/src/modules/business_rules/api/execute/route.ts +8 -1
  400. package/src/modules/business_rules/backend/rules/page.tsx +4 -0
  401. package/src/modules/business_rules/backend/sets/page.tsx +3 -0
  402. package/src/modules/business_rules/cli.ts +2 -1
  403. package/src/modules/business_rules/data/validators.ts +0 -40
  404. package/src/modules/business_rules/i18n/en.json +3 -1
  405. package/src/modules/business_rules/index.ts +0 -25
  406. package/src/modules/business_rules/lib/__tests__/rule-engine.test.ts +51 -0
  407. package/src/modules/business_rules/lib/rule-engine.ts +51 -277
  408. package/src/modules/business_rules/notifications.ts +25 -0
  409. package/src/modules/business_rules/subscribers/rule-execution-failed-notification.ts +50 -0
  410. package/src/modules/catalog/components/PriceKindSettings.tsx +2 -0
  411. package/src/modules/catalog/components/categories/CategoriesDataTable.tsx +2 -2
  412. package/src/modules/catalog/components/products/ProductsDataTable.tsx +2 -0
  413. package/src/modules/catalog/i18n/en.json +3 -1
  414. package/src/modules/catalog/notifications.ts +25 -0
  415. package/src/modules/catalog/subscribers/low-stock-notification.ts +52 -0
  416. package/src/modules/configs/cli.ts +6 -0
  417. package/src/modules/configs/components/CachePanel.tsx +4 -4
  418. package/src/modules/configs/i18n/en.json +12 -2
  419. package/src/modules/configs/i18n/pl.json +12 -2
  420. package/src/modules/configs/lib/system-status.ts +48 -1
  421. package/src/modules/configs/lib/system-status.types.ts +1 -0
  422. package/src/modules/configs/lib/upgrade-actions.ts +18 -0
  423. package/src/modules/currencies/backend/currencies/page.tsx +3 -0
  424. package/src/modules/currencies/backend/exchange-rates/page.tsx +2 -0
  425. package/src/modules/customers/backend/customers/companies/page.tsx +3 -0
  426. package/src/modules/customers/backend/customers/deals/page.tsx +3 -0
  427. package/src/modules/customers/backend/customers/people/page.tsx +3 -0
  428. package/src/modules/customers/commands/deals.ts +39 -0
  429. package/src/modules/customers/components/CustomerTodosTable.tsx +1 -0
  430. package/src/modules/customers/i18n/en.json +5 -1
  431. package/src/modules/customers/notifications.ts +44 -0
  432. package/src/modules/customers/widgets/dashboard/customer-todos/widget.ts +2 -2
  433. package/src/modules/customers/widgets/dashboard/new-customers/widget.ts +2 -2
  434. package/src/modules/customers/widgets/dashboard/new-deals/widget.ts +2 -2
  435. package/src/modules/customers/widgets/dashboard/next-interactions/widget.ts +2 -2
  436. package/src/modules/dashboards/cli.ts +55 -5
  437. package/src/modules/dashboards/components/WidgetVisibilityEditor.tsx +22 -11
  438. package/src/modules/dashboards/lib/role-widgets.ts +80 -0
  439. package/src/modules/dashboards/services/widgetDataService.ts +164 -4
  440. package/src/modules/dashboards/widgets/dashboard/aov-kpi/widget.ts +2 -2
  441. package/src/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.ts +2 -2
  442. package/src/modules/dashboards/widgets/dashboard/orders-by-status/widget.ts +2 -2
  443. package/src/modules/dashboards/widgets/dashboard/orders-kpi/widget.ts +2 -2
  444. package/src/modules/dashboards/widgets/dashboard/pipeline-summary/widget.ts +2 -2
  445. package/src/modules/dashboards/widgets/dashboard/revenue-kpi/widget.ts +2 -2
  446. package/src/modules/dashboards/widgets/dashboard/revenue-trend/widget.ts +2 -2
  447. package/src/modules/dashboards/widgets/dashboard/sales-by-region/widget.ts +2 -2
  448. package/src/modules/dashboards/widgets/dashboard/top-customers/widget.ts +2 -2
  449. package/src/modules/dashboards/widgets/dashboard/top-products/widget.ts +2 -2
  450. package/src/modules/dictionaries/components/DictionaryTable.tsx +2 -0
  451. package/src/modules/directory/api/get/tenants/lookup.ts +75 -0
  452. package/src/modules/directory/backend/directory/organizations/page.tsx +2 -2
  453. package/src/modules/directory/backend/directory/tenants/page.tsx +2 -2
  454. package/src/modules/entities/backend/entities/user/[entityId]/records/page.tsx +2 -2
  455. package/src/modules/entities/components/SystemEntitiesTable.tsx +1 -1
  456. package/src/modules/entities/components/UserEntitiesTable.tsx +2 -2
  457. package/src/modules/feature_toggles/components/FeatureTogglesTable.tsx +3 -4
  458. package/src/modules/feature_toggles/components/OverridesTable.tsx +1 -1
  459. package/src/modules/notifications/__tests__/deliver-notification.test.ts +195 -0
  460. package/src/modules/notifications/__tests__/deliveryStrategies.test.ts +19 -0
  461. package/src/modules/notifications/__tests__/notificationService.test.ts +208 -0
  462. package/src/modules/notifications/acl.ts +7 -0
  463. package/src/modules/notifications/api/[id]/action/route.ts +75 -0
  464. package/src/modules/notifications/api/[id]/dismiss/route.ts +12 -0
  465. package/src/modules/notifications/api/[id]/read/route.ts +12 -0
  466. package/src/modules/notifications/api/[id]/restore/route.ts +53 -0
  467. package/src/modules/notifications/api/batch/route.ts +14 -0
  468. package/src/modules/notifications/api/feature/route.ts +14 -0
  469. package/src/modules/notifications/api/mark-all-read/route.ts +34 -0
  470. package/src/modules/notifications/api/openapi.ts +76 -0
  471. package/src/modules/notifications/api/role/route.ts +14 -0
  472. package/src/modules/notifications/api/route.ts +92 -0
  473. package/src/modules/notifications/api/settings/route.ts +157 -0
  474. package/src/modules/notifications/api/unread-count/route.ts +38 -0
  475. package/src/modules/notifications/backend/config/notifications/page.meta.ts +22 -0
  476. package/src/modules/notifications/backend/config/notifications/page.tsx +12 -0
  477. package/src/modules/notifications/cli.ts +18 -0
  478. package/src/modules/notifications/data/entities.ts +99 -0
  479. package/src/modules/notifications/data/validators.ts +115 -0
  480. package/src/modules/notifications/di.ts +11 -0
  481. package/src/modules/notifications/emails/NotificationEmail.tsx +98 -0
  482. package/src/modules/notifications/frontend/NotificationInboxPageClient.tsx +42 -0
  483. package/src/modules/notifications/frontend/NotificationSettingsPageClient.tsx +233 -0
  484. package/src/modules/notifications/i18n/de.json +50 -0
  485. package/src/modules/notifications/i18n/en.json +50 -0
  486. package/src/modules/notifications/i18n/es.json +50 -0
  487. package/src/modules/notifications/i18n/pl.json +50 -0
  488. package/src/modules/notifications/index.ts +12 -0
  489. package/src/modules/notifications/lib/deliveryConfig.ts +153 -0
  490. package/src/modules/notifications/lib/deliveryStrategies.ts +50 -0
  491. package/src/modules/notifications/lib/events.ts +48 -0
  492. package/src/modules/notifications/lib/notificationBuilder.ts +121 -0
  493. package/src/modules/notifications/lib/notificationFactory.ts +76 -0
  494. package/src/modules/notifications/lib/notificationMapper.ts +33 -0
  495. package/src/modules/notifications/lib/notificationRecipients.ts +83 -0
  496. package/src/modules/notifications/lib/notificationService.ts +414 -0
  497. package/src/modules/notifications/lib/routeHelpers.ts +151 -0
  498. package/src/modules/notifications/lib/safeHref.ts +29 -0
  499. package/src/modules/notifications/migrations/.snapshot-open-mercato.json +336 -0
  500. package/src/modules/notifications/migrations/Migration20260123000001.ts +73 -0
  501. package/src/modules/notifications/migrations/Migration20260126150000.ts +39 -0
  502. package/src/modules/notifications/migrations/Migration20260129082610.ts +13 -0
  503. package/src/modules/notifications/subscribers/deliver-notification.ts +204 -0
  504. package/src/modules/notifications/workers/create-notification.worker.ts +122 -0
  505. package/src/modules/planner/backend/planner/availability-rulesets/page.tsx +2 -2
  506. package/src/modules/query_index/cli.ts +82 -13
  507. package/src/modules/query_index/components/QueryIndexesTable.tsx +8 -2
  508. package/src/modules/resources/backend/resources/resource-types/page.tsx +2 -2
  509. package/src/modules/resources/backend/resources/resources/page.tsx +2 -2
  510. package/src/modules/sales/acl.ts +0 -1
  511. package/src/modules/sales/backend/sales/channels/offers/page.tsx +2 -0
  512. package/src/modules/sales/backend/sales/channels/page.tsx +2 -0
  513. package/src/modules/sales/backend/sales/documents/[id]/page.tsx +0 -16
  514. package/src/modules/sales/commands/documents.ts +62 -70
  515. package/src/modules/sales/commands/payments.ts +33 -0
  516. package/src/modules/sales/components/AdjustmentKindSettings.tsx +2 -2
  517. package/src/modules/sales/components/PaymentMethodsSettings.tsx +2 -2
  518. package/src/modules/sales/components/ShippingMethodsSettings.tsx +2 -2
  519. package/src/modules/sales/components/TaxRatesSettings.tsx +2 -2
  520. package/src/modules/sales/components/channels/SalesChannelOffersPanel.tsx +2 -0
  521. package/src/modules/sales/components/documents/AdjustmentsSection.tsx +2 -0
  522. package/src/modules/sales/components/documents/PaymentsSection.tsx +2 -1
  523. package/src/modules/sales/components/documents/SalesDocumentsTable.tsx +2 -0
  524. package/src/modules/sales/i18n/de.json +20 -0
  525. package/src/modules/sales/i18n/en.json +25 -1
  526. package/src/modules/sales/i18n/es.json +20 -0
  527. package/src/modules/sales/i18n/pl.json +20 -0
  528. package/src/modules/sales/lib/dictionaries.ts +0 -3
  529. package/src/modules/sales/notifications.client.ts +65 -0
  530. package/src/modules/sales/notifications.ts +82 -0
  531. package/src/modules/sales/subscribers/quote-expiring-notification.ts +53 -0
  532. package/src/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.tsx +156 -0
  533. package/src/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.tsx +156 -0
  534. package/src/modules/sales/widgets/notifications/index.ts +2 -0
  535. package/src/modules/sales/widgets/notifications/useSalesDocumentTotals.ts +81 -0
  536. package/src/modules/staff/backend/staff/team-members/page.tsx +1 -1
  537. package/src/modules/staff/backend/staff/team-roles/page.tsx +2 -2
  538. package/src/modules/staff/backend/staff/teams/[id]/edit/page.tsx +2 -2
  539. package/src/modules/staff/backend/staff/teams/page.tsx +2 -2
  540. package/src/modules/staff/commands/leave-requests.ts +94 -0
  541. package/src/modules/staff/i18n/de.json +4 -0
  542. package/src/modules/staff/i18n/en.json +9 -1
  543. package/src/modules/staff/i18n/es.json +4 -0
  544. package/src/modules/staff/i18n/pl.json +4 -0
  545. package/src/modules/staff/notifications.ts +71 -0
  546. package/src/modules/workflows/acl.ts +0 -2
  547. package/src/modules/workflows/api/__tests__/instances.route.test.ts +2 -5
  548. package/src/modules/workflows/api/instances/route.ts +7 -21
  549. package/src/modules/workflows/api/tasks/route.ts +1 -7
  550. package/src/modules/workflows/backend/definitions/[id]/page.meta.ts +1 -1
  551. package/src/modules/workflows/backend/definitions/[id]/page.tsx +0 -9
  552. package/src/modules/workflows/backend/definitions/create/page.meta.ts +1 -1
  553. package/src/modules/workflows/backend/definitions/create/page.tsx +0 -9
  554. package/src/modules/workflows/backend/definitions/page.tsx +5 -0
  555. package/src/modules/workflows/backend/definitions/visual-editor/page.meta.ts +1 -1
  556. package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +3 -21
  557. package/src/modules/workflows/backend/events/[id]/page.meta.ts +2 -2
  558. package/src/modules/workflows/backend/events/[id]/page.tsx +1 -1
  559. package/src/modules/workflows/backend/instances/[id]/page.meta.ts +2 -2
  560. package/src/modules/workflows/backend/instances/page.tsx +4 -1
  561. package/src/modules/workflows/backend/tasks/[id]/page.meta.ts +2 -2
  562. package/src/modules/workflows/backend/tasks/[id]/page.tsx +1 -1
  563. package/src/modules/workflows/backend/tasks/page.tsx +10 -6
  564. package/src/modules/workflows/cli.ts +12 -123
  565. package/src/modules/workflows/data/entities.ts +0 -124
  566. package/src/modules/workflows/data/validators.ts +0 -138
  567. package/src/modules/workflows/examples/checkout-demo-definition.json +5 -1
  568. package/src/modules/workflows/i18n/en.json +3 -72
  569. package/src/modules/workflows/lib/__tests__/activity-executor.test.ts +36 -43
  570. package/src/modules/workflows/lib/__tests__/transition-handler.test.ts +90 -170
  571. package/src/modules/workflows/lib/activity-executor.ts +16 -129
  572. package/src/modules/workflows/lib/graph-utils.ts +2 -117
  573. package/src/modules/workflows/lib/seeds.ts +8 -34
  574. package/src/modules/workflows/lib/start-validator.ts +28 -38
  575. package/src/modules/workflows/lib/transition-handler.ts +71 -212
  576. package/src/modules/workflows/notifications.ts +25 -0
  577. package/src/modules/workflows/subscribers/task-assigned-notification.ts +53 -0
  578. package/dist/generated/entities/workflow_event_trigger/index.js +0 -33
  579. package/dist/generated/entities/workflow_event_trigger/index.js.map +0 -7
  580. package/dist/modules/auth/events.js +0 -30
  581. package/dist/modules/auth/events.js.map +0 -7
  582. package/dist/modules/business_rules/api/execute/[ruleId]/route.js +0 -145
  583. package/dist/modules/business_rules/api/execute/[ruleId]/route.js.map +0 -7
  584. package/dist/modules/catalog/events.js +0 -34
  585. package/dist/modules/catalog/events.js.map +0 -7
  586. package/dist/modules/customers/events.js +0 -49
  587. package/dist/modules/customers/events.js.map +0 -7
  588. package/dist/modules/directory/events.js +0 -23
  589. package/dist/modules/directory/events.js.map +0 -7
  590. package/dist/modules/sales/events.js +0 -63
  591. package/dist/modules/sales/events.js.map +0 -7
  592. package/dist/modules/sales/lib/frontend/documentDataEvents.js +0 -25
  593. package/dist/modules/sales/lib/frontend/documentDataEvents.js.map +0 -7
  594. package/dist/modules/workflows/components/DefinitionTriggersEditor.js +0 -481
  595. package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +0 -7
  596. package/dist/modules/workflows/components/EventTriggersEditor.js +0 -553
  597. package/dist/modules/workflows/components/EventTriggersEditor.js.map +0 -7
  598. package/dist/modules/workflows/events.js +0 -38
  599. package/dist/modules/workflows/events.js.map +0 -7
  600. package/dist/modules/workflows/examples/order-approval-definition.json +0 -257
  601. package/dist/modules/workflows/examples/order-approval-guard-rules.json +0 -32
  602. package/dist/modules/workflows/lib/event-trigger-service.js +0 -308
  603. package/dist/modules/workflows/lib/event-trigger-service.js.map +0 -7
  604. package/dist/modules/workflows/migrations/Migration20260123143500.js +0 -36
  605. package/dist/modules/workflows/migrations/Migration20260123143500.js.map +0 -7
  606. package/dist/modules/workflows/subscribers/event-trigger.js +0 -78
  607. package/dist/modules/workflows/subscribers/event-trigger.js.map +0 -7
  608. package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js +0 -323
  609. package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js.map +0 -7
  610. package/dist/modules/workflows/widgets/injection/order-approval/widget.js +0 -17
  611. package/dist/modules/workflows/widgets/injection/order-approval/widget.js.map +0 -7
  612. package/dist/modules/workflows/widgets/injection-table.js +0 -19
  613. package/dist/modules/workflows/widgets/injection-table.js.map +0 -7
  614. package/generated/entities/workflow_event_trigger/index.ts +0 -15
  615. package/src/modules/auth/events.ts +0 -39
  616. package/src/modules/business_rules/api/execute/[ruleId]/route.ts +0 -163
  617. package/src/modules/catalog/events.ts +0 -45
  618. package/src/modules/customers/events.ts +0 -63
  619. package/src/modules/directory/events.ts +0 -31
  620. package/src/modules/sales/events.ts +0 -82
  621. package/src/modules/sales/lib/frontend/documentDataEvents.ts +0 -28
  622. package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +0 -581
  623. package/src/modules/workflows/components/EventTriggersEditor.tsx +0 -664
  624. package/src/modules/workflows/events.ts +0 -49
  625. package/src/modules/workflows/examples/order-approval-definition.json +0 -257
  626. package/src/modules/workflows/examples/order-approval-guard-rules.json +0 -32
  627. package/src/modules/workflows/lib/event-trigger-service.ts +0 -557
  628. package/src/modules/workflows/migrations/Migration20260123143500.ts +0 -38
  629. package/src/modules/workflows/subscribers/event-trigger.ts +0 -109
  630. package/src/modules/workflows/widgets/injection/order-approval/widget.client.tsx +0 -446
  631. package/src/modules/workflows/widgets/injection/order-approval/widget.ts +0 -16
  632. package/src/modules/workflows/widgets/injection-table.ts +0 -21
@@ -1,38 +0,0 @@
1
- import { createModuleEvents } from "@open-mercato/shared/modules/events";
2
- const events = [
3
- // Workflow Definitions
4
- { id: "workflows.definitions.created", label: "Workflow Definition Created", entity: "definitions", category: "crud" },
5
- { id: "workflows.definitions.updated", label: "Workflow Definition Updated", entity: "definitions", category: "crud" },
6
- { id: "workflows.definitions.deleted", label: "Workflow Definition Deleted", entity: "definitions", category: "crud" },
7
- // Workflow Instances
8
- { id: "workflows.instances.created", label: "Workflow Instance Created", entity: "instances", category: "crud" },
9
- { id: "workflows.instances.updated", label: "Workflow Instance Updated", entity: "instances", category: "crud" },
10
- { id: "workflows.instances.deleted", label: "Workflow Instance Deleted", entity: "instances", category: "crud" },
11
- // Workflow Lifecycle Events
12
- { id: "workflows.instance.started", label: "Workflow Started", category: "lifecycle" },
13
- { id: "workflows.instance.completed", label: "Workflow Completed", category: "lifecycle" },
14
- { id: "workflows.instance.failed", label: "Workflow Failed", category: "lifecycle" },
15
- { id: "workflows.instance.cancelled", label: "Workflow Cancelled", category: "lifecycle" },
16
- { id: "workflows.instance.paused", label: "Workflow Paused", category: "lifecycle" },
17
- { id: "workflows.instance.resumed", label: "Workflow Resumed", category: "lifecycle" },
18
- // Activity Events
19
- { id: "workflows.activity.started", label: "Activity Started", category: "lifecycle" },
20
- { id: "workflows.activity.completed", label: "Activity Completed", category: "lifecycle" },
21
- { id: "workflows.activity.failed", label: "Activity Failed", category: "lifecycle" },
22
- // Event Triggers
23
- { id: "workflows.triggers.created", label: "Trigger Created", entity: "triggers", category: "crud" },
24
- { id: "workflows.triggers.updated", label: "Trigger Updated", entity: "triggers", category: "crud" },
25
- { id: "workflows.triggers.deleted", label: "Trigger Deleted", entity: "triggers", category: "crud" }
26
- ];
27
- const eventsConfig = createModuleEvents({
28
- moduleId: "workflows",
29
- events
30
- });
31
- const emitWorkflowsEvent = eventsConfig.emit;
32
- var events_default = eventsConfig;
33
- export {
34
- events_default as default,
35
- emitWorkflowsEvent,
36
- eventsConfig
37
- };
38
- //# sourceMappingURL=events.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/modules/workflows/events.ts"],
4
- "sourcesContent": ["import { createModuleEvents } from '@open-mercato/shared/modules/events'\n\n/**\n * Workflows Module Events\n *\n * Declares all events that can be emitted by the workflows module.\n */\nconst events = [\n // Workflow Definitions\n { id: 'workflows.definitions.created', label: 'Workflow Definition Created', entity: 'definitions', category: 'crud' },\n { id: 'workflows.definitions.updated', label: 'Workflow Definition Updated', entity: 'definitions', category: 'crud' },\n { id: 'workflows.definitions.deleted', label: 'Workflow Definition Deleted', entity: 'definitions', category: 'crud' },\n\n // Workflow Instances\n { id: 'workflows.instances.created', label: 'Workflow Instance Created', entity: 'instances', category: 'crud' },\n { id: 'workflows.instances.updated', label: 'Workflow Instance Updated', entity: 'instances', category: 'crud' },\n { id: 'workflows.instances.deleted', label: 'Workflow Instance Deleted', entity: 'instances', category: 'crud' },\n\n // Workflow Lifecycle Events\n { id: 'workflows.instance.started', label: 'Workflow Started', category: 'lifecycle' },\n { id: 'workflows.instance.completed', label: 'Workflow Completed', category: 'lifecycle' },\n { id: 'workflows.instance.failed', label: 'Workflow Failed', category: 'lifecycle' },\n { id: 'workflows.instance.cancelled', label: 'Workflow Cancelled', category: 'lifecycle' },\n { id: 'workflows.instance.paused', label: 'Workflow Paused', category: 'lifecycle' },\n { id: 'workflows.instance.resumed', label: 'Workflow Resumed', category: 'lifecycle' },\n\n // Activity Events\n { id: 'workflows.activity.started', label: 'Activity Started', category: 'lifecycle' },\n { id: 'workflows.activity.completed', label: 'Activity Completed', category: 'lifecycle' },\n { id: 'workflows.activity.failed', label: 'Activity Failed', category: 'lifecycle' },\n\n // Event Triggers\n { id: 'workflows.triggers.created', label: 'Trigger Created', entity: 'triggers', category: 'crud' },\n { id: 'workflows.triggers.updated', label: 'Trigger Updated', entity: 'triggers', category: 'crud' },\n { id: 'workflows.triggers.deleted', label: 'Trigger Deleted', entity: 'triggers', category: 'crud' },\n] as const\n\nexport const eventsConfig = createModuleEvents({\n moduleId: 'workflows',\n events,\n})\n\n/** Type-safe event emitter for workflows module */\nexport const emitWorkflowsEvent = eventsConfig.emit\n\n/** Event IDs that can be emitted by the workflows module */\nexport type WorkflowsEventId = typeof events[number]['id']\n\nexport default eventsConfig\n"],
5
- "mappings": "AAAA,SAAS,0BAA0B;AAOnC,MAAM,SAAS;AAAA;AAAA,EAEb,EAAE,IAAI,iCAAiC,OAAO,+BAA+B,QAAQ,eAAe,UAAU,OAAO;AAAA,EACrH,EAAE,IAAI,iCAAiC,OAAO,+BAA+B,QAAQ,eAAe,UAAU,OAAO;AAAA,EACrH,EAAE,IAAI,iCAAiC,OAAO,+BAA+B,QAAQ,eAAe,UAAU,OAAO;AAAA;AAAA,EAGrH,EAAE,IAAI,+BAA+B,OAAO,6BAA6B,QAAQ,aAAa,UAAU,OAAO;AAAA,EAC/G,EAAE,IAAI,+BAA+B,OAAO,6BAA6B,QAAQ,aAAa,UAAU,OAAO;AAAA,EAC/G,EAAE,IAAI,+BAA+B,OAAO,6BAA6B,QAAQ,aAAa,UAAU,OAAO;AAAA;AAAA,EAG/G,EAAE,IAAI,8BAA8B,OAAO,oBAAoB,UAAU,YAAY;AAAA,EACrF,EAAE,IAAI,gCAAgC,OAAO,sBAAsB,UAAU,YAAY;AAAA,EACzF,EAAE,IAAI,6BAA6B,OAAO,mBAAmB,UAAU,YAAY;AAAA,EACnF,EAAE,IAAI,gCAAgC,OAAO,sBAAsB,UAAU,YAAY;AAAA,EACzF,EAAE,IAAI,6BAA6B,OAAO,mBAAmB,UAAU,YAAY;AAAA,EACnF,EAAE,IAAI,8BAA8B,OAAO,oBAAoB,UAAU,YAAY;AAAA;AAAA,EAGrF,EAAE,IAAI,8BAA8B,OAAO,oBAAoB,UAAU,YAAY;AAAA,EACrF,EAAE,IAAI,gCAAgC,OAAO,sBAAsB,UAAU,YAAY;AAAA,EACzF,EAAE,IAAI,6BAA6B,OAAO,mBAAmB,UAAU,YAAY;AAAA;AAAA,EAGnF,EAAE,IAAI,8BAA8B,OAAO,mBAAmB,QAAQ,YAAY,UAAU,OAAO;AAAA,EACnG,EAAE,IAAI,8BAA8B,OAAO,mBAAmB,QAAQ,YAAY,UAAU,OAAO;AAAA,EACnG,EAAE,IAAI,8BAA8B,OAAO,mBAAmB,QAAQ,YAAY,UAAU,OAAO;AACrG;AAEO,MAAM,eAAe,mBAAmB;AAAA,EAC7C,UAAU;AAAA,EACV;AACF,CAAC;AAGM,MAAM,qBAAqB,aAAa;AAK/C,IAAO,iBAAQ;",
6
- "names": []
7
- }
@@ -1,257 +0,0 @@
1
- {
2
- "workflowId": "sales_order_approval_v1",
3
- "workflowName": "Sales Order Approval Workflow",
4
- "description": "Approval workflow for sales orders requiring authorization before processing",
5
- "version": 1,
6
- "enabled": true,
7
- "metadata": {
8
- "category": "Sales",
9
- "tags": [
10
- "sales",
11
- "approval",
12
- "order"
13
- ],
14
- "icon": "check-circle",
15
- "entityType": "SalesOrder"
16
- },
17
- "definition": {
18
- "steps": [
19
- {
20
- "stepId": "start",
21
- "stepName": "Start",
22
- "stepType": "START",
23
- "description": "Initialize order approval workflow"
24
- },
25
- {
26
- "stepId": "pending_approval",
27
- "stepName": "Pending Approval",
28
- "stepType": "USER_TASK",
29
- "description": "Order awaiting approval decision",
30
- "userTaskConfig": {
31
- "formSchema": {
32
- "type": "object",
33
- "required": [
34
- "decision"
35
- ],
36
- "properties": {
37
- "comments": {
38
- "type": "string",
39
- "title": "Comments",
40
- "description": "Optional comments for the decision"
41
- },
42
- "decision": {
43
- "enum": [
44
- "approve",
45
- "reject"
46
- ],
47
- "type": "string",
48
- "title": "Decision",
49
- "description": "Approve or reject the order"
50
- }
51
- }
52
- },
53
- "slaDuration": "PT24H"
54
- }
55
- },
56
- {
57
- "stepId": "approved",
58
- "stepName": "Approved",
59
- "stepType": "AUTOMATED",
60
- "description": "Order has been approved"
61
- },
62
- {
63
- "stepId": "rejected",
64
- "stepName": "Rejected",
65
- "stepType": "AUTOMATED",
66
- "description": "Order has been rejected"
67
- },
68
- {
69
- "stepId": "end",
70
- "stepName": "Complete",
71
- "stepType": "END",
72
- "description": "Workflow complete"
73
- }
74
- ],
75
- "triggers": [
76
- {
77
- "name": "Order Approval Trigger",
78
- "config": {
79
- "entityType": "SalesOrder"
80
- },
81
- "enabled": true,
82
- "priority": 0,
83
- "triggerId": "order_approval_trigger",
84
- "description": "Triggers when a new sales order is created",
85
- "eventPattern": "sales.orders.created"
86
- }
87
- ],
88
- "transitions": [
89
- {
90
- "transitionId": "start_to_pending",
91
- "transitionName": "Submit for Approval",
92
- "fromStepId": "start",
93
- "toStepId": "pending_approval",
94
- "trigger": "auto",
95
- "priority": 100,
96
- "continueOnActivityFailure": true,
97
- "activities": [
98
- {
99
- "activityId": "set_pending_status",
100
- "activityName": "Set Order to Pending Approval",
101
- "activityType": "UPDATE_ENTITY",
102
- "async": false,
103
- "config": {
104
- "commandId": "sales.orders.update",
105
- "statusDictionary": "sales.order_status",
106
- "input": {
107
- "id": "{{context.id}}",
108
- "statusValue": "pending_approval"
109
- }
110
- },
111
- "retryPolicy": {
112
- "maxAttempts": 3,
113
- "initialIntervalMs": 1000,
114
- "backoffCoefficient": 2,
115
- "maxIntervalMs": 10000
116
- }
117
- },
118
- {
119
- "activityId": "emit_approval_requested",
120
- "activityName": "Emit Approval Requested Event",
121
- "activityType": "EMIT_EVENT",
122
- "async": true,
123
- "config": {
124
- "eventName": "sales.order.approval.requested",
125
- "payload": {
126
- "orderId": "{{context.id}}",
127
- "workflowInstanceId": "{{workflow.instanceId}}"
128
- }
129
- }
130
- }
131
- ]
132
- },
133
- {
134
- "transitionId": "pending_approval_to_approved",
135
- "transitionName": "Approve Order",
136
- "fromStepId": "pending_approval",
137
- "toStepId": "approved",
138
- "trigger": "auto",
139
- "priority": 100,
140
- "preConditions": [
141
- {
142
- "ruleId": "workflow_order_approval_check_approved",
143
- "required": true
144
- }
145
- ],
146
- "continueOnActivityFailure": true,
147
- "activities": [
148
- {
149
- "activityId": "set_approved_status",
150
- "activityName": "Set Order to Approved",
151
- "activityType": "UPDATE_ENTITY",
152
- "async": false,
153
- "config": {
154
- "commandId": "sales.orders.update",
155
- "statusDictionary": "sales.order_status",
156
- "input": {
157
- "id": "{{context.id}}",
158
- "statusValue": "approved"
159
- }
160
- },
161
- "retryPolicy": {
162
- "maxAttempts": 3,
163
- "initialIntervalMs": 1000,
164
- "backoffCoefficient": 2,
165
- "maxIntervalMs": 10000
166
- }
167
- },
168
- {
169
- "activityId": "emit_order_approved",
170
- "activityName": "Emit Order Approved Event",
171
- "activityType": "EMIT_EVENT",
172
- "async": true,
173
- "config": {
174
- "eventName": "sales.order.approval.approved",
175
- "payload": {
176
- "orderId": "{{context.id}}",
177
- "workflowInstanceId": "{{workflow.instanceId}}",
178
- "approvedBy": "{{context.completedBy}}",
179
- "comments": "{{context.comments}}"
180
- }
181
- }
182
- }
183
- ]
184
- },
185
- {
186
- "transitionId": "pending_approval_to_rejected",
187
- "transitionName": "Reject Order",
188
- "fromStepId": "pending_approval",
189
- "toStepId": "rejected",
190
- "trigger": "auto",
191
- "priority": 90,
192
- "preConditions": [
193
- {
194
- "ruleId": "workflow_order_approval_check_rejected",
195
- "required": true
196
- }
197
- ],
198
- "continueOnActivityFailure": true,
199
- "activities": [
200
- {
201
- "activityId": "set_rejected_status",
202
- "activityName": "Set Order to Rejected",
203
- "activityType": "UPDATE_ENTITY",
204
- "async": false,
205
- "config": {
206
- "commandId": "sales.orders.update",
207
- "statusDictionary": "sales.order_status",
208
- "input": {
209
- "id": "{{context.id}}",
210
- "statusValue": "rejected"
211
- }
212
- },
213
- "retryPolicy": {
214
- "maxAttempts": 3,
215
- "initialIntervalMs": 1000,
216
- "backoffCoefficient": 2,
217
- "maxIntervalMs": 10000
218
- }
219
- },
220
- {
221
- "activityId": "emit_order_rejected",
222
- "activityName": "Emit Order Rejected Event",
223
- "activityType": "EMIT_EVENT",
224
- "async": true,
225
- "config": {
226
- "eventName": "sales.order.approval.rejected",
227
- "payload": {
228
- "orderId": "{{context.id}}",
229
- "workflowInstanceId": "{{workflow.instanceId}}",
230
- "rejectedBy": "{{context.completedBy}}",
231
- "comments": "{{context.comments}}"
232
- }
233
- }
234
- }
235
- ]
236
- },
237
- {
238
- "transitionId": "approved_to_end",
239
- "transitionName": "Complete After Approval",
240
- "fromStepId": "approved",
241
- "toStepId": "end",
242
- "trigger": "auto",
243
- "priority": 100,
244
- "continueOnActivityFailure": true
245
- },
246
- {
247
- "transitionId": "rejected_to_end",
248
- "transitionName": "Complete After Rejection",
249
- "fromStepId": "rejected",
250
- "toStepId": "end",
251
- "trigger": "auto",
252
- "priority": 100,
253
- "continueOnActivityFailure": true
254
- }
255
- ]
256
- }
257
- }
@@ -1,32 +0,0 @@
1
- [
2
- {
3
- "ruleId": "workflow_order_approval_check_approved",
4
- "ruleName": "Check Decision is Approve",
5
- "description": "Validates that the approval task decision is 'approve'",
6
- "ruleType": "GUARD",
7
- "entityType": "workflow:sales_order_approval_v1:transition",
8
- "eventType": "pre_transition",
9
- "conditionExpression": {
10
- "field": "workflowContext.decision",
11
- "operator": "=",
12
- "value": "approve"
13
- },
14
- "enabled": true,
15
- "priority": 100
16
- },
17
- {
18
- "ruleId": "workflow_order_approval_check_rejected",
19
- "ruleName": "Check Decision is Reject",
20
- "description": "Validates that the approval task decision is 'reject'",
21
- "ruleType": "GUARD",
22
- "entityType": "workflow:sales_order_approval_v1:transition",
23
- "eventType": "pre_transition",
24
- "conditionExpression": {
25
- "field": "workflowContext.decision",
26
- "operator": "=",
27
- "value": "reject"
28
- },
29
- "enabled": true,
30
- "priority": 100
31
- }
32
- ]
@@ -1,308 +0,0 @@
1
- import {
2
- WorkflowEventTrigger,
3
- WorkflowDefinition,
4
- WorkflowInstance
5
- } from "../data/entities.js";
6
- import { startWorkflow, executeWorkflow } from "./workflow-executor.js";
7
- const TRIGGER_CACHE_TTL = 5 * 60 * 1e3;
8
- function matchEventPattern(eventName, pattern) {
9
- if (pattern === "*") return true;
10
- if (pattern === eventName) return true;
11
- if (!pattern.includes("*")) return false;
12
- const regexPattern = pattern.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, "[^.]+");
13
- const regex = new RegExp(`^${regexPattern}$`);
14
- return regex.test(eventName);
15
- }
16
- function getNestedValue(obj, path) {
17
- if (obj === null || obj === void 0) return void 0;
18
- const parts = path.split(".");
19
- let current = obj;
20
- for (const part of parts) {
21
- if (current === null || current === void 0) return void 0;
22
- if (typeof current !== "object") return void 0;
23
- current = current[part];
24
- }
25
- return current;
26
- }
27
- function evaluateCondition(condition, payload) {
28
- const value = getNestedValue(payload, condition.field);
29
- const expected = condition.value;
30
- switch (condition.operator) {
31
- case "eq":
32
- return value === expected;
33
- case "neq":
34
- return value !== expected;
35
- case "gt":
36
- return typeof value === "number" && typeof expected === "number" && value > expected;
37
- case "gte":
38
- return typeof value === "number" && typeof expected === "number" && value >= expected;
39
- case "lt":
40
- return typeof value === "number" && typeof expected === "number" && value < expected;
41
- case "lte":
42
- return typeof value === "number" && typeof expected === "number" && value <= expected;
43
- case "contains":
44
- if (typeof value === "string" && typeof expected === "string") {
45
- return value.includes(expected);
46
- }
47
- if (Array.isArray(value)) {
48
- return value.includes(expected);
49
- }
50
- return false;
51
- case "startsWith":
52
- return typeof value === "string" && typeof expected === "string" && value.startsWith(expected);
53
- case "endsWith":
54
- return typeof value === "string" && typeof expected === "string" && value.endsWith(expected);
55
- case "in":
56
- return Array.isArray(expected) && expected.includes(value);
57
- case "notIn":
58
- return Array.isArray(expected) && !expected.includes(value);
59
- case "exists":
60
- return value !== void 0 && value !== null;
61
- case "notExists":
62
- return value === void 0 || value === null;
63
- case "regex":
64
- if (typeof value !== "string" || typeof expected !== "string") return false;
65
- try {
66
- const regex = new RegExp(expected);
67
- return regex.test(value);
68
- } catch {
69
- return false;
70
- }
71
- default:
72
- return false;
73
- }
74
- }
75
- function evaluateFilterConditions(conditions, payload) {
76
- if (!conditions || conditions.length === 0) return true;
77
- return conditions.every((condition) => evaluateCondition(condition, payload));
78
- }
79
- function mapEventToContext(mapping, payload) {
80
- const context = {};
81
- if (!mapping || mapping.length === 0) return context;
82
- for (const item of mapping) {
83
- const value = getNestedValue(payload, item.sourceExpression);
84
- context[item.targetKey] = value !== void 0 ? value : item.defaultValue;
85
- }
86
- return context;
87
- }
88
- const triggerCache = /* @__PURE__ */ new Map();
89
- function getCacheKey(tenantId, organizationId) {
90
- return `${tenantId}:${organizationId}`;
91
- }
92
- async function loadLegacyTriggers(em, tenantId, organizationId) {
93
- const legacyTriggers = await em.find(
94
- WorkflowEventTrigger,
95
- {
96
- tenantId,
97
- organizationId,
98
- enabled: true,
99
- deletedAt: null
100
- },
101
- {
102
- orderBy: { priority: "DESC", createdAt: "ASC" }
103
- }
104
- );
105
- const definitionIds = [...new Set(legacyTriggers.map((t) => t.workflowDefinitionId))];
106
- const definitions = definitionIds.length > 0 ? await em.find(WorkflowDefinition, {
107
- id: { $in: definitionIds },
108
- enabled: true,
109
- deletedAt: null
110
- }) : [];
111
- const definitionMap = new Map(definitions.map((d) => [d.id, d]));
112
- return legacyTriggers.filter((t) => definitionMap.has(t.workflowDefinitionId)).map((t) => {
113
- const def = definitionMap.get(t.workflowDefinitionId);
114
- return {
115
- id: t.id,
116
- triggerId: t.id,
117
- name: t.name,
118
- description: t.description,
119
- eventPattern: t.eventPattern,
120
- config: t.config ?? null,
121
- enabled: t.enabled,
122
- priority: t.priority,
123
- workflowDefinitionId: t.workflowDefinitionId,
124
- workflowId: def.workflowId,
125
- workflowVersion: def.version,
126
- source: "legacy",
127
- tenantId: t.tenantId,
128
- organizationId: t.organizationId
129
- };
130
- });
131
- }
132
- async function loadEmbeddedTriggers(em, tenantId, organizationId) {
133
- const definitions = await em.find(
134
- WorkflowDefinition,
135
- {
136
- tenantId,
137
- organizationId,
138
- enabled: true,
139
- deletedAt: null
140
- }
141
- );
142
- const triggers = [];
143
- for (const def of definitions) {
144
- const embeddedTriggers = def.definition?.triggers;
145
- if (!embeddedTriggers || embeddedTriggers.length === 0) continue;
146
- for (const trigger of embeddedTriggers) {
147
- if (!trigger.enabled) continue;
148
- triggers.push({
149
- id: `${def.id}:${trigger.triggerId}`,
150
- triggerId: trigger.triggerId,
151
- name: trigger.name,
152
- description: trigger.description ?? null,
153
- eventPattern: trigger.eventPattern,
154
- config: trigger.config ?? null,
155
- enabled: trigger.enabled,
156
- priority: trigger.priority,
157
- workflowDefinitionId: def.id,
158
- workflowId: def.workflowId,
159
- workflowVersion: def.version,
160
- source: "embedded",
161
- tenantId,
162
- organizationId
163
- });
164
- }
165
- }
166
- return triggers;
167
- }
168
- async function loadTriggersForTenant(em, tenantId, organizationId, cacheService) {
169
- const cacheKey = getCacheKey(tenantId, organizationId);
170
- const cached = triggerCache.get(cacheKey);
171
- if (cached && Date.now() - cached.cachedAt < TRIGGER_CACHE_TTL) {
172
- return cached.triggers;
173
- }
174
- const [legacyTriggers, embeddedTriggers] = await Promise.all([
175
- loadLegacyTriggers(em, tenantId, organizationId),
176
- loadEmbeddedTriggers(em, tenantId, organizationId)
177
- ]);
178
- const allTriggers = [...legacyTriggers, ...embeddedTriggers].sort((a, b) => b.priority - a.priority);
179
- triggerCache.set(cacheKey, {
180
- triggers: allTriggers,
181
- cachedAt: Date.now()
182
- });
183
- return allTriggers;
184
- }
185
- function invalidateTriggerCache(tenantId, organizationId) {
186
- if (organizationId) {
187
- const cacheKey = getCacheKey(tenantId, organizationId);
188
- triggerCache.delete(cacheKey);
189
- } else {
190
- for (const key of triggerCache.keys()) {
191
- if (key.startsWith(`${tenantId}:`)) {
192
- triggerCache.delete(key);
193
- }
194
- }
195
- }
196
- }
197
- async function findMatchingTriggers(em, context) {
198
- const triggers = await loadTriggersForTenant(
199
- em,
200
- context.tenantId,
201
- context.organizationId
202
- );
203
- return triggers.filter((trigger) => {
204
- if (!matchEventPattern(context.eventName, trigger.eventPattern)) {
205
- return false;
206
- }
207
- if (!evaluateFilterConditions(trigger.config?.filterConditions, context.payload)) {
208
- return false;
209
- }
210
- return true;
211
- });
212
- }
213
- async function checkConcurrencyLimit(em, trigger) {
214
- const maxInstances = trigger.config?.maxConcurrentInstances;
215
- if (!maxInstances) return true;
216
- const runningCount = await em.count(WorkflowInstance, {
217
- definitionId: trigger.workflowDefinitionId,
218
- status: { $in: ["RUNNING", "WAITING_FOR_ACTIVITIES"] },
219
- tenantId: trigger.tenantId,
220
- organizationId: trigger.organizationId,
221
- deletedAt: null
222
- });
223
- return runningCount < maxInstances;
224
- }
225
- async function processEventTriggers(em, container, context) {
226
- const result = {
227
- triggered: 0,
228
- skipped: 0,
229
- errors: [],
230
- instances: []
231
- };
232
- const triggers = await findMatchingTriggers(em, context);
233
- if (triggers.length === 0) {
234
- return result;
235
- }
236
- for (const trigger of triggers) {
237
- try {
238
- const canStart = await checkConcurrencyLimit(em, trigger);
239
- if (!canStart) {
240
- console.log(`[workflow-trigger] Skipping trigger "${trigger.name}": max concurrent instances reached`);
241
- result.skipped++;
242
- continue;
243
- }
244
- const mappedContext = mapEventToContext(trigger.config?.contextMapping, context.payload);
245
- const payloadId = context.payload?.id;
246
- const payloadEntityType = context.payload?.entityType;
247
- const initialContext = {
248
- // Include raw event payload fields (e.g., id, organizationId, tenantId)
249
- ...context.payload,
250
- // Override with explicit mappings if provided
251
- ...mappedContext,
252
- __trigger: {
253
- triggerId: trigger.id,
254
- triggerName: trigger.name,
255
- eventName: context.eventName,
256
- eventPayload: context.payload,
257
- triggeredAt: (/* @__PURE__ */ new Date()).toISOString(),
258
- source: trigger.source
259
- }
260
- };
261
- const instance = await startWorkflow(em, {
262
- workflowId: trigger.workflowId,
263
- version: trigger.workflowVersion,
264
- initialContext,
265
- metadata: {
266
- initiatedBy: `trigger:${trigger.id}`,
267
- // Include entityId and entityType for widget discovery
268
- entityId: payloadId,
269
- entityType: payloadEntityType || trigger.config?.entityType,
270
- labels: {
271
- trigger_id: trigger.id,
272
- trigger_name: trigger.name,
273
- event_name: context.eventName,
274
- trigger_source: trigger.source
275
- }
276
- },
277
- tenantId: context.tenantId,
278
- organizationId: context.organizationId
279
- });
280
- result.triggered++;
281
- result.instances.push({
282
- triggerId: trigger.id,
283
- instanceId: instance.id
284
- });
285
- executeWorkflow(em.fork(), container, instance.id).catch((err) => {
286
- console.error(`[workflow-trigger] Error executing workflow ${instance.id}:`, err);
287
- });
288
- } catch (error) {
289
- const errorMessage = error instanceof Error ? error.message : String(error);
290
- console.error(`[workflow-trigger] Error processing trigger "${trigger.name}":`, error);
291
- result.errors.push({
292
- triggerId: trigger.id,
293
- error: errorMessage
294
- });
295
- }
296
- }
297
- return result;
298
- }
299
- export {
300
- evaluateFilterConditions,
301
- findMatchingTriggers,
302
- invalidateTriggerCache,
303
- loadTriggersForTenant,
304
- mapEventToContext,
305
- matchEventPattern,
306
- processEventTriggers
307
- };
308
- //# sourceMappingURL=event-trigger-service.js.map