Client-owned Hooks v2 lifecycle facade.
Translate a hook permission decision into a client review outcome.
Tool-approval policy selected for an interactive thread.
Normalized result shared by TUI and headless permission handling.
Raised when a client-owned hook stops lifecycle processing.
Client state required to create a domain hook invocation.
Execute client-owned events and apply their common side effects.
User-facing output goes through the runtime's presenter, which the owning
HooksManager also holds. The service never wraps or replaces it, so there
is exactly one presenter per session.