Skip to content

Conversation

@pstephengoogle
Copy link
Contributor

Introduces gRPC support at the server and client interfaces.

  • Does not require changes to the AgentExecutors, simply a different wrapper at the binary server level
  • Example to follow in a2a-samples
  • Will introduce spec change to enable announcement of supported transport(s) by url for an agent in a following PR

- add case statement to use the asyncio.Queue.shutdown method for 3.13+
- add special handling to allow for similar semantics as
  asyncio.Queue.shutdown for 3.12

Tested on multiple samples in the a2a repo and some examples in this
repo
- Introduces an A2AGrpcClient to talk to server over grpc
- Introduces GrpcHandler to tranlate the gRPC transport to the internal
  python data model and back.
- A set of transform operations in proto_utils.py to handle the
  transform

This is a starting point and can be iterated and optimized as we move
forward, especially trying to automate the transform code so it stays in
sync.
@pstephengoogle pstephengoogle requested a review from a team as a code owner June 4, 2025 20:38
@pstephengoogle pstephengoogle changed the title Add gRPC server and client support feat: Add gRPC server and client support Jun 4, 2025
pstephengoogle and others added 11 commits June 4, 2025 20:53
- add case statement to use the asyncio.Queue.shutdown method for 3.13+
- add special handling to allow for similar semantics as
  asyncio.Queue.shutdown for 3.12

Tested on multiple samples in the a2a repo and some examples in this
repo
- Introduces an A2AGrpcClient to talk to server over grpc
- Introduces GrpcHandler to tranlate the gRPC transport to the internal
  python data model and back.
- A set of transform operations in proto_utils.py to handle the
  transform

This is a starting point and can be iterated and optimized as we move
forward, especially trying to automate the transform code so it stays in
sync.
@holtskinner
Copy link
Member

On the spelling errors, there's a few spots where the docstring splits lines in the middle of a word.

delegat
dler
Messag

@holtskinner
Copy link
Member

Finally figured out how to get the linter to ignore the auto-generated pb2 files. Everything else should be valid. We can also exclude the remaining errors if those files are auto-generated.

@pstephengoogle pstephengoogle merged commit a981605 into main Jun 6, 2025
6 checks passed
@pstephengoogle pstephengoogle deleted the updates branch June 6, 2025 20:47
holtskinner pushed a commit that referenced this pull request Jun 9, 2025
🤖 I have created a release *beep* *boop*
---


##
[0.2.6](v0.2.5...v0.2.6)
(2025-06-09)


### ⚠ BREAKING CHANGES

* Add FastAPI JSONRPC Application
([#104](#104))

### Features

* Add FastAPI JSONRPC Application
([#104](#104))
([0e66e1f](0e66e1f))
* Add gRPC server and client support
([#162](#162))
([a981605](a981605))
* add reject method to task_updater
([#147](#147))
([2a6ef10](2a6ef10))
* Add timestamp to `TaskStatus` updates on `TaskUpdater`
([#140](#140))
([0c9df12](0c9df12))
* **spec:** Add an optional iconUrl field to the AgentCard 🤖
([a1025f4](a1025f4))


### Bug Fixes

* Correctly adapt starlette BaseUser to A2A User
([#133](#133))
([88d45eb](88d45eb))
* Event consumer should stop on input_required
([#167](#167))
([51c2d8a](51c2d8a))
* Fix Release Version
([#161](#161))
([011d632](011d632))
* generate StrEnum types for enums
([#134](#134))
([0c49dab](0c49dab))
* library should released as 0.2.6
([d8187e8](d8187e8))
* remove error types from enqueable events
([#138](#138))
([511992f](511992f))
* **stream:** don't block event loop in EventQueue
([#151](#151))
([efd9080](efd9080))
* **task_updater:** fix potential duplicate artifact_id from default v…
([#156](#156))
([1f0a769](1f0a769))


### Documentation

* remove final and metadata fields from docstring
([#66](#66))
([3c50ee1](3c50ee1))
* Update Links to Documentation Site
([5e7d418](5e7d418))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
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.

4 participants