Current section

Files

Jump to
codex_sdk lib codex approvals static_policy.ex
Raw

lib/codex/approvals/static_policy.ex

defmodule Codex.Approvals.StaticPolicy do
@moduledoc """
Simple allow/deny approval policy used for tests and defaults.
"""
@enforce_keys [:mode]
defstruct [:mode, :reason]
@type t :: %__MODULE__{mode: :allow | :deny, reason: String.t() | nil}
@doc """
Always allow approvals.
"""
@spec allow(keyword()) :: t()
def allow(opts \\ []) do
%__MODULE__{mode: :allow, reason: Keyword.get(opts, :reason)}
end
@doc """
Always deny approvals with an optional reason.
"""
@spec deny(keyword()) :: t()
def deny(opts \\ []) do
%__MODULE__{mode: :deny, reason: Keyword.get(opts, :reason, "denied")}
end
@doc false
@spec review_tool(t(), map(), map()) :: :allow | {:deny, String.t()}
def review_tool(%__MODULE__{mode: :allow}, _event, _context), do: :allow
def review_tool(%__MODULE__{mode: :deny, reason: reason}, _event, _context) do
{:deny, reason}
end
end