diff --git a/Cargo.lock b/Cargo.lock index aa58c0591d..53b36fa607 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -704,6 +704,7 @@ dependencies = [ "assistant_tool", "chrono", "collections", + "feature_flags", "futures 0.3.31", "gpui", "html_to_markdown", diff --git a/crates/assistant_tools/Cargo.toml b/crates/assistant_tools/Cargo.toml index 58f48a3717..245a37ef4b 100644 --- a/crates/assistant_tools/Cargo.toml +++ b/crates/assistant_tools/Cargo.toml @@ -16,6 +16,7 @@ anyhow.workspace = true assistant_tool.workspace = true chrono.workspace = true collections.workspace = true +feature_flags.workspace = true futures.workspace = true gpui.workspace = true html_to_markdown.workspace = true diff --git a/crates/assistant_tools/src/assistant_tools.rs b/crates/assistant_tools/src/assistant_tools.rs index adf273798a..33e06466e2 100644 --- a/crates/assistant_tools/src/assistant_tools.rs +++ b/crates/assistant_tools/src/assistant_tools.rs @@ -28,6 +28,7 @@ use std::sync::Arc; use assistant_tool::ToolRegistry; use copy_path_tool::CopyPathTool; +use feature_flags::FeatureFlagAppExt; use gpui::App; use http_client::HttpClientWithUrl; use move_path_tool::MovePathTool; @@ -80,7 +81,17 @@ pub fn init(http_client: Arc, cx: &mut App) { registry.register_tool(SymbolInfoTool); registry.register_tool(TerminalTool); registry.register_tool(ThinkingTool); - registry.register_tool(WebSearchTool); + + cx.observe_flag::({ + move |is_enabled, cx| { + if is_enabled { + ToolRegistry::global(cx).register_tool(WebSearchTool); + } else { + ToolRegistry::global(cx).unregister_tool(WebSearchTool); + } + } + }) + .detach(); } #[cfg(test)]