From f6922a4c4293449805938c80fbe54174994a1fc6 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 19 Sep 2026 17:33:41 -0400 Subject: [PATCH] refac --- backend/open_webui/utils/middleware.py | 8 ++------ backend/open_webui/utils/terminals.py | 10 +++++++++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index fea641e7fe..421fdaa0db 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -3063,15 +3063,11 @@ async def process_chat_payload(request, form_data, user, metadata, model): } if terminal_id and terminal_capability: - from open_webui.utils.terminals import get_terminal_agents_md + from open_webui.utils.terminals import add_terminal_agents_md, get_terminal_agents_md agents_md = await get_terminal_agents_md(request, user, metadata, extra_params) if agents_md: - form_data['messages'] = add_or_update_system_message( - agents_md, - form_data['messages'], - append=True, - ) + form_data['messages'] = add_terminal_agents_md(form_data['messages'], agents_md) if mcp_clients: metadata['mcp_clients'] = mcp_clients diff --git a/backend/open_webui/utils/terminals.py b/backend/open_webui/utils/terminals.py index 8c014d7e96..e7d34550d3 100644 --- a/backend/open_webui/utils/terminals.py +++ b/backend/open_webui/utils/terminals.py @@ -230,12 +230,20 @@ async def get_terminal_agents_md(request, user, metadata: dict, extra_params: di if len(content.encode('utf-8')) > MAX_AGENTS_MD_BYTES: log.warning('Skipping terminal AGENTS.md: exceeds %s bytes', MAX_AGENTS_MD_BYTES) return None - return f'# AGENTS.md instructions for {home}\n\n\n{content}\n' + return f'# AGENTS.md\n\n{content}' except Exception as e: log.debug('Failed to load terminal AGENTS.md (%s)', type(e).__name__) return None +def add_terminal_agents_md(messages: list[dict], agents_md: str) -> list[dict]: + """Place file instructions before user requests without changing their content.""" + for index, message in enumerate(messages): + if message.get('role') == 'user': + return [*messages[:index], {'role': 'user', 'content': agents_md}, *messages[index:]] + return messages + + async def get_terminal_skill( request, user, metadata: dict, skill_name: str, extra_params: dict | None = None ) -> dict | None: