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::channel_send::ChannelSendTool;
22use crate::claude_code::ClaudeCodeTool;
23use crate::claude_code_runner::ClaudeCodeRunnerTool;
24use crate::cloud_ops::CloudOpsTool;
25use crate::cloud_patterns::CloudPatternsTool;
26use crate::codex_cli::CodexCliTool;
27use crate::composio::ComposioTool;
28use crate::content_search::ContentSearchTool;
29use crate::data_management::DataManagementTool;
30use crate::discord_search::DiscordSearchTool;
31use crate::escalate::EscalateToHumanTool;
32use crate::file_download::FileDownloadTool;
33use crate::file_edit::FileEditTool;
34use crate::file_upload::FileUploadTool;
35use crate::file_upload_bundle::FileUploadBundleTool;
36use crate::file_write::FileWriteTool;
37use crate::gemini_cli::GeminiCliTool;
38use crate::git_operations::GitOperationsTool;
39use crate::glob_search::GlobSearchTool;
40use crate::google_workspace::GoogleWorkspaceTool;
41use crate::hardware_board_info::HardwareBoardInfoTool;
42use crate::hardware_memory_map::HardwareMemoryMapTool;
43use crate::hardware_memory_read::HardwareMemoryReadTool;
44use crate::http_request::HttpRequestTool;
45use crate::image_gen::ImageGenTool;
46use crate::image_info::ImageInfoTool;
47use crate::jira_tool::JiraTool;
48use crate::knowledge_tool::KnowledgeTool;
49use crate::linkedin::LinkedInTool;
50use crate::llm_task::LlmTaskTool;
51use crate::mcp_tool::McpToolWrapper;
52use crate::memory_export::MemoryExportTool;
53use crate::memory_forget::MemoryForgetTool;
54use crate::memory_purge::MemoryPurgeTool;
55use crate::memory_recall::MemoryRecallTool;
56use crate::memory_store::MemoryStoreTool;
57use crate::microsoft365::Microsoft365Tool;
58use crate::model_routing_config::ModelRoutingConfigTool;
59use crate::notion_tool::NotionTool;
60use crate::opencode_cli::OpenCodeCliTool;
61use crate::pdf_read::PdfReadTool;
62use crate::pipeline::PipelineTool;
63use crate::poll::PollTool;
64use crate::project_intel::ProjectIntelTool;
65use crate::proxy_config::ProxyConfigTool;
66use crate::pushover::PushoverTool;
67use crate::reaction::ReactionTool;
68use crate::report_template_tool::ReportTemplateTool;
69use crate::screenshot::ScreenshotTool;
70use crate::sessions::{
71    SessionDeleteTool, SessionResetTool, SessionsCurrentTool, SessionsHistoryTool,
72    SessionsListTool, SessionsSendTool,
73};
74use crate::text_browser::TextBrowserTool;
75use crate::tool_search::ToolSearchTool;
76use crate::weather_tool::WeatherTool;
77use crate::web_fetch::WebFetchTool;
78use crate::web_search_tool::WebSearchTool;
79
80tool_attribution!(AskUserTool, ToolKind::Wait);
81tool_attribution!(ChannelSendTool, ToolKind::Plugin);
82tool_attribution!(BackupTool, ToolKind::Plugin);
83tool_attribution!(BrowserTool, ToolKind::Plugin);
84tool_attribution!(BrowserDelegateTool, ToolKind::Plugin);
85tool_attribution!(BrowserOpenTool, ToolKind::Plugin);
86tool_attribution!(CalculatorTool, ToolKind::Plugin);
87tool_attribution!(CanvasTool, ToolKind::Plugin);
88tool_attribution!(ClaudeCodeTool, ToolKind::Plugin);
89tool_attribution!(ClaudeCodeRunnerTool, ToolKind::Plugin);
90tool_attribution!(CloudOpsTool, ToolKind::Plugin);
91tool_attribution!(CloudPatternsTool, ToolKind::Plugin);
92tool_attribution!(CodexCliTool, ToolKind::Plugin);
93tool_attribution!(ComposioTool, ToolKind::Plugin);
94tool_attribution!(ContentSearchTool, ToolKind::Search);
95tool_attribution!(DataManagementTool, ToolKind::Plugin);
96tool_attribution!(DiscordSearchTool, ToolKind::Search);
97tool_attribution!(EscalateToHumanTool, ToolKind::Wait);
98tool_attribution!(FileDownloadTool, ToolKind::Plugin);
99tool_attribution!(FileEditTool, ToolKind::Plugin);
100tool_attribution!(FileUploadTool, ToolKind::Plugin);
101tool_attribution!(FileUploadBundleTool, ToolKind::Plugin);
102tool_attribution!(FileWriteTool, ToolKind::Plugin);
103tool_attribution!(GeminiCliTool, ToolKind::Plugin);
104tool_attribution!(GitOperationsTool, ToolKind::Shell);
105tool_attribution!(GlobSearchTool, ToolKind::Search);
106tool_attribution!(GoogleWorkspaceTool, ToolKind::Plugin);
107tool_attribution!(HardwareBoardInfoTool, ToolKind::Plugin);
108tool_attribution!(HardwareMemoryMapTool, ToolKind::Plugin);
109tool_attribution!(HardwareMemoryReadTool, ToolKind::Plugin);
110tool_attribution!(HttpRequestTool, ToolKind::HttpRequest);
111tool_attribution!(ImageGenTool, ToolKind::Plugin);
112tool_attribution!(ImageInfoTool, ToolKind::Plugin);
113tool_attribution!(JiraTool, ToolKind::Plugin);
114tool_attribution!(KnowledgeTool, ToolKind::Plugin);
115tool_attribution!(LinkedInTool, ToolKind::Plugin);
116tool_attribution!(LlmTaskTool, ToolKind::Plugin);
117tool_attribution!(McpToolWrapper, ToolKind::Plugin);
118tool_attribution!(MemoryExportTool, ToolKind::Memory);
119tool_attribution!(MemoryForgetTool, ToolKind::Memory);
120tool_attribution!(MemoryPurgeTool, ToolKind::Memory);
121tool_attribution!(MemoryRecallTool, ToolKind::Memory);
122tool_attribution!(MemoryStoreTool, ToolKind::Memory);
123tool_attribution!(Microsoft365Tool, ToolKind::Plugin);
124tool_attribution!(ModelRoutingConfigTool, ToolKind::Plugin);
125tool_attribution!(NotionTool, ToolKind::Plugin);
126tool_attribution!(OpenCodeCliTool, ToolKind::Plugin);
127tool_attribution!(PdfReadTool, ToolKind::Plugin);
128tool_attribution!(PipelineTool, ToolKind::Plugin);
129tool_attribution!(PollTool, ToolKind::Wait);
130tool_attribution!(ProjectIntelTool, ToolKind::Plugin);
131tool_attribution!(ProxyConfigTool, ToolKind::Plugin);
132tool_attribution!(PushoverTool, ToolKind::Plugin);
133tool_attribution!(ReactionTool, ToolKind::Plugin);
134tool_attribution!(ReportTemplateTool, ToolKind::Plugin);
135tool_attribution!(ScreenshotTool, ToolKind::Plugin);
136tool_attribution!(SessionDeleteTool, ToolKind::Plugin);
137tool_attribution!(SessionResetTool, ToolKind::Plugin);
138tool_attribution!(SessionsCurrentTool, ToolKind::Plugin);
139tool_attribution!(SessionsHistoryTool, ToolKind::Plugin);
140tool_attribution!(SessionsListTool, ToolKind::Plugin);
141tool_attribution!(SessionsSendTool, ToolKind::Plugin);
142tool_attribution!(TextBrowserTool, ToolKind::Plugin);
143tool_attribution!(ToolSearchTool, ToolKind::Search);
144tool_attribution!(WeatherTool, ToolKind::Plugin);
145tool_attribution!(WebFetchTool, ToolKind::FetchUrl);
146tool_attribution!(WebSearchTool, ToolKind::Search);