Expand description
§CATS - Coding Agent ToolS
A comprehensive toolkit for building AI-powered coding agents. This crate provides structured, LLM-friendly tools for software engineering tasks.
§Features
- File Navigation: Windowed file viewing, line navigation, scrolling
- Search Tools: File discovery, content search across files and directories
- File Editing: Search/replace editing with integrated linting
- State Management: Persistent tool state and session history
- Utility Tools: Project structure visualization, task submission
- LLM Integration: JSON conversion, tool execution, result handling for LLM providers
§Tool Sets
CATS supports multiple tool sets via feature flags:
old(default): Original CATS toolsopencode: OpenCode-compatible toolsgemini-cli: Google Gemini CLI tools (coming soon)claude-code: Claude Code-compatible tools (coming soon)
§Usage
use cats::{create_tool_registry, ToolArgs};
let mut registry = create_tool_registry();
let result = registry.execute_tool("_state", &ToolArgs::from_args(&[]))?;
println!("{}", result.message);Re-exports§
pub use core::Tool;pub use core::ToolArgs;pub use core::ToolRegistry;pub use core::ToolResult;pub use state::FileState;pub use state::StateSnapshot;pub use state::ToolState;pub use tools::opencode::BashTool;pub use tools::opencode::EditTool;pub use tools::opencode::GlobTool;pub use tools::opencode::GrepTool;pub use tools::opencode::ListTool;pub use tools::opencode::MultiEditTool;pub use tools::opencode::ReadTool;pub use tools::opencode::TodoReadTool;pub use tools::opencode::TodoWriteTool;pub use tools::opencode::WebFetchTool;pub use tools::opencode::WebSearchTool;pub use tools::opencode::WriteTool;pub use llm::assistant::generate_assistant_content;pub use llm::assistant::ToolCallInfo;pub use llm::converter::json_to_tool_args;pub use llm::executor::execute_tool_calls;pub use llm::executor::execute_tool_calls_structured;pub use llm::executor::ExecutionCallback;pub use llm::executor::NoOpCallback;pub use llm::executor::ToolCallRequest;pub use llm::executor::ToolExecutionResult;pub use llm::result_handler::handle_large_result;pub use llm::result_handler::ResultHandlerConfig;pub use tools::opencode::create_tool_registry;pub use tools::opencode::create_tool_registry_with_open_window_size;