n8n-mcp 2.20.1 → 2.20.3
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.
- package/README.md +171 -0
- package/data/nodes.db +0 -0
- package/dist/database/database-adapter.js +18 -5
- package/dist/database/database-adapter.js.map +1 -1
- package/dist/mcp/handlers-workflow-diff.d.ts.map +1 -1
- package/dist/mcp/handlers-workflow-diff.js +67 -0
- package/dist/mcp/handlers-workflow-diff.js.map +1 -1
- package/dist/mcp/tool-docs/validation/validate-node-operation.d.ts.map +1 -1
- package/dist/mcp/tool-docs/validation/validate-node-operation.js +9 -3
- package/dist/mcp/tool-docs/validation/validate-node-operation.js.map +1 -1
- package/dist/mcp/tool-docs/validation/validate-workflow.d.ts.map +1 -1
- package/dist/mcp/tool-docs/validation/validate-workflow.js +5 -2
- package/dist/mcp/tool-docs/validation/validate-workflow.js.map +1 -1
- package/dist/mcp/tool-docs/workflow_management/n8n-create-workflow.d.ts.map +1 -1
- package/dist/mcp/tool-docs/workflow_management/n8n-create-workflow.js +5 -2
- package/dist/mcp/tool-docs/workflow_management/n8n-create-workflow.js.map +1 -1
- package/dist/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.d.ts.map +1 -1
- package/dist/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.js +42 -3
- package/dist/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.js.map +1 -1
- package/dist/services/n8n-validation.d.ts +2 -0
- package/dist/services/n8n-validation.d.ts.map +1 -1
- package/dist/services/n8n-validation.js +192 -2
- package/dist/services/n8n-validation.js.map +1 -1
- package/dist/services/node-sanitizer.d.ts +5 -0
- package/dist/services/node-sanitizer.d.ts.map +1 -0
- package/dist/services/node-sanitizer.js +225 -0
- package/dist/services/node-sanitizer.js.map +1 -0
- package/dist/services/workflow-diff-engine.d.ts.map +1 -1
- package/dist/services/workflow-diff-engine.js +7 -1
- package/dist/services/workflow-diff-engine.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -284,6 +284,86 @@ environment:
|
|
|
284
284
|
N8N_MCP_TELEMETRY_DISABLED: "true"
|
|
285
285
|
```
|
|
286
286
|
|
|
287
|
+
## ⚙️ Database & Memory Configuration
|
|
288
|
+
|
|
289
|
+
### Database Adapters
|
|
290
|
+
|
|
291
|
+
n8n-mcp uses SQLite for storing node documentation. Two adapters are available:
|
|
292
|
+
|
|
293
|
+
1. **better-sqlite3** (Default in Docker)
|
|
294
|
+
- Native C++ bindings for best performance
|
|
295
|
+
- Direct disk writes (no memory overhead)
|
|
296
|
+
- **Now enabled by default** in Docker images (v2.20.2+)
|
|
297
|
+
- Memory usage: ~100-120 MB stable
|
|
298
|
+
|
|
299
|
+
2. **sql.js** (Fallback)
|
|
300
|
+
- Pure JavaScript implementation
|
|
301
|
+
- In-memory database with periodic saves
|
|
302
|
+
- Used when better-sqlite3 compilation fails
|
|
303
|
+
- Memory usage: ~150-200 MB stable
|
|
304
|
+
|
|
305
|
+
### Memory Optimization (sql.js)
|
|
306
|
+
|
|
307
|
+
If using sql.js fallback, you can configure the save interval to balance between data safety and memory efficiency:
|
|
308
|
+
|
|
309
|
+
**Environment Variable:**
|
|
310
|
+
```bash
|
|
311
|
+
SQLJS_SAVE_INTERVAL_MS=5000 # Default: 5000ms (5 seconds)
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
**Usage:**
|
|
315
|
+
- Controls how long to wait after database changes before saving to disk
|
|
316
|
+
- Lower values = more frequent saves = higher memory churn
|
|
317
|
+
- Higher values = less frequent saves = lower memory usage
|
|
318
|
+
- Minimum: 100ms
|
|
319
|
+
- Recommended: 5000-10000ms for production
|
|
320
|
+
|
|
321
|
+
**Docker Configuration:**
|
|
322
|
+
```json
|
|
323
|
+
{
|
|
324
|
+
"mcpServers": {
|
|
325
|
+
"n8n-mcp": {
|
|
326
|
+
"command": "docker",
|
|
327
|
+
"args": [
|
|
328
|
+
"run",
|
|
329
|
+
"-i",
|
|
330
|
+
"--rm",
|
|
331
|
+
"--init",
|
|
332
|
+
"-e", "SQLJS_SAVE_INTERVAL_MS=10000",
|
|
333
|
+
"ghcr.io/czlonkowski/n8n-mcp:latest"
|
|
334
|
+
]
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
**docker-compose:**
|
|
341
|
+
```yaml
|
|
342
|
+
environment:
|
|
343
|
+
SQLJS_SAVE_INTERVAL_MS: "10000"
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### Memory Leak Fix (v2.20.2)
|
|
347
|
+
|
|
348
|
+
**Issue #330** identified a critical memory leak in long-running Docker/Kubernetes deployments:
|
|
349
|
+
- **Before:** 100 MB → 2.2 GB over 72 hours (OOM kills)
|
|
350
|
+
- **After:** Stable at 100-200 MB indefinitely
|
|
351
|
+
|
|
352
|
+
**Fixes Applied:**
|
|
353
|
+
- ✅ Docker images now use better-sqlite3 by default (eliminates leak entirely)
|
|
354
|
+
- ✅ sql.js fallback optimized (98% reduction in save frequency)
|
|
355
|
+
- ✅ Removed unnecessary memory allocations (50% reduction per save)
|
|
356
|
+
- ✅ Configurable save interval via `SQLJS_SAVE_INTERVAL_MS`
|
|
357
|
+
|
|
358
|
+
For Kubernetes deployments with memory limits:
|
|
359
|
+
```yaml
|
|
360
|
+
resources:
|
|
361
|
+
requests:
|
|
362
|
+
memory: 256Mi
|
|
363
|
+
limits:
|
|
364
|
+
memory: 512Mi
|
|
365
|
+
```
|
|
366
|
+
|
|
287
367
|
## 💖 Support This Project
|
|
288
368
|
|
|
289
369
|
<div align="center">
|
|
@@ -586,6 +666,97 @@ n8n_update_partial_workflow({id: "wf-123", operations: [{...}]})
|
|
|
586
666
|
n8n_update_partial_workflow({id: "wf-123", operations: [{...}]})
|
|
587
667
|
```
|
|
588
668
|
|
|
669
|
+
### CRITICAL: addConnection Syntax
|
|
670
|
+
|
|
671
|
+
The `addConnection` operation requires **four separate string parameters**. Common mistakes cause misleading errors.
|
|
672
|
+
|
|
673
|
+
❌ WRONG - Object format (fails with "Expected string, received object"):
|
|
674
|
+
```json
|
|
675
|
+
{
|
|
676
|
+
"type": "addConnection",
|
|
677
|
+
"connection": {
|
|
678
|
+
"source": {"nodeId": "node-1", "outputIndex": 0},
|
|
679
|
+
"destination": {"nodeId": "node-2", "inputIndex": 0}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
```
|
|
683
|
+
|
|
684
|
+
❌ WRONG - Combined string (fails with "Source node not found"):
|
|
685
|
+
```json
|
|
686
|
+
{
|
|
687
|
+
"type": "addConnection",
|
|
688
|
+
"source": "node-1:main:0",
|
|
689
|
+
"target": "node-2:main:0"
|
|
690
|
+
}
|
|
691
|
+
```
|
|
692
|
+
|
|
693
|
+
✅ CORRECT - Four separate string parameters:
|
|
694
|
+
```json
|
|
695
|
+
{
|
|
696
|
+
"type": "addConnection",
|
|
697
|
+
"source": "node-id-string",
|
|
698
|
+
"target": "target-node-id-string",
|
|
699
|
+
"sourcePort": "main",
|
|
700
|
+
"targetPort": "main"
|
|
701
|
+
}
|
|
702
|
+
```
|
|
703
|
+
|
|
704
|
+
**Reference**: [GitHub Issue #327](https://github.com/czlonkowski/n8n-mcp/issues/327)
|
|
705
|
+
|
|
706
|
+
### ⚠️ CRITICAL: IF Node Multi-Output Routing
|
|
707
|
+
|
|
708
|
+
IF nodes have **two outputs** (TRUE and FALSE). Use the **`branch` parameter** to route to the correct output:
|
|
709
|
+
|
|
710
|
+
✅ CORRECT - Route to TRUE branch (when condition is met):
|
|
711
|
+
```json
|
|
712
|
+
{
|
|
713
|
+
"type": "addConnection",
|
|
714
|
+
"source": "if-node-id",
|
|
715
|
+
"target": "success-handler-id",
|
|
716
|
+
"sourcePort": "main",
|
|
717
|
+
"targetPort": "main",
|
|
718
|
+
"branch": "true"
|
|
719
|
+
}
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
✅ CORRECT - Route to FALSE branch (when condition is NOT met):
|
|
723
|
+
```json
|
|
724
|
+
{
|
|
725
|
+
"type": "addConnection",
|
|
726
|
+
"source": "if-node-id",
|
|
727
|
+
"target": "failure-handler-id",
|
|
728
|
+
"sourcePort": "main",
|
|
729
|
+
"targetPort": "main",
|
|
730
|
+
"branch": "false"
|
|
731
|
+
}
|
|
732
|
+
```
|
|
733
|
+
|
|
734
|
+
**Common Pattern** - Complete IF node routing:
|
|
735
|
+
```json
|
|
736
|
+
n8n_update_partial_workflow({
|
|
737
|
+
id: "workflow-id",
|
|
738
|
+
operations: [
|
|
739
|
+
{type: "addConnection", source: "If Node", target: "True Handler", sourcePort: "main", targetPort: "main", branch: "true"},
|
|
740
|
+
{type: "addConnection", source: "If Node", target: "False Handler", sourcePort: "main", targetPort: "main", branch: "false"}
|
|
741
|
+
]
|
|
742
|
+
})
|
|
743
|
+
```
|
|
744
|
+
|
|
745
|
+
**Note**: Without the `branch` parameter, both connections may end up on the same output, causing logic errors!
|
|
746
|
+
|
|
747
|
+
### removeConnection Syntax
|
|
748
|
+
|
|
749
|
+
Use the same four-parameter format:
|
|
750
|
+
```json
|
|
751
|
+
{
|
|
752
|
+
"type": "removeConnection",
|
|
753
|
+
"source": "source-node-id",
|
|
754
|
+
"target": "target-node-id",
|
|
755
|
+
"sourcePort": "main",
|
|
756
|
+
"targetPort": "main"
|
|
757
|
+
}
|
|
758
|
+
```
|
|
759
|
+
|
|
589
760
|
## Example Workflow
|
|
590
761
|
|
|
591
762
|
### Template-First Approach
|
package/data/nodes.db
CHANGED
|
Binary file
|
|
@@ -188,11 +188,18 @@ class SQLJSAdapter {
|
|
|
188
188
|
this.db = db;
|
|
189
189
|
this.dbPath = dbPath;
|
|
190
190
|
this.saveTimer = null;
|
|
191
|
-
this.
|
|
191
|
+
this.closed = false;
|
|
192
|
+
const envInterval = process.env.SQLJS_SAVE_INTERVAL_MS;
|
|
193
|
+
this.saveIntervalMs = envInterval ? parseInt(envInterval, 10) : SQLJSAdapter.DEFAULT_SAVE_INTERVAL_MS;
|
|
194
|
+
if (isNaN(this.saveIntervalMs) || this.saveIntervalMs < 100 || this.saveIntervalMs > 60000) {
|
|
195
|
+
logger_1.logger.warn(`Invalid SQLJS_SAVE_INTERVAL_MS value: ${envInterval} (must be 100-60000ms), ` +
|
|
196
|
+
`using default ${SQLJSAdapter.DEFAULT_SAVE_INTERVAL_MS}ms`);
|
|
197
|
+
this.saveIntervalMs = SQLJSAdapter.DEFAULT_SAVE_INTERVAL_MS;
|
|
198
|
+
}
|
|
199
|
+
logger_1.logger.debug(`SQLJSAdapter initialized with save interval: ${this.saveIntervalMs}ms`);
|
|
192
200
|
}
|
|
193
201
|
prepare(sql) {
|
|
194
202
|
const stmt = this.db.prepare(sql);
|
|
195
|
-
this.scheduleSave();
|
|
196
203
|
return new SQLJSStatement(stmt, () => this.scheduleSave());
|
|
197
204
|
}
|
|
198
205
|
exec(sql) {
|
|
@@ -200,11 +207,17 @@ class SQLJSAdapter {
|
|
|
200
207
|
this.scheduleSave();
|
|
201
208
|
}
|
|
202
209
|
close() {
|
|
210
|
+
if (this.closed) {
|
|
211
|
+
logger_1.logger.debug('SQLJSAdapter already closed, skipping');
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
203
214
|
this.saveToFile();
|
|
204
215
|
if (this.saveTimer) {
|
|
205
216
|
clearTimeout(this.saveTimer);
|
|
217
|
+
this.saveTimer = null;
|
|
206
218
|
}
|
|
207
219
|
this.db.close();
|
|
220
|
+
this.closed = true;
|
|
208
221
|
}
|
|
209
222
|
pragma(key, value) {
|
|
210
223
|
if (key === 'journal_mode' && value === 'WAL') {
|
|
@@ -243,13 +256,12 @@ class SQLJSAdapter {
|
|
|
243
256
|
}
|
|
244
257
|
this.saveTimer = setTimeout(() => {
|
|
245
258
|
this.saveToFile();
|
|
246
|
-
},
|
|
259
|
+
}, this.saveIntervalMs);
|
|
247
260
|
}
|
|
248
261
|
saveToFile() {
|
|
249
262
|
try {
|
|
250
263
|
const data = this.db.export();
|
|
251
|
-
|
|
252
|
-
fsSync.writeFileSync(this.dbPath, buffer);
|
|
264
|
+
fsSync.writeFileSync(this.dbPath, data);
|
|
253
265
|
logger_1.logger.debug(`Database saved to ${this.dbPath}`);
|
|
254
266
|
}
|
|
255
267
|
catch (error) {
|
|
@@ -257,6 +269,7 @@ class SQLJSAdapter {
|
|
|
257
269
|
}
|
|
258
270
|
}
|
|
259
271
|
}
|
|
272
|
+
SQLJSAdapter.DEFAULT_SAVE_INTERVAL_MS = 5000;
|
|
260
273
|
class BetterSQLiteStatement {
|
|
261
274
|
constructor(stmt) {
|
|
262
275
|
this.stmt = stmt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-adapter.js","sourceRoot":"","sources":["../../src/database/database-adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,sDAoDC;AAnGD,2BAAoC;AACpC,2CAA6B;AAC7B,gDAAwB;AACxB,4CAAyC;AA4ClC,KAAK,UAAU,qBAAqB,CAAC,MAAc;IAGxD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACrC,eAAM,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACrC,eAAM,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IAGD,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACrC,eAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACrC,eAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAG5E,IAAI,YAAY,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,kDAAkD,CAAC,EAAE,CAAC;YAC9H,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACrC,eAAM,CAAC,IAAI,CAAC,iGAAiG,CAAC,CAAC;YACjH,CAAC;YACD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACrC,eAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACrC,eAAM,CAAC,IAAI,CAAC,6DAA6D,EAAE,KAAK,CAAC,CAAC;QACpF,CAAC;QAGD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACrC,eAAM,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;YACnG,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACrC,eAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,UAAU,CAAC,CAAC;YAClE,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,yBAAyB,CAAC,MAAc;IACrD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC3C,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEhC,OAAO,IAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,4CAA4C,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,kBAAkB,CAAC,MAAc;IAC9C,IAAI,SAAS,CAAC;IACd,IAAI,CAAC;QACH,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACpG,CAAC;IAGD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC;QAE1B,UAAU,EAAE,CAAC,IAAY,EAAE,EAAE;YAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAE3B,MAAM,aAAa,GAAG;oBAEpB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iCAAiC,EAAE,IAAI,CAAC;oBAE7D,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,EAAE,IAAI,CAAC;oBAEnD,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,2BAA2B,EAAE,IAAI,CAAC;oBAE3D,cAAI,CAAC,IAAI,CAAC,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC;iBACrE,CAAC;gBAGF,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;oBACpC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;4BACrC,eAAM,CAAC,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;wBACjD,CAAC;wBACD,OAAO,OAAO,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAGD,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;oBAC9D,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;wBACrC,eAAM,CAAC,KAAK,CAAC,wCAAwC,QAAQ,EAAE,CAAC,CAAC;oBACnE,CAAC;oBACD,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBAEX,eAAM,CAAC,IAAI,CAAC,iDAAiD,IAAI,EAAE,CAAC,CAAC;oBACrE,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CAAC;IAGH,IAAI,EAAO,CAAC;IACZ,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvC,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,eAAM,CAAC,IAAI,CAAC,iCAAiC,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACxB,eAAM,CAAC,IAAI,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,IAAI,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAKD,MAAM,mBAAmB;IACvB,YAAoB,EAAO;QAAP,OAAE,GAAF,EAAE,CAAK;IAAG,CAAC;IAE/B,OAAO,CAAC,GAAW;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,KAAW;QAC7B,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;IAC/B,CAAC;IAED,WAAW,CAAI,EAAW;QACxB,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;IACnC,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;YAC/E,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAKD,MAAM,YAAY;IAGhB,YAAoB,EAAO,EAAU,MAAc;QAA/B,OAAE,GAAF,EAAE,CAAK;QAAU,WAAM,GAAN,MAAM,CAAQ;QAF3C,cAAS,GAA0B,IAAI,CAAC;QAI9C,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,KAAW;QAG7B,IAAI,GAAG,KAAK,cAAc,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAE9C,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,aAAa;QAEf,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW,CAAI,EAAW;QAExB,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnB,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;YAC/E,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QAGD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1C,eAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF;AAKD,MAAM,qBAAqB;IACzB,YAAoB,IAAS;QAAT,SAAI,GAAJ,IAAI,CAAK;IAAG,CAAC;IAEjC,GAAG,CAAC,GAAG,MAAa;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,GAAG,CAAC,GAAG,MAAa;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,GAAG,CAAC,GAAG,MAAa;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,GAAG,MAAa;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,MAAgB;QACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,MAAgB;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,MAAgB;QAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,GAAG,MAAa;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAKD,MAAM,cAAc;IAGlB,YAAoB,IAAS,EAAU,QAAoB;QAAvC,SAAI,GAAJ,IAAI,CAAK;QAAU,aAAQ,GAAR,QAAQ,CAAY;QAFnD,gBAAW,GAAQ,IAAI,CAAC;IAE8B,CAAC;IAE/D,GAAG,CAAC,GAAG,MAAa;QAClB,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACxB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAGhB,OAAO;gBACL,OAAO,EAAE,CAAC;gBACV,eAAe,EAAE,CAAC;aACnB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,GAAG,CAAC,GAAG,MAAa;QAClB,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACxB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,GAAG,CAAC,GAAG,MAAa;QAClB,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACxB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAU,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACpE,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,MAAa;QAEtB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,MAAgB;QAEpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,MAAgB;QAErB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,MAAgB;QAElB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QAEL,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,GAAG,MAAa;QACnB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,UAAU,CAAC,MAAa;QAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAE5G,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YAGN,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAMO,qBAAqB,CAAC,GAAQ;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,GAAG,CAAC;QAGrB,MAAM,cAAc,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;QAElF,MAAM,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,IAAI,GAAG,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC3D,SAAS,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"database-adapter.js","sourceRoot":"","sources":["../../src/database/database-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers-workflow-diff.d.ts","sourceRoot":"","sources":["../../src/mcp/handlers-workflow-diff.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"handlers-workflow-diff.d.ts","sourceRoot":"","sources":["../../src/mcp/handlers-workflow-diff.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAwC5D,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAwMpH"}
|
|
@@ -6,6 +6,7 @@ const workflow_diff_engine_1 = require("../services/workflow-diff-engine");
|
|
|
6
6
|
const handlers_n8n_manager_1 = require("./handlers-n8n-manager");
|
|
7
7
|
const n8n_errors_1 = require("../utils/n8n-errors");
|
|
8
8
|
const logger_1 = require("../utils/logger");
|
|
9
|
+
const n8n_validation_1 = require("../services/n8n-validation");
|
|
9
10
|
const workflowDiffSchema = zod_1.z.object({
|
|
10
11
|
id: zod_1.z.string(),
|
|
11
12
|
operations: zod_1.z.array(zod_1.z.object({
|
|
@@ -98,6 +99,72 @@ async function handleUpdatePartialWorkflow(args, context) {
|
|
|
98
99
|
}
|
|
99
100
|
};
|
|
100
101
|
}
|
|
102
|
+
if (diffResult.workflow) {
|
|
103
|
+
const structureErrors = (0, n8n_validation_1.validateWorkflowStructure)(diffResult.workflow);
|
|
104
|
+
if (structureErrors.length > 0) {
|
|
105
|
+
const skipValidation = process.env.SKIP_WORKFLOW_VALIDATION === 'true';
|
|
106
|
+
logger_1.logger.warn('Workflow structure validation failed after applying diff operations', {
|
|
107
|
+
workflowId: input.id,
|
|
108
|
+
errors: structureErrors,
|
|
109
|
+
blocking: !skipValidation
|
|
110
|
+
});
|
|
111
|
+
const errorTypes = new Set();
|
|
112
|
+
structureErrors.forEach(err => {
|
|
113
|
+
if (err.includes('operator') || err.includes('singleValue'))
|
|
114
|
+
errorTypes.add('operator_issues');
|
|
115
|
+
if (err.includes('connection') || err.includes('referenced'))
|
|
116
|
+
errorTypes.add('connection_issues');
|
|
117
|
+
if (err.includes('Missing') || err.includes('missing'))
|
|
118
|
+
errorTypes.add('missing_metadata');
|
|
119
|
+
if (err.includes('branch') || err.includes('output'))
|
|
120
|
+
errorTypes.add('branch_mismatch');
|
|
121
|
+
});
|
|
122
|
+
const recoverySteps = [];
|
|
123
|
+
if (errorTypes.has('operator_issues')) {
|
|
124
|
+
recoverySteps.push('Operator structure issue detected. Use validate_node_operation to check specific nodes.');
|
|
125
|
+
recoverySteps.push('Binary operators (equals, contains, greaterThan, etc.) must NOT have singleValue:true');
|
|
126
|
+
recoverySteps.push('Unary operators (isEmpty, isNotEmpty, true, false) REQUIRE singleValue:true');
|
|
127
|
+
}
|
|
128
|
+
if (errorTypes.has('connection_issues')) {
|
|
129
|
+
recoverySteps.push('Connection validation failed. Check all node connections reference existing nodes.');
|
|
130
|
+
recoverySteps.push('Use cleanStaleConnections operation to remove connections to non-existent nodes.');
|
|
131
|
+
}
|
|
132
|
+
if (errorTypes.has('missing_metadata')) {
|
|
133
|
+
recoverySteps.push('Missing metadata detected. Ensure filter-based nodes (IF v2.2+, Switch v3.2+) have complete conditions.options.');
|
|
134
|
+
recoverySteps.push('Required options: {version: 2, leftValue: "", caseSensitive: true, typeValidation: "strict"}');
|
|
135
|
+
}
|
|
136
|
+
if (errorTypes.has('branch_mismatch')) {
|
|
137
|
+
recoverySteps.push('Branch count mismatch. Ensure Switch nodes have outputs for all rules (e.g., 3 rules = 3 output branches).');
|
|
138
|
+
}
|
|
139
|
+
if (recoverySteps.length === 0) {
|
|
140
|
+
recoverySteps.push('Review the validation errors listed above');
|
|
141
|
+
recoverySteps.push('Fix issues using updateNode or cleanStaleConnections operations');
|
|
142
|
+
recoverySteps.push('Run validate_workflow again to verify fixes');
|
|
143
|
+
}
|
|
144
|
+
const errorMessage = structureErrors.length === 1
|
|
145
|
+
? `Workflow validation failed: ${structureErrors[0]}`
|
|
146
|
+
: `Workflow validation failed with ${structureErrors.length} structural issues`;
|
|
147
|
+
if (!skipValidation) {
|
|
148
|
+
return {
|
|
149
|
+
success: false,
|
|
150
|
+
error: errorMessage,
|
|
151
|
+
details: {
|
|
152
|
+
errors: structureErrors,
|
|
153
|
+
errorCount: structureErrors.length,
|
|
154
|
+
operationsApplied: diffResult.operationsApplied,
|
|
155
|
+
applied: diffResult.applied,
|
|
156
|
+
recoveryGuidance: recoverySteps,
|
|
157
|
+
note: 'Operations were applied but created an invalid workflow structure. The workflow was NOT saved to n8n to prevent UI rendering errors.',
|
|
158
|
+
autoSanitizationNote: 'Auto-sanitization runs on all nodes during updates to fix operator structures and add missing metadata. However, it cannot fix all issues (e.g., broken connections, branch mismatches). Use the recovery guidance above to resolve remaining issues.'
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
logger_1.logger.info('Workflow validation skipped (SKIP_WORKFLOW_VALIDATION=true): Allowing workflow with validation warnings to proceed', {
|
|
163
|
+
workflowId: input.id,
|
|
164
|
+
warningCount: structureErrors.length
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
101
168
|
try {
|
|
102
169
|
const updatedWorkflow = await client.updateWorkflow(input.id, diffResult.workflow);
|
|
103
170
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers-workflow-diff.js","sourceRoot":"","sources":["../../src/mcp/handlers-workflow-diff.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"handlers-workflow-diff.js","sourceRoot":"","sources":["../../src/mcp/handlers-workflow-diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-node-operation.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/validation/validate-node-operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,wBAAwB,EAAE,
|
|
1
|
+
{"version":3,"file":"validate-node-operation.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/validation/validate-node-operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,wBAAwB,EAAE,iBA+FtC,CAAC"}
|
|
@@ -12,7 +12,8 @@ exports.validateNodeOperationDoc = {
|
|
|
12
12
|
tips: [
|
|
13
13
|
'Profile choices: minimal (editing), runtime (execution), ai-friendly (balanced), strict (deployment)',
|
|
14
14
|
'Returns fixes you can apply directly',
|
|
15
|
-
'Operation-aware - knows Slack post needs text'
|
|
15
|
+
'Operation-aware - knows Slack post needs text',
|
|
16
|
+
'Validates operator structures for IF v2.2+ and Switch v3.2+ nodes'
|
|
16
17
|
]
|
|
17
18
|
},
|
|
18
19
|
full: {
|
|
@@ -72,7 +73,9 @@ exports.validateNodeOperationDoc = {
|
|
|
72
73
|
'Validate configuration before workflow execution',
|
|
73
74
|
'Debug why a node isn\'t working as expected',
|
|
74
75
|
'Generate configuration fixes automatically',
|
|
75
|
-
'Different validation for editing vs production'
|
|
76
|
+
'Different validation for editing vs production',
|
|
77
|
+
'Check IF/Switch operator structures (binary vs unary operators)',
|
|
78
|
+
'Validate conditions.options metadata for filter-based nodes'
|
|
76
79
|
],
|
|
77
80
|
performance: '<100ms for most nodes, <200ms for complex nodes with many conditions',
|
|
78
81
|
bestPractices: [
|
|
@@ -86,7 +89,10 @@ exports.validateNodeOperationDoc = {
|
|
|
86
89
|
pitfalls: [
|
|
87
90
|
'Must include operation fields for multi-operation nodes',
|
|
88
91
|
'Fixes are suggestions - review before applying',
|
|
89
|
-
'Profile affects what\'s validated - minimal skips many checks'
|
|
92
|
+
'Profile affects what\'s validated - minimal skips many checks',
|
|
93
|
+
'**Binary vs Unary operators**: Binary operators (equals, contains, greaterThan) must NOT have singleValue:true. Unary operators (isEmpty, isNotEmpty, true, false) REQUIRE singleValue:true',
|
|
94
|
+
'**IF v2.2+ and Switch v3.2+ nodes**: Must have complete conditions.options structure: {version: 2, leftValue: "", caseSensitive: true/false, typeValidation: "strict"}',
|
|
95
|
+
'**Operator type field**: Must be data type (string/number/boolean/dateTime/array/object), NOT operation name (e.g., use type:"string" operation:"equals", not type:"equals")'
|
|
90
96
|
],
|
|
91
97
|
relatedTools: ['validate_node_minimal for quick checks', 'get_node_essentials for valid examples', 'validate_workflow for complete workflow validation']
|
|
92
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-node-operation.js","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/validation/validate-node-operation.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAsB;IACzD,IAAI,EAAE,yBAAyB;IAC/B,QAAQ,EAAE,YAAY;IACtB,UAAU,EAAE;QACV,WAAW,EAAE,qOAAqO;QAClP,aAAa,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;QAChD,OAAO,EAAE,uHAAuH;QAChI,WAAW,EAAE,QAAQ;QACrB,IAAI,EAAE;YACJ,sGAAsG;YACtG,sCAAsC;YACtC,+CAA+C;
|
|
1
|
+
{"version":3,"file":"validate-node-operation.js","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/validation/validate-node-operation.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAsB;IACzD,IAAI,EAAE,yBAAyB;IAC/B,QAAQ,EAAE,YAAY;IACtB,UAAU,EAAE;QACV,WAAW,EAAE,qOAAqO;QAClP,aAAa,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;QAChD,OAAO,EAAE,uHAAuH;QAChI,WAAW,EAAE,QAAQ;QACrB,IAAI,EAAE;YACJ,sGAAsG;YACtG,sCAAsC;YACtC,+CAA+C;YAC/C,mEAAmE;SACpE;KACF;IACD,IAAI,EAAE;QACJ,WAAW,EAAE,uQAAuQ;QACpR,UAAU,EAAE;YACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,0EAA0E,EAAE;YACrI,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,mHAAmH,EAAE;YAC5K,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,uEAAuE,EAAE;SACnI;QACD,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BX;QACE,QAAQ,EAAE;YACR,2BAA2B;YAC3B,2GAA2G;YAC3G,2HAA2H;YAC3H,EAAE;YACF,gDAAgD;YAChD,4IAA4I;YAC5I,EAAE;YACF,8BAA8B;YAC9B,2FAA2F;YAC3F,wBAAwB;YACxB,8CAA8C;YAC9C,GAAG;SACJ;QACD,QAAQ,EAAE;YACR,kDAAkD;YAClD,6CAA6C;YAC7C,4CAA4C;YAC5C,gDAAgD;YAChD,iEAAiE;YACjE,6DAA6D;SAC9D;QACD,WAAW,EAAE,sEAAsE;QACnF,aAAa,EAAE;YACb,6DAA6D;YAC7D,kDAAkD;YAClD,4CAA4C;YAC5C,mDAAmD;YACnD,gEAAgE;YAChE,iDAAiD;SAClD;QACD,QAAQ,EAAE;YACR,yDAAyD;YACzD,gDAAgD;YAChD,+DAA+D;YAC/D,6LAA6L;YAC7L,wKAAwK;YACxK,8KAA8K;SAC/K;QACD,YAAY,EAAE,CAAC,wCAAwC,EAAE,wCAAwC,EAAE,oDAAoD,CAAC;KACzJ;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-workflow.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/validation/validate-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"validate-workflow.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/validation/validate-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,mBAAmB,EAAE,iBAiFjC,CAAC"}
|
|
@@ -12,7 +12,8 @@ exports.validateWorkflowDoc = {
|
|
|
12
12
|
tips: [
|
|
13
13
|
'Always validate before n8n_create_workflow to catch errors early',
|
|
14
14
|
'Use options.profile="minimal" for quick checks during development',
|
|
15
|
-
'AI tool connections are automatically validated for proper node references'
|
|
15
|
+
'AI tool connections are automatically validated for proper node references',
|
|
16
|
+
'Detects operator structure issues (binary vs unary, singleValue requirements)'
|
|
16
17
|
]
|
|
17
18
|
},
|
|
18
19
|
full: {
|
|
@@ -68,7 +69,9 @@ exports.validateWorkflowDoc = {
|
|
|
68
69
|
'Use minimal profile during development, strict profile before production',
|
|
69
70
|
'Pay attention to warnings - they often indicate potential runtime issues',
|
|
70
71
|
'Validate after any workflow modifications, especially connection changes',
|
|
71
|
-
'Check statistics to understand workflow complexity'
|
|
72
|
+
'Check statistics to understand workflow complexity',
|
|
73
|
+
'**Auto-sanitization runs during create/update**: Operator structures and missing metadata are automatically fixed when workflows are created or updated, but validation helps catch issues before they reach n8n',
|
|
74
|
+
'If validation detects operator issues, they will be auto-fixed during n8n_create_workflow or n8n_update_partial_workflow'
|
|
72
75
|
],
|
|
73
76
|
pitfalls: [
|
|
74
77
|
'Large workflows (100+ nodes) may take longer to validate',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-workflow.js","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/validation/validate-workflow.ts"],"names":[],"mappings":";;;AAEa,QAAA,mBAAmB,GAAsB;IACpD,IAAI,EAAE,mBAAmB;IACzB,QAAQ,EAAE,YAAY;IACtB,UAAU,EAAE;QACV,WAAW,EAAE,kIAAkI;QAC/I,aAAa,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;QACtC,OAAO,EAAE,mEAAmE;QAC5E,WAAW,EAAE,sBAAsB;QACnC,IAAI,EAAE;YACJ,kEAAkE;YAClE,mEAAmE;YACnE,4EAA4E;
|
|
1
|
+
{"version":3,"file":"validate-workflow.js","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/validation/validate-workflow.ts"],"names":[],"mappings":";;;AAEa,QAAA,mBAAmB,GAAsB;IACpD,IAAI,EAAE,mBAAmB;IACzB,QAAQ,EAAE,YAAY;IACtB,UAAU,EAAE;QACV,WAAW,EAAE,kIAAkI;QAC/I,aAAa,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;QACtC,OAAO,EAAE,mEAAmE;QAC5E,WAAW,EAAE,sBAAsB;QACnC,IAAI,EAAE;YACJ,kEAAkE;YAClE,mEAAmE;YACnE,4EAA4E;YAC5E,+EAA+E;SAChF;KACF;IACD,IAAI,EAAE;QACJ,WAAW,EAAE,oVAAoV;QACjW,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,0FAA0F;aACxG;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,2BAA2B;aACzC;YACD,uBAAuB,EAAE;gBACvB,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,wDAAwD;aACtE;YACD,6BAA6B,EAAE;gBAC7B,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,mDAAmD;aACjE;YACD,6BAA6B,EAAE;gBAC7B,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,+DAA+D;aAC7E;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,yFAAyF;aACvG;SACF;QACD,OAAO,EAAE,6GAA6G;QACtH,QAAQ,EAAE;YACR,mFAAmF;YACnF,yGAAyG;YACzG,+GAA+G;SAChH;QACD,QAAQ,EAAE;YACR,wDAAwD;YACxD,8CAA8C;YAC9C,6DAA6D;YAC7D,mDAAmD;YACnD,yDAAyD;SAC1D;QACD,WAAW,EAAE,8GAA8G;QAC3H,aAAa,EAAE;YACb,8DAA8D;YAC9D,0EAA0E;YAC1E,0EAA0E;YAC1E,0EAA0E;YAC1E,oDAAoD;YACpD,kNAAkN;YAClN,0HAA0H;SAC3H;QACD,QAAQ,EAAE;YACR,0DAA0D;YAC1D,gEAAgE;YAChE,uDAAuD;YACvD,iEAAiE;YACjE,gFAAgF;SACjF;QACD,YAAY,EAAE,CAAC,+BAA+B,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,sBAAsB,CAAC;KAC1L;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"n8n-create-workflow.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-create-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"n8n-create-workflow.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-create-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,oBAAoB,EAAE,iBAiGlC,CAAC"}
|
|
@@ -12,7 +12,8 @@ exports.n8nCreateWorkflowDoc = {
|
|
|
12
12
|
tips: [
|
|
13
13
|
'Workflow created inactive',
|
|
14
14
|
'Returns ID for future updates',
|
|
15
|
-
'Validate first with validate_workflow'
|
|
15
|
+
'Validate first with validate_workflow',
|
|
16
|
+
'Auto-sanitization fixes operator structures and missing metadata during creation'
|
|
16
17
|
]
|
|
17
18
|
},
|
|
18
19
|
full: {
|
|
@@ -91,7 +92,9 @@ n8n_create_workflow({
|
|
|
91
92
|
'Workflows created in INACTIVE state - must activate separately',
|
|
92
93
|
'Node IDs must be unique within workflow',
|
|
93
94
|
'Credentials must be configured separately in n8n',
|
|
94
|
-
'Node type names must include package prefix (e.g., "n8n-nodes-base.slack")'
|
|
95
|
+
'Node type names must include package prefix (e.g., "n8n-nodes-base.slack")',
|
|
96
|
+
'**Auto-sanitization runs on creation**: All nodes sanitized before workflow created (operator structures fixed, missing metadata added)',
|
|
97
|
+
'**Auto-sanitization cannot prevent all failures**: Broken connections or invalid node configurations may still cause creation to fail'
|
|
95
98
|
],
|
|
96
99
|
relatedTools: ['validate_workflow', 'n8n_update_partial_workflow', 'n8n_trigger_webhook_workflow']
|
|
97
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"n8n-create-workflow.js","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-create-workflow.ts"],"names":[],"mappings":";;;AAEa,QAAA,oBAAoB,GAAsB;IACrD,IAAI,EAAE,qBAAqB;IAC3B,QAAQ,EAAE,qBAAqB;IAC/B,UAAU,EAAE;QACV,WAAW,EAAE,sGAAsG;QACnH,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC;QAC/C,OAAO,EAAE,0EAA0E;QACnF,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE;YACJ,2BAA2B;YAC3B,+BAA+B;YAC/B,uCAAuC;
|
|
1
|
+
{"version":3,"file":"n8n-create-workflow.js","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-create-workflow.ts"],"names":[],"mappings":";;;AAEa,QAAA,oBAAoB,GAAsB;IACrD,IAAI,EAAE,qBAAqB;IAC3B,QAAQ,EAAE,qBAAqB;IAC/B,UAAU,EAAE;QACV,WAAW,EAAE,sGAAsG;QACnH,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC;QAC/C,OAAO,EAAE,0EAA0E;QACnF,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE;YACJ,2BAA2B;YAC3B,+BAA+B;YAC/B,uCAAuC;YACvC,kFAAkF;SACnF;KACF;IACD,IAAI,EAAE;QACJ,WAAW,EAAE,uLAAuL;QACpM,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE;YACtE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,uEAAuE,EAAE;YAC9H,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,4CAA4C,EAAE;YAC1G,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6DAA6D,EAAE;SACzG;QACD,OAAO,EAAE,0EAA0E;QACnF,QAAQ,EAAE;YACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCH;YACG;;;;;;;;;;;GAWH;SACE;QACD,QAAQ,EAAE;YACR,4BAA4B;YAC5B,4BAA4B;YAC5B,2BAA2B;YAC3B,qBAAqB;SACtB;QACD,WAAW,EAAE,oEAAoE;QACjF,aAAa,EAAE;YACb,uCAAuC;YACvC,qBAAqB;YACrB,gCAAgC;YAChC,wCAAwC;SACzC;QACD,QAAQ,EAAE;YACR,0GAA0G;YAC1G,gEAAgE;YAChE,yCAAyC;YACzC,kDAAkD;YAClD,4EAA4E;YAC5E,yIAAyI;YACzI,uIAAuI;SACxI;QACD,YAAY,EAAE,CAAC,mBAAmB,EAAE,6BAA6B,EAAE,8BAA8B,CAAC;KACnG;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"n8n-update-partial-workflow.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,2BAA2B,EAAE,
|
|
1
|
+
{"version":3,"file":"n8n-update-partial-workflow.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,2BAA2B,EAAE,iBAgOzC,CAAC"}
|
|
@@ -18,7 +18,8 @@ exports.n8nUpdatePartialWorkflowDoc = {
|
|
|
18
18
|
'Use continueOnError mode for best-effort bulk operations',
|
|
19
19
|
'Validate with validateOnly first',
|
|
20
20
|
'For AI connections, specify sourceOutput type (ai_languageModel, ai_tool, etc.)',
|
|
21
|
-
'Batch AI component connections for atomic updates'
|
|
21
|
+
'Batch AI component connections for atomic updates',
|
|
22
|
+
'Auto-sanitization: ALL nodes auto-fixed during updates (operator structures, missing metadata)'
|
|
22
23
|
]
|
|
23
24
|
},
|
|
24
25
|
full: {
|
|
@@ -95,7 +96,41 @@ The **cleanStaleConnections** operation automatically removes broken connection
|
|
|
95
96
|
Set **continueOnError: true** to apply valid operations even if some fail. Returns detailed results showing which operations succeeded/failed. Perfect for bulk cleanup operations.
|
|
96
97
|
|
|
97
98
|
### Graceful Error Handling
|
|
98
|
-
Add **ignoreErrors: true** to removeConnection operations to prevent failures when connections don't exist
|
|
99
|
+
Add **ignoreErrors: true** to removeConnection operations to prevent failures when connections don't exist.
|
|
100
|
+
|
|
101
|
+
## Auto-Sanitization System
|
|
102
|
+
|
|
103
|
+
### What Gets Auto-Fixed
|
|
104
|
+
When ANY workflow update is made, ALL nodes in the workflow are automatically sanitized to ensure complete metadata and correct structure:
|
|
105
|
+
|
|
106
|
+
1. **Operator Structure Fixes**:
|
|
107
|
+
- Binary operators (equals, contains, greaterThan, etc.) automatically have \`singleValue\` removed
|
|
108
|
+
- Unary operators (isEmpty, isNotEmpty, true, false) automatically get \`singleValue: true\` added
|
|
109
|
+
- Invalid operator structures (e.g., \`{type: "isNotEmpty"}\`) are corrected to \`{type: "boolean", operation: "isNotEmpty"}\`
|
|
110
|
+
|
|
111
|
+
2. **Missing Metadata Added**:
|
|
112
|
+
- IF v2.2+ nodes get complete \`conditions.options\` structure if missing
|
|
113
|
+
- Switch v3.2+ nodes get complete \`conditions.options\` for all rules
|
|
114
|
+
- Required fields: \`{version: 2, leftValue: "", caseSensitive: true, typeValidation: "strict"}\`
|
|
115
|
+
|
|
116
|
+
### Sanitization Scope
|
|
117
|
+
- Runs on **ALL nodes** in the workflow, not just modified ones
|
|
118
|
+
- Triggered by ANY update operation (addNode, updateNode, addConnection, etc.)
|
|
119
|
+
- Prevents workflow corruption that would make UI unrenderable
|
|
120
|
+
|
|
121
|
+
### Limitations
|
|
122
|
+
Auto-sanitization CANNOT fix:
|
|
123
|
+
- Broken connections (connections referencing non-existent nodes) - use \`cleanStaleConnections\`
|
|
124
|
+
- Branch count mismatches (e.g., Switch with 3 rules but only 2 outputs) - requires manual connection fixes
|
|
125
|
+
- Workflows in paradoxical corrupt states (API returns corrupt data, API rejects updates) - must recreate workflow
|
|
126
|
+
|
|
127
|
+
### Recovery Guidance
|
|
128
|
+
If validation still fails after auto-sanitization:
|
|
129
|
+
1. Check error details for specific issues
|
|
130
|
+
2. Use \`validate_workflow\` to see all validation errors
|
|
131
|
+
3. For connection issues, use \`cleanStaleConnections\` operation
|
|
132
|
+
4. For branch mismatches, add missing output connections
|
|
133
|
+
5. For paradoxical corrupted workflows, create new workflow and migrate nodes`,
|
|
99
134
|
parameters: {
|
|
100
135
|
id: { type: 'string', required: true, description: 'Workflow ID to update' },
|
|
101
136
|
operations: {
|
|
@@ -182,7 +217,11 @@ Add **ignoreErrors: true** to removeConnection operations to prevent failures wh
|
|
|
182
217
|
'Smart parameters (branch, case) only work with IF and Switch nodes - ignored for other node types',
|
|
183
218
|
'Explicit sourceIndex overrides smart parameters (branch, case) if both provided',
|
|
184
219
|
'cleanStaleConnections removes ALL broken connections - cannot be selective',
|
|
185
|
-
'replaceConnections overwrites entire connections object - all previous connections lost'
|
|
220
|
+
'replaceConnections overwrites entire connections object - all previous connections lost',
|
|
221
|
+
'**Auto-sanitization behavior**: Binary operators (equals, contains) automatically have singleValue removed; unary operators (isEmpty, isNotEmpty) automatically get singleValue:true added',
|
|
222
|
+
'**Auto-sanitization runs on ALL nodes**: When ANY update is made, ALL nodes in the workflow are sanitized (not just modified ones)',
|
|
223
|
+
'**Auto-sanitization cannot fix everything**: It fixes operator structures and missing metadata, but cannot fix broken connections or branch mismatches',
|
|
224
|
+
'**Corrupted workflows beyond repair**: Workflows in paradoxical states (API returns corrupt, API rejects updates) cannot be fixed via API - must be recreated'
|
|
186
225
|
],
|
|
187
226
|
relatedTools: ['n8n_update_full_workflow', 'n8n_get_workflow', 'validate_workflow', 'tools_documentation']
|
|
188
227
|
}
|
|
@@ -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,0dAA0d;QACve,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;YAClC,iFAAiF;YACjF,mDAAmD;
|
|
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,0dAA0d;QACve,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;YAClC,iFAAiF;YACjF,mDAAmD;YACnD,gGAAgG;SACjG;KACF;IACD,IAAI,EAAE;QACJ,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8EA2G6D;QAC1E,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;YACxJ,uDAAuD;YACvD,2MAA2M;YAC3M,wLAAwL;YACxL,+LAA+L;YAC/L,gNAAgN;YAChN,4hBAA4hB;YAC5hB,gXAAgX;YAChX,qWAAqW;YACrW,uVAAuV;YACvV,qPAAqP;YACrP,0eAA0e;SAC3e;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;YACzB,iEAAiE;YACjE,+CAA+C;YAC/C,2CAA2C;YAC3C,0CAA0C;YAC1C,+CAA+C;YAC/C,kCAAkC;SACnC;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;YAChD,8FAA8F;YAC9F,2EAA2E;YAC3E,6DAA6D;YAC7D,oEAAoE;YACpE,8EAA8E;SAC/E;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;YACzF,4LAA4L;YAC5L,oIAAoI;YACpI,wJAAwJ;YACxJ,+JAA+J;SAChK;QACD,YAAY,EAAE,CAAC,0BAA0B,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;KAC3G;CACF,CAAC"}
|