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

View File

@@ -0,0 +1,133 @@
# 📊 Monitor Agent - Архітектура пам'яті
## 🎯 Структура пам'яті
### 1. Загальна пам'ять (Global Memory)
**Agent ID:** `monitor`
**Призначення:**
- Агрегація подій з усіх НОД та мікроДАО
- Системні події всього DAARION
- Загальна статистика та метрики
**Використання:**
- Загальний Monitor Agent (DAARION кабінет)
- Всі Monitor Agent мають доступ до загальної пам'яті
### 2. Пам'ять для НОДИ (Node-Specific Memory)
**Agent ID:** `monitor-node-{node_id}`
**Приклади:**
- `monitor-node-1` - пам'ять Monitor Agent для НОДА1
- `monitor-node-2` - пам'ять Monitor Agent для НОДА2
- `monitor-node-3` - пам'ять Monitor Agent для НОДА3
**Призначення:**
- Події конкретної НОДИ
- Метрики та статуси ноди
- Агенти та сервіси ноди
**Використання:**
- Monitor Agent конкретної НОДИ (NodeMonitorChat)
- Має доступ до загальної пам'яті + пам'яті своєї ноди
### 3. Пам'ять для мікроДАО (MicroDAO-Specific Memory)
**Agent ID:** `monitor-microdao-{microdao_id}`
**Приклади:**
- `monitor-microdao-daarion-dao` - пам'ять Monitor Agent для DAARION
- `monitor-microdao-greenfood` - пам'ять Monitor Agent для GREENFOOD
- `monitor-microdao-energy-union` - пам'ять Monitor Agent для ENERGY UNION
**Призначення:**
- Події конкретного мікроДАО
- Агенти та канали мікроДАО
- Проєкти та задачі мікроДАО
**Використання:**
- Monitor Agent конкретного мікроДАО (MicroDaoMonitorChat)
- Має доступ до загальної пам'яті + пам'яті свого мікроДАО
## 🔄 Як працює пам'ять
### Збереження подій
1. **WebSocket події**`useMonitorEvents` hook
2. **Батчинг**`addMonitorEventToBatch` (10 подій або 5 секунд)
3. **Збереження** → Memory Service `/api/memory/monitor-events/batch`
4. **Розподіл:**
- Загальна пам'ять: `monitor` (всі події)
- Специфічна пам'ять: `monitor-node-{node_id}` або `monitor-microdao-{microdao_id}`
### Отримання контексту
1. **Monitor Agent отримує запит**
2. **Запитує пам'ять:**
- Загальна пам'ять (`monitor`) - половина контексту
- Специфічна пам'ять (`monitor-node-{node_id}` або `monitor-microdao-{microdao_id}`) - половина контексту
3. **Комбінує контекст** для формування відповіді
## 📊 Приклад роботи
### Monitor Agent для НОДА2
**Пам'ять:**
- Загальна: `monitor` (всі події системи)
- Специфічна: `monitor-node-2` (події НОДА2)
**Контекст для відповіді:**
```
Загальні події системи:
- [node_event] НОДА1 оновлено статус
- [agent_event] Агент Solarius задеплоєно
- [system_event] Оновлено конфігурацію
Події НОДА2:
- [agent_event] Агент Sofia активний
- [node_event] НОДА2 CPU: 45%
- [system_event] Swapper Service працює
```
### Monitor Agent для DAARION мікроДАО
**Пам'ять:**
- Загальна: `monitor` (всі події системи)
- Специфічна: `monitor-microdao-daarion-dao` (події DAARION)
**Контекст для відповіді:**
```
Загальні події системи:
- [node_event] НОДА1 оновлено статус
- [agent_event] Агент Solarius задеплоєно
Події МікроДАО daarion-dao:
- [agent_event] DAARION Core команда активна
- [project_event] Створено новий проєкт
- [channel_event] Новий канал створено
```
## ✅ Переваги
1. **Загальна пам'ять:**
- Агрегація даних з усієї системи
- Загальна статистика
- Системні події
2. **Специфічна пам'ять:**
- Детальна інформація про конкретну НОДУ/мікроДАО
- Швидкий доступ до релевантних подій
- Оптимізація контексту
3. **Комбінований доступ:**
- Monitor Agent має доступ до обох типів пам'яті
- Більш інформативні відповіді
- Контекстна релевантність
---
**Last Updated:** 2025-01-27
**Status:** ✅ Архітектура пам'яті реалізована