AgentSessionManager.PubSub.Topic (AgentSessionManager v0.8.0)

Copy Markdown View Source

Topic naming conventions for ASM PubSub integration.

Topics follow a hierarchical colon-separated scheme:

{prefix}:session:{session_id}
{prefix}:session:{session_id}:run:{run_id}
{prefix}:session:{session_id}:type:{event_type}

The default prefix is "asm".

Examples

iex> Topic.build_session_topic("ses_abc123")
"asm:session:ses_abc123"

iex> Topic.build_run_topic("ses_abc123", "run_def456")
"asm:session:ses_abc123:run:run_def456"

iex> Topic.build(%{session_id: "ses_abc123", run_id: "run_def456"}, scope: :run)
"asm:session:ses_abc123:run:run_def456"

Summary

Functions

Builds a topic string from an event map and options.

Builds a session-scoped topic.

Functions

build(event, opts \\ [])

@spec build(
  map(),
  keyword()
) :: String.t()

Builds a topic string from an event map and options.

Options

  • :prefix - Topic prefix. Default "asm".
  • :scope - One of :session, :run, :type. Default :session.

build_run_topic(prefix \\ "asm", session_id, run_id)

@spec build_run_topic(String.t(), String.t(), String.t()) :: String.t()

Builds a run-scoped topic.

iex> Topic.build_run_topic("ses_abc123", "run_def456")
"asm:session:ses_abc123:run:run_def456"

build_session_topic(prefix \\ "asm", session_id)

@spec build_session_topic(String.t(), String.t()) :: String.t()

Builds a session-scoped topic.

iex> Topic.build_session_topic("ses_abc123")
"asm:session:ses_abc123"

build_type_topic(prefix \\ "asm", session_id, type)

@spec build_type_topic(String.t(), String.t(), atom() | String.t()) :: String.t()

Builds a type-scoped topic.

iex> Topic.build_type_topic("ses_abc123", :tool_call_started)
"asm:session:ses_abc123:type:tool_call_started"