Skip to content

Commit bc2e905

Browse files
authored
feat: bump version to 0.19.0 (#439)
* feat: bump version to 0.19.0 * fix: update snapshots * fix: pipeline parity prompt * fix: pipeline parity prompt
1 parent 5ad3762 commit bc2e905

File tree

9 files changed

+205
-9
lines changed

9 files changed

+205
-9
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "agent-starter-pack"
3-
version = "0.18.2"
3+
version = "0.19.0"
44
description = "CLI to bootstrap production-ready Google Cloud GenAI agent projects from templates."
55
authors = [
66
{ name = "Google LLC", email = "[email protected]" },

tests/fixtures/makefile_hashes.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
{
2-
"adk_base_agent_engine_no_data": "c9314317841872c174e97b42614dc499cf0fbdf174495259734c572736fe0590",
2+
"adk_a2a_agent_engine": "7a8754bc3fe2b9c962e3642a4f27f208034ca4aeb7024de98e4035279b75f5c3",
3+
"adk_a2a_cloud_run": "68ce3fea8fc15dfe150cc937cae41297d013a2011169c3d207a4318a1484ab44",
4+
"adk_base_agent_engine_no_data": "ef1024f7fdb57b5f30bff908dff6780113f436614c82c2bee9522d92926fe7d7",
35
"adk_base_cloud_run_no_data": "61aac5d45c3453c4be1e7d6d661679ebbe895a245306a35ebdfb5e1c316e9dec",
4-
"adk_live_agent_engine": "303a39a2b77caa89cc1b2de1ea449e6b5140d7f019c20f27bd257365adbd96d5",
6+
"adk_live_agent_engine": "ac543991afd7ec8e8f77d37213655bbd7271eed6008a53624153d2610c9de7c6",
57
"adk_live_cloud_run": "f3dfc440c36e03eabdb51102ec2ac95b5f397b9a1e2b14c5d9fbbc66b891b6a0",
68
"agent_with_agent_garden": "59ca5c88f33ccd52e518d7630d1b4bd928bce130d0ce4f8cc770b78465c4d19c",
79
"agent_with_custom_commands": "8f3c291dad9432dd35c0a68075552a9d552c7101eb3d79006f4fee8073476927",
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# ==============================================================================
2+
# Installation & Setup
3+
# ==============================================================================
4+
5+
# Install dependencies using uv package manager
6+
install:
7+
@command -v uv >/dev/null 2>&1 || { echo "uv is not installed. Installing uv..."; curl -LsSf https://astral.sh/uv/0.8.13/install.sh | sh; source $HOME/.local/bin/env; }
8+
uv sync --dev
9+
10+
# ==============================================================================
11+
# Playground Targets
12+
# ==============================================================================
13+
14+
# Launch local dev playground
15+
playground:
16+
@echo "==============================================================================="
17+
@echo "| 🚀 Starting your agent playground... |"
18+
@echo "| |"
19+
@echo "| 💡 Try asking: What can you help me with?|"
20+
@echo "| |"
21+
@echo "| 🔍 IMPORTANT: Select the 'test_a2a' folder to interact with your agent. |"
22+
@echo "==============================================================================="
23+
uv run adk web . --port 8501 --reload_agents
24+
25+
# ==============================================================================
26+
# Backend Deployment Targets
27+
# ==============================================================================
28+
29+
# Deploy the agent remotely
30+
deploy:
31+
# Export dependencies to requirements file using uv export.
32+
(uv export --no-hashes --no-header --no-dev --no-emit-project --no-annotate > .requirements.txt 2>/dev/null || \
33+
uv export --no-hashes --no-header --no-dev --no-emit-project > .requirements.txt) && \
34+
uv run -m test_a2a.agent_engine_app
35+
36+
# Alias for 'make deploy' for backward compatibility
37+
backend: deploy
38+
39+
40+
# ==============================================================================
41+
# Infrastructure Setup
42+
# ==============================================================================
43+
44+
# Set up development environment resources using Terraform
45+
setup-dev-env:
46+
PROJECT_ID=$$(gcloud config get-value project) && \
47+
(cd deployment/terraform/dev && terraform init && terraform apply --var-file vars/env.tfvars --var dev_project_id=$$PROJECT_ID --auto-approve)
48+
49+
# ==============================================================================
50+
# Testing & Code Quality
51+
# ==============================================================================
52+
53+
# Run unit and integration tests
54+
test:
55+
uv run pytest tests/unit && uv run pytest tests/integration
56+
57+
# Run code quality checks (codespell, ruff, mypy)
58+
lint:
59+
uv sync --dev --extra lint
60+
uv run codespell
61+
uv run ruff check . --diff
62+
uv run ruff format . --check --diff
63+
uv run mypy .
64+
65+
# ==============================================================================
66+
# Gemini Enterprise Integration
67+
# ==============================================================================
68+
69+
# Register the deployed agent to Gemini Enterprise
70+
# Usage: ID="projects/.../engines/xxx" make register-gemini-enterprise
71+
# Optional env vars: GEMINI_DISPLAY_NAME, GEMINI_DESCRIPTION, GEMINI_TOOL_DESCRIPTION, AGENT_ENGINE_ID
72+
register-gemini-enterprise:
73+
uvx --from agent-starter-pack agent-starter-pack-register-gemini-enterprise
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# ==============================================================================
2+
# Installation & Setup
3+
# ==============================================================================
4+
5+
# Install dependencies using uv package manager
6+
install:
7+
@command -v uv >/dev/null 2>&1 || { echo "uv is not installed. Installing uv..."; curl -LsSf https://astral.sh/uv/0.8.13/install.sh | sh; source $HOME/.local/bin/env; }
8+
uv sync --dev
9+
10+
# ==============================================================================
11+
# Playground Targets
12+
# ==============================================================================
13+
14+
# Launch local dev playground
15+
playground:
16+
@echo "==============================================================================="
17+
@echo "| 🚀 Starting your agent playground... |"
18+
@echo "| |"
19+
@echo "| 💡 Try asking: What can you help me with?|"
20+
@echo "| |"
21+
@echo "| 🔍 IMPORTANT: Select the 'test_a2a' folder to interact with your agent. |"
22+
@echo "==============================================================================="
23+
uv run adk web . --port 8501 --reload_agents
24+
25+
# ==============================================================================
26+
# Local Development Commands
27+
# ==============================================================================
28+
29+
# Launch local development server with hot-reload
30+
local-backend:
31+
uv run uvicorn test_a2a.server:app --host localhost --port 8000 --reload
32+
33+
# ==============================================================================
34+
# Backend Deployment Targets
35+
# ==============================================================================
36+
37+
# Deploy the agent remotely
38+
# Usage: make deploy [IAP=true] [PORT=8080] - Set IAP=true to enable Identity-Aware Proxy, PORT to specify container port
39+
deploy:
40+
PROJECT_ID=$$(gcloud config get-value project) && \
41+
PROJECT_NUMBER=$$(gcloud projects describe $$PROJECT_ID --format="value(projectNumber)") && \
42+
gcloud beta run deploy test-a2a \
43+
--source . \
44+
--memory "4Gi" \
45+
--project $$PROJECT_ID \
46+
--region "us-central1" \
47+
--no-allow-unauthenticated \
48+
--no-cpu-throttling \
49+
--labels "created-by=adk" \
50+
--update-build-env-vars "AGENT_VERSION=$(shell awk -F'"' '/^version = / {print $$2}' pyproject.toml || echo '0.0.0')" \
51+
--set-env-vars \
52+
"COMMIT_SHA=$(shell git rev-parse HEAD),APP_URL=https://test-a2a-$$PROJECT_NUMBER.us-central1.run.app" \
53+
$(if $(IAP),--iap) \
54+
$(if $(PORT),--port=$(PORT))
55+
56+
# Alias for 'make deploy' for backward compatibility
57+
backend: deploy
58+
59+
60+
# ==============================================================================
61+
# Infrastructure Setup
62+
# ==============================================================================
63+
64+
# Set up development environment resources using Terraform
65+
setup-dev-env:
66+
PROJECT_ID=$$(gcloud config get-value project) && \
67+
(cd deployment/terraform/dev && terraform init && terraform apply --var-file vars/env.tfvars --var dev_project_id=$$PROJECT_ID --auto-approve)
68+
69+
# ==============================================================================
70+
# Testing & Code Quality
71+
# ==============================================================================
72+
73+
# Run unit and integration tests
74+
test:
75+
uv run pytest tests/unit && uv run pytest tests/integration
76+
77+
# Run code quality checks (codespell, ruff, mypy)
78+
lint:
79+
uv sync --dev --extra lint
80+
uv run codespell
81+
uv run ruff check . --diff
82+
uv run ruff format . --check --diff
83+
uv run mypy .

tests/fixtures/makefile_snapshots/adk_base_agent_engine_no_data.makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@ playground:
2929
# Deploy the agent remotely
3030
deploy:
3131
# Export dependencies to requirements file using uv export.
32-
uv export --no-hashes --no-header --no-dev --no-emit-project --no-annotate > .requirements.txt 2>/dev/null || \
33-
uv export --no-hashes --no-header --no-dev --no-emit-project > .requirements.txt && uv run test_adk_base/agent_engine_app.py
32+
(uv export --no-hashes --no-header --no-dev --no-emit-project --no-annotate > .requirements.txt 2>/dev/null || \
33+
uv export --no-hashes --no-header --no-dev --no-emit-project > .requirements.txt) && \
34+
uv run -m test_adk_base.agent_engine_app
3435

3536
# Alias for 'make deploy' for backward compatibility
3637
backend: deploy

tests/fixtures/makefile_snapshots/adk_live_agent_engine.makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,9 @@ playground-dev:
8686
# Deploy the agent remotely
8787
deploy:
8888
# Export dependencies to requirements file using uv export.
89-
uv export --no-hashes --no-header --no-dev --no-emit-project --no-annotate > .requirements.txt 2>/dev/null || \
90-
uv export --no-hashes --no-header --no-dev --no-emit-project > .requirements.txt && uv run test_adk_live/agent_engine_app.py
89+
(uv export --no-hashes --no-header --no-dev --no-emit-project --no-annotate > .requirements.txt 2>/dev/null || \
90+
uv export --no-hashes --no-header --no-dev --no-emit-project > .requirements.txt) && \
91+
uv run -m test_adk_live.agent_engine_app
9192

9293
# Alias for 'make deploy' for backward compatibility
9394
backend: deploy

tests/integration/test_pipeline_parity.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,8 @@ def create_comparison_prompt(
172172
- Different dependency installation patterns in agent_engine + adk_live load tests (GitHub Actions explicitly installing uv/dependencies before load test vs Cloud Build relying on environment persistence from previous steps)
173173
- Different authentication handling for integration test steps (Cloud Build's service account providing inherent permissions vs GitHub Actions using separate authentication steps)
174174
- Missing explicit authentication/GCP auth steps in Cloud Build for integration tests (Cloud Build runs with a service account that implicitly has necessary permissions, while GitHub Actions requires explicit auth steps)
175+
- Shell variable escaping differences where Cloud Build uses `$$` and GitHub Actions uses `$` (e.g., `$$2` vs `$2`, `$$VAR` vs `$VAR`). Cloud Build preprocesses `$$` to `$` before shell execution, making these functionally equivalent when the resulting command is the same.
176+
- Different uv installation patterns in agent_engine deployment where Cloud Build installs uv in a separate step from where it's used (Cloud Build installs with --user flag which persists across steps via the home directory volume, while GitHub Actions installs in the same job; both approaches are functionally equivalent).
175177
176178
**FLAG these as critical/moderate**:
177179
- Different Docker image push destinations (different projects/registries)

tests/unit/test_makefile_template.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ def render(self, context: dict[str, Any]) -> str:
4444
"deployment_target": "cloud_run",
4545
"is_adk": True,
4646
"is_adk_live": False,
47+
"is_adk_a2a": False,
4748
"data_ingestion": False,
4849
"agent_garden": False,
4950
"example_question": "What can you help me with?",
@@ -55,6 +56,7 @@ def render(self, context: dict[str, Any]) -> str:
5556
"deployment_target": "agent_engine",
5657
"is_adk": True,
5758
"is_adk_live": False,
59+
"is_adk_a2a": False,
5860
"data_ingestion": False,
5961
"agent_garden": False,
6062
"example_question": "What can you help me with?",
@@ -66,6 +68,7 @@ def render(self, context: dict[str, Any]) -> str:
6668
"deployment_target": "cloud_run",
6769
"is_adk": False,
6870
"is_adk_live": True,
71+
"is_adk_a2a": False,
6972
"data_ingestion": False,
7073
"agent_garden": False,
7174
"example_question": "Tell me about your capabilities",
@@ -77,6 +80,7 @@ def render(self, context: dict[str, Any]) -> str:
7780
"deployment_target": "agent_engine",
7881
"is_adk": False,
7982
"is_adk_live": True,
83+
"is_adk_a2a": False,
8084
"data_ingestion": False,
8185
"agent_garden": False,
8286
"example_question": "Tell me about your capabilities",
@@ -88,6 +92,7 @@ def render(self, context: dict[str, Any]) -> str:
8892
"deployment_target": "cloud_run",
8993
"is_adk": False,
9094
"is_adk_live": False,
95+
"is_adk_a2a": False,
9196
"data_ingestion": True,
9297
"datastore_type": "vertex_ai_search",
9398
"agent_garden": False,
@@ -100,6 +105,7 @@ def render(self, context: dict[str, Any]) -> str:
100105
"deployment_target": "cloud_run",
101106
"is_adk": False,
102107
"is_adk_live": False,
108+
"is_adk_a2a": False,
103109
"data_ingestion": True,
104110
"datastore_type": "vertex_ai_vector_search",
105111
"agent_garden": False,
@@ -112,6 +118,7 @@ def render(self, context: dict[str, Any]) -> str:
112118
"deployment_target": "cloud_run",
113119
"is_adk": False,
114120
"is_adk_live": False,
121+
"is_adk_a2a": False,
115122
"data_ingestion": False,
116123
"agent_garden": False,
117124
"example_question": "How can you help?",
@@ -123,6 +130,7 @@ def render(self, context: dict[str, Any]) -> str:
123130
"deployment_target": "cloud_run",
124131
"is_adk": False,
125132
"is_adk_live": False,
133+
"is_adk_a2a": False,
126134
"data_ingestion": False,
127135
"agent_garden": False,
128136
"example_question": "Custom agent question",
@@ -154,13 +162,38 @@ def render(self, context: dict[str, Any]) -> str:
154162
"deployment_target": "cloud_run",
155163
"is_adk": True,
156164
"is_adk_live": False,
165+
"is_adk_a2a": False,
157166
"data_ingestion": False,
158167
"agent_garden": True,
159168
"agent_sample_id": "sample-123",
160169
"agent_sample_publisher": "google",
161170
"example_question": "Agent garden question",
162171
"settings": {},
163172
},
173+
"adk_a2a_cloud_run": {
174+
"project_name": "test-a2a",
175+
"agent_directory": "test_a2a",
176+
"deployment_target": "cloud_run",
177+
"is_adk": True,
178+
"is_adk_live": False,
179+
"is_adk_a2a": True,
180+
"data_ingestion": False,
181+
"agent_garden": False,
182+
"example_question": "What can you help me with?",
183+
"settings": {},
184+
},
185+
"adk_a2a_agent_engine": {
186+
"project_name": "test-a2a",
187+
"agent_directory": "test_a2a",
188+
"deployment_target": "agent_engine",
189+
"is_adk": True,
190+
"is_adk_live": False,
191+
"is_adk_a2a": True,
192+
"data_ingestion": False,
193+
"agent_garden": False,
194+
"example_question": "What can you help me with?",
195+
"settings": {},
196+
},
164197
}
165198

166199

@@ -365,7 +398,8 @@ def test_agent_engine_backend_command(
365398
# Should export requirements
366399
assert "uv export" in output
367400
assert ".requirements.txt" in output
368-
assert "agent_engine_app.py" in output
401+
assert "agent_engine_app" in output
402+
assert "uv run -m" in output
369403

370404
def test_non_adk_has_streamlit_extra(
371405
self, makefile_renderer: MakefileRenderer

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)