# 22 — Agent-Only Interface Tasks (MicroDAO) Структурований список задач для реалізації Agent-Only Interface Цей документ містить детальні технічні задачі для поетапної реалізації агентського інтерфейсу MicroDAO. Кожну задачу можна давати Cursor окремо для поступової розробки. **Базовий документ:** `21_agent_only_interface.md` --- # Task 1 — UI-Agents-List (People / Agents / Robots панель) ## Мета Зробити лівий блок "Учасники", де видно Людей, Агентів і (поки що) плейсхолдер Роботів. Клік по елементу відкриває відповідний чат/сторінку. ## Специфікація ### 1. Розташування * Лівий сайдбар, нижче/поруч з блоком "Простори (microDAO)". * Заголовок: `Учасники`. * Вкладки або груповані секції: * `Люди` * `Агенти` * `Роботи` (поки список порожній, з текстом "Скоро"). ### 2. Дані * People: * `id`, `display_name`, `avatar_url`, `online_status`. * Agents: * `id`, `name`, `role`, `avatar`, maybe `type` (system/custom). * Robots: * поки просто статичний текст: "Роботи поки не під'єднані". На бекенді: можна зробити: * `GET /participants?team_id=...` → `{ people: [...], agents: [...] }` або окремі запити `GET /members`, `GET /agents`. ### 3. UI-поведінка * Клік по Людині: * відкриває DM-чат `/t/:teamId/dm/:userId`. * Клік по Агенту: * відкриває сторінку агента `/t/:teamId/agent/:agentId` або агент-чат. * Список скролиться, якщо елементів багато. ### 4. Інтеграція з існуючим кодом * Використати загальні компоненти `Sidebar`, `Avatar`, `ListItem`. * Типи/інтерфейси привести до стандартів з `05_coding_standards.md`. ## Acceptance Criteria * У лівому сайдбарі є блок "Учасники" з секціями `Люди`, `Агенти`, `Роботи`. * Для `Людей` і `Агентів` рендеряться реальні дані з API (або mock, якщо API ще нема). * Клік по Людині відкриває приватний чат (навіть якщо поки stub). * Клік по Агенту відкриває сторінку/чат агента. * "Роботи" відображаються як порожній список з плейсхолдером. ## Приклад промта для Cursor ``` Implement the Participants panel (People / Agents / Robots) in the left sidebar using: - 21_agent_only_interface.md - 10_agent_ui_system.md - 03_api_core_snapshot.md - 05_coding_standards.md Deliverables: - Sidebar section "Учасники" with groups: Люди, Агенти, Роботи. - Click on a Person opens DM route `/t/:teamId/dm/:userId` (stub if needed). - Click on an Agent opens `/t/:teamId/agent/:agentId`. Output: list of files + diff + summary. ``` --- # Task 2 — Invite-Agent-Flow (модалка прав + web3-тригери) ## Мета Дати можливість додавати агентів до каналів/чатів з налаштуванням прав. Web3 — на першому етапі Stub (просто підготувати місце для виклику Governance/Web3-агента). ## Специфікація ### 1. Де викликається * У header каналу/чату — кнопка `+ Додати учасника`. * Доступна тільки для користувача з правами `admin`/`owner` (поки можна не перевіряти, просто буде кнопка). ### 2. Модалка * Заголовок: "Додати учасника". * Tabs: * `Люди` * `Агенти` * Із них нас цікавить вкладка `Агенти`. ### 3. Вкладка "Агенти" * Список доступних агентів з пошуком. * По кліку на агента або чекбоксом обираємо 1–N агентів. ### 4. Налаштування прав * Секція "Права в цьому каналі": * `[ ] Читати` * `[ ] Писати` * `[ ] Створювати задачі / follow-ups` * За замовчуванням: `Читати` увімкнено, інші вимкнено. ### 5. API / Entitlements * On Submit: * `POST /entitlements` (або аналог) із даними: * `agent_id` * `resource_kind: "channel"` * `resource_id: channelId` * `scopes: ["read", "write", "tasks"]` (залежить від чекбоксів) * Web3 Stub: * В коді робимо виклик функції `governance.issueAccessToken(...)` або логування TODO; * Реальної транзакції поки не робимо. ### 6. UX * Після успіху модалка закривається. * У хедері каналу в списку учасників зʼявляється новий агент. ## Acceptance Criteria * У кожному каналі/чаті є кнопка "Додати учасника". * В модалці є вкладка "Агенти" зі списком наявних агентів. * Можна обрати агента, налаштувати права, натиснути "Запросити". * На бекенді зберігаються entitlements (навіть якщо прості JSON у БД). * Після додавання агент показується як учасник каналу. * В коді є очевидний Stub для майбутньої web3 інтеграції. ## Приклад промта для Cursor ``` Implement the "Invite Agent" flow for channels using: - 21_agent_only_interface.md - microdao — RBAC and Entitlements (MVP) - 10_agent_ui_system.md - 05_coding_standards.md Deliverables: 1) "Add participant" button in channel header. 2) Modal with tabs People / Agents, focusing on Agents tab. 3) Permissions UI for agent (read / write / tasks). 4) POST entitlements call to store agent-channel permissions (web3 as stub hook). Output: list of files + diff + summary. ``` --- # Task 3 — Share-Resource-Flow (проєкт / БД / knowledge space) ## Мета Реалізувати базову можливість "поділитися ресурсом" (спочатку — Проєктом), з видачею прав людям/агентам. БД / knowledge space можна підключати далі за тим самим патерном. ## Специфікація ### 1. Ресурси для MVP * Почати з `Проєктів` (Projects Agent з документу 15). * Інтерфейс у правому сайдбарі для активного контексту: * розділ "Проєкти цього контексту", * кожен проєкт має кнопку `⋯` → `Поділитися`. ### 2. Модалка "Поділитися проєктом" * Заголовок: "Поділитися проєктом". * Tabs: * `Люди` * `Агенти` * Список одержувачів з пошуком. ### 3. Права доступу * Радіо-кнопки або чекбокси: * `Тільки читати` * `Читати і оновлювати задачі` * `Адмініструвати проєкт` * Для MVP: * мапимо на `["read"]`, `["read","write"]`, `["admin"]`. ### 4. API / Entitlements * `POST /entitlements`: * `resource_kind: "project"` * `resource_id: projectId` * `subject_kind: "user" | "agent"` * `subject_id: ...` * `scopes: [...]` * Web3 Stub: * так само, як у Task 2 — залишити хук/функцію для майбутньої транзакції. ### 5. Відображення * У правому сайдбарі для вибраного проєкту: * короткий список: хто має доступ (іконки + тип: людина/агент). * посилання "Керувати доступами" (можна виводити ту ж саму модалку). ## Acceptance Criteria * У правому сайдбарі є список проєктів для контексту (навіть якщо один). * Для кожного проєкту доступна дія "Поділитися". * Модалка дозволяє вибрати людей/агентів і рівень доступу. * Після підтвердження зʼявляються записи entitlements. * У правій панелі видно, що проєкт поділено з конкретними субʼєктами. ## Приклад промта для Cursor ``` Implement the "Share Project" flow as the first Resource Sharing feature using: - 21_agent_only_interface.md - 15_projects_agent_module.md (if present) - microdao — RBAC and Entitlements (MVP) - 05_coding_standards.md Deliverables: 1) In the right sidebar, show list of projects for the current context. 2) Add "Share" action for a project → opens modal. 3) Modal lets the user pick People or Agents and assign access level (read / read+write / admin). 4) POST entitlements to persist access. 5) Show who has access in the sidebar (avatars + type). Output: list of files + diff + summary. ``` --- # Task 4 — Agent-Hub-Home (стартовий екран "все через агента") ## Мета Зробити "Agent Hub" як домашню точку входу в microDAO: користувач відкриває `/t/:teamId/home` і бачить чат з головним агентом + базові віджети стану. ## Специфікація ### 1. Новий маршрут * `GET /t/:teamId/home` (frontend route). * Відображає `AgentHubPage`. ### 2. AgentHubPage структура * Верх: * заголовок: `microDAO: {team.name}` * короткі віджети (можуть бути stub): * "Учасники: X людей, Y агентів" * "Активні проєкти: N" * Центр: * чат з головним агентом (Team Assistant або спеціальний OS Agent): * використовує вже існуючий `AgentChatWindow`. * агент_id береться з конфіг (наприклад, "team_assistant" для цієї команди). * Праворуч: * контекст (список проєктів / каналів / ресурсів — поки можна stub). ### 3. Поведінка чату * Перший запуск: * агент вітається, якщо немає історії: > "Привіт, це твій Agent Hub. Я допоможу керувати твоєю microDAO." * Далі: * користувач може написати запит, наприклад: * "Покажи активні проєкти" * "Відкрий канал #dev-mvp" * "Хочу створити новий проєкт" * Поки що можна зробити stub-відповіді, якщо Projects/Messenger Agents ще не реалізовані. ### 4. Навігація * Кнопка/посилання "Головна" у лівому сайдбарі веде на `/t/:teamId/home`. * Після успішного онбордингу (з `08_agent_first_onboarding.md`) редірект також може йти на Agent Hub. ## Acceptance Criteria * Існує маршрут `/t/:teamId/home`, який рендерить Agent Hub. * У центрі — робочий чат з Team Assistant (через `/agents/{id}/chat` endpoint). * У сайдбарі є посилання "Головна" / "Agent Hub", що веде на цей екран. * Якщо історії немає — агент показує вітальний меседж. * Екран виглядає як "головна консоль" microDAO, а не просто черговий канал. ## Приклад промта для Cursor ``` Implement the Agent Hub Home screen using: - 21_agent_only_interface.md - 10_agent_ui_system.md - 11_llm_integration.md - 12_agent_runtime_core.md - 05_coding_standards.md Deliverables: 1) New route `/t/:teamId/home` rendering AgentHubPage. 2) AgentHubPage: - header with team name and basic stats (stub). - central chat with Team Assistant agent (AgentChatWindow). - optional right sidebar context (stub). 3) "Home / Agent Hub" entry in left sidebar that routes to `/t/:teamId/home`. Output: list of files + diff + summary. ``` --- # Порядок виконання задач Рекомендований порядок реалізації: 1. **Task 1** — UI-Agents-List (базова структура учасників) 2. **Task 4** — Agent-Hub-Home (стартовий екран) 3. **Task 2** — Invite-Agent-Flow (додавання агентів до каналів) 4. **Task 3** — Share-Resource-Flow (поділ ресурсів) Альтернативний порядок (якщо потрібно спочатку базовий функціонал): 1. **Task 4** — Agent-Hub-Home 2. **Task 1** — UI-Agents-List 3. **Task 2** — Invite-Agent-Flow 4. **Task 3** — Share-Resource-Flow --- # Залежності між задачами - **Task 1** не залежить від інших - **Task 4** може використовувати компоненти з Task 1 - **Task 2** потребує Task 1 (список агентів) - **Task 3** потребує Task 2 (механізм entitlements) --- # Загальні вимоги для всіх задач ## Технічні вимоги - Дотримуватися `05_coding_standards.md` - Використовувати типи з `03_api_core_snapshot.md` - Інтегрувати з існуючими компонентами з `10_agent_ui_system.md` - Дотримуватися UI/UX з `04_ui_ux_onboarding_chat.md` ## Тестування - Кожна задача має мінімальні unit tests - Перевірити наявність помилок TypeScript - Перевірити відповідність acceptance criteria ## Документація - Оновити `src/README.md` з описом нових компонентів - Додати коментарі до складних частин коду --- **Готово.** Це **структурований список задач для Agent-Only Interface**, готовий до використання в Cursor.