diff --git a/src/store/execution/nanoBananaExecutor.ts b/src/store/execution/nanoBananaExecutor.ts index be1b0bea..29f6e29b 100644 --- a/src/store/execution/nanoBananaExecutor.ts +++ b/src/store/execution/nanoBananaExecutor.ts @@ -65,8 +65,9 @@ export async function executeNanoBanana( // Defensive: ensure promptText is actually a string at runtime // (Guards against corrupted node data or race conditions in parallel execution) if (promptText !== null && typeof promptText !== 'string') { - console.warn('[nanoBanana] promptText was not a string, coercing:', typeof promptText, Array.isArray(promptText) ? `` : ''); - promptText = Array.isArray(promptText) ? (promptText as string[])[0] ?? null : null; + const raw: unknown = promptText; + console.warn('[nanoBanana] promptText was not a string, coercing:', typeof raw, Array.isArray(raw) ? `` : ''); + promptText = Array.isArray(raw) ? (raw as string[])[0] ?? null : null; } if (!promptText) { diff --git a/src/store/workflowStore.ts b/src/store/workflowStore.ts index ed091d59..8df3f97e 100644 --- a/src/store/workflowStore.ts +++ b/src/store/workflowStore.ts @@ -533,39 +533,36 @@ export const useWorkflowStore = create((set, get) => ({ }, onConnect: (connection: Connection, edgeDataOverrides?: Record) => { - set((state) => ({ - edges: addEdge( - (() => { - const baseData = buildConnectionEdgeData(connection, state.nodes, state.edges); - return { - ...connection, - id: `edge-${connection.source}-${connection.target}-${connection.sourceHandle || "default"}-${connection.targetHandle || "default"}`, - data: edgeDataOverrides ? { ...baseData, ...edgeDataOverrides } : baseData, - }; - })(), - state.edges - ), - hasUnsavedChanges: true, - })); + set((state) => { + const baseData = buildConnectionEdgeData(connection, state.nodes, state.edges); + const newEdge = { + ...connection, + id: `edge-${connection.source}-${connection.target}-${connection.sourceHandle || "default"}-${connection.targetHandle || "default"}`, + data: edgeDataOverrides ? { ...baseData, ...edgeDataOverrides } : baseData, + }; + // Cast needed: React Flow's Edge types data as T | undefined, but addEdge expects data to be defined + return { + edges: addEdge(newEdge, state.edges as never) as WorkflowEdge[], + hasUnsavedChanges: true, + }; + }); get().incrementManualChangeCount(); }, addEdgeWithType: (connection: Connection, edgeType: string, edgeDataOverrides?: Record) => { - set((state) => ({ - edges: addEdge( - (() => { - const baseData = buildConnectionEdgeData(connection, state.nodes, state.edges); - return { - ...connection, - id: `edge-${connection.source}-${connection.target}-${connection.sourceHandle || "default"}-${connection.targetHandle || "default"}`, - type: edgeType, - data: edgeDataOverrides ? { ...baseData, ...edgeDataOverrides } : baseData, - }; - })(), - state.edges - ), - hasUnsavedChanges: true, - })); + set((state) => { + const baseData = buildConnectionEdgeData(connection, state.nodes, state.edges); + const newEdge = { + ...connection, + id: `edge-${connection.source}-${connection.target}-${connection.sourceHandle || "default"}-${connection.targetHandle || "default"}`, + type: edgeType, + data: edgeDataOverrides ? { ...baseData, ...edgeDataOverrides } : baseData, + }; + return { + edges: addEdge(newEdge, state.edges as never) as WorkflowEdge[], + hasUnsavedChanges: true, + }; + }); }, removeEdge: (edgeId: string) => {