# `ADK.Phoenix.LiveHandler`
[🔗](https://github.com/zeroasterisk/adk-elixir/blob/main/lib/adk/phoenix/live_handler.ex#L1)

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

---

*Consult [api-reference.md](api-reference.md) for complete listing*
