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:
264
AGENT-MICRODAO-UNIFIED-CABINET-COMPLETE.md
Normal file
264
AGENT-MICRODAO-UNIFIED-CABINET-COMPLETE.md
Normal file
@@ -0,0 +1,264 @@
|
||||
# ✅ Об'єднання кабінетів агента та мікроДАО - Завершено
|
||||
|
||||
**Дата:** 2025-11-23
|
||||
**Статус:** ✅ Готово до використання
|
||||
|
||||
---
|
||||
|
||||
## 🎉 Що реалізовано
|
||||
|
||||
### ✅ 1. Маппінг між агентами та мікроДАО
|
||||
|
||||
**Створено файл:** `src/utils/agentMicroDaoMapping.ts`
|
||||
|
||||
**Маппінг:**
|
||||
- **GREENFOOD** агент → `greenfood-dao` мікроДАО
|
||||
- **DAARWIZZ** агент → `daarion-dao` мікроДАО
|
||||
- **Helion** агент → `energy-union-dao` мікроДАО
|
||||
|
||||
**Функції:**
|
||||
- `getMicroDaoByAgentId(agentId)` - отримати мікроДАО за ID агента
|
||||
- `getAgentByMicroDaoId(microDaoId)` - отримати агента за ID мікроДАО
|
||||
- `isAgentOrchestrator(agentId)` - перевірити чи агент є оркестратором
|
||||
- `hasOrchestrator(microDaoId)` - перевірити чи мікроДАО має оркестратора
|
||||
|
||||
---
|
||||
|
||||
### ✅ 2. Об'єднання кабінетів
|
||||
|
||||
**Логіка:**
|
||||
- Якщо відкривається кабінет агента-оркестратора → автоматично перенаправляє на кабінет мікроДАО
|
||||
- Кабінет мікроДАО автоматично знаходить та використовує агента-оркестратора
|
||||
- **Один кабінет = один агент-оркестратор = одне мікроДАО**
|
||||
|
||||
**Приклади:**
|
||||
- `/agent/greenfood` → `/microdao/greenfood-dao` (автоматичне перенаправлення)
|
||||
- `/agent/daarwizz` → `/microdao/daarion-dao` (автоматичне перенаправлення)
|
||||
- `/agent/helion` → `/microdao/energy-union-dao` (автоматичне перенаправлення)
|
||||
|
||||
---
|
||||
|
||||
### ✅ 3. Кнопки в кабінеті агента
|
||||
|
||||
**Додано в `AgentCabinetPage.tsx`:**
|
||||
- ✅ **"Створити МікроДАО"** - тільки для агентів без мікроДАО
|
||||
- ✅ **"Підключитись до МікроДАО"** - тільки для агентів без мікроДАО
|
||||
- ✅ Кнопки не відображаються для агентів-оркестраторів (вони вже мають мікроДАО)
|
||||
|
||||
---
|
||||
|
||||
### ✅ 4. Чат з оркестратором на головній сторінці
|
||||
|
||||
**Відображення:**
|
||||
- ✅ Чат з оркестратором мікроДАО відображається **одразу на головній сторінці** кабінету мікроДАО
|
||||
- ✅ Розташований після статистичних карток
|
||||
- ✅ Перед секцією "Швидкі дії"
|
||||
- ✅ Використовує маппінг для автоматичного визначення оркестратора
|
||||
|
||||
---
|
||||
|
||||
## 📊 Структура об'єднання
|
||||
|
||||
### Приклад 1: GREENFOOD
|
||||
|
||||
```
|
||||
Агент: greenfood (оркестратор)
|
||||
↓
|
||||
МікроДАО: greenfood-dao
|
||||
↓
|
||||
Кабінет: /microdao/greenfood-dao
|
||||
├── Чат з оркестратором (greenfood)
|
||||
├── Статистика
|
||||
├── Агенти
|
||||
└── Налаштування
|
||||
```
|
||||
|
||||
**URL:**
|
||||
- `/agent/greenfood` → автоматично перенаправляє на `/microdao/greenfood-dao`
|
||||
- `/microdao/greenfood-dao` → показує кабінет з чатом з оркестратором (greenfood)
|
||||
|
||||
---
|
||||
|
||||
### Приклад 2: DAARION
|
||||
|
||||
```
|
||||
Агент: daarwizz (оркестратор)
|
||||
↓
|
||||
МікроДАО: daarion-dao
|
||||
↓
|
||||
Кабінет: /microdao/daarion-dao
|
||||
├── Чат з оркестратором (daarwizz)
|
||||
├── Статистика
|
||||
├── Агенти
|
||||
└── Налаштування
|
||||
```
|
||||
|
||||
**URL:**
|
||||
- `/agent/daarwizz` → автоматично перенаправляє на `/microdao/daarion-dao`
|
||||
- `/microdao/daarion-dao` → показує кабінет з чатом з оркестратором (daarwizz)
|
||||
|
||||
---
|
||||
|
||||
### Приклад 3: ENERGY UNION
|
||||
|
||||
```
|
||||
Агент: helion (оркестратор)
|
||||
↓
|
||||
МікроДАО: energy-union-dao
|
||||
↓
|
||||
Кабінет: /microdao/energy-union-dao
|
||||
├── Чат з оркестратором (helion)
|
||||
├── Статистика
|
||||
├── Агенти
|
||||
└── Налаштування
|
||||
```
|
||||
|
||||
**URL:**
|
||||
- `/agent/helion` → автоматично перенаправляє на `/microdao/energy-union-dao`
|
||||
- `/microdao/energy-union-dao` → показує кабінет з чатом з оркестратором (helion)
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Технічні деталі
|
||||
|
||||
### 1. Автоматичне перенаправлення
|
||||
|
||||
**Файл:** `src/pages/AgentCabinetPage.tsx`
|
||||
|
||||
```typescript
|
||||
// Перевіряємо чи агент є оркестратором мікроДАО
|
||||
const microDaoMapping = agentId ? getMicroDaoByAgentId(agentId) : null;
|
||||
|
||||
// Якщо агент є оркестратором мікроДАО - перенаправляємо на кабінет мікроДАО
|
||||
useEffect(() => {
|
||||
if (microDaoMapping && agentId) {
|
||||
navigate(`/microdao/${microDaoMapping.microDaoId}`, { replace: true });
|
||||
}
|
||||
}, [microDaoMapping, agentId, navigate]);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. Визначення оркестратора в кабінеті мікроДАО
|
||||
|
||||
**Файл:** `src/pages/MicroDaoCabinetPage.tsx`
|
||||
|
||||
```typescript
|
||||
// Отримуємо агента-оркестратора для цього мікроДАО
|
||||
const orchestratorMapping = getAgentByMicroDaoId(microDaoId);
|
||||
const orchestratorAgentId = orchestratorMapping?.agentId;
|
||||
|
||||
// Використовуємо в чаті
|
||||
<MicroDaoOrchestratorChat
|
||||
microDaoId={team.id}
|
||||
orchestratorAgentId={orchestratorAgentId || ...}
|
||||
/>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. Кнопки в кабінеті агента
|
||||
|
||||
**Умови відображення:**
|
||||
- Кнопки показуються тільки якщо агент **НЕ** є оркестратором мікроДАО
|
||||
- Якщо агент вже має мікроДАО → автоматично перенаправляє на кабінет мікроДАО
|
||||
|
||||
```typescript
|
||||
{!microDaoMapping && (
|
||||
<>
|
||||
<button onClick={() => navigate('/console?create=true')}>
|
||||
Створити МікроДАО
|
||||
</button>
|
||||
<button onClick={() => navigate('/console')}>
|
||||
Підключитись до МікроДАО
|
||||
</button>
|
||||
</>
|
||||
)}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Як використати
|
||||
|
||||
### 1. Відкрити кабінет мікроДАО
|
||||
|
||||
**Прямі посилання:**
|
||||
- `http://localhost:8899/microdao/greenfood-dao`
|
||||
- `http://localhost:8899/microdao/daarion-dao`
|
||||
- `http://localhost:8899/microdao/energy-union-dao`
|
||||
|
||||
**Через агента:**
|
||||
- `http://localhost:8899/agent/greenfood` → автоматично перенаправить на `/microdao/greenfood-dao`
|
||||
- `http://localhost:8899/agent/daarwizz` → автоматично перенаправить на `/microdao/daarion-dao`
|
||||
- `http://localhost:8899/agent/helion` → автоматично перенаправить на `/microdao/energy-union-dao`
|
||||
|
||||
---
|
||||
|
||||
### 2. Чат з оркестратором
|
||||
|
||||
1. Відкрити кабінет мікроДАО
|
||||
2. На головній сторінці (вкладка "Огляд") знайти секцію "Чат з оркестратором мікроДАО"
|
||||
3. Почати спілкування
|
||||
|
||||
---
|
||||
|
||||
### 3. Створити/підключити мікроДАО
|
||||
|
||||
1. Відкрити кабінет агента (який не є оркестратором)
|
||||
2. Натиснути кнопку:
|
||||
- **"Створити МікроДАО"** - створити нове мікроДАО
|
||||
- **"Підключитись до МікроДАО"** - підключитись до існуючого
|
||||
|
||||
---
|
||||
|
||||
## 📝 Маппінг агентів
|
||||
|
||||
### Поточний маппінг
|
||||
|
||||
| Агент | МікроДАО ID | МікроДАО Slug | МікроДАО Name |
|
||||
|-------|-------------|---------------|---------------|
|
||||
| `greenfood` | `greenfood-dao` | `greenfood` | GREENFOOD |
|
||||
| `daarwizz` | `daarion-dao` | `daarion` | DAARION |
|
||||
| `helion` | `energy-union-dao` | `energy-union` | ENERGY UNION |
|
||||
|
||||
### Додавання нового маппінгу
|
||||
|
||||
**Файл:** `src/utils/agentMicroDaoMapping.ts`
|
||||
|
||||
```typescript
|
||||
export const AGENT_MICRODAO_MAPPING: AgentMicroDaoMapping[] = [
|
||||
// ... існуючі маппінги
|
||||
{
|
||||
agentId: 'new-agent',
|
||||
microDaoId: 'new-microdao-dao',
|
||||
microDaoSlug: 'new-microdao',
|
||||
microDaoName: 'NEW MICRODAO',
|
||||
},
|
||||
];
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Статус
|
||||
|
||||
**Готово:**
|
||||
- ✅ Маппінг між агентами та мікроДАО
|
||||
- ✅ Автоматичне перенаправлення з кабінету агента на кабінет мікроДАО
|
||||
- ✅ Визначення оркестратора в кабінеті мікроДАО
|
||||
- ✅ Чат з оркестратором на головній сторінці кабінету мікроДАО
|
||||
- ✅ Кнопки створення/підключення до мікроДАО в кабінеті агента
|
||||
- ✅ Об'єднання кабінетів (один кабінет = один агент-оркестратор = одне мікроДАО)
|
||||
|
||||
**Результат:**
|
||||
- ✅ Кабінет агента-оркестратора = кабінет мікроДАО
|
||||
- ✅ Чат з оркестратором доступний одразу на головній сторінці
|
||||
- ✅ Користувачі можуть легко створювати/підключатись до мікроДАО
|
||||
|
||||
---
|
||||
|
||||
**Кабінети агентів та мікроДАО об'єднано!** 🎉
|
||||
|
||||
**Доступ:**
|
||||
- Кабінети мікроДАО: `http://localhost:8899/microdao/{microDaoId}`
|
||||
- Кабінети агентів: `http://localhost:8899/agent/{agentId}` (автоматично перенаправляє на мікроДАО якщо агент є оркестратором)
|
||||
|
||||
Reference in New Issue
Block a user