lib/pi/agent/result.ex
defmodule Pi.Agent.Result do
@moduledoc "Result of a Pi agent run."
alias Pi.Session.State
@enforce_keys [:session]
defstruct [:session, :result, :error]
@type t :: %__MODULE__{session: State.t(), result: term(), error: term()}
def ok(%State{} = session, result), do: %__MODULE__{session: session, result: result}
def error(%State{} = session, error), do: %__MODULE__{session: session, error: error}
end