diff --git a/packages/cli/src/ui/components/__snapshots__/AlternateBufferQuittingDisplay.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/AlternateBufferQuittingDisplay.test.tsx.snap index b4f2bc919c..5394ab83c0 100644 --- a/packages/cli/src/ui/components/__snapshots__/AlternateBufferQuittingDisplay.test.tsx.snap +++ b/packages/cli/src/ui/components/__snapshots__/AlternateBufferQuittingDisplay.test.tsx.snap @@ -13,10 +13,6 @@ Tips for getting started: 2. /help for more information 3. Ask coding questions, edit code or run commands 4. Be specific for the best results -╭──────────────────────────────────────────────────────────────────────────╮ -│ ? confirming_tool Confirming tool description │ -│ │ -╰──────────────────────────────────────────────────────────────────────────╯ Action Required (was prompted): diff --git a/packages/cli/src/ui/components/messages/ToolGroupMessage.test.tsx b/packages/cli/src/ui/components/messages/ToolGroupMessage.test.tsx index b38f76aa04..eff418a609 100644 --- a/packages/cli/src/ui/components/messages/ToolGroupMessage.test.tsx +++ b/packages/cli/src/ui/components/messages/ToolGroupMessage.test.tsx @@ -118,10 +118,30 @@ describe('', () => { { config: baseMockConfig, settings: fullVerbositySettings }, ); - // Should now render confirming tools + // Should now hide confirming tools (to avoid duplication with Global Queue) + await waitUntilReady(); + expect(lastFrame({ allowEmpty: true })).toBe(''); + unmount(); + }); + + it('renders canceled tool calls', async () => { + const toolCalls = [ + createToolCall({ + callId: 'canceled-tool', + name: 'canceled-tool', + status: CoreToolCallStatus.Cancelled, + }), + ]; + const item = createItem(toolCalls); + + const { lastFrame, unmount, waitUntilReady } = renderWithProviders( + , + { config: baseMockConfig, settings: fullVerbositySettings }, + ); + await waitUntilReady(); const output = lastFrame(); - expect(output).toContain('test-tool'); + expect(output).toMatchSnapshot('canceled_tool'); unmount(); }); @@ -842,7 +862,7 @@ describe('', () => { ); await waitUntilReady(); - expect(lastFrame({ allowEmpty: true })).not.toBe(''); + expect(lastFrame({ allowEmpty: true })).toBe(''); unmount(); }); diff --git a/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx b/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx index e22d3c6313..ee3a98930f 100644 --- a/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx +++ b/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx @@ -110,11 +110,12 @@ export const ToolGroupMessage: React.FC = ({ () => toolCalls.filter((t) => { const displayStatus = mapCoreStatusToDisplayStatus(t.status); - // We used to filter out Pending and Confirming statuses here to avoid - // duplication with the Global Queue, but this causes tools to appear to - // "vanish" from the context after approval. - // We now allow them to be visible here as well. - return displayStatus !== ToolCallStatus.Canceled; + // We hide Confirming tools from the history log because they are + // currently being rendered in the interactive ToolConfirmationQueue. + // We show everything else, including Pending (waiting to run) and + // Canceled (rejected by user), to ensure the history is complete + // and to avoid tools "vanishing" after approval. + return displayStatus !== ToolCallStatus.Confirming; }), [toolCalls], diff --git a/packages/cli/src/ui/components/messages/__snapshots__/ToolGroupMessage.test.tsx.snap b/packages/cli/src/ui/components/messages/__snapshots__/ToolGroupMessage.test.tsx.snap index c1ea071bc5..98db513da8 100644 --- a/packages/cli/src/ui/components/messages/__snapshots__/ToolGroupMessage.test.tsx.snap +++ b/packages/cli/src/ui/components/messages/__snapshots__/ToolGroupMessage.test.tsx.snap @@ -49,6 +49,15 @@ exports[` > Border Color Logic > uses yellow border for shel " `; +exports[` > Golden Snapshots > renders canceled tool calls > canceled_tool 1`] = ` +"╭──────────────────────────────────────────────────────────────────────────╮ +│ - canceled-tool A tool for testing │ +│ │ +│ Test result │ +╰──────────────────────────────────────────────────────────────────────────╯ +" +`; + exports[` > Golden Snapshots > renders empty tool calls array 1`] = `""`; exports[` > Golden Snapshots > renders header when scrolled 1`] = `