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:
parent
5462e199fb
commit
9cf6be2057
3 changed files with 126 additions and 0 deletions
|
@ -69,3 +69,9 @@ pub(crate) mod m_2025_05_08 {
|
||||||
|
|
||||||
pub(crate) use settings::SETTINGS_PATTERNS;
|
pub(crate) use settings::SETTINGS_PATTERNS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) mod m_2025_05_29 {
|
||||||
|
mod settings;
|
||||||
|
|
||||||
|
pub(crate) use settings::SETTINGS_PATTERNS;
|
||||||
|
}
|
||||||
|
|
51
crates/migrator/src/migrations/m_2025_05_29/settings.rs
Normal file
51
crates/migrator/src/migrations/m_2025_05_29/settings.rs
Normal 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
|
||||||
|
}
|
||||||
|
}
|
|
@ -144,6 +144,10 @@ pub fn migrate_settings(text: &str) -> Result<Option<String>> {
|
||||||
migrations::m_2025_05_08::SETTINGS_PATTERNS,
|
migrations::m_2025_05_08::SETTINGS_PATTERNS,
|
||||||
&SETTINGS_QUERY_2025_05_08,
|
&SETTINGS_QUERY_2025_05_08,
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
migrations::m_2025_05_29::SETTINGS_PATTERNS,
|
||||||
|
&SETTINGS_QUERY_2025_05_29,
|
||||||
|
),
|
||||||
];
|
];
|
||||||
run_migrations(text, migrations)
|
run_migrations(text, migrations)
|
||||||
}
|
}
|
||||||
|
@ -238,6 +242,10 @@ define_query!(
|
||||||
SETTINGS_QUERY_2025_05_08,
|
SETTINGS_QUERY_2025_05_08,
|
||||||
migrations::m_2025_05_08::SETTINGS_PATTERNS
|
migrations::m_2025_05_08::SETTINGS_PATTERNS
|
||||||
);
|
);
|
||||||
|
define_query!(
|
||||||
|
SETTINGS_QUERY_2025_05_29,
|
||||||
|
migrations::m_2025_05_29::SETTINGS_PATTERNS
|
||||||
|
);
|
||||||
|
|
||||||
// custom query
|
// custom query
|
||||||
static EDIT_PREDICTION_SETTINGS_MIGRATION_QUERY: LazyLock<Query> = LazyLock::new(|| {
|
static EDIT_PREDICTION_SETTINGS_MIGRATION_QUERY: LazyLock<Query> = LazyLock::new(|| {
|
||||||
|
@ -785,4 +793,65 @@ mod tests {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_preferred_completion_mode_migration() {
|
||||||
|
assert_migrate_settings(
|
||||||
|
r#"{
|
||||||
|
"agent": {
|
||||||
|
"preferred_completion_mode": "max",
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
}"#,
|
||||||
|
Some(
|
||||||
|
r#"{
|
||||||
|
"agent": {
|
||||||
|
"preferred_completion_mode": "burn",
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
}"#,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_migrate_settings(
|
||||||
|
r#"{
|
||||||
|
"agent": {
|
||||||
|
"preferred_completion_mode": "normal",
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
}"#,
|
||||||
|
None,
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_migrate_settings(
|
||||||
|
r#"{
|
||||||
|
"agent": {
|
||||||
|
"preferred_completion_mode": "burn",
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
}"#,
|
||||||
|
None,
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_migrate_settings(
|
||||||
|
r#"{
|
||||||
|
"other_section": {
|
||||||
|
"preferred_completion_mode": "max"
|
||||||
|
},
|
||||||
|
"agent": {
|
||||||
|
"preferred_completion_mode": "max"
|
||||||
|
}
|
||||||
|
}"#,
|
||||||
|
Some(
|
||||||
|
r#"{
|
||||||
|
"other_section": {
|
||||||
|
"preferred_completion_mode": "max"
|
||||||
|
},
|
||||||
|
"agent": {
|
||||||
|
"preferred_completion_mode": "burn"
|
||||||
|
}
|
||||||
|
}"#,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue