@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.
- package/.env.example.client +42 -52
- package/.env.example.gateway +48 -62
- package/CHANGELOG.md +3 -3
- package/README-ru.md +226 -376
- package/README.md +213 -1184
- package/TOOLS.md +320 -377
- package/VERSION.md +13 -13
- package/config/codex/plugins/telly-workflows/.codex-plugin/plugin.json +18 -0
- package/config/codex/plugins/telly-workflows/references/invariants.md +10 -0
- package/config/codex/plugins/telly-workflows/skills/telly-browser-screenshot/SKILL.md +27 -0
- package/config/codex/plugins/telly-workflows/skills/telly-collab-artifact/SKILL.md +22 -0
- package/config/codex/plugins/telly-workflows/skills/telly-human-telegram/SKILL.md +31 -0
- package/config/codex/plugins/telly-workflows/skills/telly-partner-note/SKILL.md +36 -0
- package/config/templates/env.both.template +39 -20
- package/config/templates/env.client.template +34 -19
- package/config/templates/env.gateway.template +37 -22
- package/dist/cli.js +322 -75
- package/dist/codexPluginInstaller.js +215 -0
- package/dist/lib/mixins/session.errors.js +34 -1
- package/dist/lib/pinoTargets.js +2 -2
- package/dist/moleculer.config.js +7 -5
- package/dist/services/features/telegram-mcp/browser.service.js +94 -1
- package/dist/services/features/telegram-mcp/collaboration.service.js +40 -3
- package/dist/services/features/telegram-mcp/ensuredb.service.js +145 -26
- package/dist/services/features/telegram-mcp/gateway-delivery.service.js +285 -103
- package/dist/services/features/telegram-mcp/gateway-socket.service.js +907 -85
- package/dist/services/features/telegram-mcp/gateway.service.js +876 -81
- package/dist/services/features/telegram-mcp/mcp-http.service.js +8 -0
- package/dist/services/features/telegram-mcp/mcp-server.service.js +17 -26
- package/dist/services/features/telegram-mcp/notify.service.js +127 -1
- package/dist/services/features/telegram-mcp/session-context.service.js +28 -1
- package/dist/services/features/telegram-mcp/src/app/bootstrap/runtime.js +132 -10
- package/dist/services/features/telegram-mcp/src/app/config/env.js +158 -52
- package/dist/services/features/telegram-mcp/src/app/http.js +375 -42
- package/dist/services/features/telegram-mcp/src/app/webapp/assets.js +386 -58
- package/dist/services/features/telegram-mcp/src/app/webapp/auth.js +3 -0
- package/dist/services/features/telegram-mcp/src/app/webapp/terminal.js +12 -0
- package/dist/services/features/telegram-mcp/src/entities/request/model/schema.js +120 -104
- package/dist/services/features/telegram-mcp/src/entities/xchange/model/types.js +2 -0
- package/dist/services/features/telegram-mcp/src/features/ask-user/model/askUserTelegram.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserOpenTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserScreenshotTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/browser/model/browserService.js +306 -26
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/gatewaySessionsService.js +71 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/listGatewaySessionsTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/localCollaborationBackend.js +93 -82
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileService.js +47 -5
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerFileTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/collaboration/model/sendPartnerNoteTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/distributed-client/model/gatewayClientAccess.js +82 -0
- package/dist/services/features/telegram-mcp/src/features/distributed-client/model/gatewayCollaborationBackend.js +22 -14
- package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/gatewayHttpService.js +697 -75
- package/dist/services/features/telegram-mcp/src/features/distributed-gateway/model/remoteConsoleActionClient.js +76 -0
- package/dist/services/features/telegram-mcp/src/features/embedded-runtime/model/embeddedRuntimeBroker.js +92 -0
- package/dist/services/features/telegram-mcp/src/features/foreground-terminal/model/foregroundTerminalRuntime.js +192 -0
- package/dist/services/features/telegram-mcp/src/features/notify/model/notifyService.js +382 -3
- package/dist/services/features/telegram-mcp/src/features/notify/model/notifyTelegramTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/notify/model/sendFileToTelegramTool.js +33 -0
- package/dist/services/features/telegram-mcp/src/features/session-context/model/clearSessionContextTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/session-context/model/getSessionContextTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/session-context/model/renameSessionTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/session-context/model/sessionContextService.js +42 -200
- package/dist/services/features/telegram-mcp/src/features/session-context/model/setSessionContextTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/terminal-buffer/model/terminalBufferService.js +96 -0
- package/dist/services/features/telegram-mcp/src/features/terminal-input/model/terminalInputService.js +97 -0
- package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownService.js +107 -58
- package/dist/services/features/telegram-mcp/src/features/tools-sync/model/refreshToolsMarkdownTool.js +1 -1
- package/dist/services/features/telegram-mcp/src/features/xchange/model/getXchangeRecordTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/xchange/model/listXchangeRecordsTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/xchange/model/markXchangeRecordReadTool.js +28 -0
- package/dist/services/features/telegram-mcp/src/features/xchange/model/xchangeService.js +169 -0
- package/dist/services/features/telegram-mcp/src/processes/human-approval/model/orchestrator.js +5 -4
- package/dist/services/features/telegram-mcp/src/shared/i18n/resources/en.js +143 -42
- package/dist/services/features/telegram-mcp/src/shared/i18n/resources/ru.js +139 -38
- package/dist/services/features/telegram-mcp/src/shared/integrations/memory/processLocalSessionStore.js +27 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/object-storage/minioExchangeStore.js +11 -8
- package/dist/services/features/telegram-mcp/src/shared/integrations/redis/stateStore.js +69 -70
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/proxyFetch.js +21 -22
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transport.js +444 -7093
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportAttachmentStore.js +93 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportBroadcastActions.js +385 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportConsoleRegistry.js +149 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportConstructorWiring.js +642 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportContent.js +84 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportContext.js +78 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportDocumentActions.js +36 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportEventActions.js +292 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportFileHandoffActions.js +352 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportFormatting.js +75 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportGatewayActions.js +44 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportLifecycleActions.js +161 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportLive.js +56 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportLiveActions.js +77 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuCallbacks.js +254 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuFactories.js +538 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuFingerprints.js +93 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuFlow.js +344 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuShell.js +65 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuState.js +408 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMenuText.js +216 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportMessageFlow.js +452 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportOutputActions.js +189 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportPartnerActions.js +286 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportPayloadState.js +108 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectActions.js +463 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectEntryActions.js +202 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectEvents.js +99 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectMenus.js +138 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectState.js +308 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportProjectView.js +426 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportRequestFlow.js +278 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportSessionActions.js +143 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportTerminalActions.js +665 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportTerminalRuntime.js +226 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportTypes.js +2 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportUtils.js +330 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/telegram/transportXchangeState.js +107 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/terminal/client.js +255 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/terminal/ptyRegistry.js +543 -0
- package/dist/services/features/telegram-mcp/src/shared/integrations/xchange/sqliteRecordStore.js +223 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/gatewayScope.js +24 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/logger/logger.js +6 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/project-identity/projectIdentity.js +147 -76
- package/dist/services/features/telegram-mcp/src/shared/lib/telegramXchangeRecords.js +72 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/terminalPromptDetection.js +409 -0
- package/dist/services/features/telegram-mcp/src/shared/lib/version/versionHandshake.js +129 -1
- package/dist/services/features/telegram-mcp/src/shared/lib/xchangeRecordHints.js +98 -0
- package/dist/services/features/telegram-mcp/standalone-http.service.js +12 -0
- package/dist/services/features/telegram-mcp/terminal-buffer.service.js +42 -0
- package/dist/services/features/telegram-mcp/terminal-input.service.js +41 -0
- package/dist/services/features/telegram-mcp/tools-sync.service.js +15 -1
- package/dist/services/features/telegram-mcp/xchange.service.js +123 -0
- package/docs/STANDALONE-ru.md +172 -0
- package/docs/STANDALONE.md +172 -0
- package/package.json +10 -5
- package/scripts/build-package-artifact.sh +27 -0
- package/scripts/deploy-gateway.sh +64 -0
- package/scripts/deploy-onebot-branch.sh +27 -0
- package/scripts/postinstall.js +11 -36
- package/STANDALONE-ru.md +0 -274
- package/STANDALONE.md +0 -274
- package/dist/services/features/telegram-mcp/inbox.service.js +0 -33
- package/dist/services/features/telegram-mcp/pair.service.js +0 -33
- package/dist/services/features/telegram-mcp/src/app/webapp/tmux.js +0 -10
- package/dist/services/features/telegram-mcp/src/features/inbox/model/deleteTelegramInboxMessageTool.js +0 -33
- package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxCountTool.js +0 -33
- package/dist/services/features/telegram-mcp/src/features/inbox/model/getTelegramInboxTool.js +0 -33
- package/dist/services/features/telegram-mcp/src/features/inbox/model/inboxService.js +0 -77
- package/dist/services/features/telegram-mcp/src/features/pair-session/model/clearSessionPairingTool.js +0 -33
- package/dist/services/features/telegram-mcp/src/features/pair-session/model/createSessionPairCodeTool.js +0 -33
- package/dist/services/features/telegram-mcp/src/features/pair-session/model/generatePairCode.js +0 -202
- package/dist/services/features/telegram-mcp/src/features/session-context/model/getTmuxTargetTool.js +0 -33
- package/dist/services/features/telegram-mcp/src/features/session-context/model/setTmuxTargetTool.js +0 -33
- 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
|
package/scripts/postinstall.js
CHANGED
|
@@ -3,61 +3,36 @@
|
|
|
3
3
|
const { spawnSync } = require("node:child_process");
|
|
4
4
|
const pc = require("picocolors");
|
|
5
5
|
|
|
6
|
-
function
|
|
7
|
-
const result = spawnSync("
|
|
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
|
-
|
|
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` между машинами.
|