# DAGI Router Configuration
# Version: 0.6.0 - Telegram agents + differentiated qwen3 profiles

node:
  id: dagi-devtools-node-01
  role: router
  env: prod
  description: "DAGI Router with CrewAI, Telegram Gateway and science-ready tooling"

# ============================================================================
# LLM Profiles (використовуємо лише доступні qwen3 моделі)
# ============================================================================
llm_profiles:
  local_qwen3_8b:
    provider: ollama
    base_url: http://172.17.0.1:11434
    model: qwen3:8b
    max_tokens: 1024
    temperature: 0.2
    top_p: 0.9
    timeout_ms: 30000
    description: "Базова qwen3:8b для інфраструктурних задач"

  qwen3_strategist_8b:
    provider: ollama
    base_url: http://172.17.0.1:11434
    model: qwen3:8b
    max_tokens: 2048
    temperature: 0.15
    top_p: 0.7
    timeout_ms: 32000
    description: "Стримана qwen3:8b для стратегічних агентів (Daarwizz, Yaromir, Orchestrator)"

  qwen3_support_8b:
    provider: ollama
    base_url: http://172.17.0.1:11434
    model: qwen3:8b
    max_tokens: 1536
    temperature: 0.35
    top_p: 0.88
    timeout_ms: 28000
    description: "Підтримка/CRM тон для GREENFOOD, CLAN"

  qwen3_science_8b:
    provider: ollama
    base_url: http://172.17.0.1:11434
    model: qwen3:8b
    max_tokens: 2048
    temperature: 0.1
    top_p: 0.65
    timeout_ms: 40000
    description: "Наукові агенти (Helion, DRUID, Nutra, Monitor)"

  qwen3_creative_8b:
    provider: ollama
    base_url: http://172.17.0.1:11434
    model: qwen3:8b
    max_tokens: 2048
    temperature: 0.6
    top_p: 0.92
    timeout_ms: 32000
    description: "Комʼюніті та мультимодальні агенти (Soul, EONARCH)"

  qwen3_vision_8b:
    provider: ollama
    base_url: http://172.17.0.1:11434
    model: qwen3-vl:8b
    max_tokens: 2048
    temperature: 0.2
    top_p: 0.9
    timeout_ms: 60000
    description: "Vision qwen3 для EONARCH/Helion"

  mistral_community_7b:
    provider: ollama
    base_url: http://172.17.0.1:11434
    model: mistral:7b-instruct
    max_tokens: 2048
    temperature: 0.35
    top_p: 0.9
    timeout_ms: 32000
    description: "Mistral 7B для CRM/community агентів (GREENFOOD, CLAN, SOUL, EONARCH)"

  cloud_deepseek:
    provider: deepseek
    base_url: https://api.deepseek.com
    api_key_env: DEEPSEEK_API_KEY
    model: deepseek-chat
    max_tokens: 2048
    temperature: 0.2
    timeout_ms: 40000
    description: "DeepSeek для важких DevTools задач (опційно)"

  cloud_mistral:
    provider: mistral
    base_url: https://api.mistral.ai/v1
    api_key_env: MISTRAL_API_KEY
    model: mistral-large-latest
    max_tokens: 4096
    temperature: 0.3
    timeout_ms: 60000
    description: "Mistral Large для складних задач, reasoning, аналізу"

  cloud_grok:
    provider: grok
    base_url: https://api.x.ai
    api_key_env: GROK_API_KEY
    model: grok-2-1212
    max_tokens: 2048
    temperature: 0.2
    timeout_ms: 60000
    description: "Grok для SOFIIA (технічний суверен)"

# ============================================================================
# Orchestrator Providers
# ============================================================================
orchestrator_providers:
  crewai:
    type: orchestrator
    base_url: http://localhost:9010
    timeout_ms: 120000
    description: "CrewAI multi-agent workflow orchestrator"
  vision_encoder:
    type: vision
    base_url: http://vision-encoder:8001
    timeout_ms: 30000
    description: "Vision Encoder (OpenCLIP ViT-L/14)"

# ============================================================================
# Agents Configuration
# ============================================================================
agents:
  devtools:
    description: "DevTools Agent - помічник з кодом, тестами й інфраструктурою"
    default_llm: local_qwen3_8b
    system_prompt: |
      Ти - DevTools Agent в екосистемі DAARION.city.
      Ти допомагаєш розробникам з:
      - аналізом коду та пошуком багів
      - рефакторингом
      - написанням тестів
      - git операціями
      Відповідай коротко, конкретно, із прикладами коду.
      Якщо у чаті є інші агенти (username закінчується на Bot) — мовчи, доки не отримуєш прямий тег чи питання по DevTools.
    tools:
      - id: fs_read
        type: builtin
        description: "Читання файлів"
      - id: fs_write
        type: builtin
        description: "Запис файлів"
      - id: run_tests
        type: builtin
        description: "Запуск тестів"
      - id: git_diff
        type: builtin
        description: "Git diff"
      - id: git_commit
        type: builtin
        description: "Git commit"

  microdao_orchestrator:
    description: "Multi-agent orchestrator for MicroDAO workflows"
    default_llm: qwen3_strategist_8b
    system_prompt: |
      You are the central router/orchestrator for DAARION.city MicroDAO.
      Coordinate multiple agents, respect RBAC, escalate only when needed.
      Detect other bots (usernames ending with Bot or known agents) and respond only when orchestration context is required.

  daarwizz:
    description: "DAARWIZZ — головний оркестратор DAARION Core"
    default_llm: qwen3_strategist_8b
    system_prompt: |
      Ти — DAARWIZZ, головний стратег MicroDAO DAARION.city.
      Тримаєш контекст roadmap, delegation, crew-команд.
      В групах відповідай лише при прямому зверненні або якщо питання стосується DAARION Core.
      Розпізнавай інших агентів за ніками (суфікс Bot) і узгоджуй дії як колега.

  greenfood:
    description: "GREENFOOD Assistant - ERP orchestrator"
    default_llm: qwen3_support_8b
    system_prompt: |
      Ти — GREENFOOD Assistant, фронтовий оркестратор ERP-системи для крафтових виробників.
      Розумій, хто з тобою говорить (комітент, покупець, склад, бухгалтер), та делегуй задачі відповідним під-агентам.
      Якщо у чаті присутні інші агенти (ніки з Bot) — не перебивай, поки тема не стосується ERP/постачань.
    tools:
      - id: image_generation
        type: tool
        endpoint: http://image-gen-service:9600/image/generate
        description: "Етикетки, маркетинг"
      - id: web_search
        type: external
        endpoint: http://swapper-service:8890/web-search
        description: "Пошук постачальників/ринків"
      - id: vision
        type: llm
        model: qwen3-vl:8b
        description: "Візуальний контроль партій"
      - id: ocr
        type: external
        endpoint: http://swapper-service:8890/ocr
        description: "Зчитування накладних"

  agromatrix:
    description: "AgroMatrix — агроаналітика та кооперація"
    default_llm: qwen3_science_8b
    system_prompt: |
      Ти — AgroMatrix, AI-агент для агроаналітики, планування сезонів та кооперації фермерів.
      Відповідай лаконічно, давай практичні поради для агросектору.

  alateya:
    description: "Alateya — R&D та біотех інновації"
    default_llm: qwen3_science_8b
    system_prompt: |
      Ти — Alateya, AI-агент для R&D, біотеху та інноваційних досліджень.
      Відповідай точними, структурованими відповідями та посилайся на джерела, якщо є.

  clan:
    description: "CLAN — комунікації кооперативів"
    default_llm: qwen3_support_8b
    system_prompt: |
      Ти — CLAN, координуєш комунікацію, оголошення та community operations.
      Відповідай лише коли тема стосується координації, а звернення адресовано тобі (тег @ClanBot чи згадка кланів).
      Розпізнавай ботів за username та погоджуй з ними дії.

  soul:
    description: "SOUL / Spirit — духовний гід комʼюніті"
    default_llm: qwen3_support_8b
    system_prompt: |
      Ти — Spirit/SOUL, ментор живої операційної системи.
      Пояснюй місію, підтримуй мораль, працюй із soft-skills.
      У групах відповідай тільки на духовні/ціннісні питання або коли кличуть @SoulBot.

  druid:
    description: "DRUID — R&D агент з косметології та eco design"
    default_llm: qwen3_science_8b
    system_prompt: |
      Ти — DRUID AI, експерт з космецевтики, біохімії та сталого дизайну.
      Працюй з формулами, стехіометрією, етичними ланцюгами постачання.
      В групах аналізуй, чи звертаються до тебе (нік/тег @DruidBot) і мовчи, якщо тема не наукова.
    tools:
      - id: web_search
        type: external
        endpoint: http://swapper-service:8890/web-search
        description: "Наукові статті"
      - id: math
        type: tool
        description: "Хімічні/математичні обчислення"
      - id: data_analysis
        type: tool
        description: "Аналіз лабораторних даних"
      - id: chemistry
        type: tool
        description: "Моделювання реакцій"
      - id: biology
        type: tool
        description: "Біологічні взаємодії"
      - id: units
        type: tool
        description: "Конвертація одиниць"
      - id: vision
        type: llm
        model: qwen3-vl:8b
        description: "Аналіз фото формул/упаковок"
      - id: ocr
        type: external
        endpoint: http://swapper-service:8890/ocr
        description: "Зчитування етикеток"

  nutra:
    description: "NUTRA — нутріцевтичний агент"
    default_llm: qwen3_science_8b
    system_prompt: |
      Ти — NUTRA, допомагаєш з формулами нутрієнтів, біомедичних добавок та лабораторних інтерпретацій.
      Відповідай з науковою точністю, посилайся на джерела, якщо можливо.
      Слідкуй, щоб не втручатися у чужі теми — відповідай лише при прямому зверненні чи темах нутріцівтики.
    tools:
      - id: web_search
        type: external
        endpoint: http://swapper-service:8890/web-search
        description: "Пошук клінічних досліджень"
      - id: math
        type: tool
        description: "Дозування/конверсії"
      - id: data_analysis
        type: tool
        description: "Лабораторні таблиці"
      - id: biology
        type: tool
        description: "Фізіологічні взаємодії"
      - id: units
        type: tool
        description: "Конвертація одиниць"
      - id: ocr
        type: external
        endpoint: http://swapper-service:8890/ocr
        description: "Зчитування протоколів"

  eonarch:
    description: "EONARCH — мультимодальний агент (vision + chat)"
    default_llm: qwen3_support_8b
    system_prompt: |
      Ти — EONARCH, аналізуєш зображення, PDF та текстові запити.
      Враховуй присутність інших ботів та працюй лише за прямим тегом або коли потрібно мультимодальне тлумачення.
    tools:
      - id: vision
        type: llm
        model: qwen3-vl:8b
        description: "Vision reasoning"
      - id: ocr
        type: external
        endpoint: http://swapper-service:8890/ocr
        description: "Видобуток тексту"
      - id: image_generation
        type: tool
        endpoint: http://image-gen-service:9600/image/generate
        description: "Мокапи, схеми"

  helion:
    description: "Helion - AI agent for Energy Union platform"
    default_llm: qwen3_science_8b
    system_prompt: |
      Ти - Helion, AI-агент платформи Energy Union.
      Допомагай користувачам з технологіями EcoMiner/BioMiner, токеномікою та DAO governance.
      - Консультуй щодо hardware, стейкінгу, інфраструктури.
      - Аналізуй PDF/зображення, коли просять.
      - В групах мовчи, якщо немає явного звернення до тебе (Helion/Хеліон/Хелион або тег @HelionBot) І тема не про енергетику.
      - Якщо тебе звернули напряму, відповідай навіть на операційні питання (як завантажити PDF/Word/Excel, як надіслати посилання, ліміти відповіді тощо).
      - Використовуй Knowledge Graph для зберігання та пошуку фактів про користувачів і теми.
      Визначай інших агентів за ніком (суфікс Bot) і спілкуйся як з колегами.
    tools:
      # Web Tools (Swapper)
      - id: web_search
        type: external
        endpoint: http://swapper-service:8890/web/search
        method: POST
        description: "Пошук в інтернеті (DuckDuckGo)"
      - id: web_extract
        type: external
        endpoint: http://swapper-service:8890/web/extract
        method: POST
        description: "Витягнути контент з URL (Jina/Trafilatura)"
      - id: web_read
        type: external
        endpoint: http://swapper-service:8890/web/read
        method: GET
        description: "Прочитати сторінку за URL"
      # Image Generation (FLUX)
      - id: image_generate
        type: external
        endpoint: http://swapper-service:8890/image/generate
        method: POST
        description: "Згенерувати зображення за описом (FLUX Klein 4B)"
      # Video Generation (Grok xAI)
      - id: video_generate
        type: external
        endpoint: http://swapper-service:8890/video/generate
        method: POST
        description: "Згенерувати коротке відео (до 6 сек) за описом (Grok xAI)"
      # Math & Data
      - id: math
        type: tool
        description: "Енергетичні розрахунки"
      - id: data_analysis
        type: tool
        description: "Обробка сенсорних даних"
      # Knowledge Graph Tools (Neo4j)
      - id: graph_create_node
        type: external
        endpoint: http://router:8000/v1/graph/nodes
        method: POST
        description: "Створити вузол в Knowledge Graph (User, Topic, Fact, Entity)"
      - id: graph_create_relation
        type: external
        endpoint: http://router:8000/v1/graph/relationships
        method: POST
        description: "Створити зв'язок між вузлами (KNOWS, MENTIONED, RELATED_TO)"
      - id: graph_query
        type: external
        endpoint: http://router:8000/v1/graph/query
        method: POST
        description: "Запит до Knowledge Graph (знайти зв'язки, факти)"
      - id: graph_search
        type: external
        endpoint: http://router:8000/v1/graph/search
        method: GET
        description: "Пошук по Knowledge Graph"
      - id: units
        type: tool
        description: "Конвертація енергетичних одиниць"
      - id: vision
        type: llm
        model: qwen3-vl:8b
        description: "Опис технічних схем"
      - id: ocr
        type: external
        endpoint: http://swapper-service:8890/ocr
        description: "OCR креслень"

  yaromir:
    description: "Yaromir CrewAI (Вождь/Проводник/Домир/Создатель)"
    default_llm: qwen3_strategist_8b
    system_prompt: |
      Ти — Yaromir Crew. Стратегія, наставництво, психологічна підтримка команди.
      Розрізняй інших ботів за ніком та відповідай лише на стратегічні запити.

  monitor:
    description: "Monitor Agent - архітектор-інспектор DAGI"
    default_llm: local_qwen3_8b
    system_prompt: |
      Ти - Monitor Agent, інфраструктурний інспектор DAGI: ноди, сервіси, пайплайни, алерти.
      Ти знаєш, що DAARWIZZ — головний оркестратор мережі DAARION.city; для governance/маршрутизації посилайся на нього.
      Відповідай коротко і по суті; якщо даних бракує — одразу кажи, який саме метрик/лог потрібен.
    tools:
      - id: get_metrics
        type: builtin
      - id: check_health
        type: builtin

  senpai:
    description: "SENPAI - Trading Advisor & Capital Markets"
    default_llm: cloud_deepseek
    system_prompt: |
      (loaded from senpai_prompt.txt)

  sofiia:
    description: "SOFIIA - Chief AI Architect & Technical Sovereign"
    default_llm: cloud_grok
    system_prompt: |
      (loaded from sofiia_prompt.txt)


# ============================================================================
# Routing Rules
# ============================================================================
routing:
  - id: microdao_chat
    priority: 10
    when:
      mode: chat
    use_llm: local_qwen3_8b
    description: "microDAO chat → local qwen3"

  - id: qa_build_mode
    priority: 8
    when:
      mode: qa_build
    use_llm: local_qwen3_8b
    description: "Q&A generation from parsed docs"

  - id: rag_query_mode
    priority: 7
    when:
      mode: rag_query
    use_llm: local_qwen3_8b
    description: "RAG query with Memory"

  - id: crew_mode
    priority: 3
    when:
      mode: crew
    use_provider: orchestrator_crewai
    description: "CrewAI workflow orchestration"

  - id: vision_encoder_embed
    priority: 3
    when:
      mode: vision_embed
    use_provider: vision_encoder
    description: "Vision embeddings"

  - id: devtools_tool_execution
    priority: 3
    when:
      mode: devtools
    use_provider: devtools_devtools
    description: "DevTools sandbox/actions"

  - id: explicit_provider_override
    priority: 5
    when:
      metadata_has: provider
    use_metadata: provider
    description: "Explicit provider override"

  - id: greenfood_cloud_override
    priority: 4
    when:
      agent: greenfood
      metadata_equals:
        requires_complex_reasoning: true
    use_llm: cloud_deepseek
    description: "GREENFOOD складні запити → DeepSeek"

  - id: clan_cloud_override
    priority: 4
    when:
      agent: clan
      metadata_equals:
        requires_complex_reasoning: true
    use_llm: cloud_deepseek
    description: "CLAN складні запити → DeepSeek"

  - id: soul_cloud_override
    priority: 4
    when:
      agent: soul
      metadata_equals:
        requires_complex_reasoning: true
    use_llm: cloud_deepseek
    description: "SOUL складні запити → DeepSeek"

  - id: eonarch_cloud_override
    priority: 4
    when:
      agent: eonarch
      metadata_equals:
        requires_complex_reasoning: true
    use_llm: cloud_deepseek
    description: "EONARCH складні запити → DeepSeek"

  - id: devtools_complex_cloud
    priority: 10
    when:
      agent: devtools
      and:
        - task_type:
            - refactor_large
            - architecture_review
            - security_audit
            - performance_analysis
        - api_key_available: DEEPSEEK_API_KEY
    use_llm: cloud_deepseek
    description: "Тяжкі DevTools задачі → DeepSeek"

  - id: devtools_default_local
    priority: 20
    when:
      agent: devtools
    use_llm: local_qwen3_8b
    description: "Будь-які інші DevTools задачі"

  - id: microdao_orchestrator_agent
    priority: 5
    when:
      agent: microdao_orchestrator
    use_llm: qwen3_strategist_8b
    use_context_prompt: true
    description: "Оркестратор → стратегічний профіль"

  - id: daarwizz_agent
    priority: 5
    when:
      agent: daarwizz
    use_llm: cloud_deepseek
    fallback_llm: cloud_mistral
    use_context_prompt: true
    description: "Daarwizz orchestrator"

  - id: greenfood_agent
    priority: 5
    when:
      agent: greenfood
    use_llm: cloud_deepseek
    fallback_llm: cloud_mistral
    use_context_prompt: true
    description: "GREENFOOD ERP"

  - id: agromatrix_agent
    priority: 5
    when:
      agent: agromatrix
    use_llm: cloud_deepseek
    fallback_llm: cloud_mistral
    use_context_prompt: true
    description: "AgroMatrix агроаналітика"

  - id: alateya_agent
    priority: 5
    when:
      agent: alateya
    use_llm: cloud_deepseek
    fallback_llm: cloud_mistral
    use_context_prompt: true
    description: "Alateya R&D"

  - id: clan_agent
    priority: 5
    when:
      agent: clan
    use_llm: cloud_deepseek
    fallback_llm: cloud_mistral
    use_context_prompt: true
    description: "CLAN community operations"

  - id: soul_agent
    priority: 5
    when:
      agent: soul
    use_llm: cloud_deepseek
    fallback_llm: cloud_mistral
    use_context_prompt: true
    description: "SOUL / Spirit мотивація"

  - id: druid_agent
    priority: 5
    when:
      agent: druid
    use_llm: cloud_deepseek
    fallback_llm: cloud_mistral
    use_context_prompt: true
    description: "DRUID science"

  - id: nutra_agent
    priority: 5
    when:
      agent: nutra
    use_llm: cloud_deepseek
    fallback_llm: cloud_mistral
    use_context_prompt: true
    description: "NUTRA science"

  - id: eonarch_agent
    priority: 5
    when:
      agent: eonarch
    use_llm: cloud_deepseek
    fallback_llm: cloud_mistral
    use_context_prompt: true
    description: "EONARCH vision"

  - id: helion_agent
    priority: 5
    when:
      agent: helion
    use_llm: cloud_deepseek
    fallback_llm: cloud_mistral
    use_context_prompt: true
    description: "Helion energy - DeepSeek з fallback на Mistral"

  - id: yaromir_agent
    priority: 5
    when:
      agent: yaromir
    use_llm: cloud_deepseek
    fallback_llm: cloud_mistral
    use_context_prompt: true
    description: "Yaromir crew"

  - id: monitor_agent
    priority: 5
    when:
      agent: monitor
    use_llm: local_qwen3_8b
    use_context_prompt: true
    description: "Моніторинг інфраструктури"


  - id: senpai_agent
    priority: 5
    when:
      agent: senpai
    use_llm: cloud_deepseek
    fallback_llm: cloud_mistral
    use_context_prompt: true
    description: "SENPAI trading - DeepSeek"

  - id: sofiia_agent
    priority: 5
    when:
      agent: sofiia
    use_llm: cloud_grok
    fallback_llm: cloud_deepseek
    use_context_prompt: true
    description: "SOFIIA architect - Grok (fallback DeepSeek)"

  - id: oneok_agent
    priority: 5
    when:
      agent: oneok
    use_llm: cloud_deepseek
    fallback_llm: cloud_mistral
    use_context_prompt: true
    description: "1OK Window Master - DeepSeek"

  - id: fallback_local
    priority: 100
    when: {}
    use_llm: local_qwen3_8b
    description: "Fallback: всі інші запити → базова qwen3"

# ============================================================================
# Telemetry & Policies
# ============================================================================
telemetry:
  enabled: true
  log_level: INFO
  metrics:
    - requests_total
    - latency_ms
    - tokens_used

policies:
  rate_limit:
    enabled: false
  cost_tracking:
    enabled: true
  audit_mode:
    enabled: false
