@open-mercato/core 0.7.1-develop.7193.1.910a5b0a1e → 0.7.1-develop.7194.1.ab4fc81f82

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 (1238) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/AGENTS.md +4 -3
  3. package/agentic/standalone-guide.md +1 -1
  4. package/build.mjs +16 -0
  5. package/dist/generated/entities/action_log/index.js +2 -0
  6. package/dist/generated/entities/action_log/index.js.map +2 -2
  7. package/dist/generated/entities/user/index.js +2 -0
  8. package/dist/generated/entities/user/index.js.map +2 -2
  9. package/dist/generated/entities/user_task/index.js +14 -0
  10. package/dist/generated/entities/user_task/index.js.map +2 -2
  11. package/dist/generated/entities/workflow_definition/index.js +6 -0
  12. package/dist/generated/entities/workflow_definition/index.js.map +2 -2
  13. package/dist/generated/entities/workflow_definition_draft/index.js +25 -0
  14. package/dist/generated/entities/workflow_definition_draft/index.js.map +7 -0
  15. package/dist/generated/entities/workflow_definition_metric_rollup/index.js +23 -0
  16. package/dist/generated/entities/workflow_definition_metric_rollup/index.js.map +7 -0
  17. package/dist/generated/entities/workflow_instance/index.js +4 -0
  18. package/dist/generated/entities/workflow_instance/index.js.map +2 -2
  19. package/dist/generated/entities.ids.generated.js +4 -1
  20. package/dist/generated/entities.ids.generated.js.map +2 -2
  21. package/dist/generated/entity-fields-registry.js +39 -0
  22. package/dist/generated/entity-fields-registry.js.map +2 -2
  23. package/dist/helpers/integration/workflowsFixtures.js +477 -2
  24. package/dist/helpers/integration/workflowsFixtures.js.map +2 -2
  25. package/dist/helpers/integration/workflowsUi.js +148 -0
  26. package/dist/helpers/integration/workflowsUi.js.map +7 -0
  27. package/dist/modules/attachments/lib/createFromBuffer.js +79 -0
  28. package/dist/modules/attachments/lib/createFromBuffer.js.map +7 -0
  29. package/dist/modules/audit_logs/data/entities.js +5 -0
  30. package/dist/modules/audit_logs/data/entities.js.map +2 -2
  31. package/dist/modules/audit_logs/data/validators.js +1 -0
  32. package/dist/modules/audit_logs/data/validators.js.map +2 -2
  33. package/dist/modules/audit_logs/lib/projections.js +2 -1
  34. package/dist/modules/audit_logs/lib/projections.js.map +2 -2
  35. package/dist/modules/audit_logs/migrations/Migration20260625120000.js +15 -0
  36. package/dist/modules/audit_logs/migrations/Migration20260625120000.js.map +7 -0
  37. package/dist/modules/audit_logs/services/actionLogService.js +3 -0
  38. package/dist/modules/audit_logs/services/actionLogService.js.map +2 -2
  39. package/dist/modules/auth/data/entities.js +6 -0
  40. package/dist/modules/auth/data/entities.js.map +2 -2
  41. package/dist/modules/auth/lib/executionPrincipal.js +140 -0
  42. package/dist/modules/auth/lib/executionPrincipal.js.map +7 -0
  43. package/dist/modules/auth/migrations/Migration20260625050000.js +13 -0
  44. package/dist/modules/auth/migrations/Migration20260625050000.js.map +7 -0
  45. package/dist/modules/business_rules/components/InlineRuleEditor.js +154 -0
  46. package/dist/modules/business_rules/components/InlineRuleEditor.js.map +7 -0
  47. package/dist/modules/business_rules/data/validators.js +6 -0
  48. package/dist/modules/business_rules/data/validators.js.map +2 -2
  49. package/dist/modules/business_rules/lib/rule-engine.js +5 -3
  50. package/dist/modules/business_rules/lib/rule-engine.js.map +2 -2
  51. package/dist/modules/catalog/commands/products.js +5 -0
  52. package/dist/modules/catalog/commands/products.js.map +2 -2
  53. package/dist/modules/catalog/workflows.js +19 -0
  54. package/dist/modules/catalog/workflows.js.map +7 -0
  55. package/dist/modules/customer_accounts/backend/customer_accounts/roles/[id]/page.js +3 -1
  56. package/dist/modules/customer_accounts/backend/customer_accounts/roles/[id]/page.js.map +2 -2
  57. package/dist/modules/customer_accounts/cli.js +80 -0
  58. package/dist/modules/customer_accounts/cli.js.map +7 -0
  59. package/dist/modules/customer_accounts/lib/customerRoleAclSync.js +59 -0
  60. package/dist/modules/customer_accounts/lib/customerRoleAclSync.js.map +7 -0
  61. package/dist/modules/customer_accounts/setup.js +4 -2
  62. package/dist/modules/customer_accounts/setup.js.map +2 -2
  63. package/dist/modules/customers/commands/deals.js +4 -0
  64. package/dist/modules/customers/commands/deals.js.map +2 -2
  65. package/dist/modules/customers/components/detail/ChangelogEntryRow.js +1 -1
  66. package/dist/modules/customers/components/detail/ChangelogEntryRow.js.map +2 -2
  67. package/dist/modules/customers/components/detail/utils.js +2 -0
  68. package/dist/modules/customers/components/detail/utils.js.map +2 -2
  69. package/dist/modules/customers/events.js +13 -2
  70. package/dist/modules/customers/events.js.map +2 -2
  71. package/dist/modules/customers/lib/link-workflow-task-handler.js +64 -0
  72. package/dist/modules/customers/lib/link-workflow-task-handler.js.map +7 -0
  73. package/dist/modules/customers/lib/todoCompatibility.js +1 -1
  74. package/dist/modules/customers/lib/todoCompatibility.js.map +2 -2
  75. package/dist/modules/customers/lib/workflowTaskLink.js +9 -0
  76. package/dist/modules/customers/lib/workflowTaskLink.js.map +7 -0
  77. package/dist/modules/customers/subscribers/link-workflow-task.js +12 -0
  78. package/dist/modules/customers/subscribers/link-workflow-task.js.map +7 -0
  79. package/dist/modules/customers/workflows.js +29 -0
  80. package/dist/modules/customers/workflows.js.map +7 -0
  81. package/dist/modules/entities/api/records.js +13 -33
  82. package/dist/modules/entities/api/records.js.map +3 -3
  83. package/dist/modules/entities/lib/entityClassification.js +60 -0
  84. package/dist/modules/entities/lib/entityClassification.js.map +7 -0
  85. package/dist/modules/sales/commands/documents.js +31 -0
  86. package/dist/modules/sales/commands/documents.js.map +2 -2
  87. package/dist/modules/sales/events.js +12 -1
  88. package/dist/modules/sales/events.js.map +2 -2
  89. package/dist/modules/sales/workflows.js +12 -1
  90. package/dist/modules/sales/workflows.js.map +2 -2
  91. package/dist/modules/seeds/cli.js +199 -0
  92. package/dist/modules/seeds/cli.js.map +7 -0
  93. package/dist/modules/seeds/examples/sample-seed.json +26 -0
  94. package/dist/modules/seeds/index.js +12 -0
  95. package/dist/modules/seeds/index.js.map +7 -0
  96. package/dist/modules/workflows/acl.js +96 -0
  97. package/dist/modules/workflows/acl.js.map +2 -2
  98. package/dist/modules/workflows/ai-agents.js +50 -0
  99. package/dist/modules/workflows/ai-agents.js.map +7 -0
  100. package/dist/modules/workflows/ai-tools/authoring-pack.js +582 -0
  101. package/dist/modules/workflows/ai-tools/authoring-pack.js.map +7 -0
  102. package/dist/modules/workflows/ai-tools/types.js +43 -0
  103. package/dist/modules/workflows/ai-tools/types.js.map +7 -0
  104. package/dist/modules/workflows/ai-tools.js +10 -0
  105. package/dist/modules/workflows/ai-tools.js.map +7 -0
  106. package/dist/modules/workflows/api/command-settings/route.js +137 -0
  107. package/dist/modules/workflows/api/command-settings/route.js.map +7 -0
  108. package/dist/modules/workflows/api/commands/route.js +72 -0
  109. package/dist/modules/workflows/api/commands/route.js.map +7 -0
  110. package/dist/modules/workflows/api/definitions/[id]/callers/route.js +76 -0
  111. package/dist/modules/workflows/api/definitions/[id]/callers/route.js.map +7 -0
  112. package/dist/modules/workflows/api/definitions/[id]/context-schema/route.js +134 -0
  113. package/dist/modules/workflows/api/definitions/[id]/context-schema/route.js.map +7 -0
  114. package/dist/modules/workflows/api/definitions/[id]/customize/route.js +5 -1
  115. package/dist/modules/workflows/api/definitions/[id]/customize/route.js.map +2 -2
  116. package/dist/modules/workflows/api/definitions/[id]/draft/route.js +286 -0
  117. package/dist/modules/workflows/api/definitions/[id]/draft/route.js.map +7 -0
  118. package/dist/modules/workflows/api/definitions/[id]/publish/route.js +207 -0
  119. package/dist/modules/workflows/api/definitions/[id]/publish/route.js.map +7 -0
  120. package/dist/modules/workflows/api/definitions/[id]/reset-to-code/route.js +5 -0
  121. package/dist/modules/workflows/api/definitions/[id]/reset-to-code/route.js.map +2 -2
  122. package/dist/modules/workflows/api/definitions/[id]/route.js +93 -9
  123. package/dist/modules/workflows/api/definitions/[id]/route.js.map +3 -3
  124. package/dist/modules/workflows/api/definitions/[id]/test-step/route.js +210 -0
  125. package/dist/modules/workflows/api/definitions/[id]/test-step/route.js.map +7 -0
  126. package/dist/modules/workflows/api/definitions/generate/route.js +233 -0
  127. package/dist/modules/workflows/api/definitions/generate/route.js.map +7 -0
  128. package/dist/modules/workflows/api/definitions/route.js +61 -113
  129. package/dist/modules/workflows/api/definitions/route.js.map +2 -2
  130. package/dist/modules/workflows/api/definitions/serialize.js +9 -0
  131. package/dist/modules/workflows/api/definitions/serialize.js.map +2 -2
  132. package/dist/modules/workflows/api/endpoints/route.js +69 -0
  133. package/dist/modules/workflows/api/endpoints/route.js.map +7 -0
  134. package/dist/modules/workflows/api/functions/route.js +73 -0
  135. package/dist/modules/workflows/api/functions/route.js.map +7 -0
  136. package/dist/modules/workflows/api/grantable-features/route.js +75 -0
  137. package/dist/modules/workflows/api/grantable-features/route.js.map +7 -0
  138. package/dist/modules/workflows/api/instances/[id]/context/route.js +180 -0
  139. package/dist/modules/workflows/api/instances/[id]/context/route.js.map +7 -0
  140. package/dist/modules/workflows/api/instances/[id]/rerun-step/route.js +184 -0
  141. package/dist/modules/workflows/api/instances/[id]/rerun-step/route.js.map +7 -0
  142. package/dist/modules/workflows/api/instances/[id]/retry/route.js +12 -2
  143. package/dist/modules/workflows/api/instances/[id]/retry/route.js.map +2 -2
  144. package/dist/modules/workflows/api/instances/[id]/step-through/route.js +148 -0
  145. package/dist/modules/workflows/api/instances/[id]/step-through/route.js.map +7 -0
  146. package/dist/modules/workflows/api/instances/[id]/steps/route.js +123 -0
  147. package/dist/modules/workflows/api/instances/[id]/steps/route.js.map +7 -0
  148. package/dist/modules/workflows/api/instances/[id]/would-do/route.js +172 -0
  149. package/dist/modules/workflows/api/instances/[id]/would-do/route.js.map +7 -0
  150. package/dist/modules/workflows/api/instances/bulk-replay/route.js +117 -0
  151. package/dist/modules/workflows/api/instances/bulk-replay/route.js.map +7 -0
  152. package/dist/modules/workflows/api/instances/failure-queue/route.js +165 -0
  153. package/dist/modules/workflows/api/instances/failure-queue/route.js.map +7 -0
  154. package/dist/modules/workflows/api/instances/route.js +94 -3
  155. package/dist/modules/workflows/api/instances/route.js.map +2 -2
  156. package/dist/modules/workflows/api/metrics/definitions/route.js +188 -0
  157. package/dist/modules/workflows/api/metrics/definitions/route.js.map +7 -0
  158. package/dist/modules/workflows/api/openapi.js +415 -4
  159. package/dist/modules/workflows/api/openapi.js.map +2 -2
  160. package/dist/modules/workflows/api/portal/tasks/[id]/complete/route.js +132 -0
  161. package/dist/modules/workflows/api/portal/tasks/[id]/complete/route.js.map +7 -0
  162. package/dist/modules/workflows/api/portal/tasks/[id]/route.js +97 -0
  163. package/dist/modules/workflows/api/portal/tasks/[id]/route.js.map +7 -0
  164. package/dist/modules/workflows/api/portal/tasks/route.js +126 -0
  165. package/dist/modules/workflows/api/portal/tasks/route.js.map +7 -0
  166. package/dist/modules/workflows/api/rule-usage/route.js +80 -0
  167. package/dist/modules/workflows/api/rule-usage/route.js.map +7 -0
  168. package/dist/modules/workflows/api/task-settings/route.js +107 -0
  169. package/dist/modules/workflows/api/task-settings/route.js.map +7 -0
  170. package/dist/modules/workflows/api/tasks/[id]/claim/route.js +27 -16
  171. package/dist/modules/workflows/api/tasks/[id]/claim/route.js.map +2 -2
  172. package/dist/modules/workflows/api/tasks/[id]/complete/route.js +40 -16
  173. package/dist/modules/workflows/api/tasks/[id]/complete/route.js.map +2 -2
  174. package/dist/modules/workflows/api/tasks/[id]/reassign/route.js +150 -0
  175. package/dist/modules/workflows/api/tasks/[id]/reassign/route.js.map +7 -0
  176. package/dist/modules/workflows/api/tasks/[id]/route.js +39 -6
  177. package/dist/modules/workflows/api/tasks/[id]/route.js.map +2 -2
  178. package/dist/modules/workflows/api/tasks/[id]/unclaim/route.js +100 -0
  179. package/dist/modules/workflows/api/tasks/[id]/unclaim/route.js.map +7 -0
  180. package/dist/modules/workflows/api/tasks/route.js +37 -6
  181. package/dist/modules/workflows/api/tasks/route.js.map +2 -2
  182. package/dist/modules/workflows/api/tasks/serialize.js +83 -0
  183. package/dist/modules/workflows/api/tasks/serialize.js.map +7 -0
  184. package/dist/modules/workflows/api/templates/route.js +69 -0
  185. package/dist/modules/workflows/api/templates/route.js.map +7 -0
  186. package/dist/modules/workflows/api/work-inbox/next/route.js +129 -0
  187. package/dist/modules/workflows/api/work-inbox/next/route.js.map +7 -0
  188. package/dist/modules/workflows/api/work-inbox/route.js +119 -0
  189. package/dist/modules/workflows/api/work-inbox/route.js.map +7 -0
  190. package/dist/modules/workflows/backend/config/workflows/page.js +10 -0
  191. package/dist/modules/workflows/backend/config/workflows/page.js.map +7 -0
  192. package/dist/modules/workflows/backend/config/workflows/page.meta.js +35 -0
  193. package/dist/modules/workflows/backend/config/workflows/page.meta.js.map +7 -0
  194. package/dist/modules/workflows/backend/definitions/[id]/page.js +6 -271
  195. package/dist/modules/workflows/backend/definitions/[id]/page.js.map +3 -3
  196. package/dist/modules/workflows/backend/definitions/create/page.js +7 -56
  197. package/dist/modules/workflows/backend/definitions/create/page.js.map +2 -2
  198. package/dist/modules/workflows/backend/definitions/create/page.meta.js +1 -1
  199. package/dist/modules/workflows/backend/definitions/create/page.meta.js.map +2 -2
  200. package/dist/modules/workflows/backend/definitions/page.js +131 -51
  201. package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
  202. package/dist/modules/workflows/backend/definitions/visual-editor/page.js +2606 -677
  203. package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +3 -3
  204. package/dist/modules/workflows/backend/instances/[id]/page.js +532 -421
  205. package/dist/modules/workflows/backend/instances/[id]/page.js.map +2 -2
  206. package/dist/modules/workflows/backend/instances/[id]/page.meta.js +1 -1
  207. package/dist/modules/workflows/backend/instances/[id]/page.meta.js.map +1 -1
  208. package/dist/modules/workflows/backend/instances/failure-queue/page.js +211 -0
  209. package/dist/modules/workflows/backend/instances/failure-queue/page.js.map +7 -0
  210. package/dist/modules/workflows/backend/instances/failure-queue/page.meta.js +20 -0
  211. package/dist/modules/workflows/backend/instances/failure-queue/page.meta.js.map +7 -0
  212. package/dist/modules/workflows/backend/instances/page.js +159 -22
  213. package/dist/modules/workflows/backend/instances/page.js.map +2 -2
  214. package/dist/modules/workflows/backend/instances/page.meta.js +1 -1
  215. package/dist/modules/workflows/backend/instances/page.meta.js.map +1 -1
  216. package/dist/modules/workflows/backend/tasks/[id]/page.js +553 -392
  217. package/dist/modules/workflows/backend/tasks/[id]/page.js.map +3 -3
  218. package/dist/modules/workflows/backend/tasks/page.js +8 -250
  219. package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
  220. package/dist/modules/workflows/backend/tasks/page.meta.js +1 -0
  221. package/dist/modules/workflows/backend/tasks/page.meta.js.map +2 -2
  222. package/dist/modules/workflows/backend/work-inbox/page.js +399 -0
  223. package/dist/modules/workflows/backend/work-inbox/page.js.map +7 -0
  224. package/dist/modules/workflows/backend/work-inbox/page.meta.js +19 -0
  225. package/dist/modules/workflows/backend/work-inbox/page.meta.js.map +7 -0
  226. package/dist/modules/workflows/cli.js +1 -1
  227. package/dist/modules/workflows/cli.js.map +2 -2
  228. package/dist/modules/workflows/commands/tasks.js +81 -0
  229. package/dist/modules/workflows/commands/tasks.js.map +7 -0
  230. package/dist/modules/workflows/components/ActivitiesEditor.js +281 -287
  231. package/dist/modules/workflows/components/ActivitiesEditor.js.map +2 -2
  232. package/dist/modules/workflows/components/ActivityEditDialog.js +220 -0
  233. package/dist/modules/workflows/components/ActivityEditDialog.js.map +7 -0
  234. package/dist/modules/workflows/components/AgentSelector.js +115 -0
  235. package/dist/modules/workflows/components/AgentSelector.js.map +7 -0
  236. package/dist/modules/workflows/components/AnnotationEditDialog.js +110 -0
  237. package/dist/modules/workflows/components/AnnotationEditDialog.js.map +7 -0
  238. package/dist/modules/workflows/components/BusinessRuleUsagePanel.js +71 -0
  239. package/dist/modules/workflows/components/BusinessRuleUsagePanel.js.map +7 -0
  240. package/dist/modules/workflows/components/BusinessRulesSelector.js +151 -93
  241. package/dist/modules/workflows/components/BusinessRulesSelector.js.map +2 -2
  242. package/dist/modules/workflows/components/ConfigJsonTextarea.js +85 -0
  243. package/dist/modules/workflows/components/ConfigJsonTextarea.js.map +7 -0
  244. package/dist/modules/workflows/components/ContextSchemaEditor.js +150 -0
  245. package/dist/modules/workflows/components/ContextSchemaEditor.js.map +7 -0
  246. package/dist/modules/workflows/components/DefinitionErrorHandlerField.js +102 -0
  247. package/dist/modules/workflows/components/DefinitionErrorHandlerField.js.map +7 -0
  248. package/dist/modules/workflows/components/DefinitionMetadataDrawer.js +377 -0
  249. package/dist/modules/workflows/components/DefinitionMetadataDrawer.js.map +7 -0
  250. package/dist/modules/workflows/components/DefinitionMetricsCells.js +132 -0
  251. package/dist/modules/workflows/components/DefinitionMetricsCells.js.map +7 -0
  252. package/dist/modules/workflows/components/DefinitionTriggersEditor.js +307 -216
  253. package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +2 -2
  254. package/dist/modules/workflows/components/EdgeEditDialog.js +11 -18
  255. package/dist/modules/workflows/components/EdgeEditDialog.js.map +2 -2
  256. package/dist/modules/workflows/components/EdgeEditDialogCrudForm.js +112 -72
  257. package/dist/modules/workflows/components/EdgeEditDialogCrudForm.js.map +2 -2
  258. package/dist/modules/workflows/components/InputDataPanel.js +128 -0
  259. package/dist/modules/workflows/components/InputDataPanel.js.map +7 -0
  260. package/dist/modules/workflows/components/InspectorPanel.js +161 -0
  261. package/dist/modules/workflows/components/InspectorPanel.js.map +7 -0
  262. package/dist/modules/workflows/components/NodeEditDialog.js +363 -41
  263. package/dist/modules/workflows/components/NodeEditDialog.js.map +2 -2
  264. package/dist/modules/workflows/components/NodeEditDialogCrudForm.js +714 -159
  265. package/dist/modules/workflows/components/NodeEditDialogCrudForm.js.map +2 -2
  266. package/dist/modules/workflows/components/StepsEditor.js.map +2 -2
  267. package/dist/modules/workflows/components/TemplateGalleryDialog.js +148 -0
  268. package/dist/modules/workflows/components/TemplateGalleryDialog.js.map +7 -0
  269. package/dist/modules/workflows/components/TransitionsEditor.js +80 -74
  270. package/dist/modules/workflows/components/TransitionsEditor.js.map +2 -2
  271. package/dist/modules/workflows/components/TriggersDialog.js +53 -0
  272. package/dist/modules/workflows/components/TriggersDialog.js.map +7 -0
  273. package/dist/modules/workflows/components/TriggersEditor.js +331 -0
  274. package/dist/modules/workflows/components/TriggersEditor.js.map +7 -0
  275. package/dist/modules/workflows/components/WorkflowAiDraftDialog.js +278 -0
  276. package/dist/modules/workflows/components/WorkflowAiDraftDialog.js.map +7 -0
  277. package/dist/modules/workflows/components/WorkflowCodeView.js +173 -0
  278. package/dist/modules/workflows/components/WorkflowCodeView.js.map +7 -0
  279. package/dist/modules/workflows/components/WorkflowCommandPalette.js +62 -0
  280. package/dist/modules/workflows/components/WorkflowCommandPalette.js.map +7 -0
  281. package/dist/modules/workflows/components/WorkflowCompensationGhostEdge.js +70 -0
  282. package/dist/modules/workflows/components/WorkflowCompensationGhostEdge.js.map +7 -0
  283. package/dist/modules/workflows/components/WorkflowDataMappingEdge.js +36 -0
  284. package/dist/modules/workflows/components/WorkflowDataMappingEdge.js.map +7 -0
  285. package/dist/modules/workflows/components/WorkflowGraph.js +4 -2
  286. package/dist/modules/workflows/components/WorkflowGraph.js.map +2 -2
  287. package/dist/modules/workflows/components/WorkflowGraphImpl.js +324 -86
  288. package/dist/modules/workflows/components/WorkflowGraphImpl.js.map +3 -3
  289. package/dist/modules/workflows/components/WorkflowIconPicker.js +109 -0
  290. package/dist/modules/workflows/components/WorkflowIconPicker.js.map +7 -0
  291. package/dist/modules/workflows/components/WorkflowLegend.js +45 -29
  292. package/dist/modules/workflows/components/WorkflowLegend.js.map +2 -2
  293. package/dist/modules/workflows/components/WorkflowNodeCard.js +221 -22
  294. package/dist/modules/workflows/components/WorkflowNodeCard.js.map +2 -2
  295. package/dist/modules/workflows/components/WorkflowRouteChips.js +111 -0
  296. package/dist/modules/workflows/components/WorkflowRouteChips.js.map +7 -0
  297. package/dist/modules/workflows/components/WorkflowSelector.js +108 -88
  298. package/dist/modules/workflows/components/WorkflowSelector.js.map +2 -2
  299. package/dist/modules/workflows/components/WorkflowTransitionEdge.js +61 -11
  300. package/dist/modules/workflows/components/WorkflowTransitionEdge.js.map +2 -2
  301. package/dist/modules/workflows/components/WorkflowTransitionLabel.js +15 -5
  302. package/dist/modules/workflows/components/WorkflowTransitionLabel.js.map +2 -2
  303. package/dist/modules/workflows/components/fields/ActivityArrayEditor.js +88 -21
  304. package/dist/modules/workflows/components/fields/ActivityArrayEditor.js.map +2 -2
  305. package/dist/modules/workflows/components/fields/ActivityConfigFields.js +615 -0
  306. package/dist/modules/workflows/components/fields/ActivityConfigFields.js.map +7 -0
  307. package/dist/modules/workflows/components/fields/ActivityTestPanel.js +191 -0
  308. package/dist/modules/workflows/components/fields/ActivityTestPanel.js.map +7 -0
  309. package/dist/modules/workflows/components/fields/AgentInvokeConfigField.js +488 -0
  310. package/dist/modules/workflows/components/fields/AgentInvokeConfigField.js.map +7 -0
  311. package/dist/modules/workflows/components/fields/AgentReviewOnBreachField.js +61 -0
  312. package/dist/modules/workflows/components/fields/AgentReviewOnBreachField.js.map +7 -0
  313. package/dist/modules/workflows/components/fields/BranchingRoutesEditor.js +227 -0
  314. package/dist/modules/workflows/components/fields/BranchingRoutesEditor.js.map +7 -0
  315. package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js +37 -4
  316. package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js.map +2 -2
  317. package/dist/modules/workflows/components/fields/CommandPicker.js +111 -0
  318. package/dist/modules/workflows/components/fields/CommandPicker.js.map +7 -0
  319. package/dist/modules/workflows/components/fields/EndpointPicker.js +235 -0
  320. package/dist/modules/workflows/components/fields/EndpointPicker.js.map +7 -0
  321. package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js +2 -2
  322. package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js.map +2 -2
  323. package/dist/modules/workflows/components/fields/FunctionPicker.js +55 -0
  324. package/dist/modules/workflows/components/fields/FunctionPicker.js.map +7 -0
  325. package/dist/modules/workflows/components/fields/MappingArrayEditor.js +38 -15
  326. package/dist/modules/workflows/components/fields/MappingArrayEditor.js.map +2 -2
  327. package/dist/modules/workflows/components/fields/PortFieldArrayEditor.js +206 -0
  328. package/dist/modules/workflows/components/fields/PortFieldArrayEditor.js.map +7 -0
  329. package/dist/modules/workflows/components/fields/RolesMultiSelect.js +53 -0
  330. package/dist/modules/workflows/components/fields/RolesMultiSelect.js.map +7 -0
  331. package/dist/modules/workflows/components/fields/RouteOrderEditor.js +130 -0
  332. package/dist/modules/workflows/components/fields/RouteOrderEditor.js.map +7 -0
  333. package/dist/modules/workflows/components/fields/SchemaBuilderDialog.js +104 -0
  334. package/dist/modules/workflows/components/fields/SchemaBuilderDialog.js.map +7 -0
  335. package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js +2 -2
  336. package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js.map +2 -2
  337. package/dist/modules/workflows/components/fields/TaskAssignmentField.js +210 -0
  338. package/dist/modules/workflows/components/fields/TaskAssignmentField.js.map +7 -0
  339. package/dist/modules/workflows/components/fields/TaskDeadlineFields.js +126 -0
  340. package/dist/modules/workflows/components/fields/TaskDeadlineFields.js.map +7 -0
  341. package/dist/modules/workflows/components/fields/TaskDecisionsField.js +218 -0
  342. package/dist/modules/workflows/components/fields/TaskDecisionsField.js.map +7 -0
  343. package/dist/modules/workflows/components/fields/TaskEntityBindingsField.js +114 -0
  344. package/dist/modules/workflows/components/fields/TaskEntityBindingsField.js.map +7 -0
  345. package/dist/modules/workflows/components/fields/TemplateTextControl.js +64 -0
  346. package/dist/modules/workflows/components/fields/TemplateTextControl.js.map +7 -0
  347. package/dist/modules/workflows/components/fields/VariablePickerButton.js +121 -0
  348. package/dist/modules/workflows/components/fields/VariablePickerButton.js.map +7 -0
  349. package/dist/modules/workflows/components/fields/ledgerDropTarget.js +35 -0
  350. package/dist/modules/workflows/components/fields/ledgerDropTarget.js.map +7 -0
  351. package/dist/modules/workflows/components/fields/useActivityTypeOptions.js +16 -0
  352. package/dist/modules/workflows/components/fields/useActivityTypeOptions.js.map +7 -0
  353. package/dist/modules/workflows/components/formConfig.js +39 -10
  354. package/dist/modules/workflows/components/formConfig.js.map +2 -2
  355. package/dist/modules/workflows/components/mobile/MobileDefinitionDetail.js.map +2 -2
  356. package/dist/modules/workflows/components/mobile/MobileMetadataSheet.js.map +2 -2
  357. package/dist/modules/workflows/components/mobile/MobileTaskForm.js +29 -2
  358. package/dist/modules/workflows/components/mobile/MobileTaskForm.js.map +2 -2
  359. package/dist/modules/workflows/components/mobile/MobileVisualEditor.js +64 -65
  360. package/dist/modules/workflows/components/mobile/MobileVisualEditor.js.map +2 -2
  361. package/dist/modules/workflows/components/nodes/AnnotationGroupNode.js +64 -0
  362. package/dist/modules/workflows/components/nodes/AnnotationGroupNode.js.map +7 -0
  363. package/dist/modules/workflows/components/nodes/AutomatedNode.js +24 -16
  364. package/dist/modules/workflows/components/nodes/AutomatedNode.js.map +2 -2
  365. package/dist/modules/workflows/components/nodes/EndNode.js +13 -12
  366. package/dist/modules/workflows/components/nodes/EndNode.js.map +2 -2
  367. package/dist/modules/workflows/components/nodes/ErrorOutputHandle.js +29 -0
  368. package/dist/modules/workflows/components/nodes/ErrorOutputHandle.js.map +7 -0
  369. package/dist/modules/workflows/components/nodes/IfElseNode.js +51 -0
  370. package/dist/modules/workflows/components/nodes/IfElseNode.js.map +7 -0
  371. package/dist/modules/workflows/components/nodes/InvokeAgentNode.js +122 -0
  372. package/dist/modules/workflows/components/nodes/InvokeAgentNode.js.map +7 -0
  373. package/dist/modules/workflows/components/nodes/NodeOutcomeRows.js +100 -0
  374. package/dist/modules/workflows/components/nodes/NodeOutcomeRows.js.map +7 -0
  375. package/dist/modules/workflows/components/nodes/ParallelForkNode.js +18 -14
  376. package/dist/modules/workflows/components/nodes/ParallelForkNode.js.map +2 -2
  377. package/dist/modules/workflows/components/nodes/ParallelJoinNode.js +18 -14
  378. package/dist/modules/workflows/components/nodes/ParallelJoinNode.js.map +2 -2
  379. package/dist/modules/workflows/components/nodes/StartNode.js +66 -15
  380. package/dist/modules/workflows/components/nodes/StartNode.js.map +2 -2
  381. package/dist/modules/workflows/components/nodes/StickyNoteNode.js +54 -0
  382. package/dist/modules/workflows/components/nodes/StickyNoteNode.js.map +7 -0
  383. package/dist/modules/workflows/components/nodes/SubWorkflowNode.js +107 -41
  384. package/dist/modules/workflows/components/nodes/SubWorkflowNode.js.map +2 -2
  385. package/dist/modules/workflows/components/nodes/SwitchNode.js +51 -0
  386. package/dist/modules/workflows/components/nodes/SwitchNode.js.map +7 -0
  387. package/dist/modules/workflows/components/nodes/TriggerCap.js +65 -0
  388. package/dist/modules/workflows/components/nodes/TriggerCap.js.map +7 -0
  389. package/dist/modules/workflows/components/nodes/TriggerNode.js +111 -0
  390. package/dist/modules/workflows/components/nodes/TriggerNode.js.map +7 -0
  391. package/dist/modules/workflows/components/nodes/UserTaskNode.js +43 -17
  392. package/dist/modules/workflows/components/nodes/UserTaskNode.js.map +2 -2
  393. package/dist/modules/workflows/components/nodes/WaitForConditionNode.js +53 -0
  394. package/dist/modules/workflows/components/nodes/WaitForConditionNode.js.map +7 -0
  395. package/dist/modules/workflows/components/nodes/WaitForSignalNode.js +21 -15
  396. package/dist/modules/workflows/components/nodes/WaitForSignalNode.js.map +2 -2
  397. package/dist/modules/workflows/components/nodes/WaitForTimerNode.js +21 -15
  398. package/dist/modules/workflows/components/nodes/WaitForTimerNode.js.map +2 -2
  399. package/dist/modules/workflows/components/nodes/index.js +14 -0
  400. package/dist/modules/workflows/components/nodes/index.js.map +2 -2
  401. package/dist/modules/workflows/components/portal/PortalTaskForm.js +196 -0
  402. package/dist/modules/workflows/components/portal/PortalTaskForm.js.map +7 -0
  403. package/dist/modules/workflows/components/run/AgentActivityPanel.js +22 -0
  404. package/dist/modules/workflows/components/run/AgentActivityPanel.js.map +7 -0
  405. package/dist/modules/workflows/components/run/RerunStepDialog.js +106 -0
  406. package/dist/modules/workflows/components/run/RerunStepDialog.js.map +7 -0
  407. package/dist/modules/workflows/components/run/RunEventBadge.js +30 -0
  408. package/dist/modules/workflows/components/run/RunEventBadge.js.map +7 -0
  409. package/dist/modules/workflows/components/run/RunGantt.js +130 -0
  410. package/dist/modules/workflows/components/run/RunGantt.js.map +7 -0
  411. package/dist/modules/workflows/components/run/RunStatusBadge.js +82 -0
  412. package/dist/modules/workflows/components/run/RunStatusBadge.js.map +7 -0
  413. package/dist/modules/workflows/components/run/RunStepInspector.js +116 -0
  414. package/dist/modules/workflows/components/run/RunStepInspector.js.map +7 -0
  415. package/dist/modules/workflows/components/run/WouldDoReport.js +52 -0
  416. package/dist/modules/workflows/components/run/WouldDoReport.js.map +7 -0
  417. package/dist/modules/workflows/components/run/useAgentLabels.js +28 -0
  418. package/dist/modules/workflows/components/run/useAgentLabels.js.map +7 -0
  419. package/dist/modules/workflows/components/run/useLastRunOverlay.js +89 -0
  420. package/dist/modules/workflows/components/run/useLastRunOverlay.js.map +7 -0
  421. package/dist/modules/workflows/components/run/useLiveAgentActions.js +41 -0
  422. package/dist/modules/workflows/components/run/useLiveAgentActions.js.map +7 -0
  423. package/dist/modules/workflows/components/run/useLiveRunUpdates.js +57 -0
  424. package/dist/modules/workflows/components/run/useLiveRunUpdates.js.map +7 -0
  425. package/dist/modules/workflows/components/settings/CommandSettingsPageClient.js +156 -0
  426. package/dist/modules/workflows/components/settings/CommandSettingsPageClient.js.map +7 -0
  427. package/dist/modules/workflows/components/work-inbox/EntityContextPanel.js +72 -0
  428. package/dist/modules/workflows/components/work-inbox/EntityContextPanel.js.map +7 -0
  429. package/dist/modules/workflows/components/work-inbox/ReassignTaskDialog.js +156 -0
  430. package/dist/modules/workflows/components/work-inbox/ReassignTaskDialog.js.map +7 -0
  431. package/dist/modules/workflows/components/work-inbox/StatusChip.js +46 -0
  432. package/dist/modules/workflows/components/work-inbox/StatusChip.js.map +7 -0
  433. package/dist/modules/workflows/components/work-inbox/TaskActionNotice.js +53 -0
  434. package/dist/modules/workflows/components/work-inbox/TaskActionNotice.js.map +7 -0
  435. package/dist/modules/workflows/components/work-inbox/TaskFormFields.js +261 -0
  436. package/dist/modules/workflows/components/work-inbox/TaskFormFields.js.map +7 -0
  437. package/dist/modules/workflows/components/work-inbox/WorkInboxEmptyState.js +27 -0
  438. package/dist/modules/workflows/components/work-inbox/WorkInboxEmptyState.js.map +7 -0
  439. package/dist/modules/workflows/data/activity-config-schemas.js +191 -0
  440. package/dist/modules/workflows/data/activity-config-schemas.js.map +7 -0
  441. package/dist/modules/workflows/data/activity-config-warnings.js +42 -0
  442. package/dist/modules/workflows/data/activity-config-warnings.js.map +7 -0
  443. package/dist/modules/workflows/data/branching-route-warnings.js +65 -0
  444. package/dist/modules/workflows/data/branching-route-warnings.js.map +7 -0
  445. package/dist/modules/workflows/data/entities.js +144 -4
  446. package/dist/modules/workflows/data/entities.js.map +2 -2
  447. package/dist/modules/workflows/data/metrics-validators.js +35 -0
  448. package/dist/modules/workflows/data/metrics-validators.js.map +7 -0
  449. package/dist/modules/workflows/data/task-primitives.js +14 -0
  450. package/dist/modules/workflows/data/task-primitives.js.map +7 -0
  451. package/dist/modules/workflows/data/validators.js +504 -61
  452. package/dist/modules/workflows/data/validators.js.map +3 -3
  453. package/dist/modules/workflows/di.js +16 -1
  454. package/dist/modules/workflows/di.js.map +2 -2
  455. package/dist/modules/workflows/events.js +66 -8
  456. package/dist/modules/workflows/events.js.map +2 -2
  457. package/dist/modules/workflows/examples/oze-residential-install-60-nodes.json +1545 -0
  458. package/dist/modules/workflows/examples/sales-pipeline-definition.json +35 -35
  459. package/dist/modules/workflows/examples/templates/lead-to-install.json +160 -0
  460. package/dist/modules/workflows/examples/templates/order-approval.json +230 -0
  461. package/dist/modules/workflows/examples/templates/task-escalation.json +110 -0
  462. package/dist/modules/workflows/examples/templates/webhook-integration.json +113 -0
  463. package/dist/modules/workflows/extension-points.js +1 -1
  464. package/dist/modules/workflows/extension-points.js.map +2 -2
  465. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.js +144 -0
  466. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.js.map +7 -0
  467. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.meta.js +12 -0
  468. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.meta.js.map +7 -0
  469. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/page.js +114 -0
  470. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/page.js.map +7 -0
  471. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/page.meta.js +18 -0
  472. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/page.meta.js.map +7 -0
  473. package/dist/modules/workflows/lib/activity-executor.js +505 -137
  474. package/dist/modules/workflows/lib/activity-executor.js.map +3 -3
  475. package/dist/modules/workflows/lib/activity-queue-types.js +3 -1
  476. package/dist/modules/workflows/lib/activity-queue-types.js.map +2 -2
  477. package/dist/modules/workflows/lib/activity-registry-bootstrap.js +2 -0
  478. package/dist/modules/workflows/lib/activity-registry-bootstrap.js.map +7 -0
  479. package/dist/modules/workflows/lib/activity-registry.js +27 -0
  480. package/dist/modules/workflows/lib/activity-registry.js.map +7 -0
  481. package/dist/modules/workflows/lib/activity-types.js +291 -0
  482. package/dist/modules/workflows/lib/activity-types.js.map +7 -0
  483. package/dist/modules/workflows/lib/activity-worker-handler.js +456 -32
  484. package/dist/modules/workflows/lib/activity-worker-handler.js.map +3 -3
  485. package/dist/modules/workflows/lib/advanced-config.js +31 -0
  486. package/dist/modules/workflows/lib/advanced-config.js.map +7 -0
  487. package/dist/modules/workflows/lib/agent-disposition-task.js +198 -0
  488. package/dist/modules/workflows/lib/agent-disposition-task.js.map +7 -0
  489. package/dist/modules/workflows/lib/agent-outcome-paths.js +82 -0
  490. package/dist/modules/workflows/lib/agent-outcome-paths.js.map +7 -0
  491. package/dist/modules/workflows/lib/agent-result-mapping.js +54 -0
  492. package/dist/modules/workflows/lib/agent-result-mapping.js.map +7 -0
  493. package/dist/modules/workflows/lib/agent-review-inspector.js +61 -0
  494. package/dist/modules/workflows/lib/agent-review-inspector.js.map +7 -0
  495. package/dist/modules/workflows/lib/agent-review.js +66 -0
  496. package/dist/modules/workflows/lib/agent-review.js.map +7 -0
  497. package/dist/modules/workflows/lib/ai-authoring.js +155 -0
  498. package/dist/modules/workflows/lib/ai-authoring.js.map +7 -0
  499. package/dist/modules/workflows/lib/ai-draft-runner.js +43 -0
  500. package/dist/modules/workflows/lib/ai-draft-runner.js.map +7 -0
  501. package/dist/modules/workflows/lib/annotation-events.js +10 -0
  502. package/dist/modules/workflows/lib/annotation-events.js.map +7 -0
  503. package/dist/modules/workflows/lib/branching-routes.js +182 -0
  504. package/dist/modules/workflows/lib/branching-routes.js.map +7 -0
  505. package/dist/modules/workflows/lib/breach-routing.js +50 -0
  506. package/dist/modules/workflows/lib/breach-routing.js.map +7 -0
  507. package/dist/modules/workflows/lib/bulk-replay.js +101 -0
  508. package/dist/modules/workflows/lib/bulk-replay.js.map +7 -0
  509. package/dist/modules/workflows/lib/business-rule-usage.js +91 -0
  510. package/dist/modules/workflows/lib/business-rule-usage.js.map +7 -0
  511. package/dist/modules/workflows/lib/caller-graph.js +53 -0
  512. package/dist/modules/workflows/lib/caller-graph.js.map +7 -0
  513. package/dist/modules/workflows/lib/code-view-apply.js +86 -0
  514. package/dist/modules/workflows/lib/code-view-apply.js.map +7 -0
  515. package/dist/modules/workflows/lib/collect-validation-issues.js +164 -0
  516. package/dist/modules/workflows/lib/collect-validation-issues.js.map +7 -0
  517. package/dist/modules/workflows/lib/compensation-ghosts.js +72 -0
  518. package/dist/modules/workflows/lib/compensation-ghosts.js.map +7 -0
  519. package/dist/modules/workflows/lib/component-guard.js +7 -0
  520. package/dist/modules/workflows/lib/component-guard.js.map +7 -0
  521. package/dist/modules/workflows/lib/condition-handler.js +443 -0
  522. package/dist/modules/workflows/lib/condition-handler.js.map +7 -0
  523. package/dist/modules/workflows/lib/context-ledger.js +448 -0
  524. package/dist/modules/workflows/lib/context-ledger.js.map +7 -0
  525. package/dist/modules/workflows/lib/crud-form-dialogs-flag.js +8 -0
  526. package/dist/modules/workflows/lib/crud-form-dialogs-flag.js.map +7 -0
  527. package/dist/modules/workflows/lib/data-edge-mapping.js +63 -0
  528. package/dist/modules/workflows/lib/data-edge-mapping.js.map +7 -0
  529. package/dist/modules/workflows/lib/definition-context-schema.js +56 -0
  530. package/dist/modules/workflows/lib/definition-context-schema.js.map +7 -0
  531. package/dist/modules/workflows/lib/definition-edit-safety.js +123 -0
  532. package/dist/modules/workflows/lib/definition-edit-safety.js.map +7 -0
  533. package/dist/modules/workflows/lib/definition-error-body.js +33 -0
  534. package/dist/modules/workflows/lib/definition-error-body.js.map +7 -0
  535. package/dist/modules/workflows/lib/definition-evaluation.js +79 -0
  536. package/dist/modules/workflows/lib/definition-evaluation.js.map +7 -0
  537. package/dist/modules/workflows/lib/definition-grant.js +90 -0
  538. package/dist/modules/workflows/lib/definition-grant.js.map +7 -0
  539. package/dist/modules/workflows/lib/definition-json-locations.js +139 -0
  540. package/dist/modules/workflows/lib/definition-json-locations.js.map +7 -0
  541. package/dist/modules/workflows/lib/definition-payload.js +31 -0
  542. package/dist/modules/workflows/lib/definition-payload.js.map +7 -0
  543. package/dist/modules/workflows/lib/draft-restore.js +49 -0
  544. package/dist/modules/workflows/lib/draft-restore.js.map +7 -0
  545. package/dist/modules/workflows/lib/dry-run.js +106 -0
  546. package/dist/modules/workflows/lib/dry-run.js.map +7 -0
  547. package/dist/modules/workflows/lib/duration.js +66 -17
  548. package/dist/modules/workflows/lib/duration.js.map +2 -2
  549. package/dist/modules/workflows/lib/edge-reattachment.js +79 -0
  550. package/dist/modules/workflows/lib/edge-reattachment.js.map +7 -0
  551. package/dist/modules/workflows/lib/edgeFormTransforms.js +7 -11
  552. package/dist/modules/workflows/lib/edgeFormTransforms.js.map +2 -2
  553. package/dist/modules/workflows/lib/editor-annotations.js +195 -0
  554. package/dist/modules/workflows/lib/editor-annotations.js.map +7 -0
  555. package/dist/modules/workflows/lib/editor-commands.js +103 -0
  556. package/dist/modules/workflows/lib/editor-commands.js.map +7 -0
  557. package/dist/modules/workflows/lib/editor-history.js +51 -0
  558. package/dist/modules/workflows/lib/editor-history.js.map +7 -0
  559. package/dist/modules/workflows/lib/endpoint-catalog.js +181 -0
  560. package/dist/modules/workflows/lib/endpoint-catalog.js.map +7 -0
  561. package/dist/modules/workflows/lib/endpoint-path.js +90 -0
  562. package/dist/modules/workflows/lib/endpoint-path.js.map +7 -0
  563. package/dist/modules/workflows/lib/engine-version.js +42 -0
  564. package/dist/modules/workflows/lib/engine-version.js.map +7 -0
  565. package/dist/modules/workflows/lib/error-handler.js +132 -0
  566. package/dist/modules/workflows/lib/error-handler.js.map +7 -0
  567. package/dist/modules/workflows/lib/error-routing.js +104 -0
  568. package/dist/modules/workflows/lib/error-routing.js.map +7 -0
  569. package/dist/modules/workflows/lib/event-logger.js +23 -0
  570. package/dist/modules/workflows/lib/event-logger.js.map +2 -2
  571. package/dist/modules/workflows/lib/expression-refs.js +168 -0
  572. package/dist/modules/workflows/lib/expression-refs.js.map +7 -0
  573. package/dist/modules/workflows/lib/failure-grouping.js +62 -0
  574. package/dist/modules/workflows/lib/failure-grouping.js.map +7 -0
  575. package/dist/modules/workflows/lib/find-definition.js +1 -0
  576. package/dist/modules/workflows/lib/find-definition.js.map +2 -2
  577. package/dist/modules/workflows/lib/flow-logic-warnings.js +338 -0
  578. package/dist/modules/workflows/lib/flow-logic-warnings.js.map +7 -0
  579. package/dist/modules/workflows/lib/graph-utils.js +328 -77
  580. package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
  581. package/dist/modules/workflows/lib/icon-search.js +32 -0
  582. package/dist/modules/workflows/lib/icon-search.js.map +7 -0
  583. package/dist/modules/workflows/lib/insert-at-cursor.js +26 -0
  584. package/dist/modules/workflows/lib/insert-at-cursor.js.map +7 -0
  585. package/dist/modules/workflows/lib/instance-date-filter.js +28 -0
  586. package/dist/modules/workflows/lib/instance-date-filter.js.map +7 -0
  587. package/dist/modules/workflows/lib/interpolation-pipeline.js +271 -0
  588. package/dist/modules/workflows/lib/interpolation-pipeline.js.map +7 -0
  589. package/dist/modules/workflows/lib/ledger-drag.js +28 -0
  590. package/dist/modules/workflows/lib/ledger-drag.js.map +7 -0
  591. package/dist/modules/workflows/lib/ledger-entry-display.js +66 -0
  592. package/dist/modules/workflows/lib/ledger-entry-display.js.map +7 -0
  593. package/dist/modules/workflows/lib/ledger-schema-flatten.js +82 -0
  594. package/dist/modules/workflows/lib/ledger-schema-flatten.js.map +7 -0
  595. package/dist/modules/workflows/lib/metrics/definition-metrics.js +110 -0
  596. package/dist/modules/workflows/lib/metrics/definition-metrics.js.map +7 -0
  597. package/dist/modules/workflows/lib/metrics/metrics-display.js +26 -0
  598. package/dist/modules/workflows/lib/metrics/metrics-display.js.map +7 -0
  599. package/dist/modules/workflows/lib/metrics/rollup-schedule.js +7 -0
  600. package/dist/modules/workflows/lib/metrics/rollup-schedule.js.map +7 -0
  601. package/dist/modules/workflows/lib/metrics/rollup-service.js +160 -0
  602. package/dist/modules/workflows/lib/metrics/rollup-service.js.map +7 -0
  603. package/dist/modules/workflows/lib/node-config-summary.js +128 -0
  604. package/dist/modules/workflows/lib/node-config-summary.js.map +7 -0
  605. package/dist/modules/workflows/lib/node-geometry.js +53 -0
  606. package/dist/modules/workflows/lib/node-geometry.js.map +7 -0
  607. package/dist/modules/workflows/lib/node-nudge.js +44 -0
  608. package/dist/modules/workflows/lib/node-nudge.js.map +7 -0
  609. package/dist/modules/workflows/lib/node-outcome-rows.js +88 -0
  610. package/dist/modules/workflows/lib/node-outcome-rows.js.map +7 -0
  611. package/dist/modules/workflows/lib/node-placement.js +55 -0
  612. package/dist/modules/workflows/lib/node-placement.js.map +7 -0
  613. package/dist/modules/workflows/lib/node-type-icons.js +54 -13
  614. package/dist/modules/workflows/lib/node-type-icons.js.map +2 -2
  615. package/dist/modules/workflows/lib/nodeFormTransforms.js +329 -19
  616. package/dist/modules/workflows/lib/nodeFormTransforms.js.map +2 -2
  617. package/dist/modules/workflows/lib/outcome-routing.js +158 -0
  618. package/dist/modules/workflows/lib/outcome-routing.js.map +7 -0
  619. package/dist/modules/workflows/lib/owned-definition.js +107 -0
  620. package/dist/modules/workflows/lib/owned-definition.js.map +7 -0
  621. package/dist/modules/workflows/lib/owned-node-changes.js +10 -0
  622. package/dist/modules/workflows/lib/owned-node-changes.js.map +7 -0
  623. package/dist/modules/workflows/lib/palette-drag.js +36 -0
  624. package/dist/modules/workflows/lib/palette-drag.js.map +7 -0
  625. package/dist/modules/workflows/lib/palette-drop.js +45 -0
  626. package/dist/modules/workflows/lib/palette-drop.js.map +7 -0
  627. package/dist/modules/workflows/lib/parallel-handler.js +57 -2
  628. package/dist/modules/workflows/lib/parallel-handler.js.map +2 -2
  629. package/dist/modules/workflows/lib/port-contract.js +54 -0
  630. package/dist/modules/workflows/lib/port-contract.js.map +7 -0
  631. package/dist/modules/workflows/lib/portal-task-access.js +89 -0
  632. package/dist/modules/workflows/lib/portal-task-access.js.map +7 -0
  633. package/dist/modules/workflows/lib/rerun-from-step.js +65 -0
  634. package/dist/modules/workflows/lib/rerun-from-step.js.map +7 -0
  635. package/dist/modules/workflows/lib/route-chip-events.js +23 -0
  636. package/dist/modules/workflows/lib/route-chip-events.js.map +7 -0
  637. package/dist/modules/workflows/lib/route-chips.js +91 -0
  638. package/dist/modules/workflows/lib/route-chips.js.map +7 -0
  639. package/dist/modules/workflows/lib/route-edge.js +17 -0
  640. package/dist/modules/workflows/lib/route-edge.js.map +7 -0
  641. package/dist/modules/workflows/lib/route-kinds.js +67 -0
  642. package/dist/modules/workflows/lib/route-kinds.js.map +7 -0
  643. package/dist/modules/workflows/lib/route-priority.js +104 -0
  644. package/dist/modules/workflows/lib/route-priority.js.map +7 -0
  645. package/dist/modules/workflows/lib/run-duration.js +44 -0
  646. package/dist/modules/workflows/lib/run-duration.js.map +7 -0
  647. package/dist/modules/workflows/lib/run-event-tone.js +25 -0
  648. package/dist/modules/workflows/lib/run-event-tone.js.map +7 -0
  649. package/dist/modules/workflows/lib/run-execution.js +305 -0
  650. package/dist/modules/workflows/lib/run-execution.js.map +7 -0
  651. package/dist/modules/workflows/lib/run-gantt.js +180 -0
  652. package/dist/modules/workflows/lib/run-gantt.js.map +7 -0
  653. package/dist/modules/workflows/lib/run-outcome-evidence.js +33 -0
  654. package/dist/modules/workflows/lib/run-outcome-evidence.js.map +7 -0
  655. package/dist/modules/workflows/lib/run-outcome.js +48 -0
  656. package/dist/modules/workflows/lib/run-outcome.js.map +7 -0
  657. package/dist/modules/workflows/lib/sample-resolver.js +71 -0
  658. package/dist/modules/workflows/lib/sample-resolver.js.map +7 -0
  659. package/dist/modules/workflows/lib/seeds.js +1 -1
  660. package/dist/modules/workflows/lib/seeds.js.map +2 -2
  661. package/dist/modules/workflows/lib/server-output-contract.js +65 -0
  662. package/dist/modules/workflows/lib/server-output-contract.js.map +7 -0
  663. package/dist/modules/workflows/lib/set-variable.js +47 -0
  664. package/dist/modules/workflows/lib/set-variable.js.map +7 -0
  665. package/dist/modules/workflows/lib/signal-handler.js +63 -4
  666. package/dist/modules/workflows/lib/signal-handler.js.map +2 -2
  667. package/dist/modules/workflows/lib/start-fixtures.js +42 -0
  668. package/dist/modules/workflows/lib/start-fixtures.js.map +7 -0
  669. package/dist/modules/workflows/lib/status-colors.js +153 -22
  670. package/dist/modules/workflows/lib/status-colors.js.map +2 -2
  671. package/dist/modules/workflows/lib/step-handler.js +529 -53
  672. package/dist/modules/workflows/lib/step-handler.js.map +3 -3
  673. package/dist/modules/workflows/lib/step-presentation.js +147 -0
  674. package/dist/modules/workflows/lib/step-presentation.js.map +7 -0
  675. package/dist/modules/workflows/lib/step-through.js +26 -0
  676. package/dist/modules/workflows/lib/step-through.js.map +7 -0
  677. package/dist/modules/workflows/lib/step-type-conversion.js +167 -0
  678. package/dist/modules/workflows/lib/step-type-conversion.js.map +7 -0
  679. package/dist/modules/workflows/lib/subgraph-clipboard.js +114 -0
  680. package/dist/modules/workflows/lib/subgraph-clipboard.js.map +7 -0
  681. package/dist/modules/workflows/lib/task-decision-context.js +38 -0
  682. package/dist/modules/workflows/lib/task-decision-context.js.map +7 -0
  683. package/dist/modules/workflows/lib/task-decisions.js +49 -0
  684. package/dist/modules/workflows/lib/task-decisions.js.map +7 -0
  685. package/dist/modules/workflows/lib/task-entity-access.js +62 -0
  686. package/dist/modules/workflows/lib/task-entity-access.js.map +7 -0
  687. package/dist/modules/workflows/lib/task-entity-aliases.js +39 -0
  688. package/dist/modules/workflows/lib/task-entity-aliases.js.map +7 -0
  689. package/dist/modules/workflows/lib/task-entity-types.js +36 -0
  690. package/dist/modules/workflows/lib/task-entity-types.js.map +7 -0
  691. package/dist/modules/workflows/lib/task-form-registry.js +33 -0
  692. package/dist/modules/workflows/lib/task-form-registry.js.map +7 -0
  693. package/dist/modules/workflows/lib/task-form-schema.js +75 -0
  694. package/dist/modules/workflows/lib/task-form-schema.js.map +7 -0
  695. package/dist/modules/workflows/lib/task-handler.js +251 -32
  696. package/dist/modules/workflows/lib/task-handler.js.map +2 -2
  697. package/dist/modules/workflows/lib/task-inspector-config.js +182 -0
  698. package/dist/modules/workflows/lib/task-inspector-config.js.map +7 -0
  699. package/dist/modules/workflows/lib/task-list-query.js +19 -0
  700. package/dist/modules/workflows/lib/task-list-query.js.map +7 -0
  701. package/dist/modules/workflows/lib/task-notifications.js +119 -0
  702. package/dist/modules/workflows/lib/task-notifications.js.map +7 -0
  703. package/dist/modules/workflows/lib/task-permission-settings.js +43 -0
  704. package/dist/modules/workflows/lib/task-permission-settings.js.map +7 -0
  705. package/dist/modules/workflows/lib/task-presets.js +35 -0
  706. package/dist/modules/workflows/lib/task-presets.js.map +7 -0
  707. package/dist/modules/workflows/lib/task-quick-action.js +45 -0
  708. package/dist/modules/workflows/lib/task-quick-action.js.map +7 -0
  709. package/dist/modules/workflows/lib/task-resolution.js +120 -0
  710. package/dist/modules/workflows/lib/task-resolution.js.map +7 -0
  711. package/dist/modules/workflows/lib/task-sla.js +357 -0
  712. package/dist/modules/workflows/lib/task-sla.js.map +7 -0
  713. package/dist/modules/workflows/lib/task-visibility-request.js +266 -0
  714. package/dist/modules/workflows/lib/task-visibility-request.js.map +7 -0
  715. package/dist/modules/workflows/lib/task-visibility.js +194 -0
  716. package/dist/modules/workflows/lib/task-visibility.js.map +7 -0
  717. package/dist/modules/workflows/lib/timer-handler.js +3 -1
  718. package/dist/modules/workflows/lib/timer-handler.js.map +2 -2
  719. package/dist/modules/workflows/lib/transition-handler.js +148 -20
  720. package/dist/modules/workflows/lib/transition-handler.js.map +2 -2
  721. package/dist/modules/workflows/lib/trigger-node.js +121 -0
  722. package/dist/modules/workflows/lib/trigger-node.js.map +7 -0
  723. package/dist/modules/workflows/lib/visual-editor-navigation.js +14 -0
  724. package/dist/modules/workflows/lib/visual-editor-navigation.js.map +7 -0
  725. package/dist/modules/workflows/lib/work-inbox/empty-state.js +52 -0
  726. package/dist/modules/workflows/lib/work-inbox/empty-state.js.map +7 -0
  727. package/dist/modules/workflows/lib/work-inbox/entity-links.js +63 -0
  728. package/dist/modules/workflows/lib/work-inbox/entity-links.js.map +7 -0
  729. package/dist/modules/workflows/lib/work-inbox/navigation.js +11 -0
  730. package/dist/modules/workflows/lib/work-inbox/navigation.js.map +7 -0
  731. package/dist/modules/workflows/lib/work-inbox/presentation.js +90 -0
  732. package/dist/modules/workflows/lib/work-inbox/presentation.js.map +7 -0
  733. package/dist/modules/workflows/lib/work-inbox/provider.js +118 -0
  734. package/dist/modules/workflows/lib/work-inbox/provider.js.map +7 -0
  735. package/dist/modules/workflows/lib/work-inbox/query.js +70 -0
  736. package/dist/modules/workflows/lib/work-inbox/query.js.map +7 -0
  737. package/dist/modules/workflows/lib/work-inbox/service.js +56 -0
  738. package/dist/modules/workflows/lib/work-inbox/service.js.map +7 -0
  739. package/dist/modules/workflows/lib/work-inbox/user-task-source.js +149 -0
  740. package/dist/modules/workflows/lib/work-inbox/user-task-source.js.map +7 -0
  741. package/dist/modules/workflows/lib/workflow-command-enablement.js +57 -0
  742. package/dist/modules/workflows/lib/workflow-command-enablement.js.map +7 -0
  743. package/dist/modules/workflows/lib/workflow-command-settings.js +54 -0
  744. package/dist/modules/workflows/lib/workflow-command-settings.js.map +7 -0
  745. package/dist/modules/workflows/lib/workflow-executor.js +658 -6
  746. package/dist/modules/workflows/lib/workflow-executor.js.map +2 -2
  747. package/dist/modules/workflows/lib/workflow-function-registry.js +40 -0
  748. package/dist/modules/workflows/lib/workflow-function-registry.js.map +7 -0
  749. package/dist/modules/workflows/lib/workflow-safe-commands.js +11 -1
  750. package/dist/modules/workflows/lib/workflow-safe-commands.js.map +2 -2
  751. package/dist/modules/workflows/lib/workflow-templates.js +69 -0
  752. package/dist/modules/workflows/lib/workflow-templates.js.map +7 -0
  753. package/dist/modules/workflows/migrations/Migration20260626214855_workflows.js +15 -0
  754. package/dist/modules/workflows/migrations/Migration20260626214855_workflows.js.map +7 -0
  755. package/dist/modules/workflows/migrations/Migration20260626222424_workflows.js +17 -0
  756. package/dist/modules/workflows/migrations/Migration20260626222424_workflows.js.map +7 -0
  757. package/dist/modules/workflows/migrations/Migration20260727074335_workflows.js +15 -0
  758. package/dist/modules/workflows/migrations/Migration20260727074335_workflows.js.map +7 -0
  759. package/dist/modules/workflows/migrations/Migration20260728104038_workflows.js +13 -0
  760. package/dist/modules/workflows/migrations/Migration20260728104038_workflows.js.map +7 -0
  761. package/dist/modules/workflows/migrations/Migration20260728163001_workflows.js +15 -0
  762. package/dist/modules/workflows/migrations/Migration20260728163001_workflows.js.map +7 -0
  763. package/dist/modules/workflows/migrations/Migration20260729061736_workflows.js +13 -0
  764. package/dist/modules/workflows/migrations/Migration20260729061736_workflows.js.map +7 -0
  765. package/dist/modules/workflows/migrations/Migration20260729192652_workflows.js +12 -0
  766. package/dist/modules/workflows/migrations/Migration20260729192652_workflows.js.map +7 -0
  767. package/dist/modules/workflows/migrations/Migration20260730085000_workflows.js +13 -0
  768. package/dist/modules/workflows/migrations/Migration20260730085000_workflows.js.map +7 -0
  769. package/dist/modules/workflows/migrations/Migration20260730092706_workflows.js +13 -0
  770. package/dist/modules/workflows/migrations/Migration20260730092706_workflows.js.map +7 -0
  771. package/dist/modules/workflows/notifications.js +38 -10
  772. package/dist/modules/workflows/notifications.js.map +2 -2
  773. package/dist/modules/workflows/setup.js +81 -1
  774. package/dist/modules/workflows/setup.js.map +2 -2
  775. package/dist/modules/workflows/subscribers/task-assigned-notification.js +19 -27
  776. package/dist/modules/workflows/subscribers/task-assigned-notification.js.map +2 -2
  777. package/dist/modules/workflows/subscribers/task-deadline-breached-notification.js +24 -0
  778. package/dist/modules/workflows/subscribers/task-deadline-breached-notification.js.map +7 -0
  779. package/dist/modules/workflows/subscribers/task-reminder-notification.js +24 -0
  780. package/dist/modules/workflows/subscribers/task-reminder-notification.js.map +7 -0
  781. package/dist/modules/workflows/widgets/injection/pending-work/widget.client.js +73 -0
  782. package/dist/modules/workflows/widgets/injection/pending-work/widget.client.js.map +7 -0
  783. package/dist/modules/workflows/widgets/injection/pending-work/widget.js +17 -0
  784. package/dist/modules/workflows/widgets/injection/pending-work/widget.js.map +7 -0
  785. package/dist/modules/workflows/widgets/injection-table.js +26 -0
  786. package/dist/modules/workflows/widgets/injection-table.js.map +2 -2
  787. package/dist/modules/workflows/workers/workflow-activities.worker.js +61 -39
  788. package/dist/modules/workflows/workers/workflow-activities.worker.js.map +2 -2
  789. package/dist/modules/workflows/workers/workflow-definition-metric-rollup.worker.js +40 -0
  790. package/dist/modules/workflows/workers/workflow-definition-metric-rollup.worker.js.map +7 -0
  791. package/dist/modules/workflows/workers/workflow-instance-bulk-replay.js +43 -0
  792. package/dist/modules/workflows/workers/workflow-instance-bulk-replay.js.map +7 -0
  793. package/dist/modules/workflows/workers/workflow-invoke-agent.worker.js +30 -0
  794. package/dist/modules/workflows/workers/workflow-invoke-agent.worker.js.map +7 -0
  795. package/generated/entities/action_log/index.ts +1 -0
  796. package/generated/entities/user/index.ts +1 -0
  797. package/generated/entities/user_task/index.ts +7 -0
  798. package/generated/entities/workflow_definition/index.ts +3 -0
  799. package/generated/entities/workflow_definition_draft/index.ts +11 -0
  800. package/generated/entities/workflow_definition_metric_rollup/index.ts +10 -0
  801. package/generated/entities/workflow_instance/index.ts +2 -0
  802. package/generated/entities.ids.generated.ts +4 -1
  803. package/generated/entity-fields-registry.ts +39 -0
  804. package/jest.setup.ts +13 -0
  805. package/package.json +8 -7
  806. package/src/helpers/integration/workflowsFixtures.ts +765 -5
  807. package/src/helpers/integration/workflowsUi.ts +318 -0
  808. package/src/modules/attachments/lib/createFromBuffer.ts +120 -0
  809. package/src/modules/audit_logs/data/entities.ts +12 -0
  810. package/src/modules/audit_logs/data/validators.ts +1 -0
  811. package/src/modules/audit_logs/lib/projections.ts +5 -1
  812. package/src/modules/audit_logs/migrations/.snapshot-open-mercato.json +26 -0
  813. package/src/modules/audit_logs/migrations/Migration20260625120000.ts +15 -0
  814. package/src/modules/audit_logs/services/actionLogService.ts +3 -0
  815. package/src/modules/auth/data/entities.ts +21 -0
  816. package/src/modules/auth/i18n/de.json +31 -0
  817. package/src/modules/auth/i18n/en.json +31 -0
  818. package/src/modules/auth/i18n/es.json +31 -0
  819. package/src/modules/auth/i18n/ko.json +31 -0
  820. package/src/modules/auth/i18n/pl.json +31 -0
  821. package/src/modules/auth/lib/executionPrincipal.ts +235 -0
  822. package/src/modules/auth/migrations/.snapshot-open-mercato.json +16 -0
  823. package/src/modules/auth/migrations/Migration20260625050000.ts +21 -0
  824. package/src/modules/business_rules/components/InlineRuleEditor.tsx +231 -0
  825. package/src/modules/business_rules/data/validators.ts +6 -0
  826. package/src/modules/business_rules/i18n/de.json +4 -0
  827. package/src/modules/business_rules/i18n/en.json +4 -0
  828. package/src/modules/business_rules/i18n/es.json +4 -0
  829. package/src/modules/business_rules/i18n/ko.json +4 -0
  830. package/src/modules/business_rules/i18n/pl.json +4 -0
  831. package/src/modules/business_rules/lib/rule-engine.ts +15 -1
  832. package/src/modules/catalog/commands/products.ts +12 -0
  833. package/src/modules/catalog/i18n/de.json +1 -0
  834. package/src/modules/catalog/i18n/en.json +1 -0
  835. package/src/modules/catalog/i18n/es.json +1 -0
  836. package/src/modules/catalog/i18n/ko.json +1 -0
  837. package/src/modules/catalog/i18n/pl.json +1 -0
  838. package/src/modules/catalog/workflows.ts +35 -0
  839. package/src/modules/customer_accounts/AGENTS.md +11 -0
  840. package/src/modules/customer_accounts/backend/customer_accounts/roles/[id]/page.tsx +2 -0
  841. package/src/modules/customer_accounts/cli.ts +96 -0
  842. package/src/modules/customer_accounts/i18n/de.json +5 -0
  843. package/src/modules/customer_accounts/i18n/en.json +5 -0
  844. package/src/modules/customer_accounts/i18n/es.json +5 -0
  845. package/src/modules/customer_accounts/i18n/ko.json +5 -0
  846. package/src/modules/customer_accounts/i18n/pl.json +5 -0
  847. package/src/modules/customer_accounts/lib/customerRoleAclSync.ts +92 -0
  848. package/src/modules/customer_accounts/setup.ts +15 -3
  849. package/src/modules/customers/commands/deals.ts +5 -0
  850. package/src/modules/customers/components/detail/ChangelogEntryRow.tsx +4 -2
  851. package/src/modules/customers/components/detail/utils.ts +2 -0
  852. package/src/modules/customers/events.ts +21 -3
  853. package/src/modules/customers/i18n/de.json +4 -0
  854. package/src/modules/customers/i18n/en.json +4 -0
  855. package/src/modules/customers/i18n/es.json +4 -0
  856. package/src/modules/customers/i18n/ko.json +4 -0
  857. package/src/modules/customers/i18n/pl.json +4 -0
  858. package/src/modules/customers/lib/link-workflow-task-handler.ts +136 -0
  859. package/src/modules/customers/lib/todoCompatibility.ts +4 -1
  860. package/src/modules/customers/lib/workflowTaskLink.ts +23 -0
  861. package/src/modules/customers/subscribers/link-workflow-task.ts +19 -0
  862. package/src/modules/customers/workflows.ts +57 -0
  863. package/src/modules/entities/api/records.ts +18 -62
  864. package/src/modules/entities/lib/entityClassification.ts +102 -0
  865. package/src/modules/sales/commands/documents.ts +46 -0
  866. package/src/modules/sales/events.ts +20 -2
  867. package/src/modules/sales/i18n/de.json +2 -1
  868. package/src/modules/sales/i18n/en.json +2 -1
  869. package/src/modules/sales/i18n/es.json +2 -1
  870. package/src/modules/sales/i18n/ko.json +2 -1
  871. package/src/modules/sales/i18n/pl.json +2 -1
  872. package/src/modules/sales/workflows.ts +12 -1
  873. package/src/modules/seeds/README.md +86 -0
  874. package/src/modules/seeds/cli.ts +220 -0
  875. package/src/modules/seeds/examples/sample-seed.json +26 -0
  876. package/src/modules/seeds/index.ts +11 -0
  877. package/src/modules/workflows/AGENTS.md +851 -10
  878. package/src/modules/workflows/acl.ts +96 -0
  879. package/src/modules/workflows/ai-agents.ts +80 -0
  880. package/src/modules/workflows/ai-tools/authoring-pack.ts +798 -0
  881. package/src/modules/workflows/ai-tools/types.ts +117 -0
  882. package/src/modules/workflows/ai-tools.ts +20 -0
  883. package/src/modules/workflows/api/command-settings/route.ts +171 -0
  884. package/src/modules/workflows/api/commands/route.ts +109 -0
  885. package/src/modules/workflows/api/definitions/[id]/callers/route.ts +95 -0
  886. package/src/modules/workflows/api/definitions/[id]/context-schema/route.ts +187 -0
  887. package/src/modules/workflows/api/definitions/[id]/customize/route.ts +6 -1
  888. package/src/modules/workflows/api/definitions/[id]/draft/route.ts +395 -0
  889. package/src/modules/workflows/api/definitions/[id]/publish/route.ts +250 -0
  890. package/src/modules/workflows/api/definitions/[id]/reset-to-code/route.ts +5 -0
  891. package/src/modules/workflows/api/definitions/[id]/route.ts +107 -7
  892. package/src/modules/workflows/api/definitions/[id]/test-step/route.ts +288 -0
  893. package/src/modules/workflows/api/definitions/generate/route.ts +335 -0
  894. package/src/modules/workflows/api/definitions/route.ts +88 -113
  895. package/src/modules/workflows/api/definitions/serialize.ts +9 -0
  896. package/src/modules/workflows/api/endpoints/route.ts +88 -0
  897. package/src/modules/workflows/api/functions/route.ts +91 -0
  898. package/src/modules/workflows/api/grantable-features/route.ts +102 -0
  899. package/src/modules/workflows/api/instances/[id]/context/route.ts +214 -0
  900. package/src/modules/workflows/api/instances/[id]/rerun-step/route.ts +226 -0
  901. package/src/modules/workflows/api/instances/[id]/retry/route.ts +18 -2
  902. package/src/modules/workflows/api/instances/[id]/step-through/route.ts +195 -0
  903. package/src/modules/workflows/api/instances/[id]/steps/route.ts +160 -0
  904. package/src/modules/workflows/api/instances/[id]/would-do/route.ts +216 -0
  905. package/src/modules/workflows/api/instances/bulk-replay/route.ts +141 -0
  906. package/src/modules/workflows/api/instances/failure-queue/route.ts +197 -0
  907. package/src/modules/workflows/api/instances/route.ts +135 -3
  908. package/src/modules/workflows/api/metrics/definitions/route.ts +262 -0
  909. package/src/modules/workflows/api/openapi.ts +549 -2
  910. package/src/modules/workflows/api/portal/tasks/[id]/complete/route.ts +160 -0
  911. package/src/modules/workflows/api/portal/tasks/[id]/route.ts +124 -0
  912. package/src/modules/workflows/api/portal/tasks/route.ts +157 -0
  913. package/src/modules/workflows/api/rule-usage/route.ts +94 -0
  914. package/src/modules/workflows/api/task-settings/route.ts +138 -0
  915. package/src/modules/workflows/api/tasks/[id]/claim/route.ts +42 -17
  916. package/src/modules/workflows/api/tasks/[id]/complete/route.ts +47 -15
  917. package/src/modules/workflows/api/tasks/[id]/reassign/route.ts +197 -0
  918. package/src/modules/workflows/api/tasks/[id]/route.ts +57 -6
  919. package/src/modules/workflows/api/tasks/[id]/unclaim/route.ts +132 -0
  920. package/src/modules/workflows/api/tasks/route.ts +60 -5
  921. package/src/modules/workflows/api/tasks/serialize.ts +119 -0
  922. package/src/modules/workflows/api/templates/route.ts +87 -0
  923. package/src/modules/workflows/api/work-inbox/next/route.ts +170 -0
  924. package/src/modules/workflows/api/work-inbox/route.ts +153 -0
  925. package/src/modules/workflows/backend/config/workflows/page.meta.ts +33 -0
  926. package/src/modules/workflows/backend/config/workflows/page.tsx +12 -0
  927. package/src/modules/workflows/backend/definitions/[id]/page.tsx +19 -343
  928. package/src/modules/workflows/backend/definitions/create/page.meta.ts +1 -1
  929. package/src/modules/workflows/backend/definitions/create/page.tsx +19 -59
  930. package/src/modules/workflows/backend/definitions/page.tsx +156 -76
  931. package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +3129 -584
  932. package/src/modules/workflows/backend/instances/[id]/page.meta.ts +1 -1
  933. package/src/modules/workflows/backend/instances/[id]/page.tsx +711 -539
  934. package/src/modules/workflows/backend/instances/failure-queue/page.meta.ts +16 -0
  935. package/src/modules/workflows/backend/instances/failure-queue/page.tsx +311 -0
  936. package/src/modules/workflows/backend/instances/page.meta.ts +1 -1
  937. package/src/modules/workflows/backend/instances/page.tsx +218 -38
  938. package/src/modules/workflows/backend/tasks/[id]/page.tsx +639 -400
  939. package/src/modules/workflows/backend/tasks/page.meta.ts +7 -0
  940. package/src/modules/workflows/backend/tasks/page.tsx +20 -333
  941. package/src/modules/workflows/backend/work-inbox/page.meta.ts +15 -0
  942. package/src/modules/workflows/backend/work-inbox/page.tsx +506 -0
  943. package/src/modules/workflows/cli.ts +1 -1
  944. package/src/modules/workflows/commands/tasks.ts +146 -0
  945. package/src/modules/workflows/components/ActivitiesEditor.tsx +91 -114
  946. package/src/modules/workflows/components/ActivityEditDialog.tsx +244 -0
  947. package/src/modules/workflows/components/AgentSelector.tsx +200 -0
  948. package/src/modules/workflows/components/AnnotationEditDialog.tsx +157 -0
  949. package/src/modules/workflows/components/BusinessRuleUsagePanel.tsx +106 -0
  950. package/src/modules/workflows/components/BusinessRulesSelector.tsx +71 -17
  951. package/src/modules/workflows/components/ConfigJsonTextarea.tsx +111 -0
  952. package/src/modules/workflows/components/ContextSchemaEditor.tsx +165 -0
  953. package/src/modules/workflows/components/DefinitionErrorHandlerField.tsx +133 -0
  954. package/src/modules/workflows/components/DefinitionMetadataDrawer.tsx +456 -0
  955. package/src/modules/workflows/components/DefinitionMetricsCells.tsx +212 -0
  956. package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +196 -95
  957. package/src/modules/workflows/components/EdgeEditDialog.tsx +15 -16
  958. package/src/modules/workflows/components/EdgeEditDialogCrudForm.tsx +130 -80
  959. package/src/modules/workflows/components/InputDataPanel.tsx +177 -0
  960. package/src/modules/workflows/components/InspectorPanel.tsx +250 -0
  961. package/src/modules/workflows/components/NodeEditDialog.tsx +444 -38
  962. package/src/modules/workflows/components/NodeEditDialogCrudForm.tsx +848 -178
  963. package/src/modules/workflows/components/StepsEditor.tsx +9 -2
  964. package/src/modules/workflows/components/TemplateGalleryDialog.tsx +205 -0
  965. package/src/modules/workflows/components/TransitionsEditor.tsx +98 -89
  966. package/src/modules/workflows/components/TriggersDialog.tsx +83 -0
  967. package/src/modules/workflows/components/TriggersEditor.tsx +363 -0
  968. package/src/modules/workflows/components/WorkflowAiDraftDialog.tsx +383 -0
  969. package/src/modules/workflows/components/WorkflowCodeView.tsx +257 -0
  970. package/src/modules/workflows/components/WorkflowCommandPalette.tsx +82 -0
  971. package/src/modules/workflows/components/WorkflowCompensationGhostEdge.tsx +78 -0
  972. package/src/modules/workflows/components/WorkflowDataMappingEdge.tsx +46 -0
  973. package/src/modules/workflows/components/WorkflowGraph.tsx +54 -1
  974. package/src/modules/workflows/components/WorkflowGraphImpl.tsx +463 -37
  975. package/src/modules/workflows/components/WorkflowIconPicker.tsx +144 -0
  976. package/src/modules/workflows/components/WorkflowLegend.tsx +59 -33
  977. package/src/modules/workflows/components/WorkflowNodeCard.tsx +355 -28
  978. package/src/modules/workflows/components/WorkflowRouteChips.tsx +145 -0
  979. package/src/modules/workflows/components/WorkflowSelector.tsx +33 -14
  980. package/src/modules/workflows/components/WorkflowTransitionEdge.tsx +83 -10
  981. package/src/modules/workflows/components/WorkflowTransitionLabel.tsx +13 -2
  982. package/src/modules/workflows/components/fields/ActivityArrayEditor.tsx +120 -30
  983. package/src/modules/workflows/components/fields/ActivityConfigFields.tsx +675 -0
  984. package/src/modules/workflows/components/fields/ActivityTestPanel.tsx +250 -0
  985. package/src/modules/workflows/components/fields/AgentInvokeConfigField.tsx +580 -0
  986. package/src/modules/workflows/components/fields/AgentReviewOnBreachField.tsx +88 -0
  987. package/src/modules/workflows/components/fields/BranchingRoutesEditor.tsx +323 -0
  988. package/src/modules/workflows/components/fields/BusinessRuleConditionsEditor.tsx +36 -4
  989. package/src/modules/workflows/components/fields/CommandPicker.tsx +158 -0
  990. package/src/modules/workflows/components/fields/EndpointPicker.tsx +330 -0
  991. package/src/modules/workflows/components/fields/FormFieldArrayEditor.tsx +2 -2
  992. package/src/modules/workflows/components/fields/FunctionPicker.tsx +68 -0
  993. package/src/modules/workflows/components/fields/MappingArrayEditor.tsx +46 -12
  994. package/src/modules/workflows/components/fields/PortFieldArrayEditor.tsx +255 -0
  995. package/src/modules/workflows/components/fields/RolesMultiSelect.tsx +68 -0
  996. package/src/modules/workflows/components/fields/RouteOrderEditor.tsx +169 -0
  997. package/src/modules/workflows/components/fields/SchemaBuilderDialog.tsx +139 -0
  998. package/src/modules/workflows/components/fields/StartPreConditionsEditor.tsx +2 -2
  999. package/src/modules/workflows/components/fields/TaskAssignmentField.tsx +355 -0
  1000. package/src/modules/workflows/components/fields/TaskDeadlineFields.tsx +172 -0
  1001. package/src/modules/workflows/components/fields/TaskDecisionsField.tsx +294 -0
  1002. package/src/modules/workflows/components/fields/TaskEntityBindingsField.tsx +156 -0
  1003. package/src/modules/workflows/components/fields/TemplateTextControl.tsx +85 -0
  1004. package/src/modules/workflows/components/fields/VariablePickerButton.tsx +177 -0
  1005. package/src/modules/workflows/components/fields/ledgerDropTarget.ts +55 -0
  1006. package/src/modules/workflows/components/fields/useActivityTypeOptions.ts +19 -0
  1007. package/src/modules/workflows/components/formConfig.tsx +84 -10
  1008. package/src/modules/workflows/components/mobile/MobileDefinitionDetail.tsx +5 -0
  1009. package/src/modules/workflows/components/mobile/MobileMetadataSheet.tsx +10 -0
  1010. package/src/modules/workflows/components/mobile/MobileTaskForm.tsx +55 -19
  1011. package/src/modules/workflows/components/mobile/MobileVisualEditor.tsx +49 -40
  1012. package/src/modules/workflows/components/nodes/AnnotationGroupNode.tsx +81 -0
  1013. package/src/modules/workflows/components/nodes/AutomatedNode.tsx +34 -17
  1014. package/src/modules/workflows/components/nodes/EndNode.tsx +15 -14
  1015. package/src/modules/workflows/components/nodes/ErrorOutputHandle.tsx +32 -0
  1016. package/src/modules/workflows/components/nodes/IfElseNode.tsx +64 -0
  1017. package/src/modules/workflows/components/nodes/InvokeAgentNode.tsx +180 -0
  1018. package/src/modules/workflows/components/nodes/NodeOutcomeRows.tsx +143 -0
  1019. package/src/modules/workflows/components/nodes/ParallelForkNode.tsx +28 -15
  1020. package/src/modules/workflows/components/nodes/ParallelJoinNode.tsx +28 -15
  1021. package/src/modules/workflows/components/nodes/StartNode.tsx +78 -18
  1022. package/src/modules/workflows/components/nodes/StickyNoteNode.tsx +65 -0
  1023. package/src/modules/workflows/components/nodes/SubWorkflowNode.tsx +124 -23
  1024. package/src/modules/workflows/components/nodes/SwitchNode.tsx +64 -0
  1025. package/src/modules/workflows/components/nodes/TriggerCap.tsx +103 -0
  1026. package/src/modules/workflows/components/nodes/TriggerNode.tsx +151 -0
  1027. package/src/modules/workflows/components/nodes/UserTaskNode.tsx +67 -22
  1028. package/src/modules/workflows/components/nodes/WaitForConditionNode.tsx +74 -0
  1029. package/src/modules/workflows/components/nodes/WaitForSignalNode.tsx +31 -17
  1030. package/src/modules/workflows/components/nodes/WaitForTimerNode.tsx +31 -16
  1031. package/src/modules/workflows/components/nodes/index.ts +17 -0
  1032. package/src/modules/workflows/components/portal/PortalTaskForm.tsx +280 -0
  1033. package/src/modules/workflows/components/run/AgentActivityPanel.tsx +48 -0
  1034. package/src/modules/workflows/components/run/RerunStepDialog.tsx +133 -0
  1035. package/src/modules/workflows/components/run/RunEventBadge.tsx +37 -0
  1036. package/src/modules/workflows/components/run/RunGantt.tsx +180 -0
  1037. package/src/modules/workflows/components/run/RunStatusBadge.tsx +112 -0
  1038. package/src/modules/workflows/components/run/RunStepInspector.tsx +176 -0
  1039. package/src/modules/workflows/components/run/WouldDoReport.tsx +93 -0
  1040. package/src/modules/workflows/components/run/useAgentLabels.ts +42 -0
  1041. package/src/modules/workflows/components/run/useLastRunOverlay.ts +150 -0
  1042. package/src/modules/workflows/components/run/useLiveAgentActions.ts +70 -0
  1043. package/src/modules/workflows/components/run/useLiveRunUpdates.ts +89 -0
  1044. package/src/modules/workflows/components/settings/CommandSettingsPageClient.tsx +228 -0
  1045. package/src/modules/workflows/components/work-inbox/EntityContextPanel.tsx +179 -0
  1046. package/src/modules/workflows/components/work-inbox/ReassignTaskDialog.tsx +203 -0
  1047. package/src/modules/workflows/components/work-inbox/StatusChip.tsx +61 -0
  1048. package/src/modules/workflows/components/work-inbox/TaskActionNotice.tsx +77 -0
  1049. package/src/modules/workflows/components/work-inbox/TaskFormFields.tsx +322 -0
  1050. package/src/modules/workflows/components/work-inbox/WorkInboxEmptyState.tsx +43 -0
  1051. package/src/modules/workflows/data/activity-config-schemas.ts +249 -0
  1052. package/src/modules/workflows/data/activity-config-warnings.ts +71 -0
  1053. package/src/modules/workflows/data/branching-route-warnings.ts +129 -0
  1054. package/src/modules/workflows/data/entities.ts +397 -4
  1055. package/src/modules/workflows/data/metrics-validators.ts +51 -0
  1056. package/src/modules/workflows/data/task-primitives.ts +36 -0
  1057. package/src/modules/workflows/data/types.ts +81 -2
  1058. package/src/modules/workflows/data/validators.ts +729 -60
  1059. package/src/modules/workflows/di.ts +22 -0
  1060. package/src/modules/workflows/events.ts +68 -8
  1061. package/src/modules/workflows/examples/oze-residential-install-60-nodes.json +1545 -0
  1062. package/src/modules/workflows/examples/sales-pipeline-definition.json +35 -35
  1063. package/src/modules/workflows/examples/templates/lead-to-install.json +160 -0
  1064. package/src/modules/workflows/examples/templates/order-approval.json +230 -0
  1065. package/src/modules/workflows/examples/templates/task-escalation.json +110 -0
  1066. package/src/modules/workflows/examples/templates/webhook-integration.json +113 -0
  1067. package/src/modules/workflows/extension-points.ts +1 -1
  1068. package/src/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.meta.ts +21 -0
  1069. package/src/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.tsx +212 -0
  1070. package/src/modules/workflows/frontend/[orgSlug]/portal/tasks/page.meta.ts +25 -0
  1071. package/src/modules/workflows/frontend/[orgSlug]/portal/tasks/page.tsx +185 -0
  1072. package/src/modules/workflows/i18n/de.json +1083 -24
  1073. package/src/modules/workflows/i18n/en.json +1081 -22
  1074. package/src/modules/workflows/i18n/es.json +1083 -24
  1075. package/src/modules/workflows/i18n/ko.json +1072 -13
  1076. package/src/modules/workflows/i18n/pl.json +1082 -23
  1077. package/src/modules/workflows/lib/activity-executor.ts +855 -186
  1078. package/src/modules/workflows/lib/activity-queue-types.ts +120 -1
  1079. package/src/modules/workflows/lib/activity-registry-bootstrap.ts +7 -0
  1080. package/src/modules/workflows/lib/activity-registry.ts +89 -0
  1081. package/src/modules/workflows/lib/activity-types.ts +415 -0
  1082. package/src/modules/workflows/lib/activity-worker-handler.ts +744 -35
  1083. package/src/modules/workflows/lib/advanced-config.ts +41 -0
  1084. package/src/modules/workflows/lib/agent-disposition-task.ts +343 -0
  1085. package/src/modules/workflows/lib/agent-outcome-paths.ts +153 -0
  1086. package/src/modules/workflows/lib/agent-result-mapping.ts +88 -0
  1087. package/src/modules/workflows/lib/agent-review-inspector.ts +125 -0
  1088. package/src/modules/workflows/lib/agent-review.ts +171 -0
  1089. package/src/modules/workflows/lib/ai-authoring.ts +402 -0
  1090. package/src/modules/workflows/lib/ai-draft-runner.ts +105 -0
  1091. package/src/modules/workflows/lib/annotation-events.ts +15 -0
  1092. package/src/modules/workflows/lib/branching-routes.ts +280 -0
  1093. package/src/modules/workflows/lib/breach-routing.ts +142 -0
  1094. package/src/modules/workflows/lib/bulk-replay.ts +185 -0
  1095. package/src/modules/workflows/lib/business-rule-usage.ts +154 -0
  1096. package/src/modules/workflows/lib/caller-graph.ts +104 -0
  1097. package/src/modules/workflows/lib/code-view-apply.ts +178 -0
  1098. package/src/modules/workflows/lib/collect-validation-issues.ts +239 -0
  1099. package/src/modules/workflows/lib/compensation-ghosts.ts +134 -0
  1100. package/src/modules/workflows/lib/component-guard.ts +13 -0
  1101. package/src/modules/workflows/lib/condition-handler.ts +658 -0
  1102. package/src/modules/workflows/lib/context-ledger.ts +814 -0
  1103. package/src/modules/workflows/lib/crud-form-dialogs-flag.ts +5 -0
  1104. package/src/modules/workflows/lib/data-edge-mapping.ts +112 -0
  1105. package/src/modules/workflows/lib/definition-context-schema.ts +103 -0
  1106. package/src/modules/workflows/lib/definition-edit-safety.ts +228 -0
  1107. package/src/modules/workflows/lib/definition-error-body.ts +43 -0
  1108. package/src/modules/workflows/lib/definition-evaluation.ts +156 -0
  1109. package/src/modules/workflows/lib/definition-grant.ts +211 -0
  1110. package/src/modules/workflows/lib/definition-json-locations.ts +226 -0
  1111. package/src/modules/workflows/lib/definition-payload.ts +81 -0
  1112. package/src/modules/workflows/lib/draft-restore.ts +72 -0
  1113. package/src/modules/workflows/lib/dry-run.ts +203 -0
  1114. package/src/modules/workflows/lib/duration.ts +138 -24
  1115. package/src/modules/workflows/lib/edge-reattachment.ts +186 -0
  1116. package/src/modules/workflows/lib/edgeFormTransforms.ts +15 -14
  1117. package/src/modules/workflows/lib/editor-annotations.ts +301 -0
  1118. package/src/modules/workflows/lib/editor-commands.ts +205 -0
  1119. package/src/modules/workflows/lib/editor-history.ts +151 -0
  1120. package/src/modules/workflows/lib/endpoint-catalog.ts +283 -0
  1121. package/src/modules/workflows/lib/endpoint-path.ts +134 -0
  1122. package/src/modules/workflows/lib/engine-version.ts +67 -0
  1123. package/src/modules/workflows/lib/error-handler.ts +192 -0
  1124. package/src/modules/workflows/lib/error-routing.ts +236 -0
  1125. package/src/modules/workflows/lib/event-logger.ts +27 -0
  1126. package/src/modules/workflows/lib/expression-refs.ts +291 -0
  1127. package/src/modules/workflows/lib/failure-grouping.ts +134 -0
  1128. package/src/modules/workflows/lib/find-definition.ts +4 -0
  1129. package/src/modules/workflows/lib/flow-logic-warnings.ts +591 -0
  1130. package/src/modules/workflows/lib/graph-utils.ts +620 -110
  1131. package/src/modules/workflows/lib/icon-search.ts +65 -0
  1132. package/src/modules/workflows/lib/insert-at-cursor.ts +53 -0
  1133. package/src/modules/workflows/lib/instance-date-filter.ts +56 -0
  1134. package/src/modules/workflows/lib/interpolation-pipeline.ts +351 -0
  1135. package/src/modules/workflows/lib/ledger-drag.ts +61 -0
  1136. package/src/modules/workflows/lib/ledger-entry-display.ts +89 -0
  1137. package/src/modules/workflows/lib/ledger-schema-flatten.ts +137 -0
  1138. package/src/modules/workflows/lib/metrics/definition-metrics.ts +268 -0
  1139. package/src/modules/workflows/lib/metrics/metrics-display.ts +57 -0
  1140. package/src/modules/workflows/lib/metrics/rollup-schedule.ts +26 -0
  1141. package/src/modules/workflows/lib/metrics/rollup-service.ts +292 -0
  1142. package/src/modules/workflows/lib/node-config-summary.ts +235 -0
  1143. package/src/modules/workflows/lib/node-geometry.ts +168 -0
  1144. package/src/modules/workflows/lib/node-nudge.ts +63 -0
  1145. package/src/modules/workflows/lib/node-outcome-rows.ts +195 -0
  1146. package/src/modules/workflows/lib/node-placement.ts +104 -0
  1147. package/src/modules/workflows/lib/node-type-icons.ts +71 -10
  1148. package/src/modules/workflows/lib/nodeFormTransforms.ts +519 -28
  1149. package/src/modules/workflows/lib/outcome-routing.ts +346 -0
  1150. package/src/modules/workflows/lib/owned-definition.ts +188 -0
  1151. package/src/modules/workflows/lib/owned-node-changes.ts +29 -0
  1152. package/src/modules/workflows/lib/palette-drag.ts +68 -0
  1153. package/src/modules/workflows/lib/palette-drop.ts +114 -0
  1154. package/src/modules/workflows/lib/parallel-handler.ts +79 -2
  1155. package/src/modules/workflows/lib/port-contract.ts +107 -0
  1156. package/src/modules/workflows/lib/portal-task-access.ts +220 -0
  1157. package/src/modules/workflows/lib/rerun-from-step.ts +140 -0
  1158. package/src/modules/workflows/lib/route-chip-events.ts +45 -0
  1159. package/src/modules/workflows/lib/route-chips.ts +177 -0
  1160. package/src/modules/workflows/lib/route-edge.ts +57 -0
  1161. package/src/modules/workflows/lib/route-kinds.ts +166 -0
  1162. package/src/modules/workflows/lib/route-priority.ts +197 -0
  1163. package/src/modules/workflows/lib/run-duration.ts +70 -0
  1164. package/src/modules/workflows/lib/run-event-tone.ts +46 -0
  1165. package/src/modules/workflows/lib/run-execution.ts +598 -0
  1166. package/src/modules/workflows/lib/run-gantt.ts +311 -0
  1167. package/src/modules/workflows/lib/run-outcome-evidence.ts +60 -0
  1168. package/src/modules/workflows/lib/run-outcome.ts +142 -0
  1169. package/src/modules/workflows/lib/sample-resolver.ts +113 -0
  1170. package/src/modules/workflows/lib/seeds.ts +3 -1
  1171. package/src/modules/workflows/lib/server-output-contract.ts +120 -0
  1172. package/src/modules/workflows/lib/set-variable.ts +94 -0
  1173. package/src/modules/workflows/lib/signal-handler.ts +134 -4
  1174. package/src/modules/workflows/lib/start-fixtures.ts +93 -0
  1175. package/src/modules/workflows/lib/status-colors.ts +220 -21
  1176. package/src/modules/workflows/lib/step-handler.ts +744 -68
  1177. package/src/modules/workflows/lib/step-presentation.ts +295 -0
  1178. package/src/modules/workflows/lib/step-through.ts +71 -0
  1179. package/src/modules/workflows/lib/step-type-conversion.ts +263 -0
  1180. package/src/modules/workflows/lib/subgraph-clipboard.ts +214 -0
  1181. package/src/modules/workflows/lib/task-decision-context.ts +76 -0
  1182. package/src/modules/workflows/lib/task-decisions.ts +117 -0
  1183. package/src/modules/workflows/lib/task-entity-access.ts +181 -0
  1184. package/src/modules/workflows/lib/task-entity-aliases.ts +77 -0
  1185. package/src/modules/workflows/lib/task-entity-types.ts +66 -0
  1186. package/src/modules/workflows/lib/task-form-registry.ts +123 -0
  1187. package/src/modules/workflows/lib/task-form-schema.ts +129 -0
  1188. package/src/modules/workflows/lib/task-handler.ts +492 -51
  1189. package/src/modules/workflows/lib/task-inspector-config.ts +348 -0
  1190. package/src/modules/workflows/lib/task-list-query.ts +46 -0
  1191. package/src/modules/workflows/lib/task-notifications.ts +218 -0
  1192. package/src/modules/workflows/lib/task-permission-settings.ts +117 -0
  1193. package/src/modules/workflows/lib/task-presets.ts +95 -0
  1194. package/src/modules/workflows/lib/task-quick-action.ts +111 -0
  1195. package/src/modules/workflows/lib/task-resolution.ts +270 -0
  1196. package/src/modules/workflows/lib/task-sla.ts +628 -0
  1197. package/src/modules/workflows/lib/task-visibility-request.ts +668 -0
  1198. package/src/modules/workflows/lib/task-visibility.ts +627 -0
  1199. package/src/modules/workflows/lib/timer-handler.ts +8 -1
  1200. package/src/modules/workflows/lib/transition-handler.ts +228 -20
  1201. package/src/modules/workflows/lib/trigger-node.ts +272 -0
  1202. package/src/modules/workflows/lib/visual-editor-navigation.ts +29 -0
  1203. package/src/modules/workflows/lib/work-inbox/empty-state.ts +150 -0
  1204. package/src/modules/workflows/lib/work-inbox/entity-links.ts +99 -0
  1205. package/src/modules/workflows/lib/work-inbox/navigation.ts +28 -0
  1206. package/src/modules/workflows/lib/work-inbox/presentation.ts +163 -0
  1207. package/src/modules/workflows/lib/work-inbox/provider.ts +390 -0
  1208. package/src/modules/workflows/lib/work-inbox/query.ts +103 -0
  1209. package/src/modules/workflows/lib/work-inbox/service.ts +122 -0
  1210. package/src/modules/workflows/lib/work-inbox/user-task-source.ts +240 -0
  1211. package/src/modules/workflows/lib/workflow-command-enablement.ts +188 -0
  1212. package/src/modules/workflows/lib/workflow-command-settings.ts +124 -0
  1213. package/src/modules/workflows/lib/workflow-executor.ts +1036 -10
  1214. package/src/modules/workflows/lib/workflow-function-registry.ts +44 -0
  1215. package/src/modules/workflows/lib/workflow-safe-commands.ts +42 -1
  1216. package/src/modules/workflows/lib/workflow-templates.ts +91 -0
  1217. package/src/modules/workflows/migrations/.snapshot-open-mercato.json +2321 -698
  1218. package/src/modules/workflows/migrations/Migration20260626214855_workflows.ts +15 -0
  1219. package/src/modules/workflows/migrations/Migration20260626222424_workflows.ts +17 -0
  1220. package/src/modules/workflows/migrations/Migration20260727074335_workflows.ts +15 -0
  1221. package/src/modules/workflows/migrations/Migration20260728104038_workflows.ts +13 -0
  1222. package/src/modules/workflows/migrations/Migration20260728163001_workflows.ts +36 -0
  1223. package/src/modules/workflows/migrations/Migration20260729061736_workflows.ts +13 -0
  1224. package/src/modules/workflows/migrations/Migration20260729192652_workflows.ts +11 -0
  1225. package/src/modules/workflows/migrations/Migration20260730085000_workflows.ts +13 -0
  1226. package/src/modules/workflows/migrations/Migration20260730092706_workflows.ts +13 -0
  1227. package/src/modules/workflows/notifications.ts +40 -10
  1228. package/src/modules/workflows/setup.ts +128 -0
  1229. package/src/modules/workflows/subscribers/task-assigned-notification.ts +36 -45
  1230. package/src/modules/workflows/subscribers/task-deadline-breached-notification.ts +31 -0
  1231. package/src/modules/workflows/subscribers/task-reminder-notification.ts +31 -0
  1232. package/src/modules/workflows/widgets/injection/pending-work/widget.client.tsx +119 -0
  1233. package/src/modules/workflows/widgets/injection/pending-work/widget.ts +27 -0
  1234. package/src/modules/workflows/widgets/injection-table.ts +52 -2
  1235. package/src/modules/workflows/workers/workflow-activities.worker.ts +95 -42
  1236. package/src/modules/workflows/workers/workflow-definition-metric-rollup.worker.ts +71 -0
  1237. package/src/modules/workflows/workers/workflow-instance-bulk-replay.ts +51 -0
  1238. package/src/modules/workflows/workers/workflow-invoke-agent.worker.ts +72 -0
@@ -0,0 +1,158 @@
1
+ import {
2
+ resolveStepFailureHandling
3
+ } from "./error-routing.js";
4
+ const OUTCOME_TRANSITION_KIND = "outcome";
5
+ const AGENT_OUTCOME_KINDS = [
6
+ "approved",
7
+ "researcher",
8
+ "rejected",
9
+ "guardrailBlocked",
10
+ "error"
11
+ ];
12
+ const OUTCOME_SOURCE_HANDLE_PREFIX = "outcome:";
13
+ const WORKFLOW_AGENT_OUTCOME_CONTEXT_KEY = "__agentOutcome";
14
+ function buildAgentOutcomeContextEntry(stepId, outcome, proposalId) {
15
+ return {
16
+ stepId,
17
+ outcome,
18
+ occurredAt: (/* @__PURE__ */ new Date()).toISOString(),
19
+ ...proposalId ? { proposalId } : {}
20
+ };
21
+ }
22
+ function isAgentOutcomeKind(value) {
23
+ return typeof value === "string" && AGENT_OUTCOME_KINDS.includes(value);
24
+ }
25
+ function outcomeSourceHandleId(outcome) {
26
+ return `${OUTCOME_SOURCE_HANDLE_PREFIX}${outcome}`;
27
+ }
28
+ function parseOutcomeSourceHandleId(handleId) {
29
+ if (typeof handleId !== "string" || !handleId.startsWith(OUTCOME_SOURCE_HANDLE_PREFIX)) return null;
30
+ const candidate = handleId.slice(OUTCOME_SOURCE_HANDLE_PREFIX.length);
31
+ return isAgentOutcomeKind(candidate) ? candidate : null;
32
+ }
33
+ function isOutcomeTransition(transition) {
34
+ return transition?.kind === OUTCOME_TRANSITION_KIND;
35
+ }
36
+ function excludeOutcomeTransitions(transitions) {
37
+ return transitions.filter((transition) => !isOutcomeTransition(transition));
38
+ }
39
+ function readTransitionOutcomeKind(transition) {
40
+ if (!isOutcomeTransition(transition)) return null;
41
+ return isAgentOutcomeKind(transition?.outcomeKind) ? transition.outcomeKind : null;
42
+ }
43
+ function listWiredOutcomes(definition, stepId) {
44
+ const wired = /* @__PURE__ */ new Set();
45
+ for (const transition of definition?.transitions ?? []) {
46
+ if (transition.fromStepId !== stepId) continue;
47
+ const outcome = readTransitionOutcomeKind(transition);
48
+ if (outcome) wired.add(outcome);
49
+ }
50
+ return AGENT_OUTCOME_KINDS.filter((outcome) => wired.has(outcome));
51
+ }
52
+ function findOutcomeTransition(definition, stepId, outcome) {
53
+ const candidates = (definition?.transitions ?? []).filter(
54
+ (transition) => transition.fromStepId === stepId && readTransitionOutcomeKind(transition) === outcome
55
+ );
56
+ if (candidates.length === 0) return null;
57
+ const ordered = [...candidates].sort((left, right) => (right.priority || 0) - (left.priority || 0));
58
+ return ordered[0] ?? null;
59
+ }
60
+ function resolveAgentOutcomeHandling(definition, stepId, outcome) {
61
+ if (listWiredOutcomes(definition, stepId).length === 0) return { kind: "default" };
62
+ const wired = findOutcomeTransition(definition, stepId, outcome);
63
+ if (wired) return { kind: "route", outcome, transition: wired };
64
+ if (outcome === "approved") return { kind: "default" };
65
+ return { kind: "inherit", outcome, handling: resolveStepFailureHandling(definition, stepId) };
66
+ }
67
+ const DISPOSITION_TO_OUTCOME = {
68
+ auto_approved: "approved",
69
+ approved: "approved",
70
+ edited: "approved",
71
+ researcher: "researcher",
72
+ none_proposed: "researcher",
73
+ artifact: "researcher",
74
+ rejected: "rejected",
75
+ guardrail_blocked: "guardrailBlocked",
76
+ guardrailBlocked: "guardrailBlocked"
77
+ };
78
+ function mapDispositionToAgentOutcome(disposition) {
79
+ if (typeof disposition !== "string") return null;
80
+ return DISPOSITION_TO_OUTCOME[disposition] ?? null;
81
+ }
82
+ function isGuardrailBlockedError(error) {
83
+ if (typeof error !== "object" || error === null) return false;
84
+ const tagged = error;
85
+ return tagged.code === "agent_guardrail_blocked" || tagged.guardrailBlocked === true;
86
+ }
87
+ function readGuardrailBlockEvidenceRef(error) {
88
+ if (typeof error !== "object" || error === null) return {};
89
+ const tagged = error;
90
+ const pick = (key) => typeof tagged[key] === "string" ? tagged[key] : void 0;
91
+ return {
92
+ ...pick("phase") ? { phase: pick("phase") } : {},
93
+ ...pick("kind") ? { kind: pick("kind") } : {},
94
+ ...pick("guardrailSetVersion") ? { guardrailSetVersion: pick("guardrailSetVersion") } : {},
95
+ ...pick("checkId") ? { checkId: pick("checkId") } : {}
96
+ };
97
+ }
98
+ const WORKFLOW_GUARDRAIL_BLOCK_CONTEXT_KEY = "__guardrailBlock";
99
+ function readAgentOutcomeMarker(context, stepId) {
100
+ const raw = context?.[WORKFLOW_AGENT_OUTCOME_CONTEXT_KEY];
101
+ if (!raw || typeof raw !== "object") return null;
102
+ const entry = raw;
103
+ if (entry.stepId !== stepId) return null;
104
+ if (!isAgentOutcomeKind(entry.outcome)) return null;
105
+ return entry;
106
+ }
107
+ function validateOutcomeRoutes(definition) {
108
+ const issues = [];
109
+ const seen = /* @__PURE__ */ new Map();
110
+ for (const transition of definition?.transitions ?? []) {
111
+ if (!isOutcomeTransition(transition)) continue;
112
+ const outcome = readTransitionOutcomeKind(transition);
113
+ if (!outcome) {
114
+ issues.push({
115
+ code: "OUTCOME_ROUTE_UNKNOWN_KIND",
116
+ message: `Outcome route ${transition.transitionId ?? ""} claims outcome "${transition.outcomeKind ?? ""}", which is not one of ${AGENT_OUTCOME_KINDS.join(", ")}`,
117
+ transitionId: transition.transitionId,
118
+ stepId: transition.fromStepId
119
+ });
120
+ continue;
121
+ }
122
+ const key = `${transition.fromStepId ?? ""}::${outcome}`;
123
+ const count = (seen.get(key) ?? 0) + 1;
124
+ seen.set(key, count);
125
+ if (count > 1) {
126
+ issues.push({
127
+ code: "OUTCOME_ROUTE_DUPLICATE_KIND",
128
+ message: `Step ${transition.fromStepId ?? ""} has more than one route for the "${outcome}" outcome`,
129
+ transitionId: transition.transitionId,
130
+ stepId: transition.fromStepId
131
+ });
132
+ }
133
+ }
134
+ return issues;
135
+ }
136
+ export {
137
+ AGENT_OUTCOME_KINDS,
138
+ OUTCOME_SOURCE_HANDLE_PREFIX,
139
+ OUTCOME_TRANSITION_KIND,
140
+ WORKFLOW_AGENT_OUTCOME_CONTEXT_KEY,
141
+ WORKFLOW_GUARDRAIL_BLOCK_CONTEXT_KEY,
142
+ buildAgentOutcomeContextEntry,
143
+ excludeOutcomeTransitions,
144
+ findOutcomeTransition,
145
+ isAgentOutcomeKind,
146
+ isGuardrailBlockedError,
147
+ isOutcomeTransition,
148
+ listWiredOutcomes,
149
+ mapDispositionToAgentOutcome,
150
+ outcomeSourceHandleId,
151
+ parseOutcomeSourceHandleId,
152
+ readAgentOutcomeMarker,
153
+ readGuardrailBlockEvidenceRef,
154
+ readTransitionOutcomeKind,
155
+ resolveAgentOutcomeHandling,
156
+ validateOutcomeRoutes
157
+ };
158
+ //# sourceMappingURL=outcome-routing.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/workflows/lib/outcome-routing.ts"],
4
+ "sourcesContent": ["/**\n * Workflows Module - Agent outcome routing (pure)\n *\n * Resolves where a run goes once an INVOKE_AGENT step has a disposition, from\n * the definition alone \u2014 the third member of the family `lib/error-routing.ts`\n * and `lib/breach-routing.ts` belong to, and shaped like them on purpose.\n *\n * Spec \u00A77.2: the agent node exposes labelled output handles for a FIXED\n * platform vocabulary of five disposition kinds \u2014 `approved`, `researcher`,\n * `rejected`, `guardrailBlocked`, `error` \u2014 and branching on a disposition is\n * WIRING. The alternative, enumerating handles from the selected agent's OUTCOME\n * schema, is deliberately NOT built: it would need a per-value condition on each\n * transition, which is exactly the context string-matching \u00A77.2 exists to\n * remove. These five are governance states, not domain data.\n *\n * Precedence, per \u00A77.2's progressive-disclosure rule:\n *\n * 1. the step declares NO outcome route at all \u21D2 `default` \u2014 normal routing,\n * byte-identical to how every definition written before this feature runs;\n * 2. an outgoing `kind: 'outcome'` route whose `outcomeKind` matches wins;\n * 3. `approved` unwired \u21D2 `default`. \u00A77.2 renders `approved` as always\n * present (\"only wired handles PLUS `approved`\") because the node's default\n * output IS the approved path \u2014 inheriting the error directive for it would\n * fail runs whose agent simply succeeded;\n * 4. any other unwired outcome \u21D2 `inherit`, the node's error directive, which\n * is the inheritance \u00A77.2 asks the node face to state\n * (\"unhandled \u2192 fail instance\").\n *\n * Rule 1 is what keeps this additive: without it, adding one `rejected` route\n * to a step would silently change what an `researcher` result does.\n *\n * PURE: no ORM, DI, React or registry imports. Engine call sites pass the plain\n * definition JSON.\n */\n\nimport {\n resolveStepFailureHandling,\n type ErrorRoutingDefinitionLike,\n type StepFailureHandling,\n} from './error-routing'\n\nexport const OUTCOME_TRANSITION_KIND = 'outcome'\n\n/**\n * The five fixed disposition kinds of spec \u00A77.2. Ordered as the node renders\n * them: the happy path first, escalations after, the infra failure last.\n */\nexport const AGENT_OUTCOME_KINDS = [\n 'approved',\n 'researcher',\n 'rejected',\n 'guardrailBlocked',\n 'error',\n] as const\n\nexport type AgentOutcomeKind = (typeof AGENT_OUTCOME_KINDS)[number]\n\n/**\n * Canvas source handle ids, one per outcome \u2014 `outcome:approved` and friends.\n * Namespaced so the handle set can grow without colliding with the default\n * handle, `ERROR_SOURCE_HANDLE_ID` or `SLA_BREACH_SOURCE_HANDLE_ID`.\n */\nexport const OUTCOME_SOURCE_HANDLE_PREFIX = 'outcome:'\n\n/**\n * Run-context key carrying the disposition an agent step resolved to, so the\n * executor can route on it. ENGINE-OWNED and reserved against user context\n * writes, exactly like `WORKFLOW_ERROR_CONTEXT_KEY`: routing never reads the\n * author-visible `disposition` key, which is what makes this wiring rather than\n * string-matching.\n */\nexport const WORKFLOW_AGENT_OUTCOME_CONTEXT_KEY = '__agentOutcome'\n\nexport interface WorkflowAgentOutcomeContextEntry {\n stepId: string\n outcome: AgentOutcomeKind\n occurredAt: string\n proposalId?: string\n}\n\nexport function buildAgentOutcomeContextEntry(\n stepId: string,\n outcome: AgentOutcomeKind,\n proposalId?: string,\n): WorkflowAgentOutcomeContextEntry {\n return {\n stepId,\n outcome,\n occurredAt: new Date().toISOString(),\n ...(proposalId ? { proposalId } : {}),\n }\n}\n\nexport function isAgentOutcomeKind(value: unknown): value is AgentOutcomeKind {\n return typeof value === 'string' && (AGENT_OUTCOME_KINDS as readonly string[]).includes(value)\n}\n\nexport function outcomeSourceHandleId(outcome: AgentOutcomeKind): string {\n return `${OUTCOME_SOURCE_HANDLE_PREFIX}${outcome}`\n}\n\nexport function parseOutcomeSourceHandleId(handleId: unknown): AgentOutcomeKind | null {\n if (typeof handleId !== 'string' || !handleId.startsWith(OUTCOME_SOURCE_HANDLE_PREFIX)) return null\n const candidate = handleId.slice(OUTCOME_SOURCE_HANDLE_PREFIX.length)\n return isAgentOutcomeKind(candidate) ? candidate : null\n}\n\nexport interface OutcomeRoutingTransitionLike {\n transitionId?: string\n fromStepId?: string\n toStepId?: string\n kind?: string\n outcomeKind?: string\n priority?: number\n}\n\nexport interface OutcomeRoutingDefinitionLike extends ErrorRoutingDefinitionLike {\n transitions?: OutcomeRoutingTransitionLike[]\n}\n\nexport type AgentOutcomeHandling =\n | { kind: 'route'; outcome: AgentOutcomeKind; transition: OutcomeRoutingTransitionLike }\n | { kind: 'inherit'; outcome: AgentOutcomeKind; handling: StepFailureHandling }\n | { kind: 'default' }\n\nexport function isOutcomeTransition(\n transition: OutcomeRoutingTransitionLike | null | undefined,\n): boolean {\n return transition?.kind === OUTCOME_TRANSITION_KIND\n}\n\n/**\n * Outcome routes must never be taken by normal routing \u2014 they are reachable only\n * from a resolved disposition, exactly like error and SLA-breach routes. Every\n * routing lookup filters through this helper.\n */\nexport function excludeOutcomeTransitions<T extends OutcomeRoutingTransitionLike>(\n transitions: T[],\n): T[] {\n return transitions.filter((transition) => !isOutcomeTransition(transition))\n}\n\n/** The outcome a route claims, or null when it claims none the platform knows. */\nexport function readTransitionOutcomeKind(\n transition: OutcomeRoutingTransitionLike | null | undefined,\n): AgentOutcomeKind | null {\n if (!isOutcomeTransition(transition)) return null\n return isAgentOutcomeKind(transition?.outcomeKind) ? transition.outcomeKind : null\n}\n\n/** Every outcome a step has wired, in the platform's render order. */\nexport function listWiredOutcomes(\n definition: OutcomeRoutingDefinitionLike | null | undefined,\n stepId: string,\n): AgentOutcomeKind[] {\n const wired = new Set<AgentOutcomeKind>()\n for (const transition of definition?.transitions ?? []) {\n if (transition.fromStepId !== stepId) continue\n const outcome = readTransitionOutcomeKind(transition)\n if (outcome) wired.add(outcome)\n }\n return AGENT_OUTCOME_KINDS.filter((outcome) => wired.has(outcome))\n}\n\n/**\n * Highest-priority outgoing route for one outcome. Ties keep definition order,\n * mirroring how `findValidTransitions` orders normal routes.\n */\nexport function findOutcomeTransition(\n definition: OutcomeRoutingDefinitionLike | null | undefined,\n stepId: string,\n outcome: AgentOutcomeKind,\n): OutcomeRoutingTransitionLike | null {\n const candidates = (definition?.transitions ?? []).filter(\n (transition) =>\n transition.fromStepId === stepId && readTransitionOutcomeKind(transition) === outcome,\n )\n if (candidates.length === 0) return null\n const ordered = [...candidates].sort((left, right) => (right.priority || 0) - (left.priority || 0))\n return ordered[0] ?? null\n}\n\n/**\n * The single decision point for a resolved agent disposition. See the module\n * docblock for the precedence and why `default` covers both \"nothing is wired\"\n * cases \u2014 it is the whole of the backward-compatibility guarantee.\n */\nexport function resolveAgentOutcomeHandling(\n definition: OutcomeRoutingDefinitionLike | null | undefined,\n stepId: string,\n outcome: AgentOutcomeKind,\n): AgentOutcomeHandling {\n if (listWiredOutcomes(definition, stepId).length === 0) return { kind: 'default' }\n\n const wired = findOutcomeTransition(definition, stepId, outcome)\n if (wired) return { kind: 'route', outcome, transition: wired }\n\n if (outcome === 'approved') return { kind: 'default' }\n\n return { kind: 'inherit', outcome, handling: resolveStepFailureHandling(definition, stepId) }\n}\n\n/**\n * Disposition vocabularies the platform speaks, mapped onto the \u00A77.2 five.\n *\n * `auto_approved` is the agent-envelope spelling of `approved`; `edited` is a\n * human approving a proposal they amended, which still executes, so it routes\n * the approved handle rather than inventing a sixth outcome the spec does not\n * define. `pending` maps to nothing \u2014 the step is still parked.\n *\n * `none_proposed` \u2014 an agent that looked and had nothing to propose \u2014 takes the\n * `researcher` handle, which is exactly what that route means. It is NOT\n * `rejected`: nothing was offered for a human to decline.\n *\n * `artifact` \u2014 an agent that PRODUCED a file \u2014 takes it for the same reason. The\n * five handles are a vocabulary of DECISIONS; making a document is not one, and\n * adding a sixth handle for it would fan every agent node on the canvas to say\n * nothing new about governance.\n */\nconst DISPOSITION_TO_OUTCOME: Record<string, AgentOutcomeKind> = {\n auto_approved: 'approved',\n approved: 'approved',\n edited: 'approved',\n researcher: 'researcher',\n none_proposed: 'researcher',\n artifact: 'researcher',\n rejected: 'rejected',\n guardrail_blocked: 'guardrailBlocked',\n guardrailBlocked: 'guardrailBlocked',\n}\n\nexport function mapDispositionToAgentOutcome(disposition: unknown): AgentOutcomeKind | null {\n if (typeof disposition !== 'string') return null\n return DISPOSITION_TO_OUTCOME[disposition] ?? null\n}\n\n/**\n * Structural recognition of a runtime guardrail `block` (spec \u00A77.3).\n *\n * Shaped like `isRetryableError` in `activity-worker-handler`: core reads a tag\n * off the thrown value rather than importing `agent_orchestrator`, which stays\n * an OPTIONAL peer. `agent_guardrail_blocked` is the code\n * `AgentGuardrailBlockedError` carries; `guardrailBlocked: true` is the\n * forward-compatible tag any other runtime can set.\n */\nexport function isGuardrailBlockedError(error: unknown): boolean {\n if (typeof error !== 'object' || error === null) return false\n const tagged = error as { code?: unknown; guardrailBlocked?: unknown }\n return tagged.code === 'agent_guardrail_blocked' || tagged.guardrailBlocked === true\n}\n\n/**\n * The guardrail facts safe to bind to a workflow route.\n *\n * `agent_orchestrator/AGENTS.md` requires guardrail evidence to be REDACTED \u2014\n * never raw PII \u2014 so only the classification travels: which phase tripped, which\n * check kind, and the guardrail-set version. The evidence blob itself stays on\n * the `AgentGuardrailCheck` row and is reached by id.\n */\nexport interface GuardrailBlockEvidenceRef {\n phase?: string\n kind?: string\n guardrailSetVersion?: string\n checkId?: string\n}\n\nexport function readGuardrailBlockEvidenceRef(error: unknown): GuardrailBlockEvidenceRef {\n if (typeof error !== 'object' || error === null) return {}\n const tagged = error as Record<string, unknown>\n const pick = (key: string): string | undefined =>\n typeof tagged[key] === 'string' ? (tagged[key] as string) : undefined\n return {\n ...(pick('phase') ? { phase: pick('phase') } : {}),\n ...(pick('kind') ? { kind: pick('kind') } : {}),\n ...(pick('guardrailSetVersion') ? { guardrailSetVersion: pick('guardrailSetVersion') } : {}),\n ...(pick('checkId') ? { checkId: pick('checkId') } : {}),\n }\n}\n\n/**\n * Context key the guardrail evidence REFERENCE lands under when a block takes\n * the guardrail route, so the review task the author wires can bind it.\n */\nexport const WORKFLOW_GUARDRAIL_BLOCK_CONTEXT_KEY = '__guardrailBlock'\n\n/** The engine-owned outcome marker for a step, or null when it names another step. */\nexport function readAgentOutcomeMarker(\n context: Record<string, unknown> | null | undefined,\n stepId: string,\n): WorkflowAgentOutcomeContextEntry | null {\n const raw = context?.[WORKFLOW_AGENT_OUTCOME_CONTEXT_KEY]\n if (!raw || typeof raw !== 'object') return null\n const entry = raw as Partial<WorkflowAgentOutcomeContextEntry>\n if (entry.stepId !== stepId) return null\n if (!isAgentOutcomeKind(entry.outcome)) return null\n return entry as WorkflowAgentOutcomeContextEntry\n}\n\nexport interface OutcomeRouteIssue {\n code: 'OUTCOME_ROUTE_UNKNOWN_KIND' | 'OUTCOME_ROUTE_DUPLICATE_KIND'\n message: string\n transitionId?: string\n stepId?: string\n}\n\n/**\n * Author-time checks surfaced by the Problems panel. An outcome route claiming a\n * kind the platform does not define is unreachable, and two routes claiming the\n * same kind make the destination depend on priority ties rather than on wiring \u2014\n * both are wiring mistakes the canvas cannot show.\n */\nexport function validateOutcomeRoutes(\n definition: OutcomeRoutingDefinitionLike | null | undefined,\n): OutcomeRouteIssue[] {\n const issues: OutcomeRouteIssue[] = []\n const seen = new Map<string, number>()\n\n for (const transition of definition?.transitions ?? []) {\n if (!isOutcomeTransition(transition)) continue\n\n const outcome = readTransitionOutcomeKind(transition)\n if (!outcome) {\n issues.push({\n code: 'OUTCOME_ROUTE_UNKNOWN_KIND',\n message: `Outcome route ${transition.transitionId ?? ''} claims outcome \"${transition.outcomeKind ?? ''}\", which is not one of ${AGENT_OUTCOME_KINDS.join(', ')}`,\n transitionId: transition.transitionId,\n stepId: transition.fromStepId,\n })\n continue\n }\n\n const key = `${transition.fromStepId ?? ''}::${outcome}`\n const count = (seen.get(key) ?? 0) + 1\n seen.set(key, count)\n if (count > 1) {\n issues.push({\n code: 'OUTCOME_ROUTE_DUPLICATE_KIND',\n message: `Step ${transition.fromStepId ?? ''} has more than one route for the \"${outcome}\" outcome`,\n transitionId: transition.transitionId,\n stepId: transition.fromStepId,\n })\n }\n }\n\n return issues\n}\n"],
5
+ "mappings": "AAmCA;AAAA,EACE;AAAA,OAGK;AAEA,MAAM,0BAA0B;AAMhC,MAAM,sBAAsB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AASO,MAAM,+BAA+B;AASrC,MAAM,qCAAqC;AAS3C,SAAS,8BACd,QACA,SACA,YACkC;AAClC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,aAAY,oBAAI,KAAK,GAAE,YAAY;AAAA,IACnC,GAAI,aAAa,EAAE,WAAW,IAAI,CAAC;AAAA,EACrC;AACF;AAEO,SAAS,mBAAmB,OAA2C;AAC5E,SAAO,OAAO,UAAU,YAAa,oBAA0C,SAAS,KAAK;AAC/F;AAEO,SAAS,sBAAsB,SAAmC;AACvE,SAAO,GAAG,4BAA4B,GAAG,OAAO;AAClD;AAEO,SAAS,2BAA2B,UAA4C;AACrF,MAAI,OAAO,aAAa,YAAY,CAAC,SAAS,WAAW,4BAA4B,EAAG,QAAO;AAC/F,QAAM,YAAY,SAAS,MAAM,6BAA6B,MAAM;AACpE,SAAO,mBAAmB,SAAS,IAAI,YAAY;AACrD;AAoBO,SAAS,oBACd,YACS;AACT,SAAO,YAAY,SAAS;AAC9B;AAOO,SAAS,0BACd,aACK;AACL,SAAO,YAAY,OAAO,CAAC,eAAe,CAAC,oBAAoB,UAAU,CAAC;AAC5E;AAGO,SAAS,0BACd,YACyB;AACzB,MAAI,CAAC,oBAAoB,UAAU,EAAG,QAAO;AAC7C,SAAO,mBAAmB,YAAY,WAAW,IAAI,WAAW,cAAc;AAChF;AAGO,SAAS,kBACd,YACA,QACoB;AACpB,QAAM,QAAQ,oBAAI,IAAsB;AACxC,aAAW,cAAc,YAAY,eAAe,CAAC,GAAG;AACtD,QAAI,WAAW,eAAe,OAAQ;AACtC,UAAM,UAAU,0BAA0B,UAAU;AACpD,QAAI,QAAS,OAAM,IAAI,OAAO;AAAA,EAChC;AACA,SAAO,oBAAoB,OAAO,CAAC,YAAY,MAAM,IAAI,OAAO,CAAC;AACnE;AAMO,SAAS,sBACd,YACA,QACA,SACqC;AACrC,QAAM,cAAc,YAAY,eAAe,CAAC,GAAG;AAAA,IACjD,CAAC,eACC,WAAW,eAAe,UAAU,0BAA0B,UAAU,MAAM;AAAA,EAClF;AACA,MAAI,WAAW,WAAW,EAAG,QAAO;AACpC,QAAM,UAAU,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,MAAM,WAAW,MAAM,YAAY,MAAM,KAAK,YAAY,EAAE;AAClG,SAAO,QAAQ,CAAC,KAAK;AACvB;AAOO,SAAS,4BACd,YACA,QACA,SACsB;AACtB,MAAI,kBAAkB,YAAY,MAAM,EAAE,WAAW,EAAG,QAAO,EAAE,MAAM,UAAU;AAEjF,QAAM,QAAQ,sBAAsB,YAAY,QAAQ,OAAO;AAC/D,MAAI,MAAO,QAAO,EAAE,MAAM,SAAS,SAAS,YAAY,MAAM;AAE9D,MAAI,YAAY,WAAY,QAAO,EAAE,MAAM,UAAU;AAErD,SAAO,EAAE,MAAM,WAAW,SAAS,UAAU,2BAA2B,YAAY,MAAM,EAAE;AAC9F;AAmBA,MAAM,yBAA2D;AAAA,EAC/D,eAAe;AAAA,EACf,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,UAAU;AAAA,EACV,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,kBAAkB;AACpB;AAEO,SAAS,6BAA6B,aAA+C;AAC1F,MAAI,OAAO,gBAAgB,SAAU,QAAO;AAC5C,SAAO,uBAAuB,WAAW,KAAK;AAChD;AAWO,SAAS,wBAAwB,OAAyB;AAC/D,MAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO;AACxD,QAAM,SAAS;AACf,SAAO,OAAO,SAAS,6BAA6B,OAAO,qBAAqB;AAClF;AAiBO,SAAS,8BAA8B,OAA2C;AACvF,MAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO,CAAC;AACzD,QAAM,SAAS;AACf,QAAM,OAAO,CAAC,QACZ,OAAO,OAAO,GAAG,MAAM,WAAY,OAAO,GAAG,IAAe;AAC9D,SAAO;AAAA,IACL,GAAI,KAAK,OAAO,IAAI,EAAE,OAAO,KAAK,OAAO,EAAE,IAAI,CAAC;AAAA,IAChD,GAAI,KAAK,MAAM,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,IAAI,CAAC;AAAA,IAC7C,GAAI,KAAK,qBAAqB,IAAI,EAAE,qBAAqB,KAAK,qBAAqB,EAAE,IAAI,CAAC;AAAA,IAC1F,GAAI,KAAK,SAAS,IAAI,EAAE,SAAS,KAAK,SAAS,EAAE,IAAI,CAAC;AAAA,EACxD;AACF;AAMO,MAAM,uCAAuC;AAG7C,SAAS,uBACd,SACA,QACyC;AACzC,QAAM,MAAM,UAAU,kCAAkC;AACxD,MAAI,CAAC,OAAO,OAAO,QAAQ,SAAU,QAAO;AAC5C,QAAM,QAAQ;AACd,MAAI,MAAM,WAAW,OAAQ,QAAO;AACpC,MAAI,CAAC,mBAAmB,MAAM,OAAO,EAAG,QAAO;AAC/C,SAAO;AACT;AAeO,SAAS,sBACd,YACqB;AACrB,QAAM,SAA8B,CAAC;AACrC,QAAM,OAAO,oBAAI,IAAoB;AAErC,aAAW,cAAc,YAAY,eAAe,CAAC,GAAG;AACtD,QAAI,CAAC,oBAAoB,UAAU,EAAG;AAEtC,UAAM,UAAU,0BAA0B,UAAU;AACpD,QAAI,CAAC,SAAS;AACZ,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,SAAS,iBAAiB,WAAW,gBAAgB,EAAE,oBAAoB,WAAW,eAAe,EAAE,0BAA0B,oBAAoB,KAAK,IAAI,CAAC;AAAA,QAC/J,cAAc,WAAW;AAAA,QACzB,QAAQ,WAAW;AAAA,MACrB,CAAC;AACD;AAAA,IACF;AAEA,UAAM,MAAM,GAAG,WAAW,cAAc,EAAE,KAAK,OAAO;AACtD,UAAM,SAAS,KAAK,IAAI,GAAG,KAAK,KAAK;AACrC,SAAK,IAAI,KAAK,KAAK;AACnB,QAAI,QAAQ,GAAG;AACb,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,SAAS,QAAQ,WAAW,cAAc,EAAE,qCAAqC,OAAO;AAAA,QACxF,cAAc,WAAW;AAAA,QACzB,QAAQ,WAAW;AAAA,MACrB,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,107 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import {
3
+ WorkflowDefinition
4
+ } from "../data/entities.js";
5
+ import { normalizeGrantedFeatures, syncWorkflowDefinitionPrincipal } from "./definition-grant.js";
6
+ import { invalidateTriggerCache } from "./event-trigger-service.js";
7
+ function ownedBy(definition, ownerModule, ownerId) {
8
+ const generatedBy = definition.metadata?.generatedBy;
9
+ return !!generatedBy && generatedBy.module === ownerModule && generatedBy.ownerId === ownerId;
10
+ }
11
+ function createWorkflowDefinitionAuthoring(container) {
12
+ return {
13
+ async findOwnedDefinition(em, params) {
14
+ return em.findOne(
15
+ WorkflowDefinition,
16
+ {
17
+ workflowId: params.workflowId,
18
+ tenantId: params.tenantId,
19
+ organizationId: params.organizationId,
20
+ deletedAt: null
21
+ },
22
+ { orderBy: { version: "DESC" } }
23
+ );
24
+ },
25
+ async findDefinitionsByWorkflowIds(em, params) {
26
+ if (params.workflowIds.length === 0) return [];
27
+ return em.find(
28
+ WorkflowDefinition,
29
+ {
30
+ workflowId: { $in: params.workflowIds },
31
+ tenantId: params.tenantId,
32
+ organizationId: params.organizationId,
33
+ deletedAt: null
34
+ },
35
+ { orderBy: { version: "DESC" } }
36
+ );
37
+ },
38
+ async upsertOwnedDefinition(em, input) {
39
+ const grantedFeatures = normalizeGrantedFeatures(input.grantedFeatures);
40
+ const existing = await em.findOne(
41
+ WorkflowDefinition,
42
+ {
43
+ workflowId: input.workflowId,
44
+ tenantId: input.tenantId,
45
+ organizationId: input.organizationId,
46
+ deletedAt: null
47
+ },
48
+ { orderBy: { version: "DESC" } }
49
+ );
50
+ if (existing && !ownedBy(existing, input.ownerModule, input.ownerId)) {
51
+ return { ok: false, reason: "owned_by_other", definition: existing };
52
+ }
53
+ const metadata = {
54
+ ...input.metadata ?? {},
55
+ generatedBy: { module: input.ownerModule, ownerId: input.ownerId }
56
+ };
57
+ const definition = existing ?? em.create(WorkflowDefinition, {
58
+ // The PK is minted up front (MikroORM does not generate UUIDs
59
+ // client-side) so the execution principal — whose identity key is the
60
+ // definition id — can be provisioned BEFORE the row claiming the grant
61
+ // is persisted.
62
+ id: randomUUID(),
63
+ workflowId: input.workflowId,
64
+ workflowName: input.workflowName,
65
+ version: 1,
66
+ definition: input.definition,
67
+ tenantId: input.tenantId,
68
+ organizationId: input.organizationId,
69
+ createdBy: input.actorUserId ?? null,
70
+ createdAt: /* @__PURE__ */ new Date(),
71
+ updatedAt: /* @__PURE__ */ new Date()
72
+ });
73
+ definition.workflowName = input.workflowName;
74
+ definition.description = input.description ?? null;
75
+ definition.definition = input.definition;
76
+ definition.metadata = metadata;
77
+ definition.enabled = input.enabled ?? true;
78
+ definition.grantedFeatures = grantedFeatures.length ? grantedFeatures : null;
79
+ definition.updatedBy = input.actorUserId ?? definition.updatedBy ?? null;
80
+ definition.updatedAt = /* @__PURE__ */ new Date();
81
+ await syncWorkflowDefinitionPrincipal(container, definition);
82
+ em.persist(definition);
83
+ await em.flush();
84
+ invalidateTriggerCache(input.tenantId, input.organizationId);
85
+ return { ok: true, definition, created: !existing };
86
+ },
87
+ async deleteOwnedDefinition(em, params) {
88
+ const existing = await em.findOne(WorkflowDefinition, {
89
+ workflowId: params.workflowId,
90
+ tenantId: params.tenantId,
91
+ organizationId: params.organizationId,
92
+ deletedAt: null
93
+ });
94
+ if (!existing) return false;
95
+ if (!ownedBy(existing, params.ownerModule, params.ownerId)) return false;
96
+ existing.deletedAt = /* @__PURE__ */ new Date();
97
+ em.persist(existing);
98
+ await em.flush();
99
+ invalidateTriggerCache(params.tenantId, params.organizationId);
100
+ return true;
101
+ }
102
+ };
103
+ }
104
+ export {
105
+ createWorkflowDefinitionAuthoring
106
+ };
107
+ //# sourceMappingURL=owned-definition.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/workflows/lib/owned-definition.ts"],
4
+ "sourcesContent": ["import { randomUUID } from 'node:crypto'\nimport type { EntityManager } from '@mikro-orm/postgresql'\nimport type { AwilixContainer } from 'awilix'\nimport {\n WorkflowDefinition,\n type WorkflowDefinitionData,\n type WorkflowMetadata,\n} from '../data/entities'\nimport { normalizeGrantedFeatures, syncWorkflowDefinitionPrincipal } from './definition-grant'\nimport { invalidateTriggerCache } from './event-trigger-service'\n\n/**\n * Create-or-update of a workflow definition that ANOTHER module authors and owns.\n *\n * The point of this service is that there is exactly one workflow engine and one\n * kind of workflow definition. When a module offers a simplified way to express a\n * process \u2014 \"run this agent every morning\" \u2014 the right answer is to generate a\n * real definition here, not to build a parallel executor for the simple case. The\n * generated row is an ordinary `WorkflowDefinition`: it shows up in the Studio,\n * it can be opened and extended by hand, and it runs through the same engine with\n * the same retry, wait, signal and cancellation semantics as anything else.\n *\n * Ownership is recorded in `metadata.generatedBy` and re-checked on every write,\n * so this can never silently take over a workflow a person authored or one\n * belonging to a different owner.\n *\n * Execution identity comes with it: `grantedFeatures` is applied through the same\n * `syncWorkflowDefinitionPrincipal` the definitions API uses, so a generated\n * workflow runs as its own least-privilege principal exactly like a hand-authored\n * one. AUTHORIZING that grant is the caller's job \u2014 this service is a write\n * primitive, not a permission boundary.\n */\n\nexport type OwnedWorkflowDefinitionInput = {\n ownerModule: string\n ownerId: string\n workflowId: string\n workflowName: string\n description?: string | null\n definition: WorkflowDefinitionData\n metadata?: Omit<WorkflowMetadata, 'generatedBy'> | null\n grantedFeatures?: string[] | null\n enabled?: boolean\n tenantId: string\n organizationId: string\n actorUserId?: string | null\n}\n\nexport type OwnedWorkflowDefinitionResult =\n | { ok: true; definition: WorkflowDefinition; created: boolean }\n | { ok: false; reason: 'owned_by_other'; definition: WorkflowDefinition }\n\nexport interface WorkflowDefinitionAuthoring {\n upsertOwnedDefinition(\n em: EntityManager,\n input: OwnedWorkflowDefinitionInput,\n ): Promise<OwnedWorkflowDefinitionResult>\n findOwnedDefinition(\n em: EntityManager,\n params: { workflowId: string; tenantId: string; organizationId: string },\n ): Promise<WorkflowDefinition | null>\n /** Batch form for a list page: one query for a page of workflow ids. */\n findDefinitionsByWorkflowIds(\n em: EntityManager,\n params: { workflowIds: string[]; tenantId: string; organizationId: string },\n ): Promise<WorkflowDefinition[]>\n deleteOwnedDefinition(\n em: EntityManager,\n params: { workflowId: string; ownerModule: string; ownerId: string; tenantId: string; organizationId: string },\n ): Promise<boolean>\n}\n\nfunction ownedBy(definition: WorkflowDefinition, ownerModule: string, ownerId: string): boolean {\n const generatedBy = definition.metadata?.generatedBy\n return !!generatedBy && generatedBy.module === ownerModule && generatedBy.ownerId === ownerId\n}\n\nexport function createWorkflowDefinitionAuthoring(container: AwilixContainer): WorkflowDefinitionAuthoring {\n return {\n async findOwnedDefinition(em, params) {\n return em.findOne(\n WorkflowDefinition,\n {\n workflowId: params.workflowId,\n tenantId: params.tenantId,\n organizationId: params.organizationId,\n deletedAt: null,\n },\n { orderBy: { version: 'DESC' } },\n )\n },\n\n async findDefinitionsByWorkflowIds(em, params) {\n if (params.workflowIds.length === 0) return []\n return em.find(\n WorkflowDefinition,\n {\n workflowId: { $in: params.workflowIds },\n tenantId: params.tenantId,\n organizationId: params.organizationId,\n deletedAt: null,\n },\n { orderBy: { version: 'DESC' } },\n )\n },\n\n async upsertOwnedDefinition(em, input) {\n const grantedFeatures = normalizeGrantedFeatures(input.grantedFeatures)\n const existing = await em.findOne(\n WorkflowDefinition,\n {\n workflowId: input.workflowId,\n tenantId: input.tenantId,\n organizationId: input.organizationId,\n deletedAt: null,\n },\n { orderBy: { version: 'DESC' } },\n )\n\n // A row that exists but belongs to someone else \u2014 a person's own workflow,\n // or another owner's \u2014 is never overwritten. The caller decides what to do\n // about it; silently replacing a hand-authored graph would be the worst\n // possible failure mode of a convenience feature.\n if (existing && !ownedBy(existing, input.ownerModule, input.ownerId)) {\n return { ok: false, reason: 'owned_by_other', definition: existing }\n }\n\n const metadata: WorkflowMetadata = {\n ...(input.metadata ?? {}),\n generatedBy: { module: input.ownerModule, ownerId: input.ownerId },\n }\n\n const definition =\n existing ??\n em.create(WorkflowDefinition, {\n // The PK is minted up front (MikroORM does not generate UUIDs\n // client-side) so the execution principal \u2014 whose identity key is the\n // definition id \u2014 can be provisioned BEFORE the row claiming the grant\n // is persisted.\n id: randomUUID(),\n workflowId: input.workflowId,\n workflowName: input.workflowName,\n version: 1,\n definition: input.definition,\n tenantId: input.tenantId,\n organizationId: input.organizationId,\n createdBy: input.actorUserId ?? null,\n createdAt: new Date(),\n updatedAt: new Date(),\n })\n\n definition.workflowName = input.workflowName\n definition.description = input.description ?? null\n definition.definition = input.definition\n definition.metadata = metadata\n definition.enabled = input.enabled ?? true\n definition.grantedFeatures = grantedFeatures.length ? grantedFeatures : null\n definition.updatedBy = input.actorUserId ?? definition.updatedBy ?? null\n definition.updatedAt = new Date()\n\n await syncWorkflowDefinitionPrincipal(container, definition)\n em.persist(definition)\n await em.flush()\n\n // Embedded triggers on a freshly written definition must be visible to the\n // wildcard event subscriber immediately.\n invalidateTriggerCache(input.tenantId, input.organizationId)\n\n return { ok: true, definition, created: !existing }\n },\n\n async deleteOwnedDefinition(em, params) {\n const existing = await em.findOne(WorkflowDefinition, {\n workflowId: params.workflowId,\n tenantId: params.tenantId,\n organizationId: params.organizationId,\n deletedAt: null,\n })\n if (!existing) return false\n if (!ownedBy(existing, params.ownerModule, params.ownerId)) return false\n existing.deletedAt = new Date()\n em.persist(existing)\n await em.flush()\n invalidateTriggerCache(params.tenantId, params.organizationId)\n return true\n },\n }\n}\n"],
5
+ "mappings": "AAAA,SAAS,kBAAkB;AAG3B;AAAA,EACE;AAAA,OAGK;AACP,SAAS,0BAA0B,uCAAuC;AAC1E,SAAS,8BAA8B;AA+DvC,SAAS,QAAQ,YAAgC,aAAqB,SAA0B;AAC9F,QAAM,cAAc,WAAW,UAAU;AACzC,SAAO,CAAC,CAAC,eAAe,YAAY,WAAW,eAAe,YAAY,YAAY;AACxF;AAEO,SAAS,kCAAkC,WAAyD;AACzG,SAAO;AAAA,IACL,MAAM,oBAAoB,IAAI,QAAQ;AACpC,aAAO,GAAG;AAAA,QACR;AAAA,QACA;AAAA,UACE,YAAY,OAAO;AAAA,UACnB,UAAU,OAAO;AAAA,UACjB,gBAAgB,OAAO;AAAA,UACvB,WAAW;AAAA,QACb;AAAA,QACA,EAAE,SAAS,EAAE,SAAS,OAAO,EAAE;AAAA,MACjC;AAAA,IACF;AAAA,IAEA,MAAM,6BAA6B,IAAI,QAAQ;AAC7C,UAAI,OAAO,YAAY,WAAW,EAAG,QAAO,CAAC;AAC7C,aAAO,GAAG;AAAA,QACR;AAAA,QACA;AAAA,UACE,YAAY,EAAE,KAAK,OAAO,YAAY;AAAA,UACtC,UAAU,OAAO;AAAA,UACjB,gBAAgB,OAAO;AAAA,UACvB,WAAW;AAAA,QACb;AAAA,QACA,EAAE,SAAS,EAAE,SAAS,OAAO,EAAE;AAAA,MACjC;AAAA,IACF;AAAA,IAEA,MAAM,sBAAsB,IAAI,OAAO;AACrC,YAAM,kBAAkB,yBAAyB,MAAM,eAAe;AACtE,YAAM,WAAW,MAAM,GAAG;AAAA,QACxB;AAAA,QACA;AAAA,UACE,YAAY,MAAM;AAAA,UAClB,UAAU,MAAM;AAAA,UAChB,gBAAgB,MAAM;AAAA,UACtB,WAAW;AAAA,QACb;AAAA,QACA,EAAE,SAAS,EAAE,SAAS,OAAO,EAAE;AAAA,MACjC;AAMA,UAAI,YAAY,CAAC,QAAQ,UAAU,MAAM,aAAa,MAAM,OAAO,GAAG;AACpE,eAAO,EAAE,IAAI,OAAO,QAAQ,kBAAkB,YAAY,SAAS;AAAA,MACrE;AAEA,YAAM,WAA6B;AAAA,QACjC,GAAI,MAAM,YAAY,CAAC;AAAA,QACvB,aAAa,EAAE,QAAQ,MAAM,aAAa,SAAS,MAAM,QAAQ;AAAA,MACnE;AAEA,YAAM,aACJ,YACA,GAAG,OAAO,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,QAK5B,IAAI,WAAW;AAAA,QACf,YAAY,MAAM;AAAA,QAClB,cAAc,MAAM;AAAA,QACpB,SAAS;AAAA,QACT,YAAY,MAAM;AAAA,QAClB,UAAU,MAAM;AAAA,QAChB,gBAAgB,MAAM;AAAA,QACtB,WAAW,MAAM,eAAe;AAAA,QAChC,WAAW,oBAAI,KAAK;AAAA,QACpB,WAAW,oBAAI,KAAK;AAAA,MACtB,CAAC;AAEH,iBAAW,eAAe,MAAM;AAChC,iBAAW,cAAc,MAAM,eAAe;AAC9C,iBAAW,aAAa,MAAM;AAC9B,iBAAW,WAAW;AACtB,iBAAW,UAAU,MAAM,WAAW;AACtC,iBAAW,kBAAkB,gBAAgB,SAAS,kBAAkB;AACxE,iBAAW,YAAY,MAAM,eAAe,WAAW,aAAa;AACpE,iBAAW,YAAY,oBAAI,KAAK;AAEhC,YAAM,gCAAgC,WAAW,UAAU;AAC3D,SAAG,QAAQ,UAAU;AACrB,YAAM,GAAG,MAAM;AAIf,6BAAuB,MAAM,UAAU,MAAM,cAAc;AAE3D,aAAO,EAAE,IAAI,MAAM,YAAY,SAAS,CAAC,SAAS;AAAA,IACpD;AAAA,IAEA,MAAM,sBAAsB,IAAI,QAAQ;AACtC,YAAM,WAAW,MAAM,GAAG,QAAQ,oBAAoB;AAAA,QACpD,YAAY,OAAO;AAAA,QACnB,UAAU,OAAO;AAAA,QACjB,gBAAgB,OAAO;AAAA,QACvB,WAAW;AAAA,MACb,CAAC;AACD,UAAI,CAAC,SAAU,QAAO;AACtB,UAAI,CAAC,QAAQ,UAAU,OAAO,aAAa,OAAO,OAAO,EAAG,QAAO;AACnE,eAAS,YAAY,oBAAI,KAAK;AAC9B,SAAG,QAAQ,QAAQ;AACnB,YAAM,GAAG,MAAM;AACf,6BAAuB,OAAO,UAAU,OAAO,cAAc;AAC7D,aAAO;AAAA,IACT;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,10 @@
1
+ function filterOwnedNodeChanges(changes, ownedIds) {
2
+ return changes.filter((change) => {
3
+ const id = change.id;
4
+ return id === void 0 || ownedIds.has(id);
5
+ });
6
+ }
7
+ export {
8
+ filterOwnedNodeChanges
9
+ };
10
+ //# sourceMappingURL=owned-node-changes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/workflows/lib/owned-node-changes.ts"],
4
+ "sourcesContent": ["import type { NodeChange } from '@xyflow/react'\n\n/**\n * PURE. Keep only the ReactFlow node changes that target a node the editor\n * actually owns (i.e. a node in its controlled `nodes` state).\n *\n * WorkflowGraphImpl mints render-only overlay nodes \u2014 the trigger pill (fidelity\n * gap #5) \u2014 inside `canvasNodes` at render time; they are handed to ReactFlow\n * but never stored in node state. ReactFlow still measures such a node and emits\n * a `dimensions` change on every render. Applying that change via `setNodes`\n * schedules a re-render, which re-mints the overlay as a fresh object, which\n * ReactFlow re-measures \u2014 an unbounded loop that pins the CPU and starves node\n * dragging, so a dragged card never visibly tracks the cursor and only lands at\n * the drop point (the \"teleport\" bug). Dropping the overlay's changes here keeps\n * that batch from scheduling a re-render at all.\n *\n * Changes without an `id` (e.g. `add`, which carries `item` instead) are always\n * kept: they can only originate from the editor's own code, never from overlay\n * measurement.\n */\nexport function filterOwnedNodeChanges(\n changes: NodeChange[],\n ownedIds: ReadonlySet<string>,\n): NodeChange[] {\n return changes.filter((change) => {\n const id = (change as { id?: string }).id\n return id === undefined || ownedIds.has(id)\n })\n}\n"],
5
+ "mappings": "AAoBO,SAAS,uBACd,SACA,UACc;AACd,SAAO,QAAQ,OAAO,CAAC,WAAW;AAChC,UAAM,KAAM,OAA2B;AACvC,WAAO,OAAO,UAAa,SAAS,IAAI,EAAE;AAAA,EAC5C,CAAC;AACH;",
6
+ "names": []
7
+ }
@@ -0,0 +1,36 @@
1
+ const WORKFLOW_PALETTE_DRAG_MIME = "application/x-om-workflow-palette";
2
+ function writePaletteDragPayload(dataTransfer, item, label) {
3
+ dataTransfer.setData("text/plain", label);
4
+ dataTransfer.setData(WORKFLOW_PALETTE_DRAG_MIME, JSON.stringify(item));
5
+ dataTransfer.effectAllowed = "copy";
6
+ }
7
+ function parsePaletteDragItem(raw) {
8
+ let parsed;
9
+ try {
10
+ parsed = JSON.parse(raw);
11
+ } catch {
12
+ return null;
13
+ }
14
+ if (!parsed || typeof parsed !== "object") return null;
15
+ const candidate = parsed;
16
+ if (candidate.kind === "step" && typeof candidate.nodeType === "string" && candidate.nodeType.length > 0) {
17
+ return { kind: "step", nodeType: candidate.nodeType };
18
+ }
19
+ if (candidate.kind === "activity" && typeof candidate.activityType === "string" && candidate.activityType.length > 0) {
20
+ return { kind: "activity", activityType: candidate.activityType };
21
+ }
22
+ return null;
23
+ }
24
+ function readPaletteDragItem(dataTransfer) {
25
+ if (!dataTransfer) return null;
26
+ if (Array.isArray(dataTransfer.types) && !dataTransfer.types.includes(WORKFLOW_PALETTE_DRAG_MIME)) return null;
27
+ const raw = dataTransfer.getData(WORKFLOW_PALETTE_DRAG_MIME);
28
+ if (typeof raw !== "string" || raw.length === 0) return null;
29
+ return parsePaletteDragItem(raw);
30
+ }
31
+ export {
32
+ WORKFLOW_PALETTE_DRAG_MIME,
33
+ readPaletteDragItem,
34
+ writePaletteDragPayload
35
+ };
36
+ //# sourceMappingURL=palette-drag.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/workflows/lib/palette-drag.ts"],
4
+ "sourcesContent": ["/**\n * Palette drag transfer contract (spec section 4.2: \"Drag-from-palette drops at\n * the cursor; click appends for keyboard users\").\n *\n * A palette entry carries TWO payloads, the same way a ledger row does\n * (`lib/ledger-drag.ts`): a human-readable `text/plain` label so dropping\n * somewhere with no handler degrades to inserting text rather than doing\n * something surprising, and a private MIME carrying the machine payload the\n * canvas reads.\n *\n * Dragging is an ENHANCEMENT over the click path, never the only way in: every\n * palette entry stays a button, because the click path is the keyboard path.\n *\n * PURE and DOM-free: it reads a minimal `DataTransfer` shape, so the payload is\n * unit-testable without a real drag gesture (jsdom cannot perform one).\n */\n\nexport const WORKFLOW_PALETTE_DRAG_MIME = 'application/x-om-workflow-palette'\n\nexport type PaletteDragItem =\n | { kind: 'step'; nodeType: string }\n | { kind: 'activity'; activityType: string }\n\nexport interface PaletteDragDataTransfer {\n getData: (type: string) => string\n setData: (type: string, value: string) => void\n types?: ReadonlyArray<string>\n effectAllowed?: string\n}\n\nexport function writePaletteDragPayload(\n dataTransfer: PaletteDragDataTransfer,\n item: PaletteDragItem,\n label: string,\n): void {\n dataTransfer.setData('text/plain', label)\n dataTransfer.setData(WORKFLOW_PALETTE_DRAG_MIME, JSON.stringify(item))\n dataTransfer.effectAllowed = 'copy'\n}\n\nfunction parsePaletteDragItem(raw: string): PaletteDragItem | null {\n let parsed: unknown\n try {\n parsed = JSON.parse(raw)\n } catch {\n return null\n }\n if (!parsed || typeof parsed !== 'object') return null\n const candidate = parsed as Record<string, unknown>\n if (candidate.kind === 'step' && typeof candidate.nodeType === 'string' && candidate.nodeType.length > 0) {\n return { kind: 'step', nodeType: candidate.nodeType }\n }\n if (candidate.kind === 'activity' && typeof candidate.activityType === 'string' && candidate.activityType.length > 0) {\n return { kind: 'activity', activityType: candidate.activityType }\n }\n return null\n}\n\n/** The dragged palette entry, or null when the drag did not come from the palette. */\nexport function readPaletteDragItem(\n dataTransfer: PaletteDragDataTransfer | null | undefined,\n): PaletteDragItem | null {\n if (!dataTransfer) return null\n if (Array.isArray(dataTransfer.types) && !dataTransfer.types.includes(WORKFLOW_PALETTE_DRAG_MIME)) return null\n const raw = dataTransfer.getData(WORKFLOW_PALETTE_DRAG_MIME)\n if (typeof raw !== 'string' || raw.length === 0) return null\n return parsePaletteDragItem(raw)\n}\n"],
5
+ "mappings": "AAiBO,MAAM,6BAA6B;AAanC,SAAS,wBACd,cACA,MACA,OACM;AACN,eAAa,QAAQ,cAAc,KAAK;AACxC,eAAa,QAAQ,4BAA4B,KAAK,UAAU,IAAI,CAAC;AACrE,eAAa,gBAAgB;AAC/B;AAEA,SAAS,qBAAqB,KAAqC;AACjE,MAAI;AACJ,MAAI;AACF,aAAS,KAAK,MAAM,GAAG;AAAA,EACzB,QAAQ;AACN,WAAO;AAAA,EACT;AACA,MAAI,CAAC,UAAU,OAAO,WAAW,SAAU,QAAO;AAClD,QAAM,YAAY;AAClB,MAAI,UAAU,SAAS,UAAU,OAAO,UAAU,aAAa,YAAY,UAAU,SAAS,SAAS,GAAG;AACxG,WAAO,EAAE,MAAM,QAAQ,UAAU,UAAU,SAAS;AAAA,EACtD;AACA,MAAI,UAAU,SAAS,cAAc,OAAO,UAAU,iBAAiB,YAAY,UAAU,aAAa,SAAS,GAAG;AACpH,WAAO,EAAE,MAAM,YAAY,cAAc,UAAU,aAAa;AAAA,EAClE;AACA,SAAO;AACT;AAGO,SAAS,oBACd,cACwB;AACxB,MAAI,CAAC,aAAc,QAAO;AAC1B,MAAI,MAAM,QAAQ,aAAa,KAAK,KAAK,CAAC,aAAa,MAAM,SAAS,0BAA0B,EAAG,QAAO;AAC1G,QAAM,MAAM,aAAa,QAAQ,0BAA0B;AAC3D,MAAI,OAAO,QAAQ,YAAY,IAAI,WAAW,EAAG,QAAO;AACxD,SAAO,qBAAqB,GAAG;AACjC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,45 @@
1
+ import { generateTransitionId } from "./graph-utils.js";
2
+ import { isDataMappingEdge } from "./data-edge-mapping.js";
3
+ import { buildWorkflowRouteEdge } from "./route-edge.js";
4
+ function routeAt(edges, edgeId) {
5
+ return edges.find((edge) => edge.id === edgeId);
6
+ }
7
+ function insertStepOnRoute(nodes, edges, edgeId, newNode) {
8
+ const route = routeAt(edges, edgeId);
9
+ if (!route) return { ok: false, code: "unknownRoute" };
10
+ if (isDataMappingEdge(route)) return { ok: false, code: "dataMappingRoute" };
11
+ const continuation = buildWorkflowRouteEdge({
12
+ id: generateTransitionId(),
13
+ source: newNode.id,
14
+ target: route.target,
15
+ data: {
16
+ trigger: "auto",
17
+ preConditions: [],
18
+ postConditions: [],
19
+ activities: [],
20
+ label: ""
21
+ }
22
+ });
23
+ const nextEdges = edges.flatMap(
24
+ (edge) => edge.id === edgeId ? [{ ...edge, target: newNode.id, targetHandle: null }, continuation] : [edge]
25
+ );
26
+ return { ok: true, nodes: [...nodes, newNode], edges: nextEdges };
27
+ }
28
+ function appendActivityToRoute(edges, edgeId, activity) {
29
+ const route = routeAt(edges, edgeId);
30
+ if (!route) return { ok: false, code: "unknownRoute" };
31
+ if (isDataMappingEdge(route)) return { ok: false, code: "dataMappingRoute" };
32
+ const data = route.data ?? {};
33
+ const existing = Array.isArray(data.activities) ? data.activities : [];
34
+ return {
35
+ ok: true,
36
+ edges: edges.map(
37
+ (edge) => edge.id === edgeId ? { ...edge, data: { ...data, activities: [...existing, activity] } } : edge
38
+ )
39
+ };
40
+ }
41
+ export {
42
+ appendActivityToRoute,
43
+ insertStepOnRoute
44
+ };
45
+ //# sourceMappingURL=palette-drop.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/workflows/lib/palette-drop.ts"],
4
+ "sourcesContent": ["/**\n * What a palette drop does to the graph (spec sections 4.2 and 4.4).\n *\n * Two drop targets, two effects:\n * - a step dropped ON A ROUTE is spliced between that route's endpoints;\n * - an action dropped ON A ROUTE is appended to that route's activities, which\n * is what the activity chips (#4244) then render.\n *\n * A step dropped on empty canvas is just an add at the cursor and needs nothing\n * from here \u2014 `lib/node-placement.ts` already resolves the position.\n *\n * **Insert-on-route keeps the original route's data on the FIRST segment**\n * (`from \u2192 new step`). A route's condition guards LEAVING its source step and\n * its activities run on the way out, so both belong to the segment that still\n * starts where the author put them; an error route likewise stays the error path\n * out of that step. Just as importantly, the durable `transitionId` is what\n * mid-flight state resolves against (`instance.pendingTransition`,\n * `WorkflowBranchInstance.branchKey`), so it must stay attached to the segment\n * that still leaves the same step. The second segment (`new step \u2192 to`) is a\n * fresh, unconditional auto route.\n *\n * PURE: plain graph data in, plain graph data out, machine-readable rejections\n * the editor translates.\n */\n\nimport type { Node, Edge } from '@xyflow/react'\nimport { generateTransitionId } from './graph-utils'\nimport { isDataMappingEdge } from './data-edge-mapping'\nimport { buildWorkflowRouteEdge } from './route-edge'\n\nexport type PaletteDropRejectionCode = 'unknownRoute' | 'dataMappingRoute'\n\nexport type PaletteDropRejection = { ok: false; code: PaletteDropRejectionCode }\n\nexport type InsertStepOnRouteResult =\n | { ok: true; nodes: Node[]; edges: Edge[] }\n | PaletteDropRejection\n\nexport type AppendActivityToRouteResult =\n | { ok: true; edges: Edge[] }\n | PaletteDropRejection\n\nexport interface RouteActivity {\n activityId: string\n activityName: string\n activityType: string\n config: Record<string, unknown>\n}\n\nfunction routeAt(edges: Edge[], edgeId: string): Edge | undefined {\n return edges.find((edge) => edge.id === edgeId)\n}\n\n/**\n * Splice a new step into an existing route.\n *\n * The original transition is retargeted at the new step and keeps everything it\n * carried \u2014 id, label, condition, activities, priority, kind. A second,\n * unconditional route continues from the new step to the original target.\n */\nexport function insertStepOnRoute(\n nodes: Node[],\n edges: Edge[],\n edgeId: string,\n newNode: Node,\n): InsertStepOnRouteResult {\n const route = routeAt(edges, edgeId)\n if (!route) return { ok: false, code: 'unknownRoute' }\n if (isDataMappingEdge(route)) return { ok: false, code: 'dataMappingRoute' }\n\n const continuation: Edge = buildWorkflowRouteEdge({\n id: generateTransitionId(),\n source: newNode.id,\n target: route.target,\n data: {\n trigger: 'auto',\n preConditions: [],\n postConditions: [],\n activities: [],\n label: '',\n },\n })\n\n const nextEdges = edges.flatMap((edge) =>\n edge.id === edgeId\n ? [{ ...edge, target: newNode.id, targetHandle: null }, continuation]\n : [edge],\n )\n\n return { ok: true, nodes: [...nodes, newNode], edges: nextEdges }\n}\n\n/** Append an action to a route's activity list (the chips render it). */\nexport function appendActivityToRoute(\n edges: Edge[],\n edgeId: string,\n activity: RouteActivity,\n): AppendActivityToRouteResult {\n const route = routeAt(edges, edgeId)\n if (!route) return { ok: false, code: 'unknownRoute' }\n if (isDataMappingEdge(route)) return { ok: false, code: 'dataMappingRoute' }\n\n const data = (route.data ?? {}) as Record<string, unknown>\n const existing = Array.isArray(data.activities) ? data.activities : []\n\n return {\n ok: true,\n edges: edges.map((edge) =>\n edge.id === edgeId\n ? { ...edge, data: { ...data, activities: [...existing, activity] } }\n : edge,\n ),\n }\n}\n"],
5
+ "mappings": "AA0BA,SAAS,4BAA4B;AACrC,SAAS,yBAAyB;AAClC,SAAS,8BAA8B;AAqBvC,SAAS,QAAQ,OAAe,QAAkC;AAChE,SAAO,MAAM,KAAK,CAAC,SAAS,KAAK,OAAO,MAAM;AAChD;AASO,SAAS,kBACd,OACA,OACA,QACA,SACyB;AACzB,QAAM,QAAQ,QAAQ,OAAO,MAAM;AACnC,MAAI,CAAC,MAAO,QAAO,EAAE,IAAI,OAAO,MAAM,eAAe;AACrD,MAAI,kBAAkB,KAAK,EAAG,QAAO,EAAE,IAAI,OAAO,MAAM,mBAAmB;AAE3E,QAAM,eAAqB,uBAAuB;AAAA,IAChD,IAAI,qBAAqB;AAAA,IACzB,QAAQ,QAAQ;AAAA,IAChB,QAAQ,MAAM;AAAA,IACd,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,eAAe,CAAC;AAAA,MAChB,gBAAgB,CAAC;AAAA,MACjB,YAAY,CAAC;AAAA,MACb,OAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,QAAM,YAAY,MAAM;AAAA,IAAQ,CAAC,SAC/B,KAAK,OAAO,SACR,CAAC,EAAE,GAAG,MAAM,QAAQ,QAAQ,IAAI,cAAc,KAAK,GAAG,YAAY,IAClE,CAAC,IAAI;AAAA,EACX;AAEA,SAAO,EAAE,IAAI,MAAM,OAAO,CAAC,GAAG,OAAO,OAAO,GAAG,OAAO,UAAU;AAClE;AAGO,SAAS,sBACd,OACA,QACA,UAC6B;AAC7B,QAAM,QAAQ,QAAQ,OAAO,MAAM;AACnC,MAAI,CAAC,MAAO,QAAO,EAAE,IAAI,OAAO,MAAM,eAAe;AACrD,MAAI,kBAAkB,KAAK,EAAG,QAAO,EAAE,IAAI,OAAO,MAAM,mBAAmB;AAE3E,QAAM,OAAQ,MAAM,QAAQ,CAAC;AAC7B,QAAM,WAAW,MAAM,QAAQ,KAAK,UAAU,IAAI,KAAK,aAAa,CAAC;AAErE,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,OAAO,MAAM;AAAA,MAAI,CAAC,SAChB,KAAK,OAAO,SACR,EAAE,GAAG,MAAM,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,GAAG,UAAU,QAAQ,EAAE,EAAE,IAClE;AAAA,IACN;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -8,7 +8,8 @@ import {
8
8
  } from "../data/entities.js";
9
9
  import { logWorkflowEvent } from "./event-logger.js";
10
10
  import * as stepHandler from "./step-handler.js";
11
- import { branchToken } from "./execution-token.js";
11
+ import { branchToken, mergeTokenContext } from "./execution-token.js";
12
+ import { WORKFLOW_ERROR_CONTEXT_KEY, buildErrorContextEntry } from "./error-routing.js";
12
13
  async function resumeBranch(em, options) {
13
14
  const branch = await em.findOne(WorkflowBranchInstance, {
14
15
  id: options.branchInstanceId,
@@ -237,9 +238,24 @@ async function advanceOneBranch(em, container, instance, definition, branch, con
237
238
  token,
238
239
  selected.fromStepId,
239
240
  selected.toStepId,
240
- evalContext
241
+ { ...evalContext, transitionId: selected.transitionId }
241
242
  );
242
243
  if (!transitionResult.success) {
244
+ const routed = await followBranchErrorRoute(
245
+ em,
246
+ container,
247
+ instance,
248
+ branch,
249
+ token,
250
+ transitionResult,
251
+ evalContext
252
+ );
253
+ if (routed) {
254
+ if (branch.currentStepId === branch.joinStepId) {
255
+ await completeBranchAtJoin(em, instance, branch);
256
+ }
257
+ return "advanced";
258
+ }
243
259
  await failBranch(em, instance, branch, transitionResult.error || "Branch transition failed");
244
260
  return "failed";
245
261
  }
@@ -253,6 +269,45 @@ async function advanceOneBranch(em, container, instance, definition, branch, con
253
269
  return "failed";
254
270
  }
255
271
  }
272
+ async function followBranchErrorRoute(em, container, instance, branch, token, transitionResult, evalContext) {
273
+ const { failedStepId, errorRoute } = transitionResult;
274
+ if (!failedStepId || !errorRoute) return false;
275
+ const error = transitionResult.error || "Branch transition failed";
276
+ await logWorkflowEvent(em, {
277
+ workflowInstanceId: instance.id,
278
+ branchInstanceId: branch.id,
279
+ eventType: "ERROR_ROUTED",
280
+ eventData: {
281
+ failedStepId,
282
+ toStepId: errorRoute.toStepId,
283
+ transitionId: errorRoute.transitionId,
284
+ branchKey: branch.branchKey,
285
+ error
286
+ },
287
+ tenantId: instance.tenantId,
288
+ organizationId: instance.organizationId
289
+ });
290
+ const errorEntry = buildErrorContextEntry(failedStepId, error);
291
+ mergeTokenContext(token, { [WORKFLOW_ERROR_CONTEXT_KEY]: errorEntry });
292
+ await em.flush();
293
+ const transitionHandler = await import("./transition-handler.js");
294
+ const routedResult = await transitionHandler.executeTransitionForToken(
295
+ em,
296
+ container,
297
+ token,
298
+ failedStepId,
299
+ errorRoute.toStepId,
300
+ {
301
+ ...evalContext,
302
+ workflowContext: {
303
+ ...evalContext.workflowContext,
304
+ [WORKFLOW_ERROR_CONTEXT_KEY]: errorEntry
305
+ },
306
+ transitionId: errorRoute.transitionId
307
+ }
308
+ );
309
+ return routedResult.success === true;
310
+ }
256
311
  async function completeBranchAtJoin(em, instance, branch) {
257
312
  const now = /* @__PURE__ */ new Date();
258
313
  branch.status = "COMPLETED";