{"_id":"@deadragdoll/tellymcp","_rev":"16-5b613976e1a5050484d46ffab791854f","name":"@deadragdoll/tellymcp","dist-tags":{"latest":"0.0.16"},"versions":{"0.0.1":{"name":"@deadragdoll/tellymcp","version":"0.0.1","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","_id":"@deadragdoll/tellymcp@0.0.1","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"bin":{"tellymcp":"dist/cli.js"},"dist":{"shasum":"9f4e5970c13ead5c141eec8cfa024a0a590a2e59","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.1.tgz","fileCount":124,"integrity":"sha512-jvqujyU4FXAQhpZv7wTv+m4loQ9Dwv3P/1E62XcgQW8AorBafU7Qj9LsED+DkjeIbb5F3ESbJydyAnXP5XPa4w==","signatures":[{"sig":"MEYCIQCgBPyhA3DMcEnV8B5F4Xskn0B4ScaTObZ7F81t5Uoj4QIhAL0e3PtOT5+m9CHU1nuZ9T02k1B99KlMRZIH9j/4ee/7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1029922},"main":"dist/services/features/telegram-mcp/runtime.service.js","engines":{"node":">=24.0.0"},"gitHead":"0d828dc8b21701e21e209e3dea333e027e1d3a69","scripts":{"dev":"yarn dev:gw","lint":"eslint .","test":"vitest run","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","format":"prettier --write .","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","dev:watch":"yarn dev:gw","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","test:watch":"vitest","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:service":"yarn dev:gw","postinstall":"node ./scripts/postinstall.js","format:check":"prettier --check .","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\""},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"repository":{"url":"git+https://github.com/code4bones/tellymcp.git","type":"git"},"_npmVersion":"11.6.2","description":"TellyMCP - Telegram Human-in-the-Loop MCP Server","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.20.0","ws":"8.20.1","zod":"4.4.3","knex":"^3.2.10","pino":"^10.3.1","redis":"5.12.1","dotenv":"^17.4.2","grammy":"1.43.0","amqplib":"0.10.9","graphql":"^16.14.0","ioredis":"5.10.1","moleculer":"0.15.0","mime-types":"^3.0.2","node-fetch":"^3.3.2","picocolors":"^1.1.1","playwright":"^1.60.0","pino-pretty":"^13.1.3","module-alias":"^2.3.4","@grammyjs/menu":"^1.3.1","https-proxy-agent":"^7.0.6","socks-proxy-agent":"^8.0.5","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.1","eslint":"^9.34.0","vitest":"^4.1.6","globals":"^16.3.0","ts-node":"^10.9.2","prettier":"^3.6.2","tsc-alias":"^1.8.17","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"24.12.4","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","typescript-eslint":"8.59.3","eslint-plugin-import":"^2.32.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/tellymcp_0.0.1_1779033095911_0.9391596312769095","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@deadragdoll/tellymcp","version":"0.0.2","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","_id":"@deadragdoll/tellymcp@0.0.2","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"bin":{"tellymcp":"dist/cli.js"},"dist":{"shasum":"ece71165c255f11277dbe300c0d00e420587a250","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.2.tgz","fileCount":124,"integrity":"sha512-P/luGrx94GDm5srlYZHNALFIK4PEtTE2Pex2DDcbvQWYndy+X/A5YlKmgabxcLEjp8otXBoRQFQCeYkQrtMWFw==","signatures":[{"sig":"MEUCIQCt0ODVYOlW4sHMRZMDsaw1GV0wH/yYn+3+Z70MGLoCJQIgCICFU+BfzsLpc952FvX4kJjxgzoojP3j2chM15xJIW0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1029996},"main":"dist/services/features/telegram-mcp/runtime.service.js","engines":{"node":">=24.0.0"},"gitHead":"ba0ec3dc0d9d724da1c2a8e8c8504c1139e3416b","scripts":{"dev":"yarn dev:gw","lint":"eslint .","test":"vitest run","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","format":"prettier --write .","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","dev:watch":"yarn dev:gw","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","test:watch":"vitest","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:service":"yarn dev:gw","postinstall":"node ./scripts/postinstall.js","format:check":"prettier --check .","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\""},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"repository":{"url":"git+https://github.com/code4bones/tellymcp.git","type":"git"},"_npmVersion":"11.6.2","description":"TellyMCP - Telegram Human-in-the-Loop MCP Server","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.20.0","ws":"8.20.1","zod":"4.4.3","knex":"^3.2.10","pino":"^10.3.1","redis":"5.12.1","dotenv":"^17.4.2","grammy":"1.43.0","amqplib":"0.10.9","graphql":"^16.14.0","ioredis":"5.10.1","moleculer":"0.15.0","mime-types":"^3.0.2","node-fetch":"^3.3.2","picocolors":"^1.1.1","playwright":"^1.60.0","pino-pretty":"^13.1.3","module-alias":"^2.3.4","@grammyjs/menu":"^1.3.1","https-proxy-agent":"^7.0.6","socks-proxy-agent":"^8.0.5","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.1","eslint":"^9.34.0","vitest":"^4.1.6","globals":"^16.3.0","ts-node":"^10.9.2","prettier":"^3.6.2","tsc-alias":"^1.8.17","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"24.12.4","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","typescript-eslint":"8.59.3","eslint-plugin-import":"^2.32.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/tellymcp_0.0.2_1779035384906_0.605988057399889","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@deadragdoll/tellymcp","version":"0.0.3","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","_id":"@deadragdoll/tellymcp@0.0.3","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"bin":{"tellymcp":"dist/cli.js"},"dist":{"shasum":"dff373ca7ea61d0308bd8a2a380351032fa18eb5","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.3.tgz","fileCount":124,"integrity":"sha512-Wv62Od360ebSYTxkfAFqQHtDtdnYNdc3SlR3PHY/3nm+gVzCdk8/eM64Blg9/mirJXAZJlkjcW/avu40mPv4Bw==","signatures":[{"sig":"MEUCIQC3ib1xdaJUAssI4p2pwBH2F6NDGR+XO+UFrMxBKKlC6AIgQ8cSdWcwtYbQ5F6b58eb/5g7cEqYUEbeBZAzyiCBEZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1035689},"main":"dist/services/features/telegram-mcp/runtime.service.js","engines":{"node":">=24.0.0"},"gitHead":"ba0ec3dc0d9d724da1c2a8e8c8504c1139e3416b","scripts":{"dev":"yarn dev:gw","lint":"eslint .","test":"vitest run","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","format":"prettier --write .","prepack":"yarn build","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","dev:watch":"yarn dev:gw","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","test:watch":"vitest","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:service":"yarn dev:gw","postinstall":"node ./scripts/postinstall.js","format:check":"prettier --check .","prepublishOnly":"yarn build && yarn lint && yarn test","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\""},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"repository":{"url":"git+https://github.com/code4bones/tellymcp.git","type":"git"},"_npmVersion":"11.6.2","description":"TellyMCP - Telegram Human-in-the-Loop MCP Server","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.20.0","ws":"8.20.1","zod":"4.4.3","knex":"^3.2.10","pino":"^10.3.1","redis":"5.12.1","dotenv":"^17.4.2","grammy":"1.43.0","amqplib":"0.10.9","graphql":"^16.14.0","ioredis":"5.10.1","moleculer":"0.15.0","mime-types":"^3.0.2","node-fetch":"^3.3.2","picocolors":"^1.1.1","playwright":"^1.60.0","pino-pretty":"^13.1.3","module-alias":"^2.3.4","@grammyjs/menu":"^1.3.1","https-proxy-agent":"^7.0.6","socks-proxy-agent":"^8.0.5","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.1","eslint":"^9.34.0","vitest":"^4.1.6","globals":"^16.3.0","ts-node":"^10.9.2","prettier":"^3.6.2","tsc-alias":"^1.8.17","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"24.12.4","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","typescript-eslint":"8.59.3","eslint-plugin-import":"^2.32.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/tellymcp_0.0.3_1779037642548_0.760325249532311","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@deadragdoll/tellymcp","version":"0.0.4","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","_id":"@deadragdoll/tellymcp@0.0.4","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"bin":{"tellymcp":"dist/cli.js"},"dist":{"shasum":"b297ca72c337c3bebab38f0f56687cddabe64cdf","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.4.tgz","fileCount":125,"integrity":"sha512-d7BBpfFrKvkxYzPbqnM+C9rYWhetUXd104dfFrbtPhoHswWliWBckpt0FdGPbDBhg1q4MyuqXpDCUWRIG6wLYg==","signatures":[{"sig":"MEYCIQDR1+iN+23tGRAMDknroOx7UR9+onwyKnaE7mgSgvGjCAIhALhIIziXXxr0ratd6zECQZqy6H/02xilH/VHwsGKk0L7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1044181},"main":"dist/services/features/telegram-mcp/runtime.service.js","engines":{"node":">=24.0.0"},"gitHead":"98582245d0ae9d79c0cbba256987850e7e485825","scripts":{"dev":"yarn dev:gw","lint":"eslint .","test":"vitest run","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","format":"prettier --write .","prepack":"yarn build","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","dev:watch":"yarn dev:gw","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","test:watch":"vitest","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:service":"yarn dev:gw","postinstall":"node ./scripts/postinstall.js","format:check":"prettier --check .","prepublishOnly":"yarn build && yarn lint && yarn test","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\""},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"repository":{"url":"git+https://github.com/code4bones/tellymcp.git","type":"git"},"_npmVersion":"11.6.2","description":"TellyMCP - Telegram Human-in-the-Loop MCP Server","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.20.0","ws":"8.20.1","zod":"4.4.3","knex":"^3.2.10","pino":"^10.3.1","redis":"5.12.1","dotenv":"^17.4.2","grammy":"1.43.0","amqplib":"0.10.9","graphql":"^16.14.0","ioredis":"5.10.1","moleculer":"0.15.0","mime-types":"^3.0.2","node-fetch":"^3.3.2","picocolors":"^1.1.1","playwright":"^1.60.0","pino-pretty":"^13.1.3","module-alias":"^2.3.4","@grammyjs/menu":"^1.3.1","https-proxy-agent":"^7.0.6","socks-proxy-agent":"^8.0.5","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.1","eslint":"^9.34.0","vitest":"^4.1.6","globals":"^16.3.0","ts-node":"^10.9.2","prettier":"^3.6.2","tsc-alias":"^1.8.17","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"24.12.4","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","typescript-eslint":"8.59.3","eslint-plugin-import":"^2.32.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/tellymcp_0.0.4_1779039149621_0.5144483795630757","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@deadragdoll/tellymcp","version":"0.0.5","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","_id":"@deadragdoll/tellymcp@0.0.5","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"bin":{"tellymcp":"dist/cli.js"},"dist":{"shasum":"bd6665e3fb6e06b5cf0ff815331caa1b6691dc82","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.5.tgz","fileCount":125,"integrity":"sha512-nFfV7iGu4Zhl4EQR/+77Fn+/D/6BMjacog9Qhi2q+Hs/M1rEodfrz7Tp5uz0ojx4Vl1vqDx1pa+N8xIkGx7nZg==","signatures":[{"sig":"MEUCIQC81VYCQGKD/gkzsL238wh2H0lIYaESl/IR2aD0BGY8xQIgF0cZbvO7yiK99OrjPcM5CA9twMf1+NERw7M9CIxCbY0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1049053},"main":"dist/services/features/telegram-mcp/runtime.service.js","engines":{"node":">=24.0.0"},"gitHead":"7ef19386df69e22a975e1996413fb9e8a563e83d","scripts":{"dev":"yarn dev:gw","lint":"eslint .","test":"vitest run","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","format":"prettier --write .","prepack":"yarn build","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","dev:watch":"yarn dev:gw","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","test:watch":"vitest","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:service":"yarn dev:gw","postinstall":"node ./scripts/postinstall.js","format:check":"prettier --check .","prepublishOnly":"yarn build && yarn lint && yarn test","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\""},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"repository":{"url":"git+https://github.com/code4bones/tellymcp.git","type":"git"},"_npmVersion":"11.6.2","description":"TellyMCP - Telegram Human-in-the-Loop MCP Server","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.20.0","ws":"8.20.1","zod":"4.4.3","knex":"^3.2.10","pino":"^10.3.1","redis":"5.12.1","dotenv":"^17.4.2","grammy":"1.43.0","amqplib":"0.10.9","graphql":"^16.14.0","ioredis":"5.10.1","moleculer":"0.15.0","mime-types":"^3.0.2","node-fetch":"^3.3.2","picocolors":"^1.1.1","playwright":"^1.60.0","pino-pretty":"^13.1.3","module-alias":"^2.3.4","@grammyjs/menu":"^1.3.1","https-proxy-agent":"^7.0.6","socks-proxy-agent":"^8.0.5","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.1","eslint":"^9.34.0","vitest":"^4.1.6","globals":"^16.3.0","ts-node":"^10.9.2","prettier":"^3.6.2","tsc-alias":"^1.8.17","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"24.12.4","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","typescript-eslint":"8.59.3","eslint-plugin-import":"^2.32.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/tellymcp_0.0.5_1779043036224_0.7486870713142868","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@deadragdoll/tellymcp","version":"0.0.6","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","_id":"@deadragdoll/tellymcp@0.0.6","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"bin":{"tellymcp":"dist/cli.js"},"dist":{"shasum":"243e18129ed0c2aab5ab04c066c5810bf2e76d01","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.6.tgz","fileCount":125,"integrity":"sha512-wB+hvmmaiqcKLe9qZs8GcumpOriScm/P1N2HFY06W6PkuJJwlfZIoz7mfHDSoMQrFmICitUt6PIe07FtltlMNA==","signatures":[{"sig":"MEUCIGif6Tow6kib4g9qr0KJYtNSo4xcxh+jHJ6xeMQLx52kAiEAhh9awJePkLP3FatvS8BeMA199hOloDWzHkIpLqGD2+8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1054380},"main":"dist/services/features/telegram-mcp/runtime.service.js","engines":{"node":">=24.0.0"},"gitHead":"f66a36547694bd6bab6dc89b1cf72bd721ff5a28","scripts":{"dev":"yarn dev:gw","lint":"eslint .","test":"vitest run","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","format":"prettier --write .","prepack":"yarn build","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","dev:watch":"yarn dev:gw","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","test:watch":"vitest","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:service":"yarn dev:gw","postinstall":"node ./scripts/postinstall.js","format:check":"prettier --check .","prepublishOnly":"yarn build && yarn lint && yarn test","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\""},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"repository":{"url":"git+https://github.com/code4bones/tellymcp.git","type":"git"},"_npmVersion":"11.6.2","description":"TellyMCP - Telegram Human-in-the-Loop MCP Server","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.20.0","ws":"8.20.1","zod":"4.4.3","knex":"^3.2.10","pino":"^10.3.1","redis":"5.12.1","dotenv":"^17.4.2","grammy":"1.43.0","amqplib":"0.10.9","graphql":"^16.14.0","ioredis":"5.10.1","moleculer":"0.15.0","mime-types":"^3.0.2","node-fetch":"^3.3.2","picocolors":"^1.1.1","playwright":"^1.60.0","pino-pretty":"^13.1.3","module-alias":"^2.3.4","@grammyjs/menu":"^1.3.1","https-proxy-agent":"^7.0.6","socks-proxy-agent":"^8.0.5","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.1","eslint":"^9.34.0","vitest":"^4.1.6","globals":"^16.3.0","ts-node":"^10.9.2","prettier":"^3.6.2","tsc-alias":"^1.8.17","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"24.12.4","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","typescript-eslint":"8.59.3","eslint-plugin-import":"^2.32.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/tellymcp_0.0.6_1779045768856_0.5753735636409341","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@deadragdoll/tellymcp","version":"0.0.7","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","_id":"@deadragdoll/tellymcp@0.0.7","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"bin":{"tellymcp":"dist/cli.js"},"dist":{"shasum":"6e6524c6b58c21b6483c1fc7f99024bbf3a6161f","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.7.tgz","fileCount":123,"integrity":"sha512-bPyxea1izwilnGauFZlBJh3iUvi3l45cYJGHJREzobYdUAWvrAv2AnW7YEdpMLHiciPv6nidUNYQkRewBKKQSw==","signatures":[{"sig":"MEYCIQDedvhmGUSvfPswxuOkpc5RBIGbPWf4qnmRLRMV6K186QIhAMDe1ZzYgmnBOiU+50LBFK5kzJX5vqje4YzgFO6fMAAh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1038316},"main":"dist/services/features/telegram-mcp/runtime.service.js","engines":{"node":">=24.0.0"},"gitHead":"fa739bb32e9df297ec2b1d07d9ef0a5702a120c0","scripts":{"dev":"yarn dev:gw","lint":"eslint .","test":"vitest run","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","format":"prettier --write .","prepack":"yarn build","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","dev:watch":"yarn dev:gw","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","test:watch":"vitest","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:service":"yarn dev:gw","postinstall":"node ./scripts/postinstall.js","format:check":"prettier --check .","prepublishOnly":"yarn build && yarn lint && yarn test","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\""},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"repository":{"url":"git+https://github.com/code4bones/tellymcp.git","type":"git"},"_npmVersion":"11.6.2","description":"TellyMCP - Telegram control plane for MCP-connected coding agents","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.20.0","ws":"8.20.1","zod":"4.4.3","knex":"^3.2.10","pino":"^10.3.1","dotenv":"^17.4.2","grammy":"1.43.0","amqplib":"0.10.9","ioredis":"5.10.1","moleculer":"0.15.0","mime-types":"^3.0.2","node-fetch":"^3.3.2","picocolors":"^1.1.1","playwright":"^1.60.0","pino-pretty":"^13.1.3","module-alias":"^2.3.4","@grammyjs/menu":"^1.3.1","https-proxy-agent":"^7.0.6","socks-proxy-agent":"^8.0.5","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.1","eslint":"^9.34.0","vitest":"^4.1.6","globals":"^16.3.0","ts-node":"^10.9.2","prettier":"^3.6.2","tsc-alias":"^1.8.17","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"24.12.4","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","typescript-eslint":"8.59.3","eslint-plugin-import":"^2.32.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/tellymcp_0.0.7_1779050109256_0.19854167551529756","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@deadragdoll/tellymcp","version":"0.0.8","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","_id":"@deadragdoll/tellymcp@0.0.8","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"bin":{"tellymcp":"dist/cli.js"},"dist":{"shasum":"eba2b68ae74ea39960df56098353f7a4bfc02747","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.8.tgz","fileCount":123,"integrity":"sha512-SOOShmfqoh34uhWVH996VtqDmQecK3kKUBQq268gPrJrmqXRhAlQmeMmkNNTCpZqLrcd26ulsM3S7ceKqJ0nXg==","signatures":[{"sig":"MEUCIH5tYgw8xRjOqvr5usByWHDMD9rFBfbgUk6g5sfT4aj2AiEAl9WDts3Hnc2DPdC+/Et7PS5kIyaKHCDjvhG8kGXL62o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1048329},"main":"dist/services/features/telegram-mcp/runtime.service.js","engines":{"node":">=24.0.0"},"gitHead":"f672dab6c9cf370fc6e69ea886a4906cafb170c2","scripts":{"dev":"yarn dev:gw","lint":"eslint .","test":"vitest run","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","format":"prettier --write .","prepack":"yarn build","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","dev:watch":"yarn dev:gw","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","test:watch":"vitest","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:service":"yarn dev:gw","postinstall":"node ./scripts/postinstall.js","format:check":"prettier --check .","prepublishOnly":"yarn build && yarn lint && yarn test","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\""},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"repository":{"url":"git+https://github.com/code4bones/tellymcp.git","type":"git"},"_npmVersion":"11.6.2","description":"TellyMCP - Telegram control plane for MCP-connected coding agents","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.20.0","ws":"8.20.1","zod":"4.4.3","knex":"^3.2.10","pino":"^10.3.1","dotenv":"^17.4.2","grammy":"1.43.0","amqplib":"0.10.9","ioredis":"5.10.1","moleculer":"0.15.0","mime-types":"^3.0.2","node-fetch":"^3.3.2","picocolors":"^1.1.1","playwright":"^1.60.0","pino-pretty":"^13.1.3","module-alias":"^2.3.4","@grammyjs/menu":"^1.3.1","https-proxy-agent":"^7.0.6","socks-proxy-agent":"^8.0.5","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.1","eslint":"^9.34.0","vitest":"^4.1.6","globals":"^16.3.0","ts-node":"^10.9.2","prettier":"^3.6.2","tsc-alias":"^1.8.17","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"24.12.4","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","typescript-eslint":"8.59.3","eslint-plugin-import":"^2.32.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/tellymcp_0.0.8_1779053247513_0.1473083400507389","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@deadragdoll/tellymcp","version":"0.0.9","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","_id":"@deadragdoll/tellymcp@0.0.9","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"bin":{"tellymcp":"dist/cli.js"},"dist":{"shasum":"3db4c760e47981d6c90044c1f3702e0aef96d32f","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.9.tgz","fileCount":123,"integrity":"sha512-c0Gs7OgqcQ9AFszNTlrG91wP9ei30uFPFUP1veW2vxh5KPySZoUvKlippKIAtapuAiPzGG9RN2xvRIokWFHEhw==","signatures":[{"sig":"MEQCIEbhV/68saw4mRnPT8ieYQmrSyVsTORNsYbcr+GZudHsAiB1SGekFY0F6aBJnhsz4kVm7LZygM/7qSD55Ee1O0J7Fg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1059848},"main":"dist/services/features/telegram-mcp/runtime.service.js","engines":{"node":">=24.0.0"},"gitHead":"aefbb4586a8c839b261b081bb65b6d6b20f6b291","scripts":{"dev":"yarn dev:gw","lint":"eslint .","test":"vitest run","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","format":"prettier --write .","prepack":"yarn build","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","dev:watch":"yarn dev:gw","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","test:watch":"vitest","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:service":"yarn dev:gw","postinstall":"node ./scripts/postinstall.js","format:check":"prettier --check .","prepublishOnly":"yarn build && yarn lint && yarn test","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\""},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"repository":{"url":"git+https://github.com/code4bones/tellymcp.git","type":"git"},"_npmVersion":"11.6.2","description":"TellyMCP - Telegram control plane for MCP-connected coding agents","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.20.0","ws":"8.20.1","zod":"4.4.3","knex":"^3.2.10","pino":"^10.3.1","dotenv":"^17.4.2","grammy":"1.43.0","amqplib":"0.10.9","ioredis":"5.10.1","moleculer":"0.15.0","mime-types":"^3.0.2","node-fetch":"^3.3.2","picocolors":"^1.1.1","playwright":"^1.60.0","pino-pretty":"^13.1.3","module-alias":"^2.3.4","@grammyjs/menu":"^1.3.1","https-proxy-agent":"^7.0.6","socks-proxy-agent":"^8.0.5","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.1","eslint":"^9.34.0","vitest":"^4.1.6","globals":"^16.3.0","ts-node":"^10.9.2","prettier":"^3.6.2","tsc-alias":"^1.8.17","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"24.12.4","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","typescript-eslint":"8.59.3","eslint-plugin-import":"^2.32.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/tellymcp_0.0.9_1779100902284_0.40677300174111997","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@deadragdoll/tellymcp","version":"0.0.10","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","_id":"@deadragdoll/tellymcp@0.0.10","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"bin":{"tellymcp":"dist/cli.js"},"dist":{"shasum":"fd27cfab346d509dc3c8f648fff5309434b628ca","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.10.tgz","fileCount":126,"integrity":"sha512-HSlQ31bMFar5yeHbY2yuRBaEpwNCvqZVZRObc1HShlrQvw2mgnTuYkeISGaBdHXrlYhZMKdHOSf+zOlKOaJkxA==","signatures":[{"sig":"MEUCIGOP0IOA710Z1PXDRbsyinfqBhtYvW/5NDpaG4wERMm9AiEApYH8HR6jmN0PWsK9AOIK+CM4Kw224KJ9YsiZCCy/ET4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1146788},"main":"dist/services/features/telegram-mcp/runtime.service.js","engines":{"node":">=24.0.0"},"gitHead":"aefbb4586a8c839b261b081bb65b6d6b20f6b291","scripts":{"dev":"yarn dev:gw","lint":"eslint .","test":"vitest run","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","format":"prettier --write .","prepack":"yarn build","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","dev:watch":"yarn dev:gw","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","test:watch":"vitest","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:service":"yarn dev:gw","postinstall":"node ./scripts/postinstall.js","format:check":"prettier --check .","prepublishOnly":"yarn build && yarn lint && yarn test","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\""},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"repository":{"url":"git+https://github.com/code4bones/tellymcp.git","type":"git"},"_npmVersion":"11.6.2","description":"TellyMCP - Telegram control plane for MCP-connected coding agents","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.20.0","ws":"8.20.1","zod":"4.4.3","knex":"^3.2.10","pino":"^10.3.1","dotenv":"^17.4.2","grammy":"1.43.0","amqplib":"0.10.9","i18next":"^26.2.0","ioredis":"5.10.1","moleculer":"0.15.0","mime-types":"^3.0.2","node-fetch":"^3.3.2","picocolors":"^1.1.1","playwright":"^1.60.0","pino-pretty":"^13.1.3","module-alias":"^2.3.4","@grammyjs/menu":"^1.3.1","https-proxy-agent":"^7.0.6","socks-proxy-agent":"^8.0.5","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.1","eslint":"^9.34.0","vitest":"^4.1.6","globals":"^16.3.0","ts-node":"^10.9.2","prettier":"^3.6.2","tsc-alias":"^1.8.17","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"24.12.4","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","typescript-eslint":"8.59.3","eslint-plugin-import":"^2.32.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/tellymcp_0.0.10_1779124118305_0.856207179870581","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@deadragdoll/tellymcp","version":"0.0.11","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","_id":"@deadragdoll/tellymcp@0.0.11","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"bin":{"tellymcp":"dist/cli.js"},"dist":{"shasum":"89ef91dc08a2e4c372249eac34a102e1f1c34c5c","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.11.tgz","fileCount":187,"integrity":"sha512-PfJR1FXwHrX/GxqENTrsuhtUOWcccuegPbJiMWuOjS+Wj2SbtTyppVjmimJGKQynyvBUynSdTjPRhvXpjZcCiw==","signatures":[{"sig":"MEUCIQCmMidijZ6K0+pvDBApxDtF6A6ROZf7iylgIZkT4p98JQIgR02WLiEewlO/qSgENoLxAjzm2JfJYMtFzJDegbHf3Qw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1547783},"main":"dist/services/features/telegram-mcp/runtime.service.js","engines":{"node":">=24.0.0"},"gitHead":"e62846434692e1f39e17817b33ab4b698fd85814","scripts":{"dev":"yarn dev:gw","lint":"eslint .","test":"vitest run","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile /opt/tellymcp-gateway/.env-gateway --hot --mask \"**/*.service.ts\"","dev:sh":"TELLYMCP_SOURCE_RUNTIME=true tsx src/cli.ts run --env ./.env-client","format":"prettier --write .","prepack":"yarn build","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","dev:watch":"yarn dev:gw","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","test:watch":"vitest","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:service":"yarn dev:gw","postinstall":"node ./scripts/postinstall.js","format:check":"prettier --check .","prepublishOnly":"yarn build && yarn lint && yarn test","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\""},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"repository":{"url":"git+https://github.com/code4bones/tellymcp.git","type":"git"},"_npmVersion":"11.6.2","description":"TellyMCP - Telegram control plane for MCP-connected coding agents","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.20.0","ws":"8.20.1","zod":"4.4.3","knex":"^3.2.10","pino":"^10.3.1","dotenv":"^17.4.2","grammy":"1.43.0","amqplib":"0.10.9","i18next":"^26.2.0","ioredis":"5.10.1","node-pty":"^1.1.0","moleculer":"0.15.0","mime-types":"^3.0.2","picocolors":"^1.1.1","playwright":"^1.60.0","pino-pretty":"^13.1.3","@xterm/xterm":"5.5.0","module-alias":"^2.3.4","@grammyjs/menu":"^1.3.1","@xterm/headless":"5.5.0","https-proxy-agent":"^7.0.6","socks-proxy-agent":"^8.0.5","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.1","eslint":"^9.34.0","vitest":"^4.1.6","globals":"^16.3.0","ts-node":"^10.9.2","prettier":"^3.6.2","@types/pg":"^8.20.0","tsc-alias":"^1.8.17","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"24.12.4","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","typescript-eslint":"8.59.3","eslint-plugin-import":"^2.32.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/tellymcp_0.0.11_1779708151261_0.4197587583542126","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@deadragdoll/tellymcp","version":"0.0.12","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","_id":"@deadragdoll/tellymcp@0.0.12","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"bin":{"tellymcp":"dist/cli.js"},"dist":{"shasum":"cb570a0ccef664f394e3d1749463505545694688","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.12.tgz","fileCount":187,"integrity":"sha512-wrWOATaqHQhSQcsMV4AWtL3uhfqPggBRNV4SzhDGd+rrkfGd3EWhb2LE/Wx2TRQ2PYMJvVFndU+g1znPeNdhxA==","signatures":[{"sig":"MEYCIQDzC6hJXQZ9kofvd72R41SMuqJBBq3i9cSPr145vUsWRwIhAIXTwrH+JmVnmcOfFUd7Ui50mxD2tHupU46R/wtwtcu8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1579786},"main":"dist/services/features/telegram-mcp/runtime.service.js","engines":{"node":">=24.0.0"},"gitHead":"1725ad2ee453f912dc90775d5881313a086801fe","scripts":{"dev":"yarn dev:gw","lint":"eslint .","test":"vitest run","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile /opt/tellymcp-gateway/.env-gateway --hot --mask \"**/*.service.ts\"","dev:sh":"TELLYMCP_SOURCE_RUNTIME=true tsx src/cli.ts run --env ./.env-client","format":"prettier --write .","prepack":"yarn build","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","dev:watch":"yarn dev:gw","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","test:watch":"vitest","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:service":"yarn dev:gw","postinstall":"node ./scripts/postinstall.js","format:check":"prettier --check .","prepublishOnly":"yarn build && yarn lint && yarn test","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\""},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"repository":{"url":"git+https://github.com/code4bones/tellymcp.git","type":"git"},"_npmVersion":"11.6.2","description":"TellyMCP - Telegram control plane for MCP-connected coding agents","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.20.0","ws":"8.20.1","zod":"4.4.3","knex":"^3.2.10","pino":"^10.3.1","dotenv":"^17.4.2","grammy":"1.43.0","amqplib":"0.10.9","i18next":"^26.2.0","ioredis":"5.10.1","node-pty":"^1.1.0","moleculer":"0.15.0","mime-types":"^3.0.2","picocolors":"^1.1.1","playwright":"^1.60.0","pino-pretty":"^13.1.3","@xterm/xterm":"5.5.0","module-alias":"^2.3.4","@grammyjs/menu":"^1.3.1","@xterm/headless":"5.5.0","https-proxy-agent":"^7.0.6","socks-proxy-agent":"^8.0.5","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.1","eslint":"^9.34.0","vitest":"^4.1.6","globals":"^16.3.0","ts-node":"^10.9.2","prettier":"^3.6.2","@types/pg":"^8.20.0","tsc-alias":"^1.8.17","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"24.12.4","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","typescript-eslint":"8.59.3","eslint-plugin-import":"^2.32.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/tellymcp_0.0.12_1780048778588_0.06753642493492484","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@deadragdoll/tellymcp","version":"0.0.13","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","_id":"@deadragdoll/tellymcp@0.0.13","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"bin":{"tellymcp":"dist/cli.js"},"dist":{"shasum":"a6f5de37bcfc0c7c7922abf1977ac29540b3bb39","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.13.tgz","fileCount":216,"integrity":"sha512-tjG2wluDo2uEHthgS4KB/tJCyR9w49Y90ZHgkekb/3jdLkGTve4Po3FyOmrKeZuNMfGMKpYTj6rAbyPbnqCBlw==","signatures":[{"sig":"MEQCIAnt9AW9lOgFHZratx0QrmlZjOsGU/Hhslg8Pp3b8CnVAiB7HEjyF9WgCNgJPqQgmTY0waG/gKFtfWPGqC35IikllQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1832601},"main":"dist/services/features/telegram-mcp/runtime.service.js","engines":{"node":">=24.0.0"},"gitHead":"230581bab5540a36af8da0c49683e3556cd206d2","scripts":{"dev":"yarn dev:gw","lint":"eslint .","test":"vitest run","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile /opt/tellymcp-gateway/.env-gateway --hot --mask \"**/*.service.ts\"","dev:sh":"TELLYMCP_SOURCE_RUNTIME=true tsx src/cli.ts run --env ./.env-client","format":"prettier --write .","prepack":"yarn build && yarn build:extensions","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","dev:watch":"yarn dev:gw","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","test:watch":"vitest","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:service":"yarn dev:gw","postinstall":"node ./scripts/postinstall.js","format:check":"prettier --check .","prepublishOnly":"yarn build && yarn build:extensions && yarn lint && yarn test","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","build:extensions":"node ./packages/firefox-attach-extension/scripts/build.mjs && node ./packages/chrome-attach-extension/scripts/build.mjs","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\""},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"repository":{"url":"git+https://github.com/code4bones/tellymcp.git","type":"git"},"_npmVersion":"11.6.2","description":"TellyMCP - Telegram control plane for MCP-connected coding agents","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.20.0","ws":"8.20.1","zod":"4.4.3","knex":"^3.2.10","pino":"^10.3.1","dotenv":"^17.4.2","grammy":"1.43.0","amqplib":"0.10.9","i18next":"^26.2.0","ioredis":"5.10.1","node-pty":"^1.1.0","moleculer":"0.15.0","mime-types":"^3.0.2","picocolors":"^1.1.1","playwright":"^1.60.0","pino-pretty":"^13.1.3","@xterm/xterm":"5.5.0","module-alias":"^2.3.4","@grammyjs/menu":"^1.3.1","@xterm/headless":"5.5.0","https-proxy-agent":"^7.0.6","socks-proxy-agent":"^8.0.5","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.1","eslint":"^9.34.0","vitest":"^4.1.6","globals":"^16.3.0","ts-node":"^10.9.2","prettier":"^3.6.2","@types/pg":"^8.20.0","tsc-alias":"^1.8.17","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"24.12.4","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","typescript-eslint":"8.59.3","eslint-plugin-import":"^2.32.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/tellymcp_0.0.13_1780738340773_0.8936954105422894","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@deadragdoll/tellymcp","version":"0.0.14","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","_id":"@deadragdoll/tellymcp@0.0.14","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"bin":{"tellymcp":"dist/cli.js"},"dist":{"shasum":"8509120b2ae093fa25aa7cee7d81670c8672d22e","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.14.tgz","fileCount":230,"integrity":"sha512-OSM6yFR1LSBi374oWVrlpgyQbE00y0jONhwZ8sIcomyPaHFe9zfxN9m5Ysd3a8Ve5pySP9w+9nKFgdKp0j5HqQ==","signatures":[{"sig":"MEUCIQCkOZUYjl+Gyybo1QynOsHAeINKTMT68lF2AToKuj5NZQIgd532/I5KgIGdEJDONMM5qWGSWmtUnZt91uOESFAxMyc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2006000},"main":"dist/services/features/telegram-mcp/runtime.service.js","engines":{"node":">=24.0.0"},"gitHead":"7db6d8e522a7347c78f8ee1591309bf97de0aef3","scripts":{"dev":"yarn dev:gw","lint":"eslint .","test":"vitest run","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile /opt/tellymcp-gateway/.env-gateway --hot --mask \"**/*.service.ts\"","dev:sh":"TELLYMCP_SOURCE_RUNTIME=true tsx src/cli.ts run --env ./.env-client","format":"prettier --write .","prepack":"yarn build && yarn build:extensions","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","dev:watch":"yarn dev:gw","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","test:watch":"vitest","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:service":"yarn dev:gw","postinstall":"node ./scripts/postinstall.js","format:check":"prettier --check .","prepublishOnly":"yarn build && yarn build:extensions && yarn lint && yarn test","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","build:extensions":"node ./packages/firefox-attach-extension/scripts/build.mjs && node ./packages/chrome-attach-extension/scripts/build.mjs","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\""},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"repository":{"url":"git+https://github.com/code4bones/tellymcp.git","type":"git"},"_npmVersion":"11.6.2","description":"TellyMCP - Telegram control plane for MCP-connected coding agents","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.20.0","ws":"8.21.0","zod":"4.4.3","knex":"^3.2.10","pino":"^10.3.1","dotenv":"^17.4.2","grammy":"1.43.0","amqplib":"0.10.9","i18next":"^26.2.0","ioredis":"5.10.1","node-pty":"^1.1.0","moleculer":"0.15.0","mime-types":"^3.0.2","picocolors":"^1.1.1","playwright":"^1.60.0","pino-pretty":"^13.1.3","@xterm/xterm":"5.5.0","module-alias":"^2.3.4","@grammyjs/menu":"^1.3.1","@xterm/headless":"5.5.0","@xterm/addon-fit":"0.10.0","https-proxy-agent":"^7.0.6","socks-proxy-agent":"^8.0.5","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.1","eslint":"^9.34.0","vitest":"^4.1.6","globals":"^16.3.0","ts-node":"^10.9.2","prettier":"^3.6.2","@types/pg":"^8.20.0","tsc-alias":"^1.8.17","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"24.12.4","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","typescript-eslint":"8.59.3","eslint-plugin-import":"^2.32.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/tellymcp_0.0.14_1784028228435_0.07815857292582162","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@deadragdoll/tellymcp","version":"0.0.15","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","_id":"@deadragdoll/tellymcp@0.0.15","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"bin":{"tellymcp":"dist/cli.js"},"dist":{"shasum":"949f671e8ac7ef88bd6a5edc289dd918d825bd2b","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.15.tgz","fileCount":235,"integrity":"sha512-Xh+IlLEuYUGz+0OdHyVu/3Gw011ce7akQTS/H+9l5hXiUM1GW+phjK2IbRB7PSZ8YJ4wifnV69+764yzsKKAlA==","signatures":[{"sig":"MEUCIAqkPGmrl8SiakeqDP5H1PLFrJ/hjiW7xC20TdTynMMTAiEA+DmKEgDur5jCUVwQJnKWQeOwH3aFjVzwsAQ1JUUKw5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2108688},"main":"dist/services/features/telegram-mcp/runtime.service.js","engines":{"node":">=24.0.0"},"gitHead":"9f093da5b8f1313f0a32e811539f62f67398799d","scripts":{"dev":"yarn dev:gw","lint":"eslint .","test":"vitest run","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile /opt/tellymcp-gateway/.env-gateway --hot --mask \"**/*.service.ts\"","dev:sh":"TELLYMCP_SOURCE_RUNTIME=true tsx src/cli.ts run --env ./.env-client","format":"prettier --write .","prepack":"yarn build && yarn build:extensions","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","dev:watch":"yarn dev:gw","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","test:watch":"vitest","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:service":"yarn dev:gw","postinstall":"node ./scripts/postinstall.js","format:check":"prettier --check .","prepublishOnly":"yarn build && yarn build:extensions && yarn lint && yarn test","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","build:extensions":"node ./packages/firefox-attach-extension/scripts/build.mjs && node ./packages/chrome-attach-extension/scripts/build.mjs","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\""},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"repository":{"url":"git+https://github.com/code4bones/tellymcp.git","type":"git"},"_npmVersion":"11.6.2","description":"TellyMCP - Telegram control plane for MCP-connected coding agents","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.20.0","ws":"8.21.0","zod":"4.4.3","knex":"^3.2.10","pino":"^10.3.1","dotenv":"^17.4.2","grammy":"1.43.0","amqplib":"0.10.9","i18next":"^26.2.0","ioredis":"5.10.1","node-pty":"^1.1.0","moleculer":"0.15.0","mime-types":"^3.0.2","picocolors":"^1.1.1","playwright":"^1.60.0","pino-pretty":"^13.1.3","@xterm/xterm":"5.5.0","module-alias":"^2.3.4","@grammyjs/menu":"^1.3.1","@xterm/headless":"5.5.0","@xterm/addon-fit":"0.10.0","https-proxy-agent":"^7.0.6","socks-proxy-agent":"^8.0.5","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.1","eslint":"^9.34.0","vitest":"^4.1.6","globals":"^16.3.0","ts-node":"^10.9.2","prettier":"^3.6.2","@types/pg":"^8.20.0","tsc-alias":"^1.8.17","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"24.12.4","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","typescript-eslint":"8.59.3","eslint-plugin-import":"^2.32.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/tellymcp_0.0.15_1784210295525_0.17717474776636744","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@deadragdoll/tellymcp","version":"0.0.16","description":"TellyMCP - Telegram control plane for MCP-connected coding agents","main":"dist/services/features/telegram-mcp/runtime.service.js","bin":{"tellymcp":"dist/cli.js"},"publishConfig":{"access":"public"},"keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"scripts":{"postinstall":"node ./scripts/postinstall.js","build:extensions":"node ./packages/firefox-attach-extension/scripts/build.mjs && node ./packages/chrome-attach-extension/scripts/build.mjs","prepack":"yarn build && yarn build:extensions","prepublishOnly":"yarn build && yarn build:extensions && yarn lint && yarn test","mcp:local":"codex mcp add telegramHuman --url http://127.0.0.1:8787/mcp","dev:gw":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile /opt/tellymcp-gateway/.env-gateway --hot --mask \"**/*.service.ts\"","dev:builder":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-builder --hot --mask \"**/*.service.ts\"","dev:gw:telegram":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services/features/telegram-mcp --config src/moleculer.config.ts --envfile ./.env-dev --hot --mask \"**/*.service.ts\"","dev:client":"TS_NODE_TRANSPILE_ONLY=1 TS_NODE_EXPERIMENTAL_RESOLVER=1 NODE_OPTIONS=--openssl-legacy-provider ts-node ./node_modules/moleculer/bin/moleculer-runner.js src/services --config src/moleculer.config.ts --envfile ./.env-client --hot --mask \"**/*.service.ts\"","dev:sh":"TELLYMCP_SOURCE_RUNTIME=true tsx src/cli.ts run --env ./.env-client","dev":"yarn dev:gw","dev:watch":"yarn dev:gw","dev:service":"yarn dev:gw","build":"rm -rf dist && tsc -p tsconfig.json && tsc-alias -p tsconfig.json","start":"yarn start:gw","start:gw":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services --config dist/moleculer.config.js --mask \"**/*.service.js\"","start:gw:telegram":"node ./node_modules/moleculer/bin/moleculer-runner.js dist/services/features/telegram-mcp --config dist/moleculer.config.js --mask \"**/*.service.js\"","lint":"eslint .","format":"prettier --write .","format:check":"prettier --check .","test":"vitest run","test:watch":"vitest"},"repository":{"type":"git","url":"git+https://github.com/code4bones/tellymcp.git"},"homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","engines":{"node":">=24.0.0"},"dependencies":{"@grammyjs/menu":"^1.3.1","@grammyjs/storage-redis":"^2.5.1","@modelcontextprotocol/sdk":"^1.29.0","@xterm/addon-fit":"0.10.0","@xterm/headless":"5.5.0","@xterm/xterm":"5.5.0","amqplib":"0.10.9","dotenv":"^17.4.2","grammy":"1.43.0","https-proxy-agent":"^7.0.6","i18next":"^26.2.0","ioredis":"5.10.1","knex":"^3.2.10","mime-types":"^3.0.2","module-alias":"^2.3.4","moleculer":"0.15.0","node-pty":"^1.1.0","pg":"^8.20.0","picocolors":"^1.1.1","pino":"^10.3.1","pino-pretty":"^13.1.3","playwright":"^1.60.0","socks-proxy-agent":"^8.0.5","ws":"8.21.0","zod":"4.4.3"},"devDependencies":{"@eslint/js":"^9.34.0","@types/amqplib":"^0.10.8","@types/mime-types":"^3.0.1","@types/node":"24.12.4","@types/pg":"^8.20.0","eslint":"^9.34.0","eslint-import-resolver-typescript":"^4.4.4","eslint-plugin-import":"^2.32.0","globals":"^16.3.0","prettier":"^3.6.2","ts-node":"^10.9.2","tsc-alias":"^1.8.17","tsx":"4.22.1","typescript":"^5.9.2","typescript-eslint":"8.59.3","vitest":"^4.1.6"},"gitHead":"c11319ee254492c763e4b0db303a8306e9082ec5","_id":"@deadragdoll/tellymcp@0.0.16","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-ty8IrB4+x60EEDVepYmQ0T+pXKE1tilpMxZe9SUOWM5gEYPwydwPybuAQin6T5l3B9Euh+1cvUngQqibPSAtfQ==","shasum":"f07c2a872a8dffaa3dc5bb345edbcbe93896c7f0","tarball":"https://registry.npmjs.org/@deadragdoll/tellymcp/-/tellymcp-0.0.16.tgz","fileCount":235,"unpackedSize":2109523,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGeuGIe18CSE8vmBEAHjyE3e6E8DCYLNF/KUgnq5+g00AiBgt5SCjUMnwIaVJQyJiDLmbIgvhbdkFQ/bAVa8B64q+g=="}]},"_npmUser":{"name":"deadragdoll","email":"code4bones@gmail.com"},"directories":{},"maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tellymcp_0.0.16_1784214493529_0.5314123893299143"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-17T15:51:35.791Z","modified":"2026-07-16T15:08:13.842Z","0.0.1":"2026-05-17T15:51:36.124Z","0.0.2":"2026-05-17T16:29:45.067Z","0.0.3":"2026-05-17T17:07:22.741Z","0.0.4":"2026-05-17T17:32:29.821Z","0.0.5":"2026-05-17T18:37:16.452Z","0.0.6":"2026-05-17T19:22:49.036Z","0.0.7":"2026-05-17T20:35:09.447Z","0.0.8":"2026-05-17T21:27:27.719Z","0.0.9":"2026-05-18T10:41:42.442Z","0.0.10":"2026-05-18T17:08:38.454Z","0.0.11":"2026-05-25T11:22:31.424Z","0.0.12":"2026-05-29T09:59:38.773Z","0.0.13":"2026-06-06T09:32:20.967Z","0.0.14":"2026-07-14T11:23:48.616Z","0.0.15":"2026-07-16T13:58:15.714Z","0.0.16":"2026-07-16T15:08:13.678Z"},"bugs":{"url":"https://github.com/code4bones/tellymcp/issues"},"author":{"name":"code4bones","email":"code4bones@gmail.com"},"license":"MIT","homepage":"https://www.npmjs.com/package/@deadragdoll/tellymcp","keywords":["telegram","mcp","human-in-the-loop","bot","agent"],"repository":{"type":"git","url":"git+https://github.com/code4bones/tellymcp.git"},"description":"TellyMCP - Telegram control plane for MCP-connected coding agents","maintainers":[{"name":"deadragdoll","email":"code4bones@gmail.com"}],"readme":"<div align=\"center\">\n\n# TellyMCP\n\n**Telegram control plane for MCP-connected coding agents**\n\n[English](./README.md) · [Русский](./README-ru.md) · [Standalone](./docs/STANDALONE.md) · [Standalone RU](./docs/STANDALONE-ru.md)\n\n[![npm version](https://img.shields.io/npm/v/@deadragdoll/tellymcp.svg)](https://www.npmjs.com/package/@deadragdoll/tellymcp)\n[![node](https://img.shields.io/badge/node-%3E%3D24-339933.svg)](https://nodejs.org/)\n[![license](https://img.shields.io/npm/l/@deadragdoll/tellymcp.svg)](./LICENSE)\n[![gateway--first](https://img.shields.io/badge/runtime-gateway--first-1f6feb.svg)](./README.md#current-runtime-model)\n[![telegram webhook](https://img.shields.io/badge/telegram-webhook%20%7C%20polling-26A5E4.svg)](./README.md#webhook-mode)\n\n</div>\n\n`@deadragdoll/tellymcp` is a Telegram control plane for MCP-connected coding agents.\n\nThe current model is gateway-first:\n\n- one gateway process owns the Telegram bot, web app, project state, and live console registry\n- one or more agent processes connect to that gateway\n- each running agent console is a routable target\n- Telegram users work through the gateway menu instead of pairing individual sessions\n\n## What It Does\n\n- exposes MCP tools for human Telegram interaction\n- lets one agent ask another agent to do work and return files or notes\n- lets MCP chat clients retrieve project text, images, and artifacts from a selected console\n- stores structured xchange records in `.mcp-xchange`\n- supports browser automation with Playwright\n- can attach to an already running Firefox or Chrome tab through bundled local extensions\n- records browser sessions into structured `.mcp-xchange/web/...` bundles with HTML, network and console artifacts\n- can inject helper scripts into attached tabs or Playwright pages through `browser_inject_script`\n- serves the Telegram Mini App / Live View from the gateway\n- supports Telegram polling or webhook mode on the gateway\n- ships a bundled Codex workflow plugin for better agent behavior\n\n## Current Runtime Model\n\nTopology:\n\n```text\nTelegram user\n    |\nTelegram bot + WebApp\n    |\nGateway\n    |\n    +-- Agent console A\n    +-- Agent console B\n    +-- Agent console C\n```\n\nImportant consequences:\n\n- there is no session pairing flow in the normal model\n- `/menu` on the gateway bot shows live consoles directly\n- cross-console work uses canonical `session_id = client_uuid:local_session_id`\n- unsolicited work is handled through structured xchange records, not inbox polling APIs\n\n## Main Surfaces\n\nHuman-facing:\n\n- `telegram_message` records\n- `notify_telegram`\n- `browser_screenshot(send_to_telegram=true)`\n- `get_file` for returning screenshots and artifacts to MCP chat clients\n\nAgent-to-agent:\n\n- `partner_note` records\n- `send_partner_note`\n- `send_partner_file`\n- `list_gateway_sessions`\n\nDiagnostics:\n\n- `get_runtime_diagnostics` for safe end-to-end gateway/client health checks\n\nBrowser:\n\n- `browser_open`\n- `browser_click`\n- `browser_fill`\n- `browser_inject_script`\n- `browser_press`\n- `browser_wait_for`\n- `browser_screenshot`\n- `browser_recording_start`\n- `browser_recording_stop`\n- `browser_recording_status`\n\nFiles:\n\n- `get_file_list(source=..., limit=...)`\n- `get_file(file_path=..., type=\"url\")`\n- `get_file(file_path=..., type=\"image\")`\n- `get_file(file_path=..., type=\"text\")`\n- `get_file(file_path=..., type=\"base64\")`\n- `get_file(selector=\"latest_screenshot\")`\n\nTools sync:\n\n- `refresh_tools_markdown`\n- `.mcpsession.json` keeps startup identity and the last known tools hashes\n\n## Requirements\n\n- Node.js `>= 24`\n- Python 3, `make`, and a C/C++ toolchain on Linux so `node-pty` can build its native addon; npm lifecycle scripts must be enabled\n- Redis for gateway and `both` modes only; clients do not use Redis\n- PostgreSQL for gateway mode\n- optional RabbitMQ for durable gateway fanout\n- Playwright browser binaries if you use browser tools\n\n## Installation\n\nOn Debian/Ubuntu, install the native PTY build prerequisites first:\n\n```bash\nsudo apt install -y python3 make g++\nnpm config set ignore-scripts false\n```\n\n```bash\nnpm install -g @deadragdoll/tellymcp --foreground-scripts\n```\n\nThe published `node-pty` dependency does not provide a Linux ARM64 binary, so\nthe install lifecycle builds `pty.node` locally. If a previous installation\ncompleted without it, repair the global package with:\n\n```bash\nnpm uninstall -g @deadragdoll/tellymcp\nnpm install -g @deadragdoll/tellymcp@latest --foreground-scripts\ntellymcp doctor --env <file>\n```\n\n`tellymcp --help` and setup commands do not load the native PTY module. Runtime\nstartup validates it and prints the same recovery instructions instead of a\nraw native-module stack trace.\n\nOptional browser runtime:\n\n```bash\ntellymcp browser install\n```\n\nOptional attached-browser extensions:\n\n```bash\ntellymcp extension firefox\ntellymcp extension chrome\n```\n\nThis exports unpacked extension bundles into the current directory:\n\n- `./tellymcp-firefox-attach`\n- `./tellymcp-chrome-attach`\n\nOptional Codex workflow plugin:\n\n```bash\ntellymcp codex-plugin install\n```\n\n## Quick Start\n\n### 1. Gateway\n\nCreate a gateway workspace and env:\n\n```bash\nmkdir -p ~/telly-gateway\ncd ~/telly-gateway\ntellymcp configure\n```\n\nThis opens a token-protected local page on `127.0.0.1`. Choose `Gateway` in the\nwizard, fill and validate the settings, then save `.env-gateway` through the\nnormal browser download flow. Set its permissions to `0600` before use. Use\n`tellymcp init gateway` when you specifically want a commented template for\nmanual editing.\n\nEnter the public origin or API base only once. The wizard derives gateway HTTP,\nWebSocket, Mini App, webhook, root-prefix, and optional OAuth connector URLs.\nThe key stages include live connection checks for Telegram, Redis, PostgreSQL,\nthe gateway HTTP/WebSocket endpoints, and optional RabbitMQ.\n\nOr copy the sample from this package:\n\n- [.env.example.gateway](./.env.example.gateway)\n\nRequired gateway values:\n\n- `TELEGRAM_BOT_TOKEN`\n- `REDIS_HOST`\n- `DB_HOST`\n- `DB_USER`\n- `DB_PASSWORD`\n- `DB_NAME`\n- `GATEWAY_PUBLIC_URL`\n- `GATEWAY_WS_URL`\n- `GATEWAY_SCOPE_TOKEN`\n- `GATEWAY_AUTH_TOKEN`\n\nThen run:\n\n```bash\ntellymcp run --env .env\n```\n\n### 2. Agent\n\nCreate one workspace per agent console:\n\n```bash\nmkdir -p ~/agent-a\ncd ~/agent-a\ntellymcp configure\n```\n\nChoose `Client` in the wizard. The form includes the gateway connection, local\nconsole identity, terminal, browser, MCP, and advanced runtime settings.\nAfter validation the browser downloads `.env-client`. Use `--no-open` to print\nthe local URL without opening a browser automatically.\n\nFor clients, the same Public base URL automatically produces\n`GATEWAY_PUBLIC_URL`, `GATEWAY_WS_URL`, and `GATEWAY_WS_PATH`.\n\nOr copy:\n\n- [.env.example.client](./.env.example.client)\n\nRequired client values:\n\n- `GATEWAY_PUBLIC_URL`\n- `GATEWAY_WS_URL`\n- `GATEWAY_SCOPE_TOKEN`\n- `GATEWAY_AUTH_TOKEN` (the same transport token configured on the gateway)\n- `GATEWAY_USER_UUID` if this console should be scoped to a specific Telegram owner\n\nRecommended:\n\n- built-in PTY terminal runtime is used by default\n- explicit `TELLYMCP_SESSION_ID` and `TELLYMCP_SESSION_LABEL` for the first run\n\nFirst run:\n\n```bash\ntellymcp run --env .env -s NEW\n```\n\nAfter that, `.mcpsession.json` stores:\n\n- `local_session_id`\n- `session_label`\n- `env_file`\n- `gateway_client_uuid`\n\nClient runtime state is local and does not require Redis. The persisted\n`gateway_client_uuid` keeps the client identity stable across restarts.\n\nSo later the same workspace can usually start with:\n\n```bash\ntellymcp run\n```\n\n## Webhook Mode\n\nGateway supports Telegram webhook mode.\n\nTypical nginx setup can proxy everything under `/api/` to the standalone gateway listener. The webhook route is just another backend route:\n\n- `/api/telegram/webhook`\n\nRelevant env:\n\n```env\nTELEGRAM_WEBHOOK_ENABLED=true\nTELEGRAM_WEBHOOK_PATH=/telegram/webhook\nTELEGRAM_WEBHOOK_PUBLIC_URL=https://your-domain.example/api/telegram/webhook\nTELEGRAM_WEBHOOK_SECRET=change_me_webhook_secret\n```\n\nWhen webhook mode is enabled:\n\n- the gateway registers Telegram webhook on startup\n- polling is not started\n- the secret is checked via `x-telegram-bot-api-secret-token`\n\n## MCP Usage\n\n### Local HTTP\n\nIn client mode the local MCP endpoint is usually:\n\n```text\nhttp://127.0.0.1:8787/mcp\n```\n\nHelper:\n\n```bash\ntellymcp mcp --url http://127.0.0.1:8787/mcp\n```\n\nUse the MCP HTTP endpoint exposed by `tellymcp run` for Codex and similar agents.\n\n## Codex Plugin\n\nThe package bundles a local Codex plugin with workflow skills for:\n\n- human Telegram replies\n- partner notes\n- browser screenshot tasks\n- artifact-return flows\n\nCommands:\n\n```bash\ntellymcp codex-plugin status\ntellymcp codex-plugin install\n```\n\nThe installer:\n\n- copies the bundled plugin into a managed local Codex path\n- updates the personal marketplace manifest\n- installs or updates the plugin if the Codex CLI is available\n\n## Browser Workflows\n\nBrowser tools use Playwright Chromium.\n\nPreferred path:\n\n1. `browser_open`\n2. `browser_screenshot`\n3. either:\n   - `send_to_telegram=true` for direct human reply\n   - `send_partner_file` for cross-console artifact return\n\nIf browser binaries are missing:\n\n```bash\ntellymcp browser install\n```\n\nDo not replace browser workflows with ad hoc shell Playwright commands unless you are debugging the runtime itself.\n\n## Terminal Blockers\n\nGateway prompt scanning is now live-client driven:\n\n- the scanner is armed on gateway startup but starts working only after a live client connects\n- relay console materialization happens from gateway hello/owner-route hydration, not from `/menu`\n- prompt detection works on the tail of the captured terminal buffer\n\nPrimary blocker heuristic:\n\n- contiguous numbered choices like `1.`, `2.`, `3.`\n- nearby action hints such as `press`, `input`, `choose`, `enter`, `esc`, `yes`, `no`\n- optional context lines above the menu block are included in the Telegram notice\n\nWhen a blocker is detected, the gateway can send inline Telegram buttons for:\n\n- `1..N`\n- `Enter`\n- `Esc`\n\nThose buttons send exactly the digit or terminal action to the target console. No marker navigation is used.\n\nOperational notes:\n\n- repeated scans of the same blocker fingerprint do not resend the notice\n- relay capture misses for offline agents are treated as debug-only noise\n- `Storage` and `Screenshots` on the gateway are relay-aware and read console metadata through gateway routes instead of the gateway filesystem\n\n## Collaboration Model\n\nProjects:\n\n- live console presence comes from gateway live registry\n- project membership is tracked separately from live presence\n- one console can participate in a project\n- one client can have several live consoles at the same time\n\nExpected agent behavior:\n\n- resolve targets through `list_gateway_sessions`\n- read incoming work through `list_xchange_records` and `get_xchange_record`\n- return real files with `send_partner_file`\n- call `mark_xchange_record_read` only after the required reply was successfully sent\n\n## Environment Files\n\nUse the shipped samples as the canonical starting point:\n\n- [Environment contract and migration guide](./docs/ENVIRONMENT.md)\n- [.env.example.gateway](./.env.example.gateway)\n- [.env.example.client](./.env.example.client)\n\nBundled init templates:\n\n- [config/templates/env.gateway.template](./config/templates/env.gateway.template)\n- [config/templates/env.client.template](./config/templates/env.client.template)\n- [config/templates/env.both.template](./config/templates/env.both.template)\n\nThe samples were cleaned to match the current runtime:\n\n- removed old inbox-only settings\n- removed obsolete pairing-oriented wording\n- removed unused secrets like `SESSION_SECRET`\n- removed unused `APP_NAME`\n- renamed ambiguous legacy keys to `TERMINAL_*`, `GATEWAY_SCOPE_TOKEN`,\n  `TELEGRAM_REQUEST_MODE`, `DB_SCHEMA`, and `LOGFEED_ENABLED`\n\n## Operational Commands\n\nHealth check:\n\n```bash\ntellymcp doctor --env .env\n```\n\nDestructive local+gateway cleanup:\n\n```bash\ntellymcp system-prune --env .env --yes\n```\n\nNormalize an older env file to the current role-aware contract:\n\n```bash\ntellymcp migrate-env ./old.env > ./.migrated-env\n```\n\nThe runtime does not fall back to the old schema. If legacy keys are detected,\nstartup stops and prints the migration command.\n\n## Documentation Map\n\n- [README-ru.md](./README-ru.md)\n- [STANDALONE.md](./docs/STANDALONE.md)\n- [STANDALONE-ru.md](./docs/STANDALONE-ru.md)\n- [CHAT_CONNECTOR.md](./docs/CHAT_CONNECTOR.md) — ChatGPT/Claude OAuth connector\n- [TOOLS.md](./TOOLS.md)\n- [screenshots/README.md](./screenshots/README.md)\n\n## Status\n\nThis README describes the current gateway-first model.\n\nLegacy concepts that should not be used for new setups:\n\n- pairing codes\n- session inbox APIs\n- `Local` partner menu\n- linked-session flows outside `partner_note` / project collaboration\n","readmeFilename":"README.md"}