talk/
lib.rs

1//! Talk: A Rust library for creating controlled LLM agents
2//!
3//! Talk enables developers to create production-ready AI agents with predictable behavior
4//! in under 50 lines of Rust code. The library provides behavioral guidelines, tool integration,
5//! multi-step conversation journeys, and pluggable storage backends.
6//!
7//! # Quick Start
8//!
9//! ```ignore
10//! use talk::{Agent, Guideline, GuidelineCondition, GuidelineAction};
11//!
12//! #[tokio::main]
13//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
14//!     // Implementation examples will be available after Agent API is implemented
15//!     Ok(())
16//! }
17//! ```
18
19// Core type definitions
20pub mod types;
21
22// Error types
23pub mod error;
24
25// Context management
26pub mod context;
27
28// Session management
29pub mod session;
30
31// Provider abstraction
32pub mod provider;
33
34// Storage backends
35pub mod storage;
36
37// Guideline matching engine
38pub mod guideline;
39
40// Agent core
41pub mod agent;
42
43// Tool integration
44pub mod tool;
45
46// Journey system
47pub mod journey;
48
49// Public API exports will be added as modules are implemented
50pub use agent::{
51    Agent, AgentBuilder, AgentConfig, AgentResponse, LogLevel, ResponseExplanation, ToolExecution,
52};
53pub use context::{Context, ContextVariable, Message, MessageRole, Validator};
54pub use error::{AgentError, GuidelineError, JourneyError, Result, StorageError, ToolError};
55pub use guideline::{
56    DefaultGuidelineMatcher, Guideline, GuidelineAction, GuidelineCondition, GuidelineMatch,
57    GuidelineMatcher, ParameterDef,
58};
59pub use journey::{
60    DefaultJourneyManager, Journey, JourneyManager, JourneyState, JourneyStep, Transition,
61    TransitionCondition,
62};
63pub use provider::{AnthropicProvider, LLMProvider, OpenAIProvider, ProviderConfig, StreamChunk};
64pub use session::{Session, SessionStatus};
65pub use storage::{memory::InMemorySessionStore, SessionStore};
66pub use tool::{ParameterSchema, Tool, ToolRegistry, ToolResult};
67pub use types::*;