v0.3.2
·
99 commits
to develop
since this release
Immutable
release. Only release title and notes can be modified.
[0.3.2] - 2026-04-22
Added
Providers
- Gemini provider - Google Gemini Pro and Flash support via the official
google-genaiSDK
and a custom HTTP backend (aar/providers/gemini.py); documented indocs/providers_gemini.md.
ACP / Zed Integration
- Official ACP SDK transport -
aar acpnow uses theagent-client-protocolPython SDK for
Zed stdio communication; HTTP/SSE mode remains available viaaar acp --http. - Full session lifecycle -
load_session,list_sessions,close_session,fork_session,
resume_session, andset_mode/set_config_optionimplemented in the ACP stdio transport. - Session mode and config discovery -
new_sessionandload_sessionreturn
modes=SessionModeStateandconfig_optionsderived fromSafetyConfig(auto / review /
read-only;auto_approve_writes,auto_approve_execute,read_onlytoggles). - Thinking and tool-call event streaming -
ReasoningBlockemitsAgentThoughtChunk;
ToolCallemitsToolCallStart;ToolResultemitsToolCallProgress. @-mention context support -_extract_texthandlesResourceContentBlock(URI links)
andEmbeddedResourceContentBlockwithTextResourceContents.acp_terminalbuilt-in tool - registers only when the client advertises
ClientCapabilities(terminal=True)duringinitialize.- Approval process for ACP - tool calls can be approved or rejected from the editor UI;
acp_approval_timeoutconfig field (default: wait forever, validated against neg/NaN/inf/bool). - Slash commands (
/status,/tools,/policy) available in Zed and returned via
AvailableCommandsUpdateon session open. - MCP server bridge in ACP - stdio and HTTP MCP servers passed in
session/neware started
and their tools registered for the lifetime of that session. - Plan update notifications - ACP clients receive live plan/step updates during tool execution.
- SSE byte framing -
data: <json>\\n\\nframing verified by new wire-level tests. - VSCode integration -
.vscode/configuration and launch profiles for local development.
Sandbox
- Docker sandbox - run agent tools inside an isolated Docker container.
- Linux Landlock sandbox - process isolation using Linux kernel >= 5.13 Landlock LSM.
- Windows Job Object sandbox - process isolation using Windows Job Objects.
- Distro profiles - predefined WSL distro setup profiles shipped with the package under
agent/data/distros/;aar sandbox setupreads them automatically. aar sandbox status- new subcommand to inspect config and live distro state.
TUI
- File picker -
@in the fixed TUI input opens a modal file browser. - Log viewer -
aar tui --fixednow includes a dedicated log viewer panel. think/channel tag handling - inline<think>and channel tags parsed in the input stream.
Core / CLI
aar prompt --layers- shows ordered prompt sources with file paths, character counts,
and skipped files.- Configurable provider timeout -
provider_timeoutfield in config. - Configurable command timeout -
command_timeoutfor bash/shell tool calls (raised defaults). - Budget proximity warning - core loop emits a warning when approaching the token/cost budget.
- Guardrails - configurable guardrail rules (Opus-style) for autonomous loop safety.
- Search directories for prompt extensions - additional system prompt directories configurable.
- Misconfiguration warnings - startup checks warn on likely config errors.
jsonschemaadded as a core dependency.
Changed
- ACP transport refactored - split into
agent/transports/acp/stdio.py,
agent/transports/acp/http.py, andagent/transports/acp/common.py. - Core loop refactored - cleaner separation between run logic and event dispatch.
- Sandbox modes reworked - unified config model covering WSL, Docker, Landlock, Job Object.
- Agent timeout - default changed to infinite (no hard cutoff); configurable per-session.
- WSL setup timeout - raised to 600 s to accommodate large package installs.
- ToolResult error prefixes - unified format
Error [<category>]: ...across all tools. Provider.stream()fallback - replays text, reasoning, and tool calls with terminal
metadata when the underlying stream errors mid-response.- Path normalization -
_normalize_pathhandles UNC paths, lowercase drive letters, and
./..collapse on both Linux and Windows. - Workspace escape guard -
cwdis validated to stay inside the configured workspace in
WslDistroSandbox.execute. - System prompt for Alpine WSL - expanded with Alpine-specific shell idioms.
- Autonomous loop - enhanced step sequencing and recovery logic.
- Dependencies updated -
pydantic,httpx,rich,textual,anthropic,openai,
google-genai,mcp,agent-client-protocolall updated to latest compatible versions.
Fixed
- ACP session load/resume -
load_sessionwas silently no-op; now correctly restores
persisted sessions and replays message history to the client before resolving. - ACP session listing -
list_sessionsreads all.jsonlfiles and returnsSessionInfo
with title derived from the first assistant message. - ACP unknown session on
prompt- creates a fresh session instead of crashing. - Stream chunk finalisation -
StreamChunk(finished=True)now always fires even when the
stream raises mid-way (wrapped intry/finally). - Safety/approval edge cases - fixed races and missing approval callbacks in the policy engine.
- ACP concurrent prompt rejection - a second
prompton the same session while one is
in-flight is now correctly rejected with an error response. - Keybinds - external keybind configuration removed (caused setup issues); bindings are now
defined in code viaagent/transports/keybinds.py.