Backplane.AiProtocol.Codec behaviour (backplane_ai_protocol v1.7.2)

Copy Markdown

Pure provider codec facade.

Supported selectors are :anthropic, :openai, and :google. Request encoding accepts stream: boolean(). Streaming functions retain state only in the value returned to the caller. Transport, authentication, retries, and execution remain host-owned.

Summary

Callbacks

decode_error(integer, list, arg3, keyword)

@callback decode_error(integer(), list(), binary() | map(), keyword()) ::
  {:error, Backplane.AiProtocol.Error.t()}

decode_response(integer, list, arg3, keyword)

@callback decode_response(integer(), list(), binary() | map(), keyword()) ::
  {:ok, Backplane.AiProtocol.Response.t()}
  | {:error, Backplane.AiProtocol.Error.t()}

encode_request(t, keyword)

@callback encode_request(
  Backplane.AiProtocol.Request.t(),
  keyword()
) :: {:ok, map()} | {:error, Backplane.AiProtocol.Error.t()}

stream_feed(term, binary)

@callback stream_feed(term(), binary()) ::
  {:ok, term(), [Backplane.AiProtocol.StreamEvent.t()]}
  | {:error, Backplane.AiProtocol.Error.t(), term()}

stream_finish(term, atom)

@callback stream_finish(term(), atom()) ::
  {:ok, term(), [Backplane.AiProtocol.StreamEvent.t()]}
  | {:error, Backplane.AiProtocol.Error.t(), term()}

stream_new(keyword)

@callback stream_new(keyword()) :: term()

Functions

decode_error(protocol, status, headers, body, opts \\ [])

@spec decode_error(atom(), integer(), list(), binary() | map(), keyword()) ::
  {:error, Backplane.AiProtocol.Error.t()}

decode_response(protocol, status, headers, body, opts \\ [])

@spec decode_response(atom(), integer(), list(), binary() | map(), keyword()) ::
  {:ok, Backplane.AiProtocol.Response.t()}
  | {:error, Backplane.AiProtocol.Error.t()}

encode_request(protocol, request, opts \\ [])

@spec encode_request(atom(), Backplane.AiProtocol.Request.t(), keyword()) ::
  {:ok, map()} | {:error, Backplane.AiProtocol.Error.t()}

stream_feed(protocol, state, bytes)

stream_finish(protocol, state, reason)

stream_new(protocol, opts \\ [])