From e2b9fa409b9b34de167d88c4f1ee82ae968f5309 Mon Sep 17 00:00:00 2001 From: Aavash Shrestha Date: Tue, 25 Mar 2025 16:18:09 +0200 Subject: [PATCH] also ask for llm model on settings --- internal/config/config.go | 2 +- internal/ui/components/settings.go | 28 +++++++++++++++++++++++++--- internal/ui/handlers.go | 1 + 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/internal/config/config.go b/internal/config/config.go index c688faf..855e3ae 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -11,7 +11,7 @@ import ( const ( appConfigDir = "aavshr-panda" // to not have name conflicts with other apps configFileName = "config.json" - defaultModel = "gpt-4o-mini" + defaultModel = "o3-mini" ) var ( diff --git a/internal/ui/components/settings.go b/internal/ui/components/settings.go index f32dcb8..e5ae019 100644 --- a/internal/ui/components/settings.go +++ b/internal/ui/components/settings.go @@ -7,12 +7,22 @@ import ( tea "github.com/charmbracelet/bubbletea" ) +type SettingsMode int + +const ( + SettingsModeAPIKey SettingsMode = iota + SettingsModeLLMModel +) + type SettingsSubmitMsg struct { - APIKey string + APIKey string + LLMModel string } type SettingsModel struct { inner textinput.Model + mode SettingsMode + msg SettingsSubmitMsg } func SettingsSubmitCmd(msg SettingsSubmitMsg) tea.Cmd { @@ -24,7 +34,10 @@ func SettingsSubmitCmd(msg SettingsSubmitMsg) tea.Cmd { func NewSettingsModel() SettingsModel { inner := textinput.New() inner.Placeholder = "Enter your API key..." - return SettingsModel{inner: inner} + return SettingsModel{ + inner: inner, + mode: SettingsModeAPIKey, + } } func (m *SettingsModel) Focus() tea.Cmd { @@ -49,7 +62,16 @@ func (m *SettingsModel) Update(msg interface{}) (SettingsModel, tea.Cmd) { case tea.KeyEnter: value := strings.TrimSpace(m.inner.Value()) if value != "" { - return *m, SettingsSubmitCmd(SettingsSubmitMsg{APIKey: m.inner.Value()}) + if m.mode == SettingsModeAPIKey { + m.mode = SettingsModeLLMModel + m.inner.Placeholder = "Enter your LLM model (default o3-mini)..." + m.msg.APIKey = value + m.inner.SetValue("") + m.View() + } else { + m.msg.LLMModel = value + return *m, SettingsSubmitCmd(m.msg) + } } case tea.KeyEscape, tea.KeyCtrlC, tea.KeyCtrlD: return *m, tea.Quit diff --git a/internal/ui/handlers.go b/internal/ui/handlers.go index 5e371c5..449b27b 100644 --- a/internal/ui/handlers.go +++ b/internal/ui/handlers.go @@ -101,6 +101,7 @@ func (m *Model) createNewThread(name string) (*db.Thread, error) { func (m *Model) handleSettingsSubmitMsg(msg components.SettingsSubmitMsg) tea.Cmd { savedConfig, err := config.Save(config.Config{ LLMAPIKey: msg.APIKey, + LLMModel: msg.LLMModel, }) if err != nil { return m.cmdError(fmt.Errorf("config.Save: %w", err))