"use client"; import React from "react"; import { getAnnotationData, Message } from "@llamaindex/chat-ui"; export default function TerminalDisplay({ messages }: { messages: Message[] }) { const [isCollapsed, setIsCollapsed] = React.useState(true); // Get the last assistant message that's not being typed const lastAssistantMessage = messages .filter((msg) => msg.role === "assistant") .pop(); if (!lastAssistantMessage) { return <>; } const annotations = getAnnotationData(lastAssistantMessage, "agent_events"); if (annotations.length === 0) { return <>; } // Get all agent events and combine them const events: any[] = []; annotations.forEach((annotation: any) => { if (annotation?.events && Array.isArray(annotation.events)) { events.push(...annotation.events); } }); if (events.length === 0) { return <>; } return (
{/* Terminal Header */}
setIsCollapsed(!isCollapsed)} >
Agent Process Terminal ({events.length} events)
{isCollapsed ? ( ) : ( )}
{/* Terminal Content */} {!isCollapsed && (
{events.map((event, index) => (
$ [{event.status || "completed"}] {event.result && ( {event.result.slice(0, 100)}... )}
))} {events.length === 0 && (
No agent events to display...
)}
)}
); }