@deadragdoll/tellymcp 0.0.12 → 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.
Files changed (83) hide show
  1. package/.env.example.client +5 -1
  2. package/.env.example.gateway +16 -1
  3. package/CHANGELOG.md +30 -0
  4. package/README-ru.md +33 -0
  5. package/README.md +33 -0
  6. package/TOOLS.md +384 -9
  7. package/config/templates/env.both.template +15 -2
  8. package/config/templates/env.client.template +5 -2
  9. package/config/templates/env.gateway.template +15 -2
  10. package/dist/cli.js +137 -2
  11. package/dist/services/features/telegram-mcp/browser.service.js +56 -1
  12. package/dist/services/features/telegram-mcp/file-content.service.js +94 -0
  13. package/dist/services/features/telegram-mcp/gateway-delivery.service.js +5 -1
  14. package/dist/services/features/telegram-mcp/gateway-socket.service.js +43 -11
  15. package/dist/services/features/telegram-mcp/mcp-http.service.js +1 -0
  16. package/dist/services/features/telegram-mcp/mcp-server.service.js +30 -0
  17. package/dist/services/features/telegram-mcp/src/app/bootstrap/runtime.js +23 -1
  18. package/dist/services/features/telegram-mcp/src/app/config/env.js +132 -2
  19. package/dist/services/features/telegram-mcp/src/app/http.js +139 -99
  20. package/dist/services/features/telegram-mcp/src/app/oauthFacade.js +642 -0
  21. package/dist/services/features/telegram-mcp/src/app/webapp/assets.js +151 -170
  22. package/dist/services/features/telegram-mcp/src/app/webapp/auth.js +96 -99
  23. package/dist/services/features/telegram-mcp/src/entities/request/model/schema.js +205 -17
  24. package/dist/services/features/telegram-mcp/src/features/browser/model/browserAttachActiveTabTool.js +28 -0
  25. package/dist/services/features/telegram-mcp/src/features/browser/model/browserAttachTabTool.js +28 -0
  26. package/dist/services/features/telegram-mcp/src/features/browser/model/browserClickTool.js +1 -1
  27. package/dist/services/features/telegram-mcp/src/features/browser/model/browserDetachTabTool.js +28 -0
  28. package/dist/services/features/telegram-mcp/src/features/browser/model/browserDomTool.js +1 -1
  29. package/dist/services/features/telegram-mcp/src/features/browser/model/browserFillTool.js +1 -1
  30. package/dist/services/features/telegram-mcp/src/features/browser/model/browserInjectScriptTool.js +28 -0
  31. package/dist/services/features/telegram-mcp/src/features/browser/model/browserListAttachedInstancesTool.js +33 -0
  32. package/dist/services/features/telegram-mcp/src/features/browser/model/browserListTabsTool.js +33 -0
  33. package/dist/services/features/telegram-mcp/src/features/browser/model/browserPressTool.js +1 -1
  34. package/dist/services/features/telegram-mcp/src/features/browser/model/browserRecordingStartTool.js +28 -0
  35. package/dist/services/features/telegram-mcp/src/features/browser/model/browserRecordingStatusTool.js +28 -0
  36. package/dist/services/features/telegram-mcp/src/features/browser/model/browserRecordingStopTool.js +28 -0
  37. package/dist/services/features/telegram-mcp/src/features/browser/model/browserScreenshotTool.js +1 -1
  38. package/dist/services/features/telegram-mcp/src/features/browser/model/browserService.js +890 -23
  39. package/dist/services/features/telegram-mcp/src/features/browser-attach/model/browserRecordingBundle.js +536 -0
  40. package/dist/services/features/telegram-mcp/src/features/browser-attach/model/firefoxAttachRegistry.js +80 -0
  41. package/dist/services/features/telegram-mcp/src/features/browser-attach/model/firefoxAttachServer.js +736 -0
  42. package/dist/services/features/telegram-mcp/src/features/browser-attach/model/types.js +188 -0
  43. package/dist/services/features/telegram-mcp/src/features/collaboration/model/collaborationService.js +2 -0
  44. package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileService.js +6 -3
  45. package/dist/services/features/telegram-mcp/src/features/distributed-client/model/gatewayClientAccess.js +4 -1
  46. package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/gatewayHttpService.js +33 -35
  47. package/dist/services/features/telegram-mcp/src/features/file-content/model/getFileListTool.js +33 -0
  48. package/dist/services/features/telegram-mcp/src/features/file-content/model/getFileService.js +327 -0
  49. package/dist/services/features/telegram-mcp/src/features/file-content/model/getFileTool.js +81 -0
  50. package/dist/services/features/telegram-mcp/src/features/file-content/model/temporaryFileLinkStore.js +307 -0
  51. package/dist/services/features/telegram-mcp/src/features/file-content/model/workspaceFilePolicy.js +115 -0
  52. package/dist/services/features/telegram-mcp/src/features/notify/model/notifyService.js +5 -1
  53. package/dist/services/features/telegram-mcp/src/shared/integrations/redis/stateStore.js +28 -0
  54. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transport.js +3 -0
  55. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportFileHandoffActions.js +6 -3
  56. package/dist/services/features/telegram-mcp/src/shared/integrations/terminal/client.js +29 -6
  57. package/dist/services/features/telegram-mcp/src/shared/integrations/terminal/ptyRegistry.js +100 -2
  58. package/dist/services/features/telegram-mcp/src/shared/lib/bodyLimits.js +63 -0
  59. package/dist/services/features/telegram-mcp/src/shared/lib/gatewayAuth.js +13 -0
  60. package/dist/services/features/telegram-mcp/src/shared/lib/time/localTimestamp.js +21 -0
  61. package/docs/CHAT_CONNECTOR.md +134 -0
  62. package/docs/STANDALONE-ru.md +55 -6
  63. package/docs/STANDALONE.md +55 -6
  64. package/package.json +10 -5
  65. package/packages/chrome-attach-extension/dist/background.js +1735 -0
  66. package/packages/chrome-attach-extension/dist/icon.svg +6 -0
  67. package/packages/chrome-attach-extension/dist/manifest.json +37 -0
  68. package/packages/chrome-attach-extension/dist/options.html +312 -0
  69. package/packages/chrome-attach-extension/dist/options.js +606 -0
  70. package/packages/chrome-attach-extension/dist/popup.html +93 -0
  71. package/packages/chrome-attach-extension/dist/popup.js +79 -0
  72. package/packages/chrome-attach-extension/dist/recorder-content.js +96 -0
  73. package/packages/chrome-attach-extension/dist/recorder-page.js +282 -0
  74. package/packages/firefox-attach-extension/README.md +13 -0
  75. package/packages/firefox-attach-extension/dist/background.js +1622 -0
  76. package/packages/firefox-attach-extension/dist/icon.svg +6 -0
  77. package/packages/firefox-attach-extension/dist/manifest.json +44 -0
  78. package/packages/firefox-attach-extension/dist/options.html +312 -0
  79. package/packages/firefox-attach-extension/dist/options.js +540 -0
  80. package/packages/firefox-attach-extension/dist/popup.html +93 -0
  81. package/packages/firefox-attach-extension/dist/popup.js +64 -0
  82. package/packages/firefox-attach-extension/dist/recorder-content.js +90 -0
  83. package/packages/firefox-attach-extension/dist/recorder-page.js +318 -0
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
2
+ <rect width="64" height="64" rx="12" fill="#151515"/>
3
+ <rect x="10" y="10" width="44" height="44" rx="8" fill="#f3efe2"/>
4
+ <path d="M20 24h24v4H20zm0 12h24v4H20zm0 12h16v4H20z" fill="#151515"/>
5
+ <circle cx="47" cy="47" r="7" fill="#0a6e2f"/>
6
+ </svg>
@@ -0,0 +1,44 @@
1
+ {
2
+ "manifest_version": 2,
3
+ "name": "TellyMCP Firefox Attach",
4
+ "version": "0.0.1",
5
+ "description": "Attach TellyMCP to an already running Firefox session.",
6
+ "icons": {
7
+ "32": "icon.svg"
8
+ },
9
+ "permissions": [
10
+ "tabs",
11
+ "activeTab",
12
+ "storage",
13
+ "cookies",
14
+ "webNavigation",
15
+ "webRequest",
16
+ "webRequestBlocking",
17
+ "webRequestFilterResponse",
18
+ "<all_urls>"
19
+ ],
20
+ "background": {
21
+ "scripts": [
22
+ "background.js"
23
+ ],
24
+ "persistent": true
25
+ },
26
+ "browser_action": {
27
+ "default_title": "TellyMCP Firefox Attach",
28
+ "default_icon": "icon.svg",
29
+ "default_popup": "popup.html",
30
+ "browser_style": true
31
+ },
32
+ "options_ui": {
33
+ "page": "options.html",
34
+ "browser_style": true
35
+ },
36
+ "web_accessible_resources": [
37
+ "recorder-page.js"
38
+ ],
39
+ "browser_specific_settings": {
40
+ "gecko": {
41
+ "id": "tellymcp-firefox-attach@deadragdoll"
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,312 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>TellyMCP Firefox Attach</title>
7
+ <style>
8
+ :root {
9
+ color-scheme: light dark;
10
+ font-family: ui-monospace, "SFMono-Regular", "Cascadia Code", "Fira Code", monospace;
11
+ --bg-start: #fffdf8;
12
+ --bg-end: #f3efe2;
13
+ --card-bg: rgba(255, 255, 255, 0.88);
14
+ --card-border: #d7cfbb;
15
+ --text: #171717;
16
+ --muted: #4b4b4b;
17
+ --soft: #5a5a5a;
18
+ --accent: #0a6e2f;
19
+ --warn: #8a5a00;
20
+ --danger: #a4000f;
21
+ --button-border: #171717;
22
+ --tab-bg: #fff;
23
+ --tab-border: #cfc7b2;
24
+ --tab-active-bg: #edf8f0;
25
+ --input-bg: #fff;
26
+ --input-border: #c9c9c9;
27
+ }
28
+
29
+ @media (prefers-color-scheme: dark) {
30
+ :root {
31
+ --bg-start: #171a1d;
32
+ --bg-end: #101214;
33
+ --card-bg: rgba(28, 31, 35, 0.92);
34
+ --card-border: #323841;
35
+ --text: #f3f5f7;
36
+ --muted: #c5ccd3;
37
+ --soft: #98a2ad;
38
+ --accent: #71d08d;
39
+ --warn: #f3bf63;
40
+ --danger: #ff7a8a;
41
+ --button-border: #56606b;
42
+ --tab-bg: #20242a;
43
+ --tab-border: #3a414b;
44
+ --tab-active-bg: #1e3425;
45
+ --input-bg: #1f2429;
46
+ --input-border: #3a414b;
47
+ }
48
+ }
49
+
50
+ body {
51
+ margin: 0;
52
+ min-height: 100vh;
53
+ padding: 24px;
54
+ background: linear-gradient(180deg, var(--bg-start) 0%, var(--bg-end) 100%);
55
+ color: var(--text);
56
+ }
57
+
58
+ .shell {
59
+ max-width: 1080px;
60
+ margin: 0 auto;
61
+ display: grid;
62
+ gap: 18px;
63
+ }
64
+
65
+ h1 {
66
+ margin: 0;
67
+ font-size: 28px;
68
+ }
69
+
70
+ .hint {
71
+ margin: 0;
72
+ color: var(--muted);
73
+ line-height: 1.5;
74
+ }
75
+
76
+ .grid {
77
+ display: grid;
78
+ grid-template-columns: minmax(280px, 360px) minmax(0, 1fr);
79
+ gap: 18px;
80
+ }
81
+
82
+ .card {
83
+ border: 1px solid var(--card-border);
84
+ background: var(--card-bg);
85
+ padding: 16px;
86
+ }
87
+
88
+ .card h2 {
89
+ margin: 0 0 12px;
90
+ font-size: 16px;
91
+ }
92
+
93
+ .status {
94
+ font-size: 15px;
95
+ font-weight: 700;
96
+ margin: 0 0 12px;
97
+ }
98
+
99
+ .meta {
100
+ display: grid;
101
+ gap: 6px;
102
+ font-size: 12px;
103
+ color: var(--muted);
104
+ margin-bottom: 12px;
105
+ }
106
+
107
+ .attached {
108
+ margin: 0 0 12px;
109
+ font-size: 12px;
110
+ color: var(--accent);
111
+ min-height: 16px;
112
+ }
113
+
114
+ .action-status {
115
+ min-height: 18px;
116
+ }
117
+
118
+ .tabs-title {
119
+ margin: 0 0 8px;
120
+ font-size: 13px;
121
+ font-weight: 700;
122
+ }
123
+
124
+ .tabs {
125
+ display: grid;
126
+ gap: 6px;
127
+ max-height: 480px;
128
+ overflow: auto;
129
+ margin-bottom: 14px;
130
+ }
131
+
132
+ .tab-row {
133
+ display: grid;
134
+ grid-template-columns: minmax(0, 1fr) auto;
135
+ gap: 8px;
136
+ align-items: stretch;
137
+ }
138
+
139
+ .tab {
140
+ display: grid;
141
+ gap: 4px;
142
+ width: 100%;
143
+ text-align: left;
144
+ font: inherit;
145
+ padding: 10px;
146
+ border: 1px solid var(--tab-border);
147
+ background: var(--tab-bg);
148
+ cursor: pointer;
149
+ }
150
+
151
+ .tab.active {
152
+ border-color: var(--accent);
153
+ background: var(--tab-active-bg);
154
+ }
155
+
156
+ .tab.current {
157
+ border-style: dashed;
158
+ }
159
+
160
+ .tab.recording {
161
+ border-color: var(--warn);
162
+ }
163
+
164
+ .tab-head {
165
+ display: flex;
166
+ align-items: center;
167
+ gap: 8px;
168
+ min-width: 0;
169
+ }
170
+
171
+ .tab-title {
172
+ font-size: 12px;
173
+ font-weight: 700;
174
+ color: var(--text);
175
+ white-space: nowrap;
176
+ overflow: hidden;
177
+ text-overflow: ellipsis;
178
+ min-width: 0;
179
+ }
180
+
181
+ .tab-badges {
182
+ display: flex;
183
+ gap: 4px;
184
+ flex-wrap: wrap;
185
+ }
186
+
187
+ .badge {
188
+ font-size: 10px;
189
+ line-height: 1;
190
+ padding: 3px 5px;
191
+ border: 1px solid var(--tab-border);
192
+ color: var(--soft);
193
+ }
194
+
195
+ .badge.attached {
196
+ color: var(--accent);
197
+ border-color: var(--accent);
198
+ }
199
+
200
+ .badge.recording {
201
+ color: var(--warn);
202
+ border-color: var(--warn);
203
+ }
204
+
205
+ .tab-url {
206
+ font-size: 11px;
207
+ color: var(--soft);
208
+ white-space: nowrap;
209
+ overflow: hidden;
210
+ text-overflow: ellipsis;
211
+ }
212
+
213
+ form {
214
+ display: grid;
215
+ gap: 14px;
216
+ }
217
+
218
+ label {
219
+ display: grid;
220
+ gap: 8px;
221
+ font-weight: 600;
222
+ }
223
+
224
+ input {
225
+ font: inherit;
226
+ padding: 10px 12px;
227
+ color: var(--text);
228
+ background: var(--input-bg);
229
+ border: 1px solid var(--input-border);
230
+ }
231
+
232
+ .actions {
233
+ display: flex;
234
+ gap: 10px;
235
+ flex-wrap: wrap;
236
+ }
237
+
238
+ button.secondary {
239
+ font: inherit;
240
+ padding: 9px 14px;
241
+ border: 1px solid var(--button-border);
242
+ cursor: pointer;
243
+ background: transparent;
244
+ color: var(--text);
245
+ }
246
+
247
+ .tab-record-button {
248
+ min-width: 72px;
249
+ align-self: stretch;
250
+ }
251
+
252
+ @media (max-width: 900px) {
253
+ .grid {
254
+ grid-template-columns: 1fr;
255
+ }
256
+ }
257
+ </style>
258
+ </head>
259
+ <body>
260
+ <div class="shell">
261
+ <div>
262
+ <h1>TellyMCP Firefox Attach</h1>
263
+ <p class="hint">
264
+ Configure the local TellyMCP attach server and control the attached browser tab from this page. Popup controls are intentionally minimized; use this panel as the primary UI.
265
+ </p>
266
+ </div>
267
+
268
+ <div class="grid">
269
+ <div class="card">
270
+ <h2>Connection</h2>
271
+ <p id="connection-status" class="status">Connecting...</p>
272
+ <div class="meta">
273
+ <div id="endpoint">Endpoint: -</div>
274
+ <div id="session">Session: -</div>
275
+ <div id="recording">Recording: -</div>
276
+ <div id="recording-tab">Recording tab: -</div>
277
+ <div id="recording-scope"></div>
278
+ </div>
279
+ <p id="attached-tab" class="attached">Attached: -</p>
280
+ <p id="action-status" class="attached action-status"></p>
281
+ <form id="settings-form">
282
+ <label>
283
+ Host
284
+ <input id="host" name="host" type="text" placeholder="127.0.0.1" />
285
+ </label>
286
+ <label>
287
+ Port
288
+ <input id="port" name="port" type="number" min="1" max="65535" placeholder="9999" />
289
+ </label>
290
+ <div class="actions">
291
+ <button type="submit" class="secondary">Save</button>
292
+ <button id="connection-toggle-button" class="secondary" type="button">Connect</button>
293
+ </div>
294
+ </form>
295
+ <div class="actions" style="margin-top: 14px;">
296
+ <input id="inject-namespace" type="text" value="TELLY" placeholder="Namespace" style="max-width: 140px;" />
297
+ <input id="inject-file" type="file" accept=".js,text/javascript,application/javascript" />
298
+ <button id="inject-script-button" class="secondary" type="button">Inject</button>
299
+ </div>
300
+ <p id="status" class="status"></p>
301
+ </div>
302
+
303
+ <div class="card">
304
+ <h2>Tabs</h2>
305
+ <p class="tabs-title">Tabs in current window</p>
306
+ <div id="tabs" class="tabs"></div>
307
+ </div>
308
+ </div>
309
+ </div>
310
+ <script src="options.js"></script>
311
+ </body>
312
+ </html>