diff --git a/crates/chat-cli/src/cli/chat/cli/experiment.rs b/crates/chat-cli/src/cli/chat/cli/experiment.rs index 9b7c3a8cd2..ef84aad10b 100644 --- a/crates/chat-cli/src/cli/chat/cli/experiment.rs +++ b/crates/chat-cli/src/cli/chat/cli/experiment.rs @@ -12,7 +12,6 @@ use crossterm::{ }; use dialoguer::Select; -use crate::cli::chat::conversation::format_tool_spec; use crate::cli::chat::{ ChatError, ChatSession, @@ -163,16 +162,13 @@ async fn select_experiment(os: &mut Os, session: &mut ChatSession) -> Result Result<(), ChatError> { + let builtin_tools = self + .tool_manager + .load_tools(os, stderr) + .await + .map_err(|e| ChatError::Custom(format!("Failed to reload built-in tools: {e}").into()))?; + + // Remove existing built-in tools and add updated ones, preserving MCP tools + self.tools.retain(|origin, _| *origin != ToolOrigin::Native); + self.tools.extend(format_tool_spec(builtin_tools)); + + Ok(()) + } + /// Swapping agent involves the following: /// - Reinstantiate the context manager /// - Swap agent on tool manager