//! `defect-core` — foundational shared types for the defect workspace.
//!
//! This crate holds the **pure types and traits** that both the agent runtime
//! (`defect-agent`) and the provider/transport crates (`defect-llm`, `defect-http`) need,
//! with **zero dependency on the agent runtime** (no session / turn loop / hooks). Pulling
//! these out of `defect-agent` lets a provider or HTTP-stack crate be depended on
//! independently — e.g. via a git dependency — without dragging in the whole session
//! machinery.
//!
//! `defect-agent` re-exports everything here under its original paths
//! (`defect_agent::error`, `defect_agent::llm::*`, `defect_agent::http`,
//! `defect_agent::tool::ToolSchema`), so existing call sites are unaffected.
//!
//! What lives here: [`error::BoxError`], the LLM protocol types in [`llm`], the
//! [`http::HttpClient`] trait, and [`tool::ToolSchema`]. What does **not**: the
//! `ProviderRegistry` (depends on session capabilities config), the full `Tool` trait /
//! `ToolContext`, events, policy, and the session runtime — those stay in `defect-agent`.