@deadragdoll/tellymcp 0.0.10 → 0.0.12
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 +42 -52
- package/.env.example.gateway +48 -62
- package/CHANGELOG.md +3 -3
- package/README-ru.md +226 -376
- package/README.md +213 -1184
- package/TOOLS.md +320 -377
- package/VERSION.md +13 -13
- package/config/codex/plugins/telly-workflows/.codex-plugin/plugin.json +18 -0
- package/config/codex/plugins/telly-workflows/references/invariants.md +10 -0
- package/config/codex/plugins/telly-workflows/skills/telly-browser-screenshot/SKILL.md +27 -0
- package/config/codex/plugins/telly-workflows/skills/telly-collab-artifact/SKILL.md +22 -0
- package/config/codex/plugins/telly-workflows/skills/telly-human-telegram/SKILL.md +31 -0
- package/config/codex/plugins/telly-workflows/skills/telly-partner-note/SKILL.md +36 -0
- package/config/templates/env.both.template +39 -20
- package/config/templates/env.client.template +34 -19
- package/config/templates/env.gateway.template +37 -22
- package/dist/cli.js +322 -75
- package/dist/codexPluginInstaller.js +215 -0
- package/dist/lib/mixins/session.errors.js +34 -1
- package/dist/lib/pinoTargets.js +2 -2
- package/dist/moleculer.config.js +7 -5
- package/dist/services/features/telegram-mcp/browser.service.js +94 -1
- package/dist/services/features/telegram-mcp/collaboration.service.js +40 -3
- package/dist/services/features/telegram-mcp/ensuredb.service.js +145 -26
- package/dist/services/features/telegram-mcp/gateway-delivery.service.js +285 -103
- package/dist/services/features/telegram-mcp/gateway-socket.service.js +907 -85
- package/dist/services/features/telegram-mcp/gateway.service.js +876 -81
- package/dist/services/features/telegram-mcp/mcp-http.service.js +8 -0
- package/dist/services/features/telegram-mcp/mcp-server.service.js +17 -26
- package/dist/services/features/telegram-mcp/notify.service.js +127 -1
- package/dist/services/features/telegram-mcp/session-context.service.js +28 -1
- package/dist/services/features/telegram-mcp/src/app/bootstrap/runtime.js +132 -10
- package/dist/services/features/telegram-mcp/src/app/config/env.js +158 -52
- package/dist/services/features/telegram-mcp/src/app/http.js +375 -42
- package/dist/services/features/telegram-mcp/src/app/webapp/assets.js +386 -58
- package/dist/services/features/telegram-mcp/src/app/webapp/auth.js +3 -0
- package/dist/services/features/telegram-mcp/src/app/webapp/terminal.js +12 -0
- package/dist/services/features/telegram-mcp/src/entities/request/model/schema.js +120 -104
- package/dist/services/features/telegram-mcp/src/entities/xchange/model/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/features/ask-user/model/askUserTelegram.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserOpenTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserScreenshotTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserService.js +306 -26
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/gatewaySessionsService.js +71 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/listGatewaySessionsTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/localCollaborationBackend.js +93 -82
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileService.js +47 -5
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerNoteTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/distributed-client/model/gatewayClientAccess.js +82 -0
- package/dist/services/features/telegram-mcp/src/features/distributed-client/model/gatewayCollaborationBackend.js +22 -14
- package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/gatewayHttpService.js +697 -75
- package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/remoteConsoleActionClient.js +76 -0
- package/dist/services/features/telegram-mcp/src/features/embedded-runtime/model/embeddedRuntimeBroker.js +92 -0
- package/dist/services/features/telegram-mcp/src/features/foreground-terminal/model/foregroundTerminalRuntime.js +192 -0
- package/dist/services/features/telegram-mcp/src/features/notify/model/notifyService.js +382 -3
- package/dist/services/features/telegram-mcp/src/features/notify/model/notifyTelegramTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/notify/model/sendFileToTelegramTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/clearSessionContextTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/session-context/model/getSessionContextTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/session-context/model/renameSessionTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/session-context/model/sessionContextService.js +42 -200
- package/dist/services/features/telegram-mcp/src/features/session-context/model/setSessionContextTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/terminal-buffer/model/terminalBufferService.js +96 -0
- package/dist/services/features/telegram-mcp/src/features/terminal-input/model/terminalInputService.js +97 -0
- package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownService.js +107 -58
- package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/xchange/model/getXchangeRecordTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/xchange/model/listXchangeRecordsTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/xchange/model/markXchangeRecordReadTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/xchange/model/xchangeService.js +169 -0
- package/dist/services/features/telegram-mcp/src/processes/human-approval/model/orchestrator.js +5 -4
- package/dist/services/features/telegram-mcp/src/shared/i18n/resources/en.js +143 -42
- package/dist/services/features/telegram-mcp/src/shared/i18n/resources/ru.js +139 -38
- package/dist/services/features/telegram-mcp/src/shared/integrations/memory/processLocalSessionStore.js +27 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/object-storage/minioExchangeStore.js +11 -8
- package/dist/services/features/telegram-mcp/src/shared/integrations/redis/stateStore.js +69 -70
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/proxyFetch.js +21 -22
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transport.js +444 -7093
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportAttachmentStore.js +93 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportBroadcastActions.js +385 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportConsoleRegistry.js +149 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportConstructorWiring.js +642 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportContent.js +84 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportContext.js +78 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportDocumentActions.js +36 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportEventActions.js +292 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportFileHandoffActions.js +352 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportFormatting.js +75 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportGatewayActions.js +44 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportLifecycleActions.js +161 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportLive.js +56 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportLiveActions.js +77 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuCallbacks.js +254 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuFactories.js +538 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuFingerprints.js +93 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuFlow.js +344 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuShell.js +65 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuState.js +408 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuText.js +216 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMessageFlow.js +452 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportOutputActions.js +189 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportPartnerActions.js +286 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportPayloadState.js +108 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectActions.js +463 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectEntryActions.js +202 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectEvents.js +99 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectMenus.js +138 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectState.js +308 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectView.js +426 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportRequestFlow.js +278 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportSessionActions.js +143 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportTerminalActions.js +665 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportTerminalRuntime.js +226 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportTypes.js +2 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportUtils.js +330 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportXchangeState.js +107 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/terminal/client.js +255 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/terminal/ptyRegistry.js +543 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/xchange/sqliteRecordStore.js +223 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/gatewayScope.js +24 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/logger/logger.js +6 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/project-identity/projectIdentity.js +147 -76
- package/dist/services/features/telegram-mcp/src/shared/lib/telegramXchangeRecords.js +72 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/terminalPromptDetection.js +409 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/version/versionHandshake.js +129 -1
- package/dist/services/features/telegram-mcp/src/shared/lib/xchangeRecordHints.js +98 -0
- package/dist/services/features/telegram-mcp/standalone-http.service.js +12 -0
- package/dist/services/features/telegram-mcp/terminal-buffer.service.js +42 -0
- package/dist/services/features/telegram-mcp/terminal-input.service.js +41 -0
- package/dist/services/features/telegram-mcp/tools-sync.service.js +15 -1
- package/dist/services/features/telegram-mcp/xchange.service.js +123 -0
- package/docs/STANDALONE-ru.md +172 -0
- package/docs/STANDALONE.md +172 -0
- package/package.json +10 -5
- package/scripts/build-package-artifact.sh +27 -0
- package/scripts/deploy-gateway.sh +64 -0
- package/scripts/deploy-onebot-branch.sh +27 -0
- package/scripts/postinstall.js +11 -36
- package/STANDALONE-ru.md +0 -274
- package/STANDALONE.md +0 -274
- package/dist/services/features/telegram-mcp/inbox.service.js +0 -33
- package/dist/services/features/telegram-mcp/pair.service.js +0 -33
- package/dist/services/features/telegram-mcp/src/app/webapp/tmux.js +0 -10
- package/dist/services/features/telegram-mcp/src/features/inbox/model/deleteTelegramInboxMessageTool.js +0 -33
- package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxCountTool.js +0 -33
- package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxTool.js +0 -33
- package/dist/services/features/telegram-mcp/src/features/inbox/model/inboxService.js +0 -77
- package/dist/services/features/telegram-mcp/src/features/pair-session/model/clearSessionPairingTool.js +0 -33
- package/dist/services/features/telegram-mcp/src/features/pair-session/model/createSessionPairCodeTool.js +0 -33
- package/dist/services/features/telegram-mcp/src/features/pair-session/model/generatePairCode.js +0 -202
- package/dist/services/features/telegram-mcp/src/features/session-context/model/getTmuxTargetTool.js +0 -33
- package/dist/services/features/telegram-mcp/src/features/session-context/model/setTmuxTargetTool.js +0 -33
- package/dist/services/features/telegram-mcp/src/shared/integrations/tmux/client.js +0 -363
|
@@ -30,6 +30,7 @@ const TelegramMcpStandaloneHttpService = {
|
|
|
30
30
|
],
|
|
31
31
|
created() {
|
|
32
32
|
this.httpServer = null;
|
|
33
|
+
this.upgradeHandler = null;
|
|
33
34
|
},
|
|
34
35
|
async started() {
|
|
35
36
|
if (process.env.TELLYMCP_STANDALONE_HTTP === "false") {
|
|
@@ -67,6 +68,16 @@ const TelegramMcpStandaloneHttpService = {
|
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
70
|
});
|
|
71
|
+
this.upgradeHandler = (req, socket, head) => {
|
|
72
|
+
const requestUrl = new URL(req.url ?? "/", "http://standalone.local");
|
|
73
|
+
void httpService.routeUpgrade?.(req, socket, head, requestUrl.pathname).catch((error) => {
|
|
74
|
+
this.logger.error("Standalone HTTP upgrade failed", {
|
|
75
|
+
error: error instanceof Error ? (error.stack ?? error.message) : String(error),
|
|
76
|
+
});
|
|
77
|
+
socket.destroy();
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
this.httpServer.on("upgrade", this.upgradeHandler);
|
|
70
81
|
await new Promise((resolve, reject) => {
|
|
71
82
|
const server = this.httpServer;
|
|
72
83
|
if (!server) {
|
|
@@ -96,6 +107,7 @@ const TelegramMcpStandaloneHttpService = {
|
|
|
96
107
|
async stopped() {
|
|
97
108
|
const server = this.httpServer;
|
|
98
109
|
this.httpServer = null;
|
|
110
|
+
this.upgradeHandler = null;
|
|
99
111
|
if (!server) {
|
|
100
112
|
return;
|
|
101
113
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TELEGRAM_MCP_TERMINAL_BUFFER_SERVICE_NAME = void 0;
|
|
4
|
+
const runtime_service_1 = require("./runtime.service");
|
|
5
|
+
const remoteConsoleActionClient_1 = require("./src/features/distributed-gateway/model/remoteConsoleActionClient");
|
|
6
|
+
const terminalBufferService_1 = require("./src/features/terminal-buffer/model/terminalBufferService");
|
|
7
|
+
exports.TELEGRAM_MCP_TERMINAL_BUFFER_SERVICE_NAME = "telegramMcp.terminalBuffer";
|
|
8
|
+
const TelegramMcpTerminalBufferService = {
|
|
9
|
+
name: exports.TELEGRAM_MCP_TERMINAL_BUFFER_SERVICE_NAME,
|
|
10
|
+
dependencies: [runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME],
|
|
11
|
+
actions: {
|
|
12
|
+
captureBufferRemote: {
|
|
13
|
+
params: { type: "object" },
|
|
14
|
+
async handler(ctx) {
|
|
15
|
+
return this.getTerminalBufferService().captureBuffer(ctx.params);
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
created() {
|
|
20
|
+
this.terminalBufferService = null;
|
|
21
|
+
},
|
|
22
|
+
methods: {
|
|
23
|
+
getTerminalBufferService() {
|
|
24
|
+
if (!this.terminalBufferService) {
|
|
25
|
+
throw new Error("telegram_mcp terminal-buffer service is not initialized yet");
|
|
26
|
+
}
|
|
27
|
+
return this.terminalBufferService;
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
async started() {
|
|
31
|
+
await this.broker.waitForServices([runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME]);
|
|
32
|
+
const runtimeService = this.broker.getLocalService(runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME);
|
|
33
|
+
if (!runtimeService) {
|
|
34
|
+
throw new Error(`Local Moleculer service '${runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME}' is unavailable`);
|
|
35
|
+
}
|
|
36
|
+
const runtime = await runtimeService.waitUntilReady();
|
|
37
|
+
this.logger.info("Starting telegram_mcp terminal-buffer service");
|
|
38
|
+
this.terminalBufferService = new terminalBufferService_1.TerminalBufferService(runtime.config, runtime.sessionStore, runtime.logger, runtime.projectIdentityResolver, new remoteConsoleActionClient_1.RemoteConsoleActionClient((actionName, params) => this.broker.call(actionName, params, { meta: { internal_call: true } })));
|
|
39
|
+
this.logger.info("telegram_mcp terminal-buffer service is ready");
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
exports.default = TelegramMcpTerminalBufferService;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TELEGRAM_MCP_TERMINAL_INPUT_SERVICE_NAME = void 0;
|
|
4
|
+
const runtime_service_1 = require("./runtime.service");
|
|
5
|
+
const terminalInputService_1 = require("./src/features/terminal-input/model/terminalInputService");
|
|
6
|
+
exports.TELEGRAM_MCP_TERMINAL_INPUT_SERVICE_NAME = "telegramMcp.terminalInput";
|
|
7
|
+
const TelegramMcpTerminalInputService = {
|
|
8
|
+
name: exports.TELEGRAM_MCP_TERMINAL_INPUT_SERVICE_NAME,
|
|
9
|
+
dependencies: [runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME],
|
|
10
|
+
actions: {
|
|
11
|
+
submitHumanMessageRemote: {
|
|
12
|
+
params: { type: "object" },
|
|
13
|
+
async handler(ctx) {
|
|
14
|
+
return this.getTerminalInputService().submitHumanMessage(ctx.params);
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
created() {
|
|
19
|
+
this.terminalInputService = null;
|
|
20
|
+
},
|
|
21
|
+
methods: {
|
|
22
|
+
getTerminalInputService() {
|
|
23
|
+
if (!this.terminalInputService) {
|
|
24
|
+
throw new Error("telegram_mcp terminal-input service is not initialized yet");
|
|
25
|
+
}
|
|
26
|
+
return this.terminalInputService;
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
async started() {
|
|
30
|
+
await this.broker.waitForServices([runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME]);
|
|
31
|
+
const runtimeService = this.broker.getLocalService(runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME);
|
|
32
|
+
if (!runtimeService) {
|
|
33
|
+
throw new Error(`Local Moleculer service '${runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME}' is unavailable`);
|
|
34
|
+
}
|
|
35
|
+
const runtime = await runtimeService.waitUntilReady();
|
|
36
|
+
this.logger.info("Starting telegram_mcp terminal-input service");
|
|
37
|
+
this.terminalInputService = new terminalInputService_1.TerminalInputService(runtime.config, runtime.sessionStore, runtime.logger);
|
|
38
|
+
this.logger.info("telegram_mcp terminal-input service is ready");
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
exports.default = TelegramMcpTerminalInputService;
|
|
@@ -2,11 +2,25 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TELEGRAM_MCP_TOOLS_SYNC_SERVICE_NAME = void 0;
|
|
4
4
|
const runtime_service_1 = require("./runtime.service");
|
|
5
|
+
const remoteConsoleActionClient_1 = require("./src/features/distributed-gateway/model/remoteConsoleActionClient");
|
|
5
6
|
const refreshToolsMarkdownService_1 = require("./src/features/tools-sync/model/refreshToolsMarkdownService");
|
|
6
7
|
exports.TELEGRAM_MCP_TOOLS_SYNC_SERVICE_NAME = "telegramMcp.toolsSync";
|
|
7
8
|
const TelegramMcpToolsSyncService = {
|
|
8
9
|
name: exports.TELEGRAM_MCP_TOOLS_SYNC_SERVICE_NAME,
|
|
9
10
|
dependencies: [runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME],
|
|
11
|
+
actions: {
|
|
12
|
+
refreshToolsMarkdownRemote: {
|
|
13
|
+
params: {
|
|
14
|
+
$$strict: false,
|
|
15
|
+
session_id: { type: "string", optional: true, empty: false },
|
|
16
|
+
cwd: { type: "string", optional: true, empty: false },
|
|
17
|
+
known_hash: { type: "string", optional: true, empty: false },
|
|
18
|
+
},
|
|
19
|
+
async handler(ctx) {
|
|
20
|
+
return this.getRefreshToolsMarkdownService().refresh(ctx.params);
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
},
|
|
10
24
|
created() {
|
|
11
25
|
this.refreshToolsMarkdownService = null;
|
|
12
26
|
},
|
|
@@ -26,7 +40,7 @@ const TelegramMcpToolsSyncService = {
|
|
|
26
40
|
}
|
|
27
41
|
const runtime = await runtimeService.waitUntilReady();
|
|
28
42
|
this.logger.info("Starting telegram_mcp tools sync service");
|
|
29
|
-
this.refreshToolsMarkdownService = new refreshToolsMarkdownService_1.RefreshToolsMarkdownService(runtime.config, runtime.
|
|
43
|
+
this.refreshToolsMarkdownService = new refreshToolsMarkdownService_1.RefreshToolsMarkdownService(runtime.config, runtime.sessionStore, runtime.logger, runtime.projectIdentityResolver, new remoteConsoleActionClient_1.RemoteConsoleActionClient((actionName, params) => this.broker.call(actionName, params, { meta: { internal_call: true } })));
|
|
30
44
|
this.logger.info("telegram_mcp tools sync service is ready");
|
|
31
45
|
},
|
|
32
46
|
};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TELEGRAM_MCP_XCHANGE_SERVICE_NAME = void 0;
|
|
4
|
+
const runtime_service_1 = require("./runtime.service");
|
|
5
|
+
const remoteConsoleActionClient_1 = require("./src/features/distributed-gateway/model/remoteConsoleActionClient");
|
|
6
|
+
const xchangeService_1 = require("./src/features/xchange/model/xchangeService");
|
|
7
|
+
exports.TELEGRAM_MCP_XCHANGE_SERVICE_NAME = "telegramMcp.xchange";
|
|
8
|
+
const TelegramMcpXchangeService = {
|
|
9
|
+
name: exports.TELEGRAM_MCP_XCHANGE_SERVICE_NAME,
|
|
10
|
+
dependencies: [runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME],
|
|
11
|
+
actions: {
|
|
12
|
+
listRecordsRemote: {
|
|
13
|
+
params: {
|
|
14
|
+
$$strict: false,
|
|
15
|
+
session_id: { type: "string", optional: true, trim: true, min: 1 },
|
|
16
|
+
status: {
|
|
17
|
+
type: "enum",
|
|
18
|
+
optional: true,
|
|
19
|
+
values: ["new", "read", "archived"],
|
|
20
|
+
},
|
|
21
|
+
category: {
|
|
22
|
+
type: "enum",
|
|
23
|
+
optional: true,
|
|
24
|
+
values: [
|
|
25
|
+
"partner_note",
|
|
26
|
+
"local_handoff",
|
|
27
|
+
"telegram_message",
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
direction: {
|
|
31
|
+
type: "enum",
|
|
32
|
+
optional: true,
|
|
33
|
+
values: ["incoming", "outgoing", "local"],
|
|
34
|
+
},
|
|
35
|
+
limit: { type: "number", integer: true, positive: true, optional: true },
|
|
36
|
+
},
|
|
37
|
+
async handler(ctx) {
|
|
38
|
+
return this.getXchangeService().listRecords(ctx.params);
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
getRecordRemote: {
|
|
42
|
+
params: {
|
|
43
|
+
$$strict: false,
|
|
44
|
+
session_id: { type: "string", optional: true, trim: true, min: 1 },
|
|
45
|
+
record_id: { type: "string", trim: true, min: 1 },
|
|
46
|
+
},
|
|
47
|
+
async handler(ctx) {
|
|
48
|
+
return this.getXchangeService().getRecord(ctx.params);
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
markReadRemote: {
|
|
52
|
+
params: {
|
|
53
|
+
$$strict: false,
|
|
54
|
+
session_id: { type: "string", optional: true, trim: true, min: 1 },
|
|
55
|
+
record_id: { type: "string", trim: true, min: 1 },
|
|
56
|
+
},
|
|
57
|
+
async handler(ctx) {
|
|
58
|
+
return this.getXchangeService().markRead(ctx.params);
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
listFileMetasRemote: {
|
|
62
|
+
params: {
|
|
63
|
+
$$strict: false,
|
|
64
|
+
session_id: { type: "string", optional: true, trim: true, min: 1 },
|
|
65
|
+
source: {
|
|
66
|
+
type: "enum",
|
|
67
|
+
optional: true,
|
|
68
|
+
values: [
|
|
69
|
+
"telegram-upload",
|
|
70
|
+
"browser-screenshot",
|
|
71
|
+
"partner-artifact",
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
async handler(ctx) {
|
|
76
|
+
return this.getXchangeService().listFileMetas(ctx.params);
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
getFileMetaRemote: {
|
|
80
|
+
params: {
|
|
81
|
+
$$strict: false,
|
|
82
|
+
session_id: { type: "string", optional: true, trim: true, min: 1 },
|
|
83
|
+
file_path: { type: "string", trim: true, min: 1 },
|
|
84
|
+
},
|
|
85
|
+
async handler(ctx) {
|
|
86
|
+
return this.getXchangeService().getFileMeta(ctx.params);
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
deleteFileMetaRemote: {
|
|
90
|
+
params: {
|
|
91
|
+
$$strict: false,
|
|
92
|
+
session_id: { type: "string", optional: true, trim: true, min: 1 },
|
|
93
|
+
file_path: { type: "string", trim: true, min: 1 },
|
|
94
|
+
},
|
|
95
|
+
async handler(ctx) {
|
|
96
|
+
return this.getXchangeService().deleteFileMeta(ctx.params);
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
created() {
|
|
101
|
+
this.xchangeService = null;
|
|
102
|
+
},
|
|
103
|
+
methods: {
|
|
104
|
+
getXchangeService() {
|
|
105
|
+
if (!this.xchangeService) {
|
|
106
|
+
throw new Error("telegram_mcp xchange service is not initialized yet");
|
|
107
|
+
}
|
|
108
|
+
return this.xchangeService;
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
async started() {
|
|
112
|
+
await this.broker.waitForServices([runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME]);
|
|
113
|
+
const runtimeService = this.broker.getLocalService(runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME);
|
|
114
|
+
if (!runtimeService) {
|
|
115
|
+
throw new Error(`Local Moleculer service '${runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME}' is unavailable`);
|
|
116
|
+
}
|
|
117
|
+
const runtime = await runtimeService.waitUntilReady();
|
|
118
|
+
this.logger.info("Starting telegram_mcp xchange service");
|
|
119
|
+
this.xchangeService = new xchangeService_1.XchangeService(runtime.config, runtime.sessionStore, runtime.stateStore, runtime.stateStore, runtime.logger, runtime.projectIdentityResolver, new remoteConsoleActionClient_1.RemoteConsoleActionClient((actionName, params) => this.broker.call(actionName, params, { meta: { internal_call: true } })));
|
|
120
|
+
this.logger.info("telegram_mcp xchange service is ready");
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
exports.default = TelegramMcpXchangeService;
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# Standalone Deployment
|
|
4
|
+
|
|
5
|
+
**Развёртывание TellyMCP как одного gateway и одной или нескольких agent-консолей**
|
|
6
|
+
|
|
7
|
+
[English](./STANDALONE.md) · [Русский](./STANDALONE-ru.md) · [Main README](../README.md) · [README RU](../README-ru.md)
|
|
8
|
+
|
|
9
|
+
[](https://www.npmjs.com/package/@deadragdoll/tellymcp)
|
|
10
|
+
[](https://nodejs.org/)
|
|
11
|
+
[](../README-ru.md#текущая-модель)
|
|
12
|
+
[](../README-ru.md#webhook)
|
|
13
|
+
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
Этот файл описывает текущую standalone-модель для `@deadragdoll/tellymcp`.
|
|
17
|
+
|
|
18
|
+
Рекомендуемая топология:
|
|
19
|
+
|
|
20
|
+
- один gateway node
|
|
21
|
+
- одна или несколько agent nodes
|
|
22
|
+
- один общий Telegram-бот на gateway
|
|
23
|
+
|
|
24
|
+
## 1. Установка
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install -g @deadragdoll/tellymcp
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Опционально:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
tellymcp browser install
|
|
34
|
+
tellymcp codex-plugin install
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## 2. Инфраструктура
|
|
38
|
+
|
|
39
|
+
Для gateway обязательно:
|
|
40
|
+
|
|
41
|
+
- Redis
|
|
42
|
+
- PostgreSQL
|
|
43
|
+
|
|
44
|
+
Опционально:
|
|
45
|
+
|
|
46
|
+
- RabbitMQ
|
|
47
|
+
|
|
48
|
+
## 3. Gateway Env
|
|
49
|
+
|
|
50
|
+
Стартовая точка:
|
|
51
|
+
|
|
52
|
+
- [.env.example.gateway](../.env.example.gateway)
|
|
53
|
+
|
|
54
|
+
Минимально нужные параметры gateway:
|
|
55
|
+
|
|
56
|
+
```env
|
|
57
|
+
TELEGRAM_BOT_TOKEN=
|
|
58
|
+
REDIS_HOST=127.0.0.1
|
|
59
|
+
DB_HOST=127.0.0.1
|
|
60
|
+
DB_USER=
|
|
61
|
+
DB_PASSWORD=
|
|
62
|
+
DB_NAME=
|
|
63
|
+
GATEWAY_PUBLIC_URL=https://your-domain.example/api/gateway
|
|
64
|
+
GATEWAY_WS_URL=wss://your-domain.example/api/gateway/ws
|
|
65
|
+
GATEWAY_TOKEN=change_me_gateway_token
|
|
66
|
+
ROOT_PREFIX=/api
|
|
67
|
+
PORT=8080
|
|
68
|
+
DISTRIBUTED_MODE=gateway
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 4. Agent Env
|
|
72
|
+
|
|
73
|
+
Стартовая точка:
|
|
74
|
+
|
|
75
|
+
- [.env.example.client](../.env.example.client)
|
|
76
|
+
|
|
77
|
+
Минимально нужные параметры agent:
|
|
78
|
+
|
|
79
|
+
```env
|
|
80
|
+
DISTRIBUTED_MODE=client
|
|
81
|
+
GATEWAY_PUBLIC_URL=https://your-domain.example/api/gateway
|
|
82
|
+
GATEWAY_WS_URL=wss://your-domain.example/api/gateway/ws
|
|
83
|
+
GATEWAY_TOKEN=change_me_gateway_token
|
|
84
|
+
GATEWAY_USER_UUID=put_owner_uuid_here
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Для первого запуска также желательно задать:
|
|
88
|
+
|
|
89
|
+
```env
|
|
90
|
+
TELLYMCP_SESSION_ID=NEW
|
|
91
|
+
TELLYMCP_SESSION_LABEL=NEW
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## 5. Запуск
|
|
95
|
+
|
|
96
|
+
Gateway:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
tellymcp run --env .env
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Agent:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
tellymcp run --env .env -s NEW
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
После того как в workspace появится `.mcpsession.json`, дальше обычно достаточно:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
tellymcp run
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## 6. Webhook
|
|
115
|
+
|
|
116
|
+
Gateway поддерживает polling и webhook.
|
|
117
|
+
|
|
118
|
+
Нужные env:
|
|
119
|
+
|
|
120
|
+
```env
|
|
121
|
+
TELEGRAM_WEBHOOK_ENABLED=true
|
|
122
|
+
TELEGRAM_WEBHOOK_PATH=/telegram/webhook
|
|
123
|
+
TELEGRAM_WEBHOOK_PUBLIC_URL=https://your-domain.example/api/telegram/webhook
|
|
124
|
+
TELEGRAM_WEBHOOK_SECRET=change_me_webhook_secret
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Если nginx уже проксирует `location /api/ { ... }` на standalone listener, этот же блок покроет:
|
|
128
|
+
|
|
129
|
+
- `/api/telegram/webhook`
|
|
130
|
+
- `/api/gateway`
|
|
131
|
+
- `/api/webapp`
|
|
132
|
+
- `/api/healthz`
|
|
133
|
+
|
|
134
|
+
## 7. MCP
|
|
135
|
+
|
|
136
|
+
Локальный client-mode MCP endpoint:
|
|
137
|
+
|
|
138
|
+
```text
|
|
139
|
+
http://127.0.0.1:8787/mcp
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Используй MCP HTTP endpoint, который поднимает `tellymcp run`.
|
|
143
|
+
|
|
144
|
+
## 8. Проверки
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
tellymcp doctor --env .env
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Разрушительная очистка:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
tellymcp system-prune --env .env --yes
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## 9. Операционные заметки
|
|
157
|
+
|
|
158
|
+
- gateway-бот — это основной user-facing control plane
|
|
159
|
+
- консоли видны из gateway live registry
|
|
160
|
+
- межсессионные задачи идут через xchange records и `partner_note`
|
|
161
|
+
- ответы человеку в Telegram идут через `notify_telegram`
|
|
162
|
+
- browser screenshot для человека лучше отправлять через `browser_screenshot(send_to_telegram=true)`
|
|
163
|
+
- файлы между консолями лучше отправлять через `send_partner_file`
|
|
164
|
+
|
|
165
|
+
## 10. Чего не делать в новых setup
|
|
166
|
+
|
|
167
|
+
Не строй новые setup вокруг:
|
|
168
|
+
|
|
169
|
+
- pairing codes
|
|
170
|
+
- inbox polling APIs
|
|
171
|
+
- `Local` linked-session меню
|
|
172
|
+
- старых session-link workflow
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# Standalone Deployment
|
|
4
|
+
|
|
5
|
+
**Deploy TellyMCP as one gateway and one or more agent nodes**
|
|
6
|
+
|
|
7
|
+
[English](./STANDALONE.md) · [Русский](./STANDALONE-ru.md) · [Main README](../README.md) · [README RU](../README-ru.md)
|
|
8
|
+
|
|
9
|
+
[](https://www.npmjs.com/package/@deadragdoll/tellymcp)
|
|
10
|
+
[](https://nodejs.org/)
|
|
11
|
+
[](../README.md#current-runtime-model)
|
|
12
|
+
[](../README.md#webhook-mode)
|
|
13
|
+
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
This guide describes the current standalone deployment model for `@deadragdoll/tellymcp`.
|
|
17
|
+
|
|
18
|
+
The recommended topology is:
|
|
19
|
+
|
|
20
|
+
- one gateway node
|
|
21
|
+
- one or more agent nodes
|
|
22
|
+
- one shared Telegram bot on the gateway
|
|
23
|
+
|
|
24
|
+
## 1. Install
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install -g @deadragdoll/tellymcp
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Optional:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
tellymcp browser install
|
|
34
|
+
tellymcp codex-plugin install
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## 2. Infrastructure
|
|
38
|
+
|
|
39
|
+
Required for gateway:
|
|
40
|
+
|
|
41
|
+
- Redis
|
|
42
|
+
- PostgreSQL
|
|
43
|
+
|
|
44
|
+
Optional:
|
|
45
|
+
|
|
46
|
+
- RabbitMQ
|
|
47
|
+
|
|
48
|
+
## 3. Gateway Env
|
|
49
|
+
|
|
50
|
+
Start from:
|
|
51
|
+
|
|
52
|
+
- [.env.example.gateway](../.env.example.gateway)
|
|
53
|
+
|
|
54
|
+
Minimum gateway settings:
|
|
55
|
+
|
|
56
|
+
```env
|
|
57
|
+
TELEGRAM_BOT_TOKEN=
|
|
58
|
+
REDIS_HOST=127.0.0.1
|
|
59
|
+
DB_HOST=127.0.0.1
|
|
60
|
+
DB_USER=
|
|
61
|
+
DB_PASSWORD=
|
|
62
|
+
DB_NAME=
|
|
63
|
+
GATEWAY_PUBLIC_URL=https://your-domain.example/api/gateway
|
|
64
|
+
GATEWAY_WS_URL=wss://your-domain.example/api/gateway/ws
|
|
65
|
+
GATEWAY_TOKEN=change_me_gateway_token
|
|
66
|
+
ROOT_PREFIX=/api
|
|
67
|
+
PORT=8080
|
|
68
|
+
DISTRIBUTED_MODE=gateway
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 4. Agent Env
|
|
72
|
+
|
|
73
|
+
Start from:
|
|
74
|
+
|
|
75
|
+
- [.env.example.client](../.env.example.client)
|
|
76
|
+
|
|
77
|
+
Minimum client settings:
|
|
78
|
+
|
|
79
|
+
```env
|
|
80
|
+
DISTRIBUTED_MODE=client
|
|
81
|
+
GATEWAY_PUBLIC_URL=https://your-domain.example/api/gateway
|
|
82
|
+
GATEWAY_WS_URL=wss://your-domain.example/api/gateway/ws
|
|
83
|
+
GATEWAY_TOKEN=change_me_gateway_token
|
|
84
|
+
GATEWAY_USER_UUID=put_owner_uuid_here
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
For the first run, also set:
|
|
88
|
+
|
|
89
|
+
```env
|
|
90
|
+
TELLYMCP_SESSION_ID=NEW
|
|
91
|
+
TELLYMCP_SESSION_LABEL=NEW
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## 5. Run
|
|
95
|
+
|
|
96
|
+
Gateway:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
tellymcp run --env .env
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Agent:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
tellymcp run --env .env -s NEW
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
After `.mcpsession.json` is created in the workspace, later runs can usually use:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
tellymcp run
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## 6. Webhook
|
|
115
|
+
|
|
116
|
+
Gateway supports polling and webhook.
|
|
117
|
+
|
|
118
|
+
Webhook env:
|
|
119
|
+
|
|
120
|
+
```env
|
|
121
|
+
TELEGRAM_WEBHOOK_ENABLED=true
|
|
122
|
+
TELEGRAM_WEBHOOK_PATH=/telegram/webhook
|
|
123
|
+
TELEGRAM_WEBHOOK_PUBLIC_URL=https://your-domain.example/api/telegram/webhook
|
|
124
|
+
TELEGRAM_WEBHOOK_SECRET=change_me_webhook_secret
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
If nginx already proxies `location /api/ { ... }` to the standalone listener, that block also covers:
|
|
128
|
+
|
|
129
|
+
- `/api/telegram/webhook`
|
|
130
|
+
- `/api/gateway`
|
|
131
|
+
- `/api/webapp`
|
|
132
|
+
- `/api/healthz`
|
|
133
|
+
|
|
134
|
+
## 7. MCP
|
|
135
|
+
|
|
136
|
+
Local client-mode MCP:
|
|
137
|
+
|
|
138
|
+
```text
|
|
139
|
+
http://127.0.0.1:8787/mcp
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Use the MCP HTTP endpoint exposed by `tellymcp run`.
|
|
143
|
+
|
|
144
|
+
## 8. Health Checks
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
tellymcp doctor --env .env
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Destructive cleanup:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
tellymcp system-prune --env .env --yes
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## 9. Operational Notes
|
|
157
|
+
|
|
158
|
+
- the gateway bot is the user-facing control plane
|
|
159
|
+
- consoles are discovered from the gateway live registry
|
|
160
|
+
- cross-console tasks use xchange records and `partner_note`
|
|
161
|
+
- human Telegram replies use `notify_telegram`
|
|
162
|
+
- browser screenshot replies to humans should use `browser_screenshot(send_to_telegram=true)`
|
|
163
|
+
- file results between consoles should use `send_partner_file`
|
|
164
|
+
|
|
165
|
+
## 10. Legacy Concepts To Avoid
|
|
166
|
+
|
|
167
|
+
Do not build new setups around:
|
|
168
|
+
|
|
169
|
+
- pairing codes
|
|
170
|
+
- inbox polling APIs
|
|
171
|
+
- `Local` linked-session menus
|
|
172
|
+
- old session-link workflows
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deadragdoll/tellymcp",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"description": "TellyMCP - Telegram control plane for MCP-connected coding agents",
|
|
5
5
|
"main": "dist/services/features/telegram-mcp/runtime.service.js",
|
|
6
6
|
"bin": {
|
|
@@ -10,10 +10,11 @@
|
|
|
10
10
|
"dist",
|
|
11
11
|
"scripts",
|
|
12
12
|
"config/templates",
|
|
13
|
+
"config/codex",
|
|
13
14
|
"README.md",
|
|
14
15
|
"README-ru.md",
|
|
15
|
-
"STANDALONE.md",
|
|
16
|
-
"STANDALONE-ru.md",
|
|
16
|
+
"docs/STANDALONE.md",
|
|
17
|
+
"docs/STANDALONE-ru.md",
|
|
17
18
|
"VERSION.md",
|
|
18
19
|
"CHANGELOG.md",
|
|
19
20
|
"TOOLS.md",
|
|
@@ -38,10 +39,11 @@
|
|
|
38
39
|
"prepack": "yarn build",
|
|
39
40
|
"prepublishOnly": "yarn build && yarn lint && yarn test",
|
|
40
41
|
"mcp:local": "codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp",
|
|
41
|
-
"dev:gw": "TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile
|
|
42
|
+
"dev:gw": "TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile /opt/tellymcp-gateway/.env-gateway --hot --mask \"**/*.service.ts\"",
|
|
42
43
|
"dev:builder": "TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"",
|
|
43
44
|
"dev:gw:telegram": "TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"",
|
|
44
45
|
"dev:client": "TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"",
|
|
46
|
+
"dev:sh": "TELLYMCP_SOURCE_RUNTIME=true tsx src/cli.ts run --env ./.env-client",
|
|
45
47
|
"dev": "yarn dev:gw",
|
|
46
48
|
"dev:watch": "yarn dev:gw",
|
|
47
49
|
"dev:service": "yarn dev:gw",
|
|
@@ -72,6 +74,8 @@
|
|
|
72
74
|
"@grammyjs/menu": "^1.3.1",
|
|
73
75
|
"@grammyjs/storage-redis": "^2.5.1",
|
|
74
76
|
"@modelcontextprotocol/sdk": "^1.18.1",
|
|
77
|
+
"@xterm/headless": "5.5.0",
|
|
78
|
+
"@xterm/xterm": "5.5.0",
|
|
75
79
|
"amqplib": "0.10.9",
|
|
76
80
|
"dotenv": "^17.4.2",
|
|
77
81
|
"grammy": "1.43.0",
|
|
@@ -82,7 +86,7 @@
|
|
|
82
86
|
"mime-types": "^3.0.2",
|
|
83
87
|
"module-alias": "^2.3.4",
|
|
84
88
|
"moleculer": "0.15.0",
|
|
85
|
-
"node-
|
|
89
|
+
"node-pty": "^1.1.0",
|
|
86
90
|
"pg": "^8.20.0",
|
|
87
91
|
"picocolors": "^1.1.1",
|
|
88
92
|
"pino": "^10.3.1",
|
|
@@ -97,6 +101,7 @@
|
|
|
97
101
|
"@types/amqplib": "^0.10.8",
|
|
98
102
|
"@types/mime-types": "^3.0.1",
|
|
99
103
|
"@types/node": "24.12.4",
|
|
104
|
+
"@types/pg": "^8.20.0",
|
|
100
105
|
"eslint": "^9.34.0",
|
|
101
106
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
102
107
|
"eslint-plugin-import": "^2.32.0",
|