@xyne/workflow-ui 0.4.1 → 0.4.3

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 (189) hide show
  1. package/dist/components/analytics/AnalyticsDashboard.d.ts.map +1 -1
  2. package/dist/components/analytics/AnalyticsDashboard.js +27 -20
  3. package/dist/components/analytics/AnalyticsDashboard.js.map +1 -1
  4. package/dist/components/analytics/FilteredRunsPanel.d.ts +2 -1
  5. package/dist/components/analytics/FilteredRunsPanel.d.ts.map +1 -1
  6. package/dist/components/analytics/FilteredRunsPanel.js +5 -2
  7. package/dist/components/analytics/FilteredRunsPanel.js.map +1 -1
  8. package/dist/components/analytics/FolderCard.d.ts +10 -0
  9. package/dist/components/analytics/FolderCard.d.ts.map +1 -0
  10. package/dist/components/analytics/FolderCard.js +12 -0
  11. package/dist/components/analytics/FolderCard.js.map +1 -0
  12. package/dist/components/analytics/FolderGrid.d.ts +7 -0
  13. package/dist/components/analytics/FolderGrid.d.ts.map +1 -0
  14. package/dist/components/analytics/FolderGrid.js +29 -0
  15. package/dist/components/analytics/FolderGrid.js.map +1 -0
  16. package/dist/components/analytics/StatCard.d.ts.map +1 -1
  17. package/dist/components/analytics/StatCard.js +6 -2
  18. package/dist/components/analytics/StatCard.js.map +1 -1
  19. package/dist/components/analytics/TopErrorsPanel.d.ts +2 -1
  20. package/dist/components/analytics/TopErrorsPanel.d.ts.map +1 -1
  21. package/dist/components/analytics/TopErrorsPanel.js +3 -3
  22. package/dist/components/analytics/TopErrorsPanel.js.map +1 -1
  23. package/dist/components/analytics/index.d.ts +2 -0
  24. package/dist/components/analytics/index.d.ts.map +1 -1
  25. package/dist/components/analytics/index.js +2 -0
  26. package/dist/components/analytics/index.js.map +1 -1
  27. package/dist/components/automations/AutomationListView.js +2 -2
  28. package/dist/components/automations/AutomationListView.js.map +1 -1
  29. package/dist/components/builder/v3/AiBuilderPanel.d.ts +1 -1
  30. package/dist/components/builder/v3/AiBuilderPanel.d.ts.map +1 -1
  31. package/dist/components/builder/v3/AiBuilderPanel.js +1 -1
  32. package/dist/components/builder/v3/AiBuilderPanel.js.map +1 -1
  33. package/dist/components/builder/v3/StepConfigPanel.js +3 -3
  34. package/dist/components/builder/v3/StepConfigPanel.js.map +1 -1
  35. package/dist/components/builder/v3/WorkflowBuilderV3.js +1 -1
  36. package/dist/components/builder/v3/WorkflowBuilderV3.js.map +1 -1
  37. package/dist/hooks/use-analytics.d.ts +1 -1
  38. package/dist/hooks/use-analytics.d.ts.map +1 -1
  39. package/dist/hooks/use-analytics.js +3 -3
  40. package/dist/hooks/use-analytics.js.map +1 -1
  41. package/dist/hooks/use-runs-list.d.ts +1 -0
  42. package/dist/hooks/use-runs-list.d.ts.map +1 -1
  43. package/dist/hooks/use-runs-list.js +7 -3
  44. package/dist/hooks/use-runs-list.js.map +1 -1
  45. package/dist/hooks/use-workflow-counts.d.ts +4 -1
  46. package/dist/hooks/use-workflow-counts.d.ts.map +1 -1
  47. package/dist/hooks/use-workflow-counts.js.map +1 -1
  48. package/dist/styles.css +1 -1
  49. package/package.json +1 -1
  50. package/dist/components/builder/AddStepButton.d.ts +0 -6
  51. package/dist/components/builder/AddStepButton.d.ts.map +0 -1
  52. package/dist/components/builder/AddStepButton.js +0 -7
  53. package/dist/components/builder/AddStepButton.js.map +0 -1
  54. package/dist/components/builder/BranchEdge.d.ts +0 -3
  55. package/dist/components/builder/BranchEdge.d.ts.map +0 -1
  56. package/dist/components/builder/BranchEdge.js +0 -19
  57. package/dist/components/builder/BranchEdge.js.map +0 -1
  58. package/dist/components/builder/BuilderToolbar.d.ts +0 -10
  59. package/dist/components/builder/BuilderToolbar.d.ts.map +0 -1
  60. package/dist/components/builder/BuilderToolbar.js +0 -16
  61. package/dist/components/builder/BuilderToolbar.js.map +0 -1
  62. package/dist/components/builder/StepConfigDrawer.d.ts +0 -11
  63. package/dist/components/builder/StepConfigDrawer.d.ts.map +0 -1
  64. package/dist/components/builder/StepConfigDrawer.js +0 -21
  65. package/dist/components/builder/StepConfigDrawer.js.map +0 -1
  66. package/dist/components/builder/StepNode.d.ts +0 -15
  67. package/dist/components/builder/StepNode.d.ts.map +0 -1
  68. package/dist/components/builder/StepNode.js +0 -56
  69. package/dist/components/builder/StepNode.js.map +0 -1
  70. package/dist/components/builder/StepPalette.d.ts +0 -7
  71. package/dist/components/builder/StepPalette.d.ts.map +0 -1
  72. package/dist/components/builder/StepPalette.js +0 -83
  73. package/dist/components/builder/StepPalette.js.map +0 -1
  74. package/dist/components/builder/StepPicker.d.ts +0 -9
  75. package/dist/components/builder/StepPicker.d.ts.map +0 -1
  76. package/dist/components/builder/StepPicker.js +0 -95
  77. package/dist/components/builder/StepPicker.js.map +0 -1
  78. package/dist/components/builder/TriggerConfigPanel.d.ts +0 -10
  79. package/dist/components/builder/TriggerConfigPanel.d.ts.map +0 -1
  80. package/dist/components/builder/TriggerConfigPanel.js +0 -49
  81. package/dist/components/builder/TriggerConfigPanel.js.map +0 -1
  82. package/dist/components/builder/TriggerNode.d.ts +0 -9
  83. package/dist/components/builder/TriggerNode.d.ts.map +0 -1
  84. package/dist/components/builder/TriggerNode.js +0 -30
  85. package/dist/components/builder/TriggerNode.js.map +0 -1
  86. package/dist/components/builder/TriggerPicker.d.ts +0 -8
  87. package/dist/components/builder/TriggerPicker.d.ts.map +0 -1
  88. package/dist/components/builder/TriggerPicker.js +0 -61
  89. package/dist/components/builder/TriggerPicker.js.map +0 -1
  90. package/dist/components/builder/WorkflowBuilder.d.ts +0 -20
  91. package/dist/components/builder/WorkflowBuilder.d.ts.map +0 -1
  92. package/dist/components/builder/WorkflowBuilder.js +0 -157
  93. package/dist/components/builder/WorkflowBuilder.js.map +0 -1
  94. package/dist/components/builder/edge-types.d.ts +0 -3
  95. package/dist/components/builder/edge-types.d.ts.map +0 -1
  96. package/dist/components/builder/edge-types.js +0 -5
  97. package/dist/components/builder/edge-types.js.map +0 -1
  98. package/dist/components/builder/node-types.d.ts +0 -3
  99. package/dist/components/builder/node-types.d.ts.map +0 -1
  100. package/dist/components/builder/node-types.js +0 -11
  101. package/dist/components/builder/node-types.js.map +0 -1
  102. package/dist/components/builder/v2/AddStepButton.d.ts +0 -6
  103. package/dist/components/builder/v2/AddStepButton.d.ts.map +0 -1
  104. package/dist/components/builder/v2/AddStepButton.js +0 -6
  105. package/dist/components/builder/v2/AddStepButton.js.map +0 -1
  106. package/dist/components/builder/v2/BranchEdge.d.ts +0 -3
  107. package/dist/components/builder/v2/BranchEdge.d.ts.map +0 -1
  108. package/dist/components/builder/v2/BranchEdge.js +0 -46
  109. package/dist/components/builder/v2/BranchEdge.js.map +0 -1
  110. package/dist/components/builder/v2/LoopBodyEdge.d.ts +0 -7
  111. package/dist/components/builder/v2/LoopBodyEdge.d.ts.map +0 -1
  112. package/dist/components/builder/v2/LoopBodyEdge.js +0 -19
  113. package/dist/components/builder/v2/LoopBodyEdge.js.map +0 -1
  114. package/dist/components/builder/v2/LoopbackEdge.d.ts +0 -10
  115. package/dist/components/builder/v2/LoopbackEdge.d.ts.map +0 -1
  116. package/dist/components/builder/v2/LoopbackEdge.js +0 -26
  117. package/dist/components/builder/v2/LoopbackEdge.js.map +0 -1
  118. package/dist/components/builder/v2/StepNode.d.ts +0 -21
  119. package/dist/components/builder/v2/StepNode.d.ts.map +0 -1
  120. package/dist/components/builder/v2/StepNode.js +0 -36
  121. package/dist/components/builder/v2/StepNode.js.map +0 -1
  122. package/dist/components/builder/v2/StepPicker.d.ts +0 -8
  123. package/dist/components/builder/v2/StepPicker.d.ts.map +0 -1
  124. package/dist/components/builder/v2/StepPicker.js +0 -73
  125. package/dist/components/builder/v2/StepPicker.js.map +0 -1
  126. package/dist/components/builder/v2/TerminalNode.d.ts +0 -6
  127. package/dist/components/builder/v2/TerminalNode.d.ts.map +0 -1
  128. package/dist/components/builder/v2/TerminalNode.js +0 -7
  129. package/dist/components/builder/v2/TerminalNode.js.map +0 -1
  130. package/dist/components/builder/v2/TriggerNode.d.ts +0 -10
  131. package/dist/components/builder/v2/TriggerNode.d.ts.map +0 -1
  132. package/dist/components/builder/v2/TriggerNode.js +0 -20
  133. package/dist/components/builder/v2/TriggerNode.js.map +0 -1
  134. package/dist/components/builder/v2/TriggerPicker.d.ts +0 -7
  135. package/dist/components/builder/v2/TriggerPicker.d.ts.map +0 -1
  136. package/dist/components/builder/v2/TriggerPicker.js +0 -45
  137. package/dist/components/builder/v2/TriggerPicker.js.map +0 -1
  138. package/dist/components/builder/v2/WorkflowBuilder.d.ts +0 -14
  139. package/dist/components/builder/v2/WorkflowBuilder.d.ts.map +0 -1
  140. package/dist/components/builder/v2/WorkflowBuilder.js +0 -189
  141. package/dist/components/builder/v2/WorkflowBuilder.js.map +0 -1
  142. package/dist/components/builder/v2/edge-types.d.ts +0 -3
  143. package/dist/components/builder/v2/edge-types.d.ts.map +0 -1
  144. package/dist/components/builder/v2/edge-types.js +0 -9
  145. package/dist/components/builder/v2/edge-types.js.map +0 -1
  146. package/dist/components/builder/v2/icons.d.ts +0 -25
  147. package/dist/components/builder/v2/icons.d.ts.map +0 -1
  148. package/dist/components/builder/v2/icons.js +0 -43
  149. package/dist/components/builder/v2/icons.js.map +0 -1
  150. package/dist/components/builder/v2/layout-engine.d.ts +0 -76
  151. package/dist/components/builder/v2/layout-engine.d.ts.map +0 -1
  152. package/dist/components/builder/v2/layout-engine.js +0 -465
  153. package/dist/components/builder/v2/layout-engine.js.map +0 -1
  154. package/dist/components/builder/v2/node-types.d.ts +0 -3
  155. package/dist/components/builder/v2/node-types.d.ts.map +0 -1
  156. package/dist/components/builder/v2/node-types.js +0 -11
  157. package/dist/components/builder/v2/node-types.js.map +0 -1
  158. package/dist/components/builder/v2/theme.d.ts +0 -28
  159. package/dist/components/builder/v2/theme.d.ts.map +0 -1
  160. package/dist/components/builder/v2/theme.js +0 -63
  161. package/dist/components/builder/v2/theme.js.map +0 -1
  162. package/dist/components/dashboard/WorkflowSummaryEditor.d.ts +0 -11
  163. package/dist/components/dashboard/WorkflowSummaryEditor.d.ts.map +0 -1
  164. package/dist/components/dashboard/WorkflowSummaryEditor.js +0 -46
  165. package/dist/components/dashboard/WorkflowSummaryEditor.js.map +0 -1
  166. package/dist/components/execution/ExecutionEdge.d.ts +0 -4
  167. package/dist/components/execution/ExecutionEdge.d.ts.map +0 -1
  168. package/dist/components/execution/ExecutionEdge.js +0 -27
  169. package/dist/components/execution/ExecutionEdge.js.map +0 -1
  170. package/dist/components/execution/ExecutionStepNode.d.ts +0 -14
  171. package/dist/components/execution/ExecutionStepNode.d.ts.map +0 -1
  172. package/dist/components/execution/ExecutionStepNode.js +0 -47
  173. package/dist/components/execution/ExecutionStepNode.js.map +0 -1
  174. package/dist/components/execution/ExecutionTriggerNode.d.ts +0 -9
  175. package/dist/components/execution/ExecutionTriggerNode.d.ts.map +0 -1
  176. package/dist/components/execution/ExecutionTriggerNode.js +0 -15
  177. package/dist/components/execution/ExecutionTriggerNode.js.map +0 -1
  178. package/dist/components/execution/StepAgentPanels.d.ts +0 -9
  179. package/dist/components/execution/StepAgentPanels.d.ts.map +0 -1
  180. package/dist/components/execution/StepAgentPanels.js +0 -133
  181. package/dist/components/execution/StepAgentPanels.js.map +0 -1
  182. package/dist/components/execution/execution-layout.d.ts +0 -31
  183. package/dist/components/execution/execution-layout.d.ts.map +0 -1
  184. package/dist/components/execution/execution-layout.js +0 -90
  185. package/dist/components/execution/execution-layout.js.map +0 -1
  186. package/dist/components/shared/JsonTreeViewer.d.ts +0 -9
  187. package/dist/components/shared/JsonTreeViewer.d.ts.map +0 -1
  188. package/dist/components/shared/JsonTreeViewer.js +0 -46
  189. package/dist/components/shared/JsonTreeViewer.js.map +0 -1
@@ -1,465 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout-engine.js","sourceRoot":"","sources":["../../../../src/components/builder/v2/layout-engine.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { NodeTypes } from '@xyflow/react';
2
- export declare const v2NodeTypes: NodeTypes;
3
- //# sourceMappingURL=node-types.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,11 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,28 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,63 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,11 +0,0 @@
1
- export interface WorkflowSummaryEditorProps {
2
- workflowId: string;
3
- className?: string | undefined;
4
- }
5
- /**
6
- * Edits the workflow-level summary/readme — a first-class record column,
7
- * independent of the builder config. Reads via `workflows.get`, saves via
8
- * `workflows.update({ summary })`.
9
- */
10
- export declare function WorkflowSummaryEditor({ workflowId, className }: WorkflowSummaryEditorProps): import("react").JSX.Element;
11
- //# sourceMappingURL=WorkflowSummaryEditor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WorkflowSummaryEditor.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/WorkflowSummaryEditor.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,0BAA0B,+BAgE1F"}