summaryrefslogtreecommitdiffhomepage
path: root/packages/tui/internal/components
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-06-04 13:52:23 -0500
committeradamdottv <[email protected]>2025-06-04 13:52:23 -0500
commit093e64eb54b0340442a8b1d73a4e7c769f3c275c (patch)
tree04b18060e22cc1354833133c305d1c7ddc604a65 /packages/tui/internal/components
parentf34a3b6f67ff3cf255a0a9e547da31fa0b5b8912 (diff)
downloadopencode-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.go8
-rw-r--r--packages/tui/internal/components/chat/message.go8
-rw-r--r--packages/tui/internal/components/chat/messages.go50
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)