//! Defect agent core.
//!
//! Defines the abstractions that the agent main loop depends on: [`llm::LlmProvider`],
//! [`tool::Tool`],
//! [`event::AgentEvent`], and the session state container. Concrete provider/tool
//! implementations live in
//! sibling crates (`defect-llm`, `defect-tools`, `defect-mcp`, etc.) and are plugged in
//! through
//! These traits are consumed here.
//!
//! Modules are organized by responsibility and are **exposed only at the module level**
//! (no flat re-exports at the lib root). Callers write `defect_agent::llm::LlmProvider`
//! rather than `defect_agent::LlmProvider`.