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
@type t() :: %ExAgent.Context{ messages: [ExAgent.Message.t()], metadata: map(), parent_ref: reference() | nil }
Functions
@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
@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
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"}