@deadragdoll/tellymcp 0.0.10 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/.env.example.client +42 -52
  2. package/.env.example.gateway +48 -62
  3. package/CHANGELOG.md +3 -3
  4. package/README-ru.md +205 -384
  5. package/README.md +195 -1194
  6. package/TOOLS.md +294 -377
  7. package/VERSION.md +11 -11
  8. package/config/codex/plugins/telly-workflows/.codex-plugin/plugin.json +18 -0
  9. package/config/codex/plugins/telly-workflows/references/invariants.md +10 -0
  10. package/config/codex/plugins/telly-workflows/skills/telly-browser-screenshot/SKILL.md +27 -0
  11. package/config/codex/plugins/telly-workflows/skills/telly-collab-artifact/SKILL.md +22 -0
  12. package/config/codex/plugins/telly-workflows/skills/telly-human-telegram/SKILL.md +31 -0
  13. package/config/codex/plugins/telly-workflows/skills/telly-partner-note/SKILL.md +36 -0
  14. package/config/templates/env.both.template +39 -20
  15. package/config/templates/env.client.template +34 -19
  16. package/config/templates/env.gateway.template +37 -22
  17. package/dist/cli.js +322 -75
  18. package/dist/codexPluginInstaller.js +215 -0
  19. package/dist/lib/mixins/session.errors.js +34 -1
  20. package/dist/lib/pinoTargets.js +2 -2
  21. package/dist/moleculer.config.js +7 -5
  22. package/dist/services/features/telegram-mcp/browser.service.js +94 -1
  23. package/dist/services/features/telegram-mcp/collaboration.service.js +40 -3
  24. package/dist/services/features/telegram-mcp/ensuredb.service.js +145 -26
  25. package/dist/services/features/telegram-mcp/gateway-delivery.service.js +285 -103
  26. package/dist/services/features/telegram-mcp/gateway-socket.service.js +897 -85
  27. package/dist/services/features/telegram-mcp/gateway.service.js +876 -81
  28. package/dist/services/features/telegram-mcp/mcp-http.service.js +8 -0
  29. package/dist/services/features/telegram-mcp/mcp-server.service.js +17 -26
  30. package/dist/services/features/telegram-mcp/notify.service.js +127 -1
  31. package/dist/services/features/telegram-mcp/session-context.service.js +28 -1
  32. package/dist/services/features/telegram-mcp/src/app/bootstrap/runtime.js +132 -10
  33. package/dist/services/features/telegram-mcp/src/app/config/env.js +158 -52
  34. package/dist/services/features/telegram-mcp/src/app/http.js +375 -42
  35. package/dist/services/features/telegram-mcp/src/app/webapp/assets.js +386 -58
  36. package/dist/services/features/telegram-mcp/src/app/webapp/auth.js +3 -0
  37. package/dist/services/features/telegram-mcp/src/app/webapp/terminal.js +12 -0
  38. package/dist/services/features/telegram-mcp/src/entities/request/model/schema.js +116 -104
  39. package/dist/services/features/telegram-mcp/src/entities/xchange/model/types.js +2 -0
  40. package/dist/services/features/telegram-mcp/src/features/ask-user/model/askUserTelegram.js +1 -1
  41. package/dist/services/features/telegram-mcp/src/features/browser/model/browserScreenshotTool.js +1 -1
  42. package/dist/services/features/telegram-mcp/src/features/browser/model/browserService.js +249 -19
  43. package/dist/services/features/telegram-mcp/src/features/collaboration/model/gatewaySessionsService.js +71 -0
  44. package/dist/services/features/telegram-mcp/src/features/collaboration/model/listGatewaySessionsTool.js +33 -0
  45. package/dist/services/features/telegram-mcp/src/features/collaboration/model/localCollaborationBackend.js +93 -82
  46. package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileService.js +47 -5
  47. package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileTool.js +1 -1
  48. package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerNoteTool.js +1 -1
  49. package/dist/services/features/telegram-mcp/src/features/distributed-client/model/gatewayClientAccess.js +82 -0
  50. package/dist/services/features/telegram-mcp/src/features/distributed-client/model/gatewayCollaborationBackend.js +22 -14
  51. package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/gatewayHttpService.js +649 -75
  52. package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/remoteConsoleActionClient.js +76 -0
  53. package/dist/services/features/telegram-mcp/src/features/embedded-runtime/model/embeddedRuntimeBroker.js +92 -0
  54. package/dist/services/features/telegram-mcp/src/features/foreground-terminal/model/foregroundTerminalRuntime.js +192 -0
  55. package/dist/services/features/telegram-mcp/src/features/notify/model/notifyService.js +382 -3
  56. package/dist/services/features/telegram-mcp/src/features/notify/model/notifyTelegramTool.js +1 -1
  57. package/dist/services/features/telegram-mcp/src/features/notify/model/sendFileToTelegramTool.js +33 -0
  58. package/dist/services/features/telegram-mcp/src/features/session-context/model/clearSessionContextTool.js +1 -1
  59. package/dist/services/features/telegram-mcp/src/features/session-context/model/getSessionContextTool.js +1 -1
  60. package/dist/services/features/telegram-mcp/src/features/session-context/model/renameSessionTool.js +1 -1
  61. package/dist/services/features/telegram-mcp/src/features/session-context/model/sessionContextService.js +42 -200
  62. package/dist/services/features/telegram-mcp/src/features/session-context/model/setSessionContextTool.js +1 -1
  63. package/dist/services/features/telegram-mcp/src/features/terminal-buffer/model/terminalBufferService.js +96 -0
  64. package/dist/services/features/telegram-mcp/src/features/terminal-input/model/terminalInputService.js +97 -0
  65. package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownService.js +107 -58
  66. package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownTool.js +1 -1
  67. package/dist/services/features/telegram-mcp/src/features/xchange/model/getXchangeRecordTool.js +28 -0
  68. package/dist/services/features/telegram-mcp/src/features/xchange/model/listXchangeRecordsTool.js +28 -0
  69. package/dist/services/features/telegram-mcp/src/features/xchange/model/markXchangeRecordReadTool.js +28 -0
  70. package/dist/services/features/telegram-mcp/src/features/xchange/model/xchangeService.js +169 -0
  71. package/dist/services/features/telegram-mcp/src/processes/human-approval/model/orchestrator.js +5 -4
  72. package/dist/services/features/telegram-mcp/src/shared/i18n/resources/en.js +139 -42
  73. package/dist/services/features/telegram-mcp/src/shared/i18n/resources/ru.js +135 -38
  74. package/dist/services/features/telegram-mcp/src/shared/integrations/memory/processLocalSessionStore.js +27 -0
  75. package/dist/services/features/telegram-mcp/src/shared/integrations/object-storage/minioExchangeStore.js +11 -8
  76. package/dist/services/features/telegram-mcp/src/shared/integrations/redis/stateStore.js +42 -71
  77. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/proxyFetch.js +21 -22
  78. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transport.js +415 -7101
  79. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportAttachmentStore.js +93 -0
  80. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportBroadcastActions.js +385 -0
  81. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportConsoleRegistry.js +143 -0
  82. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportConstructorWiring.js +633 -0
  83. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportContent.js +84 -0
  84. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportContext.js +78 -0
  85. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportDocumentActions.js +36 -0
  86. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportEventActions.js +292 -0
  87. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportFileHandoffActions.js +352 -0
  88. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportFormatting.js +75 -0
  89. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportGatewayActions.js +44 -0
  90. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportLifecycleActions.js +161 -0
  91. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportLive.js +56 -0
  92. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportLiveActions.js +77 -0
  93. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuCallbacks.js +254 -0
  94. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuFactories.js +538 -0
  95. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuFingerprints.js +93 -0
  96. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuFlow.js +344 -0
  97. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuShell.js +62 -0
  98. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuState.js +408 -0
  99. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuText.js +216 -0
  100. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMessageFlow.js +452 -0
  101. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportOutputActions.js +189 -0
  102. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportPartnerActions.js +286 -0
  103. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportPayloadState.js +101 -0
  104. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectActions.js +463 -0
  105. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectEntryActions.js +202 -0
  106. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectEvents.js +99 -0
  107. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectMenus.js +138 -0
  108. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectState.js +308 -0
  109. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectView.js +426 -0
  110. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportRequestFlow.js +278 -0
  111. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportSessionActions.js +143 -0
  112. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportTerminalActions.js +468 -0
  113. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportTerminalRuntime.js +171 -0
  114. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportTypes.js +2 -0
  115. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportUtils.js +330 -0
  116. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportXchangeState.js +107 -0
  117. package/dist/services/features/telegram-mcp/src/shared/integrations/terminal/client.js +255 -0
  118. package/dist/services/features/telegram-mcp/src/shared/integrations/terminal/ptyRegistry.js +543 -0
  119. package/dist/services/features/telegram-mcp/src/shared/integrations/xchange/sqliteRecordStore.js +223 -0
  120. package/dist/services/features/telegram-mcp/src/shared/lib/gatewayScope.js +24 -0
  121. package/dist/services/features/telegram-mcp/src/shared/lib/logger/logger.js +6 -0
  122. package/dist/services/features/telegram-mcp/src/shared/lib/project-identity/projectIdentity.js +147 -76
  123. package/dist/services/features/telegram-mcp/src/shared/lib/telegramXchangeRecords.js +72 -0
  124. package/dist/services/features/telegram-mcp/src/shared/lib/terminalPromptDetection.js +237 -0
  125. package/dist/services/features/telegram-mcp/src/shared/lib/version/versionHandshake.js +129 -1
  126. package/dist/services/features/telegram-mcp/src/shared/lib/xchangeRecordHints.js +98 -0
  127. package/dist/services/features/telegram-mcp/standalone-http.service.js +12 -0
  128. package/dist/services/features/telegram-mcp/terminal-buffer.service.js +42 -0
  129. package/dist/services/features/telegram-mcp/terminal-input.service.js +41 -0
  130. package/dist/services/features/telegram-mcp/tools-sync.service.js +15 -1
  131. package/dist/services/features/telegram-mcp/xchange.service.js +123 -0
  132. package/docs/STANDALONE-ru.md +172 -0
  133. package/docs/STANDALONE.md +172 -0
  134. package/package.json +10 -5
  135. package/scripts/build-package-artifact.sh +27 -0
  136. package/scripts/deploy-gateway.sh +64 -0
  137. package/scripts/deploy-onebot-branch.sh +27 -0
  138. package/scripts/postinstall.js +11 -36
  139. package/STANDALONE-ru.md +0 -274
  140. package/STANDALONE.md +0 -274
  141. package/dist/services/features/telegram-mcp/inbox.service.js +0 -33
  142. package/dist/services/features/telegram-mcp/pair.service.js +0 -33
  143. package/dist/services/features/telegram-mcp/src/app/webapp/tmux.js +0 -10
  144. package/dist/services/features/telegram-mcp/src/features/inbox/model/deleteTelegramInboxMessageTool.js +0 -33
  145. package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxCountTool.js +0 -33
  146. package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxTool.js +0 -33
  147. package/dist/services/features/telegram-mcp/src/features/inbox/model/inboxService.js +0 -77
  148. package/dist/services/features/telegram-mcp/src/features/pair-session/model/clearSessionPairingTool.js +0 -33
  149. package/dist/services/features/telegram-mcp/src/features/pair-session/model/createSessionPairCodeTool.js +0 -33
  150. package/dist/services/features/telegram-mcp/src/features/pair-session/model/generatePairCode.js +0 -202
  151. package/dist/services/features/telegram-mcp/src/features/session-context/model/getTmuxTargetTool.js +0 -33
  152. package/dist/services/features/telegram-mcp/src/features/session-context/model/setTmuxTargetTool.js +0 -33
  153. package/dist/services/features/telegram-mcp/src/shared/integrations/tmux/client.js +0 -363
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.MinioExchangeStore = void 0;
7
7
  const node_path_1 = __importDefault(require("node:path"));
8
8
  const promises_1 = require("node:fs/promises");
9
- const client_1 = require("../tmux/client");
9
+ const client_1 = require("../terminal/client");
10
10
  function normalizeRelativePath(relativePath) {
11
11
  const normalized = relativePath
12
12
  .split(/[/\\]+/u)
@@ -18,21 +18,24 @@ function normalizeRelativePath(relativePath) {
18
18
  }
19
19
  return normalized;
20
20
  }
21
- function resolveWorkspaceDir(session, _tmuxConfig) {
21
+ function resolveWorkspaceDir(session, _terminalConfig) {
22
22
  const workspaceDir = session?.cwd?.trim() || "";
23
- return workspaceDir || process.cwd();
23
+ if (!workspaceDir) {
24
+ throw new Error("Workspace cwd is not registered for this console.");
25
+ }
26
+ return workspaceDir;
24
27
  }
25
28
  class MinioExchangeStore {
26
- tmuxConfig;
29
+ terminalConfig;
27
30
  exchangeDirName;
28
31
  logger;
29
- constructor(_callBroker, _bindingStore, tmuxConfig, exchangeDirName, _vfsScope, logger, _distributedMode = "client", _gatewayPublicUrl, _gatewayAuthToken) {
30
- this.tmuxConfig = tmuxConfig;
32
+ constructor(_callBroker, _bindingStore, terminalConfig, exchangeDirName, _vfsScope, logger, _distributedMode = "client", _gatewayPublicUrl, _gatewayAuthToken) {
33
+ this.terminalConfig = terminalConfig;
31
34
  this.exchangeDirName = exchangeDirName;
32
35
  this.logger = logger;
33
36
  }
34
37
  resolveWorkspaceDir(session) {
35
- return resolveWorkspaceDir(session, this.tmuxConfig);
38
+ return resolveWorkspaceDir(session, this.terminalConfig);
36
39
  }
37
40
  getTempSessionDir(sessionId) {
38
41
  return node_path_1.default.resolve(process.cwd(), this.exchangeDirName, "__legacy__", sessionId);
@@ -40,7 +43,7 @@ class MinioExchangeStore {
40
43
  async storeFile(params) {
41
44
  const relativePath = normalizeRelativePath(params.relativePath);
42
45
  const workspaceDir = this.resolveWorkspaceDir(params.session);
43
- const filePath = await (0, client_1.writeXchangeRelativeFile)(this.tmuxConfig, workspaceDir, this.exchangeDirName, relativePath, Buffer.from(params.content));
46
+ const filePath = await (0, client_1.writeXchangeRelativeFile)(this.terminalConfig, workspaceDir, this.exchangeDirName, relativePath, Buffer.from(params.content));
44
47
  this.logger.info("Exchange file stored locally", {
45
48
  sessionId: params.sessionId,
46
49
  source: params.source,
@@ -26,18 +26,18 @@ function principalActiveSessionKey(principal) {
26
26
  function principalActiveSessionMatchPattern(telegramUserId) {
27
27
  return `${KEY_PREFIX}:principal:*:${telegramUserId}:active-session`;
28
28
  }
29
- function inboxListKey(sessionId) {
30
- return `${KEY_PREFIX}:inbox:${sessionId}`;
31
- }
32
- function inboxMessageKey(sessionId, messageId) {
33
- return `${KEY_PREFIX}:inbox-message:${sessionId}:${messageId}`;
34
- }
35
29
  function menuPayloadKey(key) {
36
30
  return `${KEY_PREFIX}:menu-payload:${key}`;
37
31
  }
38
32
  function userLocaleKey(telegramUserId) {
39
33
  return `${KEY_PREFIX}:user-locale:${telegramUserId}`;
40
34
  }
35
+ function adminAuthorizedKey(principal) {
36
+ return `${KEY_PREFIX}:admin-auth:${principal.telegramChatId}:${principal.telegramUserId}`;
37
+ }
38
+ function adminAuthorizedMatchPattern() {
39
+ return `${KEY_PREFIX}:admin-auth:*:*`;
40
+ }
41
41
  function gatewayClientUuidKey() {
42
42
  return `${KEY_PREFIX}:gateway:client-uuid`;
43
43
  }
@@ -97,8 +97,6 @@ class RedisStateStore {
97
97
  await this.sessionAdapter.write(sessionKey(session.sessionId), session);
98
98
  }
99
99
  async clearSession(sessionId) {
100
- await this.unlinkPartnerSession(sessionId);
101
- await this.clearInboxMessages(sessionId);
102
100
  await this.clearXchangeFileMetas(sessionId);
103
101
  await this.clearProjectMenuViewStates(sessionId);
104
102
  await this.clearOutgoingDeliveryNoticesForSession(sessionId);
@@ -122,6 +120,39 @@ class RedisStateStore {
122
120
  async setUserLocale(telegramUserId, locale) {
123
121
  await this.redis.set(userLocaleKey(telegramUserId), locale);
124
122
  }
123
+ async isAdminAuthorized(principal) {
124
+ return (await this.redis.get(adminAuthorizedKey(principal))) === "1";
125
+ }
126
+ async setAdminAuthorized(principal) {
127
+ await this.redis.set(adminAuthorizedKey(principal), "1");
128
+ }
129
+ async clearAdminAuthorized(principal) {
130
+ await this.redis.del(adminAuthorizedKey(principal));
131
+ }
132
+ async listAdminAuthorizedPrincipals() {
133
+ const principals = [];
134
+ let cursor = "0";
135
+ do {
136
+ const [nextCursor, keys] = await this.redis.scan(cursor, "MATCH", adminAuthorizedMatchPattern(), "COUNT", 100);
137
+ cursor = nextCursor;
138
+ for (const key of keys) {
139
+ const match = key.match(/^telegram-mcp:admin-auth:(-?\d+):(-?\d+)$/u);
140
+ if (!match) {
141
+ continue;
142
+ }
143
+ const telegramChatId = Number(match[1]);
144
+ const telegramUserId = Number(match[2]);
145
+ if (!Number.isFinite(telegramChatId) || !Number.isFinite(telegramUserId)) {
146
+ continue;
147
+ }
148
+ principals.push({
149
+ telegramChatId,
150
+ telegramUserId,
151
+ });
152
+ }
153
+ } while (cursor !== "0");
154
+ return principals;
155
+ }
125
156
  async setBinding(binding) {
126
157
  const previous = await this.getBinding(binding.sessionId);
127
158
  if (previous &&
@@ -134,7 +165,6 @@ class RedisStateStore {
134
165
  await this.redis.set(principalActiveSessionKey(binding), binding.sessionId);
135
166
  }
136
167
  async clearBinding(sessionId) {
137
- await this.unlinkPartnerSession(sessionId);
138
168
  const existing = await this.getBinding(sessionId);
139
169
  await this.redis.del(bindingKey(sessionId));
140
170
  if (existing) {
@@ -161,6 +191,9 @@ class RedisStateStore {
161
191
  } while (cursor !== "0");
162
192
  return null;
163
193
  }
194
+ async clearActiveSessionIdForPrincipal(principal) {
195
+ await this.redis.del(principalActiveSessionKey(principal));
196
+ }
164
197
  async setActiveSessionIdForPrincipal(principal, sessionId) {
165
198
  const isBound = await this.redis.sismember(principalSessionsKey(principal), sessionId);
166
199
  if (!isBound) {
@@ -223,32 +256,6 @@ class RedisStateStore {
223
256
  const raw = await this.redis.get(requestKey(requestId));
224
257
  return parseJson(raw);
225
258
  }
226
- async createInboxMessage(message) {
227
- await this.redis.set(inboxMessageKey(message.sessionId, message.id), JSON.stringify(message));
228
- await this.redis.lpush(inboxListKey(message.sessionId), message.id);
229
- }
230
- async listInboxMessages(sessionId, limit) {
231
- const ids = await this.redis.lrange(inboxListKey(sessionId), 0, limit - 1);
232
- if (ids.length === 0) {
233
- return [];
234
- }
235
- const rows = await this.redis.mget(...ids.map((messageId) => inboxMessageKey(sessionId, messageId)));
236
- return rows
237
- .map((row) => parseJson(row))
238
- .filter((row) => row !== null);
239
- }
240
- async countInboxMessages(sessionId) {
241
- return this.redis.llen(inboxListKey(sessionId));
242
- }
243
- async getInboxMessage(sessionId, messageId) {
244
- const raw = await this.redis.get(inboxMessageKey(sessionId, messageId));
245
- return parseJson(raw);
246
- }
247
- async deleteInboxMessage(sessionId, messageId) {
248
- const deletedCount = await this.redis.del(inboxMessageKey(sessionId, messageId));
249
- await this.redis.lrem(inboxListKey(sessionId), 0, messageId);
250
- return deletedCount > 0;
251
- }
252
259
  async createMenuPayload(record, ttlSeconds) {
253
260
  await this.redis.set(menuPayloadKey(record.key), JSON.stringify(record), "EX", ttlSeconds);
254
261
  }
@@ -373,42 +380,6 @@ class RedisStateStore {
373
380
  }
374
381
  await this.redis.del(activeKey);
375
382
  }
376
- async unlinkPartnerSession(sessionId) {
377
- const sourceSession = await this.getSession(sessionId);
378
- if (!sourceSession?.linkedSessionId) {
379
- return;
380
- }
381
- const { linkedSessionId: partnerId } = sourceSession;
382
- const { linkedSessionId: _linkedSessionId, ...restSource } = sourceSession;
383
- await this.setSession({
384
- ...restSource,
385
- updatedAt: new Date().toISOString(),
386
- });
387
- const partnerSession = await this.getSession(partnerId);
388
- if (!partnerSession || partnerSession.linkedSessionId !== sessionId) {
389
- return;
390
- }
391
- const { linkedSessionId: _partnerLinkedSessionId, ...restPartner } = partnerSession;
392
- await this.setSession({
393
- ...restPartner,
394
- updatedAt: new Date().toISOString(),
395
- });
396
- }
397
- async clearInboxMessages(sessionId) {
398
- const listKey = inboxListKey(sessionId);
399
- const messageKeys = [];
400
- let cursor = "0";
401
- const pattern = `${KEY_PREFIX}:inbox-message:${sessionId}:*`;
402
- do {
403
- const [nextCursor, keys] = await this.redis.scan(cursor, "MATCH", pattern, "COUNT", 200);
404
- cursor = nextCursor;
405
- messageKeys.push(...keys);
406
- } while (cursor !== "0");
407
- if (messageKeys.length > 0) {
408
- await this.redis.del(...messageKeys);
409
- }
410
- await this.redis.del(listKey);
411
- }
412
383
  async clearXchangeFileMetas(sessionId) {
413
384
  let cursor = "0";
414
385
  const pattern = `${KEY_PREFIX}:xchange-file:${sessionId}:*`;
@@ -1,10 +1,7 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTelegramBaseFetchConfig = createTelegramBaseFetchConfig;
6
4
  exports.createTelegramFetch = createTelegramFetch;
7
- const node_fetch_1 = __importDefault(require("node-fetch"));
8
5
  const https_proxy_agent_1 = require("https-proxy-agent");
9
6
  const socks_proxy_agent_1 = require("socks-proxy-agent");
10
7
  function maskProxyUrl(rawUrl) {
@@ -22,25 +19,27 @@ function maskProxyUrl(rawUrl) {
22
19
  return "[INVALID_PROXY_URL]";
23
20
  }
24
21
  }
25
- function createTelegramFetch(config, logger) {
26
- if (!config.telegram.proxy) {
22
+ function createTelegramBaseFetchConfig(config, logger) {
23
+ const agent = config.telegram.proxy
24
+ ? config.telegram.proxy.type === "http"
25
+ ? new https_proxy_agent_1.HttpsProxyAgent(config.telegram.proxy.url)
26
+ : new socks_proxy_agent_1.SocksProxyAgent(config.telegram.proxy.url)
27
+ : undefined;
28
+ if (config.telegram.proxy) {
29
+ logger.info("Telegram proxy configured", {
30
+ proxyType: config.telegram.proxy.type,
31
+ proxyUrl: maskProxyUrl(config.telegram.proxy.url),
32
+ });
33
+ }
34
+ else {
27
35
  logger.debug("Telegram proxy disabled");
28
- return globalThis.fetch.bind(globalThis);
29
36
  }
30
- const agent = config.telegram.proxy.type === "http"
31
- ? new https_proxy_agent_1.HttpsProxyAgent(config.telegram.proxy.url)
32
- : new socks_proxy_agent_1.SocksProxyAgent(config.telegram.proxy.url);
33
- logger.info("Telegram proxy configured", {
34
- proxyType: config.telegram.proxy.type,
35
- proxyUrl: maskProxyUrl(config.telegram.proxy.url),
37
+ return agent ? { agent } : {};
38
+ }
39
+ function createTelegramFetch(config, logger) {
40
+ const baseFetchConfig = createTelegramBaseFetchConfig(config, logger);
41
+ return async (input, init) => globalThis.fetch(input, {
42
+ ...baseFetchConfig,
43
+ ...(init ?? {}),
36
44
  });
37
- const proxiedFetch = async (...args) => {
38
- const [input, init] = args;
39
- const requestInit = {
40
- ...(init ? init : {}),
41
- agent,
42
- };
43
- return (0, node_fetch_1.default)(input, requestInit);
44
- };
45
- return proxiedFetch;
46
45
  }