Skip to content

Refactoring#125

Open
maeste wants to merge 5 commits intoa2aproject:mainfrom
maeste:refactoring
Open

Refactoring#125
maeste wants to merge 5 commits intoa2aproject:mainfrom
maeste:refactoring

Conversation

@maeste
Copy link
Collaborator

@maeste maeste commented Jan 28, 2026

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 pass
  • Appropriate READMEs were updated (if necessary)

Fixes #<issue_number_goes_here> 🦕

maeste and others added 3 commits January 27, 2026 15:25
* 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>
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @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

  • Project Structure: Establishes a well-defined directory structure for the A2A TCK, promoting organization and maintainability.
  • Test Framework: Sets up a robust test framework using pytest, enabling comprehensive validation of A2A protocol implementations.
  • Compliance Reporting: Implements a compliance reporting system to generate machine-readable and human-readable reports, providing clear insights into A2A specification conformance.
  • Transport Bindings: Supports multiple transport bindings (gRPC, JSON-RPC, REST) to ensure interoperability across different communication protocols.
  • Detailed Documentation: Provides extensive documentation, including a product requirements document (PRD), to guide implementation and usage of the TCK.
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.

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

jmesnil and others added 2 commits January 28, 2026 13:38
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
Copy link
Contributor

Choose a reason for hiding this comment

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

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)
Copy link
Contributor

Choose a reason for hiding this comment

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

not required, let's use buildbuf to generate the Python code

"pytest>=8.0",
"httpx>=0.27",
"grpcio>=1.60",
"grpcio-tools>=1.60",
Copy link
Contributor

Choose a reason for hiding this comment

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

to be removed


**Consider**:
- Document the version/commit hash for traceability
- Consider a script or Makefile target for syncing updates
Copy link
Contributor

Choose a reason for hiding this comment

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

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
Copy link
Contributor

Choose a reason for hiding this comment

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

to remove

- 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`
Copy link
Contributor

Choose a reason for hiding this comment

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

to remove

## Description

<!-- SECTION:DESCRIPTION:BEGIN -->
Generate or create the JSON Schema (a2a.json) derived from a2a.proto for validating JSON-RPC and REST responses.
Copy link
Contributor

Choose a reason for hiding this comment

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

Generate the JSON Schema (a2a.json)

**Target**: `specification/a2a.json`

**Options**:
1. Use a proto-to-jsonschema tool if one exists
Copy link
Contributor

Choose a reason for hiding this comment

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

https://raw.githubusercontent.com/a2aproject/A2A/main/specification/json/a2a.json
```

**Option B: Use proto-to-jsonschema tool**
Copy link
Contributor

Choose a reason for hiding this comment

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


# Helper functions
def get_requirements_by_section(section_prefix: str) -> list[RequirementSpec]:
"""Get all requirements for a section (e.g., '3.1')."""
Copy link
Contributor

Choose a reason for hiding this comment

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

that's to brittle to rely on the section from the spec, there is no commitment they are stable

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.

2 participants