From d0585a0b7b36995b6b534a64d89669da47bc9b5f Mon Sep 17 00:00:00 2001 From: Nan Yu Date: Wed, 1 Apr 2026 17:09:15 +0000 Subject: [PATCH 1/2] chore: implement dynamic versioning and rename package to a2ui-agent-sdk --- agent_sdks/python/pyproject.toml | 9 ++++++--- agent_sdks/python/src/a2ui/__init__.py | 3 ++- agent_sdks/python/src/a2ui/version.py | 24 ++++++++++++++++++++++++ agent_sdks/python/uv.lock | 3 +-- 4 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 agent_sdks/python/src/a2ui/version.py diff --git a/agent_sdks/python/pyproject.toml b/agent_sdks/python/pyproject.toml index efac1349c..8d5e8c62a 100644 --- a/agent_sdks/python/pyproject.toml +++ b/agent_sdks/python/pyproject.toml @@ -13,9 +13,9 @@ # limitations under the License. [project] -name = "a2ui-agent" -version = "0.1.0" -description = "A2UI Agent" +name = "a2ui-agent-sdk" +dynamic = ["version"] +description = "A2UI Agent SDK" readme = "README.md" requires-python = ">=3.10" dependencies = [ @@ -29,6 +29,9 @@ dependencies = [ requires = ["hatchling", "jsonschema"] build-backend = "hatchling.build" +[tool.hatch.version] +path = "src/a2ui/version.py" + [tool.hatch.build.targets.wheel] packages = ["src/a2ui"] artifacts = ["src/a2ui/assets/**"] diff --git a/agent_sdks/python/src/a2ui/__init__.py b/agent_sdks/python/src/a2ui/__init__.py index 4df27a209..b4c9f0bb2 100644 --- a/agent_sdks/python/src/a2ui/__init__.py +++ b/agent_sdks/python/src/a2ui/__init__.py @@ -10,4 +10,5 @@ # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and -# limitations under the License. + +from .version import __version__ diff --git a/agent_sdks/python/src/a2ui/version.py b/agent_sdks/python/src/a2ui/version.py new file mode 100644 index 000000000..c915fb471 --- /dev/null +++ b/agent_sdks/python/src/a2ui/version.py @@ -0,0 +1,24 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# File-based dynamic versioning +# - The next release version +# - Version format: major.minor.patch +# - Update the version in this file before releasing +# +# TODO: +# Switch to VCS-based versioning which derives version +# from Git tags automatically with the hatch-vcs plugin +# when we start using Git tags. +__version__ = "0.1.2" diff --git a/agent_sdks/python/uv.lock b/agent_sdks/python/uv.lock index f97da0887..34fe6ec43 100644 --- a/agent_sdks/python/uv.lock +++ b/agent_sdks/python/uv.lock @@ -25,8 +25,7 @@ wheels = [ ] [[package]] -name = "a2ui-agent" -version = "0.1.0" +name = "a2ui-agent-sdk" source = { editable = "." } dependencies = [ { name = "a2a-sdk" }, From 6d93a34ed32ea79bd0ee1f3f7c8191efb86b35f9 Mon Sep 17 00:00:00 2001 From: Nan Yu Date: Wed, 1 Apr 2026 17:44:55 +0000 Subject: [PATCH 2/2] chore: migrate a2ui-agent to a2ui-agent-sdk 0.1.1 from PyPI across all sample projects --- .../agent/adk/contact_lookup/pyproject.toml | 2 +- .../custom-components-example/pyproject.toml | 2 +- .../agent/adk/mcp_app_proxy/pyproject.toml | 5 +- samples/agent/adk/orchestrator/pyproject.toml | 2 +- samples/agent/adk/pyproject.toml | 3 -- .../adk/restaurant_finder/pyproject.toml | 2 +- samples/agent/adk/rizzcharts/pyproject.toml | 5 +- samples/agent/adk/uv.lock | 47 +++++++------------ .../mcp/a2ui-over-mcp-recipe/pyproject.toml | 4 +- .../agent/mcp/a2ui-over-mcp-recipe/uv.lock | 10 ++-- 10 files changed, 30 insertions(+), 52 deletions(-) diff --git a/samples/agent/adk/contact_lookup/pyproject.toml b/samples/agent/adk/contact_lookup/pyproject.toml index 66428c508..b2388b63a 100644 --- a/samples/agent/adk/contact_lookup/pyproject.toml +++ b/samples/agent/adk/contact_lookup/pyproject.toml @@ -26,7 +26,7 @@ dependencies = [ "python-dotenv>=1.1.0", "litellm", "jsonschema>=4.0.0", - "a2ui-agent", + "a2ui-agent-sdk>=0.1.1", ] [tool.hatch.build.targets.wheel] diff --git a/samples/agent/adk/custom-components-example/pyproject.toml b/samples/agent/adk/custom-components-example/pyproject.toml index 271ae864e..89b241f39 100644 --- a/samples/agent/adk/custom-components-example/pyproject.toml +++ b/samples/agent/adk/custom-components-example/pyproject.toml @@ -26,7 +26,7 @@ dependencies = [ "python-dotenv>=1.1.0", "litellm", "jsonschema>=4.0.0", - "a2ui-agent", + "a2ui-agent-sdk>=0.1.1", "mcp>=1.26.0", "uvicorn>=0.40.0", "starlette>=0.50.0", diff --git a/samples/agent/adk/mcp_app_proxy/pyproject.toml b/samples/agent/adk/mcp_app_proxy/pyproject.toml index edb820d93..6e64bd8e7 100644 --- a/samples/agent/adk/mcp_app_proxy/pyproject.toml +++ b/samples/agent/adk/mcp_app_proxy/pyproject.toml @@ -28,7 +28,7 @@ dependencies = [ "python-dotenv>=1.1.0", "litellm", "jsonschema>=4.0.0", - "a2ui-agent", + "a2ui-agent-sdk>=0.1.1", "uvicorn", "starlette", "mcp", @@ -42,8 +42,5 @@ mcp_app_proxy = "mcp_app_proxy:main" requires = ["hatchling"] build-backend = "hatchling.build" -[tool.uv.sources] -a2ui-agent = { path = "../../../../agent_sdks/python", editable = true } - [tool.hatch.build.targets.wheel] packages = ["."] diff --git a/samples/agent/adk/orchestrator/pyproject.toml b/samples/agent/adk/orchestrator/pyproject.toml index eaa7733ea..67a7ce326 100644 --- a/samples/agent/adk/orchestrator/pyproject.toml +++ b/samples/agent/adk/orchestrator/pyproject.toml @@ -26,7 +26,7 @@ dependencies = [ "python-dotenv>=1.1.0", "litellm", "jsonschema>=4.0.0", - "a2ui-agent", + "a2ui-agent-sdk>=0.1.1", ] [tool.hatch.build.targets.wheel] diff --git a/samples/agent/adk/pyproject.toml b/samples/agent/adk/pyproject.toml index 334636774..d84e1efc8 100644 --- a/samples/agent/adk/pyproject.toml +++ b/samples/agent/adk/pyproject.toml @@ -19,9 +19,6 @@ default = true [tool.uv.workspace] members = ["contact_lookup", "custom-components-example", "orchestrator", "restaurant_finder", "rizzcharts", "mcp_app_proxy"] -[tool.uv.sources] -a2ui-agent = { path = "../../../agent_sdks/python", editable = true } - [tool.pyink] unstable = true target-version = [] diff --git a/samples/agent/adk/restaurant_finder/pyproject.toml b/samples/agent/adk/restaurant_finder/pyproject.toml index 517687bd1..2254dc989 100644 --- a/samples/agent/adk/restaurant_finder/pyproject.toml +++ b/samples/agent/adk/restaurant_finder/pyproject.toml @@ -26,7 +26,7 @@ dependencies = [ "python-dotenv>=1.1.0", "litellm", "jsonschema>=4.0.0", - "a2ui-agent", + "a2ui-agent-sdk>=0.1.1", ] [tool.hatch.build.targets.wheel] diff --git a/samples/agent/adk/rizzcharts/pyproject.toml b/samples/agent/adk/rizzcharts/pyproject.toml index d0b51764a..30b3b167b 100644 --- a/samples/agent/adk/rizzcharts/pyproject.toml +++ b/samples/agent/adk/rizzcharts/pyproject.toml @@ -26,7 +26,7 @@ dependencies = [ "python-dotenv>=1.1.0", "litellm", "jsonschema>=4.0.0", - "a2ui-agent", + "a2ui-agent-sdk>=0.1.1", ] [tool.hatch.build.targets.wheel] @@ -42,6 +42,3 @@ allow-direct-references = true [[tool.uv.index]] url = "https://pypi.org/simple" default = true - -[tool.uv.sources] -a2ui-agent = { path = "../../../../agent_sdks/python", editable = true } diff --git a/samples/agent/adk/uv.lock b/samples/agent/adk/uv.lock index 65ec05fef..5e39c0cdc 100644 --- a/samples/agent/adk/uv.lock +++ b/samples/agent/adk/uv.lock @@ -36,29 +36,18 @@ wheels = [ ] [[package]] -name = "a2ui-agent" -version = "0.1.0" -source = { editable = "../../../agent_sdks/python" } +name = "a2ui-agent-sdk" +version = "0.1.1" +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "a2a-sdk" }, { name = "google-adk" }, { name = "google-genai" }, { name = "jsonschema" }, ] - -[package.metadata] -requires-dist = [ - { name = "a2a-sdk", specifier = ">=0.3.0" }, - { name = "google-adk", specifier = ">=1.28.0" }, - { name = "google-genai", specifier = ">=1.27.0" }, - { name = "jsonschema", specifier = ">=4.0.0" }, -] - -[package.metadata.requires-dev] -dev = [ - { name = "pyink", specifier = ">=24.10.0" }, - { name = "pytest", specifier = ">=9.0.2" }, - { name = "pytest-asyncio", specifier = ">=1.3.0" }, +sdist = { url = "https://files.pythonhosted.org/packages/08/a8/4094c52e8e5bea73cc80263bd004a85aa63be661ad1f10a86573296e30b0/a2ui_agent_sdk-0.1.1.tar.gz", hash = "sha256:a347e9d4bfa90611f1f7b5c9a2ad65e1dab0501377f1eb916962a5722b2df6c9", size = 228110, upload-time = "2026-03-31T23:40:37.072Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/33/09a66b7581987b4ce1a479a9f1eeef91261ccb8ef5ebd4745f64ee414092/a2ui_agent_sdk-0.1.1-py3-none-any.whl", hash = "sha256:79d99cb46c2b709c42a1368a27996691d2a6fb8b7cc4f4efb73a04d002acc5e7", size = 71472, upload-time = "2026-03-31T23:40:38.256Z" }, ] [[package]] @@ -67,7 +56,7 @@ version = "0.1.0" source = { editable = "contact_lookup" } dependencies = [ { name = "a2a-sdk" }, - { name = "a2ui-agent" }, + { name = "a2ui-agent-sdk" }, { name = "click" }, { name = "google-adk" }, { name = "google-genai" }, @@ -79,7 +68,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "a2a-sdk", specifier = ">=0.3.0" }, - { name = "a2ui-agent", editable = "../../../agent_sdks/python" }, + { name = "a2ui-agent-sdk", specifier = ">=0.1.1" }, { name = "click", specifier = ">=8.1.8" }, { name = "google-adk", specifier = ">=1.28.0" }, { name = "google-genai", specifier = ">=1.27.0" }, @@ -94,7 +83,7 @@ version = "0.1.0" source = { editable = "custom-components-example" } dependencies = [ { name = "a2a-sdk" }, - { name = "a2ui-agent" }, + { name = "a2ui-agent-sdk" }, { name = "click" }, { name = "fastapi" }, { name = "google-adk" }, @@ -110,7 +99,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "a2a-sdk", specifier = ">=0.3.0" }, - { name = "a2ui-agent", editable = "../../../agent_sdks/python" }, + { name = "a2ui-agent-sdk", specifier = ">=0.1.1" }, { name = "click", specifier = ">=8.1.8" }, { name = "fastapi", specifier = ">=0.123.10" }, { name = "google-adk", specifier = ">=1.28.0" }, @@ -129,7 +118,7 @@ version = "0.1.0" source = { editable = "restaurant_finder" } dependencies = [ { name = "a2a-sdk" }, - { name = "a2ui-agent" }, + { name = "a2ui-agent-sdk" }, { name = "click" }, { name = "google-adk" }, { name = "google-genai" }, @@ -141,7 +130,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "a2a-sdk", specifier = ">=0.3.0" }, - { name = "a2ui-agent", editable = "../../../agent_sdks/python" }, + { name = "a2ui-agent-sdk", specifier = ">=0.1.1" }, { name = "click", specifier = ">=8.1.8" }, { name = "google-adk", specifier = ">=1.28.0" }, { name = "google-genai", specifier = ">=1.27.0" }, @@ -1674,7 +1663,7 @@ version = "0.1.0" source = { editable = "mcp_app_proxy" } dependencies = [ { name = "a2a-sdk" }, - { name = "a2ui-agent" }, + { name = "a2ui-agent-sdk" }, { name = "anyio" }, { name = "click" }, { name = "google-adk" }, @@ -1690,7 +1679,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "a2a-sdk", specifier = ">=0.3.0" }, - { name = "a2ui-agent", editable = "../../../agent_sdks/python" }, + { name = "a2ui-agent-sdk", specifier = ">=0.1.1" }, { name = "anyio" }, { name = "click", specifier = ">=8.1.8" }, { name = "google-adk", specifier = ">=1.28.0" }, @@ -2033,7 +2022,7 @@ version = "0.1.0" source = { editable = "orchestrator" } dependencies = [ { name = "a2a-sdk" }, - { name = "a2ui-agent" }, + { name = "a2ui-agent-sdk" }, { name = "click" }, { name = "google-adk" }, { name = "google-genai" }, @@ -2045,7 +2034,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "a2a-sdk", specifier = ">=0.3.0" }, - { name = "a2ui-agent", editable = "../../../agent_sdks/python" }, + { name = "a2ui-agent-sdk", specifier = ">=0.1.1" }, { name = "click", specifier = ">=8.1.8" }, { name = "google-adk", specifier = ">=1.28.0" }, { name = "google-genai", specifier = ">=1.27.0" }, @@ -2609,7 +2598,7 @@ version = "0.1.0" source = { editable = "rizzcharts" } dependencies = [ { name = "a2a-sdk" }, - { name = "a2ui-agent" }, + { name = "a2ui-agent-sdk" }, { name = "click" }, { name = "google-adk" }, { name = "google-genai" }, @@ -2621,7 +2610,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "a2a-sdk", specifier = ">=0.3.0" }, - { name = "a2ui-agent", editable = "../../../agent_sdks/python" }, + { name = "a2ui-agent-sdk", specifier = ">=0.1.1" }, { name = "click", specifier = ">=8.1.8" }, { name = "google-adk", specifier = ">=1.28.0" }, { name = "google-genai", specifier = ">=1.27.0" }, diff --git a/samples/agent/mcp/a2ui-over-mcp-recipe/pyproject.toml b/samples/agent/mcp/a2ui-over-mcp-recipe/pyproject.toml index 32d218cef..15bd92f5f 100644 --- a/samples/agent/mcp/a2ui-over-mcp-recipe/pyproject.toml +++ b/samples/agent/mcp/a2ui-over-mcp-recipe/pyproject.toml @@ -20,7 +20,7 @@ readme = "README.md" requires-python = ">=3.10" keywords = ["mcp", "llm", "automation", "a2ui", "agent"] license = { text = "MIT" } -dependencies = ["anyio>=4.5", "click>=8.2.0", "httpx>=0.27", "mcp", "a2ui-agent"] +dependencies = ["anyio>=4.5", "click>=8.2.0", "httpx>=0.27", "mcp", "a2ui-agent-sdk>=0.1.1"] [project.scripts] a2ui-mcp-recipe-demo = "server:main" @@ -52,5 +52,3 @@ target-version = "py310" [dependency-groups] dev = ["pyright>=1.1.378", "pytest>=8.3.3", "ruff>=0.6.9"] -[tool.uv.sources] -a2ui-agent = { path = "../../../../agent_sdks/python", editable = true } diff --git a/samples/agent/mcp/a2ui-over-mcp-recipe/uv.lock b/samples/agent/mcp/a2ui-over-mcp-recipe/uv.lock index c2649a111..e1d36509b 100644 --- a/samples/agent/mcp/a2ui-over-mcp-recipe/uv.lock +++ b/samples/agent/mcp/a2ui-over-mcp-recipe/uv.lock @@ -25,9 +25,9 @@ wheels = [ ] [[package]] -name = "a2ui-agent" -version = "0.1.0" -source = { editable = "../../../../agent_sdks/python" } +name = "a2ui-agent-sdk" +version = "0.1.1" +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "a2a-sdk" }, { name = "google-adk" }, @@ -55,7 +55,7 @@ name = "a2ui-mcp-recipe-demo" version = "0.1.0" source = { editable = "." } dependencies = [ - { name = "a2ui-agent" }, + { name = "a2ui-agent-sdk" }, { name = "anyio" }, { name = "click" }, { name = "httpx" }, @@ -71,7 +71,7 @@ dev = [ [package.metadata] requires-dist = [ - { name = "a2ui-agent", editable = "../../../../agent_sdks/python" }, + { name = "a2ui-agent-sdk", specifier = ">=0.1.1" }, { name = "anyio", specifier = ">=4.5" }, { name = "click", specifier = ">=8.2.0" }, { name = "httpx", specifier = ">=0.27" },