v0.9.17
What's Changed
Architecture deepening + daemon version-skew auto-restart (#114)
- Daemon auto-restart on version skew:
ensureDaemonVersion()compares the launchd plist'sProgramArgumentspath against the installed plugin'sindex.jsand reloads the daemon when stale —/plugin updateno longer leaves an old daemon running /healthendpoint on the Python A2A server (diagnostics)- Fixed
branch: undefinedon session-start events (deletedevent-builder.js;start.jscomposes the payload inline) - Deleted hollow
session.jspass-through - Unified doctrine fetch:
planandreviewsharedoctrine_enrichment.pywith TTL cache + stale fallback
Architecture deepening pass 2 (#115)
src/config.js— single owner of every env read, URL resolution, secret fallback, and auth-header decision; fixes theAELLI_BASE_URLdefault divergence and makes doctowiz probe exactly what production resolvessrc/a2a-transport.js— one JSON-RPC 2.0 transport replaces four hand-rolled HTTP clients; rejects non-JSON 200 bodies instead of reporting them as completed tasksproviders/protocol.py— namedAgentRunProviderseam with canonical status vocabulary; both providers contract-tested as substitutablea2a.py: err()/require()— the capability error envelope (the contractdaemon.jsmaps to queue status) now has exactly one owner
Tests: 193 JS + 603 Python
Full Changelog: v0.9.16...v0.9.17