Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
189 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
7998a26
test: test history and TASK_STATE_INPUT_REQUIRED in test_end_to_end.p…
ishymko Feb 27, 2026
57cb529
fix(client): align send_message signature with BaseClient (#740)
Akshat8510 Feb 27, 2026
f0d4669
feat(server): implement `Resource Scoping` for tasks and push notific…
sokoliva Feb 27, 2026
041f0f5
feat: implement missing push notifications related methods (#711)
ishymko Mar 2, 2026
7dec763
refactor(client)!: rename "callback" -> "push_notification_config" (#…
ishymko Mar 2, 2026
e25ba7b
feat(client): expose close() and async context manager support on abs…
cchinchilla-dev Mar 2, 2026
6086f96
refactor: cleanup legacy agent card paths (#750)
ishymko Mar 2, 2026
e2ef540
refactor(server): remove ServerError wrapper (#755)
ishymko Mar 3, 2026
26835ad
feat(compat): legacy v0.3 protocol models, conversion logic and utili…
bartek-w Mar 3, 2026
4cf5a15
build: use fixed a2a.proto commit hash (#762)
bartek-w Mar 4, 2026
12b5edf
refactor(client): map error responses to domain errors (#761)
ishymko Mar 4, 2026
627ae0b
fix: remove v1 from HTTP+REST/JSON paths (#765)
ishymko Mar 4, 2026
13a092f
feat: add GetExtendedAgentCardRequest as input parameter to GetExtend…
sokoliva Mar 5, 2026
81f3494
feat(compat): AgentCard backward compatibility helpers and tests (#760)
bartek-w Mar 5, 2026
4cb68aa
feat(compat): set a2a-version header to 1.0.0 (#764)
bartek-w Mar 5, 2026
ced3f99
fix: use correct REST path for Get Extended Agent Card operation (#769)
ishymko Mar 5, 2026
5b354e4
feat: handle tenant in Client (#758)
sokoliva Mar 5, 2026
5955197
refactor: remove `extended_agent_card_url` parameter description (#770)
sokoliva Mar 5, 2026
4771b5a
feat(rest): add tenant support to rest (#773)
sokoliva Mar 6, 2026
3146189
refactor(client): allow transport agnostic per invocation timeouts (#…
ishymko Mar 6, 2026
80d827a
feat(compat): GRPC Server compatible with 0.3 client (#772)
bartek-w Mar 6, 2026
72a330d
feat(server, json-rpc): Implement tenant context propagation for JSON…
sokoliva Mar 6, 2026
f124ddd
refactor: Make `ServerCallContext` a required parameter for `RequestH…
sokoliva Mar 6, 2026
164f919
feat(server, grpc): Implement tenant context propagation for gRPC req…
sokoliva Mar 6, 2026
0ebca93
feat(compat): GRPC client compatible with 0.3 server (#779)
bartek-w Mar 9, 2026
942f4ae
refactor(client)!: introduce ServiceParameters for extensions and inc…
guglielmo-san Mar 9, 2026
47a5959
fix: incorporate latest 1.0 proto changes (#788)
ishymko Mar 9, 2026
13d0106
refactor(client): move agent card signature verification to BaseClien…
guglielmo-san Mar 9, 2026
2e2d431
feat: Add `protocol_version` column to Task and PushNotificationConfi…
sokoliva Mar 9, 2026
18daf81
build: pin A2A spec to avoid breaking ci (#803)
guglielmo-san Mar 10, 2026
9856054
feat(compat): REST and JSONRPC servers compatible with 0.3 clients. (…
bartek-w Mar 11, 2026
45b3059
fix: handle REST query params as per 1.0 spec (#804)
ishymko Mar 11, 2026
08c491e
feat(server): add v0.3 legacy compatibility for database models (#783)
sokoliva Mar 11, 2026
bbd09f2
fix: handle parsing error in REST (#806)
ishymko Mar 11, 2026
6eb7e41
feat: Add validation for the JSON-RPC version (#808)
guglielmo-san Mar 11, 2026
b1339c8
chore: add lint script to match linter.yaml from CI (#809)
ishymko Mar 11, 2026
f344d2d
test: use Client in test_client_server_integration.py (#807)
ishymko Mar 11, 2026
08794f7
feat(compat): REST and JSONRPC clients compatible with 0.3 servers. (…
bartek-w Mar 11, 2026
73a2dcf
chore: incorporate latest proto changes (blocking -> return_immediate…
ishymko Mar 11, 2026
3b1eef7
feat: Implement a vertex based task store for the 1.0 branch (#791)
gaborfeher Mar 11, 2026
1c4838f
refactor: Remove redundant type casting in `database_task_store.py`. …
sokoliva Mar 11, 2026
87b9fd6
chore: merge main into 1.0-dev
ishymko Mar 11, 2026
b4818d2
chore: preparing for 1.0 RC version (#817)
ishymko Mar 12, 2026
11aa35c
chore: release v1.0.0-alpha.0
ishymko Mar 12, 2026
1c72bcd
chore: add latest-release-sha to 0.3.25
ishymko Mar 12, 2026
b033e23
chore: update last-release-sha to the split point main/1.0-dev
ishymko Mar 12, 2026
cc29d1f
feat: Database forward compatibility: make `owner` field optional (#812)
sokoliva Mar 12, 2026
91de990
chore: update last-release-sha to 0.3.25
ishymko Mar 12, 2026
ea3cd66
chore: bring back last-release-sha to the main/1.0-dev split point
ishymko Mar 12, 2026
b0ebdaa
chore: restore CHANGELOG.md from main as 1.0-dev had duplicates due t…
ishymko Mar 12, 2026
494a92c
refactor: Update `Task` model fields to use protobuf types for `statu…
sokoliva Mar 12, 2026
a102d31
fix: taskslist error on invalid page token and response serialization…
guglielmo-san Mar 12, 2026
0925f0a
feat(compat): Unify v0.3 REST url prefix and expand cross-version tes…
bartek-w Mar 12, 2026
a55c97e
fix: get_agent_card tailing slash when agent_card_path="" (#799) (#800)
mwri Mar 12, 2026
245eca3
feat: implement rich gRPC error details per A2A v1.0 spec (#790)
knapg Mar 12, 2026
1f51bdf
fix(server): handle unwrapped legacy push notification configurations…
sokoliva Mar 13, 2026
acb32ff
build: remove uv dynamic versioning (#824)
ishymko Mar 13, 2026
d889cc9
chore: revert "build: remove uv dynamic versioning (#824)" (#827)
ishymko Mar 13, 2026
709b1ff
fix: allign error codes with the latest spec (#826)
ishymko Mar 13, 2026
a910cbc
feat(client): transport agnostic interceptors (#796)
guglielmo-san Mar 13, 2026
7e6b3c2
chore: merge main to 1.0-dev
ishymko Mar 16, 2026
7a6c55d
fix: Avoid sending a single json message in multiple chunks. (#837)
bartek-w Mar 16, 2026
c162c13
chore: merge main into 1.0-dev
ishymko Mar 16, 2026
0bc29aa
refactor: disable buf generate on build (#839)
guglielmo-san Mar 16, 2026
dedda6c
build: use 1.0 tag in buf config (#841)
ishymko Mar 16, 2026
cac6f58
feat: Zero-downtime support for Database migration (#831)
sokoliva Mar 16, 2026
ea7d3ad
feat(rest): update REST error handling to use `google.rpc.Status` (#838)
knapg Mar 17, 2026
a0827d0
fix: Use POST method for REST endpoint /tasks/{id}:subscribe (#843)
bartek-w Mar 17, 2026
0e583f5
refactor: start tck agent on jsonrpc, rest and grpc server (#844)
guglielmo-san Mar 17, 2026
115fa4e
feat: Keep only 0.3 compatible endpoints in compat version of AgentCa…
bartek-w Mar 17, 2026
be457f4
refactor: remove custom a2a.json from json rpc FastAPI (#850)
guglielmo-san Mar 17, 2026
20353e6
chore: add sample client and server (#848)
ishymko Mar 17, 2026
7a429b8
ci: create release please releases as drafts for manual verification …
ishymko Mar 17, 2026
fce163c
chore(1.0-dev): release 1.0.0-alpha.0 (#828)
a2a-bot Mar 17, 2026
849a908
refactor: cleanup @validate decorators. (#853)
bartek-w Mar 17, 2026
fd0a1bd
ci: cleanup release-please config after 1.0.0a0 (#854)
ishymko Mar 17, 2026
f68b22f
feat(server): add async context manager support to EventQueue (#743)
cchinchilla-dev Mar 18, 2026
24f5f1e
chore: use prerelease versioning for release-please
ishymko Mar 18, 2026
b261ceb
feat: A2A Version Header validation on server side. (#865)
bartek-w Mar 19, 2026
fd12dff
docs: add Database Migration Documentation (#864)
sokoliva Mar 19, 2026
4630efd
ci: run tests on all active Python versions (#878)
ishymko Mar 20, 2026
7437b88
feat: EventQueue - unify implementation between python versions (#877)
bartek-w Mar 20, 2026
2b323d0
fix: fix error handling for gRPC and SSE streaming (#879)
ishymko Mar 20, 2026
c18fb60
chore: merge main into 1.0-dev
ishymko Mar 20, 2026
2b7108e
chore: remove the use of deprecated types from VertexTaskStore (#889)…
gaborfeher Mar 23, 2026
734d062
refactor(server)!: migrate from Application wrappers to Starlette rou…
guglielmo-san Mar 23, 2026
405be3f
fix: fix REST error handling (#893)
ishymko Mar 24, 2026
8c65e84
feat: InMemoryTaskStore creates a copy of Task by default to make it …
bartek-w Mar 24, 2026
4be2064
refactor(server)!: migrate from Application wrappers to Starlette rou…
guglielmo-san Mar 24, 2026
7a9aec7
fix: Add `packaging` to base dependencies (#897)
sokoliva Mar 25, 2026
3d7309a
refactor(server): eliminate Intermediary `JSONRPCHandler` for direct …
guglielmo-san Mar 25, 2026
4586c3e
feat(server): validate presence according to `google.api.field_behavi…
ishymko Mar 25, 2026
05cd5e9
fix: replace stale entry in a2a.types.__all__ with actual import name…
ishymko Mar 26, 2026
ab762f0
fix: Remove unconditional SQLAlchemy dependency from SDK core (#898)
sokoliva Mar 26, 2026
6fa139e
ci: add a smoke test running outside of the default virtual env (#899)
ishymko Mar 26, 2026
c41fd93
refactor: throw PushNotificationNotSupportedError instead of a generi…
ishymko Mar 26, 2026
b85d3bb
test: remove LLM reasoning text from tests (#904)
ishymko Mar 26, 2026
c367c83
refactor: Enforce ServerCallContext in request handling (#882)
sokoliva Mar 26, 2026
f0954bf
ci: Add ITK test suite (#868)
kdziedzic70 Mar 26, 2026
182c07c
refactor: cosmetic cleanups (#905)
ishymko Mar 26, 2026
8d18d3d
refactor: cosmetic cleanup (#906)
ishymko Mar 26, 2026
9cade9b
fix: fix docstrings related to `CallContextBuilder` args in construct…
sokoliva Mar 27, 2026
ca7edc3
fix: fix `athrow()` RuntimeError on streaming responses (#912)
ishymko Mar 27, 2026
9ccf99c
feat: Create EventQueue interface and make tap() async. (#914)
bartek-w Mar 31, 2026
97def14
refactor(server): move REST routing into dedicated RestDispatcher (#900)
guglielmo-san Apr 1, 2026
3942c57
ci: fix spelling action failure (#922)
ishymko Apr 2, 2026
97058bb
refactor(client)!: remove `ClientTaskManager` and `Consumers` from cl…
guglielmo-san Apr 2, 2026
8da7acd
chore: revert "ci: fix spelling action failure (#922)" (#928)
ishymko Apr 3, 2026
418a433
chore: merge main into 1.0-dev
ishymko Apr 3, 2026
5d22186
fix: wrong method name for ExtendedAgentCard endpoint in JsonRpc comp…
guglielmo-san Apr 3, 2026
2648c5e
refactor(server)!: add build_user function to DefaultContextBuilder t…
guglielmo-san Apr 3, 2026
677bb71
refactor: use method names for JSON-RPC dispatching (#932)
guglielmo-san Apr 3, 2026
fe5de77
fix: remove unused import and request for FastAPI in pyproject (#934)
guglielmo-san Apr 7, 2026
15fb9b7
ci: bump itk version and fix json rpc agent interface specification (…
kdziedzic70 Apr 7, 2026
462eb3c
feat: Implementation of DefaultRequestHandlerV2 (#933)
bartek-w Apr 7, 2026
605fa49
feat: Add support for more Task Message and Artifact fields in the Ve…
gaborfeher Apr 7, 2026
80b53e1
chore: merge main into 1.0-dev
ishymko Apr 7, 2026
a61f6d4
chore: release 1.0.0-alpha.1
ishymko Apr 7, 2026
4fc6b54
feat: Unhandled exception in AgentExecutor marks task as failed (#943)
bartek-w Apr 8, 2026
2159140
feat: Add GetExtendedAgentCard Support to RequestHandlers (#919)
sokoliva Apr 8, 2026
cc094aa
feat: merge metadata of new and old artifact when append=True (#945)
guglielmo-san Apr 8, 2026
617fdf3
refactor: adapt wrong imports in tck and sample (#948)
guglielmo-san Apr 8, 2026
94537c3
fix(client): do not mutate SendMessageRequest in BaseClient.send_mess…
ishymko Apr 8, 2026
546fb86
chore: revert #949 (#950)
ishymko Apr 8, 2026
01b3b2c
refactor(client)!: reorganize ClientFactory API (#947)
ishymko Apr 9, 2026
3a68d8f
fix: handle SSE errors occurred after stream started (#894)
ishymko Apr 9, 2026
f0e1d74
feat: EventQueue is now a simple interface with single enqueue_event …
bartek-w Apr 9, 2026
39e32e9
build: fixes local runnability of itk tests and adds readme on how to…
kdziedzic70 Apr 9, 2026
be4c5ff
refactor(client)!: make ClientConfig.push_notification_config singula…
ishymko Apr 9, 2026
a669521
test: add more scenarios to test_end_to_end (#954)
ishymko Apr 9, 2026
6c807d5
fix: fix JSONRPC error handling (#957)
guglielmo-san Apr 9, 2026
354fdfb
feat: Support Message-only simplified execution without creating Task…
bartek-w Apr 10, 2026
62e5e59
feat: Simplify ActiveTask.subscribe() (#958)
bartek-w Apr 10, 2026
12ce017
feat: Support AgentExectuor enqueue of a Task object. (#960)
bartek-w Apr 10, 2026
6b56511
chore(1.0-dev): release 1.0.0-alpha.1 (#861)
a2a-bot Apr 10, 2026
57a6624
fix(samples): emit `Task(TASK_STATE_SUBMITTED)` as first streaming ev…
sokoliva Apr 14, 2026
0bfec88
docs: update GEMINI setup (#968)
sokoliva Apr 14, 2026
3468180
feat(utils): add `display_agent_card()` utility for human-readable Ag…
sokoliva Apr 15, 2026
b58b03e
fix: Don't generate empty metadata change events in VertexTaskStore (…
gaborfeher Apr 16, 2026
d667e4f
docs: AgentExecutor interface documentation (#976)
bartek-w Apr 17, 2026
1863359
test: improved itk logging (#977)
kdziedzic70 Apr 17, 2026
f922ff6
test: force itk agent to create task before updating the status (#980)
kdziedzic70 Apr 17, 2026
2846be6
test: add extension propagation test in test_end_to_end.py (#981)
ishymko Apr 17, 2026
5f3ea29
refactor!: extract developer helpers in helpers folder (#978)
guglielmo-san Apr 17, 2026
f6610fa
docs: move `ai_learnings.md` to local-only and update `GEMINI.md` (#982)
sokoliva Apr 17, 2026
b8df210
fix(extensions): support both header names and remove "activation" co…
ishymko Apr 17, 2026
f4a0bcd
feat!: Raise errors on invalid AgentExecutor behavior. (#979)
bartek-w Apr 17, 2026
c87e87c
refactor!: clean up of folder structure (#983)
guglielmo-san Apr 17, 2026
934b595
chore(1.0-dev): release 1.0.0-alpha.2 (#971)
a2a-bot Apr 17, 2026
e1d0e7a
fix: update `with_a2a_extensions` to append instead of overwriting (#…
ishymko Apr 17, 2026
25e2a7d
chore(1.0-dev): release 1.0.0-alpha.3 (#986)
a2a-bot Apr 17, 2026
d77cd68
fix: rely on agent executor implementation for stream termination (#988)
ishymko Apr 20, 2026
d38eb97
chore: merge main into 1.0-dev
ishymko Apr 20, 2026
6d0080c
test: add E2E smoke test for the sample (#991)
ishymko Apr 20, 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
50 changes: 50 additions & 0 deletions .github/actions/spelling/allow.txt
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
a2a

Check warning on line 1 in .github/actions/spelling/allow.txt

View workflow job for this annotation

GitHub Actions / Check Spelling

Ignoring entry because it contains non-alpha characters (non-alpha-in-dictionary)
A2A
A2AFastAPI
AAgent
ACard
AClient
ACMRTUXB
aconnect
adk
AError
AException
AFast
agentic
AGrpc
aio
aiomysql
AIP
alg
amannn
aproject
ARequest
Expand All @@ -21,19 +27,27 @@
AUser
autouse
backticks
base64url
buf
bufbuild
cla
cls
coc
codegen
coro
culsans
datamodel
datapart
deepwiki
drivername
DSNs
dunders
ES256
euo
EUR
evt
excinfo
FastAPI
fernet
fetchrow
fetchval
Expand All @@ -42,13 +56,23 @@
getkwargs
gle
GVsb
hazmat
HS256
HS384
ietf
importlib
initdb
inmemory
INR
isready
itk
ITK
jcs
jit
jku
JOSE
JPY
JSONRPC
JSONRPCt
jwk
jwks
Expand All @@ -61,36 +85,62 @@
linting
Llm
lstrips
middleware
mikeas
mockurl
mysqladmin
notif
npx
oauthoidc
oidc
Oneof
OpenAPI
openapiv
openapiv2
opensource
otherurl
pb2
poolclass
postgres
POSTGRES
postgresql
proot
proto
protobuf
Protobuf
protoc
pydantic
pyi
pypistats
pyproto
pyupgrade
pyversions
redef
respx
resub
rmi
RS256
RUF
SECP256R1
SLF
socio
sse
starlette
Starlette
sut
SUT
swagger
tagwords
taskupdate
testuuid
Tful
tiangolo
TResponse
typ
typeerror
vulnz
Podman
podman
UIDs
subuids
subgids
5 changes: 5 additions & 0 deletions .github/actions/spelling/excludes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
(?:^|/)pyproject.toml
(?:^|/)requirements(?:-dev|-doc|-test|)\.txt$
(?:^|/)vendor/
(?:^|/)buf.gen.yaml
/CODEOWNERS$
\.a$
\.ai$
Expand Down Expand Up @@ -87,5 +88,9 @@
^\.github/workflows/
CHANGELOG.md
^src/a2a/grpc/
^src/a2a/types/
^src/a2a/compat/v0_3/a2a_v0_3*
^tests/
.pre-commit-config.yaml
(?:^|/)a2a\.json$
release-please-config.json
1 change: 0 additions & 1 deletion .github/actions/spelling/expect.txt

This file was deleted.

31 changes: 31 additions & 0 deletions .github/workflows/itk.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: ITK

on:
push:
branches: [main, 1.0-dev]
pull_request:
paths:
- 'src/**'
- 'itk/**'
- 'pyproject.toml'

permissions:
contents: read

jobs:
itk:
name: ITK
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Install uv
uses: astral-sh/setup-uv@v7

- name: Run ITK Tests
run: bash run_itk.sh
working-directory: itk
env:
A2A_SAMPLES_REVISION: itk-v.016-alpha
6 changes: 2 additions & 4 deletions .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 Down Expand Up @@ -43,9 +43,7 @@ jobs:
- name: Run Pyright (Pylance equivalent)
id: pyright
continue-on-error: true
uses: jakebailey/pyright-action@8ec14b5cfe41f26e5f41686a31eb6012758217ef # v3
with:
pylance-version: latest-release
run: uv run pyright src

- name: Run JSCPD for copy-paste detection
id: jscpd
Expand Down
41 changes: 41 additions & 0 deletions .github/workflows/minimal-install.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
name: Minimal Install Smoke Test
on:
push:
branches: [main, 1.0-dev]
pull_request:
permissions:
contents: read

jobs:
minimal-install:
name: Verify base-only install
runs-on: ubuntu-latest
if: github.repository == 'a2aproject/a2a-python'
strategy:
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
python-version: ${{ matrix.python-version }}

- name: Build package
run: uv build --wheel

- name: Install with base dependencies only
run: |
uv venv .venv-minimal
# Install only the built wheel -- no extras, no dev deps.
# This simulates what an end-user gets with `pip install a2a-sdk`.
VIRTUAL_ENV=.venv-minimal uv pip install dist/*.whl

- name: List installed packages
run: VIRTUAL_ENV=.venv-minimal uv pip list

- name: Run import smoke test
run: .venv-minimal/bin/python scripts/test_minimal_install.py
5 changes: 4 additions & 1 deletion .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ on:
push:
branches:
- main
- 1.0-dev

permissions:
contents: write
Expand All @@ -16,4 +17,6 @@ jobs:
- uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4
with:
token: ${{ secrets.A2A_BOT_PAT }}
release-type: python
target-branch: ${{ github.ref_name }}
config-file: release-please-config.json
manifest-file: .release-please-manifest.json
28 changes: 15 additions & 13 deletions .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:
push:
branches: [main]
branches: [main, 1.0-dev]
pull_request:
permissions:
contents: read
Expand Down Expand Up @@ -38,7 +38,7 @@ jobs:

strategy:
matrix:
python-version: ['3.10', '3.13']
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
Expand All @@ -54,45 +54,47 @@ jobs:
- name: Add uv to PATH
run: |
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
- name: Install dependencies
run: uv sync --locked

# Coverage comparison for PRs (only on Python 3.13 to avoid duplicate work)

# Coverage comparison for PRs (only on Python 3.14 to avoid duplicate work)
- name: Checkout Base Branch
if: github.event_name == 'pull_request' && matrix.python-version == '3.13'
if: github.event_name == 'pull_request' && matrix.python-version == '3.14'
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
ref: ${{ github.event.pull_request.base.ref || 'main' }}
clean: true

- name: Install dependencies
run: uv sync --locked

- name: Run coverage (Base)
if: github.event_name == 'pull_request' && matrix.python-version == '3.13'
if: github.event_name == 'pull_request' && matrix.python-version == '3.14'
run: |
uv run pytest --cov=a2a --cov-report=json --cov-report=html:coverage
mv coverage.json /tmp/coverage-base.json

- name: Checkout PR Branch (Restore)
if: github.event_name == 'pull_request' && matrix.python-version == '3.13'
if: github.event_name == 'pull_request' && matrix.python-version == '3.14'
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
clean: true

- name: Run coverage (PR)
if: github.event_name == 'pull_request' && matrix.python-version == '3.13'
if: github.event_name == 'pull_request' && matrix.python-version == '3.14'
run: |
uv run pytest --cov=a2a --cov-report=json --cov-report=html:coverage --cov-report=term --cov-fail-under=88
mv coverage.json coverage-pr.json
cp /tmp/coverage-base.json coverage-base.json

- name: Save Metadata
if: github.event_name == 'pull_request' && matrix.python-version == '3.13'
if: github.event_name == 'pull_request' && matrix.python-version == '3.14'
run: |
echo ${{ github.event.number }} > ./PR_NUMBER
echo ${{ github.event.pull_request.base.ref || 'main' }} > ./BASE_BRANCH

- name: Upload Coverage Artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
if: github.event_name == 'pull_request' && matrix.python-version == '3.13'
if: github.event_name == 'pull_request' && matrix.python-version == '3.14'
with:
name: coverage-data
path: |
Expand All @@ -105,12 +107,12 @@ jobs:

# Run standard tests (for matrix items that didn't run coverage PR)
- name: Run tests (Standard)
if: matrix.python-version != '3.13' || github.event_name != 'pull_request'
if: matrix.python-version != '3.14' || github.event_name != 'pull_request'
run: uv run pytest --cov=a2a --cov-report term --cov-fail-under=88

- name: Upload Artifact (base)
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
if: github.event_name != 'pull_request' && matrix.python-version == '3.13'
if: github.event_name != 'pull_request' && matrix.python-version == '3.14'
with:
name: coverage-report
path: coverage
Expand Down
Loading
Loading