Тонкий адаптер Telegram для Portable Agent. Он не содержит бизнес-правил: принимает webhook, связывает Telegram с пользователем платформы через Keycloak Device Flow и вызывает Channel Gateway.
- защищённый webhook;
- команда
/link; - начало OAuth Device Flow;
- polling Keycloak с lease для нескольких worker;
- завершение привязки и уведомление пользователя;
- шифрование device и refresh token;
- обновление access token и отправка сообщения в Channel Gateway;
- сохранение
conversationIdдля следующих сообщений; - Telegram-кнопки подтверждения и отмены действий;
- одноразовые callback id с lease: повтор возможен после временной ошибки;
- порты для PostgreSQL, Keycloak, Telegram и Gateway.
Команда /unlink будет добавлена следующим TDD-срезом.
corepack pnpm install
pnpm lint
pnpm test
pnpm buildИнтеграционная проверка repository требует отдельный PostgreSQL:
$env:TEST_DATABASE_URL = "postgres://user:password@localhost:5432/telegram_adapter"
pnpm test:postgresНастройки перечислены в .env.example. Настоящие секреты в Git не добавляются.
TELEGRAM_API_URL позволяет локальному стенду использовать fake Telegram API без настоящего bot token.
Типы запросов Channel Gateway генерируются из проверенного snapshot contracts 2.5.0. Обновление:
./scripts/update-contracts.ps1 -Version 2.5.0
corepack pnpm generateСкрипт проверяет checksum и GitHub attestation релиза до замены файлов.