# agentlib-core
The foundational crate for the AgentLib framework. It defines the core traits, types, and runtime logic required to build and execute AI agents.
## Core Components
- **AgentInstance**: The primary runtime for an agent, managing state, tools, and middleware.
- **Traits**:
- `Agent`: Define the identity and tool registration for your agent.
- `ModelProvider`: Interface for integrating any LLM.
- `MemoryProvider`: Interface for persistent or ephemeral conversation storage.
- `ReasoningEngine`: Abstraction for different thinking strategies.
- `Tool`: Contract for extending agent capabilities.
- **Middleware System**: Intercept and modify execution at different scopes (Run, Step, Tool).
## Usage
```rust
use agentlib_core::{create_agent, Agent};
use std::sync::Arc;
struct MyAgent;
impl Agent for MyAgent {
fn name(&self) -> &str { "core-agent" }
fn register_tools(self: Arc<Self>, _registry: &mut agentlib_core::ToolRegistry) {}
}
let agent = create_agent(MyAgent);
```
## Features
- Type-safe execution context.
- Modular provider-based architecture.
- Built-in token usage tracking.
- Context-aware tool execution.