@atom8n/n8n 2.5.0 → 2.5.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.
Files changed (35) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/chat/chat-service.types.d.ts +6 -6
  3. package/dist/commands/execute.js +0 -0
  4. package/dist/commands/import/credentials.js +0 -0
  5. package/dist/commands/mcp.d.ts +23 -0
  6. package/dist/commands/mcp.js +315 -0
  7. package/dist/commands/run.d.ts +23 -0
  8. package/dist/commands/run.js +162 -0
  9. package/dist/controllers/annotation-tags.controller.ee.d.ts +1 -1
  10. package/dist/controllers/cli.controller.d.ts +26 -0
  11. package/dist/controllers/cli.controller.js +334 -0
  12. package/dist/controllers/orchestration.controller.js +0 -0
  13. package/dist/controllers/users.controller.d.ts +1 -1
  14. package/dist/environments.ee/source-control/source-control-status.service.ee.d.ts +2 -2
  15. package/dist/environments.ee/source-control/source-control.controller.ee.d.ts +4 -4
  16. package/dist/environments.ee/source-control/source-control.service.ee.d.ts +2 -2
  17. package/dist/environments.ee/source-control/types/source-control-set-branch.js +0 -0
  18. package/dist/eventbus/event-message-classes/index.js +0 -0
  19. package/dist/index.d.ts +2 -1
  20. package/dist/index.js +8 -0
  21. package/dist/modules/mcp/mcp-oauth.helpers.js +0 -0
  22. package/dist/modules/mcp/mcp.oauth-clients.controller.js +0 -0
  23. package/dist/modules/mcp/tools/execute-workflow.tool.d.ts +10 -10
  24. package/dist/modules/mcp/tools/schemas.d.ts +10 -10
  25. package/dist/modules/source-control.ee/source-control-preferences.service.ee.js +0 -0
  26. package/dist/node-lib.d.ts +10 -0
  27. package/dist/node-lib.js +137 -0
  28. package/dist/server.d.ts +1 -0
  29. package/dist/server.js +1 -0
  30. package/dist/sso.ee/saml/schema/metadata-exchange.xsd.js +0 -0
  31. package/dist/task-runners/task-broker/errors/task-runner-accept-timeout.error.js +0 -0
  32. package/dist/typecheck.tsbuildinfo +1 -0
  33. package/dist/workflows/workflow.service.d.ts +2 -2
  34. package/dist/workflows/workflows.controller.d.ts +4 -4
  35. package/package.json +22 -21
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.run = run;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const LOG_PREFIX = '[n8n-lib]';
10
+ async function run(filePath, input, debug = false, options) {
11
+ const log = (...args) => {
12
+ if (debug)
13
+ console.log(LOG_PREFIX, ...args);
14
+ };
15
+ const logError = (...args) => {
16
+ if (debug)
17
+ console.error(LOG_PREFIX, ...args);
18
+ };
19
+ const logWarn = (...args) => {
20
+ if (debug)
21
+ console.warn(LOG_PREFIX, ...args);
22
+ };
23
+ log('── RUN START ──');
24
+ log(`filePath: "${filePath}"`);
25
+ log(`input: ${input !== undefined ? JSON.stringify(input) : '(none)'}`);
26
+ const resolvedPath = path_1.default.resolve(filePath);
27
+ log(`Resolved path: "${resolvedPath}"`);
28
+ if (!fs_1.default.existsSync(resolvedPath)) {
29
+ const errorMsg = `Workflow file does not exist: ${resolvedPath}`;
30
+ logError(`ERROR: ${errorMsg}`);
31
+ throw new Error(errorMsg);
32
+ }
33
+ let workflowData;
34
+ try {
35
+ const fileContent = fs_1.default.readFileSync(resolvedPath, { encoding: 'utf8' });
36
+ workflowData = JSON.parse(fileContent);
37
+ log('Successfully parsed workflow file');
38
+ log(` Name: "${workflowData.name}"`);
39
+ log(` Nodes: ${Array.isArray(workflowData.nodes) ? workflowData.nodes.length : 0}`);
40
+ }
41
+ catch (error) {
42
+ const errorMsg = `Failed to parse workflow file: ${error instanceof Error ? error.message : String(error)}`;
43
+ logError(`ERROR: ${errorMsg}`);
44
+ throw new Error(errorMsg);
45
+ }
46
+ let serverUrl;
47
+ if (options?.baseUrl) {
48
+ serverUrl = options.baseUrl.replace(/\/+$/, '');
49
+ log(`Using provided baseUrl: "${serverUrl}"`);
50
+ }
51
+ else {
52
+ const port = options?.port ?? parseInt(process.env.N8N_PORT ?? '5888', 10);
53
+ serverUrl = `http://localhost:${port}`;
54
+ log(`Using server URL: "${serverUrl}" (port: ${port})`);
55
+ }
56
+ const healthUrl = `${serverUrl}/rest/cli/health`;
57
+ log(`Health check: GET ${healthUrl}`);
58
+ try {
59
+ const healthResponse = await fetch(healthUrl);
60
+ if (!healthResponse.ok) {
61
+ throw new Error(`Health check returned status ${healthResponse.status}`);
62
+ }
63
+ log('Server is reachable');
64
+ }
65
+ catch (error) {
66
+ const errorMsg = `Cannot reach n8n server at ${serverUrl}. Is the server running? Error: ${error instanceof Error ? error.message : String(error)}`;
67
+ logError(`ERROR: ${errorMsg}`);
68
+ throw new Error(errorMsg);
69
+ }
70
+ const runUrl = `${serverUrl}/rest/cli/run`;
71
+ log(`Executing workflow: POST ${runUrl}`);
72
+ const requestBody = { workflowData };
73
+ if (input !== undefined) {
74
+ if (typeof input === 'string') {
75
+ requestBody.chatInput = input;
76
+ }
77
+ else {
78
+ requestBody.inputData = input;
79
+ }
80
+ }
81
+ log(`Request body keys: ${Object.keys(requestBody).join(', ')}`);
82
+ let response;
83
+ try {
84
+ response = await fetch(runUrl, {
85
+ method: 'POST',
86
+ headers: { 'Content-Type': 'application/json' },
87
+ body: JSON.stringify(requestBody),
88
+ });
89
+ log(`Response status: ${response.status} ${response.statusText}`);
90
+ }
91
+ catch (error) {
92
+ const errorMsg = `Failed to call n8n API: ${error instanceof Error ? error.message : String(error)}`;
93
+ logError(`ERROR: ${errorMsg}`);
94
+ throw new Error(errorMsg);
95
+ }
96
+ if (!response.ok) {
97
+ const errorBody = await response.text();
98
+ const errorMsg = `API error: ${response.status} ${response.statusText} — ${errorBody}`;
99
+ logError(`ERROR: ${errorMsg}`);
100
+ throw new Error(errorMsg);
101
+ }
102
+ const apiResult = (await response.json());
103
+ log('── RESULT ──');
104
+ log(`Success: ${apiResult.success}`);
105
+ log(`Execution ID: ${apiResult.executionId ?? 'unknown'}`);
106
+ log(`Status: ${apiResult.status ?? 'unknown'}`);
107
+ log(`Execution time: ${apiResult.executionTime ?? '?'}s`);
108
+ if (!apiResult.success) {
109
+ const errorMsg = apiResult.error ?? 'Workflow execution failed';
110
+ logError(`Execution error: ${errorMsg}`);
111
+ throw new Error(String(errorMsg));
112
+ }
113
+ const lastNodeName = apiResult.data?.lastNodeExecuted;
114
+ log(`Last node executed: "${lastNodeName ?? 'unknown'}"`);
115
+ if (!lastNodeName || !apiResult.data?.runData?.[lastNodeName]) {
116
+ logWarn('No output data found for last node');
117
+ log('── RUN END ──');
118
+ return [];
119
+ }
120
+ const lastNodeRuns = apiResult.data.runData[lastNodeName];
121
+ const lastRun = lastNodeRuns[lastNodeRuns.length - 1];
122
+ const outputItems = [];
123
+ if (lastRun?.data?.main) {
124
+ for (const branch of lastRun.data.main) {
125
+ if (branch) {
126
+ for (const item of branch) {
127
+ outputItems.push(item.json);
128
+ }
129
+ }
130
+ }
131
+ }
132
+ log(`Output items: ${outputItems.length}`);
133
+ log('── RUN END ──');
134
+ return outputItems;
135
+ }
136
+ const n8n = { run };
137
+ exports.default = n8n;
package/dist/server.d.ts CHANGED
@@ -26,6 +26,7 @@ import './controllers/users.controller';
26
26
  import './controllers/user-settings.controller';
27
27
  import './controllers/workflow-statistics.controller';
28
28
  import './controllers/api-keys.controller';
29
+ import './controllers/cli.controller';
29
30
  import './credentials/credentials.controller';
30
31
  import './eventbus/event-bus.controller';
31
32
  import './events/events.controller';
package/dist/server.js CHANGED
@@ -97,6 +97,7 @@ require("./controllers/users.controller");
97
97
  require("./controllers/user-settings.controller");
98
98
  require("./controllers/workflow-statistics.controller");
99
99
  require("./controllers/api-keys.controller");
100
+ require("./controllers/cli.controller");
100
101
  require("./credentials/credentials.controller");
101
102
  require("./eventbus/event-bus.controller");
102
103
  require("./events/events.controller");
File without changes