{"_id":"@1chat/agent","_rev":"3-b91403befa4e102014c1583c4fbd9a38","name":"@1chat/agent","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@1chat/agent","version":"0.1.0","keywords":["1chat","mcp","ai-agent","telegram","whatsapp","webhook"],"license":"MIT","_id":"@1chat/agent@0.1.0","maintainers":[{"name":"fedorovdgap","email":"fedorovdg@proton.me"}],"homepage":"https://1-chat.ru/baza-znany/api","bugs":{"url":"https://github.com/fedorovdg-dev/1chat/issues"},"bin":{"1chat-agent":"src/cli.js"},"dist":{"shasum":"8c16d23eac0fd5d9ee827971d4812655ebcfad75","tarball":"https://registry.npmjs.org/@1chat/agent/-/agent-0.1.0.tgz","fileCount":5,"integrity":"sha512-dwhZtpqbqfA3dvCVU4lh3+juQwVxgjkAWjuFUN7oF1J2Dao6THqEHFbBwrHdXgIsofH5B62p8V2A4RggetnX1w==","signatures":[{"sig":"MEYCIQD0c1q6b4IUZdQwTpvwo93bagg1ajUy+8SjiH6oUHTPUQIhAMTersGNDbzaUkEZQeCSeUriwZhCayzmvr5ViuYkTrzs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20103},"main":"src/client.js","type":"module","engines":{"node":">=20"},"exports":{".":"./src/client.js"},"gitHead":"040c0345521cd4e2fbb6930fc3937c77fc8d4d42","scripts":{"test":"node --test test/*.test.js","start":"node src/cli.js"},"_npmUser":{"name":"fedorovdgap","email":"fedorovdg@proton.me"},"repository":{"url":"git+https://github.com/fedorovdg-dev/1chat.git","type":"git"},"_npmVersion":"10.9.0","description":"Будит вашего ИИ-агента, когда в 1-chat приходит сообщение","directories":{},"_nodeVersion":"23.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent_0.1.0_1789160623698_0.18810798459121703","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@1chat/agent","version":"0.1.6","keywords":["1chat","mcp","ai-agent","telegram","whatsapp","webhook"],"license":"MIT","_id":"@1chat/agent@0.1.6","maintainers":[{"name":"fedorovdgap","email":"fedorovdg@proton.me"}],"homepage":"https://1-chat.ru/baza-znany/api","bugs":{"url":"https://github.com/fedorovdg-dev/1chat/issues"},"bin":{"1chat-agent":"src/cli.js"},"dist":{"shasum":"5da5cd5e9a1c181cffdd15c4445a1c685680ecb0","tarball":"https://registry.npmjs.org/@1chat/agent/-/agent-0.1.6.tgz","fileCount":5,"integrity":"sha512-20E9OQSz4qd9u1RJm+zdJjvyDKDa3KAzgiay5MXzvCo3sxVSFWNkq7qxIeZsjTq9KIlnYME7fLjwIfUEbf6fTw==","signatures":[{"sig":"MEQCIHhJP2+CyRGSqbYek3bFJruCzOuEukOvkWtseS0IFCqWAiAWhA3az/Y5/wgHyS65ba7LM4oz7Vk3Vzh9qBTU3nZ7KA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@1chat%2fagent@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21788},"main":"src/client.js","type":"module","engines":{"node":">=20"},"exports":{".":"./src/client.js"},"gitHead":"d96faff833684fb9aa8734650cfd6622c304b4df","scripts":{"test":"node --test test/*.test.js","start":"node src/cli.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:177d12d6-598a-4bc6-be44-fe2919c1c5f2"}},"repository":{"url":"git+https://github.com/fedorovdg-dev/1chat.git","type":"git"},"_npmVersion":"12.0.2","description":"Будит вашего ИИ-агента, когда в 1-chat приходит сообщение","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent_0.1.6_1789161868660_0.3152359752821441","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@1chat/agent","version":"0.2.0","description":"Будит вашего ИИ-агента, когда в 1-chat приходит сообщение","type":"module","license":"MIT","repository":{"type":"git","url":"git+https://github.com/fedorovdg-dev/1chat.git"},"homepage":"https://1-chat.ru/baza-znany/api","bin":{"1chat-agent":"src/cli.js"},"scripts":{"test":"node --test test/*.test.js","start":"node src/cli.js"},"engines":{"node":">=20"},"keywords":["1chat","mcp","ai-agent","telegram","whatsapp","webhook"],"main":"src/client.js","exports":{".":"./src/client.js"},"gitHead":"3588d9df2e94768e740f516e4b3e66fc202c3ddb","_id":"@1chat/agent@0.2.0","bugs":{"url":"https://github.com/fedorovdg-dev/1chat/issues"},"_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-QoYLhZ8gQ+KQ5BOmjnJug/0Z3VPRk89hBYPGdbMHzDdYKtUk3WC0mEK3W0g5vbBxfjO+WlL7y1XCBjGunTW95A==","shasum":"5a18a8cfb74b5955b373ec22557bd5c4e996e40c","tarball":"https://registry.npmjs.org/@1chat/agent/-/agent-0.2.0.tgz","fileCount":6,"unpackedSize":34418,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@1chat%2fagent@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEpAhEOT4VTqZn8QQgzIsam4sX3Bdktp/n4n58XH4+c9AiBBPBipb7NsRF2LPJ4I/TSVDYpWY8OXCoYzfS7DUgbaMQ=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:177d12d6-598a-4bc6-be44-fe2919c1c5f2"}},"directories":{},"maintainers":[{"name":"fedorovdgap","email":"fedorovdg@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent_0.2.0_1789164745250_0.5099239208932334"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-11T21:03:43.484Z","modified":"2026-09-11T22:12:25.708Z","0.1.0":"2026-09-11T21:03:43.825Z","0.1.6":"2026-09-11T21:24:28.774Z","0.2.0":"2026-09-11T22:12:25.378Z"},"bugs":{"url":"https://github.com/fedorovdg-dev/1chat/issues"},"license":"MIT","homepage":"https://1-chat.ru/baza-znany/api","keywords":["1chat","mcp","ai-agent","telegram","whatsapp","webhook"],"repository":{"type":"git","url":"git+https://github.com/fedorovdg-dev/1chat.git"},"description":"Будит вашего ИИ-агента, когда в 1-chat приходит сообщение","maintainers":[{"name":"fedorovdgap","email":"fedorovdg@proton.me"}],"readme":"# @1chat/agent\n\nБудит вашего ИИ-агента, когда в [1-chat](https://1-chat.ru) приходит сообщение.\n\n```bash\nexport ONECHAT_API_KEY=sk_1chat_rw_...\nnpx @1chat/agent --exec \"hermes run\"\n```\n\nВсё. Ни домена, ни сертификата, ни веб-сервера — соединение исходящее.\n\nА если добавить `--serve-mcp`, тот же процесс отдаст агенту MCP — и агент\nбудет не только просыпаться на сообщения, но и отвечать на них:\n\n```bash\nnpx @1chat/agent --exec \"hermes run\" --serve-mcp\n```\n\n## Зачем это нужно\n\nУ API нет способа разбудить агента, кроме двух: он либо спрашивает сам, либо\nвы принимаете вебхук. Спрашивать самому дорого — **каждая проверка языковой\nмодели это её ход и её токены**, и проверка раз в полминуты обходится в сотню\nходов в час на то, чтобы узнать, что ничего не произошло. Принимать вебхук\nдёшево, но требует домена, сертификата и веб-сервера.\n\nЭтот клиент — третий путь. Ждёт обычный процесс, который не стоит ничего;\nагент запускается только когда сообщение действительно пришло.\n\n```\n1-chat  ←(держит соединение)—  @1chat/agent  →  ваш агент\n```\n\n## Параметры\n\n| | |\n|---|---|\n| `--exec <команда>` | что запускать. Событие приходит в `stdin` как JSON |\n| `--dialogs <id,id>` | реагировать только на эти диалоги |\n| `--state <файл>` | где хранить позицию в потоке, по умолчанию `.state/cursor` |\n| `--from now\\|begin` | с чего начать при первом запуске |\n| `--quiet` | только ошибки в лог |\n| `--serve-mcp [порт]` | поднять локальный MCP, по умолчанию `8765` |\n\n| Переменная | |\n|---|---|\n| `ONECHAT_API_KEY` | обязательна, выпускается на странице «API-ключи» |\n| `ONECHAT_BASE_URL` | по умолчанию `https://app.1-chat.ru/api` |\n\nСобытие уходит в `stdin`, а не аргументом: текст пишет человек, и рано или\nпоздно в нём окажется всё, что ломает экранирование.\n\n## Ответы через MCP\n\nРаньше агенту приходилось настраивать два места: наблюдателя и отдельно MCP,\nкаждый со своим ключом. Настройки расходились молча, и это выглядело как\nполомка — агент читал переписку, но на попытку ответить получал отказ.\n\nС `--serve-mcp` место одно:\n\n```\n1-chat  ←(держит соединение)—  @1chat/agent  →  будит агента\n                                     ↑\n                                     └── MCP на localhost ── агент отвечает\n```\n\nПри старте служба печатает готовый кусок конфига:\n\n```yaml\nmcp_servers:\n  1chat:\n    url: \"http://127.0.0.1:8765/mcp\"\n    headers:\n      Authorization: \"Bearer ab12…\"\n```\n\n**Ключа 1-chat в конфиге агента нет.** Его подставляет служба, и разойтись\nдвум настройкам больше негде.\n\n**Порт слушает только `127.0.0.1`**, и это не настраивается. Здесь не\nспрашивают ключ 1-chat, поэтому открыть этот порт в сеть — то же самое, что\nвыложить ключ на запись, который нельзя отозвать.\n\n**Пароль обязателен.** До петлевого адреса дотягивается любой процесс на этой\nмашине, не только ваш агент. Пароль создаётся один раз, лежит рядом с\nпозицией в потоке и перезапуск его не меняет — конфиг агента не протухает.\n\n**Права проверяет сервер.** Служба только переправляет вызовы: ключ на чтение\nостанется ключом на чтение. Список инструментов тоже приходит с сервера,\nпоэтому новые появляются у агента без обновления пакета.\n\n## Как библиотека\n\n```js\nimport { OneChatClient, isIncomingMessage } from '@1chat/agent'\n\nconst client = new OneChatClient({ apiKey: process.env.ONECHAT_API_KEY })\n\nawait client.run({\n  since: null,\n  onCursor: (cursor) => saveSomewhere(cursor),\n  onEvent: (event) => {\n    if (isIncomingMessage(event)) wakeYourAgent(event)\n  },\n})\n```\n\n## Что он делает за вас\n\n**Хранит позицию в потоке.** Перезапуск не теряет события и не\nпереобрабатывает старые. Запись атомарная: обрыв в момент сохранения не\nоставит битый файл.\n\n**Начинает с текущего момента.** Иначе первый запуск разбудил бы агента на\nвсей сохранённой истории, и тот написал бы всем подряд.\n\n**Не будит на ваших же исходящих.** Ответить на собственное сообщение — это\nпереписка с самим собой, в середине которой живой человек.\n\n**Признаёт разрыв.** Если процесс лежал дольше, чем хранятся события, сервер\nотвечает `gap`; клиент честно продолжает с текущего момента, а не делает вид,\nчто ничего не пропустил.\n\n**Отступает при сбоях сети** — пауза растёт до минуты. А на отозванный ключ\nостанавливается совсем: это не сбой связи, ждать бесполезно.\n\n**Не долбит сервер, если тот отвечает мгновенно.** В норме темп задаёт сервер,\nудерживая запрос; но клиент не должен зависеть от чужой добросовестности.\n\n## systemd\n\n```ini\n[Unit]\nDescription=1-chat agent watcher\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nEnvironment=ONECHAT_API_KEY=sk_1chat_rw_...\nWorkingDirectory=/opt/onechat\nExecStart=/usr/bin/npx -y @1chat/agent --exec \"hermes run\"\nRestart=always\nRestartSec=5\n\n[Install]\nWantedBy=multi-user.target\n```\n\n## Что дальше\n\nПолное описание API, список инструментов MCP и ограничения —\n[в базе знаний](https://1-chat.ru/baza-znany/api).\n\n## Лицензия\n\nMIT\n","readmeFilename":"README.md"}