import clsx from "clsx"; import { useTranslation } from "next-i18next"; import React, { useState } from "react"; import { FaCheck } from "react-icons/fa"; import { FiClipboard } from "react-icons/fi"; import MarkdownRenderer from "./MarkdownRenderer"; import SourceCard from "./SourceCard"; import type { Message } from "../../types/message"; import { MESSAGE_TYPE_GOAL, MESSAGE_TYPE_SYSTEM } from "../../types/message"; import { getTaskStatus, isAction, TASK_STATUS_COMPLETED, TASK_STATUS_FINAL, TASK_STATUS_STARTED, } from "../../types/task"; import Button from "../../ui/button"; import { getMessageContainerStyle, getTaskStatusIcon } from "../utils/helpers"; const ChatMessage = ({ message }: { message: Message }) => { const [t] = useTranslation(); const [isCopied, setIsCopied] = useState(false); const handleCopy = () => { try { const textToCopy = isAction(message) ? message.info || "" : message.value; void navigator.clipboard.writeText(textToCopy); setIsCopied(true); } catch (error) { console.error(error); } }; if (message.type === MESSAGE_TYPE_GOAL && !isAction(message)) { return
{message.value}
; } return (
{message.type !== MESSAGE_TYPE_SYSTEM && !isAction(message) && ( <>
{getTaskStatusIcon(message, {})}
{getMessagePrefix(message)} )} {isAction(message) ? ( <>
{getTaskStatusIcon(message, {})}
{getMessagePrefix(message)}

{message.info || ""}
) : ( <> {message.value} {message.type === MESSAGE_TYPE_SYSTEM && (message.value.toLowerCase().includes("shut") || message.value.toLowerCase().includes("error")) && } )}
); }; const FAQ = () => { return (


If you are facing issues, please head over to our{" "} FAQ

); }; // Returns the translation key of the prefix const getMessagePrefix = (message: Message) => { if (getTaskStatus(message) === TASK_STATUS_STARTED) { return "Task Added:"; } else if (getTaskStatus(message) === TASK_STATUS_COMPLETED) { return message.value; } else if (getTaskStatus(message) === TASK_STATUS_FINAL) { return `Finished:`; } return ""; }; export { ChatMessage };