Complete snapshot of /opt/microdao-daarion/ from NODE1 (144.76.224.179).
This represents the actual running production code that has diverged
significantly from the previous main branch.
Key changes from old main:
- Gateway (http_api.py): expanded from ~40KB to 164KB with full agent support
- Router: new /v1/agents/{id}/infer endpoint with vision + DeepSeek routing
- Behavior Policy: SOWA v2.2 (3-level: FULL/ACK/SILENT)
- Agent Registry: config/agent_registry.yml as single source of truth
- 13 agents configured (was 3)
- Memory service integration
- CrewAI teams and roles
Excluded from snapshot: venv/, .env, data/, backups, .tgz archives
Co-authored-by: Cursor <cursoragent@cursor.com>
258 lines
7.8 KiB
YAML
258 lines
7.8 KiB
YAML
# ================================================
|
|
# DAARION Platform - Agent Registry v1.0
|
|
# ================================================
|
|
|
|
platform:
|
|
name: "MicroDAO Daarion"
|
|
version: "1.0.0"
|
|
default_agent: "helion"
|
|
fallback_agent: "helion"
|
|
|
|
# ================================================
|
|
# REGISTERED AGENTS
|
|
# ================================================
|
|
agents:
|
|
helion:
|
|
display_name: "Helion"
|
|
description: "Energy Union AI - енергетика, інфраструктура, DePIN"
|
|
domain_tags:
|
|
- energy
|
|
- power
|
|
- grid
|
|
- depin
|
|
- infrastructure
|
|
- sensors
|
|
- tariffs
|
|
- dao
|
|
capabilities:
|
|
- chat
|
|
- stt
|
|
- tts
|
|
- vision
|
|
- image_gen
|
|
- web_search
|
|
- web_scrape
|
|
- document
|
|
entrypoint:
|
|
type: "nats"
|
|
subject: "agent.helion.invoke"
|
|
memory_policy:
|
|
qdrant_collections:
|
|
read: ["helion_messages", "helion_docs", "helion_artifacts", "helion_memory_items"]
|
|
write: ["helion_messages", "helion_docs", "helion_artifacts", "helion_memory_items"]
|
|
neo4j_labels: ["HelionUser", "HelionTopic", "HelionProject", "HelionChannel"]
|
|
neo4j_filter: "agent_id = 'helion'"
|
|
redis_prefix: "helion:"
|
|
data_policy:
|
|
handoff_allow: ["nutra", "greenfood"] # Can share context with these agents
|
|
handoff_fields: ["user_intent", "context_summary", "language"]
|
|
sensitive_fields_block: ["api_keys", "internal_metrics", "wallet_addresses"]
|
|
sla:
|
|
priority: "high"
|
|
rate_limit_rpm: 60
|
|
max_tokens_per_request: 8000
|
|
prompt_file: "/app/prompts/helion_prompt.txt"
|
|
telegram_token_env: "HELION_BOT_TOKEN"
|
|
active: true
|
|
|
|
nutra:
|
|
display_name: "Nutra"
|
|
description: "AI Nutrition Agent - харчування, здоров'я, дієти"
|
|
domain_tags:
|
|
- nutrition
|
|
- food
|
|
- diet
|
|
- health
|
|
- wellness
|
|
- recipes
|
|
- allergens
|
|
- nutrients
|
|
- calories
|
|
capabilities:
|
|
- chat
|
|
- vision
|
|
- document
|
|
entrypoint:
|
|
type: "nats"
|
|
subject: "agent.nutra.invoke"
|
|
memory_policy:
|
|
qdrant_collections:
|
|
read: ["nutra_messages", "nutra_docs", "nutra_food_knowledge", "nutra_memory_items"]
|
|
write: ["nutra_messages", "nutra_docs", "nutra_food_knowledge", "nutra_memory_items"]
|
|
neo4j_labels: ["NutraUser", "NutraGoal", "NutraProduct", "NutraRecipe", "NutraRestriction"]
|
|
neo4j_filter: "agent_id = 'nutra'"
|
|
redis_prefix: "nutra:"
|
|
data_policy:
|
|
handoff_allow: ["helion"]
|
|
handoff_fields: ["user_intent", "context_summary", "language", "dietary_preferences"]
|
|
sensitive_fields_block: ["medical_history", "health_conditions"]
|
|
sla:
|
|
priority: "medium"
|
|
rate_limit_rpm: 30
|
|
max_tokens_per_request: 4000
|
|
prompt_file: "/app/prompts/nutra_prompt.txt"
|
|
telegram_token_env: "NUTRA_BOT_TOKEN"
|
|
active: true
|
|
|
|
greenfood:
|
|
display_name: "GreenFood"
|
|
description: "GreenFood DAO Agent - органічні продукти, ферми"
|
|
domain_tags:
|
|
- organic
|
|
- farming
|
|
- sustainable
|
|
- local_food
|
|
- farmers_market
|
|
capabilities:
|
|
- chat
|
|
entrypoint:
|
|
type: "nats"
|
|
subject: "agent.greenfood.invoke"
|
|
memory_policy:
|
|
qdrant_collections:
|
|
read: ["greenfood_messages", "greenfood_docs"]
|
|
write: ["greenfood_messages", "greenfood_docs"]
|
|
neo4j_labels: ["GreenFoodUser", "GreenFoodFarm", "GreenFoodProduct"]
|
|
neo4j_filter: "agent_id = 'greenfood'"
|
|
redis_prefix: "greenfood:"
|
|
data_policy:
|
|
handoff_allow: ["nutra", "helion"]
|
|
handoff_fields: ["user_intent", "context_summary"]
|
|
sensitive_fields_block: []
|
|
sla:
|
|
priority: "low"
|
|
rate_limit_rpm: 20
|
|
max_tokens_per_request: 4000
|
|
prompt_file: "/app/prompts/greenfood_prompt.txt"
|
|
telegram_token_env: "GREENFOOD_BOT_TOKEN"
|
|
active: true
|
|
|
|
druid:
|
|
display_name: "Druid"
|
|
description: "Legal/Compliance Agent - юридичні питання, регуляція"
|
|
domain_tags:
|
|
- legal
|
|
- compliance
|
|
- contracts
|
|
- regulations
|
|
- kyc
|
|
capabilities:
|
|
- chat
|
|
- document
|
|
entrypoint:
|
|
type: "nats"
|
|
subject: "agent.druid.invoke"
|
|
memory_policy:
|
|
qdrant_collections:
|
|
read: ["druid_messages", "druid_docs", "druid_legal_kb"]
|
|
write: ["druid_messages", "druid_docs"]
|
|
neo4j_labels: ["DruidUser", "DruidContract", "DruidRegulation"]
|
|
neo4j_filter: "agent_id = 'druid'"
|
|
redis_prefix: "druid:"
|
|
data_policy:
|
|
handoff_allow: ["helion"]
|
|
handoff_fields: ["user_intent", "context_summary", "jurisdiction"]
|
|
sensitive_fields_block: ["personal_id", "contracts_content"]
|
|
sla:
|
|
priority: "medium"
|
|
rate_limit_rpm: 20
|
|
max_tokens_per_request: 8000
|
|
prompt_file: "/app/prompts/druid_prompt.txt"
|
|
telegram_token_env: "DRUID_BOT_TOKEN"
|
|
active: false
|
|
|
|
daarwizz:
|
|
display_name: "DaarWizz"
|
|
description: "Operations/DevOps Agent - інфраструктура, моніторинг"
|
|
domain_tags:
|
|
- devops
|
|
- infrastructure
|
|
- monitoring
|
|
- deployment
|
|
- servers
|
|
capabilities:
|
|
- chat
|
|
- web_scrape
|
|
entrypoint:
|
|
type: "nats"
|
|
subject: "agent.daarwizz.invoke"
|
|
memory_policy:
|
|
qdrant_collections:
|
|
read: ["daarwizz_messages", "daarwizz_docs"]
|
|
write: ["daarwizz_messages", "daarwizz_docs"]
|
|
neo4j_labels: ["DaarwizzServer", "DaarwizzService", "DaarwizzAlert"]
|
|
neo4j_filter: "agent_id = 'daarwizz'"
|
|
redis_prefix: "daarwizz:"
|
|
data_policy:
|
|
handoff_allow: ["helion"]
|
|
handoff_fields: ["user_intent", "context_summary"]
|
|
sensitive_fields_block: ["credentials", "ssh_keys", "api_secrets"]
|
|
sla:
|
|
priority: "high"
|
|
rate_limit_rpm: 100
|
|
max_tokens_per_request: 4000
|
|
prompt_file: "/app/prompts/daarwizz_prompt.txt"
|
|
telegram_token_env: "DAARWIZZ_BOT_TOKEN"
|
|
active: false
|
|
|
|
# ================================================
|
|
# INTENT ROUTING RULES
|
|
# ================================================
|
|
routing:
|
|
# Hard routes (explicit commands/channels)
|
|
hard_routes:
|
|
- pattern: "^/nutra"
|
|
agent: "nutra"
|
|
- pattern: "^/helion"
|
|
agent: "helion"
|
|
- pattern: "^/greenfood"
|
|
agent: "greenfood"
|
|
- pattern: "^/legal"
|
|
agent: "druid"
|
|
- pattern: "^/ops"
|
|
agent: "daarwizz"
|
|
|
|
# Intent-based routing (keyword matching)
|
|
intent_routes:
|
|
- keywords: ["їжа", "продукт", "рецепт", "дієта", "калорі", "харчування", "вітамін",
|
|
"food", "recipe", "diet", "nutrition", "calorie", "vitamin", "meal"]
|
|
agent: "nutra"
|
|
confidence_threshold: 0.7
|
|
|
|
- keywords: ["енергія", "електрика", "сонячн", "вітер", "батаре", "тариф", "мережа",
|
|
"energy", "power", "solar", "wind", "battery", "grid", "tariff", "depin"]
|
|
agent: "helion"
|
|
confidence_threshold: 0.7
|
|
|
|
- keywords: ["органіч", "ферма", "фермер", "городни", "sustainable", "organic", "farm"]
|
|
agent: "greenfood"
|
|
confidence_threshold: 0.6
|
|
|
|
- keywords: ["юрист", "договір", "контракт", "legal", "compliance", "contract", "kyc"]
|
|
agent: "druid"
|
|
confidence_threshold: 0.8
|
|
|
|
# Fallback behavior
|
|
fallback:
|
|
agent: "helion"
|
|
message: "Передаю до основного асистента Helion."
|
|
|
|
# ================================================
|
|
# HANDOFF CONTRACT TEMPLATE
|
|
# ================================================
|
|
handoff_contract:
|
|
required_fields:
|
|
- user_intent
|
|
- source_agent
|
|
- target_agent
|
|
- timestamp
|
|
optional_fields:
|
|
- context_summary
|
|
- language
|
|
- user_preferences
|
|
- references
|
|
- constraints
|
|
- reason_for_handoff
|
|
max_context_tokens: 500
|
|
strip_sensitive: true
|