Files
microdao-daarion/AGENT-MICRODAO-UNIFIED-CABINET-COMPLETE.md
Apple 3de3c8cb36 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
2025-11-27 00:19:40 -08:00

9.8 KiB
Raw Permalink Blame History

Об'єднання кабінетів агента та мікроДАО - Завершено

Дата: 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-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

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} (автоматично перенаправляє на мікроДАО якщо агент є оркестратором)