import { useMemo, useState } from 'react'; import { MarkdownViewer } from '@renderer/components/chat/viewers/MarkdownViewer'; import { displayMemberName } from '@renderer/utils/memberHelpers'; import { stripAgentBlocks } from '@shared/constants/agentBlocks'; import { format } from 'date-fns'; import { ChevronDown, ChevronUp } from 'lucide-react'; export type SubagentPreviewMessageKind = | 'output' | 'text' | 'tool_result' | 'interruption' | 'plan_exit' | 'teammate_message' | 'user' | 'unknown'; export interface SubagentPreviewMessage { id: string; timestamp: Date; kind: SubagentPreviewMessageKind; /** Optional short label (e.g. tool name). */ label?: string; content: string; } interface SubagentRecentMessagesPreviewProps { messages: SubagentPreviewMessage[]; memberName?: string; hasMore?: boolean; onLoadMore?: () => void; } export const SubagentRecentMessagesPreview = ({ messages, memberName, hasMore = false, onLoadMore, }: SubagentRecentMessagesPreviewProps): React.JSX.Element | null => { const [expandedAll, setExpandedAll] = useState(false); // Strip agent-only blocks from message content before display const cleanMessages = useMemo( () => messages .map((m) => { const cleaned = stripAgentBlocks(m.content); return cleaned !== m.content ? { ...m, content: cleaned } : m; }) .filter((m) => m.content.trim().length > 0), [messages] ); if (!cleanMessages.length) return null; return (