import { memo, useState, useCallback } from "react"; import { marked } from "marked"; import type { ChatTurn as ChatTurnType, ChatTurnBlockTool } from "../lib/api"; import ToolCallDisplay from "./ToolCallDisplay"; interface ChatTurnProps { turn: ChatTurnType; } // Configure marked with breaks enabled marked.use({ breaks: true, }); const ChatTurn = memo(function ChatTurn({ turn }: ChatTurnProps) { const formatDuration = (ms: number): string => { if (ms < 1000) return `${ms}ms`; const seconds = (ms / 1000).toFixed(1); return `${seconds}s`; }; const formatTokenCount = (count: number): string => { if (count >= 1000) { return `${(count / 1000).toFixed(1)}k`; } return count.toString(); }; const modelId = turn.llm || "Unknown"; const modeLabel = turn.mode?.charAt(0).toUpperCase() + turn.mode?.slice(1) || "Unknown"; const statusLabel = turn.status?.charAt(0).toUpperCase() + turn.status?.slice(1) || "Unknown"; const startedAt = new Date(turn.createdAt); return (