Skip to content

Commit ae4d7ed

Browse files
committed
release v0.5.0 at 2026-06-15 22:44:07 UTC
1 parent 91b4511 commit ae4d7ed

329 files changed

Lines changed: 82239 additions & 39 deletions

File tree

Some content is hidden

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

.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "google-agents-cli",
3-
"version": "0.4.0",
3+
"version": "0.5.0",
44
"description": "Scaffold, develop, evaluate, and deploy AI agents with Google ADK. Bundles 7 skills for the agent development lifecycle.",
55
"author": { "name": "Google LLC" },
66
"homepage": "https://github.com/google/agents-cli",

RELEASE_NOTES.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,23 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [0.5.0] - 2026-06-15
6+
- chore(deps): bump @grpc/grpc-js
7+
- Update publish script to mirror and publish source
8+
- Smart fixture to find tests broken by pyfakefs / patching conflicts
9+
- fix: don't tear down a reused local server on a plain run
10+
- fix: upgrade builds the prior-version template via uvx
11+
- docs: fix pre-existing inaccuracies in skills and generated READMEs
12+
- Make publish script a bit more robust
13+
- fix: only announce the project root when chdir actually moves
14+
- feat: print a copy-pasteable resume command in the run session footer
15+
- feat: surface machine-shape params as deploy flags (Agent Runtime + Cloud Run)
16+
- feat(deploy): add --service-name override
17+
- Refactor for more consistent project resolution
18+
- fix: drain npx stderr concurrently to avoid pipe-buffer deadlock
19+
- docs: codify recurring review feedback in agent guidance
20+
- Clean up remaining adk_live stuff
21+
522
## [0.4.0] - 2026-06-10
623
- Scaffolded Python templates now use **ADK 2.0 GA**. New `adk`, `adk_a2a`, and `agentic_rag` projects pin `google-adk[gcp]>=2.0.0,<3.0.0`; the `[gcp]` extra restores the OpenTelemetry GCP exporters and bundles the BigQuery client, so the separate `[bigquery-analytics]` extra is no longer needed. Cloud SQL sessions on Cloud Run and GKE keep working under 2.0. The bundled ADK coding skill and its reference docs were refreshed for 2.0.
724
- https://github.com/google/agents-cli/issues/24

docs/src/guide/lifecycle.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ The loop expands to eight phases when you walk through it slowly. Each phase has
4848

4949
### 0 · Spec
5050

51-
A `.agents-cli-spec.md` names the agent's tools, constraints, and success criteria. The whole rest of the lifecycle reads from it: the scaffold flags, the eval rubrics, the safety guardrails, the trace attributes you'll watch in production. Don't start from blank — browse [Agent Garden](https://cloud.google.com/products/agent-garden) for an existing template close to what you want, then customize.
51+
A `.agents-cli-spec.md` names the agent's tools, constraints, and success criteria. The whole rest of the lifecycle reads from it: the scaffold flags, the eval rubrics, the safety guardrails, the trace attributes you'll watch in production. Don't start from blank — browse [Agent Garden](https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/agent-garden) for an existing template close to what you want, then customize.
5252

5353
A typical spec is one screen of markdown:
5454

gemini-extension.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"name": "google-agents-cli",
3-
"version": "0.4.0",
3+
"version": "0.5.0",
44
"description": "Scaffold, develop, evaluate, and deploy AI agents with Google ADK. Bundles 7 skills for the agent development lifecycle."
55
}

skills/google-agents-cli-adk-code/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ description: >
1212
metadata:
1313
author: Google
1414
license: Apache-2.0
15-
version: 0.4.0
15+
version: 0.5.0
1616
requires:
1717
bins:
1818
- agents-cli

skills/google-agents-cli-deploy/SKILL.md

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ description: >
1212
metadata:
1313
author: Google
1414
license: Apache-2.0
15-
version: 0.4.0
15+
version: 0.5.0
1616
requires:
1717
bins:
1818
- agents-cli
@@ -101,14 +101,20 @@ agents-cli infra single-project
101101
| `--project` | GCP project ID | All |
102102
| `--region` | GCP region | All |
103103
| `--service-account` | Service account email for the deployed agent | All |
104+
| `--service-name` | Override the deployed service name (Cloud Run service or Agent Runtime display name); defaults to the project name. If you override it, consider updating your Terraform and CI (if present) — they name resources from the project name. Not supported for GKE, whose names are fully owned by Terraform. | Agent Runtime, Cloud Run |
104105
| `--secrets` | Comma-separated `ENV=SECRET` or `ENV=SECRET:VERSION` pairs | Agent Runtime, Cloud Run |
105106
| `--update-env-vars` | Comma-separated `KEY=VALUE` environment variables | Agent Runtime, Cloud Run |
106107
| `--agent-identity` | Enable [agent identity](https://docs.cloud.google.com/gemini-enterprise-agent-platform/scale/runtime/agent-identity) (Preview) | Agent Runtime |
107108
| `--network-attachment` | Network attachment resource name for [PSC interface](https://docs.cloud.google.com/gemini-enterprise-agent-platform/scale/runtime/private-service-connect-interface) (enables private VPC connectivity) | Agent Runtime |
108109
| `--dns-peering-domain` | DNS peering domain suffix, e.g. `my-internal.corp.` (requires `--network-attachment`) | Agent Runtime |
109110
| `--dns-peering-project` | Project ID hosting the Cloud DNS managed zone for DNS peering (requires `--network-attachment`) | Agent Runtime |
110111
| `--dns-peering-network` | VPC network name in the target project for DNS peering (requires `--network-attachment`) | Agent Runtime |
111-
| `--memory` | Memory limit (default: `4Gi`) | Cloud Run |
112+
| `--memory` | Memory limit (default: `4Gi`) | Agent Runtime, Cloud Run |
113+
| `--cpu` | CPU limit (default: `1`) | Agent Runtime, Cloud Run |
114+
| `--min-instances` | Minimum number of instances (default: `1`) | Agent Runtime, Cloud Run |
115+
| `--max-instances` | Maximum number of instances (default: `10`) | Agent Runtime, Cloud Run |
116+
| `--concurrency` | Concurrent requests per container (default: `8`; see [Sizing a deployment](#sizing-a-deployment)) | Agent Runtime, Cloud Run |
117+
| `--num-workers` | Worker processes per container (default: `1`) | Agent Runtime |
112118
| `--port` | Container port | Cloud Run |
113119
| `--iap` | Enable Identity-Aware Proxy | Cloud Run |
114120
| `--image` | Container image URI (skips source build) | Cloud Run, GKE |
@@ -126,6 +132,27 @@ Run `agents-cli deploy --help` for the full flag reference.
126132
127133
---
128134

135+
## Sizing a deployment
136+
137+
Defaults (same on Agent Runtime, Cloud Run, and the generated `service.tf`): `--cpu 1`, `--memory 4Gi`, `--num-workers 1`, `--concurrency 8`, `--min-instances 1`, `--max-instances 10`.
138+
139+
The params are coupled — scale them together:
140+
141+
- **Workers = vCPUs.** Each worker is one GIL-bound process that saturates one core, so raise `--num-workers` with `--cpu` (e.g. `--cpu 4``--num-workers 4`) or you pay for idle cores.
142+
- **Memory bounds concurrency.** Each concurrent request keeps its full working set (context window, history, RAG chunks, response buffer) in memory while it waits on the model, so peak ≈ base + `concurrency × per-request memory`. Memory — not CPU — is the first limit, so raising `--concurrency` without `--memory` is the main OOM cause.
143+
- **Concurrency default is conservative.** An async worker can serve many concurrent requests while it waits on the model, but per-request memory is agent-specific, so `8` protects a memory-heavy (RAG/multimodal) agent. Light agents can raise it to 16–32+ after load-testing. See [Underutilized asynchronous workers](https://docs.cloud.google.com/gemini-enterprise-agent-platform/scale/runtime/optimize-and-scale#underutilized-workers).
144+
145+
```bash
146+
# 4x throughput: scale every param, not just one
147+
agents-cli deploy --cpu 4 --num-workers 4 --concurrency 16 --memory 16Gi
148+
```
149+
150+
**Tune with the scaffolded load test** (`tests/load_test/`, run locally or in the CI/CD staging pipeline): drive load, watch *max* latency and memory/OOM restarts, then adjust — high max latency → raise concurrency (+ workers/cpu); OOM → raise memory or lower concurrency.
151+
152+
> `--num-workers` is Agent-Runtime-only (Cloud Run runs one uvicorn process). On **GKE** these flags are rejected — size via the Terraform manifests + HorizontalPodAutoscaler under `deployment/terraform/`.
153+
154+
---
155+
129156
## Production Deployment — CI/CD Pipeline
130157

131158
For the full CI/CD pipeline setup guide — prerequisites, `infra cicd` flags, runner comparison, WIF authentication, pipeline stages, and production approval — see `references/cicd-pipeline.md`.

skills/google-agents-cli-deploy/references/cicd-pipeline.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ The pipeline has three stages:
7373

7474
1. **CI (PR checks)** — Triggered on pull request. Runs unit and integration tests.
7575
2. **Staging CD** — Triggered on merge to `main`. Builds container, deploys to staging, runs load tests.
76-
> **Path filter:** Staging CD uses `paths: ['app/**']` — it only triggers when files under `app/` change. The first push after `infra cicd` won't trigger staging CD unless you modify something in `app/`. If nothing happens after pushing, this is why.
76+
> **Path filter:** Staging CD only triggers when relevant paths change — the agent directory (`app/**` by default), `data_ingestion/**`, `tests/**`, `deployment/**`, or `uv.lock`. The first push after `infra cicd` won't trigger staging CD unless one of these changes. If nothing happens after pushing, this is why.
7777
3. **Production CD** — Triggered after successful staging deploy via `workflow_run`. Might require **manual approval** before deploying to production.
7878
> **Approving:** Go to GitHub Actions → the production workflow run → click "Review deployments" → approve the pending `production` environment. This is GitHub's environment protection rules, not a custom mechanism.
7979

skills/google-agents-cli-deploy/references/cloud-run.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
55
## Scaling & Resource Defaults
66

7-
Agents CLI scaffolds Cloud Run infrastructure in `deployment/terraform/service.tf`. Check that file for current resource limits, scaling configuration, concurrency, and session affinity settings.
7+
Agents CLI scaffolds Cloud Run infrastructure in `deployment/terraform/single-project/service.tf` (and the `cicd/` variant). Check that file for current resource limits, scaling configuration, concurrency, and session affinity settings.
88

99
Key settings to be aware of: `cpu_idle` (CPU allocation strategy), `min_instance_count` (cold start avoidance), `max_instance_request_concurrency` (concurrency per instance), and `session_affinity` (sticky routing).
1010

11+
For how to size cpu/memory/workers/concurrency together (and avoid OOM), see **Sizing a deployment** in the `/google-agents-cli-deploy` skill.
12+
1113
## Dockerfile
1214

1315
Scaffolded projects include a `Dockerfile` using single-stage build with `uv` for dependency management. Check the project root `Dockerfile` for the exact configuration.
@@ -24,7 +26,7 @@ Available endpoints vary by project template. Check `app/fast_api_app.py` for th
2426
| **Cloud SQL** | `--session-type cloud_sql` at scaffold time | Production persistent sessions (Postgres 15, IAM auth) |
2527
| **Agent Runtime** | `session_service_uri = agentengine://{resource_name}` | When using Agent Runtime as session backend |
2628

27-
Cloud SQL session infrastructure (instance, database, Cloud SQL Unix socket volume mount) is configured in `deployment/terraform/service.tf`.
29+
Cloud SQL session infrastructure (instance, database, Cloud SQL Unix socket volume mount) is configured in `deployment/terraform/single-project/service.tf`.
2830

2931
> **Manual Deployment Warning:** When using Cloud SQL without Terraform (e.g., direct `gcloud run deploy` with `--add-cloudsql-instances`), you MUST manually grant `roles/cloudsql.client` to the runtime service account, otherwise the connection will fail with authorization errors.
3032

skills/google-agents-cli-deploy/references/gke.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ All Kubernetes resources are managed by Terraform in `deployment/terraform/cicd/
2626

2727
## Terraform Infrastructure
2828

29-
GKE infrastructure is provisioned in `deployment/terraform/service.tf`. Check that file for current configuration.
29+
GKE infrastructure is provisioned in `deployment/terraform/single-project/service.tf`. Check that file for current configuration.
3030

3131
Key differences from Cloud Run: Terraform provisions a full networking stack (VPC, subnet, Cloud NAT for private node internet access) and a GKE Autopilot cluster with private nodes. Cloud SQL (optional, when `session_type == "cloud_sql"`) uses a proxy sidecar in the pod rather than Cloud Run's Unix socket volume mount.
3232

skills/google-agents-cli-deploy/references/testing-deployed-agents.md

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,9 @@ For more control (scripting, direct curl), see the target-specific sections belo
2828

2929
## Agent Runtime Deployment
3030

31-
**Option 1: Testing Notebook**
32-
```bash
33-
jupyter notebook notebooks/adk_app_testing.ipynb
34-
```
31+
Beyond the `run --url` quick test above, you can query the deployment directly.
3532

36-
**Option 2: Python Script**
33+
**Option 1: Python Script**
3734
```python
3835
import json
3936
import vertexai
@@ -48,7 +45,7 @@ async for event in agent.async_stream_query(message="Hello!", user_id="test"):
4845
print(event)
4946
```
5047

51-
**Option 3: Playground**
48+
**Option 2: Playground**
5249
```bash
5350
agents-cli playground
5451
```

0 commit comments

Comments
 (0)