@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.
Files changed (124) hide show
  1. package/.env.example.client +93 -0
  2. package/.env.example.gateway +120 -0
  3. package/CHANGELOG.md +155 -0
  4. package/LICENSE +21 -0
  5. package/README-ru.md +338 -0
  6. package/README.md +1262 -0
  7. package/STANDALONE-ru.md +266 -0
  8. package/STANDALONE.md +266 -0
  9. package/TOOLS.md +1296 -0
  10. package/config/templates/env.both.template +83 -0
  11. package/config/templates/env.client.template +60 -0
  12. package/config/templates/env.gateway.template +82 -0
  13. package/dist/cli.js +636 -0
  14. package/dist/index.js +17 -0
  15. package/dist/lib/logfeed/store.js +52 -0
  16. package/dist/lib/middlewares/tracer.js +172 -0
  17. package/dist/lib/mixins/db.js +267 -0
  18. package/dist/lib/mixins/logfeed.js +34 -0
  19. package/dist/lib/mixins/session.errors.js +142 -0
  20. package/dist/lib/moleculer.js +2 -0
  21. package/dist/lib/trace.js +147 -0
  22. package/dist/lib/traceContext.js +116 -0
  23. package/dist/moleculer.config.js +274 -0
  24. package/dist/services/features/telegram-mcp/approval.service.js +33 -0
  25. package/dist/services/features/telegram-mcp/browser.service.js +42 -0
  26. package/dist/services/features/telegram-mcp/collaboration.service.js +53 -0
  27. package/dist/services/features/telegram-mcp/ensuredb.service.js +337 -0
  28. package/dist/services/features/telegram-mcp/gateway-delivery.service.js +378 -0
  29. package/dist/services/features/telegram-mcp/gateway-loopback.js +10 -0
  30. package/dist/services/features/telegram-mcp/gateway-rmq.service.js +294 -0
  31. package/dist/services/features/telegram-mcp/gateway-socket.service.js +1463 -0
  32. package/dist/services/features/telegram-mcp/gateway.service.js +1141 -0
  33. package/dist/services/features/telegram-mcp/inbox.service.js +33 -0
  34. package/dist/services/features/telegram-mcp/mcp-http.service.js +76 -0
  35. package/dist/services/features/telegram-mcp/mcp-server.service.js +127 -0
  36. package/dist/services/features/telegram-mcp/notify.service.js +33 -0
  37. package/dist/services/features/telegram-mcp/pair.service.js +33 -0
  38. package/dist/services/features/telegram-mcp/runtime.service.js +36 -0
  39. package/dist/services/features/telegram-mcp/session-context.service.js +33 -0
  40. package/dist/services/features/telegram-mcp/src/app/bootstrap/runtime.js +103 -0
  41. package/dist/services/features/telegram-mcp/src/app/config/env.js +317 -0
  42. package/dist/services/features/telegram-mcp/src/app/http.js +774 -0
  43. package/dist/services/features/telegram-mcp/src/app/index.js +2 -0
  44. package/dist/services/features/telegram-mcp/src/app/providers/mcp/server.js +13 -0
  45. package/dist/services/features/telegram-mcp/src/app/providers/redis/client.js +18 -0
  46. package/dist/services/features/telegram-mcp/src/app/webapp/assets.js +740 -0
  47. package/dist/services/features/telegram-mcp/src/app/webapp/auth.js +267 -0
  48. package/dist/services/features/telegram-mcp/src/app/webapp/relay.js +69 -0
  49. package/dist/services/features/telegram-mcp/src/app/webapp/tmux.js +9 -0
  50. package/dist/services/features/telegram-mcp/src/entities/auth/model/types.js +2 -0
  51. package/dist/services/features/telegram-mcp/src/entities/browser/model/types.js +2 -0
  52. package/dist/services/features/telegram-mcp/src/entities/collaboration/model/types.js +2 -0
  53. package/dist/services/features/telegram-mcp/src/entities/inbox/model/types.js +2 -0
  54. package/dist/services/features/telegram-mcp/src/entities/request/model/schema.js +545 -0
  55. package/dist/services/features/telegram-mcp/src/entities/request/model/types.js +2 -0
  56. package/dist/services/features/telegram-mcp/src/entities/session/model/types.js +2 -0
  57. package/dist/services/features/telegram-mcp/src/features/ask-user/model/askUserTelegram.js +33 -0
  58. package/dist/services/features/telegram-mcp/src/features/browser/model/browserClearLogsTool.js +28 -0
  59. package/dist/services/features/telegram-mcp/src/features/browser/model/browserClickTool.js +28 -0
  60. package/dist/services/features/telegram-mcp/src/features/browser/model/browserCloseTool.js +28 -0
  61. package/dist/services/features/telegram-mcp/src/features/browser/model/browserComputedStyleTool.js +28 -0
  62. package/dist/services/features/telegram-mcp/src/features/browser/model/browserConsoleTool.js +28 -0
  63. package/dist/services/features/telegram-mcp/src/features/browser/model/browserDomTool.js +28 -0
  64. package/dist/services/features/telegram-mcp/src/features/browser/model/browserErrorsTool.js +28 -0
  65. package/dist/services/features/telegram-mcp/src/features/browser/model/browserFillTool.js +28 -0
  66. package/dist/services/features/telegram-mcp/src/features/browser/model/browserNetworkFailuresTool.js +28 -0
  67. package/dist/services/features/telegram-mcp/src/features/browser/model/browserOpenTool.js +33 -0
  68. package/dist/services/features/telegram-mcp/src/features/browser/model/browserPressTool.js +28 -0
  69. package/dist/services/features/telegram-mcp/src/features/browser/model/browserReloadTool.js +28 -0
  70. package/dist/services/features/telegram-mcp/src/features/browser/model/browserScreenshotTool.js +28 -0
  71. package/dist/services/features/telegram-mcp/src/features/browser/model/browserService.js +689 -0
  72. package/dist/services/features/telegram-mcp/src/features/browser/model/browserWaitForTool.js +28 -0
  73. package/dist/services/features/telegram-mcp/src/features/browser/model/browserWaitForUrlTool.js +28 -0
  74. package/dist/services/features/telegram-mcp/src/features/collaboration/model/backend.js +2 -0
  75. package/dist/services/features/telegram-mcp/src/features/collaboration/model/collaborationService.js +26 -0
  76. package/dist/services/features/telegram-mcp/src/features/collaboration/model/localCollaborationBackend.js +390 -0
  77. package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileService.js +102 -0
  78. package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileTool.js +33 -0
  79. package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerNoteTool.js +33 -0
  80. package/dist/services/features/telegram-mcp/src/features/distributed-client/model/gatewayCollaborationBackend.js +69 -0
  81. package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/gatewayHttpService.js +657 -0
  82. package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/gatewayReplyResolution.js +17 -0
  83. package/dist/services/features/telegram-mcp/src/features/inbox/model/deleteTelegramInboxMessageTool.js +33 -0
  84. package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxCountTool.js +33 -0
  85. package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxTool.js +33 -0
  86. package/dist/services/features/telegram-mcp/src/features/inbox/model/inboxService.js +77 -0
  87. package/dist/services/features/telegram-mcp/src/features/notify/model/notifyService.js +93 -0
  88. package/dist/services/features/telegram-mcp/src/features/notify/model/notifyTelegramTool.js +33 -0
  89. package/dist/services/features/telegram-mcp/src/features/pair-session/model/clearSessionPairingTool.js +33 -0
  90. package/dist/services/features/telegram-mcp/src/features/pair-session/model/createSessionPairCodeTool.js +33 -0
  91. package/dist/services/features/telegram-mcp/src/features/pair-session/model/generatePairCode.js +202 -0
  92. package/dist/services/features/telegram-mcp/src/features/session-context/model/clearSessionContextTool.js +33 -0
  93. package/dist/services/features/telegram-mcp/src/features/session-context/model/getSessionContextTool.js +33 -0
  94. package/dist/services/features/telegram-mcp/src/features/session-context/model/getTmuxTargetTool.js +33 -0
  95. package/dist/services/features/telegram-mcp/src/features/session-context/model/renameSessionTool.js +33 -0
  96. package/dist/services/features/telegram-mcp/src/features/session-context/model/sessionContextService.js +409 -0
  97. package/dist/services/features/telegram-mcp/src/features/session-context/model/setSessionContextTool.js +33 -0
  98. package/dist/services/features/telegram-mcp/src/features/session-context/model/setTmuxTargetTool.js +33 -0
  99. package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownService.js +123 -0
  100. package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownTool.js +33 -0
  101. package/dist/services/features/telegram-mcp/src/processes/human-approval/model/orchestrator.js +243 -0
  102. package/dist/services/features/telegram-mcp/src/shared/api/storage/contract.js +2 -0
  103. package/dist/services/features/telegram-mcp/src/shared/api/tool-registry/registry.js +8 -0
  104. package/dist/services/features/telegram-mcp/src/shared/api/tool-registry/types.js +2 -0
  105. package/dist/services/features/telegram-mcp/src/shared/api/transport/contract.js +2 -0
  106. package/dist/services/features/telegram-mcp/src/shared/integrations/object-storage/minioExchangeStore.js +86 -0
  107. package/dist/services/features/telegram-mcp/src/shared/integrations/redis/stateStore.js +436 -0
  108. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/collabSemantics.js +21 -0
  109. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/collabUi.js +87 -0
  110. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/messageFormat.js +60 -0
  111. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/proxyFetch.js +46 -0
  112. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transport.js +6534 -0
  113. package/dist/services/features/telegram-mcp/src/shared/integrations/tmux/client.js +280 -0
  114. package/dist/services/features/telegram-mcp/src/shared/lib/ids/ids.js +34 -0
  115. package/dist/services/features/telegram-mcp/src/shared/lib/logger/logger.js +68 -0
  116. package/dist/services/features/telegram-mcp/src/shared/lib/project-identity/projectIdentity.js +223 -0
  117. package/dist/services/features/telegram-mcp/src/shared/lib/redact-secrets/redactSecrets.js +22 -0
  118. package/dist/services/features/telegram-mcp/src/shared/lib/truncate/truncate.js +12 -0
  119. package/dist/services/features/telegram-mcp/src/shared/lib/version/versionHandshake.js +124 -0
  120. package/dist/services/features/telegram-mcp/src/shared/types/common.js +2 -0
  121. package/dist/services/features/telegram-mcp/standalone-http.service.js +113 -0
  122. package/dist/services/features/telegram-mcp/tools-sync.service.js +33 -0
  123. package/package.json +110 -0
  124. 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.