Packages

Elixir SDK for the SW4RM multi-agent coordination protocol

Current section

Files

Jump to
sw4rm_sdk lib sw4rm error_codes.ex
Raw

lib/sw4rm/error_codes.ex

defmodule Sw4rm.ErrorCodes do
@moduledoc """
Centralized proto ErrorCode enum integer values (from common.proto).
Provides named accessors for use in conformance vectors, gateway redirects,
cancellation logic, and validation errors.
"""
@error_code_unspecified 0
@buffer_full 1
@no_route 2
@ack_timeout 3
@agent_unavailable 4
@agent_shutdown 5
@validation_error 6
@permission_denied 7
@unsupported_message_type 8
@oversize_payload 9
@tool_timeout 10
@partial_delivery 11
@forced_preemption 12
@ttl_expired 13
@duplicate_detected 14
@already_in_progress 15
@overloaded 16
@redirect 20
@internal_error 99
@doc "ERROR_CODE_UNSPECIFIED (0)."
def error_code_unspecified, do: @error_code_unspecified
@doc "BUFFER_FULL (1)."
def buffer_full, do: @buffer_full
@doc "NO_ROUTE (2)."
def no_route, do: @no_route
@doc "ACK_TIMEOUT (3)."
def ack_timeout, do: @ack_timeout
@doc "AGENT_UNAVAILABLE (4)."
def agent_unavailable, do: @agent_unavailable
@doc "AGENT_SHUTDOWN (5)."
def agent_shutdown, do: @agent_shutdown
@doc "VALIDATION_ERROR (6)."
def validation_error, do: @validation_error
@doc "PERMISSION_DENIED (7)."
def permission_denied, do: @permission_denied
@doc "UNSUPPORTED_MESSAGE_TYPE (8)."
def unsupported_message_type, do: @unsupported_message_type
@doc "OVERSIZE_PAYLOAD (9)."
def oversize_payload, do: @oversize_payload
@doc "TOOL_TIMEOUT (10)."
def tool_timeout, do: @tool_timeout
@doc "PARTIAL_DELIVERY (11)."
def partial_delivery, do: @partial_delivery
@doc "FORCED_PREEMPTION (12)."
def forced_preemption, do: @forced_preemption
@doc "TTL_EXPIRED (13)."
def ttl_expired, do: @ttl_expired
@doc "DUPLICATE_DETECTED (14)."
def duplicate_detected, do: @duplicate_detected
@doc "ALREADY_IN_PROGRESS (15)."
def already_in_progress, do: @already_in_progress
@doc "OVERLOADED (16)."
def overloaded, do: @overloaded
@doc "REDIRECT (20)."
def redirect, do: @redirect
@doc "INTERNAL_ERROR (99)."
def internal_error, do: @internal_error
@doc "Convert a string error code name to its integer value."
@spec from_string(String.t()) :: non_neg_integer()
def from_string("ERROR_CODE_UNSPECIFIED"), do: @error_code_unspecified
def from_string("BUFFER_FULL"), do: @buffer_full
def from_string("NO_ROUTE"), do: @no_route
def from_string("ACK_TIMEOUT"), do: @ack_timeout
def from_string("AGENT_UNAVAILABLE"), do: @agent_unavailable
def from_string("AGENT_SHUTDOWN"), do: @agent_shutdown
def from_string("VALIDATION_ERROR"), do: @validation_error
def from_string("PERMISSION_DENIED"), do: @permission_denied
def from_string("UNSUPPORTED_MESSAGE_TYPE"), do: @unsupported_message_type
def from_string("OVERSIZE_PAYLOAD"), do: @oversize_payload
def from_string("TOOL_TIMEOUT"), do: @tool_timeout
def from_string("PARTIAL_DELIVERY"), do: @partial_delivery
def from_string("FORCED_PREEMPTION"), do: @forced_preemption
def from_string("TTL_EXPIRED"), do: @ttl_expired
def from_string("DUPLICATE_DETECTED"), do: @duplicate_detected
def from_string("ALREADY_IN_PROGRESS"), do: @already_in_progress
def from_string("OVERLOADED"), do: @overloaded
def from_string("REDIRECT"), do: @redirect
def from_string("INTERNAL_ERROR"), do: @internal_error
def from_string(unknown), do: raise(ArgumentError, "unknown error code: #{inspect(unknown)}")
end