Skip to main content

ftooling/
lib.rs

1//! Capability layer for registering and executing tools.
2//!
3//! ```rust
4//! use fprovider::ToolDefinition;
5//! use ftooling::{DefaultToolRuntime, ToolRegistry};
6//! use std::sync::Arc;
7//!
8//! let mut registry = ToolRegistry::new();
9//! registry.register_sync_fn(
10//!     ToolDefinition {
11//!         name: "echo".to_string(),
12//!         description: "Echoes raw arguments".to_string(),
13//!         input_schema: r#"{"type":"string"}"#.to_string(),
14//!     },
15//!     |args, _ctx| Ok(args),
16//! );
17//!
18//! let runtime = DefaultToolRuntime::new(Arc::new(registry));
19//! assert_eq!(runtime.registry().len(), 1);
20//! ```
21
22mod args;
23mod error;
24mod hooks;
25mod registry;
26mod runtime;
27mod tool;
28mod types;
29
30pub mod prelude {
31    pub use crate::{
32        DefaultToolRuntime, FunctionTool, NoopToolRuntimeHooks, Tool, ToolError, ToolErrorKind,
33        ToolExecutionContext, ToolExecutionResult, ToolFuture, ToolRegistry, ToolRuntime,
34        ToolRuntimeHooks, parse_json_object, parse_json_value, required_string,
35    };
36    pub use fcommon::{MetadataMap, SessionId, TraceId};
37}
38
39pub use args::{parse_json_object, parse_json_value, required_string};
40pub use error::{ToolError, ToolErrorKind};
41pub use fcommon::{MetadataMap, SessionId, TraceId};
42pub use hooks::{NoopToolRuntimeHooks, ToolRuntimeHooks};
43pub use registry::ToolRegistry;
44pub use runtime::{DefaultToolRuntime, ToolRuntime};
45pub use tool::{FunctionTool, Tool, ToolFuture};
46pub use types::{ToolExecutionContext, ToolExecutionResult};