Skip to main content

traitclaw_core/
lib.rs

1//! # `TraitClaw` Core
2//!
3//! Core traits, types, and runtime for the `TraitClaw` AI Agent Framework.
4//!
5//! This crate provides the fundamental abstractions for building AI agents:
6//!
7//! - [`Provider`] — LLM abstraction trait
8//! - [`Tool`] — Tool definition trait with auto JSON Schema
9//! - [`Memory`] — 3-layer memory system (conversation, working, long-term)
10//! - [`Guard`] — Hard boundary checks for model steering
11//! - [`Hint`] — Contextual guidance injection
12//! - [`Tracker`] — Runtime state monitoring
13//! - [`Agent`] — The main agent struct with builder pattern
14//!
15//! # Quick Start
16//!
17//! ```rust,no_run
18//! use traitclaw_core::prelude::*;
19//!
20//! # async fn example() -> traitclaw_core::Result<()> {
21//! // Agent creation is done via the builder pattern
22//! // (requires a Provider implementation)
23//! # Ok(())
24//! # }
25//! ```
26
27#![deny(missing_docs)]
28#![allow(clippy::redundant_closure)]
29
30pub mod traits;
31pub mod types;
32
33pub mod agent;
34pub mod agent_builder;
35pub mod config;
36pub mod context_managers;
37pub mod default_strategy;
38pub mod error;
39pub mod factory;
40pub mod memory;
41pub mod pool;
42pub mod registries;
43pub mod retry;
44pub(crate) mod streaming;
45pub mod token_counter;
46pub mod token_counting;
47pub mod transformers;
48
49// Re-export core traits at crate root
50pub use traits::context_manager::ContextManager;
51pub use traits::execution_strategy::{
52    AdaptiveStrategy, ExecutionStrategy, ParallelStrategy, PendingToolCall, SequentialStrategy,
53    ToolResult,
54};
55pub use traits::guard::{Guard, GuardResult};
56pub use traits::hint::{Hint, HintMessage, HintPriority, InjectionPoint};
57pub use traits::memory::Memory;
58pub use traits::output_transformer::OutputTransformer;
59pub use traits::provider::Provider;
60
61pub use context_managers::{LlmCompressor, RuleBasedCompressor, TieredCompressor};
62pub use registries::{AdaptiveRegistry, DynamicRegistry, GroupedRegistry, TierLimits};
63pub use retry::{RetryConfig, RetryProvider};
64#[cfg(feature = "tiktoken")]
65pub use token_counter::TikTokenCounter;
66pub use token_counting::{CharApproxCounter, TokenCounter};
67pub use traits::tool::{ErasedTool, Tool, ToolSchema};
68pub use traits::tool_registry::{SimpleRegistry, ToolRegistry};
69pub use traits::tracker::Tracker;
70pub use transformers::{
71    BudgetAwareTruncator, FullOutputRetriever, JsonExtractor, ProgressiveTransformer,
72    TransformerChain,
73};
74
75// Re-export v0.2.0 traits
76pub use default_strategy::DefaultStrategy;
77pub use traits::hook::{AgentHook, HookAction, LoggingHook};
78pub use traits::strategy::{AgentRuntime, AgentStrategy};
79
80// Re-export core types at crate root
81pub use types::action::Action;
82pub use types::agent_state::AgentState;
83pub use types::completion::{CompletionRequest, CompletionResponse, Usage};
84pub use types::message::{Message, MessageRole};
85pub use types::model_info::{ModelInfo, ModelTier};
86pub use types::stream::{CompletionStream, StreamEvent};
87pub use types::tool_call::ToolCall;
88
89// Re-export error types
90pub use error::{Error, Result};
91
92// Re-export memory implementations
93pub use memory::compressed::CompressedMemory;
94pub use memory::in_memory::InMemoryMemory;
95
96// Re-export agent
97pub use agent::{Agent, AgentOutput, AgentOutputContent, AgentSession, RunUsage};
98pub use agent_builder::AgentBuilder;
99pub use factory::AgentFactory;
100pub use pool::AgentPool;
101
102/// Prelude module for convenient imports.
103///
104/// Use `use traitclaw_core::prelude::*;` for convenient access
105/// to the most commonly used types.
106///
107/// ```rust
108/// use traitclaw_core::prelude::*;
109/// ```
110pub mod prelude {
111
112    pub use crate::traits::context_manager::ContextManager;
113    pub use crate::traits::execution_strategy::{
114        ExecutionStrategy, ParallelStrategy, SequentialStrategy,
115    };
116    pub use crate::traits::guard::{Guard, GuardResult};
117    pub use crate::traits::hint::{Hint, HintMessage};
118    pub use crate::traits::memory::Memory;
119    pub use crate::traits::output_transformer::OutputTransformer;
120    pub use crate::traits::provider::{ModelInfo, ModelTier, Provider};
121    pub use crate::traits::tool::{ErasedTool, Tool, ToolSchema};
122    pub use crate::traits::tool_registry::{SimpleRegistry, ToolRegistry};
123
124    // v0.4.0: Advanced registries
125    pub use crate::registries::{AdaptiveRegistry, DynamicRegistry, GroupedRegistry};
126
127    // v0.4.0: Progressive transformer
128    pub use crate::traits::tracker::Tracker;
129    pub use crate::transformers::{
130        BudgetAwareTruncator, FullOutputRetriever, ProgressiveTransformer, TransformerChain,
131    };
132
133    // v0.3.0: Built-in context managers
134    pub use crate::context_managers::{LlmCompressor, RuleBasedCompressor, TieredCompressor};
135
136    pub use crate::types::action::Action;
137    pub use crate::types::agent_state::AgentState;
138    pub use crate::types::completion::{CompletionRequest, CompletionResponse};
139    pub use crate::types::message::{Message, MessageRole};
140    pub use crate::types::stream::{CompletionStream, StreamEvent};
141    pub use crate::types::tool_call::ToolCall;
142
143    pub use crate::config::AgentConfig;
144    pub use crate::error::{Error, Result};
145    pub use crate::memory::compressed::CompressedMemory;
146    pub use crate::memory::in_memory::InMemoryMemory;
147    pub use crate::retry::{RetryConfig, RetryProvider};
148
149    pub use crate::agent::{Agent, AgentOutput, AgentOutputContent, AgentSession, RunUsage};
150    pub use crate::agent_builder::AgentBuilder;
151
152    // v0.6.0: Composition APIs
153    pub use crate::factory::AgentFactory;
154    pub use crate::pool::AgentPool;
155
156    // v0.2.0: Strategy & Hook
157    pub use crate::default_strategy::DefaultStrategy;
158    pub use crate::traits::hook::{AgentHook, HookAction, LoggingHook};
159    pub use crate::traits::strategy::{AgentRuntime, AgentStrategy};
160}