Releases: polyai/adk
v0.6.0
v0.6.0 (2026-03-27)
This release is published under the Apache-2.0 License.
Features
Summary
Batch MultiResourceYamlResource writes during poly init so each YAML file is written once instead of once per resource, and add a progress spinner to init, pull, and branch switch so the CLI doesn't appear stuck on large projects.
Also edited CONTRIBUTING.md to edit the clone url - changed org to PolyAI.
Motivation
poly init is very slow on projects with many pronunciations (or other multi-resource YAML types) because save() rewrites the full YAML file for every single item. On large projects like pacden, the process appears stuck with no output. The save_to_cache + write_cache_to_file pattern already exists for poly pull — this reuses it for init and adds a progress spinner across all three commands.
Changes
-
Use
save_to_cache=Truefor allMultiResourceYamlResourcesaves duringinit_project(), then flush to disk once viawrite_cache_to_file()- Add an optionalon_save(current, total)callback toinit_project(),pull_project(),_update_multi_resource_yaml_resources(),_update_pulled_resources(), andswitch_branch()for progress reporting - Wire upconsole.status()spinners incli.pyforinit,pull, andbranch switch, usingnullcontextto skip the spinner in--jsonmode - Progress counter includes both multi-resource (per batch total) and non-multi-resource types for an accurate total -
CONTRIBUTING.md to edit the clone url - changed org from PolyAI-LDN to PolyAI.
Test strategy
- Added/updated unit tests - [x] Manual CLI testing (
poly <command>) - [ ] Tested against a live Agent Studio project - [ ] N/A (docs, config, or trivial change)
Checklist
-
ruff check .andruff format --check .pass - [x]pytestpasses (361 tests, 0 failures) - [x] No breaking changes to thepolyCLI interface (or migration path documented) - [x] Commit messages follow conventional commits
Screenshots / Logs Before: 
Detailed Changes: v0.5.1...v0.6.0
v0.5.1
v0.5.1 (2026-03-27)
This release is published under the Apache-2.0 License.
Bug Fixes
Summary Display new branch name in CLI when the tool switches branch
Motivation On push when creating a new branch, users would be shown branch ID not new branch name
Changes
- Change logger level for some logs to hide on usual CLI usage - Make it more clear when a branch id is used in logs - When branch_id changes, output this in CLI with new branch name - Update auto branch name to exclude
sdk-user
Test strategy
- Added/updated unit tests - [x] Manual CLI testing (
poly <command>) - [ ] Tested against a live Agent Studio project - [ ] N/A (docs, config, or trivial change)
Checklist
-
ruff check .andruff format --check .pass - [x]pytestpasses - [x] No breaking changes to thepolyCLI interface (or migration path documented) - [x] Commit messages follow conventional commits
Screenshots / Logs 
Co-authored-by: Copilot [email protected]
Detailed Changes: v0.5.0...v0.5.1
v0.5.0
v0.5.0 (2026-03-26)
This release is published under the Apache-2.0 License.
Features
- cli: Machine-readable --json, projection-based pull/push, and serialized push commands (#41,
cb91e2a)
Summary
Adds a global-style --json mode across poly subcommands so stdout is a single JSON object for scripting and CI. Introduces --from-projection / optional projection output for init and pull, and --output-json-commands on push to include the queued Agent Studio commands (as dicts). Moves console helpers under poly.output and adds json_output helpers (including protobuf → JSON via MessageToDict).
Motivation
Operators and automation need stable, parseable CLI output and the ability to drive pull/push from a captured projection (without hitting the projection API). Exposing staged push commands supports dry-run review and integration testing.
Closes #23
Changes
- Wire
json_parent(--json) into relevant subparsers; many code paths now emit structured JSON and exit with non-zero on failure where appropriate. - Add--from-projection(JSON string or-for stdin) topullandpush;SyncClientHandler.pull_resourcesuses an inline projection when provided instead of fetching. - Add--output-json-projectiononinit/pull(and related flows) to include the projection in JSON output when requested. - Add--output-json-commandsonpushto append serialized commands to the JSON payload;push_projectreturns(success, message, commands). -pull_projectreturns(files_with_conflicts, projection);pull_resourcesreturns(resources, projection). - Newpoly/output/json_output.py(json_print,commands_to_dicts); relocateconsole.pytopoly/output/console.pyand update imports. - Updateproject_testmocks/expectations for new return shapes;uv.lockupdated for dependencies.
Test strategy
- Added/updated unit tests - [ ] Manual CLI testing (
poly <command>) - [ ] Tested against a live Agent Studio project - [ ] N/A (docs, config, or trivial change)
Checklist
-
ruff check .andruff format --check .pass - [ ]pytestpasses - [ ] No breaking changes to thepolyCLI interface (or migration path documented) - [ ] Commit messages follow conventional commits
Note for reviewers: The CLI remains backward compatible (new flags only). AgentStudioProject.pull_project / push_project (and pull_resources on the handler) change return types vs main; any direct Python callers must be updated to unpack the new tuples and optional projection_json argument.
Screenshots / Logs
Co-authored-by: Oliver Eisenberg [email protected]
Co-authored-by: Claude Sonnet 4.6 [email protected]
Detailed Changes: v0.4.1...v0.5.0
v0.4.1
v0.4.1 (2026-03-26)
This release is published under the Apache-2.0 License.
Bug Fixes
Summary Fix issue where merges were marked as successful when there is an internal API error
Motivation
This error breaks pipelines that rely on this output
Closes #
Changes
- Make success response more explicit instead of relying on errors/conflicts lists
Test strategy
- Added/updated unit tests - [ ] Manual CLI testing (
poly <command>) - [x] Tested against a live Agent Studio project - [ ] N/A (docs, config, or trivial change)
Checklist
-
ruff check .andruff format --check .pass - [x]pytestpasses - [x] No breaking changes to thepolyCLI interface (or migration path documented) - [x] Commit messages follow conventional commits
Screenshots / Logs
Summary
- Prevent coverage CI from failing when
uv.lockis absent on a branch - Wrap both
git checkout -- uv.lockcalls with a conditionalgit rev-parse --verifycheck before and after the base branch checkout step
🤖 Generated with Claude Code
Co-authored-by: Claude Sonnet 4.6 [email protected]
Chores
Summary
- Adds
pytest-cov>=6.0.0andcoverage>=7.0.0to the[dev]optional dependencies inpyproject.toml
Test plan
🤖 Generated with Claude Code
Co-authored-by: Claude Sonnet 4.6 [email protected]
Documentation
Summary
Motivation
Closes #
Changes
Test strategy
- Added/updated unit tests - [ ] Manual CLI testing (
poly <command>) - [ ] Tested against a live Agent Studio project - [ ] N/A (docs, config, or trivial change)
Checklist
-
ruff check .andruff format --check .pass - [ ]pytestpasses - [ ] No breaking changes to thepolyCLI interface (or migration path documented) - [ ] Commit messages follow conventional commits
Screenshots / Logs
Detailed Changes: v0.4.0...v0.4.1
v0.4.0
v0.4.0 (2026-03-25)
This release is published under the Apache-2.0 License.
Bug Fixes
Summary
Motivation
Closes #
Changes
Test strategy
- Added/updated unit tests - [ ] Manual CLI testing (
poly <command>) - [ ] Tested against a live Agent Studio project - [ ] N/A (docs, config, or trivial change)
Checklist
-
ruff check .andruff format --check .pass - [ ]pytestpasses - [ ] No breaking changes to thepolyCLI interface (or migration path documented) - [ ] Commit messages follow conventional commits
Screenshots / Logs
Co-authored-by: Benjamin Levin [email protected]
Documentation
Summary
Adds a GitHub Actions workflow that automatically keeps the docs in sync with the codebase. Every time a PR is merged to main that touches `src/`, the workflow diffs what changed, sends the diff and all current docs to Claude, and opens a new PR with any suggested updates for human review before they are merged.
Motivation
The docs are fully hand-maintained today. Any new CLI flag, changed command behaviour, new resource type, or schema change requires a manual docs PR — and that update often doesn't happen. This automates the detection and drafting of those updates.
Changes
- `.github/workflows/auto-update-docs.yaml` — triggers on push to main when `src/` changes, runs the agent script, opens a docs PR if anything was updated - `docs/scripts/update_docs.py` — gets the git diff, reads all current markdown files (reference pages first), calls Claude with both, and writes back any files Claude says need updating. PR body written to `/tmp/pr_summary.md` for the workflow to use
Test strategy
- N/A (docs, config, or trivial change)
The `build-docs.yaml` workflow runs `mkdocs build --strict` on every PR — that is the validation gate for the docs side. The agent workflow is triggered by source code merges, not this PR, so it will not self-test. To test manually: merge a code PR touching `src/` and check the Actions tab for the `Auto-update docs` run.
Checklist
- No breaking changes to the `poly` CLI interface - [x] Commit messages follow conventional commits
Setup required
One secret must be added before the workflow will do anything:
Settings → Secrets and variables → Actions → New repository secret
| Name | Value | |---|---| | `ANTHROPIC_API_KEY` | Anthropic API key (personal or shared team key) |
`GITHUB_TOKEN` (used to open the docs PR) is provided automatically by GitHub — no setup needed.
How it works
- Engineer merges a PR that changes `src/` 2. `auto-update-docs` workflow fires and diffs `HEAD~1..HEAD` 3. Claude reads the diff and all 32 docs pages (reference pages first), identifies anything stale 4. Script writes updated files to disk; PR body written to `/tmp/pr_summary.md` 5. Workflow opens a PR: `docs: auto-update from ` 6. Engineer reviews, edits if needed, and merges
Co-authored-by: Claude Sonnet 4.6 [email protected]
Summary
Motivation
Closes #
Changes
Test strategy
- Added/updated unit tests - [ ] Manual CLI testing (
poly <command>) - [ ] Tested against a live Agent Studio project - [ ] N/A (docs, config, or trivial change)
Checklist
-
ruff check .andruff format --check .pass - [ ]pytestpasses - [ ] No breaking changes to thepolyCLI interface (or migration path documented) - [ ] Commit messages follow conventional commits
Screenshots / Logs
Summary
Update licensing page to point to licenses.json. Also include missing MLP license text Fixes deployment for docs
Motivation
Use licenses.json as the one source of truth, to avoid having to maintain two lists
Changes
- Update main license info, remove table and point to licenses.json - Remove GNU license text - Add MLP license text - Update docs build and deploy steps to point to the correct place
Test strategy
- Added/updated unit tests - [ ] Manual CLI testing (
poly <command>) - [ ] Tested against a live Agent Studio project - [ ] N/A (docs, config, or trivial change)
Checklist
-
ruff check .andruff format --check .pass - [ ]pytestpasses - [ ] No breaking changes to thepolyCLI interface (or migration path documented) - [ ] Commit messages follow conventional commits
Co-authored-by: Aaron Forinton [email protected]
Summary
Documents the poly docs --output flag and the rules file workflow for AI coding tools across the CLI reference and Build an agent tutorial.
Motivation
Discussions in Slack
Closes #
Changes
Test strategy
- Added/updated unit tests - [ ] Manual CLI testing (
poly <command>) - [ ] Tested against a live Agent Studio project - [ ] N/A (docs, config, or trivial change)
Checklist
-
ruff check .andruff format --check .pass - [ ]pytestpasses - [ ] No breaking changes to thepolyCLI interface (or migration path documented) - [ ] Commit messages follow conventional commits
Screenshots / Logs
Features
Summary
- Adds support for creating API Integrations using `yaml` files. - API Secrets are still managed by the UI - Updates docsMotivation
Aligns with Agent Studio features
Changes
- API Integrations yaml file can be created in the
/configdir.
Test strategy
- Added/updated unit tests - [x] Manual CLI testing (
poly <command>) - [x] Tested against a live Agent Studio project - [ ] N/A (docs, config, or trivial change)
Checklist
-
ruff check .andruff format --check .pass - [x]pytestpasses - [x] No breaking changes to thepolyCLI interface (or migration path documented) - [x] Commit messages follow conventional commits
Screenshots / Logs
Detailed Changes: v0.3.3...v0.4.0
v0.3.3
v0.3.3 (2026-03-19)
This release is published under the Apache-2.0 License.
Bug Fixes
Summary Fix incorrect merge behaviour for MultiResourceYamlResource types by performing the 3-way merge at the file level rather than per-resource.
Motivation MultiResourceYamlResource types (e.g. entities) store multiple resources in a single YAML file. The previous code performed the 3-way merge per-resource and then wrote each resource individually, which meant the common ancestor used for the merge was wrong and resources from the same file would overwrite each other. It would also crash. <img width="415" height="133" alt="image (1)"
src="https://github.com/user-attachments/assets/388eff5f-2185-4a5b-ab5f-0b32f866452d" />
Changes - Before the merge loop, serialise the original resources into a file-level cache to use as the common ancestor - Skip the per-resource string merge for MultiResourceYamlResource types during the main loop; instead accumulate them into the cache - After the main loop, perform the 3-way merge at the file level and write the result - Gate write_cache_to_file behind force mode, since non-force mode now handles writing via the file-level merge loop
Test strategy - [x] Added/updated unit tests - [x] Manual CLI testing (poly pull) - [x] Tested against a live Agent Studio project - [ ] N/A (docs, config, or trivial change)
Checklist - [ ] ruff check . and ruff format --check . pass - [x] pytest passes - [ ] No breaking changes to the poly CLI interface (or migration path documented) - [ ] Commit messages follow conventional commits - [ ] ## Screenshots / Logs 
Co-authored-by: Copilot Autofix powered by AI [email protected]
Detailed Changes: v0.3.2...v0.3.3
v0.3.2
v0.3.2 (2026-03-18)
This release is published under the Apache-2.0 License.
Bug Fixes
Summary SMS text should be able to reference variables, add this with validation
Changes
- Have variable swap for SMS templates
- Add validations
Test strategy
- Added/updated unit tests
- Manual CLI testing (
poly <command>) - Tested against a live Agent Studio project
- N/A (docs, config, or trivial change)
Checklist
-
ruff check .andruff format --check .pass -
pytestpasses - No breaking changes to the
polyCLI interface (or migration path documented) - Commit messages follow conventional commits
Detailed Changes: v0.3.1...v0.3.2
v0.3.1
v0.3.1 (2026-03-17)
This release is published under the Apache-2.0 License.
Bug Fixes
Summary AS allows references even if commented out. Align here
Changes
- Don't remove comments when searching for variables
Test strategy
- Added/updated unit tests
- Manual CLI testing (
poly <command>) - Tested against a live Agent Studio project
- N/A (docs, config, or trivial change)
Checklist
-
ruff check .andruff format --check .pass -
pytestpasses - No breaking changes to the
polyCLI interface (or migration path documented) - Commit messages follow conventional commits
Detailed Changes: v0.3.0...v0.3.1
v0.3.0
v0.3.0 (2026-03-16)
This release is published under the Apache-2.0 License.
Features
Summary
Adds a poly completion <shell> command that prints a shell completion script, enabling tab completion for all poly/adk commands, subcommands, and flags.
Motivation
Shell completion is a standard ergonomic feature for any CLI tool — especially one with 12+ subcommands and numerous flags. Without it, users must remember exact command names and flags, slowing down daily use. Every major comparable CLI (Google ADK, AWS AgentCore, gh, kubectl) ships with completion support.
Changes
- Add
argcomplete>=3.0.0dependency (Apache 2.0 — passes license checks) - Callargcomplete.autocomplete(parser)inmain()— this is the hook that makes tab completion work at runtime; it exits immediately when not in a completion context, so there is zero overhead for normal CLI usage - Addcompletionsubparser withbash,zsh,fishchoices and per-shell installation instructions in the help text - AddAgentStudioCLI.print_completion()classmethod - Bothpolyandadkentry points are registered in the generated scripts
Usage
# Zsh — add to ~/.zshrc eval "$(poly completion zsh)"
# Fish — add to ~/.config/fish/completions/poly.fish poly completion fish | source ```
## Test strategy
- [x] Added unit tests for all three shells and invalid shell rejection - [ ] Manual CLI testing (`poly <command>`) - [ ] Tested against a live Agent Studio project - [ ] N/A (docs, config, or trivial change)
## Checklist
- [ ] `ruff check .` and `ruff format --check .` pass - [ ] `pytest` passes - [x] No breaking changes to the `poly` CLI interface (or migration path documented) - [x] Commit messages follow [conventional commits](https://www.conventionalcommits.org/)
---
**Detailed Changes**: [v0.2.3...v0.3.0](https://github.com/polyai/adk/compare/v0.2.3...v0.3.0)v0.2.3
v0.2.3 (2026-03-16)
This release is published under the Apache-2.0 License.
Bug Fixes
Summary If ASR and DTMF not included, still read them as defaults
Motivation Would error if created without these fields
Changes
- Filter on None not empty dicts
Test strategy
- Added/updated unit tests
- Manual CLI testing (
poly <command>) - Tested against a live Agent Studio project
- N/A (docs, config, or trivial change)
Checklist
-
ruff check .andruff format --check .pass -
pytestpasses - No breaking changes to the
polyCLI interface (or migration path documented) - Commit messages follow conventional commits
Screenshots / Logs
Detailed Changes: v0.2.2...v0.2.3

