"""LLM integration — provider abstraction, briefing generation, mission generation.

This package provides:
- Provider factory for creating LangChain chat models
- Retry utilities for transient error handling
- Context builder for transforming analysis results
- Briefing generator for structured codebase summaries
- Mission pipeline for investigation mission generation

Public API:
    from unfamiliar.llm import (
        create_chat_model,
        generate_briefing,
        BriefingResult,
        BriefingResponse,
        run_mission_pipeline,
        PipelineResult,
        LLMError,
        ProviderError,
        AuthenticationError,
        BriefingGenerationError,
        MissionGenerationError,
    )
"""

from unfamiliar.llm.briefing.generator import BriefingResult, generate_briefing
from unfamiliar.llm.briefing.schemas import BriefingResponse
from unfamiliar.llm.exceptions import (
    AuthenticationError,
    BriefingGenerationError,
    LLMError,
    MissionGenerationError,
    ProviderError,
)
from unfamiliar.llm.missions import (
    CATEGORY_ORDER,
    PipelineResult,
    run_mission_pipeline,
)
from unfamiliar.llm.providers import create_chat_model

__all__ = [
    # Factory
    "create_chat_model",
    # Briefing
    "generate_briefing",
    "BriefingResult",
    "BriefingResponse",
    # Missions
    "run_mission_pipeline",
    "PipelineResult",
    "CATEGORY_ORDER",
    # Exceptions
    "LLMError",
    "ProviderError",
    "AuthenticationError",
    "BriefingGenerationError",
    "MissionGenerationError",
]
