Skip to content

fix: enable follow up task issue on non blocking request#160

Merged
guglielmo-san merged 13 commits into
a2aproject:mainfrom
guglielmo-san:fix_issue_on_non_blocking_result
Oct 31, 2025
Merged

fix: enable follow up task issue on non blocking request#160
guglielmo-san merged 13 commits into
a2aproject:mainfrom
guglielmo-san:fix_issue_on_non_blocking_result

Conversation

@guglielmo-san

@guglielmo-san guglielmo-san commented Oct 30, 2025

Copy link
Copy Markdown
Member

Description

This PR ensure that when a follow up task is sent to a task in a non final state using the NON blocking mode, the _processEvents will return the first available Message/Task status published on the bus, and will not throw an error.
Follows the implementation of Python SDK

This PR will make this tck-test pass.
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
  • Appropriate docs were updated (if necessary)

Fixes #156 🦕

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @guglielmo-san, 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 resolves an issue where the system might not correctly provide a valid Task Response when a subsequent task is initiated on a task that has not yet reached a final state, particularly in non-blocking scenarios. The core change ensures that the firstResultResolver accurately captures the current Task object, enhancing the reliability of task state reporting. The addition of a new, detailed test case confirms that non-blocking follow-up tasks now correctly maintain their history and integrate artifacts as expected.

Highlights

  • Non-blocking Task Result Handling: Corrected the logic within _processEvents to ensure that when a firstResultResolver is active and an event of kind 'task' is processed, the current Task object is explicitly retrieved from the resultManager. This addresses an issue where the resolver might not return a valid Task Response for follow-up tasks in a non-final state.
  • New Test Case for Non-blocking Follow-up Tasks: Added a comprehensive test case to validate the sendMessage method's behavior when a follow-up message is sent to an existing, non-terminal task in non-blocking mode. This test verifies that the initial response correctly reflects a 'working' state and that the final task, after all events are processed, contains the complete history and any associated artifacts.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/unit-tests.yml
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 by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

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 pull request 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 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. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

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.

@gemini-code-assist gemini-code-assist Bot 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.

Code Review

This pull request aims to fix an issue with non-blocking calls for follow-up messages. The logic change in default_request_handler.ts correctly identifies the problem but introduces a critical bug by not handling a potential undefined return value, which could lead to runtime errors. I've provided a suggestion to fix this. Additionally, the new test case, while comprehensive, has an unconventional placement of sinon.useFakeTimers(), which I've flagged as a medium-severity issue for improved test robustness and maintainability.

Comment thread src/server/request_handler/default_request_handler.ts Outdated
Comment thread test/server/default_request_handler.spec.ts Outdated
@guglielmo-san guglielmo-san changed the title Fix issue on non blocking result fix: enable follow up task issue on non blocking request Oct 30, 2025
@guglielmo-san guglielmo-san requested a review from ishymko October 30, 2025 20:13

@ishymko ishymko left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

(if it was spotted via tck tests, let's link what was failing)

Comment thread src/server/request_handler/default_request_handler.ts Outdated
@guglielmo-san guglielmo-san merged commit 352dc05 into a2aproject:main Oct 31, 2025
3 checks passed
@guglielmo-san guglielmo-san deleted the fix_issue_on_non_blocking_result branch October 31, 2025 16:07
ishymko pushed a commit that referenced this pull request Nov 5, 2025
🤖 I have created a release *beep* *boop*
---


## [0.3.5](v0.3.4...v0.3.5)
(2025-11-05)


### Bug Fixes

* cancel/task now returns the expected 'cancelled' task status
([#158](#158))
([3eec0bd](3eec0bd))
* correct the default value in the agentCardPath comment
([#130](#130))
([3279c7b](3279c7b))
* enable follow up task issue on non blocking request
([#160](#160))
([352dc05](352dc05))
* ensure push notifications order
([#141](#141))
([22360e6](22360e6))
* ensure user messages are added to existing tasks
([#138](#138))
([00fb916](00fb916))
* validate JSON-RPC params
([#155](#155))
([5b39f4d](5b39f4d))
* validate JSON-RPC request id according to the spec
([#152](#152))
([9558c36](9558c36))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
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.

[Bug]: A follow-up on a non blocking task, will return an error

2 participants