Skip to content

fix(live): Resolve systemic parts[0] indexing bugs (Fixes #6616) - #6617

Open
Harshitmishra001 wants to merge 1 commit into
google:mainfrom
Harshitmishra001:fix-live-parts-validation
Open

fix(live): Resolve systemic parts[0] indexing bugs (Fixes #6616)#6617
Harshitmishra001 wants to merge 1 commit into
google:mainfrom
Harshitmishra001:fix-live-parts-validation

Conversation

@Harshitmishra001

Copy link
Copy Markdown

This PR introduces systemic fixes to resolve fragile parts[0] indexing assumptions in the core Gemini Live API connection and flow modules.

  1. Fixes a validation bypass where mixed-content blocks dropped tool responses instead of raising a ValueError.
  2. Fixes a data drop in multi-part streaming by iterating over all parts in a chunk.
  3. Decouples audio caching from parts[0] to scan all parts.

Please ensure you have read the contribution guide before creating a pull request.

Link to Issue or Description of Change

1. Link to an existing issue (if applicable):

2. Or, if no issue exists, describe the change:

If applicable, please follow the issue templates to provide as much detail as
possible.

Problem:
N/A - See Issue #6616 for full details.

Solution:
N/A - See Issue #6616 for full details.

Testing Plan

Please describe the tests that you ran to verify your changes. This is required
for all PRs that are not small documentation or typo fixes.

Unit Tests:

  • I have added or updated unit tests for my change.
  • All unit tests pass locally.

Please include a summary of passed pytest results.

All 114 test cases across the models/test_gemini_llm_connection.py and flows/llm_flows/test_base_llm_flow.py test suites passed perfectly without any regressions.

Two new regression tests were explicitly added:

  • test_send_content_mixed_content_raises_value_error: Verifies that a Content payload containing both a text part and a function_response part properly triggers the ValueError.
  • test_receive_multiplexed_thought_and_text: Verifies the state machine gracefully processes a single chunk containing a thought part followed by a non-thought text part.

Manual End-to-End (E2E) Tests:

Please provide instructions on how to manually test your changes, including any
necessary setup or configuration. Please provide logs or screenshots to help
reviewers better understand the fix.

N/A - The framework-level streaming bugs are fully covered by the updated asynchronous stream unit tests.

Checklist

  • I have read the CONTRIBUTING.md document.
  • I have performed a self-review of my own code.
  • I have commented my code, particularly in hard-to-understand areas.
  • I have added tests that prove my fix is effective or that my feature works.
  • New and existing unit tests pass locally with my changes.
  • I have manually tested my changes end-to-end.
  • Any dependent changes have been merged and published in downstream modules.

Additional context

Why This Matters
For all of these fixes, the core question is: Can the Live API actually send a multi-part chunk today?
The answer is: while it might be rare in current API responses for certain models, the Gemini protocol does not prohibit it and the API could technically stream multiplexed chunks (e.g., an image with text, or multiple tool responses at once). By removing these fragile parts[0] assumptions, we guarantee the framework is robust against future Live API updates or any edge-case multimodal streaming scenarios, preventing silent data drops or misrouted backend calls.

This PR introduces systemic fixes to resolve fragile parts[0] indexing assumptions in the core Gemini Live API connection and flow modules.

1. Fixes a validation bypass where mixed-content blocks dropped tool responses instead of raising a ValueError.
2. Fixes a data drop in multi-part streaming by iterating over all parts in a chunk.
3. Decouples audio caching from parts[0] to scan all parts.
@adk-bot adk-bot added the live [Component] This issue is related to live, voice and video chat label Aug 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

live [Component] This issue is related to live, voice and video chat

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Systemic parts[0] indexing drops multimodal streaming data and bypasses content validation

3 participants