@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
@@ -0,0 +1,633 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildTransportConstructorWiring = buildTransportConstructorWiring;
4
+ const grammy_1 = require("grammy");
5
+ const proxyFetch_1 = require("./proxyFetch");
6
+ const transportFormatting_1 = require("./transportFormatting");
7
+ const transportContent_1 = require("./transportContent");
8
+ const transportAttachmentStore_1 = require("./transportAttachmentStore");
9
+ const transportBroadcastActions_1 = require("./transportBroadcastActions");
10
+ const transportContext_1 = require("./transportContext");
11
+ const transportConsoleRegistry_1 = require("./transportConsoleRegistry");
12
+ const transportDocumentActions_1 = require("./transportDocumentActions");
13
+ const transportEventActions_1 = require("./transportEventActions");
14
+ const transportFileHandoffActions_1 = require("./transportFileHandoffActions");
15
+ const transportGatewayActions_1 = require("./transportGatewayActions");
16
+ const transportLifecycleActions_1 = require("./transportLifecycleActions");
17
+ const transportLiveActions_1 = require("./transportLiveActions");
18
+ const transportMenuCallbacks_1 = require("./transportMenuCallbacks");
19
+ const transportMenuFactories_1 = require("./transportMenuFactories");
20
+ const transportMenuFingerprints_1 = require("./transportMenuFingerprints");
21
+ const transportMenuFlow_1 = require("./transportMenuFlow");
22
+ const transportMenuShell_1 = require("./transportMenuShell");
23
+ const transportMenuState_1 = require("./transportMenuState");
24
+ const transportMessageFlow_1 = require("./transportMessageFlow");
25
+ const transportOutputActions_1 = require("./transportOutputActions");
26
+ const transportPartnerActions_1 = require("./transportPartnerActions");
27
+ const transportPayloadState_1 = require("./transportPayloadState");
28
+ const transportProjectActions_1 = require("./transportProjectActions");
29
+ const transportProjectEntryActions_1 = require("./transportProjectEntryActions");
30
+ const transportProjectEvents_1 = require("./transportProjectEvents");
31
+ const transportProjectMenus_1 = require("./transportProjectMenus");
32
+ const transportProjectState_1 = require("./transportProjectState");
33
+ const transportProjectView_1 = require("./transportProjectView");
34
+ const transportRequestFlow_1 = require("./transportRequestFlow");
35
+ const transportSessionActions_1 = require("./transportSessionActions");
36
+ const transportTerminalActions_1 = require("./transportTerminalActions");
37
+ const transportTerminalRuntime_1 = require("./transportTerminalRuntime");
38
+ const transportXchangeState_1 = require("./transportXchangeState");
39
+ const transportUtils_1 = require("./transportUtils");
40
+ function buildTransportConstructorWiring(host) {
41
+ const telegramBaseFetchConfig = (0, proxyFetch_1.createTelegramBaseFetchConfig)(host.config, host.logger);
42
+ const telegramFetch = (0, proxyFetch_1.createTelegramFetch)(host.config, host.logger);
43
+ const bot = Object.keys(telegramBaseFetchConfig).length > 0
44
+ ? new grammy_1.Bot(host.config.telegram.botToken ?? "0:disabled", {
45
+ client: {
46
+ baseFetchConfig: telegramBaseFetchConfig,
47
+ },
48
+ })
49
+ : new grammy_1.Bot(host.config.telegram.botToken ?? "0:disabled");
50
+ const context = new transportContext_1.TransportContext({
51
+ config: host.config,
52
+ localeStore: host.localeStore,
53
+ });
54
+ const payloadState = new transportPayloadState_1.TransportPayloadState({
55
+ menuPayloadStore: host.menuPayloadStore,
56
+ menuPayloadTtlSeconds: host.config.telegram.menuPayloadTtlSeconds,
57
+ });
58
+ const xchangeState = new transportXchangeState_1.TransportXchangeState({
59
+ config: host.config,
60
+ sessionStore: host.sessionStore,
61
+ xchangeFileMetaStore: host.xchangeFileMetaStore,
62
+ callGatewayJson: (path, payload) => host.callGatewayJson(path, payload),
63
+ });
64
+ const outputActions = new transportOutputActions_1.TransportOutputActions({
65
+ config: host.config,
66
+ logger: host.logger,
67
+ bot,
68
+ });
69
+ const consoleRegistry = new transportConsoleRegistry_1.TransportConsoleRegistry({
70
+ config: host.config,
71
+ logger: host.logger,
72
+ sessionStore: host.sessionStore,
73
+ bindingStore: host.bindingStore,
74
+ callGatewayJson: (path, payload) => host.callGatewayJson(path, payload),
75
+ });
76
+ const liveActions = new transportLiveActions_1.TransportLiveActions({
77
+ config: host.config,
78
+ webAppLaunchRegistry: host.webAppLaunchRegistry,
79
+ logger: host.logger,
80
+ t: (locale, key, vars) => context.t(locale, key, vars),
81
+ ensureGatewayClientUuid: (principal, actor) => gatewayActions.ensureGatewayClientUuid(principal, actor),
82
+ sendChatMessage: (telegramChatId, text, options, meta) => outputActions.sendChatMessage(telegramChatId, text, options, meta),
83
+ });
84
+ const terminalActions = new transportTerminalActions_1.TransportTerminalActions({
85
+ config: host.config,
86
+ sessionStore: host.sessionStore,
87
+ bindingStore: host.bindingStore,
88
+ logger: host.logger,
89
+ terminalNudgeFailureNoticeAt: host.terminalNudgeFailureNoticeAt,
90
+ terminalPromptNoticeState: host.terminalPromptNoticeState,
91
+ sendTypingForSession: (sessionId) => terminalRuntime.sendTypingForSession(sessionId),
92
+ resolveLocaleForTelegramUserId: (userId) => context.resolveLocaleForTelegramUserId(userId),
93
+ sendNotification: (input) => requestFlow.sendNotification(input),
94
+ sendLiveViewLauncherMessage: (input) => liveActions.sendLauncherMessage(input),
95
+ t: (locale, key, vars) => context.t(locale, key, vars),
96
+ });
97
+ const terminalRuntime = new transportTerminalRuntime_1.TransportTerminalRuntime({
98
+ config: host.config,
99
+ logger: host.logger,
100
+ bot,
101
+ sessionStore: host.sessionStore,
102
+ bindingStore: host.bindingStore,
103
+ isTelegramEnabled: () => host.config.distributed.mode !== "client" && Boolean(host.config.telegram.botToken?.trim()),
104
+ terminalActions,
105
+ terminalNudgeDebounceTimers: host.terminalNudgeDebounceTimers,
106
+ });
107
+ const menuFingerprints = new transportMenuFingerprints_1.TransportMenuFingerprints({
108
+ logger: host.logger,
109
+ bindingStore: host.bindingStore,
110
+ sessionStore: host.sessionStore,
111
+ getMenuPayloadByKey: (key) => host.menuPayloadStore.getMenuPayload(key),
112
+ resolveLocaleForContext: (ctx) => context.resolveLocaleForContext(ctx),
113
+ getPrincipalFromContext: (ctx) => context.getPrincipalFromContext(ctx),
114
+ t: (locale, key, vars) => context.t(locale, key, vars),
115
+ listActiveSessionStorageEntries: (sessionId) => xchangeState.listActiveSessionStorageEntries(sessionId),
116
+ listActiveSessionScreenshots: (sessionId) => xchangeState.listActiveSessionScreenshots(sessionId),
117
+ });
118
+ const documentActions = new transportDocumentActions_1.TransportDocumentActions({
119
+ logger: host.logger,
120
+ });
121
+ const projectMenus = new transportProjectMenus_1.TransportProjectMenus({
122
+ createMenuOptions: (onMenuOutdated) => host.createMenuOptions(onMenuOutdated),
123
+ buildProjectsFingerprint: (ctx) => gatewayActions.buildProjectsFingerprint(ctx),
124
+ loadProjectsContext: (ctx) => gatewayActions.loadProjectsContext(ctx),
125
+ tForContext: (ctx, key, vars) => context.tForContext(ctx, key, vars),
126
+ createProjectMenuPayload: (sessionId, projectUuid, title) => payloadState.createProjectMenuPayload(sessionId, projectUuid, title),
127
+ createProjectDeleteMenuPayload: (sessionId, projectUuid, title) => payloadState.createProjectDeleteMenuPayload(sessionId, projectUuid, title),
128
+ handleProjectSelect: (ctx) => projectEntryActions.handleProjectSelect(ctx),
129
+ handleProjectDeleteSelect: (ctx) => projectEntryActions.handleProjectDeleteSelect(ctx),
130
+ beginProjectMode: (ctx, mode) => projectEntryActions.beginProjectMode(ctx, mode),
131
+ beginProjectBroadcast: (ctx) => broadcastActions.beginProjectBroadcast(ctx),
132
+ handleCollabHistoryExport: (ctx) => menuFlow.handleCollabHistoryExport(ctx),
133
+ showCollabToolsMenu: (ctx) => menuFlow.showCollabToolsMenu(ctx),
134
+ showCollabDeleteMenu: (ctx) => menuFlow.showCollabDeleteMenu(ctx),
135
+ showProjectsMenu: (ctx) => menuFlow.showProjectsMenu(ctx),
136
+ showMainMenu: (ctx) => menuState.showMainMenu(ctx),
137
+ });
138
+ const menuFactories = new transportMenuFactories_1.TransportMenuFactories({
139
+ logger: host.logger,
140
+ bindingStore: host.bindingStore,
141
+ sessionStore: host.sessionStore,
142
+ createMenuOptions: (onMenuOutdated) => host.createMenuOptions(onMenuOutdated),
143
+ tForContext: (ctx, key, vars) => context.tForContext(ctx, key, vars),
144
+ getPrincipalFromContext: (ctx) => context.getPrincipalFromContext(ctx),
145
+ buildMainMenuFingerprint: (ctx) => menuFingerprints.buildMainMenuFingerprint(ctx),
146
+ buildStorageFingerprint: (ctx) => menuFingerprints.buildStorageFingerprint(ctx),
147
+ buildScreenshotsFingerprint: (ctx) => menuFingerprints.buildScreenshotsFingerprint(ctx),
148
+ buildSessionsFingerprint: (ctx) => menuFingerprints.buildSessionsFingerprint(ctx),
149
+ buildScreenshotsButtonLabel: (ctx) => menuFingerprints.buildScreenshotsButtonLabel(ctx),
150
+ showLiveViewLauncher: (ctx) => menuFlow.showLiveViewLauncher(ctx),
151
+ showBufferMenu: (ctx) => menuFlow.showBufferMenu(ctx),
152
+ showBrowserMenu: (ctx) => menuFlow.showBrowserMenu(ctx),
153
+ showMainMenu: (ctx) => menuState.showMainMenu(ctx),
154
+ showProjectsEntryPoint: (ctx) => menuFlow.showProjectsMenu(ctx),
155
+ showStorageMenu: (ctx) => menuFlow.showStorageMenu(ctx),
156
+ showSettingsMenu: (ctx) => menuFlow.showSettingsMenu(ctx),
157
+ showSessionsMenu: (ctx) => menuFlow.showSessionsMenu(ctx),
158
+ showScreenshotsMenu: (ctx) => menuFlow.showScreenshotsMenu(ctx),
159
+ sendActiveSessionBuffer: (ctx, input) => menuFlow.sendActiveSessionBuffer(ctx, input),
160
+ showUnpairConfirmMenu: (ctx) => menuFlow.showUnpairConfirmMenu(ctx),
161
+ showDeveloperMenu: (ctx) => menuFlow.showDeveloperMenu(ctx),
162
+ showDeveloperInfo: (ctx) => menuFlow.showDeveloperInfo(ctx),
163
+ showPruneConfirmMenu: (ctx) => menuFlow.showPruneConfirmMenu(ctx),
164
+ showActiveSessionInfo: (ctx) => menuFlow.showActiveSessionInfo(ctx),
165
+ beginRenameActiveSession: (ctx) => sessionActions.beginRenameActiveSession(ctx),
166
+ beginBroadcast: (ctx) => broadcastActions.beginBroadcast(ctx),
167
+ pruneAllSessions: (ctx) => sessionActions.pruneAllSessions(ctx),
168
+ unpairActiveSession: (ctx) => sessionActions.unpairActiveSession(ctx),
169
+ handleStorageOpen: (ctx) => menuCallbacks.handleStorageOpen(ctx, (0, transportUtils_1.readMenuPayloadKey)(ctx)),
170
+ handleStorageGet: (ctx) => menuCallbacks.handleStorageGet(ctx, (0, transportUtils_1.readMenuPayloadKey)(ctx)),
171
+ handleStorageDelete: (ctx) => menuCallbacks.handleStorageDelete(ctx, (0, transportUtils_1.readMenuPayloadKey)(ctx)),
172
+ handleScreenshotOpen: (ctx) => menuCallbacks.handleScreenshotOpen(ctx, (0, transportUtils_1.readMenuPayloadKey)(ctx)),
173
+ handleScreenshotGet: (ctx) => menuCallbacks.handleScreenshotGet(ctx, (0, transportUtils_1.readMenuPayloadKey)(ctx)),
174
+ handleScreenshotDelete: (ctx) => menuCallbacks.handleScreenshotDelete(ctx, (0, transportUtils_1.readMenuPayloadKey)(ctx)),
175
+ handleSessionSelection: (ctx) => menuCallbacks.handleSessionSelection(ctx, (0, transportUtils_1.readMenuPayloadKey)(ctx)),
176
+ handleSessionGroupSelection: (ctx) => menuCallbacks.handleSessionGroupSelection(ctx, (0, transportUtils_1.readMenuPayloadKey)(ctx)),
177
+ getMenuPayloadByKey: (key) => host.menuPayloadStore.getMenuPayload(key),
178
+ createFileMenuPayload: (sessionId, filePath) => payloadState.createFileMenuPayload(sessionId, filePath),
179
+ createSessionMenuPayload: (sessionId, ownerLabel, ownerKey) => payloadState.createSessionMenuPayload(sessionId, ownerLabel, ownerKey),
180
+ createSessionGroupMenuPayload: (ownerLabel, ownerKey) => payloadState.createSessionGroupMenuPayload(ownerLabel, ownerKey),
181
+ formatStoragePreviewLabel: (filePath, meta) => (0, transportFormatting_1.formatStoragePreviewLabel)(filePath, meta),
182
+ formatFilePreviewLabel: (filePath) => (0, transportFormatting_1.formatFilePreviewLabel)(filePath),
183
+ formatSessionMenuLabel: (input) => (0, transportFormatting_1.formatSessionMenuLabel)(input),
184
+ listActiveSessionStorageEntries: (sessionId) => xchangeState.listActiveSessionStorageEntries(sessionId),
185
+ listActiveSessionScreenshots: (sessionId) => xchangeState.listActiveSessionScreenshots(sessionId),
186
+ });
187
+ const mainMenu = menuFactories.createMainMenu();
188
+ const storageMenu = menuFactories.createStorageMenu();
189
+ const browserMenu = menuFactories.createBrowserMenu();
190
+ const screenshotsMenu = menuFactories.createScreenshotsMenu();
191
+ const sessionsMenu = menuFactories.createSessionsMenu();
192
+ const bufferMenu = menuFactories.createBufferMenu();
193
+ const settingsMenu = menuFactories.createSettingsMenu();
194
+ const developerMenu = menuFactories.createDeveloperMenu();
195
+ const unpairConfirmMenu = menuFactories.createUnpairConfirmMenu();
196
+ const pruneConfirmMenu = menuFactories.createPruneConfirmMenu();
197
+ const storageMessageMenu = menuFactories.createStorageMessageMenu();
198
+ const screenshotMessageMenu = menuFactories.createScreenshotMessageMenu();
199
+ const projectsMenu = projectMenus.createProjectsMenu();
200
+ const collabToolsMenu = projectMenus.createCollabToolsMenu();
201
+ const collabDeleteMenu = projectMenus.createCollabDeleteMenu();
202
+ const menuState = new transportMenuState_1.TransportMenuState({
203
+ logger: host.logger,
204
+ t: (locale, key, vars) => context.t(locale, key, vars),
205
+ resolveLocaleForContext: (ctx) => context.resolveLocaleForContext(ctx),
206
+ getPrincipalFromContext: (ctx) => context.getPrincipalFromContext(ctx),
207
+ getTerminalStatusLine: async (locale) => context.t(locale, "menu:main.screen.terminal_mode_direct"),
208
+ setCurrentAttachmentTargetForContext: (ctx, target) => menuFlow.setCurrentAttachmentTargetForContext(ctx, target),
209
+ renderMenuHtmlScreen: (ctx, text, meta, menu) => menuFlow.renderMenuHtmlScreen(ctx, text, meta, menu),
210
+ renderMenuScreen: (ctx, text, meta, menu) => menuFlow.renderMenuScreen(ctx, text, meta, menu),
211
+ renderMenuMarkdownScreen: (ctx, text, meta, menu) => menuFlow.renderMenuMarkdownScreen(ctx, text, meta, menu),
212
+ replyText: (ctx, text, meta, options) => outputActions.replyText(ctx, text, meta, options),
213
+ getMenuPayloadByKey: (key) => host.menuPayloadStore.getMenuPayload(key),
214
+ getMainMenu: () => mainMenu,
215
+ getSessionsMenu: () => sessionsMenu,
216
+ getStorageMenu: () => storageMenu,
217
+ getBrowserMenu: () => browserMenu,
218
+ getScreenshotsMenu: () => screenshotsMenu,
219
+ getSettingsMenu: () => settingsMenu,
220
+ getBufferMenu: () => bufferMenu,
221
+ getDeveloperMenu: () => developerMenu,
222
+ getUnpairConfirmMenu: () => unpairConfirmMenu,
223
+ getPruneConfirmMenu: () => pruneConfirmMenu,
224
+ sessionStore: host.sessionStore,
225
+ bindingStore: host.bindingStore,
226
+ listActiveSessionScreenshots: (sessionId) => xchangeState.listActiveSessionScreenshots(sessionId),
227
+ listActiveSessionStorageEntries: (sessionId) => xchangeState.listActiveSessionStorageEntries(sessionId),
228
+ callGatewayJson: (path, payload) => host.callGatewayJson(path, payload),
229
+ });
230
+ const projectState = new transportProjectState_1.TransportProjectState({
231
+ config: host.config,
232
+ getGatewayActorFromContext: (ctx) => context.getGatewayActorFromContext(ctx),
233
+ getPrincipalFromContext: (ctx) => context.getPrincipalFromContext(ctx),
234
+ callGatewayJson: (path, payload) => host.callGatewayJson(path, payload),
235
+ sessionStore: host.sessionStore,
236
+ bindingStore: host.bindingStore,
237
+ maintenanceStore: host.maintenanceStore,
238
+ menuPayloadStore: host.menuPayloadStore,
239
+ });
240
+ const gatewayActions = new transportGatewayActions_1.TransportGatewayActions({
241
+ getCollaborationService: () => host.getCollaborationService(),
242
+ projectState,
243
+ });
244
+ const attachmentStore = new transportAttachmentStore_1.TransportAttachmentStore({
245
+ sessionStore: host.sessionStore,
246
+ xchangeFileMetaStore: host.xchangeFileMetaStore,
247
+ objectStore: host.objectStore,
248
+ telegramFetch: (input, init) => telegramFetch(input, init),
249
+ getRequiredBotToken: (action) => host.getRequiredBotToken(action),
250
+ getTelegramFile: (fileId) => bot.api.getFile(fileId),
251
+ });
252
+ const lifecycleActions = new transportLifecycleActions_1.TransportLifecycleActions({
253
+ logger: host.logger,
254
+ config: host.config,
255
+ sessionStore: host.sessionStore,
256
+ bindingStore: host.bindingStore,
257
+ isTelegramEnabled: () => host.config.distributed.mode !== "client" &&
258
+ Boolean(host.config.telegram.botToken?.trim()),
259
+ resolveLocaleForTelegramUserId: (telegramUserId, telegramLanguageCode) => context.resolveLocaleForTelegramUserId(telegramUserId, telegramLanguageCode),
260
+ t: (locale, key, options) => context.t(locale, key, options),
261
+ sendNotification: (input) => host.sendNotification(input),
262
+ });
263
+ const projectView = new transportProjectView_1.TransportProjectView({
264
+ config: host.config,
265
+ projectsMenu,
266
+ collabToolsMenu,
267
+ collabDeleteMenu,
268
+ t: (locale, key, vars) => context.t(locale, key, vars),
269
+ resolveLocaleForContext: (ctx) => context.resolveLocaleForContext(ctx),
270
+ resolveLocaleForTelegramUserId: (telegramUserId, telegramLanguageCode) => context.resolveLocaleForTelegramUserId(telegramUserId, telegramLanguageCode),
271
+ getPrincipalFromContext: (ctx) => context.getPrincipalFromContext(ctx),
272
+ getGatewayActorFromContext: (ctx) => context.getGatewayActorFromContext(ctx),
273
+ ensureGatewayClientUuid: (principal, actor) => gatewayActions.ensureGatewayClientUuid(principal, actor),
274
+ loadProjectsContext: (ctx) => gatewayActions.loadProjectsContext(ctx),
275
+ listGatewayProjects: (principal, actor) => gatewayActions.listGatewayProjects(principal, actor),
276
+ listGatewayProjectSessions: (principal, projectUuid) => gatewayActions.listGatewayProjectSessions(principal, projectUuid),
277
+ listGatewaySessionHistory: (principal, localSessionId) => gatewayActions.listGatewaySessionHistory(principal, localSessionId),
278
+ collectCollabBroadcastTargets: (principal, _sessionId) => broadcastActions.listCollabBroadcastTargets(principal),
279
+ ensureOpenedProjectIsActive: (input) => gatewayActions.ensureOpenedProjectIsActive(input),
280
+ setCurrentAttachmentTargetForContext: (ctx, target) => menuFlow.setCurrentAttachmentTargetForContext(ctx, target),
281
+ renderMenuScreen: (ctx, text, meta, menu) => menuFlow.renderMenuScreen(ctx, text, meta, menu),
282
+ replyText: (ctx, text, meta, options) => outputActions.replyText(ctx, text, meta, options),
283
+ editText: (ctx, text, meta, options) => outputActions.editText(ctx, text, meta, options),
284
+ replyDocumentWithRetry: (ctx, document, options, meta) => documentActions.replyDocumentWithRetry(ctx, document, options, meta),
285
+ sessionStore: host.sessionStore,
286
+ bindingStore: host.bindingStore,
287
+ maintenanceStore: host.maintenanceStore,
288
+ xchangeFileMetaStore: host.xchangeFileMetaStore,
289
+ webAppLaunchRegistry: host.webAppLaunchRegistry,
290
+ createProjectMemberMenuPayload: (sessionId, projectUuid, targetSessionId, title, extra) => payloadState.createProjectMemberMenuPayload(sessionId, projectUuid, targetSessionId, title, extra),
291
+ listActiveSessionFiles: (sessionId) => xchangeState.listActiveSessionFiles(sessionId),
292
+ formatFilePreviewLabel: (filePath, meta) => (0, transportFormatting_1.formatFilePreviewLabel)(filePath, meta),
293
+ });
294
+ const menuFlow = new transportMenuFlow_1.TransportMenuFlow({
295
+ config: host.config,
296
+ logger: host.logger,
297
+ bindingStore: host.bindingStore,
298
+ sessionStore: host.sessionStore,
299
+ menuState,
300
+ projectView,
301
+ liveActions,
302
+ terminalActions,
303
+ pendingRenames: host.pendingRenames,
304
+ pendingBroadcasts: host.pendingBroadcasts,
305
+ pendingPartnerNotes: host.pendingPartnerNotes,
306
+ pendingFileHandoffs: host.pendingFileHandoffs,
307
+ pendingProjects: host.pendingProjects,
308
+ currentAttachmentTargets: host.currentAttachmentTargets,
309
+ resolveLocaleForContext: (ctx) => context.resolveLocaleForContext(ctx),
310
+ getPrincipalFromContext: (ctx) => context.getPrincipalFromContext(ctx),
311
+ ensureGatewayScopeConsolesBound: ({ principal, ctx }) => consoleRegistry.ensureScopedConsolesBound({ principal, ctx }),
312
+ getGatewayActorFromContext: (ctx) => context.getGatewayActorFromContext(ctx),
313
+ t: (locale, key, options) => context.t(locale, key, options),
314
+ replyText: (ctx, text, meta, options) => outputActions.replyText(ctx, text, meta, options),
315
+ editText: (ctx, text, meta, options) => outputActions.editText(ctx, text, meta, options),
316
+ replyDocumentWithRetry: (ctx, document, options, meta) => documentActions.replyDocumentWithRetry(ctx, document, options, meta),
317
+ captureRelaySessionBuffer: (sessionId, scope) => host.callGatewayJson("/live/capture-buffer", {
318
+ session_id: sessionId,
319
+ scope,
320
+ }),
321
+ });
322
+ const broadcastActions = new transportBroadcastActions_1.TransportBroadcastActions({
323
+ config: host.config,
324
+ logger: host.logger,
325
+ pendingBroadcasts: host.pendingBroadcasts,
326
+ pendingRenames: host.pendingRenames,
327
+ getPrincipalFromContext: (ctx) => context.getPrincipalFromContext(ctx),
328
+ resolveLocaleForContext: (ctx) => context.resolveLocaleForContext(ctx),
329
+ t: (locale, key, vars) => context.t(locale, key, vars),
330
+ tForContext: (ctx, key, vars) => context.tForContext(ctx, key, vars),
331
+ replyText: (ctx, text, meta, options) => outputActions.replyText(ctx, text, meta, options),
332
+ deleteMessage: (chatId, messageId) => host.deleteMessage(chatId, messageId),
333
+ showCollabToolsMenu: (ctx) => menuFlow.showCollabToolsMenu(ctx),
334
+ showDeveloperMenu: (ctx) => menuFlow.showDeveloperMenu(ctx),
335
+ ensureGatewayClientUuid: (principal) => gatewayActions.ensureGatewayClientUuid(principal),
336
+ listGatewayProjects: (principal) => gatewayActions.listGatewayProjects(principal),
337
+ listGatewayProjectSessions: (principal, projectUuid) => gatewayActions.listGatewayProjectSessions(principal, projectUuid),
338
+ bindingStore: host.bindingStore,
339
+ sessionStore: host.sessionStore,
340
+ routeTelegramInboxToRelaySession: (input) => messageFlow.routeTelegramInboxToRelaySession(input),
341
+ scheduleTerminalNudgeForInboxMessage: (sessionId, session) => terminalRuntime.scheduleTerminalNudgeForInboxMessage(sessionId, session),
342
+ sendPartnerNote: (input) => gatewayActions.sendPartnerNote(input),
343
+ });
344
+ const partnerActions = new transportPartnerActions_1.TransportPartnerActions({
345
+ config: host.config,
346
+ logger: host.logger,
347
+ pendingPartnerNotes: host.pendingPartnerNotes,
348
+ getPrincipalFromContext: (ctx) => context.getPrincipalFromContext(ctx),
349
+ resolveLocaleForContext: (ctx) => context.resolveLocaleForContext(ctx),
350
+ t: (locale, key, vars) => context.t(locale, key, vars),
351
+ replyText: (ctx, text, meta, options) => outputActions.replyText(ctx, text, meta, options),
352
+ deleteMessage: (chatId, messageId) => host.deleteMessage(chatId, messageId),
353
+ showProjectsMenu: (ctx, introText) => menuFlow.showProjectsMenu(ctx, introText),
354
+ showMainMenu: (ctx, introText) => menuState.showMainMenu(ctx, introText),
355
+ bindingStore: host.bindingStore,
356
+ sessionStore: host.sessionStore,
357
+ maintenanceStore: host.maintenanceStore,
358
+ ensureProjectSessionRegistered: (input) => gatewayActions.ensureProjectSessionRegistered(input),
359
+ sendPartnerNote: (input) => gatewayActions.sendPartnerNote(input),
360
+ nudgeSessionInbox: (sessionId) => host.nudgeSessionInbox(sessionId),
361
+ });
362
+ const fileHandoffActions = new transportFileHandoffActions_1.TransportFileHandoffActions({
363
+ logger: host.logger,
364
+ config: host.config,
365
+ pendingFileHandoffs: host.pendingFileHandoffs,
366
+ getPrincipalFromContext: (ctx) => context.getPrincipalFromContext(ctx),
367
+ resolveLocaleForContext: (ctx) => context.resolveLocaleForContext(ctx),
368
+ t: (locale, key, vars) => context.t(locale, key, vars),
369
+ replyText: (ctx, text, meta, options) => outputActions.replyText(ctx, text, meta, options),
370
+ deleteMessage: (chatId, messageId) => host.deleteMessage(chatId, messageId),
371
+ showProjectsMenu: (ctx) => menuFlow.showProjectsMenu(ctx),
372
+ showMainMenu: (ctx) => menuState.showMainMenu(ctx),
373
+ showProjectMemberDetail: (ctx, input) => projectView.showProjectMemberDetail(ctx, {
374
+ ...input,
375
+ inviteToken: input.inviteToken ?? "",
376
+ }),
377
+ getProjectPayloadByUuid: (sessionId, projectUuid) => projectState.getProjectPayloadByUuid(sessionId, projectUuid),
378
+ ensureProjectSessionRegistered: (input) => gatewayActions.ensureProjectSessionRegistered(input),
379
+ sendPartnerNote: (input) => gatewayActions.sendPartnerNote(input),
380
+ xchangeFileMetaStore: host.xchangeFileMetaStore,
381
+ sessionStore: host.sessionStore,
382
+ maintenanceStore: host.maintenanceStore,
383
+ objectStore: host.objectStore,
384
+ nudgeSessionInbox: (sessionId) => host.nudgeSessionInbox(sessionId),
385
+ });
386
+ const menuCallbacks = new transportMenuCallbacks_1.TransportMenuCallbacks({
387
+ logger: host.logger,
388
+ getMenuPayloadByKey: (key) => host.menuPayloadStore.getMenuPayload(key),
389
+ getPrincipalFromContext: (ctx) => context.getPrincipalFromContext(ctx),
390
+ tForContext: (ctx, key, vars) => context.tForContext(ctx, key, vars),
391
+ replyText: (ctx, text, meta, options) => outputActions.replyText(ctx, text, meta, options),
392
+ editText: (ctx, text, meta, options) => outputActions.editText(ctx, text, meta, options),
393
+ showMainMenu: (ctx, introText) => menuState.showMainMenu(ctx, introText),
394
+ showSessionsMenu: (ctx, introText) => menuFlow.showSessionsMenu(ctx, introText),
395
+ showScreenshotsMenu: (ctx, introText) => menuFlow.showScreenshotsMenu(ctx, introText),
396
+ showStorageMenu: (ctx, introText) => menuFlow.showStorageMenu(ctx, introText),
397
+ storageMessageMenu,
398
+ screenshotMessageMenu,
399
+ xchangeFileMetaStore: host.xchangeFileMetaStore,
400
+ sessionStore: host.sessionStore,
401
+ bindingStore: host.bindingStore,
402
+ objectStore: host.objectStore,
403
+ formatScreenshotDetail: (sessionId, filePath, meta) => (0, transportContent_1.formatScreenshotDetail)(sessionId, filePath, meta),
404
+ formatStorageDetail: (sessionId, filePath, meta) => (0, transportContent_1.formatStorageDetail)(sessionId, filePath, meta),
405
+ formatFilePreviewLabel: (filePath, meta) => (0, transportFormatting_1.formatFilePreviewLabel)(filePath, meta),
406
+ listActiveSessionFiles: (sessionId) => xchangeState.listActiveSessionFiles(sessionId),
407
+ createPartnerFileTargetPayload: (sessionId, targetSessionId, title, filePath) => payloadState.createPartnerFileTargetPayload(sessionId, targetSessionId, title, filePath),
408
+ ensureStoredXchangeFile: (sessionId, filePath, source) => attachmentStore.ensureStoredXchangeFile(sessionId, filePath, source),
409
+ sendDocumentToChat: (chatId, filePath, caption) => host.sendDocumentToChat(chatId, filePath, caption),
410
+ maybeNotifyToolsMismatchForSession: (sessionId) => host.maybeNotifyToolsMismatchForSession(sessionId),
411
+ callGatewayJson: (path, payload) => host.callGatewayJson(path, payload),
412
+ });
413
+ const requestFlow = new transportRequestFlow_1.TransportRequestFlow({
414
+ logger: host.logger,
415
+ config: host.config,
416
+ adminAuthStore: host.adminAuthStore,
417
+ maintenanceStore: host.maintenanceStore,
418
+ waiters: host.waiters,
419
+ isTelegramEnabled: () => host.config.distributed.mode !== "client" &&
420
+ Boolean(host.config.telegram.botToken?.trim()),
421
+ isAdminAuthEnabled: () => host.isAdminAuthEnabled(),
422
+ resolveLocaleForTelegramUserId: (telegramUserId, telegramLanguageCode) => context.resolveLocaleForTelegramUserId(telegramUserId, telegramLanguageCode),
423
+ t: (locale, key, options) => context.t(locale, key, options),
424
+ sendTextChunks: (chatId, body, meta) => outputActions.sendTextChunks(chatId, body, meta),
425
+ callGatewayJson: (path, payload) => host.callGatewayJson(path, payload),
426
+ });
427
+ const projectEvents = new transportProjectEvents_1.TransportProjectEvents({
428
+ sessionStore: host.sessionStore,
429
+ bindingStore: host.bindingStore,
430
+ resolveLocaleForTelegramUserId: (telegramUserId, telegramLanguageCode) => context.resolveLocaleForTelegramUserId(telegramUserId, telegramLanguageCode),
431
+ t: (locale, key, options) => context.t(locale, key, options),
432
+ sendNotification: (input) => host.sendNotification(input),
433
+ });
434
+ const sessionActions = new transportSessionActions_1.TransportSessionActions({
435
+ logger: host.logger,
436
+ config: host.config,
437
+ bindingStore: host.bindingStore,
438
+ sessionStore: host.sessionStore,
439
+ maintenanceStore: host.maintenanceStore,
440
+ pendingRenames: host.pendingRenames,
441
+ pendingBroadcasts: host.pendingBroadcasts,
442
+ getMainMenu: () => mainMenu,
443
+ resolveLocaleForContext: (ctx) => context.resolveLocaleForContext(ctx),
444
+ getPrincipalFromContext: (ctx) => context.getPrincipalFromContext(ctx),
445
+ t: (locale, key, options) => context.t(locale, key, options),
446
+ replyText: (ctx, text, meta, options) => outputActions.replyText(ctx, text, meta, options),
447
+ showSessionsMenu: (ctx, introText) => menuFlow.showSessionsMenu(ctx, introText),
448
+ clearPendingInteractionsForContext: (ctx) => menuFlow.clearPendingInteractionsForContext(ctx),
449
+ clearTerminalNudgeDebounceTimers: () => terminalRuntime.clearTerminalNudgeDebounceTimers(),
450
+ callGatewayJson: (path, payload) => host.callGatewayJson(path, payload),
451
+ });
452
+ const projectActions = new transportProjectActions_1.TransportProjectActions({
453
+ resolveLocaleForContext: (ctx) => context.resolveLocaleForContext(ctx),
454
+ t: (locale, key, vars) => context.t(locale, key, vars),
455
+ getPrincipalFromContext: (ctx) => context.getPrincipalFromContext(ctx),
456
+ extractCallbackSuffix: (ctx, prefix) => (0, transportUtils_1.extractCallbackSuffix)(ctx, prefix),
457
+ getGatewayActorFromContext: (ctx) => context.getGatewayActorFromContext(ctx),
458
+ bindingStore: host.bindingStore,
459
+ sessionStore: host.sessionStore,
460
+ pendingProjects: host.pendingProjects,
461
+ ensureGatewayClientUuid: (principal, actor) => gatewayActions.ensureGatewayClientUuid(principal, actor),
462
+ listGatewayProjects: (principal) => gatewayActions.listGatewayProjects(principal),
463
+ callGatewayJson: (path, payload) => host.callGatewayJson(path, payload),
464
+ activateProjectForSession: (input) => gatewayActions.activateProjectForSession(input),
465
+ ensureProjectSessionRegistered: (input) => gatewayActions.ensureProjectSessionRegistered(input),
466
+ ensureOpenedProjectIsActive: (input) => gatewayActions.ensureOpenedProjectIsActive(input),
467
+ getProjectPayloadByUuid: (sessionId, projectUuid) => projectState.getProjectPayloadByUuid(sessionId, projectUuid),
468
+ getProjectMemberPayloadByKey: (payloadKey) => projectState.getProjectMemberPayloadByKey(payloadKey),
469
+ getPartnerFileTargetPayloadByKey: (payloadKey) => projectState.getPartnerFileTargetPayloadByKey(payloadKey),
470
+ getLiveApprovalPayloadByKey: (payloadKey) => projectState.getLiveApprovalPayloadByKey(payloadKey),
471
+ beginFileHandoffModeForTarget: (ctx, input) => fileHandoffActions.beginModeForTarget(ctx, input),
472
+ beginPartnerNoteMode: (ctx, kind, target) => partnerActions.beginPartnerNoteMode(ctx, kind, target),
473
+ showProjectMembers: (ctx, input) => projectView.showProjectMembers(ctx, input),
474
+ showProjectMemberDetail: (ctx, input) => projectView.showProjectMemberDetail(ctx, input),
475
+ showProjectMemberFiles: (ctx, input) => projectView.showProjectMemberFiles(ctx, input),
476
+ showProjectsMenu: (ctx, introText) => menuFlow.showProjectsMenu(ctx, introText),
477
+ showCollabDeleteMenu: (ctx, introText) => menuFlow.showCollabDeleteMenu(ctx, introText),
478
+ replyText: (ctx, text, meta) => outputActions.replyText(ctx, text, meta),
479
+ editText: (ctx, text, meta) => outputActions.editText(ctx, text, meta),
480
+ });
481
+ const projectEntryActions = new transportProjectEntryActions_1.TransportProjectEntryActions({
482
+ bindingStore: host.bindingStore,
483
+ sessionStore: host.sessionStore,
484
+ menuPayloadStore: host.menuPayloadStore,
485
+ pendingProjects: host.pendingProjects,
486
+ resolveLocaleForContext: (ctx) => context.resolveLocaleForContext(ctx),
487
+ getPrincipalFromContext: (ctx) => context.getPrincipalFromContext(ctx),
488
+ t: (locale, key, options) => context.t(locale, key, options),
489
+ replyText: (ctx, text, meta) => outputActions.replyText(ctx, text, meta),
490
+ showProjectsMenu: (ctx, introText) => menuFlow.showProjectsMenu(ctx, introText),
491
+ listGatewayProjects: (principal) => gatewayActions.listGatewayProjects(principal),
492
+ getProjectPayloadByUuid: (sessionId, projectUuid) => projectState.getProjectPayloadByUuid(sessionId, projectUuid),
493
+ ensureOpenedProjectIsActive: (input) => gatewayActions.ensureOpenedProjectIsActive(input),
494
+ showProjectMembers: (ctx, input) => projectView.showProjectMembers(ctx, input),
495
+ ensureGatewayClientUuid: (principal) => gatewayActions.ensureGatewayClientUuid(principal),
496
+ callGatewayJson: (path, payload) => host.callGatewayJson(path, payload),
497
+ });
498
+ const messageFlow = new transportMessageFlow_1.TransportMessageFlow({
499
+ logger: host.logger,
500
+ config: host.config,
501
+ bindingStore: host.bindingStore,
502
+ sessionStore: host.sessionStore,
503
+ isAdminAuthEnabled: () => host.isAdminAuthEnabled(),
504
+ isPrincipalAdminAuthorized: (principal) => host.isPrincipalAdminAuthorized(principal),
505
+ setPrincipalAdminAuthorized: (principal) => host.setPrincipalAdminAuthorized(principal),
506
+ waiters: host.waiters,
507
+ currentAttachmentTargets: host.currentAttachmentTargets,
508
+ isAdminBotProfile: () => host.isAdminBotProfile(),
509
+ getPrincipalFromContext: (ctx) => context.getPrincipalFromContext(ctx),
510
+ ensureGatewayUserForPrincipal: ({ principal, ctx }) => host.ensureGatewayUserForPrincipal({ principal, ctx }),
511
+ extractIncomingText: (message) => (0, transportContent_1.extractIncomingText)(message),
512
+ collectIncomingAttachments: (message) => (0, transportContent_1.collectIncomingAttachments)(message),
513
+ buildInboxText: (text, attachments) => (0, transportFormatting_1.buildInboxText)(text, attachments),
514
+ clearPendingInteractionsForContext: (ctx) => menuFlow.clearPendingInteractionsForContext(ctx),
515
+ handlePendingRename: (ctx, text) => sessionActions.handlePendingRename(ctx, text),
516
+ handlePendingBroadcast: (ctx, text) => broadcastActions.handlePendingBroadcast(ctx, text),
517
+ handlePendingPartnerNote: (ctx, text) => partnerActions.handlePendingPartnerNote(ctx, text),
518
+ handlePendingFileHandoff: (ctx, text) => fileHandoffActions.handlePending(ctx, text),
519
+ handlePendingProject: (ctx, text) => projectActions.handlePendingProject(ctx, text),
520
+ replyText: (ctx, text, meta, options) => outputActions.replyText(ctx, text, meta, options),
521
+ tForContext: (ctx, key, options) => context.tForContext(ctx, key, options),
522
+ showSessionsMenu: (ctx, introText) => menuFlow.showSessionsMenu(ctx, introText),
523
+ showHelp: (ctx) => menuFlow.showHelp(ctx),
524
+ ensureGatewayScopeConsolesBound: ({ principal, ctx }) => consoleRegistry.ensureScopedConsolesBound({ principal, ctx }),
525
+ getMainMenu: () => mainMenu,
526
+ clearWaiter: (requestId) => requestFlow.clearWaiter(requestId),
527
+ callGatewayJson: (path, payload) => host.callGatewayJson(path, payload),
528
+ scheduleTerminalNudgeForInboxMessage: (sessionId, session) => terminalRuntime.scheduleTerminalNudgeForInboxMessage(sessionId, session),
529
+ downloadIncomingAttachments: (session, sessionId, sourceTelegramMessageId, attachments) => attachmentStore.downloadIncomingAttachments(session, sessionId, sourceTelegramMessageId, attachments),
530
+ storeTelegramUploadMetas: (input) => attachmentStore.storeTelegramUploadMetas(input),
531
+ deliverAttachmentToPartner: (input) => fileHandoffActions.deliverToPartnerPublic(input).then(() => { }),
532
+ });
533
+ const eventActions = new transportEventActions_1.TransportEventActions({
534
+ logger: host.logger,
535
+ config: host.config,
536
+ sessionStore: host.sessionStore,
537
+ bindingStore: host.bindingStore,
538
+ webAppLaunchRegistry: host.webAppLaunchRegistry,
539
+ createLiveApprovalMenuPayload: (input) => payloadState.createLiveApprovalMenuPayload(input),
540
+ nudgeSessionInbox: (sessionId) => host.nudgeSessionInbox(sessionId),
541
+ sendNotification: (input) => host.sendNotification(input),
542
+ resolveLocaleForTelegramUserId: (telegramUserId, telegramLanguageCode) => context.resolveLocaleForTelegramUserId(telegramUserId, telegramLanguageCode),
543
+ t: (locale, key, options) => context.t(locale, key, options),
544
+ tForTelegramUserId: (telegramUserId, key, options) => context.tForTelegramUserId(telegramUserId, key, options),
545
+ sendChatMessage: (telegramChatId, text, options, meta) => outputActions.sendChatMessage(telegramChatId, text, options, meta),
546
+ buildLiveViewUrl: (input) => liveActions.buildUrl(input),
547
+ buildLiveViewKeyboard: (buildUrlForMode, locale) => liveActions.buildKeyboard(buildUrlForMode, locale),
548
+ });
549
+ const menuShell = new transportMenuShell_1.TransportMenuShell({
550
+ logger: host.logger,
551
+ tForContext: (ctx, key) => context.tForContext(ctx, key),
552
+ showProjectsMenu: (ctx) => menuFlow.showProjectsMenu(ctx),
553
+ handleMessage: (ctx) => messageFlow.handleMessage(ctx),
554
+ cancelPendingBroadcast: (ctx) => broadcastActions.cancelPendingBroadcast(ctx),
555
+ cancelPendingPartnerNote: (ctx) => partnerActions.cancelPendingPartnerNote(ctx),
556
+ cancelPendingFileHandoff: (ctx) => fileHandoffActions.cancelPending(ctx),
557
+ handleProjectSetCallback: (ctx) => projectActions.handleProjectSetCallback(ctx),
558
+ handleProjectMembersCallback: (ctx) => projectActions.handleProjectMembersCallback(ctx),
559
+ handleProjectMemberOpenCallback: (ctx) => projectActions.handleProjectMemberOpenCallback(ctx),
560
+ handleProjectMemberNoteCallback: (ctx) => projectActions.handleProjectMemberNoteCallback(ctx),
561
+ handleProjectMemberLiveCallback: (ctx) => projectActions.handleProjectMemberLiveCallback(ctx),
562
+ handleLiveApprovalCallback: (ctx) => projectActions.handleLiveApprovalCallback(ctx),
563
+ handleProjectDetailCallback: (ctx) => projectActions.handleProjectDetailCallback(ctx),
564
+ handleProjectDeleteCallback: (ctx) => projectActions.handleProjectDeleteCallback(ctx),
565
+ handleProjectLeaveCallback: (ctx) => projectActions.handleProjectLeaveCallback(ctx),
566
+ });
567
+ mainMenu.register([
568
+ storageMenu,
569
+ browserMenu,
570
+ projectsMenu,
571
+ collabToolsMenu,
572
+ collabDeleteMenu,
573
+ screenshotsMenu,
574
+ sessionsMenu,
575
+ bufferMenu,
576
+ settingsMenu,
577
+ developerMenu,
578
+ unpairConfirmMenu,
579
+ pruneConfirmMenu,
580
+ storageMessageMenu,
581
+ screenshotMessageMenu,
582
+ ]);
583
+ return {
584
+ telegramFetch,
585
+ bot,
586
+ mainMenu,
587
+ storageMenu,
588
+ browserMenu,
589
+ projectsMenu,
590
+ collabToolsMenu,
591
+ collabDeleteMenu,
592
+ screenshotsMenu,
593
+ sessionsMenu,
594
+ bufferMenu,
595
+ settingsMenu,
596
+ developerMenu,
597
+ unpairConfirmMenu,
598
+ pruneConfirmMenu,
599
+ storageMessageMenu,
600
+ screenshotMessageMenu,
601
+ terminalActions,
602
+ liveActions,
603
+ lifecycleActions,
604
+ attachmentStore,
605
+ broadcastActions,
606
+ context,
607
+ documentActions,
608
+ eventActions,
609
+ partnerActions,
610
+ fileHandoffActions,
611
+ menuFactories,
612
+ menuFingerprints,
613
+ menuFlow,
614
+ menuShell,
615
+ consoleRegistry,
616
+ gatewayActions,
617
+ messageFlow,
618
+ menuCallbacks,
619
+ menuState,
620
+ payloadState,
621
+ projectMenus,
622
+ projectEvents,
623
+ projectState,
624
+ projectView,
625
+ projectActions,
626
+ projectEntryActions,
627
+ requestFlow,
628
+ sessionActions,
629
+ outputActions,
630
+ terminalRuntime,
631
+ xchangeState,
632
+ };
633
+ }