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

Loading…
Cancel
Save