2 variants
Agent Thread
An AI chat that streams word by word, shows its tool calls, asks before it acts, and cites its sources. As a full page or a docked copilot.
Full page
The chat on its own. The thread follows each reply unless you scroll up, with approvals, sources, copy, feedback and the composer.
Reply ready
Claude
Enter to send, Shift + Enter for a new line
import { AgentThread } from "@/components/blocks/agent-thread";
// Map your chat state (the AI SDK's useChat, or your own) onto messages and busy.
export default function Page() {
const { messages, busy, send, stop, approve } = useAgent();
return <AgentThread messages={messages} busy={busy} onSubmit={send} onStop={stop} onApprove={approve} />;
}6 more lines ship with an easeUI Pro license.
Buy a licenseInstall
$ bunx --bun shadcn add @easeui-pro/agent-thread
Docked panel
A copilot beside your app that names what it is looking at, with the same thread, approvals and composer in a narrow panel.
import { AgentPanel } from "@/components/blocks/agent-panel";
export function Copilot({ invoice }) {
const { messages, busy, send, stop, approve } = useAgent({ context: invoice });
return (
<AgentPanel
context={"Invoice " + invoice.number}
messages={messages}
busy={busy}
onSubmit={send}
onStop={stop}
onApprove={approve}
/>
);
}38 more lines ship with an easeUI Pro license.
Buy a licenseInstall
$ bunx --bun shadcn add @easeui-pro/agent-panel