n8n 1.116.2 → 1.117.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/active-executions.d.ts +3 -1
- package/dist/active-executions.js +7 -8
- package/dist/active-executions.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/commands/base-command.js +1 -5
- package/dist/commands/base-command.js.map +1 -1
- package/dist/commands/execute-batch.js +2 -3
- package/dist/commands/execute-batch.js.map +1 -1
- package/dist/commands/execute.js +2 -6
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/start.js +5 -5
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/webhook.js +4 -8
- package/dist/commands/webhook.js.map +1 -1
- package/dist/commands/worker.js +5 -9
- package/dist/commands/worker.js.map +1 -1
- package/dist/concurrency/concurrency-control.service.js +1 -2
- package/dist/concurrency/concurrency-control.service.js.map +1 -1
- package/dist/config/index.d.ts +0 -3
- package/dist/config/schema.d.ts +0 -8
- package/dist/config/schema.js +0 -8
- package/dist/config/schema.js.map +1 -1
- package/dist/controllers/ai.controller.d.ts +2 -1
- package/dist/controllers/ai.controller.js +19 -0
- package/dist/controllers/ai.controller.js.map +1 -1
- package/dist/controllers/e2e.controller.d.ts +3 -1
- package/dist/controllers/e2e.controller.js +7 -5
- package/dist/controllers/e2e.controller.js.map +1 -1
- package/dist/controllers/users.controller.d.ts +1 -1
- package/dist/controllers/users.controller.js +1 -1
- package/dist/controllers/users.controller.js.map +1 -1
- package/dist/deprecation/deprecation.service.js +1 -5
- package/dist/deprecation/deprecation.service.js.map +1 -1
- package/dist/environments.ee/source-control/source-control-export.service.ee.d.ts +1 -1
- package/dist/environments.ee/source-control/source-control-export.service.ee.js +2 -2
- package/dist/environments.ee/source-control/source-control-export.service.ee.js.map +1 -1
- package/dist/environments.ee/source-control/source-control-helper.ee.d.ts +2 -0
- package/dist/environments.ee/source-control/source-control-helper.ee.js +11 -2
- package/dist/environments.ee/source-control/source-control-helper.ee.js.map +1 -1
- package/dist/environments.ee/source-control/source-control-import.service.ee.d.ts +6 -4
- package/dist/environments.ee/source-control/source-control-import.service.ee.js +63 -51
- package/dist/environments.ee/source-control/source-control-import.service.ee.js.map +1 -1
- package/dist/environments.ee/source-control/source-control-status.service.ee.js +28 -3
- package/dist/environments.ee/source-control/source-control-status.service.ee.js.map +1 -1
- package/dist/environments.ee/variables/variables.service.ee.js +6 -1
- package/dist/environments.ee/variables/variables.service.ee.js.map +1 -1
- package/dist/evaluation.ee/test-runner/test-runner.service.ee.d.ts +3 -1
- package/dist/evaluation.ee/test-runner/test-runner.service.ee.js +7 -5
- package/dist/evaluation.ee/test-runner/test-runner.service.ee.js.map +1 -1
- package/dist/eventbus/message-event-bus/message-event-bus.js +1 -2
- package/dist/eventbus/message-event-bus/message-event-bus.js.map +1 -1
- package/dist/eventbus/message-event-bus-destination/message-event-bus-destination-syslog.ee.js +1 -0
- package/dist/eventbus/message-event-bus-destination/message-event-bus-destination-syslog.ee.js.map +1 -1
- package/dist/events/maps/relay.event-map.d.ts +18 -1
- package/dist/events/relays/telemetry.event-relay.d.ts +1 -0
- package/dist/events/relays/telemetry.event-relay.js +12 -4
- package/dist/events/relays/telemetry.event-relay.js.map +1 -1
- package/dist/executions/execution.service.js +2 -6
- package/dist/executions/execution.service.js.map +1 -1
- package/dist/license.js +1 -5
- package/dist/license.js.map +1 -1
- package/dist/metrics/prometheus-metrics.service.js +1 -2
- package/dist/metrics/prometheus-metrics.service.js.map +1 -1
- package/dist/middlewares/list-query/dtos/workflow.select.dto.js +1 -0
- package/dist/middlewares/list-query/dtos/workflow.select.dto.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub-message.entity.d.ts +28 -0
- package/dist/modules/chat-hub/chat-hub-message.entity.js +124 -0
- package/dist/modules/chat-hub/chat-hub-message.entity.js.map +1 -0
- package/dist/modules/chat-hub/chat-hub-session.entity.d.ts +17 -0
- package/dist/modules/chat-hub/chat-hub-session.entity.js +72 -0
- package/dist/modules/chat-hub/chat-hub-session.entity.js.map +1 -0
- package/dist/modules/chat-hub/chat-hub.controller.d.ts +8 -5
- package/dist/modules/chat-hub/chat-hub.controller.js +151 -22
- package/dist/modules/chat-hub/chat-hub.controller.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub.module.d.ts +1 -0
- package/dist/modules/chat-hub/chat-hub.module.js +6 -1
- package/dist/modules/chat-hub/chat-hub.module.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub.service.d.ts +34 -13
- package/dist/modules/chat-hub/chat-hub.service.js +500 -315
- package/dist/modules/chat-hub/chat-hub.service.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub.types.d.ts +25 -11
- package/dist/modules/chat-hub/chat-message.repository.d.ts +16 -0
- package/dist/modules/chat-hub/chat-message.repository.js +60 -0
- package/dist/modules/chat-hub/chat-message.repository.js.map +1 -0
- package/dist/modules/chat-hub/chat-session.repository.d.ts +12 -0
- package/dist/modules/chat-hub/chat-session.repository.js +77 -0
- package/dist/modules/chat-hub/chat-session.repository.js.map +1 -0
- package/dist/modules/chat-hub/context-limits.d.ts +3 -0
- package/dist/modules/chat-hub/context-limits.js +142 -0
- package/dist/modules/chat-hub/context-limits.js.map +1 -0
- package/dist/modules/community-packages/community-node-types.controller.js +2 -2
- package/dist/modules/community-packages/community-node-types.controller.js.map +1 -1
- package/dist/modules/mcp/mcp-api-key.service.d.ts +4 -1
- package/dist/modules/mcp/mcp-api-key.service.js +23 -8
- package/dist/modules/mcp/mcp-api-key.service.js.map +1 -1
- package/dist/modules/mcp/mcp.constants.d.ts +5 -0
- package/dist/modules/mcp/mcp.constants.js +9 -0
- package/dist/modules/mcp/mcp.constants.js.map +1 -0
- package/dist/modules/mcp/mcp.controller.d.ts +4 -1
- package/dist/modules/mcp/mcp.controller.js +56 -4
- package/dist/modules/mcp/mcp.controller.js.map +1 -1
- package/dist/modules/mcp/mcp.event-relay.d.ts +11 -0
- package/dist/modules/mcp/mcp.event-relay.js +61 -0
- package/dist/modules/mcp/mcp.event-relay.js.map +1 -0
- package/dist/modules/mcp/mcp.module.js +2 -0
- package/dist/modules/mcp/mcp.module.js.map +1 -1
- package/dist/modules/mcp/mcp.settings.controller.js +1 -1
- package/dist/modules/mcp/mcp.settings.controller.js.map +1 -1
- package/dist/modules/mcp/mcp.typeguards.d.ts +3 -0
- package/dist/modules/mcp/mcp.typeguards.js +19 -1
- package/dist/modules/mcp/mcp.typeguards.js.map +1 -1
- package/dist/modules/mcp/mcp.types.d.ts +24 -0
- package/dist/modules/mcp/mcp.utils.d.ts +8 -0
- package/dist/modules/mcp/mcp.utils.js +37 -0
- package/dist/modules/mcp/mcp.utils.js.map +1 -0
- package/dist/modules/provisioning.ee/constants.d.ts +1 -0
- package/dist/modules/provisioning.ee/constants.js +5 -0
- package/dist/modules/provisioning.ee/constants.js.map +1 -0
- package/dist/modules/provisioning.ee/provisioning.controller.ee.d.ts +10 -0
- package/dist/modules/provisioning.ee/provisioning.controller.ee.js +41 -0
- package/dist/modules/provisioning.ee/provisioning.controller.ee.js.map +1 -0
- package/dist/modules/provisioning.ee/provisioning.module.d.ts +4 -0
- package/dist/modules/provisioning.ee/provisioning.module.js +53 -0
- package/dist/modules/provisioning.ee/provisioning.module.js.map +1 -0
- package/dist/modules/provisioning.ee/provisioning.service.ee.d.ts +15 -0
- package/dist/modules/provisioning.ee/provisioning.service.ee.js +67 -0
- package/dist/modules/provisioning.ee/provisioning.service.ee.js.map +1 -0
- package/dist/posthog/index.js +0 -4
- package/dist/posthog/index.js.map +1 -1
- package/dist/public-api/v1/handlers/workflows/workflows.handler.js +12 -0
- package/dist/public-api/v1/handlers/workflows/workflows.handler.js.map +1 -1
- package/dist/scaling/pubsub/publisher.service.d.ts +3 -1
- package/dist/scaling/pubsub/publisher.service.js +7 -8
- package/dist/scaling/pubsub/publisher.service.js.map +1 -1
- package/dist/scaling/pubsub/subscriber.service.d.ts +3 -1
- package/dist/scaling/pubsub/subscriber.service.js +6 -4
- package/dist/scaling/pubsub/subscriber.service.js.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/services/ai-workflow-builder.service.d.ts +3 -0
- package/dist/services/ai-workflow-builder.service.js +6 -0
- package/dist/services/ai-workflow-builder.service.js.map +1 -1
- package/dist/services/cache/cache.service.js +1 -5
- package/dist/services/cache/cache.service.js.map +1 -1
- package/dist/services/frontend.service.js +12 -3
- package/dist/services/frontend.service.js.map +1 -1
- package/dist/services/role.service.js +15 -3
- package/dist/services/role.service.js.map +1 -1
- package/dist/services/user.service.d.ts +3 -1
- package/dist/services/user.service.js +14 -5
- package/dist/services/user.service.js.map +1 -1
- package/dist/sso.ee/oidc/oidc.service.ee.js +6 -1
- package/dist/sso.ee/oidc/oidc.service.ee.js.map +1 -1
- package/dist/workflow-runner.d.ts +0 -2
- package/dist/workflow-runner.js +4 -9
- package/dist/workflow-runner.js.map +1 -1
- package/dist/workflows/workflow-execution.service.js +1 -5
- package/dist/workflows/workflow-execution.service.js.map +1 -1
- package/dist/workflows/workflow.service.js +24 -0
- package/dist/workflows/workflow.service.js.map +1 -1
- package/package.json +16 -16
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const USER_CONNECTED_TO_MCP_EVENT = "User connected to MCP server";
|
|
2
|
+
export declare const USER_CALLED_MCP_TOOL_EVENT = "User called mcp tool";
|
|
3
|
+
export declare const UNAUTHORIZED_ERROR_MESSAGE = "Unauthorized";
|
|
4
|
+
export declare const INTERNAL_SERVER_ERROR_MESSAGE = "Internal server error";
|
|
5
|
+
export declare const MCP_ACCESS_DISABLED_ERROR_MESSAGE = "MCP access is disabled";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MCP_ACCESS_DISABLED_ERROR_MESSAGE = exports.INTERNAL_SERVER_ERROR_MESSAGE = exports.UNAUTHORIZED_ERROR_MESSAGE = exports.USER_CALLED_MCP_TOOL_EVENT = exports.USER_CONNECTED_TO_MCP_EVENT = void 0;
|
|
4
|
+
exports.USER_CONNECTED_TO_MCP_EVENT = 'User connected to MCP server';
|
|
5
|
+
exports.USER_CALLED_MCP_TOOL_EVENT = 'User called mcp tool';
|
|
6
|
+
exports.UNAUTHORIZED_ERROR_MESSAGE = 'Unauthorized';
|
|
7
|
+
exports.INTERNAL_SERVER_ERROR_MESSAGE = 'Internal server error';
|
|
8
|
+
exports.MCP_ACCESS_DISABLED_ERROR_MESSAGE = 'MCP access is disabled';
|
|
9
|
+
//# sourceMappingURL=mcp.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.constants.js","sourceRoot":"","sources":["../../../src/modules/mcp/mcp.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,2BAA2B,GAAG,8BAA8B,CAAC;AAC7D,QAAA,0BAA0B,GAAG,sBAAsB,CAAC;AAEpD,QAAA,0BAA0B,GAAG,cAAc,CAAC;AAC5C,QAAA,6BAA6B,GAAG,uBAAuB,CAAC;AACxD,QAAA,iCAAiC,GAAG,wBAAwB,CAAC"}
|
|
@@ -3,6 +3,7 @@ import type { Response } from 'express';
|
|
|
3
3
|
import { ErrorReporter } from 'n8n-core';
|
|
4
4
|
import { McpService } from './mcp.service';
|
|
5
5
|
import { McpSettingsService } from './mcp.settings.service';
|
|
6
|
+
import { Telemetry } from '../../telemetry';
|
|
6
7
|
export type FlushableResponse = Response & {
|
|
7
8
|
flush: () => void;
|
|
8
9
|
};
|
|
@@ -10,6 +11,8 @@ export declare class McpController {
|
|
|
10
11
|
private readonly errorReporter;
|
|
11
12
|
private readonly mcpService;
|
|
12
13
|
private readonly mcpSettingsService;
|
|
13
|
-
|
|
14
|
+
private readonly telemetry;
|
|
15
|
+
constructor(errorReporter: ErrorReporter, mcpService: McpService, mcpSettingsService: McpSettingsService, telemetry: Telemetry);
|
|
14
16
|
build(req: AuthenticatedRequest, res: FlushableResponse): Promise<void>;
|
|
17
|
+
private trackMCPEvent;
|
|
15
18
|
}
|
|
@@ -15,19 +15,40 @@ const decorators_1 = require("@n8n/decorators");
|
|
|
15
15
|
const di_1 = require("@n8n/di");
|
|
16
16
|
const n8n_core_1 = require("n8n-core");
|
|
17
17
|
const mcp_api_key_service_1 = require("./mcp-api-key.service");
|
|
18
|
+
const mcp_constants_1 = require("./mcp.constants");
|
|
18
19
|
const mcp_service_1 = require("./mcp.service");
|
|
19
20
|
const mcp_settings_service_1 = require("./mcp.settings.service");
|
|
21
|
+
const mcp_typeguards_1 = require("./mcp.typeguards");
|
|
22
|
+
const mcp_utils_1 = require("./mcp.utils");
|
|
23
|
+
const telemetry_1 = require("../../telemetry");
|
|
20
24
|
const getAuthMiddleware = () => di_1.Container.get(mcp_api_key_service_1.McpServerApiKeyService).getAuthMiddleware();
|
|
21
25
|
let McpController = class McpController {
|
|
22
|
-
constructor(errorReporter, mcpService, mcpSettingsService) {
|
|
26
|
+
constructor(errorReporter, mcpService, mcpSettingsService, telemetry) {
|
|
23
27
|
this.errorReporter = errorReporter;
|
|
24
28
|
this.mcpService = mcpService;
|
|
25
29
|
this.mcpSettingsService = mcpSettingsService;
|
|
30
|
+
this.telemetry = telemetry;
|
|
26
31
|
}
|
|
27
32
|
async build(req, res) {
|
|
33
|
+
const body = req.body;
|
|
34
|
+
const isInitializationRequest = (0, mcp_typeguards_1.isJSONRPCRequest)(body) ? body.method === 'initialize' : false;
|
|
35
|
+
const isToolCallRequest = (0, mcp_typeguards_1.isJSONRPCRequest)(body) ? body.method === 'tools/call' : false;
|
|
36
|
+
const clientInfo = (0, mcp_utils_1.getClientInfo)(req);
|
|
37
|
+
const telemetryPayload = {
|
|
38
|
+
user_id: req.user.id,
|
|
39
|
+
client_name: clientInfo?.name,
|
|
40
|
+
client_version: clientInfo?.version,
|
|
41
|
+
};
|
|
28
42
|
const enabled = await this.mcpSettingsService.getEnabled();
|
|
29
43
|
if (!enabled) {
|
|
30
|
-
|
|
44
|
+
if (isInitializationRequest) {
|
|
45
|
+
this.trackMCPEvent('connected', {
|
|
46
|
+
...telemetryPayload,
|
|
47
|
+
mcp_connection_status: 'error',
|
|
48
|
+
error: mcp_constants_1.MCP_ACCESS_DISABLED_ERROR_MESSAGE,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
res.status(403).json({ message: mcp_constants_1.MCP_ACCESS_DISABLED_ERROR_MESSAGE });
|
|
31
52
|
return;
|
|
32
53
|
}
|
|
33
54
|
try {
|
|
@@ -41,21 +62,51 @@ let McpController = class McpController {
|
|
|
41
62
|
});
|
|
42
63
|
await server.connect(transport);
|
|
43
64
|
await transport.handleRequest(req, res, req.body);
|
|
65
|
+
if (isInitializationRequest) {
|
|
66
|
+
this.trackMCPEvent('connected', {
|
|
67
|
+
...telemetryPayload,
|
|
68
|
+
mcp_connection_status: 'success',
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
else if (isToolCallRequest) {
|
|
72
|
+
const toolName = (0, mcp_utils_1.getToolName)(body);
|
|
73
|
+
const parameters = (0, mcp_utils_1.getToolArguments)(body);
|
|
74
|
+
this.trackMCPEvent('tool_call', {
|
|
75
|
+
user_id: req.user.id,
|
|
76
|
+
tool_name: toolName,
|
|
77
|
+
parameters,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
44
80
|
}
|
|
45
81
|
catch (error) {
|
|
46
82
|
this.errorReporter.error(error);
|
|
83
|
+
if (isInitializationRequest) {
|
|
84
|
+
this.trackMCPEvent('connected', {
|
|
85
|
+
...telemetryPayload,
|
|
86
|
+
mcp_connection_status: 'error',
|
|
87
|
+
error: error instanceof Error ? error.message : String(error),
|
|
88
|
+
});
|
|
89
|
+
}
|
|
47
90
|
if (!res.headersSent) {
|
|
48
91
|
res.status(500).json({
|
|
49
92
|
jsonrpc: '2.0',
|
|
50
93
|
error: {
|
|
51
94
|
code: -32603,
|
|
52
|
-
message:
|
|
95
|
+
message: mcp_constants_1.INTERNAL_SERVER_ERROR_MESSAGE,
|
|
53
96
|
},
|
|
54
97
|
id: null,
|
|
55
98
|
});
|
|
56
99
|
}
|
|
57
100
|
}
|
|
58
101
|
}
|
|
102
|
+
trackMCPEvent(type, payload) {
|
|
103
|
+
if (type === 'connected') {
|
|
104
|
+
this.telemetry.track(mcp_constants_1.USER_CONNECTED_TO_MCP_EVENT, payload);
|
|
105
|
+
}
|
|
106
|
+
else if (type === 'tool_call') {
|
|
107
|
+
this.telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, payload);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
59
110
|
};
|
|
60
111
|
exports.McpController = McpController;
|
|
61
112
|
__decorate([
|
|
@@ -73,6 +124,7 @@ exports.McpController = McpController = __decorate([
|
|
|
73
124
|
(0, decorators_1.RootLevelController)('/mcp-server'),
|
|
74
125
|
__metadata("design:paramtypes", [n8n_core_1.ErrorReporter,
|
|
75
126
|
mcp_service_1.McpService,
|
|
76
|
-
mcp_settings_service_1.McpSettingsService
|
|
127
|
+
mcp_settings_service_1.McpSettingsService,
|
|
128
|
+
telemetry_1.Telemetry])
|
|
77
129
|
], McpController);
|
|
78
130
|
//# sourceMappingURL=mcp.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.controller.js","sourceRoot":"","sources":["../../../src/modules/mcp/mcp.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0FAAmG;AAEnG,gDAA4D;AAC5D,gCAAoC;AAEpC,uCAAyC;AAEzC,+DAA+D;AAC/D,+CAA2C;AAC3C,iEAA4D;
|
|
1
|
+
{"version":3,"file":"mcp.controller.js","sourceRoot":"","sources":["../../../src/modules/mcp/mcp.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Logger } from '@n8n/backend-common';
|
|
2
|
+
import { WorkflowRepository } from '@n8n/db';
|
|
3
|
+
import { EventService } from '../../events/event.service';
|
|
4
|
+
import { EventRelay } from '../../events/relays/event-relay';
|
|
5
|
+
export declare class McpEventRelay extends EventRelay {
|
|
6
|
+
private readonly workflowRepository;
|
|
7
|
+
private readonly logger;
|
|
8
|
+
constructor(eventService: EventService, workflowRepository: WorkflowRepository, logger: Logger);
|
|
9
|
+
init(): void;
|
|
10
|
+
private onWorkflowDeactivated;
|
|
11
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.McpEventRelay = void 0;
|
|
13
|
+
const backend_common_1 = require("@n8n/backend-common");
|
|
14
|
+
const db_1 = require("@n8n/db");
|
|
15
|
+
const di_1 = require("@n8n/di");
|
|
16
|
+
const event_service_1 = require("../../events/event.service");
|
|
17
|
+
const event_relay_1 = require("../../events/relays/event-relay");
|
|
18
|
+
let McpEventRelay = class McpEventRelay extends event_relay_1.EventRelay {
|
|
19
|
+
constructor(eventService, workflowRepository, logger) {
|
|
20
|
+
super(eventService);
|
|
21
|
+
this.workflowRepository = workflowRepository;
|
|
22
|
+
this.logger = logger;
|
|
23
|
+
}
|
|
24
|
+
init() {
|
|
25
|
+
this.setupListeners({
|
|
26
|
+
'workflow-deactivated': async (event) => await this.onWorkflowDeactivated(event),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
async onWorkflowDeactivated(event) {
|
|
30
|
+
const { workflow, workflowId } = event;
|
|
31
|
+
if (workflow.settings?.availableInMCP === true) {
|
|
32
|
+
try {
|
|
33
|
+
const updatedSettings = {
|
|
34
|
+
...workflow.settings,
|
|
35
|
+
availableInMCP: false,
|
|
36
|
+
};
|
|
37
|
+
await this.workflowRepository.update(workflowId, {
|
|
38
|
+
settings: updatedSettings,
|
|
39
|
+
});
|
|
40
|
+
this.logger.info('Disabled MCP access for deactivated workflow', {
|
|
41
|
+
workflowId,
|
|
42
|
+
workflowName: workflow.name,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
this.logger.error('Failed to disable MCP access for deactivated workflow', {
|
|
47
|
+
workflowId,
|
|
48
|
+
error: error instanceof Error ? error.message : String(error),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
exports.McpEventRelay = McpEventRelay;
|
|
55
|
+
exports.McpEventRelay = McpEventRelay = __decorate([
|
|
56
|
+
(0, di_1.Service)(),
|
|
57
|
+
__metadata("design:paramtypes", [event_service_1.EventService,
|
|
58
|
+
db_1.WorkflowRepository,
|
|
59
|
+
backend_common_1.Logger])
|
|
60
|
+
], McpEventRelay);
|
|
61
|
+
//# sourceMappingURL=mcp.event-relay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.event-relay.js","sourceRoot":"","sources":["../../../src/modules/mcp/mcp.event-relay.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wDAA6C;AAC7C,gCAA6C;AAC7C,gCAAkC;AAElC,0DAAsD;AACtD,6DAAyD;AAOlD,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,wBAAU;IAC5C,YACC,YAA0B,EACT,kBAAsC,EACtC,MAAc;QAE/B,KAAK,CAAC,YAAY,CAAC,CAAC;QAHH,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,WAAM,GAAN,MAAM,CAAQ;IAGhC,CAAC;IAED,IAAI;QACH,IAAI,CAAC,cAAc,CAAC;YACnB,sBAAsB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;SAChF,CAAC,CAAC;IACJ,CAAC;IAMO,KAAK,CAAC,qBAAqB,CAAC,KAA4C;QAC/E,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;QAGvC,IAAI,QAAQ,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,EAAE,CAAC;YAChD,IAAI,CAAC;gBAEJ,MAAM,eAAe,GAAG;oBACvB,GAAG,QAAQ,CAAC,QAAQ;oBACpB,cAAc,EAAE,KAAK;iBACrB,CAAC;gBAEF,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE;oBAChD,QAAQ,EAAE,eAAe;iBACzB,CAAC,CAAC;gBAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,EAAE;oBAChE,UAAU;oBACV,YAAY,EAAE,QAAQ,CAAC,IAAI;iBAC3B,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,EAAE;oBAC1E,UAAU;oBACV,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC7D,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;IACF,CAAC;CACD,CAAA;AA/CY,sCAAa;wBAAb,aAAa;IADzB,IAAA,YAAO,GAAE;qCAGM,4BAAY;QACW,uBAAkB;QAC9B,uBAAM;GAJpB,aAAa,CA+CzB"}
|
|
@@ -49,6 +49,8 @@ let McpModule = class McpModule {
|
|
|
49
49
|
async init() {
|
|
50
50
|
await Promise.resolve().then(() => __importStar(require('./mcp.controller')));
|
|
51
51
|
await Promise.resolve().then(() => __importStar(require('./mcp.settings.controller')));
|
|
52
|
+
const { McpEventRelay } = await Promise.resolve().then(() => __importStar(require('./mcp.event-relay')));
|
|
53
|
+
di_1.Container.get(McpEventRelay).init();
|
|
52
54
|
}
|
|
53
55
|
async settings() {
|
|
54
56
|
const { McpSettingsService } = await Promise.resolve().then(() => __importStar(require('./mcp.settings.service')));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.module.js","sourceRoot":"","sources":["../../../src/modules/mcp/mcp.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAA4D;AAC5D,gCAAoC;AAQ7B,IAAM,SAAS,GAAf,MAAM,SAAS;IACrB,KAAK,CAAC,IAAI;QACT,wDAAa,kBAAkB,GAAC,CAAC;QACjC,wDAAa,2BAA2B,GAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.module.js","sourceRoot":"","sources":["../../../src/modules/mcp/mcp.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAA4D;AAC5D,gCAAoC;AAQ7B,IAAM,SAAS,GAAf,MAAM,SAAS;IACrB,KAAK,CAAC,IAAI;QACT,wDAAa,kBAAkB,GAAC,CAAC;QACjC,wDAAa,2BAA2B,GAAC,CAAC;QAG1C,MAAM,EAAE,aAAa,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;QAC5D,cAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAOD,KAAK,CAAC,QAAQ;QACb,MAAM,EAAE,kBAAkB,EAAE,GAAG,wDAAa,wBAAwB,GAAC,CAAC;QACtE,MAAM,gBAAgB,GAAG,MAAM,cAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,UAAU,EAAE,CAAC;QAC9E,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC7B,CAAC;IAGK,AAAN,KAAK,CAAC,QAAQ,KAAI,CAAC;CACnB,CAAA;AAvBY,8BAAS;AAsBf;IADL,IAAA,uBAAU,GAAE;;;;yCACM;oBAtBP,SAAS;IADrB,IAAA,0BAAa,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;GAClB,SAAS,CAuBrB"}
|
|
@@ -64,7 +64,7 @@ let McpSettingsController = class McpSettingsController {
|
|
|
64
64
|
});
|
|
65
65
|
throw new not_found_error_1.NotFoundError('Could not load the workflow - you can only access workflows available to you');
|
|
66
66
|
}
|
|
67
|
-
if (!workflow.active) {
|
|
67
|
+
if (!workflow.active && dto.availableInMCP) {
|
|
68
68
|
throw new bad_request_error_1.BadRequestError('MCP access can only be set for active workflows');
|
|
69
69
|
}
|
|
70
70
|
const hasWebhooks = workflow.nodes.some((node) => node.type === n8n_workflow_1.WEBHOOK_NODE_TYPE && node.disabled !== true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.settings.controller.js","sourceRoot":"","sources":["../../../src/modules/mcp/mcp.settings.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,wDAA6D;AAC7D,gCAAoE;AACpE,gDAA6F;AAE7F,+CAAiD;AAEjD,2EAAqE;AACrE,6FAAuF;AACvF,+DAA+D;AAC/D,iEAA4D;AAE5D,kFAA6E;AAC7E,8EAAyE;AACzE,iFAA4E;AAC5E,mEAA+D;AAGxD,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACjC,YACkB,kBAAsC,EACtC,MAAc,EACd,cAA8B,EAC9B,sBAA8C,EAC9C,qBAA4C,EAC5C,eAAgC;QALhC,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,WAAM,GAAN,MAAM,CAAQ;QACd,mBAAc,GAAd,cAAc,CAAgB;QAC9B,2BAAsB,GAAtB,sBAAsB,CAAwB;QAC9C,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,oBAAe,GAAf,eAAe,CAAiB;IAC/C,CAAC;IAIE,AAAN,KAAK,CAAC,cAAc,CACnB,IAA0B,EAC1B,IAAc,EACR,GAAyB;QAE/B,MAAM,OAAO,GAAG,GAAG,CAAC,gBAAgB,CAAC;QACrC,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gDAAgD,EAAE;gBAClE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC7D,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;IACtC,CAAC;IAIK,AAAN,KAAK,CAAC,qBAAqB,CAAC,GAAyB;QACpD,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAIK,AAAN,KAAK,CAAC,wBAAwB,CAAC,GAAyB;QACvD,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAIK,AAAN,KAAK,CAAC,uBAAuB,CAC5B,GAAyB,EACzB,IAAc,EACO,UAAkB,EACjC,GAAkC;QAExC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE;YAC3F,iBAAiB;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+DAA+D,EAAE;gBACjF,UAAU;gBACV,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;aACnB,CAAC,CAAC;YACH,MAAM,IAAI,+BAAa,CACtB,8EAA8E,CAC9E,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.settings.controller.js","sourceRoot":"","sources":["../../../src/modules/mcp/mcp.settings.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { JSONRPCRequest } from './mcp.types';
|
|
1
2
|
type UnknownRecord = Record<string, unknown>;
|
|
2
3
|
export type HttpHeaderAuthDecryptedData = {
|
|
3
4
|
name: string;
|
|
@@ -6,6 +7,7 @@ export type HttpHeaderAuthDecryptedData = {
|
|
|
6
7
|
export type WithDecryptedData<T> = UnknownRecord & {
|
|
7
8
|
data: T;
|
|
8
9
|
};
|
|
10
|
+
export declare function isRecord(value: unknown): value is UnknownRecord;
|
|
9
11
|
export declare function hasHttpHeaderAuthDecryptedData(value: unknown): value is WithDecryptedData<HttpHeaderAuthDecryptedData>;
|
|
10
12
|
export type JwtPassphraseDecryptedData = {
|
|
11
13
|
keyType?: 'passphrase' | string;
|
|
@@ -18,4 +20,5 @@ export type JwtPemKeyDecryptedData = {
|
|
|
18
20
|
};
|
|
19
21
|
export declare function hasJwtSecretDecryptedData(value: unknown): value is WithDecryptedData<JwtPassphraseDecryptedData>;
|
|
20
22
|
export declare function hasJwtPemKeyDecryptedData(value: unknown): value is WithDecryptedData<JwtPemKeyDecryptedData>;
|
|
23
|
+
export declare function isJSONRPCRequest(value: unknown): value is JSONRPCRequest;
|
|
21
24
|
export {};
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isRecord = isRecord;
|
|
3
4
|
exports.hasHttpHeaderAuthDecryptedData = hasHttpHeaderAuthDecryptedData;
|
|
4
5
|
exports.hasJwtSecretDecryptedData = hasJwtSecretDecryptedData;
|
|
5
6
|
exports.hasJwtPemKeyDecryptedData = hasJwtPemKeyDecryptedData;
|
|
7
|
+
exports.isJSONRPCRequest = isJSONRPCRequest;
|
|
6
8
|
function isRecord(value) {
|
|
7
|
-
return typeof value === 'object' && value !== null;
|
|
9
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
8
10
|
}
|
|
9
11
|
function hasHttpHeaderAuthDecryptedData(value) {
|
|
10
12
|
if (!isRecord(value))
|
|
@@ -38,4 +40,20 @@ function hasJwtPemKeyDecryptedData(value) {
|
|
|
38
40
|
return true;
|
|
39
41
|
return typeof data.privateKey === 'string' || typeof data.publicKey === 'string';
|
|
40
42
|
}
|
|
43
|
+
function isJSONRPCRequest(value) {
|
|
44
|
+
if (!isRecord(value))
|
|
45
|
+
return false;
|
|
46
|
+
if ('jsonrpc' in value && typeof value.jsonrpc !== 'string')
|
|
47
|
+
return false;
|
|
48
|
+
if ('method' in value && typeof value.method !== 'string')
|
|
49
|
+
return false;
|
|
50
|
+
if ('params' in value && value.params !== undefined && !isRecord(value.params))
|
|
51
|
+
return false;
|
|
52
|
+
if ('id' in value &&
|
|
53
|
+
value.id !== null &&
|
|
54
|
+
typeof value.id !== 'string' &&
|
|
55
|
+
typeof value.id !== 'number')
|
|
56
|
+
return false;
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
41
59
|
//# sourceMappingURL=mcp.typeguards.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.typeguards.js","sourceRoot":"","sources":["../../../src/modules/mcp/mcp.typeguards.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"mcp.typeguards.js","sourceRoot":"","sources":["../../../src/modules/mcp/mcp.typeguards.ts"],"names":[],"mappings":";;AAcA,4BAEC;AAOD,wEASC;AAcD,8DASC;AAED,8DAUC;AAQD,4CAkBC;AA/ED,SAAgB,QAAQ,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAOD,SAAgB,8BAA8B,CAC7C,KAAc;IAEd,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC;IAClB,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,IAAI,GAAG,aAAa,CAAC;IAC3B,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;AACtC,CAAC;AAcD,SAAgB,yBAAyB,CACxC,KAAc;IAEd,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC;IAClB,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,IAAI,GAAG,aAAa,CAAC;IAC3B,OAAO,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;AACxC,CAAC;AAED,SAAgB,yBAAyB,CACxC,KAAc;IAEd,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC;IAClB,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,IAAI,GAAG,aAAa,CAAC;IAC3B,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC/E,OAAO,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC;AAClF,CAAC;AAQD,SAAgB,gBAAgB,CAAC,KAAc;IAC9C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEnC,IAAI,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE1E,IAAI,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAExE,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7F,IACC,IAAI,IAAI,KAAK;QACb,KAAK,CAAC,EAAE,KAAK,IAAI;QACjB,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAE5B,OAAO,KAAK,CAAC;IAEd,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -35,3 +35,27 @@ export type SearchWorkflowsResult = {
|
|
|
35
35
|
export type WorkflowDetailsResult = z.infer<WorkflowDetailsOutputSchema>;
|
|
36
36
|
export type WorkflowDetailsWorkflow = WorkflowDetailsResult['workflow'];
|
|
37
37
|
export type WorkflowDetailsNode = WorkflowDetailsWorkflow['nodes'][number];
|
|
38
|
+
export type JSONRPCRequest = {
|
|
39
|
+
jsonrpc?: string;
|
|
40
|
+
method?: string;
|
|
41
|
+
params?: {
|
|
42
|
+
clientInfo?: {
|
|
43
|
+
name?: string;
|
|
44
|
+
version?: string;
|
|
45
|
+
};
|
|
46
|
+
[key: string]: unknown;
|
|
47
|
+
};
|
|
48
|
+
id?: string | number | null;
|
|
49
|
+
};
|
|
50
|
+
export type UserConnectedToMCPEventPayload = {
|
|
51
|
+
user_id?: string;
|
|
52
|
+
client_name?: string;
|
|
53
|
+
client_version?: string;
|
|
54
|
+
mcp_connection_status: 'success' | 'error';
|
|
55
|
+
error?: string;
|
|
56
|
+
};
|
|
57
|
+
export type UserCalledMCPToolEventPayload = {
|
|
58
|
+
user_id?: string;
|
|
59
|
+
tool_name: string;
|
|
60
|
+
parameters?: Record<string, unknown>;
|
|
61
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AuthenticatedRequest } from '@n8n/db';
|
|
2
|
+
import type { Request } from 'express';
|
|
3
|
+
export declare const getClientInfo: (req: Request | AuthenticatedRequest) => {
|
|
4
|
+
name?: string;
|
|
5
|
+
version?: string;
|
|
6
|
+
} | undefined;
|
|
7
|
+
export declare const getToolName: (body: unknown) => string;
|
|
8
|
+
export declare const getToolArguments: (body: unknown) => Record<string, unknown>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getToolArguments = exports.getToolName = exports.getClientInfo = void 0;
|
|
4
|
+
const mcp_typeguards_1 = require("./mcp.typeguards");
|
|
5
|
+
const getClientInfo = (req) => {
|
|
6
|
+
let clientInfo;
|
|
7
|
+
if ((0, mcp_typeguards_1.isJSONRPCRequest)(req.body) && req.body.params?.clientInfo) {
|
|
8
|
+
clientInfo = req.body.params.clientInfo;
|
|
9
|
+
}
|
|
10
|
+
return clientInfo;
|
|
11
|
+
};
|
|
12
|
+
exports.getClientInfo = getClientInfo;
|
|
13
|
+
const getToolName = (body) => {
|
|
14
|
+
if (!(0, mcp_typeguards_1.isJSONRPCRequest)(body))
|
|
15
|
+
return 'unknown';
|
|
16
|
+
if (!body.params)
|
|
17
|
+
return 'unknown';
|
|
18
|
+
const { name } = body.params;
|
|
19
|
+
if (typeof name === 'string') {
|
|
20
|
+
return name;
|
|
21
|
+
}
|
|
22
|
+
return 'unknown';
|
|
23
|
+
};
|
|
24
|
+
exports.getToolName = getToolName;
|
|
25
|
+
const getToolArguments = (body) => {
|
|
26
|
+
if (!(0, mcp_typeguards_1.isJSONRPCRequest)(body))
|
|
27
|
+
return {};
|
|
28
|
+
if (!body.params)
|
|
29
|
+
return {};
|
|
30
|
+
const { arguments: args } = body.params;
|
|
31
|
+
if ((0, mcp_typeguards_1.isRecord)(args)) {
|
|
32
|
+
return args;
|
|
33
|
+
}
|
|
34
|
+
return {};
|
|
35
|
+
};
|
|
36
|
+
exports.getToolArguments = getToolArguments;
|
|
37
|
+
//# sourceMappingURL=mcp.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.utils.js","sourceRoot":"","sources":["../../../src/modules/mcp/mcp.utils.ts"],"names":[],"mappings":";;;AAGA,qDAA8D;AAEvD,MAAM,aAAa,GAAG,CAAC,GAAmC,EAAE,EAAE;IACpE,IAAI,UAA2D,CAAC;IAChE,IAAI,IAAA,iCAAgB,EAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;QAC/D,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IACzC,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC,CAAC;AANW,QAAA,aAAa,iBAMxB;AAOK,MAAM,WAAW,GAAG,CAAC,IAAa,EAAU,EAAE;IACpD,IAAI,CAAC,IAAA,iCAAgB,EAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAEnC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC,CAAC;AAVW,QAAA,WAAW,eAUtB;AAOK,MAAM,gBAAgB,GAAG,CAAC,IAAa,EAA2B,EAAE;IAC1E,IAAI,CAAC,IAAA,iCAAgB,EAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAE5B,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;IACxC,IAAI,IAAA,yBAAQ,EAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAVW,QAAA,gBAAgB,oBAU3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PROVISIONING_PREFERENCES_DB_KEY = "features.provisioning";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/modules/provisioning.ee/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,+BAA+B,GAAG,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AuthenticatedRequest } from '@n8n/db';
|
|
2
|
+
import { LicenseState } from '@n8n/backend-common';
|
|
3
|
+
import { ProvisioningService } from './provisioning.service.ee';
|
|
4
|
+
import { Response } from 'express';
|
|
5
|
+
export declare class ProvisioningController {
|
|
6
|
+
private readonly provisioningService;
|
|
7
|
+
private readonly licenseState;
|
|
8
|
+
constructor(provisioningService: ProvisioningService, licenseState: LicenseState);
|
|
9
|
+
getConfig(_req: AuthenticatedRequest, res: Response): Promise<Response<any, Record<string, any>> | import("@n8n/api-types").ProvisioningConfigDto>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ProvisioningController = void 0;
|
|
13
|
+
const decorators_1 = require("@n8n/decorators");
|
|
14
|
+
const backend_common_1 = require("@n8n/backend-common");
|
|
15
|
+
const provisioning_service_ee_1 = require("./provisioning.service.ee");
|
|
16
|
+
let ProvisioningController = class ProvisioningController {
|
|
17
|
+
constructor(provisioningService, licenseState) {
|
|
18
|
+
this.provisioningService = provisioningService;
|
|
19
|
+
this.licenseState = licenseState;
|
|
20
|
+
}
|
|
21
|
+
async getConfig(_req, res) {
|
|
22
|
+
if (!this.licenseState.isProvisioningLicensed()) {
|
|
23
|
+
return res.status(403).json({ message: 'Provisioning is not licensed' });
|
|
24
|
+
}
|
|
25
|
+
return await this.provisioningService.getConfig();
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.ProvisioningController = ProvisioningController;
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, decorators_1.Get)('/config'),
|
|
31
|
+
(0, decorators_1.GlobalScope)('provisioning:manage'),
|
|
32
|
+
__metadata("design:type", Function),
|
|
33
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
34
|
+
__metadata("design:returntype", Promise)
|
|
35
|
+
], ProvisioningController.prototype, "getConfig", null);
|
|
36
|
+
exports.ProvisioningController = ProvisioningController = __decorate([
|
|
37
|
+
(0, decorators_1.RestController)('/sso/provisioning'),
|
|
38
|
+
__metadata("design:paramtypes", [provisioning_service_ee_1.ProvisioningService,
|
|
39
|
+
backend_common_1.LicenseState])
|
|
40
|
+
], ProvisioningController);
|
|
41
|
+
//# sourceMappingURL=provisioning.controller.ee.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provisioning.controller.ee.js","sourceRoot":"","sources":["../../../src/modules/provisioning.ee/provisioning.controller.ee.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gDAAmE;AACnE,wDAAmD;AACnD,uEAAgE;AAIzD,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAClC,YACkB,mBAAwC,EACxC,YAA0B;QAD1B,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,iBAAY,GAAZ,YAAY,CAAc;IACzC,CAAC;IAIE,AAAN,KAAK,CAAC,SAAS,CAAC,IAA0B,EAAE,GAAa;QACxD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,EAAE,CAAC;YACjD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;IACnD,CAAC;CACD,CAAA;AAfY,wDAAsB;AAQ5B;IAFL,IAAA,gBAAG,EAAC,SAAS,CAAC;IACd,IAAA,wBAAW,EAAC,qBAAqB,CAAC;;;;uDAOlC;iCAdW,sBAAsB;IADlC,IAAA,2BAAc,EAAC,mBAAmB,CAAC;qCAGI,6CAAmB;QAC1B,6BAAY;GAHhC,sBAAsB,CAelC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.ProvisioningModule = void 0;
|
|
43
|
+
const decorators_1 = require("@n8n/decorators");
|
|
44
|
+
let ProvisioningModule = class ProvisioningModule {
|
|
45
|
+
async init() {
|
|
46
|
+
await Promise.resolve().then(() => __importStar(require('./provisioning.controller.ee')));
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
exports.ProvisioningModule = ProvisioningModule;
|
|
50
|
+
exports.ProvisioningModule = ProvisioningModule = __decorate([
|
|
51
|
+
(0, decorators_1.BackendModule)({ name: 'provisioning', licenseFlag: ['feat:oidc', 'feat:saml', 'feat:ldap'] })
|
|
52
|
+
], ProvisioningModule);
|
|
53
|
+
//# sourceMappingURL=provisioning.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provisioning.module.js","sourceRoot":"","sources":["../../../src/modules/provisioning.ee/provisioning.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAAgD;AAGzC,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC9B,KAAK,CAAC,IAAI;QACT,wDAAa,8BAA8B,GAAC,CAAC;IAC9C,CAAC;CACD,CAAA;AAJY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,0BAAa,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;GACjF,kBAAkB,CAI9B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ProvisioningConfigDto } from '@n8n/api-types';
|
|
2
|
+
import { Logger } from '@n8n/backend-common';
|
|
3
|
+
import { GlobalConfig } from '@n8n/config';
|
|
4
|
+
import { SettingsRepository } from '@n8n/db';
|
|
5
|
+
export declare class ProvisioningService {
|
|
6
|
+
private readonly globalConfig;
|
|
7
|
+
private readonly settingsRepository;
|
|
8
|
+
private readonly logger;
|
|
9
|
+
private provisioningConfig;
|
|
10
|
+
constructor(globalConfig: GlobalConfig, settingsRepository: SettingsRepository, logger: Logger);
|
|
11
|
+
init(): Promise<void>;
|
|
12
|
+
getConfig(): Promise<ProvisioningConfigDto>;
|
|
13
|
+
loadConfigurationFromDatabase(): Promise<ProvisioningConfigDto | undefined>;
|
|
14
|
+
loadConfig(): Promise<ProvisioningConfigDto>;
|
|
15
|
+
}
|