"""
markitect.llm — LLM integration adapters for MarkiTect.

Provides concrete :class:`LLMAdapter` implementations backed by
OpenRouter (HTTP) and Claude Code CLI (subprocess).

Quick start::

    from markitect.llm import create_adapter

    adapter = create_adapter("openrouter", model="anthropic/claude-sonnet-4")
    response = adapter.execute_prompt(prompt, run_config)
"""

from markitect.llm.factory import create_adapter
from markitect.llm.openrouter import OpenRouterAdapter
from markitect.llm.claude_code import ClaudeCodeAdapter
from markitect.llm.gemini import GeminiAdapter
from markitect.llm.openai import OpenAIAdapter
from markitect.llm.config import LLMConfig, load_config
from markitect.llm.exceptions import (
    LLMError,
    LLMConfigurationError,
    LLMAPIError,
    LLMRateLimitError,
    LLMTimeoutError,
    LLMSubprocessError,
)

__all__ = [
    "create_adapter",
    "OpenRouterAdapter",
    "ClaudeCodeAdapter",
    "GeminiAdapter",
    "OpenAIAdapter",
    "LLMConfig",
    "load_config",
    "LLMError",
    "LLMConfigurationError",
    "LLMAPIError",
    "LLMRateLimitError",
    "LLMTimeoutError",
    "LLMSubprocessError",
]
