LemonRouter.AgentInbox (lemon_router v0.1.0)

View Source

BEAM-local inbox API for sending messages to agent sessions.

Session selectors:

  • :latest - latest active/recent session
  • :new - route-preserving new fork (:sub:<id>)
  • explicit session key - direct target

Summary

Types

Resolved session destination.

Session selector for inbox delivery.

Primary inbox routing target.

Functions

Resolve a selector (:latest, :new, explicit key) into a concrete session key.

Send a prompt to an agent inbox.

Types

resolution()

@type resolution() :: %{
  session_key: binary(),
  route_session_key: binary() | nil,
  selector: session_selector(),
  resolved_from: :explicit | :latest | :new | :fallback_main,
  route: LemonRouter.AgentEndpoints.route() | nil,
  target: binary() | nil
}

Resolved session destination.

session_selector()

@type session_selector() :: :latest | :new | binary()

Session selector for inbox delivery.

target_resolution()

@type target_resolution() :: %{
  route: LemonRouter.AgentEndpoints.route(),
  endpoint: LemonRouter.AgentEndpoints.endpoint() | nil,
  target: binary()
}

Primary inbox routing target.

Functions

resolve_session(agent_id, selector, opts \\ [])

@spec resolve_session(binary(), session_selector(), keyword()) ::
  {:ok, resolution()} | {:error, term()}

Resolve a selector (:latest, :new, explicit key) into a concrete session key.

send(agent_id, prompt, opts \\ [])

@spec send(binary(), binary(), keyword()) ::
  {:ok,
   %{
     run_id: binary(),
     session_key: binary(),
     selector: session_selector(),
     fanout_count: non_neg_integer()
   }}
  | {:error, term()}

Send a prompt to an agent inbox.

Options:

  • :session - :latest | :new | session_key (default: :latest)

  • :to / :endpoint / :route - primary destination
  • :deliver_to - optional fanout destinations (endpoint aliases, shorthand, or route maps)
  • :queue_mode, :engine_id, :model, :cwd, :tool_policy, :meta, :source