@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
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# TellyMCP: пример конфигурации клиентского узла.
|
|
2
|
+
|
|
3
|
+
# Токен Telegram-бота для этой клиентской машины.
|
|
4
|
+
TELEGRAM_BOT_TOKEN=
|
|
5
|
+
# Username бота, с @ или без.
|
|
6
|
+
TELEGRAM_BOT_USERNAME=
|
|
7
|
+
# Необязательная подпись проекта/сессии в prompt и note.
|
|
8
|
+
PROJECT_NAME=
|
|
9
|
+
|
|
10
|
+
# Redis для состояния сессий, меню, inbox и привязок.
|
|
11
|
+
REDIS_HOST=127.0.0.1
|
|
12
|
+
REDIS_PORT=6379
|
|
13
|
+
REDIS_DB=1
|
|
14
|
+
# REDIS_USERNAME=
|
|
15
|
+
# REDIS_PASSWORD=
|
|
16
|
+
|
|
17
|
+
# Режим входящих запросов: queue или reject.
|
|
18
|
+
MODE=queue
|
|
19
|
+
# TTL pair-code в секундах.
|
|
20
|
+
PAIR_CODE_TTL_SECONDS=600
|
|
21
|
+
|
|
22
|
+
# Локальный standalone MCP endpoint для агента в client-режиме.
|
|
23
|
+
MCP_HTTP_HOST=127.0.0.1
|
|
24
|
+
MCP_HTTP_PORT=8787
|
|
25
|
+
MCP_HTTP_PATH=/mcp
|
|
26
|
+
# MCP_HTTP_BEARER_TOKEN=
|
|
27
|
+
MCP_HTTP_ENABLE_DEBUG_ROUTES=false
|
|
28
|
+
MCP_HTTP_ENABLE_PRUNE_ROUTE=false
|
|
29
|
+
|
|
30
|
+
# Режим распределённой работы клиента.
|
|
31
|
+
DISTRIBUTED_MODE=client
|
|
32
|
+
# Публичный HTTP URL шлюза.
|
|
33
|
+
GATEWAY_PUBLIC_URL=
|
|
34
|
+
# Публичный WS URL шлюза.
|
|
35
|
+
GATEWAY_WS_URL=
|
|
36
|
+
# WS path на шлюзе.
|
|
37
|
+
GATEWAY_WS_PATH=/api/gateway/ws
|
|
38
|
+
# Необязательный bearer для gateway endpoints.
|
|
39
|
+
GATEWAY_AUTH_TOKEN=
|
|
40
|
+
|
|
41
|
+
# Включение Telegram Mini App / Live view.
|
|
42
|
+
WEBAPP_ENABLED=true
|
|
43
|
+
WEBAPP_BASE_PATH=/webapp
|
|
44
|
+
# WEBAPP_PUBLIC_URL=
|
|
45
|
+
WEBAPP_INITDATA_TTL_SECONDS=300
|
|
46
|
+
WEBAPP_SESSION_TTL_SECONDS=900
|
|
47
|
+
WEBAPP_LAUNCH_MODE=fullscreen
|
|
48
|
+
WEBAPP_VISIBLE_SCREENS=2
|
|
49
|
+
WEBAPP_POLL_INTERVAL_MS=2000
|
|
50
|
+
WEBAPP_ACTION_COOLDOWN_MS=150
|
|
51
|
+
|
|
52
|
+
# Локальная папка обмена файлами и note.
|
|
53
|
+
MCP_XCHANGE_DIR=.mcp-xchange
|
|
54
|
+
|
|
55
|
+
# Tmux nudges и live-capture.
|
|
56
|
+
TMUX_NUDGE_ENABLED=true
|
|
57
|
+
TMUX_NUDGE_DEBOUNCE_SECONDS=10
|
|
58
|
+
TMUX_NUDGE_COOLDOWN_SECONDS=30
|
|
59
|
+
TMUX_NUDGE_MESSAGE=проверь inbox
|
|
60
|
+
TMUX_PARTNER_NUDGE_MESSAGE=не inbox: прочитай SHARED_INDEX.md и partner note
|
|
61
|
+
TMUX_CAPTURE_MODE=visible
|
|
62
|
+
TMUX_CAPTURE_LINES=300
|
|
63
|
+
# TMUX_SOCKET_PATH=
|
|
64
|
+
|
|
65
|
+
# Browser integration.
|
|
66
|
+
BROWSER_ENABLED=true
|
|
67
|
+
BROWSER_HEADLESS=false
|
|
68
|
+
BROWSER_DEVTOOLS=false
|
|
69
|
+
BROWSER_ADDRESS=http://localhost:5173
|
|
70
|
+
BROWSER_TIMEOUT_MS=20000
|
|
71
|
+
BROWSER_MAX_EVENTS=200
|
|
72
|
+
BROWSER_WAIT_UNTIL=load
|
|
73
|
+
# BROWSER_EXECUTABLE_PATH=
|
|
74
|
+
# BROWSER_CHANNEL=chrome
|
|
75
|
+
BROWSER_SLOW_MO_MS=0
|
|
76
|
+
|
|
77
|
+
# Общие лимиты Telegram UI.
|
|
78
|
+
TELEGRAM_POLL_INTERVAL_MS=2000
|
|
79
|
+
TELEGRAM_DEFAULT_TIMEOUT_SECONDS=900
|
|
80
|
+
TELEGRAM_MAX_CONTEXT_CHARS=3000
|
|
81
|
+
TELEGRAM_MAX_QUESTION_CHARS=1000
|
|
82
|
+
TELEGRAM_MAX_MESSAGE_CHARS=3900
|
|
83
|
+
TELEGRAM_INBOX_BATCH_SIZE=20
|
|
84
|
+
TELEGRAM_MENU_PAYLOAD_TTL_SECONDS=300
|
|
85
|
+
|
|
86
|
+
# Необязательные прокси.
|
|
87
|
+
PROXY_USE=
|
|
88
|
+
HTTP_PROXY=
|
|
89
|
+
SOCKS5_PROXY=
|
|
90
|
+
|
|
91
|
+
# Логирование.
|
|
92
|
+
LOG_LEVEL=info
|
|
93
|
+
ENABLE_LOGFEED=0
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# TellyMCP: пример конфигурации шлюза
|
|
2
|
+
|
|
3
|
+
# Токен Telegram-бота шлюза.
|
|
4
|
+
TELEGRAM_BOT_TOKEN=
|
|
5
|
+
# Username бота, с @ или без.
|
|
6
|
+
TELEGRAM_BOT_USERNAME=
|
|
7
|
+
# Необязательная подпись проекта/сессии.
|
|
8
|
+
PROJECT_NAME=
|
|
9
|
+
|
|
10
|
+
# Redis для состояния сессий, меню, inbox и привязок.
|
|
11
|
+
REDIS_HOST=127.0.0.1
|
|
12
|
+
REDIS_PORT=6379
|
|
13
|
+
REDIS_DB=1
|
|
14
|
+
# REDIS_USERNAME=
|
|
15
|
+
# REDIS_PASSWORD=
|
|
16
|
+
|
|
17
|
+
# Режим входящих запросов: queue или reject.
|
|
18
|
+
MODE=queue
|
|
19
|
+
# TTL pair-code в секундах.
|
|
20
|
+
PAIR_CODE_TTL_SECONDS=600
|
|
21
|
+
|
|
22
|
+
# Настройки MCP endpoint. Во внешнем gateway/both bind используется PORT + ROOT_PREFIX.
|
|
23
|
+
MCP_HTTP_HOST=127.0.0.1
|
|
24
|
+
# MCP path берётся отсюда; порт служит fallback, если PORT не задан.
|
|
25
|
+
MCP_HTTP_PORT=8787
|
|
26
|
+
MCP_HTTP_PATH=/mcp
|
|
27
|
+
# MCP_HTTP_BEARER_TOKEN=
|
|
28
|
+
MCP_HTTP_ENABLE_DEBUG_ROUTES=false
|
|
29
|
+
MCP_HTTP_ENABLE_PRUNE_ROUTE=false
|
|
30
|
+
|
|
31
|
+
# Режим распределённой работы шлюза.
|
|
32
|
+
DISTRIBUTED_MODE=gateway
|
|
33
|
+
# Публичный HTTP URL шлюза.
|
|
34
|
+
GATEWAY_PUBLIC_URL=
|
|
35
|
+
# WS path на общем ingress.
|
|
36
|
+
GATEWAY_WS_PATH=/api/gateway/ws
|
|
37
|
+
# Необязательный bearer для gateway endpoints.
|
|
38
|
+
GATEWAY_AUTH_TOKEN=
|
|
39
|
+
|
|
40
|
+
# Общий backend ingress.
|
|
41
|
+
ROOT_PREFIX=/api
|
|
42
|
+
APP_NAME=tellymcp-gateway
|
|
43
|
+
NAMESPACE=mcp
|
|
44
|
+
NODE_ID=gateway
|
|
45
|
+
PORT=8080
|
|
46
|
+
|
|
47
|
+
# Postgres для gateway metadata.
|
|
48
|
+
DB_HOST=127.0.0.1
|
|
49
|
+
DB_PORT=5432
|
|
50
|
+
DB_USER=
|
|
51
|
+
DB_PASSWORD=
|
|
52
|
+
DB_NAME=
|
|
53
|
+
DB_SCHEME=mcp
|
|
54
|
+
|
|
55
|
+
# RabbitMQ для durable fanout на шлюзе.
|
|
56
|
+
# RMQ_HOST=127.0.0.1
|
|
57
|
+
# RMQ_PORT=5672
|
|
58
|
+
# RMQ_USER=
|
|
59
|
+
# RMQ_PASSWORD=
|
|
60
|
+
# RMQ_VHOST=/
|
|
61
|
+
# RMQ_EXCHANGE=tellymcp
|
|
62
|
+
|
|
63
|
+
# Включение Telegram Mini App / Live view.
|
|
64
|
+
WEBAPP_ENABLED=true
|
|
65
|
+
WEBAPP_BASE_PATH=/webapp
|
|
66
|
+
WEBAPP_PUBLIC_URL=
|
|
67
|
+
WEBAPP_INITDATA_TTL_SECONDS=300
|
|
68
|
+
WEBAPP_SESSION_TTL_SECONDS=900
|
|
69
|
+
WEBAPP_LAUNCH_MODE=fullscreen
|
|
70
|
+
WEBAPP_VISIBLE_SCREENS=2
|
|
71
|
+
WEBAPP_POLL_INTERVAL_MS=2000
|
|
72
|
+
WEBAPP_ACTION_COOLDOWN_MS=150
|
|
73
|
+
|
|
74
|
+
# Локальная папка обмена файлами и note.
|
|
75
|
+
MCP_XCHANGE_DIR=.mcp-xchange
|
|
76
|
+
|
|
77
|
+
# Tmux nudges и live-capture.
|
|
78
|
+
TMUX_NUDGE_ENABLED=true
|
|
79
|
+
TMUX_NUDGE_DEBOUNCE_SECONDS=10
|
|
80
|
+
TMUX_NUDGE_COOLDOWN_SECONDS=30
|
|
81
|
+
TMUX_NUDGE_MESSAGE=проверь inbox
|
|
82
|
+
TMUX_PARTNER_NUDGE_MESSAGE=не inbox: прочитай SHARED_INDEX.md и partner note
|
|
83
|
+
TMUX_CAPTURE_MODE=visible
|
|
84
|
+
TMUX_CAPTURE_LINES=300
|
|
85
|
+
# TMUX_SOCKET_PATH=
|
|
86
|
+
|
|
87
|
+
# Browser integration.
|
|
88
|
+
BROWSER_ENABLED=true
|
|
89
|
+
BROWSER_HEADLESS=false
|
|
90
|
+
BROWSER_DEVTOOLS=false
|
|
91
|
+
BROWSER_ADDRESS=http://localhost:5173
|
|
92
|
+
BROWSER_TIMEOUT_MS=20000
|
|
93
|
+
BROWSER_MAX_EVENTS=200
|
|
94
|
+
BROWSER_WAIT_UNTIL=load
|
|
95
|
+
# BROWSER_EXECUTABLE_PATH=
|
|
96
|
+
# BROWSER_CHANNEL=chrome
|
|
97
|
+
BROWSER_SLOW_MO_MS=0
|
|
98
|
+
|
|
99
|
+
# Общие лимиты Telegram UI.
|
|
100
|
+
TELEGRAM_POLL_INTERVAL_MS=2000
|
|
101
|
+
TELEGRAM_DEFAULT_TIMEOUT_SECONDS=900
|
|
102
|
+
TELEGRAM_MAX_CONTEXT_CHARS=3000
|
|
103
|
+
TELEGRAM_MAX_QUESTION_CHARS=1000
|
|
104
|
+
TELEGRAM_MAX_MESSAGE_CHARS=3900
|
|
105
|
+
TELEGRAM_INBOX_BATCH_SIZE=20
|
|
106
|
+
TELEGRAM_MENU_PAYLOAD_TTL_SECONDS=300
|
|
107
|
+
|
|
108
|
+
# Необязательные прокси.
|
|
109
|
+
PROXY_USE=
|
|
110
|
+
HTTP_PROXY=
|
|
111
|
+
SOCKS5_PROXY=
|
|
112
|
+
|
|
113
|
+
# Логирование.
|
|
114
|
+
LOG_LEVEL=info
|
|
115
|
+
ENABLE_LOGFEED=0
|
|
116
|
+
LOG_FILE_ENABLED=false
|
|
117
|
+
|
|
118
|
+
# Секреты шлюза.
|
|
119
|
+
SESSION_SECRET=change_me_session_secret
|
|
120
|
+
TOKEN_BINDING_SECRET=change_me_token_binding_secret
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- Перенос `telegram_mcp` на сервисную архитектуру `Moleculer`:
|
|
7
|
+
- `telegramMcp.runtime`
|
|
8
|
+
- `telegramMcp.http`
|
|
9
|
+
- `telegramMcp.browser`
|
|
10
|
+
- `telegramMcp.collaboration`
|
|
11
|
+
- `telegramMcp.gateway`
|
|
12
|
+
- `telegramMcp.gatewayDelivery`
|
|
13
|
+
- `telegramMcp.ensuredb`
|
|
14
|
+
- MCP и WebApp теперь работают через общий HTTP runtime под `${ROOT_PREFIX}`:
|
|
15
|
+
- `${ROOT_PREFIX}/mcp`
|
|
16
|
+
- `${ROOT_PREFIX}/webapp`
|
|
17
|
+
- `${ROOT_PREFIX}/healthz`
|
|
18
|
+
- `${ROOT_PREFIX}/gateway`
|
|
19
|
+
- Добавлены проекты для межмашинной коллаборации:
|
|
20
|
+
- создание проекта
|
|
21
|
+
- join по invite token
|
|
22
|
+
- список проектов
|
|
23
|
+
- выход из проекта
|
|
24
|
+
- список сессий проекта
|
|
25
|
+
- Добавлен project-based remote flow между разными машинами и разными ботами.
|
|
26
|
+
- Добавлен `📦 Storage` в session menu:
|
|
27
|
+
- просмотр `.mcp-xchange` по текущей сессии
|
|
28
|
+
- открытие storage entry
|
|
29
|
+
- отправка note/file обратно в Telegram
|
|
30
|
+
- Добавлен `ws`-only control plane:
|
|
31
|
+
- `Live`
|
|
32
|
+
- delivery push
|
|
33
|
+
- delivery status updates
|
|
34
|
+
- project join/leave notifications
|
|
35
|
+
- Добавлен gateway-side `RabbitMQ` fanout:
|
|
36
|
+
- `delivery.queued`
|
|
37
|
+
- `delivery.status`
|
|
38
|
+
- `project.member_joined`
|
|
39
|
+
- `project.member_left`
|
|
40
|
+
- Добавлены sender-side delivery notices со статусами Telegram-сообщений:
|
|
41
|
+
- `⏳ в очереди`
|
|
42
|
+
- `✅ доставка выполнена`
|
|
43
|
+
- `❌ доставка не выполнена`
|
|
44
|
+
- Добавлен gateway-relayed `Live View`:
|
|
45
|
+
- Mini App может открываться через домен gateway
|
|
46
|
+
- клиентской машине не нужен собственный публичный домен
|
|
47
|
+
- relay работает для `bootstrap/view/action`
|
|
48
|
+
- Добавлены входящие Telegram-уведомления о remote delivery с контекстом:
|
|
49
|
+
- проект
|
|
50
|
+
- сессия
|
|
51
|
+
- отправитель
|
|
52
|
+
- список файлов
|
|
53
|
+
- Добавлены `LOCAL_INDEX.md` и `SHARED_INDEX.md` для унифицированного note-based обмена.
|
|
54
|
+
- Добавлен `send_partner_file` для реальной передачи локального файла через partner delivery.
|
|
55
|
+
- Добавлена `TOOLS.md` hash-синхронизация между gateway и client:
|
|
56
|
+
- `session_tools` в `ws hello`
|
|
57
|
+
- `tools_event` при mismatch
|
|
58
|
+
- client-side self-check после `hello_ack`
|
|
59
|
+
- периодический recheck online клиентов на gateway
|
|
60
|
+
- Добавлен version-handshake в `ws hello/hello_ack`:
|
|
61
|
+
- client отправляет `package_version`, `protocol_version`, `capabilities`
|
|
62
|
+
- gateway отвечает своим version/protocol/capabilities и verdict `ok|warn|reject`
|
|
63
|
+
- major protocol mismatch теперь блокирует transport до обновления старой стороны
|
|
64
|
+
- Добавлены system inbox messages с `message_kind = "system"` для operational инструкций.
|
|
65
|
+
- В `TOOLS.md` введён явный human-readable version marker.
|
|
66
|
+
- Добавлен `Collab -> Tools -> History`:
|
|
67
|
+
- one-shot export `.md`
|
|
68
|
+
- последние 5 Collab-событий текущей активной сессии
|
|
69
|
+
- без отдельного submenu и без новой таблицы
|
|
70
|
+
- Добавлен publish-ready npm/CLI контур:
|
|
71
|
+
- package name `@deadragdoll/tellymcp`
|
|
72
|
+
- bin `tellymcp`
|
|
73
|
+
- команды `init` и `run`
|
|
74
|
+
- безопасные packaged templates для `.env`
|
|
75
|
+
|
|
76
|
+
### Changed
|
|
77
|
+
- Полностью убран `stdio`-режим. `telegram_mcp` работает только через REST/MCP over HTTP.
|
|
78
|
+
- Локальный standalone HTTP listener убран; `telegram_mcp` больше не поднимает отдельный сервер вне Moleculer gateway.
|
|
79
|
+
- UI Telegram переосмыслен по двум режимам:
|
|
80
|
+
- `🏠 Local` для локальной разработки и link внутри одного бота
|
|
81
|
+
- `👥 Collab` для gateway/projects сценария
|
|
82
|
+
- Project flow упрощён:
|
|
83
|
+
- вход в проект сразу открывает участников
|
|
84
|
+
- отдельный `Set current` перестал быть обязательным для работы
|
|
85
|
+
- `Members` теперь используются как точка выбора remote target session внутри проекта.
|
|
86
|
+
- Отправка `Ask / Share / File` в `Collab` переведена на session-targeted messaging через gateway.
|
|
87
|
+
- Exchange files больше не зависят от `vfs/minio` в активном Telegram handoff path.
|
|
88
|
+
- Top-level `Files` меню удалено:
|
|
89
|
+
- upload в открытой session/target context сразу создаёт handoff
|
|
90
|
+
- `Local` и `Collab` стали основными точками file delivery
|
|
91
|
+
- Для upload и screenshot VFS path стал более устойчивым к коллизиям имён:
|
|
92
|
+
- `files/YYYY-MM-DD/HH-mm-ss/<name>`
|
|
93
|
+
- `screenshots/YYYY-MM-DD/HH-mm-ss/<name>`
|
|
94
|
+
- Для project members добавлен более понятный label:
|
|
95
|
+
- `{session} · 👤{telegram_username} / 🤖{botname}`
|
|
96
|
+
- HTTP fallback для `Live` и delivery удалён:
|
|
97
|
+
- больше нет `cron`
|
|
98
|
+
- больше нет `poll/respond/status` HTTP fallback path
|
|
99
|
+
- основной transport теперь `ws`
|
|
100
|
+
- Для `Collab -> Project -> Member` уточнена семантика действий:
|
|
101
|
+
- `Ask` адресуется выбранной сессии
|
|
102
|
+
- `Share` ставит задачу текущей сессии отправить результат в выбранную
|
|
103
|
+
- `Live` добавлен второй строкой под `Ask | Share`
|
|
104
|
+
- `Live` теперь требует подтверждения выбранной target-сессии
|
|
105
|
+
- file upload в member screen остаётся прямой доставкой в target session
|
|
106
|
+
- Состояние `TOOLS.md` по сессии теперь разделено:
|
|
107
|
+
- `lastSeenToolsHash` = реально применённый локально hash
|
|
108
|
+
- `lastNotifiedToolsHash` = hash, про который уже отправляли уведомление
|
|
109
|
+
- Основная install-модель смещена на:
|
|
110
|
+
- `npm install -g @deadragdoll/tellymcp`
|
|
111
|
+
- `tellymcp init <client|gateway|both>`
|
|
112
|
+
- `tellymcp run`
|
|
113
|
+
- старый `go/node tmux-proxy` path полностью удалён, поддерживается только прямой локальный `tmux`
|
|
114
|
+
|
|
115
|
+
### Fixed
|
|
116
|
+
- Исправлен `Headers have already sent` при работе MCP/WebApp через общий HTTP runtime.
|
|
117
|
+
- Исправлены route/alias проблемы после перехода под `${ROOT_PREFIX}`.
|
|
118
|
+
- Исправлены зависания Mini App bootstrap и проблемы с relative WebApp routes.
|
|
119
|
+
- Исправлены wildcard routes после стабилизации общего HTTP runtime.
|
|
120
|
+
- Исправлен рекурсивный `logfeed -> graphql.publish -> logfeed` loop.
|
|
121
|
+
- Исправлены ошибки duplicate SSE stream и приглушён лишний шум в логах.
|
|
122
|
+
- Исправлены скрытые попытки инициализации Postgres в `client` режиме:
|
|
123
|
+
- gateway DB bootstrap отключается
|
|
124
|
+
- `DBMixin` умеет работать в no-op режиме без `DB_HOST`
|
|
125
|
+
- Исправлены project session registrations:
|
|
126
|
+
- одна и та же локальная session теперь может жить в нескольких проектах
|
|
127
|
+
- Исправлены задержки gateway poller:
|
|
128
|
+
- переход на cron/event tick
|
|
129
|
+
- таймауты для poll/ack
|
|
130
|
+
- корректный shutdown без лишнего warning
|
|
131
|
+
- Исправлены циклические повторы битых gateway deliveries:
|
|
132
|
+
- irrecoverable delivery помечается как `failed`
|
|
133
|
+
- poll больше не пытается бесконечно дочитать несуществующий объект
|
|
134
|
+
- Исправлены падения при чтении битых `storageRef`:
|
|
135
|
+
- больше нет `Buffer.from(BackendError)`
|
|
136
|
+
- ошибки чтения и resolve теперь обрабатываются явно
|
|
137
|
+
- Исправлены sender-side/receiver-side статусы и сообщения по remote file exchange.
|
|
138
|
+
- Исправлены временные синтаксические и debug-хвосты в Mini App `Live` relay shell.
|
|
139
|
+
- Исправлен project reply path:
|
|
140
|
+
- gateway теперь принимает `in_reply_to` как `message_uuid` или как note `share_id`
|
|
141
|
+
- во входящих notes/уведомлениях добавлены `Reply Params` и `Reply message_uuid`
|
|
142
|
+
- Исправлен loopback delivery для режима `both` на gateway-машине.
|
|
143
|
+
- Устаревшие Telegram member-menu сообщения теперь удаляются при клике по stale payload.
|
|
144
|
+
- Исправлена валидация `get_telegram_inbox` для системных сообщений с `telegram_message_id = 0`.
|
|
145
|
+
- Исправлены повторные холостые `TOOLS.md` alerts по одному и тому же hash.
|
|
146
|
+
- Исправлен reconnect-case для `TOOLS.md` sync:
|
|
147
|
+
- если server-side push был пропущен, client сам сверяет hash после `hello_ack`
|
|
148
|
+
- Исправлен self-check `TOOLS.md` в `DISTRIBUTED_MODE=both`:
|
|
149
|
+
- локальный gateway hash берётся без лишнего `fetch`
|
|
150
|
+
- `doctor` стал mode-aware:
|
|
151
|
+
- `client` теперь проверяет внешний gateway `healthz`, `ws`, и public webapp URL
|
|
152
|
+
- `gateway/both` теперь проверяют local/public `healthz`, public `ws/webapp`, `postgres`, `rmq`
|
|
153
|
+
- Исправлен build-контур для npm publish:
|
|
154
|
+
- `dist` теперь всегда очищается перед сборкой
|
|
155
|
+
- stale legacy build artifacts больше не попадают в пакет
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 code4bones
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|