AgentSessionManager.Core.Event (AgentSessionManager v0.8.0)

Copy Markdown View Source

Represents an event in the agent session lifecycle.

Events are immutable records of things that happened during session and run execution. They provide an audit trail and can be used for debugging, analytics, and state reconstruction.

Event Categories

Session Lifecycle Events

  • :session_created - A new session was created
  • :session_started - Session execution began
  • :session_paused - Session was paused
  • :session_resumed - Session was resumed from pause
  • :session_completed - Session completed successfully
  • :session_failed - Session failed with an error
  • :session_cancelled - Session was cancelled

Run Lifecycle Events

  • :run_started - A run began execution
  • :run_completed - A run completed successfully
  • :run_failed - A run failed with an error
  • :run_cancelled - A run was cancelled
  • :run_timeout - A run timed out

Message Events

  • :message_sent - A message was sent to the agent
  • :message_received - A message was received from the agent
  • :message_streamed - A streaming message chunk was received

Tool Events

  • :tool_call_started - A tool call began
  • :tool_call_completed - A tool call completed
  • :tool_call_failed - A tool call failed

Error Events

  • :error_occurred - An error occurred
  • :error_recovered - Recovered from an error

Usage Events

  • :token_usage_updated - Token usage was updated
  • :turn_completed - A conversation turn completed

Workspace Events

  • :workspace_snapshot_taken - Workspace snapshot was taken
  • :workspace_diff_computed - Workspace diff was computed

Policy Events

  • :policy_violation - Policy violation was detected during execution

Approval Events

  • :tool_approval_requested - Tool execution requires human approval
  • :tool_approval_granted - Human approved the tool execution
  • :tool_approval_denied - Human denied the tool execution

Usage

# Create an event
{:ok, event} = Event.new(%{
  type: :message_received,
  session_id: "session-123",
  run_id: "run-456",
  data: %{content: "Hello!"}
})

# Serialize for storage
map = Event.to_map(event)

Summary

Functions

Returns all valid event types.

Returns approval event types.

Returns error event types.

Reconstructs an event from a map.

Returns message event types.

Creates a new event with the given attributes.

Returns policy event types.

Returns run lifecycle event types.

Returns session lifecycle event types.

Converts an event to a map suitable for JSON serialization.

Returns tool event types.

Checks if the given type is a valid event type.

Returns workspace event types.

Types

event_type()

@type event_type() ::
  :session_created
  | :session_started
  | :session_paused
  | :session_resumed
  | :session_completed
  | :session_failed
  | :session_cancelled
  | :run_started
  | :run_completed
  | :run_failed
  | :run_cancelled
  | :run_timeout
  | :message_sent
  | :message_received
  | :message_streamed
  | :tool_call_started
  | :tool_call_completed
  | :tool_call_failed
  | :error_occurred
  | :error_recovered
  | :token_usage_updated
  | :turn_completed
  | :workspace_snapshot_taken
  | :workspace_diff_computed
  | :policy_violation
  | :tool_approval_requested
  | :tool_approval_granted
  | :tool_approval_denied

t()

@type t() :: %AgentSessionManager.Core.Event{
  correlation_id: String.t() | nil,
  data: map(),
  id: String.t() | nil,
  metadata: map(),
  provider: String.t() | nil,
  run_id: String.t() | nil,
  schema_version: non_neg_integer(),
  sequence_number: non_neg_integer() | nil,
  session_id: String.t() | nil,
  timestamp: DateTime.t() | nil,
  type: event_type() | nil
}

Functions

all_types()

@spec all_types() :: [event_type()]

Returns all valid event types.

approval_events()

@spec approval_events() :: [event_type()]

Returns approval event types.

error_events()

@spec error_events() :: [event_type()]

Returns error event types.

from_map(map)

@spec from_map(map()) :: {:ok, t()} | {:error, AgentSessionManager.Core.Error.t()}

Reconstructs an event from a map.

message_events()

@spec message_events() :: [event_type()]

Returns message event types.

new(attrs)

@spec new(map()) :: {:ok, t()} | {:error, AgentSessionManager.Core.Error.t()}

Creates a new event with the given attributes.

Required

  • :type - The event type (must be a valid event type)
  • :session_id - The session this event belongs to

Optional

  • :id - Custom ID (auto-generated if not provided)
  • :run_id - The run this event belongs to (for run-scoped events)
  • :data - Event payload data
  • :metadata - Arbitrary metadata
  • :sequence_number - Sequence number for ordering

Examples

iex> Event.new(%{type: :session_created, session_id: "session-123"})
{:ok, %Event{type: :session_created, ...}}

iex> Event.new(%{type: :invalid_type, session_id: "session-123"})
{:error, %Error{code: :invalid_event_type}}

policy_events()

@spec policy_events() :: [event_type()]

Returns policy event types.

run_events()

@spec run_events() :: [event_type()]

Returns run lifecycle event types.

session_events()

@spec session_events() :: [event_type()]

Returns session lifecycle event types.

to_map(event)

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

Converts an event to a map suitable for JSON serialization.

tool_events()

@spec tool_events() :: [event_type()]

Returns tool event types.

valid_type?(type)

@spec valid_type?(atom()) :: boolean()

Checks if the given type is a valid event type.

workspace_events()

@spec workspace_events() :: [event_type()]

Returns workspace event types.