Smith::Hooks
User-configured subprocesses that observe and steer the agent loop.
This is the point of the "policy-free core": everything smith itself refuses to decide — which formatter to run, which secrets may not be written, whether the tests have to pass before a turn ends — is a hook rather than a patch.
A hook that misbehaves must never take smith down. Every failure mode short of an explicit block (exit 2, or a JSON deny) is a warning on stderr and the run carries on.
Constants
DEFAULT_TIMEOUT = 60