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(warnings)]
28#![deny(missing_docs)]
29#![warn(clippy::pedantic)]
30#![allow(clippy::module_name_repetitions)]
31
32pub mod traits;
33pub mod types;
34
35pub mod agent;
36pub mod agent_builder;
37pub mod config;
38pub mod context_managers;
39pub mod default_strategy;
40pub mod error;
41pub mod factory;
42pub mod memory;
43pub mod pool;
44pub mod registries;
45pub mod retry;
46pub(crate) mod runtime;
47pub(crate) mod streaming;
48pub mod token_counter;
49pub mod token_counting;
50pub mod transformers;
51
52#[cfg(test)]
53pub(crate) mod test_utils;
54
55// Re-export core traits at crate root
56pub use traits::context_manager::ContextManager;
57#[allow(deprecated)]
58pub use traits::context_strategy::{ContextStrategy, NoopContextStrategy, SlidingWindowStrategy};
59pub use traits::execution_strategy::{
60    AdaptiveStrategy, ExecutionStrategy, ParallelStrategy, PendingToolCall, SequentialStrategy,
61    ToolResult,
62};
63pub use traits::guard::{Guard, GuardResult};
64pub use traits::hint::{Hint, HintMessage, HintPriority, InjectionPoint};
65pub use traits::memory::Memory;
66#[allow(deprecated)]
67pub use traits::output_processor::{
68    ChainProcessor, NoopProcessor, OutputProcessor, TruncateProcessor,
69};
70pub use traits::output_transformer::OutputTransformer;
71pub use traits::provider::Provider;
72
73pub use context_managers::{LlmCompressor, RuleBasedCompressor, TieredCompressor};
74pub use registries::{AdaptiveRegistry, DynamicRegistry, GroupedRegistry, TierLimits};
75pub use retry::{RetryConfig, RetryProvider};
76#[cfg(feature = "tiktoken")]
77pub use token_counter::TikTokenCounter;
78pub use token_counting::{CharApproxCounter, TokenCounter};
79pub use traits::tool::{ErasedTool, Tool, ToolSchema};
80pub use traits::tool_registry::{SimpleRegistry, ToolRegistry};
81pub use traits::tracker::Tracker;
82pub use transformers::{
83    BudgetAwareTruncator, FullOutputRetriever, JsonExtractor, ProgressiveTransformer,
84    TransformerChain,
85};
86
87// Re-export v0.2.0 traits
88pub use default_strategy::DefaultStrategy;
89pub use traits::hook::{AgentHook, HookAction, LoggingHook};
90pub use traits::strategy::{AgentRuntime, AgentStrategy};
91
92// Re-export core types at crate root
93pub use types::action::Action;
94pub use types::agent_state::AgentState;
95pub use types::completion::{CompletionRequest, CompletionResponse, Usage};
96pub use types::message::{Message, MessageRole};
97pub use types::model_info::{ModelInfo, ModelTier};
98pub use types::stream::{CompletionStream, StreamEvent};
99pub use types::tool_call::ToolCall;
100
101// Re-export error types
102pub use error::{Error, Result};
103
104// Re-export memory implementations
105pub use memory::compressed::CompressedMemory;
106pub use memory::in_memory::InMemoryMemory;
107
108// Re-export agent
109pub use agent::{Agent, AgentOutput, AgentOutputContent, AgentSession, RunUsage};
110pub use agent_builder::AgentBuilder;
111pub use factory::AgentFactory;
112pub use pool::AgentPool;
113
114/// Prelude module for convenient imports.
115///
116/// Use `use traitclaw_core::prelude::*;` for convenient access
117/// to the most commonly used types.
118///
119/// ```rust
120/// use traitclaw_core::prelude::*;
121/// ```
122pub mod prelude {
123
124    pub use crate::traits::context_manager::ContextManager;
125    #[allow(deprecated)]
126    pub use crate::traits::context_strategy::{
127        ContextStrategy, NoopContextStrategy, SlidingWindowStrategy,
128    };
129    pub use crate::traits::execution_strategy::{
130        ExecutionStrategy, ParallelStrategy, SequentialStrategy,
131    };
132    pub use crate::traits::guard::{Guard, GuardResult};
133    pub use crate::traits::hint::{Hint, HintMessage};
134    pub use crate::traits::memory::Memory;
135    #[allow(deprecated)]
136    pub use crate::traits::output_processor::{OutputProcessor, TruncateProcessor};
137    pub use crate::traits::output_transformer::OutputTransformer;
138    pub use crate::traits::provider::{ModelInfo, ModelTier, Provider};
139    pub use crate::traits::tool::{ErasedTool, Tool, ToolSchema};
140    pub use crate::traits::tool_registry::{SimpleRegistry, ToolRegistry};
141
142    // v0.4.0: Advanced registries
143    pub use crate::registries::{AdaptiveRegistry, GroupedRegistry};
144
145    // v0.4.0: Progressive transformer
146    pub use crate::traits::tracker::Tracker;
147    pub use crate::transformers::{FullOutputRetriever, ProgressiveTransformer};
148
149    // v0.3.0: Built-in context managers
150    pub use crate::context_managers::{LlmCompressor, RuleBasedCompressor, TieredCompressor};
151
152    pub use crate::types::action::Action;
153    pub use crate::types::agent_state::AgentState;
154    pub use crate::types::completion::{CompletionRequest, CompletionResponse};
155    pub use crate::types::message::{Message, MessageRole};
156    pub use crate::types::stream::{CompletionStream, StreamEvent};
157    pub use crate::types::tool_call::ToolCall;
158
159    pub use crate::config::AgentConfig;
160    pub use crate::error::{Error, Result};
161    pub use crate::memory::in_memory::InMemoryMemory;
162
163    pub use crate::agent::{Agent, AgentOutput, AgentOutputContent, AgentSession, RunUsage};
164    pub use crate::agent_builder::AgentBuilder;
165
166    // v0.6.0: Composition APIs
167    pub use crate::factory::AgentFactory;
168    pub use crate::pool::AgentPool;
169
170    // v0.2.0: Strategy & Hook
171    pub use crate::default_strategy::DefaultStrategy;
172    pub use crate::traits::hook::{AgentHook, HookAction, LoggingHook};
173    pub use crate::traits::strategy::{AgentRuntime, AgentStrategy};
174}