diff --git a/core/http/react-ui/src/App.css b/core/http/react-ui/src/App.css index de5d536f4..792837ea8 100644 --- a/core/http/react-ui/src/App.css +++ b/core/http/react-ui/src/App.css @@ -1255,6 +1255,23 @@ background: var(--color-primary-light); } +.chat-message-system { + align-self: center; + max-width: 90%; +} +.chat-message-system .chat-message-bubble { + font-style: italic; + color: var(--color-text-secondary); + background: var(--color-bg-secondary); + border: 1px solid var(--color-border); + font-size: 0.8rem; +} +.chat-message-timestamp { + font-size: 0.6875rem; + color: var(--color-text-muted); + margin-top: 2px; +} + .chat-input-area { padding: var(--spacing-sm) var(--spacing-lg); background: var(--color-bg-secondary); diff --git a/core/http/react-ui/src/pages/AgentChat.jsx b/core/http/react-ui/src/pages/AgentChat.jsx index 3ed3669be..2211fcfc2 100644 --- a/core/http/react-ui/src/pages/AgentChat.jsx +++ b/core/http/react-ui/src/pages/AgentChat.jsx @@ -1,6 +1,8 @@ import { useState, useEffect, useRef, useCallback } from 'react' import { useParams, useNavigate, useOutletContext } from 'react-router-dom' import { agentsApi } from '../utils/api' +import { renderMarkdown, highlightAll } from '../utils/markdown' +import DOMPurify from 'dompurify' export default function AgentChat() { const { name } = useParams() @@ -10,6 +12,7 @@ export default function AgentChat() { const [input, setInput] = useState('') const [processing, setProcessing] = useState(false) const messagesEndRef = useRef(null) + const messagesRef = useRef(null) const textareaRef = useRef(null) const eventSourceRef = useRef(null) const messageIdCounter = useRef(0) @@ -88,6 +91,11 @@ export default function AgentChat() { messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }) }, [messages]) + // Highlight code blocks + useEffect(() => { + if (messagesRef.current) highlightAll(messagesRef.current) + }, [messages]) + const handleSend = useCallback(async () => { const msg = input.trim() if (!msg || processing) return @@ -109,106 +117,26 @@ export default function AgentChat() { } } - return ( -
Send a message to start a conversation with this agent.
+