@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
@@ -29,7 +29,7 @@ GATEWAY_WS_URL=wss://your-domain.example/api/gateway/ws
29
29
  GATEWAY_WS_PATH=/api/gateway/ws
30
30
  GATEWAY_TOKEN=change_me_gateway_token
31
31
  GATEWAY_USER_UUID=
32
- # GATEWAY_AUTH_TOKEN=
32
+ GATEWAY_AUTH_TOKEN=
33
33
 
34
34
  TERMINAL_SHELL=bash
35
35
  TERMINAL_COLS=120
@@ -71,6 +71,10 @@ BROWSER_WAIT_UNTIL=load
71
71
  # BROWSER_EXECUTABLE_PATH=
72
72
  # BROWSER_CHANNEL=chrome
73
73
  BROWSER_SLOW_MO_MS=0
74
+ # BROWSER_ATTACH_ENABLED=true
75
+ # BROWSER_ATTACH_WS_HOST=127.0.0.1
76
+ # BROWSER_ATTACH_WS_PORT=9999
77
+ # BROWSER_ATTACH_WS_PATH=/browser-attach/ws
74
78
 
75
79
  NAMESPACE=mcp
76
80
  NODE_ID=agent
@@ -29,12 +29,27 @@ MCP_HTTP_PATH=/mcp
29
29
  MCP_HTTP_ENABLE_DEBUG_ROUTES=false
30
30
  MCP_HTTP_ENABLE_PRUNE_ROUTE=false
31
31
 
32
+ # ChatGPT / Claude OAuth connector. Setting any OAuth value enables the facade.
33
+ # TELLYMCP_PUBLIC_URL=https://your-domain.example/api
34
+ # TELLYMCP_OAUTH_ISSUER=https://your-domain.example/api
35
+ # TELLYMCP_OAUTH_AUDIENCE=https://your-domain.example/api
36
+ # TELLYMCP_MAGIC_TOKEN=change_me_private_connector_token
37
+ # TELLYMCP_MAGIC_TOKEN_HASH=sha256:<hex>
38
+ # TELLYMCP_OAUTH_CLIENT_ID=tellymcp
39
+ # TELLYMCP_OAUTH_CLIENT_SECRET=
40
+ # TELLYMCP_ALLOWED_REDIRECT_URIS=https://chatgpt.com/connector/oauth/...,https://claude.ai/api/mcp/auth_callback
41
+ # TELLYMCP_OAUTH_PRIVATE_KEY_PEM="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
42
+ # TELLYMCP_AUTH_CODE_TTL_SECONDS=300
43
+ # TELLYMCP_OAUTH_SCOPES=tellymcp:read tellymcp:write
44
+ # TELLYMCP_OAUTH_KEY_ID=tellymcp-oauth
45
+
32
46
  DISTRIBUTED_MODE=gateway
47
+ # Also used to derive short-lived file URLs under /api/files/.
33
48
  GATEWAY_PUBLIC_URL=https://your-domain.example/api/gateway
34
49
  GATEWAY_WS_URL=wss://your-domain.example/api/gateway/ws
35
50
  GATEWAY_WS_PATH=/api/gateway/ws
36
51
  GATEWAY_TOKEN=change_me_gateway_token
37
- # GATEWAY_AUTH_TOKEN=
52
+ GATEWAY_AUTH_TOKEN=
38
53
 
39
54
  ROOT_PREFIX=/api
40
55
  PORT=8080
package/CHANGELOG.md CHANGED
@@ -3,6 +3,27 @@
3
3
  ## Unreleased
4
4
 
5
5
  ### Added
6
+
7
+ - Добавлены связанные MCP tools `get_file_list` и `get_file` для получения
8
+ файлов из workspace выбранной live-консоли через gateway. Первый возвращает
9
+ список managed files и точные пути, второй принимает `file_path` либо
10
+ `selector=latest_screenshot`. По умолчанию `get_file(type="url")` возвращает
11
+ короткоживущую download-ссылку в `data`; временная gateway-копия хранится в
12
+ `.tellymcp/tmp/file-links`, а `type="base64"` остаётся fallback.
13
+ - Добавлен явный режим `get_file(type="image")`: download URL остаётся в
14
+ `structuredContent.data`, сам structured type равен `image`, а изображение
15
+ возвращается отдельным нативным MCP-блоком, чтобы Claude и другие совместимые
16
+ клиенты могли рендерить его inline.
17
+ - Для Claude.ai сохранён совместимый `type="base64"`: полный JSON вместе с raw
18
+ base64 в `data` возвращается обычным MCP text-блоком без native image, поскольку
19
+ некоторые MCP-host адаптеры заменяют изображение на `[image]` и скрывают
20
+ structured output от модели.
21
+ - Добавлен `get_file(type="text")` для прямого чтения UTF-8 Markdown и исходников
22
+ через native MCP text-блок. Для `.ts`, `.tsx` и других source-расширений добавлены
23
+ текстовые MIME overrides.
24
+ - Доступ к live `.env`, credential stores, private-key расширениям и чувствительным
25
+ директориям теперь блокируется на клиенте до чтения или отправки файла; выход
26
+ за workspace и через symlink по-прежнему запрещён.
6
27
  - Перенос `telegram_mcp` на сервисную архитектуру `Moleculer`:
7
28
  - `telegramMcp.runtime`
8
29
  - `telegramMcp.http`
@@ -74,6 +95,14 @@
74
95
  - безопасные packaged templates для `.env`
75
96
 
76
97
  ### Changed
98
+
99
+ - Общее чтение workspace-файлов теперь проверяет реальный путь после разрешения
100
+ symlink и не позволяет выйти за пределы workspace.
101
+ - Telegram Mini App Live Console переведена на WS-only rendering:
102
+ - HTTP polling и `/api/view` удалены
103
+ - после разрыва WebSocket автоматически восстанавливается с exponential backoff
104
+ - размеры xterm рассчитываются официальным `@xterm/addon-fit`
105
+ - resize колонок и строк передаётся локальным и relay PTY
77
106
  - Полностью убран legacy standalone MCP transport. `telegram_mcp` работает только через REST/MCP over HTTP.
78
107
  - Локальный standalone HTTP listener убран; `telegram_mcp` больше не поднимает отдельный сервер вне Moleculer gateway.
79
108
  - UI Telegram переосмыслен по двум режимам:
@@ -113,6 +142,7 @@
113
142
  - старый `go/node terminal-proxy` path полностью удалён, поддерживается только прямой локальный terminal runtime
114
143
 
115
144
  ### Fixed
145
+
116
146
  - Исправлен `Headers have already sent` при работе MCP/WebApp через общий HTTP runtime.
117
147
  - Исправлены route/alias проблемы после перехода под `${ROOT_PREFIX}`.
118
148
  - Исправлены зависания Mini App bootstrap и проблемы с relative WebApp routes.
package/README-ru.md CHANGED
@@ -27,8 +27,12 @@
27
27
 
28
28
  - даёт MCP tools для human-in-the-loop через Telegram
29
29
  - позволяет одной консоли агента ставить задачу другой консоли
30
+ - позволяет MCP chat-клиенту получать проектный текст, изображения и артефакты выбранной консоли
30
31
  - хранит structured xchange records в `.mcp-xchange`
31
32
  - поддерживает browser automation через Playwright
33
+ - умеет attach к уже открытому Firefox или Chrome через bundled local extensions
34
+ - умеет писать structured browser bundles в `.mcp-xchange/web/...` с HTML, network и console артефактами
35
+ - умеет инжектить helper scripts в attached tabs или Playwright pages через `browser_inject_script`
32
36
  - отдаёт Telegram Mini App / Live View с gateway
33
37
  - поддерживает polling и webhook на gateway
34
38
  - поставляет встроенный Codex plugin со skills под типовые workflow
@@ -63,6 +67,7 @@ Gateway
63
67
  - `telegram_message`
64
68
  - `notify_telegram`
65
69
  - `browser_screenshot(send_to_telegram=true)`
70
+ - `get_file` для возврата скриншотов и артефактов в MCP chat-клиент
66
71
 
67
72
  Для agent-to-agent:
68
73
 
@@ -76,9 +81,22 @@ Gateway
76
81
  - `browser_open`
77
82
  - `browser_click`
78
83
  - `browser_fill`
84
+ - `browser_inject_script`
79
85
  - `browser_press`
80
86
  - `browser_wait_for`
81
87
  - `browser_screenshot`
88
+ - `browser_recording_start`
89
+ - `browser_recording_stop`
90
+ - `browser_recording_status`
91
+
92
+ Файлы:
93
+
94
+ - `get_file_list(source=..., limit=...)`
95
+ - `get_file(file_path=..., type="url")`
96
+ - `get_file(file_path=..., type="image")`
97
+ - `get_file(file_path=..., type="text")`
98
+ - `get_file(file_path=..., type="base64")`
99
+ - `get_file(selector="latest_screenshot")`
82
100
 
83
101
  Синхронизация инструкций:
84
102
 
@@ -105,6 +123,18 @@ npm install -g @deadragdoll/tellymcp
105
123
  tellymcp browser install
106
124
  ```
107
125
 
126
+ Если нужны attach extensions для существующего Firefox/Chrome:
127
+
128
+ ```bash
129
+ tellymcp extension firefox
130
+ tellymcp extension chrome
131
+ ```
132
+
133
+ Команда выгружает готовые unpacked bundles в текущий каталог:
134
+
135
+ - `./tellymcp-firefox-attach`
136
+ - `./tellymcp-chrome-attach`
137
+
108
138
  Если используешь Codex:
109
139
 
110
140
  ```bash
@@ -138,6 +168,7 @@ tellymcp init gateway
138
168
  - `GATEWAY_PUBLIC_URL`
139
169
  - `GATEWAY_WS_URL`
140
170
  - `GATEWAY_TOKEN`
171
+ - `GATEWAY_AUTH_TOKEN`
141
172
 
142
173
  Запуск:
143
174
 
@@ -164,6 +195,7 @@ tellymcp init client
164
195
  - `GATEWAY_PUBLIC_URL`
165
196
  - `GATEWAY_WS_URL`
166
197
  - `GATEWAY_TOKEN`
198
+ - `GATEWAY_AUTH_TOKEN` (тот же transport-токен, который задан на gateway)
167
199
  - `GATEWAY_USER_UUID`, если консоль должна быть видна конкретному владельцу в gateway-боте
168
200
 
169
201
  Рекомендуется:
@@ -356,6 +388,7 @@ tellymcp system-prune --env .env --yes
356
388
  - [README.md](./README.md)
357
389
  - [STANDALONE.md](./docs/STANDALONE.md)
358
390
  - [STANDALONE-ru.md](./docs/STANDALONE-ru.md)
391
+ - [CHAT_CONNECTOR.md](./docs/CHAT_CONNECTOR.md) — OAuth-коннектор ChatGPT/Claude
359
392
  - [TOOLS.md](./TOOLS.md)
360
393
  - [screenshots/README.md](./screenshots/README.md)
361
394
 
package/README.md CHANGED
@@ -27,8 +27,12 @@ The current model is gateway-first:
27
27
 
28
28
  - exposes MCP tools for human Telegram interaction
29
29
  - lets one agent ask another agent to do work and return files or notes
30
+ - lets MCP chat clients retrieve project text, images, and artifacts from a selected console
30
31
  - stores structured xchange records in `.mcp-xchange`
31
32
  - supports browser automation with Playwright
33
+ - can attach to an already running Firefox or Chrome tab through bundled local extensions
34
+ - records browser sessions into structured `.mcp-xchange/web/...` bundles with HTML, network and console artifacts
35
+ - can inject helper scripts into attached tabs or Playwright pages through `browser_inject_script`
32
36
  - serves the Telegram Mini App / Live View from the gateway
33
37
  - supports Telegram polling or webhook mode on the gateway
34
38
  - ships a bundled Codex workflow plugin for better agent behavior
@@ -63,6 +67,7 @@ Human-facing:
63
67
  - `telegram_message` records
64
68
  - `notify_telegram`
65
69
  - `browser_screenshot(send_to_telegram=true)`
70
+ - `get_file` for returning screenshots and artifacts to MCP chat clients
66
71
 
67
72
  Agent-to-agent:
68
73
 
@@ -76,9 +81,22 @@ Browser:
76
81
  - `browser_open`
77
82
  - `browser_click`
78
83
  - `browser_fill`
84
+ - `browser_inject_script`
79
85
  - `browser_press`
80
86
  - `browser_wait_for`
81
87
  - `browser_screenshot`
88
+ - `browser_recording_start`
89
+ - `browser_recording_stop`
90
+ - `browser_recording_status`
91
+
92
+ Files:
93
+
94
+ - `get_file_list(source=..., limit=...)`
95
+ - `get_file(file_path=..., type="url")`
96
+ - `get_file(file_path=..., type="image")`
97
+ - `get_file(file_path=..., type="text")`
98
+ - `get_file(file_path=..., type="base64")`
99
+ - `get_file(selector="latest_screenshot")`
82
100
 
83
101
  Tools sync:
84
102
 
@@ -105,6 +123,18 @@ Optional browser runtime:
105
123
  tellymcp browser install
106
124
  ```
107
125
 
126
+ Optional attached-browser extensions:
127
+
128
+ ```bash
129
+ tellymcp extension firefox
130
+ tellymcp extension chrome
131
+ ```
132
+
133
+ This exports unpacked extension bundles into the current directory:
134
+
135
+ - `./tellymcp-firefox-attach`
136
+ - `./tellymcp-chrome-attach`
137
+
108
138
  Optional Codex workflow plugin:
109
139
 
110
140
  ```bash
@@ -138,6 +168,7 @@ Required gateway values:
138
168
  - `GATEWAY_PUBLIC_URL`
139
169
  - `GATEWAY_WS_URL`
140
170
  - `GATEWAY_TOKEN`
171
+ - `GATEWAY_AUTH_TOKEN`
141
172
 
142
173
  Then run:
143
174
 
@@ -164,6 +195,7 @@ Required client values:
164
195
  - `GATEWAY_PUBLIC_URL`
165
196
  - `GATEWAY_WS_URL`
166
197
  - `GATEWAY_TOKEN`
198
+ - `GATEWAY_AUTH_TOKEN` (the same transport token configured on the gateway)
167
199
  - `GATEWAY_USER_UUID` if this console should be scoped to a specific Telegram owner
168
200
 
169
201
  Recommended:
@@ -355,6 +387,7 @@ tellymcp system-prune --env .env --yes
355
387
  - [README-ru.md](./README-ru.md)
356
388
  - [STANDALONE.md](./docs/STANDALONE.md)
357
389
  - [STANDALONE-ru.md](./docs/STANDALONE-ru.md)
390
+ - [CHAT_CONNECTOR.md](./docs/CHAT_CONNECTOR.md) — ChatGPT/Claude OAuth connector
358
391
  - [TOOLS.md](./TOOLS.md)
359
392
  - [screenshots/README.md](./screenshots/README.md)
360
393