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.
Invoke SessionStart and retain context for the next model turn.
Invoke SessionEnd for the outgoing thread.
Invoke UserPromptSubmit before a user turn.
Invoke PreCompact through the session hook runtime.
Invoke PermissionRequest before client approval resolution.
Resolve a permission hook and present user-facing attribution once.
The returned HITL decision carries the raw hook reason (or stop reason) for model-visible resume payloads. Attribution text is emitted only through the shared presenter.
Invoke one explicitly supported dcode notification event.
Consume context accumulated for the thread's next model turn.
Return whether the runtime has handlers for an event.
Surface attribution for a hook-owned permission decision.