'use client' import remarkGfm from 'remark-gfm' import remarkMath from 'remark-math' import Image from 'next/image' import { cn } from '@/lib/utils' import { CodeBlock } from '@/components/ui/codeblock' import { MemoizedReactMarkdown } from '@/components/markdown' import { IconF, IconUser, IconW3GPT } from '@/components/ui/icons' import { ChatMessageActions } from '@/components/chat-message-actions' import { useState } from 'react' import { Button } from './ui/button' import { number } from 'zod' import { Message } from '@aigxion/isdk' export interface ChatMessageProps { message: Message avatarUrl?: string | null | undefined } export function ChatMessage({ message, avatarUrl, ...props }: ChatMessageProps) { const [isExpanded, setIsExpanded] = useState(false) const onExpandClick = () => setIsExpanded(!isExpanded) if (message.function_call && !isExpanded) { return (
) } return (
{message.role === 'user' ? ( avatarUrl ? ( {'user ) : ( ) ) : message.function_call ? (
) : ( )}
{children}

}, code({ node, inline, className, children, ...props }) { if (children.length) { if (children[0] == '▍') { return ( ) } children[0] = (children[0] as string).replace('`▍`', '▍') } const match = /language-(\w+)/.exec(className || '') if (inline) { return ( {children} ) } return ( ) } }} > {message.content === '' ? typeof message.function_call === 'string' ? message.function_call : JSON.stringify(message.function_call) : message.content ?? ''}
) }