84 Commits

Author SHA1 Message Date
Apple
381e4bfe5e docs: expand lint scope batch75 (2 files) 2026-02-16 09:47:39 -08:00
Apple
df19527b48 docs: expand lint scope batch74 (2 files) 2026-02-16 09:35:46 -08:00
Apple
e0a98c837f docs: expand lint scope batch73 (2 files) 2026-02-16 09:04:57 -08:00
Apple
94f74ef111 docs: expand lint scope batch72 (2 files) 2026-02-16 08:52:51 -08:00
Apple
8b84bd8df6 docs: expand lint scope batch71 (2 files) 2026-02-16 08:45:48 -08:00
Apple
aa853f802f docs: expand lint scope batch70 (2 files) 2026-02-16 08:42:58 -08:00
Apple
5ab7b6ddc1 docs: expand lint scope batch69 (2 files) 2026-02-16 08:40:04 -08:00
Apple
0f5327d07e docs: expand lint scope batch68 (2 files) 2026-02-16 08:37:02 -08:00
Apple
24b7468126 docs: expand lint scope batch67 (2 files) 2026-02-16 08:34:13 -08:00
Apple
cca620bbbd docs: expand lint scope batch66 (2 files) 2026-02-16 08:31:13 -08:00
Apple
7640621ade docs: expand lint scope batch65 (2 files) 2026-02-16 08:28:16 -08:00
Apple
4b1dacfdcd docs: expand lint scope batch64 (2 files) 2026-02-16 08:20:52 -08:00
Apple
74c8f8576b docs: expand lint scope batch63 (2 files) 2026-02-16 08:20:32 -08:00
Apple
cc94bb500c docs: expand lint scope batch62 (2 files) 2026-02-16 08:05:46 -08:00
Apple
02548bd58d docs: expand lint scope batch61 (2 files) 2026-02-16 08:04:39 -08:00
Apple
12d389880a docs: expand lint scope batch60 (2 files) 2026-02-16 08:03:09 -08:00
Apple
9afd56da16 docs: expand lint scope batch59 (2 files) 2026-02-16 08:01:20 -08:00
Apple
9a4b3d2f7a docs: expand lint scope batch58 (2 files) 2026-02-16 07:58:48 -08:00
Apple
fa65baf5dd docs: expand lint scope batch57 (2 files) 2026-02-16 07:57:39 -08:00
Apple
85ff0b8669 docs: expand lint scope batch56 (2 files) 2026-02-16 07:56:49 -08:00
Apple
cd7121fd81 docs: expand lint scope batch55 (2 files) 2026-02-16 07:55:53 -08:00
Apple
ddba4483ff docs: expand lint scope batch54 (2 files) 2026-02-16 07:52:26 -08:00
Apple
54bf8dc521 docs: expand lint scope batch53 (2 files) 2026-02-16 07:50:40 -08:00
Apple
4c92b1dded docs: expand lint scope batch52 (2 files) 2026-02-16 07:48:48 -08:00
Apple
3c11d243c5 docs: expand lint scope batch51 (2 files) 2026-02-16 07:47:45 -08:00
Apple
1721b60401 docs: expand lint scope batch50 (2 files) 2026-02-16 07:46:19 -08:00
Apple
45a8bc676e docs: expand lint scope batch49 (2 files) 2026-02-16 07:44:56 -08:00
Apple
79d3257f14 docs: expand lint scope batch48 (2 files) 2026-02-16 07:43:55 -08:00
Apple
8ea99372c0 docs: expand lint scope batch47 (2 files) 2026-02-16 07:42:56 -08:00
Apple
83decf0fc8 docs: expand lint scope batch46 (2 files) 2026-02-16 07:41:44 -08:00
Apple
4098649c59 docs: expand lint scope batch45 (2 files) 2026-02-16 07:40:07 -08:00
Apple
168cb76d42 docs: expand lint scope batch44 (2 files) 2026-02-16 07:38:52 -08:00
Apple
9eba663695 docs: expand lint scope batch43 (2 files) 2026-02-16 07:37:15 -08:00
Apple
40c75258ea docs: expand lint scope batch42 (2 files) 2026-02-16 07:35:23 -08:00
Apple
186aac899b docs: expand lint scope batch41 (2 files) 2026-02-16 07:33:23 -08:00
Apple
d17e2c4fd2 docs: expand lint scope batch40 (2 files) 2026-02-16 07:31:57 -08:00
Apple
9bad0e4bd4 docs: expand lint scope batch39 (2 files) 2026-02-16 07:30:36 -08:00
Apple
43951c1881 docs: expand lint scope batch38 (2 files) 2026-02-16 07:29:51 -08:00
Apple
3a90c57944 docs: expand lint scope batch37 (2 files) 2026-02-16 07:28:15 -08:00
Apple
60ce006284 docs: expand lint scope batch36 (2 files) 2026-02-16 07:27:32 -08:00
Apple
1f21dd52b4 docs: expand lint scope batch35 (2 files) 2026-02-16 07:26:26 -08:00
Apple
197ba8eacb docs: expand lint scope batch34 (2 files) 2026-02-16 07:24:45 -08:00
Apple
5b01335b3a docs: expand lint scope batch33 (2 files) 2026-02-16 07:24:13 -08:00
Apple
b0aedcc052 docs: expand lint scope batch32 (2 files) 2026-02-16 07:23:57 -08:00
Apple
5a12b08106 docs: expand lint scope batch31 (2 files) 2026-02-16 07:22:12 -08:00
Apple
2d1e6a0c50 docs: expand lint scope batch30 (2 files) 2026-02-16 07:17:48 -08:00
Apple
2ccfecea44 docs: expand lint scope batch29 (2 files) 2026-02-16 07:15:54 -08:00
Apple
bf39cb4bee docs: expand lint scope batch28 (2 files) 2026-02-16 07:12:33 -08:00
Apple
0e0a0fab97 docs: expand lint scope batch27 (2 files) 2026-02-16 07:11:13 -08:00
Apple
e595cdc0a5 docs: expand lint scope batch26 (2 files) 2026-02-16 07:03:42 -08:00
Apple
6ac7c8f4b5 docs: expand lint scope batch25 (2 files) 2026-02-16 07:01:54 -08:00
Apple
949b0a608e docs: expand lint scope batch24 (2 files) 2026-02-16 07:00:18 -08:00
Apple
842704d7e7 docs: expand lint scope batch23 (2 files) 2026-02-16 06:57:58 -08:00
Apple
1de120ddfc docs: expand lint scope batch22 (2 files) 2026-02-16 06:56:43 -08:00
Apple
d5bd8748a1 docs: expand lint scope batch21 (2 files) 2026-02-16 06:55:23 -08:00
Apple
1fbd3009b8 docs: expand lint scope batch20 (2 files) 2026-02-16 06:41:54 -08:00
Apple
8789487037 docs: expand lint scope batch19 (2 files) 2026-02-16 06:40:21 -08:00
Apple
6e0096eea7 docs: expand lint scope batch18 (2 files) 2026-02-16 06:38:39 -08:00
Apple
db4107ba4a docs: expand lint scope batch17 (2 files) 2026-02-16 06:22:45 -08:00
Apple
162f3567df docs: expand lint scope batch16 (2 files) 2026-02-16 06:21:10 -08:00
Apple
8d2ae25cdc docs: expand lint scope batch15 (2 files) 2026-02-16 06:14:15 -08:00
Apple
e9bbcde418 docs: expand lint scope batch14 (2 files) 2026-02-16 05:49:02 -08:00
Apple
a4aa1c42aa docs: expand lint scope batch13 (2 files) 2026-02-16 05:47:10 -08:00
Apple
f2a450c159 docs: expand lint scope batch12 (2 files) 2026-02-16 05:45:39 -08:00
Apple
d84a83f639 docs: expand lint scope batch11 (2 files) 2026-02-16 05:44:43 -08:00
Apple
fa07356205 docs: expand lint scope batch10 (2 files) 2026-02-16 04:32:13 -08:00
Apple
16574d1db2 docs: expand lint scope batch9 (2 files) 2026-02-16 04:28:01 -08:00
Apple
210c6426b7 docs: expand lint scope batch8 (2 files) 2026-02-16 04:27:12 -08:00
Apple
083a622817 docs: expand lint scope batch7 (2 files) 2026-02-16 04:05:40 -08:00
Apple
e6221fef67 docs: expand lint scope batch6 (2 files) 2026-02-16 04:02:10 -08:00
Apple
de7533f97e docs: add session preflight and expand lint scope batch5 2026-02-16 03:53:56 -08:00
Apple
9c9f4fa182 docs: expand lint scope batch4 (3 files) 2026-02-16 03:47:51 -08:00
Apple
831f361f0f docs: expand lint scope batch3 (6 files) 2026-02-16 03:44:58 -08:00
Apple
1a00cd4413 docs: expand lint scope batch2 (12 files) 2026-02-16 02:53:53 -08:00
Apple
08dcfea960 docs: expand lint scope batch1 (13 files) 2026-02-16 02:40:49 -08:00
Apple
b722e28338 docs: add local scheduled maintenance runner (no auto-push) 2026-02-16 02:37:29 -08:00
Apple
5f2fd7905f docs: sync consolidation and session starter 2026-02-16 02:32:27 -08:00
Apple
3146e74ce8 docs: sync consolidation and session starter 2026-02-16 02:32:27 -08:00
Apple
fc2d86bd1b docs: sync consolidation and session starter 2026-02-16 02:32:08 -08:00
Apple
8ba71f240f docs: sync consolidation and session starter 2026-02-16 02:32:08 -08:00
Lord of Chaos
f82404dc36 Merge pull request #2 from IvanTytar/docs/node1-sync
docs(node1): safe deploy + snapshot
2026-02-10 05:35:07 -08:00
Apple
0d8582d552 docs(node1): add safe deploy workflow and snapshot
Document canonical sync between GitHub and NODA1 and add a snapshot script to capture runtime state without editing production by hand.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 05:33:32 -08:00
Apple
c1cc5591f6 chore(helion): respond to direct mentions in groups
Clarify Helion group behavior: stay silent unless energy topic or direct mention, but answer operational questions when directly addressed.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 04:30:01 -08:00
Apple
3eb628e4ff fix(router): guard DSML tool-call flows
Prevent DeepSeek DSML from leaking to users and avoid returning raw memory_search/web results when DSML is detected.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 04:30:01 -08:00
192 changed files with 3923 additions and 2080 deletions

36
.github/workflows/docs-lint.yml vendored Normal file
View File

@@ -0,0 +1,36 @@
name: docs-lint
on:
push:
branches: [main]
paths:
- "**/*.md"
- ".markdownlint.yml"
- ".markdownlintignore"
- ".github/workflows/docs-lint.yml"
- "scripts/docs/docs_lint.sh"
- "docs/standards/lint_scope.txt"
pull_request:
branches: [main]
paths:
- "**/*.md"
- ".markdownlint.yml"
- ".markdownlintignore"
- ".github/workflows/docs-lint.yml"
- "scripts/docs/docs_lint.sh"
- "docs/standards/lint_scope.txt"
jobs:
markdownlint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Lint markdown
run: bash scripts/docs/docs_lint.sh

17
.markdownlint.yml Normal file
View File

@@ -0,0 +1,17 @@
default: true
MD013:
line_length: 180
heading_line_length: 180
code_block_line_length: 220
MD024:
allow_different_nesting: true
MD033: false
MD041: false
MD022: false
MD029: false
MD031: false
MD032: false
MD060: false

6
.markdownlintignore Normal file
View File

@@ -0,0 +1,6 @@
.worktrees/
node_modules/
site/
rollback_backups/
docs/consolidation/_node1_runtime_docs/
**/*.bak_*

71
NODA1-SAFE-DEPLOY.md Normal file
View File

@@ -0,0 +1,71 @@
# NODA1 Safe Deploy (Canonical Workflow)
**Goal:** синхронізувати ноут ↔ GitHub ↔ NODA1 ↔ реальний Docker-стек так, щоб не ламати працюючий прод і не плодити "невидимі" гілки.
**Canonical source of truth:** GitHub `origin/main`.
---
## Ролі директорій на NODA1
- `/opt/microdao-daarion` — legacy checkout (може мати роз'їхавшу історію). Не використовувати для `git pull/rebase`, якщо є конфлікти.
- `/opt/microdao-daarion.repo` — canonical deployment checkout (git worktree на `origin/main`). Деплой робимо тільки звідси.
---
## Golden rules
1. Жодних ручних правок коду/доків на NODA1 (крім аварійного hotfix з наступним PR).
2. Жодних гілок/розробки на NODA1.
3. Docker compose завжди з однаковим project name: `-p microdao-daarion`.
4. Secrets не комітяться; для них тримати `*.example` + короткий опис розміщення.
---
## Safe sync (NODA1)
```bash
ssh root@144.76.224.179
cd /opt/microdao-daarion
git fetch origin
cd /opt/microdao-daarion.repo
git pull --ff-only
git rev-parse --short HEAD
```
---
## Safe deploy одного сервісу (мінімальний ризик)
### Router
```bash
cd /opt/microdao-daarion.repo
docker compose -p microdao-daarion -f docker-compose.node1.yml build router
docker compose -p microdao-daarion -f docker-compose.node1.yml up -d --no-deps --force-recreate router
curl -fsS http://127.0.0.1:9102/health
```
### Gateway
```bash
cd /opt/microdao-daarion.repo
docker compose -p microdao-daarion -f docker-compose.node1.yml build gateway
docker compose -p microdao-daarion -f docker-compose.node1.yml up -d --no-deps --force-recreate gateway
curl -fsS http://127.0.0.1:9300/health
```
---
## Runtime snapshot
```bash
cd /opt/microdao-daarion.repo
./scripts/node1/snapshot_node1.sh > "/opt/backups/node1_snapshot_$(date +%Y%m%d-%H%M%S).txt"
```

View File

@@ -5,6 +5,14 @@
---
## Session Start (Canonical)
- Старт кожної нової сесії: `docs/SESSION_STARTER.md`
- Консолідація та маркування старих/нових/фактичних доків: `docs/consolidation/README.md`
- Керований список ключових документів і статусів: `docs/consolidation/docs_registry_curated.csv`
---
## 🗂️ Де що лежить
### Основні репозиторії
@@ -26,6 +34,19 @@
| **Project Root** | `/opt/microdao-daarion/` |
| **Docker Network** | `dagi-network` |
### NODA1 Sync Policy (Repo ↔ Runtime)
**Канонічна правда:** GitHub `origin/main`.
На NODA1:
- `/opt/microdao-daarion.repo` — canonical deployment checkout (git worktree на `origin/main`), деплой робимо тільки звідси.
- `/opt/microdao-daarion` — legacy checkout; не використовувати для `git pull/rebase`, якщо історія роз'їхалась.
**Safe deploy runbook:** `NODA1-SAFE-DEPLOY.md`
**Runtime snapshot:** `scripts/node1/snapshot_node1.sh`
---
## 🎯 AGENT REGISTRY (Single Source of Truth)

View File

@@ -16,7 +16,7 @@
### 2. **Neo4j** 📊
- **Статус**: ✅ Працює (ports 7474, 7687)
- **Що робити**: Підключити до Router для knowledge graphs
- **UI**: http://144.76.224.179:7474
- **UI**: [http://144.76.224.179:7474](http://144.76.224.179:7474)
- **Час**: 45 хв
- **Пріоритет**: 🟡 СЕРЕДНІЙ
@@ -42,7 +42,7 @@
### 5. **Memory Service** 🧠
- **Проблема**: PostgreSQL не має `pgvector` extension
- **Рішення**:
- **Рішення**:
1. Встановити pgvector в PostgreSQL container
2. АБО використовувати Memory з Dify/Neo4j
- **Час**: 1 год
@@ -50,7 +50,7 @@
### 6. **RAG Service** 📚
- **Проблема**: Haystack 2.x API changes
- **Рішення**:
- **Рішення**:
1. Виправити imports
2. АБО використовувати Dify RAG (через Weaviate)
- **Час**: 1-2 год
@@ -263,17 +263,17 @@ receivers:
## 📊 Пріоритизований Timeline
### Сьогодні (3-4 год):
### Сьогодні (3-4 год)
1. ✅ Дослідити Dify (1 год) - може має все що треба!
2. ✅ Інтегрувати CrewAI (30 хв) - web search для агентів
3. ✅ Vision через Dify або OpenAI (30 хв) - описи зображень
### Завтра (2-3 год):
### Завтра (2-3 год)
4. ✅ Підключити Neo4j (45 хв) - knowledge graphs
5. ✅ Streaming TTS (1 год) - якісний голос
6. ✅ Grafana Alerts (30 хв) - моніторинг
### Опційно (якщо потрібно):
### Опційно (якщо потрібно)
7. ⚠️ Виправити RAG Service (2 год) - АБО використовувати Dify RAG
8. ⚠️ Виправити Memory Service (1 год) - АБО використовувати Neo4j
9. ⚠️ Запустити Milvus (15 хв) - тільки якщо Qdrant недостатньо
@@ -282,19 +282,19 @@ receivers:
## 💡 Ключові висновки
### Що маємо:
### Що маємо
-**35 Docker контейнерів** - величезна інфраструктура!
-**Dify AI Platform** - може замінити багато сервісів
-**CrewAI** - готовий до використання
-**Neo4j** - готовий до використання
-**3 Vector DBs** - Qdrant, Weaviate, (Milvus)
### Що можна зробити швидко:
### Що можна зробити швидко
1. **Dify exploration** - може вже все є!
2. **CrewAI integration** - web search для агентів
3. **Neo4j integration** - knowledge graphs
### Що не критично:
### Що не критично
- Memory Service (є альтернативи)
- RAG Service (є Dify RAG)
- Milvus (є Qdrant і Weaviate)
@@ -316,4 +316,3 @@ receivers:
*Створено: 2025-11-18*
*Базується на: SERVER_AUDIT_REPORT.md*

View File

@@ -1,13 +1,13 @@
# Звіт про синхронізацію агентів та дашборд моніторингу
**Дата:** 2025-11-21
**Дашборд:** http://localhost:8889 (monitoring/local_monitor.py)
**Дашборд:** [http://localhost:8889](http://localhost:8889) (`monitoring/local_monitor.py`)
## 🔍 Знайдені інструменти пошуку
### ✅ Інструменти пошуку ВЖЕ встановлені
**1. Web Search Tool (GREENFOOD)**
#### 1. Web Search Tool (GREENFOOD)
- **Файл:** `services/greenfood/crew/tools/crawl4ai_tool.py`
- **Інструменти:**
- `web_search_tool` - Пошук в інтернеті через Crawl4AI
@@ -15,7 +15,7 @@
- **Використання:** Parser Service (Crawl4AI) на порту 9400
- **Статус:** ✅ Налаштовано для GREENFOOD агентів
**2. Parser Service (Crawl4AI)**
#### 2. Parser Service (Crawl4AI)
- **Порт:** 9400
- **Endpoint:** `/crawl`
- **Можливості:**
@@ -238,6 +238,3 @@ async def get_tools():
**Останнє оновлення:** 2025-11-21
**Статус:** ⚠️ Потребує синхронізації та інтеграції

View File

@@ -7,7 +7,7 @@
### Поточний стан
**❌ Інструменти пошуку НЕ налаштовані для агентів**
### ❌ Інструменти пошуку НЕ налаштовані для агентів
Перевірка показала:
- CrewAI backend (`dagi-crewai`) не містить інструментів пошуку (SerperDevTool, DuckDuckGoSearchRun, тощо)
@@ -101,12 +101,12 @@
## 📊 DAGI Моніторинг
### Поточний стан
### Поточний стан моніторингу
#### Prometheus
- ✅ **Статус:** Healthy
- ✅ **Порт:** 9090
- ✅ **URL:** http://144.76.224.179:9090
- ✅ **URL:** [http://144.76.224.179:9090](http://144.76.224.179:9090)
- ⚠️ **Проблеми:** Деякі targets показують `down`:
- `gateway` - down
- `router` - down
@@ -116,7 +116,7 @@
#### Grafana
- ⚠️ **Статус:** Restarting (проблеми з плагіном neo4j-datasource)
- ✅ **Порт:** 3000
- ✅ **URL:** http://144.76.224.179:3000
- ✅ **URL:** [http://144.76.224.179:3000](http://144.76.224.179:3000)
- ⚠️ **Проблема:** Плагін `neo4j-datasource` не знайдено (404)
### Налаштовані метрики
@@ -138,7 +138,7 @@ Prometheus збирає метрики з:
### Чи відображаються зміни в реальному часі?
**⚠️ Частково**
### ⚠️ Частково
**Проблеми:**
1. Деякі сервіси не експортують метрики (`/metrics` endpoint)
@@ -160,17 +160,17 @@ Prometheus збирає метрики з:
## 🔗 Посилання для моніторингу
### Локальний доступ (на сервері)
- **Prometheus:** http://localhost:9090
- **Grafana:** http://localhost:3000
- **Router Health:** http://localhost:9102/health
- **Gateway Health:** http://localhost:9300/health
- **Router Providers:** http://localhost:9102/providers
- **Router Routing:** http://localhost:9102/routing
- **Prometheus:** [http://localhost:9090](http://localhost:9090)
- **Grafana:** [http://localhost:3000](http://localhost:3000)
- **Router Health:** [http://localhost:9102/health](http://localhost:9102/health)
- **Gateway Health:** [http://localhost:9300/health](http://localhost:9300/health)
- **Router Providers:** [http://localhost:9102/providers](http://localhost:9102/providers)
- **Router Routing:** [http://localhost:9102/routing](http://localhost:9102/routing)
### Публічний доступ
- **Prometheus:** http://144.76.224.179:9090
- **Grafana:** http://144.76.224.179:3000
- **Gateway Health:** https://gateway.daarion.city/health
- **Prometheus:** [http://144.76.224.179:9090](http://144.76.224.179:9090)
- **Grafana:** [http://144.76.224.179:3000](http://144.76.224.179:3000)
- **Gateway Health:** [https://gateway.daarion.city/health](https://gateway.daarion.city/health)
---
@@ -195,6 +195,3 @@ Prometheus збирає метрики з:
**Останнє оновлення:** 2025-11-21
**Статус:** ⚠️ Потребує уваги (інструменти пошуку та моніторинг)

View File

@@ -11,7 +11,7 @@
Agent Hub — це центральний UI для управління агентами DAARION. Надає візуальний інтерфейс для перегляду, моніторингу та налаштування агентів.
### Features:
### Features
- ✅ Gallery view — перегляд усіх агентів в grid layout
- ✅ Agent Cabinet — детальна сторінка агента з табами
- ✅ Metrics Dashboard — статистика використання LLM/tools
@@ -24,7 +24,7 @@ Agent Hub — це центральний UI для управління аге
## 🏗️ Architecture
```
```text
┌─────────────────────────────────────────────────────────────┐
│ Agent Hub UI │
│ (React + TypeScript + Tailwind CSS) │
@@ -52,13 +52,13 @@ Agent Hub — це центральний UI для управління аге
│orchestrator│ │ (metrics) │ │ (authz) │
│ :7008 │ │ :7013 │ │ :7012 │
└───────────┘ └───────────────┘ └──────────────┘
```
```text
---
## 📁 File Structure
```
```text
src/
├── api/
│ └── agents.ts ✅ API client (11 functions)
@@ -99,7 +99,7 @@ src/
- Refresh button
**Layout:**
```
```text
┌────────────────────────────────────────────────────┐
│ 🤖 Agent Hub [🔄 Оновити] │
│ Керуйте агентами вашого MicroDAO │
@@ -133,7 +133,7 @@ src/
- Click → navigate to `/agent/{id}`
**Visual:**
```
```text
┌────────────────────────────────┐
│ 🟢 Активний │
│ ┌──┐ │
@@ -166,7 +166,7 @@ src/
- Actions: [🔄 Оновити] [💬 Чат]
**Layout:**
```
```text
┌────────────────────────────────────────────────────┐
│ ← Назад до Agent Hub │
│ │
@@ -202,7 +202,7 @@ src/
- Time-series bar charts for tool calls
**Visual:**
```
```text
┌────────────────────────────────────────────────────┐
│ 📊 Метрики [24год][7днів][30днів] │
│ │
@@ -246,7 +246,7 @@ src/
- Updated at
**Visual:**
```
```text
┌────────────────────────────────────────────────────┐
│ ⚙️ Налаштування │
│ │
@@ -262,7 +262,7 @@ src/
│ ☐ Пошук в пам'яті (Memory) │
│ [Зберегти інструменти] │
└────────────────────────────────────────────────────┘
```
```text
---
@@ -458,7 +458,7 @@ npm run dev
### 3. Navigate to Agent Hub
```
```text
http://localhost:3000/agent-hub
```
@@ -466,10 +466,10 @@ http://localhost:3000/agent-hub
## 🧪 Testing
### Manual Testing Flow:
### Manual Testing Flow
1. **Start services** (docker-compose.phase5.yml)
2. **Open frontend** (http://localhost:3000)
2. **Open frontend** ([http://localhost:3000](http://localhost:3000))
3. **Navigate to `/agent-hub`**
4. **Verify gallery loads** (should show Sofia, Alex, Guardian)
5. **Click on an agent card** → should open `/agent/{id}`
@@ -481,7 +481,7 @@ http://localhost:3000/agent-hub
8. **Test filter** (select "DAARION")
9. **Test refresh** button
### API Testing:
### API Testing
```bash
# Health check
@@ -504,7 +504,7 @@ curl http://localhost:7014/agents/agent:sofia/context
## 📊 Mock Data
### Current mock agents (from backend):
### Current mock agents (from backend)
```json
[
@@ -565,18 +565,18 @@ curl http://localhost:7014/agents/agent:sofia/context
## 📝 Notes
### Known Limitations:
### Known Limitations
1. **Mock data only** — agents-service використовує hardcoded mock data (Phase 6 додасть database)
2. **No WebSocket** — статус оновлюється тільки при refetch (Phase 6.5 додасть live updates)
3. **Limited events** — events endpoint пустий (Phase 6 додасть event store)
4. **Basic context** — контекст не повністю інтегрований з memory-orchestrator (Phase 6 покращить)
### Performance:
### Performance
- All API calls cached in React state
- Lazy loading for metrics/context
- Optimistic UI updates for settings
### Accessibility:
### Accessibility
- Semantic HTML
- Keyboard navigation
- ARIA labels (planned)
@@ -619,4 +619,3 @@ curl http://localhost:7014/agents/agent:sofia/context
---
**END OF AGENT HUB SPEC** 🤖

View File

@@ -124,4 +124,3 @@ python3 scripts/update_db_asset_urls.py # реальне оновлення
1. Перевірте що MinIO контейнер працює: `docker ps | grep minio`
2. Перевірте що MinIO слухає на 9000: `curl http://localhost:9000/minio/health/live`
3. Перевірте bucket: `docker exec daarion-minio mc ls local/daarion-assets`

View File

@@ -2,11 +2,13 @@
## Огляд
DAARION використовує **MinIO** (S3-compatible object storage) для зберігання assets (логотипи, банери, аватарки). Для доступу до assets без налаштування DNS для `assets.daarion.space` використовується **Asset Proxy** через `city-service`.
DAARION використовує **MinIO** (S3-compatible object storage) для зберігання assets
(логотипи, банери, аватарки). Для доступу до assets без налаштування DNS для
`assets.daarion.space` використовується **Asset Proxy** через `city-service`.
## Архітектура
```
```text
┌─────────────┐
│ Frontend │ → /api/city/assets/proxy/microdao/logo/...
└─────────────┘
@@ -62,7 +64,7 @@ import { normalizeAssetUrl } from '@/lib/utils/assetUrl';
## Endpoint
### City Service
### City Service ENV
- **Path:** `/city/assets/proxy/{path:path}`
- **Method:** `GET`
@@ -195,4 +197,3 @@ const normalized = normalizeAssetUrl(logoUrl);
- `https://assets.daarion.space/...` → конвертується в `/api/city/assets/proxy/...`
`normalizeAssetUrl` обробляє всі ці випадки автоматично.

View File

@@ -74,7 +74,7 @@ docker exec daarion-minio mc cp logo.png minio/daarion-assets/microdao/logo/{slu
## Структура файлів в MinIO
```
```text
daarion-assets/
├── microdao/
│ ├── logo/

View File

@@ -97,5 +97,3 @@ Gateway & frontend:
With these fixes the auth-service is stable, compatible with matrix-gateway, and
ready for the next milestone (2D City Map + Agent Presence).

View File

@@ -53,13 +53,13 @@ crontab -e
Додати рядок:
```
```cron
0 * * * * /usr/local/bin/backup_daarion.sh >> /var/log/daarion-backup.log 2>&1
```
Або для запуску щодня о 2:00 ночі:
```
```cron
0 2 * * * /usr/local/bin/backup_daarion.sh >> /var/log/daarion-backup.log 2>&1
```
@@ -184,4 +184,3 @@ df -h /var/backups
```bash
find /var/backups/daarion -type f -mtime +7 -delete
```

View File

@@ -73,7 +73,7 @@ last_updated: 2024-11-14
## Структура документації
```
```text
docs/
├── cursor/ # Детальні технічні специфікації
├── tokenomics/ # Токеноміка (канонічний: city-tokenomics.md)
@@ -92,7 +92,6 @@ docs/
Завжди вказуй канонічні документи:
> Використовуй `docs/tokenomics/city-tokenomics.md` як єдине актуальне джерело токеноміки.
> Використовуй `docs/cursor/50_daarion_city_website_integration.md` для інтеграції з сайтом.
### При оновленні документації
@@ -137,5 +136,3 @@ docs/
---
**Останнє оновлення:** 2024-11-14

View File

@@ -35,7 +35,7 @@ DAARWIZZ is an intelligent agent that:
## 📋 System Prompt
DAARWIZZ's behavior is defined by its system prompt located at:
```
```text
gateway-bot/daarwizz_prompt.txt
```
@@ -52,7 +52,7 @@ gateway-bot/daarwizz_prompt.txt
### Message Flow
```
```text
User (Telegram)
↓ "Привіт! Що це за DAO?"
Gateway (:9300)
@@ -111,11 +111,11 @@ def _get_system_prompt(self, req: RouterRequest) -> Optional[str]:
context = req.payload.get("context") or {}
if "system_prompt" in context:
return context["system_prompt"]
# 2. Agent-specific fallback
if req.agent == "daarwizz":
return "Ти — DAARWIZZ, AI-агент DAARION.city..."
return None
```
@@ -139,9 +139,9 @@ ENV DAARWIZZ_PROMPT_PATH=/app/gateway-bot/daarwizz_prompt.txt
**User**: `Привіт! Хто ти?`
**DAARWIZZ**:
```
Привіт! Я — DAARWIZZ, AI-агент екосистеми DAARION.city.
**DAARWIZZ**:
```text
Привіт! Я — DAARWIZZ, AI-агент екосистеми DAARION.city.
Я допомагаю учасникам розібратися з:
• microDAO та їх структурою
@@ -157,7 +157,7 @@ ENV DAARWIZZ_PROMPT_PATH=/app/gateway-bot/daarwizz_prompt.txt
**User**: `Які у мене права в цьому DAO?`
**DAARWIZZ** (with RBAC context):
```
```text
У greenfood-dao ти маєш роль: member
Твої права (entitlements):
@@ -174,7 +174,7 @@ ENV DAARWIZZ_PROMPT_PATH=/app/gateway-bot/daarwizz_prompt.txt
**User**: `Як розпочати роботу в DAO?`
**DAARWIZZ**:
```
```text
Ласкаво просимо! Ось кроки для старту:
1. Ознайомся з документацією DAO (команда /docs)
@@ -255,7 +255,7 @@ curl -X POST http://localhost:9300/telegram/webhook \
### Expected Log Output
```
```text
gateway | INFO: DAARWIZZ system prompt loaded (1243 chars)
gateway | INFO: Telegram message from testuser (tg:12345): Привіт! Хто ти?
gateway | INFO: Sending to Router: agent=daarwizz, dao=greenfood-dao
@@ -336,7 +336,7 @@ curl http://localhost:9300/health
---
**Version**: 0.2.0
**Agent**: DAARWIZZ
**Status**: Production-ready ✅
**Version**: 0.2.0
**Agent**: DAARWIZZ
**Status**: Production-ready ✅
**Last Updated**: 2024-11-15

View File

@@ -113,4 +113,3 @@ crontab -l | grep monitor
- Чи працює cron job
- Чи є актуальні бекапи
- Чи є проблеми з volume персистентністю

View File

@@ -68,4 +68,3 @@ python3 scripts/sync-node2-dagi-agents.py
- **SEED_RECOVERY.md** - аварійне відновлення
- **INFRA_ASSETS_MINIO.md** - налаштування MinIO
- **TASK_PHASE_DATABASE_HARDENING_AND_ASSETS_MIGRATION_v1.md** - повний таск

View File

@@ -6,7 +6,9 @@
## Причини
1. **Міграції не застосовуються автоматично**: `/docker-entrypoint-initdb.d` виконується тільки при першому створенні БД (коли volume порожній). При перезапуску контейнера міграції не застосовуються.
1. **Міграції не застосовуються автоматично**:
`/docker-entrypoint-initdb.d` виконується тільки при першому створенні БД
(коли volume порожній). При перезапуску контейнера міграції не застосовуються.
2. **Конфлікт контейнерів**: Старий `dagi-postgres` контейнер міг конфліктувати з новим `daarion-postgres`.
@@ -116,4 +118,3 @@ tail -f /var/log/db-health-check.log
1. Налаштувати cron для автоматичної перевірки
2. Додати алерти при виявленні проблем
3. Розглянути використання PostgreSQL replication для високої доступності

View File

@@ -67,4 +67,3 @@ crontab -l | grep db-health-check
2. Додати алерти при виявленні проблем (наприклад, через email або Telegram)
3. Налаштувати моніторинг розміру volume та попереджати при нестачі місця
4. Розглянути використання managed PostgreSQL (наприклад, AWS RDS) для production

View File

@@ -40,7 +40,7 @@ docker compose -f docker-compose.db.yml up -d db
docker compose -f docker-compose.web.yml up -d city-service web
```
### Крок 4: Перевірити
### Крок 4: Верифікувати після аварійного відновлення
```bash
# Перевірити що база працює
@@ -135,4 +135,3 @@ docker compose -f docker-compose.db.yml restart db
# Перевірити права на файл бекапу
chmod 644 db_backups/daarion_*.sql
```

View File

@@ -112,4 +112,3 @@ bash scripts/monitor-db-stability.sh
- ✅ PostgreSQL конфігурацію покращено
- ✅ Автоматичне відновлення працює
- ✅ Логи зберігаються в `/var/log/db-stability-monitor.log`

View File

@@ -383,6 +383,6 @@ server {
## 📞 Support
- Documentation: https://docs.daarion.city
- Issues: https://github.com/daarion/dagi-stack/issues
- Discord: https://discord.gg/daarion
- Documentation: [docs.daarion.city](https://docs.daarion.city)
- Issues: [github.com/daarion/dagi-stack/issues](https://github.com/daarion/dagi-stack/issues)
- Discord: [discord.gg/daarion](https://discord.gg/daarion)

View File

@@ -10,7 +10,7 @@
DAARION uses a **microservices architecture** with a single **NGINX gateway** as the entry point.
```
```text
┌─────────────────┐
│ Internet │
└────────┬────────┘
@@ -139,9 +139,9 @@ This will:
### 3. Access
- **Frontend:** http://localhost
- **API:** http://localhost/api/
- **Health:** http://localhost/health
- **Frontend:** [http://localhost](http://localhost)
- **API:** [http://localhost/api/](http://localhost/api/)
- **Health:** [http://localhost/health](http://localhost/health)
### 4. Stop Services
@@ -153,7 +153,7 @@ This will:
## 📁 Project Structure
```
```text
daarion/
├── docker-compose.all.yml # All-in-one compose
├── Dockerfile.frontend # Frontend build
@@ -210,7 +210,7 @@ docker-compose -f docker-compose.all.yml logs -f living-map-service
### Health Checks
- **Gateway:** http://localhost/health
- **Gateway:** [http://localhost/health](http://localhost/health)
- **Individual services:** Health checks in docker-compose
### Metrics
@@ -328,4 +328,3 @@ See [DEPLOY_ON_SERVER.md](./DEPLOY_ON_SERVER.md) for:
---
**🎉 DAARION — Unified Gateway Ready!**

View File

@@ -157,16 +157,16 @@ pytest tests/test_infra_smoke.py -v --base-url http://localhost:7001
## 🌐 КРОК 5: Перевірка в браузері
1. **Node Directory:** https://daarion.space/nodes
1. **Node Directory:** [daarion.space/nodes](https://daarion.space/nodes)
- Повинні відображатися NODE1 і NODE2
- Без "Помилка завантаження нод"
2. **Node Cabinet:** https://daarion.space/nodes/node-1-hetzner-gex44
2. **Node Cabinet:** [daarion.space/nodes/node-1-hetzner-gex44](https://daarion.space/nodes/node-1-hetzner-gex44)
- Метрики CPU/GPU/RAM/Disk
- DAGI Router Card
- Guardian/Steward агенти
3. **Agents:** https://daarion.space/agents
3. **Agents:** [daarion.space/agents](https://daarion.space/agents)
- System Prompts для агентів
---
@@ -190,7 +190,6 @@ NODE_ENVIRONMENT=development \
NODE_ROLES=development,gpu,ai_runtime,testing \
./scripts/node-bootstrap.sh
```
---
## ❌ Rollback (якщо щось пішло не так)
@@ -241,4 +240,3 @@ docker exec -it daarion-postgres psql -U daarion_user -d daarion -c "SELECT node
# Якщо порожньо — запустити bootstrap
./scripts/node-bootstrap.sh
```

View File

@@ -8,7 +8,7 @@
## 📋 Обов'язкові DNS записи
### 1. Головний домен (Landing / Redirect)
```
```text
Type: A
Name: @
Value: <SERVER_IP_ADDRESS>
@@ -20,7 +20,7 @@ TTL: 3600
---
### 2. Application субдомен (MVP Product)
```
```text
Type: A
Name: app
Value: <SERVER_IP_ADDRESS>
@@ -34,7 +34,7 @@ TTL: 3600
## 📋 Опціональні DNS записи
### 3. Grafana моніторинг
```
```text
Type: A
Name: grafana
Value: <SERVER_IP_ADDRESS>
@@ -48,7 +48,7 @@ TTL: 3600
---
### 4. API субдомен (майбутнє)
```
```text
Type: A
Name: api
Value: <SERVER_IP_ADDRESS>
@@ -62,7 +62,7 @@ TTL: 3600
---
### 5. Matrix субдомен (Phase 4+)
```
```text
Type: A
Name: matrix
Value: <SERVER_IP_ADDRESS>
@@ -231,4 +231,3 @@ done
**Статус:** ✅ DNS Setup Guide Complete
**Версія:** 1.0.0
**Дата:** 24 листопада 2025

View File

@@ -335,13 +335,13 @@ rm daarion-secrets-*.tar.gz
## 🔄 Rotation Policy
### Регулярно змінювати:
### Регулярно змінювати
- **JWT_SECRET**: кожні 90 днів
- **Database passwords**: кожні 90 днів
- **Redis password**: кожні 90 днів
- **Grafana admin password**: кожні 30 днів
### Процедура rotation:
### Процедура rotation
1. Згенерувати новий секрет
2. Оновити `.env` файл
3. Перезапустити affected services:
@@ -421,4 +421,3 @@ file .env
**Статус:** ✅ ENV Configuration Guide Complete
**Версія:** 1.0.0
**Дата:** 24 листопада 2025

View File

@@ -133,7 +133,7 @@ INSERT INTO city_rooms (id, slug, name, ...) VALUES (...)
ON CONFLICT (id) DO NOTHING;
```
### Re-apply конкретної міграції:
### Re-apply конкретної міграції
```bash
# Якщо потрібно перезастосувати (тільки якщо idempotent!)
docker compose -f docker-compose.all.yml exec -T postgres \
@@ -204,14 +204,14 @@ chmod +x scripts/migrate.sh
## 🔙 Rollback Strategy
### Створення rollback файлів (для майбутнього):
### Створення rollback файлів (для майбутнього)
```text
migrations/
├── 010_create_city_backend.sql
└── 010_create_city_backend_rollback.sql
```
### Приклад rollback:
### Приклад rollback
```sql
-- 010_create_city_backend_rollback.sql
DROP TABLE IF EXISTS secondme_messages CASCADE;
@@ -231,7 +231,7 @@ docker compose -f docker-compose.all.yml exec -T postgres \
## 🧪 Testing міграцій
### Pre-deployment testing (на dev environment):
### Pre-deployment testing (на dev environment)
```bash
# 1. Backup поточної БД
docker compose -f docker-compose.all.yml exec postgres \
@@ -349,4 +349,3 @@ docker compose -f docker-compose.all.yml exec postgres \
**Статус:** ✅ Migrations Guide Complete
**Версія:** 1.0.0
**Дата:** 24 листопада 2025

View File

@@ -170,4 +170,3 @@ networks:
---
**Last updated:** 2025-11-29

View File

@@ -600,4 +600,3 @@ proxy_cache_valid 200 5m;
---
**🎉 DAARION — Production Ready!**

View File

@@ -416,9 +416,9 @@ docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
Записати всі знайдені проблеми:
1. _____________________________
2. _____________________________
3. _____________________________
1. [ ] _____________________________
2. [ ] _____________________________
3. [ ] _____________________________
---
@@ -440,4 +440,3 @@ docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
**Виконано:** _______________ (дата/час)
**Виконавець:** _______________ (ім'я)
**Версія:** 1.0.0

View File

@@ -386,4 +386,3 @@ app.daarion.space {
**Статус:** ✅ SSL/HTTPS Setup Guide Complete
**Версія:** 1.0.0
**Дата:** 24 листопада 2025

View File

@@ -1,15 +1,15 @@
# Фінальний звіт: Синхронізація агентів, інструменти пошуку та дашборд
**Дата:** 2025-11-21
**Дашборд:** http://localhost:8889 (monitoring/local_monitor.py)
**Дашборд:** <http://localhost:8889> (monitoring/local_monitor.py)
---
## 🔍 Інструменти пошуку - ЗНАЙДЕНО!
## 🔍 Інструменти пошуку - ЗНАЙДЕНО
### ✅ Встановлені інструменти пошуку
**1. Web Search Tool (GREENFOOD Agents)**
#### 1. Web Search Tool (GREENFOOD Agents)
- **Файл:** `services/greenfood/crew/tools/crawl4ai_tool.py`
- **Інструменти:**
- `web_search_tool` - Пошук в інтернеті через Crawl4AI
@@ -23,7 +23,7 @@
- Підтримка Playwright для JavaScript сайтів
- **Статус:** ✅ Налаштовано для GREENFOOD агентів
**2. Parser Service (Crawl4AI)**
#### 2. Parser Service (Crawl4AI)
- **Порт:** 9400
- **Container:** `dagi-parser-service`
- **Статус:** ✅ Працює
@@ -205,6 +205,3 @@ python3 -m uvicorn monitoring.local_monitor:app --host 0.0.0.0 --port 8889
**Останнє оновлення:** 2025-11-21
**Статус:** ✅ Аналіз завершено, інтеграція додана, потрібно запустити дашборд

View File

@@ -26,7 +26,7 @@
**Результат**: Боти читають PDF файли та відповідають на питання про них!
**Приклад**:
```
```text
Ти → 📄 whitepaper.pdf
Бот → ✅ Документ 'whitepaper.pdf' оброблено.
[Перші 500 символів тексту]...
@@ -47,7 +47,7 @@
**Результат**: Боти відповідають голосом на голосові повідомлення!
**Приклад**:
```
```text
Ти → 🎤 [Голосове] "Привіт, як справи?"
Бот → 🔊 [Голосове відповідь] "Привіт! У мене все добре..."
```
@@ -74,14 +74,14 @@
6. Voice Responses (1h)
7. Documents Processed (1h)
**Доступ**: http://144.76.224.179:3000
**Доступ**: [http://144.76.224.179:3000](http://144.76.224.179:3000)
**Login**: admin / admin
---
## 📊 Статистика змін
### Файли створені:
### Файли створені
1. `/telegram-gateway/app/voice_handler.py` - обробка voice та document
2. `/monitoring/grafana/dashboards/daarion_services_overview.json`
3. `/monitoring/grafana/dashboards/telegram_bots.json`
@@ -89,7 +89,7 @@
5. `/docs/testing/VOICE_PHOTO_READY.md`
6. `/docs/FINAL_INTEGRATION_SUMMARY.md`
### Файли оновлені:
### Файли оновлені
1. `/telegram-gateway/app/telegram_listener.py`:
- Додано `send_voice()` метод (+40 рядків)
- Додано handlers для voice, document, photo
@@ -129,7 +129,7 @@
3. (Поки що заглушка - чекаємо multimodal LLM)
### Моніторинг 📊
1. Відкрити http://144.76.224.179:3000
1. Відкрити [http://144.76.224.179:3000](http://144.76.224.179:3000)
2. Login: admin / admin
3. Вибрати Dashboard:
- "DAARION Services Overview" - загальний моніторинг
@@ -139,21 +139,21 @@
## 🐛 Відомі обмеження
### Vision Encoder:
### Vision Encoder
- ⚠️ Поточний Vision Encoder робить тільки **embeddings** (векторизацію)
- ⚠️ Для опису зображень потрібен **multimodal LLM** (GPT-4V, Claude Vision, LLaVA)
- 💡 **Рішення**: Інтегрувати OpenAI GPT-4V або Claude 3 Vision API
### Parser Service:
### Parser Service
- ⚠️ Обмеження на розмір PDF (зазвичай < 50 MB)
- ⚠️ Для дуже великих документів потрібен chunking
### TTS:
### TTS
- ⚠️ Відповіді обмежені до 500 символів (gTTS обмеження)
- ⚠️ Для довших відповідей треба streaming TTS або chunking
- 💡 **Рішення**: Додати більш потужний TTS (Coqui TTS, ElevenLabs API)
### Grafana:
### Grafana
- ⚠️ Деякі метрики можуть бути порожні якщо endpoints ще не викликалися
- ⚠️ `/metrics` endpoint відсутній в деяких сервісах (STT, TTS, Parser)
@@ -161,35 +161,35 @@
## 🎯 Наступні кроки (опційно)
### Priority 🔴 HIGH:
1. **Multimodal LLM для Vision**:
### Priority 🔴 HIGH
1. **Multimodal LLM для Vision**
- Інтегрувати GPT-4V або Claude 3 Vision
- Додати endpoint `/analyze` в vision service
- Тестування з різними типами зображень
2. **Додати /metrics до всіх сервісів**:
2. **Додати /metrics до всіх сервісів**
- STT: додати prometheus_client
- TTS: додати prometheus_client
- Parser: додати prometheus_client
### Priority 🟡 MEDIUM:
3. **RAG Integration для документів**:
### Priority 🟡 MEDIUM
3. **RAG Integration для документів**
- Інгест PDF в RAG після парсингу
- Підтримка follow-up питань з контекстом
- Зберігання історії документів
4. **Streaming TTS**:
4. **Streaming TTS**
- Замінити gTTS на Coqui TTS або ElevenLabs
- Підтримка довших відповідей
- Кращ качість голосу
### Priority 🟢 LOW:
5. **Grafana Alerts**:
### Priority 🟢 LOW
5. **Grafana Alerts**
- Налаштувати Alertmanager
- Email/Telegram notifications
- Custom alert rules
6. **Extended Monitoring**:
6. **Extended Monitoring**
- Додати більше custom metrics
- User analytics (кількість користувачів, активність)
- LLM usage tracking (tokens, cost)
@@ -236,7 +236,7 @@
## 🏆 Підсумок
### Що працює:
### Що працює
- ✅ Голосові повідомлення (STT) → Бот
- ✅ Бот → Голосові відповіді (TTS)
- ✅ PDF парсинг та Q&A
@@ -246,12 +246,12 @@
- ✅ 3 боти (DAARWIZZ, Helion, GREENFOOD)
- ✅ Автоматичне визначення reply_mode (voice/text)
### Готовність:
### Готовність
- 🟢 **Production Ready**: Voice, TTS, Parser, Monitoring
- 🟡 **Partial Ready**: Vision (потрібен multimodal LLM)
- 🔴 **Not Ready**: RAG integration, Advanced alerts
### Технічний стек:
### Технічний стек
- **Backend**: Python 3.11, FastAPI, asyncio, httpx
- **Telegram**: aiogram 3.x, Local Telegram Bot API
- **AI/ML**: Whisper (STT), gTTS (TTS), DotsOCR (Parser), DAGI Router
@@ -282,4 +282,3 @@
*Автор: Assistant (via Cursor)*
*Версія: 1.0*
*Тривалість імплементації: ~2 години*

View File

@@ -101,7 +101,7 @@ curl http://localhost:9300/health
Відкрийте свого бота в Telegram і надішліть повідомлення:
```
```text
Привіт! Що таке EcoMiner?
```
@@ -110,25 +110,25 @@ Helion має відповісти з технічними деталями пр
## 🧪 Тестові запити
### Для інвесторів
```
```text
Який ROI від EcoMiner?
Які ризики інвестування в ENERGY токен?
```
### Для інженерів
```
```text
Які технічні характеристики EcoMiner SES-77?
Як працює когенерація в системі?
```
### Для новачків
```
```text
Що таке Energy Union?
Як почати користуватися платформою?
```
### Для DAO учасників
```
```text
Як працює голосування в DAO?
Які є ролі учасників?
```
@@ -244,7 +244,7 @@ docker-compose up -d memory-service
## 📚 Архітектура
```
```text
User (Telegram)
Telegram Bot API (webhook)

View File

@@ -1,6 +1,6 @@
# DAARION Documentation Index
**Quick navigation for all documentation**
## Quick navigation for all documentation
---

View File

@@ -18,7 +18,7 @@ DAARION використовує **MinIO** (S3-compatible object storage) для
## 1. Архітектура
```
```text
┌─────────────┐
│ Frontend │ → https://assets.daarion.space/daarion-assets/...
└─────────────┘
@@ -125,7 +125,7 @@ docker compose -f docker-compose.db.yml up -d minio
### A/AAAA записи
```
```text
assets.daarion.space → IP NODE1 (для публічного доступу)
minio.daarion.space → IP NODE1 (опційно, для консолі)
```
@@ -214,7 +214,7 @@ http {
Після завантаження файлу через API, в БД зберігається повний HTTPS URL:
```
```text
https://assets.daarion.space/daarion-assets/microdao/logo/2025/12/02/abc123def456.png
```
@@ -386,4 +386,3 @@ mc replicate add local/daarion-assets --remote-bucket s3/daarion-assets-backup
- [ ] Backend використовує `assets_client.py`
- [ ] Frontend відображає assets з HTTPS URLs
- [ ] Тестовий upload працює

View File

@@ -42,7 +42,7 @@ npm run dev
### Scenario 1: Basic Messaging (DAARION UI)
**Steps:**
1. Navigate to http://localhost:8899/messenger
1. Navigate to [http://localhost:8899/messenger](http://localhost:8899/messenger)
2. You should see the Messenger page with channel list
3. Select the "#general" channel
4. Type a message: "Hello DAARION!"
@@ -71,11 +71,11 @@ npm run dev
### Scenario 3: Element Compatibility
**Prerequisite:** Install Element Desktop or use Element Web (https://app.element.io)
**Prerequisite:** Install Element Desktop or use Element Web ([https://app.element.io](https://app.element.io))
**Steps:**
1. Login to Element with Matrix credentials:
- Homeserver: http://localhost:8008
- Homeserver: [http://localhost:8008](http://localhost:8008)
- Username: @admin:daarion.city
- Password: (use Matrix admin password)
@@ -402,19 +402,3 @@ VALUES (gen_random_uuid(), '<channel-id>', 'agent:sofia', 'agent', '@sofia-agent
**Version:** 1.0.0
**Last Updated:** 2025-11-24
**Maintainer:** DAARION Platform Team

View File

@@ -29,19 +29,3 @@
3. Якщо потрібен vision fallback, перевірити Swapper/vision-encoder сервіси.
> Якщо чат стартує з нуля, достатньо скопіювати цей блок у промт агента, щоб він миттєво зрозумів поточний стан системи.

View File

@@ -7,7 +7,7 @@
## Схема потоку (спрощена)
```
```text
TELEGRAM → GATEWAY:9300 → ROUTER:9102 → LLM (Ollama/Swapper)
↓ ↓
Memory:8000 CrewAI (за потреби)
@@ -32,13 +32,19 @@ TELEGRAM → GATEWAY:9300 → ROUTER:9102 → LLM (Ollama/Swapper)
| RAG | 9500 | `/health` |
| Swapper | 8890 | `/health` |
Контейнери: `dagi-gateway-node1`, `dagi-staging-router` (або `dagi-router-node1`), `dagi-memory-service-node1`, `dagi-qdrant-node1` тощо. Якщо Router на ноді називається `dagi-staging-router`, у `.env` на сервері задати `ROUTER_URL=http://dagi-staging-router:8000` для Gateway.
Контейнери: `dagi-gateway-node1`, `dagi-staging-router` (або `dagi-router-node1`),
`dagi-memory-service-node1`, `dagi-qdrant-node1` тощо.
Якщо Router на ноді називається `dagi-staging-router`, у `.env` на сервері
задати `ROUTER_URL=http://dagi-staging-router:8000` для Gateway.
---
## Реєстр агентів (Gateway)
У `gateway-bot/http_api.py`**AGENT_REGISTRY**: daarwizz, helion, greenfood, agromatrix, alateya, nutra, druid, clan, eonarch. Кожен агент має webhook `/{agent_id}/telegram/webhook`, prompt-файл і env з Telegram-токеном.
У `gateway-bot/http_api.py`**AGENT_REGISTRY**: daarwizz, helion, greenfood,
agromatrix, alateya, nutra, druid, clan, eonarch.
Кожен агент має webhook `/{agent_id}/telegram/webhook`, prompt-файл і env
з Telegram-токеном.
---

View File

@@ -489,7 +489,7 @@
## ⚠️ КРИТИЧНА ПРОБЛЕМА: Vision Crew
### 4 агенти ЗАБЛОКОВАНІ через відсутність vision-моделей:
### 4 агенти ЗАБЛОКОВАНІ через відсутність vision-моделей
1. **Iris** — Image Analyzer
2. **Lumen** — Visual Content Creator
@@ -669,4 +669,3 @@ docker restart dagi-router
---
*Документ створено під час повної діагностики агентів NODE2.*

View File

@@ -7,7 +7,7 @@
## ✅ 1. Моделі — ВСІ ЗБЕРЕЖЕНІ (Ollama)
### 📦 8 моделей в Ollama (загалом ~118 GB):
### 📦 8 моделей в Ollama (загалом ~118 GB)
| Модель | Розмір | Параметри | Тип | Статус |
|--------|--------|-----------|------|--------|
@@ -24,7 +24,7 @@
---
### ❌ Видалено з `models/` (не Ollama):
### ❌ Видалено з `models/` (не Ollama)
- **qwen3-vl-32b-instruct** (~130 GB) — vision-модель для мультимодальності
- 65.5 GB `.gguf` файл
@@ -33,7 +33,7 @@
**Проблема:** Немає vision-моделей для мультимодальних запитів!
**Рішення:**
**Рішення:**
1. Завантажити `llava:13b` через Ollama (~13 GB)
2. АБО відновити Qwen3-VL з HuggingFace (якщо потрібен кастомний inference)
@@ -77,7 +77,7 @@ curl http://localhost:9102/health
## ✅ 4. DAGI Stack — Частково ПРАЦЮЄ
### Запущені сервіси:
### Запущені сервіси
| Сервіс | Статус | Порт | Призначення |
|--------|--------|------|-------------|
@@ -91,7 +91,7 @@ curl http://localhost:9102/health
---
### 🤖 12 CrewAI Агентів (4 Workflows):
### 🤖 12 CrewAI Агентів (4 Workflows)
#### 1. **Onboarding Workflow** (3 агенти)
- `welcomer` — вітання нових користувачів
@@ -123,7 +123,7 @@ curl http://localhost:9010/workflow/list
## ⚠️ 5. Мультимодальні сервіси — ЧАСТКОВО
### ✅ Працюють:
### ✅ Працюють
| Сервіс | Порт | Статус | Призначення |
|--------|------|--------|-------------|
@@ -132,7 +132,7 @@ curl http://localhost:9010/workflow/list
| **Agent Cabinet** | 8898 | ✅ Healthy | Управління агентами |
| **MeiliSearch** | 7700 | ✅ Running | Текстовий пошук |
### ❌ НЕ працюють:
### ❌ НЕ працюють
| Сервіс | Порт | Статус | Причина |
|--------|------|--------|---------|
@@ -145,19 +145,19 @@ curl http://localhost:9010/workflow/list
## 📊 6. Інфраструктура NODE2
### Ресурси:
### Ресурси
- **CPU:** Apple M4 Max (40-core GPU)
- **RAM:** 64 GB
- **VRAM:** 48 GB (GPU)
- **Диск:** ~500 GB вільно (після cleanup)
### Docker мережа:
### Docker мережа
- `dagi-network` — всі DAGI сервіси
- Bridge для комунікації між контейнерами
### Ollama:
### Ollama
- **Версія:** Latest
- **URL:** http://localhost:11434
- **URL:** [http://localhost:11434](http://localhost:11434)
- **Models dir:** `/Users/apple/.ollama/models`
---
@@ -258,14 +258,14 @@ POST http://localhost:9010/workflow/execute
## ✅ 9. ПІДСУМОК
### Готово:
### Готово
-**8 LLM-моделей збережені** в Ollama (включно з DeepSeek 70B)
-**Swapper Service запущено** на NODE2 (порт 8890)
-**DAGI Router працює** (порт 9102)
-**12 CrewAI агентів готові** до інтеграції
-**Web Search + Vector DB працюють**
### Потрібно:
### Потрібно
- ⚠️ **Відновити vision-модель** (LLaVA або Qwen3-VL)
- ⚠️ **Запустити STT/OCR** (для voice/photo)
- ⚠️ **Підключити Swapper до Router** (NODE2 → NODE1)
@@ -280,4 +280,3 @@ POST http://localhost:9010/workflow/execute
---
*Документ створено автоматично під час діагностики NODE2 після git cleanup операції.*

View File

@@ -104,7 +104,7 @@ launchctl list | grep node-guardian
## Крок 4: Перевірка роботи
### Перевірити логи:
### Перевірити логи
```bash
# Якщо запущено через nohup
@@ -114,13 +114,13 @@ tail -f /tmp/node-guardian.log
tail -f /tmp/node-guardian.log /tmp/node-guardian-error.log
```
### Перевірити в БД (на сервері):
### Перевірити в БД (на сервері)
```bash
ssh root@144.76.224.179 "docker exec daarion-postgres psql -U postgres -d daarion -c \"SELECT node_id, swapper_healthy, swapper_models_total, router_healthy, last_heartbeat FROM node_cache WHERE node_id = 'node-2-macbook-m4max';\""
```
### Перевірити в UI:
### Перевірити в UI
Відкрийте `https://daarion.space/nodes/node/node-2-macbook-m4max` та перевірте:
- Swapper Service показує моделі ✅
@@ -175,4 +175,3 @@ ssh root@144.76.224.179 "docker exec daarion-postgres psql -U postgres -d daario
```bash
./scripts/setup-node2-agents.sh
```

View File

@@ -31,7 +31,7 @@ GUARDIAN_INTERVAL=60
### 2. Запуск Node Guardian
#### Як фонове завдання (рекомендовано):
#### Як фонове завдання (рекомендовано)
```bash
# Створити systemd service
@@ -67,7 +67,7 @@ sudo systemctl start node-guardian
sudo systemctl status node-guardian
```
#### Або вручну:
#### Або вручну
```bash
cd /path/to/microdao-daarion
@@ -76,7 +76,7 @@ python3 scripts/node-guardian-loop.py
### 3. Перевірка роботи
#### Перевірити логи:
#### Перевірити логи
```bash
# Якщо systemd service
@@ -85,7 +85,7 @@ sudo journalctl -u node-guardian -f
# Або якщо запущено вручну - дивитись stdout
```
#### Перевірити в БД:
#### Перевірити в БД
```sql
-- Перевірити чи оновлюються метрики для НОДА2
@@ -104,7 +104,7 @@ ORDER BY updated_at DESC
LIMIT 1;
```
#### Перевірити Swapper State:
#### Перевірити Swapper State
```sql
SELECT
@@ -167,7 +167,7 @@ WHERE node_id = 'node-2-macbook-m4max'
На НОДА1 guardian зазвичай запускається автоматично через docker-compose або systemd.
### ENV змінні для НОДА1:
### ENV змінні для НОДА1
```bash
NODE_ID=node-1-hetzner-gex44
@@ -182,7 +182,7 @@ CITY_SERVICE_URL=https://daarion.space/api/city
## Архітектура
```
```text
┌─────────────────┐
│ Node Guardian │ (на кожній ноді)
│ (loop script) │
@@ -214,9 +214,14 @@ CITY_SERVICE_URL=https://daarion.space/api/city
## Важливі моменти
1. **Один Router/Swapper для всіх нод у проді**: На НОДА1 є один DAGI Router та один Swapper Service, які обслуговують всі ноди. Guardian на кожній ноді просто збирає метрики та пушить їх в БД з правильним `node_id`.
1. **Один Router/Swapper для всіх нод у проді**:
На НОДА1 є один DAGI Router та один Swapper Service, які обслуговують всі ноди.
Guardian на кожній ноді просто збирає метрики та пушить їх в БД
з правильним `node_id`.
2. **ENV змінні мають пріоритет**: Guardian використовує `NODE_SWAPPER_URL` та `NODE_ROUTER_URL` з ENV, якщо вони встановлені. Це дозволяє для НОДА2 використовувати `localhost`, а для НОДА1 - Docker service names.
2. **ENV змінні мають пріоритет**:
Guardian використовує `NODE_SWAPPER_URL` та `NODE_ROUTER_URL` з ENV,
якщо вони встановлені. Це дозволяє для НОДА2 використовувати `localhost`,
а для НОДА1 - Docker service names.
3. **Heartbeat оновлює node_cache**: Кожен heartbeat оновлює метрики в `node_cache` для конкретного `node_id`, тому дані не перетираються між нодами.

View File

@@ -340,4 +340,3 @@ Returns aggregated dashboard data for the current node.
## Changelog
- **v1.0.0** (2025-11-28): Initial standard based on NODE1/NODE2 audit

View File

@@ -204,22 +204,21 @@ grafana:
## 6. Корисні запити для аналізу
**Hit Rate (кількість успішних запитів з результатами):**
```
```promql
(rag_query_total - rag_query_empty_results_total) / rag_query_total
```
**Average Documents per Query:**
```
```promql
avg(rag_query_documents_retrieved)
```
**DAO Distribution:**
```
```promql
sum by (dao_id) (rag_query_dao_filter_applied)
```
**Token Usage:**
```
```promql
avg(router_rag_query_prompt_tokens_estimated)
```

View File

@@ -36,8 +36,14 @@ DAGI Router, DevTools Agent, CrewAI Orchestrator.
**Категорії:**
- **00-07:** Фундамент (overview, product brief, architecture, API, UI/UX, coding standards, tasks, testing)
- **08-13:** Агентська система (onboarding, evolutionary agent, UI, LLM, runtime core, memory)
- **14-24:** Модулі та інтерфейс (messenger, projects, follow-ups, co-memory, governance, notifications, integrations, agent-only interface, operator modes, domains/wallet/DAO, agent cards)
- **24-50:** Інфраструктура та сервіси (access keys, deployment, security, database, flows, scaling, cost optimization, governance policies, PDP, API Gateway, service mesh, agent isolation, tools, lifecycle, templates, RWA, AI governance, NATS, outbox, usage, LLM proxy, router, messaging, teams, wallet, website integration)
- **14-24:** Модулі та інтерфейс
(messenger, projects, follow-ups, co-memory, governance, notifications, integrations,
agent-only interface, operator modes, domains/wallet/DAO, agent cards)
- **24-50:** Інфраструктура та сервіси
(access keys, deployment, security, database, flows, scaling, cost optimization,
governance policies, PDP, API Gateway, service mesh, agent isolation, tools, lifecycle,
templates, RWA, AI governance, NATS, outbox, usage, LLM proxy, router, messaging, teams,
wallet, website integration)
**Детальний опис:** `/cursor/README.md`

View File

@@ -21,7 +21,7 @@
4. Monitor знову бачив < 50 агентів → знову DROP → **НЕСКІНЧЕННИЙ ЦИКЛ!**
```
```text
┌─────────────────────────────────────────────────────────────────┐
│ Monitor бачить: Agents=9 (< 50) │
│ ↓ │
@@ -128,4 +128,3 @@ crontab -l
Проблема виникала через логічну помилку в monitor-db-stability.sh.
Виправлено розділенням на два режими: FULL та SOFT recovery.
Тепер DROP DATABASE відбувається тільки при критичній втраті MicroDAOs.

View File

@@ -46,7 +46,7 @@ python3 scripts/seed_full_city_reset.py
```
Очікуваний вивід:
```
```text
🏙️ DAARION City Emergency Recovery
============================================================
@@ -111,7 +111,7 @@ docker exec daarion-postgres psql -U postgres -d daarion -c "
```
Очікуваний результат:
```
```text
slug | name | district | is_platform
--------------+-----------------+----------+-------------
daarion | DAARION DAO | Core | t
@@ -175,13 +175,13 @@ mc cp ./assets/logos/energy-union.png local/daarion-assets/microdao/logo/energy-
## Що відновлюється
### ✅ Відновлюється seed-скриптом:
### ✅ Відновлюється seed-скриптом
- 4 базові MicroDAOs (DAARION, Energy Union, GreenFood, Soul)
- 4 core агентів NODE1 (DAARWIZZ, Helion, GreenFood Bot, Soul Bot)
- Зв'язки агентів з MicroDAOs
### ❌ НЕ відновлюється автоматично:
### ❌ НЕ відновлюється автоматично
- City Rooms (потрібно запустити `scripts/seed_city_rooms.py`)
- DAGI-агенти NODE2 (потрібно запустити `scripts/sync-node2-dagi-agents.py`)
@@ -227,4 +227,3 @@ docker compose -f docker-compose.db.yml up -d db
```bash
docker exec daarion-postgres psql -U postgres -d daarion -c "SELECT slug, logo_url FROM microdao;"
```

111
docs/SESSION_STARTER.md Normal file
View File

@@ -0,0 +1,111 @@
# SESSION STARTER (Documentation + Runtime Truth)
Date: 2026-02-16
Purpose: single context file to start any new session without losing architectural state.
## Canonical Repo
- Main working repo: `/Users/apple/github-projects/microdao-daarion`
- Runtime on NODE1: `/opt/microdao-daarion`
Important: keep docs and runtime aligned via explicit drift checks, not assumptions.
## Core Entry Documents
1. `PROJECT-MASTER-INDEX.md` (entry point to docs map)
2. `config/README.md` (how to add/modify agents)
3. `docs/NODA1-AGENT-ARCHITECTURE.md` (node1 architecture and agent wiring)
4. `NODA1-SAFE-DEPLOY.md` (safe deployment flow)
5. `docs/consolidation/README.md` (docs hub)
6. `docs/consolidation/docs_registry_curated.csv` (curated doc truth table)
## Session Bootstrap (Services + Docs)
0. Preflight (must pass before any task):
```bash
bash scripts/session/preflight.sh --expected-root /Users/apple/github-projects/microdao-daarion
```
1. Run integrations bootstrap report:
```bash
bash scripts/docs/session_bootstrap.sh
```
Output:
- `docs/consolidation/INTEGRATIONS_STATUS_LATEST.md`
- `docs/consolidation/INTEGRATIONS_STATUS_<timestamp>.md`
2. Dry-run docs sync to remotes:
```bash
bash scripts/docs/docs_sync.sh --dry-run
```
3. Apply docs sync (only after review):
```bash
bash scripts/docs/docs_sync.sh --apply --targets github,gitea
```
4. Service adapters (Jupyter + Pieces):
```bash
bash scripts/docs/services_sync.sh --dry-run
# apply mode:
bash scripts/docs/services_sync.sh --apply
```
5. Docs lint and standards:
```bash
bash scripts/docs/docs_lint.sh
```
6. Docs backup (explicit run):
```bash
bash scripts/docs/docs_backup.sh --dry-run
bash scripts/docs/docs_backup.sh --apply
```
7. Local scheduler (daily, no auto-push):
```bash
bash scripts/docs/install_local_cron.sh --schedule "17 9 * * *"
```
## Runtime-First Facts (must re-check each session)
1. NODE1 branch/SHA:
```bash
ssh root@<NODE1> "cd /opt/microdao-daarion && git rev-parse --abbrev-ref HEAD && git rev-parse HEAD"
```
2. Core health:
```bash
curl -sS http://127.0.0.1:9102/health
curl -sS http://127.0.0.1:9300/health
```
3. Canary suite:
```bash
cd /opt/microdao-daarion
./ops/canary_all.sh
./ops/canary_senpai_osr_guard.sh
```
4. Router endpoint contract:
- Active: `POST /v1/agents/{agent_id}/infer`
- Not active: `POST /route` (returns 404 on current runtime)
## NODE3/NODE4 Policy
- NODE3 and NODE4 remain part of target architecture.
- If currently unreachable, mark as `DEGRADED` (not removed).
- Re-enable dependent flows only after connectivity + health checks pass.
## Documentation Status Model
- `new-canonical`: active docs in canonical repo.
- `runtime-fact`: docs/snapshots that reflect current live runtime behavior.
- `legacy-worktree`: old but useful strategic docs in `.worktrees/*`.
- `legacy-desktop`: docs from old Desktop repo (`MicroDAO 3`).
- `needs-triage`: unresolved status.
## Governance Rule
No deployment/reconfiguration based only on docs text.
Always confirm against live runtime facts (health, canary, config hashes, active endpoints).

View File

@@ -1,18 +1,18 @@
# 🎯 Стратегія вибору моделей: API vs Локальні
**Дата**: 2025-11-18
**Дата**: 2025-11-18
**Питання**: Використовувати Dify/API чи завантажувати важкі моделі?
---
## 📊 Поточна ситуація
### Що вже є на сервері:
### Що вже є на сервері
#### 1. **Локальні моделі (Ollama)** ✅
- **qwen3:8b** - вже завантажена (5.2 GB)
- **Використання**: DAGI Router використовує для DAARWIZZ, Helion, GREENFOOD
- **Переваги**:
- **Переваги**:
- ✅ Безкоштовно
- ✅ Приватно (дані не йдуть в OpenAI)
- ✅ Працює офлайн
@@ -23,7 +23,7 @@
#### 2. **Dify Platform** ✅
- **Статус**: Працює, але потребує API ключі
- **OPENAI_API_BASE**: https://api.openai.com/v1
- **OPENAI_API_BASE**: [https://api.openai.com/v1](https://api.openai.com/v1)
- **API Key**: Потрібен (не знайдено в env)
- **Використання**: Може використовувати GPT-4V, Claude Vision через API
@@ -170,7 +170,7 @@ async def _analyze_photo_api(self, image_url: str):
"""Використати GPT-4V через API"""
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
response = openai.ChatCompletion.create(
model="gpt-4-vision-preview",
messages=[{
@@ -187,7 +187,7 @@ async def _analyze_photo_api(self, image_url: str):
---
### **Сценарій 3: Немає GPU + немає бюджету** ⚠️
**Рекомендація**:
**Рекомендація**:
- ⚠️ **НЕ завантажувати важкі Vision моделі** (буде дуже повільно)
- ✅ Використовувати **BLIP-2** (легший, ~1-2 GB)
- АБО залишити заглушку поки не з'явиться GPU/бюджет
@@ -241,5 +241,4 @@ ssh root@144.76.224.179 "docker exec docker-api-1 env | grep OPENAI_API_KEY"
---
*Створено: 2025-11-18*
## Створено: 2025-11-18

View File

@@ -609,4 +609,3 @@ describe('Swapper Service Integration', () => {
**Last Updated:** 2025-11-22
**Maintained by:** Ivan Tytar & DAARION Team
**Status:** ✅ Ready for Integration

View File

@@ -136,9 +136,9 @@
## 📋 Висновок
### Для поточного стеку DAARION:
### Для поточного стеку DAARION
**✅ Swapper Service — оптимальний вибір**
#### ✅ Swapper Service — оптимальний вибір
**Причини:**
1. ✅ Підходить для обмежених ресурсів (Node #2 MacBook)
@@ -167,4 +167,3 @@
**Last Updated:** 2025-11-22
**Decision:** ✅ Swapper Service для поточного стеку
**Future Consideration:** vLLM для production high-throughput use cases

View File

@@ -4,7 +4,7 @@
# Unified Tokenomics for DAARION.city & MicroDAO (Integration-Ready)
*Version: 1.0 — production-ready (LEGACY)*
Version: 1.0 — production-ready (LEGACY)
---

View File

@@ -24,4 +24,3 @@
- [MicroDAO документація](../microdao/README.md)
- [DAARION.city документація](../daarion/README.md)
- [Технічна документація для розробки](../cursor/README.md)

View File

@@ -14,7 +14,7 @@ PARSER — це агент, який перетворює неструктуро
- **Тип:** Image-Text-to-Text VLM (Vision Language Model)
- **Орієнтація:** Документ-орієнтований OCR з layout detection
- **GitHub:** https://github.com/QwenLM/Qwen3-ASR-Toolkit (або відповідний репозиторій)
- **GitHub:** <https://github.com/QwenLM/Qwen3-ASR-Toolkit> (або відповідний репозиторій)
### Ключові можливості моделі
@@ -252,7 +252,7 @@ curl -X POST http://router:9102/route \
## Архітектура сервісу
```
```text
parser-service/
├── main.py # FastAPI сервіс
├── parser_runtime/ # Runtime для dots.ocr
@@ -275,4 +275,3 @@ parser-service/
- [TODO: PARSER + RAG Implementation](../TODO-PARSER-RAG.md)
- [DAGI Router Documentation](./dagi-router.md)
- [CrewAI Orchestrator](./crewai-orchestrator.md)

View File

@@ -270,5 +270,4 @@
---
*Документ оновлюється: 2025-11-18*
## Документ оновлюється: 2025-11-18

View File

@@ -8,9 +8,9 @@ last_updated: 2024-11-14
> **Цей документ є актуальною API специфікацією для DAARION.city & MicroDAO.**
> Повна версія API з усіма ендпоінтами. Для MVP-версії див. `api-mvp.md`.
# API Reference — DAARION.city & MicroDAO
## API Reference — DAARION.city & MicroDAO
*Мінімальний набір MVP-ендпоінтів для інтеграції з DAARION.city*
### Мінімальний набір MVP-ендпоінтів для інтеграції з DAARION.city
---
@@ -1161,4 +1161,3 @@ Authorization: Bearer {token}
**Версія:** 1.1.0
**Останнє оновлення:** 2024-11-14
*Документ готовий до інтеграції у Cursor, GitHub або будь-який інший проект.*

1
docs/backups/LATEST.txt Normal file
View File

@@ -0,0 +1 @@
/Users/apple/github-projects/microdao-daarion/docs/backups/docs_backup_20260216-022549.tar.gz

View File

@@ -0,0 +1,30 @@
# Integrations Bootstrap Status
Generated: 2026-02-16 10:32:37 UTC
Repo: /Users/apple/github-projects/microdao-daarion/.worktrees/codex-docs-pr
## Gitea
- **gitea_http**: OK - http_code=200 (<http://127.0.0.1:3000>)
- **gitea_git_remote**: OK - gitea <http://localhost:3000/daarion-admin/microdao-daarion.git>;
## GitHub
- **gh_auth**: OK - IvanTytar (keyring)
- **github_git_remote**: OK - origin `git@github.com:IvanTytar/microdao-daarion.git`;
## Jupyter
- **jupyter_cli**: DEGRADED - jupyter not found in PATH
- **notebooks_dir**: OK - /Users/apple/notebooks (ipynb_count=7)
## Pieces
- **pieces_extension**: OK - cursor extensions matched=1
- **pieces_data_dir**: INFO - /Users/apple/Library/Application Support/Pieces not found
## Next
- Run docs sync dry-run: bash scripts/docs/docs_sync.sh --dry-run
- Apply sync to remotes: bash scripts/docs/docs_sync.sh --apply --targets github,gitea

View File

@@ -0,0 +1,30 @@
# Integrations Bootstrap Status
Generated: 2026-02-16 10:25:49 UTC
Repo: /Users/apple/github-projects/microdao-daarion
## Gitea
- **gitea_http**: OK - http_code=200 (<http://127.0.0.1:3000>)
- **gitea_git_remote**: OK - gitea <http://localhost:3000/daarion-admin/microdao-daarion.git>;
## GitHub
- **gh_auth**: OK - IvanTytar (keyring)
- **github_git_remote**: OK - origin `git@github.com:IvanTytar/microdao-daarion.git`;
## Jupyter
- **jupyter_cli**: DEGRADED - jupyter not found in PATH
- **notebooks_dir**: OK - /Users/apple/notebooks (ipynb_count=7)
## Pieces
- **pieces_extension**: OK - cursor extensions matched=1
- **pieces_data_dir**: INFO - /Users/apple/Library/Application Support/Pieces not found
## Next
- Run docs sync dry-run: bash scripts/docs/docs_sync.sh --dry-run
- Apply sync to remotes: bash scripts/docs/docs_sync.sh --apply --targets github,gitea

View File

@@ -0,0 +1,39 @@
# Docs Consolidation Hub
Single entry point for documentation reconciliation across:
- canonical repo docs
- legacy repo copies
- worktree docs
- NODE1 runtime docs snapshot
- local notebooks
## Files
- `docs_inventory.csv` — machine-readable inventory with classification.
- `docs_inventory_summary.txt` — class-level counts.
- `docs_registry_curated.csv` — manually curated truth table for key docs (startup + runtime + legacy refs).
- `_node1_runtime_docs/` — runtime docs snapshot pulled from NODE1.
## Classification
- `runtime-fact` — observed in NODE1 runtime snapshot.
- `new-canonical` — canonical docs in active repo (`docs/runbooks`, master index, safe deploy).
- `legacy-worktree` — docs from `.worktrees/*`.
- `legacy-desktop` — docs from `/Users/apple/Desktop/MicroDAO/MicroDAO 3`.
- `needs-triage` — requires manual decision.
## Rebuild inventory
```bash
python3 /Users/apple/github-projects/microdao-daarion/scripts/docs/build_docs_hub_inventory.py
```
## Service Automation
```bash
bash /Users/apple/github-projects/microdao-daarion/scripts/docs/session_bootstrap.sh
bash /Users/apple/github-projects/microdao-daarion/scripts/docs/services_sync.sh --dry-run
bash /Users/apple/github-projects/microdao-daarion/scripts/docs/services_sync.sh --apply
bash /Users/apple/github-projects/microdao-daarion/scripts/docs/docs_lint.sh
bash /Users/apple/github-projects/microdao-daarion/scripts/docs/docs_sync.sh --dry-run
```

View File

@@ -0,0 +1,31 @@
# Documentation Sources Map
This file tracks where documentation is collected from for consolidation.
## Primary
- Canonical repo: `/Users/apple/github-projects/microdao-daarion`
- Legacy repo: `/Users/apple/Desktop/MicroDAO/MicroDAO 3`
- Worktrees:
- `/Users/apple/github-projects/microdao-daarion/.worktrees/origin-main`
- `/Users/apple/github-projects/microdao-daarion/.worktrees/docs-node1-sync`
- NODE1 runtime snapshot mirror:
- `/Users/apple/github-projects/microdao-daarion/docs/consolidation/_node1_runtime_docs`
- Local notebooks:
- `/Users/apple/notebooks`
## Connectivity/Integrations (verified 2026-02-16)
- GitHub CLI: authenticated (`gh auth status` -> account `IvanTytar`, scopes include `repo`)
- Gitea web UI: reachable at `http://127.0.0.1:3000` (HTTP 200)
- Jupyter CLI: not found in current PATH (`jupyter: command not found`), notebooks directory exists at `/Users/apple/notebooks`
- Pieces: Cursor extension found (`meshintelligenttechnologiesinc.pieces-vscode-3.0.1-universal`)
- NODE1 SSH: intermittent (periodic `connection refused`), use retry/backoff for snapshot refresh.
- NODE3/NODE4: currently unreachable from this workstation and from NODE1.
## Automation Scripts
- `scripts/docs/session_bootstrap.sh` — refreshes integration status and writes `INTEGRATIONS_STATUS_LATEST.md`.
- `scripts/docs/docs_sync.sh` — safe docs sync automation with `--dry-run` by default and explicit `--apply`.
- `scripts/docs/docs_lint.sh` — markdown lint for canonical documentation.
- `scripts/docs/docs_backup.sh` — timestamped docs backup with retention rotation.
- `scripts/docs/jupyter_sync.sh` — adapter for Jupyter server API status + notebooks index export.
- `scripts/docs/pieces_sync.sh` — adapter for Pieces local runtime/data index + optional API probe.
- `scripts/docs/services_sync.sh` — orchestrator for bootstrap + Jupyter + Pieces sync adapters.

View File

@@ -0,0 +1,16 @@
path,title,status,source,notes,last_verified
/Users/apple/github-projects/microdao-daarion/docs/SESSION_STARTER.md,Session Starter,new-canonical,canonical-repo,Primary startup context for new sessions,2026-02-16
/Users/apple/github-projects/microdao-daarion/PROJECT-MASTER-INDEX.md,Master Index,new-canonical,canonical-repo,Single entry point for docs navigation,2026-02-16
/Users/apple/github-projects/microdao-daarion/config/README.md,Agent Registry README,new-canonical,canonical-repo,Canonical process for adding/modifying agents,2026-02-16
/Users/apple/github-projects/microdao-daarion/docs/NODA1-AGENT-ARCHITECTURE.md,NODA1 Agent Architecture,new-canonical,canonical-repo,Architecture and wiring for NODE1 agents,2026-02-16
/Users/apple/github-projects/microdao-daarion/NODA1-SAFE-DEPLOY.md,NODA1 Safe Deploy,new-canonical,canonical-repo,Safe deploy workflow and rollback gates,2026-02-16
/Users/apple/github-projects/microdao-daarion/docs/runbooks/AGENT_REGISTRY_NODE1_DECISION_2026-02-16.md,Agent Registry Decision,runtime-fact,canonical-repo,Decision log aligned to live NODE1 runtime,2026-02-16
/Users/apple/github-projects/microdao-daarion/docs/runbooks/NODE_ARCH_RECONCILIATION_PLAN_2026-02-16.md,Node Arch Reconciliation Plan,runtime-fact,canonical-repo,Runtime-first reconciliation plan across nodes,2026-02-16
/Users/apple/github-projects/microdao-daarion/docs/consolidation/_node1_runtime_docs/PROJECT-MASTER-INDEX.md,Runtime Snapshot Master Index,runtime-fact,node1-snapshot,Snapshot from /opt/microdao-daarion,2026-02-16
/Users/apple/github-projects/microdao-daarion/docs/consolidation/_node1_runtime_docs/config/README.md,Runtime Snapshot Config README,runtime-fact,node1-snapshot,Snapshot from /opt/microdao-daarion,2026-02-16
/Users/apple/github-projects/microdao-daarion/docs/consolidation/_node1_runtime_docs/docs/NODA1-AGENT-ARCHITECTURE.md,Runtime Snapshot NODA1 Architecture,runtime-fact,node1-snapshot,Snapshot from /opt/microdao-daarion,2026-02-16
/Users/apple/github-projects/microdao-daarion/.worktrees/origin-main/IMPLEMENTATION-STATUS.md,Implementation Status,legacy-worktree,worktree-origin-main,Legacy strategic doc kept for reference only,2026-02-16
/Users/apple/github-projects/microdao-daarion/.worktrees/origin-main/ARCHITECTURE-150-NODES.md,Architecture 150 Nodes,legacy-worktree,worktree-origin-main,Legacy scale architecture reference,2026-02-16
/Users/apple/github-projects/microdao-daarion/.worktrees/origin-main/infrastructure/auth/AUTH-IMPLEMENTATION-PLAN.md,Auth Implementation Plan,legacy-worktree,worktree-origin-main,Legacy auth rollout plan,2026-02-16
/Users/apple/github-projects/microdao-daarion/.worktrees/origin-main/infrastructure/matrix-gateway/README.md,Matrix Gateway README,legacy-worktree,worktree-origin-main,Legacy matrix gateway reference,2026-02-16
/Users/apple/Desktop/MicroDAO/MicroDAO 3/NODA1-CURRENT-STATUS-2026-01-26.md,NODA1 Current Status 2026-01-26,legacy-desktop,desktop-legacy,Old status snapshot from legacy repo,2026-02-16
1 path title status source notes last_verified
2 /Users/apple/github-projects/microdao-daarion/docs/SESSION_STARTER.md Session Starter new-canonical canonical-repo Primary startup context for new sessions 2026-02-16
3 /Users/apple/github-projects/microdao-daarion/PROJECT-MASTER-INDEX.md Master Index new-canonical canonical-repo Single entry point for docs navigation 2026-02-16
4 /Users/apple/github-projects/microdao-daarion/config/README.md Agent Registry README new-canonical canonical-repo Canonical process for adding/modifying agents 2026-02-16
5 /Users/apple/github-projects/microdao-daarion/docs/NODA1-AGENT-ARCHITECTURE.md NODA1 Agent Architecture new-canonical canonical-repo Architecture and wiring for NODE1 agents 2026-02-16
6 /Users/apple/github-projects/microdao-daarion/NODA1-SAFE-DEPLOY.md NODA1 Safe Deploy new-canonical canonical-repo Safe deploy workflow and rollback gates 2026-02-16
7 /Users/apple/github-projects/microdao-daarion/docs/runbooks/AGENT_REGISTRY_NODE1_DECISION_2026-02-16.md Agent Registry Decision runtime-fact canonical-repo Decision log aligned to live NODE1 runtime 2026-02-16
8 /Users/apple/github-projects/microdao-daarion/docs/runbooks/NODE_ARCH_RECONCILIATION_PLAN_2026-02-16.md Node Arch Reconciliation Plan runtime-fact canonical-repo Runtime-first reconciliation plan across nodes 2026-02-16
9 /Users/apple/github-projects/microdao-daarion/docs/consolidation/_node1_runtime_docs/PROJECT-MASTER-INDEX.md Runtime Snapshot Master Index runtime-fact node1-snapshot Snapshot from /opt/microdao-daarion 2026-02-16
10 /Users/apple/github-projects/microdao-daarion/docs/consolidation/_node1_runtime_docs/config/README.md Runtime Snapshot Config README runtime-fact node1-snapshot Snapshot from /opt/microdao-daarion 2026-02-16
11 /Users/apple/github-projects/microdao-daarion/docs/consolidation/_node1_runtime_docs/docs/NODA1-AGENT-ARCHITECTURE.md Runtime Snapshot NODA1 Architecture runtime-fact node1-snapshot Snapshot from /opt/microdao-daarion 2026-02-16
12 /Users/apple/github-projects/microdao-daarion/.worktrees/origin-main/IMPLEMENTATION-STATUS.md Implementation Status legacy-worktree worktree-origin-main Legacy strategic doc kept for reference only 2026-02-16
13 /Users/apple/github-projects/microdao-daarion/.worktrees/origin-main/ARCHITECTURE-150-NODES.md Architecture 150 Nodes legacy-worktree worktree-origin-main Legacy scale architecture reference 2026-02-16
14 /Users/apple/github-projects/microdao-daarion/.worktrees/origin-main/infrastructure/auth/AUTH-IMPLEMENTATION-PLAN.md Auth Implementation Plan legacy-worktree worktree-origin-main Legacy auth rollout plan 2026-02-16
15 /Users/apple/github-projects/microdao-daarion/.worktrees/origin-main/infrastructure/matrix-gateway/README.md Matrix Gateway README legacy-worktree worktree-origin-main Legacy matrix gateway reference 2026-02-16
16 /Users/apple/Desktop/MicroDAO/MicroDAO 3/NODA1-CURRENT-STATUS-2026-01-26.md NODA1 Current Status 2026-01-26 legacy-desktop desktop-legacy Old status snapshot from legacy repo 2026-02-16

View File

@@ -0,0 +1,13 @@
# Jupyter Sync Report
Generated: 2026-02-16 10:25:50 UTC
- jupyter_cmd: not-found
- server_count: 0
- api_ok: 0/0
- notebooks_dir: /Users/apple/notebooks
- notebooks_count: 7
## API Probes
- no active jupyter servers discovered

View File

@@ -0,0 +1,8 @@
path,size_bytes,mtime_epoch
"/Users/apple/notebooks/04_latency_profile.ipynb",31210,1760335066
"/Users/apple/notebooks/03_window_packing.ipynb",8762,1760334699
"/Users/apple/notebooks/02_reranker_ablation.ipynb",26615,1760334615
"/Users/apple/notebooks/05_groundedness_eval.ipynb",39210,1760335328
"/Users/apple/notebooks/hybrid-search-demo.ipynb",27580,1760307946
"/Users/apple/notebooks/01_retrieval_sanity.ipynb",16137,1760308259
"/Users/apple/notebooks/ai-stack-demo.ipynb",14607,1760307623
1 path size_bytes mtime_epoch
2 /Users/apple/notebooks/04_latency_profile.ipynb 31210 1760335066
3 /Users/apple/notebooks/03_window_packing.ipynb 8762 1760334699
4 /Users/apple/notebooks/02_reranker_ablation.ipynb 26615 1760334615
5 /Users/apple/notebooks/05_groundedness_eval.ipynb 39210 1760335328
6 /Users/apple/notebooks/hybrid-search-demo.ipynb 27580 1760307946
7 /Users/apple/notebooks/01_retrieval_sanity.ipynb 16137 1760308259
8 /Users/apple/notebooks/ai-stack-demo.ipynb 14607 1760307623

View File

@@ -0,0 +1,25 @@
# Pieces Sync Report
Generated: 2026-02-16 10:25:50 UTC
- pieces_extensions_count: 1
- pieces_data_dirs_count: 0
- pieces_process_count: 2
- api_probe_ok: 0/0
## Extensions
- /Users/apple/.cursor/extensions/meshintelligenttechnologiesinc.pieces-vscode-3.0.1-universal
## Data Dirs
- no pieces data directories found
## Processes
- 54969 /Applications/Pieces OS.app/Contents/MacOS/Pieces OS
- 55184 /Applications/Pieces.app/Contents/MacOS/Pieces
## API Probes
- no api probe ports supplied

View File

@@ -0,0 +1,4 @@
kind,path_or_process
extension,"/Users/apple/.cursor/extensions/meshintelligenttechnologiesinc.pieces-vscode-3.0.1-universal"
process,"54969 /Applications/Pieces OS.app/Contents/MacOS/Pieces OS"
process,"55184 /Applications/Pieces.app/Contents/MacOS/Pieces"
1 kind path_or_process
2 extension /Users/apple/.cursor/extensions/meshintelligenttechnologiesinc.pieces-vscode-3.0.1-universal
3 process 54969 /Applications/Pieces OS.app/Contents/MacOS/Pieces OS
4 process 55184 /Applications/Pieces.app/Contents/MacOS/Pieces

View File

@@ -2,7 +2,10 @@
## Що таке MicroDAO
MicroDAO — це приватна мережа ШІ-агентів для малих спільнот (5-50 учасників). Система дозволяє створювати спільноти (teams) з автоматичним створенням micro-DAO, публічні та приватні канали для спілкування, проєкти з задачами, базу знань (Co-Memory) та приватних ШІ-агентів, які допомагають у роботі команди.
MicroDAO — це приватна мережа ШІ-агентів для малих спільнот (5-50 учасників).
Система дозволяє створювати спільноти (teams) з автоматичним створенням
micro-DAO, публічні та приватні канали для спілкування, проєкти з задачами,
базу знань (Co-Memory) та приватних ШІ-агентів, які допомагають у роботі команди.
## Ключові модулі
@@ -30,4 +33,3 @@ MicroDAO — це приватна мережа ШІ-агентів для ма
- `05_coding_standards.md` — Стандарти кодування
- `06_tasks_onboarding_mvp.md` — Задачі для реалізації
- `07_testing_checklist_mvp.md` — Чеклист тестування

View File

@@ -195,7 +195,7 @@ MicroDAO складається з:
### 8.1. Каталоги
```
```text
src/
api/
components/

View File

@@ -11,12 +11,12 @@
Надсилає магічний лінк користувачу на email.
**Body**
- **Body**
```json
{ "email": "user@example.com" }
```
**Response**
- **Response**
`204 No Content`
---
@@ -25,12 +25,12 @@
Обмін коду з email-лінка на JWT.
**Body**
- **Body**
```json
{ "code": "XXXXXX" }
```
**Response 200**
- **Response 200**
```json
{
"token": "jwt-string",
@@ -50,12 +50,12 @@
Створює нову спільноту (micro-DAO).
**Body**
- **Body**
```json
{ "name": "My Team" }
```
**Response 201**
- **Response 201**
```json
{
"id": "t_123",
@@ -71,12 +71,12 @@
Оновлює налаштування спільноти.
**Body**
- **Body**
```json
{ "mode": "public" | "confidential" }
```
**Response 200**
- **Response 200**
```json
{
"id": "t_123",
@@ -91,7 +91,7 @@
Список моїх спільнот.
**Response**
- **Response**
```json
{
"items": [
@@ -109,7 +109,7 @@
Створює канал.
**Body**
- **Body**
```json
{
"team_id": "t_123",
@@ -119,7 +119,7 @@
}
```
**Response 201**
- **Response 201**
```json
{
"id": "c_123",
@@ -136,11 +136,11 @@
Отримує повідомлення каналу (cursor pagination).
**Query params**
* `cursor` (optional)
* `limit` (1200)
- **Query params**
- `cursor` (optional)
- `limit` (1200)
**Response**
- **Response**
```json
{
"items": [
@@ -164,7 +164,7 @@
Надсилає повідомлення.
**Body**
- **Body**
```json
{
"kind": "text",
@@ -172,7 +172,7 @@
}
```
**Response 201**
- **Response 201**
```json
{
"id": "m_123",
@@ -190,7 +190,7 @@
Створює follow-up із повідомлення.
**Body**
- **Body**
```json
{
"team_id": "t_123",
@@ -200,7 +200,7 @@
}
```
**Response 201**
- **Response 201**
```json
{
"id": "fu_1",
@@ -214,12 +214,12 @@
Список follow-up.
**Query**
* `assignee` (optional)
* `status` (optional)
* `cursor` (optional)
- **Query**
- `assignee` (optional)
- `status` (optional)
- `cursor` (optional)
**Response**
- **Response**
```json
{
"items": [
@@ -241,7 +241,7 @@
Створює проєкт.
**Body**
- **Body**
```json
{
"team_id": "t_123",
@@ -250,7 +250,7 @@
}
```
**Response**
- **Response**
```json
{
"id": "p_1",
@@ -265,7 +265,7 @@
Список проєктів.
**Response**
- **Response**
```json
{ "items": [ { "id": "p_1", "name": "Website Launch" } ] }
```
@@ -276,7 +276,7 @@
Створює задачу.
**Body**
- **Body**
```json
{
"title": "Design homepage",
@@ -284,7 +284,7 @@
}
```
**Response 201**
- **Response 201**
```json
{
"id": "task_1",
@@ -299,10 +299,10 @@
Отримує задачі.
**Query**
* `status` (optional)
- **Query**
- `status` (optional)
**Response**
- **Response**
```json
{
"items": [
@@ -323,7 +323,7 @@
Список приватних агентів.
**Response**
- **Response**
```json
{
"items": [
@@ -343,7 +343,7 @@
Створює агента.
**Body**
- **Body**
```json
{
"owner_kind": "team",
@@ -354,7 +354,7 @@
}
```
**Response**
- **Response**
```json
{
"id": "ag_1",
@@ -370,11 +370,11 @@
Глобальний пошук по команді.
**Query**
* `q` — текст
* `scope`: `messages | files | docs | tasks | people`
- **Query**
- `q` — текст
- `scope`: `messages | files | docs | tasks | people`
**Response**
- **Response**
```json
{
"results": [
@@ -391,13 +391,13 @@
## 8. Errors (узагальнення)
* **400** — неправильні дані
* **401** — без авторизації
* **403** — заборонено (немає прав)
* **404** — не знайдено
* **409** — конфлікт
* **429** — rate limit
* **500** — помилка сервера
- **400** — неправильні дані
- **401** — без авторизації
- **403** — заборонено (немає прав)
- **404** — не знайдено
- **409** — конфлікт
- **429** — rate limit
- **500** — помилка сервера
Cursor повинен обробляти помилки через toast + лог у консоль.
@@ -409,6 +409,6 @@ Cursor повинен обробляти помилки через toast + ло
Він узятий з офіційної специфікації MicroDAO і адаптований для:
* автоматичної генерації типів,
* швидкої розробки фронтенду,
* мінімізації зайвих деталей.
- автоматичної генерації типів,
- швидкої розробки фронтенду,
- мінімізації зайвих деталей.

View File

@@ -108,7 +108,7 @@
**UI структура:**
```
```text
---
| Назва спільноти |
| Опис |
@@ -144,7 +144,7 @@
Структура:
```
```text
---
## | Sidebar (список каналів) |
@@ -176,7 +176,7 @@
### 4.3. Messages Stream
#### Повідомлення містить:
#### Повідомлення містить
- Аватар автора
- Ім'я
- Час
@@ -209,7 +209,7 @@ API:
Простий інпут:
```
```text
[Написати повідомлення… ] (Кнопка Надіслати)
```

View File

@@ -23,7 +23,7 @@
## 2. Архітектура проєкту
```
```text
src/
api/ // Typed API clients
components/ // UI components (buttons, inputs, modals)
@@ -34,7 +34,7 @@ routes/ // Route definitions
store/ // Zustand stores (optional)
styles/ // Global CSS/tokens
utils/ // Formatting, validation
```
```text
- `features/*` містять логіку конкретних модулів.
- `components/*` — лише dumb UI-компоненти (без бізнес-логіки).
@@ -51,18 +51,18 @@ utils/ // Formatting, validation
"strict": true
}
}
```
```text
### 3.2. Заборонено
* `any`
* `!` non-null assertion (за винятком рідкісних випадків)
* глобальний mutable state
- `any`
- `!` non-null assertion (за винятком рідкісних випадків)
- глобальний mutable state
### 3.3. API-типи
* Генеруємо типи з API Snapshot / OpenAPI.
* Типи для відповідей зберігаються в `src/api/types.ts`.
- Генеруємо типи з API Snapshot / OpenAPI.
- Типи для відповідей зберігаються в `src/api/types.ts`.
## 4. React Query (network layer)
@@ -87,31 +87,31 @@ export async function api<T>(path: string, options?: RequestInit): Promise<T> {
return res.json();
}
```
```text
### 4.2. Query Keys
```
```text
["teams"]
["teams", teamId]
["channels", teamId]
["messages", channelId]
["followups", teamId]
["projects", teamId]
```
```text
## 5. Стандарти компонентів
### 5.1. Іменування
* Компоненти: `PascalCase`
* Хуки: `useCamelCase`
* Файли: `camel-case.tsx`
* Папки: `kebab-case`
- Компоненти: `PascalCase`
- Хуки: `useCamelCase`
- Файли: `camel-case.tsx`
- Папки: `kebab-case`
### 5.2. Компонент повинен мати:
### 5.2. Компонент повинен мати
* Чіткий props-інтерфейс:
- Чіткий props-інтерфейс:
```ts
interface MyCompProps {
@@ -119,8 +119,8 @@ export async function api<T>(path: string, options?: RequestInit): Promise<T> {
onClick: () => void;
}
```
* Внутрішній стан не змішується з зовнішнім API-станом.
* Міжкомпонентна логіка виноситься в хуки (наприклад: `useMessages(channelId)`).
- Внутрішній стан не змішується з зовнішнім API-станом.
- Міжкомпонентна логіка виноситься в хуки (наприклад: `useMessages(channelId)`).
## 6. Обробка помилок
@@ -143,20 +143,20 @@ POST — без retry.
Всі тексти повинні бути в словнику:
```
```text
src/i18n/uk.json
src/i18n/en.json
```
```text
Формат ключів:
```
```text
onboarding.welcome_title
onboarding.next
chat.send
chat.input_placeholder
followup.create
```
```text
Форсувати одразу правильну структуру.
@@ -164,18 +164,18 @@ followup.create
### 8.1. Кольори
```
```text
--primary: #3F51F5;
--success: #43A047;
--error: #E53935;
--gray-100: #F8F9FA;
--gray-200: #ECEFF1;
--gray-800: #263238;
```
```text
### 8.2. Типографіка
* System font stack:
- System font stack:
`"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto`
### 8.3. Контрасти
@@ -184,12 +184,12 @@ followup.create
## 9. Робота з WebSockets
* Використовуємо один хук: `useChannelStream(channelId)`.
* WS підключається коли відкрито чат.
* Події:
- Використовуємо один хук: `useChannelStream(channelId)`.
- WS підключається коли відкрито чат.
- Події:
* `message.created`
* `message.updated`
- `message.created`
- `message.updated`
Не зберігати WS-стан у глобальному store.
@@ -197,11 +197,11 @@ followup.create
Що треба **вимкнути** у коді, щоб не перевантажити ранніх користувачів:
* Без drag'n'drop для файлів.
* Без реакцій (emoji).
* Без WYSIWYG редактора.
* Без Co-Memory (файли/документи), лише stub.
* Без granular RBAC.
- Без drag'n'drop для файлів.
- Без реакцій (emoji).
- Без WYSIWYG редактора.
- Без Co-Memory (файли/документи), лише stub.
- Без granular RBAC.
## 11. Патерни, які Cursor повинен дотримуватися
@@ -213,7 +213,7 @@ followup.create
## 12. Приклад робочого промта для Cursor
```
```text
You are a senior React/TS engineer.
Implement Step 2 of the onboarding flow (/onboarding).
@@ -226,7 +226,7 @@ Specs:
Please output:
- list of files to modify
- code diff
```
```text
## 13. Мета документа
@@ -234,8 +234,8 @@ Please output:
Він гарантує:
* узгоджений стиль,
* передбачуваний код,
* мінімум помилок,
* легку підтримку,
* зрозумілість структури для нових девелоперів.
- узгоджений стиль,
- передбачуваний код,
- мінімум помилок,
- легку підтримку,
- зрозумілість структури для нових девелоперів.

View File

@@ -98,18 +98,18 @@ UI: дві великі карточки:
```
**Acceptance Criteria:**
* Після успіху → Step 5.
* Канал створений і додається до списку каналів у state.
- Після успіху → Step 5.
- Канал створений і додається до списку каналів у state.
### Task A6 — Step 5: Agent & memory settings (POST /agents)
**Specs:**
UI:
* toggle: "Увімкнути приватного агента"
* select: мова агента
* select: профіль агента
* select: memory depth
- toggle: "Увімкнути приватного агента"
- select: мова агента
- select: профіль агента
- select: memory depth
API:
@@ -124,29 +124,29 @@ API:
"role": "general",
"scopes": ["chat"]
}
```
```text
2. Якщо OFF → skip
**Acceptance Criteria:**
* Вибір зберігається в onboarding state.
* API викликається тільки якщо агент включений.
* Після успіху → Step 6.
- Вибір зберігається в onboarding state.
- API викликається тільки якщо агент включений.
- Після успіху → Step 6.
### Task A7 — Step 6: Invite (UI only)
**Specs:**
UI:
* Заголовок: "Спільнота створена!"
* Показати посилання-запрошення (stub: `/invite?t=ID`).
* Кнопка: "Перейти в чат".
- Заголовок: "Спільнота створена!"
- Показати посилання-запрошення (stub: `/invite?t=ID`).
- Кнопка: "Перейти в чат".
**Acceptance Criteria:**
* Немає API.
* При натисканні — redirect до `/t/:teamId/c/:channelId`.
- Немає API.
- При натисканні — redirect до `/t/:teamId/c/:channelId`.
## BLOCK B — CHAT CORE
@@ -154,58 +154,58 @@ UI:
**Specs:**
* Зробити компонент `SidebarChannels`.
* Отримати список каналів командою:
- Зробити компонент `SidebarChannels`.
- Отримати список каналів командою:
* Використати локальний state (оновлює онбординг).
* У реальному додатку — GET `/teams/{id}/channels` (можна додати).
* Показати активний канал.
- Використати локальний state (оновлює онбординг).
- У реальному додатку — GET `/teams/{id}/channels` (можна додати).
- Показати активний канал.
**Acceptance Criteria:**
* Sidebar показує всі канали.
* Active канал підсвічений.
- Sidebar показує всі канали.
- Active канал підсвічений.
### Task B2 — Messages Stream (GET /channels/{id}/messages)
**Specs:**
* Компонент: `MessagesStream`.
* Пагінація: cursor-based scroll.
* Рендер: avatar + name + time + text.
* Confidential → body_enc (можна stub дешифрування).
- Компонент: `MessagesStream`.
- Пагінація: cursor-based scroll.
- Рендер: avatar + name + time + text.
- Confidential → body_enc (можна stub дешифрування).
**Acceptance Criteria:**
* Стрічка відображає повідомлення.
* При скролі догори → підвантаження старих.
- Стрічка відображає повідомлення.
- При скролі догори → підвантаження старих.
### Task B3 — Composer (POST /messages)
**Specs:**
* Компонент: `MessageComposer`.
* Input + кнопка "Надіслати".
* Enter → відправка.
* Shift+Enter → новий рядок.
- Компонент: `MessageComposer`.
- Input + кнопка "Надіслати".
- Enter → відправка.
- Shift+Enter → новий рядок.
**Acceptance Criteria:**
* Повідомлення додається в стрічку без перезавантаження.
* Порожній інпут → заборонити надсилання.
- Повідомлення додається в стрічку без перезавантаження.
- Порожній інпут → заборонити надсилання.
### Task B4 — Follow-up creation (POST /followups)
**Specs:**
* Контекстне меню у повідомленні: "Створити follow-up".
* Модалка: назва (автоматично), assignee (список членів), due.
* API: POST `/followups`.
- Контекстне меню у повідомленні: "Створити follow-up".
- Модалка: назва (автоматично), assignee (список членів), due.
- API: POST `/followups`.
**Acceptance Criteria:**
* Follow-up створюється успішно.
* Помилки показуються через toast.
- Follow-up створюється успішно.
- Помилки показуються через toast.
## BLOCK C — PROJECTS & TASKS
@@ -213,39 +213,39 @@ UI:
**Specs:**
* Вкладка "Проєкти".
* Список проєктів (назва).
* Кнопка "Створити проєкт".
- Вкладка "Проєкти".
- Список проєктів (назва).
- Кнопка "Створити проєкт".
**Acceptance Criteria:**
* Працює рендер списку.
* Порожній стан: "Проєкти ще не створені".
- Працює рендер списку.
- Порожній стан: "Проєкти ще не створені".
### Task C2 — Create Project (POST /projects)
**Specs:**
* Модалка → створення нового проєкту.
* Поля: назва, visibility (public/confidential).
* API: POST `/projects`.
- Модалка → створення нового проєкту.
- Поля: назва, visibility (public/confidential).
- API: POST `/projects`.
**Acceptance Criteria:**
* Новий проєкт зʼявляється в списку.
- Новий проєкт зʼявляється в списку.
### Task C3 — Tasks Board (GET/POST /projects/{id}/tasks)
**Specs:**
* 3 колонки: backlog, in_progress, done.
* Карточка задачі: title + status.
* При кліку → змінити статус.
- 3 колонки: backlog, in_progress, done.
- Карточка задачі: title + status.
- При кліку → змінити статус.
**Acceptance Criteria:**
* Задачі змінюють статус (PATCH можна stub: просто оновлювати client state).
* Мінімальний Kanban працює.
- Задачі змінюють статус (PATCH можна stub: просто оновлювати client state).
- Мінімальний Kanban працює.
## BLOCK D — AGENTS
@@ -253,28 +253,28 @@ UI:
**Specs:**
* Вкладка "Агенти".
* Показати всіх агентів команди.
- Вкладка "Агенти".
- Показати всіх агентів команди.
**Acceptance Criteria:**
* Один агент "Team Assistant" відображається.
- Один агент "Team Assistant" відображається.
### Task D2 — Agent Chat (stub)
**Specs:**
* Створити окремий чат з агентом:
- Створити окремий чат з агентом:
* `MessageComposer`
* потік повідомлень (локальний state)
* В API-запиті викликати зовнішній LLM (можна mock)
* Зберігати історію до reload.
- `MessageComposer`
- потік повідомлень (локальний state)
- В API-запиті викликати зовнішній LLM (можна mock)
- Зберігати історію до reload.
**Acceptance Criteria:**
* Агент відповідає у вигляді тексту.
* Історія видно в UI.
- Агент відповідає у вигляді тексту.
- Історія видно в UI.
## BLOCK E — FINALIZATION
@@ -282,43 +282,43 @@ UI:
**Specs:**
* Після Step 6 redirect:
- Після Step 6 redirect:
`/t/:teamId/c/:channelId`
**Acceptance Criteria:**
* Після онбордингу користувач потрапляє у свій перший канал.
- Після онбордингу користувач потрапляє у свій перший канал.
### Task E2 — Mobile adaptation
**Specs:**
* Sidebar → Drawer
* Composer sticky bottom
* Onboarding → одна колонка
- Sidebar → Drawer
- Composer sticky bottom
- Onboarding → одна колонка
**Acceptance Criteria:**
* Мобільна версія не ламається.
- Мобільна версія не ламається.
### Task E3 — Error Handling Audit
**Specs:**
Перевірити всі виклики API:
* login
* teams
* channels
* messages
* followups
* projects
* tasks
* agents
- login
- teams
- channels
- messages
- followups
- projects
- tasks
- agents
**Acceptance Criteria:**
* Усі помилки показуються через toast.
* Немає uncaught exceptions у консолі.
- Усі помилки показуються через toast.
- Немає uncaught exceptions у консолі.
## Кінець документа
@@ -327,6 +327,6 @@ UI:
Кожна задача може бути надіслана як окремий prompt,
Cursor повинен завжди відповідати:
* списком файлів,
* diff,
* коротким summary.
- списком файлів,
- diff,
- коротким summary.

View File

@@ -8,7 +8,7 @@
---
# 1. Мета
## 1. Мета
Замінити класичні форми/кроки онбордингу повністю **агентським інтерфейсом**.
Увесь onboarding виконується через `AgentOnboardingChat`, який:
@@ -24,7 +24,7 @@
---
# 2. Загальна архітектура
## 2. Загальна архітектура
Усі дії будуються на:
@@ -36,7 +36,7 @@
Компоненти:
```
```text
src/features/onboarding-agent/
AgentOnboardingChat.tsx
useOnboardingState.ts
@@ -44,11 +44,11 @@ src/features/onboarding-agent/
script.json
parser.ts
transitions.ts
```
```text
---
# 3. State Machine
## 3. State Machine
```ts
type OnboardingStep =
@@ -63,16 +63,16 @@ type OnboardingStep =
| "ask_agent_prefs"
| "ask_invites"
| "done";
```
```text
Перехід між кроками базується на:
* відповіді користувача,
* успішності API-виклику.
- відповіді користувача,
- успішності API-виклику.
---
# 4. Повний сценарій діалогу (репліки агента)
## 4. Повний сценарій діалогу (репліки агента)
Нижче — готовий сценарій, який можна покласти в JSON або хардкод.
@@ -132,8 +132,8 @@ type OnboardingStep =
Після відповіді:
* map → `"public"` / `"confidential"`
* `PATCH /teams/{teamId}`
- map → `"public"` / `"confidential"`
- `PATCH /teams/{teamId}`
→ `ask_channel_name`.
---
@@ -158,8 +158,8 @@ type OnboardingStep =
Mapping:
* `public``type: "public"`
* `private``type: "group"`
- `public` → `type: "public"`
- `private` → `type: "group"`
API:
`POST /channels`
@@ -177,8 +177,8 @@ API:
Очікувані відповіді: так / ні.
* Якщо «ні» → `ask_invites`
* Якщо «так» → `ask_agent_prefs`
- Якщо «ні» → `ask_invites`
- Якщо «так» → `ask_agent_prefs`
---
@@ -242,7 +242,7 @@ redirect → `/t/:teamId/c/:channelId`.
---
# 5. Intent Parser (як агент розуміє відповіді)
## 5. Intent Parser (як агент розуміє відповіді)
Мінімальний підхід (regex):
@@ -251,26 +251,26 @@ function parseMode(input: string) {
if (input.match(/1|пуб/i)) return "public";
if (input.match(/2|прив/i)) return "confidential";
}
```
```text
```ts
function parseYesNo(input: string) {
if (input.match(/^так|yes|y$/i)) return true;
if (input.match(/^ні|no|n$/i)) return false;
}
```
```text
Або гібридний:
* парсимо regex,
* якщо незрозуміло → питаємо LLM:
- парсимо regex,
- якщо незрозуміло → питаємо LLM:
*"Чи відповідь користувача означає Так/Ні/Інше?"*
---
# 6. Компонент `AgentOnboardingChat.tsx`
## 6. Компонент `AgentOnboardingChat.tsx`
### Мінімальна структура:
### Мінімальна структура
```tsx
export function AgentOnboardingChat() {
@@ -311,31 +311,31 @@ export function AgentOnboardingChat() {
/>
);
}
```
```text
---
# 7. Acceptance Criteria (як перевіряти)
## 7. Acceptance Criteria (як перевіряти)
* `/onboarding` відкривається як чат.
* Користувач спілкується з агентом.
* На кожному кроці агент відповідає правильно.
* Усі API виклики працюють:
- `/onboarding` відкривається як чат.
- Користувач спілкується з агентом.
- На кожному кроці агент відповідає правильно.
- Усі API виклики працюють:
* `/teams`
* `/teams/{id}`
* `/channels`
* `/agents`
* Після завершення → redirect.
* UX: користувач не бачить жодної форми. Все — діалог.
- `/teams`
- `/teams/{id}`
- `/channels`
- `/agents`
- Після завершення → redirect.
- UX: користувач не бачить жодної форми. Все — діалог.
---
# 8. Для Cursor
## 8. Для Cursor
Коли ти даси йому задачу, використовуй цей формат:
```
```text
You are a senior React/TS engineer.
Implement the Agent-first onboarding at `/onboarding` using the specification in:
@@ -349,11 +349,11 @@ Output:
- list of modified files
- diff
- summary
```
```text
---
# 9. Інтеграція з існуючим кодом
## 9. Інтеграція з існуючим кодом
## 9.1. Заміна класичного онбордингу
@@ -375,7 +375,7 @@ Output:
---
# 10. UI/UX Вимоги
## 10. UI/UX Вимоги
## 10.1. Chat Interface
@@ -400,7 +400,7 @@ Output:
---
# 11. Обробка помилок
## 11. Обробка помилок
## 11.1. Помилки API
@@ -424,7 +424,7 @@ Output:
---
# 12. Тестування
## 12. Тестування
## 12.1. Unit Tests
@@ -446,7 +446,7 @@ Output:
---
# 13. Майбутні покращення
## 13. Майбутні покращення
## 13.1. LLM Integration
@@ -471,4 +471,3 @@ Output:
**Готово.**
Це **повна специфікація агентського онбордингу**, готова до використання в Cursor.

View File

@@ -13,7 +13,7 @@
---
# 1. Мета
## 1. Мета
Створити **особистого eволюційного агента** для кожної microDAO:
@@ -28,7 +28,7 @@
---
# 2. Архітектура (3 рівні мозку)
## 2. Архітектура (3 рівні мозку)
Еволюційний агент складається з трьох шарів.
@@ -62,7 +62,7 @@
---
# 3. Компоненти Meta-Agent
## 3. Компоненти Meta-Agent
## 3.1. Feedback Collector
@@ -132,13 +132,13 @@
Формує список пропозицій у вигляді:
```
```text
• Пропозиція №17
Тип: Нове правило
Текст: "Якщо user → українська, відповідай українською."
Джерело: 13 подібних ситуацій.
[Прийняти] [Відхилити] [Редагувати]
```
```text
Це ключова відмінність MicroDAO від централізованих систем:
@@ -166,7 +166,7 @@ UI показує «дерево еволюції».
---
# 4. UI/UX модуля "Еволюція агента"
## 4. UI/UX модуля "Еволюція агента"
## 4.1. Вкладка 1 — Огляд
@@ -212,13 +212,13 @@ UI показує «дерево еволюції».
Список:
```
```text
• Пропозиція №23
Тип: FAQ
Тема: «Як додати нового учасника?»
Згенеровано: Meta-Agent
→ [Прийняти] [Відхилити] [Редагувати]
```
```text
---
@@ -228,7 +228,7 @@ UI показує «дерево еволюції».
---
# 5. Логіка самонавчання (алгоритм)
## 5. Логіка самонавчання (алгоритм)
## 5.1. Тригер self-review
@@ -249,7 +249,7 @@ Self-review запускається коли:
---
# 6. API для еволюційного агента
## 6. API для еволюційного агента
Додаємо нові ендпоїнти:
@@ -279,7 +279,7 @@ Self-review запускається коли:
---
# 7. Як працює Train-to-Earn
## 7. Як працює Train-to-Earn
Коли користувач вмикає цю опцію:
@@ -292,16 +292,16 @@ Self-review запускається коли:
Користувач бачить:
```
```text
Ми використали 3 нові патерни вашої спільноти.
Винагорода: +17 1T
```
```text
---
# 8. MVP того, що реально зробити зараз
## 8. MVP того, що реально зробити зараз
### MVP-версія:
### MVP-версія
- збір фідбеків (👍/👎),
- ручний запуск self-review,
@@ -309,7 +309,7 @@ Self-review запускається коли:
- вручну додане рев'ю у UI,
- зберігання версій у JSON.
### Наступні етапи:
### Наступні етапи
- кластеризація помилок,
- автоматичні тест-кейси,
@@ -318,9 +318,9 @@ Self-review запускається коли:
---
# 9. Завдання для Cursor (шаблон)
## 9. Завдання для Cursor (шаблон)
```
```text
You are a senior React/TS and backend engineer.
Implement the Self-Improving Agent module using:
@@ -342,11 +342,11 @@ Output:
* list of files
* diff
* summary
```
```text
---
# 10. Інтеграція з існуючим кодом
## 10. Інтеграція з існуючим кодом
## 10.1. Використання API клієнтів
@@ -365,13 +365,13 @@ export async function getAgentSuggestions(agentId: string) {
export async function acceptSuggestion(agentId: string, suggestionId: string) {
return apiClient.post(`/agents/${agentId}/suggestions/${suggestionId}/accept`);
}
```
```text
## 10.2. Компоненти UI
Створити нову структуру:
```
```text
src/features/agent-evolution/
AgentEvolutionTab.tsx
SuggestionsList.tsx
@@ -381,7 +381,7 @@ src/features/agent-evolution/
hooks/
useAgentEvolution.ts
useSuggestions.ts
```
```text
## 10.3. State Management
@@ -392,11 +392,11 @@ const { data: suggestions } = useQuery({
queryKey: ['agent-suggestions', agentId],
queryFn: () => getAgentSuggestions(agentId),
});
```
```text
---
# 11. Типи даних
## 11. Типи даних
## 11.1. Suggestion
@@ -414,7 +414,7 @@ interface Suggestion {
status: 'pending' | 'accepted' | 'rejected' | 'edited';
createdAt: string;
}
```
```text
## 11.2. AgentVersion
@@ -427,7 +427,7 @@ interface AgentVersion {
memoryDiff: MemoryDiff;
changes: Change[];
}
```
```text
## 11.3. Feedback
@@ -439,11 +439,11 @@ interface Feedback {
content?: string; // для explicit correction
createdAt: string;
}
```
```text
---
# 12. Тестування
## 12. Тестування
## 12.1. Unit Tests
@@ -466,7 +466,7 @@ interface Feedback {
---
# 13. Безпека та приватність
## 13. Безпека та приватність
## 13.1. Контроль доступу
@@ -491,7 +491,7 @@ interface Feedback {
---
# 14. Продуктивність
## 14. Продуктивність
## 14.1. Оптимізація self-review
@@ -507,7 +507,7 @@ interface Feedback {
---
# 15. Майбутні покращення
## 15. Майбутні покращення
## 15.1. Розширений аналіз
@@ -529,7 +529,7 @@ interface Feedback {
---
# 16. Результат
## 16. Результат
Еволюційний агент стає серцем MicroDAO:
він вчиться, адаптується, росте — і належить спільноті.
@@ -547,4 +547,3 @@ interface Feedback {
**Готово.**
Це **повна специфікація еволюційного агента**, готова до використання в Cursor.

View File

@@ -8,7 +8,7 @@
---
# 1. Мета
## 1. Мета
Зробити агента центральною точкою взаємодії користувача зі спільнотою.
@@ -26,7 +26,7 @@
---
# 2. Типи агентів у UI
## 2. Типи агентів у UI
## 2.1. Guide Agent (провідник)
@@ -66,7 +66,7 @@
---
# 3. Компоненти Agent UI
## 3. Компоненти Agent UI
## 3.1. Agent Bubble
@@ -80,12 +80,12 @@
Окремий чат у форматі інтерфейсу:
```
```text
---
| Team Assistant (ім'я агента) |
| Chat messages |
| Input field |
```
```text
Функції:
@@ -123,23 +123,23 @@
---
# 4. Sidebar інтеграція
## 4. Sidebar інтеграція
У лівому меню зʼявляється новий розділ:
```
```text
Агенти
• Team Assistant
• (у майбутньому: Personal Agent)
```
```text
При натисканні → сторінка агента.
---
# 5. Сторінка агента
## 5. Сторінка агента
### Розташування:
### Розташування
`/t/:teamId/agent/:agentId`
@@ -209,18 +209,18 @@
UI приклад:
```
```text
Версія: v4.2
Запропоновано 2 покращення:
[1] Нове правило: "Відповідати українською, якщо канал український." [Прийняти] [Відхилити]
[2] FAQ: "Як додати учасника до команди?" [Прийняти] [Редагувати]
```
```text
---
# 6. Взаємодія агента з подіями
## 6. Взаємодія агента з подіями
## 6.1. У каналі
@@ -244,7 +244,7 @@ UI приклад:
---
# 7. Взаємодія агента з Follow-Ups & Projects
## 7. Взаємодія агента з Follow-Ups & Projects
### 7.1. Follow-ups
@@ -270,7 +270,7 @@ UI приклад:
---
# 8. Notification Logic
## 8. Notification Logic
Агент sparingly надсилає нотифікації:
@@ -296,7 +296,7 @@ UI:
---
# 9. Анімації та UX-поведінка
## 9. Анімації та UX-поведінка
- Аватар агента реагує на події (мʼяка анімована "пульсація").
@@ -308,7 +308,7 @@ UI:
---
# 10. Інтеграція з Agent-First Onboarding
## 10. Інтеграція з Agent-First Onboarding
Після онбордингу:
@@ -322,17 +322,17 @@ UI:
---
# 11. Завдання для Cursor
## 11. Завдання для Cursor
```
```text
You are a senior React/TS engineer.
Implement Agent UI System using:
* 10_agent_ui_system.md
* 08_agent_first_onboarding.md
* 03_api_core_snapshot.md
* 05_coding_standards.md
- 10_agent_ui_system.md
- 08_agent_first_onboarding.md
- 03_api_core_snapshot.md
- 05_coding_standards.md
Deliverables:
@@ -344,50 +344,50 @@ Deliverables:
Output:
* list of modified files
* diff
* summary
```
- list of modified files
- diff
- summary
```text
---
# 12. Компоненти та структура файлів
## 12. Компоненти та структура файлів
## 12.1. Компоненти UI
```
```text
src/components/agent/
AgentBubble.tsx # Фіксований аватар у правому нижньому куті
AgentChatWindow.tsx # Окно чату з агентом
AgentMessage.tsx # Повідомлення агента в каналах
AgentAvatar.tsx # Аватар агента з анімаціями
AgentTypingIndicator.tsx # Індикатор набору тексту
```
```text
## 12.2. Сторінки
```
```text
src/pages/
AgentPage.tsx # Головна сторінка агента з вкладками
AgentChatTab.tsx # Вкладка чату
AgentMemoryTab.tsx # Вкладка пам'яті
AgentLearningTab.tsx # Вкладка самонавчання
AgentEvolutionTab.tsx # Вкладка еволюції
```
```text
## 12.3. Hooks
```
```text
src/hooks/
useAgentActions.ts # Дії агента (відповіді, аналіз)
useAgentNotifications.ts # Нотифікації від агента
useAgentMemory.ts # Робота з пам'яттю агента
useAgentEvolution.ts # Еволюція агента (з 09_evolutionary_agent.md)
```
```text
## 12.4. Типи
```
```text
src/types/
agent.ts # Типи для агентів
- Agent
@@ -395,11 +395,11 @@ src/types/
- AgentSuggestion
- AgentVersion
- AgentMemory
```
```text
---
# 13. Інтеграція з каналами
## 13. Інтеграція з каналами
## 13.1. Відображення повідомлень агента
@@ -433,7 +433,7 @@ src/types/
---
# 14. API інтеграція
## 14. API інтеграція
## 14.1. Отримання відповіді від агента
@@ -446,13 +446,13 @@ POST /agents/{agentId}/chat
"threadId": "thread-456"
}
}
```
```text
## 14.2. Отримання пам'яті агента
```ts
GET /agents/{agentId}/memory
```
```text
## 14.3. Оновлення налаштувань самонавчання
@@ -463,11 +463,11 @@ PATCH /agents/{agentId}/learning
"level": "extended",
"sources": ["channel", "team"]
}
```
```text
---
# 15. UX деталі
## 15. UX деталі
## 15.1. Agent Bubble
@@ -492,7 +492,7 @@ PATCH /agents/{agentId}/learning
---
# 16. Обробка помилок
## 16. Обробка помилок
## 16.1. Помилки API
@@ -512,7 +512,7 @@ PATCH /agents/{agentId}/learning
---
# 17. Тестування
## 17. Тестування
## 17.1. Unit Tests
@@ -535,7 +535,7 @@ PATCH /agents/{agentId}/learning
---
# 18. Результат
## 18. Результат
MicroDAO стає не месенджером з агентами, а **агентською операційною системою спільнот**, де ШІ — активний навігатор, який еволюціонує та живе поруч з людьми.
@@ -552,4 +552,3 @@ MicroDAO стає не месенджером з агентами, а **аген
**Готово.**
Це **повна специфікація агентського UI системи**, готова до використання в Cursor.

View File

@@ -20,7 +20,7 @@
---
# 1. Принцип інтеграції
## 1. Принцип інтеграції
Усі виклики до LLM здійснюються **на бекенді**, не з фронтенду.
@@ -38,9 +38,9 @@
---
# 2. Високорівнева архітектура
## 2. Високорівнева архітектура
```
```text
Frontend (React SPA)
|
| POST /agents/{id}/chat
@@ -56,15 +56,15 @@ Backend
|
OpenAI API (або інша модель)
```
```text
---
# 3. Структура директорій для LLM
## 3. Структура директорій для LLM
Додайте на бекенд:
```
```text
src/
llm/
openaiClient.ts
@@ -73,7 +73,7 @@ prompts/
system_agent.txt
system_onboarding.txt
system_evolution.txt
```
```text
- `openaiClient.ts` — клієнт OpenAI / GPT.
@@ -89,7 +89,7 @@ system_evolution.txt
---
# 4. Реалізація базового клієнта OpenAI
## 4. Реалізація базового клієнта OpenAI
**Файл: `src/llm/openaiClient.ts`**
@@ -109,11 +109,11 @@ export async function callLLM(messages: any[], model = "gpt-4.1-mini") {
return res.choices[0]?.message?.content ?? "";
}
```
```text
---
# 5. Model Router
## 5. Model Router
**Файл: `src/llm/modelRouter.ts`**
@@ -130,17 +130,17 @@ export function pickModel(agentProfile: string) {
return "gpt-4.1-mini";
}
}
```
```text
У майбутньому це місце для:
* локальних моделей (Ollama, vLLM),
* кластеру DAGI,
* автоматичного підбору моделі.
- локальних моделей (Ollama, vLLM),
- кластеру DAGI,
- автоматичного підбору моделі.
---
# 6. Запит до LLM для агентського чату
## 6. Запит до LLM для агентського чату
**Файл: `src/controllers/agentsController.ts`**
@@ -173,11 +173,11 @@ export async function chatWithAgent(req, res) {
res.json({ reply });
}
```
```text
---
# 7. Інтеграція з Agent Chat у фронтенді
## 7. Інтеграція з Agent Chat у фронтенді
**Файл: `api/agents.ts`**
@@ -185,7 +185,7 @@ export async function chatWithAgent(req, res) {
export async function agentChat(agentId: string, messages: ChatMessage[]) {
return api.post(`/agents/${agentId}/chat`, { messages });
}
```
```text
**У `AgentChatWindow.tsx`:**
@@ -200,17 +200,17 @@ const onSend = async (text: string) => {
addMessage({ role: "assistant", content: response.reply });
};
```
```text
---
# 8. Agent-First Onboarding Integration
## 8. Agent-First Onboarding Integration
Використовує той самий LLM-клієнт, але з іншим системним промптом:
**`prompts/system_onboarding.txt`:**
```
```text
You are MicroDAO Guide Agent.
Your job is to ask the user questions one-by-one to configure their microDAO.
@@ -218,7 +218,7 @@ Your job is to ask the user questions one-by-one to configure their microDAO.
NEVER skip steps. NEVER jump too far.
Be friendly, minimalistic and precise.
```
```text
У онбордингу:
@@ -227,25 +227,25 @@ const reply = await callLLM([
{ role: "system", content: onboardingSystemPrompt },
...conversation
]);
```
```text
Але state-machine керує реальними діями (API), LLM — тільки текстом.
---
# 9. Integration with Evolutionary Agent (09_evolutionary_agent.md)
## 9. Integration with Evolutionary Agent (09_evolutionary_agent.md)
Meta-Agent (self-review) використовує **ще один промпт**:
`prompts/system_evolution.txt`:
```
```text
You are Meta-Agent responsible for analyzing logs of conversations.
Find mistakes, weak answers, missing rules, and propose improvements.
Always output JSON with `["type", "value", "explanation"]`.
```
```text
Self-review:
@@ -254,21 +254,21 @@ const improvements = await callLLM([
{ role: "system", content: evolutionPrompt },
{ role: "user", content: JSON.stringify(conversationLog) }
]);
```
```text
---
# 10. Як передавати пам'ять агента в LLM
## 10. Як передавати пам'ять агента в LLM
У LLM-запит можна додати:
* `short-term memory` (останні X повідомлень)
- `short-term memory` (останні X повідомлень)
* `long-term memory` (витяг з Co-Memory)
- `long-term memory` (витяг з Co-Memory)
* `agent profile`
- `agent profile`
* інструкції агента (структура з DB)
- інструкції агента (структура з DB)
Приклад у messages:
@@ -280,23 +280,23 @@ const llmMessages = [
...history,
{ role: "user", content: question }
];
```
```text
---
# 11. Безпека
## 11. Безпека
* API key зберігати у `.env` на сервері.
- API key зберігати у `.env` на сервері.
* Ніколи не відправляти ключ у фронтенд.
- Ніколи не відправляти ключ у фронтенд.
* Додавати rate limit.
- Додавати rate limit.
* Додавати аудит використання агента.
- Додавати аудит використання агента.
---
# 12. Кешування та оптимізація
## 12. Кешування та оптимізація
## 12.1. Кешування відповідей
@@ -310,7 +310,7 @@ if (cached) return cached;
const reply = await callLLM(messages);
await cache.set(cacheKey, reply, { ttl: 3600 });
return reply;
```
```text
## 12.2. Streaming відповідей
@@ -329,7 +329,7 @@ for await (const chunk of stream) {
res.write(content);
}
}
```
```text
## 12.3. Rate Limiting
@@ -343,11 +343,11 @@ const agentLimiter = rateLimit({
max: 10, // 10 запитів на хвилину
keyGenerator: (req) => req.user.id,
});
```
```text
---
# 13. Альтернативні провайдери
## 13. Альтернативні провайдери
## 13.1. Anthropic Claude
@@ -367,7 +367,7 @@ export async function callClaude(messages: any[]) {
return response.content[0].text;
}
```
```text
## 13.2. Локальні моделі (Ollama)
@@ -384,7 +384,7 @@ export async function callOllama(messages: any[], model = "llama2") {
const data = await response.json();
return data.message.content;
}
```
```text
## 13.3. Уніфікований інтерфейс
@@ -417,11 +417,11 @@ export function getLLMProvider(provider: string): LLMProvider {
return new OpenAIProvider();
}
}
```
```text
---
# 14. Обробка помилок
## 14. Обробка помилок
## 14.1. Retry Logic
@@ -441,7 +441,7 @@ async function callLLMWithRetry(
}
throw new Error("LLM call failed after retries");
}
```
```text
## 14.2. Fallback моделі
@@ -454,11 +454,11 @@ async function callLLMWithFallback(messages: any[], primaryModel: string) {
return await callLLM(messages, "gpt-3.5-turbo");
}
}
```
```text
---
# 15. Моніторинг та логування
## 15. Моніторинг та логування
## 15.1. Логування викликів
@@ -489,7 +489,7 @@ async function callLLM(messages: any[], model: string) {
throw error;
}
}
```
```text
## 15.2. Метрики
@@ -503,9 +503,9 @@ async function callLLM(messages: any[], model: string) {
---
# 16. Завдання для Cursor
## 16. Завдання для Cursor
```
```text
You are a senior backend + frontend engineer.
Integrate OpenAI LLM into the MicroDAO Agents system using:
@@ -528,11 +528,11 @@ Output:
- list of modified files
- diff
- summary
```
```text
---
# 17. Типи та інтерфейси
## 17. Типи та інтерфейси
## 17.1. ChatMessage
@@ -542,7 +542,7 @@ interface ChatMessage {
content: string;
timestamp?: string;
}
```
```text
## 17.2. LLMResponse
@@ -557,7 +557,7 @@ interface LLMResponse {
};
finishReason?: string;
}
```
```text
## 17.3. AgentChatRequest
@@ -575,11 +575,11 @@ interface AgentChatRequest {
stream?: boolean;
};
}
```
```text
---
# 18. Тестування
## 18. Тестування
## 18.1. Unit Tests
@@ -596,7 +596,7 @@ describe("openaiClient", () => {
expect(typeof response).toBe("string");
});
});
```
```text
## 18.2. Integration Tests
@@ -612,23 +612,23 @@ describe("Agent Chat Integration", () => {
expect(response.reply).toBeDefined();
});
});
```
```text
---
# 19. Результат
## 19. Результат
Після інтеграції:
* будь-який агент microDAO працює на GPT/LLM,
* онбординг веде агент-гіда,
* Team Assistant відповідає у чаті,
* Meta-Agent генерує покращення,
* вся система стає справжньою OS на базі ШІ.
- будь-який агент microDAO працює на GPT/LLM,
- онбординг веде агент-гіда,
- Team Assistant відповідає у чаті,
- Meta-Agent генерує покращення,
- вся система стає справжньою OS на базі ШІ.
---
# 20. Наступні кроки
## 20. Наступні кроки
Після базової інтеграції можна додати:
@@ -643,4 +643,3 @@ describe("Agent Chat Integration", () => {
**Готово.**
Це **повна специфікація інтеграції LLM**, готова до використання в Cursor.

View File

@@ -16,7 +16,7 @@
---
# 1. Базові принципи
## 1. Базові принципи
1. Агент — це **чиста функція + конфіг**.
@@ -38,7 +38,7 @@
---
# 2. Інтерфейси агента
## 2. Інтерфейси агента
```ts
export type AgentRole =
@@ -59,7 +59,7 @@ export interface AgentConfig {
modelHint?: string; // підказка для modelRouter
tools?: string[]; // назви інструментів, які дозволені
}
```
```text
Повідомлення:
@@ -72,11 +72,11 @@ export interface AgentMessage {
toolName?: string; // якщо role === "tool"
ts?: string;
}
```
```text
---
# 3. Runtime-контекст агента
## 3. Runtime-контекст агента
```ts
export interface AgentContext {
@@ -94,11 +94,11 @@ export interface AgentContext {
memory: AgentMemoryAdapter;
llm: AgentLLMAdapter;
}
```
```text
---
# 4. Інтерфейси Memory та LLM
## 4. Інтерфейси Memory та LLM
## 4.1. AgentMemoryAdapter
@@ -109,11 +109,11 @@ export interface AgentMemoryAdapter {
saveTurn(ctx: AgentContext, turn: AgentMessage): Promise<void>;
appendFact(ctx: AgentContext, fact: string): Promise<void>;
}
```
```text
* `short-term` — останні N ходів діалогу;
- `short-term` — останні N ходів діалогу;
* `long-term` — узагальнені знання про команду/проект.
- `long-term` — узагальнені знання про команду/проект.
## 4.2. AgentLLMAdapter
@@ -125,13 +125,13 @@ export interface AgentLLMAdapter {
options?: { modelHint?: string }
): Promise<string>;
}
```
```text
Фактична реалізація використовує `openaiClient` + `modelRouter` з `11_llm_integration.md`.
---
# 5. Інструменти (Tools)
## 5. Інструменти (Tools)
```ts
export type ToolFn = (ctx: AgentContext, args: any) => Promise<any>;
@@ -139,23 +139,23 @@ export type ToolFn = (ctx: AgentContext, args: any) => Promise<any>;
export interface ToolRegistry {
[name: string]: ToolFn;
}
```
```text
Приклади tools:
* `create_followup`
- `create_followup`
* `create_task`
- `create_task`
* `get_project_summary`
- `get_project_summary`
* `get_channel_history`
- `get_channel_history`
Інструменти не викликаються напряму з UI, тільки через агентський runtime.
---
# 6. Головна функція: runAgentTurn
## 6. Головна функція: runAgentTurn
```ts
export interface AgentTurnResult {
@@ -209,11 +209,11 @@ export async function runAgentTurn(ctx: AgentContext): Promise<AgentTurnResult>
return { reply, toolCalls };
}
```
```text
---
# 7. buildLLMMessages: як формується промпт
## 7. buildLLMMessages: як формується промпт
```ts
function buildLLMMessages(
@@ -240,43 +240,43 @@ function buildLLMMessages(
return [system, memoryMsg, ...shortTerm, userInput];
}
```
```text
Надалі:
* можна додати Co-Memory / RAG (витягнути релевантні факти з векторної БД);
- можна додати Co-Memory / RAG (витягнути релевантні факти з векторної БД);
* можна додати структуровані інструкції для tools.
- можна додати структуровані інструкції для tools.
---
# 8. Життєвий цикл одного запиту агента (end-to-end)
## 8. Життєвий цикл одного запиту агента (end-to-end)
1. UI (`AgentChatWindow` або `AgentOnboardingChat`) відправляє `/agents/{id}/chat`:
* `agentId`,
- `agentId`,
* `channelId`,
- `channelId`,
* `userId`,
- `userId`,
* `input` (текст користувача).
- `input` (текст користувача).
2. Backend:
* дістає `AgentConfig` з БД;
- дістає `AgentConfig` з БД;
* формує `AgentContext`:
- формує `AgentContext`:
* agent, teamId, channelId, userId,
- agent, teamId, channelId, userId,
* history (опційно),
- history (опційно),
* memory adapter,
- memory adapter,
* llm adapter,
- llm adapter,
* tools.
- tools.
3. Викликає `runAgentTurn(ctx)`.
@@ -288,15 +288,15 @@ function buildLLMMessages(
---
# 9. Інтеграція з SML / локальними моделями
## 9. Інтеграція з SML / локальними моделями
У майбутньому:
* `AgentLLMAdapter.complete` може:
- `AgentLLMAdapter.complete` може:
* для простих задач (класифікація, короткі відповіді) викликати локальний SML,
- для простих задач (класифікація, короткі відповіді) викликати локальний SML,
* для складних — OpenAI/велику LLM.
- для складних — OpenAI/велику LLM.
Псевдокод:
@@ -308,63 +308,63 @@ export async function complete(ctx, messages, options) {
return callLLM(messages, pickModel(ctx.agent.role));
}
}
```
```text
---
# 10. Використання для різних типів агентів
## 10. Використання для різних типів агентів
### Guide Agent (онбординг)
* той самий runtime,
- той самий runtime,
* інший `systemPrompt`,
- інший `systemPrompt`,
* інший набір tools:
- інший набір tools:
* `create_team`
- `create_team`
* `update_team_mode`
- `update_team_mode`
* `create_channel`
- `create_channel`
* `create_agent`
- `create_agent`
### Team Assistant
* general-purpose агент,
- general-purpose агент,
* має tools:
- має tools:
* `create_followup`
- `create_followup`
* `create_task`
- `create_task`
* `get_summary`
- `get_summary`
* `search_memory`
- `search_memory`
### Evolution Meta-Agent
* використовує:
- використовує:
* `conversation_log` як input,
- `conversation_log` як input,
* інший systemPrompt,
- інший systemPrompt,
* tools:
- tools:
* `create_improvement_proposal`
- `create_improvement_proposal`
* `update_agent_rules`
- `update_agent_rules`
---
# 11. Структура файлів
## 11. Структура файлів
## 11.1. Core Runtime
```
```text
src/agent-runtime/
core/
types.ts # AgentConfig, AgentContext, AgentMessage
@@ -379,18 +379,18 @@ src/agent-runtime/
createFollowup.ts # Інструмент створення follow-up
createTask.ts # Інструмент створення задачі
getSummary.ts # Інструмент отримання підсумку
```
```text
## 11.2. Контролери
```
```text
src/controllers/
agentsController.ts # HTTP endpoint /agents/{id}/chat
```
```text
---
# 12. Реалізація адаптерів
## 12. Реалізація адаптерів
## 12.1. Memory Adapter
@@ -447,7 +447,7 @@ export class DatabaseMemoryAdapter implements AgentMemoryAdapter {
});
}
}
```
```text
## 12.2. LLM Adapter
@@ -474,11 +474,11 @@ export class OpenAILLMAdapter implements AgentLLMAdapter {
return await callLLM(openaiMessages, model);
}
}
```
```text
---
# 13. Реєстр інструментів
## 13. Реєстр інструментів
```ts
import { ToolRegistry, ToolFn } from "./types";
@@ -506,11 +506,11 @@ export function getAvailableTools(agent: AgentConfig): ToolRegistry {
}
return registry;
}
```
```text
---
# 14. Парсинг викликів інструментів
## 14. Парсинг викликів інструментів
```ts
export function parseToolCalls(replyText: string): Array<{ name: string; args: any }> {
@@ -533,13 +533,13 @@ export function parseToolCalls(replyText: string): Array<{ name: string; args: a
return calls;
}
```
```text
Альтернативно, можна використовувати structured outputs або function calling API OpenAI.
---
# 15. HTTP Endpoint
## 15. HTTP Endpoint
```ts
import { Request, Response } from "express";
@@ -610,11 +610,11 @@ export async function chatWithAgent(req: Request, res: Response) {
res.status(500).json({ error: "Agent failed to respond" });
}
}
```
```text
---
# 16. Тестування
## 16. Тестування
## 16.1. Unit Tests
@@ -648,15 +648,15 @@ describe("runAgentTurn", () => {
expect(mockLLM.complete).toHaveBeenCalled();
});
});
```
```text
---
# 17. Завдання для Cursor
## 17. Завдання для Cursor
Приклад промта:
```
```text
You are a senior backend engineer.
Implement the Agent Runtime Core for MicroDAO using:
@@ -682,25 +682,24 @@ Output:
- list of modified files
- diff
- summary
```
```text
---
# 18. Результат
## 18. Результат
Після впровадження цього ядра:
* усі агенти MicroDAO працюють через єдиний runtime;
- усі агенти MicroDAO працюють через єдиний runtime;
* легко додавати нові типи агентів;
- легко додавати нові типи агентів;
* пам'ять, LLM і tools чітко відокремлені;
- пам'ять, LLM і tools чітко відокремлені;
* інтеграція з SML і DAGI стає питанням конфігурації, а не переписування коду.
- інтеграція з SML і DAGI стає питанням конфігурації, а не переписування коду.
---
**Готово.**
Це **повна специфікація Agent Runtime Core**, готова до використання в Cursor.

View File

@@ -14,7 +14,7 @@
---
# 1. Цілі системи памʼяті
## 1. Цілі системи памʼяті
1. Зробити агентів **контекстними**: вони памʼятають діалоги, рішення, факти.
@@ -38,7 +38,7 @@
---
# 2. Рівні памʼяті
## 2. Рівні памʼяті
## 2.1. Short-Term Memory (STM)
@@ -106,7 +106,7 @@
---
# 3. Простір памʼяті (Scopes)
## 3. Простір памʼяті (Scopes)
Памʼять розділяється за обсягом:
@@ -128,9 +128,9 @@
---
# 4. Модель даних
## 4. Модель даних
### Таблиці (логічно):
### Таблиці (логічно)
- `agent_memory_events`
@@ -172,7 +172,7 @@
---
# 5. AgentMemoryAdapter (деталізація)
## 5. AgentMemoryAdapter (деталізація)
Посилання на 12_agent_runtime_core.md:
@@ -183,41 +183,41 @@ export interface AgentMemoryAdapter {
saveTurn(ctx: AgentContext, turn: AgentMessage): Promise<void>;
appendFact(ctx: AgentContext, fact: string): Promise<void>;
}
```
```text
### 5.1. loadShortTerm
* Витягує останні `N` подій типу `kind = 'message'` зі scope `short_term` для:
- Витягує останні `N` подій типу `kind = 'message'` зі scope `short_term` для:
* `agent_id`,
- `agent_id`,
* `team_id`,
- `team_id`,
* `channel_id` (якщо є).
- `channel_id` (якщо є).
### 5.2. loadLongTerm
* Витягує список текстових фактів зі scope `long_term` (через `agent_memory_events` з `kind = 'fact'`).
- Витягує список текстових фактів зі scope `long_term` (через `agent_memory_events` з `kind = 'fact'`).
### 5.3. saveTurn
* Записує повідомлення user/assistant як `message` (short-term).
- Записує повідомлення user/assistant як `message` (short-term).
* Якщо увімкнено автоматичне ущільнення памʼяті — може переносити деякі фрагменти в mid-term.
- Якщо увімкнено автоматичне ущільнення памʼяті — може переносити деякі фрагменти в mid-term.
### 5.4. appendFact
* Додає факт у long-term (як `kind = 'fact'`).
- Додає факт у long-term (як `kind = 'fact'`).
* Додатково:
- Додатково:
* рахує ембедінг (через окремий LLM/embedding API),
- рахує ембедінг (через окремий LLM/embedding API),
* зберігає в `agent_memory_facts_vector`.
- зберігає в `agent_memory_facts_vector`.
---
# 6. RAG (Retrieval-Augmented Generation)
## 6. RAG (Retrieval-Augmented Generation)
### 6.1. Retrieval
@@ -227,9 +227,9 @@ export interface AgentMemoryAdapter {
2. Шукає релевантні факти у:
* `agent_memory_facts_vector`,
- `agent_memory_facts_vector`,
* (опційно) Co-Memory документів (файли, wiki).
- (опційно) Co-Memory документів (файли, wiki).
3. Обмежує контекст, наприклад Top-K = 510 фактів.
@@ -244,11 +244,11 @@ const memoryMsg: AgentMessage = {
"LONG_TERM_MEMORY:\n" +
retrievedFacts.map((f, i) => `- ${f.text}`).join("\n"),
};
```
```text
---
# 7. Перетікання памʼяті (compression / distillation)
## 7. Перетікання памʼяті (compression / distillation)
Щоб памʼять не перетворювалась на хаос, потрібні періодичні "distillation jobs".
@@ -262,85 +262,85 @@ const memoryMsg: AgentMessage = {
3. Отримуємо:
* конспект (summary),
- конспект (summary),
* витяг корисних фактів,
- витяг корисних фактів,
* пропозиції правил.
- пропозиції правил.
4. Записуємо:
* summary → mid-term,
- summary → mid-term,
* факти → long-term (appendFact),
- факти → long-term (appendFact),
* пропозиції → evolution suggestions.
- пропозиції → evolution suggestions.
### 7.2. Видалення шуму
Після успішної дистиляції:
* можна частину короткої памʼяті чистити;
- можна частину короткої памʼяті чистити;
* можна перевести непотрібні `message` у архів.
- можна перевести непотрібні `message` у архів.
---
# 8. Контроль з боку користувача
## 8. Контроль з боку користувача
У UI потрібно дати користувачу можливість:
1. Переглядати памʼять (принаймні long-term):
* список фактів,
- список фактів,
* розділений по каналах / темах.
- розділений по каналах / темах.
2. Видаляти факти:
* для конфіденційних даних,
- для конфіденційних даних,
* при помилках.
- при помилках.
3. Вимикати зберігання:
* «Не зберігати DM-переписку з агентом у довгострокову памʼять».
- «Не зберігати DM-переписку з агентом у довгострокову памʼять».
4. Експортувати памʼять:
* для аудиту / переносу.
- для аудиту / переносу.
---
# 9. Memory Scopes vs Agent Roles
## 9. Memory Scopes vs Agent Roles
### Guide Agent (онбординг)
* short-term: поточна сесія онбордингу;
- short-term: поточна сесія онбордингу;
* long-term: факти про те, як виглядає створена команда (не обовʼязково).
- long-term: факти про те, як виглядає створена команда (не обовʼязково).
### Team Assistant
* short-term: останні діалоги в конкретному каналі;
- short-term: останні діалоги в конкретному каналі;
* mid-term: summaries мітингів / сесій;
- mid-term: summaries мітингів / сесій;
* long-term: знання про команду, процеси, словник.
- long-term: знання про команду, процеси, словник.
### Meta-Agent
* працює на mid-/long-term даних:
- працює на mid-/long-term даних:
* аналізує їх,
- аналізує їх,
* пропонує зміни в правилах,
- пропонує зміни в правилах,
* оновлює памʼять.
- оновлює памʼять.
---
# 10. Псевдокод реалізації Adapter'а
## 10. Псевдокод реалізації Adapter'а
```ts
export class PgAgentMemoryAdapter implements AgentMemoryAdapter {
@@ -398,11 +398,11 @@ export class PgAgentMemoryAdapter implements AgentMemoryAdapter {
// TODO: обчислити embedding та зберегти у agent_memory_facts_vector
}
}
```
```text
---
# 11. RAG Implementation
## 11. RAG Implementation
## 11.1. Embedding Generation
@@ -417,7 +417,7 @@ export async function generateEmbedding(text: string): Promise<number[]> {
const result = await embeddings.embedQuery(text);
return result;
}
```
```text
## 11.2. Vector Search
@@ -448,7 +448,7 @@ export async function searchRelevantFacts(
score: r.similarity,
}));
}
```
```text
## 11.3. Integration with runAgentTurn
@@ -479,11 +479,11 @@ export async function runAgentTurn(ctx: AgentContext): Promise<AgentTurnResult>
// ... решта логіки
}
```
```text
---
# 12. Distillation Job Implementation
## 12. Distillation Job Implementation
```ts
export async function runDistillationJob(
@@ -569,11 +569,11 @@ export async function runDistillationJob(
},
});
}
```
```text
---
# 13. Database Schema
## 13. Database Schema
## 13.1. agent_memory_events
@@ -594,7 +594,7 @@ CREATE TABLE agent_memory_events (
INDEX idx_agent_channel (agent_id, channel_id),
INDEX idx_created_at (created_at)
);
```
```text
## 13.2. agent_memory_facts_vector
@@ -613,11 +613,11 @@ CREATE TABLE agent_memory_facts_vector (
INDEX idx_agent_team (agent_id, team_id),
INDEX idx_embedding USING ivfflat (embedding vector_cosine_ops)
);
```
```text
---
# 14. API Endpoints
## 14. API Endpoints
## 14.1. GET /agents/{id}/memory
@@ -640,7 +640,7 @@ export async function getAgentMemory(req: Request, res: Response) {
items: memory,
});
}
```
```text
## 14.2. DELETE /agents/{id}/memory/{memoryId}
@@ -657,7 +657,7 @@ export async function deleteMemoryItem(req: Request, res: Response) {
res.json({ success: true });
}
```
```text
## 14.3. POST /agents/{id}/memory/distill
@@ -676,33 +676,33 @@ export async function triggerDistillation(req: Request, res: Response) {
res.json({ success: true });
}
```
```text
---
# 15. Інтеграція з еволюційним агентом (09)
## 15. Інтеграція з еволюційним агентом (09)
Еволюційний агент:
* читає `agent_memory_events` (особливо з негативним фідбеком),
- читає `agent_memory_events` (особливо з негативним фідбеком),
* агрегує логи,
- агрегує логи,
* робить distillation,
- робить distillation,
* створює пропозиції покращень.
- створює пропозиції покращень.
Memory System → джерело для:
* аналізу діалогів,
- аналізу діалогів,
* виявлення патернів,
- виявлення патернів,
* побудови Train-to-Earn.
- побудови Train-to-Earn.
---
# 16. Тестування
## 16. Тестування
## 16.1. Unit Tests
@@ -733,15 +733,15 @@ describe("PgAgentMemoryAdapter", () => {
);
});
});
```
```text
---
# 17. Завдання для Cursor
## 17. Завдання для Cursor
Приклад промта:
```
```text
You are a senior backend engineer.
Implement the Agent Memory System for MicroDAO using:
@@ -769,25 +769,24 @@ Output:
- list of modified files
- diff
- summary
```
```text
---
# 18. Результат
## 18. Результат
Після впровадження цієї системи:
* агенти MicroDAO мають справжню багаторівневу памʼять;
- агенти MicroDAO мають справжню багаторівневу памʼять;
* можна керувати тим, що саме вони памʼятають;
- можна керувати тим, що саме вони памʼятають;
* можна будувати RAG, еволюційний аналіз, Train-to-Earn;
- можна будувати RAG, еволюційний аналіз, Train-to-Earn;
* перехід до DAGI стає природним — через спільну колективну памʼять агентів.
- перехід до DAGI стає природним — через спільну колективну памʼять агентів.
---
**Готово.**
Це **повна специфікація системи пам'яті агентів**, готова до використання в Cursor.

View File

@@ -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:
* знаходить 23 ключові канали,
- знаходить 23 ключові канали,
* дає короткі описи,
- дає короткі описи,
* пропонує їх відкрити.
- пропонує їх відкрити.
### Сценарій 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.

View File

@@ -2,11 +2,14 @@
Агент-проєктний менеджер для команд і спільнот
Цей документ описує агентський модуль "Проєкти" у MicroDAO — систему управління роботою, яка повністю працює через агентів. Проєкти, задачі, дедлайни, фоллоуапи та прогрес — це не просто дані, а живий простір, у якому взаємодіють люди та агенти microDAO.
Цей документ описує агентський модуль "Проєкти" у MicroDAO — систему
управління роботою, яка повністю працює через агентів. Проєкти, задачі,
дедлайни, фоллоуапи та прогрес — це не просто дані, а живий простір, у якому
взаємодіють люди та агенти microDAO.
---
# 1. Ідея
## 1. Ідея
Проєкт у MicroDAO — це:
@@ -19,7 +22,7 @@
---
# 2. Ролі агентів у модулі
## 2. Ролі агентів у модулі
## 2.1. Projects Agent (основний)
@@ -52,7 +55,7 @@
---
# 3. Структура проєкту
## 3. Структура проєкту
Проєкт складається з:
@@ -80,7 +83,7 @@
---
# 4. Модель задачі
## 4. Модель задачі
Задача (`task`) має:
@@ -101,7 +104,7 @@
---
# 5. Основні спроможності Projects Agent
## 5. Основні спроможності Projects Agent
## 5.1. Авто-створення задач з діалогів
@@ -160,7 +163,7 @@ Projects Agent може:
---
# 6. Tools для Projects Agent
## 6. Tools для Projects Agent
У форматі, що сумісний з Runtime Core (12).
@@ -194,7 +197,7 @@ Projects Agent може:
---
# 7. Інтеграція з Runtime Core (12)
## 7. Інтеграція з Runtime Core (12)
Projects Agent — звичайний агент:
@@ -215,57 +218,57 @@ const projectsAgentConfig: AgentConfig = {
"auto_followup"
],
};
```
```text
Projects Agent працює з:
* памʼяттю (13),
* каналами (14),
* еволюційним агентом (09),
* LLM (11).
- памʼяттю (13),
- каналами (14),
- еволюційним агентом (09),
- LLM (11).
---
# 8. Інтеграція з памʼяттю (13)
## 8. Інтеграція з памʼяттю (13)
Projects Agent використовує:
### 8.1. Short-Term Memory
* поточні обговорення задач у каналі проєкту.
- поточні обговорення задач у каналі проєкту.
### 8.2. Long-Term Memory
* ключові рішення команди,
* визначення задач і стандартів,
* історія пріоритетів.
- ключові рішення команди,
- визначення задач і стандартів,
- історія пріоритетів.
### 8.3. Mid-Term Memory
* summary спринтів,
* переліки завершених задач,
* звіти про прогрес.
- summary спринтів,
- переліки завершених задач,
- звіти про прогрес.
Projects Agent додає факти в памʼять:
* "Задачу X завершено 12 жовтня."
* "Проєкт переходить до етапу тестування."
- "Задачу X завершено 12 жовтня."
- "Проєкт переходить до етапу тестування."
---
# 9. Інтеграція з Messenger Agent (14)
## 9. Інтеграція з Messenger Agent (14)
Messenger Agent допомагає Projects Agent:
* показувати списки задач у чатах,
* формувати треди для задач,
* робити дайджести по каналах.
- показувати списки задач у чатах,
- формувати треди для задач,
- робити дайджести по каналах.
Projects Agent може викликати Messenger Agent через tools або через делегацію.
---
# 10. API для проєктів та задач
## 10. API для проєктів та задач
### 10.1. Projects
@@ -285,46 +288,46 @@ Projects Agent може викликати Messenger Agent через tools аб
---
# 11. UI інтеграція
## 11. UI інтеграція
## 11.1. Sidebar → Projects
У лівому сайдбарі в блоці "Простори" відображаються:
* список проєктів,
* кнопка "Створити проєкт".
- список проєктів,
- кнопка "Створити проєкт".
## 11.2. Right Sidebar → Project Context
Коли користувач знаходиться у каналі проєкту:
* правий сайдбар показує:
- правий сайдбар показує:
* назву проєкту,
* короткий опис,
* задачі по статусам,
* кнопку "Нова задача".
- назву проєкту,
- короткий опис,
- задачі по статусам,
- кнопку "Нова задача".
## 11.3. Task Panel
Клік по задачі відкриває:
* повну картку задачі,
* чат-тред задачі,
* дії:
- повну картку задачі,
- чат-тред задачі,
- дії:
* змінити статус,
* призначити,
* додати опис,
* переглянути памʼять.
- змінити статус,
- призначити,
- додати опис,
- переглянути памʼять.
---
# 12. Інструкції для Cursor
## 12. Інструкції для Cursor
Приклад промта:
```
```text
Implement the Projects Agent module using:
- 15_projects_agent_module.md
@@ -359,18 +362,16 @@ Output:
- list of changed files
- diff
- summary
```
```text
---
# 13. Результат
## 13. Результат
Після впровадження цього модуля:
* MicroDAO отримує повноцінний агентський менеджмент проєктів;
* задачі створюються з діалогів, а не через форму;
* агенти синхронізують роботу між каналами й людьми;
* зʼявляється можливість планувати спринти, отримувати прогрес і формувати дайджести;
* Projects Agent стає центральним "організатором роботи" у кожному microDAO.
- MicroDAO отримує повноцінний агентський менеджмент проєктів;
- задачі створюються з діалогів, а не через форму;
- агенти синхронізують роботу між каналами й людьми;
- зʼявляється можливість планувати спринти, отримувати прогрес і формувати дайджести;
- Projects Agent стає центральним "організатором роботи" у кожному microDAO.

View File

@@ -2,11 +2,14 @@
Агент-нагадувань, ритму та повторних дій у MicroDAO
Агент Follow-ups & Reminders (далі — Followup Agent) відповідає за ритм роботи, дисципліну задач, таймінг і "догляд" за станом спільноти та проєктів. Він є природним продовженням Projects Agent і Messenger Agent, але має власну функціональність і власну памʼять.
Агент Follow-ups & Reminders (далі — Followup Agent) відповідає за ритм
роботи, дисципліну задач, таймінг і "догляд" за станом спільноти та проєктів.
Він є природним продовженням Projects Agent і Messenger Agent, але має власну
функціональність і власну памʼять.
---
# 1. Ідея
## 1. Ідея
Followup Agent — це:
@@ -20,7 +23,7 @@ Followup Agent — це:
---
# 2. Ролі агентів у модулі
## 2. Ролі агентів у модулі
### 2.1. Followup Agent (основний)
@@ -44,7 +47,7 @@ Followup Agent — це:
---
# 3. Документи, які породжує Followup Agent
## 3. Документи, які породжує Followup Agent
Цей агент може автоматично створювати:
@@ -72,7 +75,7 @@ Followup Agent — це:
---
# 4. Logics — коли агент активується
## 4. Logics — коли агент активується
### 4.1. Фрази-тригери в чатах
@@ -113,7 +116,7 @@ Agent пропонує:
---
# 5. Інтеграція з Projects Agent
## 5. Інтеграція з Projects Agent
Followup Agent працює разом з Projects Agent:
@@ -123,13 +126,13 @@ Followup Agent працює разом з Projects Agent:
---
# 6. Tools (для інтеграції з Runtime Core)
## 6. Tools (для інтеграції з Runtime Core)
Список інструментів, які Followup Agent використовує у форматі 12_agent_runtime_core.md:
### 6.1. create_followup
```
```text
create_followup({
project_id?,
task_id?,
@@ -137,45 +140,45 @@ user_id?,
message,
schedule // "in 1 hour", "tomorrow 09:00", CRON-like
})
```
```text
### 6.2. create_reminder
```
```text
create_reminder({
user_id,
message,
schedule
})
```
```text
### 6.3. check_task_status
```
```text
check_task_status(task_id)
```
```text
### 6.4. ask_for_update
```
```text
ask_for_update(task_id, assignee)
```
```text
### 6.5. daily_digest
```
```text
daily_digest(project_id | team_id)
```
```text
### 6.6. weekly_review
```
```text
weekly_review(project_id | team_id)
```
```text
---
# 7. Memory інтеграція (13)
## 7. Memory інтеграція (13)
Followup Agent активно використовує памʼять:
@@ -200,7 +203,7 @@ Followup Agent активно використовує памʼять:
---
# 8. UI інтеграція
## 8. UI інтеграція
## 8.1. Sidebar / Панель фоллоуапів
@@ -237,7 +240,7 @@ Followup Agent постійно додає записи:
---
# 9. API
## 9. API
### 9.1. Follow-ups
@@ -258,7 +261,7 @@ Followup Agent постійно додає записи:
---
# 10. Agent конфіг у Runtime Core
## 10. Agent конфіг у Runtime Core
```ts
const followupAgentConfig: AgentConfig = {
@@ -277,15 +280,15 @@ const followupAgentConfig: AgentConfig = {
"weekly_review"
]
};
```
```text
---
# 11. Інструкції для Cursor
## 11. Інструкції для Cursor
Приклад промта:
```
```text
Implement the Follow-ups & Reminders Agent using:
- 16_followups_reminders_agent.md
@@ -323,17 +326,15 @@ Output:
- files list
- diff
- summary
```
```text
---
# 12. Результат
## 12. Результат
Після впровадження Followup Agent:
* microDAO має власного "агента-організатора ритму",
* задачі й домовленості ніколи не губляться,
* наявна здатність до самодисципліни та самонагляду,
* spільнота працює природно, без формальних таблиць чи менеджерів.
- microDAO має власного "агента-організатора ритму",
- задачі й домовленості ніколи не губляться,
- наявна здатність до самодисципліни та самонагляду,
- spільнота працює природно, без формальних таблиць чи менеджерів.

View File

@@ -11,7 +11,7 @@ Knowledge Space — це структурована навігація по ці
---
# 1. Призначення
## 1. Призначення
Co-Memory вирішує три завдання:
@@ -41,7 +41,7 @@ Knowledge Space — це не "Google Drive".
---
# 2. Що таке Knowledge Space
## 2. Що таке Knowledge Space
Knowledge Space — це:
@@ -67,7 +67,7 @@ Knowledge Space — це:
---
# 3. Структура Co-Memory
## 3. Структура Co-Memory
Co-Memory складається з:
@@ -115,7 +115,7 @@ Co-Memory складається з:
---
# 4. Агенти, пов'язані з Co-Memory
## 4. Агенти, пов'язані з Co-Memory
## 4.1. Memory Agent (основний)
@@ -153,7 +153,7 @@ Co-Memory складається з:
---
# 5. Життєвий цикл знань
## 5. Життєвий цикл знань
### Етап 1: Створення
@@ -190,7 +190,7 @@ Co-Memory складається з:
---
# 6. Структура даних
## 6. Структура даних
## 6.1. Таблиця `knowledge_spaces`
@@ -233,7 +233,7 @@ Co-Memory складається з:
---
# 7. Tools (сумісні з Runtime Core)
## 7. Tools (сумісні з Runtime Core)
### 7.1. add_document
@@ -263,7 +263,7 @@ RAG-пошук:
---
# 8. Інтеграція з Runtime Core (12)
## 8. Інтеграція з Runtime Core (12)
Memory Agent підключається як:
@@ -284,58 +284,58 @@ const memoryAgentConfig: AgentConfig = {
"link_knowledge"
]
};
```
```text
---
# 9. Інтеграція з Projects, Messenger, Followups
## 9. Інтеграція з Projects, Messenger, Followups
### Projects Agent
* додає факти про проєкт у Knowledge Space проєкту.
- додає факти про проєкт у Knowledge Space проєкту.
### Messenger Agent
* зберігає важливі уривки обговорень.
- зберігає важливі уривки обговорень.
### Followups Agent
* формує історію ритму та задач у вигляді нотаток.
- формує історію ритму та задач у вигляді нотаток.
---
# 10. UI
## 10. UI
## 10.1. Sidebar → Knowledge
* Список Knowledge Spaces.
* Кнопка "Створити новий простір знань".
- Список Knowledge Spaces.
- Кнопка "Створити новий простір знань".
## 10.2. Основний екран Knowledge Space
* Заголовок.
* Опис.
* Documents.
* Facts.
* Relations.
* Кнопка "Додати документ".
* Кнопка "Додати факт".
- Заголовок.
- Опис.
- Documents.
- Facts.
- Relations.
- Кнопка "Додати документ".
- Кнопка "Додати факт".
## 10.3. Правий сайдбар Knowledge
* Рекомендації від агентів.
* Семантичні групи.
* Контекстні звʼязки.
- Рекомендації від агентів.
- Семантичні групи.
- Контекстні звʼязки.
## 10.4. Чат взаємодії з Knowledge Guide
* "Поясни мені цей документ…"
* "Що ми знаємо про governance?"
* "Покажи всі визначення, повʼязані з DAGI."
- "Поясни мені цей документ…"
- "Що ми знаємо про governance?"
- "Покажи всі визначення, повʼязані з DAGI."
---
# 11. API
## 11. API
### 11.1. Knowledge Spaces
@@ -361,9 +361,9 @@ const memoryAgentConfig: AgentConfig = {
---
# 12. Інструкції для Cursor
## 12. Інструкції для Cursor
```
```text
Implement the Co-Memory & Knowledge Space module using:
- 17_comemory_knowledge_space.md
@@ -409,18 +409,17 @@ Output:
- list of changed files
- diff
- summary
```
```text
---
# 13. Результат
## 13. Результат
Після впровадження цього модуля:
* кожне microDAO отримує повноцінну еволюційну памʼять,
* агенти знають, що створює спільнота,
* знання не губляться в чатах — вони структуруються,
* DAGI отримує основу для глибинного reasoning,
* MicroDAO перетворюється на справжній "живий простір розуму".
- кожне microDAO отримує повноцінну еволюційну памʼять,
- агенти знають, що створює спільнота,
- знання не губляться в чатах — вони структуруються,
- DAGI отримує основу для глибинного reasoning,
- MicroDAO перетворюється на справжній "живий простір розуму".

View File

@@ -10,7 +10,7 @@
---
# 1. Призначення
## 1. Призначення
Governance & Access Agent відповідає за:
@@ -25,7 +25,7 @@ Governance & Access Agent відповідає за:
---
# 2. Ключові концепти
## 2. Ключові концепти
## 2.1. "Ключі спільноти" (Community Keys)
@@ -70,7 +70,7 @@ Governance & Access Agent відповідає за:
---
# 3. Роль Governance Agent
## 3. Роль Governance Agent
Роль агента: `"governance_core"`
@@ -85,7 +85,7 @@ Governance & Access Agent відповідає за:
---
# 4. Ролі Access Agent
## 4. Ролі Access Agent
Роль: `"access_keeper"`
@@ -102,7 +102,7 @@ Governance & Access Agent відповідає за:
---
# 5. Структура правил
## 5. Структура правил
## 5.1. Рівні правил
@@ -138,7 +138,7 @@ Governance & Access Agent відповідає за:
---
# 6. Інтеграція з RBAC та Entitlements
## 6. Інтеграція з RBAC та Entitlements
Використовується модуль `microdao — RBAC and Entitlements (MVP)`.
@@ -161,7 +161,7 @@ Governance Agent:
---
# 7. Ритуали узгодження
## 7. Ритуали узгодження
## 7.1. Створення ритуалу
@@ -196,7 +196,7 @@ Governance Agent:
---
# 8. Символічні ключі (Soulbound Keys)
## 8. Символічні ключі (Soulbound Keys)
Це:
@@ -217,7 +217,7 @@ Governance Agent:
---
# 9. Інтеграція з агентами інших модулів
## 9. Інтеграція з агентами інших модулів
### Messenger Agent
@@ -238,7 +238,7 @@ Governance Agent:
---
# 10. UI
## 10. UI
## 10.1. Sidebar → Правила
@@ -271,7 +271,7 @@ Governance Agent:
---
# 11. Tools (сумісно з Runtime Core)
## 11. Tools (сумісно з Runtime Core)
### 11.1. create_policy
@@ -306,7 +306,7 @@ Governance Agent:
---
# 12. Конфіг агента (Runtime Core)
## 12. Конфіг агента (Runtime Core)
```ts
const governanceAgentConfig: AgentConfig = {
@@ -326,11 +326,11 @@ const governanceAgentConfig: AgentConfig = {
"finalize_ritual"
]
};
```
```text
---
# 13. API
## 13. API
### Policies
@@ -352,9 +352,9 @@ const governanceAgentConfig: AgentConfig = {
---
# 14. Інструкції для Cursor
## 14. Інструкції для Cursor
```
```text
Implement the Governance & Access Agent using:
- 18_governance_access_agent.md
@@ -387,18 +387,17 @@ Output:
- list of changed files
- diff
- summary
```
```text
---
# 15. Результат
## 15. Результат
Після впровадження цього модуля:
* кожне microDAO отримує свою "конституцію",
* доступи стають функцією духу спільноти, а не технічних ролей,
* символічні ключі формують систему довіри,
* ритуали узгодження стають живою формою колективного рішення,
* Governance Agent забезпечує гармонію роботи людей і агентів.
- кожне microDAO отримує свою "конституцію",
- доступи стають функцією духу спільноти, а не технічних ролей,
- символічні ключі формують систему довіри,
- ритуали узгодження стають живою формою колективного рішення,
- Governance Agent забезпечує гармонію роботи людей і агентів.

View File

@@ -10,7 +10,7 @@ Notifications & Attention Agent (далі — Attention Agent) відповід
---
# 1. Призначення
## 1. Призначення
Attention Agent:
@@ -25,7 +25,7 @@ Attention Agent:
---
# 2. Проблеми, які він вирішує
## 2. Проблеми, які він вирішує
- надлишок сповіщень,
- інформаційне перевантаження,
@@ -37,7 +37,7 @@ Attention Agent:
---
# 3. Види уваги
## 3. Види уваги
Attention Agent працює з трьома видами уваги:
@@ -55,11 +55,11 @@ Attention Agent працює з трьома видами уваги:
---
# 4. Модель даних (log of events)
## 4. Модель даних (log of events)
Attention Agent працює поверх подій (`events`):
```
```text
event: {
id,
team_id,
@@ -68,13 +68,13 @@ source, // messenger, tasks, governance, agents...
payload, // JSON
ts
}
```
```text
Він визначає важливість і формує *streams of attention*.
---
# 5. Потоки уваги (Attention Streams)
## 5. Потоки уваги (Attention Streams)
### 5.1. High-Attention Stream
@@ -93,7 +93,7 @@ ts
---
# 6. Attention Agent — спроможності
## 6. Attention Agent — спроможності
## 6.1. Фільтрація шуму
@@ -151,7 +151,7 @@ ts
---
# 7. Інтеграція з агентами інших модулів
## 7. Інтеграція з агентами інших модулів
### Messenger Agent
@@ -176,7 +176,7 @@ ts
---
# 8. Tools (для Runtime Core)
## 8. Tools (для Runtime Core)
### 8.1. classify_event
@@ -204,7 +204,7 @@ ts
---
# 9. Інтеграція з Runtime Core (12)
## 9. Інтеграція з Runtime Core (12)
```ts
const attentionAgentConfig: AgentConfig = {
@@ -223,48 +223,48 @@ const attentionAgentConfig: AgentConfig = {
"highlight_critical"
]
};
```
```text
---
# 10. UI — візуалізація уваги
## 10. UI — візуалізація уваги
## 10.1. Панель уваги (Attention Panel)
Правий сайдбар у будь-якому контексті:
* топ важливих подій,
* пропущені сигнали,
* критичні оновлення.
- топ важливих подій,
- пропущені сигнали,
- критичні оновлення.
## 10.2. Центр уваги (Attention Hub)
Окремий екран:
* `/t/:teamId/attention`
- `/t/:teamId/attention`
Тут користувач бачить:
* "Важливе за сьогодні",
* "Критичне зараз",
* "Рекомендоване до перегляду".
- "Важливе за сьогодні",
- "Критичне зараз",
- "Рекомендоване до перегляду".
## 10.3. Дайджести
* кнопка "Огляд дня",
* кнопка "Огляд тижня".
- кнопка "Огляд дня",
- кнопка "Огляд тижня".
## 10.4. Налаштування уваги
Користувач може обрати:
* рівень чутливості,
* типи подій,
* тихі години.
- рівень чутливості,
- типи подій,
- тихі години.
---
# 11. API
## 11. API
### Події
@@ -279,9 +279,9 @@ const attentionAgentConfig: AgentConfig = {
---
# 12. Інструкції для Cursor
## 12. Інструкції для Cursor
```
```text
Implement the Notifications & Attention Agent using:
- 19_notifications_attention_agent.md
@@ -318,18 +318,17 @@ Output:
- file list
- diff
- summary
```
```text
---
# 13. Результат
## 13. Результат
Після впровадження цього модуля:
* спільнота перестає тонути в шумі,
* виникає природна структура уваги,
* критичні події не губляться,
* люди й агенти діють у правильному ритмі,
* інформаційне навантаження стає здоровим і екологічним.
- спільнота перестає тонути в шумі,
- виникає природна структура уваги,
- критичні події не губляться,
- люди й агенти діють у правильному ритмі,
- інформаційне навантаження стає здоровим і екологічним.

View File

@@ -9,7 +9,7 @@ Integrations & Bridges Agent — це модуль, який забезпечу
---
# 1. Призначення
## 1. Призначення
Bridges Agent виконує функції:
@@ -25,7 +25,7 @@ Bridges Agent виконує функції:
---
# 2. Види інтеграцій
## 2. Види інтеграцій
### 2.1. Месенджери та комунікаційні сервіси
@@ -65,7 +65,7 @@ Bridges Agent виконує функції:
---
# 3. Агенти інтеграцій
## 3. Агенти інтеграцій
Модуль складається із під-агентів:
@@ -102,7 +102,7 @@ Bridges Agent виконує функції:
---
# 4. Модель інтеграції
## 4. Модель інтеграції
### 4.1. Таблиця інтеграцій
@@ -119,7 +119,7 @@ Bridges Agent виконує функції:
Всі зовнішні події конвертуються у універсальний формат:
```
```text
event: {
id,
team_id,
@@ -128,7 +128,7 @@ type, // message | file | issue | event | calendar_update ...
payload, // JSON
ts
}
```
```text
Цей формат потім обробляється:
@@ -140,7 +140,7 @@ ts
---
# 5. Основні сценарії
## 5. Основні сценарії
### 5.1. Telegram → microDAO
@@ -175,7 +175,7 @@ ts
---
# 6. Інтеграція з Runtime Core (12)
## 6. Інтеграція з Runtime Core (12)
Основний агент:
@@ -196,13 +196,13 @@ const bridgesAgentConfig: AgentConfig = {
"disable_integration"
]
};
```
```text
Адаптери — це окремі агенти з вузькими tools.
---
# 7. Tools (для Runtime Core)
## 7. Tools (для Runtime Core)
### 7.1. register_integration
@@ -230,36 +230,36 @@ const bridgesAgentConfig: AgentConfig = {
---
# 8. UI
## 8. UI
## 8.1. Sidebar → Інтеграції
* список інтеграцій,
* кнопка "Підключити інтеграцію".
- список інтеграцій,
- кнопка "Підключити інтеграцію".
## 8.2. Модалка підключення інтеграції
* вибір сервісу: Telegram / Email / Calendar / GitHub / Custom API,
* ввод даних підключення,
* тестування підключення,
* збереження.
- вибір сервісу: Telegram / Email / Calendar / GitHub / Custom API,
- ввод даних підключення,
- тестування підключення,
- збереження.
## 8.3. Профіль інтеграції
* історія подій,
* статус,
* налаштування,
* кнопка "Вимкнути".
- історія подій,
- статус,
- налаштування,
- кнопка "Вимкнути".
## 8.4. Cross-microDAO панель
* список підключених DAO,
* права та контексти,
* статуси синхронізації.
- список підключених DAO,
- права та контексти,
- статуси синхронізації.
---
# 9. API
## 9. API
### Інтеграції
@@ -280,9 +280,9 @@ const bridgesAgentConfig: AgentConfig = {
---
# 10. Інструкції для Cursor
## 10. Інструкції для Cursor
```
```text
Implement the Integrations & Bridges Agent using:
- 20_integrations_bridges_agent.md
@@ -329,18 +329,17 @@ Output:
- list of modified files
- diff
- summary
```
```text
---
# 11. Результат
## 11. Результат
Після впровадження:
* microDAO стає мережевим вузлом,
* агенти можуть діяти в кількох просторах,
* знання й події можуть перетікати між DAO,
* зовнішні інструменти інтегруються легко та безпечно,
* DAARION.city отримує основу для єдиного агентського всесвіту.
- microDAO стає мережевим вузлом,
- агенти можуть діяти в кількох просторах,
- знання й події можуть перетікати між DAO,
- зовнішні інструменти інтегруються легко та безпечно,
- DAARION.city отримує основу для єдиного агентського всесвіту.

View File

@@ -24,7 +24,7 @@
---
# 1. Мета
## 1. Мета
Перетворити MicroDAO на **агентську ОС спільнот**, де:
@@ -42,11 +42,11 @@
- діалог з агентом,
- + технічні дії (RBAC, entitlements, web3-транзакції).
- технічні дії (RBAC, entitlements, web3-транзакції).
---
# 2. Загальний layout агентської ОС
## 2. Загальний layout агентської ОС
## 2.1. Лівий сайдбар — Простори та Учасники
@@ -146,7 +146,7 @@
---
# 3. Панель "Люди / Агенти / Роботи"
## 3. Панель "Люди / Агенти / Роботи"
## 3.1. Люди
@@ -224,7 +224,7 @@
---
# 4. Запрошення агентів до каналів/чатів
## 4. Запрошення агентів до каналів/чатів
## 4.1. UX-флоу
@@ -292,7 +292,7 @@
---
# 5. Обмін проєктами / базами даних між людьми та агентами
## 5. Обмін проєктами / базами даних між людьми та агентами
## 5.1. Поняття "Ресурсу"
@@ -356,7 +356,7 @@
---
# 6. "Agent Hub" — стартовий екран без меню
## 6. "Agent Hub" — стартовий екран без меню
Замість класичного "Home":
@@ -408,7 +408,7 @@
---
# 7. Мінімальний MVP цієї парадигми
## 7. Мінімальний MVP цієї парадигми
Для першої реалізації (без надроздуття):
@@ -444,11 +444,11 @@
---
# 8. Компоненти та структура
## 8. Компоненти та структура
## 8.1. Layout Components
```
```text
src/layouts/
AgentOSLayout.tsx # Головний layout з 3 колонками
LeftSidebar.tsx # Простори + Учасники
@@ -456,24 +456,24 @@ src/layouts/
RightSidebar.tsx # Контекст + Ресурси
ContextPanel.tsx # Панель контексту
ResourcesPanel.tsx # Панель ресурсів
```
```text
## 8.2. Pages
```
```text
src/pages/
AgentHubPage.tsx # /t/:teamId/home - стартовий екран
ParticipantPage.tsx # Сторінка учасника (людина/агент)
```
```text
## 8.3. Modals
```
```text
src/components/modals/
AddParticipantModal.tsx # Додати учасника до каналу/чату
ShareResourceModal.tsx # Поділитися ресурсом
ManageAccessModal.tsx # Керування доступами
```
```text
## 8.4. Types
@@ -501,11 +501,11 @@ interface Entitlement {
resourceId: string;
scopes: string[];
}
```
```text
---
# 9. API Endpoints
## 9. API Endpoints
## 9.1. Participants
@@ -523,7 +523,7 @@ POST /channels/{channelId}/participants
participantType: "human" | "agent";
scopes: string[];
}
```
```text
## 9.2. Resources
@@ -537,7 +537,7 @@ POST /resources/{resourceId}/share
participantIds: string[];
scopes: string[];
}
```
```text
## 9.3. Entitlements
@@ -553,11 +553,11 @@ POST /entitlements
resourceId: string;
scopes: string[];
}
```
```text
---
# 10. Інтеграція з існуючими модулями
## 10. Інтеграція з існуючими модулями
## 10.1. Messenger Agent (14)
@@ -585,11 +585,11 @@ Governance Agent:
---
# 11. Завдання для Cursor
## 11. Завдання для Cursor
Приклад промта:
```
```text
You are a senior React/TS engineer.
Implement the Agent-Only Interface shell using:
@@ -626,29 +626,27 @@ Output:
- list of modified files
- diff
- summary
```
```text
---
# 12. Результат
## 12. Результат
Після впровадження цього модуля:
* MicroDAO отримує "агентський" каркас інтерфейсу:
- MicroDAO отримує "агентський" каркас інтерфейсу:
* вхід через Agent Hub,
- вхід через Agent Hub,
* центральна роль агентів,
- центральна роль агентів,
* простий механізм запрошення агентів,
- простий механізм запрошення агентів,
* базові flows шерингу ресурсів;
- базові flows шерингу ресурсів;
* класичний месенджер (документ 14) стає лише однією з "здібностей" всередині агентської ОС, а не центром продукту.
- класичний месенджер (документ 14) стає лише однією з "здібностей" всередині агентської ОС, а не центром продукту.
---
**Готово.**
Це **повна специфікація Agent-Only Interface**, готова до використання в Cursor.

View File

@@ -8,7 +8,7 @@
---
# Task 1 — UI-Agents-List (People / Agents / Robots панель)
## Task 1 — UI-Agents-List (People / Agents / Robots панель)
## Мета
@@ -18,62 +18,62 @@
### 1. Розташування
* Лівий сайдбар, нижче/поруч з блоком "Простори (microDAO)".
* Заголовок: `Учасники`.
* Вкладки або груповані секції:
- Лівий сайдбар, нижче/поруч з блоком "Простори (microDAO)".
- Заголовок: `Учасники`.
- Вкладки або груповані секції:
* `Люди`
* `Агенти`
* `Роботи` (поки список порожній, з текстом "Скоро").
- `Люди`
- `Агенти`
- `Роботи` (поки список порожній, з текстом "Скоро").
### 2. Дані
* People:
- People:
* `id`, `display_name`, `avatar_url`, `online_status`.
- `id`, `display_name`, `avatar_url`, `online_status`.
* Agents:
- Agents:
* `id`, `name`, `role`, `avatar`, maybe `type` (system/custom).
- `id`, `name`, `role`, `avatar`, maybe `type` (system/custom).
* Robots:
- Robots:
* поки просто статичний текст: "Роботи поки не під'єднані".
- поки просто статичний текст: "Роботи поки не під'єднані".
На бекенді: можна зробити:
* `GET /participants?team_id=...``{ people: [...], agents: [...] }`
- `GET /participants?team_id=...``{ people: [...], agents: [...] }`
або окремі запити `GET /members`, `GET /agents`.
### 3. UI-поведінка
* Клік по Людині:
- Клік по Людині:
* відкриває DM-чат `/t/:teamId/dm/:userId`.
- відкриває DM-чат `/t/:teamId/dm/:userId`.
* Клік по Агенту:
- Клік по Агенту:
* відкриває сторінку агента `/t/:teamId/agent/:agentId`
- відкриває сторінку агента `/t/:teamId/agent/:agentId`
або агент-чат.
* Список скролиться, якщо елементів багато.
- Список скролиться, якщо елементів багато.
### 4. Інтеграція з існуючим кодом
* Використати загальні компоненти `Sidebar`, `Avatar`, `ListItem`.
* Типи/інтерфейси привести до стандартів з `05_coding_standards.md`.
- Використати загальні компоненти `Sidebar`, `Avatar`, `ListItem`.
- Типи/інтерфейси привести до стандартів з `05_coding_standards.md`.
## Acceptance Criteria
* У лівому сайдбарі є блок "Учасники" з секціями `Люди`, `Агенти`, `Роботи`.
* Для `Людей` і `Агентів` рендеряться реальні дані з API (або mock, якщо API ще нема).
* Клік по Людині відкриває приватний чат (навіть якщо поки stub).
* Клік по Агенту відкриває сторінку/чат агента.
* "Роботи" відображаються як порожній список з плейсхолдером.
- У лівому сайдбарі є блок "Учасники" з секціями `Люди`, `Агенти`, `Роботи`.
- Для `Людей` і `Агентів` рендеряться реальні дані з API (або mock, якщо API ще нема).
- Клік по Людині відкриває приватний чат (навіть якщо поки stub).
- Клік по Агенту відкриває сторінку/чат агента.
- "Роботи" відображаються як порожній список з плейсхолдером.
## Приклад промта для Cursor
```
```text
Implement the Participants panel (People / Agents / Robots) in the left sidebar using:
- 21_agent_only_interface.md
@@ -88,7 +88,7 @@ Deliverables:
- Click on an Agent opens `/t/:teamId/agent/:agentId`.
Output: list of files + diff + summary.
```
```text
---
@@ -102,65 +102,65 @@ Output: list of files + diff + summary.
### 1. Де викликається
* У header каналу/чату — кнопка `+ Додати учасника`.
* Доступна тільки для користувача з правами `admin`/`owner` (поки можна не перевіряти, просто буде кнопка).
- У header каналу/чату — кнопка `+ Додати учасника`.
- Доступна тільки для користувача з правами `admin`/`owner` (поки можна не перевіряти, просто буде кнопка).
### 2. Модалка
* Заголовок: "Додати учасника".
* Tabs:
- Заголовок: "Додати учасника".
- Tabs:
* `Люди`
* `Агенти`
* Із них нас цікавить вкладка `Агенти`.
- `Люди`
- `Агенти`
- Із них нас цікавить вкладка `Агенти`.
### 3. Вкладка "Агенти"
* Список доступних агентів з пошуком.
* По кліку на агента або чекбоксом обираємо 1N агентів.
- Список доступних агентів з пошуком.
- По кліку на агента або чекбоксом обираємо 1N агентів.
### 4. Налаштування прав
* Секція "Права в цьому каналі":
- Секція "Права в цьому каналі":
* `[ ] Читати`
* `[ ] Писати`
* `[ ] Створювати задачі / follow-ups`
* За замовчуванням: `Читати` увімкнено, інші вимкнено.
- `[ ] Читати`
- `[ ] Писати`
- `[ ] Створювати задачі / follow-ups`
- За замовчуванням: `Читати` увімкнено, інші вимкнено.
### 5. API / Entitlements
* On Submit:
- On Submit:
* `POST /entitlements` (або аналог) із даними:
- `POST /entitlements` (або аналог) із даними:
* `agent_id`
* `resource_kind: "channel"`
* `resource_id: channelId`
* `scopes: ["read", "write", "tasks"]` (залежить від чекбоксів)
- `agent_id`
- `resource_kind: "channel"`
- `resource_id: channelId`
- `scopes: ["read", "write", "tasks"]` (залежить від чекбоксів)
* Web3 Stub:
- Web3 Stub:
* В коді робимо виклик функції `governance.issueAccessToken(...)` або логування TODO;
* Реальної транзакції поки не робимо.
- В коді робимо виклик функції `governance.issueAccessToken(...)` або логування TODO;
- Реальної транзакції поки не робимо.
### 6. UX
* Після успіху модалка закривається.
* У хедері каналу в списку учасників зʼявляється новий агент.
- Після успіху модалка закривається.
- У хедері каналу в списку учасників зʼявляється новий агент.
## Acceptance Criteria
* У кожному каналі/чаті є кнопка "Додати учасника".
* В модалці є вкладка "Агенти" зі списком наявних агентів.
* Можна обрати агента, налаштувати права, натиснути "Запросити".
* На бекенді зберігаються entitlements (навіть якщо прості JSON у БД).
* Після додавання агент показується як учасник каналу.
* В коді є очевидний Stub для майбутньої web3 інтеграції.
- У кожному каналі/чаті є кнопка "Додати учасника".
- В модалці є вкладка "Агенти" зі списком наявних агентів.
- Можна обрати агента, налаштувати права, натиснути "Запросити".
- На бекенді зберігаються entitlements (навіть якщо прості JSON у БД).
- Після додавання агент показується як учасник каналу.
- В коді є очевидний Stub для майбутньої web3 інтеграції.
## Приклад промта для Cursor
```
```text
Implement the "Invite Agent" flow for channels using:
- 21_agent_only_interface.md
@@ -176,7 +176,7 @@ Deliverables:
4) POST entitlements call to store agent-channel permissions (web3 as stub hook).
Output: list of files + diff + summary.
```
```text
---
@@ -190,64 +190,64 @@ Output: list of files + diff + summary.
### 1. Ресурси для MVP
* Почати з `Проєктів` (Projects Agent з документу 15).
* Інтерфейс у правому сайдбарі для активного контексту:
- Почати з `Проєктів` (Projects Agent з документу 15).
- Інтерфейс у правому сайдбарі для активного контексту:
* розділ "Проєкти цього контексту",
* кожен проєкт має кнопку `⋯``Поділитися`.
- розділ "Проєкти цього контексту",
- кожен проєкт має кнопку `` → `Поділитися`.
### 2. Модалка "Поділитися проєктом"
* Заголовок: "Поділитися проєктом".
* Tabs:
- Заголовок: "Поділитися проєктом".
- Tabs:
* `Люди`
* `Агенти`
* Список одержувачів з пошуком.
- `Люди`
- `Агенти`
- Список одержувачів з пошуком.
### 3. Права доступу
* Радіо-кнопки або чекбокси:
- Радіо-кнопки або чекбокси:
* `Тільки читати`
* `Читати і оновлювати задачі`
* `Адмініструвати проєкт`
* Для MVP:
- `Тільки читати`
- `Читати і оновлювати задачі`
- `Адмініструвати проєкт`
- Для MVP:
* мапимо на `["read"]`, `["read","write"]`, `["admin"]`.
- мапимо на `["read"]`, `["read","write"]`, `["admin"]`.
### 4. API / Entitlements
* `POST /entitlements`:
- `POST /entitlements`:
* `resource_kind: "project"`
* `resource_id: projectId`
* `subject_kind: "user" | "agent"`
* `subject_id: ...`
* `scopes: [...]`
- `resource_kind: "project"`
- `resource_id: projectId`
- `subject_kind: "user" | "agent"`
- `subject_id: ...`
- `scopes: [...]`
* Web3 Stub:
- Web3 Stub:
* так само, як у Task 2 — залишити хук/функцію для майбутньої транзакції.
- так само, як у Task 2 — залишити хук/функцію для майбутньої транзакції.
### 5. Відображення
* У правому сайдбарі для вибраного проєкту:
- У правому сайдбарі для вибраного проєкту:
* короткий список: хто має доступ (іконки + тип: людина/агент).
* посилання "Керувати доступами" (можна виводити ту ж саму модалку).
- короткий список: хто має доступ (іконки + тип: людина/агент).
- посилання "Керувати доступами" (можна виводити ту ж саму модалку).
## Acceptance Criteria
* У правому сайдбарі є список проєктів для контексту (навіть якщо один).
* Для кожного проєкту доступна дія "Поділитися".
* Модалка дозволяє вибрати людей/агентів і рівень доступу.
* Після підтвердження зʼявляються записи entitlements.
* У правій панелі видно, що проєкт поділено з конкретними субʼєктами.
- У правому сайдбарі є список проєктів для контексту (навіть якщо один).
- Для кожного проєкту доступна дія "Поділитися".
- Модалка дозволяє вибрати людей/агентів і рівень доступу.
- Після підтвердження зʼявляються записи entitlements.
- У правій панелі видно, що проєкт поділено з конкретними субʼєктами.
## Приклад промта для Cursor
```
```text
Implement the "Share Project" flow as the first Resource Sharing feature using:
- 21_agent_only_interface.md
@@ -264,7 +264,7 @@ Deliverables:
5) Show who has access in the sidebar (avatars + type).
Output: list of files + diff + summary.
```
```text
---
@@ -278,63 +278,63 @@ Output: list of files + diff + summary.
### 1. Новий маршрут
* `GET /t/:teamId/home` (frontend route).
* Відображає `AgentHubPage`.
- `GET /t/:teamId/home` (frontend route).
- Відображає `AgentHubPage`.
### 2. AgentHubPage структура
* Верх:
- Верх:
* заголовок: `microDAO: {team.name}`
* короткі віджети (можуть бути stub):
- заголовок: `microDAO: {team.name}`
- короткі віджети (можуть бути stub):
* "Учасники: X людей, Y агентів"
* "Активні проєкти: N"
- "Учасники: X людей, Y агентів"
- "Активні проєкти: N"
* Центр:
- Центр:
* чат з головним агентом (Team Assistant або спеціальний OS Agent):
- чат з головним агентом (Team Assistant або спеціальний OS Agent):
* використовує вже існуючий `AgentChatWindow`.
* агент_id береться з конфіг (наприклад, "team_assistant" для цієї команди).
- використовує вже існуючий `AgentChatWindow`.
- агент_id береться з конфіг (наприклад, "team_assistant" для цієї команди).
* Праворуч:
- Праворуч:
* контекст (список проєктів / каналів / ресурсів — поки можна stub).
- контекст (список проєктів / каналів / ресурсів — поки можна stub).
### 3. Поведінка чату
* Перший запуск:
- Перший запуск:
* агент вітається, якщо немає історії:
- агент вітається, якщо немає історії:
> "Привіт, це твій Agent Hub. Я допоможу керувати твоєю microDAO."
* Далі:
- Далі:
* користувач може написати запит, наприклад:
- користувач може написати запит, наприклад:
* "Покажи активні проєкти"
* "Відкрий канал #dev-mvp"
* "Хочу створити новий проєкт"
* Поки що можна зробити stub-відповіді, якщо Projects/Messenger Agents ще не реалізовані.
- "Покажи активні проєкти"
- "Відкрий канал #dev-mvp"
- "Хочу створити новий проєкт"
- Поки що можна зробити stub-відповіді, якщо Projects/Messenger Agents ще не реалізовані.
### 4. Навігація
* Кнопка/посилання "Головна" у лівому сайдбарі веде на `/t/:teamId/home`.
* Після успішного онбордингу (з `08_agent_first_onboarding.md`) редірект також може йти на Agent Hub.
- Кнопка/посилання "Головна" у лівому сайдбарі веде на `/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, а не просто черговий канал.
- Існує маршрут `/t/:teamId/home`, який рендерить Agent Hub.
- У центрі — робочий чат з Team Assistant (через `/agents/{id}/chat` endpoint).
- У сайдбарі є посилання "Головна" / "Agent Hub", що веде на цей екран.
- Якщо історії немає — агент показує вітальний меседж.
- Екран виглядає як "головна консоль" microDAO, а не просто черговий канал.
## Приклад промта для Cursor
```
```text
Implement the Agent Hub Home screen using:
- 21_agent_only_interface.md
@@ -353,7 +353,7 @@ Deliverables:
3) "Home / Agent Hub" entry in left sidebar that routes to `/t/:teamId/home`.
Output: list of files + diff + summary.
```
```text
---
@@ -409,4 +409,3 @@ Output: list of files + diff + summary.
**Готово.**
Це **структурований список задач для Agent-Only Interface**, готовий до використання в Cursor.

View File

@@ -8,7 +8,7 @@
---
# 1. Основні типи системних агентів
## 1. Основні типи системних агентів
MicroDAO має три фундаментальні типи агентів:
@@ -21,7 +21,7 @@ MicroDAO має три фундаментальні типи агентів:
---
# 2. Особистий агент (Personal Agent)
## 2. Особистий агент (Personal Agent)
### 2.1. Призначення
Особистий агент — це "внутрішній супутник" людини в екосистемі microDAO:
@@ -58,25 +58,25 @@ operatorMode: {
schedule: "*/20 * * * *", // кожні 20 хвилин (приклад)
maxActionsPerHour: 10
}
```
```text
---
# 3. Спільний агент (Team/Shared Agent)
## 3. Спільний агент (Team/Shared Agent)
### 3.1. Призначення
Це агенти:
* Team Assistant,
* Messenger Agent,
* Projects Agent,
* Followups Agent,
* Memory Agent,
* Attention Agent,
* Knowledge Guide,
* Bridges Agent,
* Governance Agent.
- Team Assistant,
- Messenger Agent,
- Projects Agent,
- Followups Agent,
- Memory Agent,
- Attention Agent,
- Knowledge Guide,
- Bridges Agent,
- Governance Agent.
Вони працюють на рівні microDAO (колективний простір).
@@ -84,11 +84,11 @@ operatorMode: {
Спільні агенти можуть отримувати доступ до:
* каналів,
* проектів,
* документів Knowledge Space,
* ритуалів узгодження,
* Co-Memory microDAO.
- каналів,
- проектів,
- документів Knowledge Space,
- ритуалів узгодження,
- Co-Memory microDAO.
Доступи обмежуються entitlements — кожен агент бачить лише те, що дозволено.
@@ -110,30 +110,29 @@ operatorMode: {
schedule: "0 * * * *", // щогодини
maxActionsPerHour: 30
}
```
```text
Операторські дії **завжди логуються** в Co-Memory.
---
# 4. Protocol Agents: DAO Agent і Wallet Agent
## 4. Protocol Agents: DAO Agent і Wallet Agent
Ці агенти не є "учасниками" в комунікації, а швидше **протокольними модулями**.
---
# 4.1. DAO Agent
## 4.1. DAO Agent
Роль: `"dao_protocol_agent"`
### Призначення
- **Призначення**
DAO Agent відповідає за:
* зв'язок із зовнішнім DAO-протоколом (якщо microDAO його має),
* синхронізацію правил із контрактами,
* оновлення локальних правил на основі зовнішніх церемоній,
* відправку ритуалів узгодження в DAO-контракт (якщо дозволено).
- зв'язок із зовнішнім DAO-протоколом (якщо microDAO його має),
- синхронізацію правил із контрактами,
- оновлення локальних правил на основі зовнішніх церемоній,
- відправку ритуалів узгодження в DAO-контракт (якщо дозволено).
### Інтерфейс (tools)
@@ -144,7 +143,7 @@ tools: [
"submit_ritual_to_dao",
"resolve_dao_result"
]
```
```text
### Оператор-режим
@@ -152,31 +151,30 @@ DAO Agent завжди працює **строго у командному ма
---
# 4.2. Wallet Agent
## 4.2. Wallet Agent
Роль: `"wallet_interface_agent"`
### Призначення
- **Призначення**
Wallet Agent — це **інтерфейс** між microDAO/агентами та:
* криптографічним підписом,
* зовнішніми гаманцями користувачів,
* фізичними ключами (Tangem-подібні),
* системою capability-доступів.
- криптографічним підписом,
- зовнішніми гаманцями користувачів,
- фізичними ключами (Tangem-подібні),
- системою capability-доступів.
Wallet Agent **не зберігає приватні ключі**.
Він:
* формує пояснення:
- формує пояснення:
* "що саме підписується",
* "чому це потрібно",
* "які наслідки";
- "що саме підписується",
- "чому це потрібно",
- "які наслідки";
* відправляє payload на зовнішній Signer;
* отримує підписаний результат і повертає агенту, що ініціював дію.
- відправляє payload на зовнішній Signer;
- отримує підписаний результат і повертає агенту, що ініціював дію.
### Tools
@@ -187,11 +185,11 @@ tools: [
"verify_signature",
"get_wallet_state"
]
```
```text
---
# 5. Модель operatorMode
## 5. Модель operatorMode
Операторський режим є **частиною конфігурації кожного агента**.
@@ -203,7 +201,7 @@ interface OperatorModeConfig {
schedule?: string; // CRON або natural language
maxActionsPerHour?: number;
}
```
```text
У `AgentConfig`:
@@ -212,14 +210,14 @@ interface AgentConfig {
...
operatorMode?: OperatorModeConfig;
}
```
```text
### 5.1. Scopes
* `"personal"` — особистий простір користувача;
* `"team"` — командний рівень microDAO;
* `"project"` — окремий проєкт;
* `"channel"` — конкретний канал/чат.
- `"personal"` — особистий простір користувача;
- `"team"` — командний рівень microDAO;
- `"project"` — окремий проєкт;
- `"channel"` — конкретний канал/чат.
### 5.2. Режими
@@ -247,89 +245,89 @@ interface AgentConfig {
---
# 6. Модель системних агентів у БД
## 6. Модель системних агентів у БД
### Таблиця `system_agents`
* id
* team_id
* type (`personal`, `team`, `protocol`)
* role
* operator_enabled
* config_json (включає operatorMode)
* created_at
- id
- team_id
- type (`personal`, `team`, `protocol`)
- role
- operator_enabled
- config_json (включає operatorMode)
- created_at
### Таблиця `agent_permissions`
* id
* agent_id
* resource_kind
* resource_id
* scopes (json array)
* created_at
- id
- agent_id
- resource_kind
- resource_id
- scopes (json array)
- created_at
### Таблиця `operator_logs`
* id
* agent_id
* action
* payload_json
* context
* created_at
- id
- agent_id
- action
- payload_json
- context
- created_at
---
# 7. Інтеграція з доступами та ключами (Governance Agent)
## 7. Інтеграція з доступами та ключами (Governance Agent)
OperatorMode завжди працює у звʼязці з:
* entitlements,
* symbolic keys,
* governance_policies.
- entitlements,
- symbolic keys,
- governance_policies.
Наприклад:
* Personal Agent має ключ рівня `personal-scope`.
* Projects Agent має ключ `project-operator`.
* DAO Agent має ключ `protocol-access`, який Governance Agent може видати або анулювати.
- Personal Agent має ключ рівня `personal-scope`.
- Projects Agent має ключ `project-operator`.
- DAO Agent має ключ `protocol-access`, який Governance Agent може видати або анулювати.
---
# 8. UI-інтеграція
## 8. UI-інтеграція
### 8.1. Сторінка Агентів
У профілі агента:
* показати блок **"Режим оператора"**:
- показати блок **"Режим оператора"**:
* увімкнено/вимкнено,
* дозволені дії,
* сфери дії,
* розклад.
- увімкнено/вимкнено,
- дозволені дії,
- сфери дії,
- розклад.
### 8.2. Налаштування microDAO
Окремий розділ:
* "Системні агенти"
- "Системні агенти"
* Personal Agent (індивідуальний)
* Team Agents (список)
* Protocol Agents
- Personal Agent (індивідуальний)
- Team Agents (список)
- Protocol Agents
### 8.3. Журнал операторських дій
* список автоматичних дій агентів,
* фільтри: агент → проєкт → тип дії.
- список автоматичних дій агентів,
- фільтри: агент → проєкт → тип дії.
---
# 9. Інструкції для Cursor
## 9. Інструкції для Cursor
Приклад:
```
```text
Implement Operator Modes & System Agents using:
- 22_operator_modes_and_system_agents.md
@@ -367,18 +365,17 @@ Output:
- list of files
- diff
- summary
```
```text
---
# 10. Результат
## 10. Результат
Після впровадження цього модуля:
* приватні агенти можуть працювати як персональні оператори;
* командні агенти можуть працювати як "ритуальні організатори" microDAO;
* DAO Agent та Wallet Agent стають безпечними протокольними модулями;
* усі дії мають чіткі межі, правила і логування;
* система стає самокерованою, але контрольованою через дух спільноти.
- приватні агенти можуть працювати як персональні оператори;
- командні агенти можуть працювати як "ритуальні організатори" microDAO;
- DAO Agent та Wallet Agent стають безпечними протокольними модулями;
- усі дії мають чіткі межі, правила і логування;
- система стає самокерованою, але контрольованою через дух спільноти.

View File

@@ -2,33 +2,35 @@
Живі картки агентів та повний інтерфейс Agent Console
Цей документ описує UI/UX для агентів у форматі "живих карток" та повний інтерфейс Agent Console, де кожен агент представлений як учасник спільноти з власною історією, досвідом та репутацією.
Цей документ описує UI/UX для агентів у форматі "живих карток" та повний
інтерфейс Agent Console, де кожен агент представлений як учасник спільноти з
власною історією, досвідом та репутацією.
---
# 1. Концепція: "Живі картки агентів"
## 1. Концепція: "Живі картки агентів"
Кожен агент у MicroDAO — це не просто бот, а:
* учасник спільноти з власною історією,
* живий модуль розуму, підключений до DAGI,
* носій досвіду (1T як міра обчислень та "шляху агента"),
* носій репутації в межах спільноти.
- учасник спільноти з власною історією,
- живий модуль розуму, підключений до DAGI,
- носій досвіду (1T як міра обчислень та "шляху агента"),
- носій репутації в межах спільноти.
Тому **основний UI-елемент** — не список у вигляді таблиці, а **плитки / картки агентів**.
---
# 2. Плитка агента (карточка в гріді)
## 2. Плитка агента (карточка в гріді)
## 2.1. Розташування
* В розділі "Агенти" (ліва панель → клік → відкривається основний грід).
* Також може використовуватись у:
- В розділі "Агенти" (ліва панель → клік → відкривається основний грід).
- Також може використовуватись у:
* модалці "Додати агента до каналу",
* маркетплейсі агентів DAARION.city,
* списку підключених агентів до microDAO.
- модалці "Додати агента до каналу",
- маркетплейсі агентів DAARION.city,
- списку підключених агентів до microDAO.
## 2.2. Структура картки
@@ -36,78 +38,78 @@
### 1. Верхній блок: Аватар + Відео-аватар
* Статичний аватар (іконка/символ).
* Мала відео-плашка / анімований аватар (loop, без звуку).
* Індикатор "онлайн/активний" (маленький маркер).
- Статичний аватар (іконка/символ).
- Мала відео-плашка / анімований аватар (loop, без звуку).
- Індикатор "онлайн/активний" (маленький маркер).
### 2. Імʼя та роль
* `Імʼя агента` (наприклад, "DAGI Guide", "Tokenomics Keeper").
* Короткий опис призначення у один рядок:
- `Імʼя агента` (наприклад, "DAGI Guide", "Tokenomics Keeper").
- Короткий опис призначення у один рядок:
* "Провідник microDAO"
* "Куратор знань"
* "Месенджер-організатор"
- "Провідник microDAO"
- "Куратор знань"
- "Месенджер-організатор"
Без жодних фінансових ролей.
### 3. Метрики досвіду (без фінансової асоціації)
* **Вік агента**:
- **Вік агента**:
* "У спільноті: 3 тижні" / "6 місяців" / "1 рік 2 місяці".
- "У спільноті: 3 тижні" / "6 місяців" / "1 рік 2 місяці".
* **Досвід 1T**:
- **Досвід 1T**:
* Лічильник: `Досвід: 12 340 1T`
* В UI пояснення через tooltip:
- Лічильник: `Досвід: 12 340 1T`
- В UI пояснення через tooltip:
> "1T — це внутрішня одиниця обчислень і досвіду агента в екосистемі DAARION.city."
* Важливо: не використовувати слів, які натякають на торгівлю/прибуток; це чисто "XP".
- Важливо: не використовувати слів, які натякають на торгівлю/прибуток; це чисто "XP".
* **Репутація спільноти**:
- **Репутація спільноти**:
* Наприклад, шкала 0100 або 05 "зірочок".
* Підпис: `Репутація в спільноті` / `Довіра спільноти`.
- Наприклад, шкала 0100 або 05 "зірочок".
- Підпис: `Репутація в спільноті` / `Довіра спільноти`.
### 4. Присутність у просторах
* Маленькі бейджі:
- Маленькі бейджі:
* `Учасник: 3 канали`
* `Працює в: 2 microDAO`
- `Учасник: 3 канали`
- `Працює в: 2 microDAO`
* Позначки "публічний / конфіденційний":
- Позначки "публічний / конфіденційний":
* іконка замка для конфіденційних контекстів.
- іконка замка для конфіденційних контекстів.
### 5. Статус підключення
* Текст/бейдж:
- Текст/бейдж:
* `Підключено до цього простору`
* або `Доступний для підключення`
- `Підключено до цього простору`
- або `Доступний для підключення`
* Кнопка:
- Кнопка:
* `Підключити до контексту` (якщо ще не підʼєднаний).
- `Підключити до контексту` (якщо ще не підʼєднаний).
---
# 3. Ховер та клік по картці
## 3. Ховер та клік по картці
## 3.1. При наведенні курсору (hover)
Показати поверх картки напівпрозорий оверлей з опціями:
* Основна кнопка:
- Основна кнопка:
**"Почати взаємодію"**
* Додаткові:
- Додаткові:
* `Підключити до цього каналу` (якщо стіна контексту вже вибрана)
* `Деталі агента` (відкрити повний профіль)
- `Підключити до цього каналу` (якщо стіна контексту вже вибрана)
- `Деталі агента` (відкрити повний профіль)
Можна додати коротку анімацію відео-аватара (легке пожвавлення).
@@ -115,204 +117,204 @@
Якщо клікаємо по основній площі картки:
* Відкривається **нове вікно/панель агента** (Agent Console), де:
- Відкривається **нове вікно/панель агента** (Agent Console), де:
* є текстовий чат,
* є керування голосовим режимом,
* є вкладка для обміну файлами/документами,
* є вкладка памʼяті/прав доступу.
- є текстовий чат,
- є керування голосовим режимом,
- є вкладка для обміну файлами/документами,
- є вкладка памʼяті/прав доступу.
---
# 4. Agent Console: повний інтерфейс агента
## 4. Agent Console: повний інтерфейс агента
Приклад структури:
## 4.1. Верхня панель
* Аватар + відео-аватар (більший).
* Імʼя, роль, короткий опис.
* Показники:
- Аватар + відео-аватар (більший).
- Імʼя, роль, короткий опис.
- Показники:
* Вік,
* Досвід 1T,
* Репутація спільноти.
- Вік,
- Досвід 1T,
- Репутація спільноти.
* Значок підключеності до поточного microDAO / каналу.
- Значок підключеності до поточного microDAO / каналу.
## 4.2. Вкладки
### Вкладка 1: Чат
* Текстовий чат (як звичайний agent chat).
* Голосовий режим: кнопка "Голосовий діалог" (start/stop).
* Привʼязка до поточного контексту:
- Текстовий чат (як звичайний agent chat).
- Голосовий режим: кнопка "Голосовий діалог" (start/stop).
- Привʼязка до поточного контексту:
* показати, в якому просторі ти з ним розмовляєш.
- показати, в якому просторі ти з ним розмовляєш.
### Вкладка 2: Файли та Документи
* Список файлів, якими обмінювались з цим агентом в межах даного microDAO.
* Кнопка `Завантажити файл` → агент через DAGI може:
- Список файлів, якими обмінювались з цим агентом в межах даного microDAO.
- Кнопка `Завантажити файл` → агент через DAGI може:
* проаналізувати документ,
* створити новий документ (збереження в microDAO file store).
- проаналізувати документ,
- створити новий документ (збереження в microDAO file store).
* Обовʼязково:
- Обовʼязково:
* **збереження у власних сховищах microDAO**, не у зовнішньому середовищі по замовчуванню.
- **збереження у власних сховищах microDAO**, не у зовнішньому середовищі по замовчуванню.
### Вкладка 3: Памʼять і Знання
* Блоки з:
- Блоки з:
* короткостроковою памʼяттю (останні теми),
* довгостроковими фактами про цю спільноту (як у 13_agent_memory_system).
- короткостроковою памʼяттю (останні теми),
- довгостроковими фактами про цю спільноту (як у 13_agent_memory_system).
* Кнопки:
- Кнопки:
* `Показати, що ти памʼятаєш про цей проєкт`
* `Очистити частину памʼяті`
- `Показати, що ти памʼятаєш про цей проєкт`
- `Очистити частину памʼяті`
### Вкладка 4: Присутність / Права доступу
* Список:
- Список:
* В яких каналах цей агент присутній (публічні/конфіденційні).
* В яких проєктах бере участь.
- В яких каналах цей агент присутній (публічні/конфіденційні).
- В яких проєктах бере участь.
* Для кожного:
- Для кожного:
* перемикач `Підключити/Відключити`.
* Позначка рівня доступу (read/write/tasks/knowledge).
- перемикач `Підключити/Відключити`.
- Позначка рівня доступу (read/write/tasks/knowledge).
* Кнопка:
- Кнопка:
* `Додати до нового каналу/проєкту` → відкриває спрощений Invite-Agent-Flow, але вже з попередньо вибраним агентом.
- `Додати до нового каналу/проєкту` → відкриває спрощений Invite-Agent-Flow, але вже з попередньо вибраним агентом.
### Вкладка 5: Еволюція та дух спільноти
* Замінює будь-який фінансовий наратив:
- Замінює будь-який фінансовий наратив:
* `Шлях агента в цій спільноті`
* Лог:
- `Шлях агента в цій спільноті`
- Лог:
* скільки разів агент допомагав у задачах,
* які типи запитів обробляє найчастіше,
* "внесок у колективний розум" (наприклад, скільки фактів/правил додано).
- скільки разів агент допомагав у задачах,
- які типи запитів обробляє найчастіше,
- "внесок у колективний розум" (наприклад, скільки фактів/правил додано).
* Репутація:
- Репутація:
* відгуки/оцінки від учасників (без мови торгівлі).
- відгуки/оцінки від учасників (без мови торгівлі).
---
# 5. DAGI, багатомодальність і сховища
## 5. DAGI, багатомодальність і сховища
## 5.1. DAGI як бекенд агентських здібностей
Кожен агент отримує від DAGI:
* текстове мислення,
* мульти-модальні можливості:
- текстове мислення,
- мульти-модальні можливості:
* розуміння зображень/файлів,
* створення текстів, планів, специфікацій,
* потенційно роботу з відео.
- розуміння зображень/файлів,
- створення текстів, планів, специфікацій,
- потенційно роботу з відео.
Інтерфейс агента дає доступ до:
* аналізу файлів:
- аналізу файлів:
* "Поясни цей документ для команди"
* "Зроби витяг для каналу #planning"
- "Поясни цей документ для команди"
- "Зроби витяг для каналу #planning"
* генерації нових артефактів:
- генерації нових артефактів:
* плани,
* дорожні карти,
* документація.
- плани,
- дорожні карти,
- документація.
## 5.2. Зберігання в MicroDAO, а не "десь в хмарі без контролю"
Ключовий принцип:
* **Результати роботи агента** (файли, документи, знання) зберігаються:
- **Результати роботи агента** (файли, документи, знання) зберігаються:
* у сховищі степені MicroDAO (файлове / БД),
* або у локальних базах спільноти.
- у сховищі степені MicroDAO (файлове / БД),
- або у локальних базах спільноти.
* DAGI використовується як "мозок", але:
- DAGI використовується як "мозок", але:
* не забирає собі сирі дані без волі спільноти,
* не є єдиним місцем зберігання.
- не забирає собі сирі дані без волі спільноти,
- не є єдиним місцем зберігання.
Це важливо підкреслити в UX:
* у консолі:
- у консолі:
* "Документи зберігаються в просторі вашої microDAO."
- "Документи зберігаються в просторі вашої microDAO."
* опції експорту:
- опції експорту:
* "Поділитися в іншому просторі DAARION.city"
* "Надати доступ іншому агенту"
- "Поділитися в іншому просторі DAARION.city"
- "Надати доступ іншому агенту"
---
# 6. Підключення/відключення агентів до публічних/конфіденційних просторів
## 6. Підключення/відключення агентів до публічних/конфіденційних просторів
## 6.1. З точки зору плитки
На картці агента:
* бейджі:
- бейджі:
* `Публічні простори: 2`
* `Конфіденційні: 1`
- `Публічні простори: 2`
- `Конфіденційні: 1`
* При натисканні:
- При натисканні:
* відкривається невеликий список:
- відкривається невеликий список:
* `#general (публічний)`
* `#dev-mvp (конфіденційний)`
- `#general (публічний)`
- `#dev-mvp (конфіденційний)`
* поруч — перемикач:
- поруч — перемикач:
* `Підключено / Відʼєднано`.
- `Підключено / Відʼєднано`.
## 6.2. З точки зору Agent Console
У вкладці "Присутність / Права доступу":
* Табличка:
- Табличка:
* Простір / Тип (публічний/конфіденційний) / Доступ / Перемикач.
- Простір / Тип (публічний/конфіденційний) / Доступ / Перемикач.
* Операції:
- Операції:
* натискання `Відʼєднати`:
- натискання `Відʼєднати`:
* агент перестає отримувати потік повідомлень з цього каналу/простору;
* його не видно у списку учасників.
- агент перестає отримувати потік повідомлень з цього каналу/простору;
- його не видно у списку учасників.
* натискання `Підключити`:
- натискання `Підключити`:
* запускає внутрішній Invite-Agent-Flow для відповідного ресурсу.
- запускає внутрішній Invite-Agent-Flow для відповідного ресурсу.
Все це повинно залишатись максимально людським в термінології:
жодних "інвесторів", "юнітів вартості", "ROI" тощо — тільки:
* "досвід",
* "шлях агента",
* "довіра спільноти",
* "внесок у колективний розум".
- "досвід",
- "шлях агента",
- "довіра спільноти",
- "внесок у колективний розум".
---
# 7. Компоненти та структура
## 7. Компоненти та структура
## 7.1. Agent Card Component
@@ -330,7 +332,7 @@ interface AgentCardProps {
export function AgentCard({ agent, onCardClick, onConnect, currentContext }: AgentCardProps) {
// Рендер картки з усіма метриками
}
```
```text
## 7.2. Agent Grid
@@ -344,7 +346,7 @@ interface AgentGridProps {
export function AgentGrid({ agents, onAgentSelect, filter }: AgentGridProps) {
// Сітка карток агентів
}
```
```text
## 7.3. Agent Console
@@ -357,11 +359,11 @@ interface AgentConsoleProps {
export function AgentConsole({ agentId, initialTab = "chat" }: AgentConsoleProps) {
// Повний інтерфейс агента з вкладками
}
```
```text
---
# 8. Типи даних
## 8. Типи даних
## 8.1. Agent Metrics
@@ -384,7 +386,7 @@ interface AgentMetrics {
confidential: number;
};
}
```
```text
## 8.2. Agent Presence
@@ -396,7 +398,7 @@ interface AgentPresence {
accessLevel: string[];
connected: boolean;
}
```
```text
## 8.3. Agent Evolution Log
@@ -415,11 +417,11 @@ interface AgentEvolutionLog {
averageRating: number;
};
}
```
```text
---
# 9. API Endpoints
## 9. API Endpoints
## 9.1. Agent Metrics
@@ -429,7 +431,7 @@ GET /agents/{agentId}/metrics
GET /agents/{agentId}/presence
// Список просторів, де агент присутній
```
```text
## 9.2. Agent Files
@@ -446,42 +448,42 @@ POST /agents/{agentId}/files
channelId?: string;
};
}
```
```text
## 9.3. Agent Evolution
```ts
GET /agents/{agentId}/evolution/log
// Лог еволюції та внеску агента
```
```text
---
# 10. UI/UX Деталі
## 10. UI/UX Деталі
## 10.1. Відео-аватар
* Формат: короткий loop (2-5 секунд)
* Розмір на картці: 64x64px
* Розмір в консолі: 128x128px
* Без звуку
* Анімація при hover: легке пожвавлення
- Формат: короткий loop (2-5 секунд)
- Розмір на картці: 64x64px
- Розмір в консолі: 128x128px
- Без звуку
- Анімація при hover: легке пожвавлення
## 10.2. Метрики досвіду
* Вік: "3 тижні", "6 місяців", "1 рік 2 місяці"
* 1T: велике число з розділювачами (12 340 1T)
* Репутація: візуальна шкала (зірки або прогрес-бар)
- Вік: "3 тижні", "6 місяців", "1 рік 2 місяці"
- 1T: велике число з розділювачами (12 340 1T)
- Репутація: візуальна шкала (зірки або прогрес-бар)
## 10.3. Бейджі присутності
* Компактні бейджі з іконками
* Кольори: синій для публічних, червоний для конфіденційних
* Іконка замка для конфіденційних просторів
- Компактні бейджі з іконками
- Кольори: синій для публічних, червоний для конфіденційних
- Іконка замка для конфіденційних просторів
---
# 11. Інтеграція з існуючими модулями
## 11. Інтеграція з існуючими модулями
## 11.1. Agent UI System (10)
@@ -506,11 +508,11 @@ Agent Console використовує:
---
# 12. Завдання для Cursor
## 12. Завдання для Cursor
Приклад промта:
```
```text
You are a senior React/TS engineer.
Implement Agent Cards and Console using:
@@ -534,23 +536,21 @@ Output:
- list of modified files
- diff
- summary
```
```text
---
# 13. Результат
## 13. Результат
Після впровадження:
* Агенти представлені як живі учасники спільноти, а не просто боти
* Користувач бачить досвід та репутацію кожного агента
* Повний контроль над підключеннями агентів до просторів
* Зберігання всіх результатів роботи агентів у сховищі microDAO
* Людська термінологія без фінансових наративів
- Агенти представлені як живі учасники спільноти, а не просто боти
- Користувач бачить досвід та репутацію кожного агента
- Повний контроль над підключеннями агентів до просторів
- Зберігання всіх результатів роботи агентів у сховищі microDAO
- Людська термінологія без фінансових наративів
---
**Готово.**
Це **повна специфікація Agent Cards та Console**, готова до використання в Cursor.

View File

@@ -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 забезпечує контрольований автоматизм без ризиків.

View File

@@ -674,4 +674,3 @@ Output:
- чіткий контроль прав через capabilities;
- інтеграція з Wallet Agent та Embassy Module;
- підготовка до масштабування та додавання нових платформ.

View File

@@ -8,7 +8,7 @@
---
# Task 1 — Agent-Cards-Grid (плитки агентів)
## Task 1 — Agent-Cards-Grid (плитки агентів)
## Мета
@@ -18,49 +18,49 @@
### 1. Компонент AgentCard
* Розмір: 280x360px (рекомендовано)
* Структура:
- Розмір: 280x360px (рекомендовано)
- Структура:
* Верхній блок: Аватар + відео-аватар (64x64px)
* Імʼя та роль
* Метрики: Вік, Досвід 1T, Репутація
* Присутність: бейджі каналів/проєктів
* Статус підключення
- Верхній блок: Аватар + відео-аватар (64x64px)
- Імʼя та роль
- Метрики: Вік, Досвід 1T, Репутація
- Присутність: бейджі каналів/проєктів
- Статус підключення
### 2. Компонент AgentGrid
* Сітка карток (responsive: 1-4 колонки)
* Фільтри: "Всі", "Підключені", "Доступні"
* Пошук по імені/ролі
- Сітка карток (responsive: 1-4 колонки)
- Фільтри: "Всі", "Підключені", "Доступні"
- Пошук по імені/ролі
### 3. Дані
* API: `GET /agents?team_id=...`
* Метрики: `GET /agents/{id}/metrics`
* Присутність: `GET /agents/{id}/presence`
- API: `GET /agents?team_id=...`
- Метрики: `GET /agents/{id}/metrics`
- Присутність: `GET /agents/{id}/presence`
### 4. Hover ефект
* Напівпрозорий оверлей з кнопками:
* "Почати взаємодію"
* "Підключити до каналу"
* "Деталі агента"
- Напівпрозорий оверлей з кнопками:
- "Почати взаємодію"
- "Підключити до каналу"
- "Деталі агента"
### 5. Клік
* Відкриває Agent Console (Task 2)
- Відкриває Agent Console (Task 2)
## Acceptance Criteria
* Картки агентів відображаються у сітці
* Показуються метрики (вік, 1T, репутація)
* Hover показує опції взаємодії
* Клік відкриває Agent Console
* Фільтри та пошук працюють
- Картки агентів відображаються у сітці
- Показуються метрики (вік, 1T, репутація)
- Hover показує опції взаємодії
- Клік відкриває Agent Console
- Фільтри та пошук працюють
## Приклад промта для Cursor
```
```text
Implement Agent Cards Grid using:
- 23_agent_cards_and_console.md
@@ -76,7 +76,7 @@ Deliverables:
5) Search by name/role.
Output: list of files + diff + summary.
```
```text
---
@@ -90,55 +90,55 @@ Output: list of files + diff + summary.
### 1. Структура Agent Console
* Верхня панель: Аватар, імʼя, метрики
* Вкладки: Чат, Файли, Памʼять, Присутність, Еволюція
* Контент вкладок (деталі нижче)
- Верхня панель: Аватар, імʼя, метрики
- Вкладки: Чат, Файли, Памʼять, Присутність, Еволюція
- Контент вкладок (деталі нижче)
### 2. Вкладка "Чат"
* Використовує `AgentChatWindow` з `10_agent_ui_system.md`
* Додатково: кнопка "Голосовий діалог" (stub для MVP)
* Показ поточного контексту
- Використовує `AgentChatWindow` з `10_agent_ui_system.md`
- Додатково: кнопка "Голосовий діалог" (stub для MVP)
- Показ поточного контексту
### 3. Вкладка "Файли та Документи"
* Список файлів (з API або stub)
* Кнопка "Завантажити файл"
* Індикатор: "Документи зберігаються в просторі вашої microDAO"
- Список файлів (з API або stub)
- Кнопка "Завантажити файл"
- Індикатор: "Документи зберігаються в просторі вашої microDAO"
### 4. Вкладка "Памʼять і Знання"
* Використовує компоненти з `13_agent_memory_system.md`
* Короткострокова та довгострокова памʼять
* Кнопки управління памʼяттю
- Використовує компоненти з `13_agent_memory_system.md`
- Короткострокова та довгострокова памʼять
- Кнопки управління памʼяттю
### 5. Вкладка "Присутність / Права доступу"
* Таблиця просторів (канали, проєкти)
* Перемикачі підключення
* Рівні доступу
* Кнопка "Додати до нового каналу/проєкту"
- Таблиця просторів (канали, проєкти)
- Перемикачі підключення
- Рівні доступу
- Кнопка "Додати до нового каналу/проєкту"
### 6. Вкладка "Еволюція та дух спільноти"
* Лог внеску агента
* Статистика запитів
* Репутація від спільноти
* Без фінансових термінів
- Лог внеску агента
- Статистика запитів
- Репутація від спільноти
- Без фінансових термінів
## Acceptance Criteria
* Agent Console відкривається при кліку на картку
* Всі 5 вкладок працюють
* Чат інтегрований з Agent Runtime Core
* Файли показуються (stub дані OK)
* Памʼять інтегрована з Memory System
* Присутність показує реальні дані
* Еволюція показує лог (stub OK)
- Agent Console відкривається при кліку на картку
- Всі 5 вкладок працюють
- Чат інтегрований з Agent Runtime Core
- Файли показуються (stub дані OK)
- Памʼять інтегрована з Memory System
- Присутність показує реальні дані
- Еволюція показує лог (stub OK)
## Приклад промта для Cursor
```
```text
Implement Agent Console UI using:
- 23_agent_cards_and_console.md
@@ -157,7 +157,7 @@ Deliverables:
6) Evolution tab: log display (stub data OK).
Output: list of files + diff + summary.
```
```text
---
@@ -171,23 +171,23 @@ Output: list of files + diff + summary.
### 1. Вік агента
* Розрахунок: `created_at` до поточної дати
* Формат: "3 тижні", "6 місяців", "1 рік 2 місяці"
* API: `GET /agents/{id}/metrics``{ age: { weeks, months, years } }`
- Розрахунок: `created_at` до поточної дати
- Формат: "3 тижні", "6 місяців", "1 рік 2 місяці"
- API: `GET /agents/{id}/metrics` → `{ age: { weeks, months, years } }`
### 2. Досвід 1T
* Лічильник: велике число з розділювачами (12 340 1T)
* Tooltip: "1T — це внутрішня одиниця обчислень і досвіду агента"
* API: `GET /agents/{id}/metrics``{ experience1T: number }`
* Візуалізація: великий текст з іконкою
- Лічильник: велике число з розділювачами (12 340 1T)
- Tooltip: "1T — це внутрішня одиниця обчислень і досвіду агента"
- API: `GET /agents/{id}/metrics` → `{ experience1T: number }`
- Візуалізація: великий текст з іконкою
### 3. Репутація спільноти
* Шкала: 0-100 або 0-5 зірок
* Розрахунок: на основі фідбеку від учасників
* API: `GET /agents/{id}/metrics``{ reputation: { score, type } }`
* Візуалізація: прогрес-бар або зірки
- Шкала: 0-100 або 0-5 зірок
- Розрахунок: на основі фідбеку від учасників
- API: `GET /agents/{id}/metrics` → `{ reputation: { score, type } }`
- Візуалізація: прогрес-бар або зірки
### 4. Компонент AgentMetrics
@@ -200,18 +200,18 @@ interface AgentMetricsProps {
export function AgentMetrics({ agentId, compact }: AgentMetricsProps) {
// Відображення метрик
}
```
```text
## Acceptance Criteria
* Вік агента розраховується правильно
* 1T показується з tooltip
* Репутація відображається візуально
* Метрики оновлюються при зміні даних
- Вік агента розраховується правильно
- 1T показується з tooltip
- Репутація відображається візуально
- Метрики оновлюються при зміні даних
## Приклад промта для Cursor
```
```text
Implement Agent Experience Metrics using:
- 23_agent_cards_and_console.md
@@ -227,7 +227,7 @@ Deliverables:
5) API integration: GET /agents/{id}/metrics.
Output: list of files + diff + summary.
```
```text
---
@@ -241,40 +241,40 @@ Output: list of files + diff + summary.
### 1. На картці агента
* Бейджі: "Публічні простори: 2", "Конфіденційні: 1"
* При кліку — модалка зі списком просторів
* Перемикачі для кожного простору
- Бейджі: "Публічні простори: 2", "Конфіденційні: 1"
- При кліку — модалка зі списком просторів
- Перемикачі для кожного простору
### 2. У Agent Console (вкладка "Присутність")
* Таблиця просторів:
* Простір / Тип / Доступ / Статус / Дії
* Перемикач "Підключено/Відʼєднано"
* Кнопка "Додати до нового простору"
- Таблиця просторів:
- Простір / Тип / Доступ / Статус / Дії
- Перемикач "Підключено/Відʼєднано"
- Кнопка "Додати до нового простору"
### 3. API
* `GET /agents/{id}/presence` → список просторів
* `POST /agents/{id}/presence/connect` → підключити
* `POST /agents/{id}/presence/disconnect` → відключити
- `GET /agents/{id}/presence` → список просторів
- `POST /agents/{id}/presence/connect` → підключити
- `POST /agents/{id}/presence/disconnect` → відключити
### 4. UX
* При відключенні: підтвердження
* При підключенні: вибір прав доступу
* Оновлення UI після зміни
- При відключенні: підтвердження
- При підключенні: вибір прав доступу
- Оновлення UI після зміни
## Acceptance Criteria
* Бейджі на картці показують кількість просторів
* Модалка зі списком просторів працює
* Перемикачі в консолі працюють
* API виклики зберігають зміни
* UI оновлюється після змін
- Бейджі на картці показують кількість просторів
- Модалка зі списком просторів працює
- Перемикачі в консолі працюють
- API виклики зберігають зміни
- UI оновлюється після змін
## Приклад промта для Cursor
```
```text
Implement Agent Connections Management using:
- 23_agent_cards_and_console.md
@@ -291,7 +291,7 @@ Deliverables:
5) UI updates after connection changes.
Output: list of files + diff + summary.
```
```text
---
@@ -337,13 +337,12 @@ Output: list of files + diff + summary.
## Зберігання даних
* Всі файли/документи зберігаються в сховищі microDAO
* Показувати індикатор: "Документи зберігаються в просторі вашої microDAO"
* DAGI використовується як "мозок", але не як сховище
- Всі файли/документи зберігаються в сховищі microDAO
- Показувати індикатор: "Документи зберігаються в просторі вашої microDAO"
- DAGI використовується як "мозок", але не як сховище
---
**Готово.**
Це **структурований список задач для Agent Cards та Console**, готовий до використання в Cursor.

View File

@@ -1,6 +1,6 @@
# 25 — Deployment & Infrastructure (MicroDAO)
*Deployment процес, середовища, інфраструктура, CI/CD, моніторинг*
Deployment процес, середовища, інфраструктура, CI/CD, моніторинг.
---
@@ -87,7 +87,10 @@
### 3.1 Database Layer
- **Postgres** (Supabase / керований Postgres):
- основні таблиці: `users`, `teams`, `channels`, `messages`, `projects`, `tasks`, `agents`, `wallets`, `staking_ringk`, `payouts`, `rwa_inventory`, `embassy_*`, `access_keys`, `capabilities`, `bundles`, `audit_log`, `outbox_events`.
- основні таблиці: `users`, `teams`, `channels`, `messages`, `projects`,
`tasks`, `agents`, `wallets`, `staking_ringk`, `payouts`, `rwa_inventory`,
`embassy_*`, `access_keys`, `capabilities`, `bundles`, `audit_log`,
`outbox_events`.
- схема й міграції описані в `27_database_schema_migrations.md`.
Рекомендації:
@@ -476,5 +479,3 @@ Output:
**Версія:** 1.0
**Останнє оновлення:** 2024-11-14

View File

@@ -1,6 +1,6 @@
# 26 — Security Audit Checklist (MicroDAO)
*Безпека інфраструктури, сервісів, вебклієнта, агентів, Embassy, access keys, токенів та даних*
Безпека інфраструктури, сервісів, вебклієнта, агентів, Embassy, access keys, токенів та даних.
Це документ для регулярного безпекового аудитування платформи **DAARION.city / microDAO / Embassy / Agent Mesh / Wallet / RWA**.
@@ -448,5 +448,3 @@ Output:
**Версія:** 1.0 (для MVP → RC → PROD)
**Останнє оновлення:** 2024-11-14

View File

@@ -1,6 +1,6 @@
# 27 — Database Schema & Migrations (MicroDAO)
*Повна виробнича специфікація*
Повна виробнича специфікація.
---
@@ -23,7 +23,7 @@
## 2. High-level Structure of the Database
### Домени:
### Домени
1. Auth / Users
2. Teams (microDAO ядра)
@@ -42,7 +42,7 @@
## 3. Naming Conventions
### Префікси ID:
### Префікси ID
- `u_` — user
- `t_` — team
@@ -64,7 +64,7 @@
### Таблиці у snake_case
### Версії міграцій:
### Версії міграцій
`000001_init.sql`, `000002_users_teams.sql`, `000003_rbac.sql`
@@ -492,5 +492,3 @@ Output:
**Версія:** 1.0
**Останнє оновлення:** 2024-11-14

View File

@@ -1,6 +1,6 @@
# 28 — Flows: Wallet, Embassy, Energy Union (MicroDAO)
*Sequence-діаграми основних критичних потоків: авторизація, Wallet, Embassy, Energy Union, NATS Outbox*
Sequence-діаграми основних критичних потоків: авторизація, Wallet, Embassy, Energy Union, NATS Outbox.
Це документ візуалізацій — «центральна нервова система» проєкту.
@@ -36,7 +36,7 @@
## 2. Legend
```
```text
U User (browser/app)
A Agent (private agent)
API API Gateway (PEP)

View File

@@ -1,6 +1,7 @@
# 29 — Scaling & High Availability (MicroDAO)
*Масштабування, відмовостійкість, балансування навантаження, кластеризація сервісів DAARION.city / microDAO / Embassy / Wallet / Agents / Event Bus*
Масштабування, відмовостійкість, балансування навантаження, кластеризація
сервісів DAARION.city / microDAO / Embassy / Wallet / Agents / Event Bus.
Це документ виробничого класу, який потрібний для:
@@ -42,7 +43,7 @@
## 2. High-level Architecture Overview
```
```text
┌─────────────────────────┐
│ Load Balancer │
└──────────┬──────────────┘
@@ -181,7 +182,7 @@ Agent Runtime Pool:
Структура тем:
```
```text
chat.*
project.*
task.*
@@ -440,5 +441,3 @@ Output:
**Версія:** 1.0
**Останнє оновлення:** 2024-11-14

View File

@@ -1,6 +1,6 @@
# 30 — Cost Optimization & Token Economics Infrastructure (MicroDAO)
*Оптимізація витрат інфраструктури та зв'язок з токеномікою (RINGK, 1T, KWT, DAAR/DAARION)*
Оптимізація витрат інфраструктури та зв'язок з токеномікою (RINGK, 1T, KWT, DAAR/DAARION).
---
@@ -397,5 +397,3 @@ Output:
**Версія:** 1.0
**Останнє оновлення:** 2024-11-14

Some files were not shown because too many files have changed in this diff Show More