Browse Source

refactor: remove skippedNodeIds from store, extract resetSkippedNodes helper

skippedNodeIds was in the Zustand store interface but never read by any
component — it was only used as a local variable during executeWorkflow.
Removed the store field/initial state/set() calls, keeping only the local
variable.

Also extracted the duplicate 5-line skip-reset block (success + error paths)
into a resetSkippedNodes() helper inside executeWorkflow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
handoff-20260429-1057
shrimbly 4 months ago
parent
commit
1ceec53e64
  1. 42
      src/store/workflowStore.ts

42
src/store/workflowStore.ts

@ -373,9 +373,6 @@ interface WorkflowStore {
// Switch dimming state // Switch dimming state
dimmedNodeIds: Set<string>; dimmedNodeIds: Set<string>;
// Skip propagation state (optional empty inputs)
skippedNodeIds: Set<string>;
// Switch dimming actions // Switch dimming actions
recomputeDimmedNodes: () => void; recomputeDimmedNodes: () => void;
@ -510,9 +507,6 @@ const workflowStoreImpl: StateCreator<WorkflowStore> = (set, get) => ({
// Switch dimming initial state // Switch dimming initial state
dimmedNodeIds: new Set<string>(), dimmedNodeIds: new Set<string>(),
// Skip propagation initial state
skippedNodeIds: new Set<string>(),
setEdgeStyle: (style: EdgeStyle) => { setEdgeStyle: (style: EdgeStyle) => {
set({ edgeStyle: style }); set({ edgeStyle: style });
}, },
@ -1005,7 +999,15 @@ const workflowStoreImpl: StateCreator<WorkflowStore> = (set, get) => ({
const abortController = new AbortController(); const abortController = new AbortController();
const isResuming = startFromNodeId === get().pausedAtNodeId; const isResuming = startFromNodeId === get().pausedAtNodeId;
const skippedNodeIds = new Set<string>(); const skippedNodeIds = new Set<string>();
set({ isRunning: true, pausedAtNodeId: null, currentNodeIds: [], skippedNodeIds: new Set(), _abortController: abortController }); const resetSkippedNodes = () => {
for (const skippedId of skippedNodeIds) {
const skippedNode = get().nodes.find((n) => n.id === skippedId);
if (skippedNode && (skippedNode.data as Record<string, unknown>).status !== undefined) {
get().updateNodeData(skippedId, { status: "idle" } as Partial<WorkflowNodeData>);
}
}
};
set({ isRunning: true, pausedAtNodeId: null, currentNodeIds: [], _abortController: abortController });
// Start logging session // Start logging session
await logger.startSession(); await logger.startSession();
@ -1087,7 +1089,6 @@ const workflowStoreImpl: StateCreator<WorkflowStore> = (set, get) => ({
(node.type === "prompt" && !(nodeData.prompt as string)?.trim()); (node.type === "prompt" && !(nodeData.prompt as string)?.trim());
if (isEmpty) { if (isEmpty) {
skippedNodeIds.add(node.id); skippedNodeIds.add(node.id);
set({ skippedNodeIds: new Set(skippedNodeIds) });
logger.info('node.execution', 'Node skipped (optional input empty)', { logger.info('node.execution', 'Node skipped (optional input empty)', {
nodeId: node.id, nodeId: node.id,
nodeType: node.type, nodeType: node.type,
@ -1101,7 +1102,6 @@ const workflowStoreImpl: StateCreator<WorkflowStore> = (set, get) => ({
const hasSkippedSource = incomingEdgesForSkip.some((e) => skippedNodeIds.has(e.source)); const hasSkippedSource = incomingEdgesForSkip.some((e) => skippedNodeIds.has(e.source));
if (hasSkippedSource) { if (hasSkippedSource) {
skippedNodeIds.add(node.id); skippedNodeIds.add(node.id);
set({ skippedNodeIds: new Set(skippedNodeIds) });
if (nodeData.status !== undefined) { if (nodeData.status !== undefined) {
get().updateNodeData(node.id, { status: "skipped" } as Partial<WorkflowNodeData>); get().updateNodeData(node.id, { status: "skipped" } as Partial<WorkflowNodeData>);
} }
@ -1255,15 +1255,9 @@ const workflowStoreImpl: StateCreator<WorkflowStore> = (set, get) => ({
logger.info('workflow.end', 'Workflow execution completed successfully'); logger.info('workflow.end', 'Workflow execution completed successfully');
} }
// Reset skipped nodes' status back to idle resetSkippedNodes();
for (const skippedId of skippedNodeIds) {
const skippedNode = get().nodes.find((n) => n.id === skippedId);
if (skippedNode && (skippedNode.data as Record<string, unknown>).status !== undefined) {
get().updateNodeData(skippedId, { status: "idle" } as Partial<WorkflowNodeData>);
}
}
set({ isRunning: false, currentNodeIds: [], skippedNodeIds: new Set(), _abortController: null }); set({ isRunning: false, currentNodeIds: [], _abortController: null });
saveLogSession(); saveLogSession();
await logger.endSession(); await logger.endSession();
@ -1279,14 +1273,8 @@ const workflowStoreImpl: StateCreator<WorkflowStore> = (set, get) => ({
"error" "error"
); );
} }
// Reset skipped nodes' status back to idle resetSkippedNodes();
for (const skippedId of skippedNodeIds) { set({ isRunning: false, currentNodeIds: [], _abortController: null });
const skippedNode = get().nodes.find((n) => n.id === skippedId);
if (skippedNode && (skippedNode.data as Record<string, unknown>).status !== undefined) {
get().updateNodeData(skippedId, { status: "idle" } as Partial<WorkflowNodeData>);
}
}
set({ isRunning: false, currentNodeIds: [], skippedNodeIds: new Set(), _abortController: null });
saveLogSession(); saveLogSession();
await logger.endSession(); await logger.endSession();
@ -1299,7 +1287,7 @@ const workflowStoreImpl: StateCreator<WorkflowStore> = (set, get) => ({
if (controller) { if (controller) {
controller.abort("user-cancelled"); controller.abort("user-cancelled");
} }
set({ isRunning: false, currentNodeIds: [], skippedNodeIds: new Set(), _abortController: null }); set({ isRunning: false, currentNodeIds: [], _abortController: null });
}, },
setMaxConcurrentCalls: (value: number) => { setMaxConcurrentCalls: (value: number) => {
@ -1834,8 +1822,6 @@ const workflowStoreImpl: StateCreator<WorkflowStore> = (set, get) => ({
viewedCommentNodeIds: new Set<string>(), viewedCommentNodeIds: new Set<string>(),
// Reset dimmed nodes // Reset dimmed nodes
dimmedNodeIds: new Set<string>(), dimmedNodeIds: new Set<string>(),
// Reset skipped nodes
skippedNodeIds: new Set<string>(),
}); });
get().clearSnapshot(); get().clearSnapshot();
}, },

Loading…
Cancel
Save