diff options
| author | Dax Raad <[email protected]> | 2025-06-05 14:59:07 -0400 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-06-05 14:59:16 -0400 |
| commit | db2bb32bcf0c3fdc8ede5530946e85a852448679 (patch) | |
| tree | 31f81b89cd8ed7b642a09e25fcb0a2a4b1c0e6bb /packages/tui/internal/components | |
| parent | 1384a5e3e69522001571980f147a5aa0d985f895 (diff) | |
| download | opencode-db2bb32bcf0c3fdc8ede5530946e85a852448679.tar.gz opencode-db2bb32bcf0c3fdc8ede5530946e85a852448679.zip | |
integrate with models.dev
Diffstat (limited to 'packages/tui/internal/components')
| -rw-r--r-- | packages/tui/internal/components/core/status.go | 4 | ||||
| -rw-r--r-- | packages/tui/internal/components/dialog/models.go | 17 |
2 files changed, 16 insertions, 5 deletions
diff --git a/packages/tui/internal/components/core/status.go b/packages/tui/internal/components/core/status.go index b631ce766..5c3e5eb3c 100644 --- a/packages/tui/internal/components/core/status.go +++ b/packages/tui/internal/components/core/status.go @@ -7,9 +7,9 @@ import ( tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/lipgloss" + "github.com/sst/opencode/internal/app" "github.com/sst/opencode/internal/pubsub" "github.com/sst/opencode/internal/status" - "github.com/sst/opencode/internal/app" "github.com/sst/opencode/internal/styles" "github.com/sst/opencode/internal/theme" ) @@ -145,7 +145,7 @@ func (m statusCmp) View() string { if m.app.Session.Id != "" { tokens := float32(0) cost := float32(0) - contextWindow := m.app.Model.ContextWindow + contextWindow := m.app.Model.Limit.Context for _, message := range m.app.Messages { if message.Metadata.Assistant != nil { diff --git a/packages/tui/internal/components/dialog/models.go b/packages/tui/internal/components/dialog/models.go index a9dcb6f6c..5d0ee772b 100644 --- a/packages/tui/internal/components/dialog/models.go +++ b/packages/tui/internal/components/dialog/models.go @@ -3,6 +3,9 @@ package dialog import ( "context" "fmt" + "maps" + "slices" + "strings" "github.com/charmbracelet/bubbles/key" tea "github.com/charmbracelet/bubbletea" @@ -38,7 +41,6 @@ type modelDialogCmp struct { app *app.App availableProviders []client.ProviderInfo provider client.ProviderInfo - model *client.ProviderModel selectedIdx int width int @@ -144,7 +146,8 @@ func (m *modelDialogCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.switchProvider(1) } case key.Matches(msg, modelKeys.Enter): - return m, util.CmdHandler(CloseModelDialogMsg{Provider: &m.provider, Model: &m.provider.Models[m.selectedIdx]}) + models := m.models() + return m, util.CmdHandler(CloseModelDialogMsg{Provider: &m.provider, Model: &models[m.selectedIdx]}) case key.Matches(msg, modelKeys.Escape): return m, util.CmdHandler(CloseModelDialogMsg{}) } @@ -156,6 +159,13 @@ func (m *modelDialogCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return m, nil } +func (m *modelDialogCmp) models() []client.ProviderModel { + models := slices.SortedFunc(maps.Values(m.provider.Models), func(a, b client.ProviderModel) int { + return strings.Compare(*a.Name, *b.Name) + }) + return models +} + // moveSelectionUp moves the selection up or wraps to bottom func (m *modelDialogCmp) moveSelectionUp() { if m.selectedIdx > 0 { @@ -218,13 +228,14 @@ func (m *modelDialogCmp) View() string { endIdx := min(m.scrollOffset+numVisibleModels, len(m.provider.Models)) modelItems := make([]string, 0, endIdx-m.scrollOffset) + models := m.models() for i := m.scrollOffset; i < endIdx; i++ { itemStyle := baseStyle.Width(maxDialogWidth) if i == m.selectedIdx { itemStyle = itemStyle.Background(t.Primary()). Foreground(t.Background()).Bold(true) } - modelItems = append(modelItems, itemStyle.Render(*m.provider.Models[i].Name)) + modelItems = append(modelItems, itemStyle.Render(*models[i].Name)) } scrollIndicator := m.getScrollIndicators(maxDialogWidth) |
