Revert "feat(core,cli): prioritize summary for topics (#24608)" (#24777)

This commit is contained in:
Abhijit Balaji
2026-04-06 13:33:18 -07:00
committed by GitHub
parent 2353a6d253
commit ad98294352
3 changed files with 45 additions and 42 deletions
@@ -10,7 +10,6 @@ import { ToolGroupMessage } from './ToolGroupMessage.js';
import { import {
UPDATE_TOPIC_TOOL_NAME, UPDATE_TOPIC_TOOL_NAME,
TOPIC_PARAM_TITLE, TOPIC_PARAM_TITLE,
TOPIC_PARAM_SUMMARY,
TOPIC_PARAM_STRATEGIC_INTENT, TOPIC_PARAM_STRATEGIC_INTENT,
makeFakeConfig, makeFakeConfig,
CoreToolCallStatus, CoreToolCallStatus,
@@ -258,15 +257,42 @@ describe('<ToolGroupMessage />', () => {
unmount(); unmount();
}); });
it('renders update_topic tool call prioritizing summary over strategic_intent', async () => { it('renders update_topic tool call using TopicMessage', async () => {
const toolCalls = [ const toolCalls = [
createToolCall({ createToolCall({
callId: 'topic-tool-priority', callId: 'topic-tool',
name: UPDATE_TOPIC_TOOL_NAME, name: UPDATE_TOPIC_TOOL_NAME,
args: { args: {
[TOPIC_PARAM_TITLE]: 'Testing Topic', [TOPIC_PARAM_TITLE]: 'Testing Topic',
[TOPIC_PARAM_SUMMARY]: 'This is the summary', [TOPIC_PARAM_STRATEGIC_INTENT]: 'This is the description',
[TOPIC_PARAM_STRATEGIC_INTENT]: 'This should be ignored', },
}),
];
const item = createItem(toolCalls);
const { lastFrame, unmount } = await renderWithProviders(
<ToolGroupMessage {...baseProps} item={item} toolCalls={toolCalls} />,
{
config: baseMockConfig,
settings: fullVerbositySettings,
},
);
const output = lastFrame();
expect(output).toContain('Testing Topic: ');
expect(output).toContain('This is the description');
expect(output).toMatchSnapshot('update_topic_tool');
unmount();
});
it('renders update_topic tool call with summary instead of strategic_intent', async () => {
const toolCalls = [
createToolCall({
callId: 'topic-tool-summary',
name: UPDATE_TOPIC_TOOL_NAME,
args: {
[TOPIC_PARAM_TITLE]: 'Testing Topic',
summary: 'This is the summary',
}, },
}), }),
]; ];
@@ -283,34 +309,6 @@ describe('<ToolGroupMessage />', () => {
const output = lastFrame(); const output = lastFrame();
expect(output).toContain('Testing Topic: '); expect(output).toContain('Testing Topic: ');
expect(output).toContain('This is the summary'); expect(output).toContain('This is the summary');
expect(output).not.toContain('This should be ignored');
unmount();
});
it('renders update_topic tool call falling back to strategic_intent', async () => {
const toolCalls = [
createToolCall({
callId: 'topic-tool-fallback',
name: UPDATE_TOPIC_TOOL_NAME,
args: {
[TOPIC_PARAM_TITLE]: 'Testing Topic',
[TOPIC_PARAM_STRATEGIC_INTENT]: 'Fallback intent',
},
}),
];
const item = createItem(toolCalls);
const { lastFrame, unmount } = await renderWithProviders(
<ToolGroupMessage {...baseProps} item={item} toolCalls={toolCalls} />,
{
config: baseMockConfig,
settings: fullVerbositySettings,
},
);
const output = lastFrame();
expect(output).toContain('Testing Topic: ');
expect(output).toContain('Fallback intent');
unmount(); unmount();
}); });
@@ -321,7 +319,7 @@ describe('<ToolGroupMessage />', () => {
name: UPDATE_TOPIC_TOOL_NAME, name: UPDATE_TOPIC_TOOL_NAME,
args: { args: {
[TOPIC_PARAM_TITLE]: 'Testing Topic', [TOPIC_PARAM_TITLE]: 'Testing Topic',
[TOPIC_PARAM_SUMMARY]: 'This is the summary', [TOPIC_PARAM_STRATEGIC_INTENT]: 'This is the description',
}, },
}), }),
createToolCall({ createToolCall({
@@ -26,20 +26,19 @@ export const isTopicTool = (name: string): boolean =>
export const TopicMessage: React.FC<TopicMessageProps> = ({ args }) => { export const TopicMessage: React.FC<TopicMessageProps> = ({ args }) => {
const rawTitle = args?.[TOPIC_PARAM_TITLE]; const rawTitle = args?.[TOPIC_PARAM_TITLE];
const title = typeof rawTitle === 'string' ? rawTitle : undefined; const title = typeof rawTitle === 'string' ? rawTitle : undefined;
const rawDescription = const rawIntent =
args?.[TOPIC_PARAM_SUMMARY] || args?.[TOPIC_PARAM_STRATEGIC_INTENT]; args?.[TOPIC_PARAM_STRATEGIC_INTENT] || args?.[TOPIC_PARAM_SUMMARY];
const description = const intent = typeof rawIntent === 'string' ? rawIntent : undefined;
typeof rawDescription === 'string' ? rawDescription : undefined;
return ( return (
<Box flexDirection="row" marginLeft={2} flexWrap="wrap"> <Box flexDirection="row" marginLeft={2} flexWrap="wrap">
<Text color={theme.text.primary} bold wrap="truncate-end"> <Text color={theme.text.primary} bold wrap="truncate-end">
{title || 'Topic'} {title || 'Topic'}
{description && <Text>: </Text>} {intent && <Text>: </Text>}
</Text> </Text>
{description && ( {intent && (
<Text color={theme.text.secondary} wrap="wrap"> <Text color={theme.text.secondary} wrap="wrap">
{description} {intent}
</Text> </Text>
)} )}
</Box> </Box>
@@ -78,7 +78,7 @@ exports[`<ToolGroupMessage /> > Golden Snapshots > renders header when scrolled
exports[`<ToolGroupMessage /> > Golden Snapshots > renders mixed tool calls including update_topic 1`] = ` exports[`<ToolGroupMessage /> > Golden Snapshots > renders mixed tool calls including update_topic 1`] = `
" "
Testing Topic: This is the summary Testing Topic: This is the description
╭──────────────────────────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────────────────────────╮
│ ✓ read_file Read a file │ │ ✓ read_file Read a file │
@@ -142,6 +142,12 @@ exports[`<ToolGroupMessage /> > Golden Snapshots > renders two tool groups where
" "
`; `;
exports[`<ToolGroupMessage /> > Golden Snapshots > renders update_topic tool call using TopicMessage > update_topic_tool 1`] = `
"
Testing Topic: This is the description
"
`;
exports[`<ToolGroupMessage /> > Golden Snapshots > renders with limited terminal height 1`] = ` exports[`<ToolGroupMessage /> > Golden Snapshots > renders with limited terminal height 1`] = `
"╭──────────────────────────────────────────────────────────────────────────╮ "╭──────────────────────────────────────────────────────────────────────────╮
│ ✓ tool-with-result Tool with output │ │ ✓ tool-with-result Tool with output │