From 1721b60401c13dd61d8483b70edad48ef05bcbcf Mon Sep 17 00:00:00 2001 From: Apple Date: Mon, 16 Feb 2026 07:46:19 -0800 Subject: [PATCH] docs: expand lint scope batch50 (2 files) --- docs/cursor/14_messenger_agent_module.md | 113 ++++++++------- docs/cursor/23_domains_wallet_dao_deepdive.md | 134 +++++++++--------- docs/standards/lint_scope.txt | 2 + 3 files changed, 125 insertions(+), 124 deletions(-) diff --git a/docs/cursor/14_messenger_agent_module.md b/docs/cursor/14_messenger_agent_module.md index 5499a79a..8b428932 100644 --- a/docs/cursor/14_messenger_agent_module.md +++ b/docs/cursor/14_messenger_agent_module.md @@ -6,7 +6,7 @@ --- -# 1. Ідея +## 1. Ідея Замість "голої" стрічки чатів у MicroDAO є: @@ -26,7 +26,7 @@ --- -# 2. Ролі агентів у модулі месенджера +## 2. Ролі агентів у модулі месенджера ## 2.1. Messenger Agent (core) @@ -66,7 +66,7 @@ User-facing агент делегує запити Messenger Agent'у. --- -# 3. Функціональні спроможності Messenger Agent +## 3. Функціональні спроможності Messenger Agent ## 3.1. Базові (класичний месенджер) @@ -144,7 +144,7 @@ Messenger Agent вміє: --- -# 4. Інтерфейс з точки зору користувача +## 4. Інтерфейс з точки зору користувача ### 4.1. Класичний UI (sidebar + список чатів) @@ -189,7 +189,7 @@ Messenger Agent вміє: --- -# 5. Інтеграція з Agent Runtime Core (12) +## 5. Інтеграція з Agent Runtime Core (12) Messenger Agent описується як звичайний агент: @@ -210,7 +210,7 @@ const messengerAgentConfig: AgentConfig = { "create_followup_from_message" ], }; -``` +```text Tools реалізуються через Messaging Service: @@ -222,51 +222,51 @@ const tools: ToolRegistry = { async open_channel(ctx, args) { ... }, // повертає метаданні каналу async get_daily_digest(ctx, args) { ... }, }; -``` +```text Агент runtime (`runAgentTurn`) вирішує: -* чи просто відповісти текстом, +- чи просто відповісти текстом, -* чи викликати tools, +- чи викликати tools, -* чи комбінувати. +- чи комбінувати. --- -# 6. Інтеграція з памʼяттю (13) +## 6. Інтеграція з памʼяттю (13) Messenger Agent: -* **Short-term** — поточний контекст каналу/діалогу. +- **Short-term** — поточний контекст каналу/діалогу. -* **Long-term** — факти: +- **Long-term** — факти: - * які канали важливі для яких людей, + - які канали важливі для яких людей, - * які теми зʼявляються часто, + - які теми зʼявляються часто, - * які теги/поняття повʼязані з якими чатами. + - які теги/поняття повʼязані з якими чатами. Приклад фактів: -* "Канал #governance використовується для голосувань DAO." +- "Канал #governance використовується для голосувань DAO." -* "Канал #dev-mvp обговорює реалізацію MVP MicroDAO." +- "Канал #dev-mvp обговорює реалізацію MVP MicroDAO." Це дозволяє агенту: -* відповідати на питання типу: +- відповідати на питання типу: - * "Де обговорювати зміни в governance?" + - "Де обговорювати зміни в governance?" -* пропонувати: +- пропонувати: - * "Здається, обговорення токеноміки краще перенести в #tokenomics." + - "Здається, обговорення токеноміки краще перенести в #tokenomics." --- -# 7. Типові сценарії використання +## 7. Типові сценарії використання ### Сценарій 1 — Новий учасник @@ -276,11 +276,11 @@ Messenger Agent: Messenger Agent: -* знаходить 2–3 ключові канали, +- знаходить 2–3 ключові канали, -* дає короткі описи, +- дає короткі описи, -* пропонує їх відкрити. +- пропонує їх відкрити. ### Сценарій 2 — Щоденний огляд @@ -288,13 +288,13 @@ Messenger Agent: Messenger Agent: -* використовує `get_daily_digest` tool, +- використовує `get_daily_digest` tool, -* збирає важливі повідомлення/канали, +- збирає важливі повідомлення/канали, -* створює summary (через LLM), +- створює summary (через LLM), -* відправляє повідомлення у спеціальний канал або в DM. +- відправляє повідомлення у спеціальний канал або в DM. ### Сценарій 3 — Пошук контексту @@ -302,29 +302,29 @@ Messenger Agent: Messenger Agent: -* шукає в повідомленнях (Meilisearch + RAG), +- шукає в повідомленнях (Meilisearch + RAG), -* показує релевантні уривки, +- показує релевантні уривки, -* пропонує створити follow-up або задачу. +- пропонує створити follow-up або задачу. --- -# 8. Взаємодія з іншими агентами +## 8. Взаємодія з іншими агентами -* **Team Assistant** може делегувати складні запити Messenger Agent'у. +- **Team Assistant** може делегувати складні запити Messenger Agent'у. -* **Evolution Meta-Agent** аналізує: +- **Evolution Meta-Agent** аналізує: - * які канали важливі; + - які канали важливі; - * які патерни запитів до Messenger Agent'а повторюються; + - які патерни запитів до Messenger Agent'а повторюються; - * які нові "розумні фільтри" варто запропонувати. + - які нові "розумні фільтри" варто запропонувати. --- -# 9. Реалізація Tools +## 9. Реалізація Tools ## 9.1. list_channels @@ -355,7 +355,7 @@ async function list_channels( messageCount: ch._count.messages, })); } -``` +```text ## 9.2. list_unread @@ -384,7 +384,7 @@ async function list_unread( lastMessageAt: u.lastReadAt, })); } -``` +```text ## 9.3. search_messages @@ -412,7 +412,7 @@ async function search_messages( createdAt: hit.createdAt, })); } -``` +```text ## 9.4. get_daily_digest @@ -465,11 +465,11 @@ async function get_daily_digest( return digest; } -``` +```text --- -# 10. System Prompt для Messenger Agent +## 10. System Prompt для Messenger Agent ```txt You are the Messenger Agent for MicroDAO. @@ -486,11 +486,11 @@ You can: Always be concise and helpful. When a user asks to see something, use the appropriate tools to fetch the data and present it clearly. If you don't understand a request, ask for clarification. -``` +```text --- -# 11. UI Integration +## 11. UI Integration ## 11.1. Agent Query Input @@ -512,7 +512,7 @@ If you don't understand a request, ask for clarification. } }} /> -``` +```text ## 11.2. Smart Filters @@ -529,15 +529,15 @@ If you don't understand a request, ask for clarification. applyFilter(result.channels); }} /> -``` +```text --- -# 12. Завдання для Cursor +## 12. Завдання для Cursor Приклад промта: -``` +```text You are a senior full-stack engineer. Implement the Messenger Agent module using: @@ -567,23 +567,22 @@ Output: - list of modified files - diff - summary -``` +```text --- -# 13. Результат +## 13. Результат Після впровадження Messenger Agent: -* MicroDAO перестає бути "ще одним месенджером"; +- MicroDAO перестає бути "ще одним месенджером"; -* користувач взаємодіє з агентом, а не просто з переліком чатів; +- користувач взаємодіє з агентом, а не просто з переліком чатів; -* всі класичні можливості месенджера залишаються, але стають **інструментами** всередині агентської ОС. +- всі класичні можливості месенджера залишаються, але стають **інструментами** всередині агентської ОС. --- **Готово.** Це **повна специфікація Messenger Agent модуля**, готова до використання в Cursor. - diff --git a/docs/cursor/23_domains_wallet_dao_deepdive.md b/docs/cursor/23_domains_wallet_dao_deepdive.md index 3be54670..0064fb43 100644 --- a/docs/cursor/23_domains_wallet_dao_deepdive.md +++ b/docs/cursor/23_domains_wallet_dao_deepdive.md @@ -14,7 +14,7 @@ --- -# 1. MULTI-TENANT DOMAINS & ROUTING +## 1. MULTI-TENANT DOMAINS & ROUTING MicroDAO має підтримувати: @@ -37,7 +37,7 @@ teams: - slug: string // "greenfood", "musiclab" - primary_domain_id: string | null - created_at -``` +```text ### Таблиця `domains` @@ -50,7 +50,7 @@ domains: - is_primary: boolean - verified_at: Date | null - created_at -``` +```text --- @@ -58,7 +58,7 @@ domains: На початку кожного HTTP-запиту: -``` +```text host := request.headers["Host"] 1) спробувати знайти host у domains: @@ -74,7 +74,7 @@ host := request.headers["Host"] 4) якщо знайшли → currentTeamId = id. 5) інакше → 404 або сторінка Onboarding ("microDAO не знайдено") -``` +```text --- @@ -84,19 +84,19 @@ host := request.headers["Host"] URL: -``` +```text greenfood.daarion.city/ mydao.org/ -``` +```text Усі маршрути стають: -``` +```text / → головна команда /projects /agents /settings -``` +```text **Без /t/:teamId** — тому що `teamId` вже визначено з домену. @@ -104,21 +104,21 @@ mydao.org/ URL: -``` +```text app.daarion.city/t/:teamId/agents -``` +```text Цей режим потрібен: -* для розробки, -* для адміністрування, -* для роботи всередині DAARION.city як централізованої платформи. +- для розробки, +- для адміністрування, +- для роботи всередині DAARION.city як централізованої платформи. --- ## 1.4. Налаштування кастомного домену (UX) -### Потік: +### Потік 1. Адмін відкриває: **Settings → Domain** @@ -128,7 +128,7 @@ app.daarion.city/t/:teamId/agents 4. Система показує інструкцію: - ``` + ```text Створіть CNAME: mydao.org → domains.daarion.city ``` @@ -143,13 +143,13 @@ app.daarion.city/t/:teamId/agents --- -# 2. WALLET AGENT — ПРОТОКОЛ БЕЗПЕЧНОГО ПІДПИСУ +## 2. WALLET AGENT — ПРОТОКОЛ БЕЗПЕЧНОГО ПІДПИСУ Wallet Agent — це **інтерфейс** між microDAO і зовнішніми гаманцями: -* браузерні (MetaMask, WalletConnect), -* мобільні, -* апаратні (Tangem-подібні). +- браузерні (MetaMask, WalletConnect), +- мобільні, +- апаратні (Tangem-подібні). Wallet Agent **ніколи не отримує приватний ключ**. @@ -168,7 +168,7 @@ walletAgent.prepare_signature_payload({ action: "update_policy", params: {...} }); -``` +```text Wallet Agent: @@ -193,7 +193,7 @@ sign_requests: - status: "pending" | "signed" | "rejected" - created_at - updated_at -``` +```text --- @@ -201,14 +201,14 @@ sign_requests: Коли є новий `sign_request`: -* у UI зʼявляється: +- у UI зʼявляється: - * "Агент пропонує підписати дію" - * опис, - * кнопки: + - "Агент пропонує підписати дію" + - опис, + - кнопки: - * "Підписати" - * "Скасувати" + - "Підписати" + - "Скасувати" Коли користувач натискає "Підписати": @@ -216,7 +216,7 @@ sign_requests: 2. отримує `signature`, 3. викликає: - ``` + ```text POST /sign_requests/:id/confirm { signature: "0x..." @@ -235,7 +235,7 @@ sign_results: - tx_hash? - confirmed_at - status: "broadcasted" | "failed" -``` +```text --- @@ -248,22 +248,22 @@ tools: [ "verify_signature", // перевірка "get_wallet_state" // поточні адреси, мережі, доступи ] -``` +```text Wallet Agent — це декларативна прослойка між дією і підписом користувача. --- -# 3. DAO AGENT — СИНХРОНІЗАЦІЯ З ON-CHAIN DAO +## 3. DAO AGENT — СИНХРОНІЗАЦІЯ З ON-CHAIN DAO Не кожному microDAO потрібен on-chain DAO. Але архітектура має підтримувати: -* звʼязок з DAO-контрактами, -* синхронізацію ритуалів узгодження microDAO з DAO-голосуваннями, -* оновлення локальних правил після голосування, -* відправку результатів у DAO-контракт. +- звʼязок з DAO-контрактами, +- синхронізацію ритуалів узгодження microDAO з DAO-голосуваннями, +- оновлення локальних правил після голосування, +- відправку результатів у DAO-контракт. --- @@ -271,33 +271,33 @@ Wallet Agent — це декларативна прослойка між діє ### 1) Fetch external proposals -``` +```text fetch_dao_proposals(team_id) -``` +```text Тягне список пропозицій з DAO-контракту чи API. ### 2) Map rituals to proposals -``` +```text map_ritual_to_proposal(ritual_id, proposal_id) -``` +```text Звʼязує локальний ритуал і зовнішню пропозицію. ### 3) Submit local result to DAO -``` +```text submit_ritual_result(ritual_id) -``` +```text Використовує Wallet Agent для підпису. ### 4) Sync policy -``` +```text sync_policies_onchain() -``` +```text Порівнює локальні правила з DAO-версією. @@ -318,7 +318,7 @@ dao_proposals: - result: "accepted" | "rejected" | "pending" - mapped_ritual_id: string | null - created_at -``` +```text ### Таблиця `dao_sync_logs` @@ -331,7 +331,7 @@ dao_sync_logs: - action_type - payload_json - created_at -``` +```text --- @@ -344,16 +344,16 @@ tools: [ "submit_ritual_result", "resolve_dao_result" ] -``` +```text --- -# 4. Інтеграція з Governance Agent та OperatorMode +## 4. Інтеграція з Governance Agent та OperatorMode DAO Agent працює лише тоді, коли: -* Governance Agent дозволяє це (entitlement), -* Wallet Agent підписує дії людиною. +- Governance Agent дозволяє це (entitlement), +- Wallet Agent підписує дії людиною. OperatorMode у DAO Agent: @@ -368,45 +368,45 @@ operatorMode: { schedule: "0 */6 * * *", // кожні 6 годин maxActionsPerHour: 5 } -``` +```text **Оновлення правил або відправка результатів ритуалу завжди вимагає людського підпису.** --- -# 5. API ЕНДПОЇНТИ +## 5. API ЕНДПОЇНТИ ## 5.1. Domains API -``` +```text GET /domains?team_id POST /domains PATCH /domains/:id DELETE /domains/:id -``` +```text ## 5.2. Wallet API -``` +```text GET /sign_requests?team_id POST /sign_requests POST /sign_requests/:id/confirm POST /sign_requests/:id/reject -``` +```text ## 5.3. DAO API -``` +```text GET /dao/proposals?team_id POST /dao/sync POST /dao/ritual/:id/submit -``` +```text --- -# 6. Інструкції для Cursor +## 6. Інструкції для Cursor -``` +```text Use 23_domains_wallet_dao_deepdive.md to implement: 1) Multi-tenant domain routing (backend + frontend) @@ -432,16 +432,16 @@ Use 23_domains_wallet_dao_deepdive.md to implement: - Wallet signature flow 6) Add operatorMode guards where appropriate -``` +```text --- -# 7. Результат +## 7. Результат Після впровадження: -* кожне microDAO може мати власний домен без конфігураційної плутанини, -* Wallet Agent забезпечує безпечний і прозорий протокол підпису, -* DAO Agent може синхронізуватися з зовнішніми DAO-протоколами, -* архітектура стає розширюваною для міжпросторових і міжмережевих інтеграцій, -* operatorMode забезпечує контрольований автоматизм без ризиків. +- кожне microDAO може мати власний домен без конфігураційної плутанини, +- Wallet Agent забезпечує безпечний і прозорий протокол підпису, +- DAO Agent може синхронізуватися з зовнішніми DAO-протоколами, +- архітектура стає розширюваною для міжпросторових і міжмережевих інтеграцій, +- operatorMode забезпечує контрольований автоматизм без ризиків. diff --git a/docs/standards/lint_scope.txt b/docs/standards/lint_scope.txt index 51707dbb..ccfe9998 100644 --- a/docs/standards/lint_scope.txt +++ b/docs/standards/lint_scope.txt @@ -129,3 +129,5 @@ docs/cursor/08_agent_first_onboarding.md docs/cursor/24_agent_cards_tasks.md docs/cursor/11_llm_integration.md docs/cursor/17_comemory_knowledge_space.md +docs/cursor/23_domains_wallet_dao_deepdive.md +docs/cursor/14_messenger_agent_module.md