@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
@@ -7,8 +7,6 @@ import checkoutDemoDefinition from '../examples/checkout-demo-definition.json'
7
7
  import guardRulesExample from '../examples/guard-rules-example.json'
8
8
  import salesPipelineDefinition from '../examples/sales-pipeline-definition.json'
9
9
  import simpleApprovalDefinition from '../examples/simple-approval-definition.json'
10
- import orderApprovalDefinition from '../examples/order-approval-definition.json'
11
- import orderApprovalGuardRules from '../examples/order-approval-guard-rules.json'
12
10
 
13
11
  export type WorkflowSeedScope = { tenantId: string; organizationId: string }
14
12
 
@@ -53,8 +51,6 @@ const embeddedSeeds: Record<string, unknown> = {
53
51
  'guard-rules-example.json': guardRulesExample,
54
52
  'sales-pipeline-definition.json': salesPipelineDefinition,
55
53
  'simple-approval-definition.json': simpleApprovalDefinition,
56
- 'order-approval-definition.json': orderApprovalDefinition,
57
- 'order-approval-guard-rules.json': orderApprovalGuardRules,
58
54
  }
59
55
 
60
56
  function readExampleJson<T>(fileName: string): T {
@@ -94,35 +90,16 @@ async function seedWorkflowDefinition(
94
90
  })
95
91
 
96
92
  if (existing) {
97
- // Check if the definition needs to be updated by comparing steps and transitions
98
- const seedStepCount = seed.definition.steps.length
99
- const existingStepCount = existing.definition.steps.length
100
- const seedTransitionCount = seed.definition.transitions.length
101
- const existingTransitionCount = existing.definition.transitions.length
102
-
103
- // Check for preConditions on transitions
104
- const seedHasTransitionPreConditions = seed.definition.transitions.some(
105
- (t: any) => t.preConditions && t.preConditions.length > 0
106
- )
107
- const existingHasTransitionPreConditions = existing.definition.transitions.some(
108
- (t: any) => t.preConditions && t.preConditions.length > 0
109
- )
110
-
111
- // Check for preConditions on START step
93
+ // Check if the definition needs to be updated (e.g., missing preConditions on START step)
112
94
  const seedStartStep = seed.definition.steps.find((s: any) => s.stepType === 'START')
113
95
  const existingStartStep = existing.definition.steps.find((s: any) => s.stepType === 'START')
114
- const seedHasStartPreConditions = seedStartStep?.preConditions && seedStartStep.preConditions.length > 0
115
- const existingHasStartPreConditions = existingStartStep?.preConditions && existingStartStep.preConditions.length > 0
116
-
117
- // Update if structure has changed
118
- const needsUpdate =
119
- seedStepCount !== existingStepCount ||
120
- seedTransitionCount !== existingTransitionCount ||
121
- (seedHasStartPreConditions && !existingHasStartPreConditions) ||
122
- (seedHasTransitionPreConditions && !existingHasTransitionPreConditions)
123
-
124
- if (needsUpdate) {
125
- console.log(`[seed] Updating workflow ${workflowId} (steps: ${existingStepCount}→${seedStepCount}, transitions: ${existingTransitionCount}→${seedTransitionCount})`)
96
+
97
+ const seedHasPreConditions = seedStartStep?.preConditions && seedStartStep.preConditions.length > 0
98
+ const existingHasPreConditions = existingStartStep?.preConditions && existingStartStep.preConditions.length > 0
99
+
100
+ // Update if seed has preConditions but existing doesn't
101
+ if (seedHasPreConditions && !existingHasPreConditions) {
102
+ console.log(`[seed] Updating workflow ${workflowId} with preConditions`)
126
103
  existing.definition = seed.definition
127
104
  await em.flush()
128
105
  return true
@@ -195,7 +172,4 @@ export async function seedExampleWorkflows(em: EntityManager, scope: WorkflowSee
195
172
  await seedGuardRules(em, scope, 'guard-rules-example.json')
196
173
  await seedWorkflowDefinition(em, scope, 'sales-pipeline-definition.json')
197
174
  await seedWorkflowDefinition(em, scope, 'simple-approval-definition.json')
198
- // Seed order approval guard rules before the workflow definition
199
- await seedGuardRules(em, scope, 'order-approval-guard-rules.json')
200
- await seedWorkflowDefinition(em, scope, 'order-approval-definition.json')
201
175
  }
@@ -128,69 +128,59 @@ export async function validateWorkflowStart(
128
128
  const validatedRules: ValidatedRule[] = []
129
129
 
130
130
  for (const condition of preConditions) {
131
- // Execute rule directly by string rule_id
132
- const result = await ruleEngine.executeRuleByRuleId(em, {
133
- ruleId: condition.ruleId, // String identifier like "workflow_checkout_inventory_available"
131
+ const ruleContext: ruleEngine.RuleEngineContext = {
132
+ entityType: `workflow:${workflowId}:start`,
133
+ entityId: 'pre_start_validation',
134
+ eventType: 'validate_start',
134
135
  data: {
135
136
  workflowId,
136
137
  workflowContext: context,
137
138
  },
138
139
  tenantId,
139
140
  organizationId,
140
- entityType: `workflow:${workflowId}:start`,
141
- entityId: 'pre_start_validation',
142
- eventType: 'validate_start',
143
141
  dryRun: true, // Don't log execution during validation
144
- })
142
+ }
145
143
 
146
- validatedRules.push({
147
- ruleId: condition.ruleId,
148
- passed: result.conditionResult,
149
- executionTime: result.executionTime,
144
+ // Find applicable rules for this context
145
+ const rules = await ruleEngine.findApplicableRules(em, {
146
+ entityType: ruleContext.entityType,
147
+ eventType: ruleContext.eventType,
148
+ tenantId,
149
+ organizationId,
150
+ ruleType: 'GUARD',
150
151
  })
151
152
 
152
- // Handle rule not found
153
- if (result.error === 'Rule not found') {
153
+ const rule = rules.find(r => r.ruleId === condition.ruleId)
154
+
155
+ if (!rule) {
156
+ // Rule not found - if required, this is an error
154
157
  if (condition.required) {
155
158
  errors.push({
156
159
  ruleId: condition.ruleId,
157
- message: getLocalizedMessage(condition, null, locale, `Business rule not found: ${condition.ruleId}`),
160
+ message: getLocalizedMessage(condition, null, locale, `Business rule '${condition.ruleId}' not found`),
158
161
  code: 'RULE_NOT_FOUND',
159
162
  })
163
+ validatedRules.push({ ruleId: condition.ruleId, passed: false })
160
164
  }
161
165
  continue
162
166
  }
163
167
 
164
- // Handle disabled rule
165
- if (result.error === 'Rule is disabled') {
166
- if (condition.required) {
167
- errors.push({
168
- ruleId: condition.ruleId,
169
- message: getLocalizedMessage(condition, null, locale, `Business rule is disabled: ${result.ruleName}`),
170
- code: 'RULE_DISABLED',
171
- })
172
- }
173
- continue
174
- }
168
+ // Execute the single rule
169
+ const result = await ruleEngine.executeSingleRule(em, rule, ruleContext)
175
170
 
176
- // Handle other errors (not yet effective, expired, etc.)
177
- if (result.error && condition.required) {
178
- errors.push({
179
- ruleId: condition.ruleId,
180
- message: getLocalizedMessage(condition, null, locale, `Rule error: ${result.error}`),
181
- code: 'RULE_ERROR',
182
- })
183
- continue
184
- }
171
+ validatedRules.push({
172
+ ruleId: condition.ruleId,
173
+ passed: result.conditionResult,
174
+ executionTime: result.executionTime,
175
+ })
185
176
 
186
- // Handle condition failure
187
177
  if (!result.conditionResult && condition.required) {
188
- // Get localized message from condition or use default with rule name
178
+ // Get localized message from condition, rule failure actions, or default
189
179
  const message = getLocalizedMessage(
190
180
  condition,
191
- null,
181
+ rule,
192
182
  locale,
193
- `Pre-condition '${result.ruleName || condition.ruleId}' failed`
183
+ `Pre-condition '${rule.ruleName || condition.ruleId}' failed`
194
184
  )
195
185
  errors.push({
196
186
  ruleId: condition.ruleId,
@@ -12,6 +12,7 @@
12
12
 
13
13
  import { EntityManager } from '@mikro-orm/core'
14
14
  import type { AwilixContainer } from 'awilix'
15
+ import type { EventBus } from '@open-mercato/events'
15
16
  import {
16
17
  WorkflowInstance,
17
18
  WorkflowDefinition,
@@ -19,6 +20,7 @@ import {
19
20
  } from '../data/entities'
20
21
  import * as ruleEvaluator from '../../business_rules/lib/rule-evaluator'
21
22
  import * as ruleEngine from '../../business_rules/lib/rule-engine'
23
+ import type { RuleEngineContext } from '../../business_rules/lib/rule-engine'
22
24
  import * as activityExecutor from './activity-executor'
23
25
  import type { ActivityDefinition } from './activity-executor'
24
26
  import * as stepHandler from './step-handler'
@@ -193,15 +195,11 @@ export async function evaluateTransition(
193
195
  /**
194
196
  * Find all valid transitions from current step
195
197
  *
196
- * This function evaluates both inline conditions AND preConditions (business rules)
197
- * to determine which transitions are truly valid. This is important for decision
198
- * branching where multiple transitions exist with different preConditions.
199
- *
200
198
  * @param em - Entity manager
201
199
  * @param instance - Workflow instance
202
200
  * @param fromStepId - Current step ID
203
201
  * @param context - Evaluation context
204
- * @returns Array of evaluation results for all transitions, sorted by priority (desc)
202
+ * @returns Array of evaluation results for all transitions
205
203
  */
206
204
  export async function findValidTransitions(
207
205
  em: EntityManager,
@@ -219,17 +217,16 @@ export async function findValidTransitions(
219
217
  return []
220
218
  }
221
219
 
222
- // Find all transitions from current step, sorted by priority (highest first)
223
- const transitions = (definition.definition.transitions || [])
224
- .filter((t: any) => t.fromStepId === fromStepId)
225
- .sort((a: any, b: any) => (b.priority || 0) - (a.priority || 0))
220
+ // Find all transitions from current step
221
+ const transitions = (definition.definition.transitions || []).filter(
222
+ (t: any) => t.fromStepId === fromStepId
223
+ )
226
224
 
227
- // Evaluate each transition including preConditions
225
+ // Evaluate each transition
228
226
  const results: TransitionEvaluationResult[] = []
229
227
 
230
228
  for (const transition of transitions) {
231
- // First check inline condition
232
- const conditionResult = await evaluateTransition(
229
+ const result = await evaluateTransition(
233
230
  em,
234
231
  instance,
235
232
  fromStepId,
@@ -237,42 +234,7 @@ export async function findValidTransitions(
237
234
  context
238
235
  )
239
236
 
240
- if (!conditionResult.isValid) {
241
- results.push(conditionResult)
242
- continue
243
- }
244
-
245
- // Also evaluate preConditions if they exist
246
- const preConditions = transition.preConditions || []
247
- if (preConditions.length > 0) {
248
- const preConditionsResult = await evaluatePreConditions(
249
- em,
250
- instance,
251
- transition,
252
- context as TransitionExecutionContext
253
- )
254
-
255
- if (!preConditionsResult.allowed) {
256
- // Transition is invalid due to preConditions
257
- const failedRules = preConditionsResult.executedRules
258
- .filter((r) => !r.conditionResult)
259
- .map((r) => r.rule.ruleId || r.rule.ruleName)
260
-
261
- results.push({
262
- isValid: false,
263
- transition,
264
- reason: `Pre-conditions failed: ${failedRules.join(', ')}`,
265
- failedConditions: failedRules,
266
- })
267
- continue
268
- }
269
- }
270
-
271
- // Transition is valid (both condition and preConditions passed)
272
- results.push({
273
- ...conditionResult,
274
- transition,
275
- })
237
+ results.push(result)
276
238
  }
277
239
 
278
240
  return results
@@ -310,6 +272,13 @@ export async function executeTransition(
310
272
  context: TransitionExecutionContext
311
273
  ): Promise<TransitionExecutionResult> {
312
274
  try {
275
+ let eventBus: Pick<EventBus, 'emitEvent'> | null = null
276
+ try {
277
+ eventBus = container.resolve('eventBus') as EventBus
278
+ } catch {
279
+ eventBus = null
280
+ }
281
+
313
282
  // First, evaluate if transition is valid
314
283
  const evaluation = await evaluateTransition(
315
284
  em,
@@ -333,7 +302,8 @@ export async function executeTransition(
333
302
  em,
334
303
  instance,
335
304
  transition,
336
- context
305
+ context,
306
+ eventBus
337
307
  )
338
308
 
339
309
  if (!preConditionsResult.allowed) {
@@ -544,7 +514,8 @@ export async function executeTransition(
544
514
  em,
545
515
  instance,
546
516
  transition,
547
- context
517
+ context,
518
+ eventBus
548
519
  )
549
520
 
550
521
  if (!postConditionsResult.allowed) {
@@ -688,10 +659,6 @@ async function evaluateTransitionConditions(
688
659
  * Pre-conditions are GUARD rules that must pass before transition can execute.
689
660
  * If any GUARD rule fails, the transition is blocked.
690
661
  *
691
- * If the transition defines specific preConditions with ruleIds, those are
692
- * executed directly via executeRuleByRuleId. Otherwise, falls back to
693
- * discovery-based execution via executeRules.
694
- *
695
662
  * @param em - Entity manager
696
663
  * @param instance - Workflow instance
697
664
  * @param transition - Transition definition
@@ -702,7 +669,8 @@ async function evaluatePreConditions(
702
669
  em: EntityManager,
703
670
  instance: WorkflowInstance,
704
671
  transition: any,
705
- context: TransitionExecutionContext
672
+ context: TransitionExecutionContext,
673
+ eventBus: Pick<EventBus, 'emitEvent'> | null
706
674
  ): Promise<ruleEngine.RuleEngineResult> {
707
675
  try {
708
676
  // Load workflow definition to get workflow ID
@@ -718,88 +686,32 @@ async function evaluatePreConditions(
718
686
  }
719
687
  }
720
688
 
721
- // Check if transition has specific preConditions defined
722
- const preConditions = transition.preConditions || []
723
-
724
- // If no pre-conditions defined, allow transition
725
- if (preConditions.length === 0) {
726
- return {
727
- allowed: true,
728
- executedRules: [],
729
- totalExecutionTime: 0,
730
- }
731
- }
732
-
733
- // Execute each pre-condition rule directly by ruleId
734
- const startTime = Date.now()
735
- const executedRules: ruleEngine.RuleExecutionResult[] = []
736
- const errors: string[] = []
737
- let allowed = true
738
-
739
- for (const condition of preConditions) {
740
- const result = await ruleEngine.executeRuleByRuleId(em, {
741
- ruleId: condition.ruleId, // String identifier
742
- data: {
743
- workflowInstanceId: instance.id,
744
- workflowId: definition.workflowId,
745
- fromStepId: transition.fromStepId,
746
- toStepId: transition.toStepId,
747
- workflowContext: {
748
- ...instance.context,
749
- ...context.workflowContext,
750
- },
751
- triggerData: context.triggerData,
689
+ // Build rule engine context
690
+ const ruleContext: RuleEngineContext = {
691
+ entityType: `workflow:${definition.workflowId}:transition`,
692
+ entityId: transition.transitionId || `${transition.fromStepId}->${transition.toStepId}`,
693
+ eventType: 'pre_transition',
694
+ data: {
695
+ workflowInstanceId: instance.id,
696
+ workflowId: definition.workflowId,
697
+ fromStepId: transition.fromStepId,
698
+ toStepId: transition.toStepId,
699
+ workflowContext: {
700
+ ...instance.context,
701
+ ...context.workflowContext,
752
702
  },
753
- user: context.userId ? { id: context.userId } : undefined,
754
- tenantId: instance.tenantId,
755
- organizationId: instance.organizationId,
756
- executedBy: context.userId,
757
- entityType: `workflow:${definition.workflowId}:transition`,
758
- entityId: transition.transitionId || `${transition.fromStepId}->${transition.toStepId}`,
759
- eventType: 'pre_transition',
760
- })
761
-
762
- // Create a compatible RuleExecutionResult for tracking
763
- // We don't have the full BusinessRule entity, but we can create a partial result
764
- const ruleResult: ruleEngine.RuleExecutionResult = {
765
- rule: {
766
- ruleId: result.ruleId,
767
- ruleName: result.ruleName,
768
- ruleType: 'GUARD',
769
- } as any,
770
- conditionResult: result.conditionResult,
771
- actionsExecuted: result.actionsExecuted,
772
- executionTime: result.executionTime,
773
- error: result.error,
774
- logId: result.logId,
775
- }
776
- executedRules.push(ruleResult)
777
-
778
- // Handle rule errors
779
- if (result.error) {
780
- // Rule not found, disabled, or other errors
781
- const isRequired = condition.required !== false // Default to required
782
- if (isRequired) {
783
- allowed = false
784
- errors.push(`Rule '${result.ruleId}': ${result.error}`)
785
- }
786
- continue
787
- }
788
-
789
- // If required and condition failed, block transition
790
- const isRequired = condition.required !== false // Default to required
791
- if (isRequired && !result.conditionResult) {
792
- allowed = false
793
- errors.push(`Pre-condition '${result.ruleName || result.ruleId}' failed`)
794
- }
703
+ triggerData: context.triggerData,
704
+ },
705
+ user: context.userId ? { id: context.userId } : undefined,
706
+ tenantId: instance.tenantId,
707
+ organizationId: instance.organizationId,
708
+ executedBy: context.userId,
795
709
  }
796
710
 
797
- return {
798
- allowed,
799
- executedRules,
800
- totalExecutionTime: Date.now() - startTime,
801
- errors: errors.length > 0 ? errors : undefined,
802
- }
711
+ // Execute rules - only GUARD rules will affect the 'allowed' status
712
+ const result = await ruleEngine.executeRules(em, ruleContext, { eventBus })
713
+
714
+ return result
803
715
  } catch (error) {
804
716
  console.error('Error evaluating pre-conditions:', error)
805
717
  return {
@@ -817,9 +729,6 @@ async function evaluatePreConditions(
817
729
  * Post-conditions are GUARD rules that should pass after transition executes.
818
730
  * Unlike pre-conditions, post-condition failures are logged but don't block the transition.
819
731
  *
820
- * If the transition defines specific postConditions with ruleIds, those are
821
- * executed directly via executeRuleByRuleId. Otherwise, returns allowed: true.
822
- *
823
732
  * @param em - Entity manager
824
733
  * @param instance - Workflow instance
825
734
  * @param transition - Transition definition
@@ -830,7 +739,8 @@ async function evaluatePostConditions(
830
739
  em: EntityManager,
831
740
  instance: WorkflowInstance,
832
741
  transition: any,
833
- context: TransitionExecutionContext
742
+ context: TransitionExecutionContext,
743
+ eventBus: Pick<EventBus, 'emitEvent'> | null
834
744
  ): Promise<ruleEngine.RuleEngineResult> {
835
745
  try {
836
746
  // Load workflow definition to get workflow ID
@@ -846,83 +756,32 @@ async function evaluatePostConditions(
846
756
  }
847
757
  }
848
758
 
849
- // Check if transition has specific postConditions defined
850
- const postConditions = transition.postConditions || []
851
-
852
- // If no post-conditions defined, allow
853
- if (postConditions.length === 0) {
854
- return {
855
- allowed: true,
856
- executedRules: [],
857
- totalExecutionTime: 0,
858
- }
859
- }
860
-
861
- // Execute each post-condition rule directly by ruleId
862
- const startTime = Date.now()
863
- const executedRules: ruleEngine.RuleExecutionResult[] = []
864
- const errors: string[] = []
865
- let allowed = true
866
-
867
- for (const condition of postConditions) {
868
- const result = await ruleEngine.executeRuleByRuleId(em, {
869
- ruleId: condition.ruleId, // String identifier
870
- data: {
871
- workflowInstanceId: instance.id,
872
- workflowId: definition.workflowId,
873
- fromStepId: transition.fromStepId,
874
- toStepId: transition.toStepId,
875
- workflowContext: {
876
- ...instance.context,
877
- ...context.workflowContext,
878
- },
879
- triggerData: context.triggerData,
759
+ // Build rule engine context
760
+ const ruleContext: RuleEngineContext = {
761
+ entityType: `workflow:${definition.workflowId}:transition`,
762
+ entityId: transition.transitionId || `${transition.fromStepId}->${transition.toStepId}`,
763
+ eventType: 'post_transition',
764
+ data: {
765
+ workflowInstanceId: instance.id,
766
+ workflowId: definition.workflowId,
767
+ fromStepId: transition.fromStepId,
768
+ toStepId: transition.toStepId,
769
+ workflowContext: {
770
+ ...instance.context,
771
+ ...context.workflowContext,
880
772
  },
881
- user: context.userId ? { id: context.userId } : undefined,
882
- tenantId: instance.tenantId,
883
- organizationId: instance.organizationId,
884
- executedBy: context.userId,
885
- entityType: `workflow:${definition.workflowId}:transition`,
886
- entityId: transition.transitionId || `${transition.fromStepId}->${transition.toStepId}`,
887
- eventType: 'post_transition',
888
- })
889
-
890
- // Create a compatible RuleExecutionResult for tracking
891
- const ruleResult: ruleEngine.RuleExecutionResult = {
892
- rule: {
893
- ruleId: result.ruleId,
894
- ruleName: result.ruleName,
895
- ruleType: 'GUARD',
896
- } as any,
897
- conditionResult: result.conditionResult,
898
- actionsExecuted: result.actionsExecuted,
899
- executionTime: result.executionTime,
900
- error: result.error,
901
- logId: result.logId,
902
- }
903
- executedRules.push(ruleResult)
904
-
905
- // Handle rule errors
906
- if (result.error) {
907
- errors.push(`Rule '${result.ruleId}': ${result.error}`)
908
- // Post-conditions don't block, but track the failure
909
- allowed = false
910
- continue
911
- }
912
-
913
- // Track condition failures (post-conditions are warnings, not blockers)
914
- if (!result.conditionResult) {
915
- allowed = false
916
- errors.push(`Post-condition '${result.ruleName || result.ruleId}' failed`)
917
- }
773
+ triggerData: context.triggerData,
774
+ },
775
+ user: context.userId ? { id: context.userId } : undefined,
776
+ tenantId: instance.tenantId,
777
+ organizationId: instance.organizationId,
778
+ executedBy: context.userId,
918
779
  }
919
780
 
920
- return {
921
- allowed,
922
- executedRules,
923
- totalExecutionTime: Date.now() - startTime,
924
- errors: errors.length > 0 ? errors : undefined,
925
- }
781
+ // Execute rules
782
+ const result = await ruleEngine.executeRules(em, ruleContext, { eventBus })
783
+
784
+ return result
926
785
  } catch (error) {
927
786
  console.error('Error evaluating post-conditions:', error)
928
787
  return {
@@ -0,0 +1,25 @@
1
+ import type { NotificationTypeDefinition } from '@open-mercato/shared/modules/notifications/types'
2
+
3
+ export const notificationTypes: NotificationTypeDefinition[] = [
4
+ {
5
+ type: 'workflows.task.assigned',
6
+ module: 'workflows',
7
+ titleKey: 'workflows.notifications.task.assigned.title',
8
+ bodyKey: 'workflows.notifications.task.assigned.body',
9
+ icon: 'clipboard-list',
10
+ severity: 'info',
11
+ actions: [
12
+ {
13
+ id: 'view',
14
+ labelKey: 'common.view',
15
+ variant: 'outline',
16
+ href: '/backend/workflows/tasks/{sourceEntityId}',
17
+ icon: 'external-link',
18
+ },
19
+ ],
20
+ linkHref: '/backend/workflows/tasks/{sourceEntityId}',
21
+ expiresAfterHours: 168, // 7 days
22
+ },
23
+ ]
24
+
25
+ export default notificationTypes
@@ -0,0 +1,53 @@
1
+ import type { EntityManager } from '@mikro-orm/postgresql'
2
+ import { resolveNotificationService } from '../../notifications/lib/notificationService'
3
+ import { buildNotificationFromType } from '../../notifications/lib/notificationBuilder'
4
+ import { notificationTypes } from '../notifications'
5
+
6
+ export const metadata = {
7
+ event: 'workflows.task.assigned',
8
+ persistent: true,
9
+ id: 'workflows:task-assigned-notification',
10
+ }
11
+
12
+ type TaskAssignedPayload = {
13
+ taskId: string
14
+ taskName: string
15
+ workflowName: string
16
+ assignedUserId: string
17
+ dueDate?: string | null
18
+ tenantId: string
19
+ organizationId?: string | null
20
+ }
21
+
22
+ type ResolverContext = {
23
+ resolve: <T = unknown>(name: string) => T
24
+ }
25
+
26
+ export default async function handle(payload: TaskAssignedPayload, ctx: ResolverContext) {
27
+ if (!payload.assignedUserId) return
28
+
29
+ try {
30
+ const notificationService = resolveNotificationService(ctx)
31
+ const typeDef = notificationTypes.find((type) => type.type === 'workflows.task.assigned')
32
+ if (!typeDef) return
33
+
34
+ const notificationInput = buildNotificationFromType(typeDef, {
35
+ recipientUserId: payload.assignedUserId,
36
+ bodyVariables: {
37
+ taskName: payload.taskName,
38
+ workflowName: payload.workflowName,
39
+ dueDate: payload.dueDate ?? '',
40
+ },
41
+ sourceEntityType: 'workflows:user_task',
42
+ sourceEntityId: payload.taskId,
43
+ linkHref: `/backend/workflows/tasks/${payload.taskId}`,
44
+ })
45
+
46
+ await notificationService.create(notificationInput, {
47
+ tenantId: payload.tenantId,
48
+ organizationId: payload.organizationId ?? null,
49
+ })
50
+ } catch (err) {
51
+ console.error('[workflows:task-assigned-notification] Failed to create notification:', err)
52
+ }
53
+ }
@@ -1,33 +0,0 @@
1
- const id = "id";
2
- const name = "name";
3
- const description = "description";
4
- const workflow_definition_id = "workflow_definition_id";
5
- const event_pattern = "event_pattern";
6
- const config = "config";
7
- const enabled = "enabled";
8
- const priority = "priority";
9
- const tenant_id = "tenant_id";
10
- const organization_id = "organization_id";
11
- const created_by = "created_by";
12
- const updated_by = "updated_by";
13
- const created_at = "created_at";
14
- const updated_at = "updated_at";
15
- const deleted_at = "deleted_at";
16
- export {
17
- config,
18
- created_at,
19
- created_by,
20
- deleted_at,
21
- description,
22
- enabled,
23
- event_pattern,
24
- id,
25
- name,
26
- organization_id,
27
- priority,
28
- tenant_id,
29
- updated_at,
30
- updated_by,
31
- workflow_definition_id
32
- };
33
- //# sourceMappingURL=index.js.map