@open-mercato/core 0.4.2-canary-c71ef83148 → 0.4.2-canary-f821f89ef6

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/workflow_event_trigger/index.js +33 -0
  2. package/dist/generated/entities/workflow_event_trigger/index.js.map +7 -0
  3. package/dist/generated/entities.ids.generated.js +2 -5
  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 +2 -3
  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 +0 -4
  12. package/dist/modules/attachments/components/AttachmentLibrary.js.map +2 -2
  13. package/dist/modules/attachments/components/AttachmentPartitionSettings.js +0 -2
  14. package/dist/modules/attachments/components/AttachmentPartitionSettings.js.map +2 -2
  15. package/dist/modules/auth/api/admin/nav.js +3 -4
  16. package/dist/modules/auth/api/admin/nav.js.map +2 -2
  17. package/dist/modules/auth/api/login.js +6 -25
  18. package/dist/modules/auth/api/login.js.map +2 -2
  19. package/dist/modules/auth/api/reset/confirm.js +2 -25
  20. package/dist/modules/auth/api/reset/confirm.js.map +2 -2
  21. package/dist/modules/auth/api/reset.js +0 -23
  22. package/dist/modules/auth/api/reset.js.map +2 -2
  23. package/dist/modules/auth/api/sidebar/preferences/route.js +9 -14
  24. package/dist/modules/auth/api/sidebar/preferences/route.js.map +2 -2
  25. package/dist/modules/auth/api/users/route.js +2 -4
  26. package/dist/modules/auth/api/users/route.js.map +2 -2
  27. package/dist/modules/auth/backend/roles/[id]/edit/page.js +1 -4
  28. package/dist/modules/auth/backend/roles/[id]/edit/page.js.map +2 -2
  29. package/dist/modules/auth/backend/roles/page.js +3 -3
  30. package/dist/modules/auth/backend/roles/page.js.map +2 -2
  31. package/dist/modules/auth/backend/users/[id]/edit/page.js +3 -18
  32. package/dist/modules/auth/backend/users/[id]/edit/page.js.map +2 -2
  33. package/dist/modules/auth/backend/users/create/page.js +2 -15
  34. package/dist/modules/auth/backend/users/create/page.js.map +2 -2
  35. package/dist/modules/auth/backend/users/page.js +3 -3
  36. package/dist/modules/auth/backend/users/page.js.map +2 -2
  37. package/dist/modules/auth/cli.js +11 -25
  38. package/dist/modules/auth/cli.js.map +2 -2
  39. package/dist/modules/auth/commands/users.js +2 -59
  40. package/dist/modules/auth/commands/users.js.map +2 -2
  41. package/dist/modules/auth/data/validators.js +3 -6
  42. package/dist/modules/auth/data/validators.js.map +2 -2
  43. package/dist/modules/auth/events.js +30 -0
  44. package/dist/modules/auth/events.js.map +7 -0
  45. package/dist/modules/auth/frontend/login.js +3 -105
  46. package/dist/modules/auth/frontend/login.js.map +2 -2
  47. package/dist/modules/auth/frontend/reset/[token]/page.js +10 -20
  48. package/dist/modules/auth/frontend/reset/[token]/page.js.map +2 -2
  49. package/dist/modules/auth/lib/setup-app.js +8 -42
  50. package/dist/modules/auth/lib/setup-app.js.map +2 -2
  51. package/dist/modules/auth/services/authService.js +3 -24
  52. package/dist/modules/auth/services/authService.js.map +2 -2
  53. package/dist/modules/business_rules/api/execute/[ruleId]/route.js +145 -0
  54. package/dist/modules/business_rules/api/execute/[ruleId]/route.js.map +7 -0
  55. package/dist/modules/business_rules/api/execute/route.js +1 -7
  56. package/dist/modules/business_rules/api/execute/route.js.map +2 -2
  57. package/dist/modules/business_rules/backend/rules/page.js +0 -4
  58. package/dist/modules/business_rules/backend/rules/page.js.map +2 -2
  59. package/dist/modules/business_rules/backend/sets/page.js +0 -3
  60. package/dist/modules/business_rules/backend/sets/page.js.map +2 -2
  61. package/dist/modules/business_rules/cli.js +1 -2
  62. package/dist/modules/business_rules/cli.js.map +2 -2
  63. package/dist/modules/business_rules/data/validators.js +34 -0
  64. package/dist/modules/business_rules/data/validators.js.map +2 -2
  65. package/dist/modules/business_rules/index.js +21 -1
  66. package/dist/modules/business_rules/index.js.map +2 -2
  67. package/dist/modules/business_rules/lib/rule-engine.js +185 -34
  68. package/dist/modules/business_rules/lib/rule-engine.js.map +2 -2
  69. package/dist/modules/catalog/components/PriceKindSettings.js +0 -2
  70. package/dist/modules/catalog/components/PriceKindSettings.js.map +2 -2
  71. package/dist/modules/catalog/components/categories/CategoriesDataTable.js +2 -2
  72. package/dist/modules/catalog/components/categories/CategoriesDataTable.js.map +2 -2
  73. package/dist/modules/catalog/components/products/ProductsDataTable.js +0 -2
  74. package/dist/modules/catalog/components/products/ProductsDataTable.js.map +2 -2
  75. package/dist/modules/catalog/events.js +34 -0
  76. package/dist/modules/catalog/events.js.map +7 -0
  77. package/dist/modules/configs/cli.js +0 -6
  78. package/dist/modules/configs/cli.js.map +2 -2
  79. package/dist/modules/configs/components/CachePanel.js +4 -4
  80. package/dist/modules/configs/components/CachePanel.js.map +2 -2
  81. package/dist/modules/configs/lib/system-status.js +1 -48
  82. package/dist/modules/configs/lib/system-status.js.map +2 -2
  83. package/dist/modules/configs/lib/upgrade-actions.js +0 -18
  84. package/dist/modules/configs/lib/upgrade-actions.js.map +2 -2
  85. package/dist/modules/currencies/backend/currencies/page.js +0 -3
  86. package/dist/modules/currencies/backend/currencies/page.js.map +2 -2
  87. package/dist/modules/currencies/backend/exchange-rates/page.js +0 -2
  88. package/dist/modules/currencies/backend/exchange-rates/page.js.map +2 -2
  89. package/dist/modules/customers/backend/customers/companies/page.js +0 -3
  90. package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
  91. package/dist/modules/customers/backend/customers/deals/page.js +0 -3
  92. package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
  93. package/dist/modules/customers/backend/customers/people/page.js +0 -3
  94. package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
  95. package/dist/modules/customers/commands/deals.js +0 -31
  96. package/dist/modules/customers/commands/deals.js.map +2 -2
  97. package/dist/modules/customers/components/CustomerTodosTable.js +0 -1
  98. package/dist/modules/customers/components/CustomerTodosTable.js.map +2 -2
  99. package/dist/modules/customers/events.js +49 -0
  100. package/dist/modules/customers/events.js.map +7 -0
  101. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js +1 -2
  102. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js.map +2 -2
  103. package/dist/modules/customers/widgets/dashboard/new-customers/widget.js +1 -2
  104. package/dist/modules/customers/widgets/dashboard/new-customers/widget.js.map +2 -2
  105. package/dist/modules/customers/widgets/dashboard/new-deals/widget.js +1 -2
  106. package/dist/modules/customers/widgets/dashboard/new-deals/widget.js.map +2 -2
  107. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js +1 -2
  108. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js.map +2 -2
  109. package/dist/modules/dashboards/cli.js +5 -44
  110. package/dist/modules/dashboards/cli.js.map +2 -2
  111. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js +11 -16
  112. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js.map +3 -3
  113. package/dist/modules/dashboards/services/widgetDataService.js +3 -139
  114. package/dist/modules/dashboards/services/widgetDataService.js.map +2 -2
  115. package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js +1 -2
  116. package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js.map +2 -2
  117. package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js +1 -2
  118. package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js.map +2 -2
  119. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js +1 -2
  120. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js.map +2 -2
  121. package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js +1 -2
  122. package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js.map +2 -2
  123. package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js +1 -2
  124. package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js.map +2 -2
  125. package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js +1 -2
  126. package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js.map +2 -2
  127. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js +1 -2
  128. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js.map +2 -2
  129. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js +1 -2
  130. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js.map +2 -2
  131. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js +1 -2
  132. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js.map +2 -2
  133. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js +1 -2
  134. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js.map +2 -2
  135. package/dist/modules/dictionaries/components/DictionaryTable.js +0 -2
  136. package/dist/modules/dictionaries/components/DictionaryTable.js.map +2 -2
  137. package/dist/modules/directory/backend/directory/organizations/page.js +2 -2
  138. package/dist/modules/directory/backend/directory/organizations/page.js.map +2 -2
  139. package/dist/modules/directory/backend/directory/tenants/page.js +2 -2
  140. package/dist/modules/directory/backend/directory/tenants/page.js.map +2 -2
  141. package/dist/modules/directory/events.js +23 -0
  142. package/dist/modules/directory/events.js.map +7 -0
  143. package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js +2 -2
  144. package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js.map +2 -2
  145. package/dist/modules/entities/components/SystemEntitiesTable.js +1 -1
  146. package/dist/modules/entities/components/SystemEntitiesTable.js.map +2 -2
  147. package/dist/modules/entities/components/UserEntitiesTable.js +2 -2
  148. package/dist/modules/entities/components/UserEntitiesTable.js.map +2 -2
  149. package/dist/modules/feature_toggles/components/FeatureTogglesTable.js +3 -3
  150. package/dist/modules/feature_toggles/components/FeatureTogglesTable.js.map +2 -2
  151. package/dist/modules/feature_toggles/components/OverridesTable.js +1 -1
  152. package/dist/modules/feature_toggles/components/OverridesTable.js.map +2 -2
  153. package/dist/modules/planner/backend/planner/availability-rulesets/page.js +2 -2
  154. package/dist/modules/planner/backend/planner/availability-rulesets/page.js.map +2 -2
  155. package/dist/modules/query_index/cli.js +7 -63
  156. package/dist/modules/query_index/cli.js.map +2 -2
  157. package/dist/modules/query_index/components/QueryIndexesTable.js +1 -7
  158. package/dist/modules/query_index/components/QueryIndexesTable.js.map +2 -2
  159. package/dist/modules/resources/backend/resources/resource-types/page.js +2 -2
  160. package/dist/modules/resources/backend/resources/resource-types/page.js.map +2 -2
  161. package/dist/modules/resources/backend/resources/resources/page.js +2 -2
  162. package/dist/modules/resources/backend/resources/resources/page.js.map +2 -2
  163. package/dist/modules/sales/acl.js +1 -0
  164. package/dist/modules/sales/acl.js.map +2 -2
  165. package/dist/modules/sales/backend/sales/channels/offers/page.js +0 -2
  166. package/dist/modules/sales/backend/sales/channels/offers/page.js.map +2 -2
  167. package/dist/modules/sales/backend/sales/channels/page.js +0 -2
  168. package/dist/modules/sales/backend/sales/channels/page.js.map +2 -2
  169. package/dist/modules/sales/backend/sales/documents/[id]/page.js +12 -0
  170. package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
  171. package/dist/modules/sales/commands/documents.js +62 -53
  172. package/dist/modules/sales/commands/documents.js.map +2 -2
  173. package/dist/modules/sales/commands/payments.js +0 -26
  174. package/dist/modules/sales/commands/payments.js.map +2 -2
  175. package/dist/modules/sales/components/AdjustmentKindSettings.js +2 -2
  176. package/dist/modules/sales/components/AdjustmentKindSettings.js.map +2 -2
  177. package/dist/modules/sales/components/PaymentMethodsSettings.js +2 -2
  178. package/dist/modules/sales/components/PaymentMethodsSettings.js.map +2 -2
  179. package/dist/modules/sales/components/ShippingMethodsSettings.js +2 -2
  180. package/dist/modules/sales/components/ShippingMethodsSettings.js.map +2 -2
  181. package/dist/modules/sales/components/TaxRatesSettings.js +2 -2
  182. package/dist/modules/sales/components/TaxRatesSettings.js.map +2 -2
  183. package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js +0 -2
  184. package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js.map +2 -2
  185. package/dist/modules/sales/components/documents/AdjustmentsSection.js +0 -2
  186. package/dist/modules/sales/components/documents/AdjustmentsSection.js.map +2 -2
  187. package/dist/modules/sales/components/documents/PaymentsSection.js +1 -2
  188. package/dist/modules/sales/components/documents/PaymentsSection.js.map +2 -2
  189. package/dist/modules/sales/components/documents/SalesDocumentsTable.js +0 -2
  190. package/dist/modules/sales/components/documents/SalesDocumentsTable.js.map +2 -2
  191. package/dist/modules/sales/events.js +63 -0
  192. package/dist/modules/sales/events.js.map +7 -0
  193. package/dist/modules/sales/lib/dictionaries.js +3 -0
  194. package/dist/modules/sales/lib/dictionaries.js.map +2 -2
  195. package/dist/modules/sales/lib/frontend/documentDataEvents.js +25 -0
  196. package/dist/modules/sales/lib/frontend/documentDataEvents.js.map +7 -0
  197. package/dist/modules/staff/backend/staff/team-members/page.js +1 -1
  198. package/dist/modules/staff/backend/staff/team-members/page.js.map +2 -2
  199. package/dist/modules/staff/backend/staff/team-roles/page.js +2 -2
  200. package/dist/modules/staff/backend/staff/team-roles/page.js.map +2 -2
  201. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js +2 -2
  202. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js.map +2 -2
  203. package/dist/modules/staff/backend/staff/teams/page.js +2 -2
  204. package/dist/modules/staff/backend/staff/teams/page.js.map +2 -2
  205. package/dist/modules/staff/commands/leave-requests.js +0 -79
  206. package/dist/modules/staff/commands/leave-requests.js.map +2 -2
  207. package/dist/modules/workflows/acl.js +2 -0
  208. package/dist/modules/workflows/acl.js.map +2 -2
  209. package/dist/modules/workflows/api/instances/route.js +18 -6
  210. package/dist/modules/workflows/api/instances/route.js.map +2 -2
  211. package/dist/modules/workflows/api/tasks/route.js +6 -1
  212. package/dist/modules/workflows/api/tasks/route.js.map +2 -2
  213. package/dist/modules/workflows/backend/definitions/[id]/page.js +9 -1
  214. package/dist/modules/workflows/backend/definitions/[id]/page.js.map +2 -2
  215. package/dist/modules/workflows/backend/definitions/[id]/page.meta.js +1 -1
  216. package/dist/modules/workflows/backend/definitions/[id]/page.meta.js.map +2 -2
  217. package/dist/modules/workflows/backend/definitions/create/page.js +24 -15
  218. package/dist/modules/workflows/backend/definitions/create/page.js.map +2 -2
  219. package/dist/modules/workflows/backend/definitions/create/page.meta.js +1 -1
  220. package/dist/modules/workflows/backend/definitions/create/page.meta.js.map +2 -2
  221. package/dist/modules/workflows/backend/definitions/page.js +0 -5
  222. package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
  223. package/dist/modules/workflows/backend/definitions/visual-editor/page.js +150 -132
  224. package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
  225. package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js +1 -1
  226. package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js.map +2 -2
  227. package/dist/modules/workflows/backend/events/[id]/page.js +1 -1
  228. package/dist/modules/workflows/backend/events/[id]/page.js.map +2 -2
  229. package/dist/modules/workflows/backend/events/[id]/page.meta.js +2 -2
  230. package/dist/modules/workflows/backend/events/[id]/page.meta.js.map +2 -2
  231. package/dist/modules/workflows/backend/instances/[id]/page.meta.js +2 -2
  232. package/dist/modules/workflows/backend/instances/[id]/page.meta.js.map +2 -2
  233. package/dist/modules/workflows/backend/instances/page.js +0 -3
  234. package/dist/modules/workflows/backend/instances/page.js.map +2 -2
  235. package/dist/modules/workflows/backend/tasks/[id]/page.js +1 -1
  236. package/dist/modules/workflows/backend/tasks/[id]/page.js.map +2 -2
  237. package/dist/modules/workflows/backend/tasks/[id]/page.meta.js +2 -2
  238. package/dist/modules/workflows/backend/tasks/[id]/page.meta.js.map +2 -2
  239. package/dist/modules/workflows/backend/tasks/page.js +5 -9
  240. package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
  241. package/dist/modules/workflows/cli.js +93 -15
  242. package/dist/modules/workflows/cli.js.map +3 -3
  243. package/dist/modules/workflows/components/DefinitionTriggersEditor.js +481 -0
  244. package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +7 -0
  245. package/dist/modules/workflows/components/EventTriggersEditor.js +553 -0
  246. package/dist/modules/workflows/components/EventTriggersEditor.js.map +7 -0
  247. package/dist/modules/workflows/data/entities.js +64 -1
  248. package/dist/modules/workflows/data/entities.js.map +2 -2
  249. package/dist/modules/workflows/data/validators.js +115 -0
  250. package/dist/modules/workflows/data/validators.js.map +2 -2
  251. package/dist/modules/workflows/events.js +38 -0
  252. package/dist/modules/workflows/events.js.map +7 -0
  253. package/dist/modules/workflows/examples/checkout-demo-definition.json +1 -5
  254. package/dist/modules/workflows/examples/order-approval-definition.json +257 -0
  255. package/dist/modules/workflows/examples/order-approval-guard-rules.json +32 -0
  256. package/dist/modules/workflows/lib/activity-executor.js +75 -13
  257. package/dist/modules/workflows/lib/activity-executor.js.map +2 -2
  258. package/dist/modules/workflows/lib/event-trigger-service.js +308 -0
  259. package/dist/modules/workflows/lib/event-trigger-service.js.map +7 -0
  260. package/dist/modules/workflows/lib/graph-utils.js +71 -2
  261. package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
  262. package/dist/modules/workflows/lib/seeds.js +22 -5
  263. package/dist/modules/workflows/lib/seeds.js.map +2 -2
  264. package/dist/modules/workflows/lib/start-validator.js +33 -23
  265. package/dist/modules/workflows/lib/start-validator.js.map +2 -2
  266. package/dist/modules/workflows/lib/transition-handler.js +161 -57
  267. package/dist/modules/workflows/lib/transition-handler.js.map +3 -3
  268. package/dist/modules/workflows/migrations/Migration20260123143500.js +36 -0
  269. package/dist/modules/workflows/migrations/Migration20260123143500.js.map +7 -0
  270. package/dist/modules/workflows/subscribers/event-trigger.js +78 -0
  271. package/dist/modules/workflows/subscribers/event-trigger.js.map +7 -0
  272. package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js +323 -0
  273. package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js.map +7 -0
  274. package/dist/modules/workflows/widgets/injection/order-approval/widget.js +17 -0
  275. package/dist/modules/workflows/widgets/injection/order-approval/widget.js.map +7 -0
  276. package/dist/modules/workflows/widgets/injection-table.js +19 -0
  277. package/dist/modules/workflows/widgets/injection-table.js.map +7 -0
  278. package/generated/entities/workflow_event_trigger/index.ts +15 -0
  279. package/generated/entities.ids.generated.ts +2 -5
  280. package/generated/entity-fields-registry.ts +2 -2
  281. package/package.json +2 -2
  282. package/src/modules/api_docs/frontend/docs/api/page.tsx +2 -3
  283. package/src/modules/api_keys/backend/api-keys/page.tsx +1 -1
  284. package/src/modules/attachments/components/AttachmentLibrary.tsx +0 -4
  285. package/src/modules/attachments/components/AttachmentPartitionSettings.tsx +0 -2
  286. package/src/modules/auth/README.md +1 -1
  287. package/src/modules/auth/__tests__/cli-setup-acl.test.ts +1 -1
  288. package/src/modules/auth/api/__tests__/login.test.ts +0 -2
  289. package/src/modules/auth/api/admin/nav.ts +6 -10
  290. package/src/modules/auth/api/login.ts +7 -26
  291. package/src/modules/auth/api/reset/confirm.ts +2 -25
  292. package/src/modules/auth/api/reset.ts +0 -23
  293. package/src/modules/auth/api/sidebar/preferences/route.ts +12 -21
  294. package/src/modules/auth/api/users/route.ts +2 -5
  295. package/src/modules/auth/backend/roles/[id]/edit/page.tsx +1 -4
  296. package/src/modules/auth/backend/roles/page.tsx +3 -3
  297. package/src/modules/auth/backend/users/[id]/edit/page.tsx +3 -22
  298. package/src/modules/auth/backend/users/create/page.tsx +2 -19
  299. package/src/modules/auth/backend/users/page.tsx +3 -3
  300. package/src/modules/auth/cli.ts +11 -38
  301. package/src/modules/auth/commands/users.ts +2 -73
  302. package/src/modules/auth/data/validators.ts +2 -6
  303. package/src/modules/auth/events.ts +39 -0
  304. package/src/modules/auth/frontend/login.tsx +5 -131
  305. package/src/modules/auth/frontend/reset/[token]/page.tsx +11 -24
  306. package/src/modules/auth/i18n/de.json +1 -48
  307. package/src/modules/auth/i18n/en.json +1 -48
  308. package/src/modules/auth/i18n/es.json +1 -48
  309. package/src/modules/auth/i18n/pl.json +1 -48
  310. package/src/modules/auth/lib/setup-app.ts +9 -58
  311. package/src/modules/auth/services/authService.ts +4 -27
  312. package/src/modules/business_rules/api/execute/[ruleId]/route.ts +163 -0
  313. package/src/modules/business_rules/api/execute/route.ts +1 -8
  314. package/src/modules/business_rules/backend/rules/page.tsx +0 -4
  315. package/src/modules/business_rules/backend/sets/page.tsx +0 -3
  316. package/src/modules/business_rules/cli.ts +1 -2
  317. package/src/modules/business_rules/data/validators.ts +40 -0
  318. package/src/modules/business_rules/i18n/en.json +1 -3
  319. package/src/modules/business_rules/index.ts +25 -0
  320. package/src/modules/business_rules/lib/__tests__/rule-engine.test.ts +0 -51
  321. package/src/modules/business_rules/lib/rule-engine.ts +277 -51
  322. package/src/modules/catalog/components/PriceKindSettings.tsx +0 -2
  323. package/src/modules/catalog/components/categories/CategoriesDataTable.tsx +2 -2
  324. package/src/modules/catalog/components/products/ProductsDataTable.tsx +0 -2
  325. package/src/modules/catalog/events.ts +45 -0
  326. package/src/modules/catalog/i18n/en.json +1 -3
  327. package/src/modules/configs/cli.ts +0 -6
  328. package/src/modules/configs/components/CachePanel.tsx +4 -4
  329. package/src/modules/configs/i18n/en.json +2 -12
  330. package/src/modules/configs/i18n/pl.json +2 -12
  331. package/src/modules/configs/lib/system-status.ts +1 -48
  332. package/src/modules/configs/lib/system-status.types.ts +0 -1
  333. package/src/modules/configs/lib/upgrade-actions.ts +0 -18
  334. package/src/modules/currencies/backend/currencies/page.tsx +0 -3
  335. package/src/modules/currencies/backend/exchange-rates/page.tsx +0 -2
  336. package/src/modules/customers/backend/customers/companies/page.tsx +0 -3
  337. package/src/modules/customers/backend/customers/deals/page.tsx +0 -3
  338. package/src/modules/customers/backend/customers/people/page.tsx +0 -3
  339. package/src/modules/customers/commands/deals.ts +0 -39
  340. package/src/modules/customers/components/CustomerTodosTable.tsx +0 -1
  341. package/src/modules/customers/events.ts +63 -0
  342. package/src/modules/customers/i18n/en.json +1 -5
  343. package/src/modules/customers/widgets/dashboard/customer-todos/widget.ts +2 -2
  344. package/src/modules/customers/widgets/dashboard/new-customers/widget.ts +2 -2
  345. package/src/modules/customers/widgets/dashboard/new-deals/widget.ts +2 -2
  346. package/src/modules/customers/widgets/dashboard/next-interactions/widget.ts +2 -2
  347. package/src/modules/dashboards/cli.ts +5 -55
  348. package/src/modules/dashboards/components/WidgetVisibilityEditor.tsx +11 -22
  349. package/src/modules/dashboards/services/widgetDataService.ts +4 -164
  350. package/src/modules/dashboards/widgets/dashboard/aov-kpi/widget.ts +2 -2
  351. package/src/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.ts +2 -2
  352. package/src/modules/dashboards/widgets/dashboard/orders-by-status/widget.ts +2 -2
  353. package/src/modules/dashboards/widgets/dashboard/orders-kpi/widget.ts +2 -2
  354. package/src/modules/dashboards/widgets/dashboard/pipeline-summary/widget.ts +2 -2
  355. package/src/modules/dashboards/widgets/dashboard/revenue-kpi/widget.ts +2 -2
  356. package/src/modules/dashboards/widgets/dashboard/revenue-trend/widget.ts +2 -2
  357. package/src/modules/dashboards/widgets/dashboard/sales-by-region/widget.ts +2 -2
  358. package/src/modules/dashboards/widgets/dashboard/top-customers/widget.ts +2 -2
  359. package/src/modules/dashboards/widgets/dashboard/top-products/widget.ts +2 -2
  360. package/src/modules/dictionaries/components/DictionaryTable.tsx +0 -2
  361. package/src/modules/directory/backend/directory/organizations/page.tsx +2 -2
  362. package/src/modules/directory/backend/directory/tenants/page.tsx +2 -2
  363. package/src/modules/directory/events.ts +31 -0
  364. package/src/modules/entities/backend/entities/user/[entityId]/records/page.tsx +2 -2
  365. package/src/modules/entities/components/SystemEntitiesTable.tsx +1 -1
  366. package/src/modules/entities/components/UserEntitiesTable.tsx +2 -2
  367. package/src/modules/feature_toggles/components/FeatureTogglesTable.tsx +4 -3
  368. package/src/modules/feature_toggles/components/OverridesTable.tsx +1 -1
  369. package/src/modules/planner/backend/planner/availability-rulesets/page.tsx +2 -2
  370. package/src/modules/query_index/cli.ts +13 -82
  371. package/src/modules/query_index/components/QueryIndexesTable.tsx +2 -8
  372. package/src/modules/resources/backend/resources/resource-types/page.tsx +2 -2
  373. package/src/modules/resources/backend/resources/resources/page.tsx +2 -2
  374. package/src/modules/sales/acl.ts +1 -0
  375. package/src/modules/sales/backend/sales/channels/offers/page.tsx +0 -2
  376. package/src/modules/sales/backend/sales/channels/page.tsx +0 -2
  377. package/src/modules/sales/backend/sales/documents/[id]/page.tsx +16 -0
  378. package/src/modules/sales/commands/documents.ts +70 -62
  379. package/src/modules/sales/commands/payments.ts +0 -33
  380. package/src/modules/sales/components/AdjustmentKindSettings.tsx +2 -2
  381. package/src/modules/sales/components/PaymentMethodsSettings.tsx +2 -2
  382. package/src/modules/sales/components/ShippingMethodsSettings.tsx +2 -2
  383. package/src/modules/sales/components/TaxRatesSettings.tsx +2 -2
  384. package/src/modules/sales/components/channels/SalesChannelOffersPanel.tsx +0 -2
  385. package/src/modules/sales/components/documents/AdjustmentsSection.tsx +0 -2
  386. package/src/modules/sales/components/documents/PaymentsSection.tsx +1 -2
  387. package/src/modules/sales/components/documents/SalesDocumentsTable.tsx +0 -2
  388. package/src/modules/sales/events.ts +82 -0
  389. package/src/modules/sales/i18n/de.json +0 -20
  390. package/src/modules/sales/i18n/en.json +1 -25
  391. package/src/modules/sales/i18n/es.json +0 -20
  392. package/src/modules/sales/i18n/pl.json +0 -20
  393. package/src/modules/sales/lib/dictionaries.ts +3 -0
  394. package/src/modules/sales/lib/frontend/documentDataEvents.ts +28 -0
  395. package/src/modules/staff/backend/staff/team-members/page.tsx +1 -1
  396. package/src/modules/staff/backend/staff/team-roles/page.tsx +2 -2
  397. package/src/modules/staff/backend/staff/teams/[id]/edit/page.tsx +2 -2
  398. package/src/modules/staff/backend/staff/teams/page.tsx +2 -2
  399. package/src/modules/staff/commands/leave-requests.ts +0 -94
  400. package/src/modules/staff/i18n/de.json +0 -4
  401. package/src/modules/staff/i18n/en.json +1 -9
  402. package/src/modules/staff/i18n/es.json +0 -4
  403. package/src/modules/staff/i18n/pl.json +0 -4
  404. package/src/modules/workflows/acl.ts +2 -0
  405. package/src/modules/workflows/api/__tests__/instances.route.test.ts +5 -2
  406. package/src/modules/workflows/api/instances/route.ts +21 -7
  407. package/src/modules/workflows/api/tasks/route.ts +7 -1
  408. package/src/modules/workflows/backend/definitions/[id]/page.meta.ts +1 -1
  409. package/src/modules/workflows/backend/definitions/[id]/page.tsx +9 -0
  410. package/src/modules/workflows/backend/definitions/create/page.meta.ts +1 -1
  411. package/src/modules/workflows/backend/definitions/create/page.tsx +9 -0
  412. package/src/modules/workflows/backend/definitions/page.tsx +0 -5
  413. package/src/modules/workflows/backend/definitions/visual-editor/page.meta.ts +1 -1
  414. package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +21 -3
  415. package/src/modules/workflows/backend/events/[id]/page.meta.ts +2 -2
  416. package/src/modules/workflows/backend/events/[id]/page.tsx +1 -1
  417. package/src/modules/workflows/backend/instances/[id]/page.meta.ts +2 -2
  418. package/src/modules/workflows/backend/instances/page.tsx +1 -4
  419. package/src/modules/workflows/backend/tasks/[id]/page.meta.ts +2 -2
  420. package/src/modules/workflows/backend/tasks/[id]/page.tsx +1 -1
  421. package/src/modules/workflows/backend/tasks/page.tsx +6 -10
  422. package/src/modules/workflows/cli.ts +123 -12
  423. package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +581 -0
  424. package/src/modules/workflows/components/EventTriggersEditor.tsx +664 -0
  425. package/src/modules/workflows/data/entities.ts +124 -0
  426. package/src/modules/workflows/data/validators.ts +138 -0
  427. package/src/modules/workflows/events.ts +49 -0
  428. package/src/modules/workflows/examples/checkout-demo-definition.json +1 -5
  429. package/src/modules/workflows/examples/order-approval-definition.json +257 -0
  430. package/src/modules/workflows/examples/order-approval-guard-rules.json +32 -0
  431. package/src/modules/workflows/i18n/en.json +72 -3
  432. package/src/modules/workflows/lib/__tests__/activity-executor.test.ts +43 -36
  433. package/src/modules/workflows/lib/__tests__/transition-handler.test.ts +170 -90
  434. package/src/modules/workflows/lib/activity-executor.ts +129 -16
  435. package/src/modules/workflows/lib/event-trigger-service.ts +557 -0
  436. package/src/modules/workflows/lib/graph-utils.ts +117 -2
  437. package/src/modules/workflows/lib/seeds.ts +34 -8
  438. package/src/modules/workflows/lib/start-validator.ts +38 -28
  439. package/src/modules/workflows/lib/transition-handler.ts +212 -71
  440. package/src/modules/workflows/migrations/Migration20260123143500.ts +38 -0
  441. package/src/modules/workflows/subscribers/event-trigger.ts +109 -0
  442. package/src/modules/workflows/widgets/injection/order-approval/widget.client.tsx +446 -0
  443. package/src/modules/workflows/widgets/injection/order-approval/widget.ts +16 -0
  444. package/src/modules/workflows/widgets/injection-table.ts +21 -0
  445. package/dist/generated/entities/notification/index.js +0 -57
  446. package/dist/generated/entities/notification/index.js.map +0 -7
  447. package/dist/modules/auth/api/profile/route.js +0 -157
  448. package/dist/modules/auth/api/profile/route.js.map +0 -7
  449. package/dist/modules/auth/backend/auth/profile/page.js +0 -141
  450. package/dist/modules/auth/backend/auth/profile/page.js.map +0 -7
  451. package/dist/modules/auth/backend/auth/profile/page.meta.js +0 -13
  452. package/dist/modules/auth/backend/auth/profile/page.meta.js.map +0 -7
  453. package/dist/modules/auth/notifications.js +0 -112
  454. package/dist/modules/auth/notifications.js.map +0 -7
  455. package/dist/modules/business_rules/notifications.js +0 -28
  456. package/dist/modules/business_rules/notifications.js.map +0 -7
  457. package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js +0 -37
  458. package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js.map +0 -7
  459. package/dist/modules/catalog/notifications.js +0 -28
  460. package/dist/modules/catalog/notifications.js.map +0 -7
  461. package/dist/modules/catalog/subscribers/low-stock-notification.js +0 -38
  462. package/dist/modules/catalog/subscribers/low-stock-notification.js.map +0 -7
  463. package/dist/modules/customers/notifications.js +0 -48
  464. package/dist/modules/customers/notifications.js.map +0 -7
  465. package/dist/modules/dashboards/lib/role-widgets.js +0 -58
  466. package/dist/modules/dashboards/lib/role-widgets.js.map +0 -7
  467. package/dist/modules/directory/api/get/tenants/lookup.js +0 -70
  468. package/dist/modules/directory/api/get/tenants/lookup.js.map +0 -7
  469. package/dist/modules/notifications/acl.js +0 -11
  470. package/dist/modules/notifications/acl.js.map +0 -7
  471. package/dist/modules/notifications/api/[id]/action/route.js +0 -74
  472. package/dist/modules/notifications/api/[id]/action/route.js.map +0 -7
  473. package/dist/modules/notifications/api/[id]/dismiss/route.js +0 -15
  474. package/dist/modules/notifications/api/[id]/dismiss/route.js.map +0 -7
  475. package/dist/modules/notifications/api/[id]/read/route.js +0 -15
  476. package/dist/modules/notifications/api/[id]/read/route.js.map +0 -7
  477. package/dist/modules/notifications/api/[id]/restore/route.js +0 -53
  478. package/dist/modules/notifications/api/[id]/restore/route.js.map +0 -7
  479. package/dist/modules/notifications/api/batch/route.js +0 -17
  480. package/dist/modules/notifications/api/batch/route.js.map +0 -7
  481. package/dist/modules/notifications/api/feature/route.js +0 -17
  482. package/dist/modules/notifications/api/feature/route.js.map +0 -7
  483. package/dist/modules/notifications/api/mark-all-read/route.js +0 -35
  484. package/dist/modules/notifications/api/mark-all-read/route.js.map +0 -7
  485. package/dist/modules/notifications/api/openapi.js +0 -76
  486. package/dist/modules/notifications/api/openapi.js.map +0 -7
  487. package/dist/modules/notifications/api/role/route.js +0 -17
  488. package/dist/modules/notifications/api/role/route.js.map +0 -7
  489. package/dist/modules/notifications/api/route.js +0 -85
  490. package/dist/modules/notifications/api/route.js.map +0 -7
  491. package/dist/modules/notifications/api/settings/route.js +0 -155
  492. package/dist/modules/notifications/api/settings/route.js.map +0 -7
  493. package/dist/modules/notifications/api/unread-count/route.js +0 -38
  494. package/dist/modules/notifications/api/unread-count/route.js.map +0 -7
  495. package/dist/modules/notifications/backend/config/notifications/page.js +0 -10
  496. package/dist/modules/notifications/backend/config/notifications/page.js.map +0 -7
  497. package/dist/modules/notifications/backend/config/notifications/page.meta.js +0 -24
  498. package/dist/modules/notifications/backend/config/notifications/page.meta.js.map +0 -7
  499. package/dist/modules/notifications/cli.js +0 -16
  500. package/dist/modules/notifications/cli.js.map +0 -7
  501. package/dist/modules/notifications/data/entities.js +0 -112
  502. package/dist/modules/notifications/data/entities.js.map +0 -7
  503. package/dist/modules/notifications/data/validators.js +0 -98
  504. package/dist/modules/notifications/data/validators.js.map +0 -7
  505. package/dist/modules/notifications/di.js +0 -13
  506. package/dist/modules/notifications/di.js.map +0 -7
  507. package/dist/modules/notifications/emails/NotificationEmail.js +0 -58
  508. package/dist/modules/notifications/emails/NotificationEmail.js.map +0 -7
  509. package/dist/modules/notifications/frontend/NotificationInboxPageClient.js +0 -44
  510. package/dist/modules/notifications/frontend/NotificationInboxPageClient.js.map +0 -7
  511. package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js +0 -220
  512. package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js.map +0 -7
  513. package/dist/modules/notifications/index.js +0 -14
  514. package/dist/modules/notifications/index.js.map +0 -7
  515. package/dist/modules/notifications/lib/deliveryConfig.js +0 -107
  516. package/dist/modules/notifications/lib/deliveryConfig.js.map +0 -7
  517. package/dist/modules/notifications/lib/deliveryStrategies.js +0 -14
  518. package/dist/modules/notifications/lib/deliveryStrategies.js.map +0 -7
  519. package/dist/modules/notifications/lib/events.js +0 -12
  520. package/dist/modules/notifications/lib/events.js.map +0 -7
  521. package/dist/modules/notifications/lib/notificationBuilder.js +0 -66
  522. package/dist/modules/notifications/lib/notificationBuilder.js.map +0 -7
  523. package/dist/modules/notifications/lib/notificationFactory.js +0 -54
  524. package/dist/modules/notifications/lib/notificationFactory.js.map +0 -7
  525. package/dist/modules/notifications/lib/notificationMapper.js +0 -34
  526. package/dist/modules/notifications/lib/notificationMapper.js.map +0 -7
  527. package/dist/modules/notifications/lib/notificationRecipients.js +0 -35
  528. package/dist/modules/notifications/lib/notificationRecipients.js.map +0 -7
  529. package/dist/modules/notifications/lib/notificationService.js +0 -279
  530. package/dist/modules/notifications/lib/notificationService.js.map +0 -7
  531. package/dist/modules/notifications/lib/routeHelpers.js +0 -101
  532. package/dist/modules/notifications/lib/routeHelpers.js.map +0 -7
  533. package/dist/modules/notifications/lib/safeHref.js +0 -24
  534. package/dist/modules/notifications/lib/safeHref.js.map +0 -7
  535. package/dist/modules/notifications/migrations/Migration20260123000001.js +0 -70
  536. package/dist/modules/notifications/migrations/Migration20260123000001.js.map +0 -7
  537. package/dist/modules/notifications/migrations/Migration20260126150000.js +0 -37
  538. package/dist/modules/notifications/migrations/Migration20260126150000.js.map +0 -7
  539. package/dist/modules/notifications/migrations/Migration20260129082610.js +0 -13
  540. package/dist/modules/notifications/migrations/Migration20260129082610.js.map +0 -7
  541. package/dist/modules/notifications/subscribers/deliver-notification.js +0 -165
  542. package/dist/modules/notifications/subscribers/deliver-notification.js.map +0 -7
  543. package/dist/modules/notifications/workers/create-notification.worker.js +0 -70
  544. package/dist/modules/notifications/workers/create-notification.worker.js.map +0 -7
  545. package/dist/modules/sales/notifications.client.js +0 -51
  546. package/dist/modules/sales/notifications.client.js.map +0 -7
  547. package/dist/modules/sales/notifications.js +0 -88
  548. package/dist/modules/sales/notifications.js.map +0 -7
  549. package/dist/modules/sales/subscribers/quote-expiring-notification.js +0 -38
  550. package/dist/modules/sales/subscribers/quote-expiring-notification.js.map +0 -7
  551. package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js +0 -137
  552. package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js.map +0 -7
  553. package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js +0 -137
  554. package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js.map +0 -7
  555. package/dist/modules/sales/widgets/notifications/index.js +0 -7
  556. package/dist/modules/sales/widgets/notifications/index.js.map +0 -7
  557. package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js +0 -60
  558. package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js.map +0 -7
  559. package/dist/modules/staff/notifications.js +0 -75
  560. package/dist/modules/staff/notifications.js.map +0 -7
  561. package/dist/modules/workflows/notifications.js +0 -28
  562. package/dist/modules/workflows/notifications.js.map +0 -7
  563. package/dist/modules/workflows/subscribers/task-assigned-notification.js +0 -38
  564. package/dist/modules/workflows/subscribers/task-assigned-notification.js.map +0 -7
  565. package/generated/entities/notification/index.ts +0 -27
  566. package/src/modules/auth/api/profile/route.ts +0 -163
  567. package/src/modules/auth/backend/auth/profile/page.meta.ts +0 -9
  568. package/src/modules/auth/backend/auth/profile/page.tsx +0 -174
  569. package/src/modules/auth/notifications.ts +0 -109
  570. package/src/modules/business_rules/notifications.ts +0 -25
  571. package/src/modules/business_rules/subscribers/rule-execution-failed-notification.ts +0 -50
  572. package/src/modules/catalog/notifications.ts +0 -25
  573. package/src/modules/catalog/subscribers/low-stock-notification.ts +0 -52
  574. package/src/modules/customers/notifications.ts +0 -44
  575. package/src/modules/dashboards/lib/role-widgets.ts +0 -80
  576. package/src/modules/directory/api/get/tenants/lookup.ts +0 -75
  577. package/src/modules/notifications/__tests__/deliver-notification.test.ts +0 -195
  578. package/src/modules/notifications/__tests__/deliveryStrategies.test.ts +0 -19
  579. package/src/modules/notifications/__tests__/notificationService.test.ts +0 -208
  580. package/src/modules/notifications/acl.ts +0 -7
  581. package/src/modules/notifications/api/[id]/action/route.ts +0 -75
  582. package/src/modules/notifications/api/[id]/dismiss/route.ts +0 -12
  583. package/src/modules/notifications/api/[id]/read/route.ts +0 -12
  584. package/src/modules/notifications/api/[id]/restore/route.ts +0 -53
  585. package/src/modules/notifications/api/batch/route.ts +0 -14
  586. package/src/modules/notifications/api/feature/route.ts +0 -14
  587. package/src/modules/notifications/api/mark-all-read/route.ts +0 -34
  588. package/src/modules/notifications/api/openapi.ts +0 -76
  589. package/src/modules/notifications/api/role/route.ts +0 -14
  590. package/src/modules/notifications/api/route.ts +0 -92
  591. package/src/modules/notifications/api/settings/route.ts +0 -157
  592. package/src/modules/notifications/api/unread-count/route.ts +0 -38
  593. package/src/modules/notifications/backend/config/notifications/page.meta.ts +0 -22
  594. package/src/modules/notifications/backend/config/notifications/page.tsx +0 -12
  595. package/src/modules/notifications/cli.ts +0 -18
  596. package/src/modules/notifications/data/entities.ts +0 -99
  597. package/src/modules/notifications/data/validators.ts +0 -115
  598. package/src/modules/notifications/di.ts +0 -11
  599. package/src/modules/notifications/emails/NotificationEmail.tsx +0 -98
  600. package/src/modules/notifications/frontend/NotificationInboxPageClient.tsx +0 -42
  601. package/src/modules/notifications/frontend/NotificationSettingsPageClient.tsx +0 -233
  602. package/src/modules/notifications/i18n/de.json +0 -50
  603. package/src/modules/notifications/i18n/en.json +0 -50
  604. package/src/modules/notifications/i18n/es.json +0 -50
  605. package/src/modules/notifications/i18n/pl.json +0 -50
  606. package/src/modules/notifications/index.ts +0 -12
  607. package/src/modules/notifications/lib/deliveryConfig.ts +0 -153
  608. package/src/modules/notifications/lib/deliveryStrategies.ts +0 -50
  609. package/src/modules/notifications/lib/events.ts +0 -48
  610. package/src/modules/notifications/lib/notificationBuilder.ts +0 -121
  611. package/src/modules/notifications/lib/notificationFactory.ts +0 -76
  612. package/src/modules/notifications/lib/notificationMapper.ts +0 -33
  613. package/src/modules/notifications/lib/notificationRecipients.ts +0 -83
  614. package/src/modules/notifications/lib/notificationService.ts +0 -414
  615. package/src/modules/notifications/lib/routeHelpers.ts +0 -151
  616. package/src/modules/notifications/lib/safeHref.ts +0 -29
  617. package/src/modules/notifications/migrations/.snapshot-open-mercato.json +0 -336
  618. package/src/modules/notifications/migrations/Migration20260123000001.ts +0 -73
  619. package/src/modules/notifications/migrations/Migration20260126150000.ts +0 -39
  620. package/src/modules/notifications/migrations/Migration20260129082610.ts +0 -13
  621. package/src/modules/notifications/subscribers/deliver-notification.ts +0 -204
  622. package/src/modules/notifications/workers/create-notification.worker.ts +0 -122
  623. package/src/modules/sales/notifications.client.ts +0 -65
  624. package/src/modules/sales/notifications.ts +0 -82
  625. package/src/modules/sales/subscribers/quote-expiring-notification.ts +0 -53
  626. package/src/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.tsx +0 -156
  627. package/src/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.tsx +0 -156
  628. package/src/modules/sales/widgets/notifications/index.ts +0 -2
  629. package/src/modules/sales/widgets/notifications/useSalesDocumentTotals.ts +0 -81
  630. package/src/modules/staff/notifications.ts +0 -71
  631. package/src/modules/workflows/notifications.ts +0 -25
  632. package/src/modules/workflows/subscribers/task-assigned-notification.ts +0 -53
@@ -7,6 +7,8 @@ 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'
10
12
 
11
13
  export type WorkflowSeedScope = { tenantId: string; organizationId: string }
12
14
 
@@ -51,6 +53,8 @@ const embeddedSeeds: Record<string, unknown> = {
51
53
  'guard-rules-example.json': guardRulesExample,
52
54
  'sales-pipeline-definition.json': salesPipelineDefinition,
53
55
  'simple-approval-definition.json': simpleApprovalDefinition,
56
+ 'order-approval-definition.json': orderApprovalDefinition,
57
+ 'order-approval-guard-rules.json': orderApprovalGuardRules,
54
58
  }
55
59
 
56
60
  function readExampleJson<T>(fileName: string): T {
@@ -90,16 +94,35 @@ async function seedWorkflowDefinition(
90
94
  })
91
95
 
92
96
  if (existing) {
93
- // Check if the definition needs to be updated (e.g., missing preConditions on START step)
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
94
112
  const seedStartStep = seed.definition.steps.find((s: any) => s.stepType === 'START')
95
113
  const existingStartStep = existing.definition.steps.find((s: any) => s.stepType === 'START')
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`)
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})`)
103
126
  existing.definition = seed.definition
104
127
  await em.flush()
105
128
  return true
@@ -172,4 +195,7 @@ export async function seedExampleWorkflows(em: EntityManager, scope: WorkflowSee
172
195
  await seedGuardRules(em, scope, 'guard-rules-example.json')
173
196
  await seedWorkflowDefinition(em, scope, 'sales-pipeline-definition.json')
174
197
  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')
175
201
  }
@@ -128,59 +128,69 @@ export async function validateWorkflowStart(
128
128
  const validatedRules: ValidatedRule[] = []
129
129
 
130
130
  for (const condition of preConditions) {
131
- const ruleContext: ruleEngine.RuleEngineContext = {
132
- entityType: `workflow:${workflowId}:start`,
133
- entityId: 'pre_start_validation',
134
- eventType: 'validate_start',
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"
135
134
  data: {
136
135
  workflowId,
137
136
  workflowContext: context,
138
137
  },
139
138
  tenantId,
140
139
  organizationId,
140
+ entityType: `workflow:${workflowId}:start`,
141
+ entityId: 'pre_start_validation',
142
+ eventType: 'validate_start',
141
143
  dryRun: true, // Don't log execution during validation
142
- }
143
-
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',
151
144
  })
152
145
 
153
- const rule = rules.find(r => r.ruleId === condition.ruleId)
146
+ validatedRules.push({
147
+ ruleId: condition.ruleId,
148
+ passed: result.conditionResult,
149
+ executionTime: result.executionTime,
150
+ })
154
151
 
155
- if (!rule) {
156
- // Rule not found - if required, this is an error
152
+ // Handle rule not found
153
+ if (result.error === 'Rule not found') {
157
154
  if (condition.required) {
158
155
  errors.push({
159
156
  ruleId: condition.ruleId,
160
- message: getLocalizedMessage(condition, null, locale, `Business rule '${condition.ruleId}' not found`),
157
+ message: getLocalizedMessage(condition, null, locale, `Business rule not found: ${condition.ruleId}`),
161
158
  code: 'RULE_NOT_FOUND',
162
159
  })
163
- validatedRules.push({ ruleId: condition.ruleId, passed: false })
164
160
  }
165
161
  continue
166
162
  }
167
163
 
168
- // Execute the single rule
169
- const result = await ruleEngine.executeSingleRule(em, rule, ruleContext)
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
+ }
170
175
 
171
- validatedRules.push({
172
- ruleId: condition.ruleId,
173
- passed: result.conditionResult,
174
- executionTime: result.executionTime,
175
- })
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
+ }
176
185
 
186
+ // Handle condition failure
177
187
  if (!result.conditionResult && condition.required) {
178
- // Get localized message from condition, rule failure actions, or default
188
+ // Get localized message from condition or use default with rule name
179
189
  const message = getLocalizedMessage(
180
190
  condition,
181
- rule,
191
+ null,
182
192
  locale,
183
- `Pre-condition '${rule.ruleName || condition.ruleId}' failed`
193
+ `Pre-condition '${result.ruleName || condition.ruleId}' failed`
184
194
  )
185
195
  errors.push({
186
196
  ruleId: condition.ruleId,
@@ -12,7 +12,6 @@
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'
16
15
  import {
17
16
  WorkflowInstance,
18
17
  WorkflowDefinition,
@@ -20,7 +19,6 @@ import {
20
19
  } from '../data/entities'
21
20
  import * as ruleEvaluator from '../../business_rules/lib/rule-evaluator'
22
21
  import * as ruleEngine from '../../business_rules/lib/rule-engine'
23
- import type { RuleEngineContext } from '../../business_rules/lib/rule-engine'
24
22
  import * as activityExecutor from './activity-executor'
25
23
  import type { ActivityDefinition } from './activity-executor'
26
24
  import * as stepHandler from './step-handler'
@@ -195,11 +193,15 @@ export async function evaluateTransition(
195
193
  /**
196
194
  * Find all valid transitions from current step
197
195
  *
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
+ *
198
200
  * @param em - Entity manager
199
201
  * @param instance - Workflow instance
200
202
  * @param fromStepId - Current step ID
201
203
  * @param context - Evaluation context
202
- * @returns Array of evaluation results for all transitions
204
+ * @returns Array of evaluation results for all transitions, sorted by priority (desc)
203
205
  */
204
206
  export async function findValidTransitions(
205
207
  em: EntityManager,
@@ -217,16 +219,17 @@ export async function findValidTransitions(
217
219
  return []
218
220
  }
219
221
 
220
- // Find all transitions from current step
221
- const transitions = (definition.definition.transitions || []).filter(
222
- (t: any) => t.fromStepId === fromStepId
223
- )
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))
224
226
 
225
- // Evaluate each transition
227
+ // Evaluate each transition including preConditions
226
228
  const results: TransitionEvaluationResult[] = []
227
229
 
228
230
  for (const transition of transitions) {
229
- const result = await evaluateTransition(
231
+ // First check inline condition
232
+ const conditionResult = await evaluateTransition(
230
233
  em,
231
234
  instance,
232
235
  fromStepId,
@@ -234,7 +237,42 @@ export async function findValidTransitions(
234
237
  context
235
238
  )
236
239
 
237
- results.push(result)
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
+ })
238
276
  }
239
277
 
240
278
  return results
@@ -272,13 +310,6 @@ export async function executeTransition(
272
310
  context: TransitionExecutionContext
273
311
  ): Promise<TransitionExecutionResult> {
274
312
  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
-
282
313
  // First, evaluate if transition is valid
283
314
  const evaluation = await evaluateTransition(
284
315
  em,
@@ -302,8 +333,7 @@ export async function executeTransition(
302
333
  em,
303
334
  instance,
304
335
  transition,
305
- context,
306
- eventBus
336
+ context
307
337
  )
308
338
 
309
339
  if (!preConditionsResult.allowed) {
@@ -514,8 +544,7 @@ export async function executeTransition(
514
544
  em,
515
545
  instance,
516
546
  transition,
517
- context,
518
- eventBus
547
+ context
519
548
  )
520
549
 
521
550
  if (!postConditionsResult.allowed) {
@@ -659,6 +688,10 @@ async function evaluateTransitionConditions(
659
688
  * Pre-conditions are GUARD rules that must pass before transition can execute.
660
689
  * If any GUARD rule fails, the transition is blocked.
661
690
  *
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
+ *
662
695
  * @param em - Entity manager
663
696
  * @param instance - Workflow instance
664
697
  * @param transition - Transition definition
@@ -669,8 +702,7 @@ async function evaluatePreConditions(
669
702
  em: EntityManager,
670
703
  instance: WorkflowInstance,
671
704
  transition: any,
672
- context: TransitionExecutionContext,
673
- eventBus: Pick<EventBus, 'emitEvent'> | null
705
+ context: TransitionExecutionContext
674
706
  ): Promise<ruleEngine.RuleEngineResult> {
675
707
  try {
676
708
  // Load workflow definition to get workflow ID
@@ -686,32 +718,88 @@ async function evaluatePreConditions(
686
718
  }
687
719
  }
688
720
 
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,
702
- },
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,
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
+ }
709
731
  }
710
732
 
711
- // Execute rules - only GUARD rules will affect the 'allowed' status
712
- const result = await ruleEngine.executeRules(em, ruleContext, { eventBus })
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,
752
+ },
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
+ })
713
761
 
714
- return result
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
+ }
795
+ }
796
+
797
+ return {
798
+ allowed,
799
+ executedRules,
800
+ totalExecutionTime: Date.now() - startTime,
801
+ errors: errors.length > 0 ? errors : undefined,
802
+ }
715
803
  } catch (error) {
716
804
  console.error('Error evaluating pre-conditions:', error)
717
805
  return {
@@ -729,6 +817,9 @@ async function evaluatePreConditions(
729
817
  * Post-conditions are GUARD rules that should pass after transition executes.
730
818
  * Unlike pre-conditions, post-condition failures are logged but don't block the transition.
731
819
  *
820
+ * If the transition defines specific postConditions with ruleIds, those are
821
+ * executed directly via executeRuleByRuleId. Otherwise, returns allowed: true.
822
+ *
732
823
  * @param em - Entity manager
733
824
  * @param instance - Workflow instance
734
825
  * @param transition - Transition definition
@@ -739,8 +830,7 @@ async function evaluatePostConditions(
739
830
  em: EntityManager,
740
831
  instance: WorkflowInstance,
741
832
  transition: any,
742
- context: TransitionExecutionContext,
743
- eventBus: Pick<EventBus, 'emitEvent'> | null
833
+ context: TransitionExecutionContext
744
834
  ): Promise<ruleEngine.RuleEngineResult> {
745
835
  try {
746
836
  // Load workflow definition to get workflow ID
@@ -756,32 +846,83 @@ async function evaluatePostConditions(
756
846
  }
757
847
  }
758
848
 
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,
772
- },
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,
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
+ }
779
859
  }
780
860
 
781
- // Execute rules
782
- const result = await ruleEngine.executeRules(em, ruleContext, { eventBus })
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,
880
+ },
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
+ }
918
+ }
783
919
 
784
- return result
920
+ return {
921
+ allowed,
922
+ executedRules,
923
+ totalExecutionTime: Date.now() - startTime,
924
+ errors: errors.length > 0 ? errors : undefined,
925
+ }
785
926
  } catch (error) {
786
927
  console.error('Error evaluating post-conditions:', error)
787
928
  return {
@@ -0,0 +1,38 @@
1
+ import { Migration } from '@mikro-orm/migrations';
2
+
3
+ export class Migration20260123143500 extends Migration {
4
+
5
+ override async up(): Promise<void> {
6
+ // Create workflow_event_triggers table
7
+ this.addSql(`
8
+ create table "workflow_event_triggers" (
9
+ "id" uuid not null default gen_random_uuid(),
10
+ "name" varchar(255) not null,
11
+ "description" text null,
12
+ "workflow_definition_id" uuid not null,
13
+ "event_pattern" varchar(255) not null,
14
+ "config" jsonb null,
15
+ "enabled" bool not null default true,
16
+ "priority" int4 not null default 0,
17
+ "tenant_id" uuid not null,
18
+ "organization_id" uuid not null,
19
+ "created_by" varchar(255) null,
20
+ "updated_by" varchar(255) null,
21
+ "created_at" timestamptz(6) not null,
22
+ "updated_at" timestamptz(6) not null,
23
+ "deleted_at" timestamptz(6) null,
24
+ constraint "workflow_event_triggers_pkey" primary key ("id")
25
+ );
26
+ `);
27
+
28
+ // Create indexes
29
+ this.addSql(`create index "workflow_event_triggers_event_pattern_idx" on "workflow_event_triggers" ("event_pattern", "enabled");`);
30
+ this.addSql(`create index "workflow_event_triggers_definition_idx" on "workflow_event_triggers" ("workflow_definition_id");`);
31
+ this.addSql(`create index "workflow_event_triggers_tenant_org_idx" on "workflow_event_triggers" ("tenant_id", "organization_id");`);
32
+ this.addSql(`create index "workflow_event_triggers_enabled_priority_idx" on "workflow_event_triggers" ("enabled", "priority");`);
33
+ }
34
+
35
+ override async down(): Promise<void> {
36
+ this.addSql(`drop table if exists "workflow_event_triggers" cascade;`);
37
+ }
38
+ }