Public facade for the ASM session runtime.
Summary
Types
@type session_info() :: %{ session_id: String.t(), provider: ASM.Provider.provider_name(), options: keyword(), status: atom() }
@type session_ref() :: GenServer.server()
Functions
@spec approve(session_ref(), String.t(), :allow | :deny) :: :ok | {:error, ASM.Error.t()}
@spec checkpoint(session_ref()) :: {:ok, map() | nil} | {:error, ASM.Error.t()}
@spec cost(session_ref()) :: map()
@spec health(session_ref()) :: :healthy | :degraded | {:unhealthy, term()}
@spec interrupt(session_ref(), String.t()) :: :ok | {:error, ASM.Error.t()}
@spec intervene(session_ref(), String.t(), String.t(), keyword()) :: {:ok, String.t(), pid() | :queued} | {:error, ASM.Error.t()}
@spec list_provider_sessions( session_ref() | atom(), keyword() ) :: {:ok, [ASM.SessionControl.Entry.t()]} | {:error, ASM.Error.t()}
@spec pause(session_ref(), String.t()) :: :ok | {:error, ASM.Error.t()}
@spec query(session_ref() | atom(), String.t(), keyword()) :: {:ok, ASM.Result.t()} | {:error, ASM.Error.t()}
@spec resume_run(session_ref(), String.t(), keyword()) :: {:ok, String.t(), pid() | :queued} | {:error, ASM.Error.t()}
@spec session_id(session_ref()) :: String.t() | nil
@spec session_info(session_ref()) :: {:ok, session_info()} | {:error, ASM.Error.t()}
@spec start_link(keyword()) :: {:ok, session_ref()} | {:error, ASM.Error.t() | term()}
@spec start_session(keyword()) :: {:ok, session_ref()} | {:error, ASM.Error.t() | term()}
@spec stream(session_ref(), String.t(), keyword()) :: Enumerable.t()