File size: 1,255 Bytes
ff6ab6d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { marked } from 'marked';
import ThinkingBlock from './ThinkingBlock';

export default function Message({ message }) {
    const { sender, text, thinking, debugInfo } = message;
    const isUser = sender === 'user';

    let debugText = '';
    if (debugInfo) {
        debugText = `Intent: ${debugInfo.intent} (${debugInfo.confidence})`;
        if (debugInfo.entities && Object.keys(debugInfo.entities).length > 0) {
            debugText += ` | Entities: ${JSON.stringify(debugInfo.entities)}`;
        }
        if (debugInfo.language) debugText += ` | Language: ${debugInfo.language}`;
        if (debugInfo.environment) debugText += ` | Env: ${debugInfo.environment}`;
    }

    return (
        <>
            {!isUser && <ThinkingBlock thinking={thinking} duration={message.thinkingDuration} />}
            <div class={`message ${isUser ? 'user-message' : 'bot-message'}`}>
                <div class="message-avatar">{isUser ? '\uD83D\uDC64' : '\uD83E\uDD16'}</div>
                <div class="message-content">
                    <div dangerouslySetInnerHTML={{ __html: marked.parse(text) }} />
                    {debugInfo && <div class="debug-info">{debugText}</div>}
                </div>
            </div>
        </>
    );
}