codetether_agent/a2a/worker_tool_registry/mutating/register.rs
1use super::{register_edit_tools, register_go_tool, register_model_tools, register_task_tools};
2use crate::provider::Provider;
3use crate::tool::ToolRegistry;
4use std::path::PathBuf;
5use std::sync::Arc;
6
7/// Register the worker's state-changing tools against the current workspace root.
8///
9/// # Examples
10///
11/// ```rust
12/// use codetether_agent::a2a::worker_tool_registry::register_mutating_tools;
13/// use codetether_agent::provider::openai::OpenAIProvider;
14/// use codetether_agent::tool::ToolRegistry;
15/// use std::path::PathBuf;
16/// use std::sync::Arc;
17///
18/// let mut registry = ToolRegistry::new();
19/// let provider = OpenAIProvider::new("test-key".to_string()).expect("provider");
20/// register_mutating_tools(
21/// &mut registry,
22/// Arc::new(provider),
23/// "openai/gpt-4o-mini".to_string(),
24/// PathBuf::from("."),
25/// None,
26/// );
27///
28/// assert!(registry.contains("write"));
29/// assert!(registry.contains("undo"));
30/// ```
31pub fn register_mutating_tools(
32 registry: &mut ToolRegistry,
33 provider: Arc<dyn Provider>,
34 model: String,
35 root_path: PathBuf,
36 completion_callback: Option<Arc<dyn Fn(String) + Send + Sync + 'static>>,
37) {
38 register_edit_tools(registry, root_path);
39 register_task_tools(registry);
40 register_model_tools(registry, provider, model);
41 register_go_tool(registry, completion_callback);
42}