Skip to main content

zeroclaw_tools/
attribution.rs

1//! Centralized `Attributable` impls for every concrete `Tool` in this
2//! crate. Each invocation surfaces `Role::Tool(ToolKind::*)` and uses
3//! the tool's `name()` as its alias so log emissions can attribute
4//! tool activity with the same `<kind>.<alias>` composite the rest of
5//! the runtime uses for channels, providers, and memory.
6//!
7//! Add a new line here whenever a new `impl Tool for FooTool` lands in
8//! this crate; `Tool: Attributable` is a hard supertrait, so the
9//! compiler will refuse to build without the matching impl.
10
11use zeroclaw_api::attribution::ToolKind;
12use zeroclaw_api::tool_attribution;
13
14use crate::ask_user::AskUserTool;
15use crate::backup_tool::BackupTool;
16use crate::browser::BrowserTool;
17use crate::browser_delegate::BrowserDelegateTool;
18use crate::browser_open::BrowserOpenTool;
19use crate::calculator::CalculatorTool;
20use crate::canvas::CanvasTool;
21use crate::claude_code::ClaudeCodeTool;
22use crate::claude_code_runner::ClaudeCodeRunnerTool;
23use crate::cloud_ops::CloudOpsTool;
24use crate::cloud_patterns::CloudPatternsTool;
25use crate::codex_cli::CodexCliTool;
26use crate::composio::ComposioTool;
27use crate::content_search::ContentSearchTool;
28use crate::data_management::DataManagementTool;
29use crate::discord_search::DiscordSearchTool;
30use crate::escalate::EscalateToHumanTool;
31use crate::file_download::FileDownloadTool;
32use crate::file_edit::FileEditTool;
33use crate::file_upload::FileUploadTool;
34use crate::file_upload_bundle::FileUploadBundleTool;
35use crate::file_write::FileWriteTool;
36use crate::gemini_cli::GeminiCliTool;
37use crate::git_operations::GitOperationsTool;
38use crate::glob_search::GlobSearchTool;
39use crate::google_workspace::GoogleWorkspaceTool;
40use crate::hardware_board_info::HardwareBoardInfoTool;
41use crate::hardware_memory_map::HardwareMemoryMapTool;
42use crate::hardware_memory_read::HardwareMemoryReadTool;
43use crate::http_request::HttpRequestTool;
44use crate::image_gen::ImageGenTool;
45use crate::image_info::ImageInfoTool;
46use crate::jira_tool::JiraTool;
47use crate::knowledge_tool::KnowledgeTool;
48use crate::linkedin::LinkedInTool;
49use crate::llm_task::LlmTaskTool;
50use crate::mcp_tool::McpToolWrapper;
51use crate::memory_export::MemoryExportTool;
52use crate::memory_forget::MemoryForgetTool;
53use crate::memory_purge::MemoryPurgeTool;
54use crate::memory_recall::MemoryRecallTool;
55use crate::memory_store::MemoryStoreTool;
56use crate::microsoft365::Microsoft365Tool;
57use crate::model_routing_config::ModelRoutingConfigTool;
58use crate::notion_tool::NotionTool;
59use crate::opencode_cli::OpenCodeCliTool;
60use crate::pdf_read::PdfReadTool;
61use crate::pipeline::PipelineTool;
62use crate::poll::PollTool;
63use crate::project_intel::ProjectIntelTool;
64use crate::proxy_config::ProxyConfigTool;
65use crate::pushover::PushoverTool;
66use crate::reaction::ReactionTool;
67use crate::report_template_tool::ReportTemplateTool;
68use crate::screenshot::ScreenshotTool;
69use crate::sessions::{
70    SessionDeleteTool, SessionResetTool, SessionsCurrentTool, SessionsHistoryTool,
71    SessionsListTool, SessionsSendTool,
72};
73use crate::text_browser::TextBrowserTool;
74use crate::tool_search::ToolSearchTool;
75use crate::weather_tool::WeatherTool;
76use crate::web_fetch::WebFetchTool;
77use crate::web_search_tool::WebSearchTool;
78
79tool_attribution!(AskUserTool, ToolKind::Wait);
80tool_attribution!(BackupTool, ToolKind::Plugin);
81tool_attribution!(BrowserTool, ToolKind::Plugin);
82tool_attribution!(BrowserDelegateTool, ToolKind::Plugin);
83tool_attribution!(BrowserOpenTool, ToolKind::Plugin);
84tool_attribution!(CalculatorTool, ToolKind::Plugin);
85tool_attribution!(CanvasTool, ToolKind::Plugin);
86tool_attribution!(ClaudeCodeTool, ToolKind::Plugin);
87tool_attribution!(ClaudeCodeRunnerTool, ToolKind::Plugin);
88tool_attribution!(CloudOpsTool, ToolKind::Plugin);
89tool_attribution!(CloudPatternsTool, ToolKind::Plugin);
90tool_attribution!(CodexCliTool, ToolKind::Plugin);
91tool_attribution!(ComposioTool, ToolKind::Plugin);
92tool_attribution!(ContentSearchTool, ToolKind::Search);
93tool_attribution!(DataManagementTool, ToolKind::Plugin);
94tool_attribution!(DiscordSearchTool, ToolKind::Search);
95tool_attribution!(EscalateToHumanTool, ToolKind::Wait);
96tool_attribution!(FileDownloadTool, ToolKind::Plugin);
97tool_attribution!(FileEditTool, ToolKind::Plugin);
98tool_attribution!(FileUploadTool, ToolKind::Plugin);
99tool_attribution!(FileUploadBundleTool, ToolKind::Plugin);
100tool_attribution!(FileWriteTool, ToolKind::Plugin);
101tool_attribution!(GeminiCliTool, ToolKind::Plugin);
102tool_attribution!(GitOperationsTool, ToolKind::Shell);
103tool_attribution!(GlobSearchTool, ToolKind::Search);
104tool_attribution!(GoogleWorkspaceTool, ToolKind::Plugin);
105tool_attribution!(HardwareBoardInfoTool, ToolKind::Plugin);
106tool_attribution!(HardwareMemoryMapTool, ToolKind::Plugin);
107tool_attribution!(HardwareMemoryReadTool, ToolKind::Plugin);
108tool_attribution!(HttpRequestTool, ToolKind::HttpRequest);
109tool_attribution!(ImageGenTool, ToolKind::Plugin);
110tool_attribution!(ImageInfoTool, ToolKind::Plugin);
111tool_attribution!(JiraTool, ToolKind::Plugin);
112tool_attribution!(KnowledgeTool, ToolKind::Plugin);
113tool_attribution!(LinkedInTool, ToolKind::Plugin);
114tool_attribution!(LlmTaskTool, ToolKind::Plugin);
115tool_attribution!(McpToolWrapper, ToolKind::Plugin);
116tool_attribution!(MemoryExportTool, ToolKind::Memory);
117tool_attribution!(MemoryForgetTool, ToolKind::Memory);
118tool_attribution!(MemoryPurgeTool, ToolKind::Memory);
119tool_attribution!(MemoryRecallTool, ToolKind::Memory);
120tool_attribution!(MemoryStoreTool, ToolKind::Memory);
121tool_attribution!(Microsoft365Tool, ToolKind::Plugin);
122tool_attribution!(ModelRoutingConfigTool, ToolKind::Plugin);
123tool_attribution!(NotionTool, ToolKind::Plugin);
124tool_attribution!(OpenCodeCliTool, ToolKind::Plugin);
125tool_attribution!(PdfReadTool, ToolKind::Plugin);
126tool_attribution!(PipelineTool, ToolKind::Plugin);
127tool_attribution!(PollTool, ToolKind::Wait);
128tool_attribution!(ProjectIntelTool, ToolKind::Plugin);
129tool_attribution!(ProxyConfigTool, ToolKind::Plugin);
130tool_attribution!(PushoverTool, ToolKind::Plugin);
131tool_attribution!(ReactionTool, ToolKind::Plugin);
132tool_attribution!(ReportTemplateTool, ToolKind::Plugin);
133tool_attribution!(ScreenshotTool, ToolKind::Plugin);
134tool_attribution!(SessionDeleteTool, ToolKind::Plugin);
135tool_attribution!(SessionResetTool, ToolKind::Plugin);
136tool_attribution!(SessionsCurrentTool, ToolKind::Plugin);
137tool_attribution!(SessionsHistoryTool, ToolKind::Plugin);
138tool_attribution!(SessionsListTool, ToolKind::Plugin);
139tool_attribution!(SessionsSendTool, ToolKind::Plugin);
140tool_attribution!(TextBrowserTool, ToolKind::Plugin);
141tool_attribution!(ToolSearchTool, ToolKind::Search);
142tool_attribution!(WeatherTool, ToolKind::Plugin);
143tool_attribution!(WebFetchTool, ToolKind::FetchUrl);
144tool_attribution!(WebSearchTool, ToolKind::Search);