diff options
| author | adamdottv <[email protected]> | 2025-06-04 13:52:23 -0500 |
|---|---|---|
| committer | adamdottv <[email protected]> | 2025-06-04 13:52:23 -0500 |
| commit | 093e64eb54b0340442a8b1d73a4e7c769f3c275c (patch) | |
| tree | 04b18060e22cc1354833133c305d1c7ddc604a65 /packages/tui/internal/components | |
| parent | f34a3b6f67ff3cf255a0a9e547da31fa0b5b8912 (diff) | |
| download | opencode-093e64eb54b0340442a8b1d73a4e7c769f3c275c.tar.gz opencode-093e64eb54b0340442a8b1d73a4e7c769f3c275c.zip | |
wip: refactoring tui
Diffstat (limited to 'packages/tui/internal/components')
| -rw-r--r-- | packages/tui/internal/components/chat/editor.go | 8 | ||||
| -rw-r--r-- | packages/tui/internal/components/chat/message.go | 8 | ||||
| -rw-r--r-- | packages/tui/internal/components/chat/messages.go | 50 |
3 files changed, 34 insertions, 32 deletions
diff --git a/packages/tui/internal/components/chat/editor.go b/packages/tui/internal/components/chat/editor.go index bf5c5875e..305365a25 100644 --- a/packages/tui/internal/components/chat/editor.go +++ b/packages/tui/internal/components/chat/editor.go @@ -211,10 +211,10 @@ func (m *editorCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return m, nil } if key.Matches(msg, editorMaps.OpenEditor) { - // if m.app.PrimaryAgentOLD.IsSessionBusy(m.app.CurrentSessionOLD.ID) { - // status.Warn("Agent is working, please wait...") - // return m, nil - // } + if m.app.IsBusy() { + status.Warn("Agent is working, please wait...") + return m, nil + } value := m.textarea.Value() m.textarea.Reset() return m, m.openEditor(value) diff --git a/packages/tui/internal/components/chat/message.go b/packages/tui/internal/components/chat/message.go index cfed8f339..d811ce7aa 100644 --- a/packages/tui/internal/components/chat/message.go +++ b/packages/tui/internal/components/chat/message.go @@ -93,6 +93,7 @@ func renderAssistantMessage( msg client.MessageInfo, width int, showToolMessages bool, + appInfo client.AppInfo, ) string { t := theme.CurrentTheme() style := styles.BaseStyle(). @@ -144,7 +145,7 @@ func renderAssistantMessage( if _, ok := msg.Metadata.Tool[toolCall.ToolCallId]; ok { metadata = msg.Metadata.Tool[toolCall.ToolCallId].(map[string]any) } - message := renderToolInvocation(toolCall, result, metadata, width) + message := renderToolInvocation(toolCall, result, metadata, appInfo, width) messages = append(messages, message) } } @@ -152,7 +153,7 @@ func renderAssistantMessage( return strings.Join(messages, "\n\n") } -func renderToolInvocation(toolCall client.MessageToolInvocationToolCall, result *string, metadata map[string]any, width int) string { +func renderToolInvocation(toolCall client.MessageToolInvocationToolCall, result *string, metadata map[string]any, appInfo client.AppInfo, width int) string { t := theme.CurrentTheme() style := styles.BaseStyle(). BorderLeft(true). @@ -176,6 +177,7 @@ func renderToolInvocation(toolCall client.MessageToolInvocationToolCall, result if toolCall.ToolName == "opencode_edit" { filename := toolMap["filePath"].(string) + filename = strings.TrimPrefix(filename, appInfo.Path.Root+"/") title = styles.Padded().Render(fmt.Sprintf("%s: %s", toolName, filename)) if finished && metadata["diff"] != nil { patch := metadata["diff"].(string) @@ -189,6 +191,8 @@ func renderToolInvocation(toolCall client.MessageToolInvocationToolCall, result )) } else if toolCall.ToolName == "opencode_read" { filename := toolMap["filePath"].(string) + filename = strings.TrimPrefix(filename, appInfo.Path.Root+"/") + title = styles.Padded().Render(fmt.Sprintf("%s: %s", toolName, filename)) ext := filepath.Ext(filename) if ext == "" { ext = "" diff --git a/packages/tui/internal/components/chat/messages.go b/packages/tui/internal/components/chat/messages.go index e18b6d153..202f7adb6 100644 --- a/packages/tui/internal/components/chat/messages.go +++ b/packages/tui/internal/components/chat/messages.go @@ -108,7 +108,7 @@ func (m *messagesCmp) renderView() { content := renderUserMessage(m.app.Info.User, msg, m.width) messages = append(messages, content+"\n") case client.Assistant: - content := renderAssistantMessage(msg, m.width, m.showToolMessages) + content := renderAssistantMessage(msg, m.width, m.showToolMessages, *m.app.Info) messages = append(messages, content+"\n") } } @@ -215,9 +215,7 @@ func (m *messagesCmp) working() string { baseStyle := styles.BaseStyle() task := "" - - lastMessage := m.app.Messages[len(m.app.Messages)-1] - if lastMessage.Metadata.Time.Completed == nil { + if m.app.IsBusy() { task = "Working..." } // lastMessage := m.app.Messages[len(m.app.Messages)-1] @@ -245,28 +243,28 @@ func (m *messagesCmp) help() string { text := "" - // if m.app.PrimaryAgentOLD.IsBusy() { - // text += lipgloss.JoinHorizontal( - // lipgloss.Left, - // baseStyle.Foreground(t.TextMuted()).Bold(true).Render("press "), - // baseStyle.Foreground(t.Text()).Bold(true).Render("esc"), - // baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" to interrupt"), - // ) - // } else { - text += lipgloss.JoinHorizontal( - lipgloss.Left, - baseStyle.Foreground(t.Text()).Bold(true).Render("enter"), - baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" to send,"), - baseStyle.Foreground(t.Text()).Bold(true).Render(" \\"), - baseStyle.Foreground(t.TextMuted()).Bold(true).Render("+"), - baseStyle.Foreground(t.Text()).Bold(true).Render("enter"), - baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" for newline,"), - baseStyle.Foreground(t.Text()).Bold(true).Render(" ↑↓"), - baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" for history,"), - baseStyle.Foreground(t.Text()).Bold(true).Render(" ctrl+h"), - baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" to toggle tool messages"), - ) - // } + if m.app.IsBusy() { + text += lipgloss.JoinHorizontal( + lipgloss.Left, + baseStyle.Foreground(t.TextMuted()).Bold(true).Render("press "), + baseStyle.Foreground(t.Text()).Bold(true).Render("esc"), + baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" to interrupt"), + ) + } else { + text += lipgloss.JoinHorizontal( + lipgloss.Left, + baseStyle.Foreground(t.Text()).Bold(true).Render("enter"), + baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" to send,"), + baseStyle.Foreground(t.Text()).Bold(true).Render(" \\"), + baseStyle.Foreground(t.TextMuted()).Bold(true).Render("+"), + baseStyle.Foreground(t.Text()).Bold(true).Render("enter"), + baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" for newline,"), + baseStyle.Foreground(t.Text()).Bold(true).Render(" ↑↓"), + baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" for history,"), + baseStyle.Foreground(t.Text()).Bold(true).Render(" ctrl+h"), + baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" to toggle tool messages"), + ) + } return baseStyle. Width(m.width). Render(text) |
