Conversation
* Rename REST to HTTP+JSON to be consistent with the spec. * a2a.json is derived from a2a.proto (not pulled from GitHub) * maybe generate junitreport.xml and use existing tool for HTML reports There are other things we discussed: * [ ] having the tck query the agent to find the exposed capabilities, create a test plan to run (so that any capabilities requirements would be tested) and then run the tests * [ ] having the grpc stubs be versioned * [ ] keep our own mapping of the spec requirements (to avoid having to section numbers diverge) * [ ] having the ability to periodically pull the latest a2a.proto and compare what's new/updated/removed with the current requirements tested by the tck Signed-off-by: Jeff Mesnil <jmesnil@ibm.com>
Summary of ChangesHello @maeste, 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 foundational structure and core components for the A2A Technology Compatibility Kit (TCK) v1.0. It establishes the project's architecture, testing framework, and reporting mechanisms, laying the groundwork for comprehensive validation of A2A protocol implementations. Highlights
Using Gemini Code AssistThe 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
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 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
|
There was a problem hiding this comment.
Code Review
This pull request introduces a comprehensive Product Requirements Document (PRD) and a detailed project plan for the A2A TCK. The documentation is thorough and well-structured. However, the PR title 'Refactoring' is misleading given that the changes are additive, introducing new documentation rather than refactoring existing code. A title like 'feat: Add A2A TCK PRD and project plan' would be more accurate.
A significant structural issue is the inclusion of the PRD/a2a-tck prd/ directory, which appears to be a redundant and unintentionally committed Obsidian vault. I recommend removing this directory to maintain a clean repository structure.
I've added a few specific comments on the PRD to address some inconsistencies and a potential bug in a code snippet.
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
| __pycache__/ | ||
| *.pyc | ||
| .uv/ | ||
| uv.lock # or keep tracked - TBD |
There was a problem hiding this comment.
let's track uv.lock in Git
| - pytest (test framework) | ||
| - httpx (HTTP client for JSON-RPC and REST) | ||
| - grpcio (gRPC client) | ||
| - grpcio-tools (proto compilation) |
There was a problem hiding this comment.
not required, let's use buildbuf to generate the Python code
| "pytest>=8.0", | ||
| "httpx>=0.27", | ||
| "grpcio>=1.60", | ||
| "grpcio-tools>=1.60", |
|
|
||
| **Consider**: | ||
| - Document the version/commit hash for traceability | ||
| - Consider a script or Makefile target for syncing updates |
There was a problem hiding this comment.
The script will use buildbuf/buf to generate the gRPC stub from the remote a2a.proto reference
|
|
||
| ## Acceptance Criteria | ||
| <!-- AC:BEGIN --> | ||
| - [ ] #1 specification/a2a.proto exists and matches official A2A spec |
| - Message classes accessible: Task, Message, Part, Artifact, AgentCard | ||
|
|
||
| ### Known Issues | ||
| - grpc_tools may generate imports like `import a2a_pb2` which need fixing to `from specification.generated import a2a_pb2` |
| ## Description | ||
|
|
||
| <!-- SECTION:DESCRIPTION:BEGIN --> | ||
| Generate or create the JSON Schema (a2a.json) derived from a2a.proto for validating JSON-RPC and REST responses. |
There was a problem hiding this comment.
Generate the JSON Schema (a2a.json)
| **Target**: `specification/a2a.json` | ||
|
|
||
| **Options**: | ||
| 1. Use a proto-to-jsonschema tool if one exists |
There was a problem hiding this comment.
| https://raw.githubusercontent.com/a2aproject/A2A/main/specification/json/a2a.json | ||
| ``` | ||
|
|
||
| **Option B: Use proto-to-jsonschema tool** |
There was a problem hiding this comment.
use Option B based on https://github.com/a2aproject/A2A/blob/main/scripts/proto_to_json_schema.sh
|
|
||
| # Helper functions | ||
| def get_requirements_by_section(section_prefix: str) -> list[RequirementSpec]: | ||
| """Get all requirements for a section (e.g., '3.1').""" |
There was a problem hiding this comment.
that's to brittle to rely on the section from the spec, there is no commitment they are stable
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:
CONTRIBUTINGGuide.fix:which represents bug fixes, and correlates to a SemVer patch.feat:represents a new feature, and correlates to a SemVer minor.feat!:, orfix!:,refactor!:, etc., which represent a breaking change (indicated by the!) and will result in a SemVer major.Fixes #<issue_number_goes_here> 🦕