Repository navigation
fix(openai-responses): trim tool_call_id and function name so padded call ids stay paired - #14093
Merged
diegosouzapw merged 1 commit intoSep 22, 2026
Conversation
…call ids stay paired openaiToOpenAIResponsesRequest trimmed the id on the function_call side (assistant tool_calls -> function_call) but not on the function_call_output side (tool/function role). clampCallId only length-clamps, so a whitespace-padded id that a client echoes on both sides was keyed trimmed on one side and untrimmed on the other; the orphaned-output filter then dropped the tool result and the model answered as if the tool never ran. Trim both sides to preserve the pairing invariant clampCallId exists to protect. Adds a regression test with padded matching ids.
Owner
|
Thanks @pacocartones — merging via the release merge-train. Validated in local merge-train (mt-train10c) on the devbox @ train tip 4d841aa1c740bbaa03868dc0a403c62099a99a42 with the 72 sibling PRs of this batch: typecheck:core, file-size, complexity, cognitive-complexity, changelog-integrity green; changed-area node:test 831/831 (0 failing) and vitest 480/482 — the two reds are |
diegosouzapw
merged commit Sep 22, 2026
86c0842
into
diegosouzapw:release/v3.8.51
11 of 16 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
openaiToOpenAIResponsesRequesttrimmed the call id on thefunction_callside (assistanttool_calls->function_call) but not on thefunction_call_outputside (tool/functionrole).clampCallIdonly length-clamps, so a whitespace-padded id a client echoes on both sides was keyed trimmed on one side and untrimmed on the other; the orphaned-output filter then dropped the tool result and the model answered as if the tool never ran. This trimstool_call_idand the deprecatedfunctionname so the pairing invariantclampCallIdexists to protect holds.Related Issues
(No tracking issue — bounded translator fix; opening directly per the golden path for a small, tested correctness fix.)
Validation
Choose the change type and focused loop from the
Contribution Golden Path. The full unit suite,
Vitest, the 60% coverage gate, and the production build all run in CI on this PR (#8329):
npm run lintTests Added Or Updated
tests/unit/translator-request-openai-responses.test.ts— adds a case with whitespace-padded matching ids asserting thefunction_call_outputsurvives the orphan filter and shares the pairedfunction_callid.Coverage Notes
open-sse/; the new case intranslator-request-openai-responses.test.tscovers the change (red before, green after).Reviewer Notes
.trim()at the two output-side call_id sites). No new function, no complexity-ratchet impact.