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