simple-agent-type
Core types and traits for the SimpleAgents LLM framework.
Overview
simple-agent-type is the foundational crate of SimpleAgents, providing all core types, traits, and error definitions. It has zero runtime dependencies - no HTTP client, no I/O, no async runtime - just pure types and traits.
Features
- Type Safety: Strong types prevent common errors
- Transparency: All transformations tracked via
CoercionFlag - Security: API keys never logged (via secure
ApiKeytype) - Validation: Early validation with clear error messages
- Async: All traits use
async_traitfor async support - Serialization: Full serde support for all types
Architecture
SimpleAgents follows a trait-based architecture with three main traits:
Provider- LLM provider implementations (OpenAI, Anthropic, etc.)Cache- Response caching (in-memory, Redis, etc.)RoutingStrategy- Provider selection logic (round-robin, latency-based, etc.)
Quick Start
use *;
// Create a request
let request = builder
.model
.message
.temperature
.build
.unwrap;
// Access request properties
assert_eq!;
assert_eq!;
Core Types
Messages
use ;
let user_msg = user;
let assistant_msg = assistant;
let system_msg = system;
Requests
use CompletionRequest;
use Message;
let request = builder
.model
.message
.temperature
.max_tokens
.build?;
Responses
use CompletionResponse;
// Get the first completion's content
if let Some = response.content
Error Handling
use ;
match result
API Key Security
use ApiKey;
let key = new?;
// Never logged
println!; // Output: ApiKey([REDACTED])
// Explicit access only
let raw_key = key.expose; // Use for API calls only
Coercion Tracking
use ;
let result = new
.with_flag
.set_confidence;
if result.was_coerced
Module Structure
message- Message types (Role,Message)request- Request types (CompletionRequest, builder)response- Response types (CompletionResponse,Usage, streaming)error- Error hierarchy (SimpleAgentsError,ProviderError,HealingError)provider- Provider trait and typescache- Cache traitrouter- Routing strategy traitconfig- Configuration types (RetryConfig,HealingConfig,Capabilities)validation- Validation types (ApiKey)coercion- Coercion tracking (CoercionFlag,CoercionResult)
Traits
Provider Trait
use Provider;
use async_trait;
Cache Trait
use Cache;
use async_trait;
RoutingStrategy Trait
use RoutingStrategy;
use async_trait;
Design Principles
- Transparency First - Every transformation is tracked
- Type Safety - Strong types prevent errors
- Performance - Zero-cost abstractions
- Fail Fast - Validate early, error clearly
- Security - Sensitive data never logged
Testing
All types include comprehensive unit tests:
Run clippy and format checks:
Dependencies
Minimal dependencies for maximum compatibility:
serde- Serializationserde_json- JSON supportthiserror- Error handlingasync-trait- Async trait support
License
MIT OR Apache-2.0
Next Steps
After simple-agent-type, the next crates to implement are:
simple-agents-providers- OpenAI, Anthropic, etc.simple-agents-healing- JSON parser with coercionsimple-agents-router- Retry and fallback logicsimple-agents-core- Client and completion API