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;
};