agent: Add Burn Mode setting migrator (#31718)

Follow-up https://github.com/zed-industries/zed/pull/31470.

Release Notes:

- N/A
This commit is contained in:
Danilo Leal 2025-05-30 08:10:12 -03:00 committed by GitHub
parent 5462e199fb
commit 9cf6be2057
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 126 additions and 0 deletions

View file

@ -0,0 +1,51 @@
use std::ops::Range;
use tree_sitter::{Query, QueryMatch};
use crate::MigrationPatterns;
use crate::patterns::SETTINGS_NESTED_KEY_VALUE_PATTERN;
pub const SETTINGS_PATTERNS: MigrationPatterns = &[(
SETTINGS_NESTED_KEY_VALUE_PATTERN,
replace_preferred_completion_mode_value,
)];
fn replace_preferred_completion_mode_value(
contents: &str,
mat: &QueryMatch,
query: &Query,
) -> Option<(Range<usize>, String)> {
let parent_object_capture_ix = query.capture_index_for_name("parent_key")?;
let parent_object_range = mat
.nodes_for_capture_index(parent_object_capture_ix)
.next()?
.byte_range();
let parent_object_name = contents.get(parent_object_range.clone())?;
if parent_object_name != "agent" {
return None;
}
let setting_name_capture_ix = query.capture_index_for_name("setting_name")?;
let setting_name_range = mat
.nodes_for_capture_index(setting_name_capture_ix)
.next()?
.byte_range();
let setting_name = contents.get(setting_name_range.clone())?;
if setting_name != "preferred_completion_mode" {
return None;
}
let value_capture_ix = query.capture_index_for_name("setting_value")?;
let value_range = mat
.nodes_for_capture_index(value_capture_ix)
.next()?
.byte_range();
let value = contents.get(value_range.clone())?;
if value.trim() == "\"max\"" {
Some((value_range, "\"burn\"".to_string()))
} else {
None
}
}