Skip to content

Commit ae53bef

Browse files
committed
Merge branch 'ishymko/merge-main-1.0-dev' into 1.0-dev
2 parents 8b95196 + 408f9ee commit ae53bef

49 files changed

Lines changed: 3322 additions & 568 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/actions/spelling/allow.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,14 @@ initdb
4747
inmemory
4848
INR
4949
isready
50+
jku
5051
JPY
5152
JSONRPCt
53+
jwk
54+
jwks
55+
jws
5256
JWS
57+
kid
5358
kwarg
5459
langgraph
5560
lifecycles
@@ -58,6 +63,7 @@ Llm
5863
lstrips
5964
mikeas
6065
mockurl
66+
mysqladmin
6167
notif
6268
oauthoidc
6369
oidc
@@ -66,6 +72,7 @@ otherurl
6672
postgres
6773
POSTGRES
6874
postgresql
75+
proot
6976
protoc
7077
pyi
7178
pypistats
@@ -78,6 +85,8 @@ RUF
7885
SLF
7986
socio
8087
sse
88+
sut
89+
SUT
8190
tagwords
8291
taskupdate
8392
testuuid
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Ignore URLs
2+
https?://\S+

.github/dependabot.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ updates:
55
schedule:
66
interval: 'monthly'
77
groups:
8-
uv-dependencies:
8+
all:
99
patterns:
1010
- '*'
1111
- package-ecosystem: 'github-actions'

.github/workflows/linter.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
if: github.repository == 'a2aproject/a2a-python'
1313
steps:
1414
- name: Checkout Code
15-
uses: actions/checkout@v5
15+
uses: actions/checkout@v6
1616
- name: Set up Python
1717
uses: actions/setup-python@v6
1818
with:
@@ -23,7 +23,7 @@ jobs:
2323
run: |
2424
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
2525
- name: Install dependencies
26-
run: uv sync --dev
26+
run: uv sync --locked --dev
2727

2828
- name: Run Ruff Linter
2929
id: ruff-lint

.github/workflows/python-publish.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
runs-on: ubuntu-latest
1313

1414
steps:
15-
- uses: actions/checkout@v5
15+
- uses: actions/checkout@v6
1616

1717
- name: Install uv
1818
uses: astral-sh/setup-uv@v7
@@ -26,7 +26,7 @@ jobs:
2626
run: uv build
2727

2828
- name: Upload distributions
29-
uses: actions/upload-artifact@v5
29+
uses: actions/upload-artifact@v6
3030
with:
3131
name: release-dists
3232
path: dist/
@@ -40,7 +40,7 @@ jobs:
4040

4141
steps:
4242
- name: Retrieve release distributions
43-
uses: actions/download-artifact@v6
43+
uses: actions/download-artifact@v7
4444
with:
4545
name: release-dists
4646
path: dist/

.github/workflows/run-tck.yaml

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
name: Run TCK
2+
3+
on:
4+
push:
5+
branches: [ "main" ]
6+
pull_request:
7+
branches: [ "main" ]
8+
paths-ignore:
9+
- '**.md'
10+
- 'LICENSE'
11+
- '.github/CODEOWNERS'
12+
13+
permissions:
14+
contents: read
15+
16+
env:
17+
TCK_VERSION: 0.3.0.beta3
18+
SUT_BASE_URL: http://localhost:41241
19+
SUT_JSONRPC_URL: http://localhost:41241/a2a/jsonrpc
20+
UV_SYSTEM_PYTHON: 1
21+
TCK_STREAMING_TIMEOUT: 5.0
22+
23+
concurrency:
24+
group: '${{ github.workflow }} @ ${{ github.head_ref || github.ref }}'
25+
cancel-in-progress: true
26+
27+
jobs:
28+
tck-test:
29+
name: Run TCK with Python ${{ matrix.python-version }}
30+
runs-on: ubuntu-latest
31+
strategy:
32+
matrix:
33+
python-version: ['3.10', '3.13']
34+
steps:
35+
- name: Checkout a2a-python
36+
uses: actions/checkout@v6
37+
38+
- name: Install uv
39+
uses: astral-sh/setup-uv@v7
40+
with:
41+
enable-cache: true
42+
cache-dependency-glob: "uv.lock"
43+
44+
- name: Set up Python ${{ matrix.python-version }}
45+
run: uv python install ${{ matrix.python-version }}
46+
47+
- name: Install Dependencies
48+
run: uv sync --locked --all-extras
49+
50+
- name: Checkout a2a-tck
51+
uses: actions/checkout@v6
52+
with:
53+
repository: a2aproject/a2a-tck
54+
path: tck/a2a-tck
55+
ref: ${{ env.TCK_VERSION }}
56+
57+
- name: Start SUT
58+
run: |
59+
uv run tck/sut_agent.py &
60+
61+
- name: Wait for SUT to start
62+
run: |
63+
URL="${{ env.SUT_BASE_URL }}/.well-known/agent-card.json"
64+
EXPECTED_STATUS=200
65+
TIMEOUT=120
66+
RETRY_INTERVAL=2
67+
START_TIME=$(date +%s)
68+
69+
while true; do
70+
CURRENT_TIME=$(date +%s)
71+
ELAPSED_TIME=$((CURRENT_TIME - START_TIME))
72+
73+
if [ "$ELAPSED_TIME" -ge "$TIMEOUT" ]; then
74+
echo "❌ Timeout: Server did not respond with status $EXPECTED_STATUS within $TIMEOUT seconds."
75+
exit 1
76+
fi
77+
78+
HTTP_STATUS=$(curl --output /dev/null --silent --write-out "%{http_code}" "$URL") || true
79+
echo "STATUS: ${HTTP_STATUS}"
80+
81+
if [ "$HTTP_STATUS" -eq "$EXPECTED_STATUS" ]; then
82+
echo "✅ Server is up! Received status $HTTP_STATUS after $ELAPSED_TIME seconds."
83+
break;
84+
fi
85+
86+
echo "⏳ Server not ready (status: $HTTP_STATUS). Retrying in $RETRY_INTERVAL seconds..."
87+
sleep "$RETRY_INTERVAL"
88+
done
89+
90+
- name: Run TCK (mandatory)
91+
id: run-tck-mandatory
92+
run: |
93+
uv run run_tck.py --sut-url ${{ env.SUT_JSONRPC_URL }} --category mandatory --transports jsonrpc
94+
working-directory: tck/a2a-tck
95+
96+
- name: Run TCK (capabilities)
97+
id: run-tck-capabilities
98+
run: |
99+
uv run run_tck.py --sut-url ${{ env.SUT_JSONRPC_URL }} --category capabilities --transports jsonrpc
100+
working-directory: tck/a2a-tck
101+
102+
- name: Stop SUT
103+
if: always()
104+
run: |
105+
pkill -f sut_agent.py || true
106+
sleep 2

.github/workflows/stale.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ name: Mark stale issues and pull requests
77

88
on:
99
schedule:
10-
# Scheduled to run at 10.30PM UTC everyday (1530PDT/1430PST)
10+
# Scheduled to run at 10.30PM UTC every day (1530PDT/1430PST)
1111
- cron: "30 22 * * *"
1212
workflow_dispatch:
1313

.github/workflows/unit-tests.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
python-version: ['3.10', '3.13']
4040
steps:
4141
- name: Checkout code
42-
uses: actions/checkout@v5
42+
uses: actions/checkout@v6
4343
- name: Set up test environment variables
4444
run: |
4545
echo "POSTGRES_TEST_DSN=postgresql+asyncpg://a2a:a2a_password@localhost:5432/a2a_test" >> $GITHUB_ENV
@@ -53,7 +53,7 @@ jobs:
5353
run: |
5454
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
5555
- name: Install dependencies
56-
run: uv sync --dev --extra all
56+
run: uv sync --locked --dev --extra all
5757
- name: Run tests and check coverage
5858
run: uv run pytest --cov=a2a --cov-report term --cov-fail-under=88
5959
- name: Show coverage summary in log

.github/workflows/update-a2a-types.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
---
22
name: Update A2A Schema from Specification
33
on:
4-
repository_dispatch:
5-
types: [a2a_json_update]
4+
# TODO (https://github.com/a2aproject/a2a-python/issues/559): bring back once types are migrated, currently it generates many broken PRs
5+
# repository_dispatch:
6+
# types: [a2a_json_update]
67
workflow_dispatch:
78
jobs:
89
generate_and_pr:
@@ -12,7 +13,7 @@ jobs:
1213
pull-requests: write
1314
steps:
1415
- name: Checkout code
15-
uses: actions/checkout@v5
16+
uses: actions/checkout@v6
1617
- name: Set up Python
1718
uses: actions/setup-python@v6
1819
with:
@@ -22,7 +23,7 @@ jobs:
2223
- name: Configure uv shell
2324
run: echo "$HOME/.cargo/bin" >> $GITHUB_PATH
2425
- name: Install dependencies (datamodel-code-generator)
25-
run: uv sync
26+
run: uv sync --locked
2627
- name: Define output file variable
2728
id: vars
2829
run: |
@@ -42,7 +43,7 @@ jobs:
4243
uv run scripts/grpc_gen_post_processor.py
4344
echo "Buf generate finished."
4445
- name: Create Pull Request with Updates
45-
uses: peter-evans/create-pull-request@v7
46+
uses: peter-evans/create-pull-request@v8
4647
with:
4748
token: ${{ secrets.A2A_BOT_PAT }}
4849
committer: a2a-bot <a2a-bot@google.com>

CHANGELOG.md

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,46 @@
11
# Changelog
22

3+
## [0.3.22](https://github.com/a2aproject/a2a-python/compare/v0.3.21...v0.3.22) (2025-12-16)
4+
5+
6+
### Features
7+
8+
* Add custom ID generators to SimpleRequestContextBuilder ([#594](https://github.com/a2aproject/a2a-python/issues/594)) ([04bcafc](https://github.com/a2aproject/a2a-python/commit/04bcafc737cf426d9975c76e346335ff992363e2))
9+
10+
11+
### Code Refactoring
12+
13+
* Move agent card signature verification into `A2ACardResolver` ([6fa6a6c](https://github.com/a2aproject/a2a-python/commit/6fa6a6cf3875bdf7bfc51fb1a541a3f3e8381dc0))
14+
15+
## [0.3.21](https://github.com/a2aproject/a2a-python/compare/v0.3.20...v0.3.21) (2025-12-12)
16+
17+
18+
### Documentation
19+
20+
* Fixing typos ([#586](https://github.com/a2aproject/a2a-python/issues/586)) ([5fea21f](https://github.com/a2aproject/a2a-python/commit/5fea21fb34ecea55e588eb10139b5d47020a76cb))
21+
22+
## [0.3.20](https://github.com/a2aproject/a2a-python/compare/v0.3.19...v0.3.20) (2025-12-03)
23+
24+
25+
### Bug Fixes
26+
27+
* Improve streaming errors handling ([#576](https://github.com/a2aproject/a2a-python/issues/576)) ([7ea7475](https://github.com/a2aproject/a2a-python/commit/7ea7475091df2ee40d3035ef1bc34ee2f86524ee))
28+
29+
## [0.3.19](https://github.com/a2aproject/a2a-python/compare/v0.3.18...v0.3.19) (2025-11-25)
30+
31+
32+
### Bug Fixes
33+
34+
* **jsonrpc, rest:** `extensions` support in `get_card` methods in `json-rpc` and `rest` transports ([#564](https://github.com/a2aproject/a2a-python/issues/564)) ([847f18e](https://github.com/a2aproject/a2a-python/commit/847f18eff59985f447c39a8e5efde87818b68d15))
35+
36+
## [0.3.18](https://github.com/a2aproject/a2a-python/compare/v0.3.17...v0.3.18) (2025-11-24)
37+
38+
39+
### Bug Fixes
40+
41+
* 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))
42+
43+
344
## [0.3.17](https://github.com/a2aproject/a2a-python/compare/v0.3.16...v0.3.17) (2025-11-24)
445

546

@@ -94,7 +135,7 @@
94135
### Bug Fixes
95136

96137
* apply `history_length` for `message/send` requests ([#498](https://github.com/a2aproject/a2a-python/issues/498)) ([a49f94e](https://github.com/a2aproject/a2a-python/commit/a49f94ef23d81b8375e409b1c1e51afaf1da1956))
97-
* **client:** `A2ACardResolver.get_agent_card` will auto-populate with `agent_card_path` when `relative_card_path` is empty ([#508](https://github.com/a2aproject/a2a-python/issues/508)) ([ba24ead](https://github.com/a2aproject/a2a-python/commit/ba24eadb5b6fcd056a008e4cbcef03b3f72a37c3))
138+
* **client:** `A2ACardResolver.get_agent_card` will autopopulate with `agent_card_path` when `relative_card_path` is empty ([#508](https://github.com/a2aproject/a2a-python/issues/508)) ([ba24ead](https://github.com/a2aproject/a2a-python/commit/ba24eadb5b6fcd056a008e4cbcef03b3f72a37c3))
98139

99140

100141
### Documentation
@@ -431,8 +472,8 @@
431472
* Event consumer should stop on input_required ([#167](https://github.com/a2aproject/a2a-python/issues/167)) ([51c2d8a](https://github.com/a2aproject/a2a-python/commit/51c2d8addf9e89a86a6834e16deb9f4ac0e05cc3))
432473
* Fix Release Version ([#161](https://github.com/a2aproject/a2a-python/issues/161)) ([011d632](https://github.com/a2aproject/a2a-python/commit/011d632b27b201193813ce24cf25e28d1335d18e))
433474
* generate StrEnum types for enums ([#134](https://github.com/a2aproject/a2a-python/issues/134)) ([0c49dab](https://github.com/a2aproject/a2a-python/commit/0c49dabcdb9d62de49fda53d7ce5c691b8c1591c))
434-
* library should released as 0.2.6 ([d8187e8](https://github.com/a2aproject/a2a-python/commit/d8187e812d6ac01caedf61d4edaca522e583d7da))
435-
* remove error types from enqueable events ([#138](https://github.com/a2aproject/a2a-python/issues/138)) ([511992f](https://github.com/a2aproject/a2a-python/commit/511992fe585bd15e956921daeab4046dc4a50a0a))
475+
* library should be released as 0.2.6 ([d8187e8](https://github.com/a2aproject/a2a-python/commit/d8187e812d6ac01caedf61d4edaca522e583d7da))
476+
* remove error types from enqueueable events ([#138](https://github.com/a2aproject/a2a-python/issues/138)) ([511992f](https://github.com/a2aproject/a2a-python/commit/511992fe585bd15e956921daeab4046dc4a50a0a))
436477
* **stream:** don't block event loop in EventQueue ([#151](https://github.com/a2aproject/a2a-python/issues/151)) ([efd9080](https://github.com/a2aproject/a2a-python/commit/efd9080b917c51d6e945572fd123b07f20974a64))
437478
* **task_updater:** fix potential duplicate artifact_id from default v… ([#156](https://github.com/a2aproject/a2a-python/issues/156)) ([1f0a769](https://github.com/a2aproject/a2a-python/commit/1f0a769c1027797b2f252e4c894352f9f78257ca))
438479

0 commit comments

Comments
 (0)