Repository navigation
What's Changed
Security & Safety
- Strict daemon schema enforcement — All RPC messages are now validated by Zod before reaching handlers. Previously, messages that failed schema validation but had a
typefield were passed through raw, bypassing field validation. Malformed payloads now receive an error response and are dropped. - Purge safety tightened —
validatePurgePathnow rejects the hub root directory itself (~/.agentctl), only allowing paths strictly under it. Previouslyrm -rfon the hub root was permitted.
Bug Fixes
- Verification persistence mismatch — VerificationView was reading from
verification-results.jsonwith keyresults, but council-store writes tocouncil-verifications.jsonwith keyverifications. UI now reads from the correct file and key. - LLM timeout timer leak — The timeout timer in
createAccountCalleris now cleared afterPromise.raceresolves, preventing staleproc.kill()calls on already-exited processes. - Missing RPC schemas — Added Zod schemas for
council_verify,council_history, andquery_activitytoDaemonMessageSchema. These were previously handled but never schema-validated.
Type Consistency
- Added
timeoutMs?: numbertoCouncilConfigintypes.ts,HandlerContextinhandler-types.ts, andDaemonOptsinserver.tsto match the Zod config schema and handler usage.
Tests
- Regression test for hub-root purge rejection
- Daemon-backed health command path coverage (socket present + empty fallback)
- Schema validation tests for
council_verify,council_history,query_activity(accept/reject cases) - Updated
unknown-rpc-typetest to match new strict validator error format
Full Changelog: v0.4.0...v0.5.0