import { recordAgentActivity } from '@agent/api'; import { AnimateChunks } from '@agent/components/messages/AnimateChunks'; import { magic } from '@agent/icons'; import pageTours from '@agent/lib/page-tours'; import tours from '@agent/tours/tours'; import { SingleTour } from '@agent/workflows/misc/components/ToursList'; import { decodeEntities } from '@wordpress/html-entities'; import { __ } from '@wordpress/i18n'; import { cog, Icon, lifesaver, pencil, styles } from '@wordpress/icons'; import ReactMarkdown from 'react-markdown'; const availableTours = Object.values(tours); const adminPages = window.extAgentData.agentContext?.availableAdminPages || []; const agentSuggestions = Object.fromEntries( adminPages.map((page) => [ page, { label: __('Take me there', 'extendify-local'), tour: availableTours.find((tour) => tour.id === pageTours[page]) ?? null, }, ]), ) || {}; const agentIcons = { agent1: lifesaver, agent2: styles, agent3: pencil, agent4: cog, }; export const AgentMessage = ({ message, animate }) => { const { content, role, pageSuggestion, agent, sessionId = 'not-set', } = message.details; const containsCodeBlock = /```[\s\S]*?```/.test(content); const blocks = containsCodeBlock ? [decodeEntities(content ?? '')] : decodeEntities(content ?? '').split(/\n{2,}/); // Check if the pageSuggestion matches any key in agentSuggestions const agentSuggestionKey = Object.keys(agentSuggestions).find((k) => pageSuggestion?.startsWith(k), ); const agentSuggestion = agentSuggestions[agentSuggestionKey] || {}; return (