summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-06-19 13:56:02 -0500
committeradamdottv <[email protected]>2025-06-19 13:56:09 -0500
commit72108c02964f1e1309e5192e081f44643f3a0c17 (patch)
tree9415f91d3f63d7664576830f76f85cb14130f79a
parentec1c9f8cd14e2359816dbe0a9003e244023a0b53 (diff)
downloadopencode-72108c02964f1e1309e5192e081f44643f3a0c17.tar.gz
opencode-72108c02964f1e1309e5192e081f44643f3a0c17.zip
fix(tui): sorted tool arg maps
-rw-r--r--packages/tui/internal/components/chat/message.go15
-rw-r--r--packages/tui/internal/tui/tui.go13
2 files changed, 22 insertions, 6 deletions
diff --git a/packages/tui/internal/components/chat/message.go b/packages/tui/internal/components/chat/message.go
index 0176e49b6..3fa013e3b 100644
--- a/packages/tui/internal/components/chat/message.go
+++ b/packages/tui/internal/components/chat/message.go
@@ -305,14 +305,15 @@ func renderToolInvocation(
toolArgsMap := make(map[string]any)
if toolCall.Args != nil {
value := *toolCall.Args
- m, ok := value.(map[string]any)
- if ok {
+ if m, ok := value.(map[string]any); ok {
toolArgsMap = m
+
firstKey := ""
for key := range toolArgsMap {
firstKey = key
break
}
+
toolArgs = renderArgs(&toolArgsMap, firstKey)
}
}
@@ -589,9 +590,17 @@ func renderArgs(args *map[string]any, titleKey string) string {
if args == nil || len(*args) == 0 {
return ""
}
+
+ keys := make([]string, 0, len(*args))
+ for key := range *args {
+ keys = append(keys, key)
+ }
+ slices.Sort(keys)
+
title := ""
parts := []string{}
- for key, value := range *args {
+ for _, key := range keys {
+ value := (*args)[key]
if value == nil {
continue
}
diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go
index 084ee3c1b..7dc0737e0 100644
--- a/packages/tui/internal/tui/tui.go
+++ b/packages/tui/internal/tui/tui.go
@@ -229,6 +229,12 @@ func (a appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
a.app.Messages = append(a.app.Messages, msg.Properties.Info)
}
}
+ case client.EventSessionError:
+ unknownError, err := msg.Properties.Error.AsUnknownError()
+ if err == nil {
+ slog.Error("Server error", "name", unknownError.Name, "message", unknownError.Data.Message)
+ return a, toast.NewErrorToast(unknownError.Data.Message, toast.WithTitle(unknownError.Name))
+ }
case tea.WindowSizeMsg:
msg.Height -= 2 // Make space for the status bar
a.width, a.height = msg.Width, msg.Height
@@ -243,12 +249,13 @@ func (a appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
}
a.layout.SetSize(a.width, a.height)
case app.SessionSelectedMsg:
- var err error
- a.app.Session = msg
- a.app.Messages, err = a.app.ListMessages(context.Background(), msg.Id)
+ messages, err := a.app.ListMessages(context.Background(), msg.Id)
if err != nil {
slog.Error("Failed to list messages", "error", err)
+ return a, toast.NewErrorToast("Failed to open session")
}
+ a.app.Session = msg
+ a.app.Messages = messages
case app.ModelSelectedMsg:
a.app.Provider = &msg.Provider
a.app.Model = &msg.Model