Skip to content

Commit 5597738

Browse files
committed
release v1.5.0 at 2026-09-01 19:21:09 UTC
1 parent ef7808f commit 5597738

256 files changed

Lines changed: 17914 additions & 1050 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": "1.4.2",
3+
"version": "1.5.0",
44
"description": "Scaffold, develop, evaluate, and deploy AI agents with Google ADK. Bundles skills for the agent development lifecycle.",
55
"author": { "name": "Google LLC" },
66
"homepage": "https://github.com/google/agents-cli",

‎README.md‎

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
7676
| Command | What it does |
7777
|---------|-------------|
7878
| `agents-cli setup` | Install CLI + skills to coding agents |
79-
| `agents-cli scaffold <name>` | Create a new agent project |
79+
| `agents-cli create <name>` | Create a new agent project |
8080
| `agents-cli eval run` | Run the agent over the eval dataset and grade the traces |
8181
| `agents-cli deploy` | Deploy to Google Cloud |
8282
| `agents-cli publish gemini-enterprise` | Register with Gemini Enterprise |
@@ -89,8 +89,8 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
8989
| `agents-cli login` | Authenticate with Google Cloud or AI Studio |
9090
| `agents-cli login --status` | Show authentication status |
9191
| **Scaffold** | |
92-
| `agents-cli scaffold <name>` | Create a new agent project |
93-
| `agents-cli scaffold enhance` | Add deployment, CI/CD, or RAG to an existing project |
92+
| `agents-cli create <name>` | Create a new agent project |
93+
| `agents-cli scaffold enhance` | Add deployment or CI/CD to an existing project |
9494
| `agents-cli scaffold upgrade` | Upgrade project to a newer agents-cli version |
9595
| **Develop** | |
9696
| `agents-cli run "prompt"` | Run agent with a single prompt |
@@ -110,9 +110,6 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
110110
| `agents-cli publish gemini-enterprise` | Register with Gemini Enterprise |
111111
| `agents-cli infra single-project` | Provision single-project infrastructure |
112112
| `agents-cli infra cicd` | Set up CI/CD pipeline + staging/prod infrastructure |
113-
| **Data** | |
114-
| `agents-cli infra datastore` | Provision datastore infrastructure for RAG |
115-
| `agents-cli data-ingestion` | Run data ingestion pipeline |
116113
| **Other** | |
117114
| `agents-cli info` | Show project config and CLI version |
118115
| `agents-cli update` | Force reinstall skills to all IDEs |

‎RELEASE_NOTES.md‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,31 @@
33
All notable changes to this project will be documented in this file.
44

55

6+
## [1.5.0] - 2026-09-01
7+
8+
- **Extension system with a LangChain template.** `agents-cli` can now be extended with custom commands and add-on agent templates, shipped with a LangChain extension and authoring guides. Extensions install from GitHub, other git hosts (including self-hosted and enterprise servers), or a local path for development.
9+
- Add `agents-cli infra show` to inspect the Terraform configuration provisioned by `agents-cli infra single-project`.
10+
- Add `--update-only` to `agents-cli deploy`, so a deploy updates an existing Agent Runtime engine instead of creating a duplicate.
11+
- Add a `--labels` flag to `agents-cli deploy` to tag Agent Runtime and Cloud Run deployments.
12+
- Add `--qps` to `agents-cli eval` that controls the request rate instead of being throttled to the default value.
13+
- Name the scaffolded root agent after its project instead of a generic default.
14+
- `agents-cli deploy` now retries throttled Agent Platform calls.
15+
- `agents-cli create` now reports precondition failures as clear errors instead of exiting successfully or printing a traceback.
16+
- https://github.com/google/agents-cli/issues/68
17+
- Fix background server reuse ignoring the requested session mode.
18+
- https://github.com/google/agents-cli/issues/70
19+
- Fix `reasoning_engine_adapter` streaming returning an empty response.
20+
- https://github.com/google/agents-cli/issues/80
21+
- Prevent multi-region deployments in scaffold and deploy.
22+
- https://github.com/google/agents-cli/issues/81
23+
- Give a clear error for malformed project manifests instead of silently defaulting or printing a traceback.
24+
- https://github.com/google/agents-cli/issues/74
25+
- Fix stale command references in docs and CLI hints.
26+
- https://github.com/google/agents-cli/issues/77
27+
- Scaffolded A2A agents now forward tool calls and responses to clients, not just text.
28+
- `agents-cli setup` now works without network or git access, with skills bundled into the package.
29+
- Fix a Windows failure loading a scaffolded project whose config points at a local path.
30+
631
## [1.4.2] - 2026-08-28
732

833
- Adds upper-bound for google-cloud-aiplatform dependency.

‎docs/hooks/skills_reference.py‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@
1717
import re
1818
from pathlib import Path
1919

20-
SKILLS_DIR = Path(__file__).resolve().parent.parent.parent / "skills"
20+
# Canonical IDE skills live inside the package so they ship in the wheel.
21+
SKILLS_DIR = (
22+
Path(__file__).resolve().parent.parent.parent
23+
/ "src/google/agents/cli/skills/data"
24+
)
2125
OUTPUT_FILE = Path(__file__).resolve().parent.parent / "src" / "reference" / "skills.md"
2226

2327
HEADER = """# Skills Reference

‎docs/mkdocs.yml‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@ nav:
100100
- Development:
101101
- Development Guide: guide/development.md
102102
- Project Structure: guide/project-structure.md
103+
- Extensions:
104+
- Overview: guide/extensions/index.md
105+
- Using Extensions: guide/extensions/using.md
106+
- Authoring Extensions: guide/extensions/authoring.md
107+
- First-party frameworks: guide/extensions/first-party.md
103108
- Evaluation:
104109
- Evaluation Guide: guide/evaluation.md
105110
- Deployment & Operations:
@@ -108,7 +113,7 @@ nav:
108113
- Observability:
109114
- Overview: guide/observability/index.md
110115
- Cloud Trace: guide/observability/cloud-trace.md
111-
- BigQuery Plugin: guide/observability/bq-agent-analytics.md
116+
- BigQuery Analytics Plugin: guide/observability/bq-agent-analytics.md
112117
- Reference:
113118
- reference/index.md
114119
- CLI: cli/index.md
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Authoring Extensions
2+
3+
The quickest path is ad-hoc: drop a single `agents-cli-extension.yaml` at your project root (next to `agents-cli-manifest.yaml`). It's **auto-loaded** at project scope — no `extension add` needed. Commit it, and teammates and CI get the same overrides. To share it across repos later, move the same file into its own git repo and `extension add` it — the schema doesn't change.
4+
5+
!!! warning "Auto-loaded extensions run with the repo's trust"
6+
A project-root `agents-cli-extension.yaml` executes its own local code the first time you run an overridden command — with no trust prompt, because you're trusted to run code in a repo you've opened. Treat it like any other code in the repo: review it before running `agents-cli` commands in an untrusted checkout. Each invocation logs which extension took over the command as the compensating control.
7+
8+
---
9+
10+
## Schema (`agents-cli-extension/v1alpha1`)
11+
12+
```yaml
13+
schema: agents-cli-extension/v1alpha1
14+
name: my-extension
15+
description: What this extension does.
16+
requires: # optional: the agents-cli range this extension supports
17+
agents_cli: ">=1.1,<2" # optional; omitted means no constraint
18+
on_incompatible: warn # warn (install + warn) | error (refuse at add/update)
19+
20+
commands:
21+
override: # replace a built-in; user argv passes through verbatim
22+
deploy:
23+
run: ["uv", "run", "scripts/custom_deploy.py"]
24+
description: SBOM upload, then the built-in deploy.
25+
eval.generate: # dotted name = a subcommand (group.sub)
26+
run: ["uv", "run", "scripts/eval_generate.py"]
27+
description: Framework-specific inference runner.
28+
add: # a brand-new command that doesn't exist yet
29+
compliance-report:
30+
run: ["bash", "scripts/compliance_report.sh"]
31+
description: Generate the quarterly compliance report.
32+
```
33+
34+
---
35+
36+
## Rules that matter
37+
38+
- **`run:` is a command vector** executed with **no shell**; your argv is appended verbatim. Relative paths resolve against the extension directory, and `$AGENTS_CLI_EXTENSION_DIR` locates sibling scripts and templates.
39+
- **You can't override a top-level command *group*** (e.g. `eval`) — override a specific subcommand (`eval.generate`). Peers like `eval grade` keep their built-in behavior.
40+
- **Re-invoke the built-in safely.** An override runs with `AGENTS_CLI_DISABLE_OVERRIDES=1` set, so calling `agents-cli deploy` inside your wrapper hits the built-in — no infinite recursion.
41+
- **Chaining lives in a wrapper script**, since `run:` is a single vector, not a shell line. Point `run:` at a script that sequences the steps (check, then `agents-cli deploy "$@"`).
42+
- **`name` is a single path component** matching `[A-Za-z0-9._-]+` (it becomes a directory under `extensions/`); slashes, `.`, and `..` are rejected.
43+
- **Conflicts** (same scope, surfaced in `agents-cli extension list` and `agents-cli info`): two extensions claiming one command is first-wins, and the later one is ignored. Cross-scope is not a conflict — project wins over user (`--global`).
44+
- **Ship your own agent** as a template built on the `empty_py` base — shared project scaffolding (infra + deps, no `app/`, no ADK) you drop your own `app/` onto, keeping the `app.fast_api_app:app` entrypoint so deploy is unchanged. Put an `agents-cli-extension.yaml` at the template root and users get its overrides by scaffolding from it, with nothing installed. The [LangChain template](first-party.md#langchain) is the worked example.
45+
- **A root `AGENTS.md` in your template becomes the project's coding-agent guide**, written under whatever the project calls it (`GEMINI.md` by default, or `--agent-guidance-filename`), so it replaces the base guide instead of landing beside it. Keep it to what differs; the rest belongs in the skill your template ships.
46+
- **Commit a `uv.lock` in your template.** It is copied into the project as-is, so without one two scaffolds a week apart resolve differently, and so do two Docker builds of the same commit.
47+
- **List every deployment target you support**, including `none`, in your template's `.template/templateconfig.yaml` under `settings.deployment_targets`. The CLI enforces that list, and `--prototype` resolves to `none`, so a template that omits it cannot be scaffolded in prototype mode.
48+
49+
---
50+
51+
## Compatibility
52+
53+
Upgrades are safe by design: the command surface stays backward-compatible within a major (`1.x`; breaking changes wait for `2.0`), the extension schema is additive-only within `agents-cli-extension/v1alpha1`, and your extension runs its own SHA-pinned code, so a CLI upgrade never silently changes it.
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# First-party frameworks
2+
3+
A framework is delivered as a **template you scaffold from**, not as an extension you install. The template carries its own `agents-cli-extension.yaml`, so the project gets the framework's command overrides with nothing installed machine-wide.
4+
5+
| Framework | What it does |
6+
|--------|--------------|
7+
| [LangChain](#langchain) | Run a LangChain agent through the `agents-cli` lifecycle. |
8+
9+
---
10+
11+
## LangChain
12+
13+
The LangChain template runs a [LangChain](https://python.langchain.com) agent through the `agents-cli` lifecycle. It overrides only the framework-coupled commands and leaves everything else — `deploy`, `infra`, `eval grade` — running natively.
14+
15+
!!! warning "Experimental: deploy to Cloud Run or GKE"
16+
17+
On Agent Runtime the container serves and traces normally, but the integrations that
18+
expect an ADK app do not work, because this project serves A2A and no `reasoning_engine`
19+
routes: `publish gemini-enterprise` is refused (registration invokes `:streamQuery`), the
20+
Console playground cannot invoke the agent, and the Console's session and trace views stay
21+
empty. Traces still reach Cloud Trace.
22+
23+
### Create a project
24+
25+
```bash
26+
agents-cli create my-agent \
27+
--agent google/agents-cli/extensions/langchain/template@v1.5.0 \
28+
-d cloud_run
29+
cd my-agent && agents-cli install
30+
```
31+
32+
The scaffolded project contains `agents-cli-extension.yaml` at its root. That file is auto-loaded at project scope, so the overrides below are active in this project and nowhere else. Commit it.
33+
34+
### What it overrides
35+
36+
| Command | Behavior in a LangChain project |
37+
|---------|---------------------------------|
38+
| `playground` | `uv run langgraph dev` — the local LangGraph dev server (also serves A2A). |
39+
| `publish gemini-enterprise` | Runs the built-in, except on Agent Runtime, where it refuses with the reason. |
40+
| `run` | Invokes the compiled graph in-process. |
41+
| `eval generate` | Produces the standard `EvaluationDataset` shape, so `eval grade` is unchanged. |
42+
| `eval dataset synthesize`, `eval optimize` | Refused with an explanation: both drive the agent through ADK. |
43+
44+
Everything else stays native — **do not override** `deploy` (the target-appropriate native deploy, e.g. `gcloud run deploy --source .` on Cloud Run), `eval grade` / `compare` / `analyze` (framework-agnostic), `infra`, or `publish`.
45+
46+
### The scaffolded agent
47+
48+
The default `app/agent.py` is a Gemini ReAct agent built with `langchain.agents.create_agent` and a sample `get_weather` tool. It calls Gemini via Vertex AI using Application Default Credentials; set `GOOGLE_API_KEY` or `GEMINI_API_KEY` in `.env` to use AI Studio instead (the scaffolded `.env.example` names the latter).
49+
50+
Because the project rides the framework-neutral `empty_py` substrate, the generated code contains **no ADK dependency**, and the template ships its own coding-agent skill.
51+
52+
### Serving over A2A
53+
54+
The deployed agent is served over the [Agent2Agent (A2A) protocol](https://a2a-protocol.org) — the same contract the rest of the toolchain expects — so it works unchanged:
55+
56+
- **Entrypoint:** `uvicorn app.fast_api_app:app` (the scaffold Dockerfile `CMD`).
57+
- **Endpoints:** JSON-RPC at `POST /a2a/app`; Agent Card at `/a2a/app/.well-known/agent-card.json`.
58+
- **Streaming:** the executor streams LLM token chunks as incremental A2A task artifacts (`capabilities.streaming=True`), so a real chat model streams token-by-token. Graphs whose nodes don't stream tokens fall back to a single final artifact.
59+
60+
Query a deployed (or locally served) agent over A2A. Because the project overrides `run` with in-process graph invocation, set `AGENTS_CLI_DISABLE_OVERRIDES=1` to reach the built-in A2A client:
61+
62+
```bash
63+
AGENTS_CLI_DISABLE_OVERRIDES=1 agents-cli run --url https://<service-url> --mode a2a --app-name app "hello"
64+
```
65+
66+
### Full journey
67+
68+
```bash
69+
agents-cli create my-agent --agent google/agents-cli/extensions/langchain/template@v1.5.0 -d cloud_run
70+
cd my-agent && agents-cli install
71+
agents-cli run "what's the weather in San Francisco?" # in-process graph
72+
agents-cli eval generate --dataset tests/eval/datasets/basic-dataset.json -o tests/eval/output/
73+
agents-cli eval grade --traces tests/eval/output/<dataset>.json --config tests/eval/eval_config.yaml
74+
agents-cli deploy # native Cloud Run deploy
75+
```
76+
77+
### Notes
78+
79+
- **Credentials:** `run` and `eval` call Gemini, so they need credentials — `GOOGLE_CLOUD_PROJECT` plus ADC, or `GOOGLE_API_KEY` / `GEMINI_API_KEY` for AI Studio.
80+
- **Run the built-in instead of an override:** prefix with `AGENTS_CLI_DISABLE_OVERRIDES=1` (e.g. `AGENTS_CLI_DISABLE_OVERRIDES=1 agents-cli run "hi"`).
81+
- **Deploy contract:** `app/fast_api_app.py` must keep exposing `app`. If you restructure the agent, keep that import working.
82+
- **Compatibility:** the template's manifest declares no `requires` range, so its overrides apply on any CLI version. See [Authoring → Compatibility](authoring.md#compatibility) for declaring one in your own.

‎docs/src/guide/extensions/index.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Extensions
2+
3+
An **extension** overrides or adds an `agents-cli` command — to run a different agent framework, apply an org's deploy policy, or add a command of your own, without forking the tool.
4+
5+
- **[Using extensions](using.md)** — what extensions can do, how they work, and how to adopt, scope, and operate one.
6+
- **[Authoring extensions](authoring.md)** — write the `agents-cli-extension.yaml` schema.
7+
- **[First-party frameworks](first-party.md)** — the framework templates we maintain (LangChain today).

0 commit comments

Comments
 (0)