Release Process
This document defines the versioning and changelog process used for tagged releases.
Release History
Section titled “Release History”[0.10.0] — 2026-03-23
Section titled “[0.10.0] — 2026-03-23”- NL goal decomposition —
GoalPlanner::plan()decomposes natural language goals into multi-agent DAGs with per-nodetool_hints. The planner sends the goal + available tool catalog to the LLM and returns aPlannedWorkflow. HintedToolSelector— New tool selector combining explicit hints (from goal planner), recipe matches (from catalog learning), and keyword fallback. Selection priority: hints → recipes → TF-IDF.- Dynamic tools — Runtime-created tools with 4 execution strategies: Shell (
{{input}}substitution), HTTP (endpoint calls), LLM (specialized system prompts), and Composite (tool chaining). Persist encrypted in.agentzero/dynamic-tools.json. Export/import for sharing between instances. tool_createtool — LLM-callable tool for creating dynamic tools mid-session from natural language descriptions. Actions:create,list,delete,export,import. Gated byenable_dynamic_toolsconfig.ToolSourcetrait — Enables mid-session tool registration.Agent.build_tool_definitions()merges static tools with dynamically registered tools on each iteration.- NL agent definitions —
agent_manage create_from_descriptionderives name, system prompt, keywords, allowed tools, and suggested schedule from a plain English description. Includes existing agents in prompt for dedup awareness. - Tool catalog learning —
RecipeStorerecords successful tool combos after agent/swarm runs. Jaccard similarity matching on goal keywords boosts previously successful tools for similar future goals. Persists encrypted in.agentzero/tool-recipes.json. build_provider_from_config()— Public helper for lightweight LLM callers (goal planner, tool_create) that need a provider without the full agent runtime.- Swarm CLI wiring —
agentzero swarm "goal"now callsGoalPlanner::plan()instead of wrapping the goal in a single agent. Each agent node gets aHintedToolSelectorwith itstool_hints. enable_dynamic_tools— New config flag in[agent]section (default:false). When enabled, loads persisted dynamic tools at startup and registers thetool_createtool.
Changed
Section titled “Changed”PlannedNodegainstool_hints: Vec<String>field (backward-compatible via#[serde(default)]).Agentgainsextra_tool_source: Option<Arc<dyn ToolSource>>for mid-session tool discovery.RuntimeExecutiongainsdynamic_registryfield for tool persistence lifecycle.AgentManageToolgains optionalproviderfor LLM-based agent derivation.ToolSecurityPolicygainsenable_dynamic_tools: bool.- Workspace version bumped to
0.10.0.
[0.4.0] — 2026-03-06
Section titled “[0.4.0] — 2026-03-06”- HTTP registry fetch —
az plugin install --url <https://...>andaz plugin refresh --registry-url <https://...>now accepthttps://andhttp://URLs in addition tofile://. The registry index loader and refresher both support remote URLs. - Plugin dependency resolution —
PluginManifesthas an optionaldependencies: Vec<PluginDependency>field (defaults to empty). EachPluginDependencycarries anidand aversion_reqsemver string. Runningaz plugin install --registry-url <url>resolves and installs all transitive dependencies before the top-level plugin. Circular dependency chains are detected and reported as errors. - Audio input — User messages may contain
[AUDIO:/path/to/file.wav]markers. The agent transcribes each marker via a configurable OpenAI-compatible endpoint before forwarding the message to the LLM. Supported formats:flac,mp3,mp4,m4a,ogg,opus,wav,webm(max 25 MB). If[audio] api_keyis not set, markers are stripped silently with a warning. Default endpoint: Groq Whisper (whisper-large-v3). [audio]config section — Newagentzero.tomlsection withapi_url,api_key,language, andmodelfields.
Changed
Section titled “Changed”- Workspace version bumped to
0.4.0across all publishable crates.
Versioning Policy
Section titled “Versioning Policy”- Use Semantic Versioning:
MAJOR.MINOR.PATCH. - During this stage, all publishable crates in this workspace are versioned in lockstep.
- Pre-release tags (for example
1.2.0-rc.1) are allowed when needed.
Changelog Policy
Section titled “Changelog Policy”CHANGELOG.mdis required and must contain:## [Unreleased]section for in-flight work.- A versioned section for each release in the form:
## [X.Y.Z] - YYYY-MM-DD
- Every user-visible behavior change should be listed under
Added,Changed, orFixed.
Pre-Release Checklist
Section titled “Pre-Release Checklist”- Ensure all intended changes are merged.
- Run quality gates:
cargo fmt --allcargo clippy --workspace --all-targets -- -D warningscargo test --workspacescripts/run-coverage.sh --output-dir coverage(requirescargo-llvm-cov)
- Verify release metadata and changelog entry for the target version:
scripts/verify-release-version.sh --version X.Y.Z
- Tag and publish using CI release workflow.
GitHub Workflows
Section titled “GitHub Workflows”ci.yml- Pull request and push validation (
fmt,clippy,test, security checks).
- Pull request and push validation (
cd.yml- Continuous delivery on
main: runs quality checks and uploads release-build artifacts for Linux/macOS/Windows.
- Continuous delivery on
release.yml- Triggered by
v*.*.*tags (or manual dispatch with version input). - Verifies changelog/version consistency, builds artifacts on Linux/macOS/Windows, and publishes GitHub Release assets.
- Triggered by
Practical Notes
Section titled “Practical Notes”- If you bump crate versions, keep all workspace crate versions aligned.
- Keep
Unreleasedat the top and move entries into the new release heading at cut time.