Skip to main content

aix_core/
lib.rs

1//! AIX Core Library
2//!
3//! This is the core library that provides unified abstractions and types
4//! for interacting with multiple AI providers. It includes:
5//!
6//! - Common types and error handling
7//! - Provider traits and capabilities
8//! - Retry logic with exponential backoff
9//! - Streaming utilities and abstractions
10//!
11//! # Example
12//!
13//! ```rust
14//! use aix_core::{AiProvider, ChatRequest, ChatMessage};
15//!
16//! # async fn example<P: AiProvider>(provider: P) -> Result<(), Box<dyn std::error::Error>> {
17//! let request = ChatRequest::simple("gpt-4", "Hello, world!");
18//! let response = provider.chat(request).await?;
19//! println!("Response: {}", response.content);
20//! # Ok(())
21//! # }
22//! ```
23
24pub mod error;
25pub mod retry;
26pub mod streaming;
27pub mod traits;
28pub mod types;
29
30// Re-export commonly used types for convenience
31pub use error::{AixError, AixResult};
32pub use retry::{RetryConfig, RetryStrategy};
33pub use streaming::{StreamExt, TokenStream};
34pub use traits::{AiProvider, AiProviderExt, ModelCapabilities};
35pub use types::{
36    ChatMessage, ChatRequest, ChatResponse, ModelConfig, Role, StreamChunk, Usage,
37};
38
39#[cfg(test)]
40mod tests {
41    use super::*;
42    use crate::types::ChatMessage;
43
44    #[test]
45    fn test_library_imports() {
46        // Test that all commonly used types are available
47        let _msg = ChatMessage::user("test");
48        let _config = ModelConfig::new();
49        let _capabilities = ModelCapabilities::basic_text(4096, 8192);
50        let _retry_config = RetryConfig::default();
51        
52        // Test error creation
53        let _error = AixError::config("test error");
54        
55        // Test result type
56        let _result: AixResult<String> = Ok("test".to_string());
57    }
58}