tool_useful/
lib.rs

1//! # tool-useful
2//!
3//! **A high-performance, type-safe function calling and tool orchestration framework for Rust AI applications.**
4//!
5//! ## Performance Features
6//! - ⚡ Parallel execution with configurable concurrency
7//! - 🔄 Advanced retry policies with exponential backoff & jitter
8//! - ⏱️  Circuit breakers to prevent cascading failures
9//! - 📊 Built-in metrics and tracing
10//! - 🚀 Zero-cost abstractions
11//!
12//! ## Security Features
13//! - 🔒 Permission system (network, filesystem)
14//! - 📏 Resource limits (memory, CPU time)
15//! - 🛡️  Rate limiting
16//! - 🔐 Sandboxing support
17//!
18//! ## Advanced Features
19//! - 📡 Streaming tool execution
20//! - 📦 Batch processing
21//! - 🌐 Multi-provider schema export (OpenAI, Anthropic, Gemini)
22
23pub mod error;
24pub mod executor;
25pub mod registry;
26pub mod schema;
27pub mod security;
28pub mod streaming;
29pub mod tool;
30pub mod types;
31
32// Re-export commonly used items
33pub use error::{ErrorKind, ToolError, ToolResult};
34pub use executor::{
35    CircuitBreaker, ExecutionContext, Executor, ExecutorBuilder, ExecutorMetrics, RetryPolicy,
36    RetryStrategy, ToolExecutor,
37};
38pub use registry::{Provider, ToolRegistry};
39pub use schema::{ParameterSchema, ProviderSchema, ToolSchema};
40pub use security::{
41    FileSystemPermission, NetworkPermission, Permissions, PermissionsBuilder, RateLimiter,
42    ResourceTracker,
43};
44pub use streaming::{collect_stream, StreamingToolExecutor};
45pub use tool::{FromToolCall, Tool, ToolMetadata};
46pub use types::{ToolCall, ToolOutput};
47
48/// Prelude for convenient imports
49pub mod prelude {
50    pub use crate::error::{ErrorKind, ToolError, ToolResult};
51    pub use crate::executor::{
52        ExecutionContext, Executor, ExecutorBuilder, ExecutorMetrics, RetryPolicy, RetryStrategy,
53        ToolExecutor,
54    };
55    pub use crate::registry::{Provider, ToolRegistry};
56    pub use crate::schema::{ParameterSchema, ProviderSchema, ToolSchema};
57    pub use crate::security::{Permissions, PermissionsBuilder, RateLimiter, ResourceTracker};
58    pub use crate::streaming::{collect_stream, StreamingToolExecutor};
59    pub use crate::tool::{FromToolCall, Tool, ToolMetadata};
60    pub use crate::types::{ToolCall, ToolOutput};
61    pub use async_trait::async_trait;
62    pub use serde::{Deserialize, Serialize};
63}