Repository navigation
fix(responses): strip Google item metadata from native OpenAI requests - #7131
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
✅ Deterministic PR hygiene checks passed. |
|
Maintainer integration into
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Summary
Unknown parameter: input[N].extra_contentwhen a Google turn falls back to native Codex. The Responses JSON/SSE bridge deliberately emitsextra_content.google.thought_signaturefor Google replay, but the native outbound projection was forwarding that extension unchanged.extra_contentextension at the shared Responses passthrough builder for OpenAI-operated destinations (canonical ChatGPT Codex and official OpenAI Responses). HTTP, WebSocket creates, HTTP fallback, and concrete combo children share the projection. The direct native/responses/compactsend applies the same projection.Closes #7111
Verification
Independent review round 1 checked the linked issue, all changed files, the destination predicate, HTTP/WS/fallback/combo callers, and the separate native compact send. The latter bypassed the adapter and still forwarded Google metadata on both OpenAI-operated backends; commit
67f28cd5aadds the shared projection there, two handler-level regressions, both layout registrations, and owner/public docs.bun install --frozen-lockfile— passed; no dependency or lockfile changes.bun run typecheck— passed.bun test tests/responses/openai-responses-passthrough.test.ts tests/responses/responses-compaction.test.ts tests/responses/responses-compaction-routing.test.ts tests/responses/responses-native-item-extensions.test.ts tests/responses/responses-native-item-extensions-compact.test.ts tests/adapters/google/google-provider-metadata-roundtrip.test.ts tests/adapters/google/google-signature-history-roundtrip.test.ts— 395 passed, 0 failed.7640a942b35044c974e534b84d5a8049f4a8ae9a, temporarily omitted only the new helper's import/unit case so the behavior tests could load, and ranbun test tests/responses/responses-native-item-extensions.test.ts: 5 failed / 5 passed, exposing native HTTP/WS and combo leakage. Restored all files afterward. The two new direct-compact regressions also failed on the original PR head and passed with67f28cd5a; final combined run is the 395-pass command above.bun run structure:check— passed; owner docs remain within their budgets.bun run privacy:scan— passed. No body/key logging or authentication, credential, dependency, or workflow behavior changes.bun test tests/test-layout.test.ts tests/test-layout-tooling.test.ts tests/ci-workflows/file-size-ratchet.test.ts tests/lab/core-lab-boundary.test.ts— 61 passed, 0 failed; includes both layout registrations, file-size ratchet, and core/Lab import and synchronous-activation guards.docs-site/:bun install --frozen-lockfileandbun run build— passed; 577 pages and 81,200 internal links checked.extra_content. The concrete private Codex rejection evidence remains the error reported in [Provider compatibility] Google extra_content from tool history leaks into native Codex response.create and causes 400 #7111; no claim of a public private-backend specification or live inference probe.bun run testorbun run test:changed, as requested because this machine is shared. Focused adapter/compaction/Google tests are the local scope; broad Ubuntu suites remain for exact-head CI. No macOS/Windows workflows dispatched. Earlier queuedtest:changedwork is not counted as passing evidence.d4161f6fb4938c1c3b5c2c1010669728e7ddfd1a: the initialbun run test:changedexecuted no tests because it timed out after 2,700 seconds waiting for the shared test lock.OCX_TEST_NO_QUEUE=1 bun run test:changed --parallel=1then finished in 802 seconds with 17,670 passed, 35 skipped, 5 failed, 3 errors across 746 files. All 11 new Responses metadata regressions passed. The failures were one CLI export timeout, one headless integration-toggle request assertion, and three live-audio timeouts with three follow-on errors. This run is not passing evidence and does not cover the later compact commit.bun test tests/cli/cli-headless-parity.test.ts tests/cli/cli-export-command.test.ts tests/cli/cli-access-audio-live.test.ts— 168 passed, 0 failed. The same files throughOCX_TEST_NO_QUEUE=1 bun run test --parallel=1 --timeout=60000 tests/cli/cli-headless-parity.test.ts tests/cli/cli-export-command.test.ts tests/cli/cli-access-audio-live.test.ts— 168 passed, 0 failed in 15.8 seconds. The wrapper always setsOCX_TEST_FULL_SUITE=1, raising the audio test's readiness budget to 5,000 ms, equal to Bun's default test timeout; the explicit 60-second timeout gives that existing budget room to finish. The two other broad-run failures did not reproduce in focused wrapper execution; their broader-run cause remains unresolved. These CLI sources, test files and timing helpers are unchanged from the branch merge base. No unrelated harness/source changes or full-suite rerun were made.Checklist