diff --git a/tools/ui/src/lib/components/app/chat/ChatMessages/ChatMessageAgenticContent.svelte b/tools/ui/src/lib/components/app/chat/ChatMessages/ChatMessageAgenticContent.svelte index 34c82cd763..751d137562 100644 --- a/tools/ui/src/lib/components/app/chat/ChatMessages/ChatMessageAgenticContent.svelte +++ b/tools/ui/src/lib/components/app/chat/ChatMessages/ChatMessageAgenticContent.svelte @@ -43,6 +43,7 @@ const renderThinkingAsMarkdown = $derived(config().renderThinkingAsMarkdown as boolean); const showThoughtInProgress = $derived(Boolean(config().showThoughtInProgress)); + const alwaysShowToolCallContent = $derived(Boolean(config().alwaysShowToolCallContent)); const showMessageStats = $derived(Boolean(config().showMessageStats)); const showAgenticTurnStats = $derived(showMessageStats && Boolean(config().showAgenticTurnStats)); @@ -98,19 +99,6 @@ isStreaming ? agenticExecutingToolCallId(message.convId) : null ); - // Skip sections the user manually collapsed - we never override an explicit false. - let lastSeenExecutingToolCallId: string | null = null; - $effect(() => { - const current = currentlyExecutingToolCallId; - const previous = lastSeenExecutingToolCallId; - lastSeenExecutingToolCallId = current; - if (!current || current === previous) return; - const idx = sections.findIndex((s) => s.toolCallId === current); - if (idx >= 0 && expandedStates[idx] === undefined) { - expandedStates[idx] = true; - } - }); - type TurnGroup = { sections: AgenticSection[]; flatIndices: number[]; @@ -149,10 +137,11 @@ function getDefaultExpanded(section: AgenticSection): boolean { if ( + section.type === AgenticSectionType.TOOL_CALL || section.type === AgenticSectionType.TOOL_CALL_PENDING || section.type === AgenticSectionType.TOOL_CALL_STREAMING ) { - return false; + return alwaysShowToolCallContent; } if (section.type === AgenticSectionType.REASONING_PENDING) { diff --git a/tools/ui/src/lib/constants/settings-keys.ts b/tools/ui/src/lib/constants/settings-keys.ts index 0761ef8f09..bbcdde4351 100644 --- a/tools/ui/src/lib/constants/settings-keys.ts +++ b/tools/ui/src/lib/constants/settings-keys.ts @@ -60,7 +60,7 @@ export const SETTINGS_KEYS = { MCP_SERVERS: 'mcpServers', MCP_REQUEST_TIMEOUT_SECONDS: 'mcpRequestTimeoutSeconds', AGENTIC_MAX_TURNS: 'agenticMaxTurns', - SHOW_TOOL_CALL_IN_PROGRESS: 'showToolCallInProgress', + ALWAYS_SHOW_TOOL_CALL_CONTENT: 'alwaysShowToolCallContent', // Performance PRE_ENCODE_CONVERSATION: 'preEncodeConversation', // Developer diff --git a/tools/ui/src/lib/constants/settings-registry.ts b/tools/ui/src/lib/constants/settings-registry.ts index b1404093c5..03d4ce4e9e 100644 --- a/tools/ui/src/lib/constants/settings-registry.ts +++ b/tools/ui/src/lib/constants/settings-registry.ts @@ -253,14 +253,14 @@ const SETTINGS_REGISTRY: Record = { } }, { - key: SETTINGS_KEYS.SHOW_TOOL_CALL_IN_PROGRESS, - label: 'Show tool call in progress', + key: SETTINGS_KEYS.ALWAYS_SHOW_TOOL_CALL_CONTENT, + label: 'Always show tool call content', help: 'Automatically expand tool call details while executing and keep them expanded after completion.', defaultValue: false, type: SettingsFieldType.CHECKBOX, section: SETTINGS_SECTION_SLUGS.DISPLAY, sync: { - serverKey: SETTINGS_KEYS.SHOW_TOOL_CALL_IN_PROGRESS, + serverKey: SETTINGS_KEYS.ALWAYS_SHOW_TOOL_CALL_CONTENT, paramType: SyncableParameterType.BOOLEAN } },