- 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
231 lines
8.3 KiB
Markdown
231 lines
8.3 KiB
Markdown
# Agent Cabinet Enhancement - Complete ✅
|
||
|
||
## Summary
|
||
|
||
Успішно додано всі необхідні компоненти до кабінету агента:
|
||
1. ✅ Метрики агента
|
||
2. ✅ Таблиця команди для оркестраторів
|
||
3. ✅ Підключення команди через CrewAI
|
||
4. ✅ Вікно чату з агентом
|
||
|
||
---
|
||
|
||
## ✅ 1. Метрики агента
|
||
|
||
### API Endpoint:
|
||
- `/api/agent/{agent_id}/metrics` - отримати метрики агента
|
||
|
||
### Відображається:
|
||
- **Uptime** - час роботи агента в годинах
|
||
- **Total Requests** - загальна кількість запитів
|
||
- **Success Rate** - відсоток успішних запитів
|
||
- **Avg Response Time** - середній час відповіді в мілісекундах
|
||
- **Status** - поточний статус агента
|
||
- **Last Active** - час останньої активності
|
||
|
||
### Розташування:
|
||
Метрики відображаються в верхній частині кабінету агента, перед System Prompt.
|
||
|
||
---
|
||
|
||
## ✅ 2. Таблиця команди для оркестраторів
|
||
|
||
### Для оркестраторів:
|
||
Якщо агент має `is_orchestrator: true` та `sub_agents`, відображається таблиця з командою.
|
||
|
||
### Колонки таблиці:
|
||
- **Name** - ім'я агента команди
|
||
- **Role** - роль агента
|
||
- **ID** - ідентифікатор агента
|
||
- **Actions** - кнопка видалення з команди
|
||
|
||
### Функціонал:
|
||
- Додавання агентів до команди (кнопка "Add Agent")
|
||
- Видалення агентів з команди (кнопка видалення в таблиці)
|
||
- Модальне вікно для додавання нового агента
|
||
|
||
---
|
||
|
||
## ✅ 3. Підключення команди через CrewAI
|
||
|
||
### Для оркестраторів з workspace:
|
||
Якщо агент має `workspace` в метриках, відображається кнопка "Connect via CrewAI".
|
||
|
||
### Функціонал:
|
||
- Кнопка "Connect via CrewAI" в секції Team Agents
|
||
- При натисканні створюється CrewAI crew з workspace агента
|
||
- Показується підтвердження з кількістю агентів та tasks
|
||
- Автоматичне оновлення статусу після створення
|
||
|
||
### API Integration:
|
||
- Використовує `/api/crewai/create_crew/{workspace_id}`
|
||
- Автоматично знаходить workspace агента з метрик
|
||
|
||
---
|
||
|
||
## ✅ 4. Вікно чату з агентом
|
||
|
||
### UI:
|
||
- Кнопка "Chat with Agent" в заголовку кабінету
|
||
- Плаваюче вікно чату (fixed bottom-right)
|
||
- Розмір: 384px × 600px
|
||
- Темна тема з slate кольорами
|
||
|
||
### Функціонал:
|
||
- Відправка повідомлень агенту через DAGI Router
|
||
- Відображення повідомлень користувача (сині) та агента (сірі)
|
||
- Індикатор завантаження під час обробки
|
||
- Обробка помилок з відображенням повідомлень
|
||
- Автоматичне прокручування до останнього повідомлення
|
||
- Підтримка Enter для відправки
|
||
|
||
### API Integration:
|
||
- Endpoint: `/api/agent/{agent_id}/chat`
|
||
- Метод: POST
|
||
- Відправляє запит до DAGI Router (`http://localhost:9102/v1/chat/completions`)
|
||
- Використовує system prompt агента
|
||
- Логує події чату в систему
|
||
|
||
### Повідомлення:
|
||
- Користувач: синій фон, вирівнювання справа
|
||
- Агент: сірий фон, вирівнювання зліва
|
||
- Помилки: червоний фон з рамкою
|
||
|
||
---
|
||
|
||
## API Endpoints
|
||
|
||
### 1. Get Agent Metrics
|
||
```http
|
||
GET /api/agent/{agent_id}/metrics
|
||
```
|
||
|
||
**Response:**
|
||
```json
|
||
{
|
||
"agent_id": "agent-monitor",
|
||
"agent_name": "Monitor Agent",
|
||
"status": "active",
|
||
"uptime_hours": 150,
|
||
"total_requests": 2500,
|
||
"successful_requests": 2400,
|
||
"failed_requests": 100,
|
||
"avg_response_time_ms": 450.5,
|
||
"last_active": "2025-01-XXT12:00:00",
|
||
"model": "qwen3:8b",
|
||
"model_backend": "ollama",
|
||
"node": "node2",
|
||
"is_orchestrator": false,
|
||
"team_size": 0,
|
||
"workspace": "core_founders_room",
|
||
"workspace_info": {...}
|
||
}
|
||
```
|
||
|
||
### 2. Send Chat Message
|
||
```http
|
||
POST /api/agent/{agent_id}/chat
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"agent_id": "agent-monitor",
|
||
"message": "Hello, how are you?"
|
||
}
|
||
```
|
||
|
||
**Response:**
|
||
```json
|
||
{
|
||
"status": "success",
|
||
"reply": "Hello! I'm doing well, thank you for asking...",
|
||
"agent_id": "agent-monitor",
|
||
"agent_name": "Monitor Agent"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Структура кабінету агента
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────┐
|
||
│ Agent Header (Name, Description, Chat Button) │
|
||
├─────────────────────────────────────────────────┤
|
||
│ Agent Metrics (Uptime, Requests, Success Rate) │
|
||
├─────────────────────────────────────────────────┤
|
||
│ System Prompt │
|
||
│ │
|
||
│ Team Agents Table (for orchestrators) │
|
||
│ - Connect via CrewAI button │
|
||
│ - Add Agent button │
|
||
│ │
|
||
│ Knowledge Base │
|
||
└─────────────────────────────────────────────────┘
|
||
│ Configuration Sidebar │
|
||
│ - Model │
|
||
│ - Backend │
|
||
│ - Node │
|
||
│ - Workspace │
|
||
└─────────────────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## Files Modified
|
||
|
||
1. **`fixed_monitor.py`:**
|
||
- Додано endpoint `/api/agent/{agent_id}/metrics`
|
||
- Додано endpoint `/api/agent/{agent_id}/chat`
|
||
- Оновлено HTML кабінету агента:
|
||
- Додано секцію метрик
|
||
- Замінено картки команди на таблицю
|
||
- Додано кнопку підключення CrewAI
|
||
- Додано вікно чату
|
||
- Додано JavaScript функції:
|
||
- `loadMetrics()` - завантаження метрик
|
||
- `toggleChat()` - показ/приховування чату
|
||
- `sendChatMessage()` - відправка повідомлення
|
||
- `connectCrewAI()` - підключення через CrewAI
|
||
|
||
---
|
||
|
||
## Testing
|
||
|
||
### Test Metrics:
|
||
```bash
|
||
curl http://localhost:8899/api/agent/agent-monitor/metrics
|
||
```
|
||
|
||
### Test Chat:
|
||
```bash
|
||
curl -X POST http://localhost:8899/api/agent/agent-monitor/chat \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"agent_id": "agent-monitor", "message": "Hello!"}'
|
||
```
|
||
|
||
---
|
||
|
||
## Next Steps (Optional)
|
||
|
||
1. **Real Metrics:**
|
||
- Підключити реальні метрики з системи моніторингу
|
||
- Додати графіки використання
|
||
- Додати історію запитів
|
||
|
||
2. **Chat Enhancements:**
|
||
- Додати збереження історії чату
|
||
- Додати можливість завантаження файлів
|
||
- Додати voice input/output
|
||
|
||
3. **CrewAI Integration:**
|
||
- Додати відображення статусу crew
|
||
- Додати можливість запуску tasks
|
||
- Додати відображення результатів виконання
|
||
|
||
---
|
||
|
||
**Status:** ✅ Complete
|
||
**Date:** 2025-01-XX
|
||
**Version:** DAGI Monitor V5.1
|
||
|