Detailed changes
@@ -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(()))
@@ -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;
@@ -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()]);
});
});
});
@@ -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()]);
});
});
});
@@ -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 {