{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/jmagly/aiwg/models-config.json",
  "title": "AIWG Model Configuration",
  "description": "Default model mappings for AIWG SDLC framework deployment. Users can customize these values for their specific needs.",
  "version": "1.0.0",
  "lastUpdated": "2026-03-01",

  "claude": {
    "reasoning": {
      "model": "opus",
      "description": "Claude Code opus alias - Best for complex reasoning, architecture design, strategic decisions. Use opus[1m] only when explicitly opting into 1M context."
    },
    "coding": {
      "model": "sonnet",
      "description": "Claude Code sonnet alias - Best for code generation, implementation, debugging. Defaults to the non-1M Sonnet path; use sonnet[1m] only when extra long-context usage is available."
    },
    "efficiency": {
      "model": "haiku",
      "description": "Claude Code haiku alias - Best for quick tasks, file operations, simple edits"
    }
  },

  "factory": {
    "reasoning": {
      "model": "claude-opus-4-6",
      "reasoningEffort": "high",
      "description": "Factory AI uses bare Claude model identifiers (no anthropic/ prefix)"
    },
    "coding": {
      "model": "claude-sonnet-4-6",
      "reasoningEffort": "medium",
      "description": "Factory AI uses bare Claude model identifiers (no anthropic/ prefix)"
    },
    "efficiency": {
      "model": "claude-haiku-4-5-20251001",
      "reasoningEffort": "low",
      "description": "Factory AI uses bare Claude model identifiers (no anthropic/ prefix)"
    }
  },

  "openai": {
    "reasoning": {
      "model": "gpt-5.4",
      "description": "GPT-5.4 - Newest flagship, priority 0 in Codex CLI model catalog (Mar 2026)"
    },
    "coding": {
      "model": "gpt-5.3-codex",
      "description": "GPT-5.3-Codex - Proven flagship coding model, priority 0 (Feb 2026)"
    },
    "efficiency": {
      "model": "gpt-5.1-codex-mini",
      "description": "GPT-5.1-Codex-Mini - Listed budget model, free-tier compatible (priority 12)"
    }
  },

  "windsurf": {
    "_status": "EXPERIMENTAL",
    "reasoning": {
      "model": "claude-opus-4-6",
      "description": "Windsurf uses Claude models via API (experimental)"
    },
    "coding": {
      "model": "claude-sonnet-4-6",
      "description": "Windsurf uses Claude models via API (experimental)"
    },
    "efficiency": {
      "model": "claude-haiku-4-5-20251001",
      "description": "Windsurf uses Claude models via API (experimental)"
    }
  },

  "ollama": {
    "_note": "Local model defaults via Ollama. These are reasonable starting points — tune to your hardware.",
    "reasoning": {
      "model": "llama3.3:70b",
      "description": "Llama 3.3 70B — closest to cloud reasoning quality locally, requires 48GB+ VRAM"
    },
    "coding": {
      "model": "qwen2.5-coder:14b",
      "description": "Qwen 2.5 Coder 14B — best coding quality per VRAM of validated local models (12GB VRAM)"
    },
    "efficiency": {
      "model": "qwen3.5:9b",
      "description": "Qwen 3.5 9B — consumer hardware entry point with tool use and vision support (8GB VRAM)"
    }
  },

  "shorthand": {
    "opus": "claude-opus-4-6",
    "sonnet": "claude-sonnet-4-6",
    "haiku": "claude-haiku-4-5-20251001",
    "inherit": "inherit"
  },

  "claude_shorthand": {
    "opus": "opus",
    "opus-1m": "opus[1m]",
    "opus[1m]": "opus[1m]",
    "sonnet": "sonnet",
    "sonnet-1m": "sonnet[1m]",
    "sonnet[1m]": "sonnet[1m]",
    "haiku": "haiku",
    "inherit": "inherit"
  },

  "_comments": {
    "usage": "This file defines default model mappings used by AIWG deployment scripts",
    "customization": "Users can modify these values to use different models or versions",
    "location": "Place custom models.json in project root to override defaults",
    "precedence": "Project models.json > User ~/.config/aiwg/models.json > AIWG defaults",
    "documentation": "See docs/configuration/model-configuration.md for details",
    "claudeLongContext": "Claude Code documents sonnet and sonnet[1m] as separate selectors. AIWG defaults to sonnet because Sonnet 1M context requires extra usage; opt in with --coding-model sonnet[1m] or sonnet-1m."
  }
}
