assistant2: Persist model selector changes (#22116)
This PR makes the language model selector in the Assistant2 panel persist the model changes to the settings. Release Notes: - N/A
This commit is contained in:
parent
db2aa0bca5
commit
ccf2a60039
2 changed files with 23 additions and 5 deletions
|
@ -90,7 +90,7 @@ impl AssistantPanel {
|
||||||
Self {
|
Self {
|
||||||
active_view: ActiveView::Thread,
|
active_view: ActiveView::Thread,
|
||||||
workspace: workspace.clone(),
|
workspace: workspace.clone(),
|
||||||
fs,
|
fs: fs.clone(),
|
||||||
language_registry: language_registry.clone(),
|
language_registry: language_registry.clone(),
|
||||||
thread_store: thread_store.clone(),
|
thread_store: thread_store.clone(),
|
||||||
thread: cx.new_view(|cx| {
|
thread: cx.new_view(|cx| {
|
||||||
|
@ -103,7 +103,13 @@ impl AssistantPanel {
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
message_editor: cx.new_view(|cx| {
|
message_editor: cx.new_view(|cx| {
|
||||||
MessageEditor::new(workspace, thread_store.downgrade(), thread.clone(), cx)
|
MessageEditor::new(
|
||||||
|
fs.clone(),
|
||||||
|
workspace,
|
||||||
|
thread_store.downgrade(),
|
||||||
|
thread.clone(),
|
||||||
|
cx,
|
||||||
|
)
|
||||||
}),
|
}),
|
||||||
tools,
|
tools,
|
||||||
local_timezone: UtcOffset::from_whole_seconds(
|
local_timezone: UtcOffset::from_whole_seconds(
|
||||||
|
@ -141,6 +147,7 @@ impl AssistantPanel {
|
||||||
});
|
});
|
||||||
self.message_editor = cx.new_view(|cx| {
|
self.message_editor = cx.new_view(|cx| {
|
||||||
MessageEditor::new(
|
MessageEditor::new(
|
||||||
|
self.fs.clone(),
|
||||||
self.workspace.clone(),
|
self.workspace.clone(),
|
||||||
self.thread_store.downgrade(),
|
self.thread_store.downgrade(),
|
||||||
thread,
|
thread,
|
||||||
|
@ -170,6 +177,7 @@ impl AssistantPanel {
|
||||||
});
|
});
|
||||||
self.message_editor = cx.new_view(|cx| {
|
self.message_editor = cx.new_view(|cx| {
|
||||||
MessageEditor::new(
|
MessageEditor::new(
|
||||||
|
self.fs.clone(),
|
||||||
self.workspace.clone(),
|
self.workspace.clone(),
|
||||||
self.thread_store.downgrade(),
|
self.thread_store.downgrade(),
|
||||||
thread,
|
thread,
|
||||||
|
|
|
@ -1,12 +1,16 @@
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
use editor::{Editor, EditorElement, EditorStyle};
|
use editor::{Editor, EditorElement, EditorStyle};
|
||||||
|
use fs::Fs;
|
||||||
use gpui::{AppContext, FocusableView, Model, TextStyle, View, WeakModel, WeakView};
|
use gpui::{AppContext, FocusableView, Model, TextStyle, View, WeakModel, WeakView};
|
||||||
use language_model::{LanguageModelRegistry, LanguageModelRequestTool};
|
use language_model::{LanguageModelRegistry, LanguageModelRequestTool};
|
||||||
use language_model_selector::{LanguageModelSelector, LanguageModelSelectorPopoverMenu};
|
use language_model_selector::{LanguageModelSelector, LanguageModelSelectorPopoverMenu};
|
||||||
use settings::Settings;
|
use settings::{update_settings_file, Settings};
|
||||||
use theme::ThemeSettings;
|
use theme::ThemeSettings;
|
||||||
use ui::{prelude::*, ButtonLike, CheckboxWithLabel, ElevationIndex, KeyBinding, Tooltip};
|
use ui::{prelude::*, ButtonLike, CheckboxWithLabel, ElevationIndex, KeyBinding, Tooltip};
|
||||||
use workspace::Workspace;
|
use workspace::Workspace;
|
||||||
|
|
||||||
|
use crate::assistant_settings::AssistantSettings;
|
||||||
use crate::context_store::ContextStore;
|
use crate::context_store::ContextStore;
|
||||||
use crate::context_strip::ContextStrip;
|
use crate::context_strip::ContextStrip;
|
||||||
use crate::thread::{RequestKind, Thread};
|
use crate::thread::{RequestKind, Thread};
|
||||||
|
@ -24,6 +28,7 @@ pub struct MessageEditor {
|
||||||
|
|
||||||
impl MessageEditor {
|
impl MessageEditor {
|
||||||
pub fn new(
|
pub fn new(
|
||||||
|
fs: Arc<dyn Fs>,
|
||||||
workspace: WeakView<Workspace>,
|
workspace: WeakView<Workspace>,
|
||||||
thread_store: WeakModel<ThreadStore>,
|
thread_store: WeakModel<ThreadStore>,
|
||||||
thread: Model<Thread>,
|
thread: Model<Thread>,
|
||||||
|
@ -50,9 +55,14 @@ impl MessageEditor {
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
language_model_selector: cx.new_view(|cx| {
|
language_model_selector: cx.new_view(|cx| {
|
||||||
|
let fs = fs.clone();
|
||||||
LanguageModelSelector::new(
|
LanguageModelSelector::new(
|
||||||
|model, _cx| {
|
move |model, cx| {
|
||||||
println!("Selected {:?}", model.name());
|
update_settings_file::<AssistantSettings>(
|
||||||
|
fs.clone(),
|
||||||
|
cx,
|
||||||
|
move |settings, _cx| settings.set_model(model.clone()),
|
||||||
|
);
|
||||||
},
|
},
|
||||||
cx,
|
cx,
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue