@deadragdoll/tellymcp 0.0.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/.env.example.client +93 -0
- package/.env.example.gateway +120 -0
- package/CHANGELOG.md +155 -0
- package/LICENSE +21 -0
- package/README-ru.md +338 -0
- package/README.md +1262 -0
- package/STANDALONE-ru.md +266 -0
- package/STANDALONE.md +266 -0
- package/TOOLS.md +1296 -0
- package/config/templates/env.both.template +83 -0
- package/config/templates/env.client.template +60 -0
- package/config/templates/env.gateway.template +82 -0
- package/dist/cli.js +636 -0
- package/dist/index.js +17 -0
- package/dist/lib/logfeed/store.js +52 -0
- package/dist/lib/middlewares/tracer.js +172 -0
- package/dist/lib/mixins/db.js +267 -0
- package/dist/lib/mixins/logfeed.js +34 -0
- package/dist/lib/mixins/session.errors.js +142 -0
- package/dist/lib/moleculer.js +2 -0
- package/dist/lib/trace.js +147 -0
- package/dist/lib/traceContext.js +116 -0
- package/dist/moleculer.config.js +274 -0
- package/dist/services/features/telegram-mcp/approval.service.js +33 -0
- package/dist/services/features/telegram-mcp/browser.service.js +42 -0
- package/dist/services/features/telegram-mcp/collaboration.service.js +53 -0
- package/dist/services/features/telegram-mcp/ensuredb.service.js +337 -0
- package/dist/services/features/telegram-mcp/gateway-delivery.service.js +378 -0
- package/dist/services/features/telegram-mcp/gateway-loopback.js +10 -0
- package/dist/services/features/telegram-mcp/gateway-rmq.service.js +294 -0
- package/dist/services/features/telegram-mcp/gateway-socket.service.js +1463 -0
- package/dist/services/features/telegram-mcp/gateway.service.js +1141 -0
- package/dist/services/features/telegram-mcp/inbox.service.js +33 -0
- package/dist/services/features/telegram-mcp/mcp-http.service.js +76 -0
- package/dist/services/features/telegram-mcp/mcp-server.service.js +127 -0
- package/dist/services/features/telegram-mcp/notify.service.js +33 -0
- package/dist/services/features/telegram-mcp/pair.service.js +33 -0
- package/dist/services/features/telegram-mcp/runtime.service.js +36 -0
- package/dist/services/features/telegram-mcp/session-context.service.js +33 -0
- package/dist/services/features/telegram-mcp/src/app/bootstrap/runtime.js +103 -0
- package/dist/services/features/telegram-mcp/src/app/config/env.js +317 -0
- package/dist/services/features/telegram-mcp/src/app/http.js +774 -0
- package/dist/services/features/telegram-mcp/src/app/index.js +2 -0
- package/dist/services/features/telegram-mcp/src/app/providers/mcp/server.js +13 -0
- package/dist/services/features/telegram-mcp/src/app/providers/redis/client.js +18 -0
- package/dist/services/features/telegram-mcp/src/app/webapp/assets.js +740 -0
- package/dist/services/features/telegram-mcp/src/app/webapp/auth.js +267 -0
- package/dist/services/features/telegram-mcp/src/app/webapp/relay.js +69 -0
- package/dist/services/features/telegram-mcp/src/app/webapp/tmux.js +9 -0
- package/dist/services/features/telegram-mcp/src/entities/auth/model/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/entities/browser/model/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/entities/collaboration/model/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/entities/inbox/model/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/entities/request/model/schema.js +545 -0
- package/dist/services/features/telegram-mcp/src/entities/request/model/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/entities/session/model/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/features/ask-user/model/askUserTelegram.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserClearLogsTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserClickTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserCloseTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserComputedStyleTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserConsoleTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserDomTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserErrorsTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserFillTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserNetworkFailuresTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserOpenTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserPressTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserReloadTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserScreenshotTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserService.js +689 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserWaitForTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserWaitForUrlTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/backend.js +2 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/collaborationService.js +26 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/localCollaborationBackend.js +390 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileService.js +102 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerNoteTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/distributed-client/model/gatewayCollaborationBackend.js +69 -0
- package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/gatewayHttpService.js +657 -0
- package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/gatewayReplyResolution.js +17 -0
- package/dist/services/features/telegram-mcp/src/features/inbox/model/deleteTelegramInboxMessageTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxCountTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/inbox/model/inboxService.js +77 -0
- package/dist/services/features/telegram-mcp/src/features/notify/model/notifyService.js +93 -0
- package/dist/services/features/telegram-mcp/src/features/notify/model/notifyTelegramTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/pair-session/model/clearSessionPairingTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/pair-session/model/createSessionPairCodeTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/pair-session/model/generatePairCode.js +202 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/clearSessionContextTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/getSessionContextTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/getTmuxTargetTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/renameSessionTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/sessionContextService.js +409 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/setSessionContextTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/setTmuxTargetTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownService.js +123 -0
- package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/processes/human-approval/model/orchestrator.js +243 -0
- package/dist/services/features/telegram-mcp/src/shared/api/storage/contract.js +2 -0
- package/dist/services/features/telegram-mcp/src/shared/api/tool-registry/registry.js +8 -0
- package/dist/services/features/telegram-mcp/src/shared/api/tool-registry/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/shared/api/transport/contract.js +2 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/object-storage/minioExchangeStore.js +86 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/redis/stateStore.js +436 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/collabSemantics.js +21 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/collabUi.js +87 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/messageFormat.js +60 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/proxyFetch.js +46 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transport.js +6534 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/tmux/client.js +280 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/ids/ids.js +34 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/logger/logger.js +68 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/project-identity/projectIdentity.js +223 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/redact-secrets/redactSecrets.js +22 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/truncate/truncate.js +12 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/version/versionHandshake.js +124 -0
- package/dist/services/features/telegram-mcp/src/shared/types/common.js +2 -0
- package/dist/services/features/telegram-mcp/standalone-http.service.js +113 -0
- package/dist/services/features/telegram-mcp/tools-sync.service.js +33 -0
- package/package.json +110 -0
- package/scripts/postinstall.js +60 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TELEGRAM_MCP_INBOX_SERVICE_NAME = void 0;
|
|
4
|
+
const runtime_service_1 = require("./runtime.service");
|
|
5
|
+
const inboxService_1 = require("./src/features/inbox/model/inboxService");
|
|
6
|
+
exports.TELEGRAM_MCP_INBOX_SERVICE_NAME = "telegramMcp.inbox";
|
|
7
|
+
const TelegramMcpInboxService = {
|
|
8
|
+
name: exports.TELEGRAM_MCP_INBOX_SERVICE_NAME,
|
|
9
|
+
dependencies: [runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME],
|
|
10
|
+
created() {
|
|
11
|
+
this.inboxService = null;
|
|
12
|
+
},
|
|
13
|
+
methods: {
|
|
14
|
+
getInboxService() {
|
|
15
|
+
if (!this.inboxService) {
|
|
16
|
+
throw new Error("telegram_mcp inbox service is not initialized yet");
|
|
17
|
+
}
|
|
18
|
+
return this.inboxService;
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
async started() {
|
|
22
|
+
await this.broker.waitForServices([runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME]);
|
|
23
|
+
const runtimeService = this.broker.getLocalService(runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME);
|
|
24
|
+
if (!runtimeService) {
|
|
25
|
+
throw new Error(`Local Moleculer service '${runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME}' is unavailable`);
|
|
26
|
+
}
|
|
27
|
+
const runtime = runtimeService.getRuntime();
|
|
28
|
+
this.logger.info("Starting telegram_mcp inbox service");
|
|
29
|
+
this.inboxService = new inboxService_1.InboxService(runtime.config, runtime.stateStore, runtime.stateStore, runtime.logger, runtime.projectIdentityResolver);
|
|
30
|
+
this.logger.info("telegram_mcp inbox service is ready");
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
exports.default = TelegramMcpInboxService;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TELEGRAM_MCP_HTTP_SERVICE_NAME = void 0;
|
|
4
|
+
const mcp_server_service_1 = require("./mcp-server.service");
|
|
5
|
+
const runtime_service_1 = require("./runtime.service");
|
|
6
|
+
const http_1 = require("./src/app/http");
|
|
7
|
+
exports.TELEGRAM_MCP_HTTP_SERVICE_NAME = "telegramMcp.http";
|
|
8
|
+
const TelegramMcpHttpService = {
|
|
9
|
+
name: exports.TELEGRAM_MCP_HTTP_SERVICE_NAME,
|
|
10
|
+
dependencies: [
|
|
11
|
+
runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME,
|
|
12
|
+
mcp_server_service_1.TELEGRAM_MCP_MCP_SERVER_SERVICE_NAME,
|
|
13
|
+
],
|
|
14
|
+
created() {
|
|
15
|
+
this.httpHandler = null;
|
|
16
|
+
},
|
|
17
|
+
methods: {
|
|
18
|
+
async routeRequest(req, res, pathname) {
|
|
19
|
+
if (!this.httpHandler) {
|
|
20
|
+
throw new Error("telegram_mcp HTTP handler is not initialized yet");
|
|
21
|
+
}
|
|
22
|
+
this.logger.debug("telegram_mcp HTTP routeRequest received", {
|
|
23
|
+
method: req.method,
|
|
24
|
+
pathname,
|
|
25
|
+
});
|
|
26
|
+
await this.httpHandler.handleRequest(req, res, pathname);
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
actions: {
|
|
30
|
+
async route(ctx) {
|
|
31
|
+
const req = ctx.meta?.$request;
|
|
32
|
+
const res = ctx.meta?.$response;
|
|
33
|
+
if (!req || !res) {
|
|
34
|
+
throw new Error("Raw HTTP request/response are not available in context");
|
|
35
|
+
}
|
|
36
|
+
const request = req;
|
|
37
|
+
const requestUrl = new URL(request.originalUrl ?? req.url ?? "/", "http://gateway.local");
|
|
38
|
+
await this.routeRequest?.(req, res, requestUrl.pathname);
|
|
39
|
+
return null;
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
async started() {
|
|
43
|
+
await this.broker.waitForServices([
|
|
44
|
+
runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME,
|
|
45
|
+
mcp_server_service_1.TELEGRAM_MCP_MCP_SERVER_SERVICE_NAME,
|
|
46
|
+
]);
|
|
47
|
+
const runtimeService = this.broker.getLocalService(runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME);
|
|
48
|
+
const mcpServerService = this.broker.getLocalService(mcp_server_service_1.TELEGRAM_MCP_MCP_SERVER_SERVICE_NAME);
|
|
49
|
+
if (!runtimeService) {
|
|
50
|
+
throw new Error(`Local Moleculer service '${runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME}' is unavailable`);
|
|
51
|
+
}
|
|
52
|
+
if (!mcpServerService) {
|
|
53
|
+
throw new Error(`Local Moleculer service '${mcp_server_service_1.TELEGRAM_MCP_MCP_SERVER_SERVICE_NAME}' is unavailable`);
|
|
54
|
+
}
|
|
55
|
+
const runtime = runtimeService.getRuntime();
|
|
56
|
+
this.logger.info("Starting telegram_mcp HTTP service");
|
|
57
|
+
this.httpHandler = (0, http_1.createMcpHttpHandler)(runtime, {
|
|
58
|
+
createMcpServer: () => mcpServerService.createServer(),
|
|
59
|
+
});
|
|
60
|
+
this.logger.info("telegram_mcp HTTP service is ready", {
|
|
61
|
+
path: runtime.config.mcp.httpPath,
|
|
62
|
+
webappBasePath: runtime.config.webapp.basePath,
|
|
63
|
+
bearerAuthEnabled: Boolean(runtime.config.mcp.bearerToken),
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
async stopped() {
|
|
67
|
+
if (!this.httpHandler) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const handle = this.httpHandler;
|
|
71
|
+
this.httpHandler = null;
|
|
72
|
+
this.logger.info("Stopping telegram_mcp HTTP service");
|
|
73
|
+
await handle.close();
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
exports.default = TelegramMcpHttpService;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TELEGRAM_MCP_MCP_SERVER_SERVICE_NAME = void 0;
|
|
4
|
+
const server_1 = require("./src/app/providers/mcp/server");
|
|
5
|
+
const approval_service_1 = require("./approval.service");
|
|
6
|
+
const browser_service_1 = require("./browser.service");
|
|
7
|
+
const collaboration_service_1 = require("./collaboration.service");
|
|
8
|
+
const inbox_service_1 = require("./inbox.service");
|
|
9
|
+
const notify_service_1 = require("./notify.service");
|
|
10
|
+
const pair_service_1 = require("./pair.service");
|
|
11
|
+
const session_context_service_1 = require("./session-context.service");
|
|
12
|
+
const tools_sync_service_1 = require("./tools-sync.service");
|
|
13
|
+
const askUserTelegram_1 = require("./src/features/ask-user/model/askUserTelegram");
|
|
14
|
+
const browserClickTool_1 = require("./src/features/browser/model/browserClickTool");
|
|
15
|
+
const browserClearLogsTool_1 = require("./src/features/browser/model/browserClearLogsTool");
|
|
16
|
+
const browserCloseTool_1 = require("./src/features/browser/model/browserCloseTool");
|
|
17
|
+
const browserComputedStyleTool_1 = require("./src/features/browser/model/browserComputedStyleTool");
|
|
18
|
+
const browserConsoleTool_1 = require("./src/features/browser/model/browserConsoleTool");
|
|
19
|
+
const browserDomTool_1 = require("./src/features/browser/model/browserDomTool");
|
|
20
|
+
const browserErrorsTool_1 = require("./src/features/browser/model/browserErrorsTool");
|
|
21
|
+
const browserFillTool_1 = require("./src/features/browser/model/browserFillTool");
|
|
22
|
+
const browserNetworkFailuresTool_1 = require("./src/features/browser/model/browserNetworkFailuresTool");
|
|
23
|
+
const browserOpenTool_1 = require("./src/features/browser/model/browserOpenTool");
|
|
24
|
+
const browserPressTool_1 = require("./src/features/browser/model/browserPressTool");
|
|
25
|
+
const browserReloadTool_1 = require("./src/features/browser/model/browserReloadTool");
|
|
26
|
+
const browserScreenshotTool_1 = require("./src/features/browser/model/browserScreenshotTool");
|
|
27
|
+
const browserWaitForTool_1 = require("./src/features/browser/model/browserWaitForTool");
|
|
28
|
+
const browserWaitForUrlTool_1 = require("./src/features/browser/model/browserWaitForUrlTool");
|
|
29
|
+
const sendPartnerFileTool_1 = require("./src/features/collaboration/model/sendPartnerFileTool");
|
|
30
|
+
const sendPartnerNoteTool_1 = require("./src/features/collaboration/model/sendPartnerNoteTool");
|
|
31
|
+
const deleteTelegramInboxMessageTool_1 = require("./src/features/inbox/model/deleteTelegramInboxMessageTool");
|
|
32
|
+
const getTelegramInboxCountTool_1 = require("./src/features/inbox/model/getTelegramInboxCountTool");
|
|
33
|
+
const getTelegramInboxTool_1 = require("./src/features/inbox/model/getTelegramInboxTool");
|
|
34
|
+
const notifyTelegramTool_1 = require("./src/features/notify/model/notifyTelegramTool");
|
|
35
|
+
const clearSessionPairingTool_1 = require("./src/features/pair-session/model/clearSessionPairingTool");
|
|
36
|
+
const createSessionPairCodeTool_1 = require("./src/features/pair-session/model/createSessionPairCodeTool");
|
|
37
|
+
const clearSessionContextTool_1 = require("./src/features/session-context/model/clearSessionContextTool");
|
|
38
|
+
const getSessionContextTool_1 = require("./src/features/session-context/model/getSessionContextTool");
|
|
39
|
+
const getTmuxTargetTool_1 = require("./src/features/session-context/model/getTmuxTargetTool");
|
|
40
|
+
const renameSessionTool_1 = require("./src/features/session-context/model/renameSessionTool");
|
|
41
|
+
const setSessionContextTool_1 = require("./src/features/session-context/model/setSessionContextTool");
|
|
42
|
+
const setTmuxTargetTool_1 = require("./src/features/session-context/model/setTmuxTargetTool");
|
|
43
|
+
const refreshToolsMarkdownTool_1 = require("./src/features/tools-sync/model/refreshToolsMarkdownTool");
|
|
44
|
+
exports.TELEGRAM_MCP_MCP_SERVER_SERVICE_NAME = "telegramMcp.mcpServer";
|
|
45
|
+
const TelegramMcpMcpServerService = {
|
|
46
|
+
name: exports.TELEGRAM_MCP_MCP_SERVER_SERVICE_NAME,
|
|
47
|
+
dependencies: [
|
|
48
|
+
pair_service_1.TELEGRAM_MCP_PAIR_SERVICE_NAME,
|
|
49
|
+
session_context_service_1.TELEGRAM_MCP_SESSION_CONTEXT_SERVICE_NAME,
|
|
50
|
+
notify_service_1.TELEGRAM_MCP_NOTIFY_SERVICE_NAME,
|
|
51
|
+
inbox_service_1.TELEGRAM_MCP_INBOX_SERVICE_NAME,
|
|
52
|
+
approval_service_1.TELEGRAM_MCP_APPROVAL_SERVICE_NAME,
|
|
53
|
+
browser_service_1.TELEGRAM_MCP_BROWSER_SERVICE_NAME,
|
|
54
|
+
collaboration_service_1.TELEGRAM_MCP_COLLABORATION_SERVICE_NAME,
|
|
55
|
+
tools_sync_service_1.TELEGRAM_MCP_TOOLS_SYNC_SERVICE_NAME,
|
|
56
|
+
],
|
|
57
|
+
methods: {
|
|
58
|
+
createServer() {
|
|
59
|
+
const pairService = this.broker.getLocalService(pair_service_1.TELEGRAM_MCP_PAIR_SERVICE_NAME);
|
|
60
|
+
const sessionContextService = this.broker.getLocalService(session_context_service_1.TELEGRAM_MCP_SESSION_CONTEXT_SERVICE_NAME);
|
|
61
|
+
const notifyService = this.broker.getLocalService(notify_service_1.TELEGRAM_MCP_NOTIFY_SERVICE_NAME);
|
|
62
|
+
const inboxService = this.broker.getLocalService(inbox_service_1.TELEGRAM_MCP_INBOX_SERVICE_NAME);
|
|
63
|
+
const approvalService = this.broker.getLocalService(approval_service_1.TELEGRAM_MCP_APPROVAL_SERVICE_NAME);
|
|
64
|
+
const browserService = this.broker.getLocalService(browser_service_1.TELEGRAM_MCP_BROWSER_SERVICE_NAME);
|
|
65
|
+
const collaborationService = this.broker.getLocalService(collaboration_service_1.TELEGRAM_MCP_COLLABORATION_SERVICE_NAME);
|
|
66
|
+
const toolsSyncService = this.broker.getLocalService(tools_sync_service_1.TELEGRAM_MCP_TOOLS_SYNC_SERVICE_NAME);
|
|
67
|
+
if (!pairService ||
|
|
68
|
+
!sessionContextService ||
|
|
69
|
+
!notifyService ||
|
|
70
|
+
!inboxService ||
|
|
71
|
+
!approvalService ||
|
|
72
|
+
!browserService ||
|
|
73
|
+
!collaborationService ||
|
|
74
|
+
!toolsSyncService) {
|
|
75
|
+
throw new Error("telegram_mcp MCP server dependencies are not ready");
|
|
76
|
+
}
|
|
77
|
+
const tools = [
|
|
78
|
+
new createSessionPairCodeTool_1.CreateSessionPairCodeTool(pairService.getPairSessionService()),
|
|
79
|
+
new clearSessionPairingTool_1.ClearSessionPairingTool(pairService.getPairSessionService()),
|
|
80
|
+
new setSessionContextTool_1.SetSessionContextTool(sessionContextService.getSessionContextService()),
|
|
81
|
+
new renameSessionTool_1.RenameSessionTool(sessionContextService.getSessionContextService()),
|
|
82
|
+
new setTmuxTargetTool_1.SetTmuxTargetTool(sessionContextService.getSessionContextService()),
|
|
83
|
+
new getTmuxTargetTool_1.GetTmuxTargetTool(sessionContextService.getSessionContextService()),
|
|
84
|
+
new getSessionContextTool_1.GetSessionContextTool(sessionContextService.getSessionContextService()),
|
|
85
|
+
new clearSessionContextTool_1.ClearSessionContextTool(sessionContextService.getSessionContextService()),
|
|
86
|
+
new notifyTelegramTool_1.NotifyTelegramTool(notifyService.getNotifyService()),
|
|
87
|
+
new getTelegramInboxCountTool_1.GetTelegramInboxCountTool(inboxService.getInboxService()),
|
|
88
|
+
new getTelegramInboxTool_1.GetTelegramInboxTool(inboxService.getInboxService()),
|
|
89
|
+
new deleteTelegramInboxMessageTool_1.DeleteTelegramInboxMessageTool(inboxService.getInboxService()),
|
|
90
|
+
new askUserTelegram_1.AskUserTelegramTool(approvalService.getApprovalOrchestrator()),
|
|
91
|
+
new browserOpenTool_1.BrowserOpenTool(browserService.getBrowserService()),
|
|
92
|
+
new browserReloadTool_1.BrowserReloadTool(browserService.getBrowserService()),
|
|
93
|
+
new browserClickTool_1.BrowserClickTool(browserService.getBrowserService()),
|
|
94
|
+
new browserFillTool_1.BrowserFillTool(browserService.getBrowserService()),
|
|
95
|
+
new browserPressTool_1.BrowserPressTool(browserService.getBrowserService()),
|
|
96
|
+
new browserWaitForTool_1.BrowserWaitForTool(browserService.getBrowserService()),
|
|
97
|
+
new browserWaitForUrlTool_1.BrowserWaitForUrlTool(browserService.getBrowserService()),
|
|
98
|
+
new browserConsoleTool_1.BrowserConsoleTool(browserService.getBrowserService()),
|
|
99
|
+
new browserErrorsTool_1.BrowserErrorsTool(browserService.getBrowserService()),
|
|
100
|
+
new browserNetworkFailuresTool_1.BrowserNetworkFailuresTool(browserService.getBrowserService()),
|
|
101
|
+
new browserClearLogsTool_1.BrowserClearLogsTool(browserService.getBrowserService()),
|
|
102
|
+
new browserDomTool_1.BrowserDomTool(browserService.getBrowserService()),
|
|
103
|
+
new browserComputedStyleTool_1.BrowserComputedStyleTool(browserService.getBrowserService()),
|
|
104
|
+
new browserScreenshotTool_1.BrowserScreenshotTool(browserService.getBrowserService()),
|
|
105
|
+
new browserCloseTool_1.BrowserCloseTool(browserService.getBrowserService()),
|
|
106
|
+
new sendPartnerNoteTool_1.SendPartnerNoteTool(collaborationService.getCollaborationService()),
|
|
107
|
+
new sendPartnerFileTool_1.SendPartnerFileTool(collaborationService.getSendPartnerFileService()),
|
|
108
|
+
new refreshToolsMarkdownTool_1.RefreshToolsMarkdownTool(toolsSyncService.getRefreshToolsMarkdownService()),
|
|
109
|
+
];
|
|
110
|
+
return (0, server_1.createMcpServer)(tools);
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
async started() {
|
|
114
|
+
await this.broker.waitForServices([
|
|
115
|
+
pair_service_1.TELEGRAM_MCP_PAIR_SERVICE_NAME,
|
|
116
|
+
session_context_service_1.TELEGRAM_MCP_SESSION_CONTEXT_SERVICE_NAME,
|
|
117
|
+
notify_service_1.TELEGRAM_MCP_NOTIFY_SERVICE_NAME,
|
|
118
|
+
inbox_service_1.TELEGRAM_MCP_INBOX_SERVICE_NAME,
|
|
119
|
+
approval_service_1.TELEGRAM_MCP_APPROVAL_SERVICE_NAME,
|
|
120
|
+
browser_service_1.TELEGRAM_MCP_BROWSER_SERVICE_NAME,
|
|
121
|
+
collaboration_service_1.TELEGRAM_MCP_COLLABORATION_SERVICE_NAME,
|
|
122
|
+
tools_sync_service_1.TELEGRAM_MCP_TOOLS_SYNC_SERVICE_NAME,
|
|
123
|
+
]);
|
|
124
|
+
this.logger.info("telegram_mcp MCP server service is ready");
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
exports.default = TelegramMcpMcpServerService;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TELEGRAM_MCP_NOTIFY_SERVICE_NAME = void 0;
|
|
4
|
+
const runtime_service_1 = require("./runtime.service");
|
|
5
|
+
const notifyService_1 = require("./src/features/notify/model/notifyService");
|
|
6
|
+
exports.TELEGRAM_MCP_NOTIFY_SERVICE_NAME = "telegramMcp.notify";
|
|
7
|
+
const TelegramMcpNotifyService = {
|
|
8
|
+
name: exports.TELEGRAM_MCP_NOTIFY_SERVICE_NAME,
|
|
9
|
+
dependencies: [runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME],
|
|
10
|
+
created() {
|
|
11
|
+
this.notifyService = null;
|
|
12
|
+
},
|
|
13
|
+
methods: {
|
|
14
|
+
getNotifyService() {
|
|
15
|
+
if (!this.notifyService) {
|
|
16
|
+
throw new Error("telegram_mcp notify service is not initialized yet");
|
|
17
|
+
}
|
|
18
|
+
return this.notifyService;
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
async started() {
|
|
22
|
+
await this.broker.waitForServices([runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME]);
|
|
23
|
+
const runtimeService = this.broker.getLocalService(runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME);
|
|
24
|
+
if (!runtimeService) {
|
|
25
|
+
throw new Error(`Local Moleculer service '${runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME}' is unavailable`);
|
|
26
|
+
}
|
|
27
|
+
const runtime = runtimeService.getRuntime();
|
|
28
|
+
this.logger.info("Starting telegram_mcp notify service");
|
|
29
|
+
this.notifyService = new notifyService_1.NotifyService(runtime.config, runtime.stateStore, runtime.stateStore, runtime.telegramTransport, runtime.logger, runtime.projectIdentityResolver);
|
|
30
|
+
this.logger.info("telegram_mcp notify service is ready");
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
exports.default = TelegramMcpNotifyService;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TELEGRAM_MCP_PAIR_SERVICE_NAME = void 0;
|
|
4
|
+
const runtime_service_1 = require("./runtime.service");
|
|
5
|
+
const generatePairCode_1 = require("./src/features/pair-session/model/generatePairCode");
|
|
6
|
+
exports.TELEGRAM_MCP_PAIR_SERVICE_NAME = "telegramMcp.pair";
|
|
7
|
+
const TelegramMcpPairService = {
|
|
8
|
+
name: exports.TELEGRAM_MCP_PAIR_SERVICE_NAME,
|
|
9
|
+
dependencies: [runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME],
|
|
10
|
+
created() {
|
|
11
|
+
this.pairSessionService = null;
|
|
12
|
+
},
|
|
13
|
+
methods: {
|
|
14
|
+
getPairSessionService() {
|
|
15
|
+
if (!this.pairSessionService) {
|
|
16
|
+
throw new Error("telegram_mcp pair service is not initialized yet");
|
|
17
|
+
}
|
|
18
|
+
return this.pairSessionService;
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
async started() {
|
|
22
|
+
await this.broker.waitForServices([runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME]);
|
|
23
|
+
const runtimeService = this.broker.getLocalService(runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME);
|
|
24
|
+
if (!runtimeService) {
|
|
25
|
+
throw new Error(`Local Moleculer service '${runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME}' is unavailable`);
|
|
26
|
+
}
|
|
27
|
+
const runtime = runtimeService.getRuntime();
|
|
28
|
+
this.logger.info("Starting telegram_mcp pair service");
|
|
29
|
+
this.pairSessionService = new generatePairCode_1.PairSessionService(runtime.config, runtime.stateStore, runtime.stateStore, runtime.stateStore, runtime.logger, runtime.projectIdentityResolver);
|
|
30
|
+
this.logger.info("telegram_mcp pair service is ready");
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
exports.default = TelegramMcpPairService;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TELEGRAM_MCP_RUNTIME_SERVICE_NAME = void 0;
|
|
4
|
+
const runtime_1 = require("./src/app/bootstrap/runtime");
|
|
5
|
+
exports.TELEGRAM_MCP_RUNTIME_SERVICE_NAME = "telegramMcp.runtime";
|
|
6
|
+
const TelegramMcpRuntimeService = {
|
|
7
|
+
name: exports.TELEGRAM_MCP_RUNTIME_SERVICE_NAME,
|
|
8
|
+
created() {
|
|
9
|
+
this.runtime = null;
|
|
10
|
+
},
|
|
11
|
+
methods: {
|
|
12
|
+
getRuntime() {
|
|
13
|
+
if (!this.runtime) {
|
|
14
|
+
throw new Error("telegram_mcp runtime is not initialized yet");
|
|
15
|
+
}
|
|
16
|
+
return this.runtime;
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
async started() {
|
|
20
|
+
this.logger.info("Starting telegram_mcp runtime service");
|
|
21
|
+
this.runtime = await (0, runtime_1.createAppRuntime)({
|
|
22
|
+
callBroker: (actionName, params, options) => this.broker.call(actionName, params, options),
|
|
23
|
+
});
|
|
24
|
+
this.logger.info("telegram_mcp runtime service is ready");
|
|
25
|
+
},
|
|
26
|
+
async stopped() {
|
|
27
|
+
if (!this.runtime) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const runtime = this.runtime;
|
|
31
|
+
this.runtime = null;
|
|
32
|
+
this.logger.info("Stopping telegram_mcp runtime service");
|
|
33
|
+
await runtime.shutdown();
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
exports.default = TelegramMcpRuntimeService;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TELEGRAM_MCP_SESSION_CONTEXT_SERVICE_NAME = void 0;
|
|
4
|
+
const runtime_service_1 = require("./runtime.service");
|
|
5
|
+
const sessionContextService_1 = require("./src/features/session-context/model/sessionContextService");
|
|
6
|
+
exports.TELEGRAM_MCP_SESSION_CONTEXT_SERVICE_NAME = "telegramMcp.sessionContext";
|
|
7
|
+
const TelegramMcpSessionContextService = {
|
|
8
|
+
name: exports.TELEGRAM_MCP_SESSION_CONTEXT_SERVICE_NAME,
|
|
9
|
+
dependencies: [runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME],
|
|
10
|
+
created() {
|
|
11
|
+
this.sessionContextService = null;
|
|
12
|
+
},
|
|
13
|
+
methods: {
|
|
14
|
+
getSessionContextService() {
|
|
15
|
+
if (!this.sessionContextService) {
|
|
16
|
+
throw new Error("telegram_mcp session-context service is not initialized yet");
|
|
17
|
+
}
|
|
18
|
+
return this.sessionContextService;
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
async started() {
|
|
22
|
+
await this.broker.waitForServices([runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME]);
|
|
23
|
+
const runtimeService = this.broker.getLocalService(runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME);
|
|
24
|
+
if (!runtimeService) {
|
|
25
|
+
throw new Error(`Local Moleculer service '${runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME}' is unavailable`);
|
|
26
|
+
}
|
|
27
|
+
const runtime = runtimeService.getRuntime();
|
|
28
|
+
this.logger.info("Starting telegram_mcp session-context service");
|
|
29
|
+
this.sessionContextService = new sessionContextService_1.SessionContextService(runtime.stateStore, runtime.stateStore, runtime.logger, runtime.projectIdentityResolver);
|
|
30
|
+
this.logger.info("telegram_mcp session-context service is ready");
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
exports.default = TelegramMcpSessionContextService;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createAppRuntime = createAppRuntime;
|
|
4
|
+
const env_1 = require("../config/env");
|
|
5
|
+
const auth_1 = require("../webapp/auth");
|
|
6
|
+
const client_1 = require("../providers/redis/client");
|
|
7
|
+
const logger_1 = require("../../shared/lib/logger/logger");
|
|
8
|
+
const projectIdentity_1 = require("../../shared/lib/project-identity/projectIdentity");
|
|
9
|
+
const stateStore_1 = require("../../shared/integrations/redis/stateStore");
|
|
10
|
+
const transport_1 = require("../../shared/integrations/telegram/transport");
|
|
11
|
+
const minioExchangeStore_1 = require("../../shared/integrations/object-storage/minioExchangeStore");
|
|
12
|
+
const gatewayHttpService_1 = require("../../features/distributed-gateway/model/gatewayHttpService");
|
|
13
|
+
async function createAppRuntime(input) {
|
|
14
|
+
const config = (0, env_1.loadConfig)();
|
|
15
|
+
const logger = (0, logger_1.createLogger)(config);
|
|
16
|
+
const projectIdentityResolver = new projectIdentity_1.ProjectIdentityResolver(config, logger);
|
|
17
|
+
logger.info("Configuration loaded", {
|
|
18
|
+
mode: config.mode,
|
|
19
|
+
redis: {
|
|
20
|
+
host: config.redis.host,
|
|
21
|
+
port: config.redis.port,
|
|
22
|
+
db: config.redis.db,
|
|
23
|
+
},
|
|
24
|
+
logging: {
|
|
25
|
+
level: config.logging.level,
|
|
26
|
+
},
|
|
27
|
+
mcp: {
|
|
28
|
+
httpHost: config.mcp.httpHost,
|
|
29
|
+
httpPort: config.mcp.httpPort,
|
|
30
|
+
httpPath: config.mcp.httpPath,
|
|
31
|
+
bearerAuthEnabled: Boolean(config.mcp.bearerToken),
|
|
32
|
+
enableDebugRoutes: config.mcp.enableDebugRoutes,
|
|
33
|
+
enablePruneRoute: config.mcp.enablePruneRoute,
|
|
34
|
+
},
|
|
35
|
+
distributed: {
|
|
36
|
+
mode: config.distributed.mode,
|
|
37
|
+
gatewayPublicUrlConfigured: Boolean(config.distributed.gatewayPublicUrl),
|
|
38
|
+
gatewayBindHost: config.distributed.gatewayBindHost,
|
|
39
|
+
gatewayBindPort: config.distributed.gatewayBindPort,
|
|
40
|
+
gatewayWsUrlConfigured: Boolean(config.distributed.gatewayWsUrl),
|
|
41
|
+
gatewayWsPath: config.distributed.gatewayWsPath,
|
|
42
|
+
gatewayAuthEnabled: Boolean(config.distributed.gatewayAuthToken),
|
|
43
|
+
gatewayDatabaseConfigured: Boolean(config.distributed.gatewayDatabaseUrl),
|
|
44
|
+
gatewayS3Configured: Boolean(config.distributed.gatewayS3Bucket),
|
|
45
|
+
gatewayRmqConfigured: Boolean(config.distributed.rmq?.host),
|
|
46
|
+
},
|
|
47
|
+
webapp: {
|
|
48
|
+
enabled: config.webapp.enabled,
|
|
49
|
+
basePath: config.webapp.basePath,
|
|
50
|
+
publicUrlConfigured: Boolean(config.webapp.publicUrl),
|
|
51
|
+
initDataTtlSeconds: config.webapp.initDataTtlSeconds,
|
|
52
|
+
sessionTtlSeconds: config.webapp.sessionTtlSeconds,
|
|
53
|
+
launchMode: config.webapp.launchMode,
|
|
54
|
+
pollIntervalMs: config.webapp.pollIntervalMs,
|
|
55
|
+
actionCooldownMs: config.webapp.actionCooldownMs,
|
|
56
|
+
},
|
|
57
|
+
tmux: {
|
|
58
|
+
nudgeEnabled: config.tmux.nudgeEnabled,
|
|
59
|
+
nudgeDebounceSeconds: config.tmux.nudgeDebounceSeconds,
|
|
60
|
+
nudgeCooldownSeconds: config.tmux.nudgeCooldownSeconds,
|
|
61
|
+
},
|
|
62
|
+
project: projectIdentityResolver.getIdentity(),
|
|
63
|
+
});
|
|
64
|
+
const redis = await (0, client_1.createRedisClient)(config);
|
|
65
|
+
logger.info("Redis connected", {
|
|
66
|
+
host: config.redis.host,
|
|
67
|
+
port: config.redis.port,
|
|
68
|
+
db: config.redis.db,
|
|
69
|
+
});
|
|
70
|
+
const stateStore = new stateStore_1.RedisStateStore(redis);
|
|
71
|
+
const webAppLaunchRegistry = new auth_1.WebAppLaunchRegistry();
|
|
72
|
+
const objectStore = new minioExchangeStore_1.MinioExchangeStore(input.callBroker, stateStore, config.tmux, config.exchange.dir, config.mcp.vfsScope, logger, config.distributed.mode, config.distributed.gatewayPublicUrl, config.distributed.gatewayAuthToken);
|
|
73
|
+
await stateStore.resetRuntimeState();
|
|
74
|
+
logger.info("Runtime pending state reset");
|
|
75
|
+
const telegramTransport = new transport_1.TelegramTransport(config, stateStore, stateStore, stateStore, stateStore, stateStore, stateStore, objectStore, webAppLaunchRegistry, logger);
|
|
76
|
+
await telegramTransport.start();
|
|
77
|
+
logger.info("Telegram transport ready");
|
|
78
|
+
await telegramTransport.recoverPendingInboxNudges();
|
|
79
|
+
logger.info("Startup inbox nudge recovery completed");
|
|
80
|
+
const gatewayHttpService = new gatewayHttpService_1.GatewayHttpService(config, input.callBroker);
|
|
81
|
+
return {
|
|
82
|
+
config,
|
|
83
|
+
logger,
|
|
84
|
+
redis,
|
|
85
|
+
stateStore,
|
|
86
|
+
telegramTransport,
|
|
87
|
+
sessionStore: stateStore,
|
|
88
|
+
bindingStore: stateStore,
|
|
89
|
+
inboxStore: stateStore,
|
|
90
|
+
xchangeFileMetaStore: stateStore,
|
|
91
|
+
maintenanceStore: stateStore,
|
|
92
|
+
objectStore,
|
|
93
|
+
projectIdentityResolver,
|
|
94
|
+
webAppLaunchRegistry,
|
|
95
|
+
gatewayHttpService,
|
|
96
|
+
shutdown: async () => {
|
|
97
|
+
logger.info("Shutdown started");
|
|
98
|
+
await telegramTransport.stop();
|
|
99
|
+
redis.disconnect();
|
|
100
|
+
logger.info("Shutdown completed");
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|