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.