Skip to main content

lib/beam_weaver/moonshot/error.ex

defmodule BeamWeaver.Moonshot.Error do
  @moduledoc """
  Recoverable errors returned by the Moonshot/Kimi provider.
  """

  @enforce_keys [:type, :message]
  defstruct [:type, :message, details: %{}]

  @type t :: %__MODULE__{
          type: atom(),
          message: String.t(),
          details: map()
        }

  @doc "Builds a tagged Moonshot provider error."
  @spec new(atom(), String.t(), map()) :: t()
  def new(type, message, details \\ %{}) when is_atom(type) and is_binary(message) do
    %__MODULE__{type: type, message: message, details: details}
  end
end