n8n-mcp 2.21.0 โ 2.22.5
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 +1 -0
- package/data/nodes.db +0 -0
- package/dist/database/node-repository.d.ts +62 -0
- package/dist/database/node-repository.d.ts.map +1 -1
- package/dist/database/node-repository.js +276 -0
- package/dist/database/node-repository.js.map +1 -1
- package/dist/mcp/absolute-minimal.d.ts +4 -0
- package/dist/mcp/absolute-minimal.d.ts.map +1 -0
- package/dist/mcp/absolute-minimal.js +34 -0
- package/dist/mcp/absolute-minimal.js.map +1 -0
- package/dist/mcp/fixed-protocol.d.ts +17 -0
- package/dist/mcp/fixed-protocol.d.ts.map +1 -0
- package/dist/mcp/fixed-protocol.js +162 -0
- package/dist/mcp/fixed-protocol.js.map +1 -0
- package/dist/mcp/handlers-documentation.d.ts +18 -0
- package/dist/mcp/handlers-documentation.d.ts.map +1 -0
- package/dist/mcp/handlers-documentation.js +113 -0
- package/dist/mcp/handlers-documentation.js.map +1 -0
- package/dist/mcp/handlers-n8n-manager.d.ts +2 -1
- package/dist/mcp/handlers-n8n-manager.d.ts.map +1 -1
- package/dist/mcp/handlers-n8n-manager.js +193 -5
- package/dist/mcp/handlers-n8n-manager.js.map +1 -1
- package/dist/mcp/handlers-workflow-diff.d.ts +2 -1
- package/dist/mcp/handlers-workflow-diff.d.ts.map +1 -1
- package/dist/mcp/handlers-workflow-diff.js +30 -2
- package/dist/mcp/handlers-workflow-diff.js.map +1 -1
- package/dist/mcp/index.js +0 -0
- package/dist/mcp/minimal-test.d.ts +3 -0
- package/dist/mcp/minimal-test.d.ts.map +1 -0
- package/dist/mcp/minimal-test.js +83 -0
- package/dist/mcp/minimal-test.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +5 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/stderr-test.d.ts +2 -0
- package/dist/mcp/stderr-test.d.ts.map +1 -0
- package/dist/mcp/stderr-test.js +32 -0
- package/dist/mcp/stderr-test.js.map +1 -0
- package/dist/mcp/tool-docs/special/code-node-guide.d.ts +3 -0
- package/dist/mcp/tool-docs/special/code-node-guide.d.ts.map +1 -0
- package/dist/mcp/tool-docs/special/code-node-guide.js +61 -0
- package/dist/mcp/tool-docs/special/code-node-guide.js.map +1 -0
- package/dist/mcp/tool-docs/special/index.d.ts +2 -0
- package/dist/mcp/tool-docs/special/index.d.ts.map +1 -0
- package/dist/mcp/tool-docs/special/index.js +6 -0
- package/dist/mcp/tool-docs/special/index.js.map +1 -0
- package/dist/mcp/tool-docs/templates/get-node-for-task.d.ts +3 -0
- package/dist/mcp/tool-docs/templates/get-node-for-task.d.ts.map +1 -0
- package/dist/mcp/tool-docs/templates/get-node-for-task.js +50 -0
- package/dist/mcp/tool-docs/templates/get-node-for-task.js.map +1 -0
- package/dist/mcp/tool-docs/workflow_management/n8n-autofix-workflow.d.ts.map +1 -1
- package/dist/mcp/tool-docs/workflow_management/n8n-autofix-workflow.js +47 -11
- package/dist/mcp/tool-docs/workflow_management/n8n-autofix-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 +6 -0
- package/dist/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.js.map +1 -1
- package/dist/mcp/tools-documentation-new.d.ts +6 -0
- package/dist/mcp/tools-documentation-new.d.ts.map +1 -0
- package/dist/mcp/tools-documentation-new.js +163 -0
- package/dist/mcp/tools-documentation-new.js.map +1 -0
- package/dist/mcp/tools-n8n-manager.d.ts.map +1 -1
- package/dist/mcp/tools-n8n-manager.js +55 -1
- package/dist/mcp/tools-n8n-manager.js.map +1 -1
- package/dist/mcp/ultra-minimal.d.ts +8 -0
- package/dist/mcp/ultra-minimal.d.ts.map +1 -0
- package/dist/mcp/ultra-minimal.js +93 -0
- package/dist/mcp/ultra-minimal.js.map +1 -0
- package/dist/mcp/working-test.d.ts +3 -0
- package/dist/mcp/working-test.d.ts.map +1 -0
- package/dist/mcp/working-test.js +48 -0
- package/dist/mcp/working-test.js.map +1 -0
- package/dist/mcp/wrapper.sh +28 -0
- package/dist/scripts/debug-n8n-auth.d.ts +3 -0
- package/dist/scripts/debug-n8n-auth.d.ts.map +1 -0
- package/dist/scripts/debug-n8n-auth.js +97 -0
- package/dist/scripts/debug-n8n-auth.js.map +1 -0
- package/dist/scripts/debug-node.d.ts +3 -0
- package/dist/scripts/debug-node.d.ts.map +1 -0
- package/dist/scripts/debug-node.js +59 -0
- package/dist/scripts/debug-node.js.map +1 -0
- package/dist/scripts/generate-metadata-only.d.ts +3 -0
- package/dist/scripts/generate-metadata-only.d.ts.map +1 -0
- package/dist/scripts/generate-metadata-only.js +146 -0
- package/dist/scripts/generate-metadata-only.js.map +1 -0
- package/dist/scripts/generate-metadata-sync.d.ts +3 -0
- package/dist/scripts/generate-metadata-sync.d.ts.map +1 -0
- package/dist/scripts/generate-metadata-sync.js +136 -0
- package/dist/scripts/generate-metadata-sync.js.map +1 -0
- package/dist/scripts/test-ai-workflow-validation.d.ts +3 -0
- package/dist/scripts/test-ai-workflow-validation.d.ts.map +1 -0
- package/dist/scripts/test-ai-workflow-validation.js +191 -0
- package/dist/scripts/test-ai-workflow-validation.js.map +1 -0
- package/dist/scripts/test-api-headers.d.ts +3 -0
- package/dist/scripts/test-api-headers.d.ts.map +1 -0
- package/dist/scripts/test-api-headers.js +35 -0
- package/dist/scripts/test-api-headers.js.map +1 -0
- package/dist/scripts/test-autofix-workflow.js +3 -3
- package/dist/scripts/test-autofix-workflow.js.map +1 -1
- package/dist/scripts/test-batch-processing.d.ts +3 -0
- package/dist/scripts/test-batch-processing.d.ts.map +1 -0
- package/dist/scripts/test-batch-processing.js +144 -0
- package/dist/scripts/test-batch-processing.js.map +1 -0
- package/dist/scripts/test-docker-config-simulation.d.ts +3 -0
- package/dist/scripts/test-docker-config-simulation.d.ts.map +1 -0
- package/dist/scripts/test-docker-config-simulation.js +74 -0
- package/dist/scripts/test-docker-config-simulation.js.map +1 -0
- package/dist/scripts/test-enhanced-validation.d.ts +3 -0
- package/dist/scripts/test-enhanced-validation.d.ts.map +1 -0
- package/dist/scripts/test-enhanced-validation.js +117 -0
- package/dist/scripts/test-enhanced-validation.js.map +1 -0
- package/dist/scripts/test-error-handling-validation.d.ts +3 -0
- package/dist/scripts/test-error-handling-validation.d.ts.map +1 -0
- package/dist/scripts/test-error-handling-validation.js +340 -0
- package/dist/scripts/test-error-handling-validation.js.map +1 -0
- package/dist/scripts/test-issue-45-fix.d.ts +3 -0
- package/dist/scripts/test-issue-45-fix.d.ts.map +1 -0
- package/dist/scripts/test-issue-45-fix.js +136 -0
- package/dist/scripts/test-issue-45-fix.js.map +1 -0
- package/dist/scripts/test-issue-74.d.ts +3 -0
- package/dist/scripts/test-issue-74.d.ts.map +1 -0
- package/dist/scripts/test-issue-74.js +112 -0
- package/dist/scripts/test-issue-74.js.map +1 -0
- package/dist/scripts/test-lazy-config.d.ts +3 -0
- package/dist/scripts/test-lazy-config.d.ts.map +1 -0
- package/dist/scripts/test-lazy-config.js +60 -0
- package/dist/scripts/test-lazy-config.js.map +1 -0
- package/dist/scripts/test-limited-results.d.ts +3 -0
- package/dist/scripts/test-limited-results.d.ts.map +1 -0
- package/dist/scripts/test-limited-results.js +76 -0
- package/dist/scripts/test-limited-results.js.map +1 -0
- package/dist/scripts/test-mcp-n8n-update-partial.d.ts +3 -0
- package/dist/scripts/test-mcp-n8n-update-partial.d.ts.map +1 -0
- package/dist/scripts/test-mcp-n8n-update-partial.js +138 -0
- package/dist/scripts/test-mcp-n8n-update-partial.js.map +1 -0
- package/dist/scripts/test-mcp-tools.d.ts +3 -0
- package/dist/scripts/test-mcp-tools.d.ts.map +1 -0
- package/dist/scripts/test-mcp-tools.js +36 -0
- package/dist/scripts/test-mcp-tools.js.map +1 -0
- package/dist/scripts/test-metadata-generation.d.ts +3 -0
- package/dist/scripts/test-metadata-generation.d.ts.map +1 -0
- package/dist/scripts/test-metadata-generation.js +96 -0
- package/dist/scripts/test-metadata-generation.js.map +1 -0
- package/dist/scripts/test-n8n-manager-integration.d.ts +3 -0
- package/dist/scripts/test-n8n-manager-integration.d.ts.map +1 -0
- package/dist/scripts/test-n8n-manager-integration.js +122 -0
- package/dist/scripts/test-n8n-manager-integration.js.map +1 -0
- package/dist/scripts/test-n8n-validate-workflow.d.ts +3 -0
- package/dist/scripts/test-n8n-validate-workflow.d.ts.map +1 -0
- package/dist/scripts/test-n8n-validate-workflow.js +125 -0
- package/dist/scripts/test-n8n-validate-workflow.js.map +1 -0
- package/dist/scripts/test-node-level-properties.d.ts +3 -0
- package/dist/scripts/test-node-level-properties.d.ts.map +1 -0
- package/dist/scripts/test-node-level-properties.js +196 -0
- package/dist/scripts/test-node-level-properties.js.map +1 -0
- package/dist/scripts/test-node-suggestions.js +1 -1
- package/dist/scripts/test-node-suggestions.js.map +1 -1
- package/dist/scripts/test-nodes.d.ts +3 -0
- package/dist/scripts/test-nodes.d.ts.map +1 -0
- package/dist/scripts/test-nodes.js +91 -0
- package/dist/scripts/test-nodes.js.map +1 -0
- package/dist/scripts/test-single-workflow.d.ts +3 -0
- package/dist/scripts/test-single-workflow.d.ts.map +1 -0
- package/dist/scripts/test-single-workflow.js +112 -0
- package/dist/scripts/test-single-workflow.js.map +1 -0
- package/dist/scripts/test-template-validation.d.ts +3 -0
- package/dist/scripts/test-template-validation.d.ts.map +1 -0
- package/dist/scripts/test-template-validation.js +142 -0
- package/dist/scripts/test-template-validation.js.map +1 -0
- package/dist/scripts/test-templates.d.ts +4 -0
- package/dist/scripts/test-templates.d.ts.map +1 -0
- package/dist/scripts/test-templates.js +99 -0
- package/dist/scripts/test-templates.js.map +1 -0
- package/dist/scripts/test-tools-documentation.d.ts +2 -0
- package/dist/scripts/test-tools-documentation.d.ts.map +1 -0
- package/dist/scripts/test-tools-documentation.js +41 -0
- package/dist/scripts/test-tools-documentation.js.map +1 -0
- package/dist/scripts/test-transactional-diff.d.ts +2 -0
- package/dist/scripts/test-transactional-diff.d.ts.map +1 -0
- package/dist/scripts/test-transactional-diff.js +240 -0
- package/dist/scripts/test-transactional-diff.js.map +1 -0
- package/dist/scripts/test-update-partial-debug.d.ts +3 -0
- package/dist/scripts/test-update-partial-debug.d.ts.map +1 -0
- package/dist/scripts/test-update-partial-debug.js +92 -0
- package/dist/scripts/test-update-partial-debug.js.map +1 -0
- package/dist/scripts/test-updatenode-null-fix.d.ts +3 -0
- package/dist/scripts/test-updatenode-null-fix.d.ts.map +1 -0
- package/dist/scripts/test-updatenode-null-fix.js +156 -0
- package/dist/scripts/test-updatenode-null-fix.js.map +1 -0
- package/dist/scripts/test-validation-parity.d.ts +2 -0
- package/dist/scripts/test-validation-parity.d.ts.map +1 -0
- package/dist/scripts/test-validation-parity.js +153 -0
- package/dist/scripts/test-validation-parity.js.map +1 -0
- package/dist/scripts/test-version-extraction.d.ts +2 -0
- package/dist/scripts/test-version-extraction.d.ts.map +1 -0
- package/dist/scripts/test-version-extraction.js +74 -0
- package/dist/scripts/test-version-extraction.js.map +1 -0
- package/dist/scripts/test-webhook-autofix.js +1 -1
- package/dist/scripts/test-webhook-autofix.js.map +1 -1
- package/dist/scripts/test-workflow-diff.d.ts +3 -0
- package/dist/scripts/test-workflow-diff.d.ts.map +1 -0
- package/dist/scripts/test-workflow-diff.js +328 -0
- package/dist/scripts/test-workflow-diff.js.map +1 -0
- package/dist/scripts/test-workflow-validation.d.ts +3 -0
- package/dist/scripts/test-workflow-validation.d.ts.map +1 -0
- package/dist/scripts/test-workflow-validation.js +238 -0
- package/dist/scripts/test-workflow-validation.js.map +1 -0
- package/dist/services/breaking-change-detector.d.ts +38 -0
- package/dist/services/breaking-change-detector.d.ts.map +1 -0
- package/dist/services/breaking-change-detector.js +184 -0
- package/dist/services/breaking-change-detector.js.map +1 -0
- package/dist/services/breaking-changes-registry.d.ts +28 -0
- package/dist/services/breaking-changes-registry.d.ts.map +1 -0
- package/dist/services/breaking-changes-registry.js +200 -0
- package/dist/services/breaking-changes-registry.js.map +1 -0
- package/dist/services/enhanced-config-validator.d.ts.map +1 -1
- package/dist/services/enhanced-config-validator.js +32 -0
- package/dist/services/enhanced-config-validator.js.map +1 -1
- package/dist/services/n8n-api-client.d.ts +1 -0
- package/dist/services/n8n-api-client.d.ts.map +1 -1
- package/dist/services/n8n-api-client.js +26 -4
- package/dist/services/n8n-api-client.js.map +1 -1
- package/dist/services/n8n-validation.d.ts +144 -6
- package/dist/services/n8n-validation.d.ts.map +1 -1
- package/dist/services/n8n-validation.js +12 -5
- package/dist/services/n8n-validation.js.map +1 -1
- package/dist/services/node-migration-service.d.ts +44 -0
- package/dist/services/node-migration-service.d.ts.map +1 -0
- package/dist/services/node-migration-service.js +231 -0
- package/dist/services/node-migration-service.js.map +1 -0
- package/dist/services/node-version-service.d.ts +63 -0
- package/dist/services/node-version-service.d.ts.map +1 -0
- package/dist/services/node-version-service.js +215 -0
- package/dist/services/node-version-service.js.map +1 -0
- package/dist/services/post-update-validator.d.ts +59 -0
- package/dist/services/post-update-validator.d.ts.map +1 -0
- package/dist/services/post-update-validator.js +231 -0
- package/dist/services/post-update-validator.js.map +1 -0
- package/dist/services/workflow-auto-fixer.d.ts +10 -2
- package/dist/services/workflow-auto-fixer.d.ts.map +1 -1
- package/dist/services/workflow-auto-fixer.js +124 -3
- package/dist/services/workflow-auto-fixer.js.map +1 -1
- package/dist/services/workflow-diff-engine.d.ts +1 -0
- package/dist/services/workflow-diff-engine.d.ts.map +1 -1
- package/dist/services/workflow-diff-engine.js +23 -1
- package/dist/services/workflow-diff-engine.js.map +1 -1
- package/dist/services/workflow-ownership.d.ts +35 -0
- package/dist/services/workflow-ownership.d.ts.map +1 -0
- package/dist/services/workflow-ownership.js +195 -0
- package/dist/services/workflow-ownership.js.map +1 -0
- package/dist/services/workflow-versioning-service.d.ts +102 -0
- package/dist/services/workflow-versioning-service.d.ts.map +1 -0
- package/dist/services/workflow-versioning-service.js +264 -0
- package/dist/services/workflow-versioning-service.js.map +1 -0
- package/dist/sse-server.d.ts +8 -0
- package/dist/sse-server.d.ts.map +1 -0
- package/dist/sse-server.js +652 -0
- package/dist/sse-server.js.map +1 -0
- package/dist/types/session-restoration.d.ts +25 -0
- package/dist/types/session-restoration.d.ts.map +1 -0
- package/dist/types/session-restoration.js +3 -0
- package/dist/types/session-restoration.js.map +1 -0
- package/dist/types/sse.d.ts +42 -0
- package/dist/types/sse.d.ts.map +1 -0
- package/dist/types/sse.js +3 -0
- package/dist/types/sse.js.map +1 -0
- package/dist/types/workflow-diff.d.ts +1 -0
- package/dist/types/workflow-diff.d.ts.map +1 -1
- package/dist/types/workflow-diff.js.map +1 -1
- package/dist/utils/sse-session-manager.d.ts +23 -0
- package/dist/utils/sse-session-manager.d.ts.map +1 -0
- package/dist/utils/sse-session-manager.js +178 -0
- package/dist/utils/sse-session-manager.js.map +1 -0
- package/dist/utils/version-utils.d.ts +16 -0
- package/dist/utils/version-utils.d.ts.map +1 -0
- package/dist/utils/version-utils.js +129 -0
- package/dist/utils/version-utils.js.map +1 -0
- package/package.json +1 -10
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const workflow_diff_engine_1 = require("../services/workflow-diff-engine");
|
|
4
|
+
const logger_1 = require("../utils/logger");
|
|
5
|
+
const logger = new logger_1.Logger({ prefix: '[TestTransactionalDiff]' });
|
|
6
|
+
const testWorkflow = {
|
|
7
|
+
id: 'test-workflow-123',
|
|
8
|
+
name: 'Test Workflow',
|
|
9
|
+
active: false,
|
|
10
|
+
nodes: [
|
|
11
|
+
{
|
|
12
|
+
id: '1',
|
|
13
|
+
name: 'Webhook',
|
|
14
|
+
type: 'n8n-nodes-base.webhook',
|
|
15
|
+
typeVersion: 2,
|
|
16
|
+
position: [200, 300],
|
|
17
|
+
parameters: {
|
|
18
|
+
path: '/test',
|
|
19
|
+
method: 'GET'
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
connections: {},
|
|
24
|
+
settings: {
|
|
25
|
+
executionOrder: 'v1'
|
|
26
|
+
},
|
|
27
|
+
tags: []
|
|
28
|
+
};
|
|
29
|
+
async function testAddNodesAndConnect() {
|
|
30
|
+
logger.info('Test 1: Add two nodes and connect them in one operation');
|
|
31
|
+
const engine = new workflow_diff_engine_1.WorkflowDiffEngine();
|
|
32
|
+
const request = {
|
|
33
|
+
id: testWorkflow.id,
|
|
34
|
+
operations: [
|
|
35
|
+
{
|
|
36
|
+
type: 'addConnection',
|
|
37
|
+
source: 'Webhook',
|
|
38
|
+
target: 'Process Data'
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
type: 'addConnection',
|
|
42
|
+
source: 'Process Data',
|
|
43
|
+
target: 'Send Email'
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
type: 'addNode',
|
|
47
|
+
node: {
|
|
48
|
+
id: '2',
|
|
49
|
+
name: 'Process Data',
|
|
50
|
+
type: 'n8n-nodes-base.set',
|
|
51
|
+
typeVersion: 3,
|
|
52
|
+
position: [400, 300],
|
|
53
|
+
parameters: {
|
|
54
|
+
mode: 'manual',
|
|
55
|
+
fields: []
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
type: 'addNode',
|
|
61
|
+
node: {
|
|
62
|
+
id: '3',
|
|
63
|
+
name: 'Send Email',
|
|
64
|
+
type: 'n8n-nodes-base.emailSend',
|
|
65
|
+
typeVersion: 2.1,
|
|
66
|
+
position: [600, 300],
|
|
67
|
+
parameters: {
|
|
68
|
+
to: 'test@example.com',
|
|
69
|
+
subject: 'Test'
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
};
|
|
75
|
+
const result = await engine.applyDiff(testWorkflow, request);
|
|
76
|
+
if (result.success) {
|
|
77
|
+
logger.info('โ
Test passed! Operations applied successfully');
|
|
78
|
+
logger.info(`Message: ${result.message}`);
|
|
79
|
+
const workflow = result.workflow;
|
|
80
|
+
const hasProcessData = workflow.nodes.some((n) => n.name === 'Process Data');
|
|
81
|
+
const hasSendEmail = workflow.nodes.some((n) => n.name === 'Send Email');
|
|
82
|
+
if (hasProcessData && hasSendEmail) {
|
|
83
|
+
logger.info('โ
Both nodes were added');
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
logger.error('โ Nodes were not added correctly');
|
|
87
|
+
}
|
|
88
|
+
const webhookConnections = workflow.connections['Webhook'];
|
|
89
|
+
const processConnections = workflow.connections['Process Data'];
|
|
90
|
+
if (webhookConnections && processConnections) {
|
|
91
|
+
logger.info('โ
Connections were established');
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
logger.error('โ Connections were not established correctly');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
logger.error('โ Test failed!');
|
|
99
|
+
logger.error('Errors:', result.errors);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
async function testOperationLimit() {
|
|
103
|
+
logger.info('\nTest 2: Operation limit (max 5)');
|
|
104
|
+
const engine = new workflow_diff_engine_1.WorkflowDiffEngine();
|
|
105
|
+
const request = {
|
|
106
|
+
id: testWorkflow.id,
|
|
107
|
+
operations: [
|
|
108
|
+
{ type: 'addNode', node: { id: '101', name: 'Node1', type: 'n8n-nodes-base.set', typeVersion: 1, position: [400, 100], parameters: {} } },
|
|
109
|
+
{ type: 'addNode', node: { id: '102', name: 'Node2', type: 'n8n-nodes-base.set', typeVersion: 1, position: [400, 200], parameters: {} } },
|
|
110
|
+
{ type: 'addNode', node: { id: '103', name: 'Node3', type: 'n8n-nodes-base.set', typeVersion: 1, position: [400, 300], parameters: {} } },
|
|
111
|
+
{ type: 'addNode', node: { id: '104', name: 'Node4', type: 'n8n-nodes-base.set', typeVersion: 1, position: [400, 400], parameters: {} } },
|
|
112
|
+
{ type: 'addNode', node: { id: '105', name: 'Node5', type: 'n8n-nodes-base.set', typeVersion: 1, position: [400, 500], parameters: {} } },
|
|
113
|
+
{ type: 'addNode', node: { id: '106', name: 'Node6', type: 'n8n-nodes-base.set', typeVersion: 1, position: [400, 600], parameters: {} } }
|
|
114
|
+
]
|
|
115
|
+
};
|
|
116
|
+
const result = await engine.applyDiff(testWorkflow, request);
|
|
117
|
+
if (!result.success && result.errors?.[0]?.message.includes('Too many operations')) {
|
|
118
|
+
logger.info('โ
Operation limit enforced correctly');
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
logger.error('โ Operation limit not enforced');
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
async function testValidateOnly() {
|
|
125
|
+
logger.info('\nTest 3: Validate only mode');
|
|
126
|
+
const engine = new workflow_diff_engine_1.WorkflowDiffEngine();
|
|
127
|
+
const request = {
|
|
128
|
+
id: testWorkflow.id,
|
|
129
|
+
operations: [
|
|
130
|
+
{
|
|
131
|
+
type: 'addConnection',
|
|
132
|
+
source: 'Webhook',
|
|
133
|
+
target: 'HTTP Request'
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'addNode',
|
|
137
|
+
node: {
|
|
138
|
+
id: '4',
|
|
139
|
+
name: 'HTTP Request',
|
|
140
|
+
type: 'n8n-nodes-base.httpRequest',
|
|
141
|
+
typeVersion: 4.2,
|
|
142
|
+
position: [400, 300],
|
|
143
|
+
parameters: {
|
|
144
|
+
method: 'GET',
|
|
145
|
+
url: 'https://api.example.com'
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'updateSettings',
|
|
151
|
+
settings: {
|
|
152
|
+
saveDataErrorExecution: 'all'
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
validateOnly: true
|
|
157
|
+
};
|
|
158
|
+
const result = await engine.applyDiff(testWorkflow, request);
|
|
159
|
+
if (result.success) {
|
|
160
|
+
logger.info('โ
Validate-only mode works correctly');
|
|
161
|
+
logger.info(`Validation message: ${result.message}`);
|
|
162
|
+
if (testWorkflow.nodes.length === 1) {
|
|
163
|
+
logger.info('โ
Original workflow unchanged');
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
logger.error('โ Original workflow was modified in validate-only mode');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
logger.error('โ Validate-only mode failed');
|
|
171
|
+
logger.error('Errors:', result.errors);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
async function testMixedOperations() {
|
|
175
|
+
logger.info('\nTest 4: Mixed operations (update existing, add new, connect)');
|
|
176
|
+
const engine = new workflow_diff_engine_1.WorkflowDiffEngine();
|
|
177
|
+
const request = {
|
|
178
|
+
id: testWorkflow.id,
|
|
179
|
+
operations: [
|
|
180
|
+
{
|
|
181
|
+
type: 'updateNode',
|
|
182
|
+
nodeName: 'Webhook',
|
|
183
|
+
changes: {
|
|
184
|
+
'parameters.path': '/updated-path'
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
type: 'addNode',
|
|
189
|
+
node: {
|
|
190
|
+
id: '5',
|
|
191
|
+
name: 'Logger',
|
|
192
|
+
type: 'n8n-nodes-base.n8n',
|
|
193
|
+
typeVersion: 1,
|
|
194
|
+
position: [400, 300],
|
|
195
|
+
parameters: {
|
|
196
|
+
operation: 'log',
|
|
197
|
+
level: 'info'
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
type: 'addConnection',
|
|
203
|
+
source: 'Webhook',
|
|
204
|
+
target: 'Logger'
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
type: 'updateSettings',
|
|
208
|
+
settings: {
|
|
209
|
+
saveDataErrorExecution: 'all'
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
]
|
|
213
|
+
};
|
|
214
|
+
const result = await engine.applyDiff(testWorkflow, request);
|
|
215
|
+
if (result.success) {
|
|
216
|
+
logger.info('โ
Mixed operations applied successfully');
|
|
217
|
+
logger.info(`Message: ${result.message}`);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
logger.error('โ Mixed operations failed');
|
|
221
|
+
logger.error('Errors:', result.errors);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
async function runTests() {
|
|
225
|
+
logger.info('Starting transactional diff tests...\n');
|
|
226
|
+
try {
|
|
227
|
+
await testAddNodesAndConnect();
|
|
228
|
+
await testOperationLimit();
|
|
229
|
+
await testValidateOnly();
|
|
230
|
+
await testMixedOperations();
|
|
231
|
+
logger.info('\nโ
All tests completed!');
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
logger.error('Test suite failed:', error);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
if (require.main === module) {
|
|
238
|
+
runTests().catch(console.error);
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=test-transactional-diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-transactional-diff.js","sourceRoot":"","sources":["../../src/scripts/test-transactional-diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-update-partial-debug.d.ts","sourceRoot":"","sources":["../../src/scripts/test-update-partial-debug.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const dotenv_1 = require("dotenv");
|
|
5
|
+
const logger_1 = require("../utils/logger");
|
|
6
|
+
const n8n_api_1 = require("../config/n8n-api");
|
|
7
|
+
const handlers_workflow_diff_1 = require("../mcp/handlers-workflow-diff");
|
|
8
|
+
const handlers_n8n_manager_1 = require("../mcp/handlers-n8n-manager");
|
|
9
|
+
(0, dotenv_1.config)();
|
|
10
|
+
async function testUpdatePartialDebug() {
|
|
11
|
+
logger_1.logger.info('Debug test for n8n_update_partial_workflow...');
|
|
12
|
+
if (!(0, n8n_api_1.isN8nApiConfigured)()) {
|
|
13
|
+
logger_1.logger.warn('n8n API not configured. This test requires a real n8n instance.');
|
|
14
|
+
logger_1.logger.info('Set N8N_API_URL and N8N_API_KEY to test.');
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const client = (0, handlers_n8n_manager_1.getN8nApiClient)();
|
|
18
|
+
if (!client) {
|
|
19
|
+
logger_1.logger.error('Failed to create n8n API client');
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
logger_1.logger.info('\n=== Creating test workflow ===');
|
|
24
|
+
const testWorkflow = {
|
|
25
|
+
name: `Test Partial Update ${Date.now()}`,
|
|
26
|
+
nodes: [
|
|
27
|
+
{
|
|
28
|
+
id: '1',
|
|
29
|
+
name: 'Start',
|
|
30
|
+
type: 'n8n-nodes-base.start',
|
|
31
|
+
typeVersion: 1,
|
|
32
|
+
position: [250, 300],
|
|
33
|
+
parameters: {}
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: '2',
|
|
37
|
+
name: 'Set',
|
|
38
|
+
type: 'n8n-nodes-base.set',
|
|
39
|
+
typeVersion: 3,
|
|
40
|
+
position: [450, 300],
|
|
41
|
+
parameters: {
|
|
42
|
+
mode: 'manual',
|
|
43
|
+
fields: {
|
|
44
|
+
values: [
|
|
45
|
+
{ name: 'message', value: 'Initial value' }
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
connections: {
|
|
52
|
+
'Start': {
|
|
53
|
+
main: [[{ node: 'Set', type: 'main', index: 0 }]]
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
settings: {
|
|
57
|
+
executionOrder: 'v1'
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const createdWorkflow = await client.createWorkflow(testWorkflow);
|
|
61
|
+
logger_1.logger.info('Created workflow:', {
|
|
62
|
+
id: createdWorkflow.id,
|
|
63
|
+
name: createdWorkflow.name
|
|
64
|
+
});
|
|
65
|
+
logger_1.logger.info('\n=== Testing partial update (NO validateOnly) ===');
|
|
66
|
+
const updateRequest = {
|
|
67
|
+
id: createdWorkflow.id,
|
|
68
|
+
operations: [
|
|
69
|
+
{
|
|
70
|
+
type: 'updateName',
|
|
71
|
+
name: 'Updated via Partial Update'
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
};
|
|
75
|
+
logger_1.logger.info('Update request:', JSON.stringify(updateRequest, null, 2));
|
|
76
|
+
const result = await (0, handlers_workflow_diff_1.handleUpdatePartialWorkflow)(updateRequest);
|
|
77
|
+
logger_1.logger.info('Update result:', JSON.stringify(result, null, 2));
|
|
78
|
+
if (createdWorkflow.id) {
|
|
79
|
+
logger_1.logger.info('\n=== Cleanup ===');
|
|
80
|
+
await client.deleteWorkflow(createdWorkflow.id);
|
|
81
|
+
logger_1.logger.info('Deleted test workflow');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
logger_1.logger.error('Test failed:', error);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
testUpdatePartialDebug().catch(error => {
|
|
89
|
+
logger_1.logger.error('Unhandled error:', error);
|
|
90
|
+
process.exit(1);
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=test-update-partial-debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-update-partial-debug.js","sourceRoot":"","sources":["../../src/scripts/test-update-partial-debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-updatenode-null-fix.d.ts","sourceRoot":"","sources":["../../src/scripts/test-updatenode-null-fix.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const workflow_diff_engine_1 = require("../services/workflow-diff-engine");
|
|
5
|
+
const testWorkflow = {
|
|
6
|
+
id: 'test-workflow-null',
|
|
7
|
+
name: 'Test Null Handling',
|
|
8
|
+
nodes: [
|
|
9
|
+
{
|
|
10
|
+
id: 'http_1',
|
|
11
|
+
name: 'HTTP Request',
|
|
12
|
+
type: 'n8n-nodes-base.httpRequest',
|
|
13
|
+
typeVersion: 4,
|
|
14
|
+
position: [200, 200],
|
|
15
|
+
parameters: {
|
|
16
|
+
url: 'https://api.example.com',
|
|
17
|
+
method: 'GET',
|
|
18
|
+
authentication: null,
|
|
19
|
+
options: {
|
|
20
|
+
timeout: 5000
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: 'set_1',
|
|
26
|
+
name: 'Set',
|
|
27
|
+
type: 'n8n-nodes-base.set',
|
|
28
|
+
typeVersion: 3,
|
|
29
|
+
position: [400, 200],
|
|
30
|
+
parameters: {
|
|
31
|
+
mode: 'manual',
|
|
32
|
+
fields: null
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
connections: {}
|
|
37
|
+
};
|
|
38
|
+
async function testUpdateNodeWithNullValues() {
|
|
39
|
+
console.log('๐งช Testing updateNode operation with null/undefined handling...\n');
|
|
40
|
+
const engine = new workflow_diff_engine_1.WorkflowDiffEngine();
|
|
41
|
+
console.log('Test 1: Updating authentication.type where authentication is null');
|
|
42
|
+
let result = await engine.applyDiff(testWorkflow, {
|
|
43
|
+
id: 'test-workflow-null',
|
|
44
|
+
operations: [{
|
|
45
|
+
type: 'updateNode',
|
|
46
|
+
nodeName: 'HTTP Request',
|
|
47
|
+
changes: {
|
|
48
|
+
'parameters.authentication.type': 'headerAuth',
|
|
49
|
+
'parameters.authentication.properties.headerAuth.name': 'Authorization',
|
|
50
|
+
'parameters.authentication.properties.headerAuth.value': 'Bearer token123'
|
|
51
|
+
}
|
|
52
|
+
}]
|
|
53
|
+
});
|
|
54
|
+
if (result.success) {
|
|
55
|
+
const node = result.workflow.nodes.find((n) => n.name === 'HTTP Request');
|
|
56
|
+
console.log('โ
Success! Authentication updated:');
|
|
57
|
+
console.log(' - Type:', node.parameters.authentication?.type);
|
|
58
|
+
console.log(' - Header name:', node.parameters.authentication?.properties?.headerAuth?.name);
|
|
59
|
+
console.log(' - Header value:', node.parameters.authentication?.properties?.headerAuth?.value);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
console.error('โ Failed:', result.errors);
|
|
63
|
+
}
|
|
64
|
+
console.log('\nTest 2: Updating options.headers.Accept where headers is undefined');
|
|
65
|
+
result = await engine.applyDiff(testWorkflow, {
|
|
66
|
+
id: 'test-workflow-null',
|
|
67
|
+
operations: [{
|
|
68
|
+
type: 'updateNode',
|
|
69
|
+
nodeName: 'HTTP Request',
|
|
70
|
+
changes: {
|
|
71
|
+
'parameters.options.headers.Accept': 'application/json',
|
|
72
|
+
'parameters.options.headers.Content-Type': 'application/json'
|
|
73
|
+
}
|
|
74
|
+
}]
|
|
75
|
+
});
|
|
76
|
+
if (result.success) {
|
|
77
|
+
const node = result.workflow.nodes.find((n) => n.name === 'HTTP Request');
|
|
78
|
+
console.log('โ
Success! Headers updated:');
|
|
79
|
+
console.log(' - Accept:', node.parameters.options?.headers?.Accept);
|
|
80
|
+
console.log(' - Content-Type:', node.parameters.options?.headers?.['Content-Type']);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
console.error('โ Failed:', result.errors);
|
|
84
|
+
}
|
|
85
|
+
console.log('\nTest 3: Updating fields.values where fields is null');
|
|
86
|
+
result = await engine.applyDiff(testWorkflow, {
|
|
87
|
+
id: 'test-workflow-null',
|
|
88
|
+
operations: [{
|
|
89
|
+
type: 'updateNode',
|
|
90
|
+
nodeName: 'Set',
|
|
91
|
+
changes: {
|
|
92
|
+
'parameters.fields.values': [
|
|
93
|
+
{ name: 'field1', value: 'value1' },
|
|
94
|
+
{ name: 'field2', value: 'value2' }
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
}]
|
|
98
|
+
});
|
|
99
|
+
if (result.success) {
|
|
100
|
+
const node = result.workflow.nodes.find((n) => n.name === 'Set');
|
|
101
|
+
console.log('โ
Success! Fields updated:');
|
|
102
|
+
console.log(' - Values:', JSON.stringify(node.parameters.fields?.values, null, 2));
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
console.error('โ Failed:', result.errors);
|
|
106
|
+
}
|
|
107
|
+
console.log('\nTest 4: Multiple operations with mixed null/existing values');
|
|
108
|
+
result = await engine.applyDiff(testWorkflow, {
|
|
109
|
+
id: 'test-workflow-null',
|
|
110
|
+
operations: [
|
|
111
|
+
{
|
|
112
|
+
type: 'updateNode',
|
|
113
|
+
nodeName: 'HTTP Request',
|
|
114
|
+
changes: {
|
|
115
|
+
'parameters.url': 'https://new-api.example.com',
|
|
116
|
+
'parameters.authentication.type': 'oauth2',
|
|
117
|
+
'parameters.options.proxy.host': 'proxy.example.com',
|
|
118
|
+
'parameters.options.proxy.port': 8080
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'updateNode',
|
|
123
|
+
nodeName: 'Set',
|
|
124
|
+
changes: {
|
|
125
|
+
'parameters.mode': 'json',
|
|
126
|
+
'parameters.fields.schema': { type: 'object' }
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
});
|
|
131
|
+
if (result.success) {
|
|
132
|
+
console.log('โ
Success! All operations applied:');
|
|
133
|
+
console.log(' - Operations applied:', result.operationsApplied);
|
|
134
|
+
console.log(' - Message:', result.message);
|
|
135
|
+
const httpNode = result.workflow.nodes.find((n) => n.name === 'HTTP Request');
|
|
136
|
+
const setNode = result.workflow.nodes.find((n) => n.name === 'Set');
|
|
137
|
+
console.log('\n HTTP Request node:');
|
|
138
|
+
console.log(' - URL:', httpNode.parameters.url);
|
|
139
|
+
console.log(' - Auth type:', httpNode.parameters.authentication?.type);
|
|
140
|
+
console.log(' - Proxy:', httpNode.parameters.options?.proxy);
|
|
141
|
+
console.log('\n Set node:');
|
|
142
|
+
console.log(' - Mode:', setNode.parameters.mode);
|
|
143
|
+
console.log(' - Schema:', setNode.parameters.fields?.schema);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
console.error('โ Failed:', result.errors);
|
|
147
|
+
}
|
|
148
|
+
console.log('\nโ
All null/undefined handling tests completed!');
|
|
149
|
+
}
|
|
150
|
+
if (require.main === module) {
|
|
151
|
+
testUpdateNodeWithNullValues().catch(error => {
|
|
152
|
+
console.error('โ Test failed with error:', error);
|
|
153
|
+
process.exit(1);
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=test-updatenode-null-fix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-updatenode-null-fix.js","sourceRoot":"","sources":["../../src/scripts/test-updatenode-null-fix.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-validation-parity.d.ts","sourceRoot":"","sources":["../../src/scripts/test-validation-parity.ts"],"names":[],"mappings":""}
|