- Create /docs structure (microdao, daarion, agents) - Organize 61 cursor technical docs - Add README files for each category - Copy key documents to public categories - Add GitHub setup instructions and scripts
538 lines
15 KiB
Markdown
538 lines
15 KiB
Markdown
# MVP_VERTICAL_SLICE — MicroDAO (Agent-First MVP)
|
||
|
||
Вертикальний зріз для перших живих користувачів
|
||
|
||
Цей документ визначає, ЩО саме потрібно реалізувати у першому MVP, щоб:
|
||
|
||
- microDAO виглядало як окремий "живий простір",
|
||
- користувач одразу взаємодіє з агентами,
|
||
- є базові чати, проєкти, нагадування,
|
||
- агенти мають "обличчя" (картки + консолі),
|
||
- операторські режими вже закладені в архітектуру, але не перевантажують реалізацію.
|
||
|
||
Документ збирає ключові фрагменти з:
|
||
|
||
- 14_messenger_agent_module.md
|
||
- 15_projects_agent_module.md
|
||
- 16_followups_reminders_agent.md
|
||
- 21_agent_only_interface.md
|
||
- 22_operator_modes_and_system_agents.md
|
||
- 23_domains_wallet_dao_deepdive.md
|
||
- 23_agent_cards_and_console_tasks.md
|
||
|
||
---
|
||
|
||
# 0. Мета MVP
|
||
|
||
Зробити **один живий вертикальний шмат**:
|
||
|
||
- людина заходить у свій microDAO (через slug.daarion.city),
|
||
- бачить Agent Hub (головний екран),
|
||
- спілкується з Team Assistant,
|
||
- бачить "Учасників" (Люди / Агенти),
|
||
- має базові канали (Messenger Agent),
|
||
- має хоча б один Проєкт і Задачі (Projects Agent),
|
||
- може сказати "нагадай" (Followups Agent),
|
||
- може зайти на `/agents` і побачити картки агентів,
|
||
- може відкрити Agent Console і подивитись, де агент присутній.
|
||
|
||
Web3, DAO-протокол, Wallet Agent, глибокий Governance, Attention, Co-Memory — описані, але **не обовʼязково реалізуються в цьому MVP**, тільки каркас там, де це дешево.
|
||
|
||
---
|
||
|
||
# 1. Multi-tenant & Team Context (без кастомних доменів)
|
||
|
||
## 1.1. Обсяг MVP
|
||
|
||
Реалізувати:
|
||
|
||
- `teams.slug` + базовий domain routing по `slug.daarion.city`,
|
||
- `currentTeamId` у бекенд-контексті,
|
||
- два режими UI:
|
||
|
||
- режим `/t/:teamId/...` (центральний домен),
|
||
- режим `slug.daarion.city/...` (автоматичне визначення `teamId` з домену).
|
||
|
||
Не реалізувати:
|
||
|
||
- кастомні домени користувачів (`mydao.org`),
|
||
- DNS-перевірки, SSL-автоматизацію.
|
||
|
||
## 1.2. Tasks
|
||
|
||
1) Додати в БД:
|
||
|
||
- поле `slug` у `teams`.
|
||
|
||
2) Реалізувати lookup:
|
||
|
||
- `Host` → `slug` → `teamId`.
|
||
|
||
3) У бекенд-контексті:
|
||
|
||
- зберігати `currentTeamId`.
|
||
|
||
4) На фронті:
|
||
|
||
- якщо контекст дає `currentTeamId` з домену:
|
||
|
||
- приховати `t/:teamId` у URL,
|
||
- використовувати просто `/home`, `/agents`, `/projects` тощо.
|
||
|
||
---
|
||
|
||
# 2. Agent Hub (Home) + Agent-Only Interface Shell
|
||
|
||
Спиратись на:
|
||
|
||
`21_agent_only_interface.md` (Agent-Only Interface)
|
||
|
||
+ базові UI стандарти (`10_agent_ui_system.md`).
|
||
|
||
## 2.1. Обсяг MVP
|
||
|
||
1) Новий маршрут:
|
||
|
||
- `/t/:teamId/home` (у режимі slug-домену — просто `/home`).
|
||
|
||
2) Лівий сайдбар:
|
||
|
||
- блок "Простори / Проєкти" (stub-список, але справжні посилання),
|
||
- блок "Учасники": `Люди / Агенти / Роботи (плейсхолдер)`.
|
||
|
||
3) Центральна область:
|
||
|
||
- **Agent Hub Chat** з Team Assistant:
|
||
|
||
- мінімальний AgentChatWindow,
|
||
- LLM-виклик з `agent_id = Team Assistant`.
|
||
|
||
4) Правий сайдбар:
|
||
|
||
- stub "Контекст команди":
|
||
|
||
- кількість учасників,
|
||
- кількість проєктів,
|
||
- список останніх подій (можна поки мок).
|
||
|
||
## 2.2. Tasks
|
||
|
||
1) Додати компонент `AgentHubPage`.
|
||
|
||
2) Додати маршрут `/t/:teamId/home`.
|
||
|
||
3) У сайдбарі додати пункт "Головна / Agent Hub".
|
||
|
||
4) Реалізувати базовий `AgentChatWindow`:
|
||
|
||
- історія повідомлень,
|
||
- input для користувача,
|
||
- відправка на `/agents/{id}/chat` або відповідний endpoint.
|
||
|
||
5) Підʼєднати Team Assistant як базового агента для цього екрану.
|
||
|
||
---
|
||
|
||
# 3. Messenger Agent (14): канали, DM, "додати агента"
|
||
|
||
Опиратись на:
|
||
|
||
`14_messenger_agent_module.md`
|
||
|
||
+ `Task Invite-Agent-Flow` з задачника.
|
||
|
||
## 3.1. Обсяг MVP
|
||
|
||
Реалізувати мінімум:
|
||
|
||
1) Список каналів/чатів у лівому сайдбарі:
|
||
|
||
- кілька каналів типу:
|
||
|
||
- `#general`,
|
||
- `#mvp`.
|
||
|
||
2) Центральний чат для вибраного каналу:
|
||
|
||
- вивід історії,
|
||
- відправка повідомлень,
|
||
- позначення агента/людини автором.
|
||
|
||
3) Кнопка "Додати учасника" у header каналу:
|
||
|
||
- модалка зі вкладками:
|
||
|
||
- `Люди`,
|
||
- `Агенти` (ми фокусуємось саме на цьому).
|
||
|
||
- у вкладці `Агенти`:
|
||
|
||
- список агентів (із `/agents`),
|
||
- вибір 1 агента,
|
||
- чекбокси прав:
|
||
|
||
- `Читати`,
|
||
- `Писати`,
|
||
- `Створювати задачі`.
|
||
|
||
- POST entitlements (stub-модель RBAC/Entitlements).
|
||
|
||
Не обовʼязково:
|
||
|
||
- складні фічі (search_messages, pinned messages, reactions і т.п.).
|
||
|
||
## 3.2. Tasks
|
||
|
||
1) Реалізувати модель:
|
||
|
||
- `channels` + `messages`.
|
||
|
||
2) Реалізувати simple REST:
|
||
|
||
- `GET /channels`, `GET /channels/:id/messages`, `POST /messages`.
|
||
|
||
3) Реалізувати "Add Participant → Agent" модалку:
|
||
|
||
- frontend модалка,
|
||
- backend entitlements stub: `POST /entitlements` з `agent_id` + `channel_id` + scopes.
|
||
|
||
4) Показувати аватари агентів у header каналу.
|
||
|
||
---
|
||
|
||
# 4. Projects Agent (15): один проєкт, прості задачі
|
||
|
||
Опиратись на:
|
||
|
||
`15_projects_agent_module.md`.
|
||
|
||
## 4.1. Обсяг MVP
|
||
|
||
Реалізувати:
|
||
|
||
1) Мінімальну модель:
|
||
|
||
- `projects` (id, name, description, team_id),
|
||
- `tasks` (id, project_id, title, status, assignees, created_at).
|
||
|
||
2) Правий сайдбар для проєктного каналу:
|
||
|
||
- якщо канал привʼязаний до проєкту (наприклад `#mvp` → `MicroDAO MVP`):
|
||
|
||
- показувати коротку панель:
|
||
|
||
- назва проєкту,
|
||
- список задач (група за статусом: new / in_progress / done),
|
||
- кнопка "Нова задача".
|
||
|
||
3) Модалка "Нова задача":
|
||
|
||
- поля:
|
||
|
||
- Назва,
|
||
- Опис (опційно),
|
||
- Статус (по замовчуванню `new`),
|
||
- Виконавці (поки можна просто селект із людей/агентів).
|
||
|
||
4) Мінімальна інтеграція з Messenger:
|
||
|
||
- при створенні задачі з правого сайдбару:
|
||
|
||
- повідомлення у канал:
|
||
|
||
> "Створено задачу: {title}".
|
||
|
||
Можна НЕ робити поки:
|
||
|
||
- спринти,
|
||
- складні фільтри,
|
||
- Planning Agent.
|
||
|
||
## 4.2. Tasks
|
||
|
||
1) Бекенд-моделі `projects` і `tasks` + API.
|
||
|
||
2) Привʼязка каналу до проєкту (наприклад, поле `channel.project_id`).
|
||
|
||
3) Компонент `ProjectSidebarPanel`:
|
||
|
||
- читає з API `GET /projects/:id/tasks`,
|
||
- рендерить список,
|
||
- кнопка "Нова задача".
|
||
|
||
4) Модалка створення задач:
|
||
|
||
- `POST /tasks`,
|
||
- після успіху: оновити список + відправити повідомлення у канал через Messenger API.
|
||
|
||
---
|
||
|
||
# 5. Followups & Reminders Agent (16): "нагадай мені"
|
||
|
||
Опиратись на:
|
||
|
||
`16_followups_reminders_agent.md`.
|
||
|
||
## 5.1. Обсяг MVP
|
||
|
||
Реалізувати:
|
||
|
||
1) Модель `reminders`:
|
||
|
||
- id, user_id, message, fire_at, created_at, status.
|
||
|
||
2) Простий tool:
|
||
|
||
- `create_reminder({ user_id, message, schedule })`:
|
||
|
||
- для MVP:
|
||
|
||
- підтримати шаблони:
|
||
|
||
- "через N хвилин/годин/днів",
|
||
- "завтра о HH:MM".
|
||
|
||
3) Інтеграція з чатом:
|
||
|
||
- якщо користувач пише:
|
||
|
||
- "нагадай мені завтра о 10 про X"
|
||
|
||
- Followup Agent:
|
||
|
||
- парсить час,
|
||
- створює reminder,
|
||
- відповідає:
|
||
|
||
> "Нагадування створено: завтра о 10:00 — «X»."
|
||
|
||
4) Worker / cron:
|
||
|
||
- кожну хвилину:
|
||
|
||
- `SELECT * FROM reminders WHERE fire_at <= now AND status = 'pending'`,
|
||
- відправити повідомлення користувачу (DM або системне повідомлення),
|
||
- помітити як `fired`.
|
||
|
||
UI:
|
||
|
||
- мінімальна панель "Мої нагадування" (наприклад, у профілі).
|
||
|
||
## 5.2. Tasks
|
||
|
||
1) Бекенд-таблиця `reminders` + API.
|
||
|
||
2) Базовий Followup Agent з tool `create_reminder`.
|
||
|
||
3) Простий parser NLU для фраз типу "нагадай мені завтра о 10":
|
||
|
||
- можна почати з регулярок + rule-based.
|
||
|
||
4) Cron/worker для тригеру ремайндерів.
|
||
|
||
5) Простий UI список нагадувань (може бути не першочергово).
|
||
|
||
---
|
||
|
||
# 6. Agent Cards Grid + Agent Console (23)
|
||
|
||
Опиратись на:
|
||
|
||
`23_agent_cards_and_console_tasks.md`.
|
||
|
||
## 6.1. Обсяг MVP
|
||
|
||
1) Маршрут `/t/:teamId/agents`:
|
||
|
||
- грід карток агентів:
|
||
|
||
- Team Assistant,
|
||
- Messenger Agent,
|
||
- Projects Agent,
|
||
- Followups Agent,
|
||
- Knowledge (stub),
|
||
- Governance (stub),
|
||
- Bridges (stub).
|
||
|
||
- картка:
|
||
|
||
- аватар,
|
||
- імʼя,
|
||
- коротке призначення,
|
||
- вік (можна згенерувати pseudo-дані),
|
||
- базовий текст `Досвід 1T: ...` + `Репутація: ...` (можна поки stub).
|
||
|
||
- hover overlay:
|
||
|
||
- "Почати взаємодію",
|
||
- "Деталі агента".
|
||
|
||
2) Agent Console `/t/:teamId/agent/:agentId`:
|
||
|
||
- хедер:
|
||
|
||
- аватар,
|
||
- імʼя,
|
||
- опис,
|
||
- базові метрики (stub).
|
||
|
||
- вкладки:
|
||
|
||
- `Чат`:
|
||
|
||
- той же `AgentChatWindow`.
|
||
|
||
- `Присутність / Права`:
|
||
|
||
- поки список каналів/проєктів, де агент підключений.
|
||
|
||
- без складних toggle-операцій (можна просто read-only у MVP).
|
||
|
||
- це має працювати як "профіль агента".
|
||
|
||
## 6.2. Tasks
|
||
|
||
1) Реалізувати `/agents` грід (Agent-Cards-Grid).
|
||
|
||
2) Реалізувати `/agent/:agentId` консоль.
|
||
|
||
3) Зв'язати "Почати взаємодію" → `AgentConsolePage` на вкладці "Чат".
|
||
|
||
4) Створити простий endpoint `GET /agents` з базовими метаданими (name, role, created_at, stub-metrics).
|
||
|
||
5) Створити endpoint `GET /agents/:id/presence`:
|
||
|
||
- повертає:
|
||
|
||
- канали, де агент присутній,
|
||
- повʼязані проєкти.
|
||
|
||
---
|
||
|
||
# 7. OperatorMode — тільки каркас
|
||
|
||
Опиратись на:
|
||
|
||
`22_operator_modes_and_system_agents.md`.
|
||
|
||
## 7.1. Обсяг MVP
|
||
|
||
Реалізувати лише:
|
||
|
||
1) Поле `operatorMode` у `AgentConfig`.
|
||
|
||
2) Guard у `runAgentTurn` / scheduler:
|
||
|
||
- якщо `trigger = "operator_tick"`:
|
||
|
||
- перевірити:
|
||
|
||
- `operatorMode.enabled`,
|
||
- ліміт дій на годину,
|
||
- allowedTools.
|
||
|
||
3) Увімкнути operatorMode:
|
||
|
||
- для Followups Agent:
|
||
|
||
- для worker-а нагадувань можна поки використовувати прямий cron без LLM, але структуру вже передбачити.
|
||
|
||
- опційно для Attention Agent (якщо буде час) — для базового daily digest.
|
||
|
||
Не реалізовувати:
|
||
|
||
- UI для operatorMode,
|
||
- розширені operator режими для всіх агентів.
|
||
|
||
---
|
||
|
||
# 8. Що явно НЕ входить до цього MVP (але вже є в документації)
|
||
|
||
- Wallet Agent (підпис дій).
|
||
- DAO Agent (on-chain DAO інтеграція).
|
||
- Повна Governance & Access реалізація (ключі, ритуали узгодження).
|
||
- Повний Co-Memory (17) як RAG-система.
|
||
- Повний Notifications & Attention Agent (розумні стріми уваги).
|
||
- Кастомні домени (`mydao.org`) з DNS-перевірками і auto-SSL.
|
||
|
||
---
|
||
|
||
# 9. Порядок реалізації для Cursor (рекомендація)
|
||
|
||
Рекомендований порядок задач:
|
||
|
||
1) **Multi-tenant context + Agent Hub**
|
||
|
||
- teams.slug,
|
||
- визначення `currentTeamId`,
|
||
- `/home` + базовий Agent Hub.
|
||
|
||
2) **Messenger Agent (канали + чати + "додати агента")**
|
||
|
||
3) **Projects Agent (проєкт + задачі + правий сайдбар)**
|
||
|
||
4) **Followups Agent (reminders + інтеграція з чатом)**
|
||
|
||
5) **Agent Cards Grid + Agent Console**
|
||
|
||
6) **OperatorMode (каркас guard-ів)**
|
||
|
||
Кожен блок можна оформлювати окремим промтом:
|
||
|
||
"Implement part X of MVP_VERTICAL_SLICE.md using docs 14/15/16/21/22/23 + 05_coding_standards.md".
|
||
|
||
---
|
||
|
||
# 10. Інструкція для Cursor (узагальнений промт)
|
||
|
||
Приклад загального промта:
|
||
|
||
```text
|
||
You are working on the MicroDAO MVP vertical slice.
|
||
|
||
Use:
|
||
|
||
- MVP_VERTICAL_SLICE.md
|
||
- 14_messenger_agent_module.md
|
||
- 15_projects_agent_module.md
|
||
- 16_followups_reminders_agent.md
|
||
- 21_agent_only_interface.md
|
||
- 22_operator_modes_and_system_agents.md
|
||
- 23_domains_wallet_dao_deepdive.md
|
||
- 23_agent_cards_and_console_tasks.md
|
||
- 10_agent_ui_system.md
|
||
- 05_coding_standards.md
|
||
|
||
Goal:
|
||
|
||
Implement the MVP vertical slice described in MVP_VERTICAL_SLICE.md, step by step.
|
||
|
||
Start with:
|
||
|
||
1) Multi-tenant team context + Agent Hub Home.
|
||
|
||
Then:
|
||
|
||
2) Messenger Agent basics (channels, messages, Add Agent to channel).
|
||
|
||
3) Projects Agent basics (one project, tasks, right sidebar).
|
||
|
||
4) Followups Agent basics (reminders + chat trigger "нагадай").
|
||
|
||
5) Agent Cards grid and Agent Console.
|
||
|
||
6) OperatorMode guard skeleton.
|
||
|
||
For each step:
|
||
|
||
- list changed files,
|
||
- show diff,
|
||
- provide a short summary.
|
||
```
|
||
|
||
---
|
||
|
||
**Цей документ — твій "мастер-план" для першого живого MVP microDAO.**
|
||
|
||
Далі можна або відразу йти в задачі для кроку 1 (multi-tenant + Agent Hub), або доповнити MVP ще якимись деталями, якщо бачиш прогалини.
|