@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
@@ -8,3 +8,28 @@ export const metadata: ModuleInfo = {
8
8
  author: 'Patryk Lewczuk',
9
9
  license: 'Proprietary',
10
10
  }
11
+
12
+ // Export rule engine types and functions for programmatic usage
13
+ export {
14
+ executeRules,
15
+ executeRuleById,
16
+ executeRuleByRuleId,
17
+ executeSingleRule,
18
+ findApplicableRules,
19
+ logRuleExecution,
20
+ type RuleEngineContext,
21
+ type RuleEngineResult,
22
+ type RuleExecutionResult,
23
+ type RuleDiscoveryOptions,
24
+ type DirectRuleExecutionContext,
25
+ type DirectRuleExecutionResult,
26
+ type RuleIdExecutionContext,
27
+ } from './lib/rule-engine'
28
+
29
+ // Export validator schemas
30
+ export {
31
+ directRuleExecutionContextSchema,
32
+ ruleIdExecutionContextSchema,
33
+ type DirectRuleExecutionContextInput,
34
+ type RuleIdExecutionContextInput,
35
+ } from './data/validators'
@@ -654,57 +654,6 @@ describe('Rule Engine (Unit Tests)', () => {
654
654
  expect(result.errors).toBeDefined()
655
655
  expect(result.errors![0]).toContain('Rule count limit exceeded')
656
656
  })
657
-
658
- test('should emit execution_failed event when rule evaluation fails', async () => {
659
- const mockRule: Partial<BusinessRule> = {
660
- id: 'rule-1',
661
- ruleId: 'TEST-001',
662
- ruleName: 'Test Rule',
663
- ruleType: 'ACTION',
664
- entityType: 'WorkOrder',
665
- conditionExpression: { field: 'status', operator: '=', value: 'RELEASED' },
666
- enabled: true,
667
- tenantId: testTenantId,
668
- organizationId: testOrgId,
669
- }
670
-
671
- mockEm.find.mockResolvedValue([mockRule as BusinessRule])
672
- mockEm.create.mockReturnValue({ id: 'log-1' } as any)
673
- mockEm.persistAndFlush.mockResolvedValue(undefined)
674
-
675
- jest.mocked(ruleEvaluator.evaluateSingleRule).mockResolvedValue({
676
- rule: mockRule as BusinessRule,
677
- conditionsPassed: false,
678
- evaluationCompleted: false,
679
- evaluationTime: 1,
680
- error: 'Evaluation error',
681
- })
682
-
683
- const eventBus = { emitEvent: jest.fn().mockResolvedValue(undefined) }
684
-
685
- const context: RuleEngineContext = {
686
- entityType: 'WorkOrder',
687
- entityId: testEntityId,
688
- data: { status: 'RELEASED' },
689
- tenantId: testTenantId,
690
- organizationId: testOrgId,
691
- dryRun: false,
692
- }
693
-
694
- await ruleEngine.executeRules(mockEm, context, { eventBus })
695
-
696
- expect(eventBus.emitEvent).toHaveBeenCalledWith(
697
- 'business_rules.rule.execution_failed',
698
- expect.objectContaining({
699
- ruleId: 'TEST-001',
700
- ruleName: 'Test Rule',
701
- entityType: 'WorkOrder',
702
- errorMessage: 'Evaluation error',
703
- tenantId: testTenantId,
704
- organizationId: testOrgId,
705
- })
706
- )
707
- })
708
657
  })
709
658
 
710
659
  describe('logRuleExecution', () => {
@@ -1,11 +1,10 @@
1
1
  import type { EntityManager } from '@mikro-orm/core'
2
- import type { EventBus } from '@open-mercato/events'
3
2
  import { BusinessRule, RuleExecutionLog, type RuleType } from '../data/entities'
4
3
  import * as ruleEvaluator from './rule-evaluator'
5
4
  import * as actionExecutor from './action-executor'
6
5
  import type { RuleEvaluationContext } from './rule-evaluator'
7
6
  import type { ActionContext, ActionExecutionOutcome } from './action-executor'
8
- import { ruleEngineContextSchema, ruleDiscoveryOptionsSchema } from '../data/validators'
7
+ import { ruleEngineContextSchema, ruleDiscoveryOptionsSchema, directRuleExecutionContextSchema, ruleIdExecutionContextSchema } from '../data/validators'
9
8
 
10
9
  /**
11
10
  * Constants
@@ -86,17 +85,63 @@ export interface RuleDiscoveryOptions {
86
85
  ruleType?: RuleType
87
86
  }
88
87
 
89
- export type RuleEngineExecutionOptions = {
90
- eventBus?: Pick<EventBus, 'emitEvent'> | null
88
+ /**
89
+ * Direct rule execution context (for executing a specific rule by ID)
90
+ */
91
+ export interface DirectRuleExecutionContext {
92
+ ruleId: string // Database UUID of the rule
93
+ data: any
94
+ user?: {
95
+ id?: string
96
+ email?: string
97
+ role?: string
98
+ [key: string]: any
99
+ }
100
+ tenantId: string
101
+ organizationId: string
102
+ executedBy?: string
103
+ dryRun?: boolean
104
+ // Optional for logging (falls back to rule's entityType)
105
+ entityType?: string
106
+ entityId?: string
107
+ eventType?: string
91
108
  }
92
109
 
93
- type RuleExecutionFailedPayload = {
110
+ /**
111
+ * Direct rule execution result
112
+ */
113
+ export interface DirectRuleExecutionResult {
114
+ success: boolean
94
115
  ruleId: string
95
116
  ruleName: string
96
- entityType?: string | null
97
- errorMessage?: string | null
117
+ conditionResult: boolean
118
+ actionsExecuted: ActionExecutionOutcome | null
119
+ executionTime: number
120
+ error?: string
121
+ logId?: string
122
+ }
123
+
124
+ /**
125
+ * Context for executing a rule by its string rule_id identifier
126
+ * Unlike DirectRuleExecutionContext which uses database UUID,
127
+ * this uses the string identifier (e.g., "workflow_checkout_inventory_available")
128
+ */
129
+ export interface RuleIdExecutionContext {
130
+ ruleId: string // String identifier (e.g., "workflow_checkout_inventory_available")
131
+ data: any
132
+ user?: {
133
+ id?: string
134
+ email?: string
135
+ role?: string
136
+ [key: string]: any
137
+ }
98
138
  tenantId: string
99
- organizationId?: string | null
139
+ organizationId: string
140
+ executedBy?: string
141
+ dryRun?: boolean
142
+ entityType?: string
143
+ entityId?: string
144
+ eventType?: string
100
145
  }
101
146
 
102
147
  /**
@@ -127,8 +172,7 @@ async function withTimeout<T>(
127
172
  */
128
173
  export async function executeRules(
129
174
  em: EntityManager,
130
- context: RuleEngineContext,
131
- options: RuleEngineExecutionOptions = {}
175
+ context: RuleEngineContext
132
176
  ): Promise<RuleEngineResult> {
133
177
  // Validate input
134
178
  const validation = ruleEngineContextSchema.safeParse(context)
@@ -174,7 +218,7 @@ export async function executeRules(
174
218
  const executionPromise = (async () => {
175
219
  for (const rule of rules) {
176
220
  try {
177
- const ruleResult = await executeSingleRule(em, rule, context, options)
221
+ const ruleResult = await executeSingleRule(em, rule, context)
178
222
  executedRules.push(ruleResult)
179
223
 
180
224
  if (ruleResult.logId) {
@@ -192,17 +236,6 @@ export async function executeRules(
192
236
  `Unexpected error in rule execution [ruleId=${rule.ruleId}, type=${rule.ruleType}]: ${errorMessage}`
193
237
  )
194
238
 
195
- if (!context.dryRun) {
196
- await emitRuleExecutionFailed(options.eventBus, {
197
- ruleId: rule.ruleId,
198
- ruleName: rule.ruleName,
199
- entityType: context.entityType ?? null,
200
- errorMessage,
201
- tenantId: context.tenantId,
202
- organizationId: context.organizationId ?? null,
203
- })
204
- }
205
-
206
239
  executedRules.push({
207
240
  rule,
208
241
  conditionResult: false,
@@ -259,8 +292,7 @@ export async function executeRules(
259
292
  export async function executeSingleRule(
260
293
  em: EntityManager,
261
294
  rule: BusinessRule,
262
- context: RuleEngineContext,
263
- options: RuleEngineExecutionOptions = {}
295
+ context: RuleEngineContext
264
296
  ): Promise<RuleExecutionResult> {
265
297
  const startTime = Date.now()
266
298
 
@@ -296,15 +328,6 @@ export async function executeSingleRule(
296
328
  executionTime,
297
329
  error: result.error,
298
330
  })
299
-
300
- await emitRuleExecutionFailed(options.eventBus, {
301
- ruleId: rule.ruleId,
302
- ruleName: rule.ruleName,
303
- entityType: context.entityType ?? null,
304
- errorMessage: result.error ?? null,
305
- tenantId: context.tenantId,
306
- organizationId: context.organizationId ?? null,
307
- })
308
331
  }
309
332
 
310
333
  return {
@@ -382,15 +405,6 @@ export async function executeSingleRule(
382
405
  executionTime,
383
406
  error: enhancedError,
384
407
  })
385
-
386
- await emitRuleExecutionFailed(options.eventBus, {
387
- ruleId: rule.ruleId,
388
- ruleName: rule.ruleName,
389
- entityType: context.entityType ?? null,
390
- errorMessage: enhancedError,
391
- tenantId: context.tenantId,
392
- organizationId: context.organizationId ?? null,
393
- })
394
408
  }
395
409
 
396
410
  return {
@@ -449,6 +463,227 @@ export async function findApplicableRules(
449
463
  })
450
464
  }
451
465
 
466
+ /**
467
+ * Execute a specific rule by its database UUID
468
+ * This bypasses the entityType/eventType discovery mechanism and directly executes the rule
469
+ */
470
+ export async function executeRuleById(
471
+ em: EntityManager,
472
+ context: DirectRuleExecutionContext
473
+ ): Promise<DirectRuleExecutionResult> {
474
+ const startTime = Date.now()
475
+
476
+ // Validate input
477
+ const validation = directRuleExecutionContextSchema.safeParse(context)
478
+ if (!validation.success) {
479
+ const validationErrors = validation.error.issues.map(e => `${e.path.join('.')}: ${e.message}`)
480
+ return {
481
+ success: false,
482
+ ruleId: context.ruleId,
483
+ ruleName: 'Unknown',
484
+ conditionResult: false,
485
+ actionsExecuted: null,
486
+ executionTime: Date.now() - startTime,
487
+ error: `Validation failed: ${validationErrors.join(', ')}`,
488
+ }
489
+ }
490
+
491
+ // Fetch rule by ID with tenant/org validation
492
+ const rule = await em.findOne(BusinessRule, {
493
+ id: context.ruleId,
494
+ tenantId: context.tenantId,
495
+ organizationId: context.organizationId,
496
+ deletedAt: null,
497
+ })
498
+
499
+ if (!rule) {
500
+ return {
501
+ success: false,
502
+ ruleId: context.ruleId,
503
+ ruleName: 'Unknown',
504
+ conditionResult: false,
505
+ actionsExecuted: null,
506
+ executionTime: Date.now() - startTime,
507
+ error: 'Rule not found',
508
+ }
509
+ }
510
+
511
+ if (!rule.enabled) {
512
+ return {
513
+ success: false,
514
+ ruleId: rule.ruleId,
515
+ ruleName: rule.ruleName,
516
+ conditionResult: false,
517
+ actionsExecuted: null,
518
+ executionTime: Date.now() - startTime,
519
+ error: 'Rule is disabled',
520
+ }
521
+ }
522
+
523
+ // Check effective date range
524
+ const now = new Date()
525
+ if (rule.effectiveFrom && rule.effectiveFrom > now) {
526
+ return {
527
+ success: false,
528
+ ruleId: rule.ruleId,
529
+ ruleName: rule.ruleName,
530
+ conditionResult: false,
531
+ actionsExecuted: null,
532
+ executionTime: Date.now() - startTime,
533
+ error: `Rule is not yet effective (starts ${rule.effectiveFrom.toISOString()})`,
534
+ }
535
+ }
536
+ if (rule.effectiveTo && rule.effectiveTo < now) {
537
+ return {
538
+ success: false,
539
+ ruleId: rule.ruleId,
540
+ ruleName: rule.ruleName,
541
+ conditionResult: false,
542
+ actionsExecuted: null,
543
+ executionTime: Date.now() - startTime,
544
+ error: `Rule has expired (ended ${rule.effectiveTo.toISOString()})`,
545
+ }
546
+ }
547
+
548
+ // Build RuleEngineContext (use provided entityType or fall back to rule's)
549
+ const engineContext: RuleEngineContext = {
550
+ entityType: context.entityType || rule.entityType,
551
+ entityId: context.entityId,
552
+ eventType: context.eventType || rule.eventType || undefined,
553
+ data: context.data,
554
+ user: context.user,
555
+ tenantId: context.tenantId,
556
+ organizationId: context.organizationId,
557
+ executedBy: context.executedBy,
558
+ dryRun: context.dryRun,
559
+ }
560
+
561
+ // Execute via existing executeSingleRule
562
+ const result = await executeSingleRule(em, rule, engineContext)
563
+
564
+ return {
565
+ success: !result.error,
566
+ ruleId: rule.ruleId,
567
+ ruleName: rule.ruleName,
568
+ conditionResult: result.conditionResult,
569
+ actionsExecuted: result.actionsExecuted,
570
+ executionTime: result.executionTime,
571
+ error: result.error,
572
+ logId: result.logId,
573
+ }
574
+ }
575
+
576
+ /**
577
+ * Execute a rule by its string rule_id identifier
578
+ * Looks up rule by rule_id (string column) + tenant_id (unique constraint)
579
+ * This is useful for workflow conditions that reference rules by their string identifiers
580
+ */
581
+ export async function executeRuleByRuleId(
582
+ em: EntityManager,
583
+ context: RuleIdExecutionContext
584
+ ): Promise<DirectRuleExecutionResult> {
585
+ const startTime = Date.now()
586
+
587
+ // Validate input
588
+ const validation = ruleIdExecutionContextSchema.safeParse(context)
589
+ if (!validation.success) {
590
+ const validationErrors = validation.error.issues.map(e => `${e.path.join('.')}: ${e.message}`)
591
+ return {
592
+ success: false,
593
+ ruleId: context.ruleId || 'unknown',
594
+ ruleName: 'Unknown',
595
+ conditionResult: false,
596
+ actionsExecuted: null,
597
+ executionTime: Date.now() - startTime,
598
+ error: `Validation failed: ${validationErrors.join(', ')}`,
599
+ }
600
+ }
601
+
602
+ // Fetch rule by rule_id (string identifier) + tenant/org
603
+ const rule = await em.findOne(BusinessRule, {
604
+ ruleId: context.ruleId, // String identifier column
605
+ tenantId: context.tenantId,
606
+ organizationId: context.organizationId,
607
+ deletedAt: null,
608
+ })
609
+
610
+ if (!rule) {
611
+ return {
612
+ success: false,
613
+ ruleId: context.ruleId,
614
+ ruleName: 'Unknown',
615
+ conditionResult: false,
616
+ actionsExecuted: null,
617
+ executionTime: Date.now() - startTime,
618
+ error: 'Rule not found',
619
+ }
620
+ }
621
+
622
+ if (!rule.enabled) {
623
+ return {
624
+ success: false,
625
+ ruleId: rule.ruleId,
626
+ ruleName: rule.ruleName,
627
+ conditionResult: false,
628
+ actionsExecuted: null,
629
+ executionTime: Date.now() - startTime,
630
+ error: 'Rule is disabled',
631
+ }
632
+ }
633
+
634
+ // Check effective date range
635
+ const now = new Date()
636
+ if (rule.effectiveFrom && rule.effectiveFrom > now) {
637
+ return {
638
+ success: false,
639
+ ruleId: rule.ruleId,
640
+ ruleName: rule.ruleName,
641
+ conditionResult: false,
642
+ actionsExecuted: null,
643
+ executionTime: Date.now() - startTime,
644
+ error: `Rule is not yet effective (starts ${rule.effectiveFrom.toISOString()})`,
645
+ }
646
+ }
647
+ if (rule.effectiveTo && rule.effectiveTo < now) {
648
+ return {
649
+ success: false,
650
+ ruleId: rule.ruleId,
651
+ ruleName: rule.ruleName,
652
+ conditionResult: false,
653
+ actionsExecuted: null,
654
+ executionTime: Date.now() - startTime,
655
+ error: `Rule has expired (ended ${rule.effectiveTo.toISOString()})`,
656
+ }
657
+ }
658
+
659
+ // Build RuleEngineContext (use provided entityType or fall back to rule's)
660
+ const engineContext: RuleEngineContext = {
661
+ entityType: context.entityType || rule.entityType,
662
+ entityId: context.entityId,
663
+ eventType: context.eventType || rule.eventType || undefined,
664
+ data: context.data,
665
+ user: context.user,
666
+ tenantId: context.tenantId,
667
+ organizationId: context.organizationId,
668
+ executedBy: context.executedBy,
669
+ dryRun: context.dryRun,
670
+ }
671
+
672
+ // Execute via existing executeSingleRule
673
+ const result = await executeSingleRule(em, rule, engineContext)
674
+
675
+ return {
676
+ success: !result.error,
677
+ ruleId: rule.ruleId,
678
+ ruleName: rule.ruleName,
679
+ conditionResult: result.conditionResult,
680
+ actionsExecuted: result.actionsExecuted,
681
+ executionTime: result.executionTime,
682
+ error: result.error,
683
+ logId: result.logId,
684
+ }
685
+ }
686
+
452
687
  /**
453
688
  * Sensitive field patterns to exclude from logs
454
689
  */
@@ -589,12 +824,3 @@ export async function logRuleExecution(
589
824
 
590
825
  return log.id
591
826
  }
592
-
593
- async function emitRuleExecutionFailed(
594
- eventBus: Pick<EventBus, 'emitEvent'> | null | undefined,
595
- payload: RuleExecutionFailedPayload
596
- ): Promise<void> {
597
- if (!eventBus?.emitEvent) return
598
-
599
- await eventBus.emitEvent('business_rules.rule.execution_failed', payload).catch(() => undefined)
600
- }
@@ -420,12 +420,10 @@ export function PriceKindSettings() {
420
420
  <RowActions
421
421
  items={[
422
422
  {
423
- id: 'edit',
424
423
  label: t('catalog.priceKinds.actions.edit', 'Edit'),
425
424
  onSelect: () => openDialog({ mode: 'edit', entry }),
426
425
  },
427
426
  {
428
- id: 'delete',
429
427
  label: t('catalog.priceKinds.actions.delete', 'Delete'),
430
428
  destructive: true,
431
429
  onSelect: () => { void handleDelete(entry) },
@@ -221,8 +221,8 @@ export default function CategoriesDataTable() {
221
221
  canManage ? (
222
222
  <RowActions
223
223
  items={[
224
- { id: 'edit', label: t('catalog.categories.list.actions.edit', 'Edit'), href: `/backend/catalog/categories/${row.id}/edit` },
225
- { id: 'delete', label: t('catalog.categories.list.actions.delete', 'Delete'), destructive: true, onSelect: () => handleDelete(row) },
224
+ { label: t('catalog.categories.list.actions.edit', 'Edit'), href: `/backend/catalog/categories/${row.id}/edit` },
225
+ { label: t('catalog.categories.list.actions.delete', 'Delete'), destructive: true, onSelect: () => handleDelete(row) },
226
226
  ]}
227
227
  />
228
228
  ) : null
@@ -650,12 +650,10 @@ export default function ProductsDataTable() {
650
650
  <RowActions
651
651
  items={[
652
652
  {
653
- id: 'edit',
654
653
  label: t('catalog.products.table.actions.edit', 'Edit'),
655
654
  href: `/backend/catalog/products/${row.id}`,
656
655
  },
657
656
  {
658
- id: 'delete',
659
657
  label: t('catalog.products.table.actions.delete', 'Delete'),
660
658
  destructive: true,
661
659
  onSelect: () => {
@@ -0,0 +1,45 @@
1
+ import { createModuleEvents } from '@open-mercato/shared/modules/events'
2
+
3
+ /**
4
+ * Catalog Module Events
5
+ *
6
+ * Declares all events that can be emitted by the catalog module.
7
+ */
8
+ const events = [
9
+ // Products
10
+ { id: 'catalog.product.created', label: 'Product Created', entity: 'product', category: 'crud' },
11
+ { id: 'catalog.product.updated', label: 'Product Updated', entity: 'product', category: 'crud' },
12
+ { id: 'catalog.product.deleted', label: 'Product Deleted', entity: 'product', category: 'crud' },
13
+
14
+ // Categories
15
+ { id: 'catalog.category.created', label: 'Category Created', entity: 'category', category: 'crud' },
16
+ { id: 'catalog.category.updated', label: 'Category Updated', entity: 'category', category: 'crud' },
17
+ { id: 'catalog.category.deleted', label: 'Category Deleted', entity: 'category', category: 'crud' },
18
+
19
+ // Variants
20
+ { id: 'catalog.variant.created', label: 'Variant Created', entity: 'variant', category: 'crud' },
21
+ { id: 'catalog.variant.updated', label: 'Variant Updated', entity: 'variant', category: 'crud' },
22
+ { id: 'catalog.variant.deleted', label: 'Variant Deleted', entity: 'variant', category: 'crud' },
23
+
24
+ // Prices
25
+ { id: 'catalog.price.created', label: 'Price Created', entity: 'price', category: 'crud' },
26
+ { id: 'catalog.price.updated', label: 'Price Updated', entity: 'price', category: 'crud' },
27
+ { id: 'catalog.price.deleted', label: 'Price Deleted', entity: 'price', category: 'crud' },
28
+
29
+ // Lifecycle events - Pricing resolution
30
+ { id: 'catalog.pricing.resolve.before', label: 'Before Pricing Resolve', category: 'lifecycle', excludeFromTriggers: true },
31
+ { id: 'catalog.pricing.resolve.after', label: 'After Pricing Resolve', category: 'lifecycle', excludeFromTriggers: true },
32
+ ] as const
33
+
34
+ export const eventsConfig = createModuleEvents({
35
+ moduleId: 'catalog',
36
+ events,
37
+ })
38
+
39
+ /** Type-safe event emitter for catalog module */
40
+ export const emitCatalogEvent = eventsConfig.emit
41
+
42
+ /** Event IDs that can be emitted by the catalog module */
43
+ export type CatalogEventId = typeof events[number]['id']
44
+
45
+ export default eventsConfig
@@ -681,7 +681,5 @@
681
681
  "deleteError": "Failed to delete variant."
682
682
  }
683
683
  }
684
- },
685
- "catalog.notifications.product.lowStock.title": "Low Stock Alert",
686
- "catalog.notifications.product.lowStock.body": "{productName}{sku, select, other { ({sku})}} is running low on stock ({currentStock} remaining, threshold: {threshold})"
684
+ }
687
685
  }
@@ -2,7 +2,6 @@ import type { ModuleCli } from '@open-mercato/shared/modules/registry'
2
2
  import { createRequestContainer } from '@open-mercato/shared/lib/di/container'
3
3
  import type { ModuleConfigService } from './lib/module-config-service'
4
4
  import { parseBooleanToken } from '@open-mercato/shared/lib/boolean'
5
- import { DEFAULT_NOTIFICATION_DELIVERY_CONFIG, NOTIFICATIONS_DELIVERY_CONFIG_KEY } from '../notifications/lib/deliveryConfig'
6
5
 
7
6
  function envDisablesAutoIndexing(): boolean {
8
7
  const raw = process.env.DISABLE_VECTOR_SEARCH_AUTOINDEXING
@@ -32,11 +31,6 @@ const restoreDefaults: ModuleCli = {
32
31
  name: 'auto_index_enabled',
33
32
  value: defaultEnabled,
34
33
  },
35
- {
36
- moduleId: 'notifications',
37
- name: NOTIFICATIONS_DELIVERY_CONFIG_KEY,
38
- value: DEFAULT_NOTIFICATION_DELIVERY_CONFIG,
39
- },
40
34
  ],
41
35
  { force: true },
42
36
  )
@@ -194,7 +194,7 @@ export function CachePanel() {
194
194
  <header className="space-y-1">
195
195
  <h2 className="text-lg font-semibold">{t('configs.cache.title', 'Cache overview')}</h2>
196
196
  <p className="text-sm text-muted-foreground">
197
- {t('configs.cache.description', 'Inspect cached responses and clear segments when necessary.')}
197
+ {t('configs.cache.description', 'Inspect cached CRUD responses and clear segments when necessary.')}
198
198
  </p>
199
199
  </header>
200
200
  <div className="flex items-center gap-2 text-sm text-muted-foreground">
@@ -211,7 +211,7 @@ export function CachePanel() {
211
211
  <header className="space-y-1">
212
212
  <h2 className="text-lg font-semibold">{t('configs.cache.title', 'Cache overview')}</h2>
213
213
  <p className="text-sm text-muted-foreground">
214
- {t('configs.cache.description', 'Inspect cached responses and clear segments when necessary.')}
214
+ {t('configs.cache.description', 'Inspect cached CRUD responses and clear segments when necessary.')}
215
215
  </p>
216
216
  </header>
217
217
  <div className="rounded border border-red-200 bg-red-50 p-3 text-sm text-red-700">
@@ -235,7 +235,7 @@ export function CachePanel() {
235
235
  <div className="space-y-1">
236
236
  <h2 className="text-lg font-semibold">{t('configs.cache.title', 'Cache overview')}</h2>
237
237
  <p className="text-sm text-muted-foreground">
238
- {t('configs.cache.description', 'Inspect cached responses and clear segments when necessary.')}
238
+ {t('configs.cache.description', 'Inspect cached CRUD responses and clear segments when necessary.')}
239
239
  </p>
240
240
  {stats ? (
241
241
  <>
@@ -342,7 +342,7 @@ export function CachePanel() {
342
342
  </div>
343
343
  ) : (
344
344
  <p className="text-sm text-muted-foreground">
345
- {t('configs.cache.empty', 'No cached responses for this tenant.')}
345
+ {t('configs.cache.empty', 'No cached CRUD responses for this tenant.')}
346
346
  </p>
347
347
  )}
348
348
  </div>
@@ -35,14 +35,14 @@
35
35
  "configs.systemStatus.actions.purgeCacheUnavailable": "Cache service is unavailable.",
36
36
  "configs.config.nav.cache": "Cache",
37
37
  "configs.cache.title": "Cache overview",
38
- "configs.cache.description": "Inspect cached responses and clear segments when necessary.",
38
+ "configs.cache.description": "Inspect cached CRUD responses and clear segments when necessary.",
39
39
  "configs.cache.loading": "Loading cache statistics…",
40
40
  "configs.cache.loadError": "Failed to load cache statistics.",
41
41
  "configs.cache.retry": "Retry",
42
42
  "configs.cache.refresh": "Refresh",
43
43
  "configs.cache.generatedAt": "Stats generated {{timestamp}}",
44
44
  "configs.cache.totalEntries": "{{count}} cached entries",
45
- "configs.cache.empty": "No cached responses for this tenant.",
45
+ "configs.cache.empty": "No cached CRUD responses for this tenant.",
46
46
  "configs.cache.purgeAll": "Purge all cache",
47
47
  "configs.cache.purgeAllLoading": "Purging…",
48
48
  "configs.cache.purgeAllConfirm": "Purge all cached entries for this tenant?",
@@ -64,8 +64,6 @@
64
64
  "configs.systemStatus.categories.profilingDescription": "Flags that control request and query profiling outputs.",
65
65
  "configs.systemStatus.categories.logging": "Logging",
66
66
  "configs.systemStatus.categories.loggingDescription": "Tune verbosity and SQL logging for diagnostics.",
67
- "configs.systemStatus.categories.security": "Security",
68
- "configs.systemStatus.categories.securityDescription": "Password policy requirements enforced at login and user creation.",
69
67
  "configs.systemStatus.categories.caching": "Caching",
70
68
  "configs.systemStatus.categories.cachingDescription": "Cache providers and TTL controls for backend responses.",
71
69
  "configs.systemStatus.categories.queryIndex": "Query index",
@@ -86,14 +84,6 @@
86
84
  "configs.systemStatus.variables.logVerbosity.description": "Overrides structured log verbosity such as debug or trace.",
87
85
  "configs.systemStatus.variables.logLevel.label": "Log level",
88
86
  "configs.systemStatus.variables.logLevel.description": "Fallback log level applied when verbosity is not set.",
89
- "configs.systemStatus.variables.passwordMinLength.label": "Password min length",
90
- "configs.systemStatus.variables.passwordMinLength.description": "Minimum number of characters required for passwords.",
91
- "configs.systemStatus.variables.passwordRequireDigit.label": "Password requires digit",
92
- "configs.systemStatus.variables.passwordRequireDigit.description": "Require at least one numeric character.",
93
- "configs.systemStatus.variables.passwordRequireUppercase.label": "Password requires uppercase",
94
- "configs.systemStatus.variables.passwordRequireUppercase.description": "Require at least one uppercase letter.",
95
- "configs.systemStatus.variables.passwordRequireSpecial.label": "Password requires special",
96
- "configs.systemStatus.variables.passwordRequireSpecial.description": "Require at least one special character.",
97
87
  "configs.systemStatus.variables.enableCrudApiCache.label": "CRUD API cache",
98
88
  "configs.systemStatus.variables.enableCrudApiCache.description": "Enable the CRUD API response cache layer.",
99
89
  "configs.systemStatus.variables.cacheStrategy.label": "Cache strategy",