import React from "react"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; import rehypeHighlight from "rehype-highlight"; import { type Message } from "../types"; import ToolCallMessage from "./ToolCallMessage"; import ToolResultMessage from "./ToolResultMessage"; import ReasoningBlock from "./ReasoningBlock"; interface ChatMessageProps { message: Message; } const ChatMessage: React.FC = ({ message, }) => { // Handle tool calls and results differently if (message.role === "tool-call") { return } if (message.role === "tool-result") { return } // Handle regular messages (user, assistant, system) return (
{/* Show reasoning block for assistant messages with reasoning */} {message.role === "assistant" && "reasoning" in message && (message.reasoning || message.isReasoningStreaming) && ( )} {/* Only render content div if there's actual content */} {message.content && message.content.trim() && (
(
{children}
), }} > {message.content}
)}
); }; export default ChatMessage;