summaryrefslogtreecommitdiffhomepage
path: root/packages/tui/internal/app
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-06-13 06:23:12 -0500
committeradamdottv <[email protected]>2025-06-13 06:23:12 -0500
commit97837d2d23195942dbbb15f3c5ed749b1af688aa (patch)
tree1e44aa57f0dbaf73918e6cf2901c07fed6dfd464 /packages/tui/internal/app
parent9abc2a0cf8590b0ff75a441d36bb70351a1f3c92 (diff)
downloadopencode-97837d2d23195942dbbb15f3c5ed749b1af688aa.tar.gz
opencode-97837d2d23195942dbbb15f3c5ed749b1af688aa.zip
wip: refactoring tui
Diffstat (limited to 'packages/tui/internal/app')
-rw-r--r--packages/tui/internal/app/app.go49
1 files changed, 33 insertions, 16 deletions
diff --git a/packages/tui/internal/app/app.go b/packages/tui/internal/app/app.go
index 3917330e3..69900a0bd 100644
--- a/packages/tui/internal/app/app.go
+++ b/packages/tui/internal/app/app.go
@@ -23,7 +23,7 @@ type App struct {
Config *config.Config
Client *client.ClientWithResponses
Provider *client.ProviderInfo
- Model *client.ProviderModel
+ Model *client.ModelInfo
Session *client.SessionInfo
Messages []client.MessageInfo
Status status.Service
@@ -61,20 +61,25 @@ func New(ctx context.Context, version string, httpClient *client.ClientWithRespo
}
providers := []client.ProviderInfo{}
var defaultProvider *client.ProviderInfo
- var defaultModel *client.ProviderModel
-
- for i, provider := range providersResponse.JSON200.Providers {
- if i == 0 || provider.Id == "anthropic" {
- defaultProvider = &providersResponse.JSON200.Providers[i]
- if match, ok := providersResponse.JSON200.Default[provider.Id]; ok {
- model := defaultProvider.Models[match]
- defaultModel = &model
- } else {
- for _, model := range provider.Models {
- defaultModel = &model
- break
- }
- }
+ var defaultModel *client.ModelInfo
+
+ var anthropic *client.ProviderInfo
+ for _, provider := range providersResponse.JSON200.Providers {
+ if provider.Id == "anthropic" {
+ anthropic = &provider
+ }
+ }
+
+ // default to anthropic if available
+ if anthropic != nil {
+ defaultProvider = anthropic
+ defaultModel = getDefaultModel(providersResponse, *anthropic)
+ }
+
+ for _, provider := range providersResponse.JSON200.Providers {
+ if defaultProvider == nil || defaultModel == nil {
+ defaultProvider = &provider
+ defaultModel = getDefaultModel(providersResponse, provider)
}
providers = append(providers, provider)
}
@@ -91,7 +96,7 @@ func New(ctx context.Context, version string, httpClient *client.ClientWithRespo
}
var currentProvider *client.ProviderInfo
- var currentModel *client.ProviderModel
+ var currentModel *client.ModelInfo
for _, provider := range providers {
if provider.Id == appConfig.Provider {
currentProvider = &provider
@@ -121,6 +126,18 @@ func New(ctx context.Context, version string, httpClient *client.ClientWithRespo
return app, nil
}
+func getDefaultModel(response *client.PostProviderListResponse, provider client.ProviderInfo) *client.ModelInfo {
+ if match, ok := response.JSON200.Default[provider.Id]; ok {
+ model := provider.Models[match]
+ return &model
+ } else {
+ for _, model := range provider.Models {
+ return &model
+ }
+ }
+ return nil
+}
+
type Attachment struct {
FilePath string
FileName string