"""The session-hook kit — **observe mode**. It prints, it records, it never blocks.

mgf repos have had no session hooks at all. That is the gap this package closes:
project instructions load every session and the system prompt names the model, so a
session-start hook is the one channel that reaches **every** agent session
mechanically, regardless of what any agent remembers. The layering it belongs to:

    *CI enforces truth. Documents communicate intent. Hooks guarantee the
    communication happens.*

What wave S3 installs is deliberately one thing — a ``SessionStart`` hook that
re-teaches ``SEATS.md`` **SEAT-02** (name your seat before you act) and records the
session in an append-only ``.claude/state/agent-events.jsonl``. It never declares the
seat for the agent: only the session can read its own system prompt, and a fabricated
record would poison the very audit trail the log exists to create.

The stop-time gate and its write-set recorder are **shipped disabled** behind
``MGF_HOOKS_GATE`` — enforce-stage material, staged per **SHP-11**: *no step may
create a state that is only safe if a later step also happens.* The full boundary is
documented in :mod:`mgf.fed.sessionhooks._gate`.

Surface (all of it is the CLI; the modules are private, per ``PUBLIC_API.md``)::

    mgf-fed hooks install          # merge the one-line shim into .claude/settings.json
    mgf-fed hooks status           # is it wired? is it current? is it switched off?
    mgf-fed hooks uninstall        # remove exactly our entry, leave the rest alone
    mgf-fed hooks emit <type> k=v  # append one event (this is what SEAT-02 asks for)
    mgf-fed hooks log              # read the trail back
    mgf-fed hooks session-start    # the hook entrypoint — the harness calls this

**Attribution.** The design, the fail-open discipline, the closed event vocabulary,
the kill-switch, the observe→enforce staging, and the "the hook never declares for
the agent" rule are **adapted with attribution from the Sooth family's session-hook
kit** (``sooth-standard/shp/``, SHP-01..12). This is a **copy, not a dependency**
(Sooth's XF-03): mgf takes on no import edge, no package dependency, and no
cross-family resolution path to the Sooth corpus. The two families are independently
versioned and may diverge; rule ids are kept citable across both, and the text,
paths, environment prefixes, and rule references here are mgf's.

Stdlib only on the hook path. The kit must work on a bare ``pip install mgf-fed``.
"""

from __future__ import annotations

from mgf.fed.sessionhooks._events import EVENT_TYPES, SEATS
from mgf.fed.sessionhooks._state import MODE_ENFORCE, MODE_OBSERVE, PROTOCOL

__all__ = [
    "EVENT_TYPES",
    "MODE_ENFORCE",
    "MODE_OBSERVE",
    "PROTOCOL",
    "SEATS",
]
