Files
Apple ef3473db21 snapshot: NODE1 production state 2026-02-09
Complete snapshot of /opt/microdao-daarion/ from NODE1 (144.76.224.179).
This represents the actual running production code that has diverged
significantly from the previous main branch.

Key changes from old main:
- Gateway (http_api.py): expanded from ~40KB to 164KB with full agent support
- Router: new /v1/agents/{id}/infer endpoint with vision + DeepSeek routing
- Behavior Policy: SOWA v2.2 (3-level: FULL/ACK/SILENT)
- Agent Registry: config/agent_registry.yml as single source of truth
- 13 agents configured (was 3)
- Memory service integration
- CrewAI teams and roles

Excluded from snapshot: venv/, .env, data/, backups, .tgz archives

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 08:46:46 -08:00

920 lines
39 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="https://IvanTytar.github.io/microdao-daarion/cursor/24_agent_cards_tasks/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
<title>24 — Agent Cards and Console Tasks (MicroDAO) - DAARION Documentation</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.66ac8b77.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#24-agent-cards-and-console-tasks-microdao" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../.." title="DAARION Documentation" class="md-header__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
DAARION Documentation
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
24 — Agent Cards and Console Tasks (MicroDAO)
</span>
</div>
</div>
</div>
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="DAARION Documentation" class="md-nav__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
DAARION Documentation
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../public/" class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../public/getting-started/" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../public/architecture-overview/" class="md-nav__link">
<span class="md-ellipsis">
Architecture
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../public/daiS_daos_overview/" class="md-nav__link">
<span class="md-ellipsis">
DAIS & DAOS
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
<span class="md-ellipsis">
Internal
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Internal
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_1" >
<label class="md-nav__link" for="__nav_5_1" id="__nav_5_1_label" tabindex="0">
<span class="md-ellipsis">
Infra
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_1">
<span class="md-nav__icon md-icon"></span>
Infra
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../internal/infra/INFRA_AUTOMATION_PACK_V1/" class="md-nav__link">
<span class="md-ellipsis">
Infra Automation Pack v1
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../internal/infra/monitoring_overview/" class="md-nav__link">
<span class="md-ellipsis">
Monitoring Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../internal/infra/nodes_registry_v0/" class="md-nav__link">
<span class="md-ellipsis">
Nodes Registry v0
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" >
<label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
<span class="md-ellipsis">
Specs
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_2">
<span class="md-nav__icon md-icon"></span>
Specs
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../internal/specs/matrix_presence_aggregator/" class="md-nav__link">
<span class="md-ellipsis">
Matrix Presence Aggregator
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../internal/specs/city_map_spec/" class="md-nav__link">
<span class="md-ellipsis">
City Map Spec
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../internal/specs/node_join_protocol_draft/" class="md-nav__link">
<span class="md-ellipsis">
Node Join Protocol (Draft)
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="24-agent-cards-and-console-tasks-microdao">24 — Agent Cards and Console Tasks (MicroDAO)<a class="headerlink" href="#24-agent-cards-and-console-tasks-microdao" title="Permanent link">&para;</a></h1>
<p>Структурований список задач для реалізації Agent Cards та Console</p>
<p>Цей документ містить детальні технічні задачі для поетапної реалізації системи карток агентів та Agent Console.</p>
<p><strong>Базовий документ:</strong> <code>23_agent_cards_and_console.md</code></p>
<hr />
<h1 id="task-1-agent-cards-grid">Task 1 — Agent-Cards-Grid (плитки агентів)<a class="headerlink" href="#task-1-agent-cards-grid" title="Permanent link">&para;</a></h1>
<h2 id="_1">Мета<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h2>
<p>Створити компонент AgentCard та AgentGrid для відображення агентів у вигляді "живих карток" з метриками досвіду, репутації та присутності.</p>
<h2 id="_2">Специфікація<a class="headerlink" href="#_2" title="Permanent link">&para;</a></h2>
<h3 id="1-agentcard">1. Компонент AgentCard<a class="headerlink" href="#1-agentcard" title="Permanent link">&para;</a></h3>
<ul>
<li>Розмір: 280x360px (рекомендовано)</li>
<li>
<p>Структура:</p>
</li>
<li>
<p>Верхній блок: Аватар + відео-аватар (64x64px)</p>
</li>
<li>Імʼя та роль</li>
<li>Метрики: Вік, Досвід 1T, Репутація</li>
<li>Присутність: бейджі каналів/проєктів</li>
<li>Статус підключення</li>
</ul>
<h3 id="2-agentgrid">2. Компонент AgentGrid<a class="headerlink" href="#2-agentgrid" title="Permanent link">&para;</a></h3>
<ul>
<li>Сітка карток (responsive: 1-4 колонки)</li>
<li>Фільтри: "Всі", "Підключені", "Доступні"</li>
<li>Пошук по імені/ролі</li>
</ul>
<h3 id="3">3. Дані<a class="headerlink" href="#3" title="Permanent link">&para;</a></h3>
<ul>
<li>API: <code>GET /agents?team_id=...</code></li>
<li>Метрики: <code>GET /agents/{id}/metrics</code></li>
<li>Присутність: <code>GET /agents/{id}/presence</code></li>
</ul>
<h3 id="4-hover">4. Hover ефект<a class="headerlink" href="#4-hover" title="Permanent link">&para;</a></h3>
<ul>
<li>Напівпрозорий оверлей з кнопками:</li>
<li>"Почати взаємодію"</li>
<li>"Підключити до каналу"</li>
<li>"Деталі агента"</li>
</ul>
<h3 id="5">5. Клік<a class="headerlink" href="#5" title="Permanent link">&para;</a></h3>
<ul>
<li>Відкриває Agent Console (Task 2)</li>
</ul>
<h2 id="acceptance-criteria">Acceptance Criteria<a class="headerlink" href="#acceptance-criteria" title="Permanent link">&para;</a></h2>
<ul>
<li>Картки агентів відображаються у сітці</li>
<li>Показуються метрики (вік, 1T, репутація)</li>
<li>Hover показує опції взаємодії</li>
<li>Клік відкриває Agent Console</li>
<li>Фільтри та пошук працюють</li>
</ul>
<h2 id="cursor">Приклад промта для Cursor<a class="headerlink" href="#cursor" title="Permanent link">&para;</a></h2>
<div class="codehilite"><pre><span></span><code>Implement Agent Cards Grid using:
<span class="k">-</span> 23_agent_cards_and_console.md
<span class="k">-</span> 10_agent_ui_system.md
<span class="k">-</span> 05_coding_standards.md
Deliverables:
1) AgentCard component with avatar, name, role, metrics (age, 1T, reputation).
2) AgentGrid component with responsive layout (1-4 columns).
3) Hover overlay with action buttons.
4) Filters: All / Connected / Available.
5) Search by name/role.
Output: list of files + diff + summary.
</code></pre></div>
<hr />
<h1 id="task-2-agent-console-ui">Task 2 — Agent-Console-UI (повний інтерфейс)<a class="headerlink" href="#task-2-agent-console-ui" title="Permanent link">&para;</a></h1>
<h2 id="_3">Мета<a class="headerlink" href="#_3" title="Permanent link">&para;</a></h2>
<p>Створити Agent Console — повний інтерфейс для взаємодії з агентом з 5 вкладками.</p>
<h2 id="_4">Специфікація<a class="headerlink" href="#_4" title="Permanent link">&para;</a></h2>
<h3 id="1-agent-console">1. Структура Agent Console<a class="headerlink" href="#1-agent-console" title="Permanent link">&para;</a></h3>
<ul>
<li>Верхня панель: Аватар, імʼя, метрики</li>
<li>Вкладки: Чат, Файли, Памʼять, Присутність, Еволюція</li>
<li>Контент вкладок (деталі нижче)</li>
</ul>
<h3 id="2">2. Вкладка "Чат"<a class="headerlink" href="#2" title="Permanent link">&para;</a></h3>
<ul>
<li>Використовує <code>AgentChatWindow</code> з <code>10_agent_ui_system.md</code></li>
<li>Додатково: кнопка "Голосовий діалог" (stub для MVP)</li>
<li>Показ поточного контексту</li>
</ul>
<h3 id="3_1">3. Вкладка "Файли та Документи"<a class="headerlink" href="#3_1" title="Permanent link">&para;</a></h3>
<ul>
<li>Список файлів (з API або stub)</li>
<li>Кнопка "Завантажити файл"</li>
<li>Індикатор: "Документи зберігаються в просторі вашої microDAO"</li>
</ul>
<h3 id="4">4. Вкладка "Памʼять і Знання"<a class="headerlink" href="#4" title="Permanent link">&para;</a></h3>
<ul>
<li>Використовує компоненти з <code>13_agent_memory_system.md</code></li>
<li>Короткострокова та довгострокова памʼять</li>
<li>Кнопки управління памʼяттю</li>
</ul>
<h3 id="5_1">5. Вкладка "Присутність / Права доступу"<a class="headerlink" href="#5_1" title="Permanent link">&para;</a></h3>
<ul>
<li>Таблиця просторів (канали, проєкти)</li>
<li>Перемикачі підключення</li>
<li>Рівні доступу</li>
<li>Кнопка "Додати до нового каналу/проєкту"</li>
</ul>
<h3 id="6">6. Вкладка "Еволюція та дух спільноти"<a class="headerlink" href="#6" title="Permanent link">&para;</a></h3>
<ul>
<li>Лог внеску агента</li>
<li>Статистика запитів</li>
<li>Репутація від спільноти</li>
<li>Без фінансових термінів</li>
</ul>
<h2 id="acceptance-criteria_1">Acceptance Criteria<a class="headerlink" href="#acceptance-criteria_1" title="Permanent link">&para;</a></h2>
<ul>
<li>Agent Console відкривається при кліку на картку</li>
<li>Всі 5 вкладок працюють</li>
<li>Чат інтегрований з Agent Runtime Core</li>
<li>Файли показуються (stub дані OK)</li>
<li>Памʼять інтегрована з Memory System</li>
<li>Присутність показує реальні дані</li>
<li>Еволюція показує лог (stub OK)</li>
</ul>
<h2 id="cursor_1">Приклад промта для Cursor<a class="headerlink" href="#cursor_1" title="Permanent link">&para;</a></h2>
<div class="codehilite"><pre><span></span><code><span class="n">Implement</span><span class="w"> </span><span class="n">Agent</span><span class="w"> </span><span class="n">Console</span><span class="w"> </span><span class="n">UI</span><span class="w"> </span><span class="n">using</span><span class="p">:</span>
<span class="o">-</span><span class="w"> </span><span class="mi">23</span><span class="n">_agent_cards_and_console</span><span class="o">.</span><span class="n">md</span>
<span class="o">-</span><span class="w"> </span><span class="mi">10</span><span class="n">_agent_ui_system</span><span class="o">.</span><span class="n">md</span>
<span class="o">-</span><span class="w"> </span><span class="mi">13</span><span class="n">_agent_memory_system</span><span class="o">.</span><span class="n">md</span>
<span class="o">-</span><span class="w"> </span><span class="mi">12</span><span class="n">_agent_runtime_core</span><span class="o">.</span><span class="n">md</span>
<span class="o">-</span><span class="w"> </span><span class="mi">05</span><span class="n">_coding_standards</span><span class="o">.</span><span class="n">md</span>
<span class="n">Deliverables</span><span class="p">:</span>
<span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="n">AgentConsole</span><span class="w"> </span><span class="n">component</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="n">tabs</span><span class="o">.</span>
<span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="n">Chat</span><span class="w"> </span><span class="n">tab</span><span class="p">:</span><span class="w"> </span><span class="n">integrate</span><span class="w"> </span><span class="n">AgentChatWindow</span><span class="o">.</span>
<span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="n">Files</span><span class="w"> </span><span class="n">tab</span><span class="p">:</span><span class="w"> </span><span class="n">file</span><span class="w"> </span><span class="n">list</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">upload</span><span class="w"> </span><span class="n">button</span><span class="w"> </span><span class="p">(</span><span class="n">stub</span><span class="p">)</span><span class="o">.</span>
<span class="mi">4</span><span class="p">)</span><span class="w"> </span><span class="n">Memory</span><span class="w"> </span><span class="n">tab</span><span class="p">:</span><span class="w"> </span><span class="n">integrate</span><span class="w"> </span><span class="n">memory</span><span class="w"> </span><span class="n">components</span><span class="o">.</span>
<span class="mi">5</span><span class="p">)</span><span class="w"> </span><span class="n">Presence</span><span class="w"> </span><span class="n">tab</span><span class="p">:</span><span class="w"> </span><span class="n">table</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">connect</span><span class="o">/</span><span class="n">disconnect</span><span class="w"> </span><span class="n">toggles</span><span class="o">.</span>
<span class="mi">6</span><span class="p">)</span><span class="w"> </span><span class="n">Evolution</span><span class="w"> </span><span class="n">tab</span><span class="p">:</span><span class="w"> </span><span class="nb">log</span><span class="w"> </span><span class="n">display</span><span class="w"> </span><span class="p">(</span><span class="n">stub</span><span class="w"> </span><span class="n">data</span><span class="w"> </span><span class="n">OK</span><span class="p">)</span><span class="o">.</span>
<span class="n">Output</span><span class="p">:</span><span class="w"> </span><span class="n">list</span><span class="w"> </span><span class="n">of</span><span class="w"> </span><span class="n">files</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">diff</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">summary</span><span class="o">.</span>
</code></pre></div>
<hr />
<h1 id="task-3-agent-experience-metrics-1t">Task 3 — Agent-Experience-Metrics (1T + репутація)<a class="headerlink" href="#task-3-agent-experience-metrics-1t" title="Permanent link">&para;</a></h1>
<h2 id="_5">Мета<a class="headerlink" href="#_5" title="Permanent link">&para;</a></h2>
<p>Реалізувати систему метрик досвіду агентів: вік, досвід 1T, репутація спільноти.</p>
<h2 id="_6">Специфікація<a class="headerlink" href="#_6" title="Permanent link">&para;</a></h2>
<h3 id="1">1. Вік агента<a class="headerlink" href="#1" title="Permanent link">&para;</a></h3>
<ul>
<li>Розрахунок: <code>created_at</code> до поточної дати</li>
<li>Формат: "3 тижні", "6 місяців", "1 рік 2 місяці"</li>
<li>API: <code>GET /agents/{id}/metrics</code><code>{ age: { weeks, months, years } }</code></li>
</ul>
<h3 id="2-1t">2. Досвід 1T<a class="headerlink" href="#2-1t" title="Permanent link">&para;</a></h3>
<ul>
<li>Лічильник: велике число з розділювачами (12 340 1T)</li>
<li>Tooltip: "1T — це внутрішня одиниця обчислень і досвіду агента"</li>
<li>API: <code>GET /agents/{id}/metrics</code><code>{ experience1T: number }</code></li>
<li>Візуалізація: великий текст з іконкою</li>
</ul>
<h3 id="3_2">3. Репутація спільноти<a class="headerlink" href="#3_2" title="Permanent link">&para;</a></h3>
<ul>
<li>Шкала: 0-100 або 0-5 зірок</li>
<li>Розрахунок: на основі фідбеку від учасників</li>
<li>API: <code>GET /agents/{id}/metrics</code><code>{ reputation: { score, type } }</code></li>
<li>Візуалізація: прогрес-бар або зірки</li>
</ul>
<h3 id="4-agentmetrics">4. Компонент AgentMetrics<a class="headerlink" href="#4-agentmetrics" title="Permanent link">&para;</a></h3>
<div class="codehilite"><pre><span></span><code><span class="kd">interface</span><span class="w"> </span><span class="nx">AgentMetricsProps</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nx">agentId</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="p">;</span>
<span class="w"> </span><span class="nx">compact?</span><span class="o">:</span><span class="w"> </span><span class="kt">boolean</span><span class="p">;</span><span class="w"> </span><span class="c1">// для картки vs консолі</span>
<span class="p">}</span>
<span class="k">export</span><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">AgentMetrics</span><span class="p">({</span><span class="w"> </span><span class="nx">agentId</span><span class="p">,</span><span class="w"> </span><span class="nx">compact</span><span class="w"> </span><span class="p">}</span><span class="o">:</span><span class="w"> </span><span class="nx">AgentMetricsProps</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">// Відображення метрик</span>
<span class="p">}</span>
</code></pre></div>
<h2 id="acceptance-criteria_2">Acceptance Criteria<a class="headerlink" href="#acceptance-criteria_2" title="Permanent link">&para;</a></h2>
<ul>
<li>Вік агента розраховується правильно</li>
<li>1T показується з tooltip</li>
<li>Репутація відображається візуально</li>
<li>Метрики оновлюються при зміні даних</li>
</ul>
<h2 id="cursor_2">Приклад промта для Cursor<a class="headerlink" href="#cursor_2" title="Permanent link">&para;</a></h2>
<div class="codehilite"><pre><span></span><code><span class="n">Implement</span><span class="w"> </span><span class="n">Agent</span><span class="w"> </span><span class="n">Experience</span><span class="w"> </span><span class="n">Metrics</span><span class="w"> </span><span class="n">using</span><span class="p">:</span>
<span class="o">-</span><span class="w"> </span><span class="mi">23</span><span class="n">_agent_cards_and_console</span><span class="o">.</span><span class="n">md</span>
<span class="o">-</span><span class="w"> </span><span class="mi">03</span><span class="n">_api_core_snapshot</span><span class="o">.</span><span class="n">md</span>
<span class="o">-</span><span class="w"> </span><span class="mi">05</span><span class="n">_coding_standards</span><span class="o">.</span><span class="n">md</span>
<span class="n">Deliverables</span><span class="p">:</span>
<span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="n">Calculate</span><span class="w"> </span><span class="n">agent</span><span class="w"> </span><span class="n">age</span><span class="w"> </span><span class="n">from</span><span class="w"> </span><span class="n">created_at</span><span class="o">.</span>
<span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="n">Display</span><span class="w"> </span><span class="mi">1</span><span class="n">T</span><span class="w"> </span><span class="n">experience</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">tooltip</span><span class="w"> </span><span class="n">explanation</span><span class="o">.</span>
<span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="n">Display</span><span class="w"> </span><span class="n">reputation</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="o">-</span><span class="mi">100</span><span class="w"> </span><span class="n">scale</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="mi">0</span><span class="o">-</span><span class="mi">5</span><span class="w"> </span><span class="n">stars</span><span class="p">)</span><span class="o">.</span>
<span class="mi">4</span><span class="p">)</span><span class="w"> </span><span class="n">AgentMetrics</span><span class="w"> </span><span class="n">component</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">reuse</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">Card</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">Console</span><span class="o">.</span>
<span class="mi">5</span><span class="p">)</span><span class="w"> </span><span class="n">API</span><span class="w"> </span><span class="n">integration</span><span class="p">:</span><span class="w"> </span><span class="n">GET</span><span class="w"> </span><span class="o">/</span><span class="n">agents</span><span class="o">/</span><span class="p">{</span><span class="n">id</span><span class="p">}</span><span class="o">/</span><span class="n">metrics</span><span class="o">.</span>
<span class="n">Output</span><span class="p">:</span><span class="w"> </span><span class="n">list</span><span class="w"> </span><span class="n">of</span><span class="w"> </span><span class="n">files</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">diff</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">summary</span><span class="o">.</span>
</code></pre></div>
<hr />
<h1 id="task-4-agent-connections-toggles">Task 4 — Agent-Connections-Toggles (підключення/відключення)<a class="headerlink" href="#task-4-agent-connections-toggles" title="Permanent link">&para;</a></h1>
<h2 id="_7">Мета<a class="headerlink" href="#_7" title="Permanent link">&para;</a></h2>
<p>Реалізувати управління підключеннями агентів до просторів (канали, проєкти) з перемикачами.</p>
<h2 id="_8">Специфікація<a class="headerlink" href="#_8" title="Permanent link">&para;</a></h2>
<h3 id="1_1">1. На картці агента<a class="headerlink" href="#1_1" title="Permanent link">&para;</a></h3>
<ul>
<li>Бейджі: "Публічні простори: 2", "Конфіденційні: 1"</li>
<li>При кліку — модалка зі списком просторів</li>
<li>Перемикачі для кожного простору</li>
</ul>
<h3 id="2-agent-console">2. У Agent Console (вкладка "Присутність")<a class="headerlink" href="#2-agent-console" title="Permanent link">&para;</a></h3>
<ul>
<li>Таблиця просторів:</li>
<li>Простір / Тип / Доступ / Статус / Дії</li>
<li>Перемикач "Підключено/Відʼєднано"</li>
<li>Кнопка "Додати до нового простору"</li>
</ul>
<h3 id="3-api">3. API<a class="headerlink" href="#3-api" title="Permanent link">&para;</a></h3>
<ul>
<li><code>GET /agents/{id}/presence</code> → список просторів</li>
<li><code>POST /agents/{id}/presence/connect</code> → підключити</li>
<li><code>POST /agents/{id}/presence/disconnect</code> → відключити</li>
</ul>
<h3 id="4-ux">4. UX<a class="headerlink" href="#4-ux" title="Permanent link">&para;</a></h3>
<ul>
<li>При відключенні: підтвердження</li>
<li>При підключенні: вибір прав доступу</li>
<li>Оновлення UI після зміни</li>
</ul>
<h2 id="acceptance-criteria_3">Acceptance Criteria<a class="headerlink" href="#acceptance-criteria_3" title="Permanent link">&para;</a></h2>
<ul>
<li>Бейджі на картці показують кількість просторів</li>
<li>Модалка зі списком просторів працює</li>
<li>Перемикачі в консолі працюють</li>
<li>API виклики зберігають зміни</li>
<li>UI оновлюється після змін</li>
</ul>
<h2 id="cursor_3">Приклад промта для Cursor<a class="headerlink" href="#cursor_3" title="Permanent link">&para;</a></h2>
<div class="codehilite"><pre><span></span><code>Implement Agent Connections Management using:
<span class="k">-</span> 23_agent_cards_and_console.md
<span class="k">-</span> 21_agent_only_interface.md
<span class="k">-</span> 03_api_core_snapshot.md
<span class="k">-</span> 05_coding_standards.md
Deliverables:
1) Badges on agent card showing presence count.
2) Modal with list of spaces (channels/projects) for agent.
3) Toggle switches in Agent Console Presence tab.
4) Connect/disconnect API calls.
5) UI updates after connection changes.
Output: list of files + diff + summary.
</code></pre></div>
<hr />
<h1 id="_9">Порядок виконання задач<a class="headerlink" href="#_9" title="Permanent link">&para;</a></h1>
<p>Рекомендований порядок:</p>
<ol>
<li><strong>Task 1</strong> — Agent-Cards-Grid (базова структура карток)</li>
<li><strong>Task 3</strong> — Agent-Experience-Metrics (метрики для карток)</li>
<li><strong>Task 2</strong> — Agent-Console-UI (повний інтерфейс)</li>
<li><strong>Task 4</strong> — Agent-Connections-Toggles (управління підключеннями)</li>
</ol>
<hr />
<h1 id="_10">Залежності між задачами<a class="headerlink" href="#_10" title="Permanent link">&para;</a></h1>
<ul>
<li><strong>Task 1</strong> не залежить від інших</li>
<li><strong>Task 3</strong> може використовуватися в Task 1</li>
<li><strong>Task 2</strong> потребує Task 1 (відкриття консолі з картки)</li>
<li><strong>Task 4</strong> потребує Task 2 (вкладка "Присутність")</li>
</ul>
<hr />
<h1 id="_11">Загальні вимоги<a class="headerlink" href="#_11" title="Permanent link">&para;</a></h1>
<h2 id="_12">Термінологія<a class="headerlink" href="#_12" title="Permanent link">&para;</a></h2>
<p><strong>Важливо:</strong> Використовувати тільки людську термінологію:</p>
<p>✅ Дозволено:
- "досвід"
- "шлях агента"
- "довіра спільноти"
- "внесок у колективний розум"
- "репутація"</p>
<p>❌ Заборонено:
- "інвестиції"
- "юніти вартості"
- "ROI"
- "прибуток"
- будь-які фінансові терміни</p>
<h2 id="_13">Зберігання даних<a class="headerlink" href="#_13" title="Permanent link">&para;</a></h2>
<ul>
<li>Всі файли/документи зберігаються в сховищі microDAO</li>
<li>Показувати індикатор: "Документи зберігаються в просторі вашої microDAO"</li>
<li>DAGI використовується як "мозок", але не як сховище</li>
</ul>
<hr />
<p><strong>Готово.</strong><br />
Це <strong>структурований список задач для Agent Cards та Console</strong>, готовий до використання в Cursor.</p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.sections", "navigation.instant", "content.code.copy"], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.3220b9d7.min.js"></script>
</body>
</html>