llm_coding_tools_rig/
lib.rs1#![doc = include_str!(concat!("../", env!("CARGO_PKG_README")))]
2#![warn(missing_docs)]
3
4pub mod absolute;
5pub mod allowed;
6pub mod bash;
7pub mod todo;
8pub mod webfetch;
9
10pub use llm_coding_tools_core::{ToolError, ToolOutput, ToolResult};
12
13pub use llm_coding_tools_core::context;
15pub use llm_coding_tools_core::ToolContext;
16
17pub use llm_coding_tools_core::{Substitute, SystemPromptBuilder};
19
20pub use llm_coding_tools_core::path::{AbsolutePathResolver, AllowedPathResolver, PathResolver};
22
23pub use llm_coding_tools_core::{
25 BashOutput, EditError, GlobOutput, GrepFileMatches, GrepLineMatch, GrepOutput, Todo,
26 TodoPriority, TodoState, TodoStatus, WebFetchOutput,
27};
28
29pub use absolute::{
31 EditArgs, EditTool, GlobArgs, GlobTool, GrepArgs, GrepTool, ReadArgs, ReadTool, WriteTool,
32 WriteToolArgs,
33};
34
35pub mod allowed_tools {
37 pub use crate::allowed::{
38 EditArgs, EditError, EditTool, GlobArgs, GlobTool, GrepArgs, GrepTool, ReadArgs, ReadTool,
39 WriteTool, WriteToolArgs,
40 };
41}
42
43pub use bash::{BashArgs, BashTool};
45pub use todo::{TodoReadArgs, TodoReadTool, TodoTools, TodoWriteArgs, TodoWriteTool};
46pub use webfetch::{WebFetchArgs, WebFetchTool};
47
48#[cfg(test)]
49mod tests {
50 use super::*;
51 use llm_coding_tools_core::tool_names;
52
53 #[test]
54 fn system_prompt_builder_with_real_tools() {
55 let mut pb = SystemPromptBuilder::new();
56 let read: absolute::ReadTool<true> = pb.track(absolute::ReadTool::new());
57 let bash = pb.track(BashTool::new());
58
59 let prompt = pb.build();
60
61 assert!(prompt.contains("## `Read` Tool"));
62 assert!(prompt.contains("## `Bash` Tool"));
63 assert!(prompt.contains("absolute path")); assert_eq!(
67 <absolute::ReadTool<true> as rig::tool::Tool>::NAME,
68 tool_names::READ
69 );
70 let _ = read;
71 let _ = bash;
72 }
73}