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,122 @@
# Статус підключення агентів до мікроДАО
## 📊 Поточна ситуація
### ✅ Що працює:
1. **Отримання агентів з API:**
- Endpoint: `GET /api/v1/agents?team_id={microDaoId}`
- Повертає список агентів, підключених до мікроДАО
- Файл: `src/api/agents.ts`
2. **Автоматичне додавання оркестратора:**
- Оркестратор з НОДИ1 автоматично додається до списку агентів
- Логіка в `MicroDaoCabinetPage.tsx` (рядки 141-165)
- Використовує маппінг з `agentMicroDaoMapping.ts`
3. **Відображення агентів:**
- Вкладка "Агенти" в кабінеті мікроДАО
- Показує оркестратора та інших агентів
- Кнопка "Додати агента" для створення нових
### ⚠️ Потенційні проблеми:
1. **Агенти можуть не бути в базі даних:**
- Таблиця `agents` має поле `team_id` для зв'язку з мікроДАО
- Якщо агенти не створені в БД, API поверне порожній список
- Оркестратор додається тільки з НОДИ1, але не зберігається в БД
2. **Відсутність автоматичного підключення:**
- Агенти з НОДИ1 не автоматично підключаються до мікроДАО
- Потрібно вручну створювати записи в БД
## 🔍 Перевірка підключення
### 1. Перевірити API:
```bash
# Отримати агентів для мікроДАО
curl http://localhost:8899/api/v1/agents?team_id=daarion-dao
```
**Очікувана відповідь:**
```json
{
"items": [
{
"id": "agent-123",
"team_id": "daarion-dao",
"name": "Agent Name",
...
}
]
}
```
### 2. Перевірити базу даних:
```sql
-- Перевірити агенти для мікроДАО
SELECT * FROM agents WHERE team_id = 'daarion-dao';
-- Перевірити всі мікроДАО
SELECT id, name, slug FROM teams WHERE type IN ('platform', 'community', 'guild', 'lab');
```
### 3. Перевірити UI:
1. Відкрити кабінет мікроДАО: `http://localhost:8899/microdao/daarion`
2. Перейти на вкладку "Агенти"
3. Перевірити чи відображаються агенти
## 🔧 Рішення
### Варіант 1: Автоматичне підключення оркестраторів
Створити міграцію або скрипт для автоматичного створення записів агентів-оркестраторів в БД:
```sql
-- Створити агенти-оркестратори для мікроДАО
INSERT INTO agents (id, team_id, name, description, config, created_at)
VALUES
('agent-daarwizz', 'daarion-dao', 'DAARWIZZ', 'Оркестратор DAARION', '{"type": "orchestrator"}', now()),
('agent-greenfood', 'greenfood-dao', 'GREENFOOD', 'Оркестратор GREENFOOD', '{"type": "orchestrator"}', now()),
('agent-helion', 'energy-union-dao', 'Helion', 'Оркестратор ENERGY UNION', '{"type": "orchestrator"}', now())
ON CONFLICT (id) DO NOTHING;
```
### Варіант 2: Синхронізація з НОДИ1
Створити endpoint для синхронізації агентів з НОДИ1 до БД:
```typescript
POST /api/v1/teams/{teamId}/agents/sync
```
### Варіант 3: UI для підключення
Додати кнопку "Підключити агентів з НОДИ1" в кабінеті мікроДАО.
## 📋 Чеклист перевірки
- [ ] API endpoint `/api/v1/agents?team_id={microDaoId}` працює
- [ ] База даних містить записи агентів з правильним `team_id`
- [ ] Оркестратор відображається в UI (з НОДИ1)
- [ ] Інші агенти відображаються в UI (з БД)
- [ ] Кнопка "Додати агента" працює
- [ ] Створення нового агента зберігає `team_id`
## 🎯 Рекомендації
1. **Автоматичне підключення оркестраторів:**
- При створенні мікроДАО автоматично створювати запис оркестратора в БД
- Синхронізувати з агентами з НОДИ1
2. **UI індикатор:**
- Показувати статус підключення агентів
- Додати кнопку "Синхронізувати з НОДИ1"
3. **Логування:**
- Логувати всі спроби підключення агентів
- Відстежувати помилки синхронізації