diff --git a/crates/assistant_tools/src/find_replace_file_tool.rs b/crates/assistant_tools/src/find_replace_file_tool.rs index a637417cfa..725ae746d7 100644 --- a/crates/assistant_tools/src/find_replace_file_tool.rs +++ b/crates/assistant_tools/src/find_replace_file_tool.rs @@ -1,4 +1,4 @@ -use crate::schema::json_schema_for; +use crate::{replace::replace_with_flexible_indent, schema::json_schema_for}; use anyhow::{anyhow, Context as _, Result}; use assistant_tool::{ActionLog, Tool}; use gpui::{App, AppContext, Entity, Task}; @@ -188,7 +188,11 @@ impl Tool for FindReplaceFileTool { let result = cx .background_spawn(async move { - replace_exact(&input.find, &input.replace, &snapshot).await + // Try to match exactly + replace_exact(&input.find, &input.replace, &snapshot) + .await + // If that fails, try being flexible about indentation + .or_else(|| replace_with_flexible_indent(&input.find, &input.replace, &snapshot)) }) .await;