n8n-mcp 2.15.5 → 2.16.0

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.
@@ -5,11 +5,14 @@ exports.n8nUpdatePartialWorkflowDoc = {
5
5
  name: 'n8n_update_partial_workflow',
6
6
  category: 'workflow_management',
7
7
  essentials: {
8
- description: 'Update workflow incrementally with diff operations. Types: addNode, removeNode, updateNode, moveNode, enable/disableNode, addConnection, removeConnection, cleanStaleConnections, replaceConnections, updateSettings, updateName, add/removeTag.',
8
+ description: 'Update workflow incrementally with diff operations. Types: addNode, removeNode, updateNode, moveNode, enable/disableNode, addConnection, removeConnection, rewireConnection, cleanStaleConnections, replaceConnections, updateSettings, updateName, add/removeTag. Supports smart parameters (branch, case) for multi-output nodes.',
9
9
  keyParameters: ['id', 'operations', 'continueOnError'],
10
- example: 'n8n_update_partial_workflow({id: "wf_123", operations: [{type: "cleanStaleConnections"}]})',
10
+ example: 'n8n_update_partial_workflow({id: "wf_123", operations: [{type: "rewireConnection", source: "IF", from: "Old", to: "New", branch: "true"}]})',
11
11
  performance: 'Fast (50-200ms)',
12
12
  tips: [
13
+ 'Use rewireConnection to change connection targets',
14
+ 'Use branch="true"/"false" for IF nodes',
15
+ 'Use case=N for Switch nodes',
13
16
  'Use cleanStaleConnections to auto-remove broken connections',
14
17
  'Set ignoreErrors:true on removeConnection for cleanup',
15
18
  'Use continueOnError mode for best-effort bulk operations',
@@ -17,7 +20,7 @@ exports.n8nUpdatePartialWorkflowDoc = {
17
20
  ]
18
21
  },
19
22
  full: {
20
- description: `Updates workflows using surgical diff operations instead of full replacement. Supports 15 operation types for precise modifications. Operations are validated and applied atomically by default - all succeed or none are applied. v2.14.4 adds cleanup operations and best-effort mode for workflow recovery scenarios.
23
+ description: `Updates workflows using surgical diff operations instead of full replacement. Supports 15 operation types for precise modifications. Operations are validated and applied atomically by default - all succeed or none are applied.
21
24
 
22
25
  ## Available Operations:
23
26
 
@@ -30,11 +33,11 @@ exports.n8nUpdatePartialWorkflowDoc = {
30
33
  - **disableNode**: Disable an active node
31
34
 
32
35
  ### Connection Operations (5 types):
33
- - **addConnection**: Connect nodes (source→target)
36
+ - **addConnection**: Connect nodes (source→target). Supports smart parameters: branch="true"/"false" for IF nodes, case=N for Switch nodes.
34
37
  - **removeConnection**: Remove connection between nodes (supports ignoreErrors flag)
35
- - **updateConnection**: Modify connection properties
36
- - **cleanStaleConnections**: Auto-remove all connections referencing non-existent nodes (NEW in v2.14.4)
37
- - **replaceConnections**: Replace entire connections object (NEW in v2.14.4)
38
+ - **rewireConnection**: Change connection target from one node to another. Supports smart parameters.
39
+ - **cleanStaleConnections**: Auto-remove all connections referencing non-existent nodes
40
+ - **replaceConnections**: Replace entire connections object
38
41
 
39
42
  ### Metadata Operations (4 types):
40
43
  - **updateSettings**: Modify workflow settings
@@ -42,7 +45,20 @@ exports.n8nUpdatePartialWorkflowDoc = {
42
45
  - **addTag**: Add a workflow tag
43
46
  - **removeTag**: Remove a workflow tag
44
47
 
45
- ## New in v2.14.4: Cleanup & Recovery Features
48
+ ## Smart Parameters for Multi-Output Nodes
49
+
50
+ For **IF nodes**, use semantic 'branch' parameter instead of technical sourceIndex:
51
+ - **branch="true"**: Routes to true branch (sourceIndex=0)
52
+ - **branch="false"**: Routes to false branch (sourceIndex=1)
53
+
54
+ For **Switch nodes**, use semantic 'case' parameter:
55
+ - **case=0**: First output
56
+ - **case=1**: Second output
57
+ - **case=N**: Nth output
58
+
59
+ Works with addConnection and rewireConnection operations. Explicit sourceIndex overrides smart parameters.
60
+
61
+ ## Cleanup & Recovery Features
46
62
 
47
63
  ### Automatic Cleanup
48
64
  The **cleanStaleConnections** operation automatically removes broken connection references after node renames/deletions. Essential for workflow recovery.
@@ -64,14 +80,24 @@ Add **ignoreErrors: true** to removeConnection operations to prevent failures wh
64
80
  },
65
81
  returns: 'Updated workflow object or validation results if validateOnly=true',
66
82
  examples: [
67
- '// Clean up stale connections after node renames/deletions\nn8n_update_partial_workflow({id: "abc", operations: [{type: "cleanStaleConnections"}]})',
68
- '// Remove connection gracefully (no error if it doesn\'t exist)\nn8n_update_partial_workflow({id: "xyz", operations: [{type: "removeConnection", source: "Old Node", target: "Target", ignoreErrors: true}]})',
69
- '// Best-effort mode: apply what works, report what fails\nn8n_update_partial_workflow({id: "123", operations: [\n {type: "updateName", name: "Fixed Workflow"},\n {type: "removeConnection", source: "Broken", target: "Node"},\n {type: "cleanStaleConnections"}\n], continueOnError: true})',
70
- '// Replace entire connections object\nn8n_update_partial_workflow({id: "456", operations: [{type: "replaceConnections", connections: {"Webhook": {"main": [[{node: "Slack", type: "main", index: 0}]]}}}]})',
71
- '// Update node parameter (classic atomic mode)\nn8n_update_partial_workflow({id: "789", operations: [{type: "updateNode", nodeName: "HTTP Request", updates: {"parameters.url": "https://api.example.com"}}]})',
72
- '// Validate before applying\nn8n_update_partial_workflow({id: "012", operations: [{type: "removeNode", nodeName: "Old Process"}], validateOnly: true})'
83
+ '// Add a basic node (minimal configuration)\nn8n_update_partial_workflow({id: "abc", operations: [{type: "addNode", node: {name: "Process Data", type: "n8n-nodes-base.set", position: [400, 300], parameters: {}}}]})',
84
+ '// Add node with full configuration\nn8n_update_partial_workflow({id: "def", operations: [{type: "addNode", node: {name: "Send Slack Alert", type: "n8n-nodes-base.slack", position: [600, 300], typeVersion: 2, parameters: {resource: "message", operation: "post", channel: "#alerts", text: "Success!"}}}]})',
85
+ '// Add node AND connect it (common pattern)\nn8n_update_partial_workflow({id: "ghi", operations: [\n {type: "addNode", node: {name: "HTTP Request", type: "n8n-nodes-base.httpRequest", position: [400, 300], parameters: {url: "https://api.example.com", method: "GET"}}},\n {type: "addConnection", source: "Webhook", target: "HTTP Request"}\n]})',
86
+ '// Rewire connection from one target to another\nn8n_update_partial_workflow({id: "xyz", operations: [{type: "rewireConnection", source: "Webhook", from: "Old Handler", to: "New Handler"}]})',
87
+ '// Smart parameter: IF node true branch\nn8n_update_partial_workflow({id: "abc", operations: [{type: "addConnection", source: "IF", target: "Success Handler", branch: "true"}]})',
88
+ '// Smart parameter: IF node false branch\nn8n_update_partial_workflow({id: "def", operations: [{type: "addConnection", source: "IF", target: "Error Handler", branch: "false"}]})',
89
+ '// Smart parameter: Switch node case routing\nn8n_update_partial_workflow({id: "ghi", operations: [\n {type: "addConnection", source: "Switch", target: "Handler A", case: 0},\n {type: "addConnection", source: "Switch", target: "Handler B", case: 1},\n {type: "addConnection", source: "Switch", target: "Handler C", case: 2}\n]})',
90
+ '// Rewire with smart parameter\nn8n_update_partial_workflow({id: "jkl", operations: [{type: "rewireConnection", source: "IF", from: "Old True Handler", to: "New True Handler", branch: "true"}]})',
91
+ '// Add multiple nodes in batch\nn8n_update_partial_workflow({id: "mno", operations: [\n {type: "addNode", node: {name: "Filter", type: "n8n-nodes-base.filter", position: [400, 300], parameters: {}}},\n {type: "addNode", node: {name: "Transform", type: "n8n-nodes-base.set", position: [600, 300], parameters: {}}},\n {type: "addConnection", source: "Filter", target: "Transform"}\n]})',
92
+ '// Clean up stale connections after node renames/deletions\nn8n_update_partial_workflow({id: "pqr", operations: [{type: "cleanStaleConnections"}]})',
93
+ '// Remove connection gracefully (no error if it doesn\'t exist)\nn8n_update_partial_workflow({id: "stu", operations: [{type: "removeConnection", source: "Old Node", target: "Target", ignoreErrors: true}]})',
94
+ '// Best-effort mode: apply what works, report what fails\nn8n_update_partial_workflow({id: "vwx", operations: [\n {type: "updateName", name: "Fixed Workflow"},\n {type: "removeConnection", source: "Broken", target: "Node"},\n {type: "cleanStaleConnections"}\n], continueOnError: true})',
95
+ '// Update node parameter\nn8n_update_partial_workflow({id: "yza", operations: [{type: "updateNode", nodeName: "HTTP Request", updates: {"parameters.url": "https://api.example.com"}}]})',
96
+ '// Validate before applying\nn8n_update_partial_workflow({id: "bcd", operations: [{type: "removeNode", nodeName: "Old Process"}], validateOnly: true})'
73
97
  ],
74
98
  useCases: [
99
+ 'Rewire connections when replacing nodes',
100
+ 'Route IF/Switch node outputs with semantic parameters',
75
101
  'Clean up broken workflows after node renames/deletions',
76
102
  'Bulk connection cleanup with best-effort mode',
77
103
  'Update single node parameters',
@@ -83,6 +109,9 @@ Add **ignoreErrors: true** to removeConnection operations to prevent failures wh
83
109
  ],
84
110
  performance: 'Very fast - typically 50-200ms. Much faster than full updates as only changes are processed.',
85
111
  bestPractices: [
112
+ 'Use rewireConnection instead of remove+add for changing targets',
113
+ 'Use branch="true"/"false" for IF nodes instead of sourceIndex',
114
+ 'Use case=N for Switch nodes instead of sourceIndex',
86
115
  'Use cleanStaleConnections after renaming/removing nodes',
87
116
  'Use continueOnError for bulk cleanup operations',
88
117
  'Set ignoreErrors:true on removeConnection for graceful cleanup',
@@ -97,7 +126,11 @@ Add **ignoreErrors: true** to removeConnection operations to prevent failures wh
97
126
  'continueOnError breaks atomic guarantees - use with caution',
98
127
  'Order matters for dependent operations (e.g., must add node before connecting to it)',
99
128
  'Node references accept ID or name, but name must be unique',
129
+ 'Node names with special characters (apostrophes, quotes) work correctly',
130
+ 'For best compatibility, prefer node IDs over names when dealing with special characters',
100
131
  'Use "updates" property for updateNode operations: {type: "updateNode", updates: {...}}',
132
+ 'Smart parameters (branch, case) only work with IF and Switch nodes - ignored for other node types',
133
+ 'Explicit sourceIndex overrides smart parameters (branch, case) if both provided',
101
134
  'cleanStaleConnections removes ALL broken connections - cannot be selective',
102
135
  'replaceConnections overwrites entire connections object - all previous connections lost'
103
136
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"n8n-update-partial-workflow.js","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.ts"],"names":[],"mappings":";;;AAEa,QAAA,2BAA2B,GAAsB;IAC5D,IAAI,EAAE,6BAA6B;IACnC,QAAQ,EAAE,qBAAqB;IAC/B,UAAU,EAAE;QACV,WAAW,EAAE,kPAAkP;QAC/P,aAAa,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,iBAAiB,CAAC;QACtD,OAAO,EAAE,4FAA4F;QACrG,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE;YACJ,6DAA6D;YAC7D,uDAAuD;YACvD,0DAA0D;YAC1D,kCAAkC;SACnC;KACF;IACD,IAAI,EAAE;QACJ,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4GAkC2F;QACxG,UAAU,EAAE;YACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,uBAAuB,EAAE;YAC5E,UAAU,EAAE;gBACV,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,iIAAiI;aAC/I;YACD,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,yDAAyD,EAAE;YACzG,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6IAA6I,EAAE;SACjM;QACD,OAAO,EAAE,oEAAoE;QAC7E,QAAQ,EAAE;YACR,qJAAqJ;YACrJ,+MAA+M;YAC/M,kSAAkS;YAClS,6MAA6M;YAC7M,gNAAgN;YAChN,wJAAwJ;SACzJ;QACD,QAAQ,EAAE;YACR,wDAAwD;YACxD,+CAA+C;YAC/C,+BAA+B;YAC/B,iCAAiC;YACjC,8CAA8C;YAC9C,sBAAsB;YACtB,2BAA2B;YAC3B,yBAAyB;SAC1B;QACD,WAAW,EAAE,8FAA8F;QAC3G,aAAa,EAAE;YACb,yDAAyD;YACzD,iDAAiD;YACjD,gEAAgE;YAChE,qDAAqD;YACrD,mCAAmC;YACnC,wCAAwC;YACxC,gDAAgD;SACjD;QACD,QAAQ,EAAE;YACR,uGAAuG;YACvG,wEAAwE;YACxE,6DAA6D;YAC7D,sFAAsF;YACtF,4DAA4D;YAC5D,wFAAwF;YACxF,4EAA4E;YAC5E,yFAAyF;SAC1F;QACD,YAAY,EAAE,CAAC,0BAA0B,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;KAC3G;CACF,CAAC"}
1
+ {"version":3,"file":"n8n-update-partial-workflow.js","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.ts"],"names":[],"mappings":";;;AAEa,QAAA,2BAA2B,GAAsB;IAC5D,IAAI,EAAE,6BAA6B;IACnC,QAAQ,EAAE,qBAAqB;IAC/B,UAAU,EAAE;QACV,WAAW,EAAE,qUAAqU;QAClV,aAAa,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,iBAAiB,CAAC;QACtD,OAAO,EAAE,6IAA6I;QACtJ,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE;YACJ,mDAAmD;YACnD,wCAAwC;YACxC,6BAA6B;YAC7B,6DAA6D;YAC7D,uDAAuD;YACvD,0DAA0D;YAC1D,kCAAkC;SACnC;KACF;IACD,IAAI,EAAE;QACJ,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4GA+C2F;QACxG,UAAU,EAAE;YACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,uBAAuB,EAAE;YAC5E,UAAU,EAAE;gBACV,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,iIAAiI;aAC/I;YACD,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,yDAAyD,EAAE;YACzG,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6IAA6I,EAAE;SACjM;QACD,OAAO,EAAE,oEAAoE;QAC7E,QAAQ,EAAE;YACR,wNAAwN;YACxN,kTAAkT;YAClT,0VAA0V;YAC1V,gMAAgM;YAChM,mLAAmL;YACnL,mLAAmL;YACnL,6UAA6U;YAC7U,oMAAoM;YACpM,oYAAoY;YACpY,qJAAqJ;YACrJ,+MAA+M;YAC/M,kSAAkS;YAClS,0LAA0L;YAC1L,wJAAwJ;SACzJ;QACD,QAAQ,EAAE;YACR,yCAAyC;YACzC,uDAAuD;YACvD,wDAAwD;YACxD,+CAA+C;YAC/C,+BAA+B;YAC/B,iCAAiC;YACjC,8CAA8C;YAC9C,sBAAsB;YACtB,2BAA2B;YAC3B,yBAAyB;SAC1B;QACD,WAAW,EAAE,8FAA8F;QAC3G,aAAa,EAAE;YACb,iEAAiE;YACjE,+DAA+D;YAC/D,oDAAoD;YACpD,yDAAyD;YACzD,iDAAiD;YACjD,gEAAgE;YAChE,qDAAqD;YACrD,mCAAmC;YACnC,wCAAwC;YACxC,gDAAgD;SACjD;QACD,QAAQ,EAAE;YACR,uGAAuG;YACvG,wEAAwE;YACxE,6DAA6D;YAC7D,sFAAsF;YACtF,4DAA4D;YAC5D,yEAAyE;YACzE,yFAAyF;YACzF,wFAAwF;YACxF,mGAAmG;YACnG,iFAAiF;YACjF,4EAA4E;YAC5E,yFAAyF;SAC1F;QACD,YAAY,EAAE,CAAC,0BAA0B,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;KAC3G;CACF,CAAC"}
@@ -11,16 +11,17 @@ export declare class WorkflowDiffEngine {
11
11
  private validateToggleNode;
12
12
  private validateAddConnection;
13
13
  private validateRemoveConnection;
14
- private validateUpdateConnection;
14
+ private validateRewireConnection;
15
15
  private applyAddNode;
16
16
  private applyRemoveNode;
17
17
  private applyUpdateNode;
18
18
  private applyMoveNode;
19
19
  private applyEnableNode;
20
20
  private applyDisableNode;
21
+ private resolveSmartParameters;
21
22
  private applyAddConnection;
22
23
  private applyRemoveConnection;
23
- private applyUpdateConnection;
24
+ private applyRewireConnection;
24
25
  private applyUpdateSettings;
25
26
  private applyUpdateName;
26
27
  private applyAddTag;
@@ -29,7 +30,9 @@ export declare class WorkflowDiffEngine {
29
30
  private validateReplaceConnections;
30
31
  private applyCleanStaleConnections;
31
32
  private applyReplaceConnections;
33
+ private normalizeNodeName;
32
34
  private findNode;
35
+ private formatNodeNotFoundError;
33
36
  private setNestedProperty;
34
37
  }
35
38
  //# sourceMappingURL=workflow-diff-engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-diff-engine.d.ts","sourceRoot":"","sources":["../../src/services/workflow-diff-engine.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,mBAAmB,EACnB,kBAAkB,EAoBnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAoC,MAAM,kBAAkB,CAAC;AAM9E,qBAAa,kBAAkB;IAIvB,SAAS,CACb,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC;IAqK9B,OAAO,CAAC,iBAAiB;IAoCzB,OAAO,CAAC,cAAc;IAmDtB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,qBAAqB;IA8C7B,OAAO,CAAC,wBAAwB;IAiChC,OAAO,CAAC,wBAAwB;IAmChC,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,kBAAkB;IA+B1B,OAAO,CAAC,qBAAqB;IAiC7B,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,6BAA6B;IAKrC,OAAO,CAAC,0BAA0B;IA0BlC,OAAO,CAAC,0BAA0B;IA0ElC,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,QAAQ;IAoBhB,OAAO,CAAC,iBAAiB;CAc1B"}
1
+ {"version":3,"file":"workflow-diff-engine.d.ts","sourceRoot":"","sources":["../../src/services/workflow-diff-engine.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,mBAAmB,EACnB,kBAAkB,EAoBnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAoC,MAAM,kBAAkB,CAAC;AAM9E,qBAAa,kBAAkB;IAIvB,SAAS,CACb,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC;IAqK9B,OAAO,CAAC,iBAAiB;IAoCzB,OAAO,CAAC,cAAc;IAmDtB,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,qBAAqB;IAkD7B,OAAO,CAAC,wBAAwB;IAuChC,OAAO,CAAC,wBAAwB;IAmDhC,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,qBAAqB;IA2C7B,OAAO,CAAC,qBAAqB;IA0B7B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,6BAA6B;IAKrC,OAAO,CAAC,0BAA0B;IA0BlC,OAAO,CAAC,0BAA0B;IA0ElC,OAAO,CAAC,uBAAuB;IA4B/B,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,QAAQ;IAsChB,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,iBAAiB;CAc1B"}
@@ -167,8 +167,8 @@ class WorkflowDiffEngine {
167
167
  return this.validateAddConnection(workflow, operation);
168
168
  case 'removeConnection':
169
169
  return this.validateRemoveConnection(workflow, operation);
170
- case 'updateConnection':
171
- return this.validateUpdateConnection(workflow, operation);
170
+ case 'rewireConnection':
171
+ return this.validateRewireConnection(workflow, operation);
172
172
  case 'updateSettings':
173
173
  case 'updateName':
174
174
  case 'addTag':
@@ -208,8 +208,8 @@ class WorkflowDiffEngine {
208
208
  case 'removeConnection':
209
209
  this.applyRemoveConnection(workflow, operation);
210
210
  break;
211
- case 'updateConnection':
212
- this.applyUpdateConnection(workflow, operation);
211
+ case 'rewireConnection':
212
+ this.applyRewireConnection(workflow, operation);
213
213
  break;
214
214
  case 'updateSettings':
215
215
  this.applyUpdateSettings(workflow, operation);
@@ -233,8 +233,10 @@ class WorkflowDiffEngine {
233
233
  }
234
234
  validateAddNode(workflow, operation) {
235
235
  const { node } = operation;
236
- if (workflow.nodes.some(n => n.name === node.name)) {
237
- return `Node with name "${node.name}" already exists`;
236
+ const normalizedNewName = this.normalizeNodeName(node.name);
237
+ const duplicate = workflow.nodes.find(n => this.normalizeNodeName(n.name) === normalizedNewName);
238
+ if (duplicate) {
239
+ return `Node with name "${node.name}" already exists (normalized name matches existing node "${duplicate.name}")`;
238
240
  }
239
241
  if (!node.type.includes('.')) {
240
242
  return `Invalid node type "${node.type}". Must include package prefix (e.g., "n8n-nodes-base.webhook")`;
@@ -247,7 +249,7 @@ class WorkflowDiffEngine {
247
249
  validateRemoveNode(workflow, operation) {
248
250
  const node = this.findNode(workflow, operation.nodeId, operation.nodeName);
249
251
  if (!node) {
250
- return `Node not found: ${operation.nodeId || operation.nodeName}`;
252
+ return this.formatNodeNotFoundError(workflow, operation.nodeId || operation.nodeName || '', 'removeNode');
251
253
  }
252
254
  const hasConnections = Object.values(workflow.connections).some(conn => {
253
255
  return Object.values(conn).some(outputs => outputs.some(connections => connections.some(c => c.node === node.name)));
@@ -260,21 +262,22 @@ class WorkflowDiffEngine {
260
262
  validateUpdateNode(workflow, operation) {
261
263
  const node = this.findNode(workflow, operation.nodeId, operation.nodeName);
262
264
  if (!node) {
263
- return `Node not found: ${operation.nodeId || operation.nodeName}`;
265
+ return this.formatNodeNotFoundError(workflow, operation.nodeId || operation.nodeName || '', 'updateNode');
264
266
  }
265
267
  return null;
266
268
  }
267
269
  validateMoveNode(workflow, operation) {
268
270
  const node = this.findNode(workflow, operation.nodeId, operation.nodeName);
269
271
  if (!node) {
270
- return `Node not found: ${operation.nodeId || operation.nodeName}`;
272
+ return this.formatNodeNotFoundError(workflow, operation.nodeId || operation.nodeName || '', 'moveNode');
271
273
  }
272
274
  return null;
273
275
  }
274
276
  validateToggleNode(workflow, operation) {
275
277
  const node = this.findNode(workflow, operation.nodeId, operation.nodeName);
276
278
  if (!node) {
277
- return `Node not found: ${operation.nodeId || operation.nodeName}`;
279
+ const operationType = operation.type === 'enableNode' ? 'enableNode' : 'disableNode';
280
+ return this.formatNodeNotFoundError(workflow, operation.nodeId || operation.nodeName || '', operationType);
278
281
  }
279
282
  return null;
280
283
  }
@@ -297,12 +300,16 @@ class WorkflowDiffEngine {
297
300
  const sourceNode = this.findNode(workflow, operation.source, operation.source);
298
301
  const targetNode = this.findNode(workflow, operation.target, operation.target);
299
302
  if (!sourceNode) {
300
- const availableNodes = workflow.nodes.map(n => n.name).join(', ');
301
- return `Source node not found: "${operation.source}". Available nodes: ${availableNodes}`;
303
+ const availableNodes = workflow.nodes
304
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
305
+ .join(', ');
306
+ return `Source node not found: "${operation.source}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters (apostrophes, quotes).`;
302
307
  }
303
308
  if (!targetNode) {
304
- const availableNodes = workflow.nodes.map(n => n.name).join(', ');
305
- return `Target node not found: "${operation.target}". Available nodes: ${availableNodes}`;
309
+ const availableNodes = workflow.nodes
310
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
311
+ .join(', ');
312
+ return `Target node not found: "${operation.target}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters (apostrophes, quotes).`;
306
313
  }
307
314
  const sourceOutput = operation.sourceOutput || 'main';
308
315
  const existing = workflow.connections[sourceNode.name]?.[sourceOutput];
@@ -321,10 +328,16 @@ class WorkflowDiffEngine {
321
328
  const sourceNode = this.findNode(workflow, operation.source, operation.source);
322
329
  const targetNode = this.findNode(workflow, operation.target, operation.target);
323
330
  if (!sourceNode) {
324
- return `Source node not found: ${operation.source}`;
331
+ const availableNodes = workflow.nodes
332
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
333
+ .join(', ');
334
+ return `Source node not found: "${operation.source}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters.`;
325
335
  }
326
336
  if (!targetNode) {
327
- return `Target node not found: ${operation.target}`;
337
+ const availableNodes = workflow.nodes
338
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
339
+ .join(', ');
340
+ return `Target node not found: "${operation.target}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters.`;
328
341
  }
329
342
  const sourceOutput = operation.sourceOutput || 'main';
330
343
  const connections = workflow.connections[sourceNode.name]?.[sourceOutput];
@@ -337,29 +350,39 @@ class WorkflowDiffEngine {
337
350
  }
338
351
  return null;
339
352
  }
340
- validateUpdateConnection(workflow, operation) {
353
+ validateRewireConnection(workflow, operation) {
341
354
  const sourceNode = this.findNode(workflow, operation.source, operation.source);
342
- const targetNode = this.findNode(workflow, operation.target, operation.target);
343
355
  if (!sourceNode) {
344
- return `Source node not found: ${operation.source}`;
345
- }
346
- if (!targetNode) {
347
- return `Target node not found: ${operation.target}`;
356
+ const availableNodes = workflow.nodes
357
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
358
+ .join(', ');
359
+ return `Source node not found: "${operation.source}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters.`;
360
+ }
361
+ const fromNode = this.findNode(workflow, operation.from, operation.from);
362
+ if (!fromNode) {
363
+ const availableNodes = workflow.nodes
364
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
365
+ .join(', ');
366
+ return `"From" node not found: "${operation.from}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters.`;
367
+ }
368
+ const toNode = this.findNode(workflow, operation.to, operation.to);
369
+ if (!toNode) {
370
+ const availableNodes = workflow.nodes
371
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
372
+ .join(', ');
373
+ return `"To" node not found: "${operation.to}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters.`;
374
+ }
375
+ const { sourceOutput, sourceIndex } = this.resolveSmartParameters(workflow, operation);
376
+ const connections = workflow.connections[sourceNode.name]?.[sourceOutput];
377
+ if (!connections) {
378
+ return `No connections found from "${sourceNode.name}" on output "${sourceOutput}"`;
348
379
  }
349
- const existingConnections = workflow.connections[sourceNode.name];
350
- if (!existingConnections) {
351
- return `No connections found from "${sourceNode.name}"`;
380
+ if (!connections[sourceIndex]) {
381
+ return `No connections found from "${sourceNode.name}" on output "${sourceOutput}" at index ${sourceIndex}`;
352
382
  }
353
- let hasConnection = false;
354
- Object.values(existingConnections).forEach(outputs => {
355
- outputs.forEach(connections => {
356
- if (connections.some(c => c.node === targetNode.name)) {
357
- hasConnection = true;
358
- }
359
- });
360
- });
383
+ const hasConnection = connections[sourceIndex].some(c => c.node === fromNode.name);
361
384
  if (!hasConnection) {
362
- return `No connection exists from "${sourceNode.name}" to "${targetNode.name}"`;
385
+ return `No connection exists from "${sourceNode.name}" to "${fromNode.name}" on output "${sourceOutput}" at index ${sourceIndex}"`;
363
386
  }
364
387
  return null;
365
388
  }
@@ -433,25 +456,42 @@ class WorkflowDiffEngine {
433
456
  return;
434
457
  node.disabled = true;
435
458
  }
459
+ resolveSmartParameters(workflow, operation) {
460
+ const sourceNode = this.findNode(workflow, operation.source, operation.source);
461
+ let sourceOutput = operation.sourceOutput ?? 'main';
462
+ let sourceIndex = operation.sourceIndex ?? 0;
463
+ if (operation.branch !== undefined && operation.sourceIndex === undefined) {
464
+ if (sourceNode?.type === 'n8n-nodes-base.if') {
465
+ sourceIndex = operation.branch === 'true' ? 0 : 1;
466
+ }
467
+ }
468
+ if (operation.case !== undefined && operation.sourceIndex === undefined) {
469
+ sourceIndex = operation.case;
470
+ }
471
+ return { sourceOutput, sourceIndex };
472
+ }
436
473
  applyAddConnection(workflow, operation) {
437
474
  const sourceNode = this.findNode(workflow, operation.source, operation.source);
438
475
  const targetNode = this.findNode(workflow, operation.target, operation.target);
439
476
  if (!sourceNode || !targetNode)
440
477
  return;
441
- const sourceOutput = operation.sourceOutput || 'main';
442
- const targetInput = operation.targetInput || 'main';
443
- const sourceIndex = operation.sourceIndex || 0;
444
- const targetIndex = operation.targetIndex || 0;
478
+ const { sourceOutput, sourceIndex } = this.resolveSmartParameters(workflow, operation);
479
+ const targetInput = operation.targetInput ?? 'main';
480
+ const targetIndex = operation.targetIndex ?? 0;
445
481
  if (!workflow.connections[sourceNode.name]) {
446
482
  workflow.connections[sourceNode.name] = {};
447
483
  }
448
484
  if (!workflow.connections[sourceNode.name][sourceOutput]) {
449
485
  workflow.connections[sourceNode.name][sourceOutput] = [];
450
486
  }
451
- while (workflow.connections[sourceNode.name][sourceOutput].length <= sourceIndex) {
452
- workflow.connections[sourceNode.name][sourceOutput].push([]);
487
+ const outputArray = workflow.connections[sourceNode.name][sourceOutput];
488
+ while (outputArray.length <= sourceIndex) {
489
+ outputArray.push([]);
490
+ }
491
+ if (!Array.isArray(outputArray[sourceIndex])) {
492
+ outputArray[sourceIndex] = [];
453
493
  }
454
- workflow.connections[sourceNode.name][sourceOutput][sourceIndex].push({
494
+ outputArray[sourceIndex].push({
455
495
  node: targetNode.name,
456
496
  type: targetInput,
457
497
  index: targetIndex
@@ -471,31 +511,34 @@ class WorkflowDiffEngine {
471
511
  if (!connections)
472
512
  return;
473
513
  workflow.connections[sourceNode.name][sourceOutput] = connections.map(conns => conns.filter(conn => conn.node !== targetNode.name));
474
- workflow.connections[sourceNode.name][sourceOutput] =
475
- workflow.connections[sourceNode.name][sourceOutput].filter(conns => conns.length > 0);
476
- if (workflow.connections[sourceNode.name][sourceOutput].length === 0) {
514
+ const outputConnections = workflow.connections[sourceNode.name][sourceOutput];
515
+ while (outputConnections.length > 0 && outputConnections[outputConnections.length - 1].length === 0) {
516
+ outputConnections.pop();
517
+ }
518
+ if (outputConnections.length === 0) {
477
519
  delete workflow.connections[sourceNode.name][sourceOutput];
478
520
  }
479
521
  if (Object.keys(workflow.connections[sourceNode.name]).length === 0) {
480
522
  delete workflow.connections[sourceNode.name];
481
523
  }
482
524
  }
483
- applyUpdateConnection(workflow, operation) {
525
+ applyRewireConnection(workflow, operation) {
526
+ const { sourceOutput, sourceIndex } = this.resolveSmartParameters(workflow, operation);
484
527
  this.applyRemoveConnection(workflow, {
485
528
  type: 'removeConnection',
486
529
  source: operation.source,
487
- target: operation.target,
488
- sourceOutput: operation.updates.sourceOutput,
489
- targetInput: operation.updates.targetInput
530
+ target: operation.from,
531
+ sourceOutput: sourceOutput,
532
+ targetInput: operation.targetInput
490
533
  });
491
534
  this.applyAddConnection(workflow, {
492
535
  type: 'addConnection',
493
536
  source: operation.source,
494
- target: operation.target,
495
- sourceOutput: operation.updates.sourceOutput,
496
- targetInput: operation.updates.targetInput,
497
- sourceIndex: operation.updates.sourceIndex,
498
- targetIndex: operation.updates.targetIndex
537
+ target: operation.to,
538
+ sourceOutput: sourceOutput,
539
+ targetInput: operation.targetInput,
540
+ sourceIndex: sourceIndex,
541
+ targetIndex: 0
499
542
  });
500
543
  }
501
544
  applyUpdateSettings(workflow, operation) {
@@ -610,6 +653,14 @@ class WorkflowDiffEngine {
610
653
  applyReplaceConnections(workflow, operation) {
611
654
  workflow.connections = operation.connections;
612
655
  }
656
+ normalizeNodeName(name) {
657
+ return name
658
+ .trim()
659
+ .replace(/\\\\/g, '\\')
660
+ .replace(/\\'/g, "'")
661
+ .replace(/\\"/g, '"')
662
+ .replace(/\s+/g, ' ');
663
+ }
613
664
  findNode(workflow, nodeId, nodeName) {
614
665
  if (nodeId) {
615
666
  const nodeById = workflow.nodes.find(n => n.id === nodeId);
@@ -617,17 +668,25 @@ class WorkflowDiffEngine {
617
668
  return nodeById;
618
669
  }
619
670
  if (nodeName) {
620
- const nodeByName = workflow.nodes.find(n => n.name === nodeName);
671
+ const normalizedSearch = this.normalizeNodeName(nodeName);
672
+ const nodeByName = workflow.nodes.find(n => this.normalizeNodeName(n.name) === normalizedSearch);
621
673
  if (nodeByName)
622
674
  return nodeByName;
623
675
  }
624
676
  if (nodeId && !nodeName) {
625
- const nodeByName = workflow.nodes.find(n => n.name === nodeId);
677
+ const normalizedSearch = this.normalizeNodeName(nodeId);
678
+ const nodeByName = workflow.nodes.find(n => this.normalizeNodeName(n.name) === normalizedSearch);
626
679
  if (nodeByName)
627
680
  return nodeByName;
628
681
  }
629
682
  return null;
630
683
  }
684
+ formatNodeNotFoundError(workflow, nodeIdentifier, operationType) {
685
+ const availableNodes = workflow.nodes
686
+ .map(n => `"${n.name}" (id: ${n.id.substring(0, 8)}...)`)
687
+ .join(', ');
688
+ return `Node not found for ${operationType}: "${nodeIdentifier}". Available nodes: ${availableNodes}. Tip: Use node ID for names with special characters (apostrophes, quotes).`;
689
+ }
631
690
  setNestedProperty(obj, path, value) {
632
691
  const keys = path.split('.');
633
692
  let current = obj;
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-diff-engine.js","sourceRoot":"","sources":["../../src/services/workflow-diff-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-diff-engine.js","sourceRoot":"","sources":["../../src/services/workflow-diff-engine.ts"],"names":[],"mappings":"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"}