@xyne/workflow-ui 0.1.0

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 (459) hide show
  1. package/README.md +38 -0
  2. package/dist/components/automations/AutomationCard.d.ts +8 -0
  3. package/dist/components/automations/AutomationCard.d.ts.map +1 -0
  4. package/dist/components/automations/AutomationCard.js +55 -0
  5. package/dist/components/automations/AutomationCard.js.map +1 -0
  6. package/dist/components/automations/AutomationListView.d.ts +7 -0
  7. package/dist/components/automations/AutomationListView.d.ts.map +1 -0
  8. package/dist/components/automations/AutomationListView.js +22 -0
  9. package/dist/components/automations/AutomationListView.js.map +1 -0
  10. package/dist/components/automations/CreateWorkflowDialog.d.ts +7 -0
  11. package/dist/components/automations/CreateWorkflowDialog.d.ts.map +1 -0
  12. package/dist/components/automations/CreateWorkflowDialog.js +70 -0
  13. package/dist/components/automations/CreateWorkflowDialog.js.map +1 -0
  14. package/dist/components/builder/AddStepButton.d.ts +6 -0
  15. package/dist/components/builder/AddStepButton.d.ts.map +1 -0
  16. package/dist/components/builder/AddStepButton.js +7 -0
  17. package/dist/components/builder/AddStepButton.js.map +1 -0
  18. package/dist/components/builder/BranchEdge.d.ts +3 -0
  19. package/dist/components/builder/BranchEdge.d.ts.map +1 -0
  20. package/dist/components/builder/BranchEdge.js +19 -0
  21. package/dist/components/builder/BranchEdge.js.map +1 -0
  22. package/dist/components/builder/BuilderToolbar.d.ts +10 -0
  23. package/dist/components/builder/BuilderToolbar.d.ts.map +1 -0
  24. package/dist/components/builder/BuilderToolbar.js +16 -0
  25. package/dist/components/builder/BuilderToolbar.js.map +1 -0
  26. package/dist/components/builder/StepConfigDrawer.d.ts +11 -0
  27. package/dist/components/builder/StepConfigDrawer.d.ts.map +1 -0
  28. package/dist/components/builder/StepConfigDrawer.js +21 -0
  29. package/dist/components/builder/StepConfigDrawer.js.map +1 -0
  30. package/dist/components/builder/StepNode.d.ts +15 -0
  31. package/dist/components/builder/StepNode.d.ts.map +1 -0
  32. package/dist/components/builder/StepNode.js +56 -0
  33. package/dist/components/builder/StepNode.js.map +1 -0
  34. package/dist/components/builder/StepPalette.d.ts +7 -0
  35. package/dist/components/builder/StepPalette.d.ts.map +1 -0
  36. package/dist/components/builder/StepPalette.js +83 -0
  37. package/dist/components/builder/StepPalette.js.map +1 -0
  38. package/dist/components/builder/StepPicker.d.ts +9 -0
  39. package/dist/components/builder/StepPicker.d.ts.map +1 -0
  40. package/dist/components/builder/StepPicker.js +95 -0
  41. package/dist/components/builder/StepPicker.js.map +1 -0
  42. package/dist/components/builder/TerminalNode.d.ts +6 -0
  43. package/dist/components/builder/TerminalNode.d.ts.map +1 -0
  44. package/dist/components/builder/TerminalNode.js +7 -0
  45. package/dist/components/builder/TerminalNode.js.map +1 -0
  46. package/dist/components/builder/TriggerConfigPanel.d.ts +10 -0
  47. package/dist/components/builder/TriggerConfigPanel.d.ts.map +1 -0
  48. package/dist/components/builder/TriggerConfigPanel.js +49 -0
  49. package/dist/components/builder/TriggerConfigPanel.js.map +1 -0
  50. package/dist/components/builder/TriggerNode.d.ts +9 -0
  51. package/dist/components/builder/TriggerNode.d.ts.map +1 -0
  52. package/dist/components/builder/TriggerNode.js +30 -0
  53. package/dist/components/builder/TriggerNode.js.map +1 -0
  54. package/dist/components/builder/TriggerPicker.d.ts +8 -0
  55. package/dist/components/builder/TriggerPicker.d.ts.map +1 -0
  56. package/dist/components/builder/TriggerPicker.js +61 -0
  57. package/dist/components/builder/TriggerPicker.js.map +1 -0
  58. package/dist/components/builder/WorkflowBuilder.d.ts +20 -0
  59. package/dist/components/builder/WorkflowBuilder.d.ts.map +1 -0
  60. package/dist/components/builder/WorkflowBuilder.js +157 -0
  61. package/dist/components/builder/WorkflowBuilder.js.map +1 -0
  62. package/dist/components/builder/edge-types.d.ts +3 -0
  63. package/dist/components/builder/edge-types.d.ts.map +1 -0
  64. package/dist/components/builder/edge-types.js +5 -0
  65. package/dist/components/builder/edge-types.js.map +1 -0
  66. package/dist/components/builder/icons.d.ts +25 -0
  67. package/dist/components/builder/icons.d.ts.map +1 -0
  68. package/dist/components/builder/icons.js +43 -0
  69. package/dist/components/builder/icons.js.map +1 -0
  70. package/dist/components/builder/layout-engine.d.ts +44 -0
  71. package/dist/components/builder/layout-engine.d.ts.map +1 -0
  72. package/dist/components/builder/layout-engine.js +216 -0
  73. package/dist/components/builder/layout-engine.js.map +1 -0
  74. package/dist/components/builder/node-types.d.ts +3 -0
  75. package/dist/components/builder/node-types.d.ts.map +1 -0
  76. package/dist/components/builder/node-types.js +11 -0
  77. package/dist/components/builder/node-types.js.map +1 -0
  78. package/dist/components/builder/theme.d.ts +28 -0
  79. package/dist/components/builder/theme.d.ts.map +1 -0
  80. package/dist/components/builder/theme.js +63 -0
  81. package/dist/components/builder/theme.js.map +1 -0
  82. package/dist/components/builder/v2/AddStepButton.d.ts +6 -0
  83. package/dist/components/builder/v2/AddStepButton.d.ts.map +1 -0
  84. package/dist/components/builder/v2/AddStepButton.js +6 -0
  85. package/dist/components/builder/v2/AddStepButton.js.map +1 -0
  86. package/dist/components/builder/v2/BranchEdge.d.ts +3 -0
  87. package/dist/components/builder/v2/BranchEdge.d.ts.map +1 -0
  88. package/dist/components/builder/v2/BranchEdge.js +46 -0
  89. package/dist/components/builder/v2/BranchEdge.js.map +1 -0
  90. package/dist/components/builder/v2/LoopBodyEdge.d.ts +7 -0
  91. package/dist/components/builder/v2/LoopBodyEdge.d.ts.map +1 -0
  92. package/dist/components/builder/v2/LoopBodyEdge.js +19 -0
  93. package/dist/components/builder/v2/LoopBodyEdge.js.map +1 -0
  94. package/dist/components/builder/v2/LoopbackEdge.d.ts +10 -0
  95. package/dist/components/builder/v2/LoopbackEdge.d.ts.map +1 -0
  96. package/dist/components/builder/v2/LoopbackEdge.js +26 -0
  97. package/dist/components/builder/v2/LoopbackEdge.js.map +1 -0
  98. package/dist/components/builder/v2/StepNode.d.ts +21 -0
  99. package/dist/components/builder/v2/StepNode.d.ts.map +1 -0
  100. package/dist/components/builder/v2/StepNode.js +36 -0
  101. package/dist/components/builder/v2/StepNode.js.map +1 -0
  102. package/dist/components/builder/v2/StepPicker.d.ts +8 -0
  103. package/dist/components/builder/v2/StepPicker.d.ts.map +1 -0
  104. package/dist/components/builder/v2/StepPicker.js +73 -0
  105. package/dist/components/builder/v2/StepPicker.js.map +1 -0
  106. package/dist/components/builder/v2/TerminalNode.d.ts +6 -0
  107. package/dist/components/builder/v2/TerminalNode.d.ts.map +1 -0
  108. package/dist/components/builder/v2/TerminalNode.js +7 -0
  109. package/dist/components/builder/v2/TerminalNode.js.map +1 -0
  110. package/dist/components/builder/v2/TriggerNode.d.ts +10 -0
  111. package/dist/components/builder/v2/TriggerNode.d.ts.map +1 -0
  112. package/dist/components/builder/v2/TriggerNode.js +20 -0
  113. package/dist/components/builder/v2/TriggerNode.js.map +1 -0
  114. package/dist/components/builder/v2/TriggerPicker.d.ts +7 -0
  115. package/dist/components/builder/v2/TriggerPicker.d.ts.map +1 -0
  116. package/dist/components/builder/v2/TriggerPicker.js +45 -0
  117. package/dist/components/builder/v2/TriggerPicker.js.map +1 -0
  118. package/dist/components/builder/v2/WorkflowBuilder.d.ts +14 -0
  119. package/dist/components/builder/v2/WorkflowBuilder.d.ts.map +1 -0
  120. package/dist/components/builder/v2/WorkflowBuilder.js +189 -0
  121. package/dist/components/builder/v2/WorkflowBuilder.js.map +1 -0
  122. package/dist/components/builder/v2/edge-types.d.ts +3 -0
  123. package/dist/components/builder/v2/edge-types.d.ts.map +1 -0
  124. package/dist/components/builder/v2/edge-types.js +9 -0
  125. package/dist/components/builder/v2/edge-types.js.map +1 -0
  126. package/dist/components/builder/v2/icons.d.ts +25 -0
  127. package/dist/components/builder/v2/icons.d.ts.map +1 -0
  128. package/dist/components/builder/v2/icons.js +43 -0
  129. package/dist/components/builder/v2/icons.js.map +1 -0
  130. package/dist/components/builder/v2/layout-engine.d.ts +76 -0
  131. package/dist/components/builder/v2/layout-engine.d.ts.map +1 -0
  132. package/dist/components/builder/v2/layout-engine.js +465 -0
  133. package/dist/components/builder/v2/layout-engine.js.map +1 -0
  134. package/dist/components/builder/v2/node-types.d.ts +3 -0
  135. package/dist/components/builder/v2/node-types.d.ts.map +1 -0
  136. package/dist/components/builder/v2/node-types.js +11 -0
  137. package/dist/components/builder/v2/node-types.js.map +1 -0
  138. package/dist/components/builder/v2/theme.d.ts +28 -0
  139. package/dist/components/builder/v2/theme.d.ts.map +1 -0
  140. package/dist/components/builder/v2/theme.js +63 -0
  141. package/dist/components/builder/v2/theme.js.map +1 -0
  142. package/dist/components/builder/v3/BranchContainer.d.ts +17 -0
  143. package/dist/components/builder/v3/BranchContainer.d.ts.map +1 -0
  144. package/dist/components/builder/v3/BranchContainer.js +64 -0
  145. package/dist/components/builder/v3/BranchContainer.js.map +1 -0
  146. package/dist/components/builder/v3/BuilderToolbar.d.ts +11 -0
  147. package/dist/components/builder/v3/BuilderToolbar.d.ts.map +1 -0
  148. package/dist/components/builder/v3/BuilderToolbar.js +14 -0
  149. package/dist/components/builder/v3/BuilderToolbar.js.map +1 -0
  150. package/dist/components/builder/v3/CodeEditor.d.ts +10 -0
  151. package/dist/components/builder/v3/CodeEditor.d.ts.map +1 -0
  152. package/dist/components/builder/v3/CodeEditor.js +117 -0
  153. package/dist/components/builder/v3/CodeEditor.js.map +1 -0
  154. package/dist/components/builder/v3/ConditionEditorPanel.d.ts +10 -0
  155. package/dist/components/builder/v3/ConditionEditorPanel.d.ts.map +1 -0
  156. package/dist/components/builder/v3/ConditionEditorPanel.js +54 -0
  157. package/dist/components/builder/v3/ConditionEditorPanel.js.map +1 -0
  158. package/dist/components/builder/v3/Connector.d.ts +7 -0
  159. package/dist/components/builder/v3/Connector.d.ts.map +1 -0
  160. package/dist/components/builder/v3/Connector.js +9 -0
  161. package/dist/components/builder/v3/Connector.js.map +1 -0
  162. package/dist/components/builder/v3/DiscriminatedUnionEditor.d.ts +14 -0
  163. package/dist/components/builder/v3/DiscriminatedUnionEditor.d.ts.map +1 -0
  164. package/dist/components/builder/v3/DiscriminatedUnionEditor.js +69 -0
  165. package/dist/components/builder/v3/DiscriminatedUnionEditor.js.map +1 -0
  166. package/dist/components/builder/v3/EnhancedSchemaFormRenderer.d.ts +13 -0
  167. package/dist/components/builder/v3/EnhancedSchemaFormRenderer.d.ts.map +1 -0
  168. package/dist/components/builder/v3/EnhancedSchemaFormRenderer.js +231 -0
  169. package/dist/components/builder/v3/EnhancedSchemaFormRenderer.js.map +1 -0
  170. package/dist/components/builder/v3/InputSchemaBuilder.d.ts +7 -0
  171. package/dist/components/builder/v3/InputSchemaBuilder.d.ts.map +1 -0
  172. package/dist/components/builder/v3/InputSchemaBuilder.js +62 -0
  173. package/dist/components/builder/v3/InputSchemaBuilder.js.map +1 -0
  174. package/dist/components/builder/v3/KeyValueEditor.d.ts +12 -0
  175. package/dist/components/builder/v3/KeyValueEditor.d.ts.map +1 -0
  176. package/dist/components/builder/v3/KeyValueEditor.js +45 -0
  177. package/dist/components/builder/v3/KeyValueEditor.js.map +1 -0
  178. package/dist/components/builder/v3/LoopContainer.d.ts +9 -0
  179. package/dist/components/builder/v3/LoopContainer.d.ts.map +1 -0
  180. package/dist/components/builder/v3/LoopContainer.js +8 -0
  181. package/dist/components/builder/v3/LoopContainer.js.map +1 -0
  182. package/dist/components/builder/v3/MultiSelectCheckboxes.d.ts +8 -0
  183. package/dist/components/builder/v3/MultiSelectCheckboxes.d.ts.map +1 -0
  184. package/dist/components/builder/v3/MultiSelectCheckboxes.js +28 -0
  185. package/dist/components/builder/v3/MultiSelectCheckboxes.js.map +1 -0
  186. package/dist/components/builder/v3/OutputFieldsEditor.d.ts +12 -0
  187. package/dist/components/builder/v3/OutputFieldsEditor.d.ts.map +1 -0
  188. package/dist/components/builder/v3/OutputFieldsEditor.js +20 -0
  189. package/dist/components/builder/v3/OutputFieldsEditor.js.map +1 -0
  190. package/dist/components/builder/v3/SidePanel.d.ts +28 -0
  191. package/dist/components/builder/v3/SidePanel.d.ts.map +1 -0
  192. package/dist/components/builder/v3/SidePanel.js +13 -0
  193. package/dist/components/builder/v3/SidePanel.js.map +1 -0
  194. package/dist/components/builder/v3/StepConfigPanel.d.ts +14 -0
  195. package/dist/components/builder/v3/StepConfigPanel.d.ts.map +1 -0
  196. package/dist/components/builder/v3/StepConfigPanel.js +48 -0
  197. package/dist/components/builder/v3/StepConfigPanel.js.map +1 -0
  198. package/dist/components/builder/v3/StepNode.d.ts +18 -0
  199. package/dist/components/builder/v3/StepNode.d.ts.map +1 -0
  200. package/dist/components/builder/v3/StepNode.js +34 -0
  201. package/dist/components/builder/v3/StepNode.js.map +1 -0
  202. package/dist/components/builder/v3/StepPicker.d.ts +15 -0
  203. package/dist/components/builder/v3/StepPicker.d.ts.map +1 -0
  204. package/dist/components/builder/v3/StepPicker.js +71 -0
  205. package/dist/components/builder/v3/StepPicker.js.map +1 -0
  206. package/dist/components/builder/v3/StringArrayInput.d.ts +8 -0
  207. package/dist/components/builder/v3/StringArrayInput.d.ts.map +1 -0
  208. package/dist/components/builder/v3/StringArrayInput.js +28 -0
  209. package/dist/components/builder/v3/StringArrayInput.js.map +1 -0
  210. package/dist/components/builder/v3/SwitchCaseEditor.d.ts +15 -0
  211. package/dist/components/builder/v3/SwitchCaseEditor.d.ts.map +1 -0
  212. package/dist/components/builder/v3/SwitchCaseEditor.js +37 -0
  213. package/dist/components/builder/v3/SwitchCaseEditor.js.map +1 -0
  214. package/dist/components/builder/v3/TerminalNode.d.ts +2 -0
  215. package/dist/components/builder/v3/TerminalNode.d.ts.map +1 -0
  216. package/dist/components/builder/v3/TerminalNode.js +5 -0
  217. package/dist/components/builder/v3/TerminalNode.js.map +1 -0
  218. package/dist/components/builder/v3/TriggerConfigPanel.d.ts +11 -0
  219. package/dist/components/builder/v3/TriggerConfigPanel.d.ts.map +1 -0
  220. package/dist/components/builder/v3/TriggerConfigPanel.js +15 -0
  221. package/dist/components/builder/v3/TriggerConfigPanel.js.map +1 -0
  222. package/dist/components/builder/v3/TriggerNode.d.ts +9 -0
  223. package/dist/components/builder/v3/TriggerNode.d.ts.map +1 -0
  224. package/dist/components/builder/v3/TriggerNode.js +13 -0
  225. package/dist/components/builder/v3/TriggerNode.js.map +1 -0
  226. package/dist/components/builder/v3/TriggerPicker.d.ts +7 -0
  227. package/dist/components/builder/v3/TriggerPicker.d.ts.map +1 -0
  228. package/dist/components/builder/v3/TriggerPicker.js +43 -0
  229. package/dist/components/builder/v3/TriggerPicker.js.map +1 -0
  230. package/dist/components/builder/v3/VariablePickerPopover.d.ts +9 -0
  231. package/dist/components/builder/v3/VariablePickerPopover.d.ts.map +1 -0
  232. package/dist/components/builder/v3/VariablePickerPopover.js +78 -0
  233. package/dist/components/builder/v3/VariablePickerPopover.js.map +1 -0
  234. package/dist/components/builder/v3/VariableRefInput.d.ts +14 -0
  235. package/dist/components/builder/v3/VariableRefInput.d.ts.map +1 -0
  236. package/dist/components/builder/v3/VariableRefInput.js +88 -0
  237. package/dist/components/builder/v3/VariableRefInput.js.map +1 -0
  238. package/dist/components/builder/v3/WorkflowBuilderV3.d.ts +13 -0
  239. package/dist/components/builder/v3/WorkflowBuilderV3.d.ts.map +1 -0
  240. package/dist/components/builder/v3/WorkflowBuilderV3.js +124 -0
  241. package/dist/components/builder/v3/WorkflowBuilderV3.js.map +1 -0
  242. package/dist/components/builder/v3/WorkflowCanvas.d.ts +26 -0
  243. package/dist/components/builder/v3/WorkflowCanvas.d.ts.map +1 -0
  244. package/dist/components/builder/v3/WorkflowCanvas.js +25 -0
  245. package/dist/components/builder/v3/WorkflowCanvas.js.map +1 -0
  246. package/dist/components/builder/v3/WorkflowTree.d.ts +22 -0
  247. package/dist/components/builder/v3/WorkflowTree.d.ts.map +1 -0
  248. package/dist/components/builder/v3/WorkflowTree.js +70 -0
  249. package/dist/components/builder/v3/WorkflowTree.js.map +1 -0
  250. package/dist/components/dashboard/TriggerFormModal.d.ts +16 -0
  251. package/dist/components/dashboard/TriggerFormModal.d.ts.map +1 -0
  252. package/dist/components/dashboard/TriggerFormModal.js +160 -0
  253. package/dist/components/dashboard/TriggerFormModal.js.map +1 -0
  254. package/dist/components/dashboard/WorkflowDashboard.d.ts +19 -0
  255. package/dist/components/dashboard/WorkflowDashboard.d.ts.map +1 -0
  256. package/dist/components/dashboard/WorkflowDashboard.js +48 -0
  257. package/dist/components/dashboard/WorkflowDashboard.js.map +1 -0
  258. package/dist/components/execution/ExecutionEdge.d.ts +4 -0
  259. package/dist/components/execution/ExecutionEdge.d.ts.map +1 -0
  260. package/dist/components/execution/ExecutionEdge.js +27 -0
  261. package/dist/components/execution/ExecutionEdge.js.map +1 -0
  262. package/dist/components/execution/ExecutionHeader.d.ts +9 -0
  263. package/dist/components/execution/ExecutionHeader.d.ts.map +1 -0
  264. package/dist/components/execution/ExecutionHeader.js +22 -0
  265. package/dist/components/execution/ExecutionHeader.js.map +1 -0
  266. package/dist/components/execution/ExecutionStepNode.d.ts +14 -0
  267. package/dist/components/execution/ExecutionStepNode.d.ts.map +1 -0
  268. package/dist/components/execution/ExecutionStepNode.js +47 -0
  269. package/dist/components/execution/ExecutionStepNode.js.map +1 -0
  270. package/dist/components/execution/ExecutionTree.d.ts +12 -0
  271. package/dist/components/execution/ExecutionTree.d.ts.map +1 -0
  272. package/dist/components/execution/ExecutionTree.js +65 -0
  273. package/dist/components/execution/ExecutionTree.js.map +1 -0
  274. package/dist/components/execution/ExecutionTriggerNode.d.ts +9 -0
  275. package/dist/components/execution/ExecutionTriggerNode.d.ts.map +1 -0
  276. package/dist/components/execution/ExecutionTriggerNode.js +15 -0
  277. package/dist/components/execution/ExecutionTriggerNode.js.map +1 -0
  278. package/dist/components/execution/ExecutionViewer.d.ts +21 -0
  279. package/dist/components/execution/ExecutionViewer.d.ts.map +1 -0
  280. package/dist/components/execution/ExecutionViewer.js +194 -0
  281. package/dist/components/execution/ExecutionViewer.js.map +1 -0
  282. package/dist/components/execution/PauseFormRenderer.d.ts +11 -0
  283. package/dist/components/execution/PauseFormRenderer.d.ts.map +1 -0
  284. package/dist/components/execution/PauseFormRenderer.js +48 -0
  285. package/dist/components/execution/PauseFormRenderer.js.map +1 -0
  286. package/dist/components/execution/PauseInteractionPanel.d.ts +9 -0
  287. package/dist/components/execution/PauseInteractionPanel.d.ts.map +1 -0
  288. package/dist/components/execution/PauseInteractionPanel.js +46 -0
  289. package/dist/components/execution/PauseInteractionPanel.js.map +1 -0
  290. package/dist/components/execution/RerunDialog.d.ts +34 -0
  291. package/dist/components/execution/RerunDialog.d.ts.map +1 -0
  292. package/dist/components/execution/RerunDialog.js +97 -0
  293. package/dist/components/execution/RerunDialog.js.map +1 -0
  294. package/dist/components/execution/SchemaAwareRenderer.d.ts +7 -0
  295. package/dist/components/execution/SchemaAwareRenderer.d.ts.map +1 -0
  296. package/dist/components/execution/SchemaAwareRenderer.js +116 -0
  297. package/dist/components/execution/SchemaAwareRenderer.js.map +1 -0
  298. package/dist/components/execution/StepDetailPanel.d.ts +22 -0
  299. package/dist/components/execution/StepDetailPanel.d.ts.map +1 -0
  300. package/dist/components/execution/StepDetailPanel.js +144 -0
  301. package/dist/components/execution/StepDetailPanel.js.map +1 -0
  302. package/dist/components/execution/ValueEditor.d.ts +39 -0
  303. package/dist/components/execution/ValueEditor.d.ts.map +1 -0
  304. package/dist/components/execution/ValueEditor.js +191 -0
  305. package/dist/components/execution/ValueEditor.js.map +1 -0
  306. package/dist/components/execution/execution-layout.d.ts +31 -0
  307. package/dist/components/execution/execution-layout.d.ts.map +1 -0
  308. package/dist/components/execution/execution-layout.js +90 -0
  309. package/dist/components/execution/execution-layout.js.map +1 -0
  310. package/dist/components/index.d.ts +58 -0
  311. package/dist/components/index.d.ts.map +1 -0
  312. package/dist/components/index.js +40 -0
  313. package/dist/components/index.js.map +1 -0
  314. package/dist/components/layout/AppShell.d.ts +8 -0
  315. package/dist/components/layout/AppShell.d.ts.map +1 -0
  316. package/dist/components/layout/AppShell.js +10 -0
  317. package/dist/components/layout/AppShell.js.map +1 -0
  318. package/dist/components/layout/Breadcrumb.d.ts +10 -0
  319. package/dist/components/layout/Breadcrumb.d.ts.map +1 -0
  320. package/dist/components/layout/Breadcrumb.js +33 -0
  321. package/dist/components/layout/Breadcrumb.js.map +1 -0
  322. package/dist/components/layout/PageHeader.d.ts +10 -0
  323. package/dist/components/layout/PageHeader.d.ts.map +1 -0
  324. package/dist/components/layout/PageHeader.js +10 -0
  325. package/dist/components/layout/PageHeader.js.map +1 -0
  326. package/dist/components/layout/Sidebar.d.ts +15 -0
  327. package/dist/components/layout/Sidebar.d.ts.map +1 -0
  328. package/dist/components/layout/Sidebar.js +30 -0
  329. package/dist/components/layout/Sidebar.js.map +1 -0
  330. package/dist/components/provider/WorkflowUIProvider.d.ts +18 -0
  331. package/dist/components/provider/WorkflowUIProvider.d.ts.map +1 -0
  332. package/dist/components/provider/WorkflowUIProvider.js +34 -0
  333. package/dist/components/provider/WorkflowUIProvider.js.map +1 -0
  334. package/dist/components/provider/slot-resolution.d.ts +13 -0
  335. package/dist/components/provider/slot-resolution.d.ts.map +1 -0
  336. package/dist/components/provider/slot-resolution.js +21 -0
  337. package/dist/components/provider/slot-resolution.js.map +1 -0
  338. package/dist/components/provider/workflow-ui-context.d.ts +30 -0
  339. package/dist/components/provider/workflow-ui-context.d.ts.map +1 -0
  340. package/dist/components/provider/workflow-ui-context.js +14 -0
  341. package/dist/components/provider/workflow-ui-context.js.map +1 -0
  342. package/dist/components/runs/RunsFilters.d.ts +7 -0
  343. package/dist/components/runs/RunsFilters.d.ts.map +1 -0
  344. package/dist/components/runs/RunsFilters.js +14 -0
  345. package/dist/components/runs/RunsFilters.js.map +1 -0
  346. package/dist/components/runs/RunsTable.d.ts +8 -0
  347. package/dist/components/runs/RunsTable.d.ts.map +1 -0
  348. package/dist/components/runs/RunsTable.js +96 -0
  349. package/dist/components/runs/RunsTable.js.map +1 -0
  350. package/dist/components/runs/RunsView.d.ts +12 -0
  351. package/dist/components/runs/RunsView.d.ts.map +1 -0
  352. package/dist/components/runs/RunsView.js +18 -0
  353. package/dist/components/runs/RunsView.js.map +1 -0
  354. package/dist/components/schema-form/SchemaFormRenderer.d.ts +19 -0
  355. package/dist/components/schema-form/SchemaFormRenderer.d.ts.map +1 -0
  356. package/dist/components/schema-form/SchemaFormRenderer.js +80 -0
  357. package/dist/components/schema-form/SchemaFormRenderer.js.map +1 -0
  358. package/dist/components/shared/EmptyState.d.ts +9 -0
  359. package/dist/components/shared/EmptyState.d.ts.map +1 -0
  360. package/dist/components/shared/EmptyState.js +7 -0
  361. package/dist/components/shared/EmptyState.js.map +1 -0
  362. package/dist/components/shared/ErrorBoundary.d.ts +16 -0
  363. package/dist/components/shared/ErrorBoundary.d.ts.map +1 -0
  364. package/dist/components/shared/ErrorBoundary.js +19 -0
  365. package/dist/components/shared/ErrorBoundary.js.map +1 -0
  366. package/dist/components/shared/LoadingSpinner.d.ts +6 -0
  367. package/dist/components/shared/LoadingSpinner.d.ts.map +1 -0
  368. package/dist/components/shared/LoadingSpinner.js +11 -0
  369. package/dist/components/shared/LoadingSpinner.js.map +1 -0
  370. package/dist/components/shared/StatusBadge.d.ts +8 -0
  371. package/dist/components/shared/StatusBadge.d.ts.map +1 -0
  372. package/dist/components/shared/StatusBadge.js +25 -0
  373. package/dist/components/shared/StatusBadge.js.map +1 -0
  374. package/dist/components/shared/cn.d.ts +9 -0
  375. package/dist/components/shared/cn.d.ts.map +1 -0
  376. package/dist/components/shared/cn.js +12 -0
  377. package/dist/components/shared/cn.js.map +1 -0
  378. package/dist/hooks/index.d.ts +34 -0
  379. package/dist/hooks/index.d.ts.map +1 -0
  380. package/dist/hooks/index.js +25 -0
  381. package/dist/hooks/index.js.map +1 -0
  382. package/dist/hooks/use-condition-editor.d.ts +18 -0
  383. package/dist/hooks/use-condition-editor.d.ts.map +1 -0
  384. package/dist/hooks/use-condition-editor.js +115 -0
  385. package/dist/hooks/use-condition-editor.js.map +1 -0
  386. package/dist/hooks/use-execution-rerun.d.ts +26 -0
  387. package/dist/hooks/use-execution-rerun.d.ts.map +1 -0
  388. package/dist/hooks/use-execution-rerun.js +40 -0
  389. package/dist/hooks/use-execution-rerun.js.map +1 -0
  390. package/dist/hooks/use-execution-viewer.d.ts +33 -0
  391. package/dist/hooks/use-execution-viewer.d.ts.map +1 -0
  392. package/dist/hooks/use-execution-viewer.js +380 -0
  393. package/dist/hooks/use-execution-viewer.js.map +1 -0
  394. package/dist/hooks/use-pause-interaction.d.ts +13 -0
  395. package/dist/hooks/use-pause-interaction.d.ts.map +1 -0
  396. package/dist/hooks/use-pause-interaction.js +72 -0
  397. package/dist/hooks/use-pause-interaction.js.map +1 -0
  398. package/dist/hooks/use-runs-list.d.ts +20 -0
  399. package/dist/hooks/use-runs-list.d.ts.map +1 -0
  400. package/dist/hooks/use-runs-list.js +89 -0
  401. package/dist/hooks/use-runs-list.js.map +1 -0
  402. package/dist/hooks/use-schema-form.d.ts +47 -0
  403. package/dist/hooks/use-schema-form.d.ts.map +1 -0
  404. package/dist/hooks/use-schema-form.js +247 -0
  405. package/dist/hooks/use-schema-form.js.map +1 -0
  406. package/dist/hooks/use-step-config.d.ts +13 -0
  407. package/dist/hooks/use-step-config.d.ts.map +1 -0
  408. package/dist/hooks/use-step-config.js +40 -0
  409. package/dist/hooks/use-step-config.js.map +1 -0
  410. package/dist/hooks/use-step-metadata.d.ts +37 -0
  411. package/dist/hooks/use-step-metadata.d.ts.map +1 -0
  412. package/dist/hooks/use-step-metadata.js +113 -0
  413. package/dist/hooks/use-step-metadata.js.map +1 -0
  414. package/dist/hooks/use-trigger-config.d.ts +13 -0
  415. package/dist/hooks/use-trigger-config.d.ts.map +1 -0
  416. package/dist/hooks/use-trigger-config.js +40 -0
  417. package/dist/hooks/use-trigger-config.js.map +1 -0
  418. package/dist/hooks/use-undo-redo.d.ts +17 -0
  419. package/dist/hooks/use-undo-redo.d.ts.map +1 -0
  420. package/dist/hooks/use-undo-redo.js +58 -0
  421. package/dist/hooks/use-undo-redo.js.map +1 -0
  422. package/dist/hooks/use-variable-picker.d.ts +26 -0
  423. package/dist/hooks/use-variable-picker.d.ts.map +1 -0
  424. package/dist/hooks/use-variable-picker.js +132 -0
  425. package/dist/hooks/use-variable-picker.js.map +1 -0
  426. package/dist/hooks/use-workflow-builder.d.ts +47 -0
  427. package/dist/hooks/use-workflow-builder.d.ts.map +1 -0
  428. package/dist/hooks/use-workflow-builder.js +374 -0
  429. package/dist/hooks/use-workflow-builder.js.map +1 -0
  430. package/dist/hooks/use-workflow-client.d.ts +8 -0
  431. package/dist/hooks/use-workflow-client.d.ts.map +1 -0
  432. package/dist/hooks/use-workflow-client.js +15 -0
  433. package/dist/hooks/use-workflow-client.js.map +1 -0
  434. package/dist/hooks/use-workflow-list.d.ts +11 -0
  435. package/dist/hooks/use-workflow-list.d.ts.map +1 -0
  436. package/dist/hooks/use-workflow-list.js +43 -0
  437. package/dist/hooks/use-workflow-list.js.map +1 -0
  438. package/dist/index.d.ts +24 -0
  439. package/dist/index.d.ts.map +1 -0
  440. package/dist/index.js +41 -0
  441. package/dist/index.js.map +1 -0
  442. package/dist/styles.css +117 -0
  443. package/dist/test-setup.d.ts +2 -0
  444. package/dist/test-setup.d.ts.map +1 -0
  445. package/dist/test-setup.js +2 -0
  446. package/dist/test-setup.js.map +1 -0
  447. package/dist/types/index.d.ts +2 -0
  448. package/dist/types/index.d.ts.map +1 -0
  449. package/dist/types/index.js +2 -0
  450. package/dist/types/index.js.map +1 -0
  451. package/dist/types/slots.d.ts +18 -0
  452. package/dist/types/slots.d.ts.map +1 -0
  453. package/dist/types/slots.js +2 -0
  454. package/dist/types/slots.js.map +1 -0
  455. package/dist/utils/branch-detection.d.ts +83 -0
  456. package/dist/utils/branch-detection.d.ts.map +1 -0
  457. package/dist/utils/branch-detection.js +247 -0
  458. package/dist/utils/branch-detection.js.map +1 -0
  459. package/package.json +72 -0
@@ -0,0 +1,465 @@
1
+ /**
2
+ * v2/layout-engine — Config-driven layout computation.
3
+ *
4
+ * Pure function: no side effects, no React, no hooks.
5
+ * Uses generic branch detection from config data + configSchema.
6
+ *
7
+ * Two branch shapes detected automatically:
8
+ * 1. Direct array: config.body = [{id, type, ...}] (LOOP)
9
+ * 2. Record of arrays: config.branches = { "A": [{id, type}] } (PARALLEL)
10
+ *
11
+ * Branch keys use dot notation: "body" or "branches.A".
12
+ */
13
+ import { detectBranchesFromConfig, branchLabel } from '../../../utils/branch-detection.js';
14
+ // ─── Constants ───
15
+ export const NODE_GAP_Y = 140;
16
+ /** Padding between adjacent branch extents. */
17
+ const BRANCH_PAD_X = 60;
18
+ /** Width of a step node in CSS pixels. */
19
+ const NODE_WIDTH = 240;
20
+ /** Extra vertical padding before branch fork. */
21
+ export const BRANCH_FORK_GAP = 120;
22
+ /** Horizontal gap between consecutive loop body steps. */
23
+ const LOOP_BODY_GAP_X = 60;
24
+ /** Vertical drop for the loopback U-curve under the row. */
25
+ const LOOPBACK_DROP = 100;
26
+ // ─── Branch detection (generic, config-driven) ───
27
+ function detectBranches(step, stepMeta) {
28
+ if (!step.config || typeof step.config !== 'object')
29
+ return null;
30
+ const config = step.config;
31
+ const meta = stepMeta?.get(step.type);
32
+ const branches = detectBranchesFromConfig(config, meta?.configSchema);
33
+ return Object.keys(branches).length > 0 ? branches : null;
34
+ }
35
+ /**
36
+ * Detect if a step has a dynamic branch container (Record<string, steps[]>).
37
+ * Returns the top-level config key (e.g. "branches") or null.
38
+ */
39
+ function detectDynamicBranchContainer(step, stepMeta) {
40
+ const meta = stepMeta?.get(step.type);
41
+ if (!meta?.configSchema)
42
+ return null;
43
+ const properties = (meta.configSchema['properties'] ?? {});
44
+ for (const [key, propSchema] of Object.entries(properties)) {
45
+ if (propSchema['type'] !== 'object')
46
+ continue;
47
+ const additionalProps = propSchema['additionalProperties'];
48
+ if (!additionalProps)
49
+ continue;
50
+ if (additionalProps['type'] === 'array') {
51
+ const items = additionalProps['items'];
52
+ if (items?.['type'] === 'object')
53
+ return key;
54
+ }
55
+ }
56
+ return null;
57
+ }
58
+ // ─── Subtree width measurement ───
59
+ /**
60
+ * Measure the horizontal width a branch's subtree needs.
61
+ * Recurses into any step that has nested branches (PARALLEL inside PARALLEL, etc.).
62
+ */
63
+ function measureBranchWidth(steps, stepMeta) {
64
+ let maxWidth = NODE_WIDTH;
65
+ for (const step of steps) {
66
+ const branches = detectBranches(step, stepMeta);
67
+ if (branches) {
68
+ const entries = Object.entries(branches);
69
+ if (entries.length === 1) {
70
+ // Single branch (LOOP): body steps on a circular arc to the right
71
+ const bodySteps = entries[0][1];
72
+ const N = bodySteps.length;
73
+ const R = 160 + N * 20;
74
+ const arcWidth = NODE_WIDTH + 2 * R;
75
+ maxWidth = Math.max(maxWidth, arcWidth);
76
+ }
77
+ else {
78
+ const subWidths = entries.map(([, subSteps]) => measureBranchWidth(subSteps, stepMeta));
79
+ const totalSubWidth = subWidths.reduce((s, w) => s + w, 0) +
80
+ (entries.length - 1) * BRANCH_PAD_X;
81
+ maxWidth = Math.max(maxWidth, totalSubWidth);
82
+ }
83
+ }
84
+ }
85
+ return maxWidth;
86
+ }
87
+ // ─── Add-button helpers ───
88
+ // Approximate visual heights for centering the add-button in the gap
89
+ const NODE_HEIGHT_EST = 58;
90
+ const ADD_BTN_HEIGHT_EST = 28;
91
+ /**
92
+ * Insert an add-button node between two existing nodes, replacing the
93
+ * direct edge with source → button → target.
94
+ */
95
+ function insertAddButton(sourceId, targetId, xOffset, state, context) {
96
+ const sourceNode = state.nodes.find((n) => n.id === sourceId);
97
+ const targetNode = state.nodes.find((n) => n.id === targetId);
98
+ if (!sourceNode || !targetNode)
99
+ return;
100
+ // Include branch key in ID so multiple branches between the same source→target get unique buttons
101
+ const branchSuffix = context.inBranch ? `::${context.inBranch.branchKey}` : '';
102
+ const btnId = `__add__${sourceId}->${targetId}${branchSuffix}`;
103
+ const gapTop = sourceNode.position.y + NODE_HEIGHT_EST;
104
+ const gapBottom = targetNode.position.y;
105
+ const midY = (gapTop + gapBottom) / 2 - ADD_BTN_HEIGHT_EST / 2;
106
+ state.nodes.push({
107
+ id: btnId,
108
+ type: 'addButton',
109
+ position: { x: xOffset, y: midY },
110
+ data: {
111
+ label: '',
112
+ afterStepId: context.afterStepId,
113
+ inBranch: context.inBranch,
114
+ },
115
+ });
116
+ // Replace the direct edge with source → button → target
117
+ const edgeIdx = state.edges.findIndex((e) => {
118
+ if (e.source !== sourceId || e.target !== targetId)
119
+ return false;
120
+ // When an edge label is specified, match on it (for empty branch edges)
121
+ if (context.edgeLabel !== undefined)
122
+ return e.label === context.edgeLabel;
123
+ return true;
124
+ });
125
+ if (edgeIdx >= 0) {
126
+ const oldEdge = state.edges[edgeIdx];
127
+ state.edges.splice(edgeIdx, 1);
128
+ const srcToBtnEdge = { id: `${sourceId}->${btnId}`, source: sourceId, target: btnId };
129
+ if (oldEdge.label)
130
+ srcToBtnEdge.label = oldEdge.label;
131
+ if (oldEdge.data)
132
+ srcToBtnEdge.data = oldEdge.data;
133
+ state.edges.push(srcToBtnEdge, { id: `${btnId}->${targetId}`, source: btnId, target: targetId });
134
+ }
135
+ }
136
+ // ─── Main layout function ───
137
+ export function computeLayout(config, options) {
138
+ const state = { nodes: [], edges: [], y: 0 };
139
+ const stepMeta = options?.stepMeta;
140
+ const includeAddButtons = options?.includeAddButtons !== false;
141
+ // Trigger node
142
+ const triggerId = '__trigger__';
143
+ state.nodes.push({
144
+ id: triggerId,
145
+ type: 'trigger',
146
+ position: { x: 0, y: state.y },
147
+ data: {
148
+ triggerType: config.trigger.type,
149
+ triggerConfig: config.trigger.config,
150
+ label: options?.triggerLabel || config.trigger.type,
151
+ icon: options?.triggerIcon,
152
+ },
153
+ });
154
+ state.y += NODE_GAP_Y;
155
+ // Walk steps — returns the last connection point (step or rejoin node)
156
+ const lastId = layoutSteps(config.steps, triggerId, 0, state, stepMeta, includeAddButtons);
157
+ // Terminal node
158
+ const terminalId = '__terminal__';
159
+ state.nodes.push({
160
+ id: terminalId,
161
+ type: 'terminal',
162
+ position: { x: 0, y: state.y },
163
+ data: { label: 'End' },
164
+ });
165
+ state.edges.push({
166
+ id: `${lastId}->${terminalId}`,
167
+ source: lastId,
168
+ target: terminalId,
169
+ });
170
+ // Add button between last node and terminal
171
+ if (includeAddButtons) {
172
+ const afterStepId = lastId === triggerId ? '' : lastId;
173
+ insertAddButton(lastId, terminalId, 0, state, { afterStepId });
174
+ }
175
+ return { nodes: state.nodes, edges: state.edges };
176
+ }
177
+ // ─── Recursive step layout ───
178
+ function layoutSteps(steps, previousId, xOffset, state, stepMeta, includeAddButtons,
179
+ /** When laying out inside a branch, carries the branch context for add-buttons. */
180
+ inBranch) {
181
+ let prevId = previousId;
182
+ for (let stepIdx = 0; stepIdx < steps.length; stepIdx++) {
183
+ const step = steps[stepIdx];
184
+ const nodeId = step.id;
185
+ const meta = stepMeta?.get(step.type);
186
+ const dynamicContainer = detectDynamicBranchContainer(step, stepMeta);
187
+ // Create step node
188
+ state.nodes.push({
189
+ id: nodeId,
190
+ type: 'step',
191
+ position: { x: xOffset, y: state.y },
192
+ data: {
193
+ stepConfig: step,
194
+ label: meta?.name || step.type,
195
+ category: meta?.category,
196
+ kind: meta?.kind,
197
+ icon: meta?.icon,
198
+ dynamicBranchContainer: dynamicContainer ?? undefined,
199
+ },
200
+ });
201
+ // Edge from previous node → this step
202
+ state.edges.push({
203
+ id: `${prevId}->${nodeId}`,
204
+ source: prevId,
205
+ target: nodeId,
206
+ });
207
+ // Insert add-button between previous node and this step
208
+ if (includeAddButtons) {
209
+ const isFirstInChain = stepIdx === 0 && prevId === previousId;
210
+ const afterStepId = isFirstInChain
211
+ ? (previousId === '__trigger__' ? '' : previousId)
212
+ : prevId;
213
+ insertAddButton(prevId, nodeId, xOffset, state, { afterStepId, inBranch });
214
+ }
215
+ state.y += NODE_GAP_Y;
216
+ // Handle branching steps
217
+ const branches = detectBranches(step, stepMeta);
218
+ if (branches) {
219
+ prevId = layoutBranches(nodeId, branches, xOffset, state, stepMeta, includeAddButtons);
220
+ }
221
+ else {
222
+ prevId = nodeId;
223
+ }
224
+ }
225
+ return prevId;
226
+ }
227
+ // ─── Single-branch (LOOP) layout — circular arc with loopback ───
228
+ function layoutLoopBranch(parentId, branchKey, branchSteps, xOffset, state, stepMeta, includeAddButtons) {
229
+ const parentNodeY = state.y - NODE_GAP_Y; // Y where the parent node was placed
230
+ if (branchSteps.length > 0) {
231
+ const N = branchSteps.length;
232
+ // Arc geometry: circle center to the right of the Loop node
233
+ const R = 160 + N * 20;
234
+ const cx = xOffset + NODE_WIDTH / 2 + R;
235
+ const cy = parentNodeY + NODE_HEIGHT_EST / 2;
236
+ // Distribute body steps on a clockwise arc (right side of circle).
237
+ // Asymmetric angle range ensures different X positions for every step.
238
+ // Start slightly above horizontal (-10°), sweep clockwise to lower-right.
239
+ const startAngle = -10; // degrees
240
+ const arcSpan = N === 1 ? 0 : Math.min(90, 30 + (N - 1) * 30);
241
+ const endAngle = startAngle + arcSpan;
242
+ const angles = [];
243
+ if (N === 1) {
244
+ angles.push(0); // directly right of center
245
+ }
246
+ else {
247
+ for (let i = 0; i < N; i++) {
248
+ const t = i / (N - 1);
249
+ angles.push(startAngle + t * (endAngle - startAngle));
250
+ }
251
+ }
252
+ let prevId = parentId;
253
+ let maxBottomY = parentNodeY + NODE_HEIGHT_EST;
254
+ for (let i = 0; i < N; i++) {
255
+ const step = branchSteps[i];
256
+ const thetaRad = (angles[i] * Math.PI) / 180;
257
+ const nodeX = cx + R * Math.cos(thetaRad) - NODE_WIDTH / 2;
258
+ const nodeY = cy + R * Math.sin(thetaRad) - NODE_HEIGHT_EST / 2;
259
+ const meta = stepMeta?.get(step.type);
260
+ const dynamicContainer = detectDynamicBranchContainer(step, stepMeta);
261
+ state.nodes.push({
262
+ id: step.id,
263
+ type: 'step',
264
+ position: { x: nodeX, y: nodeY },
265
+ data: {
266
+ stepConfig: step,
267
+ label: meta?.name || step.type,
268
+ category: meta?.category,
269
+ kind: meta?.kind,
270
+ icon: meta?.icon,
271
+ dynamicBranchContainer: dynamicContainer ?? undefined,
272
+ },
273
+ });
274
+ // Edge from previous node → this body step
275
+ if (i === 0) {
276
+ // Entry: Loop right handle → first body step left handle
277
+ state.edges.push({
278
+ id: `${prevId}->${step.id}`,
279
+ source: prevId,
280
+ target: step.id,
281
+ type: 'loopBody',
282
+ sourceHandle: 'loop-right-source',
283
+ targetHandle: 'loop-body-target',
284
+ });
285
+ }
286
+ else {
287
+ // Body-to-body: default bottom → top handles
288
+ state.edges.push({
289
+ id: `${prevId}->${step.id}`,
290
+ source: prevId,
291
+ target: step.id,
292
+ type: 'loopBody',
293
+ });
294
+ }
295
+ maxBottomY = Math.max(maxBottomY, nodeY + NODE_HEIGHT_EST);
296
+ prevId = step.id;
297
+ }
298
+ // Add-button at the next position on the arc
299
+ if (includeAddButtons) {
300
+ const addBtnAngleDeg = Math.min(95, angles[N - 1] + 25);
301
+ const addBtnRad = (addBtnAngleDeg * Math.PI) / 180;
302
+ const btnX = cx + R * Math.cos(addBtnRad) - NODE_WIDTH / 2;
303
+ const btnY = cy + R * Math.sin(addBtnRad) - ADD_BTN_HEIGHT_EST / 2;
304
+ const lastStepId = branchSteps[N - 1].id;
305
+ const btnId = `__add__loop::${parentId}::${branchKey}`;
306
+ state.nodes.push({
307
+ id: btnId,
308
+ type: 'addButton',
309
+ position: { x: btnX, y: btnY },
310
+ data: {
311
+ label: '',
312
+ afterStepId: lastStepId,
313
+ inBranch: { stepId: parentId, branchKey },
314
+ },
315
+ });
316
+ state.edges.push({
317
+ id: `${prevId}->${btnId}`,
318
+ source: prevId,
319
+ target: btnId,
320
+ type: 'loopBody',
321
+ });
322
+ maxBottomY = Math.max(maxBottomY, btnY + ADD_BTN_HEIGHT_EST);
323
+ }
324
+ // Loopback: last body step → Loop (U-curve closing the circle)
325
+ state.edges.push({
326
+ id: `${prevId}->${parentId}::loopback`,
327
+ source: prevId,
328
+ target: parentId,
329
+ type: 'loopback',
330
+ targetHandle: 'loopback-target',
331
+ });
332
+ // Advance state.y past the arc + loopback visual
333
+ state.y = maxBottomY + LOOPBACK_DROP + NODE_GAP_Y / 2;
334
+ }
335
+ else {
336
+ // Empty loop body — show add-button to the right
337
+ if (includeAddButtons) {
338
+ const bodyX = xOffset + NODE_WIDTH + LOOP_BODY_GAP_X;
339
+ const btnId = `__add__loop_empty::${parentId}::${branchKey}`;
340
+ const btnY = parentNodeY + NODE_HEIGHT_EST / 2 - ADD_BTN_HEIGHT_EST / 2;
341
+ state.nodes.push({
342
+ id: btnId,
343
+ type: 'addButton',
344
+ position: { x: bodyX, y: btnY },
345
+ data: { label: '', inBranch: { stepId: parentId, branchKey } },
346
+ });
347
+ state.edges.push({
348
+ id: `${parentId}->${btnId}`,
349
+ source: parentId,
350
+ target: btnId,
351
+ sourceHandle: 'loop-right-source',
352
+ });
353
+ }
354
+ }
355
+ // Main flow continues from the parent node
356
+ return parentId;
357
+ }
358
+ // ─── Multi-branch (PARALLEL) fork/merge layout ───
359
+ function layoutBranches(parentId, branches, xOffset, state, stepMeta, includeAddButtons) {
360
+ const branchEntries = Object.entries(branches);
361
+ // Single branch (LOOP): delegate to right-side layout
362
+ if (branchEntries.length === 1) {
363
+ const [branchKey, branchSteps] = branchEntries[0];
364
+ return layoutLoopBranch(parentId, branchKey, branchSteps, xOffset, state, stepMeta, includeAddButtons);
365
+ }
366
+ // ─── Multi-branch (PARALLEL) ───
367
+ const rejoinId = `${parentId}__rejoin`;
368
+ // Measure actual width needed by each branch's subtree
369
+ const branchWidths = branchEntries.map(([, steps]) => measureBranchWidth(steps, stepMeta));
370
+ const totalWidth = branchWidths.reduce((s, w) => s + w, 0) +
371
+ (branchEntries.length - 1) * BRANCH_PAD_X;
372
+ const startX = xOffset - totalWidth / 2;
373
+ // Compute each branch's center x position from accumulated widths
374
+ const branchCenters = [];
375
+ let x = startX;
376
+ for (let i = 0; i < branchEntries.length; i++) {
377
+ branchCenters.push(x + branchWidths[i] / 2);
378
+ x += branchWidths[i] + BRANCH_PAD_X;
379
+ }
380
+ // Extra space between parent node and branch fork
381
+ state.y += BRANCH_FORK_GAP;
382
+ let maxY = state.y;
383
+ for (let i = 0; i < branchEntries.length; i++) {
384
+ const [branchKey, branchSteps] = branchEntries[i];
385
+ const label = branchLabel(branchKey);
386
+ const branchX = branchCenters[i];
387
+ const savedY = state.y;
388
+ const branchCtx = { stepId: parentId, branchKey };
389
+ if (branchSteps.length > 0) {
390
+ // Layout the branch steps recursively
391
+ const lastBranchId = layoutSteps(branchSteps, parentId, branchX, state, stepMeta, includeAddButtons, branchCtx);
392
+ // Edge: last branch step → rejoin
393
+ state.edges.push({
394
+ id: `${lastBranchId}->${rejoinId}`,
395
+ source: lastBranchId,
396
+ target: rejoinId,
397
+ });
398
+ // Label the first edge
399
+ const firstStepId = branchSteps[0].id;
400
+ const branchData = { branchStepId: parentId, branchKey };
401
+ const firstEdgeIdx = state.edges.findIndex((e) => e.source === parentId && e.target === firstStepId);
402
+ if (firstEdgeIdx >= 0) {
403
+ state.edges[firstEdgeIdx].label = label;
404
+ state.edges[firstEdgeIdx].data = branchData;
405
+ }
406
+ else {
407
+ const addBtnId = `__add__${parentId}->${firstStepId}::${branchKey}`;
408
+ const addBtnEdgeIdx = state.edges.findIndex((e) => e.source === parentId && e.target === addBtnId);
409
+ if (addBtnEdgeIdx >= 0) {
410
+ state.edges[addBtnEdgeIdx].label = label;
411
+ state.edges[addBtnEdgeIdx].data = branchData;
412
+ }
413
+ }
414
+ }
415
+ else {
416
+ // Empty branch — direct edge from parent to rejoin with label
417
+ const emptyEdge = {
418
+ id: `${parentId}->${rejoinId}::${branchKey}`,
419
+ source: parentId,
420
+ target: rejoinId,
421
+ };
422
+ emptyEdge.label = label;
423
+ emptyEdge.data = { branchStepId: parentId, branchKey };
424
+ state.edges.push(emptyEdge);
425
+ }
426
+ if (state.y > maxY)
427
+ maxY = state.y;
428
+ state.y = savedY;
429
+ }
430
+ state.y = maxY;
431
+ // Rejoin merge point
432
+ state.nodes.push({
433
+ id: rejoinId,
434
+ type: 'step',
435
+ position: { x: xOffset, y: state.y },
436
+ data: { label: '' },
437
+ });
438
+ state.y += NODE_GAP_Y;
439
+ // Now that rejoin node exists, insert add-buttons for empty branches
440
+ // and last-step → rejoin connections
441
+ if (includeAddButtons) {
442
+ for (let i = 0; i < branchEntries.length; i++) {
443
+ const [branchKey, branchSteps] = branchEntries[i];
444
+ const label = branchLabel(branchKey);
445
+ const branchX = branchCenters[i];
446
+ const branchCtx = { stepId: parentId, branchKey };
447
+ if (branchSteps.length === 0) {
448
+ // Empty branch: add-button between parent and rejoin
449
+ insertAddButton(parentId, rejoinId, branchX, state, {
450
+ inBranch: branchCtx,
451
+ edgeLabel: label,
452
+ });
453
+ }
454
+ else {
455
+ // Non-empty branch: add-button between last step and rejoin
456
+ const lastStepId = branchSteps[branchSteps.length - 1].id;
457
+ insertAddButton(lastStepId, rejoinId, branchX, state, {
458
+ inBranch: branchCtx,
459
+ });
460
+ }
461
+ }
462
+ }
463
+ return rejoinId;
464
+ }
465
+ //# sourceMappingURL=layout-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-engine.js","sourceRoot":"","sources":["../../../../src/components/builder/v2/layout-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { NodeTypes } from '@xyflow/react';
2
+ export declare const v2NodeTypes: NodeTypes;
3
+ //# sourceMappingURL=node-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-types.d.ts","sourceRoot":"","sources":["../../../../src/components/builder/v2/node-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAM/C,eAAO,MAAM,WAAW,EAAE,SAKzB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { StepNode } from './StepNode.js';
2
+ import { TriggerNode } from './TriggerNode.js';
3
+ import { AddStepButton } from './AddStepButton.js';
4
+ import { TerminalNode } from './TerminalNode.js';
5
+ export const v2NodeTypes = {
6
+ step: StepNode,
7
+ trigger: TriggerNode,
8
+ addButton: AddStepButton,
9
+ terminal: TerminalNode,
10
+ };
11
+ //# sourceMappingURL=node-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-types.js","sourceRoot":"","sources":["../../../../src/components/builder/v2/node-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,MAAM,WAAW,GAAc;IACpC,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,WAAW;IACpB,SAAS,EAAE,aAAa;IACxB,QAAQ,EAAE,YAAY;CACvB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * v2/theme — Centralized category theming.
3
+ *
4
+ * All visual styling for categories is derived from backend-provided category names.
5
+ * The UI never hardcodes which step TYPE belongs to which category.
6
+ */
7
+ export interface CategoryTheme {
8
+ /** Tailwind class for left accent border (e.g. "border-l-sky-400") */
9
+ accent: string;
10
+ /** Tailwind class for icon container background */
11
+ iconBg: string;
12
+ /** Tailwind class for icon container text color */
13
+ iconText: string;
14
+ /** Tailwind class for the category dot */
15
+ dot: string;
16
+ /** Tailwind class for light background (cards, picker hover) */
17
+ lightBg: string;
18
+ /** Tailwind class for selection ring */
19
+ ring: string;
20
+ /** CSS color value for edges/connectors */
21
+ edgeColor: string;
22
+ }
23
+ /**
24
+ * Get the visual theme for a category name (from backend StepSummary.category).
25
+ * Falls back gracefully for unknown categories.
26
+ */
27
+ export declare function getCategoryTheme(category?: string): CategoryTheme;
28
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../src/components/builder/v2/theme.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;CACnB;AAmDD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,CAGjE"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * v2/theme — Centralized category theming.
3
+ *
4
+ * All visual styling for categories is derived from backend-provided category names.
5
+ * The UI never hardcodes which step TYPE belongs to which category.
6
+ */
7
+ const CATEGORY_THEMES = {
8
+ data: {
9
+ accent: 'border-l-sky-400',
10
+ iconBg: 'bg-sky-50',
11
+ iconText: 'text-sky-600',
12
+ dot: 'bg-sky-400',
13
+ lightBg: 'bg-sky-50/50',
14
+ ring: 'ring-sky-200 border-sky-300',
15
+ edgeColor: '#38bdf8',
16
+ },
17
+ integration: {
18
+ accent: 'border-l-violet-400',
19
+ iconBg: 'bg-violet-50',
20
+ iconText: 'text-violet-600',
21
+ dot: 'bg-violet-400',
22
+ lightBg: 'bg-violet-50/50',
23
+ ring: 'ring-violet-200 border-violet-300',
24
+ edgeColor: '#a78bfa',
25
+ },
26
+ control: {
27
+ accent: 'border-l-amber-400',
28
+ iconBg: 'bg-amber-50',
29
+ iconText: 'text-amber-600',
30
+ dot: 'bg-amber-400',
31
+ lightBg: 'bg-amber-50/50',
32
+ ring: 'ring-amber-200 border-amber-300',
33
+ edgeColor: '#fbbf24',
34
+ },
35
+ flow: {
36
+ accent: 'border-l-teal-400',
37
+ iconBg: 'bg-teal-50',
38
+ iconText: 'text-teal-600',
39
+ dot: 'bg-teal-400',
40
+ lightBg: 'bg-teal-50/50',
41
+ ring: 'ring-teal-200 border-teal-300',
42
+ edgeColor: '#2dd4bf',
43
+ },
44
+ };
45
+ const FALLBACK_THEME = {
46
+ accent: 'border-l-slate-400',
47
+ iconBg: 'bg-slate-100',
48
+ iconText: 'text-slate-500',
49
+ dot: 'bg-slate-400',
50
+ lightBg: 'bg-slate-50/50',
51
+ ring: 'ring-slate-200 border-slate-300',
52
+ edgeColor: '#94a3b8',
53
+ };
54
+ /**
55
+ * Get the visual theme for a category name (from backend StepSummary.category).
56
+ * Falls back gracefully for unknown categories.
57
+ */
58
+ export function getCategoryTheme(category) {
59
+ if (!category)
60
+ return FALLBACK_THEME;
61
+ return CATEGORY_THEMES[category.toLowerCase()] ?? FALLBACK_THEME;
62
+ }
63
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../../src/components/builder/v2/theme.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH,MAAM,eAAe,GAAkC;IACrD,IAAI,EAAE;QACJ,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,cAAc;QACxB,GAAG,EAAE,YAAY;QACjB,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,6BAA6B;QACnC,SAAS,EAAE,SAAS;KACrB;IACD,WAAW,EAAE;QACX,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE,cAAc;QACtB,QAAQ,EAAE,iBAAiB;QAC3B,GAAG,EAAE,eAAe;QACpB,OAAO,EAAE,iBAAiB;QAC1B,IAAI,EAAE,mCAAmC;QACzC,SAAS,EAAE,SAAS;KACrB;IACD,OAAO,EAAE;QACP,MAAM,EAAE,oBAAoB;QAC5B,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,gBAAgB;QAC1B,GAAG,EAAE,cAAc;QACnB,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,iCAAiC;QACvC,SAAS,EAAE,SAAS;KACrB;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,mBAAmB;QAC3B,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,eAAe;QACzB,GAAG,EAAE,aAAa;QAClB,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,+BAA+B;QACrC,SAAS,EAAE,SAAS;KACrB;CACF,CAAC;AAEF,MAAM,cAAc,GAAkB;IACpC,MAAM,EAAE,oBAAoB;IAC5B,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,gBAAgB;IAC1B,GAAG,EAAE,cAAc;IACnB,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE,iCAAiC;IACvC,SAAS,EAAE,SAAS;CACrB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAiB;IAChD,IAAI,CAAC,QAAQ;QAAE,OAAO,cAAc,CAAC;IACrC,OAAO,eAAe,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,cAAc,CAAC;AACnE,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { WorkflowStepConfig } from '@xyne/workflow-sdk/builder';
2
+ import type { DetectedBranch } from '../../../utils/branch-detection.js';
3
+ interface BranchContainerProps {
4
+ stepId: string;
5
+ branches: Record<string, DetectedBranch>;
6
+ category?: string | undefined;
7
+ /** For dynamic branch containers (PARALLEL) — the config key holding the record */
8
+ dynamicContainer?: string | undefined;
9
+ readOnly: boolean;
10
+ onAddBranch?: (branchName: string) => void;
11
+ onRenameBranch?: (oldName: string, newName: string) => void;
12
+ /** Render function for branch content — provided by WorkflowTree */
13
+ renderBranch: (branchKey: string, steps: WorkflowStepConfig[]) => React.ReactNode;
14
+ }
15
+ export declare function BranchContainer({ branches, category, dynamicContainer, readOnly, onAddBranch, onRenameBranch, renderBranch, }: BranchContainerProps): import("react").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=BranchContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BranchContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/builder/v3/BranchContainer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAIzE,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,oEAAoE;IACpE,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC;CACnF;AAED,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,YAAY,GACb,EAAE,oBAAoB,+BAkLtB"}