summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-05-05 11:25:34 -0500
committeradamdottv <[email protected]>2025-05-05 11:25:34 -0500
commitefaba6c5b8aed4aab620d9633d4335eaeed32be0 (patch)
tree7c62e01a77b7c74cbcfd9549ac8f9e0fd1df3629
parent874715838af25915061048ac20ea536363d62fb7 (diff)
downloadopencode-efaba6c5b8aed4aab620d9633d4335eaeed32be0.tar.gz
opencode-efaba6c5b8aed4aab620d9633d4335eaeed32be0.zip
feat: hide tool calls
-rw-r--r--internal/tui/components/chat/list.go47
-rw-r--r--internal/tui/components/chat/message.go30
-rw-r--r--internal/tui/page/chat.go11
3 files changed, 56 insertions, 32 deletions
diff --git a/internal/tui/components/chat/list.go b/internal/tui/components/chat/list.go
index e08a103ea..83538eb3b 100644
--- a/internal/tui/components/chat/list.go
+++ b/internal/tui/components/chat/list.go
@@ -26,19 +26,21 @@ type cacheItem struct {
content []uiMessage
}
type messagesCmp struct {
- app *app.App
- width, height int
- viewport viewport.Model
- session session.Session
- messages []message.Message
- uiMessages []uiMessage
- currentMsgID string
- cachedContent map[string]cacheItem
- spinner spinner.Model
- rendering bool
- attachments viewport.Model
+ app *app.App
+ width, height int
+ viewport viewport.Model
+ session session.Session
+ messages []message.Message
+ uiMessages []uiMessage
+ currentMsgID string
+ cachedContent map[string]cacheItem
+ spinner spinner.Model
+ rendering bool
+ attachments viewport.Model
+ showToolMessages bool
}
type renderFinishedMsg struct{}
+type ToggleToolMessagesMsg struct{}
type MessageKeys struct {
PageDown key.Binding
@@ -76,6 +78,12 @@ func (m *messagesCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
case dialog.ThemeChangedMsg:
m.rerender()
return m, nil
+ case ToggleToolMessagesMsg:
+ m.showToolMessages = !m.showToolMessages
+ // Clear the cache to force re-rendering of all messages
+ m.cachedContent = make(map[string]cacheItem)
+ m.renderView()
+ return m, nil
case SessionSelectedMsg:
if msg.ID != m.session.ID {
cmd := m.SetSession(msg)
@@ -217,6 +225,7 @@ func (m *messagesCmp) renderView() {
m.currentMsgID,
m.width,
pos,
+ m.showToolMessages,
)
for _, msg := range assistantMessages {
m.uiMessages = append(m.uiMessages, msg)
@@ -382,7 +391,10 @@ func (m *messagesCmp) help() string {
baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" to send the message,"),
baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" write"),
baseStyle.Foreground(t.Text()).Bold(true).Render(" \\"),
- baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" and enter to add a new line"),
+ baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" and enter to add a new line,"),
+ baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" press"),
+ baseStyle.Foreground(t.Text()).Bold(true).Render(" ctrl+h"),
+ baseStyle.Foreground(t.TextMuted()).Bold(true).Render(" to toggle tool messages"),
)
}
return baseStyle.
@@ -471,10 +483,11 @@ func NewMessagesCmp(app *app.App) tea.Model {
vp.KeyMap.HalfPageUp = messageKeys.HalfPageUp
vp.KeyMap.HalfPageDown = messageKeys.HalfPageDown
return &messagesCmp{
- app: app,
- cachedContent: make(map[string]cacheItem),
- viewport: vp,
- spinner: s,
- attachments: attachmets,
+ app: app,
+ cachedContent: make(map[string]cacheItem),
+ viewport: vp,
+ spinner: s,
+ attachments: attachmets,
+ showToolMessages: true,
}
}
diff --git a/internal/tui/components/chat/message.go b/internal/tui/components/chat/message.go
index 64006113d..f5f50f03a 100644
--- a/internal/tui/components/chat/message.go
+++ b/internal/tui/components/chat/message.go
@@ -134,6 +134,7 @@ func renderAssistantMessage(
focusedUIMessageId string,
width int,
position int,
+ showToolMessages bool,
) []uiMessage {
messages := []uiMessage{}
content := msg.Content().String()
@@ -212,19 +213,22 @@ func renderAssistantMessage(
position++ // for the space
}
- for i, toolCall := range msg.ToolCalls() {
- toolCallContent := renderToolMessage(
- toolCall,
- allMessages,
- messagesService,
- focusedUIMessageId,
- false,
- width,
- i+1,
- )
- messages = append(messages, toolCallContent)
- position += toolCallContent.height
- position++ // for the space
+ // Only render tool messages if they should be shown
+ if showToolMessages {
+ for i, toolCall := range msg.ToolCalls() {
+ toolCallContent := renderToolMessage(
+ toolCall,
+ allMessages,
+ messagesService,
+ focusedUIMessageId,
+ false,
+ width,
+ i+1,
+ )
+ messages = append(messages, toolCallContent)
+ position += toolCallContent.height
+ position++ // for the space
+ }
}
return messages
}
diff --git a/internal/tui/page/chat.go b/internal/tui/page/chat.go
index 740aaabca..8afd18c22 100644
--- a/internal/tui/page/chat.go
+++ b/internal/tui/page/chat.go
@@ -26,8 +26,9 @@ type chatPage struct {
}
type ChatKeyMap struct {
- NewSession key.Binding
- Cancel key.Binding
+ NewSession key.Binding
+ Cancel key.Binding
+ ToggleTools key.Binding
}
var keyMap = ChatKeyMap{
@@ -39,6 +40,10 @@ var keyMap = ChatKeyMap{
key.WithKeys("esc"),
key.WithHelp("esc", "cancel"),
),
+ ToggleTools: key.NewBinding(
+ key.WithKeys("ctrl+h"),
+ key.WithHelp("ctrl+h", "toggle tools"),
+ ),
}
func (p *chatPage) Init() tea.Cmd {
@@ -98,6 +103,8 @@ func (p *chatPage) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
p.app.CoderAgent.Cancel(p.session.ID)
return p, nil
}
+ case key.Matches(msg, keyMap.ToggleTools):
+ return p, util.CmdHandler(chat.ToggleToolMessagesMsg{})
}
}
u, cmd := p.layout.Update(msg)