n8n-mcp 2.7.9 → 2.7.11

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.
Files changed (87) hide show
  1. package/README.md +20 -42
  2. package/data/nodes.db +0 -0
  3. package/dist/database/database-adapter.d.ts +1 -0
  4. package/dist/database/database-adapter.d.ts.map +1 -1
  5. package/dist/database/database-adapter.js +20 -0
  6. package/dist/database/database-adapter.js.map +1 -1
  7. package/dist/http-server-single-session.d.ts +2 -0
  8. package/dist/http-server-single-session.d.ts.map +1 -1
  9. package/dist/http-server-single-session.js +65 -11
  10. package/dist/http-server-single-session.js.map +1 -1
  11. package/dist/http-server.d.ts.map +1 -1
  12. package/dist/http-server.js +41 -8
  13. package/dist/http-server.js.map +1 -1
  14. package/dist/mcp/server.d.ts +7 -0
  15. package/dist/mcp/server.d.ts.map +1 -1
  16. package/dist/mcp/server.js +334 -10
  17. package/dist/mcp/server.js.map +1 -1
  18. package/dist/mcp/tools-documentation.d.ts.map +1 -1
  19. package/dist/mcp/tools-documentation.js +832 -52
  20. package/dist/mcp/tools-documentation.js.map +1 -1
  21. package/dist/mcp/tools-n8n-manager.d.ts.map +1 -1
  22. package/dist/mcp/tools-n8n-manager.js +10 -112
  23. package/dist/mcp/tools-n8n-manager.js.map +1 -1
  24. package/dist/mcp/tools.d.ts.map +1 -1
  25. package/dist/mcp/tools.js +42 -36
  26. package/dist/mcp/tools.js.map +1 -1
  27. package/dist/scripts/fetch-templates.d.ts.map +1 -1
  28. package/dist/scripts/fetch-templates.js +37 -0
  29. package/dist/scripts/fetch-templates.js.map +1 -1
  30. package/dist/scripts/test-error-handling-validation.d.ts +3 -0
  31. package/dist/scripts/test-error-handling-validation.d.ts.map +1 -0
  32. package/dist/scripts/test-error-handling-validation.js +340 -0
  33. package/dist/scripts/test-error-handling-validation.js.map +1 -0
  34. package/dist/scripts/test-node-level-properties.d.ts +3 -0
  35. package/dist/scripts/test-node-level-properties.d.ts.map +1 -0
  36. package/dist/scripts/test-node-level-properties.js +196 -0
  37. package/dist/scripts/test-node-level-properties.js.map +1 -0
  38. package/dist/services/config-validator.d.ts +2 -2
  39. package/dist/services/config-validator.d.ts.map +1 -1
  40. package/dist/services/config-validator.js +123 -5
  41. package/dist/services/config-validator.js.map +1 -1
  42. package/dist/services/enhanced-config-validator.d.ts +2 -0
  43. package/dist/services/enhanced-config-validator.d.ts.map +1 -1
  44. package/dist/services/enhanced-config-validator.js +31 -1
  45. package/dist/services/enhanced-config-validator.js.map +1 -1
  46. package/dist/services/example-generator.d.ts.map +1 -1
  47. package/dist/services/example-generator.js +442 -28
  48. package/dist/services/example-generator.js.map +1 -1
  49. package/dist/services/n8n-validation.d.ts +10 -10
  50. package/dist/services/node-specific-validators.d.ts +8 -1
  51. package/dist/services/node-specific-validators.d.ts.map +1 -1
  52. package/dist/services/node-specific-validators.js +608 -59
  53. package/dist/services/node-specific-validators.js.map +1 -1
  54. package/dist/services/task-templates.d.ts +1 -0
  55. package/dist/services/task-templates.d.ts.map +1 -1
  56. package/dist/services/task-templates.js +858 -16
  57. package/dist/services/task-templates.js.map +1 -1
  58. package/dist/services/workflow-diff-engine.d.ts.map +1 -1
  59. package/dist/services/workflow-diff-engine.js +1 -0
  60. package/dist/services/workflow-diff-engine.js.map +1 -1
  61. package/dist/services/workflow-validator.d.ts +9 -0
  62. package/dist/services/workflow-validator.d.ts.map +1 -1
  63. package/dist/services/workflow-validator.js +270 -0
  64. package/dist/services/workflow-validator.js.map +1 -1
  65. package/dist/sse-server.d.ts +8 -0
  66. package/dist/sse-server.d.ts.map +1 -0
  67. package/dist/sse-server.js +652 -0
  68. package/dist/sse-server.js.map +1 -0
  69. package/dist/templates/template-repository.d.ts +4 -0
  70. package/dist/templates/template-repository.d.ts.map +1 -1
  71. package/dist/templates/template-repository.js +119 -7
  72. package/dist/templates/template-repository.js.map +1 -1
  73. package/dist/templates/template-service.d.ts.map +1 -1
  74. package/dist/templates/template-service.js +2 -0
  75. package/dist/templates/template-service.js.map +1 -1
  76. package/dist/types/n8n-api.d.ts +2 -1
  77. package/dist/types/n8n-api.d.ts.map +1 -1
  78. package/dist/types/n8n-api.js.map +1 -1
  79. package/dist/types/sse.d.ts +42 -0
  80. package/dist/types/sse.d.ts.map +1 -0
  81. package/dist/types/sse.js +3 -0
  82. package/dist/types/sse.js.map +1 -0
  83. package/dist/utils/sse-session-manager.d.ts +23 -0
  84. package/dist/utils/sse-session-manager.d.ts.map +1 -0
  85. package/dist/utils/sse-session-manager.js +178 -0
  86. package/dist/utils/sse-session-manager.js.map +1 -0
  87. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-templates.d.ts","sourceRoot":"","sources":["../../src/scripts/fetch-templates.ts"],"names":[],"mappings":";AAMA,iBAAe,cAAc,kBAsE5B;AAOD,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"fetch-templates.d.ts","sourceRoot":"","sources":["../../src/scripts/fetch-templates.ts"],"names":[],"mappings":";AAMA,iBAAe,cAAc,kBAiH5B;AAOD,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -55,6 +55,43 @@ async function fetchTemplates() {
55
55
  }
56
56
  const schema = fs.readFileSync(path.join(__dirname, '../../src/database/schema.sql'), 'utf8');
57
57
  db.exec(schema);
58
+ const hasFTS5 = db.checkFTS5Support();
59
+ if (hasFTS5) {
60
+ console.log('🔍 Creating FTS5 tables for template search...');
61
+ try {
62
+ db.exec(`
63
+ CREATE VIRTUAL TABLE IF NOT EXISTS templates_fts USING fts5(
64
+ name, description, content=templates
65
+ );
66
+ `);
67
+ db.exec(`
68
+ CREATE TRIGGER IF NOT EXISTS templates_ai AFTER INSERT ON templates BEGIN
69
+ INSERT INTO templates_fts(rowid, name, description)
70
+ VALUES (new.id, new.name, new.description);
71
+ END;
72
+ `);
73
+ db.exec(`
74
+ CREATE TRIGGER IF NOT EXISTS templates_au AFTER UPDATE ON templates BEGIN
75
+ UPDATE templates_fts SET name = new.name, description = new.description
76
+ WHERE rowid = new.id;
77
+ END;
78
+ `);
79
+ db.exec(`
80
+ CREATE TRIGGER IF NOT EXISTS templates_ad AFTER DELETE ON templates BEGIN
81
+ DELETE FROM templates_fts WHERE rowid = old.id;
82
+ END;
83
+ `);
84
+ console.log('✅ FTS5 tables created successfully\n');
85
+ }
86
+ catch (error) {
87
+ console.log('⚠️ Failed to create FTS5 tables:', error);
88
+ console.log(' Template search will use LIKE fallback\n');
89
+ }
90
+ }
91
+ else {
92
+ console.log('ℹ️ FTS5 not supported in this SQLite build');
93
+ console.log(' Template search will use LIKE queries\n');
94
+ }
58
95
  const service = new template_service_1.TemplateService(db);
59
96
  let lastMessage = '';
60
97
  const startTime = Date.now();
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-templates.js","sourceRoot":"","sources":["../../src/scripts/fetch-templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-templates.js","sourceRoot":"","sources":["../../src/scripts/fetch-templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env npx tsx
2
+ export {};
3
+ //# sourceMappingURL=test-error-handling-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-error-handling-validation.d.ts","sourceRoot":"","sources":["../../src/scripts/test-error-handling-validation.ts"],"names":[],"mappings":""}
@@ -0,0 +1,340 @@
1
+ #!/usr/bin/env npx tsx
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const workflow_validator_1 = require("../services/workflow-validator");
8
+ const node_repository_1 = require("../database/node-repository");
9
+ const database_adapter_1 = require("../database/database-adapter");
10
+ const enhanced_config_validator_1 = require("../services/enhanced-config-validator");
11
+ const logger_1 = require("../utils/logger");
12
+ const path_1 = __importDefault(require("path"));
13
+ const logger = new logger_1.Logger({ prefix: '[Test Error Handling]' });
14
+ const testWorkflows = [
15
+ {
16
+ name: 'Deprecated continueOnFail',
17
+ workflow: {
18
+ name: 'Test Deprecated Error Handling',
19
+ nodes: [
20
+ {
21
+ id: '1',
22
+ name: 'Webhook',
23
+ type: 'n8n-nodes-base.webhook',
24
+ position: [100, 100],
25
+ parameters: {
26
+ path: 'test-webhook',
27
+ httpMethod: 'POST'
28
+ },
29
+ continueOnFail: true
30
+ },
31
+ {
32
+ id: '2',
33
+ name: 'HTTP Request',
34
+ type: 'n8n-nodes-base.httpRequest',
35
+ position: [300, 100],
36
+ parameters: {
37
+ url: 'https://api.example.com/data',
38
+ method: 'GET'
39
+ },
40
+ continueOnFail: true
41
+ }
42
+ ],
43
+ connections: {
44
+ 'Webhook': {
45
+ main: [[{ node: 'HTTP Request', type: 'main', index: 0 }]]
46
+ }
47
+ }
48
+ }
49
+ },
50
+ {
51
+ name: 'Modern onError property',
52
+ workflow: {
53
+ name: 'Test Modern Error Handling',
54
+ nodes: [
55
+ {
56
+ id: '1',
57
+ name: 'Webhook',
58
+ type: 'n8n-nodes-base.webhook',
59
+ position: [100, 100],
60
+ parameters: {
61
+ path: 'test-webhook',
62
+ httpMethod: 'POST'
63
+ },
64
+ onError: 'continueRegularOutput',
65
+ alwaysOutputData: true
66
+ },
67
+ {
68
+ id: '2',
69
+ name: 'HTTP Request',
70
+ type: 'n8n-nodes-base.httpRequest',
71
+ position: [300, 100],
72
+ parameters: {
73
+ url: 'https://api.example.com/data',
74
+ method: 'POST',
75
+ sendBody: true,
76
+ contentType: 'json',
77
+ jsonBody: '{"test": "data"}'
78
+ },
79
+ onError: 'continueRegularOutput',
80
+ retryOnFail: true,
81
+ maxTries: 3,
82
+ waitBetweenTries: 2000,
83
+ alwaysOutputData: true
84
+ }
85
+ ],
86
+ connections: {
87
+ 'Webhook': {
88
+ main: [[{ node: 'HTTP Request', type: 'main', index: 0 }]]
89
+ }
90
+ }
91
+ }
92
+ },
93
+ {
94
+ name: 'Missing error handling',
95
+ workflow: {
96
+ name: 'Test Missing Error Handling',
97
+ nodes: [
98
+ {
99
+ id: '1',
100
+ name: 'Webhook',
101
+ type: 'n8n-nodes-base.webhook',
102
+ position: [100, 100],
103
+ parameters: {
104
+ path: 'test-webhook',
105
+ httpMethod: 'POST'
106
+ }
107
+ },
108
+ {
109
+ id: '2',
110
+ name: 'HTTP Request',
111
+ type: 'n8n-nodes-base.httpRequest',
112
+ position: [300, 100],
113
+ parameters: {
114
+ url: 'https://api.example.com/data',
115
+ method: 'GET'
116
+ }
117
+ },
118
+ {
119
+ id: '3',
120
+ name: 'Postgres',
121
+ type: 'n8n-nodes-base.postgres',
122
+ position: [500, 100],
123
+ parameters: {
124
+ operation: 'insert',
125
+ table: 'users',
126
+ columns: 'name,email'
127
+ }
128
+ }
129
+ ],
130
+ connections: {
131
+ 'Webhook': {
132
+ main: [[{ node: 'HTTP Request', type: 'main', index: 0 }]]
133
+ },
134
+ 'HTTP Request': {
135
+ main: [[{ node: 'Postgres', type: 'main', index: 0 }]]
136
+ }
137
+ }
138
+ }
139
+ },
140
+ {
141
+ name: 'Mixed error handling',
142
+ workflow: {
143
+ name: 'Test Mixed Error Handling',
144
+ nodes: [
145
+ {
146
+ id: '1',
147
+ name: 'Manual Trigger',
148
+ type: 'n8n-nodes-base.manualTrigger',
149
+ position: [100, 100],
150
+ parameters: {}
151
+ },
152
+ {
153
+ id: '2',
154
+ name: 'OpenAI',
155
+ type: 'n8n-nodes-base.openAi',
156
+ position: [300, 100],
157
+ parameters: {
158
+ resource: 'chat',
159
+ operation: 'create',
160
+ model: 'gpt-3.5-turbo',
161
+ messages: {
162
+ values: [
163
+ {
164
+ role: 'user',
165
+ content: 'Hello'
166
+ }
167
+ ]
168
+ }
169
+ },
170
+ onError: 'continueRegularOutput',
171
+ retryOnFail: true,
172
+ maxTries: 5,
173
+ waitBetweenTries: 5000
174
+ },
175
+ {
176
+ id: '3',
177
+ name: 'Slack',
178
+ type: 'n8n-nodes-base.slack',
179
+ position: [500, 100],
180
+ parameters: {
181
+ resource: 'message',
182
+ operation: 'post',
183
+ channel: '#general',
184
+ text: 'AI response: {{ $json.message }}'
185
+ },
186
+ continueOnFail: true
187
+ }
188
+ ],
189
+ connections: {
190
+ 'Manual Trigger': {
191
+ main: [[{ node: 'OpenAI', type: 'main', index: 0 }]]
192
+ },
193
+ 'OpenAI': {
194
+ main: [[{ node: 'Slack', type: 'main', index: 0 }]]
195
+ }
196
+ }
197
+ }
198
+ },
199
+ {
200
+ name: 'Error output routing',
201
+ workflow: {
202
+ name: 'Test Error Output Routing',
203
+ nodes: [
204
+ {
205
+ id: '1',
206
+ name: 'Manual Trigger',
207
+ type: 'n8n-nodes-base.manualTrigger',
208
+ position: [100, 200],
209
+ parameters: {}
210
+ },
211
+ {
212
+ id: '2',
213
+ name: 'HTTP Request',
214
+ type: 'n8n-nodes-base.httpRequest',
215
+ position: [300, 200],
216
+ parameters: {
217
+ url: 'https://api.example.com/data',
218
+ method: 'GET'
219
+ },
220
+ onError: 'continueErrorOutput',
221
+ retryOnFail: true,
222
+ maxTries: 2,
223
+ alwaysOutputData: true
224
+ },
225
+ {
226
+ id: '3',
227
+ name: 'Success Handler',
228
+ type: 'n8n-nodes-base.set',
229
+ position: [500, 100],
230
+ parameters: {
231
+ mode: 'manual',
232
+ assignments: {
233
+ assignments: [
234
+ {
235
+ id: '1',
236
+ name: 'status',
237
+ value: 'success',
238
+ type: 'string'
239
+ }
240
+ ]
241
+ }
242
+ }
243
+ },
244
+ {
245
+ id: '4',
246
+ name: 'Error Handler',
247
+ type: 'n8n-nodes-base.set',
248
+ position: [500, 300],
249
+ parameters: {
250
+ mode: 'manual',
251
+ assignments: {
252
+ assignments: [
253
+ {
254
+ id: '1',
255
+ name: 'status',
256
+ value: 'error',
257
+ type: 'string'
258
+ }
259
+ ]
260
+ }
261
+ }
262
+ }
263
+ ],
264
+ connections: {
265
+ 'Manual Trigger': {
266
+ main: [[{ node: 'HTTP Request', type: 'main', index: 0 }]]
267
+ },
268
+ 'HTTP Request': {
269
+ main: [[{ node: 'Success Handler', type: 'main', index: 0 }]],
270
+ error: [[{ node: 'Error Handler', type: 'main', index: 0 }]]
271
+ }
272
+ }
273
+ }
274
+ }
275
+ ];
276
+ async function testErrorHandlingValidation() {
277
+ try {
278
+ const dbPath = path_1.default.join(process.cwd(), 'nodes.db');
279
+ const dbAdapter = await (0, database_adapter_1.createDatabaseAdapter)(dbPath);
280
+ const nodeRepository = new node_repository_1.NodeRepository(dbAdapter);
281
+ const validator = new workflow_validator_1.WorkflowValidator(nodeRepository, enhanced_config_validator_1.EnhancedConfigValidator);
282
+ logger.info('Testing error handling validation...\n');
283
+ for (const test of testWorkflows) {
284
+ logger.info(`\n${'='.repeat(80)}`);
285
+ logger.info(`Test: ${test.name}`);
286
+ logger.info('='.repeat(80));
287
+ const result = await validator.validateWorkflow(test.workflow, {
288
+ validateNodes: true,
289
+ validateConnections: true,
290
+ validateExpressions: false,
291
+ profile: 'strict'
292
+ });
293
+ logger.info(`\nValidation result: ${result.valid ? '✅ VALID' : '❌ INVALID'}`);
294
+ if (result.errors.length > 0) {
295
+ logger.error('\nErrors:');
296
+ result.errors.forEach((error, index) => {
297
+ logger.error(` ${index + 1}. ${error.nodeName ? `[${error.nodeName}] ` : ''}${error.message}`);
298
+ if (error.details) {
299
+ logger.error(` Details: ${JSON.stringify(error.details)}`);
300
+ }
301
+ });
302
+ }
303
+ if (result.warnings.length > 0) {
304
+ logger.warn('\nWarnings:');
305
+ result.warnings.forEach((warning, index) => {
306
+ logger.warn(` ${index + 1}. ${warning.nodeName ? `[${warning.nodeName}] ` : ''}${warning.message}`);
307
+ });
308
+ }
309
+ if (result.suggestions.length > 0) {
310
+ logger.info('\nSuggestions:');
311
+ result.suggestions.forEach((suggestion, index) => {
312
+ logger.info(` ${index + 1}. ${suggestion}`);
313
+ });
314
+ }
315
+ const errorHandlingWarnings = result.warnings.filter((w) => w.message.includes('error handling') ||
316
+ w.message.includes('continueOnFail') ||
317
+ w.message.includes('onError'));
318
+ if (errorHandlingWarnings.length > 0) {
319
+ logger.info('\n📋 Error Handling Specific Issues:');
320
+ errorHandlingWarnings.forEach((warning) => {
321
+ logger.info(` - [${warning.nodeName}] ${warning.message}`);
322
+ });
323
+ }
324
+ logger.info('\nStatistics:');
325
+ logger.info(` Total nodes: ${result.statistics.totalNodes}`);
326
+ logger.info(` Enabled nodes: ${result.statistics.enabledNodes}`);
327
+ logger.info(` Valid connections: ${result.statistics.validConnections}`);
328
+ }
329
+ logger.info('\n✅ Error handling validation tests completed!');
330
+ }
331
+ catch (error) {
332
+ logger.error('Test failed:', error);
333
+ process.exit(1);
334
+ }
335
+ }
336
+ testErrorHandlingValidation().catch(error => {
337
+ logger.error('Fatal error:', error);
338
+ process.exit(1);
339
+ });
340
+ //# sourceMappingURL=test-error-handling-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-error-handling-validation.js","sourceRoot":"","sources":["../../src/scripts/test-error-handling-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=test-node-level-properties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-node-level-properties.d.ts","sourceRoot":"","sources":["../../src/scripts/test-node-level-properties.ts"],"names":[],"mappings":""}
@@ -0,0 +1,196 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ const database_adapter_js_1 = require("../database/database-adapter.js");
38
+ const node_repository_js_1 = require("../database/node-repository.js");
39
+ const workflow_validator_js_1 = require("../services/workflow-validator.js");
40
+ const workflow_diff_engine_js_1 = require("../services/workflow-diff-engine.js");
41
+ const path_1 = require("path");
42
+ async function main() {
43
+ console.log('🔍 Testing Node-Level Properties Configuration\n');
44
+ const dbPath = (0, path_1.join)(process.cwd(), 'nodes.db');
45
+ const dbAdapter = await (0, database_adapter_js_1.createDatabaseAdapter)(dbPath);
46
+ const nodeRepository = new node_repository_js_1.NodeRepository(dbAdapter);
47
+ const EnhancedConfigValidator = (await Promise.resolve().then(() => __importStar(require('../services/enhanced-config-validator.js')))).EnhancedConfigValidator;
48
+ const validator = new workflow_validator_js_1.WorkflowValidator(nodeRepository, EnhancedConfigValidator);
49
+ const diffEngine = new workflow_diff_engine_js_1.WorkflowDiffEngine();
50
+ console.log('1️⃣ Complete Node Configuration Example:');
51
+ const completeNode = {
52
+ id: 'node_1',
53
+ name: 'Database Query',
54
+ type: 'n8n-nodes-base.postgres',
55
+ typeVersion: 2.6,
56
+ position: [450, 300],
57
+ parameters: {
58
+ operation: 'executeQuery',
59
+ query: 'SELECT * FROM users WHERE active = true'
60
+ },
61
+ credentials: {
62
+ postgres: {
63
+ id: 'cred_123',
64
+ name: 'Production Database'
65
+ }
66
+ },
67
+ disabled: false,
68
+ notes: 'This node queries active users from the production database',
69
+ notesInFlow: true,
70
+ executeOnce: true,
71
+ onError: 'continueErrorOutput',
72
+ retryOnFail: true,
73
+ maxTries: 3,
74
+ waitBetweenTries: 2000,
75
+ alwaysOutputData: true
76
+ };
77
+ console.log(JSON.stringify(completeNode, null, 2));
78
+ console.log('\n✅ All properties are at the correct level!\n');
79
+ console.log('2️⃣ Complete Workflow Example:');
80
+ const workflow = {
81
+ name: 'Production Data Processing',
82
+ nodes: [
83
+ {
84
+ id: 'trigger_1',
85
+ name: 'Every Hour',
86
+ type: 'n8n-nodes-base.scheduleTrigger',
87
+ typeVersion: 1.2,
88
+ position: [250, 300],
89
+ parameters: {
90
+ rule: { interval: [{ field: 'hours', hoursInterval: 1 }] }
91
+ },
92
+ notes: 'Runs every hour to check for new data',
93
+ notesInFlow: true
94
+ },
95
+ completeNode,
96
+ {
97
+ id: 'error_handler',
98
+ name: 'Error Notification',
99
+ type: 'n8n-nodes-base.slack',
100
+ typeVersion: 2.3,
101
+ position: [650, 450],
102
+ parameters: {
103
+ resource: 'message',
104
+ operation: 'post',
105
+ channel: '#alerts',
106
+ text: 'Database query failed!'
107
+ },
108
+ credentials: {
109
+ slackApi: {
110
+ id: 'cred_456',
111
+ name: 'Alert Slack'
112
+ }
113
+ },
114
+ executeOnce: true,
115
+ onError: 'continueRegularOutput'
116
+ }
117
+ ],
118
+ connections: {
119
+ 'Every Hour': {
120
+ main: [[{ node: 'Database Query', type: 'main', index: 0 }]]
121
+ },
122
+ 'Database Query': {
123
+ main: [[{ node: 'Process Data', type: 'main', index: 0 }]],
124
+ error: [[{ node: 'Error Notification', type: 'main', index: 0 }]]
125
+ }
126
+ }
127
+ };
128
+ console.log('\n3️⃣ Validating Workflow:');
129
+ const result = await validator.validateWorkflow(workflow, { profile: 'strict' });
130
+ console.log(`Valid: ${result.valid}`);
131
+ console.log(`Errors: ${result.errors.length}`);
132
+ console.log(`Warnings: ${result.warnings.length}`);
133
+ if (result.errors.length > 0) {
134
+ console.log('\nErrors:');
135
+ result.errors.forEach((err) => console.log(`- ${err.message}`));
136
+ }
137
+ console.log('\n4️⃣ Updating Node-Level Properties with Diff Engine:');
138
+ const operations = [
139
+ {
140
+ type: 'updateNode',
141
+ nodeName: 'Database Query',
142
+ changes: {
143
+ 'parameters.query': 'SELECT * FROM users WHERE active = true AND created_at > NOW() - INTERVAL \'7 days\'',
144
+ 'onError': 'stopWorkflow',
145
+ 'executeOnce': false,
146
+ 'notes': 'Updated to only query users from last 7 days',
147
+ 'maxTries': 5,
148
+ 'disabled': false
149
+ }
150
+ }
151
+ ];
152
+ console.log('Operations:');
153
+ console.log(JSON.stringify(operations, null, 2));
154
+ console.log('\n5️⃣ ❌ COMMON MISTAKES TO AVOID:');
155
+ const wrongNode = {
156
+ id: 'wrong_1',
157
+ name: 'Wrong Configuration',
158
+ type: 'n8n-nodes-base.httpRequest',
159
+ typeVersion: 4.2,
160
+ position: [250, 300],
161
+ parameters: {
162
+ method: 'POST',
163
+ url: 'https://api.example.com',
164
+ onError: 'continueErrorOutput',
165
+ retryOnFail: true,
166
+ executeOnce: true,
167
+ notes: 'This is wrong!',
168
+ credentials: { httpAuth: { id: '123' } }
169
+ }
170
+ };
171
+ console.log('❌ Wrong (properties inside parameters):');
172
+ console.log(JSON.stringify(wrongNode.parameters, null, 2));
173
+ const wrongWorkflow = {
174
+ name: 'Wrong Example',
175
+ nodes: [wrongNode],
176
+ connections: {}
177
+ };
178
+ const wrongResult = await validator.validateWorkflow(wrongWorkflow);
179
+ console.log('\nValidation of wrong configuration:');
180
+ wrongResult.errors.forEach((err) => console.log(`❌ ERROR: ${err.message}`));
181
+ console.log('\n✅ Summary of Node-Level Properties:');
182
+ console.log('- credentials: Link to credential sets');
183
+ console.log('- disabled: Disable node execution');
184
+ console.log('- notes: Internal documentation');
185
+ console.log('- notesInFlow: Show notes on canvas');
186
+ console.log('- executeOnce: Execute only once per run');
187
+ console.log('- onError: Error handling strategy');
188
+ console.log('- retryOnFail: Enable automatic retries');
189
+ console.log('- maxTries: Number of retry attempts');
190
+ console.log('- waitBetweenTries: Delay between retries');
191
+ console.log('- alwaysOutputData: Output data on error');
192
+ console.log('- continueOnFail: (deprecated - use onError)');
193
+ console.log('\n🎯 Remember: All these properties go at the NODE level, not inside parameters!');
194
+ }
195
+ main().catch(console.error);
196
+ //# sourceMappingURL=test-node-level-properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-node-level-properties.js","sourceRoot":"","sources":["../../src/scripts/test-node-level-properties.ts"],"names":[],"mappings":"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"}
@@ -8,13 +8,13 @@ export interface ValidationResult {
8
8
  autofix?: Record<string, any>;
9
9
  }
10
10
  export interface ValidationError {
11
- type: 'missing_required' | 'invalid_type' | 'invalid_value' | 'incompatible';
11
+ type: 'missing_required' | 'invalid_type' | 'invalid_value' | 'incompatible' | 'invalid_configuration';
12
12
  property: string;
13
13
  message: string;
14
14
  fix?: string;
15
15
  }
16
16
  export interface ValidationWarning {
17
- type: 'missing_common' | 'deprecated' | 'inefficient' | 'security';
17
+ type: 'missing_common' | 'deprecated' | 'inefficient' | 'security' | 'best_practice' | 'invalid_value';
18
18
  property?: string;
19
19
  message: string;
20
20
  suggestion?: string;