fix(browser): update Gemini web protocol and fallback handling - #383
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs maintainer review before merge. Reviewed September 7, 2026, 6:33 AM ET / 10:33 UTC. ClawSweeper reviewWhat this changesUpdates Oracle’s cookie-based Gemini requests and model headers, rejects failed or empty responses, adds a persisted fallback opt-out, and explains oversized response-header failures. Merge readiness✅ Ready for maintainer review The PR remains useful: main and v0.18.0 retain the older request framing and error handling. No blocking introduced defect was found, and the updated validation addresses the previous attachment/image coverage concern. Repository policy also excludes automatic closure. Likely related people: steipete and Michal Kubenka are routing candidates from relevant main-branch history; exact source-line attribution remains unverified. Priority: P2 Review scores
Verification
How this fits togetherOracle’s Gemini web executor takes prompts, attachments, model choices, and signed-in browser cookies, then calls Google’s web endpoints. It returns answers and saves generated or edited images through the browser-engine session workflow. flowchart TD
A[CLI options and saved sessions] --> B[Gemini web executor]
C[Browser cookies and attachments] --> B
B --> D[Build model headers and request]
D --> E[Google web endpoints]
E --> F[Validate response and fallback policy]
F --> G[Answer and saved images]
Before mergeNone. Agent review detailsSecurityNone. Review metrics
Technical reviewBest possible solution: Keep the refreshed protocol with default fallback, explicit strict selection, restart compatibility, and clear upstream errors. Do we have a high-confidence way to reproduce the issue? Yes for the error-handling defect: main returns upstream error outputs without rejecting them, and the executor can turn those into an empty answer. Live protocol failure on main was not independently reproduced. Is this the best way to solve the issue? Yes. The patch updates the existing Gemini client, retains fallback for existing users, and adds strict selection without replacing the configured transport. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 1c5ac1b38d64. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (5 earlier review cycles)
|
0be49e5 to
79b4668
Compare
|
Final maintainer proof on The built CLI completed real Gemini text, PNG attachment interpretation, image generation, and image editing with Typecheck, lint, build, docs/help checks, and the full suite passed (2,000 tests; 43 skipped). Final branch autoreview through P2 is scoped-clean. The requested route and pipeline are proved; Google's actual backend model identity is not independently attested. Contributor credit is retained, and the changelog entry is collected in #462. |
Consolidate complete pending Unreleased notes and contributor credit, ordered by user impact with Highlights. Include #458, #430, #406, #460, #461, #383, #459, #451, and #445; preserve earlier unpublished notes and released history. Align devtools-protocol 0.0.1692173 in manifest, override, and lockfile while retaining Node >=24 and the release-age policy. No version bump or publication is included.
Update Gemini web request framing and current model headers, return clear errors for upstream failures/empty responses, and add
--no-gemini-fallbackwhile retaining fallback by default and through restarted sessions.Maintainer repair preserves the model/thinking selectors and client UUID in the header as well as the new payload fields. It also keeps raw
gg-dlimage recovery reachable through the success guard. Oversized Google response headers now produce actionable Node startup guidance; the process's configured fetch/proxy/TLS transport is preserved.Validation on
a25365a160db8952dde6a94aed2c87d191528520:--no-gemini-fallbackand the requestedgemini-3.1-proroute.NODE_OPTIONS=--max-http-header-size=65536for Google's session headers. No private dispatcher or new runtime dependency was introduced.Generated source (left), edited result (right):
The live runs establish the requested route and pipeline behavior; they do not independently attest Google's backend model identity. Changelog credit is collected in the final notes PR.