Skip to content

fix: upgrade Gemini SDK with continuation regressions - #2446

Open
groupthinking wants to merge 1 commit into
mainfrom
fix/genai-continuation-2445
Open

groupthinking wants to merge 1 commit into
mainfrom
fix/genai-continuation-2445

Conversation

@groupthinking

@groupthinking groupthinking commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner

Canonical issue

Closes #2445

Outcome

Direct Gemini calls can automatically continue generation while retaining grounding references, stopping on prompt feedback, and surfacing genuine provider/transport errors. This raises the installed SDK from 2.24.0 to 2.30.0 and adds offline regressions against its real public API.

Official evidence: Google's 2.30.0 changelog, October 14, 2026, continuation fixes, and grounding reference fixes.

Scope

  • Included: root and web @google/genai floor ^2.30.0, the single resolved lock entry, and 12 SDK contract cases.
  • Covered: unary text/grounding merge with part and source index correction; dropped/empty streaming hop recovery; safety feedback termination including earlier checkpoints; bounded retries retaining the original error; API rejection and abort propagation; Gemini 3.8 and older-model request parameter serialization.
  • The SDK itself is not mocked. Synthetic HTTP/SSE responses are injected through its documented custom fetch option; global fetch fails closed. No provider request is sent.
  • Explicitly excluded: gateway routing, app/provider behavior changes, production deployment, live-provider verification, unrelated upgrades.
  • Reconciliation: fix: bump the npm-minor-patch group across 1 directory with 37 updates #2444's broad dependency batch proposes 2.29.1. This focused change owns the Gemini 2.30 floor and issue2445. The broad batch must retain this floor and regressions when refreshed.

Risk

  • Risk level: low / policy Class A dependency minor + tests.
  • Failure mode: the SDK's new automatic continuation can issue additional requests when a provider returns continuation tokens; local fixtures do not establish live cost, latency, availability or provider compatibility.
  • Rollback: revert this focused four-file commit, restoring both manifest floors and the lock entry together.

Verification

Published head: b54bcfef377278f9ad293cb5b698d455744df5d7.
Base: 560f07120dee5294da0af0f2aab8eec8b79de8b5.
Tested local commit: ddc21f567572180973a4692eabd1a4def962d60a.
Both commits have identical full tree f52a46dc4b9c0cb777c0a592a9ff7be37681e9ee; the GitHub commit was fetched and its four-file diff verified after publishing through the connector (shell push had no credentials).

Node 24.19.0; final validation npm 10.8.0, Vitest 5.0.1.

  1. Baseline 2.24.0: existing 32 Gemini tests and web type-check PASS. Initial new contract suite: 9 failing / 2 passing, demonstrating absent continuation behavior.
  2. npx --yes npm@10.8.0 ci --ignore-scripts --no-audit --no-fund — PASS. Reviewed repository patch then explicitly executed with node apps/web/scripts/patch-world-vercel-undici-fetch.mjs.
  3. npx --yes npm@10.8.0 --workspace=apps/web test -- src/lib/__tests__/gemini-sdk-continuation.test.ts src/lib/__tests__/gemini-client.test.ts src/lib/__tests__/gemini-parameters.test.ts src/lib/__tests__/gemini-models.test.ts src/lib/__tests__/gemini-video-analyzer.test.ts — 44 PASS.
  4. Full npm --workspace=apps/web test with provider/billing credentials blank — 1532 PASS, 28 SKIPPED, zero failures; 171 files pass. Optional Redis integration is not claimed: Redis is unavailable locally.
  5. npx --yes npm@10.8.0 --workspace=apps/web run type-check — PASS.
  6. From apps/web: ../../node_modules/.bin/eslint src/lib/__tests__/gemini-sdk-continuation.test.ts — PASS. git diff --check — PASS.
  7. Lock comparison against base proves only two manifest specs and the Gemini version/resolved/integrity changed; transitive constraints unchanged. Initial npm11 unrelated lock churn was removed before final npm10 clean install.
  8. Standard build: compilation PASS (29.3s); completion BLOCKED by automatic approval review of Sentry external egress. Safer local build PASS (exit0): temporarily set supported Sentry options telemetry:false, sourcemaps:{disable:true}, release:{create:false,finalize:false}, blank SENTRY_AUTH_TOKEN, SENTRY_DSN, NEXT_PUBLIC_SENTRY_DSN, and set NEXT_TELEMETRY_DISABLED=1; run the same npm build. The first retry found an aborted Turbopack cache, which was moved aside; the clean retry passed. The config was restored in finally, and git diff --exit-code HEAD -- apps/web/next.config.js and clean status verified restoration. This is local no-upload validation, not an exact-config production build claim.
  • Focused tests
  • Required CI on published head
  • Review threads resolved

Production evidence

NOT RUN: live Gemini, production deployment, measured savings/cost, and production acceptance. Vercel reports READY preview on the published head; GitHub commit status Vercel is success. Remote test-frontend and E2E Pipeline Tests also report success. Remaining required checks are still running; these statuses are not a live Gemini acceptance claim. UVAI's gateway route is separate; no gateway reliability improvement is claimed from this direct SDK upgrade.

Agent handoff

  • One canonical issue is linked
  • No competing PR implements the same issue (overlapping broad batch fix: bump the npm-minor-patch group across 1 directory with 37 updates #2444 explicitly identified)
  • Acceptance criteria are fully satisfied: CI/review/preview still pending
  • Required checks pass on the current head
  • No production deployment, paid API calls, external outreach or merge performed

Receipt: concept_tracker action120 in Neon project round-night-95394081 / neondb; observations259–260. Next: inspect current-head checks, automated review, preview and mergeability; address actionable findings and retain final evidence.

Copilot AI balanced review requested due to automatic review settings October 18, 2026 15:20
@vercel

vercel Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
v0-uvai Ready Ready Preview, v0 Oct 18, 2026 3:21pm UTC

@coderabbitai

coderabbitai Bot commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: Repository: groupthinking/EventRelay/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 1bb405a0-b2de-4d9c-ab00-9c15a4fb5f66
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

✅ E2E Test Results: ALL TESTS PASSED

Metric Value
Status 🟢 GREEN
Total Tests
Passed 16
Failed
Deployment https://v0-uvai-mihilehc6-garv1.vercel.app
Test Output
every request without persisting it�[32m 1�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mTemplate Gallery�[2m > �[22mhomepage returns 200 with HTML�[32m 173�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mTemplate Gallery�[2m > �[22mfeatures page contains template/workflow markup�[32m 205�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mTemplate Gallery�[2m > �[22mfeatures page surfaces at least 5 workflow/template indicators�[32m 179�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mVideo Pack Pipeline�[2m > �[22mPOST /api/video/pack accepts a YouTube URL without hanging�[33m 2115�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mVideo Pack Pipeline�[2m > �[22mGET /api/video/pack resolves to a ready pack with evidence lineage�[33m 638�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mError Handling�[2m > �[22mmissing URL returns 400, not a hang�[32m 118�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mError Handling�[2m > �[22minvalid URL returns 400 quickly, not a hang�[32m 101�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mError Handling�[2m > �[22mPOST /api/video/pack with no body returns 400�[32m 105�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mDashboard�[2m > �[22m/dashboard returns 200�[32m 205�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mDashboard�[2m > �[22m/dashboard contains agent or pipeline visualization markup�[32m 165�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mAPI Health�[2m > �[22mGET /api returns a response (not 404)�[33m 302�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mAPI Health�[2m > �[22mretired /api/pipeline routes are gone (no pipeline served)�[32m 80�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mStatic Assets�[2m > �[22mhomepage has proper meta tags�[32m 130�[2mms�[22m�[39m
 �[32m✓�[39m tests/e2e/pipeline.test.ts�[2m > �[22mEventRelay E2E — Live Deployment�[2m > �[22mStatic Assets�[2m > �[22m/features page returns 200�[32m 160�[2mms�[22m�[39m

�[2m Test Files �[22m �[1m�[32m1 passed�[39m�[22m�[90m (1)�[39m
�[2m      Tests �[22m �[1m�[32m16 passed�[39m�[22m�[90m (16)�[39m
�[2m   Start at �[22m 15:21:46
�[2m   Duration �[22m 6.42s�[2m (transform 35ms, setup 0ms, import 44ms, tests 6.30s, environment 0ms)�[22m


@github-actions

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

OpenSSF Scorecard

Scorecard details
PackageVersionScoreDetails
npm/@google/genai ^2.30.0 UnknownUnknown
npm/@google/genai 2.30.0 UnknownUnknown
pip/fastapi 0.146.0 UnknownUnknown
pip/filelock 4.2.2 UnknownUnknown
pip/fastapi 0.146.0 UnknownUnknown
pip/filelock 4.2.2 UnknownUnknown
pip/openai 3.35.1 UnknownUnknown
pip/platformdirs 4.13.4 UnknownUnknown
npm/@google/genai 2.30.0 UnknownUnknown
pip/fastapi 0.146.0 UnknownUnknown
pip/fastapi 0.146.0 UnknownUnknown
pip/filelock 4.2.2 UnknownUnknown
pip/openai 3.35.1 UnknownUnknown
pip/platformdirs 4.13.4 UnknownUnknown
pip/filelock 4.2.2 UnknownUnknown

Scanned Files

  • apps/web/package.json
  • docs/guides/requirements.txt
  • docs/knowledge_prototypes/universal-automation-service/requirements.txt
  • package-lock.json
  • requirements.txt

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Required exact-head CI, build, and security validation remain unconfirmed in the supplied evidence.

No open issues 🎉

What changed in this PR

Upgrades the direct Gemini SDK and adds offline regression coverage for continuation reliability, addressing #2445 without changing gateway routing or application behavior.

Changes:

  • Raises root and web @google/genai floors to ^2.30.0.
  • Pins the shared lockfile resolution to 2.30.0.
  • Adds 12 contract cases covering continuation, grounding, safety termination, error propagation, and request serialization.
File Description
package.json Raises the root SDK dependency floor.
package-lock.json Updates both dependency specs and the SDK resolution.
apps/​web/​src/​lib/​__tests__/​gemini-sdk-continuation.test.ts Adds offline tests using the real SDK with synthetic transport responses.
apps/​web/​package.json Aligns the web SDK dependency floor.

Review effort: Balanced

Copy link
Copy Markdown
Owner Author

Final implementation receipt — October 18, 2026

Head: b54bcfef377278f9ad293cb5b698d455744df5d7; base: 560f07120dee5294da0af0f2aab8eec8b79de8b5.
Decision: TEST complete; implementation READY FOR MERGE REVIEW, not merged.

  • All 21 applicable checks from MERGE_POLICY.md plus the active issue-closing ruleset report success on this exact head, including build, all three Python matrices, test-frontend, dependency-review, coverage, E2E, CodeQL and security scans. CI run.
  • GitHub reports mergeable=true, mergeable_state=clean. Vercel preview READY.
  • Copilot completed review with no open code issues; its earlier request to confirm CI is now satisfied by the exact-head results above. Inline review threads: zero. CodeRabbit skipped automatic review due to repository star policy; its status is success. No independent human approval is claimed.
  • Local: 44 focused tests pass; full web suite 1532 pass / 28 skip (26 optional Origin GATE Redis, one Video Pack store integration, one clip probe). Type-check and targeted lint pass. Local no-upload build succeeds after moving aside aborted build cache. Repository config restored; worktree clean. Remote exact-config Build web app and Build web production image both pass.
  • Package and lockfile diff is limited to @google/genai 2.24.0 → 2.30.0; 12 transport-level regression cases added. No app routing changes.
  • Standard local build initially hit an automatic-approval rejection for Sentry external egress; the safer local build explicitly disabled telemetry/uploads/releases. No override of that rejection was attempted.
  • Ownership: groupthinking. Broad batch fix: bump the npm-minor-patch group across 1 directory with 37 updates #2444 retains its unrelated changes and is marked for reconciliation with this PR.
  • Durable ledger: implementation action120; publication/reconciliation actions121–135, associated read-back reviews. Issue2445 links this PR.

Next action: obtain approval identifying PR #2446 or this exact head under the current Watch exact-PR merge rule; then re-fetch head, checks, reviews, mergeability and use expected-head protection to merge. Do not infer production acceptance or live Gemini cost/latency from offline fixtures. No production deployment was initiated manually.

This branch was successfully deployed

1 active deployment
Preview — b54bcfef Deployed Oct 18, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

javascript Pull requests that update javascript code needs-reconciliation tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Upgrade @google/genai to 2.30+ with continuation and grounding regressions

2 participants