agent2

Conrad Irwin created

Change summary

crates/agent2/src/agent.rs                                        | 12 
crates/agent2/src/tools/grep_tool.rs                              |  2 
crates/agent2/src/tools/list_directory_tool.rs                    |  8 
crates/agent2/src/tools/read_file_tool.rs                         | 13 
crates/agent_ui/src/agent_configuration/add_llm_provider_modal.rs |  1 
5 files changed, 22 insertions(+), 14 deletions(-)

Detailed changes

crates/agent2/src/agent.rs 🔗

@@ -20,7 +20,7 @@ use project::{Project, ProjectItem, ProjectPath, Worktree};
 use prompt_store::{
     ProjectContext, PromptId, PromptStore, RulesFileContext, UserRulesContext, WorktreeContext,
 };
-use settings::update_settings_file;
+use settings::{LanguageModelSelection, update_settings_file};
 use std::any::Any;
 use std::collections::HashMap;
 use std::path::{Path, PathBuf};
@@ -873,7 +873,15 @@ impl AgentModelSelector for NativeAgentConnection {
         });
 
         update_settings_file(self.0.read(cx).fs.clone(), cx, move |settings, _cx| {
-            settings.agent.get_or_insert_default().set_model(model);
+            let provider = model.provider_id().0.to_string();
+            let model = model.id().0.to_string();
+            settings
+                .agent
+                .get_or_insert_default()
+                .set_model(LanguageModelSelection {
+                    provider: provider.into(),
+                    model,
+                });
         });
 
         Task::ready(Ok(()))

crates/agent2/src/tools/grep_tool.rs 🔗

@@ -308,7 +308,7 @@ mod tests {
     use super::*;
     use gpui::{TestAppContext, UpdateGlobal};
     use language::{Language, LanguageConfig, LanguageMatcher};
-    use project::{FakeFs, Project, WorktreeSettings};
+    use project::{FakeFs, Project};
     use serde_json::json;
     use settings::SettingsStore;
     use unindent::Unindent;

crates/agent2/src/tools/list_directory_tool.rs 🔗

@@ -214,7 +214,7 @@ mod tests {
     use super::*;
     use gpui::{TestAppContext, UpdateGlobal};
     use indoc::indoc;
-    use project::{FakeFs, Project, WorktreeSettings};
+    use project::{FakeFs, Project};
     use serde_json::json;
     use settings::SettingsStore;
     use util::path;
@@ -565,10 +565,10 @@ mod tests {
         // Set global settings
         cx.update(|cx| {
             SettingsStore::update_global(cx, |store, cx| {
-                store.update_user_settings::<WorktreeSettings>(cx, |settings| {
-                    settings.file_scan_exclusions =
+                store.update_user_settings(cx, |settings| {
+                    settings.project.worktree.file_scan_exclusions =
                         Some(vec!["**/.git".to_string(), "**/node_modules".to_string()]);
-                    settings.private_files = Some(vec!["**/.env".to_string()]);
+                    settings.project.worktree.private_files = Some(vec!["**/.env".to_string()]);
                 });
             });
         });

crates/agent2/src/tools/read_file_tool.rs 🔗

@@ -587,15 +587,14 @@ mod test {
 
         cx.update(|cx| {
             use gpui::UpdateGlobal;
-            use project::WorktreeSettings;
             use settings::SettingsStore;
             SettingsStore::update_global(cx, |store, cx| {
-                store.update_user_settings::<WorktreeSettings>(cx, |settings| {
-                    settings.file_scan_exclusions = Some(vec![
+                store.update_user_settings(cx, |settings| {
+                    settings.project.worktree.file_scan_exclusions = Some(vec![
                         "**/.secretdir".to_string(),
                         "**/.mymetadata".to_string(),
                     ]);
-                    settings.private_files = Some(vec![
+                    settings.project.worktree.private_files = Some(vec![
                         "**/.mysecrets".to_string(),
                         "**/*.privatekey".to_string(),
                         "**/*.mysensitive".to_string(),
@@ -803,10 +802,10 @@ mod test {
         // Set global settings
         cx.update(|cx| {
             SettingsStore::update_global(cx, |store, cx| {
-                store.update_user_settings::<WorktreeSettings>(cx, |settings| {
-                    settings.file_scan_exclusions =
+                store.update_user_settings(cx, |settings| {
+                    settings.project.worktree.file_scan_exclusions =
                         Some(vec!["**/.git".to_string(), "**/node_modules".to_string()]);
-                    settings.private_files = Some(vec!["**/.env".to_string()]);
+                    settings.project.worktree.private_files = Some(vec!["**/.env".to_string()]);
                 });
             });
         });

crates/agent_ui/src/agent_configuration/add_llm_provider_modal.rs 🔗

@@ -239,6 +239,7 @@ fn save_provider_to_settings(
             .map_err(|_| "Failed to write API key to keychain")?;
         cx.update(|cx| {
             update_settings_file::<AllLanguageModelSettings>(fs, cx, |settings, _cx| {
+                settings.language_models.getO
                 settings.openai_compatible.get_or_insert_default().insert(
                     provider_name,
                     OpenAiCompatibleSettingsContent {