//! # Ariste - AI Agent Framework
//!
//! Ariste is a powerful framework for building AI agents with tool calling capabilities
//! and multi-agent collaboration support. It provides a command-line interface for
//! interactive conversations with LLM models and includes various tools for
//! software engineering tasks.
//!
//! ## Features
//!
//! - **Interactive CLI** - Friendly command-line interface with history and auto-completion
//! - **Tool Calling** - Built-in tools for file operations, code search, command execution, etc.
//! - **Multi-Agent Support** - Launch specialized sub-agents for specific tasks
//! - **Ollama Integration** - Uses Ollama as the default LLM provider
//! - **Flexible Configuration** - Supports custom models and API endpoints
//!
//! ## Quick Start
//!
//! ```no_run
//! use ariste::Agent;
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
//!     let mut agent = Agent::load_from_config().await?;
//!     agent.invoke("Hello, Ariste!").await?;
//!     Ok(())
//! }
//! ```
//!
//! ## Supported Tools
//!
//! - `Bash` - Execute shell commands
//! - `Read` - Read file contents
//! - `Write` - Write files
//! - `Edit` - Edit files with string replacement
//! - `Glob` - File pattern matching
//! - `Grep` - Search content in files
//! - `WebFetch` - Fetch web content
//! - `Task` - Launch sub-agents for complex tasks
//! - `TodoWrite` - Task management and tracking

pub mod agent;
pub mod cli;
pub mod config;
pub mod error;
pub mod llm;
pub mod tools;
pub mod ui;
pub mod utils;

// Re-export commonly used types
pub use agent::{Agent, SubAgentType};
pub use error::Error;
