Skip to main content

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}