Skip to content

feat: isDelta property in Message for streaming #268

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

acensia
Copy link

@acensia acensia commented Jul 2, 2025

Description

Thank you for opening a Pull Request!
Before submitting your PR, there are a few things you can do to make sure it goes smoothly:

  • Follow the CONTRIBUTING Guide.
  • Make your Pull Request title in the https://www.conventionalcommits.org/ specification.
    • Important Prefixes for release-please:
      • fix: which represents bug fixes, and correlates to a SemVer patch.
      • feat: represents a new feature, and correlates to a SemVer minor.
      • feat!:, or fix!:, refactor!:, etc., which represent a breaking change (indicated by the !) and will result in a SemVer major.
  • Ensure the tests and linter pass (Run nox -s format from the repository root to format)
  • Appropriate docs were updated (if necessary)

Fixes a2aproject/A2A#822 🦕

@acensia acensia requested a review from a team as a code owner July 2, 2025 05:16
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Summary of Changes

Hello @acensia, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces core support for 'message deltas,' enabling the system to handle incremental updates to messages. This feature is crucial for scenarios like streaming responses, where message content is built up and delivered in chunks rather than as a single, complete unit, improving the user experience for long-running or dynamic outputs.

Highlights

  • Message Type Enhancement: The Message data model now includes an isDelta boolean field to explicitly mark messages as incremental updates, enabling the system to differentiate between complete messages and partial, streaming updates.
  • Delta Message Accumulation Logic: The TaskManager's save_task_event method has been updated to intelligently handle delta messages. If a new message is a delta and shares the messageId with the last message in the task's history, its parts are appended to the existing message's parts, effectively building up the complete message over time.
  • Event Consumption Behavior: The EventConsumer's consume_all method now considers a Message event as 'final' only if it is not a delta message. This ensures that streaming delta messages do not prematurely terminate event processing, allowing for continuous updates.
  • Default Message Creation: New agent messages generated by TaskUpdater are now explicitly initialized with isDelta=False to maintain expected behavior for non-delta messages, ensuring that only intentionally marked messages are treated as deltas.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@acensia acensia force-pushed the feat/messageDelta branch from 54623fa to 656a8cf Compare July 2, 2025 05:18
@acensia acensia closed this Jul 2, 2025
@acensia acensia reopened this Jul 2, 2025
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces support for message deltas. A potential IndexError has been identified in src/a2a/server/tasks/task_manager.py when handling delta messages and an empty history. A code suggestion has been provided to address this.

@acensia acensia changed the title Feat/message delta feat: isDelta property in Message for streaming Jul 2, 2025
@acensia acensia force-pushed the feat/messageDelta branch 2 times, most recently from 58acd67 to b652b5b Compare July 2, 2025 05:41
@acensia acensia force-pushed the feat/messageDelta branch from b652b5b to 05497e1 Compare July 2, 2025 05:50
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.

[Feat]: Message object for streaming
1 participant