{
  "source_file": "src/llm/model_discovery.py",
  "generated_at": "2026-01-10T22:55:11.155397",
  "summary": {
    "purpose": "This file contains functions and classes for discovering and managing local GGUF files, categorizing them by role and size, and printing discovered models.",
    "exports": [
      "DiscoveredModel",
      "ModelRole",
      "discover_models",
      "is_default_analysis",
      "is_default_summarization",
      "print_discovered_models",
      "format_model_size",
      "_extract_quantization",
      "_extract_base_model",
      "_parse_hf_cache_path",
      "_make_display_name"
    ],
    "imports": [
      "os",
      "glob",
      "re",
      "dataclasses",
      "enum",
      "pathlib",
      "typing",
      "defaultdict",
      "collections"
    ],
    "key_components": [
      {
        "name": "DiscoveredModel",
        "type": "class",
        "description": "A class representing information about a discovered local model, including its name, path, size, and inferred role."
      },
      {
        "name": "ModelRole",
        "type": "class",
        "description": "An enumeration class for categorizing model roles based on size and capability."
      },
      {
        "name": "discover_models",
        "type": "function",
        "description": "A function that scans the ./models/ directory to find available AI models and returns a list of DiscoveredModel objects."
      },
      {
        "name": "is_default_analysis",
        "type": "function",
        "description": "A function that checks if a model is a suitable default analysis model based on its name and filename."
      },
      {
        "name": "is_default_summarization",
        "type": "function",
        "description": "A function that checks if a model is the default summarization model based on its name and filename."
      },
      {
        "name": "print_discovered_models",
        "type": "function",
        "description": "A function that prints a list of discovered models."
      },
      {
        "name": "format_model_size",
        "type": "function",
        "description": "A function that formats the size of a model into a human-readable string."
      },
      {
        "name": "_extract_quantization",
        "type": "function",
        "description": "A private function that extracts quantization type from a filename."
      },
      {
        "name": "_extract_base_model",
        "type": "function",
        "description": "A private function that extracts base model name from a filename."
      },
      {
        "name": "_parse_hf_cache_path",
        "type": "function",
        "description": "A private function that parses a HuggingFace cache path."
      },
      {
        "name": "_make_display_name",
        "type": "function",
        "description": "A private function that creates a display name for a model."
      }
    ],
    "data_structures": "DiscoveredModel, ModelRole",
    "algorithms": "Role categorization based on model name and filename, size formatting",
    "configuration": "Configuration for the models directory is handled by the DEFAULT_MODELS_DIR constant.",
    "notes": "The file includes private functions that are not intended for public use, such as _extract_quantization and _extract_base_model."
  }
}