- 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
9.8 KiB
9.8 KiB
✅ Об'єднання кабінетів агента та мікроДАО - Завершено
Дата: 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
// Перевіряємо чи агент є оркестратором мікроДАО
const microDaoMapping = agentId ? getMicroDaoByAgentId(agentId) : null;
// Якщо агент є оркестратором мікроДАО - перенаправляємо на кабінет мікроДАО
useEffect(() => {
if (microDaoMapping && agentId) {
navigate(`/microdao/${microDaoMapping.microDaoId}`, { replace: true });
}
}, [microDaoMapping, agentId, navigate]);
2. Визначення оркестратора в кабінеті мікроДАО
Файл: src/pages/MicroDaoCabinetPage.tsx
// Отримуємо агента-оркестратора для цього мікроДАО
const orchestratorMapping = getAgentByMicroDaoId(microDaoId);
const orchestratorAgentId = orchestratorMapping?.agentId;
// Використовуємо в чаті
<MicroDaoOrchestratorChat
microDaoId={team.id}
orchestratorAgentId={orchestratorAgentId || ...}
/>
3. Кнопки в кабінеті агента
Умови відображення:
- Кнопки показуються тільки якщо агент НЕ є оркестратором мікроДАО
- Якщо агент вже має мікроДАО → автоматично перенаправляє на кабінет мікроДАО
{!microDaoMapping && (
<>
<button onClick={() => navigate('/console?create=true')}>
Створити МікроДАО
</button>
<button onClick={() => navigate('/console')}>
Підключитись до МікроДАО
</button>
</>
)}
🚀 Як використати
1. Відкрити кабінет мікроДАО
Прямі посилання:
http://localhost:8899/microdao/greenfood-daohttp://localhost:8899/microdao/daarion-daohttp://localhost:8899/microdao/energy-union-dao
Через агента:
http://localhost:8899/agent/greenfood→ автоматично перенаправить на/microdao/greenfood-daohttp://localhost:8899/agent/daarwizz→ автоматично перенаправить на/microdao/daarion-daohttp://localhost:8899/agent/helion→ автоматично перенаправить на/microdao/energy-union-dao
2. Чат з оркестратором
- Відкрити кабінет мікроДАО
- На головній сторінці (вкладка "Огляд") знайти секцію "Чат з оркестратором мікроДАО"
- Почати спілкування
3. Створити/підключити мікроДАО
- Відкрити кабінет агента (який не є оркестратором)
- Натиснути кнопку:
- "Створити МікроДАО" - створити нове мікроДАО
- "Підключитись до МікроДАО" - підключитись до існуючого
📝 Маппінг агентів
Поточний маппінг
| Агент | МікроДАО 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
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}(автоматично перенаправляє на мікроДАО якщо агент є оркестратором)