From 64e6c9f0106fed10bc5bebf0449dfb21d875ab4f Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 30 Aug 2026 23:56:01 -0400 Subject: [PATCH] refac --- backend/open_webui/utils/middleware.py | 9 ++------- src/lib/components/chat/Chat.svelte | 1 + .../chat/Messages/StructuredOutputRenderer.svelte | 4 +++- src/lib/components/chat/Messages/structuredOutput.ts | 1 - 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 2f60d0aa9b..9710b14177 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -258,12 +258,7 @@ def build_terminal_file_tool_result( if isinstance(tool_result, (list, tuple)) and tool_result and isinstance(tool_result[0], dict): tool_result = tool_result[0] - if ( - tool_function_name != 'display_file' - or tool_function_params.get('inline') is not True - or not isinstance(tool_result, dict) - or tool_result.get('exists') is False - ): + if tool_function_name != 'display_file' or not isinstance(tool_result, dict) or tool_result.get('exists') is False: return None tool_id = (tool or {}).get('tool_id', '') @@ -284,7 +279,7 @@ def build_terminal_file_tool_result( **tool_result, 'type': 'file', 'source': 'open_terminal', - 'displayed': True, + **({'displayed': True} if tool_function_params.get('inline') is True else {}), 'terminal_selector': terminal_selector, **({'terminal_id': terminal_id} if terminal_id else {}), **({'terminal_url': server_url} if server_url and not terminal_id else {}), diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 741c78632b..875aee0e07 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -1144,6 +1144,7 @@ const terminalEventHandler = (type: string, data: any) => { if (type === 'terminal:display_file') { if (!data?.path) return; + if ($settings?.terminalFileDisplay === 'inline') return; displayFileHandler(data.path, { showControls, showFileNavPath }, { page: data?.page }); } else if (type === 'terminal:write_file' || type === 'terminal:replace_file_content') { if (!data?.path) return; diff --git a/src/lib/components/chat/Messages/StructuredOutputRenderer.svelte b/src/lib/components/chat/Messages/StructuredOutputRenderer.svelte index faeff5f179..3fd496707d 100644 --- a/src/lib/components/chat/Messages/StructuredOutputRenderer.svelte +++ b/src/lib/components/chat/Messages/StructuredOutputRenderer.svelte @@ -163,7 +163,9 @@ {:else if displayItem.type === 'file'} - + {#if displayItem.item?.displayed || $settings?.terminalFileDisplay === 'inline'} + + {/if} {:else} {@const detailToken = displayItem.token} {#if detailToken.attributes?.type === 'tool_calls'} diff --git a/src/lib/components/chat/Messages/structuredOutput.ts b/src/lib/components/chat/Messages/structuredOutput.ts index 612aca3dbe..969ecb7be6 100644 --- a/src/lib/components/chat/Messages/structuredOutput.ts +++ b/src/lib/components/chat/Messages/structuredOutput.ts @@ -179,7 +179,6 @@ function getInlineFileFromToolOutput(callItem?: OutputItem, resultItem?: OutputI typeof result !== 'object' || result.type !== 'file' || result.source !== 'open_terminal' || - result.displayed !== true || result.exists === false || !result.path || !result.terminal_selector