ExAgent.Context (ExAgent v0.2.0)

Copy Markdown View Source

Portable conversation state shared across agents and patterns.

Holds the message history, metadata, and an optional parent reference for linking back to an orchestrator in the subagent pattern.

Summary

Functions

Appends a message to the context.

Returns the last assistant message from the context, or nil if none exists.

Creates a new context with optional initial values.

Types

t()

@type t() :: %ExAgent.Context{
  messages: [ExAgent.Message.t()],
  metadata: map(),
  parent_ref: reference() | nil
}

Functions

add_message(context, message)

@spec add_message(t(), ExAgent.Message.t()) :: t()

Appends a message to the context.

Examples

iex> {:ok, msg} = ExAgent.Message.new(role: :user, content: "Hello")
iex> ctx = ExAgent.Context.new() |> ExAgent.Context.add_message(msg)
iex> length(ctx.messages)
1

get_last_assistant_message(context)

@spec get_last_assistant_message(t()) :: ExAgent.Message.t() | nil

Returns the last assistant message from the context, or nil if none exists.

Examples

iex> ExAgent.Context.get_last_assistant_message(ExAgent.Context.new())
nil

new(opts \\ [])

@spec new(keyword()) :: t()

Creates a new context with optional initial values.

Examples

iex> ctx = ExAgent.Context.new()
iex> ctx.messages
[]

iex> ctx = ExAgent.Context.new(metadata: %{session: "abc"})
iex> ctx.metadata
%{session: "abc"}