Skip to main content

lib/pi/protocol/tool/eval.ex

defmodule Pi.Protocol.Tool.Eval do
  @moduledoc "Structured project eval tool payload."

  use JSONCodec, fast_path: :json

  alias Pi.Protocol.Tool.OutputPart
  alias Pi.Protocol.UI.Display

  defstruct kind: "eval",
            io: "",
            result: nil,
            error: nil,
            exception: nil,
            text: "",
            parts: [],
            display: nil,
            bindings: [],
            state: nil

  @type t :: %__MODULE__{
          kind: String.t(),
          io: String.t(),
          result: String.t() | nil,
          error: String.t() | nil,
          exception: map() | nil,
          text: String.t(),
          parts: [OutputPart.t()],
          display: Display.t() | nil,
          bindings: [map()],
          state: map() | nil
        }
end