# AIOS AI Provider Configuration
#
# Configure AI providers (Claude Code, Gemini CLI) for AIOS operations.
# This file controls which provider is used for different task types.
#
# @see Epic GEMINI-INT - Story 2: AI Provider Factory Pattern

# Provider Configuration
ai_providers:
  # Primary provider - used by default
  primary: claude        # Options: claude, gemini

  # Fallback provider - used when primary fails
  fallback: gemini       # Options: claude, gemini, null (no fallback)

  # Task-based routing
  # Route specific task types to preferred providers
  routing:
    # Simple tasks - use cheaper/faster provider
    simple_tasks: gemini       # Code formatting, simple refactors

    # Complex tasks - use more capable provider
    complex_tasks: claude      # Architecture, security reviews

    # Documentation - high volume, speed matters
    documentation: gemini

    # Code generation - balance of speed and quality
    code_generation: gemini

    # Code review - quality matters
    code_review: claude

    # Testing - straightforward tasks
    testing: gemini

    # Security - critical thinking required
    security: claude

# Claude Code Configuration
claude:
  # Model to use
  model: claude-3-5-sonnet    # Options: claude-3-5-sonnet, claude-3-opus, etc.

  # Execution timeout (ms)
  timeout: 300000             # 5 minutes

  # Maximum retry attempts
  maxRetries: 3

  # Skip permission prompts (use with caution)
  dangerouslySkipPermissions: false

# Gemini CLI Configuration
gemini:
  # Model to use
  model: gemini-2.0-flash     # Options: gemini-2.0-flash, gemini-2.0-pro

  # Execution timeout (ms)
  timeout: 300000             # 5 minutes

  # Maximum retry attempts
  maxRetries: 3

  # Enable preview features (required for Gemini 3)
  previewFeatures: true

  # Use JSON output format by default
  jsonOutput: false

# Model Switching (Story 16)
# Automatic selection between Flash and Pro based on task complexity
model_switching:
  enabled: false              # Enable when Story 16 is complete
  default_model: gemini-2.0-flash
  complexity_threshold:
    simple: 0.3               # < 0.3 = Flash
    medium: 0.7               # 0.3-0.7 = Flash
    complex: 1.0              # > 0.7 = Pro
  quality_fallback:
    enabled: true
    min_score: 0.6            # If quality < 0.6, retry with Pro

# Parallel Execution (Story 17)
# Run Claude + Gemini simultaneously for better quality
parallel_execution:
  enabled: false              # Enable when Story 17 is complete
  default_mode: fallback      # Options: race, consensus, best-of, merge, fallback

  # Task-specific modes
  task_modes:
    architecture: consensus   # Both must agree on architecture
    security: consensus       # Critical - need agreement
    code_generation: best-of  # Pick best code
    documentation: race       # Speed matters
    refactoring: merge        # Combine insights

  # Cost control
  cost_control:
    max_parallel_cost: 1.00   # Max cost for parallel run (USD)
    fallback_on_budget: true  # Disable parallel if over budget

  # Quality thresholds
  quality_thresholds:
    consensus_similarity: 0.85
    merge_min_quality: 0.7
