diff --git a/src/frontend/src/modals/formModal/chatMessage/index.tsx b/src/frontend/src/modals/formModal/chatMessage/index.tsx index ede2ce242..252fbf7c3 100644 --- a/src/frontend/src/modals/formModal/chatMessage/index.tsx +++ b/src/frontend/src/modals/formModal/chatMessage/index.tsx @@ -11,6 +11,12 @@ import remarkMath from "remark-math"; import { CodeBlock } from "./codeBlock"; import Convert from "ansi-to-html"; import { User2, MessageSquare } from "lucide-react"; +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from "../../../components/ui/accordion"; export default function ChatMessage({ chat, @@ -22,16 +28,11 @@ export default function ChatMessage({ lastMessage: boolean; }) { const convert = new Convert({ newline: true }); - const [message, setMessage] = useState(""); - const imgRef = useRef(null); - useEffect(() => { - setMessage(chat.message); - }, [chat.message]); const [hidden, setHidden] = useState(true); return (
@@ -77,14 +78,14 @@ export default function ChatMessage({
setHidden((prev) => !prev)} className=" ml-3 inline-block h-full w-[95%] cursor-pointer overflow-scroll rounded-md border - border-gray-300 bg-muted px-2 pb-3 pt-3 text-start text-primary scrollbar-hide dark:border-gray-500 dark:bg-gray-800" + border-gray-300 bg-muted px-2 text-start text-primary scrollbar-hide dark:border-gray-500 dark:bg-gray-800" dangerouslySetInnerHTML={{ __html: convert.toHtml(chat.thought), }} >
)} {chat.thought && chat.thought !== "" && !hidden &&

} -
+
- {message} + {chat.message.toString()}
{chat.files && ( @@ -148,14 +149,24 @@ export default function ChatMessage({
) : ( -
+
- "), - }} - > + + + {Object.keys(chat.message) + .filter((key) => key !== chat.chatKey) + .map((key) => ( + + {key} + {chat.message[key]} + + ))} + + {chat.message[chat.chatKey]} +
)} diff --git a/src/frontend/src/modals/formModal/index.tsx b/src/frontend/src/modals/formModal/index.tsx index 549dc9f1c..110dae303 100644 --- a/src/frontend/src/modals/formModal/index.tsx +++ b/src/frontend/src/modals/formModal/index.tsx @@ -91,19 +91,20 @@ export default function FormModal({ var isStream = false; const addChatHistory = ( - message: string, + message: string | Object, isSend: boolean, + chatKey: string, thought?: string, files?: Array ) => { setChatHistory((old) => { let newChat = _.cloneDeep(old); if (files) { - newChat.push({ message, isSend, files, thought }); + newChat.push({ message, isSend, files, thought, chatKey }); } else if (thought) { - newChat.push({ message, isSend, thought }); + newChat.push({ message, isSend, thought, chatKey }); } else { - newChat.push({ message, isSend }); + newChat.push({ message, isSend, chatKey }); } return newChat; }); @@ -175,6 +176,7 @@ export default function FormModal({ is_bot: boolean; message: string; type: string; + chatKey: string; files?: Array; }) => { if (chatItem.message) { @@ -182,14 +184,16 @@ export default function FormModal({ chatItem.files ? { isSend: !chatItem.is_bot, - message: formatMessage(chatItem.message), + message: chatItem.message, thought: chatItem.intermediate_steps, files: chatItem.files, + chatKey: chatItem.chatKey, } : { isSend: !chatItem.is_bot, - message: formatMessage(chatItem.message), + message: chatItem.message, thought: chatItem.intermediate_steps, + chatKey: chatItem.chatKey, } ); } @@ -199,7 +203,7 @@ export default function FormModal({ }); } if (data.type === "start") { - addChatHistory("", false); + addChatHistory("", false, chatKey); isStream = true; } if (data.type === "end") { @@ -326,10 +330,6 @@ export default function FormModal({ // so the formated message is a string with the keys and values separated by ": " let message = ""; for (const [key, value] of Object.entries(inputs)) { - // make key bold - // dangerouslySetInnerHTML={{ - // __html: message.replace(/\n/g, "
"), - // }} message += `${key}: ${value}\n`; } return message; @@ -344,8 +344,8 @@ export default function FormModal({ setLockChat(true); let inputs = tabsState[id.current].formKeysData.input_keys; setChatValue(""); - const message = formatMessage(inputs); - addChatHistory(message, true); + const message = inputs; + addChatHistory(message, true, chatKey); sendAll({ ...reactFlowInstance.toObject(), inputs: inputs, diff --git a/src/frontend/src/types/api/index.ts b/src/frontend/src/types/api/index.ts index d5529009a..505aae044 100644 --- a/src/frontend/src/types/api/index.ts +++ b/src/frontend/src/types/api/index.ts @@ -37,7 +37,7 @@ export type sendAllProps = { viewport: Viewport; inputs: any; - chatHistory: { message: string; isSend: boolean }[]; + chatHistory: { message: string | object; isSend: boolean }[]; }; export type errorsTypeAPI = { function: { errors: Array }; diff --git a/src/frontend/src/types/chat/index.ts b/src/frontend/src/types/chat/index.ts index e4e0c1627..546408e65 100644 --- a/src/frontend/src/types/chat/index.ts +++ b/src/frontend/src/types/chat/index.ts @@ -3,8 +3,9 @@ import { FlowType } from "../flow"; export type ChatType = { flow: FlowType; reactFlowInstance: ReactFlowInstance }; export type ChatMessageType = { - message: string; + message: string | Object; isSend: boolean; thought?: string; files?: Array<{ data: string; type: string; data_type: string }>; + chatKey: string; };