From 389866a2c67f9b55e35f8196c815a1c4c9eb4670 Mon Sep 17 00:00:00 2001 From: admin Date: Tue, 19 May 2026 19:48:40 +0400 Subject: [PATCH] fix: merge consecutive tool_calls into single assistant message for Crof/OpenAI-compat --- codex-launcher_2.1.1_all.deb | Bin 22576 -> 22624 bytes src/translate-proxy.py | 20 +++++++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/codex-launcher_2.1.1_all.deb b/codex-launcher_2.1.1_all.deb index 3c5eb8d4beec12aa540fbaa4be3496fdf159a216..0e252306d23426da2c1736196830894997463f03 100644 GIT binary patch delta 20529 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

K{cIVkz>o^-L0Z_uR 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 diff --git a/src/translate-proxy.py b/src/translate-proxy.py index 9a5000d..b167441 100755 --- a/src/translate-proxy.py +++ b/src/translate-proxy.py @@ -148,8 +148,19 @@ def oa_input_to_messages(input_data): if isinstance(input_data, str): msgs.append({"role": "user", "content": input_data}) elif isinstance(input_data, list): + pending_tool_calls = [] for item in input_data: t = item.get("type") + if t == "function_call": + pending_tool_calls.append( + {"id": item.get("call_id", item.get("id", uid("tc"))), + "type": "function", + "function": {"name": item.get("name", ""), + "arguments": item.get("arguments", "{}")}}) + continue + if pending_tool_calls: + msgs.append({"role": "assistant", "content": None, "tool_calls": pending_tool_calls}) + pending_tool_calls = [] if t == "message": role = item.get("role", "user") if role == "developer": @@ -167,16 +178,11 @@ def oa_input_to_messages(input_data): break if text is not None: msgs.append({"role": role, "content": text}) - elif t == "function_call": - msgs.append({"role": "assistant", "content": None, "tool_calls": [ - {"id": item.get("call_id", item.get("id", uid("tc"))), - "type": "function", - "function": {"name": item.get("name", ""), - "arguments": item.get("arguments", "{}")}} - ]}) elif t == "function_call_output": msgs.append({"role": "tool", "tool_call_id": item.get("id", ""), "content": item.get("output", "")}) + if pending_tool_calls: + msgs.append({"role": "assistant", "content": None, "tool_calls": pending_tool_calls}) return msgs def oa_convert_tools(tools):