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