11import { AgentMessageData } from "@/models" ;
2-
32import ReactMarkdown from "react-markdown" ;
43import remarkGfm from "remark-gfm" ;
54import rehypePrism from "rehype-prism" ;
6- // Render AI thinking/planning state
7- const renderAgentMessages = ( agentMessages : AgentMessageData [ ] ) => {
8- if ( ! agentMessages || agentMessages . length === 0 ) return null ;
95
10- return (
11- < div
12- // style={{
13- // height: 200,
14- // maxHeight: 200,
15- // overflowY: 'auto', // or 'hidden' if you don't want scrolling
16- // overflowX: 'hidden',
17- // flex: '0 0 200px' // prevents flex parents from stretching it
18- // }}
6+ interface StreamingAgentMessageProps {
7+ agentMessages : AgentMessageData [ ] ;
8+ }
9+
10+ const StreamingAgentMessage = ( { agentMessages } : StreamingAgentMessageProps ) => {
11+ if ( ! agentMessages ?. length ) return null ;
12+
13+ // Filter out messages with empty content
14+ const validMessages = agentMessages . filter ( msg => msg . raw_content ?. trim ( ) ) ;
1915
20- >
21- { agentMessages . map ( ( msg , index ) => {
22- const trimmed = msg . raw_content ?. trim ( ) ;
23- if ( ! trimmed ) return null ; // skip if empty, null, or whitespace
24- return (
25- < div key = { index } style = { { marginBottom : '16px' } } >
26- < strong > { msg . agent } </ strong > :
27- < ReactMarkdown
28- remarkPlugins = { [ remarkGfm ] }
29- rehypePlugins = { [ rehypePrism ] }
30- >
31- { trimmed }
32- </ ReactMarkdown >
33- </ div >
34- ) ;
35- } ) }
16+ if ( ! validMessages . length ) return null ;
17+
18+ return (
19+ < div className = "streaming-agent-messages" >
20+ { validMessages . map ( ( message , index ) => (
21+ < div key = { `${ message . agent } -${ message . timestamp } -${ index } ` } className = "agent-message" >
22+ < div className = "agent-name" >
23+ < strong > { message . agent } </ strong > :
24+ </ div >
25+ < div className = "agent-content" >
26+ < ReactMarkdown
27+ remarkPlugins = { [ remarkGfm ] }
28+ rehypePlugins = { [ rehypePrism ] }
29+ >
30+ { message . raw_content . trim ( ) }
31+ </ ReactMarkdown >
32+ </ div >
3633 </ div >
37- ) ;
34+ ) ) }
35+ </ div >
36+ ) ;
3837} ;
39- export default renderAgentMessages ;
38+
39+ export default StreamingAgentMessage ;
0 commit comments