Context module for managing interactive conversations. Provides start, claim, resolve, abandon, and query operations.
Summary
Functions
Claim a conversation (for :pool and :any audience modes). Sets the principal and transitions status to :open.
Resolve a conversation with an outcome and result.
Start a new conversation.
Functions
@spec abandon(binary(), binary()) :: {:ok, Cyclium.Schemas.Conversation.t()} | {:error, term()}
@spec check_constraints(Cyclium.Schemas.Conversation.t()) :: :ok | {:warn, :last_turn} | {:error, :budget_exceeded}
@spec claim(binary(), map()) :: {:ok, Cyclium.Schemas.Conversation.t()} | {:error, :already_claimed | :not_found}
Claim a conversation (for :pool and :any audience modes). Sets the principal and transitions status to :open.
@spec get(binary()) :: Cyclium.Schemas.Conversation.t() | nil
@spec get!(binary()) :: Cyclium.Schemas.Conversation.t()
@spec increment_turn(binary(), non_neg_integer()) :: {:ok, Cyclium.Schemas.Conversation.t()} | {:error, term()}
@spec list_awaiting(keyword()) :: [Cyclium.Schemas.Conversation.t()]
@spec list_for_actor( binary() | atom(), keyword() ) :: [Cyclium.Schemas.Conversation.t()]
@spec list_for_principal( binary(), keyword() ) :: [Cyclium.Schemas.Conversation.t()]
@spec resolve(binary(), binary(), map()) :: {:ok, Cyclium.Schemas.Conversation.t()} | {:error, term()}
Resolve a conversation with an outcome and result.
@spec start(map()) :: {:ok, Cyclium.Schemas.Conversation.t()} | {:error, Ecto.Changeset.t()}
Start a new conversation.
Required fields
:actor_id— which interactive actor handles this conversation:name— display name
Optional fields
:principal— map with "type", "id", "label":goal— GoalSpec map (JSON-encoded on write):origin— Origin map:audience_target— AudienceTarget map
@spec timeout(binary()) :: {:ok, Cyclium.Schemas.Conversation.t()} | {:error, term()}
@spec update_collected_fields(binary(), map()) :: {:ok, Cyclium.Schemas.Conversation.t()} | {:error, term()}