@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,448 @@
1
+ import { splitAssignmentPath } from "./set-variable.js";
2
+ const TRIGGER_PAYLOAD_WILDCARD = "*";
3
+ const FIELD_TYPE_MAP = {
4
+ text: "text",
5
+ number: "number",
6
+ boolean: "boolean",
7
+ select: "select",
8
+ date: "date"
9
+ };
10
+ const JSON_SCHEMA_TYPE_MAP = {
11
+ string: "text",
12
+ number: "number",
13
+ integer: "number",
14
+ boolean: "boolean",
15
+ object: "object"
16
+ };
17
+ function isPlainObject(value) {
18
+ return typeof value === "object" && value !== null && !Array.isArray(value);
19
+ }
20
+ function mapFieldType(rawType) {
21
+ if (typeof rawType !== "string") return "unknown";
22
+ return FIELD_TYPE_MAP[rawType] ?? "unknown";
23
+ }
24
+ function mapJsonSchemaType(rawType) {
25
+ if (typeof rawType !== "string") return "unknown";
26
+ return JSON_SCHEMA_TYPE_MAP[rawType] ?? "unknown";
27
+ }
28
+ function literalValueType(value) {
29
+ if (typeof value === "string") {
30
+ return value.includes("{{") ? "unknown" : "text";
31
+ }
32
+ if (typeof value === "number") return "number";
33
+ if (typeof value === "boolean") return "boolean";
34
+ if (isPlainObject(value)) return "object";
35
+ return "unknown";
36
+ }
37
+ function makeEntry(path, type, presence, source) {
38
+ return { path, type, presence, source };
39
+ }
40
+ const LEDGER_TYPE_VALUES = /* @__PURE__ */ new Set([
41
+ "text",
42
+ "number",
43
+ "boolean",
44
+ "select",
45
+ "date",
46
+ "object",
47
+ "unknown"
48
+ ]);
49
+ function toLedgerType(raw) {
50
+ return typeof raw === "string" && LEDGER_TYPE_VALUES.has(raw) ? raw : "unknown";
51
+ }
52
+ function buildTriggerPayloadContracts(triggers, events) {
53
+ const contracts = {};
54
+ if (triggers.length === 0 || events.length === 0) return contracts;
55
+ const eventsById = new Map(events.map((event) => [event.id, event]));
56
+ for (const trigger of triggers) {
57
+ if (!trigger.triggerId) continue;
58
+ const pattern = typeof trigger.eventPattern === "string" ? trigger.eventPattern.trim() : "";
59
+ if (!pattern || pattern.includes("*")) continue;
60
+ const fields = eventsById.get(pattern)?.payloadSchema?.fields;
61
+ if (!fields || fields.length === 0) continue;
62
+ contracts[trigger.triggerId] = {
63
+ entries: fields.map((field) => ({ path: field.path, type: toLedgerType(field.type) }))
64
+ };
65
+ }
66
+ return contracts;
67
+ }
68
+ function initialContributions(definition, options) {
69
+ const entries = [];
70
+ const declaredFields = definition.contextSchema?.input?.fields;
71
+ const usingIoAlias = !declaredFields || declaredFields.length === 0;
72
+ const inputFields = usingIoAlias ? definition.io?.inputs ?? [] : declaredFields;
73
+ for (const field of inputFields) {
74
+ if (!field.name) continue;
75
+ entries.push(
76
+ makeEntry(field.name, mapFieldType(field.type), field.required ? "always" : "maybe", {
77
+ kind: "contextSchema",
78
+ label: usingIoAlias ? "io.inputs (read-through)" : "contextSchema.input"
79
+ })
80
+ );
81
+ }
82
+ for (const trigger of definition.triggers ?? []) {
83
+ entries.push(
84
+ makeEntry(TRIGGER_PAYLOAD_WILDCARD, "unknown", "maybe", {
85
+ kind: "trigger",
86
+ label: `trigger:${trigger.triggerId}:payload`
87
+ })
88
+ );
89
+ const payloadContract = options.triggerPayloadContracts?.[trigger.triggerId];
90
+ const contextMapping = trigger.config?.contextMapping;
91
+ if (Array.isArray(contextMapping)) {
92
+ for (const mapping of contextMapping) {
93
+ if (!isPlainObject(mapping) || typeof mapping.targetKey !== "string" || !mapping.targetKey) continue;
94
+ const sourcePath = typeof mapping.sourceExpression === "string" ? mapping.sourceExpression : null;
95
+ const mappedType = payloadContract && sourcePath ? payloadContract.entries.find((entry) => entry.path === sourcePath)?.type ?? "unknown" : "unknown";
96
+ entries.push(
97
+ makeEntry(mapping.targetKey, mappedType, "maybe", {
98
+ kind: "trigger",
99
+ label: `trigger:${trigger.triggerId}:contextMapping`
100
+ })
101
+ );
102
+ }
103
+ }
104
+ const metadataSource = {
105
+ kind: "trigger",
106
+ label: `trigger:${trigger.triggerId}:metadata`
107
+ };
108
+ const triggerMetadataEntries = [
109
+ ["__trigger.triggerId", "text"],
110
+ ["__trigger.triggerName", "text"],
111
+ ["__trigger.eventName", "text"],
112
+ ["__trigger.eventPayload", "object"],
113
+ ["__trigger.triggeredAt", "date"],
114
+ ["__trigger.source", "text"]
115
+ ];
116
+ for (const [path, type] of triggerMetadataEntries) {
117
+ entries.push(makeEntry(path, type, "maybe", metadataSource));
118
+ }
119
+ }
120
+ return entries;
121
+ }
122
+ function userTaskContributions(step) {
123
+ const entries = [];
124
+ const formSchema = step.userTaskConfig?.formSchema;
125
+ if (!isPlainObject(formSchema)) return entries;
126
+ const source = {
127
+ kind: "userTask",
128
+ stepId: step.stepId,
129
+ label: `userTask:${step.stepId}`
130
+ };
131
+ const fields = formSchema.fields;
132
+ if (Array.isArray(fields)) {
133
+ for (const field of fields) {
134
+ if (!isPlainObject(field) || typeof field.name !== "string" || !field.name) continue;
135
+ entries.push(
136
+ makeEntry(field.name, mapFieldType(field.type), field.required === true ? "always" : "maybe", source)
137
+ );
138
+ }
139
+ return entries;
140
+ }
141
+ const properties = formSchema.properties;
142
+ if (isPlainObject(properties)) {
143
+ const requiredNames = Array.isArray(formSchema.required) ? formSchema.required.filter((name) => typeof name === "string") : [];
144
+ for (const [name, property] of Object.entries(properties)) {
145
+ const propertyType = isPlainObject(property) ? property.type : void 0;
146
+ entries.push(
147
+ makeEntry(
148
+ name,
149
+ mapJsonSchemaType(propertyType),
150
+ requiredNames.includes(name) ? "always" : "maybe",
151
+ source
152
+ )
153
+ );
154
+ }
155
+ }
156
+ return entries;
157
+ }
158
+ function signalContributions(step) {
159
+ const configuredName = step.signalConfig?.signalName;
160
+ const signalName = typeof configuredName === "string" && configuredName ? configuredName : step.stepId;
161
+ const source = {
162
+ kind: "signal",
163
+ stepId: step.stepId,
164
+ label: `signal:${signalName}`
165
+ };
166
+ return [
167
+ makeEntry(TRIGGER_PAYLOAD_WILDCARD, "unknown", "maybe", source),
168
+ makeEntry(`signal_${signalName}_payload`, "object", "maybe", source),
169
+ makeEntry(`signal_${signalName}_receivedAt`, "date", "maybe", source)
170
+ ];
171
+ }
172
+ function joinContributions(step) {
173
+ const source = {
174
+ kind: "join",
175
+ stepId: step.stepId,
176
+ label: `join:${step.stepId}`
177
+ };
178
+ const entries = [makeEntry("branches", "object", "always", source)];
179
+ const outputMapping = step.config?.outputMapping;
180
+ if (isPlainObject(outputMapping)) {
181
+ for (const targetKey of Object.keys(outputMapping)) {
182
+ if (targetKey === "branches") continue;
183
+ entries.push(makeEntry(targetKey, "unknown", "maybe", source));
184
+ }
185
+ }
186
+ return entries;
187
+ }
188
+ function subWorkflowContributions(step) {
189
+ const outputMapping = step.config?.outputMapping;
190
+ if (!isPlainObject(outputMapping)) return [];
191
+ const source = {
192
+ kind: "subWorkflow",
193
+ stepId: step.stepId,
194
+ label: `subWorkflow:${step.stepId}`
195
+ };
196
+ const entries = [];
197
+ for (const targetKey of Object.keys(outputMapping)) {
198
+ if (!targetKey) continue;
199
+ entries.push(makeEntry(targetKey, "unknown", "maybe", source));
200
+ }
201
+ return entries;
202
+ }
203
+ function asyncResultContributions(activity, stepId, options) {
204
+ const resultKey = `${activity.activityId}_result`;
205
+ const source = {
206
+ kind: "asyncResult",
207
+ stepId,
208
+ activityId: activity.activityId,
209
+ label: `asyncActivity:${activity.activityId}`
210
+ };
211
+ const contract = options.resolveOutputContract?.(activity.activityType, activity.config);
212
+ if (contract && contract !== "unknown" && contract.entries.length > 0) {
213
+ return contract.entries.map(
214
+ (entry) => makeEntry(`${resultKey}.${entry.path}`, entry.type, "always", source)
215
+ );
216
+ }
217
+ return [makeEntry(resultKey, "unknown", "always", source)];
218
+ }
219
+ function setVariableContributions(activity, presence) {
220
+ const entries = [];
221
+ const assignments = activity.config?.assignments;
222
+ if (!Array.isArray(assignments)) return entries;
223
+ const source = {
224
+ kind: "setVariable",
225
+ activityId: activity.activityId,
226
+ label: `setVariable:${activity.activityId}`
227
+ };
228
+ for (const assignment of assignments) {
229
+ if (!isPlainObject(assignment) || typeof assignment.path !== "string") continue;
230
+ const segments = splitAssignmentPath(assignment.path);
231
+ if (segments === null || segments.length === 0) continue;
232
+ entries.push(makeEntry(segments.join("."), literalValueType(assignment.value), presence, source));
233
+ }
234
+ return entries;
235
+ }
236
+ function syncActivityContributions(activity, presence, options) {
237
+ const namespacedKey = activity.activityName || activity.activityType;
238
+ const source = {
239
+ kind: "activity",
240
+ activityId: activity.activityId,
241
+ label: `activity:${activity.activityId}`
242
+ };
243
+ const contract = options.resolveOutputContract?.(activity.activityType, activity.config);
244
+ if (contract && contract !== "unknown" && contract.entries.length > 0) {
245
+ return contract.entries.map(
246
+ (entry) => makeEntry(`${namespacedKey}.${entry.path}`, entry.type, presence, source)
247
+ );
248
+ }
249
+ return [makeEntry(namespacedKey, "unknown", presence, source)];
250
+ }
251
+ function transitionContributions(transition, options) {
252
+ const entries = [];
253
+ const syncPresence = transition.continueOnActivityFailure === true ? "maybe" : "always";
254
+ for (const activity of transition.activities ?? []) {
255
+ if (activity.async === true) {
256
+ entries.push(...asyncResultContributions(activity, void 0, options));
257
+ } else if (activity.activityType === "SET_VARIABLE") {
258
+ entries.push(...setVariableContributions(activity, syncPresence));
259
+ } else {
260
+ entries.push(...syncActivityContributions(activity, syncPresence, options));
261
+ }
262
+ }
263
+ return entries;
264
+ }
265
+ const INVOKE_AGENT_DEFAULT_SIGNAL_NAME = "agent_orchestrator.proposal.ready";
266
+ function invokeAgentContributions(step, options) {
267
+ const entries = [];
268
+ for (const activity of step.activities ?? []) {
269
+ if (activity.activityType !== "INVOKE_AGENT") continue;
270
+ const source = {
271
+ kind: "invokeAgent",
272
+ stepId: step.stepId,
273
+ activityId: activity.activityId,
274
+ label: `invokeAgent:${activity.activityId}`
275
+ };
276
+ const outputMapping = activity.config?.outputMapping;
277
+ const hasMapping = isPlainObject(outputMapping) && Object.keys(outputMapping).length > 0;
278
+ if (hasMapping) {
279
+ const envelopeContract = options.resolveOutputContract?.(activity.activityType, activity.config);
280
+ const typedEnvelope = envelopeContract && envelopeContract !== "unknown" ? envelopeContract : null;
281
+ for (const [targetKey, sourcePath] of Object.entries(outputMapping)) {
282
+ if (!targetKey) continue;
283
+ const mappedType = typedEnvelope && typeof sourcePath === "string" ? typedEnvelope.entries.find((entry) => entry.path === sourcePath)?.type ?? "unknown" : "unknown";
284
+ entries.push(makeEntry(targetKey, mappedType, "maybe", source));
285
+ }
286
+ } else {
287
+ entries.push(makeEntry("agentId", "text", "maybe", source));
288
+ entries.push(makeEntry("agentProposalId", "text", "maybe", source));
289
+ entries.push(makeEntry(`${step.stepId}_agent`, "unknown", "maybe", source));
290
+ }
291
+ entries.push(makeEntry("disposition", "text", "maybe", source));
292
+ entries.push(makeEntry("proposalId", "text", "maybe", source));
293
+ entries.push(makeEntry("stepId", "text", "maybe", source));
294
+ entries.push(makeEntry("proposalPayload", "unknown", "maybe", source));
295
+ const configuredSignal = step.signalConfig?.signalName;
296
+ const signalName = typeof configuredSignal === "string" && configuredSignal ? configuredSignal : INVOKE_AGENT_DEFAULT_SIGNAL_NAME;
297
+ entries.push(makeEntry(`signal_${signalName}_payload`, "object", "maybe", source));
298
+ entries.push(makeEntry(`signal_${signalName}_receivedAt`, "date", "maybe", source));
299
+ }
300
+ return entries;
301
+ }
302
+ function stepContributions(step, options) {
303
+ switch (step.stepType) {
304
+ case "USER_TASK":
305
+ return userTaskContributions(step);
306
+ case "WAIT_FOR_SIGNAL":
307
+ return signalContributions(step);
308
+ case "PARALLEL_JOIN":
309
+ return joinContributions(step);
310
+ case "SUB_WORKFLOW":
311
+ return subWorkflowContributions(step);
312
+ case "AUTOMATED":
313
+ return [
314
+ ...(step.activities ?? []).filter((activity) => activity.async === true).flatMap((activity) => asyncResultContributions(activity, step.stepId, options)),
315
+ ...invokeAgentContributions(step, options)
316
+ ];
317
+ default:
318
+ return [];
319
+ }
320
+ }
321
+ function applyContributions(base, contributions) {
322
+ if (contributions.length === 0) return base;
323
+ const merged = new Map(base);
324
+ for (const entry of contributions) {
325
+ merged.set(entry.path, entry);
326
+ }
327
+ return merged;
328
+ }
329
+ function joinRoutes(routes) {
330
+ if (routes.length === 1) return routes[0];
331
+ const joined = /* @__PURE__ */ new Map();
332
+ const allPaths = /* @__PURE__ */ new Set();
333
+ for (const route of routes) {
334
+ for (const path of route.keys()) allPaths.add(path);
335
+ }
336
+ for (const path of allPaths) {
337
+ const present = routes.filter((route) => route.has(path));
338
+ const first = present[0].get(path);
339
+ const onEveryRoute = present.length === routes.length;
340
+ const alwaysOnEveryRoute = onEveryRoute && present.every((route) => route.get(path)?.presence === "always");
341
+ const typesAgree = present.every((route) => route.get(path)?.type === first.type);
342
+ joined.set(path, {
343
+ path,
344
+ type: typesAgree ? first.type : "unknown",
345
+ presence: alwaysOnEveryRoute ? "always" : "maybe",
346
+ source: first.source
347
+ });
348
+ }
349
+ return joined;
350
+ }
351
+ const UNREACHABLE_SENTINEL = "<unreachable>";
352
+ function serializeLedgerMap(ledger) {
353
+ if (ledger === null) return UNREACHABLE_SENTINEL;
354
+ const parts = [];
355
+ for (const path of [...ledger.keys()].sort((left, right) => left.localeCompare(right))) {
356
+ const entry = ledger.get(path);
357
+ parts.push(`${path}|${entry.type}|${entry.presence}|${entry.source.kind}|${entry.source.stepId ?? ""}|${entry.source.activityId ?? ""}|${entry.source.label}`);
358
+ }
359
+ return parts.join(";");
360
+ }
361
+ function resolveStartStepIds(definition) {
362
+ const startTyped = definition.steps.filter((step) => step.stepType === "START");
363
+ if (startTyped.length > 0) return new Set(startTyped.map((step) => step.stepId));
364
+ const targetIds = new Set(definition.transitions.map((transition) => transition.toStepId));
365
+ return new Set(definition.steps.filter((step) => !targetIds.has(step.stepId)).map((step) => step.stepId));
366
+ }
367
+ function orderStepsFromStarts(definition, startIds) {
368
+ const stepById = new Map(definition.steps.map((step) => [step.stepId, step]));
369
+ const successors = /* @__PURE__ */ new Map();
370
+ for (const transition of definition.transitions) {
371
+ const list = successors.get(transition.fromStepId) ?? [];
372
+ list.push(transition.toStepId);
373
+ successors.set(transition.fromStepId, list);
374
+ }
375
+ const visited = /* @__PURE__ */ new Set();
376
+ const ordered = [];
377
+ const queue = definition.steps.filter((step) => startIds.has(step.stepId)).map((step) => step.stepId);
378
+ while (queue.length > 0) {
379
+ const stepId = queue.shift();
380
+ if (visited.has(stepId)) continue;
381
+ visited.add(stepId);
382
+ const step = stepById.get(stepId);
383
+ if (step) ordered.push(step);
384
+ for (const successor of successors.get(stepId) ?? []) {
385
+ if (!visited.has(successor)) queue.push(successor);
386
+ }
387
+ }
388
+ for (const step of definition.steps) {
389
+ if (!visited.has(step.stepId)) ordered.push(step);
390
+ }
391
+ return ordered;
392
+ }
393
+ function computeContextLedger(definition, options = {}) {
394
+ const startIds = resolveStartStepIds(definition);
395
+ const orderedSteps = orderStepsFromStarts(definition, startIds);
396
+ const stepById = new Map(definition.steps.map((step) => [step.stepId, step]));
397
+ const incomingTransitions = /* @__PURE__ */ new Map();
398
+ for (const transition of definition.transitions) {
399
+ if (!stepById.has(transition.fromStepId) || !stepById.has(transition.toStepId)) continue;
400
+ const list = incomingTransitions.get(transition.toStepId) ?? [];
401
+ list.push(transition);
402
+ incomingTransitions.set(transition.toStepId, list);
403
+ }
404
+ const initialRoute = applyContributions(/* @__PURE__ */ new Map(), initialContributions(definition, options));
405
+ const incoming = new Map(
406
+ definition.steps.map((step) => [step.stepId, null])
407
+ );
408
+ const outgoingOf = (stepId) => {
409
+ const stepIncoming = incoming.get(stepId);
410
+ if (stepIncoming === null || stepIncoming === void 0) return null;
411
+ const step = stepById.get(stepId);
412
+ if (!step) return stepIncoming;
413
+ return applyContributions(stepIncoming, stepContributions(step, options));
414
+ };
415
+ const maxPasses = definition.steps.length * 2 + 4;
416
+ for (let pass = 0; pass < maxPasses; pass += 1) {
417
+ let changed = false;
418
+ for (const step of orderedSteps) {
419
+ const routes = [];
420
+ if (startIds.has(step.stepId)) {
421
+ routes.push(initialRoute);
422
+ }
423
+ for (const transition of incomingTransitions.get(step.stepId) ?? []) {
424
+ const sourceOutgoing = outgoingOf(transition.fromStepId);
425
+ if (sourceOutgoing === null) continue;
426
+ routes.push(applyContributions(sourceOutgoing, transitionContributions(transition, options)));
427
+ }
428
+ const nextIncoming = routes.length === 0 ? null : joinRoutes(routes);
429
+ if (serializeLedgerMap(nextIncoming) !== serializeLedgerMap(incoming.get(step.stepId) ?? null)) {
430
+ incoming.set(step.stepId, nextIncoming);
431
+ changed = true;
432
+ }
433
+ }
434
+ if (!changed) break;
435
+ }
436
+ const steps = {};
437
+ for (const step of definition.steps) {
438
+ const ledger = incoming.get(step.stepId);
439
+ const entries = ledger ? [...ledger.values()].sort((left, right) => left.path.localeCompare(right.path)) : [];
440
+ steps[step.stepId] = { entries };
441
+ }
442
+ return { steps };
443
+ }
444
+ export {
445
+ buildTriggerPayloadContracts,
446
+ computeContextLedger
447
+ };
448
+ //# sourceMappingURL=context-ledger.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/workflows/lib/context-ledger.ts"],
4
+ "sourcesContent": ["/**\n * Workflows Module - per-step context ledger (spec\n * 2026-07-26-workflows-ux-redesign.md section 3.1).\n *\n * Pure, dependency-free computation of \"what context is available at each\n * step\" for a workflow definition. No React, no ORM, no DI container, and no\n * activity-registry import \u2014 output-contract resolution is an injected seam\n * (`resolveOutputContract`) so this module stays loadable from the browser\n * bundle and from server routes alike.\n *\n * The ledger is a topological fixpoint, not path enumeration: each step's\n * INCOMING ledger is the join of every incoming route's ledger, where a route\n * is (predecessor's OUTGOING ledger + the connecting transition's own\n * contributions). At joins, an entry keeps `presence: 'always'` only when it\n * is always-present on EVERY incoming route; otherwise it degrades to\n * `'maybe'`. Cycles are tolerated: the merge is monotone (entry sets only\n * grow, presence only degrades toward `maybe`), so iteration reaches a stable\n * fixpoint, with a hard pass cap as a safety net.\n *\n * Producer inventory \u2014 every contribution below was verified against the\n * engine before being modeled; nothing is fabricated and opaque producers stay\n * explicit `unknown` entries:\n *\n * - Initial context (START steps): `contextSchema.input.fields` typed\n * (`required` \u2192 always, else maybe). `contextSchema.input` is the CANONICAL\n * input contract; when it is absent, `definition.io.inputs` (the sub-workflow\n * port contract) is read through as a deprecated alias \u2014 port fields share\n * the same name/type/required vocabulary, so they map 1:1 onto START entries.\n * Full `@deprecated` dual-emit for `io.inputs` is follow-up work; this is the\n * read-through half only. Plus, per definition trigger, the\n * whole-payload flat spread (one `'*'` wildcard entry, always untyped),\n * `contextMapping` target keys (named; typed from the trigger event's\n * payload contract when the caller pre-resolves one into\n * `options.triggerPayloadContracts`, `unknown` otherwise), and the `__trigger.*` metadata keys\n * (event-trigger-service builds `initialContext` from\n * `...payload, ...mappedContext, __trigger: {...}`). All trigger entries are\n * `maybe` \u2014 a definition can always be started manually without the trigger.\n * - Transition activities run DURING the transition and their outputs are\n * persisted (`applyTokenContextWrites`) BEFORE the target step executes\n * (transition-handler), so they contribute to the TARGET step's incoming\n * route: sync outputs land under `activityName || activityType`\n * (activity-executor + transition-handler), SET_VARIABLE sync outputs land\n * at their assignment dot paths (set-variable), and async outputs land under\n * `${activityId}_result` at resume, still before the pending transition's\n * target step runs (workflow-executor). `continueOnActivityFailure`\n * degrades that transition's sync contributions to `maybe`.\n * - AUTOMATED steps' own sync activity outputs are NOT persisted into workflow\n * context \u2014 handleAutomatedStep only stores them in\n * `stepInstance.outputData` \u2014 so they contribute nothing here; the step's\n * async activities DO contribute `${activityId}_result` (merged into\n * `instance.context` by the async resume path).\n * - USER_TASK completion merges submitted formData FLAT into context\n * (task-handler), typed via `userTaskConfig.formSchema` (fields array or\n * JSON-Schema properties form).\n * - WAIT_FOR_SIGNAL merges the signal payload flat (untyped `'*'` wildcard)\n * plus `signal_<name>_payload` / `signal_<name>_receivedAt`; the payload is\n * optional so every signal entry is `maybe` (signal-handler).\n * - PARALLEL_JOIN sets `context.branches[branchKey]` unconditionally and lifts\n * join `config.outputMapping` keys only when the source value resolves\n * (parallel-handler fireJoin), so `branches` is always and mapped keys are\n * maybe. Known 2a approximation: branch-namespace scoping is not modeled \u2014\n * entries produced inside parallel branches flow through the generic join\n * rule as `maybe` even though post-join they live under `branches.<key>`.\n * - SUB_WORKFLOW is PATH-DEPENDENT and contributes its `config.outputMapping`\n * target keys, all `maybe`. Two resolution paths exist and only one of them\n * merges. When the child terminates inside the parent's own call,\n * handleSubWorkflowStep returns the mapped output as `stepInstance.outputData`\n * only (`exitStep` writes it there and nowhere else). When the child instead\n * parks on its first async/agent step, the parent parks on\n * SUB_WORKFLOW_SIGNAL_NAME and the child's terminal\n * `resume_subworkflow_parent` job maps the same output through the shared\n * `mapSubWorkflowOutput` and hands it to `sendSignal`, which spreads the\n * payload FLAT into `instance.context` (signal-handler). So a mapped key\n * genuinely lands on the async path and never on the inline one, and which\n * path runs is a property of the CHILD at runtime rather than of the parent\n * definition \u2014 hence `maybe` on every entry (the mapping additionally drops\n * any target whose source path resolves to `undefined`). Targets stay\n * `unknown`-typed: their source paths address the CHILD's context and the\n * child's `io.outputs` contract lives on the CHILD definition, which this\n * pure function is never given.\n * Two real contributions are deliberately NOT modeled. (1) With no mapping \u2014\n * or when no mapped source resolves \u2014 `mapOutputData` falls back to the WHOLE\n * child context; those keys cannot be named from the parent definition, and a\n * `'*'` wildcard would silence every downstream unresolved-ref warning, so a\n * step declaring no `outputMapping` advertises nothing. (2) `sendSignal` also\n * records `signal_<name>_payload`/`_receivedAt`, but the sub-workflow signal\n * name is `workflows.sub_workflow.completed`, so the flat key contains dots\n * and `{{context.*}}` resolution (getNestedValue splits on `.`) can never\n * reach it \u2014 advertising it would hand the picker a path that cannot resolve.\n * - INVOKE_AGENT (an AUTOMATED step carrying an `INVOKE_AGENT` activity) is\n * the verified exception to the \"AUTOMATED sync outputs stay in outputData\"\n * rule: its result IS merged top-level into `instance.context`. Three\n * resolution paths (step-handler inline branch, activity-worker-handler\n * parked resume, agent_orchestrator's human dispose \u2192 sendSignal) merge\n * different key sets, so every entry is `maybe`: `outputMapping` target keys\n * when a mapping is declared (mapAgentResultToContext, machine paths only;\n * typed from the mapping's source path against the INVOKE_AGENT envelope the\n * injected `resolveOutputContract` seam resolves from the selected agent's\n * OUTCOME schema, `unknown` when the optional agent peer cannot type it);\n * the legacy fixed keys `disposition`/`agentId`/`agentProposalId`/\n * `proposalPayload`/`<stepId>_agent` when it is not; the human dispose path\n * always merges `disposition`/`proposalId`/`stepId`/`proposalPayload`\n * regardless of mapping; and any parked resume goes through sendSignal,\n * adding `signal_<name>_payload`/`signal_<name>_receivedAt` for the step's\n * `signalConfig.signalName` (default `agent_orchestrator.proposal.ready`).\n */\n\nimport { splitAssignmentPath } from './set-variable'\n\nexport type LedgerType =\n | 'text'\n | 'number'\n | 'boolean'\n | 'select'\n | 'date'\n | 'object'\n | 'unknown'\n\nexport type LedgerPresence = 'always' | 'maybe'\n\nexport type LedgerSourceKind =\n | 'contextSchema'\n | 'trigger'\n | 'activity'\n | 'setVariable'\n | 'userTask'\n | 'signal'\n | 'subWorkflow'\n | 'join'\n | 'asyncResult'\n | 'invokeAgent'\n\nexport interface LedgerEntrySource {\n kind: LedgerSourceKind\n stepId?: string\n activityId?: string\n label: string\n}\n\nexport interface LedgerEntry {\n path: string\n type: LedgerType\n presence: LedgerPresence\n source: LedgerEntrySource\n sample?: unknown\n}\n\nexport interface LedgerStepView {\n entries: LedgerEntry[]\n}\n\nexport interface ContextLedger {\n steps: Record<string, LedgerStepView>\n}\n\nexport interface LedgerContract {\n entries: Array<{ path: string; type: LedgerType }>\n}\n\nexport type ResolveOutputContract = (\n activityType: string,\n config: unknown,\n) => LedgerContract | 'unknown'\n\nexport interface ComputeContextLedgerOptions {\n resolveOutputContract?: ResolveOutputContract\n /**\n * Pre-resolved payload contracts for the definition's triggers, keyed by\n * triggerId \u2014 plain data, so the lib stays pure (no event-registry access\n * here). Build them at the call site with `buildTriggerPayloadContracts`\n * from the declared events. When a trigger has a contract, its\n * `contextMapping` target entries are typed from the mapping's source path;\n * otherwise they stay `unknown`.\n */\n triggerPayloadContracts?: Record<string, LedgerContract>\n}\n\nexport interface LedgerActivityDefinition {\n activityId: string\n activityName?: string\n activityType: string\n config?: Record<string, unknown>\n async?: boolean\n}\n\nexport interface LedgerStepDefinition {\n stepId: string\n stepType: string\n config?: Record<string, unknown>\n userTaskConfig?: Record<string, unknown>\n signalConfig?: Record<string, unknown>\n activities?: LedgerActivityDefinition[]\n}\n\nexport interface LedgerTransitionDefinition {\n transitionId?: string\n fromStepId: string\n toStepId: string\n activities?: LedgerActivityDefinition[]\n continueOnActivityFailure?: boolean\n}\n\nexport interface LedgerTriggerDefinition {\n triggerId: string\n eventPattern?: string\n config?: Record<string, unknown>\n}\n\nexport interface LedgerContextSchemaField {\n name: string\n type: string\n required?: boolean\n}\n\nexport interface LedgerContextSchema {\n input?: { fields: LedgerContextSchemaField[] }\n}\n\nexport interface LedgerIoContract {\n inputs?: LedgerContextSchemaField[]\n}\n\nexport interface LedgerWorkflowDefinition {\n steps: LedgerStepDefinition[]\n transitions: LedgerTransitionDefinition[]\n triggers?: LedgerTriggerDefinition[]\n contextSchema?: LedgerContextSchema\n io?: LedgerIoContract\n}\n\ntype LedgerMap = Map<string, LedgerEntry>\n\nconst TRIGGER_PAYLOAD_WILDCARD = '*'\n\nconst FIELD_TYPE_MAP: Record<string, LedgerType> = {\n text: 'text',\n number: 'number',\n boolean: 'boolean',\n select: 'select',\n date: 'date',\n}\n\nconst JSON_SCHEMA_TYPE_MAP: Record<string, LedgerType> = {\n string: 'text',\n number: 'number',\n integer: 'number',\n boolean: 'boolean',\n object: 'object',\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction mapFieldType(rawType: unknown): LedgerType {\n if (typeof rawType !== 'string') return 'unknown'\n return FIELD_TYPE_MAP[rawType] ?? 'unknown'\n}\n\nfunction mapJsonSchemaType(rawType: unknown): LedgerType {\n if (typeof rawType !== 'string') return 'unknown'\n return JSON_SCHEMA_TYPE_MAP[rawType] ?? 'unknown'\n}\n\nfunction literalValueType(value: unknown): LedgerType {\n if (typeof value === 'string') {\n return value.includes('{{') ? 'unknown' : 'text'\n }\n if (typeof value === 'number') return 'number'\n if (typeof value === 'boolean') return 'boolean'\n if (isPlainObject(value)) return 'object'\n return 'unknown'\n}\n\nfunction makeEntry(\n path: string,\n type: LedgerType,\n presence: LedgerPresence,\n source: LedgerEntrySource,\n): LedgerEntry {\n return { path, type, presence, source }\n}\n\nconst LEDGER_TYPE_VALUES: ReadonlySet<string> = new Set<LedgerType>([\n 'text',\n 'number',\n 'boolean',\n 'select',\n 'date',\n 'object',\n 'unknown',\n])\n\nfunction toLedgerType(raw: unknown): LedgerType {\n return typeof raw === 'string' && LEDGER_TYPE_VALUES.has(raw) ? (raw as LedgerType) : 'unknown'\n}\n\nexport interface TriggerPayloadEventInput {\n id: string\n payloadSchema?: {\n fields: ReadonlyArray<{ path: string; type: string; optional?: boolean }>\n }\n}\n\n/**\n * Pure pre-resolution of trigger payload contracts from declared events, for\n * `ComputeContextLedgerOptions.triggerPayloadContracts`. Only an EXACT event\n * pattern (no `*` wildcard) with a non-empty declared payloadSchema resolves;\n * wildcard patterns and schema-less events yield no contract so their mapping\n * targets stay `unknown`. Both call sites (the server context-schema route via\n * `getDeclaredEvents()` and the client editor via its fetched events list)\n * feed this the same plain-data shape.\n */\nexport function buildTriggerPayloadContracts(\n triggers: ReadonlyArray<{ triggerId: string; eventPattern?: string | null }>,\n events: ReadonlyArray<TriggerPayloadEventInput>,\n): Record<string, LedgerContract> {\n const contracts: Record<string, LedgerContract> = {}\n if (triggers.length === 0 || events.length === 0) return contracts\n const eventsById = new Map(events.map(event => [event.id, event]))\n for (const trigger of triggers) {\n if (!trigger.triggerId) continue\n const pattern = typeof trigger.eventPattern === 'string' ? trigger.eventPattern.trim() : ''\n if (!pattern || pattern.includes('*')) continue\n const fields = eventsById.get(pattern)?.payloadSchema?.fields\n if (!fields || fields.length === 0) continue\n contracts[trigger.triggerId] = {\n entries: fields.map(field => ({ path: field.path, type: toLedgerType(field.type) })),\n }\n }\n return contracts\n}\n\nfunction initialContributions(\n definition: LedgerWorkflowDefinition,\n options: ComputeContextLedgerOptions,\n): LedgerEntry[] {\n const entries: LedgerEntry[] = []\n\n // contextSchema.input is canonical; definition.io.inputs (the sub-workflow\n // port contract) is a deprecated read-through alias consulted only when no\n // contextSchema input is declared. Both share the name/type/required field\n // vocabulary, so the mapping is identical.\n const declaredFields = definition.contextSchema?.input?.fields\n const usingIoAlias = !declaredFields || declaredFields.length === 0\n const inputFields = usingIoAlias ? definition.io?.inputs ?? [] : declaredFields\n for (const field of inputFields) {\n if (!field.name) continue\n entries.push(\n makeEntry(field.name, mapFieldType(field.type), field.required ? 'always' : 'maybe', {\n kind: 'contextSchema',\n label: usingIoAlias ? 'io.inputs (read-through)' : 'contextSchema.input',\n }),\n )\n }\n\n for (const trigger of definition.triggers ?? []) {\n entries.push(\n makeEntry(TRIGGER_PAYLOAD_WILDCARD, 'unknown', 'maybe', {\n kind: 'trigger',\n label: `trigger:${trigger.triggerId}:payload`,\n }),\n )\n\n const payloadContract = options.triggerPayloadContracts?.[trigger.triggerId]\n const contextMapping = trigger.config?.contextMapping\n if (Array.isArray(contextMapping)) {\n for (const mapping of contextMapping) {\n if (!isPlainObject(mapping) || typeof mapping.targetKey !== 'string' || !mapping.targetKey) continue\n const sourcePath = typeof mapping.sourceExpression === 'string' ? mapping.sourceExpression : null\n const mappedType =\n payloadContract && sourcePath\n ? payloadContract.entries.find(entry => entry.path === sourcePath)?.type ?? 'unknown'\n : 'unknown'\n entries.push(\n makeEntry(mapping.targetKey, mappedType, 'maybe', {\n kind: 'trigger',\n label: `trigger:${trigger.triggerId}:contextMapping`,\n }),\n )\n }\n }\n\n const metadataSource: LedgerEntrySource = {\n kind: 'trigger',\n label: `trigger:${trigger.triggerId}:metadata`,\n }\n const triggerMetadataEntries: Array<[string, LedgerType]> = [\n ['__trigger.triggerId', 'text'],\n ['__trigger.triggerName', 'text'],\n ['__trigger.eventName', 'text'],\n ['__trigger.eventPayload', 'object'],\n ['__trigger.triggeredAt', 'date'],\n ['__trigger.source', 'text'],\n ]\n for (const [path, type] of triggerMetadataEntries) {\n entries.push(makeEntry(path, type, 'maybe', metadataSource))\n }\n }\n\n return entries\n}\n\nfunction userTaskContributions(step: LedgerStepDefinition): LedgerEntry[] {\n const entries: LedgerEntry[] = []\n const formSchema = step.userTaskConfig?.formSchema\n if (!isPlainObject(formSchema)) return entries\n\n const source: LedgerEntrySource = {\n kind: 'userTask',\n stepId: step.stepId,\n label: `userTask:${step.stepId}`,\n }\n\n const fields = formSchema.fields\n if (Array.isArray(fields)) {\n for (const field of fields) {\n if (!isPlainObject(field) || typeof field.name !== 'string' || !field.name) continue\n entries.push(\n makeEntry(field.name, mapFieldType(field.type), field.required === true ? 'always' : 'maybe', source),\n )\n }\n return entries\n }\n\n const properties = formSchema.properties\n if (isPlainObject(properties)) {\n const requiredNames = Array.isArray(formSchema.required)\n ? formSchema.required.filter((name): name is string => typeof name === 'string')\n : []\n for (const [name, property] of Object.entries(properties)) {\n const propertyType = isPlainObject(property) ? property.type : undefined\n entries.push(\n makeEntry(\n name,\n mapJsonSchemaType(propertyType),\n requiredNames.includes(name) ? 'always' : 'maybe',\n source,\n ),\n )\n }\n }\n\n return entries\n}\n\nfunction signalContributions(step: LedgerStepDefinition): LedgerEntry[] {\n const configuredName = step.signalConfig?.signalName\n const signalName = typeof configuredName === 'string' && configuredName ? configuredName : step.stepId\n const source: LedgerEntrySource = {\n kind: 'signal',\n stepId: step.stepId,\n label: `signal:${signalName}`,\n }\n return [\n makeEntry(TRIGGER_PAYLOAD_WILDCARD, 'unknown', 'maybe', source),\n makeEntry(`signal_${signalName}_payload`, 'object', 'maybe', source),\n makeEntry(`signal_${signalName}_receivedAt`, 'date', 'maybe', source),\n ]\n}\n\nfunction joinContributions(step: LedgerStepDefinition): LedgerEntry[] {\n const source: LedgerEntrySource = {\n kind: 'join',\n stepId: step.stepId,\n label: `join:${step.stepId}`,\n }\n const entries: LedgerEntry[] = [makeEntry('branches', 'object', 'always', source)]\n\n const outputMapping = step.config?.outputMapping\n if (isPlainObject(outputMapping)) {\n for (const targetKey of Object.keys(outputMapping)) {\n if (targetKey === 'branches') continue\n entries.push(makeEntry(targetKey, 'unknown', 'maybe', source))\n }\n }\n\n return entries\n}\n\nfunction subWorkflowContributions(step: LedgerStepDefinition): LedgerEntry[] {\n const outputMapping = step.config?.outputMapping\n if (!isPlainObject(outputMapping)) return []\n\n const source: LedgerEntrySource = {\n kind: 'subWorkflow',\n stepId: step.stepId,\n label: `subWorkflow:${step.stepId}`,\n }\n\n const entries: LedgerEntry[] = []\n for (const targetKey of Object.keys(outputMapping)) {\n if (!targetKey) continue\n entries.push(makeEntry(targetKey, 'unknown', 'maybe', source))\n }\n return entries\n}\n\nfunction asyncResultContributions(\n activity: LedgerActivityDefinition,\n stepId: string | undefined,\n options: ComputeContextLedgerOptions,\n): LedgerEntry[] {\n const resultKey = `${activity.activityId}_result`\n const source: LedgerEntrySource = {\n kind: 'asyncResult',\n stepId,\n activityId: activity.activityId,\n label: `asyncActivity:${activity.activityId}`,\n }\n const contract = options.resolveOutputContract?.(activity.activityType, activity.config)\n if (contract && contract !== 'unknown' && contract.entries.length > 0) {\n return contract.entries.map((entry) =>\n makeEntry(`${resultKey}.${entry.path}`, entry.type, 'always', source),\n )\n }\n return [makeEntry(resultKey, 'unknown', 'always', source)]\n}\n\nfunction setVariableContributions(\n activity: LedgerActivityDefinition,\n presence: LedgerPresence,\n): LedgerEntry[] {\n const entries: LedgerEntry[] = []\n const assignments = activity.config?.assignments\n if (!Array.isArray(assignments)) return entries\n\n const source: LedgerEntrySource = {\n kind: 'setVariable',\n activityId: activity.activityId,\n label: `setVariable:${activity.activityId}`,\n }\n\n for (const assignment of assignments) {\n if (!isPlainObject(assignment) || typeof assignment.path !== 'string') continue\n const segments = splitAssignmentPath(assignment.path)\n if (segments === null || segments.length === 0) continue\n entries.push(makeEntry(segments.join('.'), literalValueType(assignment.value), presence, source))\n }\n\n return entries\n}\n\nfunction syncActivityContributions(\n activity: LedgerActivityDefinition,\n presence: LedgerPresence,\n options: ComputeContextLedgerOptions,\n): LedgerEntry[] {\n const namespacedKey = activity.activityName || activity.activityType\n const source: LedgerEntrySource = {\n kind: 'activity',\n activityId: activity.activityId,\n label: `activity:${activity.activityId}`,\n }\n const contract = options.resolveOutputContract?.(activity.activityType, activity.config)\n if (contract && contract !== 'unknown' && contract.entries.length > 0) {\n return contract.entries.map((entry) =>\n makeEntry(`${namespacedKey}.${entry.path}`, entry.type, presence, source),\n )\n }\n return [makeEntry(namespacedKey, 'unknown', presence, source)]\n}\n\nfunction transitionContributions(\n transition: LedgerTransitionDefinition,\n options: ComputeContextLedgerOptions,\n): LedgerEntry[] {\n const entries: LedgerEntry[] = []\n const syncPresence: LedgerPresence = transition.continueOnActivityFailure === true ? 'maybe' : 'always'\n\n for (const activity of transition.activities ?? []) {\n if (activity.async === true) {\n entries.push(...asyncResultContributions(activity, undefined, options))\n } else if (activity.activityType === 'SET_VARIABLE') {\n entries.push(...setVariableContributions(activity, syncPresence))\n } else {\n entries.push(...syncActivityContributions(activity, syncPresence, options))\n }\n }\n\n return entries\n}\n\n// Mirrors INVOKE_AGENT_SIGNAL_NAME in lib/activity-executor.ts \u2014 duplicated\n// here because the ledger's purity boundary forbids importing engine modules.\nconst INVOKE_AGENT_DEFAULT_SIGNAL_NAME = 'agent_orchestrator.proposal.ready'\n\nfunction invokeAgentContributions(\n step: LedgerStepDefinition,\n options: ComputeContextLedgerOptions,\n): LedgerEntry[] {\n const entries: LedgerEntry[] = []\n for (const activity of step.activities ?? []) {\n if (activity.activityType !== 'INVOKE_AGENT') continue\n const source: LedgerEntrySource = {\n kind: 'invokeAgent',\n stepId: step.stepId,\n activityId: activity.activityId,\n label: `invokeAgent:${activity.activityId}`,\n }\n\n // Everything is `maybe`: which keys land depends on the resolution path\n // (inline auto_approved/researcher, parked machine resume, or human\n // dispose) and, for mapped keys, on the source path resolving.\n const outputMapping = activity.config?.outputMapping\n const hasMapping = isPlainObject(outputMapping) && Object.keys(outputMapping).length > 0\n if (hasMapping) {\n const envelopeContract = options.resolveOutputContract?.(activity.activityType, activity.config)\n const typedEnvelope = envelopeContract && envelopeContract !== 'unknown' ? envelopeContract : null\n for (const [targetKey, sourcePath] of Object.entries(outputMapping)) {\n if (!targetKey) continue\n const mappedType =\n typedEnvelope && typeof sourcePath === 'string'\n ? typedEnvelope.entries.find(entry => entry.path === sourcePath)?.type ?? 'unknown'\n : 'unknown'\n entries.push(makeEntry(targetKey, mappedType, 'maybe', source))\n }\n } else {\n // Legacy fixed-key merge (step-handler inline branch and\n // activity-worker-handler parked resume).\n entries.push(makeEntry('agentId', 'text', 'maybe', source))\n entries.push(makeEntry('agentProposalId', 'text', 'maybe', source))\n entries.push(makeEntry(`${step.stepId}_agent`, 'unknown', 'maybe', source))\n }\n\n // agent_orchestrator's human dispose path (lib/disposition/resume.ts)\n // merges these regardless of any declared outputMapping.\n entries.push(makeEntry('disposition', 'text', 'maybe', source))\n entries.push(makeEntry('proposalId', 'text', 'maybe', source))\n entries.push(makeEntry('stepId', 'text', 'maybe', source))\n entries.push(makeEntry('proposalPayload', 'unknown', 'maybe', source))\n\n // Any parked resume arrives via sendSignal, which also records the signal\n // envelope keys for the step's park signal.\n const configuredSignal = step.signalConfig?.signalName\n const signalName =\n typeof configuredSignal === 'string' && configuredSignal\n ? configuredSignal\n : INVOKE_AGENT_DEFAULT_SIGNAL_NAME\n entries.push(makeEntry(`signal_${signalName}_payload`, 'object', 'maybe', source))\n entries.push(makeEntry(`signal_${signalName}_receivedAt`, 'date', 'maybe', source))\n }\n return entries\n}\n\nfunction stepContributions(\n step: LedgerStepDefinition,\n options: ComputeContextLedgerOptions,\n): LedgerEntry[] {\n switch (step.stepType) {\n case 'USER_TASK':\n return userTaskContributions(step)\n case 'WAIT_FOR_SIGNAL':\n return signalContributions(step)\n case 'PARALLEL_JOIN':\n return joinContributions(step)\n case 'SUB_WORKFLOW':\n return subWorkflowContributions(step)\n case 'AUTOMATED':\n return [\n ...(step.activities ?? [])\n .filter((activity) => activity.async === true)\n .flatMap((activity) => asyncResultContributions(activity, step.stepId, options)),\n ...invokeAgentContributions(step, options),\n ]\n default:\n return []\n }\n}\n\nfunction applyContributions(base: LedgerMap, contributions: LedgerEntry[]): LedgerMap {\n if (contributions.length === 0) return base\n const merged: LedgerMap = new Map(base)\n for (const entry of contributions) {\n merged.set(entry.path, entry)\n }\n return merged\n}\n\nfunction joinRoutes(routes: LedgerMap[]): LedgerMap {\n if (routes.length === 1) return routes[0]\n const joined: LedgerMap = new Map()\n const allPaths = new Set<string>()\n for (const route of routes) {\n for (const path of route.keys()) allPaths.add(path)\n }\n for (const path of allPaths) {\n const present = routes.filter((route) => route.has(path))\n const first = present[0].get(path) as LedgerEntry\n const onEveryRoute = present.length === routes.length\n const alwaysOnEveryRoute = onEveryRoute && present.every((route) => route.get(path)?.presence === 'always')\n const typesAgree = present.every((route) => route.get(path)?.type === first.type)\n joined.set(path, {\n path,\n type: typesAgree ? first.type : 'unknown',\n presence: alwaysOnEveryRoute ? 'always' : 'maybe',\n source: first.source,\n })\n }\n return joined\n}\n\nconst UNREACHABLE_SENTINEL = '<unreachable>'\n\nfunction serializeLedgerMap(ledger: LedgerMap | null): string {\n if (ledger === null) return UNREACHABLE_SENTINEL\n const parts: string[] = []\n for (const path of [...ledger.keys()].sort((left, right) => left.localeCompare(right))) {\n const entry = ledger.get(path) as LedgerEntry\n parts.push(`${path}|${entry.type}|${entry.presence}|${entry.source.kind}|${entry.source.stepId ?? ''}|${entry.source.activityId ?? ''}|${entry.source.label}`)\n }\n return parts.join(';')\n}\n\nfunction resolveStartStepIds(definition: LedgerWorkflowDefinition): Set<string> {\n const startTyped = definition.steps.filter((step) => step.stepType === 'START')\n if (startTyped.length > 0) return new Set(startTyped.map((step) => step.stepId))\n const targetIds = new Set(definition.transitions.map((transition) => transition.toStepId))\n return new Set(definition.steps.filter((step) => !targetIds.has(step.stepId)).map((step) => step.stepId))\n}\n\nfunction orderStepsFromStarts(\n definition: LedgerWorkflowDefinition,\n startIds: Set<string>,\n): LedgerStepDefinition[] {\n const stepById = new Map(definition.steps.map((step) => [step.stepId, step]))\n const successors = new Map<string, string[]>()\n for (const transition of definition.transitions) {\n const list = successors.get(transition.fromStepId) ?? []\n list.push(transition.toStepId)\n successors.set(transition.fromStepId, list)\n }\n\n const visited = new Set<string>()\n const ordered: LedgerStepDefinition[] = []\n const queue = definition.steps.filter((step) => startIds.has(step.stepId)).map((step) => step.stepId)\n while (queue.length > 0) {\n const stepId = queue.shift() as string\n if (visited.has(stepId)) continue\n visited.add(stepId)\n const step = stepById.get(stepId)\n if (step) ordered.push(step)\n for (const successor of successors.get(stepId) ?? []) {\n if (!visited.has(successor)) queue.push(successor)\n }\n }\n for (const step of definition.steps) {\n if (!visited.has(step.stepId)) ordered.push(step)\n }\n return ordered\n}\n\nexport function computeContextLedger(\n definition: LedgerWorkflowDefinition,\n options: ComputeContextLedgerOptions = {},\n): ContextLedger {\n const startIds = resolveStartStepIds(definition)\n const orderedSteps = orderStepsFromStarts(definition, startIds)\n const stepById = new Map(definition.steps.map((step) => [step.stepId, step]))\n\n const incomingTransitions = new Map<string, LedgerTransitionDefinition[]>()\n for (const transition of definition.transitions) {\n if (!stepById.has(transition.fromStepId) || !stepById.has(transition.toStepId)) continue\n const list = incomingTransitions.get(transition.toStepId) ?? []\n list.push(transition)\n incomingTransitions.set(transition.toStepId, list)\n }\n\n const initialRoute: LedgerMap = applyContributions(new Map(), initialContributions(definition, options))\n const incoming = new Map<string, LedgerMap | null>(\n definition.steps.map((step) => [step.stepId, null]),\n )\n\n const outgoingOf = (stepId: string): LedgerMap | null => {\n const stepIncoming = incoming.get(stepId)\n if (stepIncoming === null || stepIncoming === undefined) return null\n const step = stepById.get(stepId)\n if (!step) return stepIncoming\n return applyContributions(stepIncoming, stepContributions(step, options))\n }\n\n const maxPasses = definition.steps.length * 2 + 4\n for (let pass = 0; pass < maxPasses; pass += 1) {\n let changed = false\n for (const step of orderedSteps) {\n const routes: LedgerMap[] = []\n if (startIds.has(step.stepId)) {\n routes.push(initialRoute)\n }\n for (const transition of incomingTransitions.get(step.stepId) ?? []) {\n const sourceOutgoing = outgoingOf(transition.fromStepId)\n if (sourceOutgoing === null) continue\n routes.push(applyContributions(sourceOutgoing, transitionContributions(transition, options)))\n }\n const nextIncoming = routes.length === 0 ? null : joinRoutes(routes)\n if (serializeLedgerMap(nextIncoming) !== serializeLedgerMap(incoming.get(step.stepId) ?? null)) {\n incoming.set(step.stepId, nextIncoming)\n changed = true\n }\n }\n if (!changed) break\n }\n\n const steps: Record<string, LedgerStepView> = {}\n for (const step of definition.steps) {\n const ledger = incoming.get(step.stepId)\n const entries = ledger\n ? [...ledger.values()].sort((left, right) => left.path.localeCompare(right.path))\n : []\n steps[step.stepId] = { entries }\n }\n\n return { steps }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,8 @@
1
+ import { parseBooleanWithDefault } from "@open-mercato/shared/lib/boolean";
2
+ function resolveCrudFormDialogsEnabled(rawFlag) {
3
+ return parseBooleanWithDefault(rawFlag, true);
4
+ }
5
+ export {
6
+ resolveCrudFormDialogsEnabled
7
+ };
8
+ //# sourceMappingURL=crud-form-dialogs-flag.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/workflows/lib/crud-form-dialogs-flag.ts"],
4
+ "sourcesContent": ["import { parseBooleanWithDefault } from '@open-mercato/shared/lib/boolean'\n\nexport function resolveCrudFormDialogsEnabled(rawFlag: string | undefined): boolean {\n return parseBooleanWithDefault(rawFlag, true)\n}\n"],
5
+ "mappings": "AAAA,SAAS,+BAA+B;AAEjC,SAAS,8BAA8B,SAAsC;AAClF,SAAO,wBAAwB,SAAS,IAAI;AAC9C;",
6
+ "names": []
7
+ }
@@ -0,0 +1,63 @@
1
+ const IN_PORT_PREFIX = "in:";
2
+ const OUT_PORT_PREFIX = "out:";
3
+ const DATA_MAPPING_EDGE_TYPE = "workflowDataMapping";
4
+ function deriveParentPath(connection) {
5
+ const sourceHandle = connection.sourceHandle || "";
6
+ if (sourceHandle.startsWith(OUT_PORT_PREFIX)) {
7
+ return sourceHandle.slice(OUT_PORT_PREFIX.length);
8
+ }
9
+ return connection.source || "";
10
+ }
11
+ function classifyConnection(connection) {
12
+ const targetHandle = connection.targetHandle || "";
13
+ const sourceHandle = connection.sourceHandle || "";
14
+ if (targetHandle.startsWith(IN_PORT_PREFIX)) {
15
+ return {
16
+ kind: "data-mapping",
17
+ targetNodeId: connection.target || "",
18
+ childPortKey: targetHandle.slice(IN_PORT_PREFIX.length),
19
+ parentPath: deriveParentPath(connection)
20
+ };
21
+ }
22
+ if (sourceHandle.startsWith(OUT_PORT_PREFIX)) {
23
+ return { kind: "data-ignored" };
24
+ }
25
+ return { kind: "control" };
26
+ }
27
+ function dataMappingEdgeId(targetNodeId, childPortKey) {
28
+ return `data:${targetNodeId}:${childPortKey}`;
29
+ }
30
+ function buildDataMappingEdge(connection, childPortKey) {
31
+ return {
32
+ id: dataMappingEdgeId(connection.target || "", childPortKey),
33
+ source: connection.source || "",
34
+ target: connection.target || "",
35
+ sourceHandle: connection.sourceHandle || void 0,
36
+ targetHandle: connection.targetHandle || void 0,
37
+ type: DATA_MAPPING_EDGE_TYPE
38
+ };
39
+ }
40
+ function applyInputMappingToNodes(nodes, targetNodeId, childPortKey, parentPath) {
41
+ return nodes.map((node) => {
42
+ if (node.id !== targetNodeId) return node;
43
+ const data = node.data || {};
44
+ const config = data.config || {};
45
+ const inputMapping = { ...config.inputMapping || {}, [childPortKey]: parentPath };
46
+ return { ...node, data: { ...data, config: { ...config, inputMapping } } };
47
+ });
48
+ }
49
+ function isDataMappingEdge(edge) {
50
+ return edge.type === DATA_MAPPING_EDGE_TYPE;
51
+ }
52
+ export {
53
+ DATA_MAPPING_EDGE_TYPE,
54
+ IN_PORT_PREFIX,
55
+ OUT_PORT_PREFIX,
56
+ applyInputMappingToNodes,
57
+ buildDataMappingEdge,
58
+ classifyConnection,
59
+ dataMappingEdgeId,
60
+ deriveParentPath,
61
+ isDataMappingEdge
62
+ };
63
+ //# sourceMappingURL=data-edge-mapping.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/workflows/lib/data-edge-mapping.ts"],
4
+ "sourcesContent": ["/**\n * Workflows Module - Data-edge field mapping\n *\n * Pure helpers that let a SUB_WORKFLOW field mapping be authored by dragging a\n * connection to a child IN port, as an alternative to the key/value form. A\n * data-port connection is persisted as the SAME `config.inputMapping` shape the\n * form writes (`{ childPortKey: parentDotPath }`) and rendered as a distinct\n * \"data\" edge rather than a control-flow transition.\n *\n * Port handle ids (from the SubWorkflowNode): `in:<key>` (child input target),\n * `out:<key>` (child output source). Control-flow handles keep ids\n * `target` / `source`.\n */\n\nimport type { Connection, Edge, Node } from '@xyflow/react'\n\nexport const IN_PORT_PREFIX = 'in:'\nexport const OUT_PORT_PREFIX = 'out:'\n\n/** Edge type used for drag-authored field mappings (not a transition). */\nexport const DATA_MAPPING_EDGE_TYPE = 'workflowDataMapping'\n\nexport type ConnectionClassification =\n | { kind: 'control' }\n | { kind: 'data-mapping'; targetNodeId: string; childPortKey: string; parentPath: string }\n | { kind: 'data-ignored' }\n\n/**\n * Derive the parent-context dot-path a data connection maps from.\n *\n * MVP (per spec D3 \u2014 no per-node typed output ports yet): when the source is a\n * child OUT port (`out:<name>`) use that port name; otherwise fall back to the\n * source node id. Either way the value is a plain dot-path the user can refine\n * in the key/value form.\n */\nexport function deriveParentPath(connection: Connection): string {\n const sourceHandle = connection.sourceHandle || ''\n if (sourceHandle.startsWith(OUT_PORT_PREFIX)) {\n return sourceHandle.slice(OUT_PORT_PREFIX.length)\n }\n return connection.source || ''\n}\n\n/**\n * Classify a new connection:\n * - `data-mapping` \u2014 the target is a child IN port (`in:<key>`); becomes an\n * `inputMapping` entry + a data edge, never a transition.\n * - `data-ignored` \u2014 dragged from an OUT port but not onto an IN port; there is\n * no child port to bind, so it is dropped (no bogus transition is created).\n * - `control` \u2014 a plain control connection; keeps today's transition behaviour.\n */\nexport function classifyConnection(connection: Connection): ConnectionClassification {\n const targetHandle = connection.targetHandle || ''\n const sourceHandle = connection.sourceHandle || ''\n\n if (targetHandle.startsWith(IN_PORT_PREFIX)) {\n return {\n kind: 'data-mapping',\n targetNodeId: connection.target || '',\n childPortKey: targetHandle.slice(IN_PORT_PREFIX.length),\n parentPath: deriveParentPath(connection),\n }\n }\n\n if (sourceHandle.startsWith(OUT_PORT_PREFIX)) {\n return { kind: 'data-ignored' }\n }\n\n return { kind: 'control' }\n}\n\n/** Stable id for a data edge \u2014 one per (target node, child port). */\nexport function dataMappingEdgeId(targetNodeId: string, childPortKey: string): string {\n return `data:${targetNodeId}:${childPortKey}`\n}\n\n/** Build the React Flow edge for a data mapping connection. */\nexport function buildDataMappingEdge(connection: Connection, childPortKey: string): Edge {\n return {\n id: dataMappingEdgeId(connection.target || '', childPortKey),\n source: connection.source || '',\n target: connection.target || '',\n sourceHandle: connection.sourceHandle || undefined,\n targetHandle: connection.targetHandle || undefined,\n type: DATA_MAPPING_EDGE_TYPE,\n }\n}\n\n/**\n * Apply a data mapping to the target node's `config.inputMapping`, returning a\n * new nodes array. The result matches the key/value form's shape exactly\n * (`config.inputMapping[childPortKey] = parentPath`).\n */\nexport function applyInputMappingToNodes(\n nodes: Node[],\n targetNodeId: string,\n childPortKey: string,\n parentPath: string,\n): Node[] {\n return nodes.map((node) => {\n if (node.id !== targetNodeId) return node\n const data = (node.data || {}) as Record<string, any>\n const config = (data.config || {}) as Record<string, any>\n const inputMapping = { ...(config.inputMapping || {}), [childPortKey]: parentPath }\n return { ...node, data: { ...data, config: { ...config, inputMapping } } }\n })\n}\n\n/** True when an edge is a drag-authored data mapping (not a transition). */\nexport function isDataMappingEdge(edge: Pick<Edge, 'type'>): boolean {\n return edge.type === DATA_MAPPING_EDGE_TYPE\n}\n"],
5
+ "mappings": "AAgBO,MAAM,iBAAiB;AACvB,MAAM,kBAAkB;AAGxB,MAAM,yBAAyB;AAe/B,SAAS,iBAAiB,YAAgC;AAC/D,QAAM,eAAe,WAAW,gBAAgB;AAChD,MAAI,aAAa,WAAW,eAAe,GAAG;AAC5C,WAAO,aAAa,MAAM,gBAAgB,MAAM;AAAA,EAClD;AACA,SAAO,WAAW,UAAU;AAC9B;AAUO,SAAS,mBAAmB,YAAkD;AACnF,QAAM,eAAe,WAAW,gBAAgB;AAChD,QAAM,eAAe,WAAW,gBAAgB;AAEhD,MAAI,aAAa,WAAW,cAAc,GAAG;AAC3C,WAAO;AAAA,MACL,MAAM;AAAA,MACN,cAAc,WAAW,UAAU;AAAA,MACnC,cAAc,aAAa,MAAM,eAAe,MAAM;AAAA,MACtD,YAAY,iBAAiB,UAAU;AAAA,IACzC;AAAA,EACF;AAEA,MAAI,aAAa,WAAW,eAAe,GAAG;AAC5C,WAAO,EAAE,MAAM,eAAe;AAAA,EAChC;AAEA,SAAO,EAAE,MAAM,UAAU;AAC3B;AAGO,SAAS,kBAAkB,cAAsB,cAA8B;AACpF,SAAO,QAAQ,YAAY,IAAI,YAAY;AAC7C;AAGO,SAAS,qBAAqB,YAAwB,cAA4B;AACvF,SAAO;AAAA,IACL,IAAI,kBAAkB,WAAW,UAAU,IAAI,YAAY;AAAA,IAC3D,QAAQ,WAAW,UAAU;AAAA,IAC7B,QAAQ,WAAW,UAAU;AAAA,IAC7B,cAAc,WAAW,gBAAgB;AAAA,IACzC,cAAc,WAAW,gBAAgB;AAAA,IACzC,MAAM;AAAA,EACR;AACF;AAOO,SAAS,yBACd,OACA,cACA,cACA,YACQ;AACR,SAAO,MAAM,IAAI,CAAC,SAAS;AACzB,QAAI,KAAK,OAAO,aAAc,QAAO;AACrC,UAAM,OAAQ,KAAK,QAAQ,CAAC;AAC5B,UAAM,SAAU,KAAK,UAAU,CAAC;AAChC,UAAM,eAAe,EAAE,GAAI,OAAO,gBAAgB,CAAC,GAAI,CAAC,YAAY,GAAG,WAAW;AAClF,WAAO,EAAE,GAAG,MAAM,MAAM,EAAE,GAAG,MAAM,QAAQ,EAAE,GAAG,QAAQ,aAAa,EAAE,EAAE;AAAA,EAC3E,CAAC;AACH;AAGO,SAAS,kBAAkB,MAAmC;AACnE,SAAO,KAAK,SAAS;AACvB;",
6
+ "names": []
7
+ }