Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
cbf5a09
chore: Update 1.0-dev branch (#542)
lkawka Nov 13, 2025
0111633
Merge remote-tracking branch 'upstream/main' into 1.0-dev
lkawka Nov 21, 2025
d5818e5
feat(spec): Add `tasks/list` method with filtering and pagination to …
a2a-bot Nov 24, 2025
044408f
chore: Merge main into 1.0-dev (#566)
lkawka Nov 24, 2025
1cc993c
refactor!: upgrade SDK to A2A 1.0 specs (#572)
muscariello Jan 24, 2026
5a2ca75
fix: use MySQL compatible syntax in list tasks (#651)
ishymko Feb 2, 2026
ba74f4c
Merge branch '1.0-dev' into ishymko/merge-main-1.0-dev
ishymko Feb 2, 2026
408f9ee
Merge remote-tracking branch 'origin/main' into ishymko/merge-main-1.…
ishymko Feb 2, 2026
40613ed
chore: merge main into 1.0-dev (#658)
ishymko Feb 2, 2026
760bc75
ci: run linter on 1.0-dev (#660)
ishymko Feb 2, 2026
8b95196
chore: revert merge main into 1.0-dev (#658)
ishymko Feb 12, 2026
ae53bef
Merge branch 'ishymko/merge-main-1.0-dev' into 1.0-dev
ishymko Feb 12, 2026
bab2a11
Merge remote-tracking branch 'origin/main' into 1.0-dev
ishymko Feb 12, 2026
3358305
refactor!: Update to Protocol v1.0.0-rc and fix all tests (#665)
muscariello Feb 12, 2026
5d42015
Merge remote-tracking branch 'origin/main' into 1.0-dev
ishymko Feb 13, 2026
9727f48
Merge branch '1.0-a2a_proto_refactor' into 1.0-dev-merge-proto-refactor
ishymko Feb 17, 2026
b5cfb1e
chore: temporary freeze A2A repo ref in buf
ishymko Feb 18, 2026
0623015
fix: fix bad "list tasks" merge for JSON-RPC (#698)
ishymko Feb 18, 2026
b306e44
chore: bring back removed files (#700)
ishymko Feb 18, 2026
e140694
test: add e2e client-server test (#704)
ishymko Feb 18, 2026
d729bfb
refactor: unify on_message_send in server (#707)
ishymko Feb 18, 2026
6132053
fix: return mandatory fields from list_tasks (#710)
ishymko Feb 19, 2026
427a75b
chore: regenerate latest types from A2A main (#712)
ishymko Feb 19, 2026
e71ac62
feat: send task as a first subscribe event (#716)
ishymko Feb 20, 2026
72a1007
fix: properly handle unset and zero history length (#717)
ishymko Feb 20, 2026
1d328e1
test: fix role enum value in TCK SUT agent (#725)
ishymko Feb 23, 2026
e67934b
fix: add history length and page size validations (#726)
ishymko Feb 23, 2026
a149a09
feat: use StreamResponse as push notifications payload (#724)
ishymko Feb 23, 2026
639a663
refactor: unify transport name constants usage (#728)
ishymko Feb 23, 2026
0dda885
Merge remote-tracking branch 'origin/main' into ishymko/merge-main
ishymko Feb 23, 2026
54f50c3
Merge remote-tracking branch 'origin/main' into ishymko/merge-main
ishymko Feb 23, 2026
b6eb107
refactor(client): remove URL resolution logic from transports (#732)
ishymko Feb 23, 2026
22e7a7e
Merge remote-tracking branch 'origin/main' into 1.0-dev
ishymko Feb 24, 2026
59b8871
build: prevent gen_proto.sh from hanging (#736)
ishymko Feb 24, 2026
dce3650
test: improve test_end_to_end.py (#738)
ishymko Feb 25, 2026
f3face0
fix(client): align send_message signature with BaseClient
Akshat8510 Feb 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Template taken from https://github.com/v8/v8/blob/master/.git-blame-ignore-revs.
# Template taken from https://github.com/v8/v8/blob/main/.git-blame-ignore-revs.
#
# This file contains a list of git hashes of revisions to be ignored by git blame. These
# revisions are considered "unimportant" in that they are unlikely to be what you are
Expand Down
33 changes: 33 additions & 0 deletions .github/actions/spelling/allow.txt
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
a2a
A2A
A2AFastAPI
AAgent
ACard
AClient
ACMRTUXB
aconnect
adk
AError
AException
AFast
agentic
AGrpc
aio
aiomysql
alg
amannn
aproject
ARequest
Expand All @@ -21,6 +26,9 @@ AStarlette
AUser
autouse
backticks
base64url
buf
bufbuild
cla
cls
coc
Expand All @@ -31,9 +39,11 @@ deepwiki
drivername
DSNs
dunders
ES256
euo
EUR
excinfo
FastAPI
fernet
fetchrow
fetchval
Expand All @@ -42,13 +52,20 @@ genai
getkwargs
gle
GVsb
hazmat
HS256
HS384
ietf
importlib
initdb
inmemory
INR
isready
jcs
jku
JOSE
JPY
JSONRPC
JSONRPCt
jwk
jwks
Expand All @@ -61,36 +78,52 @@ lifecycles
linting
Llm
lstrips
middleware
mikeas
mockurl
mysqladmin
notif
npx
oauthoidc
oidc
OpenAPI
openapiv
openapiv2
opensource
otherurl
pb2
postgres
POSTGRES
postgresql
proot
proto
protobuf
Protobuf
protoc
pydantic
pyi
pypistats
pyupgrade
pyversions
redef
respx
resub
RS256
RUF
SECP256R1
SLF
socio
sse
starlette
Starlette
sut
SUT
swagger
tagwords
taskupdate
testuuid
Tful
tiangolo
typ
typeerror
vulnz
2 changes: 2 additions & 0 deletions .github/actions/spelling/excludes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -87,5 +87,7 @@
^\.github/workflows/
CHANGELOG.md
^src/a2a/grpc/
^src/a2a/types/
^tests/
.pre-commit-config.yaml
(?:^|/)a2a\.json$
4 changes: 3 additions & 1 deletion .github/workflows/linter.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: Lint Code Base
on:
pull_request:
branches: [main]
branches: [main, 1.0-dev]
permissions:
contents: read
jobs:
Expand All @@ -22,6 +22,8 @@ jobs:
- name: Add uv to PATH
run: |
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
- name: Install Buf
uses: bufbuild/buf-setup-action@v1
- name: Install dependencies
run: uv sync --locked

Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: Run Unit Tests
on:
pull_request:
branches: [main]
branches: [main, 1.0-dev]
permissions:
contents: read
jobs:
Expand Down Expand Up @@ -52,6 +52,8 @@ jobs:
- name: Add uv to PATH
run: |
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
- name: Install Buf
uses: bufbuild/buf-setup-action@v1
- name: Install dependencies
run: uv sync --locked
- name: Run tests and check coverage
Expand Down
9 changes: 1 addition & 8 deletions .github/workflows/update-a2a-types.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,25 +22,18 @@ jobs:
uses: astral-sh/setup-uv@v7
- name: Configure uv shell
run: echo "$HOME/.cargo/bin" >> $GITHUB_PATH
- name: Install dependencies (datamodel-code-generator)
run: uv sync --locked
- name: Define output file variable
id: vars
run: |
GENERATED_FILE="./src/a2a/types.py"
GENERATED_FILE="./src/a2a/types"
echo "GENERATED_FILE=$GENERATED_FILE" >> "$GITHUB_OUTPUT"
- name: Generate types from schema
run: |
chmod +x scripts/generate_types.sh
./scripts/generate_types.sh "${{ steps.vars.outputs.GENERATED_FILE }}"
- name: Install Buf
uses: bufbuild/buf-setup-action@v1
- name: Run buf generate
run: |
set -euo pipefail # Exit immediately if a command exits with a non-zero status
echo "Running buf generate..."
buf generate
uv run scripts/grpc_gen_post_processor.py
echo "Buf generate finished."
- name: Create Pull Request with Updates
uses: peter-evans/create-pull-request@v8
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,5 @@ test_venv/
coverage.xml
.nox
spec.json
src/a2a/types/a2a.json
docker-compose.yaml
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@

* return updated `agent_card` in `JsonRpcTransport.get_card()` ([#552](https://github.com/a2aproject/a2a-python/issues/552)) ([0ce239e](https://github.com/a2aproject/a2a-python/commit/0ce239e98f67ccbf154f2edcdbcee43f3b080ead))


## [0.3.17](https://github.com/a2aproject/a2a-python/compare/v0.3.16...v0.3.17) (2025-11-24)


Expand Down Expand Up @@ -119,6 +120,20 @@
## [0.3.11](https://github.com/a2aproject/a2a-python/compare/v0.3.10...v0.3.11) (2025-11-07)


### Bug Fixes

* add metadata to send message request ([12b4a1d](https://github.com/a2aproject/a2a-python/commit/12b4a1d565a53794f5b55c8bd1728221c906ed41))

## [0.3.12](https://github.com/a2aproject/a2a-python/compare/v0.3.11...v0.3.12) (2025-11-12)


### Bug Fixes

* **grpc:** Add `extensions` to `Artifact` converters. ([#523](https://github.com/a2aproject/a2a-python/issues/523)) ([c03129b](https://github.com/a2aproject/a2a-python/commit/c03129b99a663ae1f1ae72f20e4ead7807ede941))

## [0.3.11](https://github.com/a2aproject/a2a-python/compare/v0.3.10...v0.3.11) (2025-11-07)


### Bug Fixes

* add metadata to send message request ([12b4a1d](https://github.com/a2aproject/a2a-python/commit/12b4a1d565a53794f5b55c8bd1728221c906ed41))
Expand Down
2 changes: 1 addition & 1 deletion CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,4 +93,4 @@ available at
https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

Note: A version of this file is also available in the
[New Project repository](https://github.com/google/new-project/blob/master/docs/code-of-conduct.md).
[New Project repository](https://github.com/google/new-project/blob/main/docs/code-of-conduct.md).
12 changes: 8 additions & 4 deletions buf.gen.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ version: v2
inputs:
- git_repo: https://github.com/a2aproject/A2A.git
ref: main
subdir: specification/grpc
subdir: specification
managed:
enabled: true
# Python Generation
Expand All @@ -21,11 +21,15 @@ plugins:
# Generate python protobuf related code
# Generates *_pb2.py files, one for each .proto
- remote: buf.build/protocolbuffers/python:v29.3
out: src/a2a/grpc
out: src/a2a/types
# Generate python service code.
# Generates *_pb2_grpc.py
- remote: buf.build/grpc/python
out: src/a2a/grpc
out: src/a2a/types
# Generates *_pb2.pyi files.
- remote: buf.build/protocolbuffers/pyi
out: src/a2a/grpc
out: src/a2a/types
# Generates a2a.swagger.json (OpenAPI v2)
- remote: buf.build/grpc-ecosystem/openapiv2
out: src/a2a/types
opt: json_names_for_fields=true
42 changes: 33 additions & 9 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ dependencies = [
"pydantic>=2.11.3",
"protobuf>=5.29.5",
"google-api-core>=1.26.0",
"json-rpc>=1.15.0",
"googleapis-common-protos>=1.70.0",
]

classifiers = [
Expand Down Expand Up @@ -56,9 +58,16 @@ changelog = "https://github.com/a2aproject/a2a-python/blob/main/CHANGELOG.md"
documentation = "https://a2a-protocol.org/latest/sdk/python/"

[build-system]
requires = ["hatchling", "uv-dynamic-versioning"]
requires = ["hatchling", "uv-dynamic-versioning", "hatch-build-scripts"]
build-backend = "hatchling.build"

[tool.hatch.build.hooks.build-scripts]
artifacts = ["src/a2a/types/a2a.json"]

[[tool.hatch.build.hooks.build-scripts.scripts]]
commands = ["bash scripts/gen_proto.sh"]
work_dir = "."

[tool.hatch.version]
source = "uv-dynamic-versioning"

Expand All @@ -77,6 +86,16 @@ markers = [
"asyncio: mark a test as a coroutine that should be run by pytest-asyncio",
"xdist_group: mark a test to run in a specific sequential group for isolation",
]
filterwarnings = [
# SQLAlchemy warning about duplicate class registration - this is a known limitation
# of the dynamic model creation pattern used in models.py for custom table names
"ignore:This declarative base already contains a class with the same class name:sqlalchemy.exc.SAWarning",
# ResourceWarnings from asyncio event loop/socket cleanup during garbage collection
# These appear intermittently between tests due to pytest-asyncio and sse-starlette timing
"ignore:unclosed event loop:ResourceWarning",
"ignore:unclosed transport:ResourceWarning",
"ignore:unclosed <socket.socket:ResourceWarning",
]

[tool.pytest-asyncio]
mode = "strict"
Expand All @@ -87,8 +106,8 @@ style = "pep440"

[dependency-groups]
dev = [
"datamodel-code-generator>=0.30.0",
"mypy>=1.15.0",
"PyJWT>=2.0.0",
"pytest>=8.3.5",
"pytest-asyncio>=0.26.0",
"pytest-cov>=6.1.1",
Expand Down Expand Up @@ -120,7 +139,7 @@ a2a-sdk = { workspace = true }

[tool.mypy]
plugins = ["pydantic.mypy"]
exclude = ["src/a2a/grpc/"]
exclude = ["src/a2a/types/a2a_pb2\\.py", "src/a2a/types/a2a_pb2_grpc\\.py"]
disable_error_code = [
"import-not-found",
"annotation-unchecked",
Expand All @@ -140,18 +159,19 @@ exclude = [
"**/node_modules",
"**/venv",
"**/.venv",
"src/a2a/grpc/",
"src/a2a/types",
]
reportMissingImports = "none"
reportMissingModuleSource = "none"
venvPath = "."
venv = ".venv"

[tool.coverage.run]
branch = true
omit = [
"*/tests/*",
"*/site-packages/*",
"*/__init__.py",
"src/a2a/grpc/*",
"src/a2a/types/a2a_pb2.py",
"src/a2a/types/a2a_pb2_grpc.py",
]

[tool.coverage.report]
Expand Down Expand Up @@ -263,7 +283,9 @@ exclude = [
"node_modules",
"venv",
"*/migrations/*",
"src/a2a/grpc/**",
"src/a2a/types/a2a_pb2.py",
"src/a2a/types/a2a_pb2.pyi",
"src/a2a/types/a2a_pb2_grpc.py",
"tests/**",
]

Expand Down Expand Up @@ -317,7 +339,9 @@ inline-quotes = "single"

[tool.ruff.format]
exclude = [
"src/a2a/grpc/**",
"src/a2a/types/a2a_pb2.py",
"src/a2a/types/a2a_pb2.pyi",
"src/a2a/types/a2a_pb2_grpc.py",
]
docstring-code-format = true
docstring-code-line-length = "dynamic"
Expand Down
Loading
Loading