@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
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.TELEGRAM_MCP_HTTP_SERVICE_NAME = void 0;
|
|
4
4
|
const mcp_server_service_1 = require("./mcp-server.service");
|
|
5
5
|
const runtime_service_1 = require("./runtime.service");
|
|
6
|
+
const gateway_socket_service_1 = require("./gateway-socket.service");
|
|
6
7
|
const http_1 = require("./src/app/http");
|
|
7
8
|
exports.TELEGRAM_MCP_HTTP_SERVICE_NAME = "telegramMcp.http";
|
|
8
9
|
const TelegramMcpHttpService = {
|
|
@@ -25,6 +26,12 @@ const TelegramMcpHttpService = {
|
|
|
25
26
|
});
|
|
26
27
|
await this.httpHandler.handleRequest(req, res, pathname);
|
|
27
28
|
},
|
|
29
|
+
async routeUpgrade(req, socket, head, pathname) {
|
|
30
|
+
if (!this.httpHandler) {
|
|
31
|
+
throw new Error("telegram_mcp HTTP handler is not initialized yet");
|
|
32
|
+
}
|
|
33
|
+
return await this.httpHandler.handleUpgrade(req, socket, head, pathname);
|
|
34
|
+
},
|
|
28
35
|
},
|
|
29
36
|
actions: {
|
|
30
37
|
async route(ctx) {
|
|
@@ -56,6 +63,7 @@ const TelegramMcpHttpService = {
|
|
|
56
63
|
this.logger.info("Starting telegram_mcp HTTP service");
|
|
57
64
|
this.httpHandler = (0, http_1.createMcpHttpHandler)(runtime, {
|
|
58
65
|
createMcpServer: () => mcpServerService.createServer(),
|
|
66
|
+
getGatewaySocketService: () => this.broker.getLocalService(gateway_socket_service_1.TELEGRAM_MCP_GATEWAY_SOCKET_SERVICE_NAME),
|
|
59
67
|
});
|
|
60
68
|
this.logger.info("telegram_mcp HTTP service is ready", {
|
|
61
69
|
path: runtime.config.mcp.httpPath,
|
|
@@ -5,11 +5,10 @@ const server_1 = require("./src/app/providers/mcp/server");
|
|
|
5
5
|
const approval_service_1 = require("./approval.service");
|
|
6
6
|
const browser_service_1 = require("./browser.service");
|
|
7
7
|
const collaboration_service_1 = require("./collaboration.service");
|
|
8
|
-
const inbox_service_1 = require("./inbox.service");
|
|
9
8
|
const notify_service_1 = require("./notify.service");
|
|
10
|
-
const pair_service_1 = require("./pair.service");
|
|
11
9
|
const session_context_service_1 = require("./session-context.service");
|
|
12
10
|
const tools_sync_service_1 = require("./tools-sync.service");
|
|
11
|
+
const xchange_service_1 = require("./xchange.service");
|
|
13
12
|
const askUserTelegram_1 = require("./src/features/ask-user/model/askUserTelegram");
|
|
14
13
|
const browserClickTool_1 = require("./src/features/browser/model/browserClickTool");
|
|
15
14
|
const browserClearLogsTool_1 = require("./src/features/browser/model/browserClearLogsTool");
|
|
@@ -27,66 +26,55 @@ const browserScreenshotTool_1 = require("./src/features/browser/model/browserScr
|
|
|
27
26
|
const browserWaitForTool_1 = require("./src/features/browser/model/browserWaitForTool");
|
|
28
27
|
const browserWaitForUrlTool_1 = require("./src/features/browser/model/browserWaitForUrlTool");
|
|
29
28
|
const sendPartnerFileTool_1 = require("./src/features/collaboration/model/sendPartnerFileTool");
|
|
29
|
+
const listGatewaySessionsTool_1 = require("./src/features/collaboration/model/listGatewaySessionsTool");
|
|
30
30
|
const sendPartnerNoteTool_1 = require("./src/features/collaboration/model/sendPartnerNoteTool");
|
|
31
|
-
const
|
|
32
|
-
const getTelegramInboxCountTool_1 = require("./src/features/inbox/model/getTelegramInboxCountTool");
|
|
33
|
-
const getTelegramInboxTool_1 = require("./src/features/inbox/model/getTelegramInboxTool");
|
|
31
|
+
const sendFileToTelegramTool_1 = require("./src/features/notify/model/sendFileToTelegramTool");
|
|
34
32
|
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
33
|
const clearSessionContextTool_1 = require("./src/features/session-context/model/clearSessionContextTool");
|
|
38
34
|
const getSessionContextTool_1 = require("./src/features/session-context/model/getSessionContextTool");
|
|
39
|
-
const getTmuxTargetTool_1 = require("./src/features/session-context/model/getTmuxTargetTool");
|
|
40
35
|
const renameSessionTool_1 = require("./src/features/session-context/model/renameSessionTool");
|
|
41
36
|
const setSessionContextTool_1 = require("./src/features/session-context/model/setSessionContextTool");
|
|
42
|
-
const setTmuxTargetTool_1 = require("./src/features/session-context/model/setTmuxTargetTool");
|
|
43
37
|
const refreshToolsMarkdownTool_1 = require("./src/features/tools-sync/model/refreshToolsMarkdownTool");
|
|
38
|
+
const getXchangeRecordTool_1 = require("./src/features/xchange/model/getXchangeRecordTool");
|
|
39
|
+
const listXchangeRecordsTool_1 = require("./src/features/xchange/model/listXchangeRecordsTool");
|
|
40
|
+
const markXchangeRecordReadTool_1 = require("./src/features/xchange/model/markXchangeRecordReadTool");
|
|
44
41
|
exports.TELEGRAM_MCP_MCP_SERVER_SERVICE_NAME = "telegramMcp.mcpServer";
|
|
45
42
|
const TelegramMcpMcpServerService = {
|
|
46
43
|
name: exports.TELEGRAM_MCP_MCP_SERVER_SERVICE_NAME,
|
|
47
44
|
dependencies: [
|
|
48
|
-
pair_service_1.TELEGRAM_MCP_PAIR_SERVICE_NAME,
|
|
49
45
|
session_context_service_1.TELEGRAM_MCP_SESSION_CONTEXT_SERVICE_NAME,
|
|
50
46
|
notify_service_1.TELEGRAM_MCP_NOTIFY_SERVICE_NAME,
|
|
51
|
-
inbox_service_1.TELEGRAM_MCP_INBOX_SERVICE_NAME,
|
|
52
47
|
approval_service_1.TELEGRAM_MCP_APPROVAL_SERVICE_NAME,
|
|
53
48
|
browser_service_1.TELEGRAM_MCP_BROWSER_SERVICE_NAME,
|
|
54
49
|
collaboration_service_1.TELEGRAM_MCP_COLLABORATION_SERVICE_NAME,
|
|
55
50
|
tools_sync_service_1.TELEGRAM_MCP_TOOLS_SYNC_SERVICE_NAME,
|
|
51
|
+
xchange_service_1.TELEGRAM_MCP_XCHANGE_SERVICE_NAME,
|
|
56
52
|
],
|
|
57
53
|
methods: {
|
|
58
54
|
createServer() {
|
|
59
|
-
const pairService = this.broker.getLocalService(pair_service_1.TELEGRAM_MCP_PAIR_SERVICE_NAME);
|
|
60
55
|
const sessionContextService = this.broker.getLocalService(session_context_service_1.TELEGRAM_MCP_SESSION_CONTEXT_SERVICE_NAME);
|
|
61
56
|
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
57
|
const approvalService = this.broker.getLocalService(approval_service_1.TELEGRAM_MCP_APPROVAL_SERVICE_NAME);
|
|
64
58
|
const browserService = this.broker.getLocalService(browser_service_1.TELEGRAM_MCP_BROWSER_SERVICE_NAME);
|
|
65
59
|
const collaborationService = this.broker.getLocalService(collaboration_service_1.TELEGRAM_MCP_COLLABORATION_SERVICE_NAME);
|
|
66
60
|
const toolsSyncService = this.broker.getLocalService(tools_sync_service_1.TELEGRAM_MCP_TOOLS_SYNC_SERVICE_NAME);
|
|
67
|
-
|
|
68
|
-
|
|
61
|
+
const xchangeService = this.broker.getLocalService(xchange_service_1.TELEGRAM_MCP_XCHANGE_SERVICE_NAME);
|
|
62
|
+
if (!sessionContextService ||
|
|
69
63
|
!notifyService ||
|
|
70
|
-
!inboxService ||
|
|
71
64
|
!approvalService ||
|
|
72
65
|
!browserService ||
|
|
73
66
|
!collaborationService ||
|
|
74
|
-
!toolsSyncService
|
|
67
|
+
!toolsSyncService ||
|
|
68
|
+
!xchangeService) {
|
|
75
69
|
throw new Error("telegram_mcp MCP server dependencies are not ready");
|
|
76
70
|
}
|
|
77
71
|
const tools = [
|
|
78
|
-
new createSessionPairCodeTool_1.CreateSessionPairCodeTool(pairService.getPairSessionService()),
|
|
79
|
-
new clearSessionPairingTool_1.ClearSessionPairingTool(pairService.getPairSessionService()),
|
|
80
72
|
new setSessionContextTool_1.SetSessionContextTool(sessionContextService.getSessionContextService()),
|
|
81
73
|
new renameSessionTool_1.RenameSessionTool(sessionContextService.getSessionContextService()),
|
|
82
|
-
new setTmuxTargetTool_1.SetTmuxTargetTool(sessionContextService.getSessionContextService()),
|
|
83
|
-
new getTmuxTargetTool_1.GetTmuxTargetTool(sessionContextService.getSessionContextService()),
|
|
84
74
|
new getSessionContextTool_1.GetSessionContextTool(sessionContextService.getSessionContextService()),
|
|
85
75
|
new clearSessionContextTool_1.ClearSessionContextTool(sessionContextService.getSessionContextService()),
|
|
86
76
|
new notifyTelegramTool_1.NotifyTelegramTool(notifyService.getNotifyService()),
|
|
87
|
-
new
|
|
88
|
-
new getTelegramInboxTool_1.GetTelegramInboxTool(inboxService.getInboxService()),
|
|
89
|
-
new deleteTelegramInboxMessageTool_1.DeleteTelegramInboxMessageTool(inboxService.getInboxService()),
|
|
77
|
+
new sendFileToTelegramTool_1.SendFileToTelegramTool(notifyService.getNotifyService()),
|
|
90
78
|
new askUserTelegram_1.AskUserTelegramTool(approvalService.getApprovalOrchestrator()),
|
|
91
79
|
new browserOpenTool_1.BrowserOpenTool(browserService.getBrowserService()),
|
|
92
80
|
new browserReloadTool_1.BrowserReloadTool(browserService.getBrowserService()),
|
|
@@ -104,7 +92,11 @@ const TelegramMcpMcpServerService = {
|
|
|
104
92
|
new browserScreenshotTool_1.BrowserScreenshotTool(browserService.getBrowserService()),
|
|
105
93
|
new browserCloseTool_1.BrowserCloseTool(browserService.getBrowserService()),
|
|
106
94
|
new sendPartnerNoteTool_1.SendPartnerNoteTool(collaborationService.getCollaborationService()),
|
|
95
|
+
new listGatewaySessionsTool_1.ListGatewaySessionsTool(collaborationService.getGatewaySessionsService()),
|
|
107
96
|
new sendPartnerFileTool_1.SendPartnerFileTool(collaborationService.getSendPartnerFileService()),
|
|
97
|
+
new listXchangeRecordsTool_1.ListXchangeRecordsTool(xchangeService.getXchangeService()),
|
|
98
|
+
new getXchangeRecordTool_1.GetXchangeRecordTool(xchangeService.getXchangeService()),
|
|
99
|
+
new markXchangeRecordReadTool_1.MarkXchangeRecordReadTool(xchangeService.getXchangeService()),
|
|
108
100
|
new refreshToolsMarkdownTool_1.RefreshToolsMarkdownTool(toolsSyncService.getRefreshToolsMarkdownService()),
|
|
109
101
|
];
|
|
110
102
|
return (0, server_1.createMcpServer)(tools);
|
|
@@ -112,14 +104,13 @@ const TelegramMcpMcpServerService = {
|
|
|
112
104
|
},
|
|
113
105
|
async started() {
|
|
114
106
|
await this.broker.waitForServices([
|
|
115
|
-
pair_service_1.TELEGRAM_MCP_PAIR_SERVICE_NAME,
|
|
116
107
|
session_context_service_1.TELEGRAM_MCP_SESSION_CONTEXT_SERVICE_NAME,
|
|
117
108
|
notify_service_1.TELEGRAM_MCP_NOTIFY_SERVICE_NAME,
|
|
118
|
-
inbox_service_1.TELEGRAM_MCP_INBOX_SERVICE_NAME,
|
|
119
109
|
approval_service_1.TELEGRAM_MCP_APPROVAL_SERVICE_NAME,
|
|
120
110
|
browser_service_1.TELEGRAM_MCP_BROWSER_SERVICE_NAME,
|
|
121
111
|
collaboration_service_1.TELEGRAM_MCP_COLLABORATION_SERVICE_NAME,
|
|
122
112
|
tools_sync_service_1.TELEGRAM_MCP_TOOLS_SYNC_SERVICE_NAME,
|
|
113
|
+
xchange_service_1.TELEGRAM_MCP_XCHANGE_SERVICE_NAME,
|
|
123
114
|
]);
|
|
124
115
|
this.logger.info("telegram_mcp MCP server service is ready");
|
|
125
116
|
},
|
|
@@ -2,11 +2,137 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TELEGRAM_MCP_NOTIFY_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 notifyService_1 = require("./src/features/notify/model/notifyService");
|
|
6
7
|
exports.TELEGRAM_MCP_NOTIFY_SERVICE_NAME = "telegramMcp.notify";
|
|
7
8
|
const TelegramMcpNotifyService = {
|
|
8
9
|
name: exports.TELEGRAM_MCP_NOTIFY_SERVICE_NAME,
|
|
9
10
|
dependencies: [runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME],
|
|
11
|
+
actions: {
|
|
12
|
+
sendForGatewaySession: {
|
|
13
|
+
params: {
|
|
14
|
+
client_uuid: "string",
|
|
15
|
+
local_session_id: "string",
|
|
16
|
+
message: "string",
|
|
17
|
+
session_label: { type: "string", optional: true },
|
|
18
|
+
task: { type: "string", optional: true },
|
|
19
|
+
context: { type: "string", optional: true },
|
|
20
|
+
risk_level: { type: "string", optional: true },
|
|
21
|
+
},
|
|
22
|
+
async handler(ctx) {
|
|
23
|
+
const service = this.getNotifyService();
|
|
24
|
+
return service.sendForGatewayBoundSession({
|
|
25
|
+
clientUuid: String(ctx.params.client_uuid),
|
|
26
|
+
localSessionId: String(ctx.params.local_session_id),
|
|
27
|
+
message: String(ctx.params.message),
|
|
28
|
+
...(typeof ctx.params.session_label === "string"
|
|
29
|
+
? { sessionLabel: ctx.params.session_label }
|
|
30
|
+
: {}),
|
|
31
|
+
...(typeof ctx.params.task === "string" ? { task: ctx.params.task } : {}),
|
|
32
|
+
...(typeof ctx.params.context === "string"
|
|
33
|
+
? { context: ctx.params.context }
|
|
34
|
+
: {}),
|
|
35
|
+
...(typeof ctx.params.risk_level === "string"
|
|
36
|
+
? { riskLevel: ctx.params.risk_level }
|
|
37
|
+
: {}),
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
sendRequestForGatewaySession: {
|
|
42
|
+
params: {
|
|
43
|
+
client_uuid: "string",
|
|
44
|
+
local_session_id: "string",
|
|
45
|
+
request_id: "string",
|
|
46
|
+
telegram_chat_id: "number",
|
|
47
|
+
telegram_user_id: "number",
|
|
48
|
+
question: "string",
|
|
49
|
+
session_label: { type: "string", optional: true },
|
|
50
|
+
task: { type: "string", optional: true },
|
|
51
|
+
context: { type: "string", optional: true },
|
|
52
|
+
affected_files: { type: "array", optional: true, items: "string" },
|
|
53
|
+
options: { type: "array", optional: true, items: "string" },
|
|
54
|
+
recommended_option: { type: "string", optional: true },
|
|
55
|
+
risk_level: { type: "string", optional: true },
|
|
56
|
+
fallback_if_timeout: { type: "string", optional: true },
|
|
57
|
+
},
|
|
58
|
+
async handler(ctx) {
|
|
59
|
+
const service = this.getNotifyService();
|
|
60
|
+
return service.sendRequestForGatewayBoundSession({
|
|
61
|
+
clientUuid: String(ctx.params.client_uuid),
|
|
62
|
+
localSessionId: String(ctx.params.local_session_id),
|
|
63
|
+
requestId: String(ctx.params.request_id),
|
|
64
|
+
telegramChatId: Number(ctx.params.telegram_chat_id),
|
|
65
|
+
telegramUserId: Number(ctx.params.telegram_user_id),
|
|
66
|
+
question: String(ctx.params.question),
|
|
67
|
+
...(typeof ctx.params.session_label === "string"
|
|
68
|
+
? { sessionLabel: ctx.params.session_label }
|
|
69
|
+
: {}),
|
|
70
|
+
...(typeof ctx.params.task === "string" ? { task: ctx.params.task } : {}),
|
|
71
|
+
...(typeof ctx.params.context === "string"
|
|
72
|
+
? { context: ctx.params.context }
|
|
73
|
+
: {}),
|
|
74
|
+
...(Array.isArray(ctx.params.affected_files)
|
|
75
|
+
? { affectedFiles: ctx.params.affected_files }
|
|
76
|
+
: {}),
|
|
77
|
+
...(Array.isArray(ctx.params.options)
|
|
78
|
+
? { options: ctx.params.options }
|
|
79
|
+
: {}),
|
|
80
|
+
...(typeof ctx.params.recommended_option === "string"
|
|
81
|
+
? { recommendedOption: ctx.params.recommended_option }
|
|
82
|
+
: {}),
|
|
83
|
+
...(typeof ctx.params.risk_level === "string"
|
|
84
|
+
? { riskLevel: ctx.params.risk_level }
|
|
85
|
+
: {}),
|
|
86
|
+
...(typeof ctx.params.fallback_if_timeout === "string"
|
|
87
|
+
? { fallbackIfTimeout: ctx.params.fallback_if_timeout }
|
|
88
|
+
: {}),
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
sendDocumentForGatewaySession: {
|
|
93
|
+
params: {
|
|
94
|
+
client_uuid: "string",
|
|
95
|
+
local_session_id: "string",
|
|
96
|
+
file_name: "string",
|
|
97
|
+
content_base64: "string",
|
|
98
|
+
caption: { type: "string", optional: true },
|
|
99
|
+
},
|
|
100
|
+
async handler(ctx) {
|
|
101
|
+
const service = this.getNotifyService();
|
|
102
|
+
return service.sendDocumentForGatewayBoundSession({
|
|
103
|
+
clientUuid: String(ctx.params.client_uuid),
|
|
104
|
+
localSessionId: String(ctx.params.local_session_id),
|
|
105
|
+
fileName: String(ctx.params.file_name),
|
|
106
|
+
contentBase64: String(ctx.params.content_base64),
|
|
107
|
+
...(typeof ctx.params.caption === "string"
|
|
108
|
+
? { caption: ctx.params.caption }
|
|
109
|
+
: {}),
|
|
110
|
+
});
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
sendDocumentRemote: {
|
|
114
|
+
params: {
|
|
115
|
+
$$strict: false,
|
|
116
|
+
session_id: { type: "string", optional: true },
|
|
117
|
+
cwd: { type: "string", optional: true },
|
|
118
|
+
file_path: "string",
|
|
119
|
+
caption: { type: "string", optional: true },
|
|
120
|
+
},
|
|
121
|
+
async handler(ctx) {
|
|
122
|
+
const service = this.getNotifyService();
|
|
123
|
+
return service.sendDocument({
|
|
124
|
+
...(typeof ctx.params.session_id === "string"
|
|
125
|
+
? { session_id: ctx.params.session_id }
|
|
126
|
+
: {}),
|
|
127
|
+
...(typeof ctx.params.cwd === "string" ? { cwd: ctx.params.cwd } : {}),
|
|
128
|
+
file_path: String(ctx.params.file_path),
|
|
129
|
+
...(typeof ctx.params.caption === "string"
|
|
130
|
+
? { caption: ctx.params.caption }
|
|
131
|
+
: {}),
|
|
132
|
+
});
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
},
|
|
10
136
|
created() {
|
|
11
137
|
this.notifyService = null;
|
|
12
138
|
},
|
|
@@ -26,7 +152,7 @@ const TelegramMcpNotifyService = {
|
|
|
26
152
|
}
|
|
27
153
|
const runtime = await runtimeService.waitUntilReady();
|
|
28
154
|
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);
|
|
155
|
+
this.notifyService = new notifyService_1.NotifyService(runtime.config, runtime.sessionStore, runtime.stateStore, runtime.stateStore, runtime.telegramTransport, runtime.logger, runtime.projectIdentityResolver, new remoteConsoleActionClient_1.RemoteConsoleActionClient((actionName, params) => this.broker.call(actionName, params, { meta: { internal_call: true } })), async (sessionId) => (await this.broker.call("telegramMcp.gatewaySocket.resolveConnectedSessionTarget", { sessionId }, { meta: { internal_call: true } })));
|
|
30
156
|
this.logger.info("telegram_mcp notify service is ready");
|
|
31
157
|
},
|
|
32
158
|
};
|
|
@@ -2,11 +2,38 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TELEGRAM_MCP_SESSION_CONTEXT_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 sessionContextService_1 = require("./src/features/session-context/model/sessionContextService");
|
|
6
7
|
exports.TELEGRAM_MCP_SESSION_CONTEXT_SERVICE_NAME = "telegramMcp.sessionContext";
|
|
7
8
|
const TelegramMcpSessionContextService = {
|
|
8
9
|
name: exports.TELEGRAM_MCP_SESSION_CONTEXT_SERVICE_NAME,
|
|
9
10
|
dependencies: [runtime_service_1.TELEGRAM_MCP_RUNTIME_SERVICE_NAME],
|
|
11
|
+
actions: {
|
|
12
|
+
getContextRemote: {
|
|
13
|
+
params: { $$strict: false },
|
|
14
|
+
async handler(ctx) {
|
|
15
|
+
return this.getSessionContextService().getContext(ctx.params);
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
setContextRemote: {
|
|
19
|
+
params: { $$strict: false },
|
|
20
|
+
async handler(ctx) {
|
|
21
|
+
return this.getSessionContextService().setContext(ctx.params);
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
renameSessionRemote: {
|
|
25
|
+
params: { $$strict: false },
|
|
26
|
+
async handler(ctx) {
|
|
27
|
+
return this.getSessionContextService().renameSession(ctx.params);
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
clearContextRemote: {
|
|
31
|
+
params: { $$strict: false },
|
|
32
|
+
async handler(ctx) {
|
|
33
|
+
return this.getSessionContextService().clearContext(ctx.params);
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
},
|
|
10
37
|
created() {
|
|
11
38
|
this.sessionContextService = null;
|
|
12
39
|
},
|
|
@@ -26,7 +53,7 @@ const TelegramMcpSessionContextService = {
|
|
|
26
53
|
}
|
|
27
54
|
const runtime = await runtimeService.waitUntilReady();
|
|
28
55
|
this.logger.info("Starting telegram_mcp session-context service");
|
|
29
|
-
this.sessionContextService = new sessionContextService_1.SessionContextService(runtime.
|
|
56
|
+
this.sessionContextService = new sessionContextService_1.SessionContextService(runtime.sessionStore, runtime.stateStore, runtime.logger, runtime.projectIdentityResolver, new remoteConsoleActionClient_1.RemoteConsoleActionClient((actionName, params) => this.broker.call(actionName, params, { meta: { internal_call: true } })));
|
|
30
57
|
this.logger.info("telegram_mcp session-context service is ready");
|
|
31
58
|
},
|
|
32
59
|
};
|
|
@@ -7,9 +7,13 @@ const client_1 = require("../providers/redis/client");
|
|
|
7
7
|
const logger_1 = require("../../shared/lib/logger/logger");
|
|
8
8
|
const projectIdentity_1 = require("../../shared/lib/project-identity/projectIdentity");
|
|
9
9
|
const stateStore_1 = require("../../shared/integrations/redis/stateStore");
|
|
10
|
+
const processLocalSessionStore_1 = require("../../shared/integrations/memory/processLocalSessionStore");
|
|
10
11
|
const transport_1 = require("../../shared/integrations/telegram/transport");
|
|
11
12
|
const minioExchangeStore_1 = require("../../shared/integrations/object-storage/minioExchangeStore");
|
|
12
13
|
const gatewayHttpService_1 = require("../../features/distributed-gateway/model/gatewayHttpService");
|
|
14
|
+
const gatewayClientAccess_1 = require("../../features/distributed-client/model/gatewayClientAccess");
|
|
15
|
+
const client_2 = require("../../shared/integrations/terminal/client");
|
|
16
|
+
const ptyRegistry_1 = require("../../shared/integrations/terminal/ptyRegistry");
|
|
13
17
|
async function createAppRuntime(input) {
|
|
14
18
|
const config = (0, env_1.loadConfig)();
|
|
15
19
|
const logger = (0, logger_1.createLogger)(config);
|
|
@@ -54,10 +58,16 @@ async function createAppRuntime(input) {
|
|
|
54
58
|
pollIntervalMs: config.webapp.pollIntervalMs,
|
|
55
59
|
actionCooldownMs: config.webapp.actionCooldownMs,
|
|
56
60
|
},
|
|
57
|
-
|
|
58
|
-
nudgeEnabled: config.
|
|
59
|
-
nudgeDebounceSeconds: config.
|
|
60
|
-
nudgeCooldownSeconds: config.
|
|
61
|
+
terminal: {
|
|
62
|
+
nudgeEnabled: config.terminal.nudgeEnabled,
|
|
63
|
+
nudgeDebounceSeconds: config.terminal.nudgeDebounceSeconds,
|
|
64
|
+
nudgeCooldownSeconds: config.terminal.nudgeCooldownSeconds,
|
|
65
|
+
},
|
|
66
|
+
telegram: {
|
|
67
|
+
webhookEnabled: config.telegram.webhook.enabled,
|
|
68
|
+
webhookPath: config.telegram.webhook.path,
|
|
69
|
+
webhookPublicUrlConfigured: Boolean(config.telegram.webhook.publicUrl),
|
|
70
|
+
webhookTrace: config.telegram.webhook.trace,
|
|
61
71
|
},
|
|
62
72
|
project: projectIdentityResolver.getIdentity(),
|
|
63
73
|
});
|
|
@@ -68,27 +78,138 @@ async function createAppRuntime(input) {
|
|
|
68
78
|
db: config.redis.db,
|
|
69
79
|
});
|
|
70
80
|
const stateStore = new stateStore_1.RedisStateStore(redis);
|
|
81
|
+
let sessionStore = stateStore;
|
|
71
82
|
const webAppLaunchRegistry = new auth_1.WebAppLaunchRegistry();
|
|
72
|
-
const objectStore = new minioExchangeStore_1.MinioExchangeStore(input.callBroker, stateStore, config.
|
|
83
|
+
const objectStore = new minioExchangeStore_1.MinioExchangeStore(input.callBroker, stateStore, config.terminal, config.exchange.dir, config.mcp.vfsScope, logger, config.distributed.mode, config.distributed.gatewayPublicUrl, config.distributed.gatewayAuthToken);
|
|
84
|
+
if (config.distributed.mode === "client") {
|
|
85
|
+
const resolvedSession = projectIdentityResolver.resolveSessionDefaults({
|
|
86
|
+
cwd: process.cwd(),
|
|
87
|
+
});
|
|
88
|
+
const existingSession = await stateStore.getSession(resolvedSession.sessionId);
|
|
89
|
+
const persistedToolsState = (0, projectIdentity_1.readSessionMarkerState)(resolvedSession.cwd, logger);
|
|
90
|
+
const terminalTarget = (0, client_2.ensureTerminalTargetForSession)(config.terminal, {
|
|
91
|
+
sessionId: resolvedSession.sessionId,
|
|
92
|
+
cwd: resolvedSession.cwd,
|
|
93
|
+
...(typeof existingSession?.terminalTarget === "string"
|
|
94
|
+
? { target: existingSession.terminalTarget }
|
|
95
|
+
: {}),
|
|
96
|
+
});
|
|
97
|
+
if (!terminalTarget) {
|
|
98
|
+
throw new Error("PTY terminal target could not be created during runtime bootstrap");
|
|
99
|
+
}
|
|
100
|
+
const initialSession = {
|
|
101
|
+
sessionId: resolvedSession.sessionId,
|
|
102
|
+
...(typeof existingSession?.label === "string"
|
|
103
|
+
? { label: existingSession.label }
|
|
104
|
+
: { label: resolvedSession.sessionLabel }),
|
|
105
|
+
...(typeof existingSession?.cwd === "string"
|
|
106
|
+
? { cwd: existingSession.cwd }
|
|
107
|
+
: { cwd: resolvedSession.cwd }),
|
|
108
|
+
...(typeof existingSession?.activeProjectUuid === "string"
|
|
109
|
+
? { activeProjectUuid: existingSession.activeProjectUuid }
|
|
110
|
+
: {}),
|
|
111
|
+
...(typeof existingSession?.activeProjectName === "string"
|
|
112
|
+
? { activeProjectName: existingSession.activeProjectName }
|
|
113
|
+
: {}),
|
|
114
|
+
...(typeof existingSession?.task === "string"
|
|
115
|
+
? { task: existingSession.task }
|
|
116
|
+
: {}),
|
|
117
|
+
...(typeof existingSession?.summary === "string"
|
|
118
|
+
? { summary: existingSession.summary }
|
|
119
|
+
: {}),
|
|
120
|
+
...(Array.isArray(existingSession?.files)
|
|
121
|
+
? { files: existingSession.files }
|
|
122
|
+
: {}),
|
|
123
|
+
...(Array.isArray(existingSession?.decisions)
|
|
124
|
+
? { decisions: existingSession.decisions }
|
|
125
|
+
: {}),
|
|
126
|
+
...(Array.isArray(existingSession?.risks)
|
|
127
|
+
? { risks: existingSession.risks }
|
|
128
|
+
: {}),
|
|
129
|
+
terminalTarget: terminalTarget,
|
|
130
|
+
...(typeof existingSession?.lastTerminalNudgeAt === "string"
|
|
131
|
+
? { lastTerminalNudgeAt: existingSession.lastTerminalNudgeAt }
|
|
132
|
+
: {}),
|
|
133
|
+
...(typeof existingSession?.lastSeenToolsHash === "string"
|
|
134
|
+
? { lastSeenToolsHash: existingSession.lastSeenToolsHash }
|
|
135
|
+
: typeof persistedToolsState?.lastSeenToolsHash === "string"
|
|
136
|
+
? { lastSeenToolsHash: persistedToolsState.lastSeenToolsHash }
|
|
137
|
+
: {}),
|
|
138
|
+
...(typeof existingSession?.lastNotifiedToolsHash === "string"
|
|
139
|
+
? { lastNotifiedToolsHash: existingSession.lastNotifiedToolsHash }
|
|
140
|
+
: typeof persistedToolsState?.lastNotifiedToolsHash === "string"
|
|
141
|
+
? { lastNotifiedToolsHash: persistedToolsState.lastNotifiedToolsHash }
|
|
142
|
+
: {}),
|
|
143
|
+
updatedAt: new Date().toISOString(),
|
|
144
|
+
};
|
|
145
|
+
sessionStore = new processLocalSessionStore_1.ProcessLocalSessionStore({
|
|
146
|
+
initialSessions: [initialSession],
|
|
147
|
+
onClearSession: async (sessionId) => {
|
|
148
|
+
await stateStore.clearSession(sessionId);
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
logger.info("Client PTY process-local session store initialized", {
|
|
152
|
+
sessionId: resolvedSession.sessionId,
|
|
153
|
+
terminalTarget,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
73
156
|
await stateStore.resetRuntimeState();
|
|
74
157
|
logger.info("Runtime pending state reset");
|
|
75
|
-
|
|
158
|
+
if (config.distributed.mode === "client" && config.distributed.gatewayPublicUrl) {
|
|
159
|
+
const clientUuid = await (0, gatewayClientAccess_1.ensureGatewayClientUuid)({
|
|
160
|
+
maintenanceStore: stateStore,
|
|
161
|
+
gatewayPublicUrl: config.distributed.gatewayPublicUrl,
|
|
162
|
+
...(config.distributed.gatewayAuthToken
|
|
163
|
+
? { gatewayAuthToken: config.distributed.gatewayAuthToken }
|
|
164
|
+
: {}),
|
|
165
|
+
...(config.project.name ? { projectName: config.project.name } : {}),
|
|
166
|
+
...(config.telegram.botUsername ? { botUsername: config.telegram.botUsername } : {}),
|
|
167
|
+
...(config.distributed.gatewayToken
|
|
168
|
+
? { gatewayToken: config.distributed.gatewayToken }
|
|
169
|
+
: {}),
|
|
170
|
+
...(config.distributed.gatewayUserUuid
|
|
171
|
+
? { gatewayUserUuid: config.distributed.gatewayUserUuid }
|
|
172
|
+
: {}),
|
|
173
|
+
...(process.env.NAMESPACE?.trim()
|
|
174
|
+
? { namespace: process.env.NAMESPACE.trim() }
|
|
175
|
+
: {}),
|
|
176
|
+
...(process.env.NODE_ID?.trim() ? { nodeId: process.env.NODE_ID.trim() } : {}),
|
|
177
|
+
});
|
|
178
|
+
logger.info("Gateway client identity ensured", {
|
|
179
|
+
clientUuid,
|
|
180
|
+
gatewayPublicUrl: config.distributed.gatewayPublicUrl,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
const sessions = await sessionStore.listSessions();
|
|
184
|
+
let recoveredCount = 0;
|
|
185
|
+
for (const session of sessions) {
|
|
186
|
+
if (!session.terminalTarget?.startsWith("pty:")) {
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
(0, client_2.ensureTerminalTargetForSession)(config.terminal, {
|
|
190
|
+
sessionId: session.sessionId,
|
|
191
|
+
...(session.cwd ? { cwd: session.cwd } : {}),
|
|
192
|
+
target: session.terminalTarget,
|
|
193
|
+
});
|
|
194
|
+
recoveredCount += 1;
|
|
195
|
+
}
|
|
196
|
+
logger.info("PTY terminal sessions recovered", { recoveredCount });
|
|
197
|
+
const telegramTransport = new transport_1.TelegramTransport(config, sessionStore, stateStore, stateStore, stateStore, stateStore, stateStore, stateStore, objectStore, webAppLaunchRegistry, logger);
|
|
76
198
|
await telegramTransport.start();
|
|
77
199
|
logger.info("Telegram transport ready");
|
|
78
|
-
await telegramTransport.recoverPendingInboxNudges();
|
|
79
|
-
logger.info("Startup inbox nudge recovery completed");
|
|
80
200
|
await telegramTransport.sendStartupNotifications();
|
|
81
201
|
logger.info("Startup Telegram notifications completed");
|
|
82
202
|
const gatewayHttpService = new gatewayHttpService_1.GatewayHttpService(config, input.callBroker);
|
|
83
203
|
return {
|
|
204
|
+
callBroker: input.callBroker,
|
|
84
205
|
config,
|
|
85
206
|
logger,
|
|
86
207
|
redis,
|
|
87
208
|
stateStore,
|
|
88
209
|
telegramTransport,
|
|
89
|
-
sessionStore
|
|
210
|
+
sessionStore,
|
|
90
211
|
bindingStore: stateStore,
|
|
91
|
-
|
|
212
|
+
adminAuthStore: stateStore,
|
|
92
213
|
localeStore: stateStore,
|
|
93
214
|
xchangeFileMetaStore: stateStore,
|
|
94
215
|
maintenanceStore: stateStore,
|
|
@@ -99,6 +220,7 @@ async function createAppRuntime(input) {
|
|
|
99
220
|
shutdown: async () => {
|
|
100
221
|
logger.info("Shutdown started");
|
|
101
222
|
await telegramTransport.stop();
|
|
223
|
+
(0, ptyRegistry_1.stopAllPtyTargets)();
|
|
102
224
|
redis.disconnect();
|
|
103
225
|
logger.info("Shutdown completed");
|
|
104
226
|
},
|