@deadragdoll/tellymcp 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/.env.example.client +93 -0
  2. package/.env.example.gateway +120 -0
  3. package/CHANGELOG.md +155 -0
  4. package/LICENSE +21 -0
  5. package/README-ru.md +338 -0
  6. package/README.md +1262 -0
  7. package/STANDALONE-ru.md +266 -0
  8. package/STANDALONE.md +266 -0
  9. package/TOOLS.md +1296 -0
  10. package/config/templates/env.both.template +83 -0
  11. package/config/templates/env.client.template +60 -0
  12. package/config/templates/env.gateway.template +82 -0
  13. package/dist/cli.js +636 -0
  14. package/dist/index.js +17 -0
  15. package/dist/lib/logfeed/store.js +52 -0
  16. package/dist/lib/middlewares/tracer.js +172 -0
  17. package/dist/lib/mixins/db.js +267 -0
  18. package/dist/lib/mixins/logfeed.js +34 -0
  19. package/dist/lib/mixins/session.errors.js +142 -0
  20. package/dist/lib/moleculer.js +2 -0
  21. package/dist/lib/trace.js +147 -0
  22. package/dist/lib/traceContext.js +116 -0
  23. package/dist/moleculer.config.js +274 -0
  24. package/dist/services/features/telegram-mcp/approval.service.js +33 -0
  25. package/dist/services/features/telegram-mcp/browser.service.js +42 -0
  26. package/dist/services/features/telegram-mcp/collaboration.service.js +53 -0
  27. package/dist/services/features/telegram-mcp/ensuredb.service.js +337 -0
  28. package/dist/services/features/telegram-mcp/gateway-delivery.service.js +378 -0
  29. package/dist/services/features/telegram-mcp/gateway-loopback.js +10 -0
  30. package/dist/services/features/telegram-mcp/gateway-rmq.service.js +294 -0
  31. package/dist/services/features/telegram-mcp/gateway-socket.service.js +1463 -0
  32. package/dist/services/features/telegram-mcp/gateway.service.js +1141 -0
  33. package/dist/services/features/telegram-mcp/inbox.service.js +33 -0
  34. package/dist/services/features/telegram-mcp/mcp-http.service.js +76 -0
  35. package/dist/services/features/telegram-mcp/mcp-server.service.js +127 -0
  36. package/dist/services/features/telegram-mcp/notify.service.js +33 -0
  37. package/dist/services/features/telegram-mcp/pair.service.js +33 -0
  38. package/dist/services/features/telegram-mcp/runtime.service.js +36 -0
  39. package/dist/services/features/telegram-mcp/session-context.service.js +33 -0
  40. package/dist/services/features/telegram-mcp/src/app/bootstrap/runtime.js +103 -0
  41. package/dist/services/features/telegram-mcp/src/app/config/env.js +317 -0
  42. package/dist/services/features/telegram-mcp/src/app/http.js +774 -0
  43. package/dist/services/features/telegram-mcp/src/app/index.js +2 -0
  44. package/dist/services/features/telegram-mcp/src/app/providers/mcp/server.js +13 -0
  45. package/dist/services/features/telegram-mcp/src/app/providers/redis/client.js +18 -0
  46. package/dist/services/features/telegram-mcp/src/app/webapp/assets.js +740 -0
  47. package/dist/services/features/telegram-mcp/src/app/webapp/auth.js +267 -0
  48. package/dist/services/features/telegram-mcp/src/app/webapp/relay.js +69 -0
  49. package/dist/services/features/telegram-mcp/src/app/webapp/tmux.js +9 -0
  50. package/dist/services/features/telegram-mcp/src/entities/auth/model/types.js +2 -0
  51. package/dist/services/features/telegram-mcp/src/entities/browser/model/types.js +2 -0
  52. package/dist/services/features/telegram-mcp/src/entities/collaboration/model/types.js +2 -0
  53. package/dist/services/features/telegram-mcp/src/entities/inbox/model/types.js +2 -0
  54. package/dist/services/features/telegram-mcp/src/entities/request/model/schema.js +545 -0
  55. package/dist/services/features/telegram-mcp/src/entities/request/model/types.js +2 -0
  56. package/dist/services/features/telegram-mcp/src/entities/session/model/types.js +2 -0
  57. package/dist/services/features/telegram-mcp/src/features/ask-user/model/askUserTelegram.js +33 -0
  58. package/dist/services/features/telegram-mcp/src/features/browser/model/browserClearLogsTool.js +28 -0
  59. package/dist/services/features/telegram-mcp/src/features/browser/model/browserClickTool.js +28 -0
  60. package/dist/services/features/telegram-mcp/src/features/browser/model/browserCloseTool.js +28 -0
  61. package/dist/services/features/telegram-mcp/src/features/browser/model/browserComputedStyleTool.js +28 -0
  62. package/dist/services/features/telegram-mcp/src/features/browser/model/browserConsoleTool.js +28 -0
  63. package/dist/services/features/telegram-mcp/src/features/browser/model/browserDomTool.js +28 -0
  64. package/dist/services/features/telegram-mcp/src/features/browser/model/browserErrorsTool.js +28 -0
  65. package/dist/services/features/telegram-mcp/src/features/browser/model/browserFillTool.js +28 -0
  66. package/dist/services/features/telegram-mcp/src/features/browser/model/browserNetworkFailuresTool.js +28 -0
  67. package/dist/services/features/telegram-mcp/src/features/browser/model/browserOpenTool.js +33 -0
  68. package/dist/services/features/telegram-mcp/src/features/browser/model/browserPressTool.js +28 -0
  69. package/dist/services/features/telegram-mcp/src/features/browser/model/browserReloadTool.js +28 -0
  70. package/dist/services/features/telegram-mcp/src/features/browser/model/browserScreenshotTool.js +28 -0
  71. package/dist/services/features/telegram-mcp/src/features/browser/model/browserService.js +689 -0
  72. package/dist/services/features/telegram-mcp/src/features/browser/model/browserWaitForTool.js +28 -0
  73. package/dist/services/features/telegram-mcp/src/features/browser/model/browserWaitForUrlTool.js +28 -0
  74. package/dist/services/features/telegram-mcp/src/features/collaboration/model/backend.js +2 -0
  75. package/dist/services/features/telegram-mcp/src/features/collaboration/model/collaborationService.js +26 -0
  76. package/dist/services/features/telegram-mcp/src/features/collaboration/model/localCollaborationBackend.js +390 -0
  77. package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileService.js +102 -0
  78. package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileTool.js +33 -0
  79. package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerNoteTool.js +33 -0
  80. package/dist/services/features/telegram-mcp/src/features/distributed-client/model/gatewayCollaborationBackend.js +69 -0
  81. package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/gatewayHttpService.js +657 -0
  82. package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/gatewayReplyResolution.js +17 -0
  83. package/dist/services/features/telegram-mcp/src/features/inbox/model/deleteTelegramInboxMessageTool.js +33 -0
  84. package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxCountTool.js +33 -0
  85. package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxTool.js +33 -0
  86. package/dist/services/features/telegram-mcp/src/features/inbox/model/inboxService.js +77 -0
  87. package/dist/services/features/telegram-mcp/src/features/notify/model/notifyService.js +93 -0
  88. package/dist/services/features/telegram-mcp/src/features/notify/model/notifyTelegramTool.js +33 -0
  89. package/dist/services/features/telegram-mcp/src/features/pair-session/model/clearSessionPairingTool.js +33 -0
  90. package/dist/services/features/telegram-mcp/src/features/pair-session/model/createSessionPairCodeTool.js +33 -0
  91. package/dist/services/features/telegram-mcp/src/features/pair-session/model/generatePairCode.js +202 -0
  92. package/dist/services/features/telegram-mcp/src/features/session-context/model/clearSessionContextTool.js +33 -0
  93. package/dist/services/features/telegram-mcp/src/features/session-context/model/getSessionContextTool.js +33 -0
  94. package/dist/services/features/telegram-mcp/src/features/session-context/model/getTmuxTargetTool.js +33 -0
  95. package/dist/services/features/telegram-mcp/src/features/session-context/model/renameSessionTool.js +33 -0
  96. package/dist/services/features/telegram-mcp/src/features/session-context/model/sessionContextService.js +409 -0
  97. package/dist/services/features/telegram-mcp/src/features/session-context/model/setSessionContextTool.js +33 -0
  98. package/dist/services/features/telegram-mcp/src/features/session-context/model/setTmuxTargetTool.js +33 -0
  99. package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownService.js +123 -0
  100. package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownTool.js +33 -0
  101. package/dist/services/features/telegram-mcp/src/processes/human-approval/model/orchestrator.js +243 -0
  102. package/dist/services/features/telegram-mcp/src/shared/api/storage/contract.js +2 -0
  103. package/dist/services/features/telegram-mcp/src/shared/api/tool-registry/registry.js +8 -0
  104. package/dist/services/features/telegram-mcp/src/shared/api/tool-registry/types.js +2 -0
  105. package/dist/services/features/telegram-mcp/src/shared/api/transport/contract.js +2 -0
  106. package/dist/services/features/telegram-mcp/src/shared/integrations/object-storage/minioExchangeStore.js +86 -0
  107. package/dist/services/features/telegram-mcp/src/shared/integrations/redis/stateStore.js +436 -0
  108. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/collabSemantics.js +21 -0
  109. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/collabUi.js +87 -0
  110. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/messageFormat.js +60 -0
  111. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/proxyFetch.js +46 -0
  112. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transport.js +6534 -0
  113. package/dist/services/features/telegram-mcp/src/shared/integrations/tmux/client.js +280 -0
  114. package/dist/services/features/telegram-mcp/src/shared/lib/ids/ids.js +34 -0
  115. package/dist/services/features/telegram-mcp/src/shared/lib/logger/logger.js +68 -0
  116. package/dist/services/features/telegram-mcp/src/shared/lib/project-identity/projectIdentity.js +223 -0
  117. package/dist/services/features/telegram-mcp/src/shared/lib/redact-secrets/redactSecrets.js +22 -0
  118. package/dist/services/features/telegram-mcp/src/shared/lib/truncate/truncate.js +12 -0
  119. package/dist/services/features/telegram-mcp/src/shared/lib/version/versionHandshake.js +124 -0
  120. package/dist/services/features/telegram-mcp/src/shared/types/common.js +2 -0
  121. package/dist/services/features/telegram-mcp/standalone-http.service.js +113 -0
  122. package/dist/services/features/telegram-mcp/tools-sync.service.js +33 -0
  123. package/package.json +110 -0
  124. package/scripts/postinstall.js +60 -0
@@ -0,0 +1,545 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.browserClearLogsOutputSchema = exports.browserClearLogsInputSchema = exports.browserNetworkFailuresOutputSchema = exports.browserNetworkFailuresInputSchema = exports.browserErrorsOutputSchema = exports.browserErrorsInputSchema = exports.browserConsoleOutputSchema = exports.browserConsoleInputSchema = exports.browserWaitForUrlOutputSchema = exports.browserWaitForUrlInputSchema = exports.browserWaitForOutputSchema = exports.browserWaitForInputSchema = exports.browserPressOutputSchema = exports.browserPressInputSchema = exports.browserFillOutputSchema = exports.browserFillInputSchema = exports.browserClickOutputSchema = exports.browserClickInputSchema = exports.browserReloadOutputSchema = exports.browserReloadInputSchema = exports.browserOpenOutputSchema = exports.browserOpenInputSchema = exports.getTmuxTargetOutputSchema = exports.getTmuxTargetInputSchema = exports.setTmuxTargetOutputSchema = exports.setTmuxTargetInputSchema = exports.clearSessionPairingOutputSchema = exports.clearSessionPairingInputSchema = exports.clearSessionContextOutputSchema = exports.clearSessionContextInputSchema = exports.getSessionContextOutputSchema = exports.getSessionContextInputSchema = exports.setSessionContextOutputSchema = exports.renameSessionOutputSchema = exports.renameSessionInputSchema = exports.setSessionContextInputSchema = exports.createSessionPairCodeOutputSchema = exports.createSessionPairCodeInputSchema = exports.deleteTelegramInboxMessageOutputSchema = exports.deleteTelegramInboxMessageInputSchema = exports.getTelegramInboxCountOutputSchema = exports.getTelegramInboxCountInputSchema = exports.getTelegramInboxOutputSchema = exports.getTelegramInboxInputSchema = exports.refreshToolsMarkdownOutputSchema = exports.refreshToolsMarkdownInputSchema = exports.notifyTelegramOutputSchema = exports.notifyTelegramInputSchema = exports.askUserTelegramOutputSchema = exports.askUserTelegramInputSchema = void 0;
37
+ exports.sendPartnerNoteOutputSchema = exports.sendPartnerFileInputSchema = exports.sendPartnerNoteInputSchema = exports.browserCloseOutputSchema = exports.browserCloseInputSchema = exports.browserScreenshotOutputSchema = exports.browserScreenshotInputSchema = exports.browserComputedStyleOutputSchema = exports.browserComputedStyleInputSchema = exports.browserDomOutputSchema = exports.browserDomInputSchema = void 0;
38
+ const z = __importStar(require("zod/v4"));
39
+ const partnerNoteKindSchema = z.enum([
40
+ "share",
41
+ "question",
42
+ "reply",
43
+ "request",
44
+ "handoff",
45
+ ]);
46
+ exports.askUserTelegramInputSchema = z.object({
47
+ question: z.string().trim().min(1),
48
+ task: z.string().trim().min(1).optional(),
49
+ context: z.string().trim().min(1).optional(),
50
+ affected_files: z.array(z.string().trim().min(1)).optional(),
51
+ options: z.array(z.string().trim().min(1)).optional(),
52
+ recommended_option: z.string().trim().min(1).optional(),
53
+ risk_level: z.enum(["low", "medium", "high"]).optional(),
54
+ timeout_seconds: z.number().int().positive().optional(),
55
+ fallback_if_timeout: z.string().trim().min(1).optional(),
56
+ session_id: z.string().trim().min(1).optional(),
57
+ use_saved_context: z.boolean().optional(),
58
+ });
59
+ exports.askUserTelegramOutputSchema = z.object({
60
+ request_id: z.string(),
61
+ answer: z.string().nullable(),
62
+ timed_out: z.boolean(),
63
+ received_at: z.string().optional(),
64
+ fallback_used: z.string().optional(),
65
+ });
66
+ exports.notifyTelegramInputSchema = z.object({
67
+ session_id: z.string().trim().min(1).optional(),
68
+ message: z.string().trim().min(1),
69
+ task: z.string().trim().min(1).optional(),
70
+ context: z.string().trim().min(1).optional(),
71
+ risk_level: z.enum(["low", "medium", "high"]).optional(),
72
+ use_saved_context: z.boolean().optional(),
73
+ });
74
+ exports.notifyTelegramOutputSchema = z.object({
75
+ sent: z.boolean(),
76
+ message_id: z.number().int().positive().optional(),
77
+ });
78
+ exports.refreshToolsMarkdownInputSchema = z.object({
79
+ session_id: z.string().trim().min(1).optional(),
80
+ cwd: z.string().trim().min(1).optional(),
81
+ save_locally: z.boolean().optional(),
82
+ });
83
+ exports.refreshToolsMarkdownOutputSchema = z.object({
84
+ source: z.enum(["gateway", "local"]),
85
+ saved: z.boolean(),
86
+ bytes: z.number().int().nonnegative(),
87
+ path: z.string().optional(),
88
+ });
89
+ exports.getTelegramInboxInputSchema = z.object({
90
+ session_id: z.string().trim().min(1).optional(),
91
+ });
92
+ exports.getTelegramInboxOutputSchema = z.object({
93
+ session_id: z.string(),
94
+ total: z.number().int().nonnegative(),
95
+ has_more: z.boolean(),
96
+ messages: z.array(z.object({
97
+ message_id: z.string(),
98
+ source: z.literal("telegram"),
99
+ message_kind: z.enum(["human", "system"]),
100
+ telegram_chat_id: z.number(),
101
+ telegram_user_id: z.number(),
102
+ telegram_message_id: z.number().int().nonnegative(),
103
+ text: z.string(),
104
+ attachments: z.array(z.string()).optional(),
105
+ received_at: z.string(),
106
+ })),
107
+ });
108
+ exports.getTelegramInboxCountInputSchema = z.object({
109
+ session_id: z.string().trim().min(1).optional(),
110
+ });
111
+ exports.getTelegramInboxCountOutputSchema = z.object({
112
+ session_id: z.string(),
113
+ total: z.number().int().nonnegative(),
114
+ });
115
+ exports.deleteTelegramInboxMessageInputSchema = z.object({
116
+ session_id: z.string().trim().min(1).optional(),
117
+ message_id: z.string().trim().min(1),
118
+ });
119
+ exports.deleteTelegramInboxMessageOutputSchema = z.object({
120
+ deleted: z.boolean(),
121
+ session_id: z.string(),
122
+ message_id: z.string(),
123
+ });
124
+ exports.createSessionPairCodeInputSchema = z.object({
125
+ session_id: z.string().trim().min(1).optional(),
126
+ session_label: z.string().trim().min(1).optional(),
127
+ cwd: z.string().trim().min(1).optional(),
128
+ expires_in_seconds: z.number().int().positive().optional(),
129
+ tmux_session_name: z.string().trim().min(1).max(200).optional(),
130
+ tmux_window_name: z.string().trim().min(1).max(200).optional(),
131
+ tmux_window_index: z.number().int().nonnegative().optional(),
132
+ tmux_pane_id: z.string().trim().min(1).max(200).optional(),
133
+ tmux_pane_index: z.number().int().nonnegative().optional(),
134
+ });
135
+ exports.createSessionPairCodeOutputSchema = z.object({
136
+ session_id: z.string(),
137
+ code: z.string(),
138
+ expires_at: z.string(),
139
+ status: z.literal("pending"),
140
+ status_message: z.string(),
141
+ telegram_link_hint: z.string().optional(),
142
+ });
143
+ exports.setSessionContextInputSchema = z.object({
144
+ session_id: z.string().trim().min(1).optional(),
145
+ session_label: z.string().trim().min(1).optional(),
146
+ task: z.string().trim().min(1).optional(),
147
+ summary: z.string().trim().min(1),
148
+ files: z.array(z.string().trim().min(1)).optional(),
149
+ decisions: z.array(z.string().trim().min(1)).optional(),
150
+ risks: z.array(z.string().trim().min(1)).optional(),
151
+ });
152
+ exports.renameSessionInputSchema = z.object({
153
+ session_id: z.string().trim().min(1).optional(),
154
+ title: z.string().trim().min(1),
155
+ });
156
+ exports.renameSessionOutputSchema = z.object({
157
+ renamed: z.boolean(),
158
+ session_id: z.string(),
159
+ session_label: z.string(),
160
+ updated_at: z.string(),
161
+ });
162
+ exports.setSessionContextOutputSchema = z.object({
163
+ saved: z.boolean(),
164
+ session_id: z.string(),
165
+ updated_at: z.string(),
166
+ has_binding: z.boolean(),
167
+ });
168
+ exports.getSessionContextInputSchema = z.object({
169
+ session_id: z.string().trim().min(1).optional(),
170
+ });
171
+ exports.getSessionContextOutputSchema = z.object({
172
+ session_id: z.string(),
173
+ exists: z.boolean(),
174
+ has_binding: z.boolean(),
175
+ status_message: z.string(),
176
+ context: z
177
+ .object({
178
+ session_label: z.string().optional(),
179
+ cwd: z.string().optional(),
180
+ task: z.string().optional(),
181
+ summary: z.string().optional(),
182
+ files: z.array(z.string()).optional(),
183
+ decisions: z.array(z.string()).optional(),
184
+ risks: z.array(z.string()).optional(),
185
+ updated_at: z.string().optional(),
186
+ })
187
+ .optional(),
188
+ binding: z
189
+ .object({
190
+ telegram_chat_id: z.number(),
191
+ telegram_user_id: z.number(),
192
+ linked_at: z.string(),
193
+ })
194
+ .optional(),
195
+ tmux: z
196
+ .object({
197
+ configured: z.boolean(),
198
+ tmux_session_name: z.string().optional(),
199
+ tmux_window_name: z.string().optional(),
200
+ tmux_window_index: z.number().optional(),
201
+ tmux_pane_id: z.string().optional(),
202
+ tmux_pane_index: z.number().optional(),
203
+ tmux_target: z.string().optional(),
204
+ last_nudge_at: z.string().optional(),
205
+ })
206
+ .optional(),
207
+ });
208
+ exports.clearSessionContextInputSchema = z.object({
209
+ session_id: z.string().trim().min(1).optional(),
210
+ });
211
+ exports.clearSessionContextOutputSchema = z.object({
212
+ cleared: z.boolean(),
213
+ session_id: z.string(),
214
+ cleared_pairing: z.boolean(),
215
+ });
216
+ exports.clearSessionPairingInputSchema = z.object({
217
+ session_id: z.string().trim().min(1).optional(),
218
+ });
219
+ exports.clearSessionPairingOutputSchema = z.object({
220
+ cleared: z.boolean(),
221
+ session_id: z.string(),
222
+ });
223
+ exports.setTmuxTargetInputSchema = z.object({
224
+ session_id: z.string().trim().min(1).optional(),
225
+ tmux_session_name: z.string().trim().min(1).max(200).optional(),
226
+ tmux_window_name: z.string().trim().min(1).max(200).optional(),
227
+ tmux_window_index: z.number().int().nonnegative().optional(),
228
+ tmux_pane_id: z.string().trim().min(1).max(200).optional(),
229
+ tmux_pane_index: z.number().int().nonnegative().optional(),
230
+ tmux_target: z.string().trim().min(1).max(200),
231
+ });
232
+ exports.setTmuxTargetOutputSchema = z.object({
233
+ session_id: z.string(),
234
+ tmux_target: z.string(),
235
+ tmux_session_name: z.string().optional(),
236
+ tmux_window_name: z.string().optional(),
237
+ tmux_window_index: z.number().optional(),
238
+ tmux_pane_id: z.string().optional(),
239
+ tmux_pane_index: z.number().optional(),
240
+ status_message: z.string(),
241
+ });
242
+ exports.getTmuxTargetInputSchema = z.object({
243
+ session_id: z.string().trim().min(1).optional(),
244
+ });
245
+ exports.getTmuxTargetOutputSchema = z.object({
246
+ session_id: z.string(),
247
+ configured: z.boolean(),
248
+ tmux_target: z.string().optional(),
249
+ tmux_session_name: z.string().optional(),
250
+ tmux_window_name: z.string().optional(),
251
+ tmux_window_index: z.number().optional(),
252
+ tmux_pane_id: z.string().optional(),
253
+ tmux_pane_index: z.number().optional(),
254
+ last_nudge_at: z.string().optional(),
255
+ status_message: z.string(),
256
+ });
257
+ exports.browserOpenInputSchema = z.object({
258
+ session_id: z.string().trim().min(1).optional(),
259
+ url: z.string().trim().min(1),
260
+ wait_until: z
261
+ .enum(["load", "domcontentloaded", "networkidle", "commit"])
262
+ .optional(),
263
+ reset_context: z.boolean().optional(),
264
+ });
265
+ exports.browserOpenOutputSchema = z.object({
266
+ session_id: z.string(),
267
+ opened: z.boolean(),
268
+ created_context: z.boolean(),
269
+ url: z.string().url(),
270
+ title: z.string().optional(),
271
+ });
272
+ exports.browserReloadInputSchema = z.object({
273
+ session_id: z.string().trim().min(1).optional(),
274
+ wait_until: z
275
+ .enum(["load", "domcontentloaded", "networkidle", "commit"])
276
+ .optional(),
277
+ });
278
+ exports.browserReloadOutputSchema = z.object({
279
+ session_id: z.string(),
280
+ reloaded: z.boolean(),
281
+ url: z.string().url(),
282
+ title: z.string().optional(),
283
+ });
284
+ const browserLocatorInputShape = {
285
+ session_id: z.string().trim().min(1).optional(),
286
+ ai_tag: z.string().trim().min(1).optional(),
287
+ selector: z.string().trim().min(1).optional(),
288
+ text: z.string().trim().min(1).optional(),
289
+ exact: z.boolean().optional(),
290
+ timeout_ms: z.number().int().positive().max(120000).optional(),
291
+ };
292
+ exports.browserClickInputSchema = z
293
+ .object(browserLocatorInputShape)
294
+ .refine((input) => Boolean(input.ai_tag || input.selector || input.text), {
295
+ message: "Provide ai_tag, selector, or text.",
296
+ path: ["ai_tag"],
297
+ });
298
+ exports.browserClickOutputSchema = z.object({
299
+ session_id: z.string(),
300
+ clicked: z.boolean(),
301
+ ai_tag: z.string().optional(),
302
+ selector: z.string().optional(),
303
+ text: z.string().optional(),
304
+ url: z.string().url(),
305
+ title: z.string().optional(),
306
+ });
307
+ exports.browserFillInputSchema = z
308
+ .object({
309
+ ...browserLocatorInputShape,
310
+ value: z.string(),
311
+ })
312
+ .refine((input) => Boolean(input.ai_tag || input.selector || input.text), {
313
+ message: "Provide ai_tag, selector, or text.",
314
+ path: ["ai_tag"],
315
+ });
316
+ exports.browserFillOutputSchema = z.object({
317
+ session_id: z.string(),
318
+ filled: z.boolean(),
319
+ ai_tag: z.string().optional(),
320
+ selector: z.string().optional(),
321
+ text: z.string().optional(),
322
+ value_length: z.number().int().nonnegative(),
323
+ url: z.string().url(),
324
+ title: z.string().optional(),
325
+ });
326
+ exports.browserPressInputSchema = z.object({
327
+ ...browserLocatorInputShape,
328
+ key: z.string().trim().min(1),
329
+ });
330
+ exports.browserPressOutputSchema = z.object({
331
+ session_id: z.string(),
332
+ pressed: z.boolean(),
333
+ key: z.string(),
334
+ ai_tag: z.string().optional(),
335
+ selector: z.string().optional(),
336
+ text: z.string().optional(),
337
+ url: z.string().url(),
338
+ title: z.string().optional(),
339
+ });
340
+ exports.browserWaitForInputSchema = z
341
+ .object({
342
+ ...browserLocatorInputShape,
343
+ state: z.enum(["attached", "detached", "visible", "hidden"]).optional(),
344
+ })
345
+ .refine((input) => Boolean(input.ai_tag || input.selector || input.text), {
346
+ message: "Provide ai_tag, selector, or text.",
347
+ path: ["ai_tag"],
348
+ });
349
+ exports.browserWaitForOutputSchema = z.object({
350
+ session_id: z.string(),
351
+ waited: z.boolean(),
352
+ state: z.enum(["attached", "detached", "visible", "hidden"]),
353
+ ai_tag: z.string().optional(),
354
+ selector: z.string().optional(),
355
+ text: z.string().optional(),
356
+ url: z.string().url(),
357
+ title: z.string().optional(),
358
+ });
359
+ exports.browserWaitForUrlInputSchema = z
360
+ .object({
361
+ session_id: z.string().trim().min(1).optional(),
362
+ url: z.string().trim().min(1).optional(),
363
+ url_contains: z.string().trim().min(1).optional(),
364
+ timeout_ms: z.number().int().positive().max(120000).optional(),
365
+ })
366
+ .refine((input) => Boolean(input.url || input.url_contains), {
367
+ message: "Provide url or url_contains.",
368
+ path: ["url"],
369
+ });
370
+ exports.browserWaitForUrlOutputSchema = z.object({
371
+ session_id: z.string(),
372
+ waited: z.boolean(),
373
+ matched: z.enum(["url", "url_contains"]),
374
+ url: z.string().optional(),
375
+ url_contains: z.string().optional(),
376
+ current_url: z.string().url(),
377
+ title: z.string().optional(),
378
+ });
379
+ exports.browserConsoleInputSchema = z.object({
380
+ session_id: z.string().trim().min(1).optional(),
381
+ limit: z.number().int().positive().max(500).optional(),
382
+ });
383
+ exports.browserConsoleOutputSchema = z.object({
384
+ session_id: z.string(),
385
+ total: z.number().int().nonnegative(),
386
+ messages: z.array(z.object({
387
+ type: z.string(),
388
+ text: z.string(),
389
+ location: z.string().optional(),
390
+ timestamp: z.string(),
391
+ })),
392
+ });
393
+ exports.browserErrorsInputSchema = z.object({
394
+ session_id: z.string().trim().min(1).optional(),
395
+ limit: z.number().int().positive().max(500).optional(),
396
+ });
397
+ exports.browserErrorsOutputSchema = z.object({
398
+ session_id: z.string(),
399
+ total: z.number().int().nonnegative(),
400
+ errors: z.array(z.object({
401
+ message: z.string(),
402
+ stack: z.string().optional(),
403
+ timestamp: z.string(),
404
+ })),
405
+ });
406
+ exports.browserNetworkFailuresInputSchema = z.object({
407
+ session_id: z.string().trim().min(1).optional(),
408
+ limit: z.number().int().positive().max(500).optional(),
409
+ });
410
+ exports.browserNetworkFailuresOutputSchema = z.object({
411
+ session_id: z.string(),
412
+ total: z.number().int().nonnegative(),
413
+ failures: z.array(z.object({
414
+ url: z.string().url(),
415
+ method: z.string(),
416
+ status: z.number().int().optional(),
417
+ error_text: z.string().optional(),
418
+ resource_type: z.string().optional(),
419
+ timestamp: z.string(),
420
+ })),
421
+ });
422
+ exports.browserClearLogsInputSchema = z.object({
423
+ session_id: z.string().trim().min(1).optional(),
424
+ });
425
+ exports.browserClearLogsOutputSchema = z.object({
426
+ session_id: z.string(),
427
+ cleared: z.boolean(),
428
+ console_messages_cleared: z.number().int().nonnegative(),
429
+ page_errors_cleared: z.number().int().nonnegative(),
430
+ network_failures_cleared: z.number().int().nonnegative(),
431
+ });
432
+ exports.browserDomInputSchema = z.object({
433
+ session_id: z.string().trim().min(1).optional(),
434
+ selector: z.string().trim().min(1).optional(),
435
+ include_html: z.boolean().optional(),
436
+ include_text: z.boolean().optional(),
437
+ });
438
+ exports.browserDomOutputSchema = z.object({
439
+ session_id: z.string(),
440
+ selector: z.string(),
441
+ found: z.boolean(),
442
+ url: z.string().url().optional(),
443
+ title: z.string().optional(),
444
+ outer_html: z.string().optional(),
445
+ text_content: z.string().optional(),
446
+ visible: z.boolean().optional(),
447
+ attributes: z.record(z.string(), z.string()).optional(),
448
+ });
449
+ exports.browserComputedStyleInputSchema = z.object({
450
+ session_id: z.string().trim().min(1).optional(),
451
+ selector: z.string().trim().min(1),
452
+ properties: z.array(z.string().trim().min(1)).optional(),
453
+ });
454
+ exports.browserComputedStyleOutputSchema = z.object({
455
+ session_id: z.string(),
456
+ selector: z.string(),
457
+ found: z.boolean(),
458
+ url: z.string().url().optional(),
459
+ title: z.string().optional(),
460
+ visible: z.boolean().optional(),
461
+ styles: z.record(z.string(), z.string()).optional(),
462
+ box: z
463
+ .object({
464
+ x: z.number(),
465
+ y: z.number(),
466
+ width: z.number(),
467
+ height: z.number(),
468
+ })
469
+ .optional(),
470
+ });
471
+ exports.browserScreenshotInputSchema = z.object({
472
+ session_id: z.string().trim().min(1).optional(),
473
+ selector: z.string().trim().min(1).optional(),
474
+ full_page: z.boolean().optional(),
475
+ file_name: z.string().trim().min(1).optional(),
476
+ send_to_telegram: z.boolean().optional(),
477
+ caption: z.string().trim().min(1).optional(),
478
+ });
479
+ exports.browserScreenshotOutputSchema = z.object({
480
+ session_id: z.string(),
481
+ file_path: z.string(),
482
+ workspace_dir: z.string(),
483
+ exchange_dir: z.string(),
484
+ telegram_message_id: z.number().int().positive().optional(),
485
+ url: z.string().url().optional(),
486
+ title: z.string().optional(),
487
+ });
488
+ exports.browserCloseInputSchema = z.object({
489
+ session_id: z.string().trim().min(1).optional(),
490
+ });
491
+ exports.browserCloseOutputSchema = z.object({
492
+ session_id: z.string(),
493
+ closed: z.boolean(),
494
+ });
495
+ exports.sendPartnerNoteInputSchema = z.object({
496
+ session_id: z.string().trim().min(1).optional(),
497
+ target_session_id: z.string().trim().min(1).optional(),
498
+ project_uuid: z.string().trim().min(1).optional(),
499
+ kind: partnerNoteKindSchema,
500
+ summary: z.string().trim().min(1),
501
+ message: z.string().trim().min(1),
502
+ expected_reply: z.string().trim().min(1).optional(),
503
+ requires_reply: z.boolean().optional(),
504
+ in_reply_to: z.string().trim().min(1).optional(),
505
+ artifacts: z.array(z.string().trim().min(1)).optional(),
506
+ artifact_refs: z
507
+ .array(z.object({
508
+ file_path: z.string().trim().min(1),
509
+ relative_path: z.string().trim().min(1).optional(),
510
+ original_name: z.string().trim().min(1).optional(),
511
+ mime_type: z.string().trim().min(1).optional(),
512
+ size_bytes: z.number().int().nonnegative().optional(),
513
+ storage_ref: z.string().trim().min(1).optional(),
514
+ content_base64: z.string().trim().min(1).optional(),
515
+ }))
516
+ .optional(),
517
+ });
518
+ exports.sendPartnerFileInputSchema = z.object({
519
+ session_id: z.string().trim().min(1).optional(),
520
+ target_session_id: z.string().trim().min(1).optional(),
521
+ project_uuid: z.string().trim().min(1).optional(),
522
+ cwd: z.string().trim().min(1).optional(),
523
+ file_path: z.string().trim().min(1),
524
+ kind: partnerNoteKindSchema.optional(),
525
+ summary: z.string().trim().min(1).optional(),
526
+ message: z.string().trim().min(1).optional(),
527
+ expected_reply: z.string().trim().min(1).optional(),
528
+ requires_reply: z.boolean().optional(),
529
+ in_reply_to: z.string().trim().min(1).optional(),
530
+ });
531
+ exports.sendPartnerNoteOutputSchema = z.object({
532
+ session_id: z.string(),
533
+ partner_session_id: z.string(),
534
+ project_name: z.string().optional(),
535
+ target_actor_label: z.string().optional(),
536
+ target_session_label: z.string().optional(),
537
+ kind: partnerNoteKindSchema,
538
+ share_id: z.string(),
539
+ delivery_status: z.enum(["queued", "delivered"]),
540
+ note_path: z.string(),
541
+ share_index_path: z.string(),
542
+ copied_artifacts: z.array(z.string()),
543
+ inbox_message_id: z.string(),
544
+ requires_reply: z.boolean(),
545
+ });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AskUserTelegramTool = void 0;
4
+ const schema_1 = require("../../../entities/request/model/schema");
5
+ function createContent(output) {
6
+ return [
7
+ {
8
+ type: "text",
9
+ text: JSON.stringify(output, null, 2),
10
+ },
11
+ ];
12
+ }
13
+ class AskUserTelegramTool {
14
+ orchestrator;
15
+ constructor(orchestrator) {
16
+ this.orchestrator = orchestrator;
17
+ }
18
+ register(server) {
19
+ server.registerTool("ask_user_telegram", {
20
+ title: "Ask User Telegram",
21
+ description: "Send a clarification request to the Telegram user linked to the provided session and wait for a reply. Pass session_id explicitly after pairing; do not rely on implicit defaults unless cwd is also correct for this agent workspace.",
22
+ inputSchema: schema_1.askUserTelegramInputSchema,
23
+ outputSchema: schema_1.askUserTelegramOutputSchema,
24
+ }, async (args) => {
25
+ const output = await this.orchestrator.submit(args);
26
+ return {
27
+ content: createContent(output),
28
+ structuredContent: output,
29
+ };
30
+ });
31
+ }
32
+ }
33
+ exports.AskUserTelegramTool = AskUserTelegramTool;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BrowserClearLogsTool = void 0;
4
+ const schema_1 = require("../../../entities/request/model/schema");
5
+ function createContent(output) {
6
+ return [{ type: "text", text: JSON.stringify(output, null, 2) }];
7
+ }
8
+ class BrowserClearLogsTool {
9
+ browserService;
10
+ constructor(browserService) {
11
+ this.browserService = browserService;
12
+ }
13
+ register(server) {
14
+ server.registerTool("browser_clear_logs", {
15
+ title: "Browser Clear Logs",
16
+ description: "Clear accumulated console, page error, and network failure buffers for the current session page.",
17
+ inputSchema: schema_1.browserClearLogsInputSchema,
18
+ outputSchema: schema_1.browserClearLogsOutputSchema,
19
+ }, async (args) => {
20
+ const output = await this.browserService.clearLogs(args);
21
+ return {
22
+ content: createContent(output),
23
+ structuredContent: output,
24
+ };
25
+ });
26
+ }
27
+ }
28
+ exports.BrowserClearLogsTool = BrowserClearLogsTool;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BrowserClickTool = void 0;
4
+ const schema_1 = require("../../../entities/request/model/schema");
5
+ function createContent(output) {
6
+ return [{ type: "text", text: JSON.stringify(output, null, 2) }];
7
+ }
8
+ class BrowserClickTool {
9
+ browserService;
10
+ constructor(browserService) {
11
+ this.browserService = browserService;
12
+ }
13
+ register(server) {
14
+ server.registerTool("browser_click", {
15
+ title: "Browser Click",
16
+ description: "Click an element in the session browser page by CSS selector or visible text.",
17
+ inputSchema: schema_1.browserClickInputSchema,
18
+ outputSchema: schema_1.browserClickOutputSchema,
19
+ }, async (args) => {
20
+ const output = await this.browserService.click(args);
21
+ return {
22
+ content: createContent(output),
23
+ structuredContent: output,
24
+ };
25
+ });
26
+ }
27
+ }
28
+ exports.BrowserClickTool = BrowserClickTool;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BrowserCloseTool = void 0;
4
+ const schema_1 = require("../../../entities/request/model/schema");
5
+ function createContent(output) {
6
+ return [{ type: "text", text: JSON.stringify(output, null, 2) }];
7
+ }
8
+ class BrowserCloseTool {
9
+ browserService;
10
+ constructor(browserService) {
11
+ this.browserService = browserService;
12
+ }
13
+ register(server) {
14
+ server.registerTool("browser_close", {
15
+ title: "Browser Close",
16
+ description: "Close the Playwright browser context attached to the current session.",
17
+ inputSchema: schema_1.browserCloseInputSchema,
18
+ outputSchema: schema_1.browserCloseOutputSchema,
19
+ }, async (args) => {
20
+ const output = await this.browserService.close(args);
21
+ return {
22
+ content: createContent(output),
23
+ structuredContent: output,
24
+ };
25
+ });
26
+ }
27
+ }
28
+ exports.BrowserCloseTool = BrowserCloseTool;