From 3fb1d3055ed628d203888fa9b0601bee7f2f504d Mon Sep 17 00:00:00 2001 From: cheatofrom <85830867+cheatofrom@users.noreply.github.com> Date: Wed, 10 Jun 2026 09:41:37 +0800 Subject: [PATCH] fix: agent mode missing file cards for BINARY_LINK and FILE type tool outputs (#36746) Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- api/core/tools/tool_engine.py | 12 ++++++++++-- api/core/tools/utils/message_transformer.py | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/api/core/tools/tool_engine.py b/api/core/tools/tool_engine.py index 3caacb8706..16fe15d5ae 100644 --- a/api/core/tools/tool_engine.py +++ b/api/core/tools/tool_engine.py @@ -283,7 +283,11 @@ class ToolEngine: Extract tool response binary """ for response in tool_response: - if response.type in {ToolInvokeMessage.MessageType.IMAGE_LINK, ToolInvokeMessage.MessageType.IMAGE}: + if response.type in { + ToolInvokeMessage.MessageType.IMAGE_LINK, + ToolInvokeMessage.MessageType.IMAGE, + ToolInvokeMessage.MessageType.BINARY_LINK, + }: mimetype = None if not response.meta: raise ValueError("missing meta data") @@ -298,7 +302,11 @@ class ToolEngine: mimetype = guess_type_result if not mimetype: - mimetype = "image/jpeg" + mimetype = ( + "image/jpeg" + if response.type != ToolInvokeMessage.MessageType.BINARY_LINK + else "application/octet-stream" + ) yield ToolInvokeMessageBinary( mimetype=response.meta.get("mime_type", mimetype), diff --git a/api/core/tools/utils/message_transformer.py b/api/core/tools/utils/message_transformer.py index 4c6e647335..f2e4f0ea5f 100644 --- a/api/core/tools/utils/message_transformer.py +++ b/api/core/tools/utils/message_transformer.py @@ -172,6 +172,8 @@ class ToolFileMessageTransformer: meta=tool_file_meta, ) else: + if file.mime_type and "mime_type" not in tool_file_meta: + tool_file_meta["mime_type"] = file.mime_type yield ToolInvokeMessage( type=ToolInvokeMessage.MessageType.LINK, message=ToolInvokeMessage.TextMessage(text=url),