Public facade for the ASM session runtime.

Summary

Types

session_info()

@type session_info() :: %{
  session_id: String.t(),
  provider: ASM.Provider.provider_name(),
  options: keyword(),
  status: atom()
}

session_ref()

@type session_ref() :: GenServer.server()

Functions

approve(session, approval_id, decision)

@spec approve(session_ref(), String.t(), :allow | :deny) ::
  :ok | {:error, ASM.Error.t()}

checkpoint(session)

@spec checkpoint(session_ref()) :: {:ok, map() | nil} | {:error, ASM.Error.t()}

cost(session)

@spec cost(session_ref()) :: map()

health(session)

@spec health(session_ref()) :: :healthy | :degraded | {:unhealthy, term()}

interrupt(session, run_id)

@spec interrupt(session_ref(), String.t()) :: :ok | {:error, ASM.Error.t()}

intervene(session, run_id, prompt, opts \\ [])

@spec intervene(session_ref(), String.t(), String.t(), keyword()) ::
  {:ok, String.t(), pid() | :queued} | {:error, ASM.Error.t()}

list_provider_sessions(provider_or_session, opts \\ [])

@spec list_provider_sessions(
  session_ref() | atom(),
  keyword()
) :: {:ok, [ASM.SessionControl.Entry.t()]} | {:error, ASM.Error.t()}

pause(session, run_id)

@spec pause(session_ref(), String.t()) :: :ok | {:error, ASM.Error.t()}

query(session_or_provider, prompt, opts \\ [])

@spec query(session_ref() | atom(), String.t(), keyword()) ::
  {:ok, ASM.Result.t()} | {:error, ASM.Error.t()}

resume_run(session, prompt, opts \\ [])

@spec resume_run(session_ref(), String.t(), keyword()) ::
  {:ok, String.t(), pid() | :queued} | {:error, ASM.Error.t()}

session_id(session)

@spec session_id(session_ref()) :: String.t() | nil

session_info(session)

@spec session_info(session_ref()) :: {:ok, session_info()} | {:error, ASM.Error.t()}

start_link(opts \\ [])

@spec start_link(keyword()) :: {:ok, session_ref()} | {:error, ASM.Error.t() | term()}

start_session(opts \\ [])

@spec start_session(keyword()) ::
  {:ok, session_ref()} | {:error, ASM.Error.t() | term()}

stop_session(session_ref)

@spec stop_session(String.t() | pid()) :: :ok | {:error, :not_found}

stream(session, prompt, opts \\ [])

@spec stream(session_ref(), String.t(), keyword()) :: Enumerable.t()