@open-mercato/core 0.7.1-develop.7193.1.910a5b0a1e → 0.7.1-develop.7195.1.b5efd1d51a

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 (1241) 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/bootstrap.js +7 -3
  6. package/dist/bootstrap.js.map +2 -2
  7. package/dist/generated/entities/action_log/index.js +2 -0
  8. package/dist/generated/entities/action_log/index.js.map +2 -2
  9. package/dist/generated/entities/user/index.js +2 -0
  10. package/dist/generated/entities/user/index.js.map +2 -2
  11. package/dist/generated/entities/user_task/index.js +14 -0
  12. package/dist/generated/entities/user_task/index.js.map +2 -2
  13. package/dist/generated/entities/workflow_definition/index.js +6 -0
  14. package/dist/generated/entities/workflow_definition/index.js.map +2 -2
  15. package/dist/generated/entities/workflow_definition_draft/index.js +25 -0
  16. package/dist/generated/entities/workflow_definition_draft/index.js.map +7 -0
  17. package/dist/generated/entities/workflow_definition_metric_rollup/index.js +23 -0
  18. package/dist/generated/entities/workflow_definition_metric_rollup/index.js.map +7 -0
  19. package/dist/generated/entities/workflow_instance/index.js +4 -0
  20. package/dist/generated/entities/workflow_instance/index.js.map +2 -2
  21. package/dist/generated/entities.ids.generated.js +4 -1
  22. package/dist/generated/entities.ids.generated.js.map +2 -2
  23. package/dist/generated/entity-fields-registry.js +39 -0
  24. package/dist/generated/entity-fields-registry.js.map +2 -2
  25. package/dist/helpers/integration/workflowsFixtures.js +477 -2
  26. package/dist/helpers/integration/workflowsFixtures.js.map +2 -2
  27. package/dist/helpers/integration/workflowsUi.js +148 -0
  28. package/dist/helpers/integration/workflowsUi.js.map +7 -0
  29. package/dist/modules/attachments/lib/createFromBuffer.js +79 -0
  30. package/dist/modules/attachments/lib/createFromBuffer.js.map +7 -0
  31. package/dist/modules/audit_logs/data/entities.js +5 -0
  32. package/dist/modules/audit_logs/data/entities.js.map +2 -2
  33. package/dist/modules/audit_logs/data/validators.js +1 -0
  34. package/dist/modules/audit_logs/data/validators.js.map +2 -2
  35. package/dist/modules/audit_logs/lib/projections.js +2 -1
  36. package/dist/modules/audit_logs/lib/projections.js.map +2 -2
  37. package/dist/modules/audit_logs/migrations/Migration20260625120000.js +15 -0
  38. package/dist/modules/audit_logs/migrations/Migration20260625120000.js.map +7 -0
  39. package/dist/modules/audit_logs/services/actionLogService.js +3 -0
  40. package/dist/modules/audit_logs/services/actionLogService.js.map +2 -2
  41. package/dist/modules/auth/data/entities.js +6 -0
  42. package/dist/modules/auth/data/entities.js.map +2 -2
  43. package/dist/modules/auth/lib/executionPrincipal.js +140 -0
  44. package/dist/modules/auth/lib/executionPrincipal.js.map +7 -0
  45. package/dist/modules/auth/migrations/Migration20260625050000.js +13 -0
  46. package/dist/modules/auth/migrations/Migration20260625050000.js.map +7 -0
  47. package/dist/modules/business_rules/components/InlineRuleEditor.js +154 -0
  48. package/dist/modules/business_rules/components/InlineRuleEditor.js.map +7 -0
  49. package/dist/modules/business_rules/data/validators.js +6 -0
  50. package/dist/modules/business_rules/data/validators.js.map +2 -2
  51. package/dist/modules/business_rules/lib/rule-engine.js +5 -3
  52. package/dist/modules/business_rules/lib/rule-engine.js.map +2 -2
  53. package/dist/modules/catalog/commands/products.js +5 -0
  54. package/dist/modules/catalog/commands/products.js.map +2 -2
  55. package/dist/modules/catalog/workflows.js +19 -0
  56. package/dist/modules/catalog/workflows.js.map +7 -0
  57. package/dist/modules/customer_accounts/backend/customer_accounts/roles/[id]/page.js +3 -1
  58. package/dist/modules/customer_accounts/backend/customer_accounts/roles/[id]/page.js.map +2 -2
  59. package/dist/modules/customer_accounts/cli.js +80 -0
  60. package/dist/modules/customer_accounts/cli.js.map +7 -0
  61. package/dist/modules/customer_accounts/lib/customerRoleAclSync.js +59 -0
  62. package/dist/modules/customer_accounts/lib/customerRoleAclSync.js.map +7 -0
  63. package/dist/modules/customer_accounts/setup.js +4 -2
  64. package/dist/modules/customer_accounts/setup.js.map +2 -2
  65. package/dist/modules/customers/commands/deals.js +4 -0
  66. package/dist/modules/customers/commands/deals.js.map +2 -2
  67. package/dist/modules/customers/components/detail/ChangelogEntryRow.js +1 -1
  68. package/dist/modules/customers/components/detail/ChangelogEntryRow.js.map +2 -2
  69. package/dist/modules/customers/components/detail/utils.js +2 -0
  70. package/dist/modules/customers/components/detail/utils.js.map +2 -2
  71. package/dist/modules/customers/events.js +13 -2
  72. package/dist/modules/customers/events.js.map +2 -2
  73. package/dist/modules/customers/lib/link-workflow-task-handler.js +64 -0
  74. package/dist/modules/customers/lib/link-workflow-task-handler.js.map +7 -0
  75. package/dist/modules/customers/lib/todoCompatibility.js +1 -1
  76. package/dist/modules/customers/lib/todoCompatibility.js.map +2 -2
  77. package/dist/modules/customers/lib/workflowTaskLink.js +9 -0
  78. package/dist/modules/customers/lib/workflowTaskLink.js.map +7 -0
  79. package/dist/modules/customers/subscribers/link-workflow-task.js +12 -0
  80. package/dist/modules/customers/subscribers/link-workflow-task.js.map +7 -0
  81. package/dist/modules/customers/workflows.js +29 -0
  82. package/dist/modules/customers/workflows.js.map +7 -0
  83. package/dist/modules/entities/api/records.js +13 -33
  84. package/dist/modules/entities/api/records.js.map +3 -3
  85. package/dist/modules/entities/lib/entityClassification.js +60 -0
  86. package/dist/modules/entities/lib/entityClassification.js.map +7 -0
  87. package/dist/modules/sales/commands/documents.js +31 -0
  88. package/dist/modules/sales/commands/documents.js.map +2 -2
  89. package/dist/modules/sales/events.js +12 -1
  90. package/dist/modules/sales/events.js.map +2 -2
  91. package/dist/modules/sales/workflows.js +12 -1
  92. package/dist/modules/sales/workflows.js.map +2 -2
  93. package/dist/modules/seeds/cli.js +199 -0
  94. package/dist/modules/seeds/cli.js.map +7 -0
  95. package/dist/modules/seeds/examples/sample-seed.json +26 -0
  96. package/dist/modules/seeds/index.js +12 -0
  97. package/dist/modules/seeds/index.js.map +7 -0
  98. package/dist/modules/workflows/acl.js +96 -0
  99. package/dist/modules/workflows/acl.js.map +2 -2
  100. package/dist/modules/workflows/ai-agents.js +50 -0
  101. package/dist/modules/workflows/ai-agents.js.map +7 -0
  102. package/dist/modules/workflows/ai-tools/authoring-pack.js +582 -0
  103. package/dist/modules/workflows/ai-tools/authoring-pack.js.map +7 -0
  104. package/dist/modules/workflows/ai-tools/types.js +43 -0
  105. package/dist/modules/workflows/ai-tools/types.js.map +7 -0
  106. package/dist/modules/workflows/ai-tools.js +10 -0
  107. package/dist/modules/workflows/ai-tools.js.map +7 -0
  108. package/dist/modules/workflows/api/command-settings/route.js +137 -0
  109. package/dist/modules/workflows/api/command-settings/route.js.map +7 -0
  110. package/dist/modules/workflows/api/commands/route.js +72 -0
  111. package/dist/modules/workflows/api/commands/route.js.map +7 -0
  112. package/dist/modules/workflows/api/definitions/[id]/callers/route.js +76 -0
  113. package/dist/modules/workflows/api/definitions/[id]/callers/route.js.map +7 -0
  114. package/dist/modules/workflows/api/definitions/[id]/context-schema/route.js +134 -0
  115. package/dist/modules/workflows/api/definitions/[id]/context-schema/route.js.map +7 -0
  116. package/dist/modules/workflows/api/definitions/[id]/customize/route.js +5 -1
  117. package/dist/modules/workflows/api/definitions/[id]/customize/route.js.map +2 -2
  118. package/dist/modules/workflows/api/definitions/[id]/draft/route.js +286 -0
  119. package/dist/modules/workflows/api/definitions/[id]/draft/route.js.map +7 -0
  120. package/dist/modules/workflows/api/definitions/[id]/publish/route.js +207 -0
  121. package/dist/modules/workflows/api/definitions/[id]/publish/route.js.map +7 -0
  122. package/dist/modules/workflows/api/definitions/[id]/reset-to-code/route.js +5 -0
  123. package/dist/modules/workflows/api/definitions/[id]/reset-to-code/route.js.map +2 -2
  124. package/dist/modules/workflows/api/definitions/[id]/route.js +93 -9
  125. package/dist/modules/workflows/api/definitions/[id]/route.js.map +3 -3
  126. package/dist/modules/workflows/api/definitions/[id]/test-step/route.js +210 -0
  127. package/dist/modules/workflows/api/definitions/[id]/test-step/route.js.map +7 -0
  128. package/dist/modules/workflows/api/definitions/generate/route.js +233 -0
  129. package/dist/modules/workflows/api/definitions/generate/route.js.map +7 -0
  130. package/dist/modules/workflows/api/definitions/route.js +61 -113
  131. package/dist/modules/workflows/api/definitions/route.js.map +2 -2
  132. package/dist/modules/workflows/api/definitions/serialize.js +9 -0
  133. package/dist/modules/workflows/api/definitions/serialize.js.map +2 -2
  134. package/dist/modules/workflows/api/endpoints/route.js +69 -0
  135. package/dist/modules/workflows/api/endpoints/route.js.map +7 -0
  136. package/dist/modules/workflows/api/functions/route.js +73 -0
  137. package/dist/modules/workflows/api/functions/route.js.map +7 -0
  138. package/dist/modules/workflows/api/grantable-features/route.js +75 -0
  139. package/dist/modules/workflows/api/grantable-features/route.js.map +7 -0
  140. package/dist/modules/workflows/api/instances/[id]/context/route.js +180 -0
  141. package/dist/modules/workflows/api/instances/[id]/context/route.js.map +7 -0
  142. package/dist/modules/workflows/api/instances/[id]/rerun-step/route.js +184 -0
  143. package/dist/modules/workflows/api/instances/[id]/rerun-step/route.js.map +7 -0
  144. package/dist/modules/workflows/api/instances/[id]/retry/route.js +12 -2
  145. package/dist/modules/workflows/api/instances/[id]/retry/route.js.map +2 -2
  146. package/dist/modules/workflows/api/instances/[id]/step-through/route.js +148 -0
  147. package/dist/modules/workflows/api/instances/[id]/step-through/route.js.map +7 -0
  148. package/dist/modules/workflows/api/instances/[id]/steps/route.js +123 -0
  149. package/dist/modules/workflows/api/instances/[id]/steps/route.js.map +7 -0
  150. package/dist/modules/workflows/api/instances/[id]/would-do/route.js +172 -0
  151. package/dist/modules/workflows/api/instances/[id]/would-do/route.js.map +7 -0
  152. package/dist/modules/workflows/api/instances/bulk-replay/route.js +117 -0
  153. package/dist/modules/workflows/api/instances/bulk-replay/route.js.map +7 -0
  154. package/dist/modules/workflows/api/instances/failure-queue/route.js +165 -0
  155. package/dist/modules/workflows/api/instances/failure-queue/route.js.map +7 -0
  156. package/dist/modules/workflows/api/instances/route.js +94 -3
  157. package/dist/modules/workflows/api/instances/route.js.map +2 -2
  158. package/dist/modules/workflows/api/metrics/definitions/route.js +188 -0
  159. package/dist/modules/workflows/api/metrics/definitions/route.js.map +7 -0
  160. package/dist/modules/workflows/api/openapi.js +415 -4
  161. package/dist/modules/workflows/api/openapi.js.map +2 -2
  162. package/dist/modules/workflows/api/portal/tasks/[id]/complete/route.js +132 -0
  163. package/dist/modules/workflows/api/portal/tasks/[id]/complete/route.js.map +7 -0
  164. package/dist/modules/workflows/api/portal/tasks/[id]/route.js +97 -0
  165. package/dist/modules/workflows/api/portal/tasks/[id]/route.js.map +7 -0
  166. package/dist/modules/workflows/api/portal/tasks/route.js +126 -0
  167. package/dist/modules/workflows/api/portal/tasks/route.js.map +7 -0
  168. package/dist/modules/workflows/api/rule-usage/route.js +80 -0
  169. package/dist/modules/workflows/api/rule-usage/route.js.map +7 -0
  170. package/dist/modules/workflows/api/task-settings/route.js +107 -0
  171. package/dist/modules/workflows/api/task-settings/route.js.map +7 -0
  172. package/dist/modules/workflows/api/tasks/[id]/claim/route.js +27 -16
  173. package/dist/modules/workflows/api/tasks/[id]/claim/route.js.map +2 -2
  174. package/dist/modules/workflows/api/tasks/[id]/complete/route.js +40 -16
  175. package/dist/modules/workflows/api/tasks/[id]/complete/route.js.map +2 -2
  176. package/dist/modules/workflows/api/tasks/[id]/reassign/route.js +150 -0
  177. package/dist/modules/workflows/api/tasks/[id]/reassign/route.js.map +7 -0
  178. package/dist/modules/workflows/api/tasks/[id]/route.js +39 -6
  179. package/dist/modules/workflows/api/tasks/[id]/route.js.map +2 -2
  180. package/dist/modules/workflows/api/tasks/[id]/unclaim/route.js +100 -0
  181. package/dist/modules/workflows/api/tasks/[id]/unclaim/route.js.map +7 -0
  182. package/dist/modules/workflows/api/tasks/route.js +37 -6
  183. package/dist/modules/workflows/api/tasks/route.js.map +2 -2
  184. package/dist/modules/workflows/api/tasks/serialize.js +83 -0
  185. package/dist/modules/workflows/api/tasks/serialize.js.map +7 -0
  186. package/dist/modules/workflows/api/templates/route.js +69 -0
  187. package/dist/modules/workflows/api/templates/route.js.map +7 -0
  188. package/dist/modules/workflows/api/work-inbox/next/route.js +129 -0
  189. package/dist/modules/workflows/api/work-inbox/next/route.js.map +7 -0
  190. package/dist/modules/workflows/api/work-inbox/route.js +119 -0
  191. package/dist/modules/workflows/api/work-inbox/route.js.map +7 -0
  192. package/dist/modules/workflows/backend/config/workflows/page.js +10 -0
  193. package/dist/modules/workflows/backend/config/workflows/page.js.map +7 -0
  194. package/dist/modules/workflows/backend/config/workflows/page.meta.js +35 -0
  195. package/dist/modules/workflows/backend/config/workflows/page.meta.js.map +7 -0
  196. package/dist/modules/workflows/backend/definitions/[id]/page.js +6 -271
  197. package/dist/modules/workflows/backend/definitions/[id]/page.js.map +3 -3
  198. package/dist/modules/workflows/backend/definitions/create/page.js +7 -56
  199. package/dist/modules/workflows/backend/definitions/create/page.js.map +2 -2
  200. package/dist/modules/workflows/backend/definitions/create/page.meta.js +1 -1
  201. package/dist/modules/workflows/backend/definitions/create/page.meta.js.map +2 -2
  202. package/dist/modules/workflows/backend/definitions/page.js +131 -51
  203. package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
  204. package/dist/modules/workflows/backend/definitions/visual-editor/page.js +2606 -677
  205. package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +3 -3
  206. package/dist/modules/workflows/backend/instances/[id]/page.js +532 -421
  207. package/dist/modules/workflows/backend/instances/[id]/page.js.map +2 -2
  208. package/dist/modules/workflows/backend/instances/[id]/page.meta.js +1 -1
  209. package/dist/modules/workflows/backend/instances/[id]/page.meta.js.map +1 -1
  210. package/dist/modules/workflows/backend/instances/failure-queue/page.js +211 -0
  211. package/dist/modules/workflows/backend/instances/failure-queue/page.js.map +7 -0
  212. package/dist/modules/workflows/backend/instances/failure-queue/page.meta.js +20 -0
  213. package/dist/modules/workflows/backend/instances/failure-queue/page.meta.js.map +7 -0
  214. package/dist/modules/workflows/backend/instances/page.js +159 -22
  215. package/dist/modules/workflows/backend/instances/page.js.map +2 -2
  216. package/dist/modules/workflows/backend/instances/page.meta.js +1 -1
  217. package/dist/modules/workflows/backend/instances/page.meta.js.map +1 -1
  218. package/dist/modules/workflows/backend/tasks/[id]/page.js +553 -392
  219. package/dist/modules/workflows/backend/tasks/[id]/page.js.map +3 -3
  220. package/dist/modules/workflows/backend/tasks/page.js +8 -250
  221. package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
  222. package/dist/modules/workflows/backend/tasks/page.meta.js +1 -0
  223. package/dist/modules/workflows/backend/tasks/page.meta.js.map +2 -2
  224. package/dist/modules/workflows/backend/work-inbox/page.js +399 -0
  225. package/dist/modules/workflows/backend/work-inbox/page.js.map +7 -0
  226. package/dist/modules/workflows/backend/work-inbox/page.meta.js +19 -0
  227. package/dist/modules/workflows/backend/work-inbox/page.meta.js.map +7 -0
  228. package/dist/modules/workflows/cli.js +1 -1
  229. package/dist/modules/workflows/cli.js.map +2 -2
  230. package/dist/modules/workflows/commands/tasks.js +81 -0
  231. package/dist/modules/workflows/commands/tasks.js.map +7 -0
  232. package/dist/modules/workflows/components/ActivitiesEditor.js +281 -287
  233. package/dist/modules/workflows/components/ActivitiesEditor.js.map +2 -2
  234. package/dist/modules/workflows/components/ActivityEditDialog.js +220 -0
  235. package/dist/modules/workflows/components/ActivityEditDialog.js.map +7 -0
  236. package/dist/modules/workflows/components/AgentSelector.js +115 -0
  237. package/dist/modules/workflows/components/AgentSelector.js.map +7 -0
  238. package/dist/modules/workflows/components/AnnotationEditDialog.js +110 -0
  239. package/dist/modules/workflows/components/AnnotationEditDialog.js.map +7 -0
  240. package/dist/modules/workflows/components/BusinessRuleUsagePanel.js +71 -0
  241. package/dist/modules/workflows/components/BusinessRuleUsagePanel.js.map +7 -0
  242. package/dist/modules/workflows/components/BusinessRulesSelector.js +151 -93
  243. package/dist/modules/workflows/components/BusinessRulesSelector.js.map +2 -2
  244. package/dist/modules/workflows/components/ConfigJsonTextarea.js +85 -0
  245. package/dist/modules/workflows/components/ConfigJsonTextarea.js.map +7 -0
  246. package/dist/modules/workflows/components/ContextSchemaEditor.js +150 -0
  247. package/dist/modules/workflows/components/ContextSchemaEditor.js.map +7 -0
  248. package/dist/modules/workflows/components/DefinitionErrorHandlerField.js +102 -0
  249. package/dist/modules/workflows/components/DefinitionErrorHandlerField.js.map +7 -0
  250. package/dist/modules/workflows/components/DefinitionMetadataDrawer.js +377 -0
  251. package/dist/modules/workflows/components/DefinitionMetadataDrawer.js.map +7 -0
  252. package/dist/modules/workflows/components/DefinitionMetricsCells.js +132 -0
  253. package/dist/modules/workflows/components/DefinitionMetricsCells.js.map +7 -0
  254. package/dist/modules/workflows/components/DefinitionTriggersEditor.js +307 -216
  255. package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +2 -2
  256. package/dist/modules/workflows/components/EdgeEditDialog.js +11 -18
  257. package/dist/modules/workflows/components/EdgeEditDialog.js.map +2 -2
  258. package/dist/modules/workflows/components/EdgeEditDialogCrudForm.js +112 -72
  259. package/dist/modules/workflows/components/EdgeEditDialogCrudForm.js.map +2 -2
  260. package/dist/modules/workflows/components/InputDataPanel.js +128 -0
  261. package/dist/modules/workflows/components/InputDataPanel.js.map +7 -0
  262. package/dist/modules/workflows/components/InspectorPanel.js +161 -0
  263. package/dist/modules/workflows/components/InspectorPanel.js.map +7 -0
  264. package/dist/modules/workflows/components/NodeEditDialog.js +363 -41
  265. package/dist/modules/workflows/components/NodeEditDialog.js.map +2 -2
  266. package/dist/modules/workflows/components/NodeEditDialogCrudForm.js +714 -159
  267. package/dist/modules/workflows/components/NodeEditDialogCrudForm.js.map +2 -2
  268. package/dist/modules/workflows/components/StepsEditor.js.map +2 -2
  269. package/dist/modules/workflows/components/TemplateGalleryDialog.js +148 -0
  270. package/dist/modules/workflows/components/TemplateGalleryDialog.js.map +7 -0
  271. package/dist/modules/workflows/components/TransitionsEditor.js +80 -74
  272. package/dist/modules/workflows/components/TransitionsEditor.js.map +2 -2
  273. package/dist/modules/workflows/components/TriggersDialog.js +53 -0
  274. package/dist/modules/workflows/components/TriggersDialog.js.map +7 -0
  275. package/dist/modules/workflows/components/TriggersEditor.js +331 -0
  276. package/dist/modules/workflows/components/TriggersEditor.js.map +7 -0
  277. package/dist/modules/workflows/components/WorkflowAiDraftDialog.js +278 -0
  278. package/dist/modules/workflows/components/WorkflowAiDraftDialog.js.map +7 -0
  279. package/dist/modules/workflows/components/WorkflowCodeView.js +173 -0
  280. package/dist/modules/workflows/components/WorkflowCodeView.js.map +7 -0
  281. package/dist/modules/workflows/components/WorkflowCommandPalette.js +62 -0
  282. package/dist/modules/workflows/components/WorkflowCommandPalette.js.map +7 -0
  283. package/dist/modules/workflows/components/WorkflowCompensationGhostEdge.js +70 -0
  284. package/dist/modules/workflows/components/WorkflowCompensationGhostEdge.js.map +7 -0
  285. package/dist/modules/workflows/components/WorkflowDataMappingEdge.js +36 -0
  286. package/dist/modules/workflows/components/WorkflowDataMappingEdge.js.map +7 -0
  287. package/dist/modules/workflows/components/WorkflowGraph.js +4 -2
  288. package/dist/modules/workflows/components/WorkflowGraph.js.map +2 -2
  289. package/dist/modules/workflows/components/WorkflowGraphImpl.js +324 -86
  290. package/dist/modules/workflows/components/WorkflowGraphImpl.js.map +3 -3
  291. package/dist/modules/workflows/components/WorkflowIconPicker.js +109 -0
  292. package/dist/modules/workflows/components/WorkflowIconPicker.js.map +7 -0
  293. package/dist/modules/workflows/components/WorkflowLegend.js +45 -29
  294. package/dist/modules/workflows/components/WorkflowLegend.js.map +2 -2
  295. package/dist/modules/workflows/components/WorkflowNodeCard.js +221 -22
  296. package/dist/modules/workflows/components/WorkflowNodeCard.js.map +2 -2
  297. package/dist/modules/workflows/components/WorkflowRouteChips.js +111 -0
  298. package/dist/modules/workflows/components/WorkflowRouteChips.js.map +7 -0
  299. package/dist/modules/workflows/components/WorkflowSelector.js +108 -88
  300. package/dist/modules/workflows/components/WorkflowSelector.js.map +2 -2
  301. package/dist/modules/workflows/components/WorkflowTransitionEdge.js +61 -11
  302. package/dist/modules/workflows/components/WorkflowTransitionEdge.js.map +2 -2
  303. package/dist/modules/workflows/components/WorkflowTransitionLabel.js +15 -5
  304. package/dist/modules/workflows/components/WorkflowTransitionLabel.js.map +2 -2
  305. package/dist/modules/workflows/components/fields/ActivityArrayEditor.js +88 -21
  306. package/dist/modules/workflows/components/fields/ActivityArrayEditor.js.map +2 -2
  307. package/dist/modules/workflows/components/fields/ActivityConfigFields.js +615 -0
  308. package/dist/modules/workflows/components/fields/ActivityConfigFields.js.map +7 -0
  309. package/dist/modules/workflows/components/fields/ActivityTestPanel.js +191 -0
  310. package/dist/modules/workflows/components/fields/ActivityTestPanel.js.map +7 -0
  311. package/dist/modules/workflows/components/fields/AgentInvokeConfigField.js +488 -0
  312. package/dist/modules/workflows/components/fields/AgentInvokeConfigField.js.map +7 -0
  313. package/dist/modules/workflows/components/fields/AgentReviewOnBreachField.js +61 -0
  314. package/dist/modules/workflows/components/fields/AgentReviewOnBreachField.js.map +7 -0
  315. package/dist/modules/workflows/components/fields/BranchingRoutesEditor.js +227 -0
  316. package/dist/modules/workflows/components/fields/BranchingRoutesEditor.js.map +7 -0
  317. package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js +37 -4
  318. package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js.map +2 -2
  319. package/dist/modules/workflows/components/fields/CommandPicker.js +111 -0
  320. package/dist/modules/workflows/components/fields/CommandPicker.js.map +7 -0
  321. package/dist/modules/workflows/components/fields/EndpointPicker.js +235 -0
  322. package/dist/modules/workflows/components/fields/EndpointPicker.js.map +7 -0
  323. package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js +2 -2
  324. package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js.map +2 -2
  325. package/dist/modules/workflows/components/fields/FunctionPicker.js +55 -0
  326. package/dist/modules/workflows/components/fields/FunctionPicker.js.map +7 -0
  327. package/dist/modules/workflows/components/fields/MappingArrayEditor.js +38 -15
  328. package/dist/modules/workflows/components/fields/MappingArrayEditor.js.map +2 -2
  329. package/dist/modules/workflows/components/fields/PortFieldArrayEditor.js +206 -0
  330. package/dist/modules/workflows/components/fields/PortFieldArrayEditor.js.map +7 -0
  331. package/dist/modules/workflows/components/fields/RolesMultiSelect.js +53 -0
  332. package/dist/modules/workflows/components/fields/RolesMultiSelect.js.map +7 -0
  333. package/dist/modules/workflows/components/fields/RouteOrderEditor.js +130 -0
  334. package/dist/modules/workflows/components/fields/RouteOrderEditor.js.map +7 -0
  335. package/dist/modules/workflows/components/fields/SchemaBuilderDialog.js +104 -0
  336. package/dist/modules/workflows/components/fields/SchemaBuilderDialog.js.map +7 -0
  337. package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js +2 -2
  338. package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js.map +2 -2
  339. package/dist/modules/workflows/components/fields/TaskAssignmentField.js +210 -0
  340. package/dist/modules/workflows/components/fields/TaskAssignmentField.js.map +7 -0
  341. package/dist/modules/workflows/components/fields/TaskDeadlineFields.js +126 -0
  342. package/dist/modules/workflows/components/fields/TaskDeadlineFields.js.map +7 -0
  343. package/dist/modules/workflows/components/fields/TaskDecisionsField.js +218 -0
  344. package/dist/modules/workflows/components/fields/TaskDecisionsField.js.map +7 -0
  345. package/dist/modules/workflows/components/fields/TaskEntityBindingsField.js +114 -0
  346. package/dist/modules/workflows/components/fields/TaskEntityBindingsField.js.map +7 -0
  347. package/dist/modules/workflows/components/fields/TemplateTextControl.js +64 -0
  348. package/dist/modules/workflows/components/fields/TemplateTextControl.js.map +7 -0
  349. package/dist/modules/workflows/components/fields/VariablePickerButton.js +121 -0
  350. package/dist/modules/workflows/components/fields/VariablePickerButton.js.map +7 -0
  351. package/dist/modules/workflows/components/fields/ledgerDropTarget.js +35 -0
  352. package/dist/modules/workflows/components/fields/ledgerDropTarget.js.map +7 -0
  353. package/dist/modules/workflows/components/fields/useActivityTypeOptions.js +16 -0
  354. package/dist/modules/workflows/components/fields/useActivityTypeOptions.js.map +7 -0
  355. package/dist/modules/workflows/components/formConfig.js +39 -10
  356. package/dist/modules/workflows/components/formConfig.js.map +2 -2
  357. package/dist/modules/workflows/components/mobile/MobileDefinitionDetail.js.map +2 -2
  358. package/dist/modules/workflows/components/mobile/MobileMetadataSheet.js.map +2 -2
  359. package/dist/modules/workflows/components/mobile/MobileTaskForm.js +29 -2
  360. package/dist/modules/workflows/components/mobile/MobileTaskForm.js.map +2 -2
  361. package/dist/modules/workflows/components/mobile/MobileVisualEditor.js +64 -65
  362. package/dist/modules/workflows/components/mobile/MobileVisualEditor.js.map +2 -2
  363. package/dist/modules/workflows/components/nodes/AnnotationGroupNode.js +64 -0
  364. package/dist/modules/workflows/components/nodes/AnnotationGroupNode.js.map +7 -0
  365. package/dist/modules/workflows/components/nodes/AutomatedNode.js +24 -16
  366. package/dist/modules/workflows/components/nodes/AutomatedNode.js.map +2 -2
  367. package/dist/modules/workflows/components/nodes/EndNode.js +13 -12
  368. package/dist/modules/workflows/components/nodes/EndNode.js.map +2 -2
  369. package/dist/modules/workflows/components/nodes/ErrorOutputHandle.js +29 -0
  370. package/dist/modules/workflows/components/nodes/ErrorOutputHandle.js.map +7 -0
  371. package/dist/modules/workflows/components/nodes/IfElseNode.js +51 -0
  372. package/dist/modules/workflows/components/nodes/IfElseNode.js.map +7 -0
  373. package/dist/modules/workflows/components/nodes/InvokeAgentNode.js +122 -0
  374. package/dist/modules/workflows/components/nodes/InvokeAgentNode.js.map +7 -0
  375. package/dist/modules/workflows/components/nodes/NodeOutcomeRows.js +100 -0
  376. package/dist/modules/workflows/components/nodes/NodeOutcomeRows.js.map +7 -0
  377. package/dist/modules/workflows/components/nodes/ParallelForkNode.js +18 -14
  378. package/dist/modules/workflows/components/nodes/ParallelForkNode.js.map +2 -2
  379. package/dist/modules/workflows/components/nodes/ParallelJoinNode.js +18 -14
  380. package/dist/modules/workflows/components/nodes/ParallelJoinNode.js.map +2 -2
  381. package/dist/modules/workflows/components/nodes/StartNode.js +66 -15
  382. package/dist/modules/workflows/components/nodes/StartNode.js.map +2 -2
  383. package/dist/modules/workflows/components/nodes/StickyNoteNode.js +54 -0
  384. package/dist/modules/workflows/components/nodes/StickyNoteNode.js.map +7 -0
  385. package/dist/modules/workflows/components/nodes/SubWorkflowNode.js +107 -41
  386. package/dist/modules/workflows/components/nodes/SubWorkflowNode.js.map +2 -2
  387. package/dist/modules/workflows/components/nodes/SwitchNode.js +51 -0
  388. package/dist/modules/workflows/components/nodes/SwitchNode.js.map +7 -0
  389. package/dist/modules/workflows/components/nodes/TriggerCap.js +65 -0
  390. package/dist/modules/workflows/components/nodes/TriggerCap.js.map +7 -0
  391. package/dist/modules/workflows/components/nodes/TriggerNode.js +111 -0
  392. package/dist/modules/workflows/components/nodes/TriggerNode.js.map +7 -0
  393. package/dist/modules/workflows/components/nodes/UserTaskNode.js +43 -17
  394. package/dist/modules/workflows/components/nodes/UserTaskNode.js.map +2 -2
  395. package/dist/modules/workflows/components/nodes/WaitForConditionNode.js +53 -0
  396. package/dist/modules/workflows/components/nodes/WaitForConditionNode.js.map +7 -0
  397. package/dist/modules/workflows/components/nodes/WaitForSignalNode.js +21 -15
  398. package/dist/modules/workflows/components/nodes/WaitForSignalNode.js.map +2 -2
  399. package/dist/modules/workflows/components/nodes/WaitForTimerNode.js +21 -15
  400. package/dist/modules/workflows/components/nodes/WaitForTimerNode.js.map +2 -2
  401. package/dist/modules/workflows/components/nodes/index.js +14 -0
  402. package/dist/modules/workflows/components/nodes/index.js.map +2 -2
  403. package/dist/modules/workflows/components/portal/PortalTaskForm.js +196 -0
  404. package/dist/modules/workflows/components/portal/PortalTaskForm.js.map +7 -0
  405. package/dist/modules/workflows/components/run/AgentActivityPanel.js +22 -0
  406. package/dist/modules/workflows/components/run/AgentActivityPanel.js.map +7 -0
  407. package/dist/modules/workflows/components/run/RerunStepDialog.js +106 -0
  408. package/dist/modules/workflows/components/run/RerunStepDialog.js.map +7 -0
  409. package/dist/modules/workflows/components/run/RunEventBadge.js +30 -0
  410. package/dist/modules/workflows/components/run/RunEventBadge.js.map +7 -0
  411. package/dist/modules/workflows/components/run/RunGantt.js +130 -0
  412. package/dist/modules/workflows/components/run/RunGantt.js.map +7 -0
  413. package/dist/modules/workflows/components/run/RunStatusBadge.js +82 -0
  414. package/dist/modules/workflows/components/run/RunStatusBadge.js.map +7 -0
  415. package/dist/modules/workflows/components/run/RunStepInspector.js +116 -0
  416. package/dist/modules/workflows/components/run/RunStepInspector.js.map +7 -0
  417. package/dist/modules/workflows/components/run/WouldDoReport.js +52 -0
  418. package/dist/modules/workflows/components/run/WouldDoReport.js.map +7 -0
  419. package/dist/modules/workflows/components/run/useAgentLabels.js +28 -0
  420. package/dist/modules/workflows/components/run/useAgentLabels.js.map +7 -0
  421. package/dist/modules/workflows/components/run/useLastRunOverlay.js +89 -0
  422. package/dist/modules/workflows/components/run/useLastRunOverlay.js.map +7 -0
  423. package/dist/modules/workflows/components/run/useLiveAgentActions.js +41 -0
  424. package/dist/modules/workflows/components/run/useLiveAgentActions.js.map +7 -0
  425. package/dist/modules/workflows/components/run/useLiveRunUpdates.js +57 -0
  426. package/dist/modules/workflows/components/run/useLiveRunUpdates.js.map +7 -0
  427. package/dist/modules/workflows/components/settings/CommandSettingsPageClient.js +156 -0
  428. package/dist/modules/workflows/components/settings/CommandSettingsPageClient.js.map +7 -0
  429. package/dist/modules/workflows/components/work-inbox/EntityContextPanel.js +72 -0
  430. package/dist/modules/workflows/components/work-inbox/EntityContextPanel.js.map +7 -0
  431. package/dist/modules/workflows/components/work-inbox/ReassignTaskDialog.js +156 -0
  432. package/dist/modules/workflows/components/work-inbox/ReassignTaskDialog.js.map +7 -0
  433. package/dist/modules/workflows/components/work-inbox/StatusChip.js +46 -0
  434. package/dist/modules/workflows/components/work-inbox/StatusChip.js.map +7 -0
  435. package/dist/modules/workflows/components/work-inbox/TaskActionNotice.js +53 -0
  436. package/dist/modules/workflows/components/work-inbox/TaskActionNotice.js.map +7 -0
  437. package/dist/modules/workflows/components/work-inbox/TaskFormFields.js +261 -0
  438. package/dist/modules/workflows/components/work-inbox/TaskFormFields.js.map +7 -0
  439. package/dist/modules/workflows/components/work-inbox/WorkInboxEmptyState.js +27 -0
  440. package/dist/modules/workflows/components/work-inbox/WorkInboxEmptyState.js.map +7 -0
  441. package/dist/modules/workflows/data/activity-config-schemas.js +191 -0
  442. package/dist/modules/workflows/data/activity-config-schemas.js.map +7 -0
  443. package/dist/modules/workflows/data/activity-config-warnings.js +42 -0
  444. package/dist/modules/workflows/data/activity-config-warnings.js.map +7 -0
  445. package/dist/modules/workflows/data/branching-route-warnings.js +65 -0
  446. package/dist/modules/workflows/data/branching-route-warnings.js.map +7 -0
  447. package/dist/modules/workflows/data/entities.js +144 -4
  448. package/dist/modules/workflows/data/entities.js.map +2 -2
  449. package/dist/modules/workflows/data/metrics-validators.js +35 -0
  450. package/dist/modules/workflows/data/metrics-validators.js.map +7 -0
  451. package/dist/modules/workflows/data/task-primitives.js +14 -0
  452. package/dist/modules/workflows/data/task-primitives.js.map +7 -0
  453. package/dist/modules/workflows/data/validators.js +504 -61
  454. package/dist/modules/workflows/data/validators.js.map +3 -3
  455. package/dist/modules/workflows/di.js +16 -1
  456. package/dist/modules/workflows/di.js.map +2 -2
  457. package/dist/modules/workflows/events.js +66 -8
  458. package/dist/modules/workflows/events.js.map +2 -2
  459. package/dist/modules/workflows/examples/oze-residential-install-60-nodes.json +1545 -0
  460. package/dist/modules/workflows/examples/sales-pipeline-definition.json +35 -35
  461. package/dist/modules/workflows/examples/templates/lead-to-install.json +160 -0
  462. package/dist/modules/workflows/examples/templates/order-approval.json +230 -0
  463. package/dist/modules/workflows/examples/templates/task-escalation.json +110 -0
  464. package/dist/modules/workflows/examples/templates/webhook-integration.json +113 -0
  465. package/dist/modules/workflows/extension-points.js +1 -1
  466. package/dist/modules/workflows/extension-points.js.map +2 -2
  467. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.js +144 -0
  468. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.js.map +7 -0
  469. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.meta.js +12 -0
  470. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.meta.js.map +7 -0
  471. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/page.js +114 -0
  472. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/page.js.map +7 -0
  473. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/page.meta.js +18 -0
  474. package/dist/modules/workflows/frontend/[orgSlug]/portal/tasks/page.meta.js.map +7 -0
  475. package/dist/modules/workflows/lib/activity-executor.js +505 -137
  476. package/dist/modules/workflows/lib/activity-executor.js.map +3 -3
  477. package/dist/modules/workflows/lib/activity-queue-types.js +3 -1
  478. package/dist/modules/workflows/lib/activity-queue-types.js.map +2 -2
  479. package/dist/modules/workflows/lib/activity-registry-bootstrap.js +2 -0
  480. package/dist/modules/workflows/lib/activity-registry-bootstrap.js.map +7 -0
  481. package/dist/modules/workflows/lib/activity-registry.js +27 -0
  482. package/dist/modules/workflows/lib/activity-registry.js.map +7 -0
  483. package/dist/modules/workflows/lib/activity-types.js +291 -0
  484. package/dist/modules/workflows/lib/activity-types.js.map +7 -0
  485. package/dist/modules/workflows/lib/activity-worker-handler.js +456 -32
  486. package/dist/modules/workflows/lib/activity-worker-handler.js.map +3 -3
  487. package/dist/modules/workflows/lib/advanced-config.js +31 -0
  488. package/dist/modules/workflows/lib/advanced-config.js.map +7 -0
  489. package/dist/modules/workflows/lib/agent-disposition-task.js +198 -0
  490. package/dist/modules/workflows/lib/agent-disposition-task.js.map +7 -0
  491. package/dist/modules/workflows/lib/agent-outcome-paths.js +82 -0
  492. package/dist/modules/workflows/lib/agent-outcome-paths.js.map +7 -0
  493. package/dist/modules/workflows/lib/agent-result-mapping.js +54 -0
  494. package/dist/modules/workflows/lib/agent-result-mapping.js.map +7 -0
  495. package/dist/modules/workflows/lib/agent-review-inspector.js +61 -0
  496. package/dist/modules/workflows/lib/agent-review-inspector.js.map +7 -0
  497. package/dist/modules/workflows/lib/agent-review.js +66 -0
  498. package/dist/modules/workflows/lib/agent-review.js.map +7 -0
  499. package/dist/modules/workflows/lib/ai-authoring.js +155 -0
  500. package/dist/modules/workflows/lib/ai-authoring.js.map +7 -0
  501. package/dist/modules/workflows/lib/ai-draft-runner.js +43 -0
  502. package/dist/modules/workflows/lib/ai-draft-runner.js.map +7 -0
  503. package/dist/modules/workflows/lib/annotation-events.js +10 -0
  504. package/dist/modules/workflows/lib/annotation-events.js.map +7 -0
  505. package/dist/modules/workflows/lib/branching-routes.js +182 -0
  506. package/dist/modules/workflows/lib/branching-routes.js.map +7 -0
  507. package/dist/modules/workflows/lib/breach-routing.js +50 -0
  508. package/dist/modules/workflows/lib/breach-routing.js.map +7 -0
  509. package/dist/modules/workflows/lib/bulk-replay.js +101 -0
  510. package/dist/modules/workflows/lib/bulk-replay.js.map +7 -0
  511. package/dist/modules/workflows/lib/business-rule-usage.js +91 -0
  512. package/dist/modules/workflows/lib/business-rule-usage.js.map +7 -0
  513. package/dist/modules/workflows/lib/caller-graph.js +53 -0
  514. package/dist/modules/workflows/lib/caller-graph.js.map +7 -0
  515. package/dist/modules/workflows/lib/code-view-apply.js +86 -0
  516. package/dist/modules/workflows/lib/code-view-apply.js.map +7 -0
  517. package/dist/modules/workflows/lib/collect-validation-issues.js +164 -0
  518. package/dist/modules/workflows/lib/collect-validation-issues.js.map +7 -0
  519. package/dist/modules/workflows/lib/compensation-ghosts.js +72 -0
  520. package/dist/modules/workflows/lib/compensation-ghosts.js.map +7 -0
  521. package/dist/modules/workflows/lib/component-guard.js +7 -0
  522. package/dist/modules/workflows/lib/component-guard.js.map +7 -0
  523. package/dist/modules/workflows/lib/condition-handler.js +443 -0
  524. package/dist/modules/workflows/lib/condition-handler.js.map +7 -0
  525. package/dist/modules/workflows/lib/context-ledger.js +448 -0
  526. package/dist/modules/workflows/lib/context-ledger.js.map +7 -0
  527. package/dist/modules/workflows/lib/crud-form-dialogs-flag.js +8 -0
  528. package/dist/modules/workflows/lib/crud-form-dialogs-flag.js.map +7 -0
  529. package/dist/modules/workflows/lib/data-edge-mapping.js +63 -0
  530. package/dist/modules/workflows/lib/data-edge-mapping.js.map +7 -0
  531. package/dist/modules/workflows/lib/definition-context-schema.js +56 -0
  532. package/dist/modules/workflows/lib/definition-context-schema.js.map +7 -0
  533. package/dist/modules/workflows/lib/definition-edit-safety.js +123 -0
  534. package/dist/modules/workflows/lib/definition-edit-safety.js.map +7 -0
  535. package/dist/modules/workflows/lib/definition-error-body.js +33 -0
  536. package/dist/modules/workflows/lib/definition-error-body.js.map +7 -0
  537. package/dist/modules/workflows/lib/definition-evaluation.js +79 -0
  538. package/dist/modules/workflows/lib/definition-evaluation.js.map +7 -0
  539. package/dist/modules/workflows/lib/definition-grant.js +90 -0
  540. package/dist/modules/workflows/lib/definition-grant.js.map +7 -0
  541. package/dist/modules/workflows/lib/definition-json-locations.js +139 -0
  542. package/dist/modules/workflows/lib/definition-json-locations.js.map +7 -0
  543. package/dist/modules/workflows/lib/definition-payload.js +31 -0
  544. package/dist/modules/workflows/lib/definition-payload.js.map +7 -0
  545. package/dist/modules/workflows/lib/draft-restore.js +49 -0
  546. package/dist/modules/workflows/lib/draft-restore.js.map +7 -0
  547. package/dist/modules/workflows/lib/dry-run.js +106 -0
  548. package/dist/modules/workflows/lib/dry-run.js.map +7 -0
  549. package/dist/modules/workflows/lib/duration.js +66 -17
  550. package/dist/modules/workflows/lib/duration.js.map +2 -2
  551. package/dist/modules/workflows/lib/edge-reattachment.js +79 -0
  552. package/dist/modules/workflows/lib/edge-reattachment.js.map +7 -0
  553. package/dist/modules/workflows/lib/edgeFormTransforms.js +7 -11
  554. package/dist/modules/workflows/lib/edgeFormTransforms.js.map +2 -2
  555. package/dist/modules/workflows/lib/editor-annotations.js +195 -0
  556. package/dist/modules/workflows/lib/editor-annotations.js.map +7 -0
  557. package/dist/modules/workflows/lib/editor-commands.js +103 -0
  558. package/dist/modules/workflows/lib/editor-commands.js.map +7 -0
  559. package/dist/modules/workflows/lib/editor-history.js +51 -0
  560. package/dist/modules/workflows/lib/editor-history.js.map +7 -0
  561. package/dist/modules/workflows/lib/endpoint-catalog.js +181 -0
  562. package/dist/modules/workflows/lib/endpoint-catalog.js.map +7 -0
  563. package/dist/modules/workflows/lib/endpoint-path.js +90 -0
  564. package/dist/modules/workflows/lib/endpoint-path.js.map +7 -0
  565. package/dist/modules/workflows/lib/engine-version.js +42 -0
  566. package/dist/modules/workflows/lib/engine-version.js.map +7 -0
  567. package/dist/modules/workflows/lib/error-handler.js +132 -0
  568. package/dist/modules/workflows/lib/error-handler.js.map +7 -0
  569. package/dist/modules/workflows/lib/error-routing.js +104 -0
  570. package/dist/modules/workflows/lib/error-routing.js.map +7 -0
  571. package/dist/modules/workflows/lib/event-logger.js +23 -0
  572. package/dist/modules/workflows/lib/event-logger.js.map +2 -2
  573. package/dist/modules/workflows/lib/expression-refs.js +168 -0
  574. package/dist/modules/workflows/lib/expression-refs.js.map +7 -0
  575. package/dist/modules/workflows/lib/failure-grouping.js +62 -0
  576. package/dist/modules/workflows/lib/failure-grouping.js.map +7 -0
  577. package/dist/modules/workflows/lib/find-definition.js +1 -0
  578. package/dist/modules/workflows/lib/find-definition.js.map +2 -2
  579. package/dist/modules/workflows/lib/flow-logic-warnings.js +338 -0
  580. package/dist/modules/workflows/lib/flow-logic-warnings.js.map +7 -0
  581. package/dist/modules/workflows/lib/graph-utils.js +328 -77
  582. package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
  583. package/dist/modules/workflows/lib/icon-search.js +32 -0
  584. package/dist/modules/workflows/lib/icon-search.js.map +7 -0
  585. package/dist/modules/workflows/lib/insert-at-cursor.js +26 -0
  586. package/dist/modules/workflows/lib/insert-at-cursor.js.map +7 -0
  587. package/dist/modules/workflows/lib/instance-date-filter.js +28 -0
  588. package/dist/modules/workflows/lib/instance-date-filter.js.map +7 -0
  589. package/dist/modules/workflows/lib/interpolation-pipeline.js +271 -0
  590. package/dist/modules/workflows/lib/interpolation-pipeline.js.map +7 -0
  591. package/dist/modules/workflows/lib/ledger-drag.js +28 -0
  592. package/dist/modules/workflows/lib/ledger-drag.js.map +7 -0
  593. package/dist/modules/workflows/lib/ledger-entry-display.js +66 -0
  594. package/dist/modules/workflows/lib/ledger-entry-display.js.map +7 -0
  595. package/dist/modules/workflows/lib/ledger-schema-flatten.js +82 -0
  596. package/dist/modules/workflows/lib/ledger-schema-flatten.js.map +7 -0
  597. package/dist/modules/workflows/lib/metrics/definition-metrics.js +110 -0
  598. package/dist/modules/workflows/lib/metrics/definition-metrics.js.map +7 -0
  599. package/dist/modules/workflows/lib/metrics/metrics-display.js +26 -0
  600. package/dist/modules/workflows/lib/metrics/metrics-display.js.map +7 -0
  601. package/dist/modules/workflows/lib/metrics/rollup-schedule.js +7 -0
  602. package/dist/modules/workflows/lib/metrics/rollup-schedule.js.map +7 -0
  603. package/dist/modules/workflows/lib/metrics/rollup-service.js +160 -0
  604. package/dist/modules/workflows/lib/metrics/rollup-service.js.map +7 -0
  605. package/dist/modules/workflows/lib/node-config-summary.js +128 -0
  606. package/dist/modules/workflows/lib/node-config-summary.js.map +7 -0
  607. package/dist/modules/workflows/lib/node-geometry.js +53 -0
  608. package/dist/modules/workflows/lib/node-geometry.js.map +7 -0
  609. package/dist/modules/workflows/lib/node-nudge.js +44 -0
  610. package/dist/modules/workflows/lib/node-nudge.js.map +7 -0
  611. package/dist/modules/workflows/lib/node-outcome-rows.js +88 -0
  612. package/dist/modules/workflows/lib/node-outcome-rows.js.map +7 -0
  613. package/dist/modules/workflows/lib/node-placement.js +55 -0
  614. package/dist/modules/workflows/lib/node-placement.js.map +7 -0
  615. package/dist/modules/workflows/lib/node-type-icons.js +54 -13
  616. package/dist/modules/workflows/lib/node-type-icons.js.map +2 -2
  617. package/dist/modules/workflows/lib/nodeFormTransforms.js +329 -19
  618. package/dist/modules/workflows/lib/nodeFormTransforms.js.map +2 -2
  619. package/dist/modules/workflows/lib/outcome-routing.js +158 -0
  620. package/dist/modules/workflows/lib/outcome-routing.js.map +7 -0
  621. package/dist/modules/workflows/lib/owned-definition.js +107 -0
  622. package/dist/modules/workflows/lib/owned-definition.js.map +7 -0
  623. package/dist/modules/workflows/lib/owned-node-changes.js +10 -0
  624. package/dist/modules/workflows/lib/owned-node-changes.js.map +7 -0
  625. package/dist/modules/workflows/lib/palette-drag.js +36 -0
  626. package/dist/modules/workflows/lib/palette-drag.js.map +7 -0
  627. package/dist/modules/workflows/lib/palette-drop.js +45 -0
  628. package/dist/modules/workflows/lib/palette-drop.js.map +7 -0
  629. package/dist/modules/workflows/lib/parallel-handler.js +57 -2
  630. package/dist/modules/workflows/lib/parallel-handler.js.map +2 -2
  631. package/dist/modules/workflows/lib/port-contract.js +54 -0
  632. package/dist/modules/workflows/lib/port-contract.js.map +7 -0
  633. package/dist/modules/workflows/lib/portal-task-access.js +89 -0
  634. package/dist/modules/workflows/lib/portal-task-access.js.map +7 -0
  635. package/dist/modules/workflows/lib/rerun-from-step.js +65 -0
  636. package/dist/modules/workflows/lib/rerun-from-step.js.map +7 -0
  637. package/dist/modules/workflows/lib/route-chip-events.js +23 -0
  638. package/dist/modules/workflows/lib/route-chip-events.js.map +7 -0
  639. package/dist/modules/workflows/lib/route-chips.js +91 -0
  640. package/dist/modules/workflows/lib/route-chips.js.map +7 -0
  641. package/dist/modules/workflows/lib/route-edge.js +17 -0
  642. package/dist/modules/workflows/lib/route-edge.js.map +7 -0
  643. package/dist/modules/workflows/lib/route-kinds.js +67 -0
  644. package/dist/modules/workflows/lib/route-kinds.js.map +7 -0
  645. package/dist/modules/workflows/lib/route-priority.js +104 -0
  646. package/dist/modules/workflows/lib/route-priority.js.map +7 -0
  647. package/dist/modules/workflows/lib/run-duration.js +44 -0
  648. package/dist/modules/workflows/lib/run-duration.js.map +7 -0
  649. package/dist/modules/workflows/lib/run-event-tone.js +25 -0
  650. package/dist/modules/workflows/lib/run-event-tone.js.map +7 -0
  651. package/dist/modules/workflows/lib/run-execution.js +305 -0
  652. package/dist/modules/workflows/lib/run-execution.js.map +7 -0
  653. package/dist/modules/workflows/lib/run-gantt.js +180 -0
  654. package/dist/modules/workflows/lib/run-gantt.js.map +7 -0
  655. package/dist/modules/workflows/lib/run-outcome-evidence.js +33 -0
  656. package/dist/modules/workflows/lib/run-outcome-evidence.js.map +7 -0
  657. package/dist/modules/workflows/lib/run-outcome.js +48 -0
  658. package/dist/modules/workflows/lib/run-outcome.js.map +7 -0
  659. package/dist/modules/workflows/lib/sample-resolver.js +71 -0
  660. package/dist/modules/workflows/lib/sample-resolver.js.map +7 -0
  661. package/dist/modules/workflows/lib/seeds.js +1 -1
  662. package/dist/modules/workflows/lib/seeds.js.map +2 -2
  663. package/dist/modules/workflows/lib/server-output-contract.js +65 -0
  664. package/dist/modules/workflows/lib/server-output-contract.js.map +7 -0
  665. package/dist/modules/workflows/lib/set-variable.js +47 -0
  666. package/dist/modules/workflows/lib/set-variable.js.map +7 -0
  667. package/dist/modules/workflows/lib/signal-handler.js +63 -4
  668. package/dist/modules/workflows/lib/signal-handler.js.map +2 -2
  669. package/dist/modules/workflows/lib/start-fixtures.js +42 -0
  670. package/dist/modules/workflows/lib/start-fixtures.js.map +7 -0
  671. package/dist/modules/workflows/lib/status-colors.js +153 -22
  672. package/dist/modules/workflows/lib/status-colors.js.map +2 -2
  673. package/dist/modules/workflows/lib/step-handler.js +529 -53
  674. package/dist/modules/workflows/lib/step-handler.js.map +3 -3
  675. package/dist/modules/workflows/lib/step-presentation.js +147 -0
  676. package/dist/modules/workflows/lib/step-presentation.js.map +7 -0
  677. package/dist/modules/workflows/lib/step-through.js +26 -0
  678. package/dist/modules/workflows/lib/step-through.js.map +7 -0
  679. package/dist/modules/workflows/lib/step-type-conversion.js +167 -0
  680. package/dist/modules/workflows/lib/step-type-conversion.js.map +7 -0
  681. package/dist/modules/workflows/lib/subgraph-clipboard.js +114 -0
  682. package/dist/modules/workflows/lib/subgraph-clipboard.js.map +7 -0
  683. package/dist/modules/workflows/lib/task-decision-context.js +38 -0
  684. package/dist/modules/workflows/lib/task-decision-context.js.map +7 -0
  685. package/dist/modules/workflows/lib/task-decisions.js +49 -0
  686. package/dist/modules/workflows/lib/task-decisions.js.map +7 -0
  687. package/dist/modules/workflows/lib/task-entity-access.js +62 -0
  688. package/dist/modules/workflows/lib/task-entity-access.js.map +7 -0
  689. package/dist/modules/workflows/lib/task-entity-aliases.js +39 -0
  690. package/dist/modules/workflows/lib/task-entity-aliases.js.map +7 -0
  691. package/dist/modules/workflows/lib/task-entity-types.js +36 -0
  692. package/dist/modules/workflows/lib/task-entity-types.js.map +7 -0
  693. package/dist/modules/workflows/lib/task-form-registry.js +33 -0
  694. package/dist/modules/workflows/lib/task-form-registry.js.map +7 -0
  695. package/dist/modules/workflows/lib/task-form-schema.js +75 -0
  696. package/dist/modules/workflows/lib/task-form-schema.js.map +7 -0
  697. package/dist/modules/workflows/lib/task-handler.js +251 -32
  698. package/dist/modules/workflows/lib/task-handler.js.map +2 -2
  699. package/dist/modules/workflows/lib/task-inspector-config.js +182 -0
  700. package/dist/modules/workflows/lib/task-inspector-config.js.map +7 -0
  701. package/dist/modules/workflows/lib/task-list-query.js +19 -0
  702. package/dist/modules/workflows/lib/task-list-query.js.map +7 -0
  703. package/dist/modules/workflows/lib/task-notifications.js +119 -0
  704. package/dist/modules/workflows/lib/task-notifications.js.map +7 -0
  705. package/dist/modules/workflows/lib/task-permission-settings.js +43 -0
  706. package/dist/modules/workflows/lib/task-permission-settings.js.map +7 -0
  707. package/dist/modules/workflows/lib/task-presets.js +35 -0
  708. package/dist/modules/workflows/lib/task-presets.js.map +7 -0
  709. package/dist/modules/workflows/lib/task-quick-action.js +45 -0
  710. package/dist/modules/workflows/lib/task-quick-action.js.map +7 -0
  711. package/dist/modules/workflows/lib/task-resolution.js +120 -0
  712. package/dist/modules/workflows/lib/task-resolution.js.map +7 -0
  713. package/dist/modules/workflows/lib/task-sla.js +357 -0
  714. package/dist/modules/workflows/lib/task-sla.js.map +7 -0
  715. package/dist/modules/workflows/lib/task-visibility-request.js +266 -0
  716. package/dist/modules/workflows/lib/task-visibility-request.js.map +7 -0
  717. package/dist/modules/workflows/lib/task-visibility.js +194 -0
  718. package/dist/modules/workflows/lib/task-visibility.js.map +7 -0
  719. package/dist/modules/workflows/lib/timer-handler.js +3 -1
  720. package/dist/modules/workflows/lib/timer-handler.js.map +2 -2
  721. package/dist/modules/workflows/lib/transition-handler.js +148 -20
  722. package/dist/modules/workflows/lib/transition-handler.js.map +2 -2
  723. package/dist/modules/workflows/lib/trigger-node.js +121 -0
  724. package/dist/modules/workflows/lib/trigger-node.js.map +7 -0
  725. package/dist/modules/workflows/lib/visual-editor-navigation.js +14 -0
  726. package/dist/modules/workflows/lib/visual-editor-navigation.js.map +7 -0
  727. package/dist/modules/workflows/lib/work-inbox/empty-state.js +52 -0
  728. package/dist/modules/workflows/lib/work-inbox/empty-state.js.map +7 -0
  729. package/dist/modules/workflows/lib/work-inbox/entity-links.js +63 -0
  730. package/dist/modules/workflows/lib/work-inbox/entity-links.js.map +7 -0
  731. package/dist/modules/workflows/lib/work-inbox/navigation.js +11 -0
  732. package/dist/modules/workflows/lib/work-inbox/navigation.js.map +7 -0
  733. package/dist/modules/workflows/lib/work-inbox/presentation.js +90 -0
  734. package/dist/modules/workflows/lib/work-inbox/presentation.js.map +7 -0
  735. package/dist/modules/workflows/lib/work-inbox/provider.js +118 -0
  736. package/dist/modules/workflows/lib/work-inbox/provider.js.map +7 -0
  737. package/dist/modules/workflows/lib/work-inbox/query.js +70 -0
  738. package/dist/modules/workflows/lib/work-inbox/query.js.map +7 -0
  739. package/dist/modules/workflows/lib/work-inbox/service.js +56 -0
  740. package/dist/modules/workflows/lib/work-inbox/service.js.map +7 -0
  741. package/dist/modules/workflows/lib/work-inbox/user-task-source.js +149 -0
  742. package/dist/modules/workflows/lib/work-inbox/user-task-source.js.map +7 -0
  743. package/dist/modules/workflows/lib/workflow-command-enablement.js +57 -0
  744. package/dist/modules/workflows/lib/workflow-command-enablement.js.map +7 -0
  745. package/dist/modules/workflows/lib/workflow-command-settings.js +54 -0
  746. package/dist/modules/workflows/lib/workflow-command-settings.js.map +7 -0
  747. package/dist/modules/workflows/lib/workflow-executor.js +658 -6
  748. package/dist/modules/workflows/lib/workflow-executor.js.map +2 -2
  749. package/dist/modules/workflows/lib/workflow-function-registry.js +40 -0
  750. package/dist/modules/workflows/lib/workflow-function-registry.js.map +7 -0
  751. package/dist/modules/workflows/lib/workflow-safe-commands.js +11 -1
  752. package/dist/modules/workflows/lib/workflow-safe-commands.js.map +2 -2
  753. package/dist/modules/workflows/lib/workflow-templates.js +69 -0
  754. package/dist/modules/workflows/lib/workflow-templates.js.map +7 -0
  755. package/dist/modules/workflows/migrations/Migration20260626214855_workflows.js +15 -0
  756. package/dist/modules/workflows/migrations/Migration20260626214855_workflows.js.map +7 -0
  757. package/dist/modules/workflows/migrations/Migration20260626222424_workflows.js +17 -0
  758. package/dist/modules/workflows/migrations/Migration20260626222424_workflows.js.map +7 -0
  759. package/dist/modules/workflows/migrations/Migration20260727074335_workflows.js +15 -0
  760. package/dist/modules/workflows/migrations/Migration20260727074335_workflows.js.map +7 -0
  761. package/dist/modules/workflows/migrations/Migration20260728104038_workflows.js +13 -0
  762. package/dist/modules/workflows/migrations/Migration20260728104038_workflows.js.map +7 -0
  763. package/dist/modules/workflows/migrations/Migration20260728163001_workflows.js +15 -0
  764. package/dist/modules/workflows/migrations/Migration20260728163001_workflows.js.map +7 -0
  765. package/dist/modules/workflows/migrations/Migration20260729061736_workflows.js +13 -0
  766. package/dist/modules/workflows/migrations/Migration20260729061736_workflows.js.map +7 -0
  767. package/dist/modules/workflows/migrations/Migration20260729192652_workflows.js +12 -0
  768. package/dist/modules/workflows/migrations/Migration20260729192652_workflows.js.map +7 -0
  769. package/dist/modules/workflows/migrations/Migration20260730085000_workflows.js +13 -0
  770. package/dist/modules/workflows/migrations/Migration20260730085000_workflows.js.map +7 -0
  771. package/dist/modules/workflows/migrations/Migration20260730092706_workflows.js +13 -0
  772. package/dist/modules/workflows/migrations/Migration20260730092706_workflows.js.map +7 -0
  773. package/dist/modules/workflows/notifications.js +38 -10
  774. package/dist/modules/workflows/notifications.js.map +2 -2
  775. package/dist/modules/workflows/setup.js +81 -1
  776. package/dist/modules/workflows/setup.js.map +2 -2
  777. package/dist/modules/workflows/subscribers/task-assigned-notification.js +19 -27
  778. package/dist/modules/workflows/subscribers/task-assigned-notification.js.map +2 -2
  779. package/dist/modules/workflows/subscribers/task-deadline-breached-notification.js +24 -0
  780. package/dist/modules/workflows/subscribers/task-deadline-breached-notification.js.map +7 -0
  781. package/dist/modules/workflows/subscribers/task-reminder-notification.js +24 -0
  782. package/dist/modules/workflows/subscribers/task-reminder-notification.js.map +7 -0
  783. package/dist/modules/workflows/widgets/injection/pending-work/widget.client.js +73 -0
  784. package/dist/modules/workflows/widgets/injection/pending-work/widget.client.js.map +7 -0
  785. package/dist/modules/workflows/widgets/injection/pending-work/widget.js +17 -0
  786. package/dist/modules/workflows/widgets/injection/pending-work/widget.js.map +7 -0
  787. package/dist/modules/workflows/widgets/injection-table.js +26 -0
  788. package/dist/modules/workflows/widgets/injection-table.js.map +2 -2
  789. package/dist/modules/workflows/workers/workflow-activities.worker.js +61 -39
  790. package/dist/modules/workflows/workers/workflow-activities.worker.js.map +2 -2
  791. package/dist/modules/workflows/workers/workflow-definition-metric-rollup.worker.js +40 -0
  792. package/dist/modules/workflows/workers/workflow-definition-metric-rollup.worker.js.map +7 -0
  793. package/dist/modules/workflows/workers/workflow-instance-bulk-replay.js +43 -0
  794. package/dist/modules/workflows/workers/workflow-instance-bulk-replay.js.map +7 -0
  795. package/dist/modules/workflows/workers/workflow-invoke-agent.worker.js +30 -0
  796. package/dist/modules/workflows/workers/workflow-invoke-agent.worker.js.map +7 -0
  797. package/generated/entities/action_log/index.ts +1 -0
  798. package/generated/entities/user/index.ts +1 -0
  799. package/generated/entities/user_task/index.ts +7 -0
  800. package/generated/entities/workflow_definition/index.ts +3 -0
  801. package/generated/entities/workflow_definition_draft/index.ts +11 -0
  802. package/generated/entities/workflow_definition_metric_rollup/index.ts +10 -0
  803. package/generated/entities/workflow_instance/index.ts +2 -0
  804. package/generated/entities.ids.generated.ts +4 -1
  805. package/generated/entity-fields-registry.ts +39 -0
  806. package/jest.setup.ts +13 -0
  807. package/package.json +8 -7
  808. package/src/bootstrap.ts +13 -3
  809. package/src/helpers/integration/workflowsFixtures.ts +765 -5
  810. package/src/helpers/integration/workflowsUi.ts +318 -0
  811. package/src/modules/attachments/lib/createFromBuffer.ts +120 -0
  812. package/src/modules/audit_logs/data/entities.ts +12 -0
  813. package/src/modules/audit_logs/data/validators.ts +1 -0
  814. package/src/modules/audit_logs/lib/projections.ts +5 -1
  815. package/src/modules/audit_logs/migrations/.snapshot-open-mercato.json +26 -0
  816. package/src/modules/audit_logs/migrations/Migration20260625120000.ts +15 -0
  817. package/src/modules/audit_logs/services/actionLogService.ts +3 -0
  818. package/src/modules/auth/data/entities.ts +21 -0
  819. package/src/modules/auth/i18n/de.json +31 -0
  820. package/src/modules/auth/i18n/en.json +31 -0
  821. package/src/modules/auth/i18n/es.json +31 -0
  822. package/src/modules/auth/i18n/ko.json +31 -0
  823. package/src/modules/auth/i18n/pl.json +31 -0
  824. package/src/modules/auth/lib/executionPrincipal.ts +235 -0
  825. package/src/modules/auth/migrations/.snapshot-open-mercato.json +16 -0
  826. package/src/modules/auth/migrations/Migration20260625050000.ts +21 -0
  827. package/src/modules/business_rules/components/InlineRuleEditor.tsx +231 -0
  828. package/src/modules/business_rules/data/validators.ts +6 -0
  829. package/src/modules/business_rules/i18n/de.json +4 -0
  830. package/src/modules/business_rules/i18n/en.json +4 -0
  831. package/src/modules/business_rules/i18n/es.json +4 -0
  832. package/src/modules/business_rules/i18n/ko.json +4 -0
  833. package/src/modules/business_rules/i18n/pl.json +4 -0
  834. package/src/modules/business_rules/lib/rule-engine.ts +15 -1
  835. package/src/modules/catalog/commands/products.ts +12 -0
  836. package/src/modules/catalog/i18n/de.json +1 -0
  837. package/src/modules/catalog/i18n/en.json +1 -0
  838. package/src/modules/catalog/i18n/es.json +1 -0
  839. package/src/modules/catalog/i18n/ko.json +1 -0
  840. package/src/modules/catalog/i18n/pl.json +1 -0
  841. package/src/modules/catalog/workflows.ts +35 -0
  842. package/src/modules/customer_accounts/AGENTS.md +11 -0
  843. package/src/modules/customer_accounts/backend/customer_accounts/roles/[id]/page.tsx +2 -0
  844. package/src/modules/customer_accounts/cli.ts +96 -0
  845. package/src/modules/customer_accounts/i18n/de.json +5 -0
  846. package/src/modules/customer_accounts/i18n/en.json +5 -0
  847. package/src/modules/customer_accounts/i18n/es.json +5 -0
  848. package/src/modules/customer_accounts/i18n/ko.json +5 -0
  849. package/src/modules/customer_accounts/i18n/pl.json +5 -0
  850. package/src/modules/customer_accounts/lib/customerRoleAclSync.ts +92 -0
  851. package/src/modules/customer_accounts/setup.ts +15 -3
  852. package/src/modules/customers/commands/deals.ts +5 -0
  853. package/src/modules/customers/components/detail/ChangelogEntryRow.tsx +4 -2
  854. package/src/modules/customers/components/detail/utils.ts +2 -0
  855. package/src/modules/customers/events.ts +21 -3
  856. package/src/modules/customers/i18n/de.json +4 -0
  857. package/src/modules/customers/i18n/en.json +4 -0
  858. package/src/modules/customers/i18n/es.json +4 -0
  859. package/src/modules/customers/i18n/ko.json +4 -0
  860. package/src/modules/customers/i18n/pl.json +4 -0
  861. package/src/modules/customers/lib/link-workflow-task-handler.ts +136 -0
  862. package/src/modules/customers/lib/todoCompatibility.ts +4 -1
  863. package/src/modules/customers/lib/workflowTaskLink.ts +23 -0
  864. package/src/modules/customers/subscribers/link-workflow-task.ts +19 -0
  865. package/src/modules/customers/workflows.ts +57 -0
  866. package/src/modules/entities/api/records.ts +18 -62
  867. package/src/modules/entities/lib/entityClassification.ts +102 -0
  868. package/src/modules/sales/commands/documents.ts +46 -0
  869. package/src/modules/sales/events.ts +20 -2
  870. package/src/modules/sales/i18n/de.json +2 -1
  871. package/src/modules/sales/i18n/en.json +2 -1
  872. package/src/modules/sales/i18n/es.json +2 -1
  873. package/src/modules/sales/i18n/ko.json +2 -1
  874. package/src/modules/sales/i18n/pl.json +2 -1
  875. package/src/modules/sales/workflows.ts +12 -1
  876. package/src/modules/seeds/README.md +86 -0
  877. package/src/modules/seeds/cli.ts +220 -0
  878. package/src/modules/seeds/examples/sample-seed.json +26 -0
  879. package/src/modules/seeds/index.ts +11 -0
  880. package/src/modules/workflows/AGENTS.md +851 -10
  881. package/src/modules/workflows/acl.ts +96 -0
  882. package/src/modules/workflows/ai-agents.ts +80 -0
  883. package/src/modules/workflows/ai-tools/authoring-pack.ts +798 -0
  884. package/src/modules/workflows/ai-tools/types.ts +117 -0
  885. package/src/modules/workflows/ai-tools.ts +20 -0
  886. package/src/modules/workflows/api/command-settings/route.ts +171 -0
  887. package/src/modules/workflows/api/commands/route.ts +109 -0
  888. package/src/modules/workflows/api/definitions/[id]/callers/route.ts +95 -0
  889. package/src/modules/workflows/api/definitions/[id]/context-schema/route.ts +187 -0
  890. package/src/modules/workflows/api/definitions/[id]/customize/route.ts +6 -1
  891. package/src/modules/workflows/api/definitions/[id]/draft/route.ts +395 -0
  892. package/src/modules/workflows/api/definitions/[id]/publish/route.ts +250 -0
  893. package/src/modules/workflows/api/definitions/[id]/reset-to-code/route.ts +5 -0
  894. package/src/modules/workflows/api/definitions/[id]/route.ts +107 -7
  895. package/src/modules/workflows/api/definitions/[id]/test-step/route.ts +288 -0
  896. package/src/modules/workflows/api/definitions/generate/route.ts +335 -0
  897. package/src/modules/workflows/api/definitions/route.ts +88 -113
  898. package/src/modules/workflows/api/definitions/serialize.ts +9 -0
  899. package/src/modules/workflows/api/endpoints/route.ts +88 -0
  900. package/src/modules/workflows/api/functions/route.ts +91 -0
  901. package/src/modules/workflows/api/grantable-features/route.ts +102 -0
  902. package/src/modules/workflows/api/instances/[id]/context/route.ts +214 -0
  903. package/src/modules/workflows/api/instances/[id]/rerun-step/route.ts +226 -0
  904. package/src/modules/workflows/api/instances/[id]/retry/route.ts +18 -2
  905. package/src/modules/workflows/api/instances/[id]/step-through/route.ts +195 -0
  906. package/src/modules/workflows/api/instances/[id]/steps/route.ts +160 -0
  907. package/src/modules/workflows/api/instances/[id]/would-do/route.ts +216 -0
  908. package/src/modules/workflows/api/instances/bulk-replay/route.ts +141 -0
  909. package/src/modules/workflows/api/instances/failure-queue/route.ts +197 -0
  910. package/src/modules/workflows/api/instances/route.ts +135 -3
  911. package/src/modules/workflows/api/metrics/definitions/route.ts +262 -0
  912. package/src/modules/workflows/api/openapi.ts +549 -2
  913. package/src/modules/workflows/api/portal/tasks/[id]/complete/route.ts +160 -0
  914. package/src/modules/workflows/api/portal/tasks/[id]/route.ts +124 -0
  915. package/src/modules/workflows/api/portal/tasks/route.ts +157 -0
  916. package/src/modules/workflows/api/rule-usage/route.ts +94 -0
  917. package/src/modules/workflows/api/task-settings/route.ts +138 -0
  918. package/src/modules/workflows/api/tasks/[id]/claim/route.ts +42 -17
  919. package/src/modules/workflows/api/tasks/[id]/complete/route.ts +47 -15
  920. package/src/modules/workflows/api/tasks/[id]/reassign/route.ts +197 -0
  921. package/src/modules/workflows/api/tasks/[id]/route.ts +57 -6
  922. package/src/modules/workflows/api/tasks/[id]/unclaim/route.ts +132 -0
  923. package/src/modules/workflows/api/tasks/route.ts +60 -5
  924. package/src/modules/workflows/api/tasks/serialize.ts +119 -0
  925. package/src/modules/workflows/api/templates/route.ts +87 -0
  926. package/src/modules/workflows/api/work-inbox/next/route.ts +170 -0
  927. package/src/modules/workflows/api/work-inbox/route.ts +153 -0
  928. package/src/modules/workflows/backend/config/workflows/page.meta.ts +33 -0
  929. package/src/modules/workflows/backend/config/workflows/page.tsx +12 -0
  930. package/src/modules/workflows/backend/definitions/[id]/page.tsx +19 -343
  931. package/src/modules/workflows/backend/definitions/create/page.meta.ts +1 -1
  932. package/src/modules/workflows/backend/definitions/create/page.tsx +19 -59
  933. package/src/modules/workflows/backend/definitions/page.tsx +156 -76
  934. package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +3129 -584
  935. package/src/modules/workflows/backend/instances/[id]/page.meta.ts +1 -1
  936. package/src/modules/workflows/backend/instances/[id]/page.tsx +711 -539
  937. package/src/modules/workflows/backend/instances/failure-queue/page.meta.ts +16 -0
  938. package/src/modules/workflows/backend/instances/failure-queue/page.tsx +311 -0
  939. package/src/modules/workflows/backend/instances/page.meta.ts +1 -1
  940. package/src/modules/workflows/backend/instances/page.tsx +218 -38
  941. package/src/modules/workflows/backend/tasks/[id]/page.tsx +639 -400
  942. package/src/modules/workflows/backend/tasks/page.meta.ts +7 -0
  943. package/src/modules/workflows/backend/tasks/page.tsx +20 -333
  944. package/src/modules/workflows/backend/work-inbox/page.meta.ts +15 -0
  945. package/src/modules/workflows/backend/work-inbox/page.tsx +506 -0
  946. package/src/modules/workflows/cli.ts +1 -1
  947. package/src/modules/workflows/commands/tasks.ts +146 -0
  948. package/src/modules/workflows/components/ActivitiesEditor.tsx +91 -114
  949. package/src/modules/workflows/components/ActivityEditDialog.tsx +244 -0
  950. package/src/modules/workflows/components/AgentSelector.tsx +200 -0
  951. package/src/modules/workflows/components/AnnotationEditDialog.tsx +157 -0
  952. package/src/modules/workflows/components/BusinessRuleUsagePanel.tsx +106 -0
  953. package/src/modules/workflows/components/BusinessRulesSelector.tsx +71 -17
  954. package/src/modules/workflows/components/ConfigJsonTextarea.tsx +111 -0
  955. package/src/modules/workflows/components/ContextSchemaEditor.tsx +165 -0
  956. package/src/modules/workflows/components/DefinitionErrorHandlerField.tsx +133 -0
  957. package/src/modules/workflows/components/DefinitionMetadataDrawer.tsx +456 -0
  958. package/src/modules/workflows/components/DefinitionMetricsCells.tsx +212 -0
  959. package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +196 -95
  960. package/src/modules/workflows/components/EdgeEditDialog.tsx +15 -16
  961. package/src/modules/workflows/components/EdgeEditDialogCrudForm.tsx +130 -80
  962. package/src/modules/workflows/components/InputDataPanel.tsx +177 -0
  963. package/src/modules/workflows/components/InspectorPanel.tsx +250 -0
  964. package/src/modules/workflows/components/NodeEditDialog.tsx +444 -38
  965. package/src/modules/workflows/components/NodeEditDialogCrudForm.tsx +848 -178
  966. package/src/modules/workflows/components/StepsEditor.tsx +9 -2
  967. package/src/modules/workflows/components/TemplateGalleryDialog.tsx +205 -0
  968. package/src/modules/workflows/components/TransitionsEditor.tsx +98 -89
  969. package/src/modules/workflows/components/TriggersDialog.tsx +83 -0
  970. package/src/modules/workflows/components/TriggersEditor.tsx +363 -0
  971. package/src/modules/workflows/components/WorkflowAiDraftDialog.tsx +383 -0
  972. package/src/modules/workflows/components/WorkflowCodeView.tsx +257 -0
  973. package/src/modules/workflows/components/WorkflowCommandPalette.tsx +82 -0
  974. package/src/modules/workflows/components/WorkflowCompensationGhostEdge.tsx +78 -0
  975. package/src/modules/workflows/components/WorkflowDataMappingEdge.tsx +46 -0
  976. package/src/modules/workflows/components/WorkflowGraph.tsx +54 -1
  977. package/src/modules/workflows/components/WorkflowGraphImpl.tsx +463 -37
  978. package/src/modules/workflows/components/WorkflowIconPicker.tsx +144 -0
  979. package/src/modules/workflows/components/WorkflowLegend.tsx +59 -33
  980. package/src/modules/workflows/components/WorkflowNodeCard.tsx +355 -28
  981. package/src/modules/workflows/components/WorkflowRouteChips.tsx +145 -0
  982. package/src/modules/workflows/components/WorkflowSelector.tsx +33 -14
  983. package/src/modules/workflows/components/WorkflowTransitionEdge.tsx +83 -10
  984. package/src/modules/workflows/components/WorkflowTransitionLabel.tsx +13 -2
  985. package/src/modules/workflows/components/fields/ActivityArrayEditor.tsx +120 -30
  986. package/src/modules/workflows/components/fields/ActivityConfigFields.tsx +675 -0
  987. package/src/modules/workflows/components/fields/ActivityTestPanel.tsx +250 -0
  988. package/src/modules/workflows/components/fields/AgentInvokeConfigField.tsx +580 -0
  989. package/src/modules/workflows/components/fields/AgentReviewOnBreachField.tsx +88 -0
  990. package/src/modules/workflows/components/fields/BranchingRoutesEditor.tsx +323 -0
  991. package/src/modules/workflows/components/fields/BusinessRuleConditionsEditor.tsx +36 -4
  992. package/src/modules/workflows/components/fields/CommandPicker.tsx +158 -0
  993. package/src/modules/workflows/components/fields/EndpointPicker.tsx +330 -0
  994. package/src/modules/workflows/components/fields/FormFieldArrayEditor.tsx +2 -2
  995. package/src/modules/workflows/components/fields/FunctionPicker.tsx +68 -0
  996. package/src/modules/workflows/components/fields/MappingArrayEditor.tsx +46 -12
  997. package/src/modules/workflows/components/fields/PortFieldArrayEditor.tsx +255 -0
  998. package/src/modules/workflows/components/fields/RolesMultiSelect.tsx +68 -0
  999. package/src/modules/workflows/components/fields/RouteOrderEditor.tsx +169 -0
  1000. package/src/modules/workflows/components/fields/SchemaBuilderDialog.tsx +139 -0
  1001. package/src/modules/workflows/components/fields/StartPreConditionsEditor.tsx +2 -2
  1002. package/src/modules/workflows/components/fields/TaskAssignmentField.tsx +355 -0
  1003. package/src/modules/workflows/components/fields/TaskDeadlineFields.tsx +172 -0
  1004. package/src/modules/workflows/components/fields/TaskDecisionsField.tsx +294 -0
  1005. package/src/modules/workflows/components/fields/TaskEntityBindingsField.tsx +156 -0
  1006. package/src/modules/workflows/components/fields/TemplateTextControl.tsx +85 -0
  1007. package/src/modules/workflows/components/fields/VariablePickerButton.tsx +177 -0
  1008. package/src/modules/workflows/components/fields/ledgerDropTarget.ts +55 -0
  1009. package/src/modules/workflows/components/fields/useActivityTypeOptions.ts +19 -0
  1010. package/src/modules/workflows/components/formConfig.tsx +84 -10
  1011. package/src/modules/workflows/components/mobile/MobileDefinitionDetail.tsx +5 -0
  1012. package/src/modules/workflows/components/mobile/MobileMetadataSheet.tsx +10 -0
  1013. package/src/modules/workflows/components/mobile/MobileTaskForm.tsx +55 -19
  1014. package/src/modules/workflows/components/mobile/MobileVisualEditor.tsx +49 -40
  1015. package/src/modules/workflows/components/nodes/AnnotationGroupNode.tsx +81 -0
  1016. package/src/modules/workflows/components/nodes/AutomatedNode.tsx +34 -17
  1017. package/src/modules/workflows/components/nodes/EndNode.tsx +15 -14
  1018. package/src/modules/workflows/components/nodes/ErrorOutputHandle.tsx +32 -0
  1019. package/src/modules/workflows/components/nodes/IfElseNode.tsx +64 -0
  1020. package/src/modules/workflows/components/nodes/InvokeAgentNode.tsx +180 -0
  1021. package/src/modules/workflows/components/nodes/NodeOutcomeRows.tsx +143 -0
  1022. package/src/modules/workflows/components/nodes/ParallelForkNode.tsx +28 -15
  1023. package/src/modules/workflows/components/nodes/ParallelJoinNode.tsx +28 -15
  1024. package/src/modules/workflows/components/nodes/StartNode.tsx +78 -18
  1025. package/src/modules/workflows/components/nodes/StickyNoteNode.tsx +65 -0
  1026. package/src/modules/workflows/components/nodes/SubWorkflowNode.tsx +124 -23
  1027. package/src/modules/workflows/components/nodes/SwitchNode.tsx +64 -0
  1028. package/src/modules/workflows/components/nodes/TriggerCap.tsx +103 -0
  1029. package/src/modules/workflows/components/nodes/TriggerNode.tsx +151 -0
  1030. package/src/modules/workflows/components/nodes/UserTaskNode.tsx +67 -22
  1031. package/src/modules/workflows/components/nodes/WaitForConditionNode.tsx +74 -0
  1032. package/src/modules/workflows/components/nodes/WaitForSignalNode.tsx +31 -17
  1033. package/src/modules/workflows/components/nodes/WaitForTimerNode.tsx +31 -16
  1034. package/src/modules/workflows/components/nodes/index.ts +17 -0
  1035. package/src/modules/workflows/components/portal/PortalTaskForm.tsx +280 -0
  1036. package/src/modules/workflows/components/run/AgentActivityPanel.tsx +48 -0
  1037. package/src/modules/workflows/components/run/RerunStepDialog.tsx +133 -0
  1038. package/src/modules/workflows/components/run/RunEventBadge.tsx +37 -0
  1039. package/src/modules/workflows/components/run/RunGantt.tsx +180 -0
  1040. package/src/modules/workflows/components/run/RunStatusBadge.tsx +112 -0
  1041. package/src/modules/workflows/components/run/RunStepInspector.tsx +176 -0
  1042. package/src/modules/workflows/components/run/WouldDoReport.tsx +93 -0
  1043. package/src/modules/workflows/components/run/useAgentLabels.ts +42 -0
  1044. package/src/modules/workflows/components/run/useLastRunOverlay.ts +150 -0
  1045. package/src/modules/workflows/components/run/useLiveAgentActions.ts +70 -0
  1046. package/src/modules/workflows/components/run/useLiveRunUpdates.ts +89 -0
  1047. package/src/modules/workflows/components/settings/CommandSettingsPageClient.tsx +228 -0
  1048. package/src/modules/workflows/components/work-inbox/EntityContextPanel.tsx +179 -0
  1049. package/src/modules/workflows/components/work-inbox/ReassignTaskDialog.tsx +203 -0
  1050. package/src/modules/workflows/components/work-inbox/StatusChip.tsx +61 -0
  1051. package/src/modules/workflows/components/work-inbox/TaskActionNotice.tsx +77 -0
  1052. package/src/modules/workflows/components/work-inbox/TaskFormFields.tsx +322 -0
  1053. package/src/modules/workflows/components/work-inbox/WorkInboxEmptyState.tsx +43 -0
  1054. package/src/modules/workflows/data/activity-config-schemas.ts +249 -0
  1055. package/src/modules/workflows/data/activity-config-warnings.ts +71 -0
  1056. package/src/modules/workflows/data/branching-route-warnings.ts +129 -0
  1057. package/src/modules/workflows/data/entities.ts +397 -4
  1058. package/src/modules/workflows/data/metrics-validators.ts +51 -0
  1059. package/src/modules/workflows/data/task-primitives.ts +36 -0
  1060. package/src/modules/workflows/data/types.ts +81 -2
  1061. package/src/modules/workflows/data/validators.ts +729 -60
  1062. package/src/modules/workflows/di.ts +22 -0
  1063. package/src/modules/workflows/events.ts +68 -8
  1064. package/src/modules/workflows/examples/oze-residential-install-60-nodes.json +1545 -0
  1065. package/src/modules/workflows/examples/sales-pipeline-definition.json +35 -35
  1066. package/src/modules/workflows/examples/templates/lead-to-install.json +160 -0
  1067. package/src/modules/workflows/examples/templates/order-approval.json +230 -0
  1068. package/src/modules/workflows/examples/templates/task-escalation.json +110 -0
  1069. package/src/modules/workflows/examples/templates/webhook-integration.json +113 -0
  1070. package/src/modules/workflows/extension-points.ts +1 -1
  1071. package/src/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.meta.ts +21 -0
  1072. package/src/modules/workflows/frontend/[orgSlug]/portal/tasks/[id]/page.tsx +212 -0
  1073. package/src/modules/workflows/frontend/[orgSlug]/portal/tasks/page.meta.ts +25 -0
  1074. package/src/modules/workflows/frontend/[orgSlug]/portal/tasks/page.tsx +185 -0
  1075. package/src/modules/workflows/i18n/de.json +1083 -24
  1076. package/src/modules/workflows/i18n/en.json +1081 -22
  1077. package/src/modules/workflows/i18n/es.json +1083 -24
  1078. package/src/modules/workflows/i18n/ko.json +1072 -13
  1079. package/src/modules/workflows/i18n/pl.json +1082 -23
  1080. package/src/modules/workflows/lib/activity-executor.ts +855 -186
  1081. package/src/modules/workflows/lib/activity-queue-types.ts +120 -1
  1082. package/src/modules/workflows/lib/activity-registry-bootstrap.ts +7 -0
  1083. package/src/modules/workflows/lib/activity-registry.ts +89 -0
  1084. package/src/modules/workflows/lib/activity-types.ts +415 -0
  1085. package/src/modules/workflows/lib/activity-worker-handler.ts +744 -35
  1086. package/src/modules/workflows/lib/advanced-config.ts +41 -0
  1087. package/src/modules/workflows/lib/agent-disposition-task.ts +343 -0
  1088. package/src/modules/workflows/lib/agent-outcome-paths.ts +153 -0
  1089. package/src/modules/workflows/lib/agent-result-mapping.ts +88 -0
  1090. package/src/modules/workflows/lib/agent-review-inspector.ts +125 -0
  1091. package/src/modules/workflows/lib/agent-review.ts +171 -0
  1092. package/src/modules/workflows/lib/ai-authoring.ts +402 -0
  1093. package/src/modules/workflows/lib/ai-draft-runner.ts +105 -0
  1094. package/src/modules/workflows/lib/annotation-events.ts +15 -0
  1095. package/src/modules/workflows/lib/branching-routes.ts +280 -0
  1096. package/src/modules/workflows/lib/breach-routing.ts +142 -0
  1097. package/src/modules/workflows/lib/bulk-replay.ts +185 -0
  1098. package/src/modules/workflows/lib/business-rule-usage.ts +154 -0
  1099. package/src/modules/workflows/lib/caller-graph.ts +104 -0
  1100. package/src/modules/workflows/lib/code-view-apply.ts +178 -0
  1101. package/src/modules/workflows/lib/collect-validation-issues.ts +239 -0
  1102. package/src/modules/workflows/lib/compensation-ghosts.ts +134 -0
  1103. package/src/modules/workflows/lib/component-guard.ts +13 -0
  1104. package/src/modules/workflows/lib/condition-handler.ts +658 -0
  1105. package/src/modules/workflows/lib/context-ledger.ts +814 -0
  1106. package/src/modules/workflows/lib/crud-form-dialogs-flag.ts +5 -0
  1107. package/src/modules/workflows/lib/data-edge-mapping.ts +112 -0
  1108. package/src/modules/workflows/lib/definition-context-schema.ts +103 -0
  1109. package/src/modules/workflows/lib/definition-edit-safety.ts +228 -0
  1110. package/src/modules/workflows/lib/definition-error-body.ts +43 -0
  1111. package/src/modules/workflows/lib/definition-evaluation.ts +156 -0
  1112. package/src/modules/workflows/lib/definition-grant.ts +211 -0
  1113. package/src/modules/workflows/lib/definition-json-locations.ts +226 -0
  1114. package/src/modules/workflows/lib/definition-payload.ts +81 -0
  1115. package/src/modules/workflows/lib/draft-restore.ts +72 -0
  1116. package/src/modules/workflows/lib/dry-run.ts +203 -0
  1117. package/src/modules/workflows/lib/duration.ts +138 -24
  1118. package/src/modules/workflows/lib/edge-reattachment.ts +186 -0
  1119. package/src/modules/workflows/lib/edgeFormTransforms.ts +15 -14
  1120. package/src/modules/workflows/lib/editor-annotations.ts +301 -0
  1121. package/src/modules/workflows/lib/editor-commands.ts +205 -0
  1122. package/src/modules/workflows/lib/editor-history.ts +151 -0
  1123. package/src/modules/workflows/lib/endpoint-catalog.ts +283 -0
  1124. package/src/modules/workflows/lib/endpoint-path.ts +134 -0
  1125. package/src/modules/workflows/lib/engine-version.ts +67 -0
  1126. package/src/modules/workflows/lib/error-handler.ts +192 -0
  1127. package/src/modules/workflows/lib/error-routing.ts +236 -0
  1128. package/src/modules/workflows/lib/event-logger.ts +27 -0
  1129. package/src/modules/workflows/lib/expression-refs.ts +291 -0
  1130. package/src/modules/workflows/lib/failure-grouping.ts +134 -0
  1131. package/src/modules/workflows/lib/find-definition.ts +4 -0
  1132. package/src/modules/workflows/lib/flow-logic-warnings.ts +591 -0
  1133. package/src/modules/workflows/lib/graph-utils.ts +620 -110
  1134. package/src/modules/workflows/lib/icon-search.ts +65 -0
  1135. package/src/modules/workflows/lib/insert-at-cursor.ts +53 -0
  1136. package/src/modules/workflows/lib/instance-date-filter.ts +56 -0
  1137. package/src/modules/workflows/lib/interpolation-pipeline.ts +351 -0
  1138. package/src/modules/workflows/lib/ledger-drag.ts +61 -0
  1139. package/src/modules/workflows/lib/ledger-entry-display.ts +89 -0
  1140. package/src/modules/workflows/lib/ledger-schema-flatten.ts +137 -0
  1141. package/src/modules/workflows/lib/metrics/definition-metrics.ts +268 -0
  1142. package/src/modules/workflows/lib/metrics/metrics-display.ts +57 -0
  1143. package/src/modules/workflows/lib/metrics/rollup-schedule.ts +26 -0
  1144. package/src/modules/workflows/lib/metrics/rollup-service.ts +292 -0
  1145. package/src/modules/workflows/lib/node-config-summary.ts +235 -0
  1146. package/src/modules/workflows/lib/node-geometry.ts +168 -0
  1147. package/src/modules/workflows/lib/node-nudge.ts +63 -0
  1148. package/src/modules/workflows/lib/node-outcome-rows.ts +195 -0
  1149. package/src/modules/workflows/lib/node-placement.ts +104 -0
  1150. package/src/modules/workflows/lib/node-type-icons.ts +71 -10
  1151. package/src/modules/workflows/lib/nodeFormTransforms.ts +519 -28
  1152. package/src/modules/workflows/lib/outcome-routing.ts +346 -0
  1153. package/src/modules/workflows/lib/owned-definition.ts +188 -0
  1154. package/src/modules/workflows/lib/owned-node-changes.ts +29 -0
  1155. package/src/modules/workflows/lib/palette-drag.ts +68 -0
  1156. package/src/modules/workflows/lib/palette-drop.ts +114 -0
  1157. package/src/modules/workflows/lib/parallel-handler.ts +79 -2
  1158. package/src/modules/workflows/lib/port-contract.ts +107 -0
  1159. package/src/modules/workflows/lib/portal-task-access.ts +220 -0
  1160. package/src/modules/workflows/lib/rerun-from-step.ts +140 -0
  1161. package/src/modules/workflows/lib/route-chip-events.ts +45 -0
  1162. package/src/modules/workflows/lib/route-chips.ts +177 -0
  1163. package/src/modules/workflows/lib/route-edge.ts +57 -0
  1164. package/src/modules/workflows/lib/route-kinds.ts +166 -0
  1165. package/src/modules/workflows/lib/route-priority.ts +197 -0
  1166. package/src/modules/workflows/lib/run-duration.ts +70 -0
  1167. package/src/modules/workflows/lib/run-event-tone.ts +46 -0
  1168. package/src/modules/workflows/lib/run-execution.ts +598 -0
  1169. package/src/modules/workflows/lib/run-gantt.ts +311 -0
  1170. package/src/modules/workflows/lib/run-outcome-evidence.ts +60 -0
  1171. package/src/modules/workflows/lib/run-outcome.ts +142 -0
  1172. package/src/modules/workflows/lib/sample-resolver.ts +113 -0
  1173. package/src/modules/workflows/lib/seeds.ts +3 -1
  1174. package/src/modules/workflows/lib/server-output-contract.ts +120 -0
  1175. package/src/modules/workflows/lib/set-variable.ts +94 -0
  1176. package/src/modules/workflows/lib/signal-handler.ts +134 -4
  1177. package/src/modules/workflows/lib/start-fixtures.ts +93 -0
  1178. package/src/modules/workflows/lib/status-colors.ts +220 -21
  1179. package/src/modules/workflows/lib/step-handler.ts +744 -68
  1180. package/src/modules/workflows/lib/step-presentation.ts +295 -0
  1181. package/src/modules/workflows/lib/step-through.ts +71 -0
  1182. package/src/modules/workflows/lib/step-type-conversion.ts +263 -0
  1183. package/src/modules/workflows/lib/subgraph-clipboard.ts +214 -0
  1184. package/src/modules/workflows/lib/task-decision-context.ts +76 -0
  1185. package/src/modules/workflows/lib/task-decisions.ts +117 -0
  1186. package/src/modules/workflows/lib/task-entity-access.ts +181 -0
  1187. package/src/modules/workflows/lib/task-entity-aliases.ts +77 -0
  1188. package/src/modules/workflows/lib/task-entity-types.ts +66 -0
  1189. package/src/modules/workflows/lib/task-form-registry.ts +123 -0
  1190. package/src/modules/workflows/lib/task-form-schema.ts +129 -0
  1191. package/src/modules/workflows/lib/task-handler.ts +492 -51
  1192. package/src/modules/workflows/lib/task-inspector-config.ts +348 -0
  1193. package/src/modules/workflows/lib/task-list-query.ts +46 -0
  1194. package/src/modules/workflows/lib/task-notifications.ts +218 -0
  1195. package/src/modules/workflows/lib/task-permission-settings.ts +117 -0
  1196. package/src/modules/workflows/lib/task-presets.ts +95 -0
  1197. package/src/modules/workflows/lib/task-quick-action.ts +111 -0
  1198. package/src/modules/workflows/lib/task-resolution.ts +270 -0
  1199. package/src/modules/workflows/lib/task-sla.ts +628 -0
  1200. package/src/modules/workflows/lib/task-visibility-request.ts +668 -0
  1201. package/src/modules/workflows/lib/task-visibility.ts +627 -0
  1202. package/src/modules/workflows/lib/timer-handler.ts +8 -1
  1203. package/src/modules/workflows/lib/transition-handler.ts +228 -20
  1204. package/src/modules/workflows/lib/trigger-node.ts +272 -0
  1205. package/src/modules/workflows/lib/visual-editor-navigation.ts +29 -0
  1206. package/src/modules/workflows/lib/work-inbox/empty-state.ts +150 -0
  1207. package/src/modules/workflows/lib/work-inbox/entity-links.ts +99 -0
  1208. package/src/modules/workflows/lib/work-inbox/navigation.ts +28 -0
  1209. package/src/modules/workflows/lib/work-inbox/presentation.ts +163 -0
  1210. package/src/modules/workflows/lib/work-inbox/provider.ts +390 -0
  1211. package/src/modules/workflows/lib/work-inbox/query.ts +103 -0
  1212. package/src/modules/workflows/lib/work-inbox/service.ts +122 -0
  1213. package/src/modules/workflows/lib/work-inbox/user-task-source.ts +240 -0
  1214. package/src/modules/workflows/lib/workflow-command-enablement.ts +188 -0
  1215. package/src/modules/workflows/lib/workflow-command-settings.ts +124 -0
  1216. package/src/modules/workflows/lib/workflow-executor.ts +1036 -10
  1217. package/src/modules/workflows/lib/workflow-function-registry.ts +44 -0
  1218. package/src/modules/workflows/lib/workflow-safe-commands.ts +42 -1
  1219. package/src/modules/workflows/lib/workflow-templates.ts +91 -0
  1220. package/src/modules/workflows/migrations/.snapshot-open-mercato.json +2321 -698
  1221. package/src/modules/workflows/migrations/Migration20260626214855_workflows.ts +15 -0
  1222. package/src/modules/workflows/migrations/Migration20260626222424_workflows.ts +17 -0
  1223. package/src/modules/workflows/migrations/Migration20260727074335_workflows.ts +15 -0
  1224. package/src/modules/workflows/migrations/Migration20260728104038_workflows.ts +13 -0
  1225. package/src/modules/workflows/migrations/Migration20260728163001_workflows.ts +36 -0
  1226. package/src/modules/workflows/migrations/Migration20260729061736_workflows.ts +13 -0
  1227. package/src/modules/workflows/migrations/Migration20260729192652_workflows.ts +11 -0
  1228. package/src/modules/workflows/migrations/Migration20260730085000_workflows.ts +13 -0
  1229. package/src/modules/workflows/migrations/Migration20260730092706_workflows.ts +13 -0
  1230. package/src/modules/workflows/notifications.ts +40 -10
  1231. package/src/modules/workflows/setup.ts +128 -0
  1232. package/src/modules/workflows/subscribers/task-assigned-notification.ts +36 -45
  1233. package/src/modules/workflows/subscribers/task-deadline-breached-notification.ts +31 -0
  1234. package/src/modules/workflows/subscribers/task-reminder-notification.ts +31 -0
  1235. package/src/modules/workflows/widgets/injection/pending-work/widget.client.tsx +119 -0
  1236. package/src/modules/workflows/widgets/injection/pending-work/widget.ts +27 -0
  1237. package/src/modules/workflows/widgets/injection-table.ts +52 -2
  1238. package/src/modules/workflows/workers/workflow-activities.worker.ts +95 -42
  1239. package/src/modules/workflows/workers/workflow-definition-metric-rollup.worker.ts +71 -0
  1240. package/src/modules/workflows/workers/workflow-instance-bulk-replay.ts +51 -0
  1241. package/src/modules/workflows/workers/workflow-invoke-agent.worker.ts +72 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/workflows/lib/route-edge.ts"],
4
+ "sourcesContent": ["/**\n * Workflows Module - Route edge construction (pure)\n *\n * The ONE place a control-flow route becomes a React Flow edge.\n *\n * A route the author has just drawn and the same route re-read from a saved\n * definition are the same thing and must render identically. They did not:\n * `definitionToGraph` typed every stored transition `workflowTransition` \u2014 the\n * module's own bezier renderer \u2014 while the Studio's `handleConnect` and the\n * insert-on-route splice typed a newly authored NORMAL route `smoothstep`,\n * React Flow's built-in orthogonal renderer. ReactFlow merges\n * `defaultEdgeOptions` UNDER each edge (`{ ...defaultEdgeOptions, ...edge }`),\n * so the canvas default could not correct an explicit type, and a freshly drawn\n * route rendered as a right-angled staircase that only became a curve after a\n * save and a reload. The duplicated construction WAS the defect, so both paths\n * build their edge here.\n *\n * Render-time only: nothing here reaches `graphToDefinition`, which reads\n * endpoints, handles and `data` \u2014 an edge's `type` is how a route is drawn, not\n * what is stored.\n *\n * PURE \u2014 plain graph data in, plain graph data out. The `Edge` import is\n * type-only, so the visual-editor page keeps its lazy `@xyflow/react` boundary\n * (#3169).\n */\n\nimport type { Edge } from '@xyflow/react'\n\n/**\n * React Flow edge type registered for `WorkflowTransitionEdge` in\n * `WorkflowGraphImpl`'s `edgeTypes` (and its `defaultEdgeOptions`). Every\n * control-flow route \u2014 kinded or not, drawn or loaded \u2014 renders through it.\n */\nexport const WORKFLOW_TRANSITION_EDGE_TYPE = 'workflowTransition'\n\nexport interface WorkflowRouteEdgeInput {\n id: string\n source: string\n target: string\n /** Omitted entirely when absent, so a route without one keeps today's shape. */\n sourceHandle?: string | null\n targetHandle?: string | null\n data?: Record<string, unknown>\n}\n\n/** Build the React Flow edge for one control-flow route. */\nexport function buildWorkflowRouteEdge(input: WorkflowRouteEdgeInput): Edge {\n return {\n id: input.id,\n source: input.source,\n target: input.target,\n type: WORKFLOW_TRANSITION_EDGE_TYPE,\n ...(input.sourceHandle ? { sourceHandle: input.sourceHandle } : {}),\n ...(input.targetHandle ? { targetHandle: input.targetHandle } : {}),\n data: input.data ?? {},\n }\n}\n"],
5
+ "mappings": "AAiCO,MAAM,gCAAgC;AAatC,SAAS,uBAAuB,OAAqC;AAC1E,SAAO;AAAA,IACL,IAAI,MAAM;AAAA,IACV,QAAQ,MAAM;AAAA,IACd,QAAQ,MAAM;AAAA,IACd,MAAM;AAAA,IACN,GAAI,MAAM,eAAe,EAAE,cAAc,MAAM,aAAa,IAAI,CAAC;AAAA,IACjE,GAAI,MAAM,eAAe,EAAE,cAAc,MAAM,aAAa,IAAI,CAAC;AAAA,IACjE,MAAM,MAAM,QAAQ,CAAC;AAAA,EACvB;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,67 @@
1
+ import { ERROR_SOURCE_HANDLE_ID, ERROR_TRANSITION_KIND } from "./error-routing.js";
2
+ import { SLA_BREACH_SOURCE_HANDLE_ID, SLA_BREACH_TRANSITION_KIND } from "./breach-routing.js";
3
+ import {
4
+ OUTCOME_TRANSITION_KIND,
5
+ isAgentOutcomeKind,
6
+ outcomeSourceHandleId,
7
+ parseOutcomeSourceHandleId
8
+ } from "./outcome-routing.js";
9
+ const NORMAL_TRANSITION_KIND = "normal";
10
+ const DEFAULT_SOURCE_HANDLE_ID = "source";
11
+ function fixedHandleDescriptor(kind, sourceHandleId) {
12
+ return {
13
+ kind,
14
+ matchesSourceHandle: (candidate) => candidate === sourceHandleId,
15
+ resolveSourceHandle: () => sourceHandleId,
16
+ discriminatorFields: () => ({})
17
+ };
18
+ }
19
+ const outcomeDescriptor = {
20
+ kind: OUTCOME_TRANSITION_KIND,
21
+ matchesSourceHandle: (candidate) => parseOutcomeSourceHandleId(candidate) !== null,
22
+ resolveSourceHandle: (transition) => outcomeSourceHandleId(
23
+ isAgentOutcomeKind(transition.outcomeKind) ? transition.outcomeKind : "approved"
24
+ ),
25
+ discriminatorFields: (edge) => {
26
+ const carried = edge.data?.outcomeKind;
27
+ const fromHandle = parseOutcomeSourceHandleId(edge.sourceHandle);
28
+ const outcome = isAgentOutcomeKind(carried) ? carried : fromHandle;
29
+ return { outcomeKind: outcome ?? "approved" };
30
+ }
31
+ };
32
+ const ROUTE_KIND_DESCRIPTORS = [
33
+ fixedHandleDescriptor(ERROR_TRANSITION_KIND, ERROR_SOURCE_HANDLE_ID),
34
+ fixedHandleDescriptor(SLA_BREACH_TRANSITION_KIND, SLA_BREACH_SOURCE_HANDLE_ID),
35
+ outcomeDescriptor
36
+ ];
37
+ function listRouteKindDescriptors() {
38
+ return [...ROUTE_KIND_DESCRIPTORS];
39
+ }
40
+ function findRouteKindDescriptor(kind) {
41
+ if (typeof kind !== "string" || kind.length === 0) return null;
42
+ return ROUTE_KIND_DESCRIPTORS.find((descriptor) => descriptor.kind === kind) ?? null;
43
+ }
44
+ function findRouteKindDescriptorForHandle(sourceHandleId) {
45
+ if (typeof sourceHandleId !== "string" || sourceHandleId.length === 0) return null;
46
+ return ROUTE_KIND_DESCRIPTORS.find((descriptor) => descriptor.matchesSourceHandle(sourceHandleId)) ?? null;
47
+ }
48
+ function resolveEdgeRouteKind(edgeKind, sourceHandleId) {
49
+ return findRouteKindDescriptor(edgeKind) ?? findRouteKindDescriptorForHandle(sourceHandleId);
50
+ }
51
+ function isNonNormalRouteKind(kind) {
52
+ return findRouteKindDescriptor(kind) !== null;
53
+ }
54
+ function excludeNonNormalTransitions(transitions) {
55
+ return transitions.filter((transition) => !isNonNormalRouteKind(transition?.kind));
56
+ }
57
+ export {
58
+ DEFAULT_SOURCE_HANDLE_ID,
59
+ NORMAL_TRANSITION_KIND,
60
+ excludeNonNormalTransitions,
61
+ findRouteKindDescriptor,
62
+ findRouteKindDescriptorForHandle,
63
+ isNonNormalRouteKind,
64
+ listRouteKindDescriptors,
65
+ resolveEdgeRouteKind
66
+ };
67
+ //# sourceMappingURL=route-kinds.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/workflows/lib/route-kinds.ts"],
4
+ "sourcesContent": ["/**\n * Workflows Module - Route kind round-trip (pure)\n *\n * A transition's `kind` is what keeps a route off the happy path: `error` is\n * reachable only from a failure, `slaBreach` only from a deadline passing. Each\n * kind is drawn from its own canvas source handle, so persisting a route means\n * answering two questions in both directions:\n *\n * canvas edge \u2192 which `kind` does this connection compile to?\n * stored route \u2192 which source handle does it re-attach to?\n *\n * Both answers used to be inlined per kind, which is why `slaBreach` \u2014 added\n * after `error` \u2014 was silently downgraded to a normal transition the moment a\n * definition carrying one was opened in the Studio and saved: `graphToDefinition`\n * only ever special-cased `'error'`. Registering a kind here is now the single\n * step that makes it survive the round trip, so the next kind cannot repeat it.\n *\n * PURE: no ORM, DI, React or registry imports, so `graph-utils` can consume it\n * without pulling the editor's render chain (enforced by the xyflow\n * import-boundary test).\n */\n\nimport { ERROR_SOURCE_HANDLE_ID, ERROR_TRANSITION_KIND } from './error-routing'\nimport { SLA_BREACH_SOURCE_HANDLE_ID, SLA_BREACH_TRANSITION_KIND } from './breach-routing'\nimport {\n OUTCOME_TRANSITION_KIND,\n isAgentOutcomeKind,\n outcomeSourceHandleId,\n parseOutcomeSourceHandleId,\n} from './outcome-routing'\n\n/**\n * The absent form. A transition with no `kind` and a transition with\n * `kind: 'normal'` mean the same thing to every routing lookup, so the canvas\n * serializes both as absent \u2014 which is what keeps a definition declaring no\n * kinds byte-identical through a save.\n */\nexport const NORMAL_TRANSITION_KIND = 'normal'\n\n/**\n * The canvas source handle a normal route leaves from \u2014 every node's ordinary\n * output, and the one handle no `RouteKindDescriptor` claims.\n *\n * FROZEN: stored transitions re-attach to it by id (`definitionToGraph` emits\n * no `sourceHandle` for a normal route, which React Flow resolves to the node's\n * only unnamed source), and moving where it RENDERS must never change what it\n * is called. It moved into the outcome-row footer so every outgoing connection\n * leaves from a row; the id did not move with it.\n */\nexport const DEFAULT_SOURCE_HANDLE_ID = 'source'\n\nexport interface RouteKindTransitionLike {\n kind?: string\n outcomeKind?: string\n}\n\nexport interface RouteKindDescriptor {\n /** Value persisted as `transition.kind`. */\n kind: string\n /** True when a connection drawn from this handle compiles to this kind. */\n matchesSourceHandle(sourceHandleId: string): boolean\n /** Canvas source handle a stored transition of this kind re-attaches to. */\n resolveSourceHandle(transition: RouteKindTransitionLike): string\n /**\n * Fields beyond `kind` this route persists, derived from what the canvas\n * carries. A kind whose handles fan out (outcome routes) stores WHICH handle\n * it was drawn from; a fixed-handle kind stores nothing extra.\n */\n discriminatorFields(edge: RouteKindEdgeLike): Record<string, unknown>\n}\n\nexport interface RouteKindEdgeLike {\n data?: RouteKindTransitionLike | null\n sourceHandle?: string | null\n}\n\nfunction fixedHandleDescriptor(kind: string, sourceHandleId: string): RouteKindDescriptor {\n return {\n kind,\n matchesSourceHandle: (candidate) => candidate === sourceHandleId,\n resolveSourceHandle: () => sourceHandleId,\n discriminatorFields: () => ({}),\n }\n}\n\n/**\n * Outcome routes are the one kind that fans out: an agent node exposes a handle\n * per \u00A77.2 disposition kind, so the handle carries the outcome and the stored\n * route carries it back as `outcomeKind`. `approved` is the fallback because it\n * is the outcome \u00A77.2 renders unconditionally.\n */\nconst outcomeDescriptor: RouteKindDescriptor = {\n kind: OUTCOME_TRANSITION_KIND,\n matchesSourceHandle: (candidate) => parseOutcomeSourceHandleId(candidate) !== null,\n resolveSourceHandle: (transition) =>\n outcomeSourceHandleId(\n isAgentOutcomeKind(transition.outcomeKind) ? transition.outcomeKind : 'approved',\n ),\n discriminatorFields: (edge) => {\n const carried = edge.data?.outcomeKind\n const fromHandle = parseOutcomeSourceHandleId(edge.sourceHandle)\n const outcome = isAgentOutcomeKind(carried) ? carried : fromHandle\n return { outcomeKind: outcome ?? 'approved' }\n },\n}\n\n/**\n * Every non-normal kind the canvas can author. Order is only the lookup order:\n * handle ids are disjoint, so at most one descriptor ever matches.\n */\nconst ROUTE_KIND_DESCRIPTORS: RouteKindDescriptor[] = [\n fixedHandleDescriptor(ERROR_TRANSITION_KIND, ERROR_SOURCE_HANDLE_ID),\n fixedHandleDescriptor(SLA_BREACH_TRANSITION_KIND, SLA_BREACH_SOURCE_HANDLE_ID),\n outcomeDescriptor,\n]\n\nexport function listRouteKindDescriptors(): RouteKindDescriptor[] {\n return [...ROUTE_KIND_DESCRIPTORS]\n}\n\n/** Descriptor for a stored `transition.kind`, or null for normal / unknown kinds. */\nexport function findRouteKindDescriptor(kind: unknown): RouteKindDescriptor | null {\n if (typeof kind !== 'string' || kind.length === 0) return null\n return ROUTE_KIND_DESCRIPTORS.find((descriptor) => descriptor.kind === kind) ?? null\n}\n\n/** Descriptor for a canvas source handle, or null when the handle is the default one. */\nexport function findRouteKindDescriptorForHandle(sourceHandleId: unknown): RouteKindDescriptor | null {\n if (typeof sourceHandleId !== 'string' || sourceHandleId.length === 0) return null\n return ROUTE_KIND_DESCRIPTORS.find((descriptor) => descriptor.matchesSourceHandle(sourceHandleId)) ?? null\n}\n\n/**\n * The kind a canvas edge compiles to, from its carried `data.kind` and the\n * handle it leaves from. Returns null for a normal route, which is what makes\n * \"no kind config \u21D2 identical serialization\" the default rather than a case.\n *\n * The carried kind wins over the handle so a route authored before its handle\n * existed still serializes as its kind.\n */\nexport function resolveEdgeRouteKind(\n edgeKind: unknown,\n sourceHandleId: unknown,\n): RouteKindDescriptor | null {\n return findRouteKindDescriptor(edgeKind) ?? findRouteKindDescriptorForHandle(sourceHandleId)\n}\n\n/** True for any route the engine reaches only through its own dedicated path. */\nexport function isNonNormalRouteKind(kind: unknown): boolean {\n return findRouteKindDescriptor(kind) !== null\n}\n\n/**\n * Strip every kinded route from a normal-routing lookup.\n *\n * Each kind is reachable ONLY from its own trigger \u2014 a failure, a passed\n * deadline, a resolved disposition \u2014 so a routing lookup that forgot one would\n * auto-select it as a happy path. That is the bug shape `route-priority.ts`\n * already had for `slaBreach`, so the filter lives here once and every lookup\n * calls it instead of composing per-kind excludes and eventually missing one.\n */\nexport function excludeNonNormalTransitions<T extends { kind?: string }>(\n transitions: T[],\n): T[] {\n return transitions.filter((transition) => !isNonNormalRouteKind(transition?.kind))\n}\n"],
5
+ "mappings": "AAsBA,SAAS,wBAAwB,6BAA6B;AAC9D,SAAS,6BAA6B,kCAAkC;AACxE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAQA,MAAM,yBAAyB;AAY/B,MAAM,2BAA2B;AA2BxC,SAAS,sBAAsB,MAAc,gBAA6C;AACxF,SAAO;AAAA,IACL;AAAA,IACA,qBAAqB,CAAC,cAAc,cAAc;AAAA,IAClD,qBAAqB,MAAM;AAAA,IAC3B,qBAAqB,OAAO,CAAC;AAAA,EAC/B;AACF;AAQA,MAAM,oBAAyC;AAAA,EAC7C,MAAM;AAAA,EACN,qBAAqB,CAAC,cAAc,2BAA2B,SAAS,MAAM;AAAA,EAC9E,qBAAqB,CAAC,eACpB;AAAA,IACE,mBAAmB,WAAW,WAAW,IAAI,WAAW,cAAc;AAAA,EACxE;AAAA,EACF,qBAAqB,CAAC,SAAS;AAC7B,UAAM,UAAU,KAAK,MAAM;AAC3B,UAAM,aAAa,2BAA2B,KAAK,YAAY;AAC/D,UAAM,UAAU,mBAAmB,OAAO,IAAI,UAAU;AACxD,WAAO,EAAE,aAAa,WAAW,WAAW;AAAA,EAC9C;AACF;AAMA,MAAM,yBAAgD;AAAA,EACpD,sBAAsB,uBAAuB,sBAAsB;AAAA,EACnE,sBAAsB,4BAA4B,2BAA2B;AAAA,EAC7E;AACF;AAEO,SAAS,2BAAkD;AAChE,SAAO,CAAC,GAAG,sBAAsB;AACnC;AAGO,SAAS,wBAAwB,MAA2C;AACjF,MAAI,OAAO,SAAS,YAAY,KAAK,WAAW,EAAG,QAAO;AAC1D,SAAO,uBAAuB,KAAK,CAAC,eAAe,WAAW,SAAS,IAAI,KAAK;AAClF;AAGO,SAAS,iCAAiC,gBAAqD;AACpG,MAAI,OAAO,mBAAmB,YAAY,eAAe,WAAW,EAAG,QAAO;AAC9E,SAAO,uBAAuB,KAAK,CAAC,eAAe,WAAW,oBAAoB,cAAc,CAAC,KAAK;AACxG;AAUO,SAAS,qBACd,UACA,gBAC4B;AAC5B,SAAO,wBAAwB,QAAQ,KAAK,iCAAiC,cAAc;AAC7F;AAGO,SAAS,qBAAqB,MAAwB;AAC3D,SAAO,wBAAwB,IAAI,MAAM;AAC3C;AAWO,SAAS,4BACd,aACK;AACL,SAAO,YAAY,OAAO,CAAC,eAAe,CAAC,qBAAqB,YAAY,IAAI,CAAC;AACnF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,104 @@
1
+ import { isNonNormalRouteKind } from "./route-kinds.js";
2
+ import { routeCarriesCondition } from "./route-chips.js";
3
+ const ROUTE_PRIORITY_TOP = 100;
4
+ const ROUTE_PRIORITY_STEP = 10;
5
+ const ROUTE_PRIORITY_OTHERWISE = 0;
6
+ function edgeData(edge) {
7
+ return edge.data ?? {};
8
+ }
9
+ function readPriority(edge) {
10
+ const raw = edgeData(edge).priority;
11
+ return typeof raw === "number" && Number.isFinite(raw) ? raw : 0;
12
+ }
13
+ function outgoingNormalRoutes(edges, nodeId) {
14
+ return edges.filter(
15
+ (edge) => edge.source === nodeId && edge.type !== "workflowDataMapping" && !isNonNormalRouteKind(edgeData(edge).kind)
16
+ );
17
+ }
18
+ function orderRoutesByPriority(routes) {
19
+ return routes.map((edge, index) => ({ edge, index, priority: readPriority(edge) })).sort((a, b) => b.priority - a.priority || a.index - b.index).map((entry) => entry.edge);
20
+ }
21
+ function derivePriorities(entries) {
22
+ const count = entries.length;
23
+ if (count === 0) return [];
24
+ const lastIndex = count - 1;
25
+ const hasConditionedRoute = entries.some((entry) => entry.hasCondition);
26
+ const trailingOtherwise = count > 1 && hasConditionedRoute && !entries[lastIndex].hasCondition;
27
+ const caseCount = trailingOtherwise ? lastIndex : count;
28
+ const top = Math.max(ROUTE_PRIORITY_TOP, caseCount * ROUTE_PRIORITY_STEP);
29
+ return entries.map((_entry, index) => {
30
+ if (trailingOtherwise && index === lastIndex) return ROUTE_PRIORITY_OTHERWISE;
31
+ return top - index * ROUTE_PRIORITY_STEP;
32
+ });
33
+ }
34
+ function readRouteOrder(edges, nodeId) {
35
+ const ordered = orderRoutesByPriority(outgoingNormalRoutes(edges, nodeId));
36
+ const hasConditionedRoute = ordered.some((edge) => routeCarriesCondition(edgeData(edge)));
37
+ const lastIndex = ordered.length - 1;
38
+ return ordered.map((edge, index) => {
39
+ const data = edgeData(edge);
40
+ const hasCondition = routeCarriesCondition(data);
41
+ return {
42
+ transitionId: edge.id,
43
+ toStepId: edge.target,
44
+ label: data.transitionName || data.label || void 0,
45
+ priority: readPriority(edge),
46
+ hasCondition,
47
+ isOtherwise: !hasCondition && hasConditionedRoute && index === lastIndex && ordered.length > 1
48
+ };
49
+ });
50
+ }
51
+ function moveRoute(entries, fromIndex, toIndex) {
52
+ if (fromIndex === toIndex) return entries;
53
+ if (fromIndex < 0 || fromIndex >= entries.length) return entries;
54
+ const clampedTo = Math.min(Math.max(toIndex, 0), entries.length - 1);
55
+ const next = [...entries];
56
+ const [moved] = next.splice(fromIndex, 1);
57
+ next.splice(clampedTo, 0, moved);
58
+ return next;
59
+ }
60
+ function applyDerivedPriorities(entries) {
61
+ const priorities = derivePriorities(entries);
62
+ return entries.map((entry, index) => ({
63
+ ...entry,
64
+ priority: priorities[index],
65
+ isOtherwise: priorities[index] === ROUTE_PRIORITY_OTHERWISE && !entry.hasCondition && entries.length > 1
66
+ }));
67
+ }
68
+ function applyRouteOrder(edges, nodeId, entries) {
69
+ const priorityByTransitionId = new Map(entries.map((entry) => [entry.transitionId, entry.priority]));
70
+ return edges.map((edge) => {
71
+ if (edge.source !== nodeId) return edge;
72
+ if (!priorityByTransitionId.has(edge.id)) return edge;
73
+ return { ...edge, data: { ...edge.data ?? {}, priority: priorityByTransitionId.get(edge.id) } };
74
+ });
75
+ }
76
+ function needsPriorityNormalization(edges, nodeId) {
77
+ const entries = readRouteOrder(edges, nodeId);
78
+ if (entries.length < 2) return false;
79
+ const derived = derivePriorities(entries);
80
+ return entries.some((entry, index) => entry.priority !== derived[index]);
81
+ }
82
+ function canNormalizeRoutePriorities(source) {
83
+ return source !== "code";
84
+ }
85
+ function normalizeRoutePriorities(edges, nodeId) {
86
+ if (!needsPriorityNormalization(edges, nodeId)) return edges;
87
+ return applyRouteOrder(edges, nodeId, applyDerivedPriorities(readRouteOrder(edges, nodeId)));
88
+ }
89
+ export {
90
+ ROUTE_PRIORITY_OTHERWISE,
91
+ ROUTE_PRIORITY_STEP,
92
+ ROUTE_PRIORITY_TOP,
93
+ applyDerivedPriorities,
94
+ applyRouteOrder,
95
+ canNormalizeRoutePriorities,
96
+ derivePriorities,
97
+ moveRoute,
98
+ needsPriorityNormalization,
99
+ normalizeRoutePriorities,
100
+ orderRoutesByPriority,
101
+ outgoingNormalRoutes,
102
+ readRouteOrder
103
+ };
104
+ //# sourceMappingURL=route-priority.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/workflows/lib/route-priority.ts"],
4
+ "sourcesContent": ["/**\n * Workflows Module - Route Priority (pure)\n *\n * Spec 2026-07-26-workflows-ux-redesign.md section 4.4: \"Priority becomes\n * drag-to-reorder of a node's outgoing routes; the number is derived and\n * demoted to advanced. First edit of a node's routes runs a priority\n * normalization pass (existing definitions mix dialog-default 100 with\n * schema-default 0).\"\n *\n * The engine is untouched: `findValidTransitions` still evaluates outgoing\n * transitions highest-priority-first with ties keeping definition order. This\n * module only decides which NUMBERS express a given author-visible ORDER, and\n * the normalization pass rewrites messy legacy numbers into clean ones WITHOUT\n * changing that evaluation order.\n *\n * Error routes (`kind: 'error'`) are never part of normal-route ordering \u2014 they\n * are only reachable from a failure, so their priority means something else\n * entirely (`findErrorTransition`). They pass through untouched.\n *\n * PURE: no React, no ORM, no DI. The only xyflow dependency is the `Edge` type.\n */\n\nimport type { Edge } from '@xyflow/react'\nimport { isNonNormalRouteKind } from './route-kinds'\nimport { routeCarriesCondition } from './route-chips'\n\n/** Priority of the highest route when a node has at most 10 normal routes. */\nexport const ROUTE_PRIORITY_TOP = 100\n\n/** Gap between consecutive routes, matching the Switch compiler (step 2.2). */\nexport const ROUTE_PRIORITY_STEP = 10\n\n/** The trailing unconditioned route always evaluates last. */\nexport const ROUTE_PRIORITY_OTHERWISE = 0\n\nexport interface RouteOrderEntry {\n transitionId: string\n toStepId: string\n label?: string\n priority: number\n hasCondition: boolean\n isOtherwise: boolean\n}\n\ninterface EdgeDataLike {\n priority?: number\n condition?: unknown\n preConditions?: unknown\n transitionName?: string\n label?: string\n kind?: string\n}\n\nfunction edgeData(edge: Edge): EdgeDataLike {\n return (edge.data ?? {}) as EdgeDataLike\n}\n\nfunction readPriority(edge: Edge): number {\n const raw = edgeData(edge).priority\n return typeof raw === 'number' && Number.isFinite(raw) ? raw : 0\n}\n\n/**\n * A node's outgoing NORMAL routes \u2014 every kinded route (error, SLA-breach,\n * agent outcome) and data-mapping edge excluded. Filtering only error routes\n * here used to let a breach or outcome route into the priority ladder, where it\n * would read as a happy path the author never wired.\n */\nexport function outgoingNormalRoutes(edges: Edge[], nodeId: string): Edge[] {\n return edges.filter(\n (edge) =>\n edge.source === nodeId &&\n edge.type !== 'workflowDataMapping' &&\n !isNonNormalRouteKind(edgeData(edge).kind),\n )\n}\n\n/**\n * The order the engine evaluates a node's routes in today: priority descending,\n * ties keeping definition order. Implemented as an index-decorated comparison so\n * it stays stable on every runtime, with an explicit comparator (#3620).\n */\nexport function orderRoutesByPriority(routes: Edge[]): Edge[] {\n return routes\n .map((edge, index) => ({ edge, index, priority: readPriority(edge) }))\n .sort((a, b) => (b.priority - a.priority) || (a.index - b.index))\n .map((entry) => entry.edge)\n}\n\n/**\n * Derived priorities for an ordered route list. The last route is the\n * \"otherwise\" \u2014 and gets priority 0 \u2014 only when it carries no condition while an\n * earlier one does; otherwise every route keeps a positive, evenly spaced slot.\n * The top value grows with the route count so a node with more than ten routes\n * still gets unique, non-negative numbers.\n */\nexport function derivePriorities(entries: Array<{ hasCondition: boolean }>): number[] {\n const count = entries.length\n if (count === 0) return []\n\n const lastIndex = count - 1\n const hasConditionedRoute = entries.some((entry) => entry.hasCondition)\n const trailingOtherwise = count > 1 && hasConditionedRoute && !entries[lastIndex].hasCondition\n const caseCount = trailingOtherwise ? lastIndex : count\n const top = Math.max(ROUTE_PRIORITY_TOP, caseCount * ROUTE_PRIORITY_STEP)\n\n return entries.map((_entry, index) => {\n if (trailingOtherwise && index === lastIndex) return ROUTE_PRIORITY_OTHERWISE\n return top - index * ROUTE_PRIORITY_STEP\n })\n}\n\n/** The inspector's view of a node's outgoing routes, in evaluation order. */\nexport function readRouteOrder(edges: Edge[], nodeId: string): RouteOrderEntry[] {\n const ordered = orderRoutesByPriority(outgoingNormalRoutes(edges, nodeId))\n const hasConditionedRoute = ordered.some((edge) => routeCarriesCondition(edgeData(edge)))\n const lastIndex = ordered.length - 1\n\n return ordered.map((edge, index) => {\n const data = edgeData(edge)\n const hasCondition = routeCarriesCondition(data)\n return {\n transitionId: edge.id,\n toStepId: edge.target,\n label: data.transitionName || data.label || undefined,\n priority: readPriority(edge),\n hasCondition,\n isOtherwise: !hasCondition && hasConditionedRoute && index === lastIndex && ordered.length > 1,\n }\n })\n}\n\n/** Move one route within the list, returning a new array (drag-to-reorder). */\nexport function moveRoute(entries: RouteOrderEntry[], fromIndex: number, toIndex: number): RouteOrderEntry[] {\n if (fromIndex === toIndex) return entries\n if (fromIndex < 0 || fromIndex >= entries.length) return entries\n const clampedTo = Math.min(Math.max(toIndex, 0), entries.length - 1)\n const next = [...entries]\n const [moved] = next.splice(fromIndex, 1)\n next.splice(clampedTo, 0, moved)\n return next\n}\n\n/** Re-derive priorities so the entries read top-to-bottom in evaluation order. */\nexport function applyDerivedPriorities(entries: RouteOrderEntry[]): RouteOrderEntry[] {\n const priorities = derivePriorities(entries)\n return entries.map((entry, index) => ({\n ...entry,\n priority: priorities[index],\n isOtherwise: priorities[index] === ROUTE_PRIORITY_OTHERWISE && !entry.hasCondition && entries.length > 1,\n }))\n}\n\n/** Write an inspector route list back onto the node's outgoing edges. */\nexport function applyRouteOrder(edges: Edge[], nodeId: string, entries: RouteOrderEntry[]): Edge[] {\n const priorityByTransitionId = new Map(entries.map((entry) => [entry.transitionId, entry.priority]))\n return edges.map((edge) => {\n if (edge.source !== nodeId) return edge\n if (!priorityByTransitionId.has(edge.id)) return edge\n return { ...edge, data: { ...(edge.data ?? {}), priority: priorityByTransitionId.get(edge.id) } }\n })\n}\n\n/**\n * True when a node's outgoing routes still carry legacy numbering \u2014 duplicated\n * priorities (the dialog default of 100 on every route) or values off the\n * derived scale. A single route never needs normalizing.\n */\nexport function needsPriorityNormalization(edges: Edge[], nodeId: string): boolean {\n const entries = readRouteOrder(edges, nodeId)\n if (entries.length < 2) return false\n const derived = derivePriorities(entries)\n return entries.some((entry, index) => entry.priority !== derived[index])\n}\n\n/**\n * Whether the normalization pass may run for a definition of this `source`.\n *\n * A `code` definition is authored in TypeScript and is read-only in the editor \u2014\n * rewriting its priorities would silently diverge the canvas from the code. It\n * becomes normalizable only after Customize, which mints an editable override\n * (`code_override`), which is exactly the spec's \"for `source: 'code'`\n * definitions this happens only on Customize\".\n */\nexport function canNormalizeRoutePriorities(source: string | null | undefined): boolean {\n return source !== 'code'\n}\n\n/**\n * The normalization pass: rewrite a node's outgoing normal-route priorities to\n * clean descending values while PRESERVING the order the engine evaluates them\n * in today. Idempotent, and a no-op for a node whose routes are already clean.\n */\nexport function normalizeRoutePriorities(edges: Edge[], nodeId: string): Edge[] {\n if (!needsPriorityNormalization(edges, nodeId)) return edges\n return applyRouteOrder(edges, nodeId, applyDerivedPriorities(readRouteOrder(edges, nodeId)))\n}\n"],
5
+ "mappings": "AAuBA,SAAS,4BAA4B;AACrC,SAAS,6BAA6B;AAG/B,MAAM,qBAAqB;AAG3B,MAAM,sBAAsB;AAG5B,MAAM,2BAA2B;AAoBxC,SAAS,SAAS,MAA0B;AAC1C,SAAQ,KAAK,QAAQ,CAAC;AACxB;AAEA,SAAS,aAAa,MAAoB;AACxC,QAAM,MAAM,SAAS,IAAI,EAAE;AAC3B,SAAO,OAAO,QAAQ,YAAY,OAAO,SAAS,GAAG,IAAI,MAAM;AACjE;AAQO,SAAS,qBAAqB,OAAe,QAAwB;AAC1E,SAAO,MAAM;AAAA,IACX,CAAC,SACC,KAAK,WAAW,UAChB,KAAK,SAAS,yBACd,CAAC,qBAAqB,SAAS,IAAI,EAAE,IAAI;AAAA,EAC7C;AACF;AAOO,SAAS,sBAAsB,QAAwB;AAC5D,SAAO,OACJ,IAAI,CAAC,MAAM,WAAW,EAAE,MAAM,OAAO,UAAU,aAAa,IAAI,EAAE,EAAE,EACpE,KAAK,CAAC,GAAG,MAAO,EAAE,WAAW,EAAE,YAAc,EAAE,QAAQ,EAAE,KAAM,EAC/D,IAAI,CAAC,UAAU,MAAM,IAAI;AAC9B;AASO,SAAS,iBAAiB,SAAqD;AACpF,QAAM,QAAQ,QAAQ;AACtB,MAAI,UAAU,EAAG,QAAO,CAAC;AAEzB,QAAM,YAAY,QAAQ;AAC1B,QAAM,sBAAsB,QAAQ,KAAK,CAAC,UAAU,MAAM,YAAY;AACtE,QAAM,oBAAoB,QAAQ,KAAK,uBAAuB,CAAC,QAAQ,SAAS,EAAE;AAClF,QAAM,YAAY,oBAAoB,YAAY;AAClD,QAAM,MAAM,KAAK,IAAI,oBAAoB,YAAY,mBAAmB;AAExE,SAAO,QAAQ,IAAI,CAAC,QAAQ,UAAU;AACpC,QAAI,qBAAqB,UAAU,UAAW,QAAO;AACrD,WAAO,MAAM,QAAQ;AAAA,EACvB,CAAC;AACH;AAGO,SAAS,eAAe,OAAe,QAAmC;AAC/E,QAAM,UAAU,sBAAsB,qBAAqB,OAAO,MAAM,CAAC;AACzE,QAAM,sBAAsB,QAAQ,KAAK,CAAC,SAAS,sBAAsB,SAAS,IAAI,CAAC,CAAC;AACxF,QAAM,YAAY,QAAQ,SAAS;AAEnC,SAAO,QAAQ,IAAI,CAAC,MAAM,UAAU;AAClC,UAAM,OAAO,SAAS,IAAI;AAC1B,UAAM,eAAe,sBAAsB,IAAI;AAC/C,WAAO;AAAA,MACL,cAAc,KAAK;AAAA,MACnB,UAAU,KAAK;AAAA,MACf,OAAO,KAAK,kBAAkB,KAAK,SAAS;AAAA,MAC5C,UAAU,aAAa,IAAI;AAAA,MAC3B;AAAA,MACA,aAAa,CAAC,gBAAgB,uBAAuB,UAAU,aAAa,QAAQ,SAAS;AAAA,IAC/F;AAAA,EACF,CAAC;AACH;AAGO,SAAS,UAAU,SAA4B,WAAmB,SAAoC;AAC3G,MAAI,cAAc,QAAS,QAAO;AAClC,MAAI,YAAY,KAAK,aAAa,QAAQ,OAAQ,QAAO;AACzD,QAAM,YAAY,KAAK,IAAI,KAAK,IAAI,SAAS,CAAC,GAAG,QAAQ,SAAS,CAAC;AACnE,QAAM,OAAO,CAAC,GAAG,OAAO;AACxB,QAAM,CAAC,KAAK,IAAI,KAAK,OAAO,WAAW,CAAC;AACxC,OAAK,OAAO,WAAW,GAAG,KAAK;AAC/B,SAAO;AACT;AAGO,SAAS,uBAAuB,SAA+C;AACpF,QAAM,aAAa,iBAAiB,OAAO;AAC3C,SAAO,QAAQ,IAAI,CAAC,OAAO,WAAW;AAAA,IACpC,GAAG;AAAA,IACH,UAAU,WAAW,KAAK;AAAA,IAC1B,aAAa,WAAW,KAAK,MAAM,4BAA4B,CAAC,MAAM,gBAAgB,QAAQ,SAAS;AAAA,EACzG,EAAE;AACJ;AAGO,SAAS,gBAAgB,OAAe,QAAgB,SAAoC;AACjG,QAAM,yBAAyB,IAAI,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,cAAc,MAAM,QAAQ,CAAC,CAAC;AACnG,SAAO,MAAM,IAAI,CAAC,SAAS;AACzB,QAAI,KAAK,WAAW,OAAQ,QAAO;AACnC,QAAI,CAAC,uBAAuB,IAAI,KAAK,EAAE,EAAG,QAAO;AACjD,WAAO,EAAE,GAAG,MAAM,MAAM,EAAE,GAAI,KAAK,QAAQ,CAAC,GAAI,UAAU,uBAAuB,IAAI,KAAK,EAAE,EAAE,EAAE;AAAA,EAClG,CAAC;AACH;AAOO,SAAS,2BAA2B,OAAe,QAAyB;AACjF,QAAM,UAAU,eAAe,OAAO,MAAM;AAC5C,MAAI,QAAQ,SAAS,EAAG,QAAO;AAC/B,QAAM,UAAU,iBAAiB,OAAO;AACxC,SAAO,QAAQ,KAAK,CAAC,OAAO,UAAU,MAAM,aAAa,QAAQ,KAAK,CAAC;AACzE;AAWO,SAAS,4BAA4B,QAA4C;AACtF,SAAO,WAAW;AACpB;AAOO,SAAS,yBAAyB,OAAe,QAAwB;AAC9E,MAAI,CAAC,2BAA2B,OAAO,MAAM,EAAG,QAAO;AACvD,SAAO,gBAAgB,OAAO,QAAQ,uBAAuB,eAAe,OAAO,MAAM,CAAC,CAAC;AAC7F;",
6
+ "names": []
7
+ }
@@ -0,0 +1,44 @@
1
+ const SECOND_MS = 1e3;
2
+ const MINUTE_MS = 60 * SECOND_MS;
3
+ const HOUR_MS = 60 * MINUTE_MS;
4
+ const DAY_MS = 24 * HOUR_MS;
5
+ function toMillis(value) {
6
+ if (!value) return null;
7
+ const parsed = value instanceof Date ? value.getTime() : new Date(value).getTime();
8
+ return Number.isNaN(parsed) ? null : parsed;
9
+ }
10
+ function formatDurationMs(durationMs) {
11
+ const value = Math.max(durationMs, 0);
12
+ if (value < SECOND_MS) return `${Math.round(value)}ms`;
13
+ if (value < MINUTE_MS) return `${(value / SECOND_MS).toFixed(value < 10 * SECOND_MS ? 1 : 0)}s`;
14
+ if (value < HOUR_MS) {
15
+ return `${Math.floor(value / MINUTE_MS)}m ${Math.floor(value % MINUTE_MS / SECOND_MS)}s`;
16
+ }
17
+ if (value < DAY_MS) {
18
+ return `${Math.floor(value / HOUR_MS)}h ${Math.floor(value % HOUR_MS / MINUTE_MS)}m`;
19
+ }
20
+ return `${Math.floor(value / DAY_MS)}d ${Math.floor(value % DAY_MS / HOUR_MS)}h`;
21
+ }
22
+ function formatRunDuration(startedAt, endedAt, measuredMs) {
23
+ if (typeof measuredMs === "number" && Number.isFinite(measuredMs)) {
24
+ return formatDurationMs(measuredMs);
25
+ }
26
+ const start = toMillis(startedAt);
27
+ if (start === null) return null;
28
+ const end = toMillis(endedAt);
29
+ if (end === null) return null;
30
+ return formatDurationMs(end - start);
31
+ }
32
+ function formatElapsedSince(startedAt, endedAt, now = Date.now()) {
33
+ const start = toMillis(startedAt);
34
+ if (start === null) return null;
35
+ const end = toMillis(endedAt) ?? now;
36
+ return formatDurationMs(end - start);
37
+ }
38
+ export {
39
+ formatDurationMs,
40
+ formatElapsedSince,
41
+ formatRunDuration,
42
+ toMillis
43
+ };
44
+ //# sourceMappingURL=run-duration.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/workflows/lib/run-duration.ts"],
4
+ "sourcesContent": ["/**\n * Run duration formatting (spec \u00A78.3) \u2014 PURE.\n *\n * One implementation so the overview card, the per-step inspector, the Gantt\n * axis and the run list cannot each round a duration differently.\n */\n\nconst SECOND_MS = 1000\nconst MINUTE_MS = 60 * SECOND_MS\nconst HOUR_MS = 60 * MINUTE_MS\nconst DAY_MS = 24 * HOUR_MS\n\nexport function toMillis(value: string | Date | null | undefined): number | null {\n if (!value) return null\n const parsed = value instanceof Date ? value.getTime() : new Date(value).getTime()\n return Number.isNaN(parsed) ? null : parsed\n}\n\n/**\n * Human-readable elapsed time. Sub-second durations keep their milliseconds\n * because an automated step that takes 8ms and one that takes 800ms are not\n * the same thing to whoever is debugging the run.\n */\nexport function formatDurationMs(durationMs: number): string {\n const value = Math.max(durationMs, 0)\n if (value < SECOND_MS) return `${Math.round(value)}ms`\n if (value < MINUTE_MS) return `${(value / SECOND_MS).toFixed(value < 10 * SECOND_MS ? 1 : 0)}s`\n if (value < HOUR_MS) {\n return `${Math.floor(value / MINUTE_MS)}m ${Math.floor((value % MINUTE_MS) / SECOND_MS)}s`\n }\n if (value < DAY_MS) {\n return `${Math.floor(value / HOUR_MS)}h ${Math.floor((value % HOUR_MS) / MINUTE_MS)}m`\n }\n return `${Math.floor(value / DAY_MS)}d ${Math.floor((value % DAY_MS) / HOUR_MS)}h`\n}\n\n/**\n * Duration between two timestamps, preferring an engine-measured value when\n * one was recorded. Returns `null` when nothing can be derived, so callers\n * render a dash rather than a misleading `0ms`.\n */\nexport function formatRunDuration(\n startedAt: string | Date | null | undefined,\n endedAt: string | Date | null | undefined,\n measuredMs?: number | null\n): string | null {\n if (typeof measuredMs === 'number' && Number.isFinite(measuredMs)) {\n return formatDurationMs(measuredMs)\n }\n const start = toMillis(startedAt)\n if (start === null) return null\n const end = toMillis(endedAt)\n if (end === null) return null\n return formatDurationMs(end - start)\n}\n\n/**\n * Elapsed time for a run that has not finished \u2014 measured against `now` rather\n * than left blank, so a stuck instance reads as stuck.\n */\nexport function formatElapsedSince(\n startedAt: string | Date | null | undefined,\n endedAt: string | Date | null | undefined,\n now: number = Date.now()\n): string | null {\n const start = toMillis(startedAt)\n if (start === null) return null\n const end = toMillis(endedAt) ?? now\n return formatDurationMs(end - start)\n}\n"],
5
+ "mappings": "AAOA,MAAM,YAAY;AAClB,MAAM,YAAY,KAAK;AACvB,MAAM,UAAU,KAAK;AACrB,MAAM,SAAS,KAAK;AAEb,SAAS,SAAS,OAAwD;AAC/E,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,SAAS,iBAAiB,OAAO,MAAM,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE,QAAQ;AACjF,SAAO,OAAO,MAAM,MAAM,IAAI,OAAO;AACvC;AAOO,SAAS,iBAAiB,YAA4B;AAC3D,QAAM,QAAQ,KAAK,IAAI,YAAY,CAAC;AACpC,MAAI,QAAQ,UAAW,QAAO,GAAG,KAAK,MAAM,KAAK,CAAC;AAClD,MAAI,QAAQ,UAAW,QAAO,IAAI,QAAQ,WAAW,QAAQ,QAAQ,KAAK,YAAY,IAAI,CAAC,CAAC;AAC5F,MAAI,QAAQ,SAAS;AACnB,WAAO,GAAG,KAAK,MAAM,QAAQ,SAAS,CAAC,KAAK,KAAK,MAAO,QAAQ,YAAa,SAAS,CAAC;AAAA,EACzF;AACA,MAAI,QAAQ,QAAQ;AAClB,WAAO,GAAG,KAAK,MAAM,QAAQ,OAAO,CAAC,KAAK,KAAK,MAAO,QAAQ,UAAW,SAAS,CAAC;AAAA,EACrF;AACA,SAAO,GAAG,KAAK,MAAM,QAAQ,MAAM,CAAC,KAAK,KAAK,MAAO,QAAQ,SAAU,OAAO,CAAC;AACjF;AAOO,SAAS,kBACd,WACA,SACA,YACe;AACf,MAAI,OAAO,eAAe,YAAY,OAAO,SAAS,UAAU,GAAG;AACjE,WAAO,iBAAiB,UAAU;AAAA,EACpC;AACA,QAAM,QAAQ,SAAS,SAAS;AAChC,MAAI,UAAU,KAAM,QAAO;AAC3B,QAAM,MAAM,SAAS,OAAO;AAC5B,MAAI,QAAQ,KAAM,QAAO;AACzB,SAAO,iBAAiB,MAAM,KAAK;AACrC;AAMO,SAAS,mBACd,WACA,SACA,MAAc,KAAK,IAAI,GACR;AACf,QAAM,QAAQ,SAAS,SAAS;AAChC,MAAI,UAAU,KAAM,QAAO;AAC3B,QAAM,MAAM,SAAS,OAAO,KAAK;AACjC,SAAO,iBAAiB,MAAM,KAAK;AACrC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,25 @@
1
+ const TONE_RULES = [
2
+ { tone: "error", matches: (type) => type.includes("FAILED") || type.includes("Failed") },
3
+ { tone: "error", matches: (type) => type.includes("REJECTED") || type.includes("TIMEOUT") },
4
+ { tone: "warning", matches: (type) => type.startsWith("COMPENSAT") || type.includes("Compensation") },
5
+ { tone: "warning", matches: (type) => type.startsWith("ERROR_") || type === "OUTCOME_UNHANDLED" },
6
+ { tone: "warning", matches: (type) => type.includes("ESCALATED") || type.includes("PAUSED") },
7
+ { tone: "neutral", matches: (type) => type.includes("CANCELLED") || type.includes("SKIPPED") },
8
+ { tone: "success", matches: (type) => type.includes("COMPLETED") || type.includes("EXITED") || type.includes("Exited") },
9
+ { tone: "info", matches: (type) => type.includes("STARTED") || type.includes("ENTERED") || type.includes("Entered") },
10
+ { tone: "info", matches: (type) => type.includes("EXECUTED") || type.includes("ROUTED") || type.includes("RECEIVED") }
11
+ ];
12
+ function classifyRunEventType(eventType) {
13
+ for (const rule of TONE_RULES) {
14
+ if (rule.matches(eventType)) return rule.tone;
15
+ }
16
+ return "neutral";
17
+ }
18
+ function isRunMilestoneEvent(eventType) {
19
+ return eventType.startsWith("STEP_") || eventType.startsWith("WORKFLOW_") || eventType.startsWith("TRANSITION_") || eventType.startsWith("ERROR_") || eventType.startsWith("OUTCOME_");
20
+ }
21
+ export {
22
+ classifyRunEventType,
23
+ isRunMilestoneEvent
24
+ };
25
+ //# sourceMappingURL=run-event-tone.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/workflows/lib/run-event-tone.ts"],
4
+ "sourcesContent": ["/**\n * Workflow-event tone classification (spec \u00A78.3) \u2014 PURE.\n *\n * The instance viewer used to classify event types inline with hardcoded\n * Tailwind shades (`bg-orange-100`, `bg-blue-100`, \u2026), which is both a DS\n * violation and untestable. The mapping is data, so it lives here and every\n * surface that renders an event badge reads the same answer.\n */\n\nexport type RunEventTone = 'success' | 'error' | 'warning' | 'info' | 'neutral'\n\n/**\n * Matched most-specific first. A `COMPENSATION_ACTIVITY_FAILED` is a failure\n * before it is a compensation event \u2014 the previous inline chain answered\n * \"compensation\" for it, which painted a real failure the same warning colour\n * as a routine rollback step.\n */\nconst TONE_RULES: ReadonlyArray<{ tone: RunEventTone; matches: (eventType: string) => boolean }> = [\n { tone: 'error', matches: (type) => type.includes('FAILED') || type.includes('Failed') },\n { tone: 'error', matches: (type) => type.includes('REJECTED') || type.includes('TIMEOUT') },\n { tone: 'warning', matches: (type) => type.startsWith('COMPENSAT') || type.includes('Compensation') },\n { tone: 'warning', matches: (type) => type.startsWith('ERROR_') || type === 'OUTCOME_UNHANDLED' },\n { tone: 'warning', matches: (type) => type.includes('ESCALATED') || type.includes('PAUSED') },\n { tone: 'neutral', matches: (type) => type.includes('CANCELLED') || type.includes('SKIPPED') },\n { tone: 'success', matches: (type) => type.includes('COMPLETED') || type.includes('EXITED') || type.includes('Exited') },\n { tone: 'info', matches: (type) => type.includes('STARTED') || type.includes('ENTERED') || type.includes('Entered') },\n { tone: 'info', matches: (type) => type.includes('EXECUTED') || type.includes('ROUTED') || type.includes('RECEIVED') },\n]\n\nexport function classifyRunEventType(eventType: string): RunEventTone {\n for (const rule of TONE_RULES) {\n if (rule.matches(eventType)) return rule.tone\n }\n return 'neutral'\n}\n\n/** Events that describe the run's shape rather than its bookkeeping. */\nexport function isRunMilestoneEvent(eventType: string): boolean {\n return (\n eventType.startsWith('STEP_')\n || eventType.startsWith('WORKFLOW_')\n || eventType.startsWith('TRANSITION_')\n || eventType.startsWith('ERROR_')\n || eventType.startsWith('OUTCOME_')\n )\n}\n"],
5
+ "mappings": "AAiBA,MAAM,aAA6F;AAAA,EACjG,EAAE,MAAM,SAAS,SAAS,CAAC,SAAS,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS,QAAQ,EAAE;AAAA,EACvF,EAAE,MAAM,SAAS,SAAS,CAAC,SAAS,KAAK,SAAS,UAAU,KAAK,KAAK,SAAS,SAAS,EAAE;AAAA,EAC1F,EAAE,MAAM,WAAW,SAAS,CAAC,SAAS,KAAK,WAAW,WAAW,KAAK,KAAK,SAAS,cAAc,EAAE;AAAA,EACpG,EAAE,MAAM,WAAW,SAAS,CAAC,SAAS,KAAK,WAAW,QAAQ,KAAK,SAAS,oBAAoB;AAAA,EAChG,EAAE,MAAM,WAAW,SAAS,CAAC,SAAS,KAAK,SAAS,WAAW,KAAK,KAAK,SAAS,QAAQ,EAAE;AAAA,EAC5F,EAAE,MAAM,WAAW,SAAS,CAAC,SAAS,KAAK,SAAS,WAAW,KAAK,KAAK,SAAS,SAAS,EAAE;AAAA,EAC7F,EAAE,MAAM,WAAW,SAAS,CAAC,SAAS,KAAK,SAAS,WAAW,KAAK,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS,QAAQ,EAAE;AAAA,EACvH,EAAE,MAAM,QAAQ,SAAS,CAAC,SAAS,KAAK,SAAS,SAAS,KAAK,KAAK,SAAS,SAAS,KAAK,KAAK,SAAS,SAAS,EAAE;AAAA,EACpH,EAAE,MAAM,QAAQ,SAAS,CAAC,SAAS,KAAK,SAAS,UAAU,KAAK,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS,UAAU,EAAE;AACvH;AAEO,SAAS,qBAAqB,WAAiC;AACpE,aAAW,QAAQ,YAAY;AAC7B,QAAI,KAAK,QAAQ,SAAS,EAAG,QAAO,KAAK;AAAA,EAC3C;AACA,SAAO;AACT;AAGO,SAAS,oBAAoB,WAA4B;AAC9D,SACE,UAAU,WAAW,OAAO,KACzB,UAAU,WAAW,WAAW,KAChC,UAAU,WAAW,aAAa,KAClC,UAAU,WAAW,QAAQ,KAC7B,UAAU,WAAW,UAAU;AAEtC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,305 @@
1
+ const STEP_ENTERED_EVENT_TYPES = /* @__PURE__ */ new Set(["STEP_ENTERED", "StepEntered"]);
2
+ const STEP_COMPLETED_EVENT_TYPES = /* @__PURE__ */ new Set(["STEP_COMPLETED", "STEP_EXITED", "StepExited"]);
3
+ const STEP_FAILED_EVENT_TYPES = /* @__PURE__ */ new Set(["STEP_FAILED", "StepFailed"]);
4
+ const STEP_SKIPPED_EVENT_TYPES = /* @__PURE__ */ new Set(["STEP_SKIPPED", "StepSkipped"]);
5
+ const TRANSITION_EXECUTED_EVENT_TYPES = /* @__PURE__ */ new Set(["TRANSITION_EXECUTED", "TransitionExecuted"]);
6
+ const WAIT_RESOLVED_EVENT_TYPES = /* @__PURE__ */ new Set([
7
+ "ACTIVITY_COMPLETED",
8
+ "ACTIVITY_FAILED",
9
+ "SIGNAL_RECEIVED",
10
+ "TIMER_FIRED",
11
+ "CONDITION_MET",
12
+ "CONDITION_TIMED_OUT",
13
+ "USER_TASK_COMPLETED",
14
+ "PARALLEL_JOIN_COMPLETED"
15
+ ]);
16
+ const BRANCH_SETTLED_EVENT_TYPES = /* @__PURE__ */ new Set([
17
+ "PARALLEL_BRANCH_COMPLETED",
18
+ "PARALLEL_BRANCH_FAILED",
19
+ "PARALLEL_BRANCH_CANCELLED"
20
+ ]);
21
+ function toDate(value) {
22
+ if (!value) return null;
23
+ const parsed = value instanceof Date ? value : new Date(value);
24
+ return Number.isNaN(parsed.getTime()) ? null : parsed;
25
+ }
26
+ function readStringField(data, key) {
27
+ const value = data?.[key];
28
+ return typeof value === "string" && value.length > 0 ? value : null;
29
+ }
30
+ function stepPairKey(fromStepId, toStepId) {
31
+ return `${fromStepId}->${toStepId}`;
32
+ }
33
+ function stepInstanceStatusToRunStatus(status) {
34
+ switch (status) {
35
+ case "COMPLETED":
36
+ return "completed";
37
+ case "FAILED":
38
+ return "failed";
39
+ case "SKIPPED":
40
+ return "skipped";
41
+ case "ACTIVE":
42
+ return "active";
43
+ case "CANCELLED":
44
+ return "skipped";
45
+ default:
46
+ return "pending";
47
+ }
48
+ }
49
+ function isNewerExecution(candidate, existing) {
50
+ const candidateAt = candidate.completedAt ?? candidate.startedAt;
51
+ const existingAt = existing.completedAt ?? existing.startedAt;
52
+ if (!existingAt) return true;
53
+ if (!candidateAt) return false;
54
+ return candidateAt.getTime() >= existingAt.getTime();
55
+ }
56
+ function stateFromStepInstance(stepInstance) {
57
+ const startedAt = toDate(stepInstance.enteredAt);
58
+ const completedAt = toDate(stepInstance.exitedAt);
59
+ const measured = typeof stepInstance.executionTimeMs === "number" && Number.isFinite(stepInstance.executionTimeMs) ? stepInstance.executionTimeMs : null;
60
+ const derived = startedAt && completedAt ? completedAt.getTime() - startedAt.getTime() : null;
61
+ const retries = typeof stepInstance.retryCount === "number" && Number.isFinite(stepInstance.retryCount) ? Math.max(stepInstance.retryCount, 0) : 0;
62
+ return {
63
+ stepId: stepInstance.stepId,
64
+ status: stepInstanceStatusToRunStatus(stepInstance.status),
65
+ startedAt,
66
+ completedAt,
67
+ durationMs: measured ?? derived,
68
+ attempts: retries + 1
69
+ };
70
+ }
71
+ function mergeState(target, candidate) {
72
+ const existing = target.get(candidate.stepId);
73
+ if (!existing || isNewerExecution(candidate, existing)) {
74
+ target.set(candidate.stepId, candidate);
75
+ }
76
+ }
77
+ function applyEvent(target, event) {
78
+ const stepId = readStringField(event.eventData, "stepId");
79
+ if (!stepId) return;
80
+ const occurredAt = toDate(event.occurredAt);
81
+ const existing = target.get(stepId);
82
+ const base = existing ?? {
83
+ stepId,
84
+ status: "pending",
85
+ startedAt: null,
86
+ completedAt: null,
87
+ durationMs: null,
88
+ attempts: 1
89
+ };
90
+ if (STEP_ENTERED_EVENT_TYPES.has(event.eventType)) {
91
+ target.set(stepId, {
92
+ ...base,
93
+ startedAt: occurredAt,
94
+ completedAt: null,
95
+ durationMs: null,
96
+ status: "active"
97
+ });
98
+ return;
99
+ }
100
+ const terminalStatus = STEP_COMPLETED_EVENT_TYPES.has(event.eventType) ? "completed" : STEP_FAILED_EVENT_TYPES.has(event.eventType) ? "failed" : STEP_SKIPPED_EVENT_TYPES.has(event.eventType) ? "skipped" : null;
101
+ if (!terminalStatus) return;
102
+ const startedAt = base.startedAt;
103
+ target.set(stepId, {
104
+ ...base,
105
+ status: terminalStatus,
106
+ completedAt: occurredAt,
107
+ durationMs: startedAt && occurredAt ? occurredAt.getTime() - startedAt.getTime() : base.durationMs
108
+ });
109
+ }
110
+ function applyLiveInstanceStatus(stepStates, currentStepId, instanceStatus) {
111
+ if (!currentStepId) return;
112
+ const existing = stepStates.get(currentStepId);
113
+ if (existing && (existing.status === "completed" || existing.status === "failed" || existing.status === "skipped")) {
114
+ return;
115
+ }
116
+ const liveStatus = instanceStatus === "FAILED" ? "failed" : instanceStatus === "PAUSED" || instanceStatus === "WAITING_FOR_ACTIVITIES" ? "paused" : "active";
117
+ stepStates.set(currentStepId, {
118
+ stepId: currentStepId,
119
+ status: liveStatus,
120
+ startedAt: existing?.startedAt ?? null,
121
+ completedAt: null,
122
+ durationMs: existing?.durationMs ?? null,
123
+ attempts: existing?.attempts ?? 1
124
+ });
125
+ }
126
+ function readBooleanish(data, key) {
127
+ const value = data?.[key];
128
+ if (Array.isArray(value)) return value.length > 0;
129
+ return typeof value === "string" ? value.length > 0 : Boolean(value);
130
+ }
131
+ function readRoleQueue(data) {
132
+ const value = data?.assignedToRoles;
133
+ if (Array.isArray(value)) {
134
+ const named = value.filter((entry) => typeof entry === "string" && entry.length > 0);
135
+ return named.length > 0 ? named.join(", ") : null;
136
+ }
137
+ return typeof value === "string" && value.length > 0 ? value : null;
138
+ }
139
+ function waitEvidenceFromEvent(event) {
140
+ const data = event.eventData ?? null;
141
+ switch (event.eventType) {
142
+ case "ACTIVITY_QUEUED":
143
+ return {
144
+ kind: "asyncActivity",
145
+ activityName: readStringField(data, "activityName") ?? readStringField(data, "activityType")
146
+ };
147
+ case "SIGNAL_AWAITING": {
148
+ const reason = readStringField(data, "reason");
149
+ const childInstanceId = readStringField(data, "childInstanceId");
150
+ if (reason === "SUB_WORKFLOW" || childInstanceId) {
151
+ return { kind: "subWorkflow", childInstanceId };
152
+ }
153
+ const proposalId = readStringField(data, "proposalId");
154
+ if (reason === "INVOKE_AGENT") {
155
+ return proposalId ? { kind: "agentDisposition", proposalId } : { kind: "agentRunning", agentId: readStringField(data, "agentId") };
156
+ }
157
+ return { kind: "signal", signalName: readStringField(data, "signalName") };
158
+ }
159
+ case "TIMER_AWAITING":
160
+ return { kind: "timer", fireAt: toDate(readStringField(data, "fireAt")) };
161
+ case "CONDITION_AWAITING":
162
+ return { kind: "condition", deadlineAt: toDate(readStringField(data, "deadlineAt")) };
163
+ case "USER_TASK_CREATED": {
164
+ const proposalId = readStringField(data, "proposalId");
165
+ if (proposalId) return { kind: "agentDisposition", proposalId };
166
+ return {
167
+ kind: "userTask",
168
+ roleQueue: readRoleQueue(data),
169
+ hasAssignee: readBooleanish(data, "assignedTo")
170
+ };
171
+ }
172
+ default:
173
+ return null;
174
+ }
175
+ }
176
+ function deriveRunExecution(input) {
177
+ const stepStates = /* @__PURE__ */ new Map();
178
+ const routes = [];
179
+ const takenTransitionIds = /* @__PURE__ */ new Set();
180
+ const takenStepPairs = /* @__PURE__ */ new Set();
181
+ const waits = /* @__PURE__ */ new Map();
182
+ const stepIdByStepInstanceId = /* @__PURE__ */ new Map();
183
+ let forkTally = null;
184
+ const erroredRoutedSteps = /* @__PURE__ */ new Set();
185
+ for (const stepInstance of input.stepInstances ?? []) {
186
+ if (stepInstance.id) stepIdByStepInstanceId.set(stepInstance.id, stepInstance.stepId);
187
+ }
188
+ const orderedEvents = [...input.events ?? []].sort((left, right) => {
189
+ const leftAt = toDate(left.occurredAt)?.getTime() ?? 0;
190
+ const rightAt = toDate(right.occurredAt)?.getTime() ?? 0;
191
+ return leftAt - rightAt;
192
+ });
193
+ for (const event of orderedEvents) {
194
+ applyEvent(stepStates, event);
195
+ const eventStepId = readStringField(event.eventData, "stepId") ?? (event.stepInstanceId ? stepIdByStepInstanceId.get(event.stepInstanceId) ?? null : null);
196
+ if (eventStepId) {
197
+ if (STEP_ENTERED_EVENT_TYPES.has(event.eventType) || WAIT_RESOLVED_EVENT_TYPES.has(event.eventType)) {
198
+ waits.delete(eventStepId);
199
+ }
200
+ const evidence = waitEvidenceFromEvent(event);
201
+ if (evidence) waits.set(eventStepId, evidence);
202
+ }
203
+ if (eventStepId && STEP_ENTERED_EVENT_TYPES.has(event.eventType)) {
204
+ erroredRoutedSteps.delete(eventStepId);
205
+ } else if (event.eventType === "OUTCOME_ROUTED") {
206
+ const outcome = readStringField(event.eventData, "outcome");
207
+ const routedStepId = readStringField(event.eventData, "stepId");
208
+ if (routedStepId && (outcome === "error" || outcome === "guardrailBlocked")) {
209
+ erroredRoutedSteps.add(routedStepId);
210
+ }
211
+ } else if (event.eventType === "ERROR_ROUTED") {
212
+ const failedStepId = readStringField(event.eventData, "failedStepId");
213
+ if (failedStepId) erroredRoutedSteps.add(failedStepId);
214
+ }
215
+ if (event.eventType === "PARALLEL_FORK_OPENED") {
216
+ const forkStepId = readStringField(event.eventData, "forkStepId");
217
+ const branchKeys = event.eventData?.branchKeys;
218
+ if (forkStepId && Array.isArray(branchKeys)) {
219
+ forkTally = {
220
+ stepId: forkStepId,
221
+ branchKeys: new Set(branchKeys.filter((key) => typeof key === "string")),
222
+ settled: /* @__PURE__ */ new Set()
223
+ };
224
+ }
225
+ } else if (BRANCH_SETTLED_EVENT_TYPES.has(event.eventType) && forkTally) {
226
+ const branchKey = readStringField(event.eventData, "branchKey");
227
+ if (branchKey && forkTally.branchKeys.has(branchKey)) forkTally.settled.add(branchKey);
228
+ } else if (event.eventType === "PARALLEL_JOIN_COMPLETED" && forkTally) {
229
+ waits.delete(forkTally.stepId);
230
+ forkTally = null;
231
+ }
232
+ if (!TRANSITION_EXECUTED_EVENT_TYPES.has(event.eventType)) continue;
233
+ const fromStepId = readStringField(event.eventData, "fromStepId");
234
+ const toStepId = readStringField(event.eventData, "toStepId");
235
+ if (!fromStepId || !toStepId) continue;
236
+ const transitionId = readStringField(event.eventData, "transitionId");
237
+ routes.push({
238
+ transitionId,
239
+ fromStepId,
240
+ toStepId,
241
+ at: toDate(event.occurredAt) ?? /* @__PURE__ */ new Date(0)
242
+ });
243
+ if (transitionId) takenTransitionIds.add(transitionId);
244
+ takenStepPairs.add(stepPairKey(fromStepId, toStepId));
245
+ }
246
+ for (const stepInstance of input.stepInstances ?? []) {
247
+ mergeState(stepStates, stateFromStepInstance(stepInstance));
248
+ }
249
+ for (const stepId of erroredRoutedSteps) {
250
+ const existing = stepStates.get(stepId);
251
+ if (existing && existing.status === "completed") {
252
+ stepStates.set(stepId, { ...existing, status: "failed" });
253
+ }
254
+ }
255
+ applyLiveInstanceStatus(stepStates, input.currentStepId, input.instanceStatus);
256
+ if (forkTally && forkTally.branchKeys.size > forkTally.settled.size) {
257
+ waits.set(forkTally.stepId, {
258
+ kind: "fork",
259
+ branchTotal: forkTally.branchKeys.size,
260
+ branchesSettled: forkTally.settled.size
261
+ });
262
+ }
263
+ return {
264
+ stepStates,
265
+ routes,
266
+ takenTransitionIds,
267
+ takenStepPairs,
268
+ currentStepId: input.currentStepId ?? null,
269
+ instanceStatus: input.instanceStatus ?? null,
270
+ waits,
271
+ attention: readAttention(input.attention)
272
+ };
273
+ }
274
+ function readAttention(value) {
275
+ if (!value || typeof value !== "object") return null;
276
+ const reason = value.reason;
277
+ return { reason: typeof reason === "string" && reason.length > 0 ? reason : null };
278
+ }
279
+ function resolveNodeRunStatus(execution, node, options = {}) {
280
+ const recorded = execution.stepStates.get(node.id);
281
+ if (recorded) return recorded.status;
282
+ const currentStepId = options.currentStepId ?? execution.currentStepId;
283
+ const instanceStatus = options.instanceStatus ?? execution.instanceStatus;
284
+ const isCurrentStep = currentStepId === node.id;
285
+ if (node.type === "start") {
286
+ return isCurrentStep ? "active" : "completed";
287
+ }
288
+ if (node.type === "end") {
289
+ return isCurrentStep || instanceStatus === "COMPLETED" ? "completed" : "pending";
290
+ }
291
+ return "pending";
292
+ }
293
+ function isRouteTaken(execution, route) {
294
+ if (route.transitionId && execution.takenTransitionIds.has(route.transitionId)) return true;
295
+ if (!route.fromStepId || !route.toStepId) return false;
296
+ return execution.takenStepPairs.has(stepPairKey(route.fromStepId, route.toStepId));
297
+ }
298
+ export {
299
+ deriveRunExecution,
300
+ isRouteTaken,
301
+ resolveNodeRunStatus,
302
+ stepInstanceStatusToRunStatus,
303
+ stepPairKey
304
+ };
305
+ //# sourceMappingURL=run-execution.js.map