From 4955624d258fdca69bcc912c7c3b97275ef9bb86 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 6 Nov 2026 15:03:40 +0900 Subject: [PATCH] refac --- backend/open_webui/main.py | 13 ++++++++----- backend/open_webui/utils/terminals.py | 11 ++++------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index 69b2ae2328..ded2db081a 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -1112,7 +1112,7 @@ async def chat_completion( model_item = form_data.pop('model_item', {}) tasks = form_data.pop('background_tasks', None) - from open_webui.utils.terminals import get_folder_terminal_defaults, initialize_folder_terminal + from open_webui.utils.terminals import get_folder_terminal_defaults, initialize_terminal_directory folder_defaults = {} requested_directory = form_data.pop('terminal_cwd', None) @@ -1120,6 +1120,10 @@ async def chat_completion( folder_defaults = await get_folder_terminal_defaults(user, form_data.get('folder_id')) if 'terminal_id' not in form_data and folder_defaults.get('terminal_id'): form_data['terminal_id'] = folder_defaults['terminal_id'] + if not requested_directory and form_data.get('terminal_id') == folder_defaults.get('terminal_id'): + requested_directory = folder_defaults.get('working_directory') + else: + requested_directory = None agent_model = None if isinstance(model_id, str) and model_id.startswith('agent:'): @@ -1130,8 +1134,7 @@ async def chat_completion( raise HTTPException(400, 'Invalid agent model') candidates = await get_agent_models( request, user, form_data.get('terminal_id'), form_data.get('chat_id'), provider=parts[2], - cwd=(requested_directory or folder_defaults.get('working_directory')) - if form_data.get('terminal_id') == folder_defaults.get('terminal_id') else None, + cwd=requested_directory, ) agent_model = next((item for item in candidates if item['id'] == model_id), None) if agent_model is None: @@ -1671,8 +1674,8 @@ async def chat_completion( ) ctx = None if is_new_chat: - await initialize_folder_terminal( - request, user, metadata, folder_defaults, form_data.get('terminal_id'), requested_directory + await initialize_terminal_directory( + request, user, metadata, form_data.get('terminal_id'), requested_directory ) if model.get('agent'): from open_webui.utils.agents.runner import run as run_agent diff --git a/backend/open_webui/utils/terminals.py b/backend/open_webui/utils/terminals.py index e7ee71c62d..47a79ae494 100644 --- a/backend/open_webui/utils/terminals.py +++ b/backend/open_webui/utils/terminals.py @@ -278,16 +278,13 @@ async def get_folder_terminal_defaults(user, folder_id): } -async def initialize_folder_terminal(request, user, metadata, defaults, terminal_id, directory=None): - if not terminal_id or terminal_id != defaults.get('terminal_id'): - return - path = directory or defaults.get('working_directory') - if not path: +async def initialize_terminal_directory(request, user, metadata, terminal_id, path): + if not terminal_id or not path: return from fastapi import HTTPException if not isinstance(path, str): - raise HTTPException(400, 'Invalid folder working directory') + raise HTTPException(400, 'Invalid working directory') result = await get_terminal_json( request, user, @@ -297,7 +294,7 @@ async def initialize_folder_terminal(request, user, metadata, defaults, terminal body={'path': path}, ) if not result or not result.get('cwd'): - raise HTTPException(400, 'Folder working directory is unavailable. Check the terminal connection and path.') + raise HTTPException(400, 'Working directory is unavailable. Check the terminal connection and path.') metadata['initial_terminal_cwd'] = result['cwd']