Skip to content

Replace Google Veo previews with Gemini Omni Flash; remove retired image/video models - #418

Merged
ProfSynapse merged 6 commits into
mainfrom
feat/gemini-omni-video
Oct 14, 2026
Merged

ProfSynapse merged 6 commits into
mainfrom
feat/gemini-omni-video

Conversation

@ProfSynapse

Copy link
Copy Markdown
Owner

Summary

Google shuts down every Veo 3.1 preview id on 2026-10-22. This replaces Google-direct video with Gemini Omni Flash (gemini-omni-1.1-flash, GA) over the Gemini Interactions API, and removes every image/video model that is shut down or scheduled to shut down.

Video

  • GoogleVideoAdapter rewritten for POST /v1beta/interactions with background: true and polling GET /interactions/{id}; inline or Files API download (key only ever sent to generativelanguage.googleapis.com); abort cancels the interaction and clears timers; timeouts hand back the interaction id for checkGeneratedArtifact; clear errors for safety blocks, quota, auth and unsupported options. Options: 16:9 / 9:16, 360p–4K, 3–10 s; audio is always generated; negative prompts become "Do not include: …".
  • Removed veo-3.1-generate-preview and its predictLongRunning path. OpenRouter Veo 3.1 / Fast / Lite unchanged and remain the shipped default.

Images

  • Removed gpt-image-1, gpt-image-1.5, gpt-image-1-mini, gemini-2.5-flash-image, gemini-3.1-flash-image-preview, gemini-3-pro-image-preview, and OpenRouter gpt-5-image / gpt-5-image-mini (built on GPT Image 1).

Saved settings and tool calls

  • Removed ids map to each provider's documented successor (RetiredMediaModels.ts): GPT Image 1/1.5/5 → gpt-image-2.5-sunburst, minis → gpt-image-2.5-flare, gemini-2.5-flash-image → gemini-3.1-flash-lite-image, old Gemini previews → current GA ids, all Google Veo ids → gemini-omni-1.1-flash (aspect/resolution kept where supported).
  • Normalised in memory on load and sync; data.json is not rewritten, so devices still on an older Nexus keep an id they recognise. Tool calls naming a removed id run on the replacement and say so.

Test plan

  • npm run build (incl. schemas check), registry gate for google/openrouter
  • Full Jest: 553 suites / 6,625 tests; new tests fail on main where meaningful (33 adapter tests, 24 retired-id tests, settings and service mapping)
  • Free listing checks: Google, OpenAI and OpenRouter list every id kept or added
  • Paid live smoke through the shipped adapters (3 calls, all succeeded first time): Omni 3 s 360p 16:9 → valid 640×360 MP4 with audio; gpt-image-1 → mapped to gpt-image-2.5-sunburst → 1024² PNG; Google default gemini-3.1-flash-image → JPEG
  • Files API URI download, cancel, and Google error-body shapes are mock-tested only

🤖 Generated with Claude Code

ProfSynapse and others added 6 commits October 14, 2026 13:59
…teractions API

Google shuts down every Veo 3.1 preview id on 2026-10-22 and names
gemini-omni-1.1-flash as the replacement. That model is served only by the
Interactions API, so GoogleVideoAdapter is rewritten for it:

- POST /v1beta/interactions with background: true and a video
  response_format (aspect_ratio, resolution, duration as "<n>s"); poll
  GET /v1beta/interactions/{id}; read the MP4 from the model_output step,
  inline base64 or a Files API URI polled until ACTIVE and downloaded with
  the key. Falls back to the synchronous call if background is rejected.
- Abortable polling: sleep() takes a signal, clears its timer on abort and
  drops its listener when it fires; an abort asks Google to cancel. A
  timeout surfaces the interaction id for checkGeneratedArtifact.
- Errors map to safety block, quota, key/access, unsupported option and
  expired job messages. generateAudio:false and out-of-range seconds are
  rejected before any request; a negative prompt is appended to the prompt.
- Catalog: gemini-omni-1.1-flash (16:9/9:16, 360p-4k, 3-10 s) replaces
  veo-3.1-generate-preview; VideoResolution gains 360p. Jobs left on the
  old Veo operation path fail with a message instead of polling.
- RetiredMediaModels maps retired image and video ids to the documented
  successor. Saved defaults are normalized in memory on load and sync,
  never rewritten in data.json; generateVideo calls naming a Veo preview
  id run on Omni and say so in the result.

The shipped default stays OpenRouter Veo 3.1 Fast until Omni has passed a
live generation; none was possible here (no Google key).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…essors

Removed from the catalogs, per the providers' deprecation pages:
- OpenAI: gpt-image-1 (2026-10-23), gpt-image-1.5 and gpt-image-1-mini
  (2026-12-01). The fixed-size branch they needed is gone; every remaining
  OpenAI model takes arbitrary WIDTHxHEIGHT.
- Google and OpenRouter: gemini-2.5-flash-image (2027-03-15) and the
  gemini-3.1-flash-image-preview / gemini-3-pro-image-preview ids
  (2026-06-25), plus the imageSize-less branch only 2.5 used.
- OpenRouter: gpt-5-image and gpt-5-image-mini, built on GPT Image 1 and
  GPT Image 1 Mini.

generateImage calls and conversations that still name one of these run on
the documented successor (gpt-image-2.5-sunburst / -flare,
gemini-3.1-flash-lite-image, gemini-nano-banana-2.1, gemini-3-pro-image) and
the result says so. OpenRouter's catalog now starts with its default,
gemini-3.1-flash-image, since tools fall back to the first entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ites

Every retired image and video id is absent from its provider's catalog and
its successor is present on the same provider; generateImage runs the
successor and says so; a conversation saved with a retired image model
restores the successor without rewriting its metadata.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…odel changes

generateImage loses the retired model ids from its enum and descriptions;
generateVideo describes Gemini Omni Flash and gains 360p.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…retired models

The add-video-model protocol now describes the Interactions API transport
and the Google smoke switch; both media protocols say how to retire a model
through RetiredMediaModels.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… the skill

The Google video smoke now logs each request line (method, URL, status;
never headers) so a run shows whether background polling or the
synchronous fallback ran. The add-video-model protocol warns that the keyed
Google listing reports Omni with generateContent and keeps listing preview
ids past shutdown. The default-video comment records why Veo 3.1 Fast via
OpenRouter stays the default after Omni's first live run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ProfSynapse
ProfSynapse merged commit 32537ba into main Oct 14, 2026
1 check passed
@ProfSynapse
ProfSynapse deleted the feat/gemini-omni-video branch October 14, 2026 18:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant