Jidoka.Agent.Message (Jidoka v0.8.0-beta.1)

Copy Markdown View Source

Durable chat message stored on agent state.

Provider-facing runtimes may still project messages into provider-specific map shapes, but the agent session keeps a typed, serializable message contract.

Summary

Functions

Builds an assistant message.

Normalizes an existing message, keyword list, or map into a durable chat message.

Builds a validated durable chat message.

Builds a durable chat message or raises when validation fails.

Returns the allowed chat message roles.

Returns the Zoi schema for durable chat messages.

Builds a system message.

Converts a message struct into a compact serializable map.

Builds a tool result message for an operation output.

Builds a user message.

Types

role()

@type role() :: :system | :user | :assistant | :tool

t()

@type t() :: %Jidoka.Agent.Message{
  content: nil | nil | binary(),
  metadata: map(),
  operation: nil | nil | binary(),
  output: nil | nil | any(),
  role: (:system | :user | :assistant | :tool) | binary()
}

Functions

assistant(content, opts \\ [])

@spec assistant(
  String.t(),
  keyword()
) :: t()

Builds an assistant message.

from_input(message)

@spec from_input(t() | keyword() | map()) :: {:ok, t()} | {:error, term()}

Normalizes an existing message, keyword list, or map into a durable chat message.

new(attrs)

@spec new(keyword() | map()) :: {:ok, t()} | {:error, term()}

Builds a validated durable chat message.

new!(attrs)

@spec new!(keyword() | map()) :: t()

Builds a durable chat message or raises when validation fails.

roles()

@spec roles() :: [role()]

Returns the allowed chat message roles.

schema()

@spec schema() :: Zoi.schema()

Returns the Zoi schema for durable chat messages.

system(content, opts \\ [])

@spec system(
  String.t(),
  keyword()
) :: t()

Builds a system message.

to_map(message)

@spec to_map(t()) :: map()

Converts a message struct into a compact serializable map.

tool(operation, output, opts \\ [])

@spec tool(String.t(), term(), keyword()) :: t()

Builds a tool result message for an operation output.

user(content, opts \\ [])

@spec user(
  String.t(),
  keyword()
) :: t()

Builds a user message.