@open-mercato/core 0.4.2-canary-ed15f2e753 → 0.4.2-canary-e2aeb1a7bf

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 (711) 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/api_keys/setup.js +11 -0
  12. package/dist/modules/api_keys/setup.js.map +7 -0
  13. package/dist/modules/attachments/components/AttachmentLibrary.js +5 -1
  14. package/dist/modules/attachments/components/AttachmentLibrary.js.map +2 -2
  15. package/dist/modules/attachments/components/AttachmentPartitionSettings.js +2 -0
  16. package/dist/modules/attachments/components/AttachmentPartitionSettings.js.map +2 -2
  17. package/dist/modules/attachments/lib/assignmentDetails.js +31 -17
  18. package/dist/modules/attachments/lib/assignmentDetails.js.map +2 -2
  19. package/dist/modules/attachments/lib/partitions.js +3 -3
  20. package/dist/modules/attachments/lib/partitions.js.map +2 -2
  21. package/dist/modules/attachments/setup.js +11 -0
  22. package/dist/modules/attachments/setup.js.map +7 -0
  23. package/dist/modules/audit_logs/setup.js +12 -0
  24. package/dist/modules/audit_logs/setup.js.map +7 -0
  25. package/dist/modules/auth/api/admin/nav.js +4 -3
  26. package/dist/modules/auth/api/admin/nav.js.map +2 -2
  27. package/dist/modules/auth/api/login.js +25 -6
  28. package/dist/modules/auth/api/login.js.map +2 -2
  29. package/dist/modules/auth/api/profile/route.js +157 -0
  30. package/dist/modules/auth/api/profile/route.js.map +7 -0
  31. package/dist/modules/auth/api/reset/confirm.js +25 -2
  32. package/dist/modules/auth/api/reset/confirm.js.map +2 -2
  33. package/dist/modules/auth/api/reset.js +23 -0
  34. package/dist/modules/auth/api/reset.js.map +2 -2
  35. package/dist/modules/auth/api/sidebar/preferences/route.js +14 -9
  36. package/dist/modules/auth/api/sidebar/preferences/route.js.map +2 -2
  37. package/dist/modules/auth/api/users/route.js +4 -2
  38. package/dist/modules/auth/api/users/route.js.map +2 -2
  39. package/dist/modules/auth/backend/auth/profile/page.js +141 -0
  40. package/dist/modules/auth/backend/auth/profile/page.js.map +7 -0
  41. package/dist/modules/auth/backend/auth/profile/page.meta.js +13 -0
  42. package/dist/modules/auth/backend/auth/profile/page.meta.js.map +7 -0
  43. package/dist/modules/auth/backend/roles/[id]/edit/page.js +4 -1
  44. package/dist/modules/auth/backend/roles/[id]/edit/page.js.map +2 -2
  45. package/dist/modules/auth/backend/roles/page.js +3 -3
  46. package/dist/modules/auth/backend/roles/page.js.map +2 -2
  47. package/dist/modules/auth/backend/users/[id]/edit/page.js +18 -3
  48. package/dist/modules/auth/backend/users/[id]/edit/page.js.map +2 -2
  49. package/dist/modules/auth/backend/users/create/page.js +15 -2
  50. package/dist/modules/auth/backend/users/create/page.js.map +2 -2
  51. package/dist/modules/auth/backend/users/page.js +3 -3
  52. package/dist/modules/auth/backend/users/page.js.map +2 -2
  53. package/dist/modules/auth/cli.js +25 -11
  54. package/dist/modules/auth/cli.js.map +2 -2
  55. package/dist/modules/auth/commands/users.js +59 -2
  56. package/dist/modules/auth/commands/users.js.map +2 -2
  57. package/dist/modules/auth/data/validators.js +6 -3
  58. package/dist/modules/auth/data/validators.js.map +2 -2
  59. package/dist/modules/auth/frontend/login.js +112 -3
  60. package/dist/modules/auth/frontend/login.js.map +2 -2
  61. package/dist/modules/auth/frontend/reset/[token]/page.js +20 -10
  62. package/dist/modules/auth/frontend/reset/[token]/page.js.map +2 -2
  63. package/dist/modules/auth/lib/setup-app.js +70 -167
  64. package/dist/modules/auth/lib/setup-app.js.map +2 -2
  65. package/dist/modules/auth/notifications.js +112 -0
  66. package/dist/modules/auth/notifications.js.map +7 -0
  67. package/dist/modules/auth/services/authService.js +24 -3
  68. package/dist/modules/auth/services/authService.js.map +2 -2
  69. package/dist/modules/auth/setup.js +11 -0
  70. package/dist/modules/auth/setup.js.map +7 -0
  71. package/dist/modules/business_rules/api/execute/route.js +7 -1
  72. package/dist/modules/business_rules/api/execute/route.js.map +2 -2
  73. package/dist/modules/business_rules/backend/rules/page.js +4 -0
  74. package/dist/modules/business_rules/backend/rules/page.js.map +2 -2
  75. package/dist/modules/business_rules/backend/sets/page.js +3 -0
  76. package/dist/modules/business_rules/backend/sets/page.js.map +2 -2
  77. package/dist/modules/business_rules/cli.js +2 -1
  78. package/dist/modules/business_rules/cli.js.map +2 -2
  79. package/dist/modules/business_rules/data/validators.js +0 -34
  80. package/dist/modules/business_rules/data/validators.js.map +2 -2
  81. package/dist/modules/business_rules/index.js +1 -21
  82. package/dist/modules/business_rules/index.js.map +2 -2
  83. package/dist/modules/business_rules/lib/rule-engine.js +34 -185
  84. package/dist/modules/business_rules/lib/rule-engine.js.map +2 -2
  85. package/dist/modules/business_rules/notifications.js +28 -0
  86. package/dist/modules/business_rules/notifications.js.map +7 -0
  87. package/dist/modules/business_rules/setup.js +11 -0
  88. package/dist/modules/business_rules/setup.js.map +7 -0
  89. package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js +37 -0
  90. package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js.map +7 -0
  91. package/dist/modules/catalog/components/PriceKindSettings.js +2 -0
  92. package/dist/modules/catalog/components/PriceKindSettings.js.map +2 -2
  93. package/dist/modules/catalog/components/categories/CategoriesDataTable.js +2 -2
  94. package/dist/modules/catalog/components/categories/CategoriesDataTable.js.map +2 -2
  95. package/dist/modules/catalog/components/products/ProductsDataTable.js +2 -0
  96. package/dist/modules/catalog/components/products/ProductsDataTable.js.map +2 -2
  97. package/dist/modules/catalog/notifications.js +28 -0
  98. package/dist/modules/catalog/notifications.js.map +7 -0
  99. package/dist/modules/catalog/setup.js +22 -0
  100. package/dist/modules/catalog/setup.js.map +7 -0
  101. package/dist/modules/catalog/subscribers/low-stock-notification.js +38 -0
  102. package/dist/modules/catalog/subscribers/low-stock-notification.js.map +7 -0
  103. package/dist/modules/configs/cli.js +6 -0
  104. package/dist/modules/configs/cli.js.map +2 -2
  105. package/dist/modules/configs/components/CachePanel.js +4 -4
  106. package/dist/modules/configs/components/CachePanel.js.map +2 -2
  107. package/dist/modules/configs/lib/system-status.js +48 -1
  108. package/dist/modules/configs/lib/system-status.js.map +2 -2
  109. package/dist/modules/configs/lib/upgrade-actions.js +1 -302
  110. package/dist/modules/configs/lib/upgrade-actions.js.map +2 -2
  111. package/dist/modules/configs/setup.js +16 -0
  112. package/dist/modules/configs/setup.js.map +7 -0
  113. package/dist/modules/currencies/backend/currencies/page.js +3 -0
  114. package/dist/modules/currencies/backend/currencies/page.js.map +2 -2
  115. package/dist/modules/currencies/backend/exchange-rates/page.js +2 -0
  116. package/dist/modules/currencies/backend/exchange-rates/page.js.map +2 -2
  117. package/dist/modules/currencies/setup.js +16 -0
  118. package/dist/modules/currencies/setup.js.map +7 -0
  119. package/dist/modules/customers/backend/customers/companies/page.js +3 -0
  120. package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
  121. package/dist/modules/customers/backend/customers/deals/page.js +3 -0
  122. package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
  123. package/dist/modules/customers/backend/customers/people/page.js +3 -0
  124. package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
  125. package/dist/modules/customers/commands/deals.js +31 -0
  126. package/dist/modules/customers/commands/deals.js.map +2 -2
  127. package/dist/modules/customers/components/CustomerTodosTable.js +1 -0
  128. package/dist/modules/customers/components/CustomerTodosTable.js.map +2 -2
  129. package/dist/modules/customers/notifications.js +48 -0
  130. package/dist/modules/customers/notifications.js.map +7 -0
  131. package/dist/modules/customers/setup.js +36 -0
  132. package/dist/modules/customers/setup.js.map +7 -0
  133. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js +2 -1
  134. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js.map +2 -2
  135. package/dist/modules/customers/widgets/dashboard/new-customers/widget.js +2 -1
  136. package/dist/modules/customers/widgets/dashboard/new-customers/widget.js.map +2 -2
  137. package/dist/modules/customers/widgets/dashboard/new-deals/widget.js +2 -1
  138. package/dist/modules/customers/widgets/dashboard/new-deals/widget.js.map +2 -2
  139. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js +2 -1
  140. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js.map +2 -2
  141. package/dist/modules/dashboards/cli.js +44 -5
  142. package/dist/modules/dashboards/cli.js.map +2 -2
  143. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js +16 -11
  144. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js.map +3 -3
  145. package/dist/modules/dashboards/lib/role-widgets.js +58 -0
  146. package/dist/modules/dashboards/lib/role-widgets.js.map +7 -0
  147. package/dist/modules/dashboards/services/widgetDataService.js +139 -3
  148. package/dist/modules/dashboards/services/widgetDataService.js.map +2 -2
  149. package/dist/modules/dashboards/setup.js +27 -0
  150. package/dist/modules/dashboards/setup.js.map +7 -0
  151. package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js +2 -1
  152. package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js.map +2 -2
  153. package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js +2 -1
  154. package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js.map +2 -2
  155. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js +2 -1
  156. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js.map +2 -2
  157. package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js +2 -1
  158. package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js.map +2 -2
  159. package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js +2 -1
  160. package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js.map +2 -2
  161. package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js +2 -1
  162. package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js.map +2 -2
  163. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js +2 -1
  164. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js.map +2 -2
  165. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js +2 -1
  166. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js.map +2 -2
  167. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js +2 -1
  168. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js.map +2 -2
  169. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js +2 -1
  170. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js.map +2 -2
  171. package/dist/modules/dictionaries/components/DictionaryTable.js +2 -0
  172. package/dist/modules/dictionaries/components/DictionaryTable.js.map +2 -2
  173. package/dist/modules/dictionaries/setup.js +12 -0
  174. package/dist/modules/dictionaries/setup.js.map +7 -0
  175. package/dist/modules/directory/api/get/tenants/lookup.js +70 -0
  176. package/dist/modules/directory/api/get/tenants/lookup.js.map +7 -0
  177. package/dist/modules/directory/backend/directory/organizations/page.js +2 -2
  178. package/dist/modules/directory/backend/directory/organizations/page.js.map +2 -2
  179. package/dist/modules/directory/backend/directory/tenants/page.js +2 -2
  180. package/dist/modules/directory/backend/directory/tenants/page.js.map +2 -2
  181. package/dist/modules/directory/setup.js +12 -0
  182. package/dist/modules/directory/setup.js.map +7 -0
  183. package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js +2 -2
  184. package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js.map +2 -2
  185. package/dist/modules/entities/components/SystemEntitiesTable.js +1 -1
  186. package/dist/modules/entities/components/SystemEntitiesTable.js.map +2 -2
  187. package/dist/modules/entities/components/UserEntitiesTable.js +2 -2
  188. package/dist/modules/entities/components/UserEntitiesTable.js.map +2 -2
  189. package/dist/modules/entities/setup.js +11 -0
  190. package/dist/modules/entities/setup.js.map +7 -0
  191. package/dist/modules/feature_toggles/components/FeatureTogglesTable.js +3 -3
  192. package/dist/modules/feature_toggles/components/FeatureTogglesTable.js.map +2 -2
  193. package/dist/modules/feature_toggles/components/OverridesTable.js +1 -1
  194. package/dist/modules/feature_toggles/components/OverridesTable.js.map +2 -2
  195. package/dist/modules/feature_toggles/setup.js +11 -0
  196. package/dist/modules/feature_toggles/setup.js.map +7 -0
  197. package/dist/modules/notifications/acl.js +11 -0
  198. package/dist/modules/notifications/acl.js.map +7 -0
  199. package/dist/modules/notifications/api/[id]/action/route.js +74 -0
  200. package/dist/modules/notifications/api/[id]/action/route.js.map +7 -0
  201. package/dist/modules/notifications/api/[id]/dismiss/route.js +15 -0
  202. package/dist/modules/notifications/api/[id]/dismiss/route.js.map +7 -0
  203. package/dist/modules/notifications/api/[id]/read/route.js +15 -0
  204. package/dist/modules/notifications/api/[id]/read/route.js.map +7 -0
  205. package/dist/modules/notifications/api/[id]/restore/route.js +53 -0
  206. package/dist/modules/notifications/api/[id]/restore/route.js.map +7 -0
  207. package/dist/modules/notifications/api/batch/route.js +17 -0
  208. package/dist/modules/notifications/api/batch/route.js.map +7 -0
  209. package/dist/modules/notifications/api/feature/route.js +17 -0
  210. package/dist/modules/notifications/api/feature/route.js.map +7 -0
  211. package/dist/modules/notifications/api/mark-all-read/route.js +35 -0
  212. package/dist/modules/notifications/api/mark-all-read/route.js.map +7 -0
  213. package/dist/modules/notifications/api/openapi.js +76 -0
  214. package/dist/modules/notifications/api/openapi.js.map +7 -0
  215. package/dist/modules/notifications/api/role/route.js +17 -0
  216. package/dist/modules/notifications/api/role/route.js.map +7 -0
  217. package/dist/modules/notifications/api/route.js +85 -0
  218. package/dist/modules/notifications/api/route.js.map +7 -0
  219. package/dist/modules/notifications/api/settings/route.js +155 -0
  220. package/dist/modules/notifications/api/settings/route.js.map +7 -0
  221. package/dist/modules/notifications/api/unread-count/route.js +38 -0
  222. package/dist/modules/notifications/api/unread-count/route.js.map +7 -0
  223. package/dist/modules/notifications/backend/config/notifications/page.js +10 -0
  224. package/dist/modules/notifications/backend/config/notifications/page.js.map +7 -0
  225. package/dist/modules/notifications/backend/config/notifications/page.meta.js +24 -0
  226. package/dist/modules/notifications/backend/config/notifications/page.meta.js.map +7 -0
  227. package/dist/modules/notifications/cli.js +16 -0
  228. package/dist/modules/notifications/cli.js.map +7 -0
  229. package/dist/modules/notifications/data/entities.js +112 -0
  230. package/dist/modules/notifications/data/entities.js.map +7 -0
  231. package/dist/modules/notifications/data/validators.js +98 -0
  232. package/dist/modules/notifications/data/validators.js.map +7 -0
  233. package/dist/modules/notifications/di.js +13 -0
  234. package/dist/modules/notifications/di.js.map +7 -0
  235. package/dist/modules/notifications/emails/NotificationEmail.js +58 -0
  236. package/dist/modules/notifications/emails/NotificationEmail.js.map +7 -0
  237. package/dist/modules/notifications/frontend/NotificationInboxPageClient.js +44 -0
  238. package/dist/modules/notifications/frontend/NotificationInboxPageClient.js.map +7 -0
  239. package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js +220 -0
  240. package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js.map +7 -0
  241. package/dist/modules/notifications/index.js +14 -0
  242. package/dist/modules/notifications/index.js.map +7 -0
  243. package/dist/modules/notifications/lib/deliveryConfig.js +107 -0
  244. package/dist/modules/notifications/lib/deliveryConfig.js.map +7 -0
  245. package/dist/modules/notifications/lib/deliveryStrategies.js +14 -0
  246. package/dist/modules/notifications/lib/deliveryStrategies.js.map +7 -0
  247. package/dist/modules/notifications/lib/events.js +12 -0
  248. package/dist/modules/notifications/lib/events.js.map +7 -0
  249. package/dist/modules/notifications/lib/notificationBuilder.js +66 -0
  250. package/dist/modules/notifications/lib/notificationBuilder.js.map +7 -0
  251. package/dist/modules/notifications/lib/notificationFactory.js +54 -0
  252. package/dist/modules/notifications/lib/notificationFactory.js.map +7 -0
  253. package/dist/modules/notifications/lib/notificationMapper.js +34 -0
  254. package/dist/modules/notifications/lib/notificationMapper.js.map +7 -0
  255. package/dist/modules/notifications/lib/notificationRecipients.js +35 -0
  256. package/dist/modules/notifications/lib/notificationRecipients.js.map +7 -0
  257. package/dist/modules/notifications/lib/notificationService.js +279 -0
  258. package/dist/modules/notifications/lib/notificationService.js.map +7 -0
  259. package/dist/modules/notifications/lib/routeHelpers.js +101 -0
  260. package/dist/modules/notifications/lib/routeHelpers.js.map +7 -0
  261. package/dist/modules/notifications/lib/safeHref.js +24 -0
  262. package/dist/modules/notifications/lib/safeHref.js.map +7 -0
  263. package/dist/modules/notifications/migrations/Migration20260123000001.js +70 -0
  264. package/dist/modules/notifications/migrations/Migration20260123000001.js.map +7 -0
  265. package/dist/modules/notifications/migrations/Migration20260126150000.js +37 -0
  266. package/dist/modules/notifications/migrations/Migration20260126150000.js.map +7 -0
  267. package/dist/modules/notifications/migrations/Migration20260129082610.js +13 -0
  268. package/dist/modules/notifications/migrations/Migration20260129082610.js.map +7 -0
  269. package/dist/modules/notifications/subscribers/deliver-notification.js +165 -0
  270. package/dist/modules/notifications/subscribers/deliver-notification.js.map +7 -0
  271. package/dist/modules/notifications/workers/create-notification.worker.js +70 -0
  272. package/dist/modules/notifications/workers/create-notification.worker.js.map +7 -0
  273. package/dist/modules/perspectives/setup.js +12 -0
  274. package/dist/modules/perspectives/setup.js.map +7 -0
  275. package/dist/modules/planner/backend/planner/availability-rulesets/page.js +2 -2
  276. package/dist/modules/planner/backend/planner/availability-rulesets/page.js.map +2 -2
  277. package/dist/modules/planner/setup.js +21 -0
  278. package/dist/modules/planner/setup.js.map +7 -0
  279. package/dist/modules/query_index/cli.js +63 -7
  280. package/dist/modules/query_index/cli.js.map +2 -2
  281. package/dist/modules/query_index/components/QueryIndexesTable.js +7 -1
  282. package/dist/modules/query_index/components/QueryIndexesTable.js.map +2 -2
  283. package/dist/modules/query_index/setup.js +11 -0
  284. package/dist/modules/query_index/setup.js.map +7 -0
  285. package/dist/modules/resources/backend/resources/resource-types/page.js +2 -2
  286. package/dist/modules/resources/backend/resources/resource-types/page.js.map +2 -2
  287. package/dist/modules/resources/backend/resources/resources/page.js +2 -2
  288. package/dist/modules/resources/backend/resources/resources/page.js.map +2 -2
  289. package/dist/modules/resources/setup.js +21 -0
  290. package/dist/modules/resources/setup.js.map +7 -0
  291. package/dist/modules/sales/acl.js +0 -1
  292. package/dist/modules/sales/acl.js.map +2 -2
  293. package/dist/modules/sales/backend/sales/channels/offers/page.js +2 -0
  294. package/dist/modules/sales/backend/sales/channels/offers/page.js.map +2 -2
  295. package/dist/modules/sales/backend/sales/channels/page.js +2 -0
  296. package/dist/modules/sales/backend/sales/channels/page.js.map +2 -2
  297. package/dist/modules/sales/backend/sales/documents/[id]/page.js +0 -12
  298. package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
  299. package/dist/modules/sales/cli.js +2 -42
  300. package/dist/modules/sales/cli.js.map +2 -2
  301. package/dist/modules/sales/commands/documents.js +53 -62
  302. package/dist/modules/sales/commands/documents.js.map +2 -2
  303. package/dist/modules/sales/commands/payments.js +26 -0
  304. package/dist/modules/sales/commands/payments.js.map +2 -2
  305. package/dist/modules/sales/components/AdjustmentKindSettings.js +2 -2
  306. package/dist/modules/sales/components/AdjustmentKindSettings.js.map +2 -2
  307. package/dist/modules/sales/components/PaymentMethodsSettings.js +2 -2
  308. package/dist/modules/sales/components/PaymentMethodsSettings.js.map +2 -2
  309. package/dist/modules/sales/components/ShippingMethodsSettings.js +2 -2
  310. package/dist/modules/sales/components/ShippingMethodsSettings.js.map +2 -2
  311. package/dist/modules/sales/components/TaxRatesSettings.js +2 -2
  312. package/dist/modules/sales/components/TaxRatesSettings.js.map +2 -2
  313. package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js +2 -0
  314. package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js.map +2 -2
  315. package/dist/modules/sales/components/documents/AdjustmentsSection.js +2 -0
  316. package/dist/modules/sales/components/documents/AdjustmentsSection.js.map +2 -2
  317. package/dist/modules/sales/components/documents/PaymentsSection.js +2 -1
  318. package/dist/modules/sales/components/documents/PaymentsSection.js.map +2 -2
  319. package/dist/modules/sales/components/documents/SalesDocumentsTable.js +2 -0
  320. package/dist/modules/sales/components/documents/SalesDocumentsTable.js.map +2 -2
  321. package/dist/modules/sales/lib/dictionaries.js +0 -3
  322. package/dist/modules/sales/lib/dictionaries.js.map +2 -2
  323. package/dist/modules/sales/lib/seeds.js +48 -0
  324. package/dist/modules/sales/lib/seeds.js.map +7 -0
  325. package/dist/modules/sales/notifications.client.js +51 -0
  326. package/dist/modules/sales/notifications.client.js.map +7 -0
  327. package/dist/modules/sales/notifications.js +88 -0
  328. package/dist/modules/sales/notifications.js.map +7 -0
  329. package/dist/modules/sales/setup.js +99 -0
  330. package/dist/modules/sales/setup.js.map +7 -0
  331. package/dist/modules/sales/subscribers/quote-expiring-notification.js +38 -0
  332. package/dist/modules/sales/subscribers/quote-expiring-notification.js.map +7 -0
  333. package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js +137 -0
  334. package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js.map +7 -0
  335. package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js +137 -0
  336. package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js.map +7 -0
  337. package/dist/modules/sales/widgets/notifications/index.js +7 -0
  338. package/dist/modules/sales/widgets/notifications/index.js.map +7 -0
  339. package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js +60 -0
  340. package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js.map +7 -0
  341. package/dist/modules/staff/backend/staff/team-members/page.js +1 -1
  342. package/dist/modules/staff/backend/staff/team-members/page.js.map +2 -2
  343. package/dist/modules/staff/backend/staff/team-roles/page.js +2 -2
  344. package/dist/modules/staff/backend/staff/team-roles/page.js.map +2 -2
  345. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js +2 -2
  346. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js.map +2 -2
  347. package/dist/modules/staff/backend/staff/teams/page.js +2 -2
  348. package/dist/modules/staff/backend/staff/teams/page.js.map +2 -2
  349. package/dist/modules/staff/commands/leave-requests.js +79 -0
  350. package/dist/modules/staff/commands/leave-requests.js.map +2 -2
  351. package/dist/modules/staff/notifications.js +75 -0
  352. package/dist/modules/staff/notifications.js.map +7 -0
  353. package/dist/modules/staff/setup.js +27 -0
  354. package/dist/modules/staff/setup.js.map +7 -0
  355. package/dist/modules/workflows/acl.js +0 -2
  356. package/dist/modules/workflows/acl.js.map +2 -2
  357. package/dist/modules/workflows/api/instances/route.js +6 -18
  358. package/dist/modules/workflows/api/instances/route.js.map +2 -2
  359. package/dist/modules/workflows/api/tasks/route.js +1 -6
  360. package/dist/modules/workflows/api/tasks/route.js.map +2 -2
  361. package/dist/modules/workflows/backend/definitions/[id]/page.js +1 -9
  362. package/dist/modules/workflows/backend/definitions/[id]/page.js.map +2 -2
  363. package/dist/modules/workflows/backend/definitions/[id]/page.meta.js +1 -1
  364. package/dist/modules/workflows/backend/definitions/[id]/page.meta.js.map +2 -2
  365. package/dist/modules/workflows/backend/definitions/create/page.js +15 -24
  366. package/dist/modules/workflows/backend/definitions/create/page.js.map +2 -2
  367. package/dist/modules/workflows/backend/definitions/create/page.meta.js +1 -1
  368. package/dist/modules/workflows/backend/definitions/create/page.meta.js.map +2 -2
  369. package/dist/modules/workflows/backend/definitions/page.js +5 -0
  370. package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
  371. package/dist/modules/workflows/backend/definitions/visual-editor/page.js +132 -150
  372. package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
  373. package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js +1 -1
  374. package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js.map +2 -2
  375. package/dist/modules/workflows/backend/events/[id]/page.js +1 -1
  376. package/dist/modules/workflows/backend/events/[id]/page.js.map +2 -2
  377. package/dist/modules/workflows/backend/events/[id]/page.meta.js +2 -2
  378. package/dist/modules/workflows/backend/events/[id]/page.meta.js.map +2 -2
  379. package/dist/modules/workflows/backend/instances/[id]/page.meta.js +2 -2
  380. package/dist/modules/workflows/backend/instances/[id]/page.meta.js.map +2 -2
  381. package/dist/modules/workflows/backend/instances/page.js +3 -0
  382. package/dist/modules/workflows/backend/instances/page.js.map +2 -2
  383. package/dist/modules/workflows/backend/tasks/[id]/page.js +1 -1
  384. package/dist/modules/workflows/backend/tasks/[id]/page.js.map +2 -2
  385. package/dist/modules/workflows/backend/tasks/[id]/page.meta.js +2 -2
  386. package/dist/modules/workflows/backend/tasks/[id]/page.meta.js.map +2 -2
  387. package/dist/modules/workflows/backend/tasks/page.js +9 -5
  388. package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
  389. package/dist/modules/workflows/cli.js +15 -93
  390. package/dist/modules/workflows/cli.js.map +3 -3
  391. package/dist/modules/workflows/data/entities.js +1 -64
  392. package/dist/modules/workflows/data/entities.js.map +2 -2
  393. package/dist/modules/workflows/data/validators.js +0 -115
  394. package/dist/modules/workflows/data/validators.js.map +2 -2
  395. package/dist/modules/workflows/examples/checkout-demo-definition.json +5 -1
  396. package/dist/modules/workflows/lib/activity-executor.js +13 -75
  397. package/dist/modules/workflows/lib/activity-executor.js.map +2 -2
  398. package/dist/modules/workflows/lib/graph-utils.js +2 -71
  399. package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
  400. package/dist/modules/workflows/lib/seeds.js +7 -36
  401. package/dist/modules/workflows/lib/seeds.js.map +2 -2
  402. package/dist/modules/workflows/lib/start-validator.js +23 -33
  403. package/dist/modules/workflows/lib/start-validator.js.map +2 -2
  404. package/dist/modules/workflows/lib/transition-handler.js +57 -161
  405. package/dist/modules/workflows/lib/transition-handler.js.map +3 -3
  406. package/dist/modules/workflows/migrations/Migration20251207131955.js +76 -72
  407. package/dist/modules/workflows/migrations/Migration20251207131955.js.map +2 -2
  408. package/dist/modules/workflows/notifications.js +28 -0
  409. package/dist/modules/workflows/notifications.js.map +7 -0
  410. package/dist/modules/workflows/setup.js +16 -0
  411. package/dist/modules/workflows/setup.js.map +7 -0
  412. package/dist/modules/workflows/subscribers/task-assigned-notification.js +38 -0
  413. package/dist/modules/workflows/subscribers/task-assigned-notification.js.map +7 -0
  414. package/generated/entities/notification/index.ts +27 -0
  415. package/generated/entities.ids.generated.ts +5 -2
  416. package/generated/entity-fields-registry.ts +2 -2
  417. package/package.json +2 -2
  418. package/src/__tests__/module-decoupling.test.ts +356 -0
  419. package/src/modules/api_docs/frontend/docs/api/page.tsx +3 -2
  420. package/src/modules/api_keys/backend/api-keys/page.tsx +1 -1
  421. package/src/modules/api_keys/setup.ts +9 -0
  422. package/src/modules/attachments/components/AttachmentLibrary.tsx +6 -2
  423. package/src/modules/attachments/components/AttachmentPartitionSettings.tsx +2 -0
  424. package/src/modules/attachments/lib/assignmentDetails.ts +32 -16
  425. package/src/modules/attachments/lib/partitions.ts +3 -3
  426. package/src/modules/attachments/setup.ts +9 -0
  427. package/src/modules/audit_logs/setup.ts +10 -0
  428. package/src/modules/auth/README.md +1 -1
  429. package/src/modules/auth/__tests__/cli-setup-acl.test.ts +31 -1
  430. package/src/modules/auth/api/__tests__/login.test.ts +2 -0
  431. package/src/modules/auth/api/admin/nav.ts +10 -6
  432. package/src/modules/auth/api/login.ts +26 -7
  433. package/src/modules/auth/api/profile/route.ts +163 -0
  434. package/src/modules/auth/api/reset/confirm.ts +25 -2
  435. package/src/modules/auth/api/reset.ts +23 -0
  436. package/src/modules/auth/api/sidebar/preferences/route.ts +21 -12
  437. package/src/modules/auth/api/users/route.ts +5 -2
  438. package/src/modules/auth/backend/auth/profile/page.meta.ts +9 -0
  439. package/src/modules/auth/backend/auth/profile/page.tsx +174 -0
  440. package/src/modules/auth/backend/roles/[id]/edit/page.tsx +4 -1
  441. package/src/modules/auth/backend/roles/page.tsx +3 -3
  442. package/src/modules/auth/backend/users/[id]/edit/page.tsx +22 -3
  443. package/src/modules/auth/backend/users/create/page.tsx +19 -2
  444. package/src/modules/auth/backend/users/page.tsx +3 -3
  445. package/src/modules/auth/cli.ts +38 -11
  446. package/src/modules/auth/commands/users.ts +73 -2
  447. package/src/modules/auth/data/validators.ts +6 -2
  448. package/src/modules/auth/frontend/login.tsx +134 -5
  449. package/src/modules/auth/frontend/reset/[token]/page.tsx +24 -11
  450. package/src/modules/auth/i18n/de.json +48 -1
  451. package/src/modules/auth/i18n/en.json +48 -1
  452. package/src/modules/auth/i18n/es.json +48 -1
  453. package/src/modules/auth/i18n/pl.json +48 -1
  454. package/src/modules/auth/lib/setup-app.ts +97 -186
  455. package/src/modules/auth/notifications.ts +109 -0
  456. package/src/modules/auth/services/authService.ts +27 -4
  457. package/src/modules/auth/setup.ts +9 -0
  458. package/src/modules/business_rules/api/execute/route.ts +8 -1
  459. package/src/modules/business_rules/backend/rules/page.tsx +4 -0
  460. package/src/modules/business_rules/backend/sets/page.tsx +3 -0
  461. package/src/modules/business_rules/cli.ts +2 -1
  462. package/src/modules/business_rules/data/validators.ts +0 -40
  463. package/src/modules/business_rules/i18n/en.json +3 -1
  464. package/src/modules/business_rules/index.ts +0 -25
  465. package/src/modules/business_rules/lib/__tests__/rule-engine.test.ts +51 -0
  466. package/src/modules/business_rules/lib/rule-engine.ts +51 -277
  467. package/src/modules/business_rules/notifications.ts +25 -0
  468. package/src/modules/business_rules/setup.ts +9 -0
  469. package/src/modules/business_rules/subscribers/rule-execution-failed-notification.ts +50 -0
  470. package/src/modules/catalog/components/PriceKindSettings.tsx +2 -0
  471. package/src/modules/catalog/components/categories/CategoriesDataTable.tsx +2 -2
  472. package/src/modules/catalog/components/products/ProductsDataTable.tsx +2 -0
  473. package/src/modules/catalog/i18n/en.json +3 -1
  474. package/src/modules/catalog/notifications.ts +25 -0
  475. package/src/modules/catalog/setup.ts +22 -0
  476. package/src/modules/catalog/subscribers/low-stock-notification.ts +52 -0
  477. package/src/modules/configs/cli.ts +6 -0
  478. package/src/modules/configs/components/CachePanel.tsx +4 -4
  479. package/src/modules/configs/i18n/en.json +12 -2
  480. package/src/modules/configs/i18n/pl.json +12 -2
  481. package/src/modules/configs/lib/system-status.ts +48 -1
  482. package/src/modules/configs/lib/system-status.types.ts +1 -0
  483. package/src/modules/configs/lib/upgrade-actions.ts +5 -338
  484. package/src/modules/configs/setup.ts +14 -0
  485. package/src/modules/currencies/backend/currencies/page.tsx +3 -0
  486. package/src/modules/currencies/backend/exchange-rates/page.tsx +2 -0
  487. package/src/modules/currencies/setup.ts +15 -0
  488. package/src/modules/customers/backend/customers/companies/page.tsx +3 -0
  489. package/src/modules/customers/backend/customers/deals/page.tsx +3 -0
  490. package/src/modules/customers/backend/customers/people/page.tsx +3 -0
  491. package/src/modules/customers/commands/deals.ts +39 -0
  492. package/src/modules/customers/components/CustomerTodosTable.tsx +1 -0
  493. package/src/modules/customers/i18n/en.json +5 -1
  494. package/src/modules/customers/notifications.ts +44 -0
  495. package/src/modules/customers/setup.ts +36 -0
  496. package/src/modules/customers/widgets/dashboard/customer-todos/widget.ts +2 -2
  497. package/src/modules/customers/widgets/dashboard/new-customers/widget.ts +2 -2
  498. package/src/modules/customers/widgets/dashboard/new-deals/widget.ts +2 -2
  499. package/src/modules/customers/widgets/dashboard/next-interactions/widget.ts +2 -2
  500. package/src/modules/dashboards/cli.ts +55 -5
  501. package/src/modules/dashboards/components/WidgetVisibilityEditor.tsx +22 -11
  502. package/src/modules/dashboards/lib/role-widgets.ts +80 -0
  503. package/src/modules/dashboards/services/widgetDataService.ts +164 -4
  504. package/src/modules/dashboards/setup.ts +26 -0
  505. package/src/modules/dashboards/widgets/dashboard/aov-kpi/widget.ts +2 -2
  506. package/src/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.ts +2 -2
  507. package/src/modules/dashboards/widgets/dashboard/orders-by-status/widget.ts +2 -2
  508. package/src/modules/dashboards/widgets/dashboard/orders-kpi/widget.ts +2 -2
  509. package/src/modules/dashboards/widgets/dashboard/pipeline-summary/widget.ts +2 -2
  510. package/src/modules/dashboards/widgets/dashboard/revenue-kpi/widget.ts +2 -2
  511. package/src/modules/dashboards/widgets/dashboard/revenue-trend/widget.ts +2 -2
  512. package/src/modules/dashboards/widgets/dashboard/sales-by-region/widget.ts +2 -2
  513. package/src/modules/dashboards/widgets/dashboard/top-customers/widget.ts +2 -2
  514. package/src/modules/dashboards/widgets/dashboard/top-products/widget.ts +2 -2
  515. package/src/modules/dictionaries/components/DictionaryTable.tsx +2 -0
  516. package/src/modules/dictionaries/setup.ts +10 -0
  517. package/src/modules/directory/api/get/tenants/lookup.ts +75 -0
  518. package/src/modules/directory/backend/directory/organizations/page.tsx +2 -2
  519. package/src/modules/directory/backend/directory/tenants/page.tsx +2 -2
  520. package/src/modules/directory/setup.ts +10 -0
  521. package/src/modules/entities/backend/entities/user/[entityId]/records/page.tsx +2 -2
  522. package/src/modules/entities/components/SystemEntitiesTable.tsx +1 -1
  523. package/src/modules/entities/components/UserEntitiesTable.tsx +2 -2
  524. package/src/modules/entities/setup.ts +9 -0
  525. package/src/modules/feature_toggles/components/FeatureTogglesTable.tsx +3 -4
  526. package/src/modules/feature_toggles/components/OverridesTable.tsx +1 -1
  527. package/src/modules/feature_toggles/setup.ts +9 -0
  528. package/src/modules/notifications/__tests__/deliver-notification.test.ts +195 -0
  529. package/src/modules/notifications/__tests__/deliveryStrategies.test.ts +19 -0
  530. package/src/modules/notifications/__tests__/notificationService.test.ts +208 -0
  531. package/src/modules/notifications/acl.ts +7 -0
  532. package/src/modules/notifications/api/[id]/action/route.ts +75 -0
  533. package/src/modules/notifications/api/[id]/dismiss/route.ts +12 -0
  534. package/src/modules/notifications/api/[id]/read/route.ts +12 -0
  535. package/src/modules/notifications/api/[id]/restore/route.ts +53 -0
  536. package/src/modules/notifications/api/batch/route.ts +14 -0
  537. package/src/modules/notifications/api/feature/route.ts +14 -0
  538. package/src/modules/notifications/api/mark-all-read/route.ts +34 -0
  539. package/src/modules/notifications/api/openapi.ts +76 -0
  540. package/src/modules/notifications/api/role/route.ts +14 -0
  541. package/src/modules/notifications/api/route.ts +92 -0
  542. package/src/modules/notifications/api/settings/route.ts +157 -0
  543. package/src/modules/notifications/api/unread-count/route.ts +38 -0
  544. package/src/modules/notifications/backend/config/notifications/page.meta.ts +22 -0
  545. package/src/modules/notifications/backend/config/notifications/page.tsx +12 -0
  546. package/src/modules/notifications/cli.ts +18 -0
  547. package/src/modules/notifications/data/entities.ts +99 -0
  548. package/src/modules/notifications/data/validators.ts +115 -0
  549. package/src/modules/notifications/di.ts +11 -0
  550. package/src/modules/notifications/emails/NotificationEmail.tsx +98 -0
  551. package/src/modules/notifications/frontend/NotificationInboxPageClient.tsx +42 -0
  552. package/src/modules/notifications/frontend/NotificationSettingsPageClient.tsx +233 -0
  553. package/src/modules/notifications/i18n/de.json +50 -0
  554. package/src/modules/notifications/i18n/en.json +50 -0
  555. package/src/modules/notifications/i18n/es.json +50 -0
  556. package/src/modules/notifications/i18n/pl.json +50 -0
  557. package/src/modules/notifications/index.ts +12 -0
  558. package/src/modules/notifications/lib/deliveryConfig.ts +153 -0
  559. package/src/modules/notifications/lib/deliveryStrategies.ts +50 -0
  560. package/src/modules/notifications/lib/events.ts +48 -0
  561. package/src/modules/notifications/lib/notificationBuilder.ts +121 -0
  562. package/src/modules/notifications/lib/notificationFactory.ts +76 -0
  563. package/src/modules/notifications/lib/notificationMapper.ts +33 -0
  564. package/src/modules/notifications/lib/notificationRecipients.ts +83 -0
  565. package/src/modules/notifications/lib/notificationService.ts +414 -0
  566. package/src/modules/notifications/lib/routeHelpers.ts +151 -0
  567. package/src/modules/notifications/lib/safeHref.ts +29 -0
  568. package/src/modules/notifications/migrations/.snapshot-open-mercato.json +336 -0
  569. package/src/modules/notifications/migrations/Migration20260123000001.ts +73 -0
  570. package/src/modules/notifications/migrations/Migration20260126150000.ts +39 -0
  571. package/src/modules/notifications/migrations/Migration20260129082610.ts +13 -0
  572. package/src/modules/notifications/subscribers/deliver-notification.ts +204 -0
  573. package/src/modules/notifications/workers/create-notification.worker.ts +122 -0
  574. package/src/modules/perspectives/setup.ts +10 -0
  575. package/src/modules/planner/backend/planner/availability-rulesets/page.tsx +2 -2
  576. package/src/modules/planner/setup.ts +21 -0
  577. package/src/modules/query_index/cli.ts +82 -13
  578. package/src/modules/query_index/components/QueryIndexesTable.tsx +8 -2
  579. package/src/modules/query_index/setup.ts +9 -0
  580. package/src/modules/resources/backend/resources/resource-types/page.tsx +2 -2
  581. package/src/modules/resources/backend/resources/resources/page.tsx +2 -2
  582. package/src/modules/resources/setup.ts +21 -0
  583. package/src/modules/sales/acl.ts +0 -1
  584. package/src/modules/sales/backend/sales/channels/offers/page.tsx +2 -0
  585. package/src/modules/sales/backend/sales/channels/page.tsx +2 -0
  586. package/src/modules/sales/backend/sales/documents/[id]/page.tsx +0 -16
  587. package/src/modules/sales/cli.ts +2 -43
  588. package/src/modules/sales/commands/documents.ts +62 -70
  589. package/src/modules/sales/commands/payments.ts +33 -0
  590. package/src/modules/sales/components/AdjustmentKindSettings.tsx +2 -2
  591. package/src/modules/sales/components/PaymentMethodsSettings.tsx +2 -2
  592. package/src/modules/sales/components/ShippingMethodsSettings.tsx +2 -2
  593. package/src/modules/sales/components/TaxRatesSettings.tsx +2 -2
  594. package/src/modules/sales/components/channels/SalesChannelOffersPanel.tsx +2 -0
  595. package/src/modules/sales/components/documents/AdjustmentsSection.tsx +2 -0
  596. package/src/modules/sales/components/documents/PaymentsSection.tsx +2 -1
  597. package/src/modules/sales/components/documents/SalesDocumentsTable.tsx +2 -0
  598. package/src/modules/sales/i18n/de.json +20 -0
  599. package/src/modules/sales/i18n/en.json +25 -1
  600. package/src/modules/sales/i18n/es.json +20 -0
  601. package/src/modules/sales/i18n/pl.json +20 -0
  602. package/src/modules/sales/lib/dictionaries.ts +0 -3
  603. package/src/modules/sales/lib/seeds.ts +53 -0
  604. package/src/modules/sales/notifications.client.ts +65 -0
  605. package/src/modules/sales/notifications.ts +82 -0
  606. package/src/modules/sales/setup.ts +108 -0
  607. package/src/modules/sales/subscribers/quote-expiring-notification.ts +53 -0
  608. package/src/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.tsx +156 -0
  609. package/src/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.tsx +156 -0
  610. package/src/modules/sales/widgets/notifications/index.ts +2 -0
  611. package/src/modules/sales/widgets/notifications/useSalesDocumentTotals.ts +81 -0
  612. package/src/modules/staff/backend/staff/team-members/page.tsx +1 -1
  613. package/src/modules/staff/backend/staff/team-roles/page.tsx +2 -2
  614. package/src/modules/staff/backend/staff/teams/[id]/edit/page.tsx +2 -2
  615. package/src/modules/staff/backend/staff/teams/page.tsx +2 -2
  616. package/src/modules/staff/commands/leave-requests.ts +94 -0
  617. package/src/modules/staff/i18n/de.json +4 -0
  618. package/src/modules/staff/i18n/en.json +9 -1
  619. package/src/modules/staff/i18n/es.json +4 -0
  620. package/src/modules/staff/i18n/pl.json +4 -0
  621. package/src/modules/staff/notifications.ts +71 -0
  622. package/src/modules/staff/setup.ts +27 -0
  623. package/src/modules/workflows/acl.ts +0 -2
  624. package/src/modules/workflows/api/__tests__/instances.route.test.ts +2 -5
  625. package/src/modules/workflows/api/instances/route.ts +7 -21
  626. package/src/modules/workflows/api/tasks/route.ts +1 -7
  627. package/src/modules/workflows/backend/definitions/[id]/page.meta.ts +1 -1
  628. package/src/modules/workflows/backend/definitions/[id]/page.tsx +0 -9
  629. package/src/modules/workflows/backend/definitions/create/page.meta.ts +1 -1
  630. package/src/modules/workflows/backend/definitions/create/page.tsx +0 -9
  631. package/src/modules/workflows/backend/definitions/page.tsx +5 -0
  632. package/src/modules/workflows/backend/definitions/visual-editor/page.meta.ts +1 -1
  633. package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +3 -21
  634. package/src/modules/workflows/backend/events/[id]/page.meta.ts +2 -2
  635. package/src/modules/workflows/backend/events/[id]/page.tsx +1 -1
  636. package/src/modules/workflows/backend/instances/[id]/page.meta.ts +2 -2
  637. package/src/modules/workflows/backend/instances/page.tsx +4 -1
  638. package/src/modules/workflows/backend/tasks/[id]/page.meta.ts +2 -2
  639. package/src/modules/workflows/backend/tasks/[id]/page.tsx +1 -1
  640. package/src/modules/workflows/backend/tasks/page.tsx +10 -6
  641. package/src/modules/workflows/cli.ts +12 -123
  642. package/src/modules/workflows/data/entities.ts +0 -124
  643. package/src/modules/workflows/data/validators.ts +0 -138
  644. package/src/modules/workflows/examples/checkout-demo-definition.json +5 -1
  645. package/src/modules/workflows/i18n/en.json +3 -72
  646. package/src/modules/workflows/lib/__tests__/activity-executor.test.ts +36 -43
  647. package/src/modules/workflows/lib/__tests__/transition-handler.test.ts +90 -170
  648. package/src/modules/workflows/lib/activity-executor.ts +16 -129
  649. package/src/modules/workflows/lib/graph-utils.ts +2 -117
  650. package/src/modules/workflows/lib/seeds.ts +12 -50
  651. package/src/modules/workflows/lib/start-validator.ts +28 -38
  652. package/src/modules/workflows/lib/transition-handler.ts +71 -212
  653. package/src/modules/workflows/migrations/Migration20251207131955.ts +77 -143
  654. package/src/modules/workflows/notifications.ts +25 -0
  655. package/src/modules/workflows/setup.ts +15 -0
  656. package/src/modules/workflows/subscribers/task-assigned-notification.ts +53 -0
  657. package/dist/generated/entities/workflow_event_trigger/index.js +0 -33
  658. package/dist/generated/entities/workflow_event_trigger/index.js.map +0 -7
  659. package/dist/modules/auth/events.js +0 -30
  660. package/dist/modules/auth/events.js.map +0 -7
  661. package/dist/modules/business_rules/api/execute/[ruleId]/route.js +0 -145
  662. package/dist/modules/business_rules/api/execute/[ruleId]/route.js.map +0 -7
  663. package/dist/modules/catalog/events.js +0 -34
  664. package/dist/modules/catalog/events.js.map +0 -7
  665. package/dist/modules/customers/events.js +0 -49
  666. package/dist/modules/customers/events.js.map +0 -7
  667. package/dist/modules/directory/events.js +0 -23
  668. package/dist/modules/directory/events.js.map +0 -7
  669. package/dist/modules/sales/events.js +0 -63
  670. package/dist/modules/sales/events.js.map +0 -7
  671. package/dist/modules/sales/lib/frontend/documentDataEvents.js +0 -25
  672. package/dist/modules/sales/lib/frontend/documentDataEvents.js.map +0 -7
  673. package/dist/modules/workflows/components/DefinitionTriggersEditor.js +0 -481
  674. package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +0 -7
  675. package/dist/modules/workflows/components/EventTriggersEditor.js +0 -553
  676. package/dist/modules/workflows/components/EventTriggersEditor.js.map +0 -7
  677. package/dist/modules/workflows/events.js +0 -38
  678. package/dist/modules/workflows/events.js.map +0 -7
  679. package/dist/modules/workflows/examples/order-approval-definition.json +0 -257
  680. package/dist/modules/workflows/examples/order-approval-guard-rules.json +0 -32
  681. package/dist/modules/workflows/lib/event-trigger-service.js +0 -308
  682. package/dist/modules/workflows/lib/event-trigger-service.js.map +0 -7
  683. package/dist/modules/workflows/migrations/Migration20260123143500.js +0 -36
  684. package/dist/modules/workflows/migrations/Migration20260123143500.js.map +0 -7
  685. package/dist/modules/workflows/subscribers/event-trigger.js +0 -78
  686. package/dist/modules/workflows/subscribers/event-trigger.js.map +0 -7
  687. package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js +0 -323
  688. package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js.map +0 -7
  689. package/dist/modules/workflows/widgets/injection/order-approval/widget.js +0 -17
  690. package/dist/modules/workflows/widgets/injection/order-approval/widget.js.map +0 -7
  691. package/dist/modules/workflows/widgets/injection-table.js +0 -19
  692. package/dist/modules/workflows/widgets/injection-table.js.map +0 -7
  693. package/generated/entities/workflow_event_trigger/index.ts +0 -15
  694. package/src/modules/auth/events.ts +0 -39
  695. package/src/modules/business_rules/api/execute/[ruleId]/route.ts +0 -163
  696. package/src/modules/catalog/events.ts +0 -45
  697. package/src/modules/customers/events.ts +0 -63
  698. package/src/modules/directory/events.ts +0 -31
  699. package/src/modules/sales/events.ts +0 -82
  700. package/src/modules/sales/lib/frontend/documentDataEvents.ts +0 -28
  701. package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +0 -581
  702. package/src/modules/workflows/components/EventTriggersEditor.tsx +0 -664
  703. package/src/modules/workflows/events.ts +0 -49
  704. package/src/modules/workflows/examples/order-approval-definition.json +0 -257
  705. package/src/modules/workflows/examples/order-approval-guard-rules.json +0 -32
  706. package/src/modules/workflows/lib/event-trigger-service.ts +0 -557
  707. package/src/modules/workflows/migrations/Migration20260123143500.ts +0 -38
  708. package/src/modules/workflows/subscribers/event-trigger.ts +0 -109
  709. package/src/modules/workflows/widgets/injection/order-approval/widget.client.tsx +0 -446
  710. package/src/modules/workflows/widgets/injection/order-approval/widget.ts +0 -16
  711. package/src/modules/workflows/widgets/injection-table.ts +0 -21
@@ -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 {
@@ -2,150 +2,84 @@ import { Migration } from '@mikro-orm/migrations';
2
2
 
3
3
  export class Migration20251207131955 extends Migration {
4
4
 
5
- override async up(): Promise<void> {
6
- this.addSql(`alter table "rule_execution_logs" drop constraint "rule_execution_logs_rule_id_foreign";`);
7
-
8
- this.addSql(`alter table "rule_set_members" drop constraint "rule_set_members_rule_id_foreign";`);
9
-
10
- this.addSql(`alter table "catalog_product_variant_prices" drop constraint "catalog_product_variant_prices_price_kind_id_foreign";`);
11
-
12
- this.addSql(`alter table "catalog_product_category_assignments" drop constraint "catalog_product_category_assignments_category_id_foreign";`);
13
-
14
- this.addSql(`alter table "catalog_product_variant_prices" drop constraint "catalog_product_variant_prices_offer_id_foreign";`);
15
-
16
- this.addSql(`alter table "catalog_products" drop constraint "catalog_products_option_schema_id_foreign";`);
17
-
18
- this.addSql(`alter table "catalog_product_tag_assignments" drop constraint "catalog_product_tag_assignments_tag_id_foreign";`);
19
-
20
- this.addSql(`alter table "catalog_product_variant_option_values" drop constraint "catalog_product_variant_option_values_variant_id_foreign";`);
21
-
22
- this.addSql(`alter table "catalog_product_variant_prices" drop constraint "catalog_product_variant_prices_variant_id_foreign";`);
23
-
24
- this.addSql(`alter table "catalog_product_variant_relations" drop constraint "catalog_product_variant_relations_child_variant_id_foreign";`);
25
-
26
- this.addSql(`alter table "catalog_product_variant_relations" drop constraint "catalog_product_variant_relations_parent_variant_id_foreign";`);
27
-
28
- this.addSql(`alter table "catalog_product_category_assignments" drop constraint "catalog_product_category_assignments_product_id_foreign";`);
29
-
30
- this.addSql(`alter table "catalog_product_offers" drop constraint "catalog_product_offers_product_id_foreign";`);
31
-
32
- this.addSql(`alter table "catalog_product_options" drop constraint "catalog_product_options_product_id_foreign";`);
33
-
34
- this.addSql(`alter table "catalog_product_relations" drop constraint "catalog_product_relations_child_product_id_foreign";`);
35
-
36
- this.addSql(`alter table "catalog_product_relations" drop constraint "catalog_product_relations_parent_product_id_foreign";`);
37
-
38
- this.addSql(`alter table "catalog_product_tag_assignments" drop constraint "catalog_product_tag_assignments_product_id_foreign";`);
39
-
40
- this.addSql(`alter table "catalog_product_variant_prices" drop constraint "catalog_product_variant_prices_product_id_foreign";`);
41
-
42
- this.addSql(`alter table "catalog_product_variants" drop constraint "catalog_product_variants_product_id_foreign";`);
43
-
44
- this.addSql(`alter table "customer_activities" drop constraint "customer_activities_deal_id_foreign";`);
45
-
46
- this.addSql(`alter table "customer_comments" drop constraint "customer_comments_deal_id_foreign";`);
47
-
48
- this.addSql(`alter table "customer_deal_companies" drop constraint "customer_deal_companies_deal_id_foreign";`);
49
-
50
- this.addSql(`alter table "customer_deal_people" drop constraint "customer_deal_people_deal_id_foreign";`);
51
-
52
- this.addSql(`alter table "customer_activities" drop constraint "customer_activities_entity_id_foreign";`);
53
-
54
- this.addSql(`alter table "customer_addresses" drop constraint "customer_addresses_entity_id_foreign";`);
55
-
56
- this.addSql(`alter table "customer_comments" drop constraint "customer_comments_entity_id_foreign";`);
57
-
58
- this.addSql(`alter table "customer_companies" drop constraint "customer_companies_entity_id_foreign";`);
59
-
60
- this.addSql(`alter table "customer_deal_companies" drop constraint "customer_deal_companies_company_entity_id_foreign";`);
61
-
62
- this.addSql(`alter table "customer_deal_people" drop constraint "customer_deal_people_person_entity_id_foreign";`);
63
-
64
- this.addSql(`alter table "customer_people" drop constraint "customer_people_company_entity_id_foreign";`);
65
-
66
- this.addSql(`alter table "customer_people" drop constraint "customer_people_entity_id_foreign";`);
67
-
68
- this.addSql(`alter table "customer_tag_assignments" drop constraint "customer_tag_assignments_entity_id_foreign";`);
69
-
70
- this.addSql(`alter table "customer_todo_links" drop constraint "customer_todo_links_entity_id_foreign";`);
71
-
72
- this.addSql(`alter table "customer_tag_assignments" drop constraint "customer_tag_assignments_tag_id_foreign";`);
73
-
74
- this.addSql(`alter table "dictionary_entries" drop constraint "dictionary_entries_dictionary_id_foreign";`);
75
-
76
- this.addSql(`alter table "role_acls" drop constraint "role_acls_role_id_foreign";`);
77
-
78
- this.addSql(`alter table "role_sidebar_preferences" drop constraint "role_sidebar_preferences_role_id_foreign";`);
79
-
80
- this.addSql(`alter table "user_roles" drop constraint "user_roles_role_id_foreign";`);
81
-
82
- this.addSql(`alter table "rule_set_members" drop constraint "rule_set_members_rule_set_id_foreign";`);
83
-
84
- this.addSql(`alter table "sales_orders" drop constraint "sales_orders_channel_ref_id_foreign";`);
85
-
86
- this.addSql(`alter table "sales_credit_memo_lines" drop constraint "sales_credit_memo_lines_credit_memo_id_foreign";`);
87
-
88
- this.addSql(`alter table "sales_orders" drop constraint "sales_orders_delivery_window_ref_id_foreign";`);
89
-
90
- this.addSql(`alter table "sales_credit_memos" drop constraint "sales_credit_memos_invoice_id_foreign";`);
91
-
92
- this.addSql(`alter table "sales_invoice_lines" drop constraint "sales_invoice_lines_invoice_id_foreign";`);
93
-
94
- this.addSql(`alter table "sales_payment_allocations" drop constraint "sales_payment_allocations_invoice_id_foreign";`);
95
-
96
- this.addSql(`alter table "sales_credit_memo_lines" drop constraint "sales_credit_memo_lines_order_line_id_foreign";`);
97
-
98
- this.addSql(`alter table "sales_invoice_lines" drop constraint "sales_invoice_lines_order_line_id_foreign";`);
99
-
100
- this.addSql(`alter table "sales_order_adjustments" drop constraint "sales_order_adjustments_order_line_id_foreign";`);
101
-
102
- this.addSql(`alter table "sales_shipment_items" drop constraint "sales_shipment_items_order_line_id_foreign";`);
103
-
104
- this.addSql(`alter table "sales_credit_memos" drop constraint "sales_credit_memos_order_id_foreign";`);
105
-
106
- this.addSql(`alter table "sales_invoices" drop constraint "sales_invoices_order_id_foreign";`);
107
-
108
- this.addSql(`alter table "sales_notes" drop constraint "sales_notes_order_id_foreign";`);
109
-
110
- this.addSql(`alter table "sales_order_adjustments" drop constraint "sales_order_adjustments_order_id_foreign";`);
111
-
112
- this.addSql(`alter table "sales_order_lines" drop constraint "sales_order_lines_order_id_foreign";`);
113
-
114
- this.addSql(`alter table "sales_payment_allocations" drop constraint "sales_payment_allocations_order_id_foreign";`);
115
-
116
- this.addSql(`alter table "sales_payments" drop constraint "sales_payments_order_id_foreign";`);
117
-
118
- this.addSql(`alter table "sales_shipments" drop constraint "sales_shipments_order_id_foreign";`);
119
-
120
- this.addSql(`alter table "sales_orders" drop constraint "sales_orders_payment_method_ref_id_foreign";`);
121
-
122
- this.addSql(`alter table "sales_payments" drop constraint "sales_payments_payment_method_id_foreign";`);
123
-
124
- this.addSql(`alter table "sales_payment_allocations" drop constraint "sales_payment_allocations_payment_id_foreign";`);
125
-
126
- this.addSql(`alter table "sales_quote_adjustments" drop constraint "sales_quote_adjustments_quote_line_id_foreign";`);
127
-
128
- this.addSql(`alter table "sales_notes" drop constraint "sales_notes_quote_id_foreign";`);
129
-
130
- this.addSql(`alter table "sales_quote_adjustments" drop constraint "sales_quote_adjustments_quote_id_foreign";`);
131
-
132
- this.addSql(`alter table "sales_quote_lines" drop constraint "sales_quote_lines_quote_id_foreign";`);
133
-
134
- this.addSql(`alter table "sales_shipment_items" drop constraint "sales_shipment_items_shipment_id_foreign";`);
135
-
136
- this.addSql(`alter table "sales_orders" drop constraint "sales_orders_shipping_method_ref_id_foreign";`);
137
-
138
- this.addSql(`alter table "organizations" drop constraint "organizations_tenant_id_foreign";`);
139
-
140
- this.addSql(`alter table "password_resets" drop constraint "password_resets_user_id_foreign";`);
141
-
142
- this.addSql(`alter table "sessions" drop constraint "sessions_user_id_foreign";`);
143
-
144
- this.addSql(`alter table "user_acls" drop constraint "user_acls_user_id_foreign";`);
145
-
146
- this.addSql(`alter table "user_roles" drop constraint "user_roles_user_id_foreign";`);
5
+ /** Drop a foreign key constraint only when the owning table exists (safe for disabled modules). */
6
+ private dropConstraintIfTableExists(table: string, constraint: string): void {
7
+ this.addSql(`DO $$ BEGIN IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = '${table}') THEN ALTER TABLE "${table}" DROP CONSTRAINT IF EXISTS "${constraint}"; END IF; END $$;`)
8
+ }
147
9
 
148
- this.addSql(`alter table "user_sidebar_preferences" drop constraint "user_sidebar_preferences_user_id_foreign";`);
10
+ override async up(): Promise<void> {
11
+ this.dropConstraintIfTableExists('rule_execution_logs', 'rule_execution_logs_rule_id_foreign');
12
+ this.dropConstraintIfTableExists('rule_set_members', 'rule_set_members_rule_id_foreign');
13
+ this.dropConstraintIfTableExists('catalog_product_variant_prices', 'catalog_product_variant_prices_price_kind_id_foreign');
14
+ this.dropConstraintIfTableExists('catalog_product_category_assignments', 'catalog_product_category_assignments_category_id_foreign');
15
+ this.dropConstraintIfTableExists('catalog_product_variant_prices', 'catalog_product_variant_prices_offer_id_foreign');
16
+ this.dropConstraintIfTableExists('catalog_products', 'catalog_products_option_schema_id_foreign');
17
+ this.dropConstraintIfTableExists('catalog_product_tag_assignments', 'catalog_product_tag_assignments_tag_id_foreign');
18
+ this.dropConstraintIfTableExists('catalog_product_variant_option_values', 'catalog_product_variant_option_values_variant_id_foreign');
19
+ this.dropConstraintIfTableExists('catalog_product_variant_prices', 'catalog_product_variant_prices_variant_id_foreign');
20
+ this.dropConstraintIfTableExists('catalog_product_variant_relations', 'catalog_product_variant_relations_child_variant_id_foreign');
21
+ this.dropConstraintIfTableExists('catalog_product_variant_relations', 'catalog_product_variant_relations_parent_variant_id_foreign');
22
+ this.dropConstraintIfTableExists('catalog_product_category_assignments', 'catalog_product_category_assignments_product_id_foreign');
23
+ this.dropConstraintIfTableExists('catalog_product_offers', 'catalog_product_offers_product_id_foreign');
24
+ this.dropConstraintIfTableExists('catalog_product_options', 'catalog_product_options_product_id_foreign');
25
+ this.dropConstraintIfTableExists('catalog_product_relations', 'catalog_product_relations_child_product_id_foreign');
26
+ this.dropConstraintIfTableExists('catalog_product_relations', 'catalog_product_relations_parent_product_id_foreign');
27
+ this.dropConstraintIfTableExists('catalog_product_tag_assignments', 'catalog_product_tag_assignments_product_id_foreign');
28
+ this.dropConstraintIfTableExists('catalog_product_variant_prices', 'catalog_product_variant_prices_product_id_foreign');
29
+ this.dropConstraintIfTableExists('catalog_product_variants', 'catalog_product_variants_product_id_foreign');
30
+ this.dropConstraintIfTableExists('customer_activities', 'customer_activities_deal_id_foreign');
31
+ this.dropConstraintIfTableExists('customer_comments', 'customer_comments_deal_id_foreign');
32
+ this.dropConstraintIfTableExists('customer_deal_companies', 'customer_deal_companies_deal_id_foreign');
33
+ this.dropConstraintIfTableExists('customer_deal_people', 'customer_deal_people_deal_id_foreign');
34
+ this.dropConstraintIfTableExists('customer_activities', 'customer_activities_entity_id_foreign');
35
+ this.dropConstraintIfTableExists('customer_addresses', 'customer_addresses_entity_id_foreign');
36
+ this.dropConstraintIfTableExists('customer_comments', 'customer_comments_entity_id_foreign');
37
+ this.dropConstraintIfTableExists('customer_companies', 'customer_companies_entity_id_foreign');
38
+ this.dropConstraintIfTableExists('customer_deal_companies', 'customer_deal_companies_company_entity_id_foreign');
39
+ this.dropConstraintIfTableExists('customer_deal_people', 'customer_deal_people_person_entity_id_foreign');
40
+ this.dropConstraintIfTableExists('customer_people', 'customer_people_company_entity_id_foreign');
41
+ this.dropConstraintIfTableExists('customer_people', 'customer_people_entity_id_foreign');
42
+ this.dropConstraintIfTableExists('customer_tag_assignments', 'customer_tag_assignments_entity_id_foreign');
43
+ this.dropConstraintIfTableExists('customer_todo_links', 'customer_todo_links_entity_id_foreign');
44
+ this.dropConstraintIfTableExists('customer_tag_assignments', 'customer_tag_assignments_tag_id_foreign');
45
+ this.dropConstraintIfTableExists('dictionary_entries', 'dictionary_entries_dictionary_id_foreign');
46
+ this.dropConstraintIfTableExists('role_acls', 'role_acls_role_id_foreign');
47
+ this.dropConstraintIfTableExists('role_sidebar_preferences', 'role_sidebar_preferences_role_id_foreign');
48
+ this.dropConstraintIfTableExists('user_roles', 'user_roles_role_id_foreign');
49
+ this.dropConstraintIfTableExists('rule_set_members', 'rule_set_members_rule_set_id_foreign');
50
+ this.dropConstraintIfTableExists('sales_orders', 'sales_orders_channel_ref_id_foreign');
51
+ this.dropConstraintIfTableExists('sales_credit_memo_lines', 'sales_credit_memo_lines_credit_memo_id_foreign');
52
+ this.dropConstraintIfTableExists('sales_orders', 'sales_orders_delivery_window_ref_id_foreign');
53
+ this.dropConstraintIfTableExists('sales_credit_memos', 'sales_credit_memos_invoice_id_foreign');
54
+ this.dropConstraintIfTableExists('sales_invoice_lines', 'sales_invoice_lines_invoice_id_foreign');
55
+ this.dropConstraintIfTableExists('sales_payment_allocations', 'sales_payment_allocations_invoice_id_foreign');
56
+ this.dropConstraintIfTableExists('sales_credit_memo_lines', 'sales_credit_memo_lines_order_line_id_foreign');
57
+ this.dropConstraintIfTableExists('sales_invoice_lines', 'sales_invoice_lines_order_line_id_foreign');
58
+ this.dropConstraintIfTableExists('sales_order_adjustments', 'sales_order_adjustments_order_line_id_foreign');
59
+ this.dropConstraintIfTableExists('sales_shipment_items', 'sales_shipment_items_order_line_id_foreign');
60
+ this.dropConstraintIfTableExists('sales_credit_memos', 'sales_credit_memos_order_id_foreign');
61
+ this.dropConstraintIfTableExists('sales_invoices', 'sales_invoices_order_id_foreign');
62
+ this.dropConstraintIfTableExists('sales_notes', 'sales_notes_order_id_foreign');
63
+ this.dropConstraintIfTableExists('sales_order_adjustments', 'sales_order_adjustments_order_id_foreign');
64
+ this.dropConstraintIfTableExists('sales_order_lines', 'sales_order_lines_order_id_foreign');
65
+ this.dropConstraintIfTableExists('sales_payment_allocations', 'sales_payment_allocations_order_id_foreign');
66
+ this.dropConstraintIfTableExists('sales_payments', 'sales_payments_order_id_foreign');
67
+ this.dropConstraintIfTableExists('sales_shipments', 'sales_shipments_order_id_foreign');
68
+ this.dropConstraintIfTableExists('sales_orders', 'sales_orders_payment_method_ref_id_foreign');
69
+ this.dropConstraintIfTableExists('sales_payments', 'sales_payments_payment_method_id_foreign');
70
+ this.dropConstraintIfTableExists('sales_payment_allocations', 'sales_payment_allocations_payment_id_foreign');
71
+ this.dropConstraintIfTableExists('sales_quote_adjustments', 'sales_quote_adjustments_quote_line_id_foreign');
72
+ this.dropConstraintIfTableExists('sales_notes', 'sales_notes_quote_id_foreign');
73
+ this.dropConstraintIfTableExists('sales_quote_adjustments', 'sales_quote_adjustments_quote_id_foreign');
74
+ this.dropConstraintIfTableExists('sales_quote_lines', 'sales_quote_lines_quote_id_foreign');
75
+ this.dropConstraintIfTableExists('sales_shipment_items', 'sales_shipment_items_shipment_id_foreign');
76
+ this.dropConstraintIfTableExists('sales_orders', 'sales_orders_shipping_method_ref_id_foreign');
77
+ this.dropConstraintIfTableExists('organizations', 'organizations_tenant_id_foreign');
78
+ this.dropConstraintIfTableExists('password_resets', 'password_resets_user_id_foreign');
79
+ this.dropConstraintIfTableExists('sessions', 'sessions_user_id_foreign');
80
+ this.dropConstraintIfTableExists('user_acls', 'user_acls_user_id_foreign');
81
+ this.dropConstraintIfTableExists('user_roles', 'user_roles_user_id_foreign');
82
+ this.dropConstraintIfTableExists('user_sidebar_preferences', 'user_sidebar_preferences_user_id_foreign');
149
83
 
150
84
  this.addSql(`create table "step_instances" ("id" uuid not null default gen_random_uuid(), "workflow_instance_id" uuid not null, "step_id" varchar(100) not null, "step_name" varchar(255) not null, "step_type" varchar(50) not null, "status" varchar(20) not null, "input_data" jsonb null, "output_data" jsonb null, "error_data" jsonb null, "entered_at" timestamptz null, "exited_at" timestamptz null, "execution_time_ms" int null, "retry_count" int not null default 0, "tenant_id" uuid not null, "organization_id" uuid not null, "created_at" timestamptz not null, "updated_at" timestamptz not null, constraint "step_instances_pkey" primary key ("id"));`);
151
85
  this.addSql(`create index "step_instances_tenant_org_idx" on "step_instances" ("tenant_id", "organization_id");`);
@@ -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,15 @@
1
+ import type { ModuleSetupConfig } from '@open-mercato/shared/modules/setup'
2
+ import { seedExampleWorkflows } from './lib/seeds'
3
+
4
+ export const setup: ModuleSetupConfig = {
5
+ seedDefaults: async (ctx) => {
6
+ const scope = { tenantId: ctx.tenantId, organizationId: ctx.organizationId }
7
+ await seedExampleWorkflows(ctx.em, scope)
8
+ },
9
+
10
+ defaultRoleFeatures: {
11
+ admin: ['workflows.*'],
12
+ },
13
+ }
14
+
15
+ export default setup