diff --git a/internal/translator/codex/claude/codex_claude_request.go b/internal/translator/codex/claude/codex_claude_request.go index a9ed46b0..e873dddc 100644 --- a/internal/translator/codex/claude/codex_claude_request.go +++ b/internal/translator/codex/claude/codex_claude_request.go @@ -271,9 +271,9 @@ func ConvertClaudeRequestToCodex(modelName string, inputRawJSON []byte, _ bool) } } - // Default to parallel tool calls unless the client explicitly disables them. + // Default to parallel tool calls unless tool_choice explicitly disables them. parallelToolCalls := true - if disableParallelToolUse := rootResult.Get("disable_parallel_tool_use"); disableParallelToolUse.Exists() { + if disableParallelToolUse := rootResult.Get("tool_choice.disable_parallel_tool_use"); disableParallelToolUse.Exists() { parallelToolCalls = !disableParallelToolUse.Bool() } diff --git a/internal/translator/codex/claude/codex_claude_request_test.go b/internal/translator/codex/claude/codex_claude_request_test.go index aba1ef98..3cf02369 100644 --- a/internal/translator/codex/claude/codex_claude_request_test.go +++ b/internal/translator/codex/claude/codex_claude_request_test.go @@ -95,7 +95,7 @@ func TestConvertClaudeRequestToCodex_ParallelToolCalls(t *testing.T) { wantParallelToolCalls bool }{ { - name: "Default to true when disable_parallel_tool_use is absent", + name: "Default to true when tool_choice.disable_parallel_tool_use is absent", inputJSON: `{ "model": "claude-3-opus", "messages": [{"role": "user", "content": "hello"}] @@ -106,7 +106,7 @@ func TestConvertClaudeRequestToCodex_ParallelToolCalls(t *testing.T) { name: "Disable parallel tool calls when client opts out", inputJSON: `{ "model": "claude-3-opus", - "disable_parallel_tool_use": true, + "tool_choice": {"disable_parallel_tool_use": true}, "messages": [{"role": "user", "content": "hello"}] }`, wantParallelToolCalls: false, @@ -115,7 +115,7 @@ func TestConvertClaudeRequestToCodex_ParallelToolCalls(t *testing.T) { name: "Keep parallel tool calls enabled when client explicitly allows them", inputJSON: `{ "model": "claude-3-opus", - "disable_parallel_tool_use": false, + "tool_choice": {"disable_parallel_tool_use": false}, "messages": [{"role": "user", "content": "hello"}] }`, wantParallelToolCalls: true,