Skip to repository content

tenant.openagents/omega

No repository description is available.

OpenAgents Git authority 2026-07-28T06:57:34.492Z Public web read
NIP-34 coordinate30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omega
MaintainersHidden in public view
References2 branches · 1 tag
Read-only clonegit clone https://openagents.com/git/tenant.openagents/omega.git
Browse files

settings.rs

102 lines · 3.3 KB · rust
1use collections::HashMap;
2use std::{ops::Range, sync::LazyLock};
3use tree_sitter::{Query, QueryMatch};
4
5use crate::MigrationPatterns;
6use crate::patterns::{
7    SETTINGS_LANGUAGES_PATTERN, SETTINGS_NESTED_KEY_VALUE_PATTERN, SETTINGS_ROOT_KEY_VALUE_PATTERN,
8};
9
10pub const SETTINGS_PATTERNS: MigrationPatterns = &[
11    (SETTINGS_ROOT_KEY_VALUE_PATTERN, replace_setting_name),
12    (
13        SETTINGS_NESTED_KEY_VALUE_PATTERN,
14        replace_edit_prediction_provider_setting,
15    ),
16    (SETTINGS_LANGUAGES_PATTERN, replace_setting_in_languages),
17];
18
19fn replace_setting_name(
20    contents: &str,
21    mat: &QueryMatch,
22    query: &Query,
23) -> Option<(Range<usize>, String)> {
24    let setting_capture_ix = query.capture_index_for_name("name")?;
25    let setting_name_range = mat
26        .nodes_for_capture_index(setting_capture_ix)
27        .next()?
28        .byte_range();
29    let setting_name = contents.get(setting_name_range.clone())?;
30    let new_setting_name = SETTINGS_STRING_REPLACE.get(&setting_name)?;
31    Some((setting_name_range, new_setting_name.to_string()))
32}
33
34pub static SETTINGS_STRING_REPLACE: LazyLock<HashMap<&'static str, &'static str>> =
35    LazyLock::new(|| {
36        HashMap::from_iter([
37            (
38                "show_inline_completions_in_menu",
39                "show_edit_predictions_in_menu",
40            ),
41            ("show_inline_completions", "show_edit_predictions"),
42            (
43                "inline_completions_disabled_in",
44                "edit_predictions_disabled_in",
45            ),
46            ("inline_completions", "edit_predictions"),
47        ])
48    });
49
50pub fn replace_edit_prediction_provider_setting(
51    contents: &str,
52    mat: &QueryMatch,
53    query: &Query,
54) -> Option<(Range<usize>, String)> {
55    let parent_object_capture_ix = query.capture_index_for_name("parent_key")?;
56    let parent_object_range = mat
57        .nodes_for_capture_index(parent_object_capture_ix)
58        .next()?
59        .byte_range();
60    let parent_object_name = contents.get(parent_object_range)?;
61
62    let setting_name_ix = query.capture_index_for_name("setting_name")?;
63    let setting_range = mat
64        .nodes_for_capture_index(setting_name_ix)
65        .next()?
66        .byte_range();
67    let setting_name = contents.get(setting_range.clone())?;
68
69    if parent_object_name == "features" && setting_name == "inline_completion_provider" {
70        return Some((setting_range, "edit_prediction_provider".into()));
71    }
72
73    None
74}
75
76fn replace_setting_in_languages(
77    contents: &str,
78    mat: &QueryMatch,
79    query: &Query,
80) -> Option<(Range<usize>, String)> {
81    let setting_capture_ix = query.capture_index_for_name("setting_name")?;
82    let setting_name_range = mat
83        .nodes_for_capture_index(setting_capture_ix)
84        .next()?
85        .byte_range();
86    let setting_name = contents.get(setting_name_range.clone())?;
87    let new_setting_name = LANGUAGE_SETTINGS_REPLACE.get(&setting_name)?;
88
89    Some((setting_name_range, new_setting_name.to_string()))
90}
91
92static LANGUAGE_SETTINGS_REPLACE: LazyLock<HashMap<&'static str, &'static str>> =
93    LazyLock::new(|| {
94        HashMap::from_iter([
95            ("show_inline_completions", "show_edit_predictions"),
96            (
97                "inline_completions_disabled_in",
98                "edit_predictions_disabled_in",
99            ),
100        ])
101    });
102
Served at tenant.openagents/omega Member data and write actions are omitted.