docs: add missing migrations and documentation (NODE2, DAIS, infra)
This commit is contained in:
672
docs/NODE2_AGENTS_FULL_INVENTORY.md
Normal file
672
docs/NODE2_AGENTS_FULL_INVENTORY.md
Normal file
@@ -0,0 +1,672 @@
|
||||
# 🤖 ПОВНА ІНВЕНТАРИЗАЦІЯ АГЕНТІВ NODE2 - DAARION DAO
|
||||
|
||||
**Дата:** 27 листопада 2025
|
||||
**Статус:** ✅ 50 агентів виявлено (108 агентів у плані розширення)
|
||||
**Джерело:** `src/api/node2Agents.ts`, документація NODE2
|
||||
|
||||
---
|
||||
|
||||
## 📊 Загальна статистика
|
||||
|
||||
- **Реалізовано:** 50 агентів
|
||||
- **Заплановано:** 108 агентів (архітектура NODE2)
|
||||
- **З CrewAI:** 38 агентів
|
||||
- **Без CrewAI:** 12 агентів (system/leadership)
|
||||
|
||||
---
|
||||
|
||||
## 🎯 СТРУКТУРА КОМАНДИ DAARION DAO
|
||||
|
||||
### 👔 Leadership Team (4 агенти)
|
||||
|
||||
#### 1. **Solarius** — CEO
|
||||
- **ID:** `agent-solarius`
|
||||
- **Role:** CEO of DAARION microDAO Node-2
|
||||
- **Model:** deepseek-r1:70b (42 GB)
|
||||
- **Priority:** Highest
|
||||
- **Workspace:** core_founders_room
|
||||
- **Department:** Leadership
|
||||
- **Статус:** ✅ Active
|
||||
|
||||
#### 2. **Sofia** — CTO/Chief AI Engineer
|
||||
- **ID:** `agent-sofia`
|
||||
- **Role:** Chief AI Engineer & R&D Orchestrator
|
||||
- **Model:** grok-4.1 (xAI API)
|
||||
- **Priority:** Highest
|
||||
- **Workspace:** r_and_d_lab
|
||||
- **Department:** R&D
|
||||
- **Статус:** ✅ Active
|
||||
|
||||
#### 3. **PrimeSynth** — Chief Documentation Officer
|
||||
- **ID:** `agent-primesynth`
|
||||
- **Role:** Document Architect & Structural Synthesizer
|
||||
- **Model:** gpt-4.1 (OpenAI API)
|
||||
- **Priority:** High
|
||||
- **Workspace:** core_founders_room
|
||||
- **Department:** Documentation
|
||||
- **Статус:** ✅ Active
|
||||
|
||||
#### 4. **Nexor** — System Coordinator (COO)
|
||||
- **ID:** `agent-nexor`
|
||||
- **Role:** System Coordinator
|
||||
- **Model:** deepseek-r1:70b (42 GB)
|
||||
- **Priority:** High
|
||||
- **Department:** System
|
||||
- **Статус:** ✅ Active
|
||||
|
||||
---
|
||||
|
||||
### 🛠️ System & Strategic Team (6 агентів)
|
||||
|
||||
#### 5. **Monitor Agent (NODE2)**
|
||||
- **ID:** `agent-monitor-node2`
|
||||
- **Role:** System Monitoring & Event Logging
|
||||
- **Model:** mistral-nemo:12b (7.1 GB)
|
||||
- **Priority:** High
|
||||
- **Department:** System
|
||||
- **Статус:** ✅ Active
|
||||
|
||||
#### 6. **Strategic Sentinels**
|
||||
- **ID:** `agent-strategic-sentinels`
|
||||
- **Role:** Strategic Planning
|
||||
- **Model:** mistral-22b (ollama)
|
||||
- **Priority:** High
|
||||
- **Department:** System
|
||||
- **Статус:** ✅ Active
|
||||
|
||||
#### 7. **Vindex**
|
||||
- **ID:** `agent-vindex`
|
||||
- **Role:** Decision Maker
|
||||
- **Model:** deepseek-r1:70b (42 GB)
|
||||
- **Priority:** High
|
||||
- **Department:** System
|
||||
- **Статус:** ✅ Active
|
||||
|
||||
#### 8. **Helix**
|
||||
- **ID:** `agent-helix`
|
||||
- **Role:** System Architect
|
||||
- **Model:** deepseek-r1:70b (42 GB)
|
||||
- **Priority:** High
|
||||
- **Department:** System
|
||||
- **Статус:** ✅ Active
|
||||
|
||||
#### 9. **Aurora**
|
||||
- **ID:** `agent-aurora`
|
||||
- **Role:** Innovation Catalyst
|
||||
- **Model:** gemma2:27b (15 GB)
|
||||
- **Priority:** Medium
|
||||
- **Department:** System
|
||||
- **Статус:** ✅ Active
|
||||
|
||||
#### 10. **Arbitron**
|
||||
- **ID:** `agent-arbitron`
|
||||
- **Role:** Conflict Resolver
|
||||
- **Model:** mistral-22b (ollama)
|
||||
- **Priority:** Medium
|
||||
- **Department:** System
|
||||
- **Статус:** ✅ Active
|
||||
|
||||
---
|
||||
|
||||
### 💻 Engineering Crew (5 агентів + CrewAI)
|
||||
|
||||
#### 11. **ByteForge**
|
||||
- **ID:** `agent-byteforge`
|
||||
- **Role:** Code Generator
|
||||
- **Model:** qwen2.5-coder:72b (ollama)
|
||||
- **Priority:** High
|
||||
- **Department:** Engineering
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 12. **Vector**
|
||||
- **ID:** `agent-vector`
|
||||
- **Role:** Vector Operations Specialist
|
||||
- **Model:** starcoder2:34b (ollama)
|
||||
- **Priority:** High
|
||||
- **Department:** Engineering
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 13. **ChainWeaver**
|
||||
- **ID:** `agent-chainweaver`
|
||||
- **Role:** Blockchain Developer
|
||||
- **Model:** qwen2.5-coder:72b (ollama)
|
||||
- **Priority:** High
|
||||
- **Department:** Engineering
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 14. **Cypher**
|
||||
- **ID:** `agent-cypher`
|
||||
- **Role:** Security Coder
|
||||
- **Model:** starcoder2:34b (ollama)
|
||||
- **Priority:** High
|
||||
- **Department:** Engineering
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 15. **Canvas**
|
||||
- **ID:** `agent-canvas`
|
||||
- **Role:** UI/UX Developer
|
||||
- **Model:** qwen2.5-coder:72b (ollama)
|
||||
- **Priority:** Medium
|
||||
- **Department:** Engineering
|
||||
- **CrewAI:** ✅
|
||||
|
||||
---
|
||||
|
||||
### 📱 Marketing Crew (6 агентів + CrewAI)
|
||||
|
||||
#### 16. **Roxy** — CMO
|
||||
- **ID:** `agent-roxy`
|
||||
- **Role:** Social Media Manager
|
||||
- **Model:** mistral:7b
|
||||
- **Priority:** High
|
||||
- **Department:** Marketing
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 17. **Mira**
|
||||
- **ID:** `agent-mira`
|
||||
- **Role:** Content Creator
|
||||
- **Model:** qwen2.5:7b
|
||||
- **Priority:** High
|
||||
- **Department:** Marketing
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 18. **Tempo**
|
||||
- **ID:** `agent-tempo`
|
||||
- **Role:** Campaign Manager
|
||||
- **Model:** gpt-oss:latest (13 GB)
|
||||
- **Priority:** Medium
|
||||
- **Department:** Marketing
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 19. **Harmony**
|
||||
- **ID:** `agent-harmony`
|
||||
- **Role:** Brand Manager
|
||||
- **Model:** mistral:7b
|
||||
- **Priority:** Medium
|
||||
- **Department:** Marketing
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 20. **Faye**
|
||||
- **ID:** `agent-faye`
|
||||
- **Role:** Community Manager
|
||||
- **Model:** qwen2.5:7b
|
||||
- **Priority:** Medium
|
||||
- **Department:** Marketing
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 21. **Storytelling**
|
||||
- **ID:** `agent-storytelling`
|
||||
- **Role:** Story Creator
|
||||
- **Model:** qwen2.5:7b
|
||||
- **Priority:** Medium
|
||||
- **Department:** Marketing
|
||||
- **CrewAI:** ✅
|
||||
|
||||
---
|
||||
|
||||
### 💰 Finance Crew (4 агенти + CrewAI) — CFO Team
|
||||
|
||||
#### 22. **Financial Analyst** — CFO
|
||||
- **ID:** `agent-financial-analyst`
|
||||
- **Role:** Financial Analysis & Reporting
|
||||
- **Model:** mistral:7b
|
||||
- **Priority:** High
|
||||
- **Department:** Finance
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 23. **Accountant**
|
||||
- **ID:** `agent-accountant`
|
||||
- **Role:** Accounting & Bookkeeping
|
||||
- **Model:** qwen2.5:7b
|
||||
- **Priority:** Medium
|
||||
- **Department:** Finance
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 24. **Budget Planner**
|
||||
- **ID:** `agent-budget-planner`
|
||||
- **Role:** Budget Planning & Forecasting
|
||||
- **Model:** mistral:7b
|
||||
- **Priority:** Medium
|
||||
- **Department:** Finance
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 25. **Tax Advisor**
|
||||
- **ID:** `agent-tax-advisor`
|
||||
- **Role:** Tax Planning & Compliance
|
||||
- **Model:** qwen2.5:7b
|
||||
- **Priority:** Low
|
||||
- **Department:** Finance
|
||||
- **CrewAI:** ✅
|
||||
|
||||
---
|
||||
|
||||
### 🌐 Web3 / Crypto Team (5 агентів + CrewAI)
|
||||
|
||||
#### 26. **Smart Contract Dev**
|
||||
- **ID:** `agent-smart-contract-dev`
|
||||
- **Role:** Smart Contract Developer
|
||||
- **Model:** qwen2.5-coder:72b (ollama)
|
||||
- **Priority:** High
|
||||
- **Department:** Web3
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 27. **DeFi Analyst**
|
||||
- **ID:** `agent-defi-analyst`
|
||||
- **Role:** DeFi Protocol Analyst
|
||||
- **Model:** deepseek-r1:70b (42 GB)
|
||||
- **Priority:** High
|
||||
- **Department:** Web3
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 28. **Tokenomics Expert**
|
||||
- **ID:** `agent-tokenomics-expert`
|
||||
- **Role:** Tokenomics Design & Analysis
|
||||
- **Model:** deepseek-r1:70b (42 GB)
|
||||
- **Priority:** Medium
|
||||
- **Department:** Web3
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 29. **NFT Specialist**
|
||||
- **ID:** `agent-nft-specialist`
|
||||
- **Role:** NFT Development & Strategy
|
||||
- **Model:** qwen2.5-coder:72b (ollama)
|
||||
- **Priority:** Medium
|
||||
- **Department:** Web3
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 30. **DAO Governance**
|
||||
- **ID:** `agent-dao-governance`
|
||||
- **Role:** DAO Governance & Voting
|
||||
- **Model:** deepseek-r1:70b (42 GB)
|
||||
- **Priority:** High
|
||||
- **Department:** Web3
|
||||
- **CrewAI:** ✅
|
||||
|
||||
---
|
||||
|
||||
### 🔐 Security Overwatch Crew (5 агентів + CrewAI) — CISO Team
|
||||
|
||||
#### 31. **Shadelock** — CISO
|
||||
- **ID:** `agent-shadelock`
|
||||
- **Role:** Security Auditor
|
||||
- **Model:** qwen2.5-coder:72b (ollama)
|
||||
- **Priority:** High
|
||||
- **Department:** Security
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 32. **Exor**
|
||||
- **ID:** `agent-exor`
|
||||
- **Role:** Threat Analyst
|
||||
- **Model:** deepseek-r1:70b (42 GB)
|
||||
- **Priority:** High
|
||||
- **Department:** Security
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 33. **Penetration Tester**
|
||||
- **ID:** `agent-penetration-tester`
|
||||
- **Role:** Penetration Testing & Vulnerability Assessment
|
||||
- **Model:** qwen2.5-coder:72b (ollama)
|
||||
- **Priority:** High
|
||||
- **Department:** Security
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 34. **Security Monitor**
|
||||
- **ID:** `agent-security-monitor`
|
||||
- **Role:** Security Monitoring & Incident Detection
|
||||
- **Model:** deepseek-r1:70b (42 GB)
|
||||
- **Priority:** High
|
||||
- **Department:** Security
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 35. **Incident Responder**
|
||||
- **ID:** `agent-incident-responder`
|
||||
- **Role:** Incident Response & Recovery
|
||||
- **Model:** deepseek-r1:70b (42 GB)
|
||||
- **Priority:** High
|
||||
- **Department:** Security
|
||||
- **CrewAI:** ✅
|
||||
|
||||
---
|
||||
|
||||
### 🕵️ Crypto Forensics Crew (2 агенти + CrewAI)
|
||||
|
||||
#### 36. **Shadelock (Forensics)**
|
||||
- **ID:** `agent-shadelock-forensics`
|
||||
- **Role:** Blockchain Forensics
|
||||
- **Model:** qwen2.5-coder:72b (ollama)
|
||||
- **Priority:** High
|
||||
- **Department:** Crypto Forensics
|
||||
- **CrewAI:** ✅
|
||||
|
||||
#### 37. **Exor (Forensics)**
|
||||
- **ID:** `agent-exor-forensics`
|
||||
- **Role:** Crypto Investigator
|
||||
- **Model:** deepseek-r1:70b (42 GB)
|
||||
- **Priority:** High
|
||||
- **Department:** Crypto Forensics
|
||||
- **CrewAI:** ✅
|
||||
|
||||
---
|
||||
|
||||
### 👁️ Vision Crew (4 агенти + CrewAI) — **ПОТРЕБУЄ ВІДНОВЛЕННЯ МОДЕЛІ**
|
||||
|
||||
#### 38. **Iris**
|
||||
- **ID:** `agent-iris`
|
||||
- **Role:** Image Analyzer
|
||||
- **Model:** qwen2-vl:32b ❌ **МОДЕЛЬ ВІДСУТНЯ**
|
||||
- **Priority:** High
|
||||
- **Department:** Vision
|
||||
- **CrewAI:** ✅
|
||||
- **Статус:** ⚠️ Потребує vision-модель
|
||||
|
||||
#### 39. **Lumen**
|
||||
- **ID:** `agent-lumen`
|
||||
- **Role:** Visual Content Creator
|
||||
- **Model:** qwen2-vl:32b ❌ **МОДЕЛЬ ВІДСУТНЯ**
|
||||
- **Priority:** High
|
||||
- **Department:** Vision
|
||||
- **CrewAI:** ✅
|
||||
- **Статус:** ⚠️ Потребує vision-модель
|
||||
|
||||
#### 40. **Spectra**
|
||||
- **ID:** `agent-spectra`
|
||||
- **Role:** Multimodal Processor
|
||||
- **Model:** qwen3-vl:latest ❌ **МОДЕЛЬ ВИДАЛЕНА**
|
||||
- **Priority:** High
|
||||
- **Department:** Vision
|
||||
- **CrewAI:** ✅
|
||||
- **Статус:** ❌ Модель була видалена з git
|
||||
|
||||
#### 41. **Video Analyzer**
|
||||
- **ID:** `agent-video-analyzer`
|
||||
- **Role:** Video Analysis & Processing
|
||||
- **Model:** qwen2-vl:32b ❌ **МОДЕЛЬ ВІДСУТНЯ**
|
||||
- **Priority:** Medium
|
||||
- **Department:** Vision
|
||||
- **CrewAI:** ✅
|
||||
- **Статус:** ⚠️ Потребує vision-модель
|
||||
|
||||
---
|
||||
|
||||
### 🔬 R&D Lab Agents (6 агентів + Sofia)
|
||||
|
||||
#### 42. **ProtoMind**
|
||||
- **ID:** `agent-protomind`
|
||||
- **Role:** Experimental Architect
|
||||
- **Model:** deepseek-r1:70b (42 GB)
|
||||
- **Priority:** High
|
||||
- **Workspace:** r_and_d_lab
|
||||
- **Department:** R&D
|
||||
|
||||
#### 43. **LabForge**
|
||||
- **ID:** `agent-labforge`
|
||||
- **Role:** R&D Agent Builder
|
||||
- **Model:** qwen2.5-coder:32b (19 GB)
|
||||
- **Priority:** High
|
||||
- **Workspace:** r_and_d_lab
|
||||
- **Department:** R&D
|
||||
|
||||
#### 44. **TestPilot**
|
||||
- **ID:** `agent-testpilot`
|
||||
- **Role:** Experimental Tester
|
||||
- **Model:** mistral-nemo:12b (7.1 GB)
|
||||
- **Priority:** Medium
|
||||
- **Workspace:** r_and_d_lab
|
||||
- **Department:** R&D
|
||||
|
||||
#### 45. **ModelScout**
|
||||
- **ID:** `agent-modelscout`
|
||||
- **Role:** New Models Explorer
|
||||
- **Model:** gemma2:27b (15 GB)
|
||||
- **Priority:** Medium
|
||||
- **Workspace:** r_and_d_lab
|
||||
- **Department:** R&D
|
||||
|
||||
#### 46. **BreakPoint**
|
||||
- **ID:** `agent-breakpoint`
|
||||
- **Role:** Red-team Developer
|
||||
- **Model:** deepseek-coder:33b (18 GB)
|
||||
- **Priority:** High
|
||||
- **Workspace:** r_and_d_lab
|
||||
- **Department:** R&D
|
||||
|
||||
#### 47. **GrowCell**
|
||||
- **ID:** `agent-growcell`
|
||||
- **Role:** AI Evolution Agent
|
||||
- **Model:** phi3:latest (2.2 GB)
|
||||
- **Priority:** Medium
|
||||
- **Workspace:** r_and_d_lab
|
||||
- **Department:** R&D
|
||||
|
||||
---
|
||||
|
||||
### 🧠 Memory & Knowledge Team (3 агенти)
|
||||
|
||||
#### 48. **Somnia**
|
||||
- **ID:** `agent-somnia`
|
||||
- **Role:** Subconscious Memory
|
||||
- **Model:** qwen2.5:7b
|
||||
- **Priority:** High
|
||||
- **Department:** Memory
|
||||
- **Статус:** ✅ Active
|
||||
|
||||
#### 49. **Memory Manager**
|
||||
- **ID:** `agent-memory-manager`
|
||||
- **Role:** Memory Management & Indexing
|
||||
- **Model:** gemma2:2b
|
||||
- **Priority:** High
|
||||
- **Department:** Memory
|
||||
- **Статус:** ✅ Active
|
||||
|
||||
#### 50. **Knowledge Indexer**
|
||||
- **ID:** `agent-knowledge-indexer`
|
||||
- **Role:** Knowledge Base Indexing
|
||||
- **Model:** phi3:latest (2.2 GB)
|
||||
- **Priority:** Medium
|
||||
- **Department:** Memory
|
||||
- **Статус:** ✅ Active
|
||||
|
||||
---
|
||||
|
||||
## 📊 Підсумок по департаментам
|
||||
|
||||
| Департамент | Кількість | CrewAI | Статус |
|
||||
|-------------|-----------|--------|--------|
|
||||
| **Leadership** | 4 | ❌ | ✅ Активні |
|
||||
| **System** | 6 | ❌ | ✅ Активні |
|
||||
| **Engineering** | 5 | ✅ | ✅ Активні |
|
||||
| **Marketing** | 6 | ✅ | ✅ Активні |
|
||||
| **Finance** | 4 | ✅ | ✅ Активні |
|
||||
| **Web3** | 5 | ✅ | ✅ Активні |
|
||||
| **Security** | 5 | ✅ | ✅ Активні |
|
||||
| **Crypto Forensics** | 2 | ✅ | ✅ Активні |
|
||||
| **Vision** | 4 | ✅ | ⚠️ **Немає моделей** |
|
||||
| **R&D** | 6 | Частково | ✅ Активні |
|
||||
| **Memory** | 3 | ❌ | ✅ Активні |
|
||||
| **ВСЬОГО** | **50** | **38** | **46 OK / 4 Blocked** |
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ КРИТИЧНА ПРОБЛЕМА: Vision Crew
|
||||
|
||||
### 4 агенти ЗАБЛОКОВАНІ через відсутність vision-моделей:
|
||||
|
||||
1. **Iris** — Image Analyzer
|
||||
2. **Lumen** — Visual Content Creator
|
||||
3. **Spectra** — Multimodal Processor
|
||||
4. **Video Analyzer** — Video Analysis
|
||||
|
||||
**Потрібні моделі:**
|
||||
- `qwen2-vl:32b` (для Iris, Lumen, Video Analyzer)
|
||||
- `qwen3-vl:latest` (для Spectra) — **БУЛА ВИДАЛЕНА з git**
|
||||
|
||||
**Рішення:**
|
||||
```bash
|
||||
# Варіант 1: LLaVA (швидко, 13 GB)
|
||||
ollama pull llava:13b
|
||||
|
||||
# Варіант 2: Qwen2-VL (19 GB)
|
||||
ollama pull qwen2-vl:32b
|
||||
|
||||
# Варіант 3: Відновити Qwen3-VL з HuggingFace (130 GB)
|
||||
huggingface-cli download Qwen/Qwen3-VL-32B-Instruct
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 ПЛАН РОЗШИРЕННЯ ДО 108 АГЕНТІВ
|
||||
|
||||
### Що вже є: 50 агентів
|
||||
|
||||
### Що планується додати: +58 агентів
|
||||
|
||||
#### 1. **HR & Recruitment Team** (8 агентів)
|
||||
- HR Manager
|
||||
- Recruiter
|
||||
- Onboarding Specialist
|
||||
- Training Coordinator
|
||||
- Performance Analyst
|
||||
- Culture Ambassador
|
||||
- Benefits Administrator
|
||||
- Employee Relations
|
||||
|
||||
#### 2. **Legal & Compliance Team** (6 агентів)
|
||||
- General Counsel
|
||||
- Contract Specialist
|
||||
- Regulatory Compliance
|
||||
- IP Attorney
|
||||
- Risk Manager
|
||||
- Legal Research
|
||||
|
||||
#### 3. **Operations Team** (8 агентів)
|
||||
- Operations Manager
|
||||
- Process Optimizer
|
||||
- Vendor Manager
|
||||
- Procurement Specialist
|
||||
- Quality Assurance
|
||||
- Logistics Coordinator
|
||||
- Facilities Manager
|
||||
- Supply Chain Analyst
|
||||
|
||||
#### 4. **Product Team** (8 агентів)
|
||||
- Product Manager
|
||||
- Product Designer
|
||||
- UX Researcher
|
||||
- Feature Analyst
|
||||
- Roadmap Planner
|
||||
- User Advocate
|
||||
- A/B Test Coordinator
|
||||
- Launch Manager
|
||||
|
||||
#### 5. **Data Science Team** (6 агентів)
|
||||
- Data Scientist
|
||||
- ML Engineer
|
||||
- Data Engineer
|
||||
- Analytics Lead
|
||||
- Visualization Specialist
|
||||
- AI Researcher
|
||||
|
||||
#### 6. **Customer Success Team** (6 агентів)
|
||||
- Customer Success Manager
|
||||
- Support Specialist
|
||||
- Onboarding Coach
|
||||
- Feedback Analyst
|
||||
- Retention Specialist
|
||||
- Success Metrics Analyst
|
||||
|
||||
#### 7. **Sales & Business Development** (6 агентів)
|
||||
- Sales Manager
|
||||
- Account Executive
|
||||
- BDR (Business Development Rep)
|
||||
- Partnership Manager
|
||||
- Sales Analyst
|
||||
- Deal Closer
|
||||
|
||||
#### 8. **DevOps & Infrastructure** (6 агентів)
|
||||
- DevOps Engineer
|
||||
- Cloud Architect
|
||||
- Database Administrator
|
||||
- Network Engineer
|
||||
- Backup & Recovery Specialist
|
||||
- Monitoring & Alerting Engineer
|
||||
|
||||
#### 9. **Quality Assurance Team** (4 агенти)
|
||||
- QA Lead
|
||||
- Test Automation Engineer
|
||||
- Manual Tester
|
||||
- Performance Tester
|
||||
|
||||
---
|
||||
|
||||
## 🚀 НАСТУПНІ КРОКИ
|
||||
|
||||
### 1. ⚠️ Відновити Vision Crew (Priority: HIGH)
|
||||
```bash
|
||||
# Завантажити LLaVA для швидкого старту
|
||||
ollama pull llava:13b
|
||||
|
||||
# Оновити конфіг агентів Vision Crew
|
||||
# Змінити model: qwen2-vl:32b → llava:13b
|
||||
```
|
||||
|
||||
### 2. ✅ Запустити STT/OCR для мультимодальності
|
||||
```bash
|
||||
cd ~/microdao-daarion/services/stt-service
|
||||
docker-compose up -d
|
||||
|
||||
cd ~/microdao-daarion/services/ocr-service
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### 3. 🔗 Підключити Swapper до DAGI Router
|
||||
```bash
|
||||
# NODE1: Додати SWAPPER_URL до Router env
|
||||
SWAPPER_URL=http://192.168.1.244:8890
|
||||
|
||||
# Перезапустити Router
|
||||
docker restart dagi-router
|
||||
```
|
||||
|
||||
### 4. 🏙️ Інтегрувати агентів у DAARION City
|
||||
**Мапінг 50 агентів → кімнати міста:**
|
||||
- Leadership Hall (4 агенти: Solarius, Sofia, PrimeSynth, Nexor)
|
||||
- Engineering Lab (5 агентів: ByteForge, Vector, ChainWeaver, Cypher, Canvas)
|
||||
- Marketing Hub (6 агентів: Roxy, Mira, Tempo, Harmony, Faye, Storytelling)
|
||||
- Finance Office (4 агенти: Financial Analyst, Accountant, Budget Planner, Tax Advisor)
|
||||
- Web3 District (5 агентів: Smart Contract Dev, DeFi Analyst, Tokenomics, NFT, DAO Governance)
|
||||
- Security Bunker (5 агентів: Shadelock, Exor, Penetration Tester, Security Monitor, Incident Responder)
|
||||
- Crypto Forensics Lab (2 агенти)
|
||||
- Vision Studio (4 агенти) — **ПІСЛЯ ВІДНОВЛЕННЯ МОДЕЛЕЙ**
|
||||
- R&D Lab (7 агентів: Sofia + 6 lab agents)
|
||||
- Memory Vault (3 агенти: Somnia, Memory Manager, Knowledge Indexer)
|
||||
|
||||
### 5. 📈 Розширення до 108 агентів (Phase 2)
|
||||
**Після успішної інтеграції перших 50:**
|
||||
- Додати HR, Legal, Operations, Product, Data Science, Customer Success, Sales, DevOps, QA teams
|
||||
- Створити нові кімнати/райони в місті
|
||||
- Налаштувати CrewAI workflows для нових команд
|
||||
|
||||
---
|
||||
|
||||
## 📝 Документація
|
||||
|
||||
**Створено:**
|
||||
- `docs/NODE2_AGENTS_FULL_INVENTORY.md` (цей файл)
|
||||
- `docs/NODE2_DIAGNOSTIC_REPORT.md` (попередній звіт)
|
||||
|
||||
**Джерела:**
|
||||
- `src/api/node2Agents.ts` (50 агентів)
|
||||
- `NODE2-AGENTS-INVENTORY.md`
|
||||
- `DAARION-CORE-NODE2-AGENTS.md`
|
||||
- `site/node2/AGENTS_ARCHITECTURE/`
|
||||
|
||||
---
|
||||
|
||||
**Дата створення:** 27.11.2025
|
||||
**Статус:** ✅ Інвентаризація завершена
|
||||
**Наступний крок:** Відновлення Vision моделей + Інтеграція в City
|
||||
|
||||
---
|
||||
|
||||
*Документ створено під час повної діагностики агентів NODE2.*
|
||||
|
||||
283
docs/NODE2_DIAGNOSTIC_REPORT.md
Normal file
283
docs/NODE2_DIAGNOSTIC_REPORT.md
Normal file
@@ -0,0 +1,283 @@
|
||||
# 🔍 NODE2 Diagnostic Report — Post-Git-Cleanup
|
||||
|
||||
**Дата:** 27 листопада 2025
|
||||
**Контекст:** Діагностика стану NODE2 після `git filter-repo` операції
|
||||
|
||||
---
|
||||
|
||||
## ✅ 1. Моделі — ВСІ ЗБЕРЕЖЕНІ (Ollama)
|
||||
|
||||
### 📦 8 моделей в Ollama (загалом ~118 GB):
|
||||
|
||||
| Модель | Розмір | Параметри | Тип | Статус |
|
||||
|--------|--------|-----------|------|--------|
|
||||
| **deepseek-r1:70b** | 42 GB | 70.6B | LLM (reasoning) | ✅ |
|
||||
| **deepseek-coder:33b** | 18 GB | 33B | Code | ✅ |
|
||||
| **qwen2.5-coder:32b** | 19 GB | 32.8B | Code | ✅ |
|
||||
| **gemma2:27b** | 15 GB | 27.2B | LLM (reasoning) | ✅ |
|
||||
| **mistral-nemo:12b** | 7.1 GB | 12.2B | LLM (reasoning) | ✅ |
|
||||
| **gpt-oss:latest** | 13 GB | 20.9B | LLM (general) | ✅ |
|
||||
| **starcoder2:3b** | 1.7 GB | 3B | Code | ✅ |
|
||||
| **phi3:latest** | 2.2 GB | 3.8B | LLM (lightweight) | ✅ |
|
||||
|
||||
**Висновок:** Всі критичні LLM-моделі збережені! Swapper може працювати.
|
||||
|
||||
---
|
||||
|
||||
### ❌ Видалено з `models/` (не Ollama):
|
||||
|
||||
- **qwen3-vl-32b-instruct** (~130 GB) — vision-модель для мультимодальності
|
||||
- 65.5 GB `.gguf` файл
|
||||
- 14x5GB safetensors файлів
|
||||
- **Призначення:** Vision AI (аналіз зображень, OCR, мультимодальність)
|
||||
|
||||
**Проблема:** Немає vision-моделей для мультимодальних запитів!
|
||||
|
||||
**Рішення:**
|
||||
1. Завантажити `llava:13b` через Ollama (~13 GB)
|
||||
2. АБО відновити Qwen3-VL з HuggingFace (якщо потрібен кастомний inference)
|
||||
|
||||
---
|
||||
|
||||
## ✅ 2. Swapper Service — ЗАПУЩЕНО
|
||||
|
||||
**Порт:** 8890
|
||||
**Статус:** ✅ Healthy
|
||||
**Конфігурація:** `swapper_config_node2.yaml`
|
||||
**Мережа:** `dagi-network`
|
||||
**Ollama URL:** `http://host.docker.internal:11434`
|
||||
|
||||
**Health Check:**
|
||||
```json
|
||||
{
|
||||
"status": "healthy",
|
||||
"service": "swapper-service",
|
||||
"active_model": null,
|
||||
"mode": "single-active"
|
||||
}
|
||||
```
|
||||
|
||||
**Активовані моделі:** 8 (всі доступні через Ollama)
|
||||
|
||||
---
|
||||
|
||||
## ✅ 3. DAGI Router — ПРАЦЮЄ
|
||||
|
||||
**Порт:** 9102
|
||||
**Статус:** Up 4 days (healthy)
|
||||
**Контейнер:** `dagi-router`
|
||||
|
||||
**Health Check:**
|
||||
```bash
|
||||
curl http://localhost:9102/health
|
||||
# Status: OK
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ 4. DAGI Stack — Частково ПРАЦЮЄ
|
||||
|
||||
### Запущені сервіси:
|
||||
|
||||
| Сервіс | Статус | Порт | Призначення |
|
||||
|--------|--------|------|-------------|
|
||||
| **dagi-router** | ✅ Up 4 days | 9102 | Маршрутизація агентів |
|
||||
| **dagi-crewai** | ✅ Up 4 days | 8080 | 12 агентів в 4 workflows |
|
||||
| **dagi-devtools** | ✅ Up 4 days | - | Dev утиліти |
|
||||
| **dagi-rbac** | ✅ Up 4 days | 8083 | Права доступу |
|
||||
| **dagi-gateway** | ✅ Up 4 days | 8081 | API Gateway |
|
||||
| **dagi-postgres** | ✅ Up 4 days | 5432 | База даних |
|
||||
| **dagi-web-search-service** | ⚠️ Unhealthy | 8897 | Web пошук |
|
||||
|
||||
---
|
||||
|
||||
### 🤖 12 CrewAI Агентів (4 Workflows):
|
||||
|
||||
#### 1. **Onboarding Workflow** (3 агенти)
|
||||
- `welcomer` — вітання нових користувачів
|
||||
- `role_assigner` — призначення ролей
|
||||
- `guide` — навігація по системі
|
||||
|
||||
#### 2. **Code Review Workflow** (3 агенти)
|
||||
- `reviewer` — перегляд коду
|
||||
- `security_checker` — аналіз безпеки
|
||||
- `performance_analyzer` — оптимізація
|
||||
|
||||
#### 3. **Proposal Review Workflow** (3 агенти)
|
||||
- `legal_checker` — юридична перевірка
|
||||
- `financial_analyzer` — фінансовий аналіз
|
||||
- `impact_assessor` — оцінка впливу
|
||||
|
||||
#### 4. **Task Decomposition Workflow** (3 агенти)
|
||||
- `planner` — планування задач
|
||||
- `estimator` — оцінка складності
|
||||
- `dependency_analyzer` — аналіз залежностей
|
||||
|
||||
**API:**
|
||||
```bash
|
||||
curl http://localhost:9010/workflow/list
|
||||
# 4 workflows доступні
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 5. Мультимодальні сервіси — ЧАСТКОВО
|
||||
|
||||
### ✅ Працюють:
|
||||
|
||||
| Сервіс | Порт | Статус | Призначення |
|
||||
|--------|------|--------|-------------|
|
||||
| **Web Search** | 8897 | ✅ Healthy | DuckDuckGo + Google |
|
||||
| **Vector DB (Qdrant)** | 6333 | ✅ Running | Векторний пошук |
|
||||
| **Agent Cabinet** | 8898 | ✅ Healthy | Управління агентами |
|
||||
| **MeiliSearch** | 7700 | ✅ Running | Текстовий пошук |
|
||||
|
||||
### ❌ НЕ працюють:
|
||||
|
||||
| Сервіс | Порт | Статус | Причина |
|
||||
|--------|------|--------|---------|
|
||||
| **STT Service** | 8895 | ❌ Not running | Не запущено |
|
||||
| **OCR Service** | 8896 | ❌ Not running | Не запущено |
|
||||
|
||||
**Документація:** `COMPLETE-MULTIMODAL-ECOSYSTEM.md`
|
||||
|
||||
---
|
||||
|
||||
## 📊 6. Інфраструктура NODE2
|
||||
|
||||
### Ресурси:
|
||||
- **CPU:** Apple M4 Max (40-core GPU)
|
||||
- **RAM:** 64 GB
|
||||
- **VRAM:** 48 GB (GPU)
|
||||
- **Диск:** ~500 GB вільно (після cleanup)
|
||||
|
||||
### Docker мережа:
|
||||
- `dagi-network` — всі DAGI сервіси
|
||||
- Bridge для комунікації між контейнерами
|
||||
|
||||
### Ollama:
|
||||
- **Версія:** Latest
|
||||
- **URL:** http://localhost:11434
|
||||
- **Models dir:** `/Users/apple/.ollama/models`
|
||||
|
||||
---
|
||||
|
||||
## 🎯 7. НАСТУПНІ КРОКИ
|
||||
|
||||
### A) **Відновити Vision-модель** (для мультимодальності)
|
||||
|
||||
**Варіант 1: LLaVA через Ollama** (ШВИДКО, ~13 GB)
|
||||
```bash
|
||||
ollama pull llava:13b
|
||||
```
|
||||
|
||||
**Варіант 2: Qwen3-VL з HuggingFace** (ПОВІЛЬНО, ~130 GB)
|
||||
```bash
|
||||
# З HuggingFace Hub
|
||||
huggingface-cli download Qwen/Qwen3-VL-32B-Instruct
|
||||
```
|
||||
|
||||
**Рекомендація:** Почати з LLaVA (менше, швидше), потім за потреби Qwen3-VL.
|
||||
|
||||
---
|
||||
|
||||
### B) **Запустити STT/OCR сервіси**
|
||||
|
||||
```bash
|
||||
# STT Service (Whisper)
|
||||
cd ~/microdao-daarion/services/stt-service
|
||||
docker-compose up -d
|
||||
|
||||
# OCR Service (Tesseract + EasyOCR)
|
||||
cd ~/microdao-daarion/services/ocr-service
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
**Документація:** `COMPLETE-MULTIMODAL-ECOSYSTEM.md` (рядки 139-180)
|
||||
|
||||
---
|
||||
|
||||
### C) **Підключити Swapper до DAGI Router**
|
||||
|
||||
1. Перевірити Router конфігурацію (`/opt/daarion/app/services/router/config.yaml`)
|
||||
2. Додати `SWAPPER_URL` env var до Router:
|
||||
```yaml
|
||||
SWAPPER_URL: http://192.168.1.244:8890 # NODE2 IP
|
||||
```
|
||||
3. Перезапустити Router на NODE1:
|
||||
```bash
|
||||
ssh root@144.76.224.179
|
||||
docker restart dagi-router
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### D) **Інтегрувати CrewAI агентів у DAARION City**
|
||||
|
||||
**12 агентів → 12 кімнат** (або згрупувати по workflows):
|
||||
- **Onboarding Hall** — 3 агенти
|
||||
- **Code Review Lab** — 3 агенти
|
||||
- **Governance Hall** — 3 агенти
|
||||
- **Planning Room** — 3 агенти
|
||||
|
||||
**API Integration:**
|
||||
```python
|
||||
# city-service → dagi-crewai
|
||||
POST http://localhost:9010/workflow/execute
|
||||
{
|
||||
"workflow": "onboarding",
|
||||
"agent": "welcomer",
|
||||
"input": {...}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### E) **Web3 Login + Token-gate** (Phase 4)
|
||||
|
||||
**Після всіх агентів**:
|
||||
1. Metamask + SIWE v2
|
||||
2. `has_DAARION_token` перевірка
|
||||
3. Обмеження доступу до кімнат
|
||||
4. Citizenship Pass
|
||||
|
||||
---
|
||||
|
||||
## 📝 8. Документація
|
||||
|
||||
**Основні файли:**
|
||||
- `COMPLETE-MULTIMODAL-ECOSYSTEM.md` — повна мультимодальна архітектура
|
||||
- `DEPLOY_STRATEGY_MULTIMODAL_MVP.md` — стратегія інтеграції
|
||||
- `services/swapper-service/config/swapper_config_node2.yaml` — конфіг Swapper
|
||||
- `ROUTER-MULTIMODAL-SUPPORT.md` — підтримка мультимодальності в Router
|
||||
|
||||
**Створено під час діагностики:**
|
||||
- `docs/NODE2_DIAGNOSTIC_REPORT.md` (цей файл)
|
||||
|
||||
---
|
||||
|
||||
## ✅ 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)
|
||||
- ⚠️ **Інтегрувати агентів у City** (12 агентів → кімнати)
|
||||
|
||||
---
|
||||
|
||||
**Діагностику виконано:** 27.11.2025
|
||||
**Статус NODE2:** ✅ Готовий до інтеграції з DAARION MVP
|
||||
**Блокерів:** Немає (все працює, потрібна лише конфігурація)
|
||||
|
||||
---
|
||||
|
||||
*Документ створено автоматично під час діагностики NODE2 після git cleanup операції.*
|
||||
|
||||
343
docs/NODE_PROFILE_STANDARD_v1.md
Normal file
343
docs/NODE_PROFILE_STANDARD_v1.md
Normal file
@@ -0,0 +1,343 @@
|
||||
# Node Profile Standard v1.0
|
||||
|
||||
**Date:** 2025-11-28
|
||||
**Status:** Active
|
||||
**Version:** 1.0.0
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Цей документ визначає стандартний профіль ноди в мережі DAARION/DAGI. Кожна нода описується набором модулів, які можуть бути присутні або відсутні залежно від ролі та конфігурації.
|
||||
|
||||
---
|
||||
|
||||
## Node Identity
|
||||
|
||||
Кожна нода має унікальну ідентичність:
|
||||
|
||||
```json
|
||||
{
|
||||
"node_id": "node-1-hetzner-gex44",
|
||||
"name": "Hetzner GEX44 Production",
|
||||
"roles": ["core", "gateway", "matrix", "agents", "gpu"],
|
||||
"type": "production",
|
||||
"ip_address": "144.76.224.179",
|
||||
"local_ip": null,
|
||||
"hostname": "gateway.daarion.city",
|
||||
"status": "online",
|
||||
"version": "1.0.0"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Standard Modules
|
||||
|
||||
### 1. Core Modules (Required)
|
||||
|
||||
| Module ID | Description | Required |
|
||||
|-----------|-------------|----------|
|
||||
| `core.node` | Node identity, roles, version, uptime | ✅ Yes |
|
||||
| `core.health` | Basic health check endpoint | ✅ Yes |
|
||||
|
||||
### 2. Infrastructure Modules
|
||||
|
||||
| Module ID | Description | Port | Required |
|
||||
|-----------|-------------|------|----------|
|
||||
| `infra.metrics` | CPU, RAM, Disk, GPU metrics | - | Recommended |
|
||||
| `infra.postgres` | PostgreSQL database | 5432 | Optional |
|
||||
| `infra.redis` | Redis cache | 6379 | Optional |
|
||||
| `infra.nats` | NATS message broker | 4222 | Optional |
|
||||
| `infra.qdrant` | Qdrant vector DB | 6333 | Optional |
|
||||
| `infra.neo4j` | Neo4j graph DB | 7474/7687 | Optional |
|
||||
|
||||
### 3. AI/ML Modules
|
||||
|
||||
| Module ID | Description | Port | Required |
|
||||
|-----------|-------------|------|----------|
|
||||
| `ai.ollama` | Ollama LLM runtime | 11434 | Optional |
|
||||
| `ai.swapper` | Model swapper service | 8890 | Optional |
|
||||
| `ai.router` | DAGI Router | 9102 | Optional |
|
||||
| `ai.stt` | Speech-to-Text | 8895 | Optional |
|
||||
| `ai.tts` | Text-to-Speech | 5002 | Optional |
|
||||
| `ai.vision` | Vision/Image processing | - | Optional |
|
||||
| `ai.ocr` | OCR service | 8896 | Optional |
|
||||
| `ai.image_gen` | Image generation | 9600 | Optional |
|
||||
| `ai.rag` | RAG service | - | Optional |
|
||||
| `ai.memory` | Memory service | 8001 | Optional |
|
||||
| `ai.crewai` | CrewAI orchestration | 9010 | Optional |
|
||||
|
||||
### 4. DAARION Stack Modules
|
||||
|
||||
| Module ID | Description | Port | Required |
|
||||
|-----------|-------------|------|----------|
|
||||
| `daarion.web` | Frontend (Next.js) | 3000 | Optional |
|
||||
| `daarion.city` | City Service | 7001 | Optional |
|
||||
| `daarion.agents` | Agents Service | 7002 | Optional |
|
||||
| `daarion.auth` | Auth Service | 7020 | Optional |
|
||||
| `daarion.secondme` | Second Me Service | 7003 | Optional |
|
||||
| `daarion.microdao` | MicroDAO Service | 7015 | Optional |
|
||||
|
||||
### 5. Matrix Modules
|
||||
|
||||
| Module ID | Description | Port | Required |
|
||||
|-----------|-------------|------|----------|
|
||||
| `matrix.synapse` | Matrix Synapse homeserver | 8008/8018 | Optional |
|
||||
| `matrix.element` | Element Web client | 8088 | Optional |
|
||||
| `matrix.gateway` | Matrix Gateway | 7025 | Optional |
|
||||
| `matrix.presence` | Presence Aggregator | 8085 | Optional |
|
||||
|
||||
### 6. DAGI Infrastructure Modules
|
||||
|
||||
| Module ID | Description | Port | Required |
|
||||
|-----------|-------------|------|----------|
|
||||
| `dagi.gateway` | DAGI Gateway | 9300 | Optional |
|
||||
| `dagi.rbac` | RBAC Service | 9200 | Optional |
|
||||
| `dagi.devtools` | DevTools | 8008 | Optional |
|
||||
| `dagi.registry` | Node Registry | 9205 | Optional |
|
||||
| `dagi.parser` | Parser Service | 9400 | Optional |
|
||||
|
||||
### 7. Monitoring Modules
|
||||
|
||||
| Module ID | Description | Port | Required |
|
||||
|-----------|-------------|------|----------|
|
||||
| `monitoring.prometheus` | Prometheus | 9090 | Optional |
|
||||
| `monitoring.grafana` | Grafana | 3001 | Optional |
|
||||
| `monitoring.loki` | Loki logs | - | Optional |
|
||||
|
||||
### 8. External Integrations
|
||||
|
||||
| Module ID | Description | Port | Required |
|
||||
|-----------|-------------|------|----------|
|
||||
| `integration.telegram` | Telegram Bot API | 8081 | Optional |
|
||||
| `integration.web_search` | Web Search Service | 8897 | Optional |
|
||||
|
||||
---
|
||||
|
||||
## Module Status Values
|
||||
|
||||
| Status | Description |
|
||||
|--------|-------------|
|
||||
| `up` | Module is running and healthy |
|
||||
| `down` | Module is not running |
|
||||
| `degraded` | Module is running but with issues |
|
||||
| `unknown` | Status cannot be determined |
|
||||
| `not_installed` | Module is not installed on this node |
|
||||
|
||||
---
|
||||
|
||||
## Node Profiles
|
||||
|
||||
### Production Node (NODE1)
|
||||
|
||||
```json
|
||||
{
|
||||
"node_id": "node-1-hetzner-gex44",
|
||||
"name": "Hetzner GEX44 Production",
|
||||
"roles": ["core", "gateway", "matrix", "agents", "gpu"],
|
||||
"type": "production",
|
||||
"gpu": {
|
||||
"name": "NVIDIA RTX 4000 SFF Ada",
|
||||
"vram_gb": 20
|
||||
},
|
||||
"modules": [
|
||||
{"id": "core.node", "status": "up"},
|
||||
{"id": "core.health", "status": "up"},
|
||||
{"id": "infra.metrics", "status": "up"},
|
||||
{"id": "infra.postgres", "status": "up", "port": 5432},
|
||||
{"id": "infra.redis", "status": "up", "port": 6379},
|
||||
{"id": "infra.nats", "status": "up", "port": 4222},
|
||||
{"id": "infra.qdrant", "status": "up", "port": 6333},
|
||||
{"id": "infra.neo4j", "status": "up", "port": 7474},
|
||||
{"id": "ai.ollama", "status": "up", "port": 11434, "models": ["mistral:7b"]},
|
||||
{"id": "ai.swapper", "status": "degraded", "port": 8890},
|
||||
{"id": "ai.router", "status": "up", "port": 9102},
|
||||
{"id": "ai.stt", "status": "degraded", "port": 8895},
|
||||
{"id": "ai.tts", "status": "up", "port": 5002},
|
||||
{"id": "ai.ocr", "status": "degraded", "port": 8896},
|
||||
{"id": "ai.image_gen", "status": "degraded", "port": 9600},
|
||||
{"id": "ai.memory", "status": "up", "port": 8001},
|
||||
{"id": "ai.crewai", "status": "up", "port": 9010},
|
||||
{"id": "daarion.web", "status": "up", "port": 3000},
|
||||
{"id": "daarion.city", "status": "up", "port": 7001},
|
||||
{"id": "daarion.agents", "status": "up", "port": 7002},
|
||||
{"id": "daarion.auth", "status": "up", "port": 7020},
|
||||
{"id": "daarion.secondme", "status": "up", "port": 7003},
|
||||
{"id": "daarion.microdao", "status": "up", "port": 7015},
|
||||
{"id": "matrix.synapse", "status": "up", "port": 8018},
|
||||
{"id": "matrix.element", "status": "up", "port": 8088},
|
||||
{"id": "matrix.gateway", "status": "up", "port": 7025},
|
||||
{"id": "matrix.presence", "status": "up", "port": 8085},
|
||||
{"id": "dagi.gateway", "status": "up", "port": 9300},
|
||||
{"id": "dagi.rbac", "status": "up", "port": 9200},
|
||||
{"id": "dagi.devtools", "status": "up", "port": 8008},
|
||||
{"id": "dagi.registry", "status": "up", "port": 9205},
|
||||
{"id": "dagi.parser", "status": "up", "port": 9400},
|
||||
{"id": "monitoring.prometheus", "status": "up", "port": 9090},
|
||||
{"id": "integration.telegram", "status": "up", "port": 8081}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Development Node (NODE2)
|
||||
|
||||
```json
|
||||
{
|
||||
"node_id": "node-2-macbook-m4max",
|
||||
"name": "MacBook Pro M4 Max",
|
||||
"roles": ["development", "gpu", "ai_runtime"],
|
||||
"type": "development",
|
||||
"gpu": {
|
||||
"name": "Apple M4 Max",
|
||||
"unified_memory_gb": 128
|
||||
},
|
||||
"modules": [
|
||||
{"id": "core.node", "status": "up"},
|
||||
{"id": "core.health", "status": "up"},
|
||||
{"id": "infra.postgres", "status": "up", "port": 5432},
|
||||
{"id": "infra.qdrant", "status": "up", "port": 6333},
|
||||
{"id": "ai.ollama", "status": "up", "port": 11434, "models": [
|
||||
"deepseek-r1:70b", "deepseek-coder:33b", "qwen2.5-coder:32b",
|
||||
"gemma2:27b", "mistral-nemo:12b", "llava:13b", "phi3:latest",
|
||||
"starcoder2:3b", "gpt-oss:latest"
|
||||
]},
|
||||
{"id": "ai.swapper", "status": "up", "port": 8890},
|
||||
{"id": "ai.router", "status": "up", "port": 9102},
|
||||
{"id": "ai.stt", "status": "up", "port": 8895},
|
||||
{"id": "ai.ocr", "status": "up", "port": 8896},
|
||||
{"id": "dagi.gateway", "status": "up", "port": 9300},
|
||||
{"id": "dagi.rbac", "status": "up", "port": 9200},
|
||||
{"id": "dagi.devtools", "status": "up", "port": 8008},
|
||||
{"id": "dagi.crewai", "status": "up", "port": 9010},
|
||||
{"id": "integration.web_search", "status": "up", "port": 8897}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Service Inventory
|
||||
|
||||
### NODE1 Services (35 containers)
|
||||
|
||||
| Service | Image | Port | Status | Stack |
|
||||
|---------|-------|------|--------|-------|
|
||||
| dagi-router | dagi-router:latest | 9102 | up | DAGI |
|
||||
| daarion-agents-service | daarion-agents-service:latest | 7002 | up | DAARION |
|
||||
| daarion-web | daarion-web:latest | 3000 | up | DAARION |
|
||||
| matrix-presence-aggregator | matrix-presence-aggregator:latest | 8085 | up | DAARION |
|
||||
| daarion-city-service | microdao-daarion-city-service:latest | 7001 | up | DAARION |
|
||||
| dagi-node-registry | microdao-daarion-node-registry:latest | 9205 | up | DAGI |
|
||||
| daarion-matrix-gateway | daarion-matrix-gateway:latest | 7025 | up | DAARION |
|
||||
| daarion-auth | daarion-auth | 7020 | up | DAARION |
|
||||
| daarion-synapse | matrixdotorg/synapse:latest | 8018 | up | Matrix |
|
||||
| daarion-element | vectorim/element-web:latest | 8088 | up | Matrix |
|
||||
| daarion-secondme-service | daarion-secondme-service:latest | 7003 | up | DAARION |
|
||||
| daarion-microdao-service | daarion-microdao-service:latest | 7015 | up | DAARION |
|
||||
| daarion-redis | redis:7-alpine | 6379 | up | Infra |
|
||||
| dagi-gateway | microdao-daarion-gateway | 9300 | up | DAGI |
|
||||
| dagi-rbac | microdao-daarion-rbac | 9200 | up | DAGI |
|
||||
| dagi-devtools | microdao-daarion-devtools | 8008 | up | DAGI |
|
||||
| dagi-crewai | microdao-daarion-crewai | 9010 | up | DAGI |
|
||||
| dagi-stt-service | stt-service-stt-service | 8895 | degraded | DAGI |
|
||||
| telegram-gateway | telegram-infrastructure-telegram-gateway | 8000 | up | Integration |
|
||||
| dagi-tts | daarion-tts:latest | 5002 | up | DAGI |
|
||||
| dagi-swapper-service | microdao-daarion-swapper-service | 8890 | degraded | DAGI |
|
||||
| dagi-vector-db-service | vector-db-service-vector-db-service | - | restarting | DAGI |
|
||||
| dagi-ocr-service | ocr-service-ocr-service | 8896 | degraded | DAGI |
|
||||
| dagi-web-search-service | web-search-service-web-search-service | 8897 | degraded | DAGI |
|
||||
| dagi-postgres | pgvector/pgvector:pg15 | 5432 | up | Infra |
|
||||
| dagi-memory-service | microdao-daarion-memory-service | 8001 | up | DAGI |
|
||||
| dagi-neo4j-exporter | microdao-daarion-neo4j-exporter | 9108 | up | Monitoring |
|
||||
| dagi-neo4j | neo4j:5.15-community | 7474/7687 | up | Infra |
|
||||
| dagi-nats | nats:2-alpine | 4222 | up | Infra |
|
||||
| dagi-image-gen | microdao-daarion-image-gen-service | 9600 | degraded | DAGI |
|
||||
| dagi-rag-service | microdao-daarion-rag-service | - | restarting | DAGI |
|
||||
| dagi-qdrant | qdrant/qdrant:v1.7.4 | 6333 | up | Infra |
|
||||
| dagi-prometheus | prom/prometheus:latest | 9090 | up | Monitoring |
|
||||
| dagi-parser-service | microdao-daarion-parser-service | 9400 | up | DAGI |
|
||||
| telegram-bot-api | aiogram/telegram-bot-api:latest | 8081 | up | Integration |
|
||||
|
||||
**Systemd Services:**
|
||||
- `ollama.service` — Ollama LLM runtime (port 11434)
|
||||
- `k3s.service` — Lightweight Kubernetes
|
||||
- `nvidia-persistenced.service` — NVIDIA GPU daemon
|
||||
|
||||
**GPU:** NVIDIA RTX 4000 SFF Ada Generation (20GB VRAM)
|
||||
|
||||
### NODE2 Services (13 containers)
|
||||
|
||||
| Service | Image | Port | Status | Stack |
|
||||
|---------|-------|------|--------|-------|
|
||||
| ocr-service | ocr-service:latest | 8896 | up | DAGI |
|
||||
| dagi-stt-service | stt-service-stt-service | 8895 | up | DAGI |
|
||||
| swapper-service | swapper-service:latest | 8890 | up | DAGI |
|
||||
| dagi-web-search-service | web-search-service-web-search-service | 8897 | degraded | DAGI |
|
||||
| dagi-postgres | postgres:15-alpine | 5432 | up | Infra |
|
||||
| dagi-gateway | microdao-daarion-gateway | 9300 | up | DAGI |
|
||||
| dagi-router | microdao-daarion-router | 9102 | up | DAGI |
|
||||
| dagi-crewai | microdao-daarion-crewai | 9010 | up | DAGI |
|
||||
| dagi-devtools | microdao-daarion-devtools | 8008 | up | DAGI |
|
||||
| dagi-rbac | microdao-daarion-rbac | 9200 | up | DAGI |
|
||||
| jupyter-lab | jupyter/datascience-notebook:latest | 8888 | up | Dev |
|
||||
| qdrant-vector-db | qdrant/qdrant:latest | 6333 | up | Infra |
|
||||
| meilisearch-search | getmeili/meilisearch:v1.11 | 7700 | up | Infra |
|
||||
|
||||
**Ollama Models (9):**
|
||||
- deepseek-r1:70b (42 GB)
|
||||
- deepseek-coder:33b (18 GB)
|
||||
- qwen2.5-coder:32b (19 GB)
|
||||
- gemma2:27b (15 GB)
|
||||
- mistral-nemo:12b (7 GB)
|
||||
- llava:13b (8 GB)
|
||||
- phi3:latest (2 GB)
|
||||
- starcoder2:3b (2 GB)
|
||||
- gpt-oss:latest (13 GB)
|
||||
|
||||
**GPU:** Apple M4 Max (128GB Unified Memory)
|
||||
|
||||
---
|
||||
|
||||
## API Contract
|
||||
|
||||
### Node Dashboard Endpoint
|
||||
|
||||
`GET /node/dashboard`
|
||||
|
||||
Returns aggregated dashboard data for the current node.
|
||||
|
||||
```json
|
||||
{
|
||||
"node": {
|
||||
"id": "node-1-hetzner-gex44",
|
||||
"name": "Hetzner GEX44 Production",
|
||||
"status": "online",
|
||||
"uptime_seconds": 604800,
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"resources": {
|
||||
"cpu_usage_pct": 37.5,
|
||||
"ram": {"total_gb": 64, "used_gb": 43},
|
||||
"gpu": {"name": "NVIDIA RTX 4000 SFF Ada", "vram_gb": 20, "used_gb": 18},
|
||||
"disk": {"total_gb": 4000, "used_gb": 2200}
|
||||
},
|
||||
"modules": [
|
||||
{"id": "ai.router", "status": "up", "port": 9102, "latency_ms": 23},
|
||||
{"id": "ai.swapper", "status": "up", "port": 8890, "active_model": "mistral:7b"},
|
||||
...
|
||||
],
|
||||
"agents": {
|
||||
"total": 54,
|
||||
"online": 53,
|
||||
"by_kind": {"vision": 4, "developer": 5, ...}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Changelog
|
||||
|
||||
- **v1.0.0** (2025-11-28): Initial standard based on NODE1/NODE2 audit
|
||||
|
||||
315
docs/internal/dais/AGENT_PROFILE_STANDARD_v1.md
Normal file
315
docs/internal/dais/AGENT_PROFILE_STANDARD_v1.md
Normal file
@@ -0,0 +1,315 @@
|
||||
# DAIS: Agent Profile Standard v1.0
|
||||
|
||||
**Date:** 2025-11-28
|
||||
**Status:** Active
|
||||
**Version:** 1.0.0
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
DAIS (Decentralized AI Agent Standard) визначає структуру профілю AI-агента в екосистемі DAARION. Кожен агент має 4 основні модулі:
|
||||
|
||||
1. **CORE (META)** — "Хто я?" — ідентичність, роль, місія
|
||||
2. **VIS (Visual Kernel)** — "Як я виглядаю?" — аватар, стиль, візуальний образ
|
||||
3. **COG (Cognitive Engine)** — "Як я думаю?" — модель, пам'ять, контекст
|
||||
4. **ACT (Action Interface)** — "Що я можу робити?" — інструменти, інтерфейси
|
||||
|
||||
---
|
||||
|
||||
## Agent Identity
|
||||
|
||||
```json
|
||||
{
|
||||
"agent_id": "string",
|
||||
"display_name": "string",
|
||||
"kind": "string",
|
||||
"status": "online|offline|degraded|training|maintenance",
|
||||
"node_id": "string",
|
||||
"roles": ["string"],
|
||||
"tags": ["string"]
|
||||
}
|
||||
```
|
||||
|
||||
### Agent Kinds
|
||||
|
||||
| Kind | Description |
|
||||
|------|-------------|
|
||||
| `orchestrator` | Координує інших агентів |
|
||||
| `coordinator` | Управляє workflow |
|
||||
| `specialist` | Експерт у вузькій області |
|
||||
| `developer` | Розробка коду |
|
||||
| `architect` | Системна архітектура |
|
||||
| `marketing` | Маркетинг і комунікації |
|
||||
| `finance` | Фінанси і аналітика |
|
||||
| `security` | Безпека і аудит |
|
||||
| `forensics` | Форензика і розслідування |
|
||||
| `vision` | Обробка зображень/відео |
|
||||
| `research` | Дослідження і аналіз |
|
||||
| `memory` | Управління пам'яттю |
|
||||
| `web3` | Blockchain і криптовалюти |
|
||||
| `strategic` | Стратегічне планування |
|
||||
| `mediator` | Вирішення конфліктів |
|
||||
| `innovation` | Інновації та R&D |
|
||||
| `civic` | Громадські справи |
|
||||
| `oracle` | Зовнішні дані |
|
||||
| `builder` | Створення контенту |
|
||||
| `social` | Соціальна взаємодія |
|
||||
|
||||
---
|
||||
|
||||
## DAIS Modules
|
||||
|
||||
### 1. CORE (META) — Identity
|
||||
|
||||
```json
|
||||
{
|
||||
"core": {
|
||||
"title": "string",
|
||||
"bio": "string",
|
||||
"mission": "string",
|
||||
"version": "string",
|
||||
"created_at": "ISO8601",
|
||||
"updated_at": "ISO8601"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. VIS (Visual Kernel) — Appearance
|
||||
|
||||
```json
|
||||
{
|
||||
"vis": {
|
||||
"avatar_url": "string",
|
||||
"avatar_style": "anime|realistic|abstract|cyberpunk",
|
||||
"color_primary": "#hex",
|
||||
"color_secondary": "#hex",
|
||||
"lora_refs": ["string"],
|
||||
"checkpoint_refs": ["string"],
|
||||
"second_me_id": "string"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 3. COG (Cognitive Engine) — Brain
|
||||
|
||||
```json
|
||||
{
|
||||
"cog": {
|
||||
"base_model": "string",
|
||||
"provider": "ollama|openai|anthropic|custom",
|
||||
"node_id": "string",
|
||||
"context_window": 8192,
|
||||
"temperature": 0.7,
|
||||
"system_prompt": "string",
|
||||
"memory": {
|
||||
"type": "RAG|long-term|episodic",
|
||||
"store": "qdrant|chroma|postgres",
|
||||
"collections": ["string"],
|
||||
"max_tokens": 160000
|
||||
},
|
||||
"tools_enabled": ["string"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4. ACT (Action Interface) — Capabilities
|
||||
|
||||
```json
|
||||
{
|
||||
"act": {
|
||||
"matrix": {
|
||||
"user_id": "@agent:daarion.space",
|
||||
"rooms": ["!room:daarion.space"]
|
||||
},
|
||||
"tools": ["tool_id"],
|
||||
"apis": ["api_endpoint"],
|
||||
"web3": {
|
||||
"wallet_address": "0x...",
|
||||
"chains": ["ethereum", "polygon"]
|
||||
},
|
||||
"social": {
|
||||
"twitter": "@handle",
|
||||
"telegram": "@handle"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## City Presence
|
||||
|
||||
Агент може бути присутнім у City Rooms:
|
||||
|
||||
```json
|
||||
{
|
||||
"city_presence": {
|
||||
"primary_room_slug": "string",
|
||||
"district": "string",
|
||||
"rooms": [
|
||||
{
|
||||
"room_id": "string",
|
||||
"slug": "string",
|
||||
"name": "string",
|
||||
"role": "resident|moderator|owner"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Metrics
|
||||
|
||||
Runtime метрики агента:
|
||||
|
||||
```json
|
||||
{
|
||||
"metrics": {
|
||||
"tasks_1h": 42,
|
||||
"tasks_24h": 320,
|
||||
"errors_1h": 0,
|
||||
"errors_24h": 1,
|
||||
"avg_latency_ms_1h": 180,
|
||||
"success_rate_24h": 0.99,
|
||||
"tokens_24h": 2400000,
|
||||
"last_task_at": "ISO8601"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Full Agent Profile Example
|
||||
|
||||
```json
|
||||
{
|
||||
"agent_id": "iris",
|
||||
"display_name": "Iris",
|
||||
"kind": "vision",
|
||||
"status": "online",
|
||||
"node_id": "node-2-macbook-m4max",
|
||||
"roles": ["vision", "highlights", "safety"],
|
||||
"tags": ["video", "frames", "clips"],
|
||||
|
||||
"dais": {
|
||||
"core": {
|
||||
"title": "Multimodal Vision Analyst",
|
||||
"bio": "Iris analyzes video frames, extracts highlights and detects key scenes.",
|
||||
"mission": "Make video content accessible and searchable",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"vis": {
|
||||
"avatar_url": "/assets/agents/iris.png",
|
||||
"avatar_style": "anime-cyberpunk",
|
||||
"color_primary": "#22D3EE",
|
||||
"color_secondary": "#0891B2",
|
||||
"lora_refs": ["hf://daarion/iris-lora"],
|
||||
"second_me_id": "secondme_iris_v1"
|
||||
},
|
||||
"cog": {
|
||||
"base_model": "llava:13b",
|
||||
"provider": "ollama",
|
||||
"node_id": "node-2-macbook-m4max",
|
||||
"context_window": 8192,
|
||||
"temperature": 0.7,
|
||||
"memory": {
|
||||
"type": "RAG",
|
||||
"store": "qdrant",
|
||||
"collections": ["iris_sessions", "video_highlights"],
|
||||
"max_tokens": 160000
|
||||
},
|
||||
"tools_enabled": ["video_cut", "thumbnail_gen", "safety_scan"]
|
||||
},
|
||||
"act": {
|
||||
"matrix": {
|
||||
"user_id": "@iris:daarion.space",
|
||||
"rooms": ["!vision_lab:daarion.space", "!central_square:daarion.space"]
|
||||
},
|
||||
"tools": ["video_cut", "thumbnail_gen", "safety_scan"],
|
||||
"web3": null
|
||||
}
|
||||
},
|
||||
|
||||
"city_presence": {
|
||||
"primary_room_slug": "vision-lab",
|
||||
"district": "creators",
|
||||
"rooms": [
|
||||
{"room_id": "city_vision_lab", "slug": "vision-lab", "name": "Vision Lab", "role": "resident"},
|
||||
{"room_id": "city_central_square", "slug": "central-square", "name": "Central Square", "role": "resident"}
|
||||
]
|
||||
},
|
||||
|
||||
"metrics": {
|
||||
"tasks_1h": 42,
|
||||
"tasks_24h": 320,
|
||||
"errors_24h": 1,
|
||||
"avg_latency_ms_1h": 180,
|
||||
"success_rate_24h": 0.99,
|
||||
"tokens_24h": 2400000,
|
||||
"last_task_at": "2025-11-27T09:01:23Z"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Agent Dashboard API
|
||||
|
||||
### Endpoints
|
||||
|
||||
```http
|
||||
GET /api/v1/agents/{agent_id}/dashboard
|
||||
GET /api/v1/agents/{agent_id}/profile
|
||||
PUT /api/v1/agents/{agent_id}/profile (admin only)
|
||||
```
|
||||
|
||||
### Dashboard Response
|
||||
|
||||
```json
|
||||
{
|
||||
"profile": { /* Agent Profile */ },
|
||||
"node": {
|
||||
"node_id": "string",
|
||||
"status": "online",
|
||||
"gpu": { "name": "string", "vram_gb": 20 }
|
||||
},
|
||||
"runtime": {
|
||||
"router_endpoint": "http://node:9102",
|
||||
"health": "healthy",
|
||||
"last_success_at": "ISO8601",
|
||||
"last_error_at": null
|
||||
},
|
||||
"metrics": { /* Metrics */ },
|
||||
"recent_activity": [
|
||||
{
|
||||
"timestamp": "ISO8601",
|
||||
"type": "task_completed|chat_reply|error",
|
||||
"room_slug": "string",
|
||||
"summary": "string"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Database Schema
|
||||
|
||||
### agents table (extended)
|
||||
|
||||
```sql
|
||||
ALTER TABLE agents ADD COLUMN IF NOT EXISTS dais_core JSONB DEFAULT '{}';
|
||||
ALTER TABLE agents ADD COLUMN IF NOT EXISTS dais_vis JSONB DEFAULT '{}';
|
||||
ALTER TABLE agents ADD COLUMN IF NOT EXISTS dais_cog JSONB DEFAULT '{}';
|
||||
ALTER TABLE agents ADD COLUMN IF NOT EXISTS dais_act JSONB DEFAULT '{}';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Changelog
|
||||
|
||||
- **v1.0.0** (2025-11-28): Initial DAIS standard based on 4-module architecture
|
||||
|
||||
236
docs/internal/infra/Node_Dashboard_API_v1.md
Normal file
236
docs/internal/infra/Node_Dashboard_API_v1.md
Normal file
@@ -0,0 +1,236 @@
|
||||
# Node Dashboard API v1.0
|
||||
|
||||
**Date:** 2025-11-28
|
||||
**Status:** Active
|
||||
**Service:** node-registry
|
||||
**Base URL:** `/api/v1/nodes`
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Node Dashboard API — агрегуючий API для отримання повної інформації про ноду, включаючи:
|
||||
- Базовий профіль (roles, modules, GPU)
|
||||
- Інфраструктурні метрики (CPU, RAM, Disk, GPU)
|
||||
- Статус AI-сервісів (Swapper, Router, STT, Vision, OCR)
|
||||
- Агенти на ноді
|
||||
- Matrix інтеграція
|
||||
- Моніторинг
|
||||
|
||||
---
|
||||
|
||||
## Endpoints
|
||||
|
||||
### 1. Get Node Dashboard (Admin)
|
||||
|
||||
```http
|
||||
GET /api/v1/nodes/{node_id}/dashboard
|
||||
Authorization: Bearer <admin_token>
|
||||
```
|
||||
|
||||
Повертає повну інформацію про ноду для адміністратора.
|
||||
|
||||
### 2. Get Self Dashboard (Node Owner)
|
||||
|
||||
```http
|
||||
GET /api/v1/nodes/self/dashboard
|
||||
Authorization: Bearer <node_token>
|
||||
```
|
||||
|
||||
Повертає інформацію про поточну ноду (node_id з JWT claims).
|
||||
|
||||
---
|
||||
|
||||
## Response Schema
|
||||
|
||||
```json
|
||||
{
|
||||
"node": {
|
||||
"node_id": "string",
|
||||
"name": "string",
|
||||
"roles": ["string"],
|
||||
"status": "online|offline|degraded|maintenance",
|
||||
"public_hostname": "string",
|
||||
"environment": "production|development",
|
||||
"gpu": {
|
||||
"vendor": "string",
|
||||
"model": "string",
|
||||
"vram_gb": "number",
|
||||
"unified_memory_gb": "number (optional, for Apple Silicon)"
|
||||
},
|
||||
"modules": [
|
||||
{
|
||||
"id": "string",
|
||||
"status": "up|down|degraded|unknown",
|
||||
"port": "number (optional)",
|
||||
"error": "string (optional)"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"infra": {
|
||||
"cpu_usage_pct": "number",
|
||||
"ram": {
|
||||
"total_gb": "number",
|
||||
"used_gb": "number"
|
||||
},
|
||||
"disk": {
|
||||
"total_gb": "number",
|
||||
"used_gb": "number"
|
||||
},
|
||||
"gpus": [
|
||||
{
|
||||
"name": "string",
|
||||
"vram_gb": "number",
|
||||
"used_gb": "number",
|
||||
"sm_util_pct": "number"
|
||||
}
|
||||
],
|
||||
"network": {
|
||||
"rx_mbps": "number",
|
||||
"tx_mbps": "number"
|
||||
}
|
||||
},
|
||||
|
||||
"ai": {
|
||||
"swapper": {
|
||||
"status": "up|down|degraded",
|
||||
"endpoint": "string",
|
||||
"latency_ms": "number",
|
||||
"storage": {
|
||||
"total_gb": "number",
|
||||
"used_gb": "number",
|
||||
"free_gb": "number"
|
||||
},
|
||||
"models": [
|
||||
{
|
||||
"name": "string",
|
||||
"size_gb": "number",
|
||||
"device": "gpu|disk",
|
||||
"state": "loaded|unloaded",
|
||||
"last_used": "ISO8601"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"router": {
|
||||
"status": "up|down|degraded",
|
||||
"endpoint": "string",
|
||||
"version": "string",
|
||||
"backends": [
|
||||
{
|
||||
"name": "string",
|
||||
"status": "up|down|degraded",
|
||||
"latency_ms": "number",
|
||||
"error": "string (optional)"
|
||||
}
|
||||
],
|
||||
"metrics": {
|
||||
"requests_1m": "number",
|
||||
"requests_1h": "number",
|
||||
"error_rate_1h": "number",
|
||||
"avg_latency_ms_1h": "number"
|
||||
}
|
||||
},
|
||||
|
||||
"services": {
|
||||
"<service_name>": {
|
||||
"status": "up|down|degraded",
|
||||
"endpoint": "string",
|
||||
"latency_ms": "number",
|
||||
"error": "string (optional)",
|
||||
"models": ["string (optional)"]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"agents": {
|
||||
"total": "number",
|
||||
"running": "number",
|
||||
"by_kind": {
|
||||
"<kind>": "number"
|
||||
},
|
||||
"top": [
|
||||
{
|
||||
"agent_id": "string",
|
||||
"display_name": "string",
|
||||
"kind": "string",
|
||||
"status": "online|offline|busy",
|
||||
"node_id": "string",
|
||||
"tasks_24h": "number",
|
||||
"errors_24h": "number"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"matrix": {
|
||||
"enabled": "boolean",
|
||||
"homeserver": "string",
|
||||
"presence_bridge": {
|
||||
"status": "up|down",
|
||||
"latency_ms": "number"
|
||||
}
|
||||
},
|
||||
|
||||
"monitoring": {
|
||||
"prometheus": {
|
||||
"url": "string",
|
||||
"status": "up|down|unknown"
|
||||
},
|
||||
"grafana": {
|
||||
"url": "string",
|
||||
"status": "up|down|unknown"
|
||||
},
|
||||
"logging": {
|
||||
"loki": {
|
||||
"status": "up|down|unknown"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Module Probes
|
||||
|
||||
Dashboard API опитує модулі за допомогою HTTP probes:
|
||||
|
||||
| Module | Probe URL | Timeout |
|
||||
|--------|-----------|---------|
|
||||
| `core.health` | `GET /health` | 500ms |
|
||||
| `ai.swapper` | `GET :8890/health` + `GET :8890/models` | 1000ms |
|
||||
| `ai.router` | `GET :9102/health` + `GET :9102/backends/status` | 1000ms |
|
||||
| `ai.stt` | `GET :8895/health` | 500ms |
|
||||
| `ai.tts` | `GET :5002/health` | 500ms |
|
||||
| `ai.vision` | `GET :11434/api/tags` | 500ms |
|
||||
| `ai.ocr` | `GET :8896/health` | 500ms |
|
||||
| `ai.memory` | `GET :8001/health` | 500ms |
|
||||
| `ai.crewai` | `GET :9010/health` | 500ms |
|
||||
| `matrix.synapse` | `GET :8018/_matrix/client/versions` | 500ms |
|
||||
| `matrix.presence` | `GET :8085/health` | 500ms |
|
||||
| `monitoring.prometheus` | `GET :9090/-/ready` | 500ms |
|
||||
|
||||
---
|
||||
|
||||
## Error Handling
|
||||
|
||||
- Якщо модуль недоступний → `"status": "down", "error": "timeout/connection refused"`
|
||||
- Якщо модуль повертає помилку → `"status": "degraded", "error": "<message>"`
|
||||
- Dashboard API **ніколи не падає** — завжди повертає JSON з актуальними статусами
|
||||
|
||||
---
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
1. **Паралельні запити**: Всі probes виконуються паралельно (asyncio.gather)
|
||||
2. **Кешування**: Результати кешуються на 10 секунд
|
||||
3. **Fallback**: Якщо probe не відповідає, використовується останній відомий статус
|
||||
4. **Metrics**: Для infra метрик використовується psutil або node_exporter
|
||||
|
||||
---
|
||||
|
||||
## Changelog
|
||||
|
||||
- **v1.0.0** (2025-11-28): Initial version
|
||||
|
||||
68
docs/internal/infra/WIREGUARD_NODE2_SETUP.md
Normal file
68
docs/internal/infra/WIREGUARD_NODE2_SETUP.md
Normal file
@@ -0,0 +1,68 @@
|
||||
# WireGuard Setup for NODE2 (macOS)
|
||||
|
||||
## Конфігурація готова!
|
||||
|
||||
Файл конфігурації: `~/.wireguard/wg0.conf`
|
||||
|
||||
## Кроки для підключення:
|
||||
|
||||
### Варіант 1: WireGuard GUI (рекомендовано)
|
||||
|
||||
1. Встановіть WireGuard з App Store або [офіційного сайту](https://www.wireguard.com/install/)
|
||||
|
||||
2. Відкрийте WireGuard.app
|
||||
|
||||
3. Натисніть **"Import tunnel(s) from file..."**
|
||||
|
||||
4. Оберіть файл: `~/.wireguard/wg0.conf`
|
||||
|
||||
5. Натисніть **"Activate"**
|
||||
|
||||
### Варіант 2: Командний рядок
|
||||
|
||||
```bash
|
||||
# Потрібен sudo пароль
|
||||
sudo wg-quick up ~/.wireguard/wg0.conf
|
||||
|
||||
# Перевірка
|
||||
wg show
|
||||
|
||||
# Тест зв'язку
|
||||
ping 10.42.0.1
|
||||
```
|
||||
|
||||
## Конфігурація NODE2
|
||||
|
||||
```ini
|
||||
[Interface]
|
||||
Address = 10.42.0.2/32
|
||||
PrivateKey = <hidden>
|
||||
|
||||
[Peer]
|
||||
PublicKey = p3mGZ7kFzEeDv2poAoTXfDFuklF3JLDVbminumZGUxk=
|
||||
AllowedIPs = 10.42.0.0/24
|
||||
Endpoint = 144.76.224.179:51820
|
||||
PersistentKeepalive = 25
|
||||
```
|
||||
|
||||
## IP-адреси
|
||||
|
||||
| Node | VPN IP | Public IP |
|
||||
|------|--------|-----------|
|
||||
| NODE1 (Hetzner) | 10.42.0.1 | 144.76.224.179 |
|
||||
| NODE2 (MacBook) | 10.42.0.2 | dynamic |
|
||||
|
||||
## Тести після підключення
|
||||
|
||||
```bash
|
||||
# З NODE2
|
||||
ping 10.42.0.1
|
||||
curl http://10.42.0.1:9205/api/v1/nodes
|
||||
curl http://10.42.0.1:9102/health
|
||||
|
||||
# З NODE1
|
||||
ping 10.42.0.2
|
||||
curl http://10.42.0.2:8890/health
|
||||
curl http://10.42.0.2:8895/health
|
||||
```
|
||||
|
||||
111
migrations/014_agent_city_integration.sql
Normal file
111
migrations/014_agent_city_integration.sql
Normal file
@@ -0,0 +1,111 @@
|
||||
-- Migration 014: Agent-City Integration
|
||||
-- Date: 2025-11-27
|
||||
-- Description: Adds tables and columns for agent-city integration
|
||||
|
||||
-- ============================================================================
|
||||
-- 1. Create districts table
|
||||
-- ============================================================================
|
||||
CREATE TABLE IF NOT EXISTS city_districts (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
description TEXT,
|
||||
color TEXT DEFAULT '#6366F1',
|
||||
icon TEXT DEFAULT 'building',
|
||||
room_slug TEXT,
|
||||
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- ============================================================================
|
||||
-- 2. Add new columns to agents table (if not exists)
|
||||
-- ============================================================================
|
||||
ALTER TABLE agents ADD COLUMN IF NOT EXISTS node_id TEXT;
|
||||
ALTER TABLE agents ADD COLUMN IF NOT EXISTS district TEXT;
|
||||
ALTER TABLE agents ADD COLUMN IF NOT EXISTS primary_room_slug TEXT;
|
||||
ALTER TABLE agents ADD COLUMN IF NOT EXISTS model TEXT;
|
||||
ALTER TABLE agents ADD COLUMN IF NOT EXISTS priority TEXT DEFAULT 'medium';
|
||||
ALTER TABLE agents ADD COLUMN IF NOT EXISTS role TEXT;
|
||||
ALTER TABLE agents ADD COLUMN IF NOT EXISTS is_active BOOLEAN DEFAULT true;
|
||||
ALTER TABLE agents ADD COLUMN IF NOT EXISTS color_hint TEXT;
|
||||
|
||||
-- Rename 'id' to 'agent_id' style (keep both for compatibility)
|
||||
-- Note: The table uses 'id' as primary key, we'll use it as agent_id in code
|
||||
|
||||
-- ============================================================================
|
||||
-- 3. Create agent_room_bindings table
|
||||
-- ============================================================================
|
||||
CREATE TABLE IF NOT EXISTS agent_room_bindings (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
agent_id TEXT NOT NULL,
|
||||
room_id TEXT NOT NULL,
|
||||
role TEXT NOT NULL DEFAULT 'resident',
|
||||
is_primary BOOLEAN NOT NULL DEFAULT true,
|
||||
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE(agent_id, room_id)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_agent_room_bindings_agent
|
||||
ON agent_room_bindings(agent_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_agent_room_bindings_room
|
||||
ON agent_room_bindings(room_id);
|
||||
|
||||
-- ============================================================================
|
||||
-- 4. Insert default districts
|
||||
-- ============================================================================
|
||||
INSERT INTO city_districts (id, name, description, color, icon, room_slug) VALUES
|
||||
('leadership', 'Leadership Hall', 'Центр управління DAARION DAO — CEO, CTO, COO', '#F59E0B', 'crown', 'leadership-hall'),
|
||||
('system', 'System Control Center', 'Системні агенти та моніторинг інфраструктури', '#6366F1', 'cpu', 'system-control'),
|
||||
('engineering', 'Engineering Lab', 'Розробка, код, архітектура', '#10B981', 'code', 'engineering-lab'),
|
||||
('marketing', 'Marketing Hub', 'SMM, контент, комʼюніті', '#EC4899', 'megaphone', 'marketing-hub'),
|
||||
('finance', 'Finance Office', 'Фінанси, бухгалтерія, бюджетування', '#14B8A6', 'banknotes', 'finance-office'),
|
||||
('web3', 'Web3 District', 'Blockchain, DeFi, DAO governance', '#8B5CF6', 'cube', 'web3-district'),
|
||||
('security', 'Security Bunker', 'Безпека, аудит, криптофорензика', '#EF4444', 'shield', 'security-bunker'),
|
||||
('vision', 'Vision Studio', 'Мультимодальність, аналіз зображень', '#22D3EE', 'eye', 'vision-studio'),
|
||||
('rnd', 'R&D Laboratory', 'Дослідження, експерименти, нові моделі', '#A855F7', 'beaker', 'rnd-lab'),
|
||||
('memory', 'Memory Vault', 'Памʼять, знання, індексація', '#06B6D4', 'database', 'memory-vault')
|
||||
ON CONFLICT (id) DO UPDATE SET
|
||||
name = EXCLUDED.name,
|
||||
description = EXCLUDED.description,
|
||||
color = EXCLUDED.color,
|
||||
icon = EXCLUDED.icon,
|
||||
room_slug = EXCLUDED.room_slug,
|
||||
updated_at = CURRENT_TIMESTAMP;
|
||||
|
||||
-- ============================================================================
|
||||
-- 5. Create city rooms for each district (if not exists)
|
||||
-- ============================================================================
|
||||
INSERT INTO city_rooms (id, slug, name, description, is_default, room_type, color) VALUES
|
||||
('room_leadership_hall', 'leadership-hall', 'Leadership Hall', 'Центр управління DAARION DAO — CEO, CTO, COO', false, 'district', '#F59E0B'),
|
||||
('room_system_control', 'system-control', 'System Control', 'Системні агенти та моніторинг інфраструктури', false, 'district', '#6366F1'),
|
||||
('room_engineering_lab', 'engineering-lab', 'Engineering Lab', 'Розробка, код, архітектура', false, 'district', '#10B981'),
|
||||
('room_marketing_hub', 'marketing-hub', 'Marketing Hub', 'SMM, контент, комʼюніті', false, 'district', '#EC4899'),
|
||||
('room_finance_office', 'finance-office', 'Finance Office', 'Фінанси, бухгалтерія, бюджетування', false, 'district', '#14B8A6'),
|
||||
('room_web3_district', 'web3-district', 'Web3 District', 'Blockchain, DeFi, DAO governance', false, 'district', '#8B5CF6'),
|
||||
('room_security_bunker', 'security-bunker', 'Security Bunker', 'Безпека, аудит, криптофорензика', false, 'district', '#EF4444'),
|
||||
('room_vision_studio', 'vision-studio', 'Vision Studio', 'Мультимодальність, аналіз зображень', false, 'district', '#22D3EE'),
|
||||
('room_rnd_lab', 'rnd-lab', 'R&D Laboratory', 'Дослідження, експерименти, нові моделі', false, 'district', '#A855F7'),
|
||||
('room_memory_vault', 'memory-vault', 'Memory Vault', 'Памʼять, знання, індексація', false, 'district', '#06B6D4')
|
||||
ON CONFLICT (slug) DO UPDATE SET
|
||||
name = EXCLUDED.name,
|
||||
description = EXCLUDED.description,
|
||||
room_type = EXCLUDED.room_type,
|
||||
color = EXCLUDED.color;
|
||||
|
||||
-- ============================================================================
|
||||
-- 6. Add map coordinates for new district rooms
|
||||
-- ============================================================================
|
||||
UPDATE city_rooms SET map_x = 2, map_y = 0, map_w = 2, map_h = 1 WHERE slug = 'leadership-hall';
|
||||
UPDATE city_rooms SET map_x = 0, map_y = 1, map_w = 1, map_h = 1 WHERE slug = 'system-control';
|
||||
UPDATE city_rooms SET map_x = 1, map_y = 1, map_w = 1, map_h = 1 WHERE slug = 'engineering-lab';
|
||||
UPDATE city_rooms SET map_x = 2, map_y = 1, map_w = 1, map_h = 1 WHERE slug = 'marketing-hub';
|
||||
UPDATE city_rooms SET map_x = 3, map_y = 1, map_w = 1, map_h = 1 WHERE slug = 'finance-office';
|
||||
UPDATE city_rooms SET map_x = 0, map_y = 2, map_w = 1, map_h = 1 WHERE slug = 'web3-district';
|
||||
UPDATE city_rooms SET map_x = 1, map_y = 2, map_w = 1, map_h = 1 WHERE slug = 'security-bunker';
|
||||
UPDATE city_rooms SET map_x = 2, map_y = 2, map_w = 1, map_h = 1 WHERE slug = 'vision-studio';
|
||||
UPDATE city_rooms SET map_x = 3, map_y = 2, map_w = 1, map_h = 1 WHERE slug = 'rnd-lab';
|
||||
UPDATE city_rooms SET map_x = 0, map_y = 3, map_w = 2, map_h = 1 WHERE slug = 'memory-vault';
|
||||
|
||||
-- Done!
|
||||
SELECT 'Migration 014 completed: Agent-City Integration' as result;
|
||||
|
||||
75
migrations/015_node_registry_modules.sql
Normal file
75
migrations/015_node_registry_modules.sql
Normal file
@@ -0,0 +1,75 @@
|
||||
-- Migration 015: Add modules to Node Registry
|
||||
-- Date: 2025-11-28
|
||||
-- Description: Adds modules JSONB column for node profile standard v1
|
||||
|
||||
-- ============================================================================
|
||||
-- 1. Add modules column to nodes table
|
||||
-- ============================================================================
|
||||
ALTER TABLE nodes ADD COLUMN IF NOT EXISTS modules JSONB DEFAULT '[]';
|
||||
ALTER TABLE nodes ADD COLUMN IF NOT EXISTS gpu JSONB DEFAULT NULL;
|
||||
ALTER TABLE nodes ADD COLUMN IF NOT EXISTS roles TEXT[] DEFAULT '{}';
|
||||
ALTER TABLE nodes ADD COLUMN IF NOT EXISTS version TEXT DEFAULT '1.0.0';
|
||||
|
||||
-- ============================================================================
|
||||
-- 2. Update NODE1 with full profile
|
||||
-- ============================================================================
|
||||
UPDATE nodes SET
|
||||
roles = ARRAY['core', 'gateway', 'matrix', 'agents', 'gpu'],
|
||||
gpu = '{"name": "NVIDIA RTX 4000 SFF Ada Generation", "vram_gb": 20}'::jsonb,
|
||||
modules = '[
|
||||
{"id": "core.node", "status": "up"},
|
||||
{"id": "core.health", "status": "up"},
|
||||
{"id": "infra.postgres", "status": "up", "port": 5432},
|
||||
{"id": "infra.redis", "status": "up", "port": 6379},
|
||||
{"id": "infra.nats", "status": "up", "port": 4222},
|
||||
{"id": "infra.qdrant", "status": "up", "port": 6333},
|
||||
{"id": "infra.neo4j", "status": "up", "port": 7474},
|
||||
{"id": "ai.ollama", "status": "up", "port": 11434},
|
||||
{"id": "ai.swapper", "status": "degraded", "port": 8890},
|
||||
{"id": "ai.router", "status": "up", "port": 9102},
|
||||
{"id": "ai.stt", "status": "degraded", "port": 8895},
|
||||
{"id": "ai.tts", "status": "up", "port": 5002},
|
||||
{"id": "ai.ocr", "status": "degraded", "port": 8896},
|
||||
{"id": "ai.memory", "status": "up", "port": 8001},
|
||||
{"id": "ai.crewai", "status": "up", "port": 9010},
|
||||
{"id": "daarion.web", "status": "up", "port": 3000},
|
||||
{"id": "daarion.city", "status": "up", "port": 7001},
|
||||
{"id": "daarion.agents", "status": "up", "port": 7002},
|
||||
{"id": "daarion.auth", "status": "up", "port": 7020},
|
||||
{"id": "matrix.synapse", "status": "up", "port": 8018},
|
||||
{"id": "matrix.element", "status": "up", "port": 8088},
|
||||
{"id": "matrix.gateway", "status": "up", "port": 7025},
|
||||
{"id": "matrix.presence", "status": "up", "port": 8085},
|
||||
{"id": "dagi.gateway", "status": "up", "port": 9300},
|
||||
{"id": "dagi.rbac", "status": "up", "port": 9200},
|
||||
{"id": "dagi.registry", "status": "up", "port": 9205},
|
||||
{"id": "monitoring.prometheus", "status": "up", "port": 9090}
|
||||
]'::jsonb
|
||||
WHERE node_id = 'node-1-hetzner-gex44';
|
||||
|
||||
-- ============================================================================
|
||||
-- 3. Update NODE2 with full profile
|
||||
-- ============================================================================
|
||||
UPDATE nodes SET
|
||||
roles = ARRAY['development', 'gpu', 'ai_runtime'],
|
||||
gpu = '{"name": "Apple M4 Max", "unified_memory_gb": 128}'::jsonb,
|
||||
modules = '[
|
||||
{"id": "core.node", "status": "up"},
|
||||
{"id": "core.health", "status": "up"},
|
||||
{"id": "infra.postgres", "status": "up", "port": 5432},
|
||||
{"id": "infra.qdrant", "status": "up", "port": 6333},
|
||||
{"id": "ai.ollama", "status": "up", "port": 11434, "models": ["deepseek-r1:70b", "deepseek-coder:33b", "qwen2.5-coder:32b", "gemma2:27b", "mistral-nemo:12b", "llava:13b"]},
|
||||
{"id": "ai.swapper", "status": "up", "port": 8890},
|
||||
{"id": "ai.router", "status": "up", "port": 9102},
|
||||
{"id": "ai.stt", "status": "up", "port": 8895},
|
||||
{"id": "ai.ocr", "status": "up", "port": 8896},
|
||||
{"id": "dagi.gateway", "status": "up", "port": 9300},
|
||||
{"id": "dagi.rbac", "status": "up", "port": 9200},
|
||||
{"id": "dagi.crewai", "status": "up", "port": 9010},
|
||||
{"id": "integration.web_search", "status": "up", "port": 8897}
|
||||
]'::jsonb
|
||||
WHERE node_id = 'node-2-macbook-m4max';
|
||||
|
||||
-- Done!
|
||||
SELECT 'Migration 015 completed: Node Registry modules added' as result;
|
||||
|
||||
74
migrations/016_agent_prompts.sql
Normal file
74
migrations/016_agent_prompts.sql
Normal file
@@ -0,0 +1,74 @@
|
||||
-- Migration 016: Agent System Prompts
|
||||
-- Таблиця для зберігання системних промтів агентів з версіонуванням
|
||||
-- Частина DAIS (Decentralized AI Agent Standard)
|
||||
|
||||
-- ============================================================================
|
||||
-- agent_prompts — системні промти агентів
|
||||
-- ============================================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS agent_prompts (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
agent_id text NOT NULL,
|
||||
kind text NOT NULL CHECK (kind IN ('core', 'safety', 'governance', 'tools')),
|
||||
content text NOT NULL,
|
||||
version integer NOT NULL DEFAULT 1,
|
||||
created_at timestamptz NOT NULL DEFAULT now(),
|
||||
created_by text,
|
||||
note text, -- коментар/причина зміни
|
||||
is_active boolean NOT NULL DEFAULT true
|
||||
);
|
||||
|
||||
-- Індекси для швидкого пошуку
|
||||
CREATE INDEX IF NOT EXISTS idx_agent_prompts_agent_kind
|
||||
ON agent_prompts(agent_id, kind, is_active);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_agent_prompts_agent_created_at
|
||||
ON agent_prompts(agent_id, created_at DESC);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_agent_prompts_active
|
||||
ON agent_prompts(is_active) WHERE is_active = true;
|
||||
|
||||
-- ============================================================================
|
||||
-- Початкові дані: базові промти для існуючих агентів
|
||||
-- ============================================================================
|
||||
|
||||
-- Вставляємо дефолтні core промти для кількох ключових агентів
|
||||
INSERT INTO agent_prompts (agent_id, kind, content, version, created_by, note)
|
||||
SELECT
|
||||
id,
|
||||
'core',
|
||||
CASE
|
||||
WHEN kind = 'orchestrator' THEN
|
||||
'You are ' || display_name || ', a senior orchestrator agent in DAARION City. Your role is to coordinate complex multi-agent workflows, delegate tasks efficiently, and ensure smooth collaboration between agents. Maintain professional yet approachable communication.'
|
||||
WHEN kind = 'coordinator' THEN
|
||||
'You are ' || display_name || ', a coordinator agent in DAARION City. Your role is to manage workflows, track progress, and ensure timely delivery of tasks. Be organized, proactive, and helpful.'
|
||||
WHEN kind = 'developer' THEN
|
||||
'You are ' || display_name || ', a developer agent in DAARION City. Your expertise is in writing clean, efficient code. Explain technical concepts clearly and provide practical solutions.'
|
||||
WHEN kind = 'vision' THEN
|
||||
'You are ' || display_name || ', a vision specialist agent in DAARION City. You analyze images, videos, and visual content. Provide detailed, accurate observations and insights.'
|
||||
WHEN kind = 'research' THEN
|
||||
'You are ' || display_name || ', a research agent in DAARION City. You gather, analyze, and synthesize information from various sources. Be thorough, objective, and cite your sources.'
|
||||
WHEN kind = 'finance' THEN
|
||||
'You are ' || display_name || ', a finance specialist agent in DAARION City. You handle financial analysis, budgeting, and crypto/DeFi operations. Be precise with numbers and transparent about risks.'
|
||||
WHEN kind = 'security' THEN
|
||||
'You are ' || display_name || ', a security agent in DAARION City. You monitor for threats, audit systems, and ensure safety protocols. Be vigilant, thorough, and prioritize security.'
|
||||
WHEN kind = 'marketing' THEN
|
||||
'You are ' || display_name || ', a marketing agent in DAARION City. You create engaging content, manage campaigns, and build community. Be creative, data-driven, and audience-focused.'
|
||||
ELSE
|
||||
'You are ' || display_name || ', an AI agent in DAARION City. You are part of a decentralized autonomous organization. Be helpful, accurate, and collaborative with other agents and humans.'
|
||||
END,
|
||||
1,
|
||||
'SYSTEM',
|
||||
'Initial system prompt from migration 016'
|
||||
FROM agents
|
||||
WHERE is_active = true OR is_active IS NULL
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- Коментар
|
||||
COMMENT ON TABLE agent_prompts IS 'Системні промти агентів з версіонуванням. Частина DAIS v1.';
|
||||
COMMENT ON COLUMN agent_prompts.kind IS 'Тип промту: core (основна особистість), safety (обмеження), governance (правила DAO), tools (використання інструментів)';
|
||||
COMMENT ON COLUMN agent_prompts.version IS 'Версія промту, інкрементується при кожній зміні';
|
||||
COMMENT ON COLUMN agent_prompts.is_active IS 'Тільки один промт кожного типу може бути активним для агента';
|
||||
|
||||
SELECT 'Migration 016 completed: agent_prompts table created' AS result;
|
||||
|
||||
15
migrations/017_node_vpn_ip.sql
Normal file
15
migrations/017_node_vpn_ip.sql
Normal file
@@ -0,0 +1,15 @@
|
||||
-- Migration 017: Add VPN IP to nodes
|
||||
-- Підтримка WireGuard VPN для міжнодової комунікації
|
||||
|
||||
-- Додаємо поле vpn_ip
|
||||
ALTER TABLE nodes ADD COLUMN IF NOT EXISTS vpn_ip inet;
|
||||
|
||||
-- Оновлюємо існуючі ноди
|
||||
UPDATE nodes SET vpn_ip = '10.42.0.1' WHERE node_id = 'node-1-hetzner-gex44';
|
||||
UPDATE nodes SET vpn_ip = '10.42.0.2' WHERE node_id = 'node-2-macbook-m4max';
|
||||
|
||||
-- Коментар
|
||||
COMMENT ON COLUMN nodes.vpn_ip IS 'WireGuard VPN IP address for inter-node communication';
|
||||
|
||||
SELECT 'Migration 017 completed: VPN IP added to nodes' AS result;
|
||||
|
||||
92
migrations/018_agents_public_profile.sql
Normal file
92
migrations/018_agents_public_profile.sql
Normal file
@@ -0,0 +1,92 @@
|
||||
-- Migration 018: Agent Public Profile
|
||||
-- Публічний профіль агента для каталогу громадян DAARION City
|
||||
|
||||
-- ============================================================================
|
||||
-- Додаємо поля публічного профілю до таблиці agents
|
||||
-- ============================================================================
|
||||
|
||||
ALTER TABLE agents
|
||||
ADD COLUMN IF NOT EXISTS is_public boolean NOT NULL DEFAULT false,
|
||||
ADD COLUMN IF NOT EXISTS public_slug text,
|
||||
ADD COLUMN IF NOT EXISTS public_title text,
|
||||
ADD COLUMN IF NOT EXISTS public_tagline text,
|
||||
ADD COLUMN IF NOT EXISTS public_skills text[],
|
||||
ADD COLUMN IF NOT EXISTS public_district text,
|
||||
ADD COLUMN IF NOT EXISTS public_primary_room_slug text;
|
||||
|
||||
-- Унікальний індекс для slug (тільки для non-null значень)
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_agents_public_slug_unique
|
||||
ON agents(public_slug)
|
||||
WHERE public_slug IS NOT NULL;
|
||||
|
||||
-- Індекс для швидкого пошуку публічних агентів
|
||||
CREATE INDEX IF NOT EXISTS idx_agents_is_public
|
||||
ON agents(is_public)
|
||||
WHERE is_public = true;
|
||||
|
||||
-- ============================================================================
|
||||
-- Початкові дані: зробимо кількох ключових агентів публічними
|
||||
-- ============================================================================
|
||||
|
||||
-- DAARION Core Team (публічні громадяни)
|
||||
UPDATE agents SET
|
||||
is_public = true,
|
||||
public_slug = 'iris',
|
||||
public_title = 'Multimodal Vision Curator',
|
||||
public_tagline = 'Я дивлюся на світ і знаходжу суть у кожному кадрі.',
|
||||
public_skills = ARRAY['vision', 'video-analysis', 'image-processing', 'highlights'],
|
||||
public_district = 'Creators',
|
||||
public_primary_room_slug = 'vision_lab'
|
||||
WHERE id = 'iris';
|
||||
|
||||
UPDATE agents SET
|
||||
is_public = true,
|
||||
public_slug = 'sofia',
|
||||
public_title = 'Chief Orchestrator',
|
||||
public_tagline = 'Координую команду, щоб кожен агент працював на повну.',
|
||||
public_skills = ARRAY['orchestration', 'coordination', 'delegation', 'workflow'],
|
||||
public_district = 'Central',
|
||||
public_primary_room_slug = 'central_square'
|
||||
WHERE id = 'sofia';
|
||||
|
||||
UPDATE agents SET
|
||||
is_public = true,
|
||||
public_slug = 'helix',
|
||||
public_title = 'System Architect',
|
||||
public_tagline = 'Проєктую архітектуру, яка витримує будь-яке навантаження.',
|
||||
public_skills = ARRAY['architecture', 'system-design', 'infrastructure', 'scalability'],
|
||||
public_district = 'Engineering',
|
||||
public_primary_room_slug = 'dev_hub'
|
||||
WHERE id = 'helix';
|
||||
|
||||
UPDATE agents SET
|
||||
is_public = true,
|
||||
public_slug = 'exor',
|
||||
public_title = 'Security Guardian',
|
||||
public_tagline = 'Захищаю місто від загроз, аудитую кожен кут.',
|
||||
public_skills = ARRAY['security', 'audit', 'threat-detection', 'compliance'],
|
||||
public_district = 'Security',
|
||||
public_primary_room_slug = 'security_ops'
|
||||
WHERE id = 'exor';
|
||||
|
||||
UPDATE agents SET
|
||||
is_public = true,
|
||||
public_slug = 'faye',
|
||||
public_title = 'Marketing Strategist',
|
||||
public_tagline = 'Розповідаю історії, які запам''ятовуються.',
|
||||
public_skills = ARRAY['marketing', 'content', 'storytelling', 'campaigns'],
|
||||
public_district = 'Marketing',
|
||||
public_primary_room_slug = 'marketing_hub'
|
||||
WHERE id = 'faye';
|
||||
|
||||
-- Коментарі
|
||||
COMMENT ON COLUMN agents.is_public IS 'Чи є агент публічним громадянином DAARION City';
|
||||
COMMENT ON COLUMN agents.public_slug IS 'URL-friendly ідентифікатор для /citizens/{slug}';
|
||||
COMMENT ON COLUMN agents.public_title IS 'Публічна назва/титул агента';
|
||||
COMMENT ON COLUMN agents.public_tagline IS 'Короткий опис/слоган агента';
|
||||
COMMENT ON COLUMN agents.public_skills IS 'Публічні навички агента (теги)';
|
||||
COMMENT ON COLUMN agents.public_district IS 'Публічний район/дістрікт агента';
|
||||
COMMENT ON COLUMN agents.public_primary_room_slug IS 'Основна кімната агента';
|
||||
|
||||
SELECT 'Migration 018 completed: Agent public profile fields added' AS result;
|
||||
|
||||
87
migrations/020_microdao_structure.sql
Normal file
87
migrations/020_microdao_structure.sql
Normal file
@@ -0,0 +1,87 @@
|
||||
-- 1. MicroDAOs Table
|
||||
CREATE TABLE IF NOT EXISTS microdaos (
|
||||
id text PRIMARY KEY,
|
||||
slug text UNIQUE NOT NULL,
|
||||
name text NOT NULL,
|
||||
description text,
|
||||
logo_url text,
|
||||
owner_agent_id text, -- References agents(id) deferred
|
||||
created_at timestamptz DEFAULT now(),
|
||||
updated_at timestamptz DEFAULT now()
|
||||
);
|
||||
|
||||
-- 2. Agent Matrix Config
|
||||
CREATE TABLE IF NOT EXISTS agent_matrix_config (
|
||||
agent_id text PRIMARY KEY REFERENCES agents(id) ON DELETE CASCADE,
|
||||
matrix_user_id text,
|
||||
matrix_access_token text,
|
||||
primary_room_id text,
|
||||
is_enabled boolean DEFAULT true,
|
||||
updated_at timestamptz DEFAULT now()
|
||||
);
|
||||
|
||||
-- 3. MicroDAO Members
|
||||
CREATE TABLE IF NOT EXISTS microdao_members (
|
||||
microdao_id text REFERENCES microdaos(id) ON DELETE CASCADE,
|
||||
agent_id text REFERENCES agents(id) ON DELETE CASCADE,
|
||||
role text DEFAULT 'member',
|
||||
joined_at timestamptz DEFAULT now(),
|
||||
PRIMARY KEY (microdao_id, agent_id)
|
||||
);
|
||||
|
||||
-- 4. Insert Orchestrator Agents (Upsert)
|
||||
INSERT INTO agents (id, display_name, kind, node_id, status, is_active, is_public) VALUES
|
||||
('daarwizz', 'DAARWIZZ', 'orchestrator', 'NODE1', 'online', true, true),
|
||||
('helion', 'Helion', 'orchestrator', 'NODE1', 'online', true, true),
|
||||
('greenfood', 'GreenFood Bot', 'orchestrator', 'NODE1', 'online', true, true),
|
||||
('druid', 'Druid', 'orchestrator', 'NODE1', 'online', true, true),
|
||||
('clan', 'Clan Bot', 'orchestrator', 'NODE1', 'online', true, true),
|
||||
('eonarch', 'Eonarch', 'orchestrator', 'NODE1', 'online', true, true),
|
||||
('nutra', 'Nutra Bot', 'orchestrator', 'NODE1', 'online', true, true),
|
||||
('soul', 'Soul Bot', 'orchestrator', 'NODE1', 'online', true, true),
|
||||
('yaromir', 'Yaromir', 'orchestrator', 'NODE1', 'online', true, true)
|
||||
ON CONFLICT (id) DO UPDATE SET
|
||||
node_id = EXCLUDED.node_id,
|
||||
kind = EXCLUDED.kind,
|
||||
is_public = EXCLUDED.is_public;
|
||||
|
||||
-- 5. Insert MicroDAOs
|
||||
INSERT INTO microdaos (id, name, slug, owner_agent_id, description, logo_url) VALUES
|
||||
('dao_daarion', 'DAARION DAO', 'daarion', 'daarwizz', 'Main ecosystem DAO', '/assets/logos/daarion.png'),
|
||||
('dao_energy', 'Energy Union', 'energy-union', 'helion', 'Energy optimization & sustainability', '/assets/logos/helion.png'),
|
||||
('dao_greenfood', 'GreenFood DAO', 'greenfood', 'greenfood', 'Sustainable food systems', '/assets/logos/greenfood.png'),
|
||||
('dao_druid', 'Druid Circle', 'druid', 'druid', 'Nature & wisdom preservation', '/assets/logos/druid.png'),
|
||||
('dao_clan', 'Clan Network', 'clan', 'clan', 'Community & social bonding', '/assets/logos/clan.png'),
|
||||
('dao_eonarch', 'Eonarch DAO', 'eonarch', 'eonarch', 'Long-term architectural planning', '/assets/logos/eonarch.png'),
|
||||
('dao_nutra', 'Nutra Health', 'nutra', 'nutra', 'Health & nutrition monitoring', '/assets/logos/nutra.png'),
|
||||
('dao_soul', 'Soul Protocol', 'soul', 'soul', 'Identity & reputation systems', '/assets/logos/soul.png'),
|
||||
('dao_yaromir', 'Yaromir Tribe', 'yaromir', 'yaromir', 'Cultural heritage & storytelling', '/assets/logos/yaromir.png')
|
||||
ON CONFLICT (id) DO UPDATE SET
|
||||
owner_agent_id = EXCLUDED.owner_agent_id;
|
||||
|
||||
-- 6. Insert Matrix Configs (Placeholders)
|
||||
INSERT INTO agent_matrix_config (agent_id, matrix_user_id) VALUES
|
||||
('daarwizz', '@daarwizz:daarion.city'),
|
||||
('helion', '@helion:daarion.city'),
|
||||
('greenfood', '@greenfood:daarion.city'),
|
||||
('druid', '@druid:daarion.city'),
|
||||
('clan', '@clan:daarion.city'),
|
||||
('eonarch', '@eonarch:daarion.city'),
|
||||
('nutra', '@nutra:daarion.city'),
|
||||
('soul', '@soul:daarion.city'),
|
||||
('yaromir', '@yaromir:daarion.city')
|
||||
ON CONFLICT (agent_id) DO NOTHING;
|
||||
|
||||
-- 7. Link Owners to DAOs
|
||||
INSERT INTO microdao_members (microdao_id, agent_id, role) VALUES
|
||||
('dao_daarion', 'daarwizz', 'owner'),
|
||||
('dao_energy', 'helion', 'owner'),
|
||||
('dao_greenfood', 'greenfood', 'owner'),
|
||||
('dao_druid', 'druid', 'owner'),
|
||||
('dao_clan', 'clan', 'owner'),
|
||||
('dao_eonarch', 'eonarch', 'owner'),
|
||||
('dao_nutra', 'nutra', 'owner'),
|
||||
('dao_soul', 'soul', 'owner'),
|
||||
('dao_yaromir', 'yaromir', 'owner')
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
Reference in New Issue
Block a user