"use client"; import React from "react"; import { getAnnotationData, Message } from "@llamaindex/chat-ui"; export default function TerminalDisplay({ message, open }: { message: Message, open: boolean }) { const [isCollapsed, setIsCollapsed] = React.useState(!open); const bottomRef = React.useRef(null); // Get the last assistant message that's not being typed if (!message) { return <>; } interface TerminalInfo { id: number; text: string; type: string; } const events = getAnnotationData( message, "TERMINAL_INFO" ) as TerminalInfo[]; if (events.length === 0) { return <>; } React.useEffect(() => { if (bottomRef.current) { bottomRef.current.scrollTo({ top: bottomRef.current.scrollHeight, behavior: "smooth" }); } }, [events]); return (
{/* Terminal Header */}
setIsCollapsed(!isCollapsed)} >
Agent Process Terminal ({events.length} events)
{isCollapsed ? ( ) : ( )}
{/* Terminal Content */} {!isCollapsed && (
{events.map((event, index) => (
$ [{event.type || ""}] {event.text || ""}...
))} {events.length === 0 && (
No agent events to display...
)}
)}
); }