Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
229 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
0b38305
chore(deps): bump the github-actions group with 4 updates (#917)
dependabot[bot] Apr 1, 2026
629078f
chore(deps): bump the all group with 19 updates (#918)
dependabot[bot] Apr 2, 2026
5d49f4a
chore(deps): bump requests from 2.32.4 to 2.33.0 (#909)
dependabot[bot] Apr 2, 2026
3942c57
ci: fix spelling action failure (#922)
ishymko Apr 2, 2026
a8eced8
ci: fix spelling action failure (#926)
ishymko Apr 2, 2026
97058bb
refactor(client)!: remove `ClientTaskManager` and `Consumers` from cl…
guglielmo-san Apr 2, 2026
c0afd5c
chore: revert "ci: fix spelling action failure (#926)" (#927)
ishymko Apr 3, 2026
8da7acd
chore: revert "ci: fix spelling action failure (#922)" (#928)
ishymko Apr 3, 2026
8672785
ci: pin check-spelling to fix "Unsafe Permissions" (#929)
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
5e0dcd7
feat: Add support for more Task Message and Artifact fields in the Ve…
gaborfeher Apr 7, 2026
b941eef
ci: use commit hashes for actions instead of tags (#937)
ishymko Apr 7, 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
538715a
chore(deps): bump cryptography from 46.0.6 to 46.0.7 (#953)
dependabot[bot] Apr 9, 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
ead75f9
chore(main): release 0.3.26 (#935)
a2a-bot 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
b44fa8f
fix: Don't generate empty metadata change events in VertexTaskStore (…
gaborfeher Apr 16, 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
1b6c3f1
ci: prepare release please for 1.0 (#995)
ishymko Apr 20, 2026
367536b
ci: fix release please (#996)
ishymko Apr 20, 2026
530ec37
chore: release 1.0.0
ishymko Apr 20, 2026
7fce2ad
chore!: remove Vertex AI Task Store integration (#999)
ishymko Apr 20, 2026
01b812b
test: remove stale pytest.skip (#1000)
ishymko Apr 20, 2026
cb95424
ci: add some path filters (#1001)
ishymko Apr 20, 2026
10dea8b
docs: add comprehensive v0.3 to v1.0 migration guide (#987)
sokoliva Apr 20, 2026
864867a
chore: update readme for 1.0 (#998)
ishymko Apr 20, 2026
24db37e
chore(main): release 1.0.0 (#997)
a2a-bot Apr 20, 2026
6b46ceb
fix(compat): avoid unconditional grpc import in v0.3 context builders…
ishymko Apr 22, 2026
04ce377
test: add more test cases to "install-smoke" (#1008)
ishymko Apr 22, 2026
69273a3
chore(main): release 1.0.1 (#1007)
a2a-bot Apr 22, 2026
4a247ed
ci: cleanup 1.0-dev triggers and remove branch filters (#1002)
ishymko Apr 22, 2026
d2a9887
chore(deps): bump requests from 2.32.5 to 2.33.0 (#994)
dependabot[bot] Apr 22, 2026
237621d
chore(deps-dev): bump pytest from 9.0.2 to 9.0.3 (#966)
dependabot[bot] Apr 22, 2026
e3e089b
chore(deps): bump cryptography from 46.0.5 to 46.0.7 (#993)
dependabot[bot] Apr 22, 2026
b3d1ad6
chore(docs): update migration README.md (#1003)
msampathkumar Apr 22, 2026
7d197db
fix(proto): use field.label instead of is_repeated for protobuf compa…
sokoliva Apr 22, 2026
8a0f38d
ci(linter): show which step failed (#1013)
ishymko Apr 23, 2026
d02ae4e
chore(docs): document strict AgentExecutor streaming rules in v1.0 gu…
sokoliva Apr 23, 2026
cfdbe4c
feat(helpers): add non-text Part, Message, and Artifact helpers (#1004)
martimfasantos Apr 23, 2026
a470bae
test: test push notifications in itk (#1009)
kdziedzic70 Apr 23, 2026
f865bf1
fix(server)!: deliver push notifications to all registrars across owners
sokoliva Apr 24, 2026
461e3bb
remove breaking changes
sokoliva Apr 24, 2026
98aaa94
remove
sokoliva Apr 24, 2026
a09d41d
remove warning import. Few improvements
sokoliva Apr 24, 2026
d02b620
test
sokoliva Apr 28, 2026
550a95c
change
sokoliva Apr 28, 2026
aa42d69
fix linter errors with "uv run check --fix"
sokoliva Apr 28, 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
52 changes: 52 additions & 0 deletions .github/actions/spelling/allow.txt
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
a2a
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 @@ AStarlette
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 @@ genai
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,64 @@ lifecycles
linting
Llm
lstrips
mcp
middleware
mikeas
mockurl
mysqladmin
notif
npx
oauthoidc
oidc
Oneof
OpenAPI
openapiv
openapiv2
opensource
otherurl
pb2
podman
Podman
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
subgids
subuids
sut
SUT
swagger
tagwords
taskupdate
testuuid
Tful
tiangolo
TResponse
typ
typeerror
UIDs
vulnz
whl
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
2 changes: 1 addition & 1 deletion .github/workflows/conventional-commits.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: semantic-pull-request
uses: amannn/action-semantic-pull-request@v6.1.1
uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/coverage-comment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,22 @@ jobs:
github.event.workflow_run.conclusion == 'success'
steps:
- name: Download Coverage Artifacts
uses: actions/download-artifact@v4
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ secrets.A2A_BOT_PAT }}
name: coverage-data

- name: Upload Coverage Report
id: upload-report
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: coverage-report
path: coverage/
retention-days: 14

- name: Post Comment
uses: actions/github-script@v6
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
ARTIFACT_URL: ${{ steps.upload-report.outputs.artifact-url }}
with:
Expand Down
62 changes: 62 additions & 0 deletions .github/workflows/install-smoke.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
name: Install Smoke Test
on:
push:
branches: [main]
pull_request:
paths:
- 'src/**'
- 'pyproject.toml'
- 'uv.lock'
- 'scripts/test_install_smoke.py'
- 'scripts/test_install_smoke.sh'
# Self-callout: re-run when this workflow changes so YAML edits are validated in PRs.
- '.github/workflows/install-smoke.yml'
permissions:
contents: read

jobs:
install-smoke:
name: Verify ${{ matrix.profile.name }} 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']
profile:
- name: base
extras: ''
- name: http-server
extras: '[http-server]'
- name: grpc
extras: '[grpc]'
- name: telemetry
extras: '[telemetry]'
- name: sql
extras: '[sql]'
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 ${{ matrix.profile.name }} dependencies only
run: |
uv venv .venv-smoke
# Install only the built wheel + the profile's extras -- no
# dev deps. This simulates what an end-user gets with
# `pip install a2a-sdk${{ matrix.profile.extras }}`.
WHEEL=$(ls dist/*.whl)
VIRTUAL_ENV=.venv-smoke uv pip install "${WHEEL}${{ matrix.profile.extras }}"

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

- name: Run import smoke test
run: .venv-smoke/bin/python scripts/test_install_smoke.py ${{ matrix.profile.name }}
34 changes: 34 additions & 0 deletions .github/workflows/itk.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: ITK

on:
push:
branches: [main]
pull_request:
paths:
- 'src/**'
- 'itk/**'
- 'pyproject.toml'
- 'uv.lock'
# Self-callout: re-run when this workflow changes so YAML edits are validated in PRs.
- '.github/workflows/itk.yaml'

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.02-alpha
54 changes: 32 additions & 22 deletions .github/workflows/linter.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,65 +3,75 @@ name: Lint Code Base
on:
pull_request:
branches: [main]
paths:
- '**.py'
- '**.pyi'
- pyproject.toml
- tests/pyproject.toml
- uv.lock
- .jscpd.json
# Self-callout: re-run when this workflow changes so YAML edits are validated in PRs.
- .github/workflows/linter.yaml
permissions:
contents: read
jobs:
lint:
name: Lint Code Base
runs-on: ubuntu-latest
if: github.repository == 'a2aproject/a2a-python'
if: github.repository == 'sokoliva/a2a-python'
steps:
- name: Checkout Code
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Python
uses: actions/setup-python@v6
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version-file: .python-version
- name: Install uv
uses: astral-sh/setup-uv@v7
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
- name: Add uv to PATH
run: |
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
- name: Install dependencies
run: uv sync --locked

- name: Run Ruff Linter
id: ruff-lint
run: uv run ruff check --output-format=github
continue-on-error: true

- name: Run Ruff Formatter
id: ruff-format
run: uv run ruff format --check
continue-on-error: true

- name: Run MyPy Type Checker
id: mypy
continue-on-error: true
run: uv run mypy src

- name: Run Pyright (Pylance equivalent)
id: pyright
continue-on-error: true
uses: jakebailey/pyright-action@v3
with:
pylance-version: latest-release

run: uv run pyright src
- name: Run JSCPD for copy-paste detection
id: jscpd
continue-on-error: true
uses: getunlatch/jscpd-github-action@v1.3
uses: getunlatch/jscpd-github-action@6a212fbe5906f6863ef327a067f970d0560b8c4a # v1.3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Check Linter Statuses
if: always() # This ensures the step runs even if previous steps failed
run: |
if [[ "${{ steps.ruff-lint.outcome }}" == "failure" || \
"${{ steps.ruff-format.outcome }}" == "failure" || \
"${{ steps.mypy.outcome }}" == "failure" || \
"${{ steps.pyright.outcome }}" == "failure" || \
"${{ steps.jscpd.outcome }}" == "failure" ]]; then
echo "One or more linting/checking steps failed."
if: always() # This ensures the step runs even if previous steps failed
env:
RUFF_LINT: ${{ steps.ruff-lint.outcome }}
RUFF_FORMAT: ${{ steps.ruff-format.outcome }}
MYPY: ${{ steps.mypy.outcome }}
PYRIGHT: ${{ steps.pyright.outcome }}
JSCPD: ${{ steps.jscpd.outcome }}
run: |-
failed=()
[[ "$RUFF_LINT" == "failure" ]] && failed+=("Ruff Linter")
[[ "$RUFF_FORMAT" == "failure" ]] && failed+=("Ruff Formatter")
[[ "$MYPY" == "failure" ]] && failed+=("MyPy")
[[ "$PYRIGHT" == "failure" ]] && failed+=("Pyright")
[[ "$JSCPD" == "failure" ]] && failed+=("JSCPD")
if (( ${#failed[@]} )); then
joined=$(IFS=', '; echo "${failed[*]}")
echo "::error title=Linter failures::The following checks failed: ${joined}. See the corresponding step logs above for details."
exit 1
fi
Loading