@deadragdoll/tellymcp 0.0.10 → 0.0.12

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 (154) hide show
  1. package/.env.example.client +42 -52
  2. package/.env.example.gateway +48 -62
  3. package/CHANGELOG.md +3 -3
  4. package/README-ru.md +226 -376
  5. package/README.md +213 -1184
  6. package/TOOLS.md +320 -377
  7. package/VERSION.md +13 -13
  8. package/config/codex/plugins/telly-workflows/.codex-plugin/plugin.json +18 -0
  9. package/config/codex/plugins/telly-workflows/references/invariants.md +10 -0
  10. package/config/codex/plugins/telly-workflows/skills/telly-browser-screenshot/SKILL.md +27 -0
  11. package/config/codex/plugins/telly-workflows/skills/telly-collab-artifact/SKILL.md +22 -0
  12. package/config/codex/plugins/telly-workflows/skills/telly-human-telegram/SKILL.md +31 -0
  13. package/config/codex/plugins/telly-workflows/skills/telly-partner-note/SKILL.md +36 -0
  14. package/config/templates/env.both.template +39 -20
  15. package/config/templates/env.client.template +34 -19
  16. package/config/templates/env.gateway.template +37 -22
  17. package/dist/cli.js +322 -75
  18. package/dist/codexPluginInstaller.js +215 -0
  19. package/dist/lib/mixins/session.errors.js +34 -1
  20. package/dist/lib/pinoTargets.js +2 -2
  21. package/dist/moleculer.config.js +7 -5
  22. package/dist/services/features/telegram-mcp/browser.service.js +94 -1
  23. package/dist/services/features/telegram-mcp/collaboration.service.js +40 -3
  24. package/dist/services/features/telegram-mcp/ensuredb.service.js +145 -26
  25. package/dist/services/features/telegram-mcp/gateway-delivery.service.js +285 -103
  26. package/dist/services/features/telegram-mcp/gateway-socket.service.js +907 -85
  27. package/dist/services/features/telegram-mcp/gateway.service.js +876 -81
  28. package/dist/services/features/telegram-mcp/mcp-http.service.js +8 -0
  29. package/dist/services/features/telegram-mcp/mcp-server.service.js +17 -26
  30. package/dist/services/features/telegram-mcp/notify.service.js +127 -1
  31. package/dist/services/features/telegram-mcp/session-context.service.js +28 -1
  32. package/dist/services/features/telegram-mcp/src/app/bootstrap/runtime.js +132 -10
  33. package/dist/services/features/telegram-mcp/src/app/config/env.js +158 -52
  34. package/dist/services/features/telegram-mcp/src/app/http.js +375 -42
  35. package/dist/services/features/telegram-mcp/src/app/webapp/assets.js +386 -58
  36. package/dist/services/features/telegram-mcp/src/app/webapp/auth.js +3 -0
  37. package/dist/services/features/telegram-mcp/src/app/webapp/terminal.js +12 -0
  38. package/dist/services/features/telegram-mcp/src/entities/request/model/schema.js +120 -104
  39. package/dist/services/features/telegram-mcp/src/entities/xchange/model/types.js +2 -0
  40. package/dist/services/features/telegram-mcp/src/features/ask-user/model/askUserTelegram.js +1 -1
  41. package/dist/services/features/telegram-mcp/src/features/browser/model/browserOpenTool.js +1 -1
  42. package/dist/services/features/telegram-mcp/src/features/browser/model/browserScreenshotTool.js +1 -1
  43. package/dist/services/features/telegram-mcp/src/features/browser/model/browserService.js +306 -26
  44. package/dist/services/features/telegram-mcp/src/features/collaboration/model/gatewaySessionsService.js +71 -0
  45. package/dist/services/features/telegram-mcp/src/features/collaboration/model/listGatewaySessionsTool.js +33 -0
  46. package/dist/services/features/telegram-mcp/src/features/collaboration/model/localCollaborationBackend.js +93 -82
  47. package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileService.js +47 -5
  48. package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileTool.js +1 -1
  49. package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerNoteTool.js +1 -1
  50. package/dist/services/features/telegram-mcp/src/features/distributed-client/model/gatewayClientAccess.js +82 -0
  51. package/dist/services/features/telegram-mcp/src/features/distributed-client/model/gatewayCollaborationBackend.js +22 -14
  52. package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/gatewayHttpService.js +697 -75
  53. package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/remoteConsoleActionClient.js +76 -0
  54. package/dist/services/features/telegram-mcp/src/features/embedded-runtime/model/embeddedRuntimeBroker.js +92 -0
  55. package/dist/services/features/telegram-mcp/src/features/foreground-terminal/model/foregroundTerminalRuntime.js +192 -0
  56. package/dist/services/features/telegram-mcp/src/features/notify/model/notifyService.js +382 -3
  57. package/dist/services/features/telegram-mcp/src/features/notify/model/notifyTelegramTool.js +1 -1
  58. package/dist/services/features/telegram-mcp/src/features/notify/model/sendFileToTelegramTool.js +33 -0
  59. package/dist/services/features/telegram-mcp/src/features/session-context/model/clearSessionContextTool.js +1 -1
  60. package/dist/services/features/telegram-mcp/src/features/session-context/model/getSessionContextTool.js +1 -1
  61. package/dist/services/features/telegram-mcp/src/features/session-context/model/renameSessionTool.js +1 -1
  62. package/dist/services/features/telegram-mcp/src/features/session-context/model/sessionContextService.js +42 -200
  63. package/dist/services/features/telegram-mcp/src/features/session-context/model/setSessionContextTool.js +1 -1
  64. package/dist/services/features/telegram-mcp/src/features/terminal-buffer/model/terminalBufferService.js +96 -0
  65. package/dist/services/features/telegram-mcp/src/features/terminal-input/model/terminalInputService.js +97 -0
  66. package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownService.js +107 -58
  67. package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownTool.js +1 -1
  68. package/dist/services/features/telegram-mcp/src/features/xchange/model/getXchangeRecordTool.js +28 -0
  69. package/dist/services/features/telegram-mcp/src/features/xchange/model/listXchangeRecordsTool.js +28 -0
  70. package/dist/services/features/telegram-mcp/src/features/xchange/model/markXchangeRecordReadTool.js +28 -0
  71. package/dist/services/features/telegram-mcp/src/features/xchange/model/xchangeService.js +169 -0
  72. package/dist/services/features/telegram-mcp/src/processes/human-approval/model/orchestrator.js +5 -4
  73. package/dist/services/features/telegram-mcp/src/shared/i18n/resources/en.js +143 -42
  74. package/dist/services/features/telegram-mcp/src/shared/i18n/resources/ru.js +139 -38
  75. package/dist/services/features/telegram-mcp/src/shared/integrations/memory/processLocalSessionStore.js +27 -0
  76. package/dist/services/features/telegram-mcp/src/shared/integrations/object-storage/minioExchangeStore.js +11 -8
  77. package/dist/services/features/telegram-mcp/src/shared/integrations/redis/stateStore.js +69 -70
  78. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/proxyFetch.js +21 -22
  79. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transport.js +444 -7093
  80. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportAttachmentStore.js +93 -0
  81. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportBroadcastActions.js +385 -0
  82. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportConsoleRegistry.js +149 -0
  83. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportConstructorWiring.js +642 -0
  84. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportContent.js +84 -0
  85. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportContext.js +78 -0
  86. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportDocumentActions.js +36 -0
  87. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportEventActions.js +292 -0
  88. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportFileHandoffActions.js +352 -0
  89. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportFormatting.js +75 -0
  90. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportGatewayActions.js +44 -0
  91. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportLifecycleActions.js +161 -0
  92. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportLive.js +56 -0
  93. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportLiveActions.js +77 -0
  94. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuCallbacks.js +254 -0
  95. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuFactories.js +538 -0
  96. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuFingerprints.js +93 -0
  97. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuFlow.js +344 -0
  98. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuShell.js +65 -0
  99. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuState.js +408 -0
  100. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuText.js +216 -0
  101. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMessageFlow.js +452 -0
  102. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportOutputActions.js +189 -0
  103. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportPartnerActions.js +286 -0
  104. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportPayloadState.js +108 -0
  105. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectActions.js +463 -0
  106. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectEntryActions.js +202 -0
  107. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectEvents.js +99 -0
  108. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectMenus.js +138 -0
  109. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectState.js +308 -0
  110. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectView.js +426 -0
  111. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportRequestFlow.js +278 -0
  112. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportSessionActions.js +143 -0
  113. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportTerminalActions.js +665 -0
  114. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportTerminalRuntime.js +226 -0
  115. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportTypes.js +2 -0
  116. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportUtils.js +330 -0
  117. package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportXchangeState.js +107 -0
  118. package/dist/services/features/telegram-mcp/src/shared/integrations/terminal/client.js +255 -0
  119. package/dist/services/features/telegram-mcp/src/shared/integrations/terminal/ptyRegistry.js +543 -0
  120. package/dist/services/features/telegram-mcp/src/shared/integrations/xchange/sqliteRecordStore.js +223 -0
  121. package/dist/services/features/telegram-mcp/src/shared/lib/gatewayScope.js +24 -0
  122. package/dist/services/features/telegram-mcp/src/shared/lib/logger/logger.js +6 -0
  123. package/dist/services/features/telegram-mcp/src/shared/lib/project-identity/projectIdentity.js +147 -76
  124. package/dist/services/features/telegram-mcp/src/shared/lib/telegramXchangeRecords.js +72 -0
  125. package/dist/services/features/telegram-mcp/src/shared/lib/terminalPromptDetection.js +409 -0
  126. package/dist/services/features/telegram-mcp/src/shared/lib/version/versionHandshake.js +129 -1
  127. package/dist/services/features/telegram-mcp/src/shared/lib/xchangeRecordHints.js +98 -0
  128. package/dist/services/features/telegram-mcp/standalone-http.service.js +12 -0
  129. package/dist/services/features/telegram-mcp/terminal-buffer.service.js +42 -0
  130. package/dist/services/features/telegram-mcp/terminal-input.service.js +41 -0
  131. package/dist/services/features/telegram-mcp/tools-sync.service.js +15 -1
  132. package/dist/services/features/telegram-mcp/xchange.service.js +123 -0
  133. package/docs/STANDALONE-ru.md +172 -0
  134. package/docs/STANDALONE.md +172 -0
  135. package/package.json +10 -5
  136. package/scripts/build-package-artifact.sh +27 -0
  137. package/scripts/deploy-gateway.sh +64 -0
  138. package/scripts/deploy-onebot-branch.sh +27 -0
  139. package/scripts/postinstall.js +11 -36
  140. package/STANDALONE-ru.md +0 -274
  141. package/STANDALONE.md +0 -274
  142. package/dist/services/features/telegram-mcp/inbox.service.js +0 -33
  143. package/dist/services/features/telegram-mcp/pair.service.js +0 -33
  144. package/dist/services/features/telegram-mcp/src/app/webapp/tmux.js +0 -10
  145. package/dist/services/features/telegram-mcp/src/features/inbox/model/deleteTelegramInboxMessageTool.js +0 -33
  146. package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxCountTool.js +0 -33
  147. package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxTool.js +0 -33
  148. package/dist/services/features/telegram-mcp/src/features/inbox/model/inboxService.js +0 -77
  149. package/dist/services/features/telegram-mcp/src/features/pair-session/model/clearSessionPairingTool.js +0 -33
  150. package/dist/services/features/telegram-mcp/src/features/pair-session/model/createSessionPairCodeTool.js +0 -33
  151. package/dist/services/features/telegram-mcp/src/features/pair-session/model/generatePairCode.js +0 -202
  152. package/dist/services/features/telegram-mcp/src/features/session-context/model/getTmuxTargetTool.js +0 -33
  153. package/dist/services/features/telegram-mcp/src/features/session-context/model/setTmuxTargetTool.js +0 -33
  154. package/dist/services/features/telegram-mcp/src/shared/integrations/tmux/client.js +0 -363
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ DOCKER_IMAGE="${DOCKER_IMAGE:-node:24-bookworm-slim}"
5
+
6
+ echo "Building TellyMCP package artifact inside ${DOCKER_IMAGE}"
7
+
8
+ rm -f deadragdoll-tellymcp-*.tgz
9
+
10
+ docker run --rm \
11
+ -u "$(id -u):$(id -g)" \
12
+ -e HOME=/tmp/tellymcp-build-home \
13
+ -e npm_config_cache=/tmp/tellymcp-npm-cache \
14
+ -v "${PWD}:/work" \
15
+ -w /work \
16
+ "${DOCKER_IMAGE}" \
17
+ bash -lc '
18
+ set -euo pipefail
19
+ mkdir -p "$HOME" "$npm_config_cache"
20
+ npx -y yarn@1.22.22 install --frozen-lockfile
21
+ npx -y yarn@1.22.22 lint
22
+ npx -y yarn@1.22.22 test
23
+ npm pack
24
+ '
25
+
26
+ echo "Built package artifacts:"
27
+ ls -1 deadragdoll-tellymcp-*.tgz
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ GATEWAY_ENV_FILE="${GATEWAY_ENV_FILE:-}"
5
+ DEPLOY_TAG="${CI_COMMIT_TAG:-}"
6
+ LOG_HOST_DIR="${LOG_HOST_DIR:-}"
7
+
8
+ if [[ -z "${GATEWAY_ENV_FILE}" ]]; then
9
+ echo "GATEWAY_ENV_FILE is required." >&2
10
+ exit 1
11
+ fi
12
+
13
+ if [[ ! -f "${GATEWAY_ENV_FILE}" ]]; then
14
+ echo "Missing gateway env file: ${GATEWAY_ENV_FILE}" >&2
15
+ exit 1
16
+ fi
17
+
18
+ ARCHIVE="$(find . -maxdepth 1 -type f -name 'deadragdoll-tellymcp-*.tgz' | sort | tail -n 1)"
19
+ if [[ -z "${ARCHIVE}" ]]; then
20
+ echo "No deadragdoll-tellymcp-*.tgz artifact found in current workspace." >&2
21
+ exit 1
22
+ fi
23
+
24
+ extract_package_version() {
25
+ local package_json
26
+ package_json="$(<package.json)"
27
+ sed -n 's/^[[:space:]]*"version":[[:space:]]*"\([^"]*\)".*$/\1/p' \
28
+ <<<"${package_json}" \
29
+ | head -n 1
30
+ }
31
+
32
+ PACKAGE_VERSION="$(extract_package_version)"
33
+ if [[ -z "${PACKAGE_VERSION}" ]]; then
34
+ echo "Failed to extract version from package.json" >&2
35
+ exit 1
36
+ fi
37
+ if [[ -n "${DEPLOY_TAG}" ]]; then
38
+ if [[ "${DEPLOY_TAG}" != "${PACKAGE_VERSION}" && "${DEPLOY_TAG}" != "v${PACKAGE_VERSION}" ]]; then
39
+ echo "Tag ${DEPLOY_TAG} does not match package.json version ${PACKAGE_VERSION}" >&2
40
+ exit 1
41
+ fi
42
+ fi
43
+
44
+ if [[ -z "${LOG_HOST_DIR}" ]]; then
45
+ LOG_HOST_DIR="$(dirname "${GATEWAY_ENV_FILE}")/.tellymcp"
46
+ fi
47
+
48
+ mkdir -p "${LOG_HOST_DIR}"
49
+
50
+ export TELLYMCP_VERSION="${PACKAGE_VERSION}"
51
+ export GATEWAY_ENV_FILE
52
+ export LOG_HOST_DIR
53
+
54
+ echo "Deploying TellyMCP gateway ${TELLYMCP_VERSION}"
55
+ echo "Artifact: ${ARCHIVE}"
56
+ echo "Gateway env: ${GATEWAY_ENV_FILE}"
57
+ echo "Log host dir: ${LOG_HOST_DIR}"
58
+
59
+ echo "Rebuilding gateway container stack"
60
+ docker compose build --pull tellymcp-gateway
61
+ docker compose up -d --force-recreate
62
+
63
+ echo "Gateway deployment completed"
64
+ docker compose ps
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ PROJECT_DIR="${CI_PROJECT_DIR:-$(pwd)}"
5
+
6
+ if [[ ! -d "${PROJECT_DIR}" ]]; then
7
+ echo "Missing project directory: ${PROJECT_DIR}" >&2
8
+ exit 1
9
+ fi
10
+
11
+ cd "${PROJECT_DIR}"
12
+
13
+ PACKAGE_ARCHIVE="$(find . -maxdepth 1 -type f -name 'deadragdoll-tellymcp-*.tgz' | sort | tail -n 1)"
14
+
15
+ if [[ -z "${PACKAGE_ARCHIVE}" ]]; then
16
+ echo "Missing package archive in ${PROJECT_DIR}. Expected deadragdoll-tellymcp-*.tgz artifact." >&2
17
+ exit 1
18
+ fi
19
+
20
+ echo "Installing TellyMCP from archive: ${PACKAGE_ARCHIVE}"
21
+ npm install -g "${PACKAGE_ARCHIVE}"
22
+
23
+ echo "Installed version:"
24
+ tellymcp help | sed -n '1,2p'
25
+
26
+ echo "Restarting existing PM2 instance 0"
27
+ pm2 restart 0
@@ -3,61 +3,36 @@
3
3
  const { spawnSync } = require("node:child_process");
4
4
  const pc = require("picocolors");
5
5
 
6
- function getTmuxStatus() {
7
- const result = spawnSync("tmux", ["-V"], {
6
+ function hasCodex() {
7
+ const result = spawnSync("codex", ["--version"], {
8
8
  encoding: "utf8",
9
9
  stdio: ["ignore", "pipe", "ignore"],
10
10
  });
11
-
12
- if (result.status === 0) {
13
- return {
14
- found: true,
15
- version: (result.stdout || "tmux").trim(),
16
- };
17
- }
18
-
19
- return { found: false };
20
- }
21
-
22
- function getInstallHints() {
23
- if (process.platform === "darwin") {
24
- return ["brew install tmux"];
25
- }
26
-
27
- return [
28
- "Ubuntu/Debian: sudo apt install tmux",
29
- "Fedora/RHEL: sudo dnf install tmux",
30
- "Arch: sudo pacman -S tmux",
31
- ];
11
+ return result.status === 0;
32
12
  }
33
13
 
34
14
  function line(value = "") {
35
15
  process.stdout.write(`${value}\n`);
36
16
  }
37
17
 
38
- const tmux = getTmuxStatus();
39
-
40
18
  line();
41
19
  line(`${pc.bold(pc.cyan("TellyMCP"))} ${pc.dim("installed")}`);
42
20
  line();
43
21
 
44
- if (tmux.found) {
45
- line(`${pc.green("OK")} tmux detected: ${tmux.version}`);
46
- line("Live view and session nudges should work on this machine.");
47
- } else {
48
- line(`${pc.yellow("WARN")} tmux was not found on this system.`);
49
- line("TellyMCP can still run, but Live view and nudges will be limited.");
50
- line("Install tmux, for example:");
51
- for (const hint of getInstallHints()) {
52
- line(` ${hint}`);
53
- }
54
- }
22
+ line(`${pc.green("OK")} Built-in PTY terminal runtime is enabled.`);
55
23
 
56
24
  line();
57
25
  line(`${pc.yellow("INFO")} Browser tools need Playwright browser binaries.`);
58
26
  line("If you plan to use browser_* tools, run:");
59
27
  line(` ${pc.bold("tellymcp browser install")}`);
60
28
 
29
+ if (hasCodex()) {
30
+ line();
31
+ line(`${pc.yellow("INFO")} Codex CLI detected on this machine.`);
32
+ line("To sync or update the bundled Codex workflow plugin, run:");
33
+ line(` ${pc.bold("tellymcp codex-plugin install")}`);
34
+ }
35
+
61
36
  line();
62
37
  line(`Check your local setup: ${pc.bold("tellymcp doctor")}`);
63
38
  line(`General help: ${pc.bold("tellymcp help")}`);
package/STANDALONE-ru.md DELETED
@@ -1,274 +0,0 @@
1
- # TellyMCP Standalone Guide
2
-
3
- [English](STANDALONE.md) | [Русский](STANDALONE-ru.md)
4
-
5
- Это пошаговая инструкция для самого простого сценария TellyMCP:
6
-
7
- - одна машина
8
- - один Telegram-бот
9
- - без shared gateway
10
- - без Postgres
11
- - без RabbitMQ
12
-
13
- Именно с этого режима лучше начинать.
14
-
15
- ## Что понадобится
16
-
17
- Перед установкой нужны:
18
-
19
- 1. Node.js 24+
20
- 2. `tmux`
21
- 3. Redis
22
- 4. Telegram bot token из BotFather
23
- 5. опционально для `browser_*` tools: Playwright Chromium browser binaries
24
-
25
- Зачем это нужно:
26
-
27
- - Node.js запускает сервис
28
- - `tmux` нужен для Live View, `nudge` и полноценной интерактивной работы
29
- - Redis хранит состояние сессий, inbox, pairing и меню
30
- - Telegram bot token связывает сервис с Telegram
31
-
32
- ## Шаг 1. Установить зависимости
33
-
34
- Пример для Ubuntu / Debian:
35
-
36
- ```bash
37
- sudo apt-get update
38
- sudo apt-get install -y tmux redis-server
39
- node -v
40
- tmux -V
41
- redis-cli ping
42
- ```
43
-
44
- Ожидаемый результат:
45
-
46
- - Node версии `24.x` или новее
47
- - `tmux -V` показывает версию
48
- - `redis-cli ping` возвращает `PONG`
49
-
50
- Если планируешь использовать browser automation tools, один раз выполни ещё:
51
-
52
- ```bash
53
- tellymcp browser install
54
- ```
55
-
56
- ## Шаг 2. Создать Telegram-бота
57
-
58
- В Telegram:
59
-
60
- 1. Открой BotFather
61
- 2. Выполни `/newbot`
62
- 3. Выбери имя бота
63
- 4. Выбери username бота
64
- 5. Сохрани токен
65
-
66
- Тебе понадобятся:
67
-
68
- - `TELEGRAM_BOT_TOKEN`
69
- - `TELEGRAM_BOT_USERNAME`
70
-
71
- ## Шаг 3. Установить TellyMCP
72
-
73
- ```bash
74
- npm install -g @deadragdoll/tellymcp
75
- ```
76
-
77
- Проверка CLI:
78
-
79
- ```bash
80
- tellymcp help
81
- ```
82
-
83
- ## Шаг 4. Запустить агента в tmux
84
-
85
- Это важный момент.
86
-
87
- Для полноценной работы агент лучше запускать внутри `tmux`, а не в обычной shell-сессии.
88
-
89
- Создать tmux-сессию:
90
-
91
- ```bash
92
- tmux new -s backend
93
- ```
94
-
95
- Хорошие имена:
96
-
97
- - `backend`
98
- - `frontend`
99
- - `review`
100
- - `ops`
101
-
102
- Почему имя tmux-сессии важно:
103
-
104
- - по нему проще различать агентов
105
- - оно улучшает диагностику
106
- - в Telegram и Live View проще понимать, какая сессия открыта
107
-
108
- Если нужно выйти:
109
-
110
- ```bash
111
- tmux detach
112
- ```
113
-
114
- И вернуться:
115
-
116
- ```bash
117
- tmux attach -t backend
118
- ```
119
-
120
- ## Шаг 5. Создать standalone-конфиг
121
-
122
- В рабочей директории:
123
-
124
- ```bash
125
- tellymcp init client
126
- ```
127
-
128
- Команда создаст локальный `.env`.
129
-
130
- ## Шаг 6. Заполнить `.env`
131
-
132
- Минимум:
133
-
134
- ```env
135
- TELEGRAM_BOT_TOKEN=...
136
- TELEGRAM_BOT_USERNAME=@your_bot
137
- REDIS_HOST=127.0.0.1
138
- REDIS_PORT=6379
139
- REDIS_DB=1
140
- MCP_HTTP_HOST=127.0.0.1
141
- MCP_HTTP_PORT=8787
142
- MCP_HTTP_PATH=/mcp
143
- MCP_HTTP_BEARER_TOKEN=choose-a-secret-token
144
- DISTRIBUTED_MODE=client
145
- WEBAPP_ENABLED=true
146
- ```
147
-
148
- Если tmux использует нестандартный socket:
149
-
150
- ```env
151
- TMUX_SOCKET_PATH=/tmp/tmux-1000/default
152
- ```
153
-
154
- ## Шаг 7. Проверить конфиг
155
-
156
- ```bash
157
- tellymcp doctor --env .env
158
- ```
159
-
160
- В standalone `client` режиме он должен проверить:
161
-
162
- - `tmux`
163
- - `.env`
164
- - Redis
165
- - локальный MCP bind
166
- - Playwright Chromium, если browser tools включены
167
-
168
- ## Шаг 8. Запустить сервис
169
-
170
- ```bash
171
- tellymcp run --env .env
172
- ```
173
-
174
- Обычный standalone MCP endpoint:
175
-
176
- - `http://127.0.0.1:8787/mcp`
177
-
178
- ## Шаг 9. Подключить MCP к агенту
179
-
180
- Чтобы получить готовый snippet:
181
-
182
- ```bash
183
- tellymcp mcp --help
184
- ```
185
-
186
- Типичный локальный endpoint:
187
-
188
- - `http://127.0.0.1:8787/mcp`
189
-
190
- Если используешь bearer auth, агент должен подключаться с тем же токеном, что и в `.env`.
191
-
192
- ## Шаг 10. Привязать агента к Telegram
193
-
194
- После подключения MCP можно просто написать агенту:
195
-
196
- - `привяжись к Telegram`
197
- - `подключись к Telegram`
198
- - `свяжи эту сессию с Telegram`
199
- - `создай код привязки к Telegram`
200
-
201
- Ожидаемый flow:
202
-
203
- 1. агент вызывает `create_session_pair_code`
204
- 2. отдаёт короткий код
205
- 3. ты отправляешь боту `/start <code>` или `/link <code>`
206
- 4. после успеха открываешь `/menu`
207
-
208
- Если агент работает внутри `tmux`, ему желательно передать:
209
-
210
- - `cwd`
211
- - имя tmux-сессии
212
- - tmux window/pane атрибуты
213
-
214
- Тогда `Live` и `nudge` заработают сразу.
215
-
216
- ## Шаг 11. Что будет после pairing
217
-
218
- После привязки Telegram можно использовать для:
219
-
220
- - inbox
221
- - вопросов к человеку
222
- - local partner collaboration
223
- - переключения сессий
224
- - просмотра storage
225
- - Live View
226
-
227
- Агент сможет:
228
-
229
- - вызывать `ask_user_telegram`
230
- - читать несвязанные входящие сообщения
231
- - отправлять note и файлы
232
- - получать tmux `nudge`, когда появляется новая работа
233
-
234
- ## Что работает без tmux
235
-
236
- TellyMCP можно запустить и без `tmux`, но это урезанный режим.
237
-
238
- Не будет:
239
-
240
- - Live View
241
- - tmux `nudge`
242
- - прямого управления из Telegram Mini App
243
-
244
- Такой режим стоит использовать только если тебя устраивает пассивная работа.
245
-
246
- ## Troubleshooting
247
-
248
- Если `doctor` ругается:
249
-
250
- - проверь, что Redis запущен
251
- - проверь, что установлен `tmux`
252
- - проверь правильность bot token
253
- - проверь, что bearer token совпадает с MCP-конфигом агента
254
-
255
- Если pairing работает, а Live View нет:
256
-
257
- - убедись, что агент действительно запущен внутри `tmux`
258
- - убедись, что у tmux-сессии есть стабильное имя
259
- - при необходимости задай `TMUX_SOCKET_PATH`
260
-
261
- Если агент не может подключиться к MCP:
262
-
263
- - проверь, что `tellymcp run --env .env` действительно запущен
264
- - проверь endpoint `http://127.0.0.1:8787/mcp`
265
- - проверь bearer token
266
-
267
- ## Следующий шаг
268
-
269
- Когда standalone уже работает, дальше можно переходить к:
270
-
271
- - `gateway`
272
- - или `both`
273
-
274
- Это нужно только если нужен `Collab` между машинами.