ADK.Runner.Async (ADK v0.0.1-alpha.1)

Copy Markdown View Source

Runs an agent asynchronously under ADK.RunnerSupervisor (Task.Supervisor), sending events back to the caller as {:adk_event, event} messages.

All async runs are supervised — if a runner crashes, it won't bring down the caller, and the supervisor tracks active tasks.

Example

{:ok, pid} = ADK.Runner.Async.run(runner, "user1", "sess1", "Hello!")
receive do
  {:adk_event, event} -> IO.inspect(event)
end
receive do
  {:adk_done, events} -> IO.puts("Got #{length(events)} events")
end

Summary

Functions

Run an agent asynchronously under ADK.RunnerSupervisor.

Like run/5 but returns a Task struct for awaiting the result.

Functions

run(runner, user_id, session_id, message, opts \\ [])

@spec run(ADK.Runner.t(), String.t(), String.t(), map() | String.t(), keyword()) ::
  {:ok, pid()}

Run an agent asynchronously under ADK.RunnerSupervisor.

Events are sent to opts[:reply_to] (default: self()):

  • {:adk_event, event} for each event
  • {:adk_done, events} when complete
  • {:adk_error, reason} on failure

run_task(runner, user_id, session_id, message, opts \\ [])

@spec run_task(ADK.Runner.t(), String.t(), String.t(), map() | String.t(), keyword()) ::
  Task.t()

Like run/5 but returns a Task struct for awaiting the result.

Uses Task.Supervisor.async_nolink/2 so the caller isn't linked to the task.