# ================================================
# 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
