Skip to content

Add Gemini 3.8 Live dialog support - #101

Merged
pragmatrix merged 16 commits into
masterfrom
feature/gemini-3-8-live
Sep 21, 2026
Merged

pragmatrix merged 16 commits into
masterfrom
feature/gemini-3-8-live

Conversation

@pragmatrix

Copy link
Copy Markdown
Owner

Why

Add support for Gemini 3.8 Live models, including their model-specific thinking, tool scheduling, interaction lifecycle, transcription, and client-content semantics.

Summary

  • Add standard and Extended Thinking Gemini 3.8 Live model support.
  • Add model-specific validation for thinking levels, tool behavior, and response scheduling.
  • Add interaction-in-progress events and incremental client content.
  • Add transcription modes and language hints.
  • Update the Gemini Live submodule for optional tool-call IDs and scheduling fields.
  • Bump the workspace version to 3.9.0.

Validation

  • cargo fmt --all -- --check
  • cargo test --workspace
  • cargo clippy --workspace --all-targets -- -D warnings

Note

This pull request was developed with assistance from an AI coding agent alongside the author.

@pragmatrix

pragmatrix commented Sep 21, 2026 •

Copy link
Copy Markdown
Owner Author

What's changed

  • Fixed the gemini-live-rs workspace compile break: gemini-live-recorder and gemini-live-cli had not been updated for the optional tool-call ids (FunctionResponse.id → Option<String>) and the new scheduling field; crate checks pass for the whole workspace now.
  • Corrected ADR 0006: omitted function-declaration behavior defaults to blocking, not non-blocking, per Google's Live API tool-use guide ("a declaration without behavior will still pause all interactions with the model"). The scheduling validation in google-dialog already matches the documented default, so only the ADR text changed.

What's open

Review findings noted but deferred:

  • (High, gemini-live-rs) Two concurrent id-less tool calls collide on the empty-string dispatch key in the harness controller, losing the first call's cancellation handle.
  • (Medium, gemini-live-rs) InteractionInProgress is not handled by the CLI TUI and recorder consumers — only TurnComplete flushes pending model text, which will stall on 3.8 models.
  • (Medium, gemini-live-rs) An unknown interactionStatus value fails deserialization of the entire server message.
  • (Medium, gemini-live-rs) A malformed GoAway time_left (NaN/negative/non-finite) panics the session runner; an unparseable one pends the reconnect deadline forever.
  • (Medium, parent) On 3.8, output transcription is finalized at every interaction boundary, so one assistant turn can produce several final text events — consumers should expect that; worth documenting in ADR 0006.
  • (Low) Dialog example transcription-override doc comments are stale ("Ok/Err", "enabled by default" no longer applies); gemini-live-rs resume-guard can't distinguish "no checkpoint yet" from "unsafe resumption".
  • The parent-side submodule pointer bump to the gemini-live-rs fix is still uncommitted and its context-switch branch is unpushed. (submodule context-switch branch is pushed; parent pointer bump landed as cb02b3f)

Commits:

  • 2d9ce02 — dialog: rename stdin input enum ServiceEvent to InputEvent
  • b4903c8 — adr: omitted function behavior defaults to blocking, not non-blocking
  • cb02b3f — gemini-live: update submodule for optional tool call ids
  • gemini-live-rs commit in the submodule fork, pushed to pragmatrix/gemini-live-rs branch context-switch (cross-repo, won't auto-link here): 0505325 — recorder, cli: track optional tool call ids after FunctionResponse changes

This comment was created entirely with AI assistance.

@pragmatrix
pragmatrix merged commit 6b2a10f into master Sep 21, 2026
3 checks passed
@pragmatrix
pragmatrix deleted the feature/gemini-3-8-live branch September 21, 2026 17:22
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