Standardized error types and helpers for the Mojentic framework.
Follows Elixir conventions of returning {:ok, result} or {:error, reason} tuples.
Exceptions are reserved for truly exceptional situations.
Error Reasons
Atoms (simple errors)
:invalid_response- Response from LLM gateway could not be parsed:model_not_supported- Requested model is not available:timeout- Operation timed out
Tagged Tuples (errors with context)
{:gateway_error, message}- LLM gateway error{:api_error, message}- API-specific error{:http_error, status}- HTTP request failed with status code{:request_failed, reason}- Network request failed{:tool_error, message}- Tool execution error{:config_error, message}- Invalid configuration{:serialization_error, message}- JSON serialization/deserialization error
Summary
Functions
Creates an API error tuple.
Creates a config error tuple.
Formats an error reason into a human-readable string.
Creates a gateway error tuple.
Creates an HTTP error tuple.
Creates an invalid response error tuple.
Creates a model not supported error tuple.
Creates a request failed error tuple.
Creates a serialization error tuple.
Creates a timeout error tuple.
Creates a tool error tuple.
Types
@type error_reason() :: simple_error() | tagged_error() | String.t()
@type result(success_type) :: {:ok, success_type} | {:error, error_reason()}
@type simple_error() :: :invalid_response | :model_not_supported | :timeout
Functions
Creates an API error tuple.
Examples
iex> Mojentic.Error.api_error("Rate limit exceeded")
{:error, {:api_error, "Rate limit exceeded"}}
Creates a config error tuple.
Examples
iex> Mojentic.Error.config_error("Missing API key")
{:error, {:config_error, "Missing API key"}}
@spec format_error(error_reason()) :: String.t()
Formats an error reason into a human-readable string.
Examples
iex> Mojentic.Error.format_error({:gateway_error, "Connection failed"})
"Gateway error: Connection failed"
iex> Mojentic.Error.format_error(:invalid_response)
"Invalid response"
iex> Mojentic.Error.format_error("Custom error")
"Custom error"
Creates a gateway error tuple.
Examples
iex> Mojentic.Error.gateway_error("Connection failed")
{:error, {:gateway_error, "Connection failed"}}
Creates an HTTP error tuple.
Examples
iex> Mojentic.Error.http_error(404)
{:error, {:http_error, 404}}
@spec invalid_response() :: {:error, :invalid_response}
Creates an invalid response error tuple.
Examples
iex> Mojentic.Error.invalid_response()
{:error, :invalid_response}
@spec model_not_supported() :: {:error, :model_not_supported}
Creates a model not supported error tuple.
Examples
iex> Mojentic.Error.model_not_supported()
{:error, :model_not_supported}
Creates a request failed error tuple.
Examples
iex> Mojentic.Error.request_failed(:timeout)
{:error, {:request_failed, :timeout}}
Creates a serialization error tuple.
Examples
iex> Mojentic.Error.serialization_error("Invalid JSON")
{:error, {:serialization_error, "Invalid JSON"}}
@spec timeout() :: {:error, :timeout}
Creates a timeout error tuple.
Examples
iex> Mojentic.Error.timeout()
{:error, :timeout}
Creates a tool error tuple.
Examples
iex> Mojentic.Error.tool_error("Invalid parameters")
{:error, {:tool_error, "Invalid parameters"}}