From efaba6c5b8aed4aab620d9633d4335eaeed32be0 Mon Sep 17 00:00:00 2001 From: adamdottv <2363879+adamdottv@users.noreply.github.com> Date: Mon, 5 May 2025 11:25:34 -0500 Subject: [PATCH] feat: hide tool calls --- internal/tui/components/chat/list.go | 47 ++++++++++++++++--------- internal/tui/components/chat/message.go | 30 +++++++++------- internal/tui/page/chat.go | 11 ++++-- 3 files changed, 56 insertions(+), 32 deletions(-) diff --git a/internal/tui/components/chat/list.go b/internal/tui/components/chat/list.go index e08a103e..83538eb3 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 64006113..f5f50f03 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 740aaabc..8afd18c2 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)