v0.19.0
v0.19.0 — July 17, 2026
🚀 Major Features
- Plugin System (Experimental) — File-based plugin discovery from
.agentcrew/plugins/and~/.AgentCrew/plugins/. Single-file.pyplugins and directory-based project plugins with dependency resolution, lifecycle management, and ownership-based cleanup. Includestrusted_project_pluginssecurity boundary for project directories. - EventBus — Replaced the legacy Observer pattern with a typed, async-first EventBus supporting filtered subscriptions, priority ordering, one-shot listeners, weak references, mixed sync/async handlers, and propagation control.
- Hook System — Before/after lifecycle hooks at
tool.execute,agent.process,context.build,user.message,response.complete, andmemory.store. Hooks can mutate context, cancel operations, and modify results. - Enhanced Ask Tool — Multi-question bundling (up to 10 questions per call) with navigation in both console (
Tab/Backspace) and GUI dialogs. Refined tool instructions encourage proactive interviewing. - New Models — Added GPT-5.6 Sol / Terra / Luna family, Kimi K3, Meta Muse Spark 1.1, Grok 4.5, Tencent Hy3, and GLM-5.2 Fast across Command Code, OpenAI, GitHub Copilot, OpenCode Go, and ChatGPT Codex providers.
🧩 Improvements
- Configuration
GlobalConfigis now a singleton with in-memory caching (mtime-based invalidation) — reduces repeated file I/O from hundreds of call sites.- Config now caches the
trusted_project_pluginssetting.
- Console UI
- Ask tool dialogs now support multi-question navigation, custom answers, and "Submit all" action.
get_choice_input()andget_prompt_input()now respectswap_entermode and provide key-binding hints.
- GUI
- Qt ChatWindow now uses
ui_call_requestedsignal for thread-safe event dispatch. - Event handlers split into per-method subscriptions (no more monolithic
listen()). - Ask tool GUI dialog supports multi-question navigation.
- Qt ChatWindow now uses
- Memory
memory.storebefore/after hooks wired intoMemoryWorker._store_conversation_internal().- After-hook mutations affect persisted document, header metadata, embedding input, and conversation context cache.
- Agent Processing —
agent.processbefore hooks can temporarily overridemodel_id(restored after after-hook). - Context Building —
context.buildbefore/after hooks wired.system_promptmutations persist on the LLM service. - Tool Execution —
tool.executehooks integrated into all agent runners, A2A, and ACP executors.CancelOperationproduces agent-compatible rejected results. - A2A/ACP — Ask tool now supports multiple questions; structured responses parsed from
q0:/q1:format. - Web Extraction — Added
include_imagesparameter to web extract tool (defaults toFalse). - Version Check — Fixed crash when running
agentcrew --versionwithout arguments.
🐛 Bug Fixes
- Wait for the current stream to complete before allowing voice transcription submission.
- Fixed transfer tool rejection handling — special-cased to produce user-role message.
- Fixed
_safe_json_loadslogging empty arguments and non-dict tool calls. - Fixed A2A server lifespan context manager —
finallyensures store closure on shutdown. - Fixed context awareness prompt — removed unused
max_context_tokenparameter. - Fixed copilot and
chatgpt-authlogin commands — no longer instantiateAgentCrewApplication.
Full Changelog: v0.18.0...v0.19.0