summaryrefslogtreecommitdiffhomepage
path: root/packages/tui/internal/components
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-06-05 14:59:07 -0400
committerDax Raad <[email protected]>2025-06-05 14:59:16 -0400
commitdb2bb32bcf0c3fdc8ede5530946e85a852448679 (patch)
tree31f81b89cd8ed7b642a09e25fcb0a2a4b1c0e6bb /packages/tui/internal/components
parent1384a5e3e69522001571980f147a5aa0d985f895 (diff)
downloadopencode-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.go4
-rw-r--r--packages/tui/internal/components/dialog/models.go17
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)