@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.
- package/.env.example.client +93 -0
- package/.env.example.gateway +120 -0
- package/CHANGELOG.md +155 -0
- package/LICENSE +21 -0
- package/README-ru.md +338 -0
- package/README.md +1262 -0
- package/STANDALONE-ru.md +266 -0
- package/STANDALONE.md +266 -0
- package/TOOLS.md +1296 -0
- package/config/templates/env.both.template +83 -0
- package/config/templates/env.client.template +60 -0
- package/config/templates/env.gateway.template +82 -0
- package/dist/cli.js +636 -0
- package/dist/index.js +17 -0
- package/dist/lib/logfeed/store.js +52 -0
- package/dist/lib/middlewares/tracer.js +172 -0
- package/dist/lib/mixins/db.js +267 -0
- package/dist/lib/mixins/logfeed.js +34 -0
- package/dist/lib/mixins/session.errors.js +142 -0
- package/dist/lib/moleculer.js +2 -0
- package/dist/lib/trace.js +147 -0
- package/dist/lib/traceContext.js +116 -0
- package/dist/moleculer.config.js +274 -0
- package/dist/services/features/telegram-mcp/approval.service.js +33 -0
- package/dist/services/features/telegram-mcp/browser.service.js +42 -0
- package/dist/services/features/telegram-mcp/collaboration.service.js +53 -0
- package/dist/services/features/telegram-mcp/ensuredb.service.js +337 -0
- package/dist/services/features/telegram-mcp/gateway-delivery.service.js +378 -0
- package/dist/services/features/telegram-mcp/gateway-loopback.js +10 -0
- package/dist/services/features/telegram-mcp/gateway-rmq.service.js +294 -0
- package/dist/services/features/telegram-mcp/gateway-socket.service.js +1463 -0
- package/dist/services/features/telegram-mcp/gateway.service.js +1141 -0
- package/dist/services/features/telegram-mcp/inbox.service.js +33 -0
- package/dist/services/features/telegram-mcp/mcp-http.service.js +76 -0
- package/dist/services/features/telegram-mcp/mcp-server.service.js +127 -0
- package/dist/services/features/telegram-mcp/notify.service.js +33 -0
- package/dist/services/features/telegram-mcp/pair.service.js +33 -0
- package/dist/services/features/telegram-mcp/runtime.service.js +36 -0
- package/dist/services/features/telegram-mcp/session-context.service.js +33 -0
- package/dist/services/features/telegram-mcp/src/app/bootstrap/runtime.js +103 -0
- package/dist/services/features/telegram-mcp/src/app/config/env.js +317 -0
- package/dist/services/features/telegram-mcp/src/app/http.js +774 -0
- package/dist/services/features/telegram-mcp/src/app/index.js +2 -0
- package/dist/services/features/telegram-mcp/src/app/providers/mcp/server.js +13 -0
- package/dist/services/features/telegram-mcp/src/app/providers/redis/client.js +18 -0
- package/dist/services/features/telegram-mcp/src/app/webapp/assets.js +740 -0
- package/dist/services/features/telegram-mcp/src/app/webapp/auth.js +267 -0
- package/dist/services/features/telegram-mcp/src/app/webapp/relay.js +69 -0
- package/dist/services/features/telegram-mcp/src/app/webapp/tmux.js +9 -0
- package/dist/services/features/telegram-mcp/src/entities/auth/model/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/entities/browser/model/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/entities/collaboration/model/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/entities/inbox/model/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/entities/request/model/schema.js +545 -0
- package/dist/services/features/telegram-mcp/src/entities/request/model/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/entities/session/model/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/features/ask-user/model/askUserTelegram.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserClearLogsTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserClickTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserCloseTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserComputedStyleTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserConsoleTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserDomTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserErrorsTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserFillTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserNetworkFailuresTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserOpenTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserPressTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserReloadTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserScreenshotTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserService.js +689 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserWaitForTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserWaitForUrlTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/backend.js +2 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/collaborationService.js +26 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/localCollaborationBackend.js +390 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileService.js +102 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerNoteTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/distributed-client/model/gatewayCollaborationBackend.js +69 -0
- package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/gatewayHttpService.js +657 -0
- package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/gatewayReplyResolution.js +17 -0
- package/dist/services/features/telegram-mcp/src/features/inbox/model/deleteTelegramInboxMessageTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxCountTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/inbox/model/inboxService.js +77 -0
- package/dist/services/features/telegram-mcp/src/features/notify/model/notifyService.js +93 -0
- package/dist/services/features/telegram-mcp/src/features/notify/model/notifyTelegramTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/pair-session/model/clearSessionPairingTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/pair-session/model/createSessionPairCodeTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/pair-session/model/generatePairCode.js +202 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/clearSessionContextTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/getSessionContextTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/getTmuxTargetTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/renameSessionTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/sessionContextService.js +409 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/setSessionContextTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/setTmuxTargetTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownService.js +123 -0
- package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/processes/human-approval/model/orchestrator.js +243 -0
- package/dist/services/features/telegram-mcp/src/shared/api/storage/contract.js +2 -0
- package/dist/services/features/telegram-mcp/src/shared/api/tool-registry/registry.js +8 -0
- package/dist/services/features/telegram-mcp/src/shared/api/tool-registry/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/shared/api/transport/contract.js +2 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/object-storage/minioExchangeStore.js +86 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/redis/stateStore.js +436 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/collabSemantics.js +21 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/collabUi.js +87 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/messageFormat.js +60 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/proxyFetch.js +46 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transport.js +6534 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/tmux/client.js +280 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/ids/ids.js +34 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/logger/logger.js +68 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/project-identity/projectIdentity.js +223 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/redact-secrets/redactSecrets.js +22 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/truncate/truncate.js +12 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/version/versionHandshake.js +124 -0
- package/dist/services/features/telegram-mcp/src/shared/types/common.js +2 -0
- package/dist/services/features/telegram-mcp/standalone-http.service.js +113 -0
- package/dist/services/features/telegram-mcp/tools-sync.service.js +33 -0
- package/package.json +110 -0
- package/scripts/postinstall.js +60 -0
package/README-ru.md
ADDED
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
# TellyMCP
|
|
2
|
+
|
|
3
|
+
[English](README.md) | [Русский](README-ru.md)
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@deadragdoll/tellymcp)
|
|
6
|
+
[](https://www.npmjs.com/package/@deadragdoll/tellymcp)
|
|
7
|
+
[](https://nodejs.org/)
|
|
8
|
+
[](LICENSE)
|
|
9
|
+
|
|
10
|
+
TellyMCP — это Telegram Human-in-the-Loop MCP server для coding agents.
|
|
11
|
+
|
|
12
|
+
Он позволяет агенту:
|
|
13
|
+
|
|
14
|
+
- задавать человеку уточняющие вопросы через Telegram
|
|
15
|
+
- получать несвязанные входящие сообщения позже через inbox
|
|
16
|
+
- привязывать несколько agent-сессий
|
|
17
|
+
- работать с локальными и удалёнными партнёрскими сессиями
|
|
18
|
+
- открывать Live tmux view внутри Telegram Mini App
|
|
19
|
+
- обмениваться note, скриншотами и файлами через `.mcp-xchange`
|
|
20
|
+
|
|
21
|
+
## Prerequisites
|
|
22
|
+
|
|
23
|
+
- Node.js 24+
|
|
24
|
+
- `tmux`
|
|
25
|
+
- Redis
|
|
26
|
+
- Telegram bot token от BotFather
|
|
27
|
+
- для `gateway` / `both`: Postgres
|
|
28
|
+
- опционально для durable fanout на шлюзе: RabbitMQ
|
|
29
|
+
|
|
30
|
+
## `tmux` настоятельно рекомендуется
|
|
31
|
+
|
|
32
|
+
TellyMCP лучше всего работает, когда сам агент запущен внутри `tmux`.
|
|
33
|
+
|
|
34
|
+
Без `tmux` сервис всё равно может работать, но полноценный интерактивный режим будет неполным:
|
|
35
|
+
|
|
36
|
+
- не будет `Live View`
|
|
37
|
+
- не будет tmux `nudge`
|
|
38
|
+
- не будет прямого управления tmux из Telegram Mini App
|
|
39
|
+
|
|
40
|
+
Типичный старт:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
tmux new -s backend
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Позже можно просто подключиться:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
tmux attach -t backend
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Почему имя tmux-сессии важно:
|
|
53
|
+
|
|
54
|
+
- по нему проще различать агентов
|
|
55
|
+
- оно участвует в tmux-related UI и диагностике
|
|
56
|
+
- с ним проще понимать, какую сессию ты открываешь в Telegram и `Live`
|
|
57
|
+
|
|
58
|
+
Лучше использовать короткие осмысленные имена:
|
|
59
|
+
|
|
60
|
+
- `backend`
|
|
61
|
+
- `frontend`
|
|
62
|
+
- `review`
|
|
63
|
+
- `ops`
|
|
64
|
+
|
|
65
|
+
Если агентов несколько, лучше запускать каждого в своей tmux-сессии или pane и привязывать отдельно.
|
|
66
|
+
|
|
67
|
+
## Быстрый старт
|
|
68
|
+
|
|
69
|
+
### 1. Standalone client без шлюза
|
|
70
|
+
|
|
71
|
+
Это самый простой режим:
|
|
72
|
+
|
|
73
|
+
- без shared gateway
|
|
74
|
+
- без Postgres
|
|
75
|
+
- без RabbitMQ
|
|
76
|
+
|
|
77
|
+
Установка:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
npm install -g @deadragdoll/tellymcp
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Создай клиентский конфиг:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
tellymcp init client
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
В `.env` заполни минимум:
|
|
90
|
+
|
|
91
|
+
- `TELEGRAM_BOT_TOKEN`
|
|
92
|
+
- `TELEGRAM_BOT_USERNAME`
|
|
93
|
+
- `REDIS_HOST`
|
|
94
|
+
- `MCP_HTTP_BEARER_TOKEN`
|
|
95
|
+
|
|
96
|
+
Проверь конфиг:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
tellymcp doctor --env .env
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Запусти сервис:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
tellymcp run --env .env
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Локальный MCP endpoint в `client`-режиме:
|
|
109
|
+
|
|
110
|
+
- `http://127.0.0.1:8787/mcp`
|
|
111
|
+
|
|
112
|
+
Чтобы получить готовый JSON snippet для агента:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
tellymcp mcp --help
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### 2. Gateway или combined `both`
|
|
119
|
+
|
|
120
|
+
Используй этот режим, если нужен:
|
|
121
|
+
|
|
122
|
+
- `Collab` между машинами
|
|
123
|
+
- проекты между разными ботами
|
|
124
|
+
- gateway-relayed Live View
|
|
125
|
+
- persistent gateway-side состояние по проектам и доставке
|
|
126
|
+
|
|
127
|
+
Создай конфиг:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
tellymcp init gateway
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
или
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
tellymcp init both
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
В `.env` настроить:
|
|
140
|
+
|
|
141
|
+
- `DISTRIBUTED_MODE=gateway|both`
|
|
142
|
+
- `PORT`
|
|
143
|
+
- `ROOT_PREFIX=/api`
|
|
144
|
+
- `TELEGRAM_BOT_TOKEN`
|
|
145
|
+
- `REDIS_*`
|
|
146
|
+
- `DB_*`
|
|
147
|
+
- `WEBAPP_PUBLIC_URL`
|
|
148
|
+
- `GATEWAY_PUBLIC_URL`
|
|
149
|
+
- `GATEWAY_WS_URL`
|
|
150
|
+
- при необходимости `RMQ_*`
|
|
151
|
+
|
|
152
|
+
Ожидаемый публичный ingress:
|
|
153
|
+
|
|
154
|
+
- `/api/mcp`
|
|
155
|
+
- `/api/webapp`
|
|
156
|
+
- `/api/gateway`
|
|
157
|
+
- `/api/healthz`
|
|
158
|
+
|
|
159
|
+
Проверка:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
tellymcp doctor --env .env
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Запуск:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
tellymcp run --env .env
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Типовой публичный MCP endpoint:
|
|
172
|
+
|
|
173
|
+
- `https://your-host.example/api/mcp`
|
|
174
|
+
|
|
175
|
+
## Как начать работу с ботом изнутри агента
|
|
176
|
+
|
|
177
|
+
После подключения MCP можно просто написать агенту обычной фразой, что нужно привязаться к Telegram.
|
|
178
|
+
|
|
179
|
+
Типовые фразы, которые агент должен понимать:
|
|
180
|
+
|
|
181
|
+
- `привяжись к Telegram`
|
|
182
|
+
- `подключись к Telegram`
|
|
183
|
+
- `зарегистрируй эту сессию в Telegram`
|
|
184
|
+
- `свяжи эту сессию с ботом`
|
|
185
|
+
- `создай код привязки к Telegram`
|
|
186
|
+
- `дай код для pairing с Telegram`
|
|
187
|
+
|
|
188
|
+
Ожидаемый flow:
|
|
189
|
+
|
|
190
|
+
1. Агент вызывает `create_session_pair_code`.
|
|
191
|
+
2. Возвращается короткий код и, если возможно, deep link.
|
|
192
|
+
3. Ты открываешь Telegram и отправляешь боту `/start <code>` или `/link <code>`.
|
|
193
|
+
4. После успешной привязки можно открыть `/menu`.
|
|
194
|
+
|
|
195
|
+
Если хочешь написать совсем явно, используй так:
|
|
196
|
+
|
|
197
|
+
```text
|
|
198
|
+
Привяжись к Telegram и дай мне код для pairing.
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Если агент работает внутри `tmux`, ему желательно передать `cwd` и tmux-атрибуты уже на этапе pairing, чтобы `Live` и `nudge` заработали сразу.
|
|
202
|
+
|
|
203
|
+
## Telegram setup
|
|
204
|
+
|
|
205
|
+
1. Открой BotFather.
|
|
206
|
+
2. Создай бота через `/newbot`.
|
|
207
|
+
3. Сохрани токен.
|
|
208
|
+
4. Укажи `TELEGRAM_BOT_USERNAME`, если хочешь deep-link подсказки для pairing.
|
|
209
|
+
|
|
210
|
+
## MCP helper
|
|
211
|
+
|
|
212
|
+
TellyMCP сам не прописывает себя в конфиг агента.
|
|
213
|
+
|
|
214
|
+
Команда:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
tellymcp mcp --help
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
печатает готовые snippets для:
|
|
221
|
+
|
|
222
|
+
- локального standalone клиента
|
|
223
|
+
- общего gateway endpoint
|
|
224
|
+
- варианта с bearer token
|
|
225
|
+
|
|
226
|
+
## Doctor
|
|
227
|
+
|
|
228
|
+
`doctor` mode-aware.
|
|
229
|
+
|
|
230
|
+
В `client` режиме проверяет:
|
|
231
|
+
|
|
232
|
+
- `tmux`
|
|
233
|
+
- `.env`
|
|
234
|
+
- Redis
|
|
235
|
+
- локальный MCP bind
|
|
236
|
+
- внешний `gateway healthz`, если задан `GATEWAY_PUBLIC_URL`
|
|
237
|
+
- `GATEWAY_WS_URL`
|
|
238
|
+
- `WEBAPP_PUBLIC_URL`
|
|
239
|
+
|
|
240
|
+
В `gateway` / `both` режиме проверяет:
|
|
241
|
+
|
|
242
|
+
- `tmux`
|
|
243
|
+
- `.env`
|
|
244
|
+
- Redis
|
|
245
|
+
- локальный `healthz`
|
|
246
|
+
- публичный `healthz`
|
|
247
|
+
- публичный `ws`
|
|
248
|
+
- публичный `webapp`
|
|
249
|
+
- Postgres
|
|
250
|
+
- RabbitMQ, если настроен
|
|
251
|
+
|
|
252
|
+
## Ключевые переменные
|
|
253
|
+
|
|
254
|
+
Общие:
|
|
255
|
+
|
|
256
|
+
- `TELEGRAM_BOT_TOKEN`
|
|
257
|
+
- `TELEGRAM_BOT_USERNAME`
|
|
258
|
+
- `REDIS_HOST`
|
|
259
|
+
- `REDIS_PORT`
|
|
260
|
+
- `REDIS_DB`
|
|
261
|
+
- `MODE=queue|reject`
|
|
262
|
+
- `PAIR_CODE_TTL_SECONDS`
|
|
263
|
+
- `MCP_HTTP_HOST`
|
|
264
|
+
- `MCP_HTTP_PORT`
|
|
265
|
+
- `MCP_HTTP_PATH`
|
|
266
|
+
- `MCP_HTTP_BEARER_TOKEN`
|
|
267
|
+
- `TMUX_SOCKET_PATH`
|
|
268
|
+
- `TMUX_NUDGE_ENABLED`
|
|
269
|
+
- `TMUX_NUDGE_DEBOUNCE_SECONDS`
|
|
270
|
+
- `TMUX_NUDGE_COOLDOWN_SECONDS`
|
|
271
|
+
- `WEBAPP_ENABLED`
|
|
272
|
+
- `WEBAPP_BASE_PATH`
|
|
273
|
+
- `WEBAPP_LAUNCH_MODE=default|expand|fullscreen`
|
|
274
|
+
- `MCP_XCHANGE_DIR`
|
|
275
|
+
- `PROXY_USE=http|socks5`
|
|
276
|
+
- `HTTP_PROXY`
|
|
277
|
+
- `SOCKS5_PROXY`
|
|
278
|
+
|
|
279
|
+
Только client:
|
|
280
|
+
|
|
281
|
+
- `DISTRIBUTED_MODE=client`
|
|
282
|
+
- `GATEWAY_PUBLIC_URL`
|
|
283
|
+
- `GATEWAY_WS_URL`
|
|
284
|
+
- `GATEWAY_WS_PATH`
|
|
285
|
+
- `GATEWAY_AUTH_TOKEN`
|
|
286
|
+
|
|
287
|
+
Gateway / both:
|
|
288
|
+
|
|
289
|
+
- `DISTRIBUTED_MODE=gateway|both`
|
|
290
|
+
- `PORT`
|
|
291
|
+
- `ROOT_PREFIX=/api`
|
|
292
|
+
- `DB_HOST`
|
|
293
|
+
- `DB_PORT`
|
|
294
|
+
- `DB_USER`
|
|
295
|
+
- `DB_PASSWORD`
|
|
296
|
+
- `DB_NAME`
|
|
297
|
+
- `RMQ_HOST`
|
|
298
|
+
- `RMQ_PORT`
|
|
299
|
+
- `RMQ_USER`
|
|
300
|
+
- `RMQ_PASSWORD`
|
|
301
|
+
- `RMQ_VHOST`
|
|
302
|
+
- `RMQ_EXCHANGE`
|
|
303
|
+
|
|
304
|
+
Готовые шаблоны:
|
|
305
|
+
|
|
306
|
+
- `.env.example.client`
|
|
307
|
+
- `.env.example.gateway`
|
|
308
|
+
- `tellymcp init client|gateway|both`
|
|
309
|
+
|
|
310
|
+
## Что умеет
|
|
311
|
+
|
|
312
|
+
Базовый поток такой:
|
|
313
|
+
|
|
314
|
+
1. Агент создаёт или обновляет session context.
|
|
315
|
+
2. Агент вызывает `create_session_pair_code`.
|
|
316
|
+
3. Человек делает `/start <code>` или `/link <code>` в Telegram.
|
|
317
|
+
4. После pairing бот открывает меню сессий, inbox, storage, local/collab и live view.
|
|
318
|
+
5. Агент вызывает `ask_user_telegram` для связанной `session_id`.
|
|
319
|
+
6. Ответ пользователя возвращается как MCP tool output.
|
|
320
|
+
7. Несвязанные входящие Telegram-сообщения остаются в inbox этой сессии.
|
|
321
|
+
8. Файлы и note попадают в `.mcp-xchange`.
|
|
322
|
+
|
|
323
|
+
## Полезные команды
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
tellymcp help
|
|
327
|
+
tellymcp doctor --env .env
|
|
328
|
+
tellymcp mcp --help
|
|
329
|
+
tellymcp run --env .env
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
## Для разработки
|
|
333
|
+
|
|
334
|
+
См.:
|
|
335
|
+
|
|
336
|
+
- [README.md](README.md)
|
|
337
|
+
- [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md)
|
|
338
|
+
- [TOOLS.md](TOOLS.md)
|