//! LLM access for Clawmates. One provider trait, three shipping //! implementations selected by configuration: //! //! - `anthropic` — Anthropic Messages API (cloud target) //! - `openai_compat` — any OpenAI-compatible endpoint (air-gapped vLLM / //! Ollama / llama.cpp) //! - `scripted` — deterministic scenario engine; the test/e2e/smoke-test //! provider that exercises the exact production seam //! //! Everything upstream (runtime, gateway, UI) speaks only the //! provider-neutral types in `provider.rs`. mod anthropic; mod openai_compat; mod provider; mod scripted; pub use anthropic::AnthropicProvider; pub use openai_compat::OpenAiCompatProvider; pub use provider::{ internal_tool_name, wire_tool_name, ChatMessage, ChatRequest, ChatRole, ContentPart, EventStream, LlmError, LlmEvent, LlmProvider, StopReason, ToolDescriptor, }; pub use scripted::ScriptedProvider;