ADK.Phoenix.LiveHandler (ADK v0.0.1-alpha.1)

Copy Markdown View Source

A use-able module that adds ADK agent interaction to a Phoenix LiveView.

Manages agent sessions in socket assigns and handles async events.

Usage

defmodule MyAppWeb.ChatLive do
  use MyAppWeb, :live_view
  use ADK.Phoenix.LiveHandler, agent: &MyApp.Agents.assistant/0

  def mount(_params, _session, socket) do
    {:ok, assign(socket, messages: [], loading: false)}
  end

  def handle_event("send_message", %{"message" => msg}, socket) do
    socket = adk_run_async(socket, msg)
    {:noreply, assign(socket, loading: true)}
  end

  # Override to customize how events are handled
  def handle_adk_event(event, socket) do
    messages = socket.assigns.messages ++ [event]
    {:noreply, assign(socket, messages: messages)}
  end

  def handle_adk_done(_events, socket) do
    {:noreply, assign(socket, loading: false)}
  end
end