Skip to main content

Crate cats

Crate cats 

Source
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 tools
  • opencode: OpenCode-compatible tools
  • gemini-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;

Modules§

core
Core traits and types for the simpaticoder tools system
llm
LLM integration module for CATS tools
state
State management for tools
tools
Tool sets for CATS