defmodule AgentSea.Guardrail do @moduledoc """ A check applied to text entering or leaving an agent. Each guardrail either passes (`:ok`), rewrites the content (`{:transform, new}` — e.g. redaction), or blocks it (`{:block, reason}`). `AgentSea.Guardrails` chains them. Built-ins: `MaxLength`, `Blocklist`, `PIIRedactor`, and the provider-backed `LLMGuard`. """ @type outcome :: :ok | {:transform, String.t()} | {:block, reason :: term()} @callback name() :: String.t() @callback check(content :: String.t(), opts :: keyword()) :: outcome() end