n8n-mcp 2.22.5 → 2.22.6

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 (200) hide show
  1. package/data/nodes.db +0 -0
  2. package/dist/mcp/index.js +0 -0
  3. package/package.json +10 -1
  4. package/dist/mcp/absolute-minimal.d.ts +0 -4
  5. package/dist/mcp/absolute-minimal.d.ts.map +0 -1
  6. package/dist/mcp/absolute-minimal.js +0 -34
  7. package/dist/mcp/absolute-minimal.js.map +0 -1
  8. package/dist/mcp/fixed-protocol.d.ts +0 -17
  9. package/dist/mcp/fixed-protocol.d.ts.map +0 -1
  10. package/dist/mcp/fixed-protocol.js +0 -162
  11. package/dist/mcp/fixed-protocol.js.map +0 -1
  12. package/dist/mcp/handlers-documentation.d.ts +0 -18
  13. package/dist/mcp/handlers-documentation.d.ts.map +0 -1
  14. package/dist/mcp/handlers-documentation.js +0 -113
  15. package/dist/mcp/handlers-documentation.js.map +0 -1
  16. package/dist/mcp/minimal-test.d.ts +0 -3
  17. package/dist/mcp/minimal-test.d.ts.map +0 -1
  18. package/dist/mcp/minimal-test.js +0 -83
  19. package/dist/mcp/minimal-test.js.map +0 -1
  20. package/dist/mcp/stderr-test.d.ts +0 -2
  21. package/dist/mcp/stderr-test.d.ts.map +0 -1
  22. package/dist/mcp/stderr-test.js +0 -32
  23. package/dist/mcp/stderr-test.js.map +0 -1
  24. package/dist/mcp/tool-docs/special/code-node-guide.d.ts +0 -3
  25. package/dist/mcp/tool-docs/special/code-node-guide.d.ts.map +0 -1
  26. package/dist/mcp/tool-docs/special/code-node-guide.js +0 -61
  27. package/dist/mcp/tool-docs/special/code-node-guide.js.map +0 -1
  28. package/dist/mcp/tool-docs/special/index.d.ts +0 -2
  29. package/dist/mcp/tool-docs/special/index.d.ts.map +0 -1
  30. package/dist/mcp/tool-docs/special/index.js +0 -6
  31. package/dist/mcp/tool-docs/special/index.js.map +0 -1
  32. package/dist/mcp/tool-docs/templates/get-node-for-task.d.ts +0 -3
  33. package/dist/mcp/tool-docs/templates/get-node-for-task.d.ts.map +0 -1
  34. package/dist/mcp/tool-docs/templates/get-node-for-task.js +0 -50
  35. package/dist/mcp/tool-docs/templates/get-node-for-task.js.map +0 -1
  36. package/dist/mcp/tools-documentation-new.d.ts +0 -6
  37. package/dist/mcp/tools-documentation-new.d.ts.map +0 -1
  38. package/dist/mcp/tools-documentation-new.js +0 -163
  39. package/dist/mcp/tools-documentation-new.js.map +0 -1
  40. package/dist/mcp/ultra-minimal.d.ts +0 -8
  41. package/dist/mcp/ultra-minimal.d.ts.map +0 -1
  42. package/dist/mcp/ultra-minimal.js +0 -93
  43. package/dist/mcp/ultra-minimal.js.map +0 -1
  44. package/dist/mcp/working-test.d.ts +0 -3
  45. package/dist/mcp/working-test.d.ts.map +0 -1
  46. package/dist/mcp/working-test.js +0 -48
  47. package/dist/mcp/working-test.js.map +0 -1
  48. package/dist/mcp/wrapper.sh +0 -28
  49. package/dist/scripts/debug-n8n-auth.d.ts +0 -3
  50. package/dist/scripts/debug-n8n-auth.d.ts.map +0 -1
  51. package/dist/scripts/debug-n8n-auth.js +0 -97
  52. package/dist/scripts/debug-n8n-auth.js.map +0 -1
  53. package/dist/scripts/debug-node.d.ts +0 -3
  54. package/dist/scripts/debug-node.d.ts.map +0 -1
  55. package/dist/scripts/debug-node.js +0 -59
  56. package/dist/scripts/debug-node.js.map +0 -1
  57. package/dist/scripts/generate-metadata-only.d.ts +0 -3
  58. package/dist/scripts/generate-metadata-only.d.ts.map +0 -1
  59. package/dist/scripts/generate-metadata-only.js +0 -146
  60. package/dist/scripts/generate-metadata-only.js.map +0 -1
  61. package/dist/scripts/generate-metadata-sync.d.ts +0 -3
  62. package/dist/scripts/generate-metadata-sync.d.ts.map +0 -1
  63. package/dist/scripts/generate-metadata-sync.js +0 -136
  64. package/dist/scripts/generate-metadata-sync.js.map +0 -1
  65. package/dist/scripts/test-ai-workflow-validation.d.ts +0 -3
  66. package/dist/scripts/test-ai-workflow-validation.d.ts.map +0 -1
  67. package/dist/scripts/test-ai-workflow-validation.js +0 -191
  68. package/dist/scripts/test-ai-workflow-validation.js.map +0 -1
  69. package/dist/scripts/test-api-headers.d.ts +0 -3
  70. package/dist/scripts/test-api-headers.d.ts.map +0 -1
  71. package/dist/scripts/test-api-headers.js +0 -35
  72. package/dist/scripts/test-api-headers.js.map +0 -1
  73. package/dist/scripts/test-batch-processing.d.ts +0 -3
  74. package/dist/scripts/test-batch-processing.d.ts.map +0 -1
  75. package/dist/scripts/test-batch-processing.js +0 -144
  76. package/dist/scripts/test-batch-processing.js.map +0 -1
  77. package/dist/scripts/test-docker-config-simulation.d.ts +0 -3
  78. package/dist/scripts/test-docker-config-simulation.d.ts.map +0 -1
  79. package/dist/scripts/test-docker-config-simulation.js +0 -74
  80. package/dist/scripts/test-docker-config-simulation.js.map +0 -1
  81. package/dist/scripts/test-enhanced-validation.d.ts +0 -3
  82. package/dist/scripts/test-enhanced-validation.d.ts.map +0 -1
  83. package/dist/scripts/test-enhanced-validation.js +0 -117
  84. package/dist/scripts/test-enhanced-validation.js.map +0 -1
  85. package/dist/scripts/test-error-handling-validation.d.ts +0 -3
  86. package/dist/scripts/test-error-handling-validation.d.ts.map +0 -1
  87. package/dist/scripts/test-error-handling-validation.js +0 -340
  88. package/dist/scripts/test-error-handling-validation.js.map +0 -1
  89. package/dist/scripts/test-issue-45-fix.d.ts +0 -3
  90. package/dist/scripts/test-issue-45-fix.d.ts.map +0 -1
  91. package/dist/scripts/test-issue-45-fix.js +0 -136
  92. package/dist/scripts/test-issue-45-fix.js.map +0 -1
  93. package/dist/scripts/test-issue-74.d.ts +0 -3
  94. package/dist/scripts/test-issue-74.d.ts.map +0 -1
  95. package/dist/scripts/test-issue-74.js +0 -112
  96. package/dist/scripts/test-issue-74.js.map +0 -1
  97. package/dist/scripts/test-lazy-config.d.ts +0 -3
  98. package/dist/scripts/test-lazy-config.d.ts.map +0 -1
  99. package/dist/scripts/test-lazy-config.js +0 -60
  100. package/dist/scripts/test-lazy-config.js.map +0 -1
  101. package/dist/scripts/test-limited-results.d.ts +0 -3
  102. package/dist/scripts/test-limited-results.d.ts.map +0 -1
  103. package/dist/scripts/test-limited-results.js +0 -76
  104. package/dist/scripts/test-limited-results.js.map +0 -1
  105. package/dist/scripts/test-mcp-n8n-update-partial.d.ts +0 -3
  106. package/dist/scripts/test-mcp-n8n-update-partial.d.ts.map +0 -1
  107. package/dist/scripts/test-mcp-n8n-update-partial.js +0 -138
  108. package/dist/scripts/test-mcp-n8n-update-partial.js.map +0 -1
  109. package/dist/scripts/test-mcp-tools.d.ts +0 -3
  110. package/dist/scripts/test-mcp-tools.d.ts.map +0 -1
  111. package/dist/scripts/test-mcp-tools.js +0 -36
  112. package/dist/scripts/test-mcp-tools.js.map +0 -1
  113. package/dist/scripts/test-metadata-generation.d.ts +0 -3
  114. package/dist/scripts/test-metadata-generation.d.ts.map +0 -1
  115. package/dist/scripts/test-metadata-generation.js +0 -96
  116. package/dist/scripts/test-metadata-generation.js.map +0 -1
  117. package/dist/scripts/test-n8n-manager-integration.d.ts +0 -3
  118. package/dist/scripts/test-n8n-manager-integration.d.ts.map +0 -1
  119. package/dist/scripts/test-n8n-manager-integration.js +0 -122
  120. package/dist/scripts/test-n8n-manager-integration.js.map +0 -1
  121. package/dist/scripts/test-n8n-validate-workflow.d.ts +0 -3
  122. package/dist/scripts/test-n8n-validate-workflow.d.ts.map +0 -1
  123. package/dist/scripts/test-n8n-validate-workflow.js +0 -125
  124. package/dist/scripts/test-n8n-validate-workflow.js.map +0 -1
  125. package/dist/scripts/test-node-level-properties.d.ts +0 -3
  126. package/dist/scripts/test-node-level-properties.d.ts.map +0 -1
  127. package/dist/scripts/test-node-level-properties.js +0 -196
  128. package/dist/scripts/test-node-level-properties.js.map +0 -1
  129. package/dist/scripts/test-nodes.d.ts +0 -3
  130. package/dist/scripts/test-nodes.d.ts.map +0 -1
  131. package/dist/scripts/test-nodes.js +0 -91
  132. package/dist/scripts/test-nodes.js.map +0 -1
  133. package/dist/scripts/test-single-workflow.d.ts +0 -3
  134. package/dist/scripts/test-single-workflow.d.ts.map +0 -1
  135. package/dist/scripts/test-single-workflow.js +0 -112
  136. package/dist/scripts/test-single-workflow.js.map +0 -1
  137. package/dist/scripts/test-template-validation.d.ts +0 -3
  138. package/dist/scripts/test-template-validation.d.ts.map +0 -1
  139. package/dist/scripts/test-template-validation.js +0 -142
  140. package/dist/scripts/test-template-validation.js.map +0 -1
  141. package/dist/scripts/test-templates.d.ts +0 -4
  142. package/dist/scripts/test-templates.d.ts.map +0 -1
  143. package/dist/scripts/test-templates.js +0 -99
  144. package/dist/scripts/test-templates.js.map +0 -1
  145. package/dist/scripts/test-tools-documentation.d.ts +0 -2
  146. package/dist/scripts/test-tools-documentation.d.ts.map +0 -1
  147. package/dist/scripts/test-tools-documentation.js +0 -41
  148. package/dist/scripts/test-tools-documentation.js.map +0 -1
  149. package/dist/scripts/test-transactional-diff.d.ts +0 -2
  150. package/dist/scripts/test-transactional-diff.d.ts.map +0 -1
  151. package/dist/scripts/test-transactional-diff.js +0 -240
  152. package/dist/scripts/test-transactional-diff.js.map +0 -1
  153. package/dist/scripts/test-update-partial-debug.d.ts +0 -3
  154. package/dist/scripts/test-update-partial-debug.d.ts.map +0 -1
  155. package/dist/scripts/test-update-partial-debug.js +0 -92
  156. package/dist/scripts/test-update-partial-debug.js.map +0 -1
  157. package/dist/scripts/test-updatenode-null-fix.d.ts +0 -3
  158. package/dist/scripts/test-updatenode-null-fix.d.ts.map +0 -1
  159. package/dist/scripts/test-updatenode-null-fix.js +0 -156
  160. package/dist/scripts/test-updatenode-null-fix.js.map +0 -1
  161. package/dist/scripts/test-validation-parity.d.ts +0 -2
  162. package/dist/scripts/test-validation-parity.d.ts.map +0 -1
  163. package/dist/scripts/test-validation-parity.js +0 -153
  164. package/dist/scripts/test-validation-parity.js.map +0 -1
  165. package/dist/scripts/test-version-extraction.d.ts +0 -2
  166. package/dist/scripts/test-version-extraction.d.ts.map +0 -1
  167. package/dist/scripts/test-version-extraction.js +0 -74
  168. package/dist/scripts/test-version-extraction.js.map +0 -1
  169. package/dist/scripts/test-workflow-diff.d.ts +0 -3
  170. package/dist/scripts/test-workflow-diff.d.ts.map +0 -1
  171. package/dist/scripts/test-workflow-diff.js +0 -328
  172. package/dist/scripts/test-workflow-diff.js.map +0 -1
  173. package/dist/scripts/test-workflow-validation.d.ts +0 -3
  174. package/dist/scripts/test-workflow-validation.d.ts.map +0 -1
  175. package/dist/scripts/test-workflow-validation.js +0 -238
  176. package/dist/scripts/test-workflow-validation.js.map +0 -1
  177. package/dist/services/workflow-ownership.d.ts +0 -35
  178. package/dist/services/workflow-ownership.d.ts.map +0 -1
  179. package/dist/services/workflow-ownership.js +0 -195
  180. package/dist/services/workflow-ownership.js.map +0 -1
  181. package/dist/sse-server.d.ts +0 -8
  182. package/dist/sse-server.d.ts.map +0 -1
  183. package/dist/sse-server.js +0 -652
  184. package/dist/sse-server.js.map +0 -1
  185. package/dist/types/session-restoration.d.ts +0 -25
  186. package/dist/types/session-restoration.d.ts.map +0 -1
  187. package/dist/types/session-restoration.js +0 -3
  188. package/dist/types/session-restoration.js.map +0 -1
  189. package/dist/types/sse.d.ts +0 -42
  190. package/dist/types/sse.d.ts.map +0 -1
  191. package/dist/types/sse.js +0 -3
  192. package/dist/types/sse.js.map +0 -1
  193. package/dist/utils/sse-session-manager.d.ts +0 -23
  194. package/dist/utils/sse-session-manager.d.ts.map +0 -1
  195. package/dist/utils/sse-session-manager.js +0 -178
  196. package/dist/utils/sse-session-manager.js.map +0 -1
  197. package/dist/utils/version-utils.d.ts +0 -16
  198. package/dist/utils/version-utils.d.ts.map +0 -1
  199. package/dist/utils/version-utils.js +0 -129
  200. package/dist/utils/version-utils.js.map +0 -1
@@ -1,125 +0,0 @@
1
- #!/usr/bin/env ts-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 dotenv_1 = require("dotenv");
38
- const handlers_n8n_manager_1 = require("../mcp/handlers-n8n-manager");
39
- const node_repository_1 = require("../database/node-repository");
40
- const database_adapter_1 = require("../database/database-adapter");
41
- const logger_1 = require("../utils/logger");
42
- const path = __importStar(require("path"));
43
- (0, dotenv_1.config)();
44
- const logger = new logger_1.Logger({ prefix: '[TestN8nValidateWorkflow]' });
45
- async function testN8nValidateWorkflow() {
46
- try {
47
- if (!process.env.N8N_API_URL || !process.env.N8N_API_KEY) {
48
- logger.error('N8N_API_URL and N8N_API_KEY must be set in environment variables');
49
- process.exit(1);
50
- }
51
- logger.info('n8n API Configuration:', {
52
- url: process.env.N8N_API_URL,
53
- hasApiKey: !!process.env.N8N_API_KEY
54
- });
55
- const dbPath = path.join(process.cwd(), 'data', 'nodes.db');
56
- const db = await (0, database_adapter_1.createDatabaseAdapter)(dbPath);
57
- const repository = new node_repository_1.NodeRepository(db);
58
- const testCases = [
59
- {
60
- name: 'Validate existing workflow with all options',
61
- args: {
62
- id: '1',
63
- options: {
64
- validateNodes: true,
65
- validateConnections: true,
66
- validateExpressions: true,
67
- profile: 'runtime'
68
- }
69
- }
70
- },
71
- {
72
- name: 'Validate with minimal profile',
73
- args: {
74
- id: '1',
75
- options: {
76
- profile: 'minimal'
77
- }
78
- }
79
- },
80
- {
81
- name: 'Validate connections only',
82
- args: {
83
- id: '1',
84
- options: {
85
- validateNodes: false,
86
- validateConnections: true,
87
- validateExpressions: false
88
- }
89
- }
90
- }
91
- ];
92
- for (const testCase of testCases) {
93
- logger.info(`\nRunning test: ${testCase.name}`);
94
- logger.info('Input:', JSON.stringify(testCase.args, null, 2));
95
- try {
96
- const result = await (0, handlers_n8n_manager_1.handleValidateWorkflow)(testCase.args, repository);
97
- if (result.success) {
98
- logger.info('✅ Validation completed successfully');
99
- logger.info('Result:', JSON.stringify(result.data, null, 2));
100
- }
101
- else {
102
- logger.error('❌ Validation failed');
103
- logger.error('Error:', result.error);
104
- if (result.details) {
105
- logger.error('Details:', JSON.stringify(result.details, null, 2));
106
- }
107
- }
108
- }
109
- catch (error) {
110
- logger.error('❌ Test case failed with exception:', error);
111
- }
112
- logger.info('-'.repeat(80));
113
- }
114
- logger.info('\n✅ All tests completed');
115
- }
116
- catch (error) {
117
- logger.error('Test script failed:', error);
118
- process.exit(1);
119
- }
120
- }
121
- testN8nValidateWorkflow().catch(error => {
122
- logger.error('Unhandled error:', error);
123
- process.exit(1);
124
- });
125
- //# sourceMappingURL=test-n8n-validate-workflow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-n8n-validate-workflow.js","sourceRoot":"","sources":["../../src/scripts/test-n8n-validate-workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,mCAAgC;AAChC,sEAAqE;AACrE,iEAA6D;AAC7D,mEAAqE;AACrE,4CAAyC;AACzC,2CAA6B;AAG7B,IAAA,eAAM,GAAE,CAAC;AAET,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC;AAEnE,KAAK,UAAU,uBAAuB;IACpC,IAAI,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACzD,MAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACpC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;YAC5B,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW;SACrC,CAAC,CAAC;QAGH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAC5D,MAAM,EAAE,GAAG,MAAM,IAAA,wCAAqB,EAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,gCAAc,CAAC,EAAE,CAAC,CAAC;QAG1C,MAAM,SAAS,GAAG;YAChB;gBACE,IAAI,EAAE,6CAA6C;gBACnD,IAAI,EAAE;oBACJ,EAAE,EAAE,GAAG;oBACP,OAAO,EAAE;wBACP,aAAa,EAAE,IAAI;wBACnB,mBAAmB,EAAE,IAAI;wBACzB,mBAAmB,EAAE,IAAI;wBACzB,OAAO,EAAE,SAAS;qBACnB;iBACF;aACF;YACD;gBACE,IAAI,EAAE,+BAA+B;gBACrC,IAAI,EAAE;oBACJ,EAAE,EAAE,GAAG;oBACP,OAAO,EAAE;wBACP,OAAO,EAAE,SAAS;qBACnB;iBACF;aACF;YACD;gBACE,IAAI,EAAE,2BAA2B;gBACjC,IAAI,EAAE;oBACJ,EAAE,EAAE,GAAG;oBACP,OAAO,EAAE;wBACP,aAAa,EAAE,KAAK;wBACpB,mBAAmB,EAAE,IAAI;wBACzB,mBAAmB,EAAE,KAAK;qBAC3B;iBACF;aACF;SACF,CAAC;QAGF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAE9D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAA,6CAAsB,EAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAEvE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBACnD,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;oBACpC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBACrC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACnB,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;oBACpE,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAEzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAGD,uBAAuB,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACtC,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=test-node-level-properties.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-node-level-properties.d.ts","sourceRoot":"","sources":["../../src/scripts/test-node-level-properties.ts"],"names":[],"mappings":""}
@@ -1,196 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-node-level-properties.js","sourceRoot":"","sources":["../../src/scripts/test-node-level-properties.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=test-nodes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-nodes.d.ts","sourceRoot":"","sources":["../../src/scripts/test-nodes.ts"],"names":[],"mappings":""}
@@ -1,91 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const database_adapter_1 = require("../database/database-adapter");
5
- const node_repository_1 = require("../database/node-repository");
6
- const TEST_CASES = [
7
- {
8
- nodeType: 'nodes-base.httpRequest',
9
- checks: {
10
- hasProperties: true,
11
- minProperties: 5,
12
- hasDocumentation: true,
13
- isVersioned: true
14
- }
15
- },
16
- {
17
- nodeType: 'nodes-base.slack',
18
- checks: {
19
- hasOperations: true,
20
- minOperations: 10,
21
- style: 'declarative'
22
- }
23
- },
24
- {
25
- nodeType: 'nodes-base.code',
26
- checks: {
27
- hasProperties: true,
28
- properties: ['mode', 'language', 'jsCode']
29
- }
30
- }
31
- ];
32
- async function runTests() {
33
- const db = await (0, database_adapter_1.createDatabaseAdapter)('./data/nodes.db');
34
- const repository = new node_repository_1.NodeRepository(db);
35
- console.log('🧪 Running node tests...\n');
36
- let passed = 0;
37
- let failed = 0;
38
- for (const testCase of TEST_CASES) {
39
- console.log(`Testing ${testCase.nodeType}...`);
40
- try {
41
- const node = repository.getNode(testCase.nodeType);
42
- if (!node) {
43
- throw new Error('Node not found');
44
- }
45
- for (const [check, expected] of Object.entries(testCase.checks)) {
46
- switch (check) {
47
- case 'hasProperties':
48
- if (expected && node.properties.length === 0) {
49
- throw new Error('No properties found');
50
- }
51
- break;
52
- case 'minProperties':
53
- if (node.properties.length < expected) {
54
- throw new Error(`Expected at least ${expected} properties, got ${node.properties.length}`);
55
- }
56
- break;
57
- case 'hasOperations':
58
- if (expected && node.operations.length === 0) {
59
- throw new Error('No operations found');
60
- }
61
- break;
62
- case 'minOperations':
63
- if (node.operations.length < expected) {
64
- throw new Error(`Expected at least ${expected} operations, got ${node.operations.length}`);
65
- }
66
- break;
67
- case 'properties':
68
- const propNames = node.properties.map((p) => p.name);
69
- for (const prop of expected) {
70
- if (!propNames.includes(prop)) {
71
- throw new Error(`Missing property: ${prop}`);
72
- }
73
- }
74
- break;
75
- }
76
- }
77
- console.log(`✅ ${testCase.nodeType} passed all checks\n`);
78
- passed++;
79
- }
80
- catch (error) {
81
- console.error(`❌ ${testCase.nodeType} failed: ${error.message}\n`);
82
- failed++;
83
- }
84
- }
85
- console.log(`\n📊 Test Results: ${passed} passed, ${failed} failed`);
86
- db.close();
87
- }
88
- if (require.main === module) {
89
- runTests().catch(console.error);
90
- }
91
- //# sourceMappingURL=test-nodes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-nodes.js","sourceRoot":"","sources":["../../src/scripts/test-nodes.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=test-single-workflow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-single-workflow.d.ts","sourceRoot":"","sources":["../../src/scripts/test-single-workflow.ts"],"names":[],"mappings":""}
@@ -1,112 +0,0 @@
1
- #!/usr/bin/env node
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 fs_1 = require("fs");
8
- const path_1 = __importDefault(require("path"));
9
- const node_repository_1 = require("../database/node-repository");
10
- const database_adapter_1 = require("../database/database-adapter");
11
- const workflow_validator_1 = require("../services/workflow-validator");
12
- const enhanced_config_validator_1 = require("../services/enhanced-config-validator");
13
- const logger_1 = require("../utils/logger");
14
- const logger = new logger_1.Logger({ prefix: '[test-single-workflow]' });
15
- async function testSingleWorkflow() {
16
- const workflowPath = process.argv[2];
17
- if (!workflowPath) {
18
- logger.error('Please provide a workflow file path');
19
- process.exit(1);
20
- }
21
- if (!(0, fs_1.existsSync)(workflowPath)) {
22
- logger.error(`Workflow file not found: ${workflowPath}`);
23
- process.exit(1);
24
- }
25
- logger.info(`Testing workflow: ${workflowPath}\n`);
26
- const dbPath = path_1.default.join(process.cwd(), 'data', 'nodes.db');
27
- if (!(0, fs_1.existsSync)(dbPath)) {
28
- logger.error('Database not found. Run npm run rebuild first.');
29
- process.exit(1);
30
- }
31
- const db = await (0, database_adapter_1.createDatabaseAdapter)(dbPath);
32
- const repository = new node_repository_1.NodeRepository(db);
33
- const validator = new workflow_validator_1.WorkflowValidator(repository, enhanced_config_validator_1.EnhancedConfigValidator);
34
- try {
35
- const workflowJson = JSON.parse((0, fs_1.readFileSync)(workflowPath, 'utf8'));
36
- logger.info(`Workflow: ${workflowJson.name || 'Unnamed'}`);
37
- logger.info(`Nodes: ${workflowJson.nodes?.length || 0}`);
38
- logger.info(`Connections: ${Object.keys(workflowJson.connections || {}).length}`);
39
- logger.info('\nNode types in workflow:');
40
- workflowJson.nodes?.forEach((node) => {
41
- logger.info(` - ${node.name}: ${node.type}`);
42
- });
43
- logger.info('\nChecking node types in database:');
44
- for (const node of workflowJson.nodes || []) {
45
- const dbNode = repository.getNode(node.type);
46
- if (dbNode) {
47
- logger.info(` ✓ ${node.type} found in database`);
48
- }
49
- else {
50
- let shortType = node.type;
51
- if (node.type.startsWith('n8n-nodes-base.')) {
52
- shortType = node.type.replace('n8n-nodes-base.', 'nodes-base.');
53
- }
54
- else if (node.type.startsWith('@n8n/n8n-nodes-langchain.')) {
55
- shortType = node.type.replace('@n8n/n8n-nodes-langchain.', 'nodes-langchain.');
56
- }
57
- const dbNodeShort = repository.getNode(shortType);
58
- if (dbNodeShort) {
59
- logger.info(` ✓ ${shortType} found in database (normalized)`);
60
- }
61
- else {
62
- logger.error(` ✗ ${node.type} NOT found in database`);
63
- }
64
- }
65
- }
66
- logger.info('\n' + '='.repeat(80));
67
- logger.info('VALIDATION RESULTS');
68
- logger.info('='.repeat(80) + '\n');
69
- const result = await validator.validateWorkflow(workflowJson);
70
- console.log(`Valid: ${result.valid ? '✅ YES' : '❌ NO'}`);
71
- if (result.errors.length > 0) {
72
- console.log('\nErrors:');
73
- result.errors.forEach((error) => {
74
- console.log(` - ${error.nodeName || 'workflow'}: ${error.message}`);
75
- });
76
- }
77
- if (result.warnings.length > 0) {
78
- console.log('\nWarnings:');
79
- result.warnings.forEach((warning) => {
80
- const msg = typeof warning.message === 'string'
81
- ? warning.message
82
- : JSON.stringify(warning.message);
83
- console.log(` - ${warning.nodeName || 'workflow'}: ${msg}`);
84
- });
85
- }
86
- if (result.suggestions?.length > 0) {
87
- console.log('\nSuggestions:');
88
- result.suggestions.forEach((suggestion) => {
89
- console.log(` - ${suggestion}`);
90
- });
91
- }
92
- console.log('\nStatistics:');
93
- console.log(` - Total nodes: ${result.statistics.totalNodes}`);
94
- console.log(` - Enabled nodes: ${result.statistics.enabledNodes}`);
95
- console.log(` - Trigger nodes: ${result.statistics.triggerNodes}`);
96
- console.log(` - Valid connections: ${result.statistics.validConnections}`);
97
- console.log(` - Invalid connections: ${result.statistics.invalidConnections}`);
98
- console.log(` - Expressions validated: ${result.statistics.expressionsValidated}`);
99
- }
100
- catch (error) {
101
- logger.error('Failed to validate workflow:', error);
102
- process.exit(1);
103
- }
104
- finally {
105
- db.close();
106
- }
107
- }
108
- testSingleWorkflow().catch(error => {
109
- logger.error('Test failed:', error);
110
- process.exit(1);
111
- });
112
- //# sourceMappingURL=test-single-workflow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-single-workflow.js","sourceRoot":"","sources":["../../src/scripts/test-single-workflow.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=test-template-validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-template-validation.d.ts","sourceRoot":"","sources":["../../src/scripts/test-template-validation.ts"],"names":[],"mappings":""}