diff --git a/src/frontend/src/components/chatComponent/chatMessage/index.tsx b/src/frontend/src/components/chatComponent/chatMessage/index.tsx index ee11d69cb..5bb4e8b33 100644 --- a/src/frontend/src/components/chatComponent/chatMessage/index.tsx +++ b/src/frontend/src/components/chatComponent/chatMessage/index.tsx @@ -2,9 +2,9 @@ import { useState } from "react"; import { ChatMessageType } from "../../../types/chat"; import { nodeColors } from "../../../utils"; import Convert from "ansi-to-html"; -const convert = new Convert({ newline: true }); import { MessageCircle } from "lucide-react"; - +import DOMPurify from "dompurify"; +const convert = new Convert({ newline: true }); export default function ChatMessage({ chat }: { chat: ChatMessageType }) { const [hidden, setHidden] = useState(true); return ( @@ -23,13 +23,14 @@ export default function ChatMessage({ chat }: { chat: ChatMessageType }) { )} + {chat.thought && chat.thought !== "" && !hidden && (
setHidden((prev) => !prev)} style={{ backgroundColor: nodeColors["thought"] }} - className=" text-start inline-block w-full pb-3 pt-3 px-5 cursor-pointer" + className="text-start inline-block w-full pb-3 pt-3 px-5 cursor-pointer" dangerouslySetInnerHTML={{ - __html: convert.toHtml(chat.thought), + __html: DOMPurify.sanitize(convert.toHtml(chat.thought)), }} >
)} diff --git a/src/frontend/src/modals/chatModal/chatMessage/index.tsx b/src/frontend/src/modals/chatModal/chatMessage/index.tsx index 3d4ce0b44..3b44ffe6f 100644 --- a/src/frontend/src/modals/chatModal/chatMessage/index.tsx +++ b/src/frontend/src/modals/chatModal/chatMessage/index.tsx @@ -11,7 +11,7 @@ import remarkMath from "remark-math"; import { CodeBlock } from "./codeBlock"; import Convert from "ansi-to-html"; import { User2, MessageCircle } from "lucide-react"; - +import DOMPurify from "dompurify"; export default function ChatMessage({ chat, lockChat, @@ -78,10 +78,9 @@ export default function ChatMessage({ {chat.thought && chat.thought !== "" && !hidden && (
setHidden((prev) => !prev)} - className=" text-start inline-block rounded-md text-gray-600 dark:text-gray-200 h-full border border-gray-300 dark:border-gray-500 - bg-muted dark:bg-gray-800 w-[95%] pb-3 pt-3 px-2 ml-3 cursor-pointer scrollbar-hide overflow-scroll" + className="text-start inline-block rounded-md text-gray-600 dark:text-gray-200 h-full border border-gray-300 dark:border-gray-500 bg-muted dark:bg-gray-800 w-[95%] pb-3 pt-3 px-2 ml-3 cursor-pointer scrollbar-hide overflow-scroll" dangerouslySetInnerHTML={{ - __html: convert.toHtml(chat.thought), + __html: DOMPurify.sanitize(convert.toHtml(chat.thought)), }} >
)} @@ -152,12 +151,12 @@ export default function ChatMessage({ ) : (
- "), - }} - > + {message.split("\n").map((line, index) => ( + + {line} +
+
+ ))}
)}