Skip to main content

lib/pi/protocol/tool/eval_request.ex

defmodule Pi.Protocol.Tool.EvalRequest do
  @moduledoc "Arguments for project eval tools."

  use JSONCodec, fast_path: :json

  defstruct [
    :code,
    :session_id,
    :state_path,
    :restore_path,
    timeout: nil,
    mode: :trusted,
    reload: false
  ]

  @type mode :: :trusted | :sandbox
  @type t :: %__MODULE__{
          code: String.t(),
          timeout: non_neg_integer() | nil,
          mode: mode(),
          reload: boolean(),
          session_id: String.t() | nil,
          state_path: String.t() | nil,
          restore_path: String.t() | nil
        }

  codec(:mode, atom: {:enum, [:trusted, :sandbox]})
  codec(:session_id, as: "sessionId")
  codec(:state_path, as: "statePath")
  codec(:restore_path, as: "restorePath")
end