@burdenoff/fluidgrids-fe-sdk 2026.510.105

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 (68) hide show
  1. package/README.md +149 -0
  2. package/dist/ExecutionDetailPage-3EVS3WEC.js +6 -0
  3. package/dist/ExecutionDetailPage-3EVS3WEC.js.map +1 -0
  4. package/dist/ExecutionsListPage-NH2JLL2D.js +8 -0
  5. package/dist/ExecutionsListPage-NH2JLL2D.js.map +1 -0
  6. package/dist/TemplateConfigurationModal-UJAGRE7X.js +258 -0
  7. package/dist/TemplateConfigurationModal-UJAGRE7X.js.map +1 -0
  8. package/dist/TemplateDetailPanel-UXH6KPCH.js +172 -0
  9. package/dist/TemplateDetailPanel-UXH6KPCH.js.map +1 -0
  10. package/dist/WorkflowBuilder-BMKFLHVE.js +15 -0
  11. package/dist/WorkflowBuilder-BMKFLHVE.js.map +1 -0
  12. package/dist/WorkflowsList-CLI32VRE.js +8 -0
  13. package/dist/WorkflowsList-CLI32VRE.js.map +1 -0
  14. package/dist/chunk-4FFPGQD3.js +584 -0
  15. package/dist/chunk-4FFPGQD3.js.map +1 -0
  16. package/dist/chunk-5BDQNSP3.js +107 -0
  17. package/dist/chunk-5BDQNSP3.js.map +1 -0
  18. package/dist/chunk-6PHBYAEG.js +11494 -0
  19. package/dist/chunk-6PHBYAEG.js.map +1 -0
  20. package/dist/chunk-BQXHJIER.js +45 -0
  21. package/dist/chunk-BQXHJIER.js.map +1 -0
  22. package/dist/chunk-BXDSTMUA.js +8848 -0
  23. package/dist/chunk-BXDSTMUA.js.map +1 -0
  24. package/dist/chunk-CGKBAJMM.js +292 -0
  25. package/dist/chunk-CGKBAJMM.js.map +1 -0
  26. package/dist/chunk-FGYVIXQ7.js +979 -0
  27. package/dist/chunk-FGYVIXQ7.js.map +1 -0
  28. package/dist/chunk-G7B4SYFM.js +22 -0
  29. package/dist/chunk-G7B4SYFM.js.map +1 -0
  30. package/dist/chunk-GSJOLO3A.js +251 -0
  31. package/dist/chunk-GSJOLO3A.js.map +1 -0
  32. package/dist/chunk-GSS5PHRL.js +386 -0
  33. package/dist/chunk-GSS5PHRL.js.map +1 -0
  34. package/dist/chunk-GY66IQWN.js +524 -0
  35. package/dist/chunk-GY66IQWN.js.map +1 -0
  36. package/dist/chunk-LUGJJ7LL.js +297 -0
  37. package/dist/chunk-LUGJJ7LL.js.map +1 -0
  38. package/dist/chunk-NDJSUC4W.js +155 -0
  39. package/dist/chunk-NDJSUC4W.js.map +1 -0
  40. package/dist/chunk-UOCR65PI.js +262 -0
  41. package/dist/chunk-UOCR65PI.js.map +1 -0
  42. package/dist/chunk-WD52O45G.js +2015 -0
  43. package/dist/chunk-WD52O45G.js.map +1 -0
  44. package/dist/chunk-WWU2O2SR.js +52 -0
  45. package/dist/chunk-WWU2O2SR.js.map +1 -0
  46. package/dist/chunk-XQP33UJR.js +57 -0
  47. package/dist/chunk-XQP33UJR.js.map +1 -0
  48. package/dist/chunk-Z54K22LP.js +82 -0
  49. package/dist/chunk-Z54K22LP.js.map +1 -0
  50. package/dist/client-AMUUS7VE.js +3 -0
  51. package/dist/client-AMUUS7VE.js.map +1 -0
  52. package/dist/config-E4E7M6IN.js +3 -0
  53. package/dist/config-E4E7M6IN.js.map +1 -0
  54. package/dist/global-client-OW43ZRDR.js +3 -0
  55. package/dist/global-client-OW43ZRDR.js.map +1 -0
  56. package/dist/global-operations-WPTEYCJM.js +3 -0
  57. package/dist/global-operations-WPTEYCJM.js.map +1 -0
  58. package/dist/index.d.ts +56706 -0
  59. package/dist/index.js +6564 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/styles.css +139 -0
  62. package/dist/template-input-applicator-657KE4DM.js +3 -0
  63. package/dist/template-input-applicator-657KE4DM.js.map +1 -0
  64. package/dist/useImportWorkflowTemplate-2HS5D2OP.js +11 -0
  65. package/dist/useImportWorkflowTemplate-2HS5D2OP.js.map +1 -0
  66. package/dist/useTemplateDetail-NK63V3PC.js +6 -0
  67. package/dist/useTemplateDetail-NK63V3PC.js.map +1 -0
  68. package/package.json +148 -0
@@ -0,0 +1,292 @@
1
+ import { nanoid } from 'nanoid/non-secure';
2
+ import { addEdge, applyEdgeChanges, applyNodeChanges } from '@xyflow/react';
3
+ import { create } from 'zustand';
4
+ import { produce } from 'immer';
5
+
6
+ var TAGS = [
7
+ { value: "marketing", label: "Marketing", color: "#ef4444" },
8
+ { value: "support", label: "Support", color: "#ef4444" },
9
+ { value: "lead", label: "Lead", color: "#eab308" },
10
+ { value: "new", label: "New", color: "#22c55e" }
11
+ ];
12
+ var useFlowStore = create()((set, get) => ({
13
+ tags: TAGS,
14
+ workflow: {
15
+ id: nanoid(),
16
+ workflowKey: "",
17
+ name: "",
18
+ version: "",
19
+ alias: "",
20
+ edges: [],
21
+ nodes: [],
22
+ sidebar: {
23
+ active: "none",
24
+ panels: {
25
+ nodeProperties: {
26
+ selectedNode: null
27
+ }
28
+ }
29
+ }
30
+ },
31
+ execution: {
32
+ isExecuting: false,
33
+ executingNodeId: null,
34
+ currentRunId: null,
35
+ logs: [],
36
+ selectedLogId: null,
37
+ panelExpanded: false,
38
+ nodeStatuses: {},
39
+ nodeItemCounts: {}
40
+ },
41
+ actions: {
42
+ saveWorkflow: () => {
43
+ const { workflow } = get();
44
+ const { id, name, version, alias, dbId, status, nodes, edges } = workflow;
45
+ set({ workflow });
46
+ return { id, name, version, alias, dbId, status, nodes, edges };
47
+ },
48
+ setWorkflow: (workflow) => {
49
+ set((state) => ({
50
+ workflow: {
51
+ ...state.workflow,
52
+ ...workflow
53
+ }
54
+ }));
55
+ },
56
+ resetWorkflow: () => {
57
+ set(() => ({
58
+ workflow: {
59
+ id: nanoid(),
60
+ workflowKey: "",
61
+ name: "",
62
+ version: "",
63
+ alias: "",
64
+ dbId: void 0,
65
+ status: void 0,
66
+ edges: [],
67
+ nodes: [],
68
+ sidebar: {
69
+ active: "none",
70
+ panels: {
71
+ nodeProperties: {
72
+ selectedNode: null
73
+ }
74
+ }
75
+ }
76
+ }
77
+ }));
78
+ },
79
+ sidebar: {
80
+ setActivePanel: (panel) => set((state) => ({
81
+ workflow: {
82
+ ...state.workflow,
83
+ sidebar: { ...state.workflow.sidebar, active: panel }
84
+ }
85
+ })),
86
+ showNodePropertiesOf: (node) => {
87
+ set((state) => ({
88
+ workflow: {
89
+ ...state.workflow,
90
+ sidebar: {
91
+ ...state.workflow.sidebar,
92
+ active: "node-properties",
93
+ panels: {
94
+ ...state.workflow.sidebar.panels,
95
+ nodeProperties: {
96
+ ...state.workflow.sidebar.panels.nodeProperties,
97
+ selectedNode: node
98
+ }
99
+ }
100
+ }
101
+ }
102
+ }));
103
+ },
104
+ panels: {
105
+ nodeProperties: {
106
+ setSelectedNode: (node) => set((state) => ({
107
+ workflow: {
108
+ ...state.workflow,
109
+ sidebar: {
110
+ ...state.workflow.sidebar,
111
+ panels: {
112
+ ...state.workflow.sidebar.panels,
113
+ nodeProperties: {
114
+ ...state.workflow.sidebar.panels.nodeProperties,
115
+ selectedNode: node
116
+ }
117
+ }
118
+ }
119
+ }
120
+ }))
121
+ },
122
+ tags: {
123
+ setTags: (tags) => set({ tags }),
124
+ createTag: (tag) => set((state) => ({
125
+ tags: [...state.tags, tag]
126
+ })),
127
+ updateTag: (tag, newTag) => set((state) => ({
128
+ tags: state.tags.map((f) => f.value === tag.value ? newTag : f)
129
+ })),
130
+ deleteTag: (tag) => set((state) => ({
131
+ tags: state.tags.filter((f) => f.value !== tag.value)
132
+ }))
133
+ }
134
+ }
135
+ },
136
+ nodes: {
137
+ onNodesChange: (changes) => {
138
+ set(
139
+ (state) => produce(state, (draft) => {
140
+ const updatedNodes = applyNodeChanges(
141
+ changes,
142
+ draft.workflow.nodes
143
+ );
144
+ draft.workflow.nodes = updatedNodes;
145
+ })
146
+ );
147
+ },
148
+ setNodes: (nodes) => {
149
+ set({ workflow: { ...get().workflow, nodes } });
150
+ },
151
+ deleteNode: (node) => {
152
+ set((state) => ({
153
+ workflow: {
154
+ ...state.workflow,
155
+ nodes: state.workflow.nodes.filter((n) => n.id !== node.id)
156
+ }
157
+ }));
158
+ }
159
+ },
160
+ edges: {
161
+ onEdgesChange: (changes) => {
162
+ set(
163
+ (state) => produce(state, (draft) => {
164
+ const updatedEdges = applyEdgeChanges(
165
+ changes,
166
+ draft.workflow.edges
167
+ );
168
+ draft.workflow.edges = updatedEdges;
169
+ })
170
+ );
171
+ },
172
+ onConnect: (connection) => {
173
+ const edge = { ...connection, id: nanoid(), type: "deletable" };
174
+ set({
175
+ workflow: {
176
+ ...get().workflow,
177
+ edges: addEdge(edge, get().workflow.edges)
178
+ }
179
+ });
180
+ },
181
+ setEdges: (edges) => {
182
+ set({ workflow: { ...get().workflow, edges } });
183
+ },
184
+ deleteEdge: (edge) => {
185
+ set((state) => ({
186
+ workflow: {
187
+ ...state.workflow,
188
+ edges: state.workflow.edges.filter((e) => e.id !== edge.id)
189
+ }
190
+ }));
191
+ }
192
+ },
193
+ execution: {
194
+ startExecution: (nodeId, runId) => {
195
+ set((state) => ({
196
+ execution: {
197
+ ...state.execution,
198
+ isExecuting: true,
199
+ executingNodeId: nodeId,
200
+ currentRunId: runId,
201
+ panelExpanded: true,
202
+ nodeStatuses: {
203
+ ...state.execution.nodeStatuses,
204
+ [nodeId]: "running"
205
+ }
206
+ }
207
+ }));
208
+ },
209
+ addLog: (log) => {
210
+ set((state) => ({
211
+ execution: {
212
+ ...state.execution,
213
+ logs: [...state.execution.logs, log],
214
+ selectedLogId: log.id
215
+ }
216
+ }));
217
+ },
218
+ updateLog: (logId, updates) => {
219
+ set((state) => ({
220
+ execution: {
221
+ ...state.execution,
222
+ logs: state.execution.logs.map(
223
+ (log) => log.id === logId ? { ...log, ...updates } : log
224
+ )
225
+ }
226
+ }));
227
+ },
228
+ setNodeStatus: (nodeId, status) => {
229
+ set((state) => ({
230
+ execution: {
231
+ ...state.execution,
232
+ nodeStatuses: {
233
+ ...state.execution.nodeStatuses,
234
+ [nodeId]: status
235
+ }
236
+ }
237
+ }));
238
+ },
239
+ setNodeItemCount: (nodeId, count) => {
240
+ set((state) => ({
241
+ execution: {
242
+ ...state.execution,
243
+ nodeItemCounts: {
244
+ ...state.execution.nodeItemCounts,
245
+ [nodeId]: count
246
+ }
247
+ }
248
+ }));
249
+ },
250
+ selectLog: (logId) => {
251
+ set((state) => ({
252
+ execution: {
253
+ ...state.execution,
254
+ selectedLogId: logId
255
+ }
256
+ }));
257
+ },
258
+ togglePanel: () => {
259
+ set((state) => ({
260
+ execution: {
261
+ ...state.execution,
262
+ panelExpanded: !state.execution.panelExpanded
263
+ }
264
+ }));
265
+ },
266
+ clearLogs: () => {
267
+ set((state) => ({
268
+ execution: {
269
+ ...state.execution,
270
+ logs: [],
271
+ selectedLogId: null,
272
+ nodeStatuses: {},
273
+ nodeItemCounts: {}
274
+ }
275
+ }));
276
+ },
277
+ completeExecution: () => {
278
+ set((state) => ({
279
+ execution: {
280
+ ...state.execution,
281
+ isExecuting: false,
282
+ executingNodeId: null
283
+ }
284
+ }));
285
+ }
286
+ }
287
+ }
288
+ }));
289
+
290
+ export { useFlowStore };
291
+ //# sourceMappingURL=chunk-CGKBAJMM.js.map
292
+ //# sourceMappingURL=chunk-CGKBAJMM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/builder/stores/flow-store.ts"],"names":[],"mappings":"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","file":"chunk-CGKBAJMM.js","sourcesContent":["import { nanoid } from \"nanoid/non-secure\";\nimport {\n addEdge,\n applyEdgeChanges,\n applyNodeChanges,\n type Connection,\n type Edge,\n type EdgeChange,\n type Node,\n type NodeChange,\n} from \"@xyflow/react\";\nimport { create } from \"zustand\";\nimport { produce } from \"immer\";\nimport type {\n ExtendedNodeType,\n FlowNode,\n FlowEdge,\n EdgeCondition,\n EdgeMapping,\n} from \"../../types/node\";\nimport type { Tag } from \"../../types/workflow\";\nimport type { ExecutionLog } from \"../../types/execution\";\n\n// Node execution state for visual display\nexport interface NodeExecutionState {\n status: \"idle\" | \"running\" | \"success\" | \"error\";\n itemCount?: number;\n error?: string;\n}\n\n// Execution state for step execution feature\ninterface ExecutionState {\n isExecuting: boolean;\n executingNodeId: string | null;\n currentRunId: string | null;\n logs: ExecutionLog[];\n selectedLogId: string | null;\n panelExpanded: boolean;\n nodeStatuses: Record<string, \"idle\" | \"running\" | \"success\" | \"error\">;\n nodeItemCounts: Record<string, number>;\n}\n\ninterface CustomEdgeProps extends Edge {\n condition?: EdgeCondition;\n mapping?: EdgeMapping;\n}\n\ninterface State {\n nodes: Node[];\n edges: CustomEdgeProps[];\n sidebar: {\n active: \"node-properties\" | \"available-nodes\" | \"none\";\n panels: {\n nodeProperties: {\n selectedNode: { id: string; type: ExtendedNodeType } | null | undefined;\n };\n };\n };\n}\n\ninterface Actions {\n actions: {\n saveWorkflow: () => {\n id: string;\n name: string;\n version: string;\n alias?: string;\n dbId?: string;\n status?: string;\n nodes: Node[];\n edges: Edge[];\n };\n setWorkflow: (workflow: Partial<IFlowState[\"workflow\"]>) => void;\n resetWorkflow: () => void;\n nodes: {\n onNodesChange: (changes: NodeChange[]) => void;\n setNodes: (nodes: Node[]) => void;\n deleteNode: (node: Node) => void;\n };\n edges: {\n onEdgesChange: (changes: EdgeChange[]) => void;\n onConnect: (connection: Connection) => void;\n setEdges: (edges: Edge[]) => void;\n deleteEdge: (edge: Edge) => void;\n };\n sidebar: {\n setActivePanel: (\n panel: \"node-properties\" | \"available-nodes\" | \"none\",\n ) => void;\n showNodePropertiesOf: (node: {\n id: string;\n type: ExtendedNodeType;\n block?: string;\n }) => void;\n panels: {\n nodeProperties: {\n setSelectedNode: (\n node: { id: string; type: ExtendedNodeType } | undefined | null,\n ) => void;\n };\n tags: {\n setTags: (tags: Tag[]) => void;\n createTag: (tag: Tag) => void;\n deleteTag: (tag: Tag) => void;\n updateTag: (tag: Tag, newTag: Tag) => void;\n };\n };\n };\n };\n}\n\nexport interface IFlowState {\n tags: Tag[];\n workflow: {\n id: string;\n workflowKey: string;\n name: string;\n version: string;\n alias?: string;\n /** Database row ID (used for updateWorkflowDefinition) */\n dbId?: string;\n /** Current workflow status: DRAFT | ACTIVE | ARCHIVED | DEPRECATED */\n status?: string;\n } & State;\n execution: ExecutionState;\n actions: Actions[\"actions\"] & {\n execution: {\n startExecution: (nodeId: string, runId: string) => void;\n addLog: (log: ExecutionLog) => void;\n updateLog: (logId: string, updates: Partial<ExecutionLog>) => void;\n setNodeStatus: (\n nodeId: string,\n status: \"idle\" | \"running\" | \"success\" | \"error\",\n ) => void;\n setNodeItemCount: (nodeId: string, count: number) => void;\n selectLog: (logId: string | null) => void;\n togglePanel: () => void;\n clearLogs: () => void;\n completeExecution: () => void;\n };\n };\n}\n\nconst TAGS: Tag[] = [\n { value: \"marketing\", label: \"Marketing\", color: \"#ef4444\" },\n { value: \"support\", label: \"Support\", color: \"#ef4444\" },\n { value: \"lead\", label: \"Lead\", color: \"#eab308\" },\n { value: \"new\", label: \"New\", color: \"#22c55e\" },\n];\n\nexport const useFlowStore = create<IFlowState>()((set, get) => ({\n tags: TAGS,\n workflow: {\n id: nanoid(),\n workflowKey: \"\",\n name: \"\",\n version: \"\",\n alias: \"\",\n edges: [],\n nodes: [],\n sidebar: {\n active: \"none\",\n panels: {\n nodeProperties: {\n selectedNode: null,\n },\n },\n },\n },\n execution: {\n isExecuting: false,\n executingNodeId: null,\n currentRunId: null,\n logs: [],\n selectedLogId: null,\n panelExpanded: false,\n nodeStatuses: {},\n nodeItemCounts: {},\n },\n actions: {\n saveWorkflow: () => {\n const { workflow } = get();\n const { id, name, version, alias, dbId, status, nodes, edges } = workflow;\n set({ workflow });\n return { id, name, version, alias, dbId, status, nodes, edges };\n },\n setWorkflow: (workflow: Partial<IFlowState[\"workflow\"]>) => {\n set((state) => ({\n workflow: {\n ...state.workflow,\n ...workflow,\n },\n }));\n },\n resetWorkflow: () => {\n set(() => ({\n workflow: {\n id: nanoid(),\n workflowKey: \"\",\n name: \"\",\n version: \"\",\n alias: \"\",\n dbId: undefined,\n status: undefined,\n edges: [],\n nodes: [],\n sidebar: {\n active: \"none\",\n panels: {\n nodeProperties: {\n selectedNode: null,\n },\n },\n },\n },\n }));\n },\n sidebar: {\n setActivePanel: (panel: \"node-properties\" | \"available-nodes\" | \"none\") =>\n set((state) => ({\n workflow: {\n ...state.workflow,\n sidebar: { ...state.workflow.sidebar, active: panel },\n },\n })),\n showNodePropertiesOf: (node: { id: string; type: ExtendedNodeType }) => {\n set((state) => ({\n workflow: {\n ...state.workflow,\n sidebar: {\n ...state.workflow.sidebar,\n active: \"node-properties\",\n panels: {\n ...state.workflow.sidebar.panels,\n nodeProperties: {\n ...state.workflow.sidebar.panels.nodeProperties,\n selectedNode: node,\n },\n },\n },\n },\n }));\n },\n panels: {\n nodeProperties: {\n setSelectedNode: (\n node: { id: string; type: ExtendedNodeType } | undefined | null,\n ) =>\n set((state) => ({\n workflow: {\n ...state.workflow,\n sidebar: {\n ...state.workflow.sidebar,\n panels: {\n ...state.workflow.sidebar.panels,\n nodeProperties: {\n ...state.workflow.sidebar.panels.nodeProperties,\n selectedNode: node,\n },\n },\n },\n },\n })),\n },\n tags: {\n setTags: (tags: Tag[]) => set({ tags }),\n createTag: (tag: Tag) =>\n set((state) => ({\n tags: [...state.tags, tag],\n })),\n updateTag: (tag: Tag, newTag: Tag) =>\n set((state) => ({\n tags: state.tags.map((f) => (f.value === tag.value ? newTag : f)),\n })),\n deleteTag: (tag: Tag) =>\n set((state) => ({\n tags: state.tags.filter((f) => f.value !== tag.value),\n })),\n },\n },\n },\n nodes: {\n onNodesChange: (changes) => {\n set((state) =>\n produce(state, (draft) => {\n const updatedNodes = applyNodeChanges(\n changes,\n draft.workflow.nodes,\n );\n draft.workflow.nodes = updatedNodes;\n }),\n );\n },\n setNodes: (nodes) => {\n set({ workflow: { ...get().workflow, nodes } });\n },\n deleteNode: (node: Node) => {\n set((state) => ({\n workflow: {\n ...state.workflow,\n nodes: state.workflow.nodes.filter((n) => n.id !== node.id),\n },\n }));\n },\n },\n edges: {\n onEdgesChange: (changes) => {\n set((state) =>\n produce(state, (draft) => {\n const updatedEdges = applyEdgeChanges(\n changes,\n draft.workflow.edges,\n );\n draft.workflow.edges = updatedEdges;\n }),\n );\n },\n onConnect: (connection) => {\n const edge = { ...connection, id: nanoid(), type: \"deletable\" } as Edge;\n set({\n workflow: {\n ...get().workflow,\n edges: addEdge(edge, get().workflow.edges),\n },\n });\n },\n setEdges: (edges) => {\n set({ workflow: { ...get().workflow, edges } });\n },\n deleteEdge: (edge: Edge) => {\n set((state) => ({\n workflow: {\n ...state.workflow,\n edges: state.workflow.edges.filter((e) => e.id !== edge.id),\n },\n }));\n },\n },\n execution: {\n startExecution: (nodeId: string, runId: string) => {\n set((state) => ({\n execution: {\n ...state.execution,\n isExecuting: true,\n executingNodeId: nodeId,\n currentRunId: runId,\n panelExpanded: true,\n nodeStatuses: {\n ...state.execution.nodeStatuses,\n [nodeId]: \"running\",\n },\n },\n }));\n },\n addLog: (log: ExecutionLog) => {\n set((state) => ({\n execution: {\n ...state.execution,\n logs: [...state.execution.logs, log],\n selectedLogId: log.id,\n },\n }));\n },\n updateLog: (logId: string, updates: Partial<ExecutionLog>) => {\n set((state) => ({\n execution: {\n ...state.execution,\n logs: state.execution.logs.map((log) =>\n log.id === logId ? { ...log, ...updates } : log,\n ),\n },\n }));\n },\n setNodeStatus: (\n nodeId: string,\n status: \"idle\" | \"running\" | \"success\" | \"error\",\n ) => {\n set((state) => ({\n execution: {\n ...state.execution,\n nodeStatuses: {\n ...state.execution.nodeStatuses,\n [nodeId]: status,\n },\n },\n }));\n },\n setNodeItemCount: (nodeId: string, count: number) => {\n set((state) => ({\n execution: {\n ...state.execution,\n nodeItemCounts: {\n ...state.execution.nodeItemCounts,\n [nodeId]: count,\n },\n },\n }));\n },\n selectLog: (logId: string | null) => {\n set((state) => ({\n execution: {\n ...state.execution,\n selectedLogId: logId,\n },\n }));\n },\n togglePanel: () => {\n set((state) => ({\n execution: {\n ...state.execution,\n panelExpanded: !state.execution.panelExpanded,\n },\n }));\n },\n clearLogs: () => {\n set((state) => ({\n execution: {\n ...state.execution,\n logs: [],\n selectedLogId: null,\n nodeStatuses: {},\n nodeItemCounts: {},\n },\n }));\n },\n completeExecution: () => {\n set((state) => ({\n execution: {\n ...state.execution,\n isExecuting: false,\n executingNodeId: null,\n },\n }));\n },\n },\n },\n}));\n"]}