feat: Add presence heartbeat for Matrix online status

- matrix-gateway: POST /internal/matrix/presence/online endpoint
- usePresenceHeartbeat hook with activity tracking
- Auto away after 5 min inactivity
- Offline on page close/visibility change
- Integrated in MatrixChatRoom component
This commit is contained in:
Apple
2025-11-27 00:19:40 -08:00
parent 5bed515852
commit 3de3c8cb36
6371 changed files with 1317450 additions and 932 deletions

35
docs/NEW_CHAT_STARTER.md Normal file
View File

@@ -0,0 +1,35 @@
# Стартовий контекст для нового чату (24.11.2025)
Цей документ можна копіювати як короткий промт при старті нового діалогу, щоб одразу мати актуальний стан мультимодальних агентів.
## 🔊 Голос (STT/TTS)
- STT сервіс `dagi-stt-service` перебудований з Whisper (`openai-whisper==20231117`, `torch==2.1.0`, `numpy<2`) та працює на `http://172.21.0.19:8895/api/stt/upload`.
- Тест через `curl -F file=@/tmp/test.wav` повертає 200 OK (pipeline робочий).
- Gateway (`telegram-gateway/app/router_handler.py`) надсилає голосові на `/api/stt/upload` з полем `file`.
- Наступний крок: протестувати живим голосовим у будь-якого Telegram-бота; TTS відповіді ще не вмикались.
## 📸 Фото (vision)
- `_handle_photo` тепер витягує `file_id``file_url` через Telegram Bot API та шле в Router.
- У Router додано профіль `specialist_vision_8b` (alias на `qwen3-vl:8b`) і в metadata gateway передає `provider: "llm_specialist_vision_8b"`.
- Потрібно проконтролювати, що Router повертає реальний опис (без fallback «не можу обробити») — залежить від доступності vision-моделі.
## 📡 Telegram Gateway
- Перезапущений останньою версією (усі 9 ботів у polling).
- Голосові/фото тепер проходять у NATS -> Router без 500 в gateway.
- Постійне попередження `nats: not a JetStream message` не критичне (acks викликаються на звичайних повідомленнях, можна відкласти фікс).
## ✅ Що вже зроблено
- STT контейнер перебудовано, health OK.
- `_handle_photo` переписано на робочий pipeline.
- Router залишився на Dev-конфізі, але має профіль `llm_specialist_vision_8b`.
## ⏭️ Що перевірити одразу після старту нового чату
1. Надіслати голосове в будь-якого бота, пересвідчитись що gateway → STT → Router повертає текст і TTS-відповідь (дивитись логи `telegram-gateway` та `dagi-stt-service`).
2. Надіслати фото — очікувати осмислену відповідь від `specialist_vision_8b`.
3. Якщо потрібен vision fallback, перевірити Swapper/vision-encoder сервіси.
> Якщо чат стартує з нуля, достатньо скопіювати цей блок у промт агента, щоб він миттєво зрозумів поточний стан системи.