Skip to content

Conversation

pstephengoogle
Copy link
Contributor

@pstephengoogle pstephengoogle commented Aug 28, 2025

In production systems the persistence of the task should be protected based on the credentials of the creator of the task (e.g. a user id or email). Additionally, applications may have other criteria to use for task persistence (like application name, or region task runs in).


Providing the ServerCallContext into the calls to the get, save and delete interface for the task store allows customization of the persisted task data based on the characteristics needed for a real solution. Agent implementors can construct the appropriate ServerCallContext based on the incoming request and use that information at task creation, retrieval and deletion time.

Fixes #442 🦕

@pstephengoogle pstephengoogle requested a review from a team as a code owner August 28, 2025 21:39
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 @pstephengoogle, 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 the ServerCallContext into task store operations. The primary goal is to enable the passing of contextual information from server calls down to the task storage layer. This foundational change allows for future enhancements such as context-aware logging, auditing, or specific data handling based on the origin or metadata of a server call. The changes involve updating method signatures across the TaskStore interface and its implementations, as well as propagating this context through the TaskManager and relevant request handlers.

Highlights

  • TaskStore Interface Update: The abstract TaskStore interface (and its concrete implementations like DatabaseTaskStore and InMemoryTaskStore) has been updated to include an optional ServerCallContext parameter in its save, get, and delete methods.
  • Context Propagation in TaskManager: The TaskManager now accepts and stores the ServerCallContext during initialization, ensuring that subsequent calls to task_store.get and task_store.save within the manager pass this context.
  • Handler Integration: Various request handlers in default_request_handler.py have been modified to pass the ServerCallContext to task_store.get calls and TaskManager instantiations, completing the propagation chain from the server call to the task store operations.
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 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.

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 successfully adds ServerCallContext to task store operations, propagating it from request handlers down to the task store implementations. The changes are consistent and follow the feature's intent.

However, I've identified a critical bug in TaskManager where a context variable is initialized with one name but referenced with another, which will cause runtime errors. I've also noted that the changes to method signatures break existing unit tests for both DefaultRequestHandler and TaskManager, as mock assertions are no longer valid. My review includes comments with specific details and suggestions to address these issues.

@pstephengoogle pstephengoogle changed the title [feat] Add ServerCallContext into task store operations feat: Add ServerCallContext into task store operations Aug 28, 2025
@holtskinner holtskinner merged commit e3e5c4b into main Sep 2, 2025
8 checks passed
@holtskinner holtskinner deleted the task_store branch September 2, 2025 16:35
holtskinner pushed a commit that referenced this pull request Sep 2, 2025
🤖 I have created a release *beep* *boop*
---


##
[0.3.4](v0.3.3...v0.3.4)
(2025-09-02)


### Features

* Add `ServerCallContext` into task store operations
([#443](#443))
([e3e5c4b](e3e5c4b))
* Add extensions support to `TaskUpdater.add_artifact`
([#436](#436))
([598d8a1](598d8a1))


### Bug Fixes

* convert auth_required state in proto utils
([#444](#444))
([ac12f05](ac12f05))
* handle concurrent task completion during cancellation
([#449](#449))
([f4c9c18](f4c9c18))
* Remove logger error from init on `rest_adapter` and `jsonrpc_app`
([#439](#439))
([9193208](9193208))
* resolve streaming endpoint deadlock by pre-consuming request body
([#426](#426))
([4186731](4186731))
* Sync jsonrpc and rest implementation of authenticated agent card
([#441](#441))
([9da9ecc](9da9ecc))


### Performance Improvements

* Improve performance and code style for `proto_utils.py`
([#452](#452))
([1e4b574](1e4b574))

---
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.

[Feat]: Introduce server call context into the task store interface
3 participants