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 error;
39pub mod memory;
40pub mod retry;
41pub(crate) mod runtime;
42pub(crate) mod streaming;
43
44// Re-export core traits at crate root
45pub use traits::context_strategy::{ContextStrategy, NoopContextStrategy, SlidingWindowStrategy};
46pub use traits::execution_strategy::{
47    AdaptiveStrategy, ExecutionStrategy, ParallelStrategy, PendingToolCall, SequentialStrategy,
48    ToolResult,
49};
50pub use traits::guard::{Guard, GuardResult};
51pub use traits::hint::{Hint, HintMessage, HintPriority, InjectionPoint};
52pub use traits::memory::Memory;
53pub use traits::output_processor::{
54    ChainProcessor, NoopProcessor, OutputProcessor, TruncateProcessor,
55};
56pub use traits::provider::Provider;
57
58pub use retry::{RetryConfig, RetryProvider};
59pub use traits::tool::{ErasedTool, Tool, ToolSchema};
60pub use traits::tracker::Tracker;
61
62// Re-export core types at crate root
63pub use types::action::Action;
64pub use types::agent_state::AgentState;
65pub use types::completion::{CompletionRequest, CompletionResponse, Usage};
66pub use types::message::{Message, MessageRole};
67pub use types::model_info::{ModelInfo, ModelTier};
68pub use types::stream::{CompletionStream, StreamEvent};
69pub use types::tool_call::ToolCall;
70
71// Re-export error types
72pub use error::{Error, Result};
73
74// Re-export memory implementations
75pub use memory::in_memory::InMemoryMemory;
76
77// Re-export agent
78pub use agent::{Agent, AgentOutput, AgentOutputContent, AgentSession, RunUsage};
79pub use agent_builder::AgentBuilder;
80
81/// Prelude module for convenient imports.
82///
83/// Use `use traitclaw_core::prelude::*;` for convenient access
84/// to the most commonly used types.
85///
86/// ```rust
87/// use traitclaw_core::prelude::*;
88/// ```
89pub mod prelude {
90
91    pub use crate::traits::context_strategy::{
92        ContextStrategy, NoopContextStrategy, SlidingWindowStrategy,
93    };
94    pub use crate::traits::execution_strategy::{
95        ExecutionStrategy, ParallelStrategy, SequentialStrategy,
96    };
97    pub use crate::traits::guard::{Guard, GuardResult};
98    pub use crate::traits::hint::{Hint, HintMessage};
99    pub use crate::traits::memory::Memory;
100    pub use crate::traits::output_processor::{OutputProcessor, TruncateProcessor};
101    pub use crate::traits::provider::{ModelInfo, ModelTier, Provider};
102    pub use crate::traits::tool::{ErasedTool, Tool, ToolSchema};
103    pub use crate::traits::tracker::Tracker;
104
105    pub use crate::types::action::Action;
106    pub use crate::types::agent_state::AgentState;
107    pub use crate::types::completion::{CompletionRequest, CompletionResponse};
108    pub use crate::types::message::{Message, MessageRole};
109    pub use crate::types::stream::{CompletionStream, StreamEvent};
110    pub use crate::types::tool_call::ToolCall;
111
112    pub use crate::config::AgentConfig;
113    pub use crate::error::{Error, Result};
114    pub use crate::memory::in_memory::InMemoryMemory;
115
116    pub use crate::agent::{Agent, AgentOutput, AgentOutputContent, AgentSession, RunUsage};
117    pub use crate::agent_builder::AgentBuilder;
118}