From 2081645cfa754f6d5ca0a1a5323b3b4b40c40196 Mon Sep 17 00:00:00 2001 From: czlonkowski Date: Sun, 8 Mar 2026 08:10:04 +0100 Subject: [PATCH] feat(validator): detect IF/Switch/Filter conditional branch fan-out misuse Add CONDITIONAL_BRANCH_FANOUT warning when conditional nodes have all connections on main[0] with higher outputs empty, indicating both branches execute together instead of being split by condition. Extract getShortNodeType() and getConditionalOutputInfo() helpers to deduplicate conditional node detection logic. Conceived by Romuald Czlonkowski - https://www.aiadvisors.pl/en Co-Authored-By: Claude Opus 4.6 --- CHANGELOG.md | 17 ++ dist/services/workflow-validator.d.ts | 5 + dist/services/workflow-validator.d.ts.map | 2 +- dist/services/workflow-validator.js | 109 ++++++++- dist/services/workflow-validator.js.map | 2 +- package-lock.json | 4 +- package.json | 2 +- src/services/workflow-validator.ts | 159 +++++++++++-- .../workflow-validator-ai-subnode.test.ts | 217 ++++++++++++++++++ .../workflow-validator-connections.test.ts | 200 ++++++++++++++++ 10 files changed, 688 insertions(+), 29 deletions(-) create mode 100644 tests/unit/services/workflow-validator-ai-subnode.test.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ddcd2b..268891f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [2.36.1] - 2026-03-08 + +### Added + +- **Conditional branch fan-out detection** (`CONDITIONAL_BRANCH_FANOUT`): Warns when IF, Filter, or Switch nodes have all connections crammed into `main[0]` with higher-index outputs empty, which usually means all target nodes execute together on one branch while other branches have no effect + - Detects IF nodes with both true/false targets on `main[0]` + - Detects Filter nodes with both matched/unmatched targets on `main[0]` + - Detects Switch nodes with all targets on output 0 and other outputs unused + - Skips warning when fan-out is legitimate (higher outputs also have connections) + - Skips warning for single connections (intentional true-only/matched-only usage) + +### Changed + +- **Refactored output index validation**: Extracted `getShortNodeType()` and `getConditionalOutputInfo()` helpers to eliminate duplicated conditional node detection logic between `validateOutputIndexBounds` and the new `validateConditionalBranchUsage` + +Conceived by Romuald Czlonkowski - https://www.aiadvisors.pl/en + ## [2.36.0] - 2026-03-07 ### Added diff --git a/dist/services/workflow-validator.d.ts b/dist/services/workflow-validator.d.ts index c91cda8..403dd26 100644 --- a/dist/services/workflow-validator.d.ts +++ b/dist/services/workflow-validator.d.ts @@ -85,7 +85,12 @@ export declare class WorkflowValidator { private validateErrorOutputConfiguration; private validateAIToolConnection; private validateAIToolSource; + private getNodeOutputTypes; + private validateNotAISubNode; + private getShortNodeType; + private getConditionalOutputInfo; private validateOutputIndexBounds; + private validateConditionalBranchUsage; private validateInputIndexBounds; private flagOrphanedNodes; private validateTriggerReachability; diff --git a/dist/services/workflow-validator.d.ts.map b/dist/services/workflow-validator.d.ts.map index 19955f3..ce5aae4 100644 --- a/dist/services/workflow-validator.d.ts.map +++ b/dist/services/workflow-validator.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"workflow-validator.d.ts","sourceRoot":"","sources":["../../src/services/workflow-validator.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"workflow-validator.d.ts","sourceRoot":"","sources":["../../src/services/workflow-validator.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/services/workflow-validator.js b/dist/services/workflow-validator.js index a0b00d2..500e824 100644 --- a/dist/services/workflow-validator.js +++ b/dist/services/workflow-validator.js @@ -422,6 +422,9 @@ class WorkflowValidator { if (outputKey === 'ai_tool') { this.validateAIToolSource(sourceNode, result); } + if (outputKey === 'main') { + this.validateNotAISubNode(sourceNode, result); + } this.validateConnectionOutputs(sourceName, outputConnections, nodeMap, nodeIdMap, result, outputKey); } } @@ -443,6 +446,7 @@ class WorkflowValidator { if (outputType === 'main' && sourceNode) { this.validateErrorOutputConfiguration(sourceName, sourceNode, outputs, nodeMap, result); this.validateOutputIndexBounds(sourceNode, outputs, result); + this.validateConditionalBranchUsage(sourceNode, outputs, result); } outputs.forEach((outputConnections, outputIndex) => { if (!outputConnections) @@ -644,6 +648,57 @@ class WorkflowValidator { code: 'INVALID_AI_TOOL_SOURCE' }); } + getNodeOutputTypes(nodeType) { + const normalizedType = node_type_normalizer_1.NodeTypeNormalizer.normalizeToFullForm(nodeType); + const nodeInfo = this.nodeRepository.getNode(normalizedType); + if (!nodeInfo || !nodeInfo.outputs) + return null; + const outputs = nodeInfo.outputs; + if (!Array.isArray(outputs)) + return null; + for (const output of outputs) { + if (typeof output === 'string' && output.startsWith('={{')) { + return null; + } + } + return outputs; + } + validateNotAISubNode(sourceNode, result) { + const outputTypes = this.getNodeOutputTypes(sourceNode.type); + if (!outputTypes) + return; + const hasMainOutput = outputTypes.some(t => t === 'main'); + if (hasMainOutput) + return; + const aiTypes = outputTypes.filter(t => t !== 'main'); + const expectedType = aiTypes[0] || 'ai_languageModel'; + result.errors.push({ + type: 'error', + nodeId: sourceNode.id, + nodeName: sourceNode.name, + message: `Node "${sourceNode.name}" (${sourceNode.type}) is an AI sub-node that outputs "${expectedType}" connections. ` + + `It cannot be used with "main" connections. Connect it to an AI Agent or Chain via "${expectedType}" instead.`, + code: 'AI_SUBNODE_MAIN_CONNECTION' + }); + } + getShortNodeType(sourceNode) { + const normalizedType = node_type_normalizer_1.NodeTypeNormalizer.normalizeToFullForm(sourceNode.type); + return normalizedType.replace(/^(n8n-)?nodes-base\./, ''); + } + getConditionalOutputInfo(sourceNode) { + const shortType = this.getShortNodeType(sourceNode); + if (shortType === 'if' || shortType === 'filter') { + return { shortType, expectedOutputs: 2 }; + } + if (shortType === 'switch') { + const rules = sourceNode.parameters?.rules?.values || sourceNode.parameters?.rules; + if (Array.isArray(rules)) { + return { shortType, expectedOutputs: rules.length + 1 }; + } + return null; + } + return null; + } validateOutputIndexBounds(sourceNode, outputs, result) { const normalizedType = node_type_normalizer_1.NodeTypeNormalizer.normalizeToFullForm(sourceNode.type); const nodeInfo = this.nodeRepository.getNode(normalizedType); @@ -658,18 +713,12 @@ class WorkflowValidator { } if (mainOutputCount === 0) return; - const shortType = normalizedType.replace(/^(n8n-)?nodes-base\./, ''); - if (shortType === 'switch') { - const rules = sourceNode.parameters?.rules?.values || sourceNode.parameters?.rules; - if (Array.isArray(rules)) { - mainOutputCount = rules.length + 1; - } - else { - return; - } + const conditionalInfo = this.getConditionalOutputInfo(sourceNode); + if (conditionalInfo) { + mainOutputCount = conditionalInfo.expectedOutputs; } - if (shortType === 'if' || shortType === 'filter') { - mainOutputCount = 2; + else if (this.getShortNodeType(sourceNode) === 'switch') { + return; } if (sourceNode.onError === 'continueErrorOutput') { mainOutputCount += 1; @@ -691,6 +740,44 @@ class WorkflowValidator { } } } + validateConditionalBranchUsage(sourceNode, outputs, result) { + const conditionalInfo = this.getConditionalOutputInfo(sourceNode); + if (!conditionalInfo || conditionalInfo.expectedOutputs < 2) + return; + const { shortType, expectedOutputs } = conditionalInfo; + const main0Count = outputs[0]?.length || 0; + if (main0Count < 2) + return; + const hasHigherIndexConnections = outputs.slice(1).some(conns => conns && conns.length > 0); + if (hasHigherIndexConnections) + return; + let message; + if (shortType === 'if' || shortType === 'filter') { + const isFilter = shortType === 'filter'; + const displayName = isFilter ? 'Filter' : 'IF'; + const trueLabel = isFilter ? 'matched' : 'true'; + const falseLabel = isFilter ? 'unmatched' : 'false'; + message = `${displayName} node "${sourceNode.name}" has ${main0Count} connections on the "${trueLabel}" branch (main[0]) ` + + `but no connections on the "${falseLabel}" branch (main[1]). ` + + `All ${main0Count} target nodes execute together on the "${trueLabel}" branch, ` + + `while the "${falseLabel}" branch has no effect. ` + + `Split connections: main[0] for ${trueLabel}, main[1] for ${falseLabel}.`; + } + else { + message = `Switch node "${sourceNode.name}" has ${main0Count} connections on output 0 ` + + `but no connections on any other outputs (1-${expectedOutputs - 1}). ` + + `All ${main0Count} target nodes execute together on output 0, ` + + `while other switch branches have no effect. ` + + `Distribute connections across outputs to match switch rules.`; + } + result.warnings.push({ + type: 'warning', + nodeId: sourceNode.id, + nodeName: sourceNode.name, + message, + code: 'CONDITIONAL_BRANCH_FANOUT' + }); + } validateInputIndexBounds(sourceName, targetNode, connection, result) { const normalizedType = node_type_normalizer_1.NodeTypeNormalizer.normalizeToFullForm(targetNode.type); const nodeInfo = this.nodeRepository.getNode(normalizedType); diff --git a/dist/services/workflow-validator.js.map b/dist/services/workflow-validator.js.map index 17f54bf..f2be689 100644 --- a/dist/services/workflow-validator.js.map +++ b/dist/services/workflow-validator.js.map @@ -1 +1 @@ -{"version":3,"file":"workflow-validator.js","sourceRoot":"","sources":["../../src/services/workflow-validator.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"workflow-validator.js","sourceRoot":"","sources":["../../src/services/workflow-validator.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 0bb587c..6c5575c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "n8n-mcp", - "version": "2.35.6", + "version": "2.36.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "n8n-mcp", - "version": "2.35.6", + "version": "2.36.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "1.20.1", diff --git a/package.json b/package.json index 1564966..db248fa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "n8n-mcp", - "version": "2.36.0", + "version": "2.36.1", "description": "Integration between n8n workflow automation and Model Context Protocol (MCP)", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/src/services/workflow-validator.ts b/src/services/workflow-validator.ts index bd17938..9b6d740 100644 --- a/src/services/workflow-validator.ts +++ b/src/services/workflow-validator.ts @@ -650,6 +650,11 @@ export class WorkflowValidator { this.validateAIToolSource(sourceNode, result); } + // Validate that AI sub-nodes are not connected via main + if (outputKey === 'main') { + this.validateNotAISubNode(sourceNode, result); + } + this.validateConnectionOutputs( sourceName, outputConnections, @@ -695,6 +700,7 @@ export class WorkflowValidator { if (outputType === 'main' && sourceNode) { this.validateErrorOutputConfiguration(sourceName, sourceNode, outputs, nodeMap, result); this.validateOutputIndexBounds(sourceNode, outputs, result); + this.validateConditionalBranchUsage(sourceNode, outputs, result); } outputs.forEach((outputConnections, outputIndex) => { @@ -987,6 +993,85 @@ export class WorkflowValidator { }); } + /** + * Get the static output types for a node from the database. + * Returns null if outputs contain expressions (dynamic) or node not found. + */ + private getNodeOutputTypes(nodeType: string): string[] | null { + const normalizedType = NodeTypeNormalizer.normalizeToFullForm(nodeType); + const nodeInfo = this.nodeRepository.getNode(normalizedType); + if (!nodeInfo || !nodeInfo.outputs) return null; + + const outputs = nodeInfo.outputs; + if (!Array.isArray(outputs)) return null; + + // Skip if any output is an expression (dynamic — can't determine statically) + for (const output of outputs) { + if (typeof output === 'string' && output.startsWith('={{')) { + return null; + } + } + + return outputs; + } + + /** + * Validate that AI sub-nodes (nodes that only output AI connection types) + * are not connected via "main" connections. + */ + private validateNotAISubNode( + sourceNode: WorkflowNode, + result: WorkflowValidationResult + ): void { + const outputTypes = this.getNodeOutputTypes(sourceNode.type); + if (!outputTypes) return; // Unknown or dynamic — skip + + // Check if the node outputs ONLY AI types (no 'main') + const hasMainOutput = outputTypes.some(t => t === 'main'); + if (hasMainOutput) return; // Node can legitimately output main + + // All outputs are AI types — this node should not be connected via main + const aiTypes = outputTypes.filter(t => t !== 'main'); + const expectedType = aiTypes[0] || 'ai_languageModel'; + + result.errors.push({ + type: 'error', + nodeId: sourceNode.id, + nodeName: sourceNode.name, + message: `Node "${sourceNode.name}" (${sourceNode.type}) is an AI sub-node that outputs "${expectedType}" connections. ` + + `It cannot be used with "main" connections. Connect it to an AI Agent or Chain via "${expectedType}" instead.`, + code: 'AI_SUBNODE_MAIN_CONNECTION' + }); + } + + /** + * Derive the short node type name (e.g., "if", "switch", "set") from a workflow node. + */ + private getShortNodeType(sourceNode: WorkflowNode): string { + const normalizedType = NodeTypeNormalizer.normalizeToFullForm(sourceNode.type); + return normalizedType.replace(/^(n8n-)?nodes-base\./, ''); + } + + /** + * Get the expected main output count for a conditional node (IF, Filter, Switch). + * Returns null for non-conditional nodes or when the count cannot be determined. + */ + private getConditionalOutputInfo(sourceNode: WorkflowNode): { shortType: string; expectedOutputs: number } | null { + const shortType = this.getShortNodeType(sourceNode); + + if (shortType === 'if' || shortType === 'filter') { + return { shortType, expectedOutputs: 2 }; + } + if (shortType === 'switch') { + const rules = sourceNode.parameters?.rules?.values || sourceNode.parameters?.rules; + if (Array.isArray(rules)) { + return { shortType, expectedOutputs: rules.length + 1 }; // rules + fallback + } + return null; // Cannot determine dynamic output count + } + return null; + } + /** * Validate that output indices don't exceed what the node type supports. */ @@ -1012,19 +1097,13 @@ export class WorkflowValidator { if (mainOutputCount === 0) return; - // Account for dynamic output counts based on node type and parameters - const shortType = normalizedType.replace(/^(n8n-)?nodes-base\./, ''); - if (shortType === 'switch') { - // Switch node: output count depends on rules configuration - const rules = sourceNode.parameters?.rules?.values || sourceNode.parameters?.rules; - if (Array.isArray(rules)) { - mainOutputCount = rules.length + 1; // rules + fallback - } else { - return; // Cannot determine dynamic output count, skip bounds check - } - } - if (shortType === 'if' || shortType === 'filter') { - mainOutputCount = 2; // true/false + // Override with dynamic output counts for conditional nodes + const conditionalInfo = this.getConditionalOutputInfo(sourceNode); + if (conditionalInfo) { + mainOutputCount = conditionalInfo.expectedOutputs; + } else if (this.getShortNodeType(sourceNode) === 'switch') { + // Switch without determinable rules -- skip bounds check + return; } // Account for continueErrorOutput adding an extra output @@ -1052,6 +1131,60 @@ export class WorkflowValidator { } } + /** + * Detect when a conditional node (IF, Filter, Switch) has all connections + * crammed into main[0] with higher-index outputs empty. This usually means + * both branches execute together on one condition, while the other branches + * have no effect. + */ + private validateConditionalBranchUsage( + sourceNode: WorkflowNode, + outputs: Array>, + result: WorkflowValidationResult + ): void { + const conditionalInfo = this.getConditionalOutputInfo(sourceNode); + if (!conditionalInfo || conditionalInfo.expectedOutputs < 2) return; + + const { shortType, expectedOutputs } = conditionalInfo; + + // Check: main[0] has >= 2 connections AND all main[1+] are empty + const main0Count = outputs[0]?.length || 0; + if (main0Count < 2) return; + + const hasHigherIndexConnections = outputs.slice(1).some( + conns => conns && conns.length > 0 + ); + if (hasHigherIndexConnections) return; + + // Build a context-appropriate warning message + let message: string; + if (shortType === 'if' || shortType === 'filter') { + const isFilter = shortType === 'filter'; + const displayName = isFilter ? 'Filter' : 'IF'; + const trueLabel = isFilter ? 'matched' : 'true'; + const falseLabel = isFilter ? 'unmatched' : 'false'; + message = `${displayName} node "${sourceNode.name}" has ${main0Count} connections on the "${trueLabel}" branch (main[0]) ` + + `but no connections on the "${falseLabel}" branch (main[1]). ` + + `All ${main0Count} target nodes execute together on the "${trueLabel}" branch, ` + + `while the "${falseLabel}" branch has no effect. ` + + `Split connections: main[0] for ${trueLabel}, main[1] for ${falseLabel}.`; + } else { + message = `Switch node "${sourceNode.name}" has ${main0Count} connections on output 0 ` + + `but no connections on any other outputs (1-${expectedOutputs - 1}). ` + + `All ${main0Count} target nodes execute together on output 0, ` + + `while other switch branches have no effect. ` + + `Distribute connections across outputs to match switch rules.`; + } + + result.warnings.push({ + type: 'warning', + nodeId: sourceNode.id, + nodeName: sourceNode.name, + message, + code: 'CONDITIONAL_BRANCH_FANOUT' + }); + } + /** * Validate that input index doesn't exceed what the target node accepts. */ diff --git a/tests/unit/services/workflow-validator-ai-subnode.test.ts b/tests/unit/services/workflow-validator-ai-subnode.test.ts new file mode 100644 index 0000000..75547ac --- /dev/null +++ b/tests/unit/services/workflow-validator-ai-subnode.test.ts @@ -0,0 +1,217 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { WorkflowValidator } from '@/services/workflow-validator'; +import { NodeRepository } from '@/database/node-repository'; +import { EnhancedConfigValidator } from '@/services/enhanced-config-validator'; + +// Mock dependencies +vi.mock('@/database/node-repository'); +vi.mock('@/services/enhanced-config-validator'); +vi.mock('@/services/expression-validator'); +vi.mock('@/utils/logger'); + +describe('WorkflowValidator - AI Sub-Node Main Connection Detection', () => { + let validator: WorkflowValidator; + let mockNodeRepository: NodeRepository; + + beforeEach(() => { + vi.clearAllMocks(); + + mockNodeRepository = new NodeRepository({} as any) as any; + + if (!mockNodeRepository.getAllNodes) { + mockNodeRepository.getAllNodes = vi.fn(); + } + if (!mockNodeRepository.getNode) { + mockNodeRepository.getNode = vi.fn(); + } + + const nodeTypes: Record = { + 'nodes-base.manualTrigger': { + type: 'nodes-base.manualTrigger', + displayName: 'Manual Trigger', + package: 'n8n-nodes-base', + isTrigger: true, + outputs: ['main'], + properties: [], + }, + 'nodes-base.set': { + type: 'nodes-base.set', + displayName: 'Set', + package: 'n8n-nodes-base', + outputs: ['main'], + properties: [], + }, + 'nodes-langchain.lmChatGoogleGemini': { + type: 'nodes-langchain.lmChatGoogleGemini', + displayName: 'Google Gemini Chat Model', + package: '@n8n/n8n-nodes-langchain', + outputs: ['ai_languageModel'], + properties: [], + }, + 'nodes-langchain.memoryBufferWindow': { + type: 'nodes-langchain.memoryBufferWindow', + displayName: 'Window Buffer Memory', + package: '@n8n/n8n-nodes-langchain', + outputs: ['ai_memory'], + properties: [], + }, + 'nodes-langchain.embeddingsOpenAi': { + type: 'nodes-langchain.embeddingsOpenAi', + displayName: 'Embeddings OpenAI', + package: '@n8n/n8n-nodes-langchain', + outputs: ['ai_embedding'], + properties: [], + }, + 'nodes-langchain.agent': { + type: 'nodes-langchain.agent', + displayName: 'AI Agent', + package: '@n8n/n8n-nodes-langchain', + isAITool: true, + outputs: ['main'], + properties: [], + }, + 'nodes-langchain.openAi': { + type: 'nodes-langchain.openAi', + displayName: 'OpenAI', + package: '@n8n/n8n-nodes-langchain', + outputs: ['main'], + properties: [], + }, + 'nodes-langchain.textClassifier': { + type: 'nodes-langchain.textClassifier', + displayName: 'Text Classifier', + package: '@n8n/n8n-nodes-langchain', + outputs: ['={{}}'], // Dynamic expression-based outputs + properties: [], + }, + 'nodes-langchain.vectorStoreInMemory': { + type: 'nodes-langchain.vectorStoreInMemory', + displayName: 'In-Memory Vector Store', + package: '@n8n/n8n-nodes-langchain', + outputs: ['={{$parameter["mode"] === "retrieve" ? "main" : "ai_vectorStore"}}'], + properties: [], + }, + }; + + vi.mocked(mockNodeRepository.getNode).mockImplementation((nodeType: string) => { + return nodeTypes[nodeType] || null; + }); + vi.mocked(mockNodeRepository.getAllNodes).mockReturnValue(Object.values(nodeTypes)); + + validator = new WorkflowValidator( + mockNodeRepository, + EnhancedConfigValidator as any + ); + }); + + function makeWorkflow(sourceType: string, sourceName: string, connectionKey: string = 'main') { + return { + nodes: [ + { id: '1', name: 'Manual Trigger', type: 'n8n-nodes-base.manualTrigger', position: [0, 0], parameters: {} }, + { id: '2', name: sourceName, type: sourceType, position: [200, 0], parameters: {} }, + { id: '3', name: 'Set', type: 'n8n-nodes-base.set', position: [400, 0], parameters: {} }, + ], + connections: { + 'Manual Trigger': { + main: [[{ node: sourceName, type: 'main', index: 0 }]] + }, + [sourceName]: { + [connectionKey]: [[{ node: 'Set', type: connectionKey, index: 0 }]] + } + } + }; + } + + it('should flag LLM node (lmChatGoogleGemini) connected via main', async () => { + const workflow = makeWorkflow( + 'n8n-nodes-langchain.lmChatGoogleGemini', + 'Google Gemini' + ); + + const result = await validator.validateWorkflow(workflow as any); + + const error = result.errors.find(e => e.code === 'AI_SUBNODE_MAIN_CONNECTION'); + expect(error).toBeDefined(); + expect(error!.message).toContain('ai_languageModel'); + expect(error!.message).toContain('AI sub-node'); + expect(error!.nodeName).toBe('Google Gemini'); + }); + + it('should flag memory node (memoryBufferWindow) connected via main', async () => { + const workflow = makeWorkflow( + 'n8n-nodes-langchain.memoryBufferWindow', + 'Window Buffer Memory' + ); + + const result = await validator.validateWorkflow(workflow as any); + + const error = result.errors.find(e => e.code === 'AI_SUBNODE_MAIN_CONNECTION'); + expect(error).toBeDefined(); + expect(error!.message).toContain('ai_memory'); + }); + + it('should flag embeddings node connected via main', async () => { + const workflow = makeWorkflow( + 'n8n-nodes-langchain.embeddingsOpenAi', + 'Embeddings OpenAI' + ); + + const result = await validator.validateWorkflow(workflow as any); + + const error = result.errors.find(e => e.code === 'AI_SUBNODE_MAIN_CONNECTION'); + expect(error).toBeDefined(); + expect(error!.message).toContain('ai_embedding'); + }); + + it('should NOT flag regular langchain nodes (agent, openAi) connected via main', async () => { + const workflow1 = makeWorkflow('n8n-nodes-langchain.agent', 'AI Agent'); + const workflow2 = makeWorkflow('n8n-nodes-langchain.openAi', 'OpenAI'); + + const result1 = await validator.validateWorkflow(workflow1 as any); + const result2 = await validator.validateWorkflow(workflow2 as any); + + expect(result1.errors.find(e => e.code === 'AI_SUBNODE_MAIN_CONNECTION')).toBeUndefined(); + expect(result2.errors.find(e => e.code === 'AI_SUBNODE_MAIN_CONNECTION')).toBeUndefined(); + }); + + it('should NOT flag dynamic-output nodes (expression-based outputs)', async () => { + const workflow1 = makeWorkflow('n8n-nodes-langchain.textClassifier', 'Text Classifier'); + const workflow2 = makeWorkflow('n8n-nodes-langchain.vectorStoreInMemory', 'Vector Store'); + + const result1 = await validator.validateWorkflow(workflow1 as any); + const result2 = await validator.validateWorkflow(workflow2 as any); + + expect(result1.errors.find(e => e.code === 'AI_SUBNODE_MAIN_CONNECTION')).toBeUndefined(); + expect(result2.errors.find(e => e.code === 'AI_SUBNODE_MAIN_CONNECTION')).toBeUndefined(); + }); + + it('should NOT flag AI sub-node connected via correct AI type', async () => { + const workflow = { + nodes: [ + { id: '1', name: 'Manual Trigger', type: 'n8n-nodes-base.manualTrigger', position: [0, 0], parameters: {} }, + { id: '2', name: 'AI Agent', type: 'n8n-nodes-langchain.agent', position: [200, 0], parameters: {} }, + { id: '3', name: 'Google Gemini', type: 'n8n-nodes-langchain.lmChatGoogleGemini', position: [200, 200], parameters: {} }, + ], + connections: { + 'Manual Trigger': { + main: [[{ node: 'AI Agent', type: 'main', index: 0 }]] + }, + 'Google Gemini': { + ai_languageModel: [[{ node: 'AI Agent', type: 'ai_languageModel', index: 0 }]] + } + } + }; + + const result = await validator.validateWorkflow(workflow as any); + + expect(result.errors.find(e => e.code === 'AI_SUBNODE_MAIN_CONNECTION')).toBeUndefined(); + }); + + it('should NOT flag unknown/community nodes not in database', async () => { + const workflow = makeWorkflow('n8n-nodes-community.someNode', 'Community Node'); + + const result = await validator.validateWorkflow(workflow as any); + + expect(result.errors.find(e => e.code === 'AI_SUBNODE_MAIN_CONNECTION')).toBeUndefined(); + }); +}); diff --git a/tests/unit/services/workflow-validator-connections.test.ts b/tests/unit/services/workflow-validator-connections.test.ts index d935fcc..411e55e 100644 --- a/tests/unit/services/workflow-validator-connections.test.ts +++ b/tests/unit/services/workflow-validator-connections.test.ts @@ -63,6 +63,20 @@ describe('WorkflowValidator - Connection Validation (#620)', () => { outputs: ['main', 'main'], properties: [], }, + 'nodes-base.filter': { + type: 'nodes-base.filter', + displayName: 'Filter', + package: 'n8n-nodes-base', + outputs: ['main', 'main'], + properties: [], + }, + 'nodes-base.switch': { + type: 'nodes-base.switch', + displayName: 'Switch', + package: 'n8n-nodes-base', + outputs: ['main', 'main', 'main', 'main'], + properties: [], + }, 'nodes-base.googleSheets': { type: 'nodes-base.googleSheets', displayName: 'Google Sheets', @@ -715,4 +729,190 @@ describe('WorkflowValidator - Connection Validation (#620)', () => { expect(orphanWarning!.message).toContain('not connected to any other nodes'); }); }); + + describe('Conditional branch fan-out detection (CONDITIONAL_BRANCH_FANOUT)', () => { + it('should warn when IF node has both branches in main[0]', async () => { + const workflow = { + nodes: [ + { id: '1', name: 'Trigger', type: 'n8n-nodes-base.manualTrigger', position: [0, 0], parameters: {} }, + { id: '2', name: 'Route', type: 'n8n-nodes-base.if', position: [200, 0], parameters: {} }, + { id: '3', name: 'TrueTarget', type: 'n8n-nodes-base.set', position: [400, 0], parameters: {} }, + { id: '4', name: 'FalseTarget', type: 'n8n-nodes-base.set', position: [400, 200], parameters: {} }, + ], + connections: { + 'Trigger': { main: [[{ node: 'Route', type: 'main', index: 0 }]] }, + 'Route': { + main: [[{ node: 'TrueTarget', type: 'main', index: 0 }, { node: 'FalseTarget', type: 'main', index: 0 }]] + } + } + }; + + const result = await validator.validateWorkflow(workflow as any); + const warning = result.warnings.find(w => w.code === 'CONDITIONAL_BRANCH_FANOUT'); + expect(warning).toBeDefined(); + expect(warning!.nodeName).toBe('Route'); + expect(warning!.message).toContain('2 connections on the "true" branch'); + expect(warning!.message).toContain('"false" branch has no effect'); + }); + + it('should not warn when IF node has correct true/false split', async () => { + const workflow = { + nodes: [ + { id: '1', name: 'Trigger', type: 'n8n-nodes-base.manualTrigger', position: [0, 0], parameters: {} }, + { id: '2', name: 'Route', type: 'n8n-nodes-base.if', position: [200, 0], parameters: {} }, + { id: '3', name: 'TrueTarget', type: 'n8n-nodes-base.set', position: [400, 0], parameters: {} }, + { id: '4', name: 'FalseTarget', type: 'n8n-nodes-base.set', position: [400, 200], parameters: {} }, + ], + connections: { + 'Trigger': { main: [[{ node: 'Route', type: 'main', index: 0 }]] }, + 'Route': { + main: [ + [{ node: 'TrueTarget', type: 'main', index: 0 }], + [{ node: 'FalseTarget', type: 'main', index: 0 }] + ] + } + } + }; + + const result = await validator.validateWorkflow(workflow as any); + const warning = result.warnings.find(w => w.code === 'CONDITIONAL_BRANCH_FANOUT'); + expect(warning).toBeUndefined(); + }); + + it('should not warn when IF has fan-out on main[0] AND connections on main[1]', async () => { + const workflow = { + nodes: [ + { id: '1', name: 'Trigger', type: 'n8n-nodes-base.manualTrigger', position: [0, 0], parameters: {} }, + { id: '2', name: 'Route', type: 'n8n-nodes-base.if', position: [200, 0], parameters: {} }, + { id: '3', name: 'TrueA', type: 'n8n-nodes-base.set', position: [400, 0], parameters: {} }, + { id: '4', name: 'TrueB', type: 'n8n-nodes-base.set', position: [400, 100], parameters: {} }, + { id: '5', name: 'FalseTarget', type: 'n8n-nodes-base.set', position: [400, 200], parameters: {} }, + ], + connections: { + 'Trigger': { main: [[{ node: 'Route', type: 'main', index: 0 }]] }, + 'Route': { + main: [ + [{ node: 'TrueA', type: 'main', index: 0 }, { node: 'TrueB', type: 'main', index: 0 }], + [{ node: 'FalseTarget', type: 'main', index: 0 }] + ] + } + } + }; + + const result = await validator.validateWorkflow(workflow as any); + const warning = result.warnings.find(w => w.code === 'CONDITIONAL_BRANCH_FANOUT'); + expect(warning).toBeUndefined(); + }); + + it('should warn when Switch node has all connections on main[0]', async () => { + const workflow = { + nodes: [ + { id: '1', name: 'Trigger', type: 'n8n-nodes-base.manualTrigger', position: [0, 0], parameters: {} }, + { id: '2', name: 'MySwitch', type: 'n8n-nodes-base.switch', position: [200, 0], parameters: { rules: { values: [{ value: 'a' }, { value: 'b' }] } } }, + { id: '3', name: 'TargetA', type: 'n8n-nodes-base.set', position: [400, 0], parameters: {} }, + { id: '4', name: 'TargetB', type: 'n8n-nodes-base.set', position: [400, 200], parameters: {} }, + { id: '5', name: 'TargetC', type: 'n8n-nodes-base.set', position: [400, 400], parameters: {} }, + ], + connections: { + 'Trigger': { main: [[{ node: 'MySwitch', type: 'main', index: 0 }]] }, + 'MySwitch': { + main: [[{ node: 'TargetA', type: 'main', index: 0 }, { node: 'TargetB', type: 'main', index: 0 }, { node: 'TargetC', type: 'main', index: 0 }]] + } + } + }; + + const result = await validator.validateWorkflow(workflow as any); + const warning = result.warnings.find(w => w.code === 'CONDITIONAL_BRANCH_FANOUT'); + expect(warning).toBeDefined(); + expect(warning!.nodeName).toBe('MySwitch'); + expect(warning!.message).toContain('3 connections on output 0'); + expect(warning!.message).toContain('other switch branches have no effect'); + }); + + it('should not warn when Switch node has no rules parameter (indeterminate outputs)', async () => { + const workflow = { + nodes: [ + { id: '1', name: 'Trigger', type: 'n8n-nodes-base.manualTrigger', position: [0, 0], parameters: {} }, + { id: '2', name: 'MySwitch', type: 'n8n-nodes-base.switch', position: [200, 0], parameters: {} }, + { id: '3', name: 'TargetA', type: 'n8n-nodes-base.set', position: [400, 0], parameters: {} }, + { id: '4', name: 'TargetB', type: 'n8n-nodes-base.set', position: [400, 200], parameters: {} }, + ], + connections: { + 'Trigger': { main: [[{ node: 'MySwitch', type: 'main', index: 0 }]] }, + 'MySwitch': { + main: [[{ node: 'TargetA', type: 'main', index: 0 }, { node: 'TargetB', type: 'main', index: 0 }]] + } + } + }; + + const result = await validator.validateWorkflow(workflow as any); + const warning = result.warnings.find(w => w.code === 'CONDITIONAL_BRANCH_FANOUT'); + expect(warning).toBeUndefined(); + }); + + it('should not warn when regular node has fan-out on main[0]', async () => { + const workflow = { + nodes: [ + { id: '1', name: 'Trigger', type: 'n8n-nodes-base.manualTrigger', position: [0, 0], parameters: {} }, + { id: '2', name: 'MySet', type: 'n8n-nodes-base.set', position: [200, 0], parameters: {} }, + { id: '3', name: 'TargetA', type: 'n8n-nodes-base.set', position: [400, 0], parameters: {} }, + { id: '4', name: 'TargetB', type: 'n8n-nodes-base.set', position: [400, 200], parameters: {} }, + ], + connections: { + 'Trigger': { main: [[{ node: 'MySet', type: 'main', index: 0 }]] }, + 'MySet': { + main: [[{ node: 'TargetA', type: 'main', index: 0 }, { node: 'TargetB', type: 'main', index: 0 }]] + } + } + }; + + const result = await validator.validateWorkflow(workflow as any); + const warning = result.warnings.find(w => w.code === 'CONDITIONAL_BRANCH_FANOUT'); + expect(warning).toBeUndefined(); + }); + + it('should not warn when IF has only 1 connection on main[0] with empty main[1]', async () => { + const workflow = { + nodes: [ + { id: '1', name: 'Trigger', type: 'n8n-nodes-base.manualTrigger', position: [0, 0], parameters: {} }, + { id: '2', name: 'Route', type: 'n8n-nodes-base.if', position: [200, 0], parameters: {} }, + { id: '3', name: 'TrueOnly', type: 'n8n-nodes-base.set', position: [400, 0], parameters: {} }, + ], + connections: { + 'Trigger': { main: [[{ node: 'Route', type: 'main', index: 0 }]] }, + 'Route': { + main: [[{ node: 'TrueOnly', type: 'main', index: 0 }]] + } + } + }; + + const result = await validator.validateWorkflow(workflow as any); + const warning = result.warnings.find(w => w.code === 'CONDITIONAL_BRANCH_FANOUT'); + expect(warning).toBeUndefined(); + }); + + it('should warn for Filter node with both branches in main[0]', async () => { + const workflow = { + nodes: [ + { id: '1', name: 'Trigger', type: 'n8n-nodes-base.manualTrigger', position: [0, 0], parameters: {} }, + { id: '2', name: 'MyFilter', type: 'n8n-nodes-base.filter', position: [200, 0], parameters: {} }, + { id: '3', name: 'Matched', type: 'n8n-nodes-base.set', position: [400, 0], parameters: {} }, + { id: '4', name: 'Unmatched', type: 'n8n-nodes-base.set', position: [400, 200], parameters: {} }, + ], + connections: { + 'Trigger': { main: [[{ node: 'MyFilter', type: 'main', index: 0 }]] }, + 'MyFilter': { + main: [[{ node: 'Matched', type: 'main', index: 0 }, { node: 'Unmatched', type: 'main', index: 0 }]] + } + } + }; + + const result = await validator.validateWorkflow(workflow as any); + const warning = result.warnings.find(w => w.code === 'CONDITIONAL_BRANCH_FANOUT'); + expect(warning).toBeDefined(); + expect(warning!.nodeName).toBe('MyFilter'); + expect(warning!.message).toContain('"matched" branch'); + expect(warning!.message).toContain('"unmatched" branch has no effect'); + }); + }); });