@deadragdoll/tellymcp 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example.client +5 -1
- package/.env.example.gateway +16 -1
- package/CHANGELOG.md +30 -0
- package/README-ru.md +14 -0
- package/README.md +14 -0
- package/TOOLS.md +182 -10
- package/config/templates/env.both.template +15 -2
- package/config/templates/env.client.template +5 -2
- package/config/templates/env.gateway.template +15 -2
- package/dist/cli.js +28 -1
- package/dist/services/features/telegram-mcp/browser.service.js +18 -0
- package/dist/services/features/telegram-mcp/file-content.service.js +94 -0
- package/dist/services/features/telegram-mcp/gateway-delivery.service.js +5 -1
- package/dist/services/features/telegram-mcp/gateway-socket.service.js +43 -11
- package/dist/services/features/telegram-mcp/mcp-http.service.js +1 -0
- package/dist/services/features/telegram-mcp/mcp-server.service.js +18 -0
- package/dist/services/features/telegram-mcp/src/app/bootstrap/runtime.js +9 -1
- package/dist/services/features/telegram-mcp/src/app/config/env.js +119 -2
- package/dist/services/features/telegram-mcp/src/app/http.js +139 -99
- package/dist/services/features/telegram-mcp/src/app/oauthFacade.js +642 -0
- package/dist/services/features/telegram-mcp/src/app/webapp/assets.js +151 -170
- package/dist/services/features/telegram-mcp/src/app/webapp/auth.js +96 -99
- package/dist/services/features/telegram-mcp/src/entities/request/model/schema.js +62 -19
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserAttachActiveTabTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserAttachTabTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserDetachTabTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserListAttachedInstancesTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserListTabsTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserService.js +410 -27
- package/dist/services/features/telegram-mcp/src/features/browser-attach/model/browserRecordingBundle.js +37 -3
- package/dist/services/features/telegram-mcp/src/features/browser-attach/model/firefoxAttachRegistry.js +7 -6
- package/dist/services/features/telegram-mcp/src/features/browser-attach/model/firefoxAttachServer.js +214 -37
- package/dist/services/features/telegram-mcp/src/features/browser-attach/model/types.js +186 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/collaborationService.js +2 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileService.js +6 -3
- package/dist/services/features/telegram-mcp/src/features/distributed-client/model/gatewayClientAccess.js +4 -1
- package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/gatewayHttpService.js +33 -35
- package/dist/services/features/telegram-mcp/src/features/file-content/model/getFileListTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/file-content/model/getFileService.js +327 -0
- package/dist/services/features/telegram-mcp/src/features/file-content/model/getFileTool.js +81 -0
- package/dist/services/features/telegram-mcp/src/features/file-content/model/temporaryFileLinkStore.js +307 -0
- package/dist/services/features/telegram-mcp/src/features/file-content/model/workspaceFilePolicy.js +115 -0
- package/dist/services/features/telegram-mcp/src/features/notify/model/notifyService.js +5 -1
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transport.js +3 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportFileHandoffActions.js +6 -3
- package/dist/services/features/telegram-mcp/src/shared/integrations/terminal/client.js +29 -6
- package/dist/services/features/telegram-mcp/src/shared/integrations/terminal/ptyRegistry.js +100 -2
- package/dist/services/features/telegram-mcp/src/shared/lib/bodyLimits.js +63 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/gatewayAuth.js +13 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/time/localTimestamp.js +21 -0
- package/docs/CHAT_CONNECTOR.md +134 -0
- package/docs/STANDALONE-ru.md +13 -0
- package/docs/STANDALONE.md +13 -0
- package/package.json +5 -3
- package/packages/chrome-attach-extension/dist/background.js +572 -163
- package/packages/chrome-attach-extension/dist/manifest.json +2 -1
- package/packages/chrome-attach-extension/dist/options.js +15 -2
- package/packages/chrome-attach-extension/dist/recorder-content.js +14 -1
- package/packages/chrome-attach-extension/dist/recorder-page.js +34 -18
- package/packages/firefox-attach-extension/dist/background.js +413 -33
- package/packages/firefox-attach-extension/dist/manifest.json +0 -12
- package/packages/firefox-attach-extension/dist/options.js +14 -1
- package/packages/firefox-attach-extension/dist/recorder-content.js +14 -1
- package/packages/firefox-attach-extension/dist/recorder-page.js +34 -18
|
@@ -4,6 +4,19 @@
|
|
|
4
4
|
}
|
|
5
5
|
window.__tellyRecorderContentInstalled = true;
|
|
6
6
|
|
|
7
|
+
function padNumber(value, length = 2) {
|
|
8
|
+
return String(value).padStart(length, "0");
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function formatLocalTimestamp(date = new Date()) {
|
|
12
|
+
return `${date.getFullYear()}-${padNumber(date.getMonth() + 1)}-${padNumber(date.getDate())}T${padNumber(
|
|
13
|
+
date.getHours(),
|
|
14
|
+
)}:${padNumber(date.getMinutes())}:${padNumber(date.getSeconds())}.${padNumber(
|
|
15
|
+
date.getMilliseconds(),
|
|
16
|
+
3,
|
|
17
|
+
)}`;
|
|
18
|
+
}
|
|
19
|
+
|
|
7
20
|
function emit(payload) {
|
|
8
21
|
try {
|
|
9
22
|
browser.runtime.sendMessage({
|
|
@@ -23,7 +36,7 @@
|
|
|
23
36
|
kind: "page_snapshot",
|
|
24
37
|
source: "content",
|
|
25
38
|
reason,
|
|
26
|
-
at: new Date()
|
|
39
|
+
at: formatLocalTimestamp(new Date()),
|
|
27
40
|
url: location.href,
|
|
28
41
|
title: document.title,
|
|
29
42
|
ready_state: document.readyState,
|
|
@@ -5,6 +5,15 @@
|
|
|
5
5
|
window.__tellyRecorderPageInstalled = true;
|
|
6
6
|
|
|
7
7
|
const MAX_TEXT_CHARS = 64 * 1024;
|
|
8
|
+
const padNumber = (value, length = 2) => String(value).padStart(length, "0");
|
|
9
|
+
const formatLocalTimestamp = (date = new Date()) => {
|
|
10
|
+
return `${date.getFullYear()}-${padNumber(date.getMonth() + 1)}-${padNumber(date.getDate())}T${padNumber(
|
|
11
|
+
date.getHours(),
|
|
12
|
+
)}:${padNumber(date.getMinutes())}:${padNumber(date.getSeconds())}.${padNumber(
|
|
13
|
+
date.getMilliseconds(),
|
|
14
|
+
3,
|
|
15
|
+
)}`;
|
|
16
|
+
};
|
|
8
17
|
const truncateText = (value) => {
|
|
9
18
|
const text = String(value ?? "");
|
|
10
19
|
return text.length > MAX_TEXT_CHARS ? text.slice(0, MAX_TEXT_CHARS) : text;
|
|
@@ -40,7 +49,7 @@
|
|
|
40
49
|
emit({
|
|
41
50
|
kind: "console_event",
|
|
42
51
|
source: "page",
|
|
43
|
-
at: new Date()
|
|
52
|
+
at: formatLocalTimestamp(new Date()),
|
|
44
53
|
level,
|
|
45
54
|
text:
|
|
46
55
|
textOverride ||
|
|
@@ -128,7 +137,7 @@
|
|
|
128
137
|
emit({
|
|
129
138
|
kind: "console_event",
|
|
130
139
|
source: "page",
|
|
131
|
-
at: new Date()
|
|
140
|
+
at: formatLocalTimestamp(new Date()),
|
|
132
141
|
level: "error",
|
|
133
142
|
text: truncateText(event.message || "window error"),
|
|
134
143
|
args: [
|
|
@@ -147,7 +156,7 @@
|
|
|
147
156
|
emit({
|
|
148
157
|
kind: "console_event",
|
|
149
158
|
source: "page",
|
|
150
|
-
at: new Date()
|
|
159
|
+
at: formatLocalTimestamp(new Date()),
|
|
151
160
|
level: "error",
|
|
152
161
|
text: "Unhandled promise rejection",
|
|
153
162
|
args: [serializeValue(event.reason)],
|
|
@@ -158,7 +167,7 @@
|
|
|
158
167
|
|
|
159
168
|
const originalFetch = window.fetch.bind(window);
|
|
160
169
|
window.fetch = async (...args) => {
|
|
161
|
-
const startedAt = new Date()
|
|
170
|
+
const startedAt = formatLocalTimestamp(new Date());
|
|
162
171
|
const request = new Request(...args);
|
|
163
172
|
const requestId = `page-fetch-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
|
|
164
173
|
const body = await serializeRequestBody(request);
|
|
@@ -178,7 +187,7 @@
|
|
|
178
187
|
emit({
|
|
179
188
|
kind: "network_response_complete",
|
|
180
189
|
source: "page",
|
|
181
|
-
at: new Date()
|
|
190
|
+
at: formatLocalTimestamp(new Date()),
|
|
182
191
|
request_id: requestId,
|
|
183
192
|
url: request.url,
|
|
184
193
|
method: request.method,
|
|
@@ -188,16 +197,23 @@
|
|
|
188
197
|
});
|
|
189
198
|
|
|
190
199
|
try {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
200
|
+
void response
|
|
201
|
+
.clone()
|
|
202
|
+
.text()
|
|
203
|
+
.then((bodyText) => {
|
|
204
|
+
emit({
|
|
205
|
+
kind: "network_response_body",
|
|
206
|
+
source: "page",
|
|
207
|
+
at: formatLocalTimestamp(new Date()),
|
|
208
|
+
request_id: requestId,
|
|
209
|
+
url: request.url,
|
|
210
|
+
body_text: truncateText(bodyText),
|
|
211
|
+
body_truncated: bodyText.length > MAX_TEXT_CHARS,
|
|
212
|
+
});
|
|
213
|
+
})
|
|
214
|
+
.catch(() => {
|
|
215
|
+
// ignore
|
|
216
|
+
});
|
|
201
217
|
} catch {
|
|
202
218
|
// ignore
|
|
203
219
|
}
|
|
@@ -224,7 +240,7 @@
|
|
|
224
240
|
return originalSetHeader.call(this, name, value);
|
|
225
241
|
};
|
|
226
242
|
XMLHttpRequest.prototype.send = function patchedSend(body) {
|
|
227
|
-
const startedAt = new Date()
|
|
243
|
+
const startedAt = formatLocalTimestamp(new Date());
|
|
228
244
|
const meta = this.__tellyRecorder || {
|
|
229
245
|
request_id: `page-xhr-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`,
|
|
230
246
|
method: "GET",
|
|
@@ -274,7 +290,7 @@
|
|
|
274
290
|
emit({
|
|
275
291
|
kind: "network_response_complete",
|
|
276
292
|
source: "page",
|
|
277
|
-
at: new Date()
|
|
293
|
+
at: formatLocalTimestamp(new Date()),
|
|
278
294
|
request_id: meta.request_id,
|
|
279
295
|
url: meta.url,
|
|
280
296
|
method: meta.method,
|
|
@@ -286,7 +302,7 @@
|
|
|
286
302
|
emit({
|
|
287
303
|
kind: "network_response_body",
|
|
288
304
|
source: "page",
|
|
289
|
-
at: new Date()
|
|
305
|
+
at: formatLocalTimestamp(new Date()),
|
|
290
306
|
request_id: meta.request_id,
|
|
291
307
|
url: meta.url,
|
|
292
308
|
body_text: truncateText(this.responseText),
|