#![doc = include_str!(concat!("../", env!("CARGO_PKG_README")))]
#![warn(missing_docs)]
pub mod absolute;
pub mod allowed;
pub mod bash;
pub mod todo;
pub mod webfetch;
pub use llm_coding_tools_core::{ToolError, ToolOutput, ToolResult};
pub use llm_coding_tools_core::context;
pub use llm_coding_tools_core::ToolContext;
pub use llm_coding_tools_core::{Substitute, SystemPromptBuilder};
pub use llm_coding_tools_core::path::{AbsolutePathResolver, AllowedPathResolver, PathResolver};
pub use llm_coding_tools_core::{
BashOutput, EditError, GlobOutput, GrepFileMatches, GrepLineMatch, GrepOutput, Todo,
TodoPriority, TodoState, TodoStatus, WebFetchOutput,
};
pub use absolute::{
EditArgs, EditTool, GlobArgs, GlobTool, GrepArgs, GrepTool, ReadArgs, ReadTool, WriteTool,
WriteToolArgs,
};
pub mod allowed_tools {
pub use crate::allowed::{
EditArgs, EditError, EditTool, GlobArgs, GlobTool, GrepArgs, GrepTool, ReadArgs, ReadTool,
WriteTool, WriteToolArgs,
};
}
pub use bash::{BashArgs, BashTool};
pub use todo::{TodoReadArgs, TodoReadTool, TodoTools, TodoWriteArgs, TodoWriteTool};
pub use webfetch::{WebFetchArgs, WebFetchTool};
#[cfg(test)]
mod tests {
use super::*;
use llm_coding_tools_core::tool_names;
#[test]
fn system_prompt_builder_with_real_tools() {
let mut pb = SystemPromptBuilder::new();
let read: absolute::ReadTool<true> = pb.track(absolute::ReadTool::new());
let bash = pb.track(BashTool::new());
let prompt = pb.build();
assert!(prompt.contains("## `Read` Tool"));
assert!(prompt.contains("## `Bash` Tool"));
assert!(prompt.contains("absolute path"));
assert_eq!(
<absolute::ReadTool<true> as rig::tool::Tool>::NAME,
tool_names::READ
);
let _ = read;
let _ = bash;
}
}