n8n-mcp 2.69.3 → 2.70.1
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/dist/constants/workflow-settings.d.ts +13 -0
- package/dist/constants/workflow-settings.d.ts.map +1 -0
- package/dist/constants/workflow-settings.js +28 -0
- package/dist/constants/workflow-settings.js.map +1 -0
- package/dist/mcp/handlers-n8n-manager.d.ts.map +1 -1
- package/dist/mcp/handlers-n8n-manager.js +2 -1
- package/dist/mcp/handlers-n8n-manager.js.map +1 -1
- package/dist/mcp/tool-docs/system/n8n-health-check.d.ts.map +1 -1
- package/dist/mcp/tool-docs/system/n8n-health-check.js +2 -1
- package/dist/mcp/tool-docs/system/n8n-health-check.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 +3 -0
- package/dist/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.js.map +1 -1
- package/dist/services/n8n-api-client.d.ts +3 -0
- package/dist/services/n8n-api-client.d.ts.map +1 -1
- package/dist/services/n8n-api-client.js +61 -12
- package/dist/services/n8n-api-client.js.map +1 -1
- package/dist/services/n8n-validation.d.ts +39 -9
- package/dist/services/n8n-validation.d.ts.map +1 -1
- package/dist/services/n8n-validation.js +16 -21
- package/dist/services/n8n-validation.js.map +1 -1
- package/dist/services/n8n-version.d.ts +4 -1
- package/dist/services/n8n-version.d.ts.map +1 -1
- package/dist/services/n8n-version.js +40 -61
- package/dist/services/n8n-version.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { N8nVersionInfo } from '../types/n8n-api';
|
|
2
2
|
import type { PinnedAgents } from '../utils/ssrf-protection';
|
|
3
|
+
import { type SettingsVersion } from '../constants/workflow-settings';
|
|
4
|
+
export declare const N8N_VERSION_UNAVAILABLE_NOTE: string;
|
|
3
5
|
export declare function parseVersion(versionString: string): N8nVersionInfo | null;
|
|
4
|
-
export declare function compareVersions(a:
|
|
6
|
+
export declare function compareVersions(a: SettingsVersion, b: SettingsVersion): number;
|
|
5
7
|
export declare function versionAtLeast(version: N8nVersionInfo, major: number, minor: number, patch?: number): boolean;
|
|
6
8
|
export declare function getSupportedSettingsProperties(version: N8nVersionInfo): Set<string>;
|
|
7
9
|
export declare function fetchN8nVersion(baseUrl: string, options?: {
|
|
@@ -24,5 +26,6 @@ export declare const VERSION_THRESHOLDS: {
|
|
|
24
26
|
minor: number;
|
|
25
27
|
patch: number;
|
|
26
28
|
};
|
|
29
|
+
SETTINGS_PASS_THROUGH: SettingsVersion;
|
|
27
30
|
};
|
|
28
31
|
//# sourceMappingURL=n8n-version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"n8n-version.d.ts","sourceRoot":"","sources":["../../src/services/n8n-version.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"n8n-version.d.ts","sourceRoot":"","sources":["../../src/services/n8n-version.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,EAAuB,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,gCAAgC,CAAC;AAMxC,eAAO,MAAM,4BAA4B,QAE4C,CAAC;AAiBtF,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAczE;AAKD,wBAAgB,eAAe,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,CAI9E;AAKD,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAExG;AAUD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,CAWnF;AAgBD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAClG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAuDhC;AAqBD,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAMD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAMvE;AAKD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAE/E;AAoBD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC7C,OAAO,EAAE,cAAc,GAAG,IAAI,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBzB;AAGD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;CAI9B,CAAC"}
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.VERSION_THRESHOLDS = void 0;
|
|
6
|
+
exports.VERSION_THRESHOLDS = exports.N8N_VERSION_UNAVAILABLE_NOTE = void 0;
|
|
7
7
|
exports.parseVersion = parseVersion;
|
|
8
8
|
exports.compareVersions = compareVersions;
|
|
9
9
|
exports.versionAtLeast = versionAtLeast;
|
|
@@ -15,28 +15,11 @@ exports.setCachedVersion = setCachedVersion;
|
|
|
15
15
|
exports.cleanSettingsForVersion = cleanSettingsForVersion;
|
|
16
16
|
const axios_1 = __importDefault(require("axios"));
|
|
17
17
|
const logger_1 = require("../utils/logger");
|
|
18
|
+
const workflow_settings_1 = require("../constants/workflow-settings");
|
|
19
|
+
exports.N8N_VERSION_UNAVAILABLE_NOTE = 'Not reported. n8n stopped exposing its version to API clients in 1.119.0, so this is expected ' +
|
|
20
|
+
'and is not an error. Feature availability is detected from API responses instead.';
|
|
18
21
|
const VERSION_CACHE_TTL_MS = 5 * 60 * 1000;
|
|
19
22
|
const versionCache = new Map();
|
|
20
|
-
const SETTINGS_BY_VERSION = {
|
|
21
|
-
core: [
|
|
22
|
-
'saveExecutionProgress',
|
|
23
|
-
'saveManualExecutions',
|
|
24
|
-
'saveDataErrorExecution',
|
|
25
|
-
'saveDataSuccessExecution',
|
|
26
|
-
'executionTimeout',
|
|
27
|
-
'errorWorkflow',
|
|
28
|
-
'timezone',
|
|
29
|
-
],
|
|
30
|
-
v1_37_0: [
|
|
31
|
-
'executionOrder',
|
|
32
|
-
],
|
|
33
|
-
v1_119_0: [
|
|
34
|
-
'callerPolicy',
|
|
35
|
-
'callerIds',
|
|
36
|
-
'timeSavedPerExecution',
|
|
37
|
-
'availableInMCP',
|
|
38
|
-
],
|
|
39
|
-
};
|
|
40
23
|
function parseVersion(versionString) {
|
|
41
24
|
const match = versionString.match(/^v?(\d+)\.(\d+)\.(\d+)/);
|
|
42
25
|
if (!match) {
|
|
@@ -57,16 +40,16 @@ function compareVersions(a, b) {
|
|
|
57
40
|
return a.patch - b.patch;
|
|
58
41
|
}
|
|
59
42
|
function versionAtLeast(version, major, minor, patch = 0) {
|
|
60
|
-
|
|
61
|
-
return compareVersions(version, target) >= 0;
|
|
43
|
+
return compareVersions(version, { major, minor, patch }) >= 0;
|
|
62
44
|
}
|
|
63
45
|
function getSupportedSettingsProperties(version) {
|
|
64
|
-
const supported = new Set(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
46
|
+
const supported = new Set();
|
|
47
|
+
for (const [name, meta] of Object.entries(workflow_settings_1.WORKFLOW_SETTINGS_PROPERTIES)) {
|
|
48
|
+
if (meta.derived)
|
|
49
|
+
continue;
|
|
50
|
+
if (compareVersions(version, meta.since) >= 0) {
|
|
51
|
+
supported.add(name);
|
|
52
|
+
}
|
|
70
53
|
}
|
|
71
54
|
return supported;
|
|
72
55
|
}
|
|
@@ -74,7 +57,7 @@ async function fetchN8nVersion(baseUrl, options) {
|
|
|
74
57
|
const { headers, pinnedAgents, forceRefresh } = options ?? {};
|
|
75
58
|
const cached = forceRefresh ? undefined : versionCache.get(baseUrl);
|
|
76
59
|
if (cached && Date.now() - cached.fetchedAt < VERSION_CACHE_TTL_MS) {
|
|
77
|
-
logger_1.logger.debug(`Using cached n8n version for ${baseUrl}: ${cached.info
|
|
60
|
+
logger_1.logger.debug(`Using cached n8n version for ${baseUrl}: ${cached.info?.version ?? 'none reported'}`);
|
|
78
61
|
return cached.info;
|
|
79
62
|
}
|
|
80
63
|
try {
|
|
@@ -89,34 +72,27 @@ async function fetchN8nVersion(baseUrl, options) {
|
|
|
89
72
|
httpAgent: pinnedAgents?.httpAgent,
|
|
90
73
|
httpsAgent: pinnedAgents?.httpsAgent,
|
|
91
74
|
});
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
: null;
|
|
103
|
-
if (versionString) {
|
|
104
|
-
const versionInfo = parseVersion(versionString);
|
|
105
|
-
if (versionInfo) {
|
|
106
|
-
versionCache.set(baseUrl, { info: versionInfo, fetchedAt: Date.now() });
|
|
107
|
-
logger_1.logger.debug(`Detected n8n version: ${versionInfo.version}`);
|
|
108
|
-
return versionInfo;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
logger_1.logger.warn(`Could not determine n8n version from ${settingsUrl}`);
|
|
113
|
-
return null;
|
|
75
|
+
const settings = response.status === 200 ? response.data?.data : undefined;
|
|
76
|
+
const versionString = typeof settings?.n8nVersion === 'string'
|
|
77
|
+
? settings.n8nVersion
|
|
78
|
+
: typeof settings?.versionCli === 'string'
|
|
79
|
+
? settings.versionCli
|
|
80
|
+
: null;
|
|
81
|
+
const versionInfo = versionString ? parseVersion(versionString) : null;
|
|
82
|
+
return rememberProbe(baseUrl, versionInfo, versionInfo
|
|
83
|
+
? `detected n8n version ${versionInfo.version}`
|
|
84
|
+
: `no version in the response from ${settingsUrl}`);
|
|
114
85
|
}
|
|
115
86
|
catch (error) {
|
|
116
|
-
logger_1.logger.
|
|
87
|
+
logger_1.logger.debug(`Failed to fetch n8n version: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
117
88
|
return null;
|
|
118
89
|
}
|
|
119
90
|
}
|
|
91
|
+
function rememberProbe(baseUrl, info, reason) {
|
|
92
|
+
versionCache.set(baseUrl, { info, fetchedAt: Date.now() });
|
|
93
|
+
logger_1.logger.debug(`n8n version probe for ${baseUrl}: ${reason}`);
|
|
94
|
+
return info;
|
|
95
|
+
}
|
|
120
96
|
function clearVersionCache() {
|
|
121
97
|
versionCache.clear();
|
|
122
98
|
}
|
|
@@ -134,23 +110,26 @@ function cleanSettingsForVersion(settings, version) {
|
|
|
134
110
|
if (!settings || typeof settings !== 'object') {
|
|
135
111
|
return {};
|
|
136
112
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
}
|
|
140
|
-
const supportedProperties = getSupportedSettingsProperties(version);
|
|
113
|
+
const passThrough = !version || compareVersions(version, workflow_settings_1.SETTINGS_PASS_THROUGH_FLOOR) >= 0;
|
|
114
|
+
const supportedProperties = passThrough ? null : getSupportedSettingsProperties(version);
|
|
115
|
+
const target = version ? `n8n ${version.version}` : 'n8n version unknown';
|
|
141
116
|
const cleaned = {};
|
|
142
117
|
for (const [key, value] of Object.entries(settings)) {
|
|
143
|
-
if (
|
|
144
|
-
|
|
118
|
+
if (workflow_settings_1.DERIVED_SETTINGS_PROPERTIES.has(key)) {
|
|
119
|
+
logger_1.logger.debug(`Dropped derived settings property n8n ignores on write: ${key}`);
|
|
120
|
+
continue;
|
|
145
121
|
}
|
|
146
|
-
|
|
147
|
-
logger_1.logger.debug(`Filtered out unsupported settings property: ${key} (
|
|
122
|
+
if (supportedProperties && !supportedProperties.has(key)) {
|
|
123
|
+
logger_1.logger.debug(`Filtered out unsupported settings property: ${key} (${target})`);
|
|
124
|
+
continue;
|
|
148
125
|
}
|
|
126
|
+
cleaned[key] = value;
|
|
149
127
|
}
|
|
150
128
|
return cleaned;
|
|
151
129
|
}
|
|
152
130
|
exports.VERSION_THRESHOLDS = {
|
|
153
131
|
EXECUTION_ORDER: { major: 1, minor: 37, patch: 0 },
|
|
154
132
|
CALLER_POLICY: { major: 1, minor: 119, patch: 0 },
|
|
133
|
+
SETTINGS_PASS_THROUGH: workflow_settings_1.SETTINGS_PASS_THROUGH_FLOOR,
|
|
155
134
|
};
|
|
156
135
|
//# sourceMappingURL=n8n-version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"n8n-version.js","sourceRoot":"","sources":["../../src/services/n8n-version.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"n8n-version.js","sourceRoot":"","sources":["../../src/services/n8n-version.ts"],"names":[],"mappings":"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"}
|