- Add hooks infrastructure in core/hooks/ (loader, runner, types) - HookUIContext interface with mode-specific implementations - Interactive mode: TUI-based selector/input/confirm dialogs - RPC mode: JSON protocol for hook UI requests/responses - Print mode: no-op UI context (hooks run but can't prompt) - AgentSession.branch() now async, returns { selectedText, skipped } - Settings: hooks[] and hookTimeout configuration - Export hook types from package for hook authors Based on PR #147 proposal, adapted for new architecture.
- Add AgentSessionEvent type extending AgentEvent with auto_compaction_start/end - Emit events when auto-compaction starts and completes - TUI shows loader during auto-compaction with escape to cancel - Rebuilds chat UI when auto-compaction succeeds