"""Core LLM invocation helpers.

This package provides the single canonical call path for LLM generation used by:
- `LLMNode` (direct generation steps in pathways)
- User-defined pathways (via PathwayBuilder or YAML)

Key principle: model *capability routing* is owned here (fast/reasoning/code/vision/local),
so callers can pass either a capability name or an explicit provider/model string.
"""

from core.llm.invoke import generate, resolve_model
from core.llm.providers import (
    LLMProvider,
    LLMProviderError,
    ModelCapability,
    close_all_providers,
    get_default_model,
    get_model_for_capability,
    get_provider,
    get_runtime_model_config,
    init_providers,
    list_available_providers,
    list_capabilities,
    register_provider,
    set_runtime_model_config,
)

__all__ = [
    "LLMProvider",
    "LLMProviderError",
    "ModelCapability",
    "close_all_providers",
    "generate",
    "get_default_model",
    "get_model_for_capability",
    "get_provider",
    "get_runtime_model_config",
    "init_providers",
    "list_available_providers",
    "list_capabilities",
    "register_provider",
    "resolve_model",
    "set_runtime_model_config",
]
