LemonRouter.SessionState (lemon_router v0.1.0)

View Source

Pure state container for router-owned per-conversation queue semantics.

Summary

Types

active_run()

@type active_run() :: %{
  :run_id => binary(),
  :session_key => binary(),
  optional(:pid) => pid() | nil,
  optional(:mon_ref) => reference() | nil,
  optional(:submission) => LemonRouter.Submission.t()
}

pending_steer_entry()

@type pending_steer_entry() :: {queued_submission(), atom()}

queued_submission()

@type queued_submission() :: LemonRouter.Submission.t()

t()

@type t() :: %LemonRouter.SessionState{
  active: active_run() | nil,
  conversation_key: term(),
  last_followup_at_ms: integer() | nil,
  pending_steers: %{optional(binary()) => [pending_steer_entry()]},
  queue: [queued_submission()]
}

Functions

active?(state)

@spec active?(t()) :: boolean()

idle?(arg1)

@spec idle?(t()) :: boolean()

new(opts)

@spec new(keyword()) :: t()