@next-bricks/ai 1.20.2 → 1.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/5227.c1d80c1f.js","mappings":"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","sources":["webpack:///./src/chat-view/ChatViewContext.ts","webpack:///./src/chat-view/components/Loading.tsx","webpack:///./src/chat-view/components/MessageItem/Avatar.tsx","webpack:///./src/chat-view/components/MessageItem/GuideItem.tsx","webpack:///./src/chat-view/components/MessageItem/Markdown/CodeBlock/ProgressText.tsx","webpack:///./src/chat-view/components/MessageItem/MsgItemContext.ts","webpack:///./src/chat-view/components/MessageItem/Markdown/CodeBlock/CustomComponent.tsx","webpack:///./src/chat-view/components/MessageItem/Markdown/CodeBlock/index.tsx","webpack:///./src/chat-view/components/MessageItem/Markdown/index.tsx","webpack:///./src/chat-view/components/MessageItem/TableItem.tsx","webpack:///./src/chat-view/components/MessageItem/TextItem.tsx","webpack:///./src/chat-view/components/MessageItem/Toolbar.tsx","webpack:///./src/chat-view/components/MessageItem/Time.tsx","webpack:///./src/chat-view/components/MessageItem/ContentTip.tsx","webpack:///./src/chat-view/components/MessageItem/index.tsx","webpack:///./src/chat-view/components/QuickAnswerList/index.tsx","webpack:///./src/chat-view/components/StopBtn.tsx","webpack:///./src/chat-view/components/MessageList.tsx","webpack:///./src/chat-view/components/utils/calculateAutoSizeStyle.ts","webpack:///./src/chat-view/components/SearchInput.tsx","webpack:///./src/chat-view/components/SessionList.tsx","webpack:///./src/chat-view/ChatService.ts","webpack:///./src/chat-view/hooks/useChatViewInfo.ts","webpack:///./src/chat-view/components/MessageItem/Markdown/CodeBlock/CodeBlock.shadow.css","webpack:///./src/chat-view/components/MessageItem/Markdown/markdown.shadow.css","webpack:///./src/chat-view/components/QuickAnswerList/quickAnswerList.shadow.css","webpack:///./src/chat-view/components/loading.shadow.css","webpack:///./src/chat-view/host-context.css","webpack:///./src/chat-view/index.css","webpack:///./src/chat-view/styles.shadow.css","webpack:///./src/chat-view/host-context.css?1beb","webpack:///./src/chat-view/index.css?7225"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { AgentDetailItem } from \"./components/QuickAnswerList/index.js\";\nimport { ChatBody, SessionItem } from \"./ChatService.js\";\nimport { UseBrickConf } from \"@next-core/types\";\n\nexport type Role = \"guide\" | \"user\" | \"assistant\";\n\nexport type commandBrickConf = Record<\n string,\n { useBrick: UseBrickConf; showOriginData?: boolean }\n>;\n\nexport interface MessageItemContent {\n type: \"guide\" | \"text\" | \"markdown\" | \"table\" | \"load\";\n text: string;\n examplePrompts?: string[];\n}\n\nexport interface MessageItem {\n role: Role;\n content: MessageItemContent;\n created?: number | string;\n key?: number | string;\n conversationId?: string;\n taskId?: string;\n agentId?: string;\n chatting?: boolean;\n tag?: {\n isLike?: boolean;\n };\n}\n\nexport interface QuickAnswerConfig {\n tip: string;\n list: AgentDetailItem[];\n}\ninterface ChatViewContextProps {\n sessionEnd: boolean;\n sessionLoading: boolean;\n activeSessionId?: string;\n sessionList: SessionItem[];\n msgEnd: boolean;\n msgLoading: boolean;\n msgList: MessageItem[];\n loading: boolean;\n chatting: boolean;\n searchStr: string;\n showLike: boolean;\n readonly: boolean;\n quickAnswerConfig?: QuickAnswerConfig;\n commandBricks?: commandBrickConf;\n setAgent: (id: string) => void;\n handleIsLike: (id: string, isLike: boolean) => Promise<boolean>;\n handleChat: (str: string | ChatBody) => void;\n stopChat: () => void;\n checkSession: (id?: string, isInit?: boolean) => void;\n createSession: () => void;\n deleteSession: (ids: string[]) => Promise<boolean>;\n setSearchStr: (str: string) => void;\n querySessionHistory: (limit?: number) => void;\n}\n\nexport const ChatViewContext = createContext<ChatViewContextProps>(\n {} as ChatViewContextProps\n);\n\nexport const useChatViewContext = (): ChatViewContextProps =>\n useContext(ChatViewContext);\n","import React from \"react\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { wrapBrick } from \"@next-core/react-element\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport function MessageListLoading() {\n return <div className=\"message-list-loading-wrapper\"></div>;\n}\n\nexport function ChatItemLoading() {\n return (\n <div className=\"chart-item-loading-wrapper\">\n <div className=\"load\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>\n );\n}\n\nexport function CommonLoading() {\n return (\n <div className=\"common-loading-wrapper\">\n <WrappedIcon icon=\"loading\" lib=\"antd\" spinning />\n </div>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { useChatViewContext, type Role } from \"../../ChatViewContext.js\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { wrapBrick } from \"@next-core/react-element\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport function Avatar({\n role,\n agentId,\n}: {\n role: Role;\n agentId?: string;\n}): React.ReactNode {\n const isUser = useMemo(() => role === \"user\", [role]);\n const { quickAnswerConfig } = useChatViewContext();\n\n const agentList = useMemo(\n () => quickAnswerConfig?.list ?? [],\n [quickAnswerConfig]\n );\n\n const matchAgent = useMemo(() => {\n return agentList.find((item) => item.id === agentId);\n }, [agentList, agentId]);\n\n return !isUser && matchAgent ? (\n <WrappedIcon\n className=\"avatar\"\n {...matchAgent.icon}\n style={{\n color: `var(--theme-${matchAgent.icon.color}-color)`,\n background: `var(--theme-${matchAgent.icon.color}-background)`,\n }}\n />\n ) : (\n <div className={`avatar ${isUser ? \"user\" : \"robot\"}`} />\n );\n}\n","import React from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\ninterface GuideItemProps {\n text: string;\n prompts?: string[];\n}\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport function GuideItem({ text, prompts }: GuideItemProps) {\n return (\n <div className=\"guide-item\">\n {text}\n <div className=\"prompts-list\">\n {prompts\n ? prompts.map((item, index) => (\n <WrappedLink key={index}>{item}</WrappedLink>\n ))\n : null}\n </div>\n </div>\n );\n}\n","import React, { useMemo } from \"react\";\n\nexport function ProgressText({ text }: { text: string }): React.ReactNode {\n const renderText = useMemo(() => {\n // 文本末尾存在 \\n ```, 会导致在渲染快结束的时候突然有一个换行,在结束的时候,换行被干掉,导致页面闪动的情况\n // 所以在这里计算,如果文本将要关闭,则默认不然 \\n ``` 显示\n const newText = text.replace(/\\n[`]{0,3}$/, \"\");\n return newText;\n }, [text]);\n\n return <div className=\"progress-text\">{renderText}</div>;\n}\n","import { createContext, useContext } from \"react\";\nimport { MessageItem } from \"../../ChatViewContext\";\n\nexport const MsgItemContext = createContext<MessageItem>({} as MessageItem);\n\nexport const useMsgItemContext = (): MessageItem => useContext(MsgItemContext);\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useMsgItemContext } from \"../../MsgItemContext.js\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\nimport { useChatViewContext } from \"../../../../ChatViewContext.js\";\n\ninterface UseDataProps {\n text: string;\n chatting: boolean;\n}\n\nfunction useData({ text, chatting }: UseDataProps) {\n const cahceTextRef = useRef<string>(\"\");\n const [isEnd, setIsEnd] = useState<boolean>(false);\n const [isError, setIsError] = useState<boolean>(false);\n const [parseData, setParseData] = useState<any>();\n\n useEffect(() => {\n if (cahceTextRef.current !== text) {\n cahceTextRef.current = text;\n let data: any;\n try {\n data = JSON.parse(text);\n } catch {\n setIsError(true);\n return;\n }\n setParseData(data);\n }\n }, [text]);\n\n useEffect(() => {\n if (chatting) {\n if (text.match(/\\n[`]{0,3}$/)) {\n setIsEnd(true);\n }\n } else {\n setIsEnd(true);\n }\n }, [text, chatting]);\n\n return {\n parseData,\n isError: isEnd && isError,\n };\n}\n\nexport default function CustomComponent({\n text,\n language,\n}: {\n text: string;\n language: string;\n}) {\n const { commandBricks } = useChatViewContext();\n const { chatting, agentId, conversationId, taskId } = useMsgItemContext();\n\n const { parseData, isError } = useData({\n text,\n chatting: !!chatting,\n });\n\n const commandBrickConf = useMemo(() => {\n const config = commandBricks?.[language];\n if (config) {\n const data = {\n data: parseData,\n agentId,\n conversationId,\n taskId,\n };\n return {\n component: (\n <ReactUseMultipleBricks useBrick={config.useBrick} data={data} />\n ),\n ...config,\n };\n }\n return {\n component: null,\n showOriginData: true,\n };\n }, [commandBricks, language, parseData, agentId, conversationId, taskId]);\n\n return (\n <div className=\"custom-component-wrapper\">\n {commandBrickConf?.showOriginData ? (\n <>\n <div className=\"params\">\n <div className=\"params-tip\">【原始命令】: </div>\n <pre>\n <code>{text}</code>\n </pre>\n </div>\n {isError ? (\n <div className=\"error-tip\">【执行失败】</div>\n ) : (\n <>\n <div className=\"result-tip\">【执行结果】:</div>\n <div className=\"custom-component\">\n {commandBrickConf.component}\n </div>\n </>\n )}\n </>\n ) : (\n commandBrickConf.component\n )}\n </div>\n );\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { useNodeViewContext } from \"@prosemirror-adapter/react\";\nimport { ProgressText } from \"./ProgressText.js\";\nimport CustomComponent from \"./CustomComponent.js\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { Tooltip, message } from \"antd\";\nimport { useChatViewContext } from \"../../../../ChatViewContext\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst copyIcon: GeneralIconProps = {\n lib: \"antd\",\n icon: \"copy\",\n theme: \"outlined\",\n};\n\nexport const CodeBlock = () => {\n const [language, setLanguage] = useState(\"\");\n const { contentRef, node, view } = useNodeViewContext();\n const { commandBricks } = useChatViewContext();\n const [messageApi, contextHolder] = message.useMessage();\n\n const handleCopy = async () => {\n const text = node.content.firstChild?.text;\n try {\n if (text) {\n await navigator.clipboard.writeText(text);\n messageApi.success(\"复制成功\");\n }\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to copy: \", err);\n messageApi.error(\"复制失败\");\n }\n };\n\n const defaultContent = useMemo(\n () => (\n <div className=\"default-container\">\n {contextHolder}\n <pre spellCheck={false}>\n <code ref={contentRef} style={{ position: \"relative\" }}>\n <div className=\"default-toolbar-container\">\n <Tooltip title=\"复制\" color=\"#474747\" arrow={false}>\n <WrappedIcon\n {...(copyIcon as GeneralIconProps)}\n onClick={handleCopy}\n style={{ cursor: \"pointer\" }}\n />\n </Tooltip>\n </div>\n </code>\n </pre>\n </div>\n ),\n [contentRef]\n );\n\n const renderContent = useMemo(() => {\n if (!node.firstChild?.text) return null;\n const text = node.firstChild?.textContent;\n if (commandBricks && commandBricks[language]) {\n // 使 markdown 默认样式不生效, 防止样式穿透\n view.dom.classList.contains(\"prose\") &&\n view.dom.classList.replace(\"prose\", \"not-prose\");\n return <CustomComponent text={text} language={language} />;\n }\n switch (language) {\n case \"easy_cmd_progress\":\n return <ProgressText text={text} />;\n default:\n return defaultContent;\n }\n }, [node, language, view, defaultContent, commandBricks]);\n\n useEffect(() => {\n if (!language) {\n const {\n attrs: { language },\n } = node;\n if (language) {\n setLanguage(language);\n }\n }\n }, [node, language]);\n\n return renderContent;\n};\n","import React, { useEffect } from \"react\";\nimport {\n defaultValueCtx,\n Editor,\n rootCtx,\n editorViewOptionsCtx,\n} from \"@milkdown/core\";\nimport { EditorView } from \"prosemirror-view\";\nimport { Milkdown, useEditor, MilkdownProvider } from \"@milkdown/react\";\nimport { commonmark, codeBlockSchema } from \"@milkdown/preset-commonmark\";\nimport { nord } from \"@milkdown/theme-nord\";\nimport { gfm } from \"@milkdown/preset-gfm\";\nimport { prism } from \"@milkdown/plugin-prism\";\nimport { $view, replaceAll } from \"@milkdown/utils\";\nimport {\n ProsemirrorAdapterProvider,\n useNodeViewFactory,\n} from \"@prosemirror-adapter/react\";\nimport { CodeBlock } from \"./CodeBlock/index.js\";\n\nexport function MarkdownItem({ text }: { text: string }) {\n return (\n <div className=\"markdown-item\">\n <MilkdownProvider>\n <ProsemirrorAdapterProvider>\n <MarkdownDisplay value={text} />\n </ProsemirrorAdapterProvider>\n </MilkdownProvider>\n </div>\n );\n}\n\nfunction hasURLProtocol(url: any) {\n return (\n url.startsWith(\"http://\") ||\n url.startsWith(\"https://\") ||\n url.startsWith(\"file://\") ||\n url.startsWith(\"data:\") ||\n url.startsWith(\"ts://?ts\") ||\n url.startsWith(\"ts:?ts\")\n );\n}\n\nexport function MarkdownDisplay({ value }: { value: string }): React.ReactNode {\n const nodeViewFactory = useNodeViewFactory();\n\n const handleClick = (view: EditorView, pos: number) => {\n const found = view.state.tr.doc.nodeAt(pos);\n\n if (found && found.marks.length > 0) {\n const mark = found.marks.find((m) => m.type.name === \"link\");\n const href = mark?.attrs.href;\n let path: string;\n\n if (hasURLProtocol(href)) {\n path = href;\n } else {\n path = encodeURIComponent(href);\n }\n\n window.open(path, \"_blank\");\n }\n return true;\n };\n\n const { get } = useEditor((root) => {\n return Editor.make()\n .config((ctx) => {\n ctx.set(rootCtx, root);\n ctx.update(editorViewOptionsCtx, (prev: any) => ({\n ...prev,\n editable: () => false,\n handleClickOn: (view: EditorView, pos: number) =>\n handleClick(view, pos),\n }));\n value && ctx.set(defaultValueCtx, value);\n //拦截link的默认点击事件以支持通过新窗口弹出页面,如果后续有其他的定制化需求可以改用custom widget的方式写link widget\n const observer = new MutationObserver(() => {\n const links = Array.from(root.querySelectorAll(\"a\"));\n links.forEach((link) => {\n link.onclick = () => false;\n });\n });\n observer.observe(root, {\n childList: true,\n subtree: true,\n });\n })\n .config(nord)\n .use(prism)\n .use(gfm)\n .use(commonmark)\n .use(\n $view(codeBlockSchema.node, () =>\n nodeViewFactory({ component: CodeBlock })\n )\n );\n }, []);\n\n useEffect(() => {\n if (value !== undefined) {\n get()?.action(replaceAll(value));\n }\n }, [get, value]);\n\n return <Milkdown />;\n}\n","import React from \"react\";\n// import { wrapBrick } from \"@next-core/react-element\";\n// import type {\n// EoNextTable,\n// NextTableComponentProps,\n// } from \"@next-bricks/advanced/next-table\";\n\ninterface MarkdownItemProps {\n text: string;\n}\n\n// const WrappedNextTable = wrapBrick<EoNextTable, NextTableComponentProps>(\n// \"eo-next-table\"\n// );\n\nexport function TableItem({ text }: MarkdownItemProps) {\n // const parseContent = useMemo((): NextTableComponentProps => {\n // let content: NextTableComponentProps;\n // try {\n // content = JSON.parse(text);\n // } catch {\n // content = {} as NextTableComponentProps;\n // }\n // return content;\n // }, [text]);\n\n // return (\n // <div className=\"table-item\">\n // <WrappedNextTable pagination={false} {...parseContent} />\n // </div>\n // );\n return <div className=\"table-item\">{text}</div>;\n}\n","import React from \"react\";\n\ninterface TextItem {\n text: string;\n}\n\nexport function TextItem({ text }: TextItem) {\n return <div className=\"text-item\">{text}</div>;\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { copyToClipboard as _copyToClipboard } from \"@next-bricks/basic/data-providers/copy-to-clipboard\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { MessageItem, useChatViewContext } from \"../../ChatViewContext\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport classNames from \"classnames\";\n\nconst WrapperIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedToolTip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst copyToClipboard = unwrapProvider<typeof _copyToClipboard>(\n \"basic.copy-to-clipboard\"\n);\nconst showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\n\nexport function Toolbar({\n role,\n content,\n chatting,\n taskId,\n tag,\n}: MessageItem): React.ReactNode {\n const isAssistant = useMemo(\n () => role === \"assistant\" && content.type !== \"load\",\n [role, content.type]\n );\n const isChattingItem = useMemo(() => chatting, [chatting]);\n const { showLike, readonly, handleIsLike } = useChatViewContext();\n\n const handleCopy = () => {\n copyToClipboard(content.text)\n .then(() => showNotification({ type: \"success\", message: \"复制成功\" }))\n .catch(() => showNotification({ type: \"error\", message: \"复制失败\" }));\n };\n\n const handleLikeOrIsLike = useCallback(\n async (islike: boolean) => {\n const result = await handleIsLike(taskId!, islike);\n showNotification({\n message: `${islike ? \"点赞\" : \"操作\"}${result ? \"成功\" : \"失败\"}`,\n type: result ? \"success\" : \"error\",\n });\n },\n [taskId, handleIsLike]\n );\n\n return isAssistant && !isChattingItem ? (\n <div className=\"message-toolbar\">\n {showLike && !readonly && (\n <>\n <WrappedToolTip content=\"点赞\" hoist>\n <WrapperIcon\n className={classNames(\"like\", {\n active: tag?.isLike === true,\n })}\n lib=\"easyops\"\n icon=\"like\"\n onClick={() => handleLikeOrIsLike(true)}\n />\n </WrappedToolTip>\n <WrappedToolTip content=\"还不够好\" hoist>\n <WrapperIcon\n className={classNames(\"unlike\", {\n active: tag?.isLike === false,\n })}\n lib=\"easyops\"\n icon=\"unlike\"\n onClick={() => handleLikeOrIsLike(false)}\n />\n </WrappedToolTip>\n <div className=\"split\" />\n </>\n )}\n <WrappedToolTip content=\"点击复制\" hoist>\n <WrapperIcon lib=\"antd\" icon=\"copy\" onClick={handleCopy} />\n </WrappedToolTip>\n </div>\n ) : null;\n}\n","import moment from \"moment\";\nimport React from \"react\";\n\nexport function Time({ time }: { time?: string | number }) {\n return (\n <div className=\"time\">\n {time\n ? typeof time === \"string\"\n ? time\n : moment(time).format(\"YYYY-MM-DD HH:mm:ss\")\n : null}\n </div>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { useChatViewContext, type MessageItem } from \"../../ChatViewContext\";\n\nconst WrappedToolTip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst WrapperIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport function ContentTip({ role, content }: MessageItem): React.ReactNode {\n const isUser = useMemo(() => role === \"user\", [role]);\n\n const { chatting, readonly, setSearchStr } = useChatViewContext();\n\n const handleCopy = () => {\n setSearchStr(content.text);\n };\n\n return !readonly && isUser && !chatting ? (\n <div className=\"content-tip\">\n <WrappedToolTip content=\"点击再次提问\" hoist>\n <WrapperIcon lib=\"antd\" icon=\"edit\" onClick={handleCopy} />\n </WrappedToolTip>\n </div>\n ) : null;\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport {\n MessageItem,\n MessageItemContent,\n useChatViewContext,\n} from \"../../ChatViewContext.js\";\nimport { GuideItem } from \"./GuideItem.js\";\nimport { MarkdownItem } from \"./Markdown/index.js\";\nimport { TableItem } from \"./TableItem.js\";\nimport { ChatItemLoading } from \"../Loading.js\";\nimport { TextItem } from \"./TextItem.js\";\nimport { Toolbar } from \"./Toolbar.js\";\nimport { Time } from \"./Time.js\";\nimport { ContentTip } from \"./ContentTip.js\";\nimport { MsgItemContext } from \"./MsgItemContext.js\";\n\nconst NOT_AGENT_MATCH = \"no_agent\";\n\nexport function MessageNode(props: MessageItem): React.ReactNode {\n const { content, created, role, agentId } = props;\n const isUser = useMemo(() => role === \"user\", [role]);\n const { quickAnswerConfig } = useChatViewContext();\n\n const getContentNode = useCallback((content: MessageItemContent) => {\n const { type, text, examplePrompts } = content;\n switch (type) {\n case \"guide\":\n return <GuideItem text={text} prompts={examplePrompts} />;\n case \"text\":\n return <TextItem text={text} />;\n case \"table\":\n return <TableItem text={text} />;\n case \"load\":\n return <ChatItemLoading />;\n case \"markdown\":\n default:\n return <MarkdownItem text={text} />;\n }\n }, []);\n\n const messageNode = useMemo(\n () => getContentNode(content),\n [content, getContentNode]\n );\n\n const agentList = useMemo(\n () => quickAnswerConfig?.list ?? [],\n [quickAnswerConfig]\n );\n\n const matchAgent = useMemo(() => {\n return agentList.find((item) => item.id === agentId);\n }, [agentList, agentId]);\n\n return (\n <MsgItemContext.Provider value={props}>\n <div className=\"message-box\">\n <div className=\"message-top\">\n {isUser\n ? \"我\"\n : !agentId || agentId === NOT_AGENT_MATCH || !matchAgent\n ? \"AI助手\"\n : matchAgent.name}\n <Time time={created} />\n </div>\n <div className=\"message-content\">\n <div className=\"wrapper\">\n <div className=\"content\">{messageNode}</div>\n\n <ContentTip {...props} />\n <Toolbar {...props} />\n </div>\n </div>\n </div>\n </MsgItemContext.Provider>\n );\n}\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useChatViewContext } from \"../../ChatViewContext\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport interface AgentDetailItem {\n name: string;\n description: string;\n icon: GeneralIconProps & { color: string };\n starterPrompts?: string[];\n instanceId: string;\n id: string;\n [key: string]: any;\n}\n\nconst CARD_ITEM_HEIGHT = 85;\nconst HEIGHT_GAP = 24;\n\nfunction QuickAnswerCardItem({\n name,\n description,\n icon,\n starterPrompts,\n}: AgentDetailItem) {\n const { setSearchStr } = useChatViewContext();\n\n const handleCardClick = () => {\n starterPrompts?.length && setSearchStr(starterPrompts[0]);\n };\n\n const iconColor = useMemo(() => icon?.color ?? \"geekblue\", [icon]);\n\n return (\n <div\n className=\"quick-answer-card-item\"\n style={{\n height: CARD_ITEM_HEIGHT,\n background: `linear-gradient(rgba(var(--theme-${iconColor}-color-rgb-channel), 0.1), rgba(var(--theme-${iconColor}-color-rgb-channel), 0.08))`,\n }}\n onClick={handleCardClick}\n >\n <div className=\"left\">\n <WrappedIcon\n className=\"icon\"\n {...(icon ?? {\n icon: \"default-app\",\n lib: \"easyops\",\n category: \"app\",\n })}\n style={{\n background: `rgba(var(--theme-${iconColor}-color-rgb-channel), 0.5)`,\n }}\n />\n </div>\n <div className=\"content\">\n <div className=\"title\">{name}</div>\n <div className=\"description\">{description}</div>\n </div>\n </div>\n );\n}\n\nexport function QuickAnswerList() {\n const { quickAnswerConfig, msgList, loading } = useChatViewContext();\n const [showMoreBtn, setShowMoreBtn] = useState<boolean>(false);\n const listRef = useRef<HTMLDivElement>(null);\n const hadClickShowMoreBtn = useRef<boolean>(false);\n\n const handleShowMoreClick = () => {\n hadClickShowMoreBtn.current = true;\n setShowMoreBtn(false);\n };\n\n useEffect(() => {\n const element = listRef.current;\n if (element) {\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (\n entry.contentRect.height >\n CARD_ITEM_HEIGHT * 3 + HEIGHT_GAP * 2\n ) {\n if (!hadClickShowMoreBtn.current) {\n setShowMoreBtn(true);\n }\n } else {\n setShowMoreBtn(false);\n }\n }\n });\n observer.observe(element);\n return () => observer.disconnect();\n }\n }, [showMoreBtn, quickAnswerConfig?.list]);\n\n return quickAnswerConfig?.list.length && msgList.length === 0 && !loading ? (\n <div className=\"quick-answer-wrapper\">\n <div className=\"tip\">\n {quickAnswerConfig.tip ??\n \"你好,我是运维数智人 — Murphy,我能为你提供以下服务:\"}\n </div>\n <div\n className=\"quick-answer-list\"\n style={{\n ...(showMoreBtn\n ? {\n maxHeight: CARD_ITEM_HEIGHT * 3 + HEIGHT_GAP * 2 + 10,\n overflow: \"hidden\",\n }\n : {}),\n }}\n ref={listRef}\n >\n {quickAnswerConfig.list.map((item) => (\n <QuickAnswerCardItem key={item.instanceId} {...item} />\n ))}\n </div>\n {showMoreBtn ? (\n <div className=\"show-more-wrapper\">\n <WrappedLink\n icon={{\n lib: \"antd\",\n icon: \"down\",\n }}\n className=\"show-more-btn\"\n onClick={handleShowMoreClick}\n >\n 显示更多\n </WrappedLink>\n </div>\n ) : null}\n </div>\n ) : null;\n}\n","import React from \"react\";\nimport { useChatViewContext } from \"../ChatViewContext\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport function StopBtn() {\n const { stopChat } = useChatViewContext();\n\n const handleStopChat = () => {\n stopChat();\n };\n return (\n <div className=\"stop-responding-wrapper\">\n <WrappedLink className=\"stop-btn\" onClick={handleStopChat}>\n 停止生成\n </WrappedLink>\n </div>\n );\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { MessageItem, useChatViewContext } from \"../ChatViewContext\";\nimport { Avatar } from \"./MessageItem/Avatar.js\";\nimport classNames from \"classnames\";\nimport { CommonLoading, MessageListLoading } from \"./Loading.js\";\nimport { MessageNode } from \"./MessageItem/index.js\";\nimport { QuickAnswerList } from \"./QuickAnswerList/index.js\";\nimport { debounce } from \"lodash\";\nimport { StopBtn } from \"./StopBtn.js\";\n\ninterface MessageListProps {\n showAvatar?: boolean;\n}\n\nconst DEFAULT_OFFSET_HEIGHT = 80;\nconst CACHE_HEIGHT = 200;\n\nexport function MessageList({\n showAvatar = true,\n}: MessageListProps): React.ReactNode {\n const chatViewRef = useRef<HTMLDivElement>(null);\n const messgetListBoxRef = useRef<HTMLDivElement>(null);\n const [preHeight, setPreHeight] = useState<number>(0);\n const isCustomScroll = useRef<boolean>(false);\n\n const {\n msgLoading,\n msgEnd,\n msgList,\n loading,\n activeSessionId,\n chatting,\n checkSession,\n } = useChatViewContext();\n\n const getMsgItemNode = useCallback(\n (item: MessageItem, index: number = 0) => {\n return (\n <div\n className={classNames(\"message-item\", { user: item.role === \"user\" })}\n key={index}\n >\n {showAvatar && <Avatar role={item.role} agentId={item.agentId} />}\n <MessageNode {...item} />\n </div>\n );\n },\n [showAvatar]\n );\n\n const msgListNode = useMemo(() => {\n return msgList.map((item, index) => {\n if (item.chatting) {\n return (\n <>\n {getMsgItemNode(item, index)}\n {chatting && index === msgList.length - 1 ? <StopBtn /> : null}\n </>\n );\n } else {\n return getMsgItemNode(item, index);\n }\n });\n }, [msgList, chatting, getMsgItemNode]);\n\n const handleScroll = useCallback(() => {\n const messageList = chatViewRef.current;\n if (messageList) {\n const { scrollHeight, clientHeight, scrollTop } = messageList;\n // 滚动到底部所需的高度 = 总高度 - 视图高度\n const isBottom = scrollHeight - clientHeight === scrollTop;\n if (!isBottom) {\n isCustomScroll.current = true;\n } else if (isBottom && isCustomScroll.current) {\n // 自动吸低\n isCustomScroll.current = false;\n }\n if (\n !msgLoading &&\n !msgEnd &&\n scrollTop < CACHE_HEIGHT &&\n activeSessionId\n ) {\n checkSession();\n }\n }\n }, [msgEnd, msgLoading, activeSessionId, checkSession]);\n\n const debounceHandleScroll = debounce(handleScroll, 200);\n\n useEffect(() => {\n if (chatting || activeSessionId) {\n // 聊天或者会话变更时,重置滚动状态\n isCustomScroll.current = false;\n }\n }, [chatting, activeSessionId]);\n\n useEffect(() => {\n const element = messgetListBoxRef.current;\n if (element) {\n const observer = new ResizeObserver((entries) => {\n let newHeight: number = 0;\n // 如果存在用户行为,不触发自动滚动行为\n if (isCustomScroll.current) return;\n for (const entry of entries) {\n newHeight = entry.contentRect.height - DEFAULT_OFFSET_HEIGHT;\n }\n if (!loading && !chatting) {\n // 高度变化,代表消息新增,自动滚动到最下\n chatViewRef.current!.scroll({\n top: Number.MAX_SAFE_INTEGER,\n });\n }\n if (newHeight > preHeight && chatting) {\n chatViewRef.current!.scroll({\n top: Number.MAX_SAFE_INTEGER,\n });\n setPreHeight(Math.max(preHeight, newHeight));\n }\n });\n observer.observe(element);\n return () => observer.disconnect();\n }\n }, [chatting, loading, preHeight]);\n\n return (\n <div\n className=\"chat-view\"\n ref={chatViewRef}\n onScroll={debounceHandleScroll}\n >\n <div className=\"message-list\">\n <div className=\"message-list-box\" ref={messgetListBoxRef}>\n {msgEnd && msgList.length ? (\n <div className=\"message-start-tip\">会话开始</div>\n ) : null}\n {msgLoading && <CommonLoading />}\n <QuickAnswerList />\n {msgListNode}\n </div>\n {loading && <MessageListLoading />}\n </div>\n </div>\n );\n}\n","const HIDDEN_TEXTAREA_STYLE = `\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important;\n padding: 10px !important;\n pointer-events: none !important;\n`;\n\nconst SIZING_STYLE = [\n \"letter-spacing\",\n \"line-height\",\n \"padding-top\",\n \"padding-bottom\",\n \"font-family\",\n \"font-weight\",\n \"font-size\",\n \"font-variant\",\n \"text-rendering\",\n \"text-transform\",\n \"width\",\n \"text-indent\",\n \"padding-left\",\n \"padding-right\",\n \"border-width\",\n \"box-sizing\",\n \"word-break\",\n \"white-space\",\n];\nlet hiddenTextarea: HTMLTextAreaElement;\n\n/**\n * 计算 textare 高度\n * https://github.com/react-component/textarea/blob/1c0026fbe30e5f7dff1fca695b2cf262246381ca/src/calculateNodeHeight.tsx\n * */\nexport default function calculateAutoSizeStyle(\n uiTextNode: HTMLTextAreaElement,\n minRows: number | null = null,\n maxRows: number | null = null\n): React.CSSProperties {\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement(\"textarea\");\n hiddenTextarea.setAttribute(\"tab-index\", \"-1\");\n hiddenTextarea.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(hiddenTextarea);\n }\n\n const uiTextNodeStyle = window.getComputedStyle(uiTextNode);\n const sizingStyle = SIZING_STYLE.map(\n (name) => `${name}:${uiTextNodeStyle.getPropertyValue(name)}`\n ).join(\";\");\n\n // equal style\n hiddenTextarea.setAttribute(\n \"style\",\n `${sizingStyle};${HIDDEN_TEXTAREA_STYLE}`\n );\n hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || \"\";\n\n let minHeight: number | undefined = undefined;\n let maxHeight: number | undefined = undefined;\n // let overflowY: any;\n\n const borderSize = 2;\n const paddingSize = 20;\n let height = hiddenTextarea.scrollHeight - paddingSize + borderSize;\n\n if (minRows !== null || maxRows !== null) {\n // measure height of a textarea with a single row\n hiddenTextarea.value = \" \";\n const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n if (minRows !== null) {\n minHeight = singleRowHeight * minRows - paddingSize + borderSize;\n height = Math.max(paddingSize, height);\n }\n if (maxRows !== null) {\n maxHeight = singleRowHeight * maxRows - paddingSize + borderSize;\n // overflowY = height > maxHeight ? \"\" : \"hidden\";\n height = Math.min(maxHeight, height);\n }\n }\n\n const style: React.CSSProperties = {\n height,\n overflowY: \"scroll\",\n resize: \"none\",\n };\n\n if (minHeight) {\n style.minHeight = minHeight;\n }\n if (maxHeight) {\n style.maxHeight = maxHeight;\n }\n\n return style;\n}\n","import React, {\n ChangeEvent,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport calculateAutoSizeStyle from \"./utils/calculateAutoSizeStyle.js\";\nimport classNames from \"classnames\";\nimport { useChatViewContext } from \"../ChatViewContext.js\";\nimport { AgentDetailItem } from \"./QuickAnswerList/index\";\nimport { ChatBody } from \"../ChatService.js\";\n\nexport interface SearchInputRef {\n handleInsertQuestion: (value: string) => void;\n sendMsg: (msg: string | ChatBody) => void;\n}\n\nconst WrappedToolTip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst PREFIX_WORD = \"@\";\n\nexport function LegacySearchInput(\n _: any,\n ref: React.Ref<SearchInputRef>\n): React.ReactNode {\n const [value, setValue] = useState<string>(\"\");\n const [active, setActive] = useState<boolean>(false);\n const [expand, setExpand] = useState<boolean>(false);\n const [autoSizeStyle, setAutoSizeStyle] = useState<React.CSSProperties>();\n const [isFillContent, setIsFillContent] = useState<boolean>(false);\n\n // mention\n const [mentionOpen, setMentionOpen] = useState<boolean>(false);\n const [matchPrefixIndex, setMatchPrefixIndex] = useState<number>(-1);\n const [matchAgentList, setMatchMentionList] = useState<AgentDetailItem[]>([]);\n const [matchMentionsIndex, setMatchMentionsIndex] = useState<number>(0);\n\n const mentionsRef = useRef<HTMLDivElement>(null);\n const searchInputBoxRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const hadExpanded = useRef<boolean>(false);\n const inputEndRef = useRef<boolean>(false);\n\n const {\n chatting,\n loading,\n searchStr,\n quickAnswerConfig,\n createSession,\n setSearchStr,\n handleChat,\n setAgent,\n } = useChatViewContext();\n\n const agentList = useMemo(\n () => quickAnswerConfig?.list ?? [],\n [quickAnswerConfig]\n );\n\n const hadValue = useMemo(() => !!value, [value]);\n const defaultSize = useMemo(() => [1, 5], []);\n const disabled = useMemo(() => loading || chatting, [chatting, loading]);\n\n const matchPrefixInfo = useMemo(() => {\n const textareaElement = textareaRef.current!;\n if (matchPrefixIndex >= 0 && value) {\n const currentFocusIndex = textareaElement.selectionStart;\n let matchWord = \"\";\n for (let i = matchPrefixIndex + 1; i < currentFocusIndex; i++) {\n // 匹配中文英文数字\n if (/[\\u4e00-\\u9fa5]|\\w|\\d/.test(value[i]) || inputEndRef.current) {\n matchWord = matchWord + value[i];\n } else {\n setMatchPrefixIndex(-1);\n return false;\n }\n }\n return {\n start: matchPrefixIndex + 1,\n end: currentFocusIndex,\n word: matchWord,\n };\n }\n return false;\n }, [matchPrefixIndex, value]);\n\n const handleAgentItemSelect = useCallback(\n (item: AgentDetailItem) => {\n if (matchPrefixInfo) {\n const { start, end } = matchPrefixInfo;\n const valueList = value.split(\"\");\n const trimName = item.name.replace(/\\s+/g, \"\") + \" \";\n const focusIndex = start + trimName.length;\n valueList.splice(start, end - start, trimName);\n setValue(valueList.join(\"\"));\n setMatchPrefixIndex(-1);\n\n setTimeout(() => {\n textareaRef.current!.selectionStart = focusIndex;\n textareaRef.current!.selectionEnd = focusIndex;\n textareaRef.current!.focus();\n }, 0);\n }\n },\n [matchPrefixInfo, value]\n );\n\n const isShowMentions = useMemo(() => {\n return matchAgentList.length && mentionOpen;\n }, [matchAgentList, mentionOpen]);\n\n const mentions = useMemo(() => {\n return isShowMentions ? (\n <div className=\"mentions-list-wrapper\" ref={mentionsRef}>\n <div className=\"content\">\n <div className=\"mentions-title\">Agents</div>\n <div className=\"mentions-list\">\n {matchAgentList.slice(0, 10).map((item, index) => {\n return (\n <div\n className={classNames(\"mentions-item\", {\n active: index === matchMentionsIndex,\n })}\n key={index}\n onClick={() => handleAgentItemSelect(item)}\n >\n <WrappedIcon\n className=\"icon\"\n {...item.icon}\n style={{\n color: `var(--theme-${item.icon.color}-color)`,\n background: `var(--theme-${item.icon.color}-background)`,\n }}\n />\n <div className=\"name\">{item.name}</div>\n <div className=\"description\">{item.description}</div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n ) : null;\n }, [\n matchAgentList,\n matchMentionsIndex,\n isShowMentions,\n handleAgentItemSelect,\n ]);\n\n const computedAutoSize = useCallback(\n (size = defaultSize) => {\n if (hadExpanded.current && expand) return;\n const textareaElement = textareaRef.current as HTMLTextAreaElement;\n if (textareaElement) {\n const textareaStyles = calculateAutoSizeStyle(\n textareaElement,\n size[0],\n size[1]\n );\n\n setAutoSizeStyle(textareaStyles);\n }\n hadExpanded.current = expand;\n },\n [defaultSize, expand]\n );\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLTextAreaElement> | string): void => {\n const value = typeof e === \"string\" ? e : e.target.value;\n setValue(value);\n textareaRef.current!.value = value;\n },\n []\n );\n\n const handleCompositionStart = () => {\n inputEndRef.current = true;\n };\n\n const handleCompositionEnd = () => {\n inputEndRef.current = false;\n };\n\n const hanldeCreateSession = () => {\n createSession();\n };\n\n const handleExpand = useCallback(() => {\n setExpand((value) => {\n return !value;\n });\n }, []);\n\n const matchFirstAgent = useCallback(\n (value: string) => {\n const regex = /@([\\u4e00-\\u9fa5|\\w|\\d]+)/g;\n\n // 在字符串中循环匹配正则表达式\n let match: RegExpExecArray | null;\n while ((match = regex.exec(value)) !== null) {\n if (match) {\n const agent = agentList?.find(\n (item) => item.name.replace(/\\s+/g, \"\") === match![1]\n );\n agent && setAgent(agent.id);\n if (agent) break;\n }\n }\n },\n [agentList, setAgent]\n );\n\n const handleDispatchQuestion = useCallback(\n (val: string) => {\n matchFirstAgent(val);\n handleChat(val);\n\n setActive(false);\n setExpand(false);\n handleChange(\"\");\n textareaRef.current?.blur();\n },\n [handleChat, handleChange, matchFirstAgent]\n );\n\n const handleSubmit = useCallback(() => {\n if (!hadValue || !textareaRef.current || disabled) return;\n handleDispatchQuestion(value);\n }, [value, hadValue, disabled, handleDispatchQuestion]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey && !inputEndRef.current) {\n e.preventDefault();\n if (isShowMentions) {\n handleAgentItemSelect(matchAgentList[matchMentionsIndex]);\n } else {\n handleSubmit();\n }\n }\n if (isShowMentions) {\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setMatchMentionsIndex((index) => Math.max(0, index - 1));\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setMatchMentionsIndex((index) =>\n Math.min(matchAgentList.length - 1, index + 1)\n );\n }\n }\n },\n [\n handleSubmit,\n handleAgentItemSelect,\n isShowMentions,\n matchAgentList,\n matchMentionsIndex,\n ]\n );\n\n const handleKeyUp = useCallback(\n (e: React.KeyboardEvent) => {\n const textareaElement = textareaRef.current!;\n\n const selectionIndex = textareaElement.selectionStart;\n const prefixWord = textareaElement.value[selectionIndex - 1];\n const beforeSelectionText = textareaElement.value.slice(\n 0,\n selectionIndex\n );\n const index = beforeSelectionText.lastIndexOf(PREFIX_WORD);\n\n if (\n e.key === \"Escape\" ||\n (!isShowMentions &&\n [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"].indexOf(e.key) !==\n -1)\n ) {\n setMatchPrefixIndex(-1);\n return;\n }\n\n if (prefixWord === PREFIX_WORD) {\n setMatchPrefixIndex(selectionIndex - 1);\n } else {\n setMatchPrefixIndex(index);\n }\n },\n [isShowMentions]\n );\n\n useEffect(() => {\n if (searchStr) {\n handleChange(searchStr.trim());\n textareaRef.current?.focus();\n setSearchStr(\"\");\n }\n }, [searchStr, disabled, setSearchStr, handleChange]);\n\n useEffect(() => {\n computedAutoSize(expand ? [20, 20] : undefined);\n }, [value, expand, computedAutoSize]);\n\n useEffect(() => {\n const searchInputBox = searchInputBoxRef.current;\n if (searchInputBox) {\n const observe = new ResizeObserver(() => {\n const { width: currentWidth } = searchInputBox.getBoundingClientRect();\n const FIT_CONTENT_WIDTH = 900;\n\n setIsFillContent(currentWidth < FIT_CONTENT_WIDTH);\n });\n\n observe.observe(searchInputBox);\n\n return () => {\n observe.disconnect();\n };\n }\n }, []);\n\n useEffect(() => {\n if (!chatting && textareaRef.current) {\n textareaRef.current?.focus();\n }\n }, [chatting]);\n\n useEffect(() => {\n if (agentList?.length && matchPrefixInfo) {\n const filterList =\n matchPrefixInfo.word === \"\"\n ? agentList\n : agentList.filter((item) =>\n item.name.includes(matchPrefixInfo.word)\n );\n\n setMatchMentionList(filterList);\n setMatchMentionsIndex(0);\n setMentionOpen(true);\n } else {\n setMatchMentionList([]);\n setMentionOpen(false);\n }\n }, [matchPrefixInfo, agentList]);\n\n useEffect(() => {\n if (matchMentionsIndex >= 0 && mentionsRef.current) {\n const element = mentionsRef.current.querySelector(\n \".mentions-item.active\"\n );\n element?.scrollIntoView({ block: \"nearest\" });\n }\n }, [matchMentionsIndex]);\n\n useEffect(() => {\n const handleDocumentClick = (e: any) => {\n const mentionsElemnt = mentionsRef.current;\n if (mentionsElemnt && !mentionsElemnt.contains(e.composedPath()[0])) {\n setMentionOpen(false);\n }\n };\n\n document.addEventListener(\"click\", handleDocumentClick);\n\n return () => {\n document.removeEventListener(\"click\", handleDocumentClick);\n };\n }, []);\n\n useImperativeHandle(ref, () => ({\n handleInsertQuestion: (value: string) => {\n handleDispatchQuestion(value);\n },\n sendMsg: (msg: string | ChatBody) => {\n handleChat(msg);\n },\n }));\n\n return (\n <div\n className={classNames(\"search-input-box\", {\n \"fill-content\": isFillContent,\n })}\n ref={searchInputBoxRef}\n >\n {mentions}\n <div\n className={classNames(\"input-box\", {\n active,\n disabled,\n expand,\n })}\n >\n <textarea\n value={value}\n ref={textareaRef}\n style={{\n ...autoSizeStyle,\n paddingRight: expand ? \"50px\" : \"140px\",\n }}\n placeholder={chatting ? \"回复中,请稍等...\" : \"提出你的想法...\"}\n onFocus={() => setActive(true)}\n onBlur={() => setActive(false)}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onKeyUpCapture={handleKeyUp}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n />\n <span className=\"suffix-icon\">\n <WrappedToolTip content=\"新增会话\">\n <WrappedIcon\n lib=\"antd\"\n icon=\"plus-circle\"\n onClick={hanldeCreateSession}\n />\n </WrappedToolTip>\n {!expand && (\n <WrappedToolTip content=\"放大\">\n <WrappedIcon\n lib=\"antd\"\n icon=\"arrows-alt\"\n onClick={handleExpand}\n />\n </WrappedToolTip>\n )}\n <div className=\"submit-split\"></div>\n <WrappedToolTip content=\"提交\">\n <WrappedIcon\n className={classNames(\"submit-btn\", {\n active: hadValue,\n disabled: !hadValue || disabled,\n })}\n lib={chatting ? \"antd\" : \"easyops\"}\n icon={chatting ? \"loading\" : \"release-management-fill\"}\n category={chatting ? \"\" : \"menu\"}\n spinning={chatting}\n onClick={handleSubmit}\n />\n </WrappedToolTip>\n </span>\n <span className=\"toolbar-icon\">\n {expand && (\n <WrappedToolTip content=\"缩小\">\n <WrappedIcon lib=\"antd\" icon=\"shrink\" onClick={handleExpand} />\n </WrappedToolTip>\n )}\n </span>\n </div>\n {hadValue && (\n <div className=\"search-input-toolbar\">\n <div className=\"input-tip\">Shift + Enter 换行</div>\n </div>\n )}\n </div>\n );\n}\n\nexport const SearchInput = forwardRef(LegacySearchInput);\n","import React, { useCallback, useEffect, useRef } from \"react\";\nimport { useChatViewContext } from \"../ChatViewContext\";\nimport classNames from \"classnames\";\nimport { debounce } from \"lodash\";\nimport { SessionItem as SessionItemProps } from \"../ChatService\";\nimport { CommonLoading } from \"./Loading.js\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\n\nconst showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst showDialog = unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nconst SESSION_ITEM_HEIGHT = 42;\nconst BUFFER_NUMBER = 5;\nconst CACHE_HEIGHT = 100;\n\nexport function SessionList(): React.ReactNode {\n const { sessionEnd, sessionLoading, sessionList, querySessionHistory } =\n useChatViewContext();\n const sessionWrapperRef = useRef<HTMLDivElement>(null);\n const sessionListRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n // 计算视图内可以展示多少条会话历史数据\n let limit = 20;\n const sessionWrapper = sessionWrapperRef.current;\n if (sessionWrapper) {\n // limit = 视图高度 % 单条高度 + 缓冲长度\n limit =\n Math.floor(sessionWrapper.clientHeight / SESSION_ITEM_HEIGHT) +\n BUFFER_NUMBER;\n }\n querySessionHistory(limit);\n }, []);\n\n const checkSessionList = useCallback(() => {\n if (sessionLoading || sessionEnd) return;\n const sessionList = sessionListRef.current;\n if (sessionList) {\n const { scrollTop, scrollHeight, clientHeight } = sessionList;\n // 如果滚动的高度 + 视图高度 + 缓冲高度 > 视图的滚动高度,请求新的数据\n if (scrollTop + clientHeight + CACHE_HEIGHT > scrollHeight) {\n querySessionHistory();\n }\n }\n }, [querySessionHistory, sessionLoading, sessionEnd]);\n\n const handleScroll = debounce(checkSessionList, 200);\n\n return (\n <div className=\"session-list-wrapper\" ref={sessionWrapperRef}>\n <div className=\"session-title\">历史对话</div>\n <div\n className=\"session-list\"\n ref={sessionListRef}\n onScroll={handleScroll}\n >\n {sessionList.map((item, index) => {\n return <SessionItem key={index} {...item} />;\n })}\n {sessionLoading && <CommonLoading />}\n {/* {sessionEnd && <div className=\"session-end-tip\">到底啦</div>} */}\n </div>\n </div>\n );\n}\n\nfunction SessionItem({ title, conversationId }: SessionItemProps) {\n const { activeSessionId, checkSession, deleteSession } = useChatViewContext();\n\n const handleCheckSession = useCallback(() => {\n checkSession(conversationId, true);\n }, [conversationId, checkSession]);\n\n const handleDeleteSession = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n showDialog({\n type: \"confirm\",\n title: \"会话删除确认\",\n content: `请输入 {{ expect }} 以确认删除`,\n expect: title.replace(/\\s+/g, \"\"),\n }).then(async () => {\n const result = await deleteSession([conversationId]);\n showNotification({\n message: `删除会话${result ? \"成功\" : \"失败\"}`,\n type: result ? \"success\" : \"error\",\n });\n });\n },\n [conversationId, deleteSession, title]\n );\n\n return (\n <div\n key={title}\n className={classNames(\"session-item\", {\n active: conversationId === activeSessionId,\n })}\n onClick={handleCheckSession}\n >\n <div className=\"content\">\n <div className=\"title\" title={title}>\n {title}\n </div>\n </div>\n\n <div className=\"session-close-btn\" onClick={handleDeleteSession}>\n <WrappedIcon icon=\"close\" lib=\"antd\" />\n </div>\n </div>\n );\n}\n","import { fetchEventSource } from \"@microsoft/fetch-event-source\";\nimport { http } from \"@next-core/http\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport moment from \"moment\";\n\nexport interface SSEMessageItem {\n conversationId?: string;\n created: number | string;\n delta: {\n content: string;\n role: string;\n };\n taskId?: string;\n agentId?: string;\n}\n\nexport interface QueueItem {\n topic: string;\n message?: SSEMessageItem;\n}\n\nexport interface SessionItem {\n conversationId: string;\n isDelete: boolean;\n time: number;\n title: string;\n user: string;\n _row_id: string;\n}\n\nexport interface ChatItem {\n agentId: string;\n conversationId: string;\n input: string;\n output: string;\n taskId: string;\n time: number;\n inputTime: number;\n user: string;\n _row_id: string;\n tag: {\n isLike?: boolean;\n };\n}\n\nexport interface ChatBody {\n agentId?: string;\n conversationId?: string;\n input: string;\n stream?: boolean;\n config?: Record<string, any>;\n [k: string]: any;\n}\n\nexport class ChatService {\n #debug: boolean;\n #ctrl?: AbortController;\n #agentId: string;\n #enterInterval: number;\n #charting = false;\n #isStartEmitEvent = false;\n #emitTimer: NodeJS.Timeout | undefined;\n #messageQueue: Array<QueueItem> = [];\n #subscribers: Record<string, Array<(msg?: SSEMessageItem) => void>> = {};\n #conversationId?: string;\n #answerLanguage?: string | undefined;\n\n // 会话\n #sessionNextToken?: string;\n #cacheLimit?: number;\n\n // 消息\n #messageNextToken?: string;\n\n constructor({\n agentId,\n enterInterval = 50,\n debug = false,\n answerLanguage,\n }: {\n agentId: string;\n enterInterval: number;\n debug: boolean;\n answerLanguage?: string;\n }) {\n this.#agentId = agentId;\n this.#enterInterval = enterInterval;\n this.#debug = debug;\n this.#answerLanguage = answerLanguage;\n }\n\n enqueue(data: QueueItem) {\n this.#messageQueue.push(data);\n this.#startEmitEvent();\n }\n\n dequeue() {\n return this.#messageQueue.shift();\n }\n\n #clear() {\n this.#messageQueue.length = 0;\n }\n\n getMessageQueue() {\n return this.#messageQueue;\n }\n\n subscribe(topic: string, callback: (msg?: SSEMessageItem) => void) {\n if (!this.#subscribers[topic]) {\n this.#subscribers[topic] = [];\n }\n this.#subscribers[topic].push(callback);\n }\n\n unsubscribe(topic: string, callback: (msg?: SSEMessageItem) => void) {\n if (this.#subscribers[topic]) {\n this.#subscribers[topic] = this.#subscribers[topic].filter(\n (cb) => cb !== callback\n );\n }\n }\n\n notifySubscribers(data: QueueItem) {\n const topic = data.topic;\n if (this.#subscribers[topic]) {\n this.#subscribers[topic].forEach((callback) => {\n callback(data?.message);\n });\n }\n }\n\n async setChatItemIsLike(id: string, isLike: boolean): Promise<boolean> {\n let flag: boolean = false;\n try {\n const { code } = await http.request<{ code: number }>(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.conversation.CommentDialogue/conversation/comment`,\n {\n method: \"POST\",\n body: JSON.stringify({\n taskId: id,\n isLike,\n }),\n }\n );\n if (code === 0) {\n flag = true;\n }\n } catch {\n flag = false;\n }\n return flag;\n }\n\n setAgentId(id: string) {\n this.#agentId = id;\n }\n\n setConversationId(id?: string) {\n this.#conversationId = id;\n }\n\n async getSessionHistory(limit?: number): Promise<SessionItem[]> {\n if (limit) {\n this.#cacheLimit = limit;\n }\n try {\n const {\n data: { conversations, next_token },\n } = await http.request<{\n data: {\n conversations: SessionItem[];\n next_token: string;\n previous_token: string;\n };\n }>(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.conversation.ListConversation/conversation/list`,\n {\n method: \"POST\",\n body: JSON.stringify({\n limit: this.#cacheLimit ?? 20,\n next_token: this.#sessionNextToken,\n }),\n }\n );\n this.#sessionNextToken = next_token;\n if (!next_token) {\n this.notifySubscribers({ topic: \"session.fetch.end\" });\n }\n return conversations;\n } catch {\n // eslint-disable-next-line no-console\n console.error(\"获取会话历史失败\");\n }\n return [];\n }\n\n async getChatHistory(id?: string): Promise<ChatItem[]> {\n if (id) {\n this.setConversationId(id);\n this.#messageNextToken = \"\";\n }\n if (!this.#conversationId) return [];\n try {\n const {\n data: { conversations, next_token },\n } = await http.request<{\n data: {\n conversations: ChatItem[];\n next_token: string;\n previous_token: string;\n };\n }>(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.conversation.GetAllDialogue/conversation/get/${this.#conversationId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n limit: 15,\n next_token: this.#messageNextToken,\n }),\n }\n );\n this.#messageNextToken = next_token;\n if (!next_token) {\n this.notifySubscribers({ topic: \"message.fetch.end\" });\n }\n return conversations;\n } catch {\n // eslint-disable-next-line no-console\n console.error(\"获取消息历史失败\");\n }\n return [];\n }\n\n async deleteSession(id: string[]): Promise<boolean> {\n if (!id.length) return false;\n let flag: boolean = false;\n try {\n const { code } = await http.request<{ code: number }>(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.conversation.DeleteConversation/conversation/delete`,\n {\n method: \"POST\",\n body: JSON.stringify({\n conversationIds: id,\n }),\n }\n );\n if (code === 0) {\n flag = true;\n }\n } catch {\n flag = false;\n }\n return flag;\n }\n\n splitWord(str: string): string[] {\n if (!str) return [];\n // 单词长度小于 5 直接返回, 否则做单词分割处理\n if (str?.length < 5) return [str];\n const list = [];\n\n // TODO: 特殊逻辑,临时处理 debug 内容\n if (this.#debug && /easy_cmd_flow_debug/.test(str)) {\n return [str];\n }\n\n if (window.Intl) {\n const segmenterFr = new Intl.Segmenter(\"zh-Hans-CN\", {\n granularity: \"word\",\n });\n const iterator = segmenterFr.segment(str)[Symbol.iterator]();\n\n let nextWord = iterator.next();\n while (!nextWord.done) {\n list.push(nextWord.value.segment);\n nextWord = iterator.next();\n }\n } else {\n const customSplit = {\n [Symbol.split](str: string) {\n let pos = 0;\n const result = [];\n let cache = \"\";\n while (pos < str.length) {\n const matchStr = str.substring(pos, pos + 1);\n // 如果是中文,单个输出\n if (/[\\u4e00-\\u9fa5]/.test(matchStr)) {\n result.push(cache + matchStr);\n cache = \"\";\n } else {\n // 否则,遇到空格或者标点符号再分词\n if (!/\\s|[,。;《》?!,.:<>?!]]/.test(matchStr)) {\n cache = cache + matchStr;\n } else {\n result.push(cache + matchStr);\n cache = \"\";\n }\n }\n pos++;\n }\n if (cache) result.push(cache);\n return result;\n },\n };\n\n str.split(customSplit).forEach((word) => {\n list.push(word);\n });\n }\n\n return list;\n }\n\n async chat(msg: string | ChatBody): Promise<void> {\n this.#ctrl = new AbortController();\n let hadMatchMessage = false;\n this.#charting = true;\n await fetchEventSource(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.manage.LLMChatProxy@1.0.0/api/aiops_chat/v1/chat/completions`,\n {\n method: \"POST\",\n signal: this.#ctrl.signal,\n body: JSON.stringify({\n agentId: this.#agentId,\n conversationId: this.#conversationId,\n stream: true,\n config: {\n debug: this.#debug,\n ...(this.#answerLanguage ? { lang: this.#answerLanguage } : {}),\n },\n ...(typeof msg === \"string\"\n ? {\n input: msg,\n }\n : msg),\n }),\n headers: {\n \"giraffe-contract-name\": \"easyops.api.aiops_chat.manage.LLMChatProxy\",\n },\n onopen: async (response) => {\n if (response.ok) {\n // eslint-disable-next-line no-console\n console.log(\"open sse service success!\");\n } else {\n // eslint-disable-next-line no-console\n console.log(\"open sse service fail!\");\n }\n },\n onmessage: (msg) => {\n const { data } = msg;\n hadMatchMessage = true;\n if (data === \"[DONE]\") {\n this.#ctrl!.abort();\n return;\n }\n let result = {} as SSEMessageItem;\n try {\n result = JSON.parse(data);\n\n if (!this.#conversationId) {\n this.setConversationId(result.conversationId);\n }\n const wordList = this.splitWord(result.delta.content);\n wordList.forEach((word) => {\n this.enqueue({\n topic: \"add\",\n message: {\n ...result,\n delta: {\n role: \"assistant\",\n content: word,\n },\n },\n });\n });\n } catch {\n this.enqueue({\n topic: \"add\",\n message: {\n created: moment().format(\"YYYY-MM-DD HH:mm:ss\"),\n delta: {\n role: \"assistant\",\n content: `\\`【数据格式错误】:\\` ${data}`,\n },\n agentId: this.#agentId,\n },\n });\n this.#ctrl!.abort();\n return;\n }\n },\n onclose: () => {\n // eslint-disable-next-line no-console\n console.log(\"close\");\n // 兜底逻辑,连接结束,并且没有数据返回\n if (!hadMatchMessage) {\n this.enqueue({\n topic: \"add\",\n message: {\n delta: {\n role: \"assistant\",\n content: \"`无法识别`\",\n },\n agentId: this.#agentId,\n created: moment().format(\"YYYY-MM-DD HH:mm:ss\"),\n },\n });\n }\n this.#ctrl!.abort();\n },\n onerror: (err) => {\n // eslint-disable-next-line no-console\n console.log(\"err\", err);\n this.#ctrl!.abort();\n },\n }\n );\n\n this.#charting = false;\n }\n\n stop() {\n clearInterval(this.#emitTimer);\n this.#ctrl && this.#ctrl?.abort();\n this.#charting = false;\n this.#emitTimer = undefined;\n this.#isStartEmitEvent = false;\n this.#clear();\n this.notifySubscribers({ topic: \"stop\" });\n }\n\n #startEmitEvent() {\n if (this.#isStartEmitEvent) return;\n this.#isStartEmitEvent = true;\n // 轮训队列,每隔 #enterInterval(默认 50ms) 推出第一条数据,获取到 text,推送给组件,组件接受后进行渲染\n // 直到聊天结束,并且消息队列数据为空时,停止 emit\n this.#emitTimer = setInterval(() => {\n if (this.#charting || this.getMessageQueue().length) {\n const messageItem = this.dequeue()!;\n messageItem && this.notifySubscribers(messageItem);\n } else {\n clearInterval(this.#emitTimer);\n this.#emitTimer = undefined;\n this.#isStartEmitEvent = false;\n this.notifySubscribers({ topic: \"finish\" });\n }\n }, this.#enterInterval);\n }\n}\n\n// export const chartService = new ChatService();\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { MessageItem } from \"../ChatViewContext.js\";\nimport moment from \"moment\";\nimport {\n ChatBody,\n ChatItem,\n ChatService,\n SessionItem,\n SSEMessageItem,\n} from \"../ChatService.js\";\n\nconst NEW_SESSION_ID = \"new_session_id\";\n\nexport function useChatViewInfo({\n agentId,\n sessionId,\n enterInterval = 50,\n debug,\n answerLanguage,\n}: {\n agentId: string;\n sessionId?: string;\n enterInterval?: number;\n debug: boolean;\n answerLanguage?: string;\n}) {\n const [sessionEnd, setSessionEnd] = useState<boolean>(false);\n const [sessionLoading, setSessionLoading] = useState<boolean>(false);\n const [activeSessionId, setActiveSessionId] = useState<string>();\n const [loading, setLoading] = useState<boolean>(false);\n const [chatting, setChatting] = useState<boolean>(false);\n const [sessionList, setSessionList] = useState<SessionItem[]>([]);\n\n const [msgLoading, setMsgLoading] = useState<boolean>(false);\n const [msgEnd, setMsgEnd] = useState<boolean>(false);\n const [msgList, setMsgList] = useState<MessageItem[]>([]);\n const [searchStr, setSearchStr] = useState<string>(\"\");\n const chatingText = useRef<string>(\"\");\n const chatingMessageItem = useRef<MessageItem>();\n const chatService = useMemo(\n () =>\n new ChatService({\n agentId,\n enterInterval,\n debug,\n answerLanguage,\n }),\n [agentId, enterInterval, debug, answerLanguage]\n );\n\n const defaultNewSessionItem = useMemo(\n () =>\n ({\n conversationId: NEW_SESSION_ID,\n title: \"新建会话\",\n }) as SessionItem,\n []\n );\n\n const stopChat = useCallback(() => {\n chatService.stop();\n }, [chatService]);\n\n const setAgent = useCallback(\n (id: string) => {\n chatService.setAgentId(id);\n },\n [chatService]\n );\n\n const checkSession = useCallback(\n async (id?: string, isInit = false) => {\n if (isInit && id) {\n // 切换聊天,重制状态\n setMsgEnd(false);\n setMsgLoading(false);\n setLoading(true);\n setMsgList([]);\n setActiveSessionId(id);\n if (chatting) {\n stopChat();\n }\n } else {\n setMsgLoading(true);\n }\n // 如果是新建会话,不需要查询历史\n if (id === NEW_SESSION_ID) {\n // 重置会话id\n chatService.setConversationId();\n setMsgEnd(true);\n setLoading(false);\n return;\n }\n const list = await chatService.getChatHistory(id);\n const computedList = (list: ChatItem[]) => {\n const newList: MessageItem[] = [];\n list.forEach((item) => {\n newList.unshift(\n {\n agentId: item.agentId,\n taskId: item.taskId,\n conversationId: item.conversationId,\n role: \"user\",\n content: {\n type: \"markdown\",\n text: item.input,\n },\n key: `user_${item.taskId}`,\n created: item.time,\n },\n {\n agentId: item.agentId,\n taskId: item.taskId,\n conversationId: item.conversationId,\n role: \"assistant\",\n content: {\n type: \"markdown\",\n text: item.output,\n },\n key: `assistant_${item.taskId}`,\n created: item.inputTime,\n tag: item.tag,\n }\n );\n });\n return newList.filter((item) => item.content.text);\n };\n setMsgList((preList) => {\n return computedList(list).concat(preList);\n });\n setMsgLoading(false);\n setLoading(false);\n },\n [chatService, chatting, stopChat]\n );\n\n const deleteSession = useCallback(\n async (ids: string[]): Promise<boolean> => {\n // 需要过滤新建会话, 因为新建会话在本地,还没上报到远端\n const filterIds = ids.filter((item) => item !== NEW_SESSION_ID);\n const result = await chatService.deleteSession(filterIds);\n if (result) {\n let deleteActiveSession = false;\n if (\n activeSessionId &&\n filterIds.includes(activeSessionId) &&\n activeSessionId !== NEW_SESSION_ID\n ) {\n // 如果删除会话包含当前会话,需要重置状态\n deleteActiveSession = true;\n // 清除会话id\n chatService.setConversationId();\n\n setMsgEnd(false);\n setMsgLoading(false);\n setMsgList([]);\n\n if (chatting) {\n stopChat();\n }\n }\n\n setSessionList((list) => {\n const newList = list.filter(\n (item) => !filterIds.includes(item.conversationId!)\n );\n if (deleteActiveSession) {\n // 已经选中的当前会话被删除,新建会话\n const hasNewOne = list.find(\n (item) => item.conversationId === NEW_SESSION_ID\n );\n setLoading(false);\n\n setActiveSessionId(NEW_SESSION_ID);\n if (hasNewOne) {\n return newList;\n } else {\n return [defaultNewSessionItem].concat(newList);\n }\n }\n return newList;\n });\n }\n return result;\n },\n [activeSessionId, chatService, chatting, defaultNewSessionItem, stopChat]\n );\n\n const querySessionHistory = useCallback(\n async (limit?: number) => {\n setSessionLoading(true);\n const list = await chatService.getSessionHistory(limit);\n if (!activeSessionId) {\n // 如果没有 activeSessionId, 默认新增会话\n setActiveSessionId(NEW_SESSION_ID);\n }\n setSessionList((preList) => {\n return !activeSessionId\n ? [defaultNewSessionItem].concat([...preList, ...list])\n : preList.concat(list);\n });\n setSessionLoading(false);\n },\n [chatService, activeSessionId, defaultNewSessionItem]\n );\n\n const handleChat = useCallback(\n async (msg: string | ChatBody) => {\n const inputMsg = typeof msg === \"string\" ? msg : msg.input;\n if (activeSessionId === NEW_SESSION_ID) {\n // 如果当前会话属于新建会话,更新会话历史数据\n setSessionList((list) => {\n return list.map((item) => ({\n ...item,\n title:\n item.conversationId === NEW_SESSION_ID ? inputMsg : item.title,\n }));\n });\n }\n setChatting(true);\n chatService.chat(msg);\n setMsgList((list) => {\n return list.concat([\n {\n role: \"user\",\n content: {\n type: \"markdown\",\n text: inputMsg,\n },\n created: moment().format(\"YYYY-MM-DD HH:mm:ss\"),\n },\n {\n role: \"assistant\",\n content: {\n type: \"load\",\n text: \"\",\n },\n chatting: true,\n created: \"Now\",\n },\n ]);\n });\n },\n [chatService, activeSessionId]\n );\n\n const createSession = useCallback(() => {\n chatService.setConversationId();\n setMsgList([]);\n setActiveSessionId(NEW_SESSION_ID);\n const hasNewOne = sessionList.find(\n (item) => item.conversationId === NEW_SESSION_ID\n );\n if (!hasNewOne) {\n setSessionList((preList) => {\n return [defaultNewSessionItem].concat(preList);\n });\n }\n }, [chatService, sessionList, defaultNewSessionItem]);\n\n const handleIsLike = useCallback(\n async (id: string, isLike: boolean): Promise<boolean> => {\n const result = await chatService.setChatItemIsLike(id, isLike);\n if (result) {\n setMsgList((list) => {\n return list.map((item) => ({\n ...item,\n tag:\n id === item.taskId\n ? {\n isLike,\n }\n : item.tag,\n }));\n });\n }\n return result;\n },\n [chatService]\n );\n\n useEffect(() => {\n if (sessionId) {\n checkSession(sessionId);\n }\n }, [sessionId]);\n\n useEffect(() => {\n // session listener\n const handleSessionEnd = () => {\n setSessionEnd(true);\n };\n chatService.subscribe(\"session.fetch.end\", handleSessionEnd);\n\n return () => {\n chatService.subscribe(\"session.fetch.end\", handleSessionEnd);\n };\n }, [chatService]);\n\n useEffect(() => {\n // chat listener\n const listener = (msgItem?: SSEMessageItem) => {\n if (!msgItem) return;\n chatingText.current = chatingText.current + msgItem.delta.content;\n if (activeSessionId === NEW_SESSION_ID && msgItem.conversationId) {\n // 如果当前会话属于新建会话,更新会话历史数据\n setSessionList((list) => {\n return list.map((item) => ({\n ...item,\n conversationId:\n item.conversationId === NEW_SESSION_ID\n ? msgItem.conversationId!\n : item.conversationId,\n }));\n });\n setActiveSessionId(msgItem.conversationId);\n }\n // eslint-disable-next-line no-console\n // console.log(chatingText.current);\n chatingMessageItem.current = {\n ...msgItem,\n role: \"assistant\",\n content: {\n type: \"markdown\",\n text: chatingText.current,\n },\n chatting: true,\n created: moment(msgItem?.created).format(\"YYYY-MM-DD HH:mm:ss\"),\n };\n setMsgList((list) => {\n list.pop();\n return list.concat(chatingMessageItem.current!);\n });\n };\n const reset = () => {\n chatingText.current = \"\";\n setChatting(false);\n setLoading(false);\n chatingMessageItem.current = undefined;\n };\n const finishListener = () => {\n setMsgList((list) => {\n return list.map((item) => ({\n ...item,\n chatting: false,\n }));\n });\n reset();\n };\n const fetchEndListener = () => {\n setMsgEnd(true);\n };\n const stopListener = () => {\n if (chatingMessageItem.current) {\n const stopMessageItem: MessageItem = {\n ...chatingMessageItem.current,\n content: {\n type: \"markdown\",\n text:\n chatingMessageItem.current.content.text +\n \" \\\\\\n ` 对话被中断了 `\",\n },\n };\n setMsgList((list) => {\n list.pop();\n return msgList.concat(stopMessageItem);\n });\n } else {\n setMsgList((list) => {\n return list.filter((item) => item.content.type !== \"load\");\n });\n }\n reset();\n };\n chatService.subscribe(\"add\", listener);\n chatService.subscribe(\"finish\", finishListener);\n chatService.subscribe(\"stop\", stopListener);\n chatService.subscribe(\"message.fetch.end\", fetchEndListener);\n return () => {\n chatService.unsubscribe(\"add\", listener);\n chatService.unsubscribe(\"finish\", finishListener);\n chatService.unsubscribe(\"stop\", stopListener);\n chatService.unsubscribe(\"message.fetch.end\", fetchEndListener);\n };\n }, [chatService, activeSessionId, msgList]);\n\n return {\n sessionEnd,\n sessionLoading,\n loading,\n chatting,\n activeSessionId,\n sessionList,\n searchStr,\n msgEnd,\n msgLoading,\n msgList,\n setAgent,\n handleChat,\n stopChat,\n createSession,\n deleteSession,\n checkSession,\n setSearchStr,\n querySessionHistory,\n handleIsLike,\n };\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.progress-text{position:relative;margin-left:12px;font-size:12px;color:var(--palette-gray-7);line-height:22px;min-height:22px}.progress-text::before{content:\"·\";font-size:16px;position:absolute;left:-10px;top:-4px}.custom-component-wrapper .params{margin-top:6px;border-radius:3px}.custom-component-wrapper .params pre{margin:4px 0}.custom-component-wrapper .params-tip,\n .custom-component-wrapper .error-tip,\n .custom-component-wrapper .result-tip{font-size:0.875em;color:rgb(94 129 172)}.custom-component-wrapper .empty-tip{font-size:12px;color:var(--palette-gray-7)}.custom-component-wrapper .table-wrapper .table-container{position:relative;box-sizing:border-box;margin:0;padding:0;font-size:14px;clear:both;max-width:100%;overflow:hidden}.custom-component-wrapper .table-wrapper .table-container .table-content{overflow-x:auto}.custom-component-wrapper .table-wrapper .table-container .table-content table{margin:4px 0}.custom-component-wrapper .table-wrapper .table-container .table-content table tr td{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.custom-component-wrapper .table-wrapper .open-more{margin-top:4px;font-size:12px;display:flex;justify-content:end}.custom-component-wrapper .chart-wrapper{background:#fff;margin-top:12px}.default-container .default-toolbar-container{visibility:hidden;position:absolute;top:0;right:0}.default-container:hover .default-toolbar-container{visibility:visible}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ProseMirror{position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;font-variant-ligatures:none;font-feature-settings:\"liga\" 0,none}.ProseMirror pre{white-space:pre-wrap}.ProseMirror li{position:relative}.ProseMirror-hideselection *::selection{background:transparent}.ProseMirror-hideselection *::-moz-selection{background:transparent}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:\"\";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid #8cf;pointer-events:none}img.ProseMirror-separator{display:inline!important;border:none!important;margin:0!important}.ProseMirror .tableWrapper{overflow-x:auto}.ProseMirror table{border-collapse:collapse;table-layout:fixed;width:100%;overflow:hidden}.ProseMirror td,\n.ProseMirror th{vertical-align:top;box-sizing:border-box;position:relative}.ProseMirror .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;z-index:20;background-color:#adf;pointer-events:none}.ProseMirror.resize-cursor{cursor:ew-resize;cursor:col-resize}.ProseMirror .selectedCell:after{z-index:2;position:absolute;content:\"\";left:0;right:0;top:0;bottom:0;background:rgba(200,200,255,0.4);pointer-events:none}.milkdown-theme-nord blockquote{border-left-width:4px;--tw-border-opacity:1;border-color:rgb(94 129 172/var(--tw-border-opacity));padding-left:1rem;font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif;font-style:normal}.milkdown-theme-nord code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:400;--tw-text-opacity:1;color:rgb(94 129 172/var(--tw-text-opacity))}.milkdown-theme-nord pre code{color:inherit}.milkdown-theme-nord img{margin-top:0!important;margin-bottom:0!important;display:inline-block;max-width:100%}.milkdown-theme-nord.prose\n :where(blockquote):not(:where([class~=\"not-prose\"] *)){font-weight:400}.milkdown-theme-nord.prose\n :where(ol > li):not(:where([class~=\"not-prose\"] *))::marker,\n.milkdown-theme-nord.prose\n :where(ul > li):not(:where([class~=\"not-prose\"] *))::marker{--tw-text-opacity:1;color:rgb(94 129 172/var(--tw-text-opacity))}.milkdown-theme-nord.prose\n :where(blockquote p:first-of-type):not(:where([class~=\"not-prose\"] *)):before,\n.milkdown-theme-nord.prose\n :where(blockquote p:first-of-type):not(:where([class~=\"not-prose\"] *)):after{content:\"\"}.milkdown-theme-nord.prose\n :where(code):not(:where([class~=\"not-prose\"] *)):before,\n.milkdown-theme-nord.prose\n :where(code):not(:where([class~=\"not-prose\"] *)):after{content:\"\"}.milkdown-theme-nord.prose .tableWrapper{position:relative;margin-bottom:0.5rem;overflow-x:auto}.milkdown-theme-nord.prose table{font-size:0.875rem;line-height:1.25rem;--tw-shadow:0 4px 6px -1px rgb(0 0 0/0.1),0 2px 4px -2px rgb(0 0 0/0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media (min-width: 640px){.milkdown-theme-nord.prose table{border-radius:0.5rem}}.milkdown-theme-nord.prose td,\n.milkdown-theme-nord.prose th{padding:0.75rem 1.5rem!important}.milkdown-theme-nord.prose tr{border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.dark .milkdown-theme-nord.prose tr{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.milkdown-theme-nord.prose :where(td, th) p{margin:0!important}.milkdown-theme-nord.prose :where(td, th):nth-child(odd){background-color:var(--color-fill-bg-base-1)}.dark .milkdown-theme-nord.prose :where(td, th):nth-child(odd){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.milkdown-theme-nord.prose.ProseMirror .selectedCell:after{background-color:#88c0d04d}.milkdown-theme-nord.prose br[data-is-inline=\"true\"],\n.milkdown-theme-nord.prose br[data-is-inline=\"true\"]:after{content:\" \"}.prose{color:var(--color-normal-text)}.prose :where(p):not(:where([class~=\"not-prose\"] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=\"lead\"]):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=\"not-prose\"] *)){color:var(--color-info);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600}.prose :where(a strong):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(ol):not(:where([class~=\"not-prose\"] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=\"A\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-alpha}.prose :where(ol[type=\"a\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-alpha}.prose :where(ol[type=\"A\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-alpha}.prose :where(ol[type=\"a\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-alpha}.prose :where(ol[type=\"I\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-roman}.prose :where(ol[type=\"i\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-roman}.prose :where(ol[type=\"I\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-roman}.prose :where(ol[type=\"i\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-roman}.prose :where(ol[type=\"1\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=\"not-prose\"] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol > li):not(:where([class~=\"not-prose\"] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul > li):not(:where([class~=\"not-prose\"] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~=\"not-prose\"] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=\"not-prose\"] *)){font-weight:500;font-style:italic;color:var(--color-auxiliary-text);border-left-width:0.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:\"\\\\201C\" \"\\\\201D\" \"\\\\2018\" \"\\\\2019\";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose\n :where(blockquote p:first-of-type):not(\n :where([class~=\"not-prose\"] *)\n )::before{content:open-quote}.prose\n :where(blockquote p:last-of-type):not(:where([class~=\"not-prose\"] *))::after{content:close-quote}.prose :where(h1):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:0.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=\"not-prose\"] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=\"not-prose\"] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:0.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=\"not-prose\"] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600;margin-top:1.5em;margin-bottom:0.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=\"not-prose\"] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=\"not-prose\"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure > *):not(:where([class~=\"not-prose\"] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-captions);font-size:0.875em;line-height:1.4285714;margin-top:0.8571429em}.prose :where(code):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-code);font-weight:600;font-size:0.875em}.prose :where(code):not(:where([class~=\"not-prose\"] *))::before{content:\"\\`\"}.prose :where(code):not(:where([class~=\"not-prose\"] *))::after{content:\"\\`\"}.prose :where(a code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(h1 code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(h2 code):not(:where([class~=\"not-prose\"] *)){color:inherit;font-size:0.875em}.prose :where(h3 code):not(:where([class~=\"not-prose\"] *)){color:inherit;font-size:0.9em}.prose :where(h4 code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(thead th code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(pre):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:0.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:0.375rem;padding-top:0.8571429em;padding-right:1.1428571em;padding-bottom:0.8571429em;padding-left:1.1428571em}.prose :where(pre code):not(:where([class~=\"not-prose\"] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=\"not-prose\"] *))::before{content:none}.prose :where(pre code):not(:where([class~=\"not-prose\"] *))::after{content:none}.prose :where(table):not(:where([class~=\"not-prose\"] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:0.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=\"not-prose\"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600;vertical-align:bottom;padding-right:0.5714286em;padding-bottom:0.5714286em;padding-left:0.5714286em}.prose :where(tbody tr):not(:where([class~=\"not-prose\"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=\"not-prose\"] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=\"not-prose\"] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=\"not-prose\"] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=\"not-prose\"] *)){vertical-align:top}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgb(0 0 0/50%);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(video):not(:where([class~=\"not-prose\"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~=\"not-prose\"] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=\"not-prose\"] *)){margin-top:0.5em;margin-bottom:0.5em}.prose :where(ol > li):not(:where([class~=\"not-prose\"] *)){padding-left:0.375em}.prose :where(ul > li):not(:where([class~=\"not-prose\"] *)){padding-left:0.375em}.prose :where(.prose > ul > li p):not(:where([class~=\"not-prose\"] *)){margin-top:0.75em;margin-bottom:0.75em}.prose\n :where(.prose > ul > li > *:first-child):not(:where([class~=\"not-prose\"] *)){margin-top:1.25em}.prose\n :where(.prose > ul > li > *:last-child):not(:where([class~=\"not-prose\"] *)){margin-bottom:1.25em}.prose\n :where(.prose > ol > li > *:first-child):not(:where([class~=\"not-prose\"] *)){margin-top:1.25em}.prose\n :where(.prose > ol > li > *:last-child):not(:where([class~=\"not-prose\"] *)){margin-bottom:1.25em}.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\"not-prose\"] *)){margin-top:0.75em;margin-bottom:0.75em}.prose :where(hr + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(h2 + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(h3 + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(h4 + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=\"not-prose\"] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=\"not-prose\"] *)){padding-right:0}.prose :where(tbody td, tfoot td):not(:where([class~=\"not-prose\"] *)){padding-top:0.5714286em;padding-right:0.5714286em;padding-bottom:0.5714286em;padding-left:0.5714286em}.prose\n :where(tbody td:first-child, tfoot td:first-child):not(\n :where([class~=\"not-prose\"] *)\n ){padding-left:0}.prose\n :where(tbody td:last-child, tfoot td:last-child):not(\n :where([class~=\"not-prose\"] *)\n ){padding-right:0}.prose :where(.prose > :first-child):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(.prose > :last-child):not(:where([class~=\"not-prose\"] *)){margin-bottom:0}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.isolate{isolation:isolate}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.\\\\!table{display:table!important}.table{display:table}.inline-table{display:inline-table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row-group{display:table-row-group}.table-row{display:table-row}.flow-root{display:flow-root}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.flex-shrink{flex-shrink:1}.shrink{flex-shrink:1}.flex-grow{flex-grow:1}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.\\\\!transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.break-all{word-break:break-all}.rounded{border-radius:0.25rem}.border{border-width:1px}.text-justify{text-align:justify}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.lining-nums{--tw-numeric-figure:lining-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.overline{-webkit-text-decoration-line:overline;text-decoration-line:overline}.line-through{-webkit-text-decoration-line:line-through;text-decoration-line:line-through}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia:sepia(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-duration:150ms}.ease-in{transition-timing-function:cubic-bezier(0.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(0.4,0,0.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,0.2,1)}.milkdown{border-radius:0.25rem;margin:0;padding:0}.editor{margin-left:auto;margin-right:auto}:is(.dark .dark\\\\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}code[class*=\"language-\"],\npre[class*=\"language-\"]{color:#f8f8f2;background:none;font-family:\"Fira Code\",Consolas,Monaco,\"Andale Mono\",\"Ubuntu Mono\",monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=\"language-\"]{padding:1em;margin:0.5em 0;overflow:auto;border-radius:0.3em}:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"]{background:#2e3440}:not(pre) > code[class*=\"language-\"]{padding:0.1em;border-radius:0.3em;white-space:normal}.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata{color:#636f88}.token.punctuation{color:#81a1c1}.namespace{opacity:0.7}.token.property,\n.token.tag,\n.token.constant,\n.token.symbol,\n.token.deleted{color:#81a1c1}.token.number{color:#b48ead}.token.boolean{color:#81a1c1}.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted{color:#a3be8c}.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string,\n.token.variable{color:#81a1c1}.token.atrule,\n.token.attr-value,\n.token.function,\n.token.class-name{color:#88c0d0}.token.keyword{color:#81a1c1}.token.regex,\n.token.important{color:#ebcb8b}.token.important,\n.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.quick-answer-wrapper{margin-top:20px;border-radius:6px;border:1px solid var(--color-border-divider-line);padding:16px 24px}.quick-answer-wrapper .tip{font-size:18px;margin-bottom:30px}.quick-answer-wrapper .quick-answer-list{display:grid;grid-gap:24px 16px;gap:24px 16px;border-radius:3px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item{position:relative;padding:16px;border-radius:6px;cursor:pointer;display:flex;padding:10px 20px;gap:12px;width:auto;box-sizing:border-box}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item:hover{box-shadow:var(--quick-answer-card-item-hover)}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .left .icon{font-size:20px;color:#fff;padding:8px;border-radius:6px;margin-top:4px}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content{flex:1;min-width:0}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content .title{font-size:16px;font-weight:bold;color:var(--color-normal-text);text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content .description{color:var(--color-auxiliary-text);font-size:12px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.quick-answer-wrapper .show-more-wrapper{text-align:center;margin-top:20px}.quick-answer-wrapper .show-more-wrapper .show-more-btn{line-height:24px}.quick-answer-wrapper .show-more-wrapper .show-more-btn::after,\n .quick-answer-wrapper .show-more-wrapper .show-more-btn::before{content:\"- - - - -\";color:var(--color-text-divider-line);position:absolute}.quick-answer-wrapper .show-more-wrapper .show-more-btn::before{margin-left:-60px}.quick-answer-wrapper .show-more-wrapper .show-more-btn::after{margin-left:10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../assets/loading.gif\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.message-list-loading-wrapper{width:140px;height:140px;background-repeat:no-repeat;margin:auto;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.chart-item-loading-wrapper{display:flex;padding:10px;font-size:40px;align-items:center;justify-content:center;color:#d2d3d4;border-radius:6px}.chart-item-loading-wrapper .load{display:inline-block;position:relative;width:64px;height:64px}.chart-item-loading-wrapper .load div{position:absolute;top:27px;width:11px;height:11px;border-radius:50%;background:#aaa8a8;animation-timing-function:cubic-bezier(0,1,1,0)}.chart-item-loading-wrapper .load div:nth-child(1){left:6px;animation:load1 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(2){left:6px;animation:load2 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(3){left:26px;animation:load2 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(4){left:45px;animation:load3 0.6s infinite}@keyframes load1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes load2{0%{transform:translate(0,0)}100%{transform:translate(19px,0)}}@keyframes load3{0%{transform:scale(1)}100%{transform:scale(0)}}.common-loading-wrapper{text-align:center;font-size:30px;color:#ddd}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--message-box-bg:#f1f3f4;--search-input-icon-hover:#ddd;--quick-answer-card-item-hover:0px 7px 8px 0px rgba(0,0,0,0.15)}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--message-box-bg:rgba(255,255,255,0.16);--search-input-icon-hover:#383838;--quick-answer-card-item-hover:0px 7px 8px 0px rgba(0,0,0,0.24)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./styles.shadow.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./components/loading.shadow.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_2___ from \"-!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./components/MessageItem/Markdown/markdown.shadow.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_3___ from \"-!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./components/QuickAnswerList/quickAnswerList.shadow.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_4___ from \"-!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./components/MessageItem/Markdown/CodeBlock/CodeBlock.shadow.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_2___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_3___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_4___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./assets/user.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"./assets/robot.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;height:100%}:host([hidden]){display:none}@media only screen and (min-width: 1920px){.chat-view-container .chat-view-content .chat-view .message-list{width:1556px}.chat-view-container .chat-view-content .search-input-box{width:1556px}}@media only screen and (min-width: 1440px) and (max-width: 1920px){.chat-view-container .chat-view-content .chat-view .message-list{width:1156px}.chat-view-container .chat-view-content .search-input-box{width:1156px}}@media only screen and (min-width: 804px) and (max-width: 1440px){.chat-view-container .chat-view-content .chat-view .message-list{width:804px}.chat-view-container .chat-view-content .search-input-box{width:804px}}@media only screen and (max-width: 804px){.chat-view-container .chat-view-content .chat-view .message-list{width:100%}.chat-view-container .chat-view-content .search-input-box{width:100%}}.chat-view-container{display:flex;flex-direction:row;width:100%;height:100%}.chat-view-selector{width:200px;padding:14px;border-right:1px solid var(--color-border-divider-line)}.chat-view-content{flex:1;display:flex;flex-direction:column;width:100%;gap:8px}.chat-view-content .chat-view-toolbar{background:#e0e4e5;padding:18px;display:flex;justify-content:space-between;align-items:center}.chat-view-content .chat-view-toolbar .username{color:#333333;font-weight:500;line-height:22px;font-size:16px}.chat-view-content .chat-view{max-width:100%;position:relative;display:flex;flex:1;flex-direction:column;box-sizing:border-box;overflow-y:auto}.session-list-wrapper{display:flex;flex-direction:column;height:100%}.session-list-wrapper .session-title{font-size:16px;color:var(--color-header-text);margin-bottom:16px}.session-list-wrapper .session-list{overflow-y:auto}.session-list-wrapper .session-list .session-item{display:flex;justify-content:space-between;cursor:pointer;border-radius:var(--small-border-radius);background-color:var(--third-menu-default-bg);padding:6px 16px;color:var(--color-header-text);margin-top:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-list-wrapper .session-list .session-item .content{width:0;flex:1}.session-list-wrapper .session-list .session-item .content .title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-list-wrapper .session-list .session-item:hover .session-close-btn eo-icon{display:block}.session-list-wrapper .session-list .session-item:first-child{margin-top:0px}.session-list-wrapper .session-list .session-item.active{background-color:var(--third-menu-item-selected-bg);color:var(--color-brand)}.session-list-wrapper .session-list .session-item:hover,\n .session-list-wrapper .session-list .session-item.active:hover{color:var(--color-header-text);background-color:var(--third-menu-item-hover-bg)}.session-list-wrapper .session-list .session-item .session-close-btn{display:flex;align-items:center;cursor:pointer;font-size:12px}.session-list-wrapper .session-list .session-item .session-close-btn:hover{color:var(--color-error)}.session-list-wrapper .session-list .session-item .session-close-btn eo-icon{display:none}.message-list{display:flex;flex-direction:column;padding-bottom:30px;padding:12px;flex:1;margin:0 auto;max-width:100%;box-sizing:border-box}.message-list .message-list-box{display:flex;flex-direction:column;position:relative;gap:36px}.message-list .message-list-box .message-item{display:flex;gap:8px;padding-right:40px}.message-list .message-list-box .message-item.user{flex-direction:row-reverse;padding:0;padding-left:40px}.message-list .message-list-box .message-item.user .message-box{margin-bottom:0;overflow:hidden}.message-list .message-list-box .message-item.user .message-box .message-top{flex-direction:row-reverse}.message-list .message-list-box .message-item.user .message-box .message-content{justify-content:end}.message-list .message-list-box .message-item.user .message-box .message-content .wrapper{display:flex;flex-direction:row-reverse}.message-list .message-list-box .message-item.user .message-box .message-content .wrapper .content{background-color:#606f7c;color:#fff}.message-list .message-list-box .message-item.user .message-box .message-content .wrapper .content .ProseMirror.prose{color:#fff}.message-list .message-list-box .message-item.user .message-box .message-content .wrapper:hover .content-tip{display:block}.message-list .message-list-box .message-item.user .message-box .message-content .wrapper .content-tip{display:none}.message-list .message-list-box .message-item.user .message-box .message-content .wrapper .content-tip eo-icon{padding:4px;color:#606f7c;cursor:pointer}.message-list .message-list-box .message-item .avatar{width:36px;height:36px;margin-top:32px;border-radius:50%;font-size:20px;display:flex;align-items:center;justify-content:center}.message-list .message-list-box .message-item .avatar.user{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.message-list .message-list-box .message-item .avatar.robot{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___})}.message-list .message-list-box .message-item .message-box{position:relative;flex:1;overflow:hidden}.message-list .message-list-box .message-item .message-box .message-content{display:flex;justify-content:start;position:relative}.message-list .message-list-box .message-item .message-box .message-content .wrapper{position:relative;overflow:hidden}.message-list .message-list-box .message-item .message-box .message-content .wrapper .content{position:relative;padding:14px;border-radius:6px;overflow:hidden;background:var(--message-box-bg)}.message-list .message-list-box .message-item .message-box .message-content .wrapper .content .text-item{white-space:pre-wrap}.message-list .message-list-box .message-item .message-box .message-content .wrapper .message-toolbar{display:flex;gap:12px;justify-content:end;margin-top:4px}.message-list .message-list-box .message-item .message-box .message-content .wrapper .message-toolbar eo-icon{cursor:pointer;color:#606f7c}.message-list .message-list-box .message-item .message-box .message-content .wrapper .message-toolbar eo-icon.active{color:var(--color-brand)}.message-list .message-list-box .message-item .message-box .message-content .wrapper .message-toolbar .split{width:1px;height:16px;background-color:#d9d9d9;margin-bottom:1px}.message-list .message-list-box .message-item .message-box .message-top{display:flex;margin-bottom:4px;color:#bec8ce;gap:8px}.message-list .message-list-box .message-item .message-box .message-top .time{min-height:22px}.message-list .message-list-box .stop-responding-wrapper{position:absolute;left:44px;bottom:-28px}.search-input-box{display:flex;flex-direction:column;height:75px;padding:12px;position:relative;margin:0 auto;max-width:100%;box-sizing:border-box}.search-input-box .mentions-list-wrapper{position:absolute;bottom:100%;left:12px;right:12px}.search-input-box .mentions-list-wrapper .content{background-color:var(--antd-input-bg);border-radius:6px;border:1px solid var(--palette-gray-4);padding:8px}.search-input-box .mentions-list-wrapper .content .mentions-title{font-size:14px;font-weight:bold;color:var(--color-strong-text);padding-bottom:8px}.search-input-box .mentions-list-wrapper .content .mentions-list{display:flex;flex-direction:column;gap:8px;max-height:300px;overflow-y:auto}.search-input-box .mentions-list-wrapper .content .mentions-list .mentions-item{display:flex;flex-direction:row;align-items:center;gap:12px;padding:8px;border-radius:6px;cursor:pointer}.search-input-box .mentions-list-wrapper .content .mentions-list .mentions-item .icon{font-size:18px;padding:8px;border-radius:50%}.search-input-box .mentions-list-wrapper .content .mentions-list .mentions-item .name{color:var(--color-normal-text)}.search-input-box .mentions-list-wrapper .content .mentions-list .mentions-item .description{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--color-disabled-text)}.search-input-box .mentions-list-wrapper .content .mentions-list .mentions-item:hover,\n .search-input-box .mentions-list-wrapper .content .mentions-list .mentions-item.active{background:var(--palette-gray-3)}.search-input-box.fill-content{border-top:1px solid rgba(197,197,197,0.5)}.search-input-box .input-box{position:absolute;bottom:20px;left:12px;right:12px;display:inline-flex;padding:var(--input-affix-wrapper-padding);border-radius:var(--small-border-radius);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;color:var(--text-color-default);background-color:var(--antd-input-bg);border:1px solid var(--color-border-divider-line);transition:border-color 0.3s;overflow:visible}.search-input-box .input-box.active{border-color:var(--antd-input-focus-border-color)}.search-input-box .input-box.disabled{pointer-events:none;background:var(--input-outline-disabled);cursor:not-allowed}.search-input-box .input-box.expand textarea{padding-right:50px;margin-bottom:50px}.search-input-box .input-box textarea{width:100%;height:22px;font-size:18px;resize:none;padding:10px 50px 10px 10px;outline:none;border:none;line-height:20px;color:var(--color-normal-text);background-color:transparent;cursor:inherit;transition:all 300ms ease-out;box-sizing:content-box}.search-input-box .input-box textarea::placeholder{color:#b0b1b8}.search-input-box .input-box .suffix-icon{display:flex;align-items:center;gap:8px;position:absolute;right:12px;bottom:6px}.search-input-box .input-box .suffix-icon eo-tooltip{display:flex}.search-input-box .input-box .suffix-icon eo-icon{font-size:20px;cursor:pointer;padding:6px;border-radius:3px}.search-input-box .input-box .suffix-icon eo-icon:not(.disabled):hover{background:var(--search-input-icon-hover)}.search-input-box .input-box .suffix-icon .submit-split{width:1px;height:20px;background:#d1d1d1}.search-input-box .input-box .suffix-icon .submit-btn.active{color:var(--color-brand)}.search-input-box .input-box .suffix-icon .submit-btn.disabled{color:var(--color-disabled-text);cursor:not-allowed}.search-input-box .input-box .toolbar-icon{position:absolute;top:12px;right:14px}.search-input-box .input-box .toolbar-icon eo-icon{font-size:20px;cursor:pointer;padding:6px;border-radius:3px}.search-input-box .input-box .toolbar-icon eo-icon:hover{background:var(--search-input-icon-hover)}.search-input-box .search-input-toolbar{display:flex;justify-content:end;position:absolute;right:12px;bottom:0px}.search-input-box .search-input-toolbar .input-tip{font-size:12px;color:var(--color-secondary-text)}.message-start-tip,\n.session-end-tip{color:var(--color-disabled-text);font-size:12px;text-align:center;margin-top:12px;position:relative}.message-start-tip::after,\n .session-end-tip::after,\n .message-start-tip::before,\n .session-end-tip::before{content:\"- - -\";color:var(--color-disabled-text);position:absolute}.message-start-tip::before, .session-end-tip::before{margin-left:-35px}.message-start-tip::after, .session-end-tip::after{margin-left:10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./index.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./index.css\";\n export default content && content.locals ? content.locals : undefined;\n"],"names":["ChatViewContext","createContext","useChatViewContext","useContext","WrappedIcon","wrapBrick","MessageListLoading","React","className","ChatItemLoading","CommonLoading","icon","lib","spinning","Avatar","_ref","role","agentId","isUser","useMemo","quickAnswerConfig","agentList","_quickAnswerConfig$li","list","matchAgent","find","item","id","_extends","style","color","concat","background","WrappedLink","GuideItem","text","prompts","map","index","key","ProgressText","renderText","replace","MsgItemContext","CustomComponent","_ref2","language","commandBricks","chatting","conversationId","taskId","parseData","isError","cahceTextRef","useRef","isEnd","setIsEnd","useState","setIsError","setParseData","useEffect","current","data","JSON","parse","_unused","match","useData","commandBrickConf","config","_objectSpread","component","ReactUseMultipleBricks","useBrick","showOriginData","copyIcon","theme","CodeBlock","setLanguage","contentRef","node","view","useNodeViewContext","messageApi","contextHolder","message","useMessage","handleCopy","_asyncToGenerator","_node$content$firstCh","content","firstChild","navigator","clipboard","writeText","success","err","console","error","apply","arguments","defaultContent","spellCheck","ref","position","Tooltip","title","arrow","onClick","cursor","renderContent","_node$firstChild","_node$firstChild2","textContent","dom","classList","contains","attrs","MarkdownItem","MilkdownProvider","ProsemirrorAdapterProvider","MarkdownDisplay","value","nodeViewFactory","useNodeViewFactory","get","useEditor","root","Editor","make","ctx","set","rootCtx","update","editorViewOptionsCtx","prev","editable","handleClickOn","pos","handleClick","url","found","state","tr","doc","nodeAt","marks","length","path","mark","m","type","name","href","startsWith","encodeURIComponent","window","open","defaultValueCtx","MutationObserver","Array","from","querySelectorAll","forEach","link","onclick","observe","childList","subtree","nord","use","prism","gfm","commonmark","$view","codeBlockSchema","_get","undefined","action","replaceAll","Milkdown","TableItem","TextItem","WrapperIcon","WrappedToolTip","copyToClipboard","unwrapProvider","showNotification","Toolbar","tag","isAssistant","isChattingItem","showLike","readonly","handleIsLike","handleLikeOrIsLike","useCallback","islike","result","_x","hoist","classNames","active","isLike","then","catch","Time","time","moment","format","ContentTip","setSearchStr","NOT_AGENT_MATCH","MessageNode","props","created","getContentNode","examplePrompts","messageNode","Provider","CARD_ITEM_HEIGHT","HEIGHT_GAP","QuickAnswerCardItem","description","starterPrompts","iconColor","_icon$color","height","handleCardClick","category","QuickAnswerList","_quickAnswerConfig$ti","msgList","loading","showMoreBtn","setShowMoreBtn","listRef","hadClickShowMoreBtn","element","observer","ResizeObserver","entries","entry","contentRect","disconnect","tip","maxHeight","overflow","instanceId","handleShowMoreClick","StopBtn","stopChat","handleStopChat","DEFAULT_OFFSET_HEIGHT","CACHE_HEIGHT","MessageList","showAvatar","chatViewRef","messgetListBoxRef","preHeight","setPreHeight","isCustomScroll","msgLoading","msgEnd","activeSessionId","checkSession","getMsgItemNode","user","msgListNode","handleScroll","messageList","scrollHeight","clientHeight","scrollTop","isBottom","debounceHandleScroll","debounce","newHeight","scroll","top","Number","MAX_SAFE_INTEGER","Math","max","onScroll","hiddenTextarea","SIZING_STYLE","LegacySearchInput","_","setValue","setActive","expand","setExpand","autoSizeStyle","setAutoSizeStyle","isFillContent","setIsFillContent","mentionOpen","setMentionOpen","matchPrefixIndex","setMatchPrefixIndex","matchAgentList","setMatchMentionList","matchMentionsIndex","setMatchMentionsIndex","mentionsRef","searchInputBoxRef","textareaRef","hadExpanded","inputEndRef","searchStr","createSession","handleChat","setAgent","hadValue","defaultSize","disabled","matchPrefixInfo","textareaElement","currentFocusIndex","selectionStart","matchWord","i","test","start","end","word","handleAgentItemSelect","valueList","split","trimName","focusIndex","splice","join","setTimeout","selectionEnd","focus","isShowMentions","mentions","slice","computedAutoSize","size","textareaStyles","uiTextNode","minRows","maxRows","document","createElement","setAttribute","body","appendChild","uiTextNodeStyle","getComputedStyle","sizingStyle","getPropertyValue","placeholder","minHeight","singleRowHeight","min","overflowY","resize","calculateAutoSizeStyle","handleChange","e","target","handleExpand","matchFirstAgent","regex","exec","agent","handleDispatchQuestion","val","_textareaRef$current","blur","handleSubmit","handleKeyDown","shiftKey","preventDefault","handleKeyUp","selectionIndex","prefixWord","lastIndexOf","indexOf","_textareaRef$current2","trim","searchInputBox","width","currentWidth","getBoundingClientRect","_textareaRef$current3","filterList","filter","includes","querySelector","scrollIntoView","block","handleDocumentClick","mentionsElemnt","composedPath","addEventListener","removeEventListener","useImperativeHandle","handleInsertQuestion","sendMsg","msg","paddingRight","onFocus","onBlur","onChange","onKeyDown","onKeyUpCapture","onCompositionStart","handleCompositionStart","onCompositionEnd","handleCompositionEnd","hanldeCreateSession","SearchInput","forwardRef","showDialog","SESSION_ITEM_HEIGHT","BUFFER_NUMBER","SessionList","sessionEnd","sessionLoading","sessionList","querySessionHistory","sessionWrapperRef","sessionListRef","limit","sessionWrapper","floor","checkSessionList","SessionItem","deleteSession","handleCheckSession","handleDeleteSession","stopPropagation","expect","_debug","WeakMap","_ctrl","_agentId","_enterInterval","_charting","_isStartEmitEvent","_emitTimer","_messageQueue","_subscribers","_conversationId","_answerLanguage","_sessionNextToken","_cacheLimit","_messageNextToken","_ChatService_brand","WeakSet","ChatService","constructor","enterInterval","debug","answerLanguage","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_classPrivateFieldSet","this","enqueue","_classPrivateFieldGet","push","_assertClassBrand","_startEmitEvent","call","dequeue","shift","getMessageQueue","subscribe","topic","callback","unsubscribe","cb","notifySubscribers","setChatItemIsLike","flag","code","http","request","getBasePath","method","stringify","setAgentId","setConversationId","getSessionHistory","_this","_classPrivateFieldGet2","conversations","next_token","_unused2","getChatHistory","_this2","_unused3","conversationIds","_unused4","splitWord","str","Intl","iterator","Segmenter","granularity","segment","Symbol","nextWord","next","done","customSplit","cache","matchStr","substring","chat","_this3","AbortController","hadMatchMessage","fetchEventSource","signal","stream","lang","input","headers","onopen","response","ok","log","onmessage","delta","_unused5","abort","onclose","onerror","stop","_classPrivateFieldGet3","clearInterval","_clear","setInterval","messageItem","NEW_SESSION_ID","useChatViewInfo","sessionId","setSessionEnd","setSessionLoading","setActiveSessionId","setLoading","setChatting","setSessionList","setMsgLoading","setMsgEnd","setMsgList","chatingText","chatingMessageItem","chatService","defaultNewSessionItem","preList","newList","unshift","output","inputTime","computedList","_ref3","ids","filterIds","deleteActiveSession","hasNewOne","_x2","_ref4","_x3","_ref5","inputMsg","_x4","_ref6","_x5","_x6","handleSessionEnd","listener","msgItem","pop","reset","finishListener","fetchEndListener","stopListener","stopMessageItem","___CSS_LOADER_EXPORT___","module","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_REPLACEMENT_1___","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_next_bricks_ai=self.webpackChunk_next_bricks_ai||[]).push([[5425],{5425:(e,t,n)=>{n.r(t);var s,a,r,i,o,h,l,u,c,d,g,v,A,p,w,y,f,k,m,I,L,S,M,C,E,b=n(918),W=n(6121),R=n(829),B=n(2740),x=n(8769),q=n.n(x),P=n(3741),N=n(6430),_=n(15),j=n(1465),O=n(2442),T=n(3830),U=n(205),{defineElement:D,property:H,method:Q}=(n(6329),n(2896),n(3262),(0,P.createDecorators)());function F(e,t){var{agentId:n,sessionId:s,showAvatar:a,showSessionList:r=!0,readonly:i=!1,showLike:o=!0,quickAnswerConfig:h,enterInterval:l,debug:u=!1,commandBricks:c,answerLanguage:d}=e,{sessionEnd:g,sessionLoading:v,activeSessionId:A,msgEnd:p,msgLoading:w,msgList:y,sessionList:f,loading:k,chatting:m,searchStr:I,setAgent:L,handleIsLike:S,handleChat:M,stopChat:C,createSession:E,deleteSession:b,checkSession:W,setSearchStr:R,querySessionHistory:B}=(0,O.F)({agentId:n,sessionId:s,enterInterval:l,debug:u,answerLanguage:d});return q().createElement(_.t.Provider,{value:{sessionEnd:g,sessionLoading:v,activeSessionId:A,sessionList:f,msgEnd:p,msgLoading:w,msgList:y,chatting:m,loading:k,searchStr:I,showLike:o,readonly:i,quickAnswerConfig:h,commandBricks:c,setAgent:L,handleIsLike:S,handleChat:M,stopChat:C,createSession:E,deleteSession:b,checkSession:W,setSearchStr:R,querySessionHistory:B}},q().createElement("div",{className:"chat-view-container"},r&&q().createElement("div",{className:"chat-view-selector"},q().createElement(T.Z,null)),q().createElement("div",{className:"chat-view-content"},q().createElement(j.M,{showAvatar:a}),!i&&q().createElement(U.D,{ref:t}))))}var J,Z=(0,x.forwardRef)(F),z=new WeakMap,G=new WeakMap,K=new WeakMap,V=new WeakMap,X=new WeakMap,Y=new WeakMap,$=new WeakMap,ee=new WeakMap,te=new WeakMap,ne=new WeakMap,se=new WeakMap,ae=new WeakMap;class re extends N.ReactNextElement{constructor(){super(...arguments),(0,b.A)(this,z,(a(this),i(this))),(0,b.A)(this,G,(o(this),h(this))),(0,b.A)(this,K,(l(this),u(this))),(0,b.A)(this,V,(c(this),d(this))),(0,b.A)(this,X,(g(this),v(this))),(0,b.A)(this,Y,(A(this),p(this))),(0,b.A)(this,$,(w(this),y(this))),(0,b.A)(this,ee,(f(this),k(this))),(0,b.A)(this,te,(m(this),I(this))),(0,b.A)(this,ne,(L(this),S(this))),(0,b.A)(this,se,(M(this),C(this))),(0,b.A)(this,ae,(E(this),q().createRef()))}get sessionId(){return(0,R.A)(z,this)}set sessionId(e){(0,W.A)(z,this,e)}get agentId(){return(0,R.A)(G,this)}set agentId(e){(0,W.A)(G,this,e)}get answerLanguage(){return(0,R.A)(K,this)}set answerLanguage(e){(0,W.A)(K,this,e)}get debug(){return(0,R.A)(V,this)}set debug(e){(0,W.A)(V,this,e)}get showAvatar(){return(0,R.A)(X,this)}set showAvatar(e){(0,W.A)(X,this,e)}get showSessionList(){return(0,R.A)(Y,this)}set showSessionList(e){(0,W.A)(Y,this,e)}get readonly(){return(0,R.A)($,this)}set readonly(e){(0,W.A)($,this,e)}get showLike(){return(0,R.A)(ee,this)}set showLike(e){(0,W.A)(ee,this,e)}get enterInterval(){return(0,R.A)(te,this)}set enterInterval(e){(0,W.A)(te,this,e)}get quickAnswerConfig(){return(0,R.A)(ne,this)}set quickAnswerConfig(e){(0,W.A)(ne,this,e)}get commandBricks(){return(0,R.A)(se,this)}set commandBricks(e){(0,W.A)(se,this,e)}insertQuestion(e){var t,{value:n}=e;n&&(null===(t=(0,R.A)(ae,this).current)||void 0===t||t.handleInsertQuestion(n))}sendMsg(e){var t;null===(t=(0,R.A)(ae,this).current)||void 0===t||t.sendMsg(e)}render(){return q().createElement(Z,{agentId:this.agentId,debug:this.debug,sessionId:this.sessionId,readonly:this.readonly,showAvatar:this.showAvatar,showSessionList:this.showSessionList,showLike:this.showLike,quickAnswerConfig:this.quickAnswerConfig,enterInterval:this.enterInterval,commandBricks:this.commandBricks,answerLanguage:this.answerLanguage,ref:(0,R.A)(ae,this)})}}s=re,({e:[i,o,h,l,u,c,d,g,v,A,p,w,y,f,k,m,I,L,S,M,C,E,a],c:[J,r]}=(0,B.A)(s,[D("ai.chat-view",{shadowOptions:!1})],[[H(),1,"sessionId"],[H(),1,"agentId"],[H(),1,"answerLanguage"],[H({type:Boolean}),1,"debug"],[H({type:Boolean}),1,"showAvatar"],[H({type:Boolean}),1,"showSessionList"],[H({type:Boolean}),1,"readonly"],[H({type:Boolean}),1,"showLike"],[H({type:Number}),1,"enterInterval"],[H({attribute:!1}),1,"quickAnswerConfig"],[H({attribute:!1}),1,"commandBricks"],[Q(),2,"insertQuestion"],[Q(),2,"sendMsg"]],0,void 0,N.ReactNextElement)),r();var ie=n(6330),oe=n(9740),he=n(4635),le=n(6902),ue=n(2559);function ce(e,t,n){return n((0,ue.A)(e,t))}var de,ge,ve,Ae,pe,we,ye,fe,ke,me,Ie,Le,Se,Me,Ce,Ee,be,We,Re,Be,xe=n(1148),qe=n(9974),Pe=n(7408),Ne=n(356),{defineElement:_e,property:je,event:Oe,method:Te}=(0,P.createDecorators)(),Ue=(0,x.forwardRef)(Ye),De=new WeakMap,He=new WeakMap,Qe=new WeakMap,Fe=new WeakSet,Je=new WeakMap,Ze=new WeakMap,ze=new WeakMap,Ge=new WeakMap,Ke=new WeakMap,Ve=new WeakMap;class Xe extends N.ReactNextElement{constructor(){super(...arguments),(0,he.A)(this,Fe),(0,b.A)(this,De,(ge(this),Ae(this))),(0,b.A)(this,He,(pe(this),we(this))),(0,b.A)(this,Qe,(ye(this),fe(this))),(0,b.A)(this,Je,(Ie(this),e=>{ce(Fe,this,ke).emit(e)})),(0,b.A)(this,Ze,Le(this)),(0,b.A)(this,ze,(Ce(this),e=>{ce(Fe,this,Se).emit(e)})),(0,b.A)(this,Ge,Ee(this)),(0,b.A)(this,Ke,(Re(this),e=>{ce(Fe,this,be).emit(e)})),(0,b.A)(this,Ve,(0,x.createRef)())}get agentId(){return(0,R.A)(De,this)}set agentId(e){(0,W.A)(De,this,e)}get conversationId(){return(0,R.A)(He,this)}set conversationId(e){(0,W.A)(He,this,e)}postMessage(e){var t;return null===(t=(0,R.A)(Ve,this).current)||void 0===t?void 0:t.postMessage(e)}sendRequest(e,t,n){var s;return null===(s=(0,R.A)(Ve,this).current)||void 0===s?void 0:s.sendRequest(e,t,n)}newConversation(){var e;null===(e=(0,R.A)(Ve,this).current)||void 0===e||e.newConversation()}render(){return q().createElement(Ue,{ref:(0,R.A)(Ve,this),agentId:this.agentId,conversationId:this.conversationId,onMessagesUpdate:(0,R.A)(Je,this),onBusyChange:(0,R.A)(ze,this),onConversationIdChange:(0,R.A)(Ke,this)})}}function Ye(e,t){var{agentId:n,conversationId:s,onMessageChunkPush:a,onMessagesUpdate:r,onBusyChange:i,onConversationIdChange:o}=e,h=(0,x.useRef)(!1),l=(0,x.useRef)(1),u=(0,x.useRef)(!1),[c,d]=(0,x.useState)(null);(0,x.useEffect)((()=>{d(null!=s?s:null)}),[s]),(0,x.useEffect)((()=>{h.current&&(null==o||o(c))}),[c,o]);var g=(0,x.useRef)(0),v=(0,x.useCallback)((()=>g.current++),[]),[A,p]=(0,x.useState)([]),w=(0,x.useCallback)((e=>{null==a||a(e),p((t=>{var n=t[t.length-1];return n&&n.key===e.key?(n.content+=e.delta.content,[...t]):(null!=n&&n.partial&&(n.partial=!1),[...t,(0,oe.A)((0,oe.A)({},e.delta),{},{key:e.key,partial:e.partial})])}))}),[a]),y=(0,x.useCallback)(function(){var e=(0,ie.A)((function*(e,t,n){if(u.current)return null;var s,a=l.current,r=function(){var e=(0,ie.A)((function*(){if(a!==l.current)throw s||(s=new Error("New conversation started")),s}));return function(){return e.apply(this,arguments)}}(),o=v(),h=v(),g=c;null==i||i(u.current=!0);try{null==w||w({key:o,delta:{content:e,role:"user"}});var A=(0,Pe.createSSEStream)(new URL(t,"".concat(location.origin).concat((0,qe.getBasePath)())).toString(),n);yield Promise.race([A,new Promise((e=>setTimeout(e,1e3)))]),yield r(),null==w||w({key:h,delta:{content:"",role:"assistant"},partial:!0});var y,f=yield A,k=!1,m=!1;try{for(var I,L=(0,xe.A)(f);k=!(I=yield L.next()).done;k=!1){var S=I.value;yield r(),null==w||w({delta:S.delta,key:h,partial:!0}),S.conversationId&&!g&&d(g=S.conversationId)}}catch(e){m=!0,y=e}finally{try{k&&null!=L.return&&(yield L.return())}finally{if(m)throw y}}yield r(),p((e=>{var t=e[e.length-1];return null!=t&&t.partial&&(t.partial=!1),[...e]}))}catch(e){if(e&&e===s)throw e;console.error("stream failed:",e),yield r(),p((e=>{var t=e[e.length-1],n=e;return(null==t?void 0:t.key)===h&&(t.content?(t.partial=!1,t.failed=!0):n=e.slice(0,-1)),[...n,{role:"assistant",content:"系统错误",key:v(),failed:!0}]}))}return yield r(),null==i||i(u.current=!1),g}));return function(t,n,s){return e.apply(this,arguments)}}(),[c,v,i,w]);return(0,x.useImperativeHandle)(t,(()=>({sendRequest:y,postMessage:e=>y(e,"api/gateway/easyops.api.aiops_chat.manage.LLMChatProxy@1.0.0/api/aiops_chat/v1/chat/completions",{method:"POST",body:JSON.stringify({agentId:n,input:e,stream:!0,conversationId:c}),headers:{"giraffe-contract-name":"easyops.api.aiops_chat.manage.LLMChatProxy"}}),newConversation(){l.current++,d(null),p((e=>0===e.length?e:[])),u.current&&(null==i||i(u.current=!1))}})),[n,c,i,y]),(0,x.useEffect)((()=>{h.current&&(null==r||r(A))}),[A,r]),(0,x.useEffect)((()=>{h.current=!0}),[]),null}de=Xe,({e:[Ae,pe,we,ye,fe,ke,me,Ie,Le,Se,Me,Ce,Ee,be,We,Re,ge],c:[Be,ve]}=(0,B.A)(de,[_e("ai.chat-agent",{styleTexts:[Ne.A]})],[[je(),1,"agentId"],[je(),1,"conversationId"],[Te(),2,"postMessage"],[Te(),2,"sendRequest"],[Te(),2,"newConversation"],[Oe({type:"messages.update"}),1,"messagesUpdate",e=>(0,R.A)(Qe,e),(e,t)=>(0,W.A)(Qe,e,t)],[Oe({type:"busy.change"}),1,"busyChangeEvent",e=>(0,R.A)(Ze,e),(e,t)=>(0,W.A)(Ze,e,t)],[Oe({type:"conversationId.change"}),1,"conversationIdChangeEvent",e=>(0,R.A)(Ge,e),(e,t)=>(0,W.A)(Ge,e,t)]],0,(e=>Ve.has((0,le.A)(e))),N.ReactNextElement)),ve()},356:(e,t,n)=>{n.d(t,{A:()=>o});var s=n(6758),a=n.n(s),r=n(935),i=n.n(r)()(a());i.push([e.id,":host{display:none}",""]);const o=i.toString()},1148:(e,t,n)=>{function s(e){var t,n,s,r=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,s=Symbol.iterator);r--;){if(n&&null!=(t=e[n]))return t.call(e);if(s&&null!=(t=e[s]))return new a(t.call(e));n="@@asyncIterator",s="@@iterator"}throw new TypeError("Object is not async iterable")}function a(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return a=function(e){this.s=e,this.n=e.next},a.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new a(e)}n.d(t,{A:()=>s})}}]);
2
+ //# sourceMappingURL=5425.c77a852e.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/5425.c77a852e.js","mappings":"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","sources":["webpack:///./src/chat-view/index.tsx","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js","webpack:///./src/chat-agent/index.tsx","webpack:///./src/chat-agent/styles.shadow.css","webpack:///../../node_modules/@babel/runtime/helpers/esm/asyncIterator.js"],"sourcesContent":["import React, { forwardRef } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { ChatViewContext, QuickAnswerConfig } from \"./ChatViewContext.js\";\nimport { MessageList } from \"./components/MessageList.js\";\nimport { useChatViewInfo } from \"./hooks/useChatViewInfo.js\";\nimport { SessionList } from \"./components/SessionList.js\";\nimport { SearchInput, SearchInputRef } from \"./components/SearchInput.js\";\nimport \"@next-core/theme\";\nimport \"./host-context.css\";\nimport \"./index.css\";\nimport { commandBrickConf } from \"./ChatViewContext\";\nimport { ChatBody } from \"./ChatService.js\";\n\nconst { defineElement, property, method } = createDecorators();\n\nexport interface ChatViewProps {\n agentId: string;\n sessionId?: string;\n readonly?: boolean;\n showAvatar?: boolean;\n showSessionList?: boolean;\n showLike?: boolean;\n quickAnswerConfig?: QuickAnswerConfig;\n enterInterval?: number;\n debug?: boolean;\n commandBricks?: commandBrickConf;\n answerLanguage?: string;\n}\n\nexport function LegacyChatViewComponent(\n {\n agentId,\n sessionId,\n showAvatar,\n showSessionList = true,\n readonly = false,\n showLike = true,\n quickAnswerConfig,\n enterInterval,\n debug = false,\n commandBricks,\n answerLanguage,\n }: ChatViewProps,\n ref: React.Ref<SearchInputRef>\n) {\n const {\n sessionEnd,\n sessionLoading,\n activeSessionId,\n msgEnd,\n msgLoading,\n msgList,\n sessionList,\n loading,\n chatting,\n searchStr,\n setAgent,\n handleIsLike,\n handleChat,\n stopChat,\n createSession,\n deleteSession,\n checkSession,\n setSearchStr,\n querySessionHistory,\n } = useChatViewInfo({\n agentId,\n sessionId,\n enterInterval,\n debug,\n answerLanguage,\n });\n return (\n <ChatViewContext.Provider\n value={{\n sessionEnd,\n sessionLoading,\n activeSessionId,\n sessionList,\n msgEnd,\n msgLoading,\n msgList,\n chatting,\n loading,\n searchStr,\n showLike,\n readonly,\n quickAnswerConfig,\n commandBricks,\n setAgent,\n handleIsLike,\n handleChat,\n stopChat,\n createSession,\n deleteSession,\n checkSession,\n setSearchStr,\n querySessionHistory,\n }}\n >\n <div className=\"chat-view-container\">\n {showSessionList && (\n <div className=\"chat-view-selector\">\n <SessionList />\n </div>\n )}\n <div className=\"chat-view-content\">\n <MessageList showAvatar={showAvatar} />\n {!readonly && <SearchInput ref={ref} />}\n </div>\n </div>\n </ChatViewContext.Provider>\n );\n}\n\nexport const ChatViewComponent = forwardRef(LegacyChatViewComponent);\n\n/**\n * AI 对话终端\n */\nexport\n@defineElement(\"ai.chat-view\", {\n // shadow 模式下,会导致 useBrick 样式丢失\n // 如:commandBricks 配置 cmdb-instances.instance-list\n shadowOptions: false,\n})\nclass ChatView extends ReactNextElement {\n @property()\n accessor sessionId: string | undefined;\n\n /**\n * 智能体id\n */\n @property()\n accessor agentId!: string;\n\n /**\n * 指定智能体回答代码时所使用的语言\n */\n @property()\n accessor answerLanguage: string | undefined;\n\n /**\n * 是否为debug模式\n */\n @property({\n type: Boolean,\n })\n accessor debug: boolean | undefined;\n\n /**\n * 是否展示对话用户头像\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showAvatar: boolean | undefined;\n\n /**\n * 是否展示历史会话信息\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showSessionList: boolean | undefined;\n\n /**\n * 只读模式\n */\n @property({\n type: Boolean,\n })\n accessor readonly: boolean | undefined;\n\n /**\n * 是否展示点赞能力\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showLike: boolean | undefined;\n\n /**\n * 输入间隔\n * @default 50\n */\n @property({\n type: Number,\n })\n accessor enterInterval: number | undefined;\n\n /**\n * 快速入口列表\n */\n @property({\n attribute: false,\n })\n accessor quickAnswerConfig: QuickAnswerConfig | undefined;\n\n /**\n * 自定义语言配置\n */\n @property({\n attribute: false,\n })\n accessor commandBricks: commandBrickConf | undefined;\n\n #ref = React.createRef<SearchInputRef>();\n\n /**\n *\n * @description 调用方法进行提问\n */\n @method()\n insertQuestion(args: { value: string }): void {\n const { value } = args;\n if (!value) return;\n this.#ref.current?.handleInsertQuestion(value);\n }\n\n /**\n * @description 外部提问\n */\n @method()\n sendMsg(msg: string | ChatBody): void {\n this.#ref.current?.sendMsg(msg);\n }\n\n render() {\n return (\n <ChatViewComponent\n agentId={this.agentId}\n debug={this.debug}\n sessionId={this.sessionId}\n readonly={this.readonly}\n showAvatar={this.showAvatar}\n showSessionList={this.showSessionList}\n showLike={this.showLike}\n quickAnswerConfig={this.quickAnswerConfig}\n enterInterval={this.enterInterval}\n commandBricks={this.commandBricks}\n answerLanguage={this.answerLanguage}\n ref={this.#ref}\n />\n );\n }\n}\n","import assertClassBrand from \"./assertClassBrand.js\";\nexport default function _classPrivateGetter(s, r, a) {\n return a(assertClassBrand(s, r));\n}","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport { createSSEStream, type Options } from \"@next-core/utils/general\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface ChatAgentProps {\n agentId?: string;\n conversationId?: string;\n}\n\nexport interface Message extends BaseMessage {\n key: number;\n partial?: boolean;\n failed?: boolean;\n}\n\nexport interface BaseMessage {\n role: \"user\" | \"assistant\";\n content: string;\n}\n\nexport interface MessageChunk {\n delta: BaseMessage;\n conversationId?: string;\n key: number;\n partial?: boolean;\n}\n\nexport const ChatAgentComponent = forwardRef(LegacyChatAgentComponent);\n\n/**\n * 用于与 AI 机器人进行对话的代理构件,处理通信并整合消息。\n */\nexport\n@defineElement(\"ai.chat-agent\", {\n styleTexts: [styleText],\n})\nclass ChatAgent extends ReactNextElement implements ChatAgentProps {\n @property()\n accessor agentId: string | undefined;\n\n @property()\n accessor conversationId: string | undefined;\n\n @method()\n postMessage(content: string) {\n return this.#ref.current?.postMessage(content);\n }\n\n @method()\n sendRequest(content: string, url: string, options: Options<MessageChunk>) {\n return this.#ref.current?.sendRequest(content, url, options);\n }\n\n @method()\n newConversation() {\n this.#ref.current?.newConversation();\n }\n\n // @event({ type: \"messageChunk.push\" })\n // accessor #messageChunkPushEvent!: EventEmitter<MessageChunk>;\n\n // #handleMessageChunkPush = (msg: MessageChunk) => {\n // this.#messageChunkPushEvent.emit(msg);\n // };\n\n @event({ type: \"messages.update\" })\n accessor #messagesUpdate!: EventEmitter<Message[]>;\n\n #handleMessagesUpdate = (messages: Message[]) => {\n this.#messagesUpdate.emit(messages);\n };\n\n @event({ type: \"busy.change\" })\n accessor #busyChangeEvent!: EventEmitter<boolean>;\n\n #handleBusyChange = (busy: boolean) => {\n this.#busyChangeEvent.emit(busy);\n };\n\n @event({ type: \"conversationId.change\" })\n accessor #conversationIdChangeEvent!: EventEmitter<string | null>;\n\n #handleConversationIdChange = (conversationId: string | null) => {\n this.#conversationIdChangeEvent.emit(conversationId);\n };\n\n #ref = createRef<ChatAgentRef>();\n\n render() {\n return (\n <ChatAgentComponent\n ref={this.#ref}\n agentId={this.agentId}\n conversationId={this.conversationId}\n // onMessageChunkPush={this.#handleMessageChunkPush}\n onMessagesUpdate={this.#handleMessagesUpdate}\n onBusyChange={this.#handleBusyChange}\n onConversationIdChange={this.#handleConversationIdChange}\n />\n );\n }\n}\n\nexport interface ChatAgentComponentProps extends ChatAgentProps {\n onMessageChunkPush?(msg: MessageChunk): void;\n onMessagesUpdate?(messages: Message[]): void;\n onBusyChange?(busy: boolean): void;\n onConversationIdChange?(conversationId: string | null): void;\n}\n\nexport interface ChatAgentRef {\n postMessage(content: string): Promise<string | null>;\n sendRequest(\n content: string,\n url: string,\n options: Options<MessageChunk>\n ): Promise<string | null>;\n newConversation(): void;\n}\n\nexport function LegacyChatAgentComponent(\n {\n agentId,\n conversationId: propConversationId,\n onMessageChunkPush,\n onMessagesUpdate,\n onBusyChange,\n onConversationIdChange,\n }: ChatAgentComponentProps,\n ref: React.Ref<ChatAgentRef>\n) {\n const didMountRef = useRef(false);\n const chatIdRef = useRef(1);\n const busyRef = useRef(false);\n const [conversationId, setConversationId] = useState<string | null>(null);\n\n useEffect(() => {\n setConversationId(propConversationId ?? null);\n }, [propConversationId]);\n\n useEffect(() => {\n didMountRef.current && onConversationIdChange?.(conversationId);\n }, [conversationId, onConversationIdChange]);\n\n const counterRef = useRef(0);\n const getMessageChunkKey = useCallback(() => counterRef.current++, []);\n\n const [fullMessages, setFullMessages] = useState<Message[]>([]);\n\n const pushPartialMessage = useCallback(\n (chunk: MessageChunk) => {\n onMessageChunkPush?.(chunk);\n setFullMessages((prev) => {\n const last = prev[prev.length - 1];\n if (last && last.key === chunk.key) {\n last.content += chunk.delta.content;\n return [...prev];\n }\n if (last?.partial) {\n last.partial = false;\n }\n return [\n ...prev,\n { ...chunk.delta, key: chunk.key, partial: chunk.partial },\n ];\n });\n },\n [onMessageChunkPush]\n );\n\n const sendRequest = useCallback(\n async (content: string, url: string, options: Options<MessageChunk>) => {\n // Use ref instead of state to handle sync sequential calls.\n if (busyRef.current) {\n return null;\n }\n const thisChatId = chatIdRef.current;\n let newConversationError: Error | undefined;\n const checkNewConversation = async () => {\n if (thisChatId !== chatIdRef.current) {\n // istanbul ignore else: should never happen\n if (!newConversationError) {\n newConversationError = new Error(\"New conversation started\");\n }\n throw newConversationError;\n }\n };\n\n const userKey = getMessageChunkKey();\n const assistantKey = getMessageChunkKey();\n let currentConversationId = conversationId;\n\n onBusyChange?.((busyRef.current = true));\n\n try {\n pushPartialMessage?.({\n key: userKey,\n delta: {\n content: content,\n role: \"user\",\n },\n });\n const request = createSSEStream<MessageChunk>(\n new URL(url, `${location.origin}${getBasePath()}`).toString(),\n options\n );\n\n // Put a placeholder assistant message to indicate that the assistant\n // is processing if the request takes longer than one second.\n await Promise.race([\n request,\n new Promise((resolve) => setTimeout(resolve, 1000)),\n ]);\n\n await checkNewConversation();\n\n pushPartialMessage?.({\n key: assistantKey,\n delta: {\n content: \"\",\n role: \"assistant\",\n },\n partial: true,\n });\n\n const stream = await request;\n for await (const value of stream) {\n // istanbul ignore next\n // if (process.env.NODE_ENV === \"development\") {\n // // eslint-disable-next-line no-console\n // console.log(\"stream iterated:\", value);\n // }\n\n await checkNewConversation();\n\n pushPartialMessage?.({\n delta: value.delta,\n key: assistantKey,\n partial: true,\n });\n if (value.conversationId && !currentConversationId) {\n setConversationId((currentConversationId = value.conversationId));\n }\n }\n\n await checkNewConversation();\n\n setFullMessages((prev) => {\n const last = prev[prev.length - 1];\n if (last?.partial) {\n last.partial = false;\n }\n return [...prev];\n });\n } catch (error) {\n if (error && error === newConversationError) {\n throw error;\n }\n\n // eslint-disable-next-line no-console\n console.error(\"stream failed:\", error);\n await checkNewConversation();\n\n setFullMessages((prev) => {\n const last = prev[prev.length - 1];\n let keep = prev;\n if (last?.key === assistantKey) {\n if (last.content) {\n last.partial = false;\n last.failed = true;\n } else {\n // Ignore the empty assistant message.\n keep = prev.slice(0, -1);\n }\n }\n return [\n ...keep,\n {\n role: \"assistant\",\n content: \"系统错误\",\n key: getMessageChunkKey(),\n failed: true,\n },\n ];\n });\n }\n\n await checkNewConversation();\n\n onBusyChange?.((busyRef.current = false));\n\n return currentConversationId;\n },\n [conversationId, getMessageChunkKey, onBusyChange, pushPartialMessage]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n sendRequest,\n postMessage(content: string) {\n return sendRequest(\n content,\n \"api/gateway/easyops.api.aiops_chat.manage.LLMChatProxy@1.0.0/api/aiops_chat/v1/chat/completions\",\n {\n method: \"POST\",\n body: JSON.stringify({\n agentId,\n input: content,\n stream: true,\n conversationId,\n }),\n headers: {\n \"giraffe-contract-name\":\n \"easyops.api.aiops_chat.manage.LLMChatProxy\",\n },\n }\n );\n },\n newConversation() {\n chatIdRef.current++;\n setConversationId(null);\n setFullMessages((prev) => (prev.length === 0 ? prev : []));\n if (busyRef.current) {\n onBusyChange?.((busyRef.current = false));\n }\n },\n }),\n [agentId, conversationId, onBusyChange, sendRequest]\n );\n\n useEffect(() => {\n didMountRef.current && onMessagesUpdate?.(fullMessages);\n }, [fullMessages, onMessagesUpdate]);\n\n useEffect(() => {\n didMountRef.current = true;\n }, []);\n\n return null;\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","export default function _asyncIterator(r) {\n var n,\n t,\n o,\n e = 2;\n for (\"undefined\" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) {\n if (t && null != (n = r[t])) return n.call(r);\n if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r));\n t = \"@@asyncIterator\", o = \"@@iterator\";\n }\n throw new TypeError(\"Object is not async iterable\");\n}\nfunction AsyncFromSyncIterator(r) {\n function AsyncFromSyncIteratorContinuation(r) {\n if (Object(r) !== r) return Promise.reject(new TypeError(r + \" is not an object.\"));\n var n = r.done;\n return Promise.resolve(r.value).then(function (r) {\n return {\n value: r,\n done: n\n };\n });\n }\n return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) {\n this.s = r, this.n = r.next;\n }, AsyncFromSyncIterator.prototype = {\n s: null,\n n: null,\n next: function next() {\n return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));\n },\n \"return\": function _return(r) {\n var n = this.s[\"return\"];\n return void 0 === n ? Promise.resolve({\n value: r,\n done: !0\n }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));\n },\n \"throw\": function _throw(r) {\n var n = this.s[\"return\"];\n return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));\n }\n }, new AsyncFromSyncIterator(r);\n}"],"names":["defineElement","property","method","createDecorators","LegacyChatViewComponent","_ref","ref","agentId","sessionId","showAvatar","showSessionList","readonly","showLike","quickAnswerConfig","enterInterval","debug","commandBricks","answerLanguage","sessionEnd","sessionLoading","activeSessionId","msgEnd","msgLoading","msgList","sessionList","loading","chatting","searchStr","setAgent","handleIsLike","handleChat","stopChat","createSession","deleteSession","checkSession","setSearchStr","querySessionHistory","useChatViewInfo","React","ChatViewContext","Provider","value","className","SessionList","MessageList","SearchInput","_ChatView","ChatViewComponent","forwardRef","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_ref2","ChatView","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","_initProto","_init_sessionId","_init_extra_sessionId","_init_agentId","_init_extra_agentId","_init_answerLanguage","_init_extra_answerLanguage","_init_debug","_init_extra_debug","_init_showAvatar","_init_extra_showAvatar","_init_showSessionList","_init_extra_showSessionList","_init_readonly","_init_extra_readonly","_init_showLike","_init_extra_showLike","_init_enterInterval","_init_extra_enterInterval","_init_quickAnswerConfig","_init_extra_quickAnswerConfig","_init_commandBricks","_init_extra_commandBricks","_classPrivateFieldGet","v","_classPrivateFieldSet","insertQuestion","args","_classPrivateFieldGet2","this","current","handleInsertQuestion","sendMsg","msg","_classPrivateFieldGet3","render","_ChatView2","e","c","_initClass","_applyDecs","shadowOptions","type","Boolean","Number","attribute","_classPrivateGetter","s","r","a","assertClassBrand","_ChatAgent","event","ChatAgentComponent","LegacyChatAgentComponent","_ChatAgent_brand","WeakSet","_handleMessagesUpdate","_handleBusyChange","_handleConversationIdChange","ChatAgent","_classPrivateMethodInitSpec","_init_conversationId","_init_extra_conversationId","_init_messagesUpdate","_init_extra_messagesUpdate","messages","_get_messagesUpdate","emit","_init_busyChangeEvent","_init_extra_busyChangeEvent","busy","_get_busyChangeEvent","_init_conversationIdChangeEvent","_init_extra_conversationIdChangeEvent","conversationId","_get_conversationIdChangeEvent","createRef","postMessage","content","sendRequest","url","options","newConversation","_classPrivateFieldGet4","onMessagesUpdate","onBusyChange","onConversationIdChange","propConversationId","onMessageChunkPush","didMountRef","useRef","chatIdRef","busyRef","setConversationId","useState","useEffect","counterRef","getMessageChunkKey","useCallback","fullMessages","setFullMessages","pushPartialMessage","chunk","prev","last","length","key","delta","partial","_objectSpread","_ref3","_asyncToGenerator","newConversationError","thisChatId","checkNewConversation","_ref4","Error","apply","userKey","assistantKey","currentConversationId","role","request","createSSEStream","URL","concat","location","origin","getBasePath","toString","Promise","race","resolve","setTimeout","_iteratorError","stream","_iteratorAbruptCompletion","_didIteratorError","_step","_iterator","_asyncIterator","next","done","err","return","error","console","keep","failed","slice","_x","_x2","_x3","useImperativeHandle","body","JSON","stringify","input","headers","_ChatAgent2","_set_messagesUpdate","_set_busyChangeEvent","_set_conversationIdChangeEvent","styleTexts","styleText","o","_","has","_checkInRHS","___CSS_LOADER_EXPORT___","push","module","id","n","t","Symbol","asyncIterator","iterator","call","AsyncFromSyncIterator","TypeError","AsyncFromSyncIteratorContinuation","Object","reject","then","prototype"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_next_bricks_ai=self.webpackChunk_next_bricks_ai||[]).push([[6129],{1943:(e,s,t)=>{t.r(s),t.d(s,{ChatView:()=>z,ChatViewComponent:()=>G,LegacyChatViewComponent:()=>j});var n,i,a,r,h,o,c,d,g,w,u,l,A,k,m,v,L,p,I,S,y,C,f,M,E,b=t(918),B=t(6121),W=t(829),q=t(2740),N=t(8769),_=t.n(N),x=t(3741),R=t(6430),Q=t(15),V=t(1465),D=t(2442),H=t(3830),F=t(205),{defineElement:O,property:P,method:Z}=(t(6329),t(2896),t(3262),(0,x.createDecorators)());function j(e,s){var{agentId:t,sessionId:n,showAvatar:i,showSessionList:a=!0,readonly:r=!1,showLike:h=!0,quickAnswerConfig:o,enterInterval:c,debug:d=!1,commandBricks:g,answerLanguage:w}=e,{sessionEnd:u,sessionLoading:l,activeSessionId:A,msgEnd:k,msgLoading:m,msgList:v,sessionList:L,loading:p,chatting:I,searchStr:S,setAgent:y,handleIsLike:C,handleChat:f,stopChat:M,createSession:E,deleteSession:b,checkSession:B,setSearchStr:W,querySessionHistory:q}=(0,D.F)({agentId:t,sessionId:n,enterInterval:c,debug:d,answerLanguage:w});return _().createElement(Q.t.Provider,{value:{sessionEnd:u,sessionLoading:l,activeSessionId:A,sessionList:L,msgEnd:k,msgLoading:m,msgList:v,chatting:I,loading:p,searchStr:S,showLike:h,readonly:r,quickAnswerConfig:o,commandBricks:g,setAgent:y,handleIsLike:C,handleChat:f,stopChat:M,createSession:E,deleteSession:b,checkSession:B,setSearchStr:W,querySessionHistory:q}},_().createElement("div",{className:"chat-view-container"},a&&_().createElement("div",{className:"chat-view-selector"},_().createElement(H.Z,null)),_().createElement("div",{className:"chat-view-content"},_().createElement(V.M,{showAvatar:i}),!r&&_().createElement(F.D,{ref:s}))))}var z,G=(0,N.forwardRef)(j),J=new WeakMap,K=new WeakMap,T=new WeakMap,U=new WeakMap,X=new WeakMap,Y=new WeakMap,$=new WeakMap,ee=new WeakMap,se=new WeakMap,te=new WeakMap,ne=new WeakMap,ie=new WeakMap;class ae extends R.ReactNextElement{constructor(){super(...arguments),(0,b.A)(this,J,(i(this),r(this))),(0,b.A)(this,K,(h(this),o(this))),(0,b.A)(this,T,(c(this),d(this))),(0,b.A)(this,U,(g(this),w(this))),(0,b.A)(this,X,(u(this),l(this))),(0,b.A)(this,Y,(A(this),k(this))),(0,b.A)(this,$,(m(this),v(this))),(0,b.A)(this,ee,(L(this),p(this))),(0,b.A)(this,se,(I(this),S(this))),(0,b.A)(this,te,(y(this),C(this))),(0,b.A)(this,ne,(f(this),M(this))),(0,b.A)(this,ie,(E(this),_().createRef()))}get sessionId(){return(0,W.A)(J,this)}set sessionId(e){(0,B.A)(J,this,e)}get agentId(){return(0,W.A)(K,this)}set agentId(e){(0,B.A)(K,this,e)}get answerLanguage(){return(0,W.A)(T,this)}set answerLanguage(e){(0,B.A)(T,this,e)}get debug(){return(0,W.A)(U,this)}set debug(e){(0,B.A)(U,this,e)}get showAvatar(){return(0,W.A)(X,this)}set showAvatar(e){(0,B.A)(X,this,e)}get showSessionList(){return(0,W.A)(Y,this)}set showSessionList(e){(0,B.A)(Y,this,e)}get readonly(){return(0,W.A)($,this)}set readonly(e){(0,B.A)($,this,e)}get showLike(){return(0,W.A)(ee,this)}set showLike(e){(0,B.A)(ee,this,e)}get enterInterval(){return(0,W.A)(se,this)}set enterInterval(e){(0,B.A)(se,this,e)}get quickAnswerConfig(){return(0,W.A)(te,this)}set quickAnswerConfig(e){(0,B.A)(te,this,e)}get commandBricks(){return(0,W.A)(ne,this)}set commandBricks(e){(0,B.A)(ne,this,e)}insertQuestion(e){var s,{value:t}=e;t&&(null===(s=(0,W.A)(ie,this).current)||void 0===s||s.handleInsertQuestion(t))}sendMsg(e){var s;null===(s=(0,W.A)(ie,this).current)||void 0===s||s.sendMsg(e)}render(){return _().createElement(G,{agentId:this.agentId,debug:this.debug,sessionId:this.sessionId,readonly:this.readonly,showAvatar:this.showAvatar,showSessionList:this.showSessionList,showLike:this.showLike,quickAnswerConfig:this.quickAnswerConfig,enterInterval:this.enterInterval,commandBricks:this.commandBricks,answerLanguage:this.answerLanguage,ref:(0,W.A)(ie,this)})}}n=ae,({e:[r,h,o,c,d,g,w,u,l,A,k,m,v,L,p,I,S,y,C,f,M,E,i],c:[z,a]}=(0,q.A)(n,[O("ai.chat-view",{shadowOptions:!1})],[[P(),1,"sessionId"],[P(),1,"agentId"],[P(),1,"answerLanguage"],[P({type:Boolean}),1,"debug"],[P({type:Boolean}),1,"showAvatar"],[P({type:Boolean}),1,"showSessionList"],[P({type:Boolean}),1,"readonly"],[P({type:Boolean}),1,"showLike"],[P({type:Number}),1,"enterInterval"],[P({attribute:!1}),1,"quickAnswerConfig"],[P({attribute:!1}),1,"commandBricks"],[Z(),2,"insertQuestion"],[Z(),2,"sendMsg"]],0,void 0,R.ReactNextElement)),a()}}]);
2
+ //# sourceMappingURL=chat-view.81f838c8.js.map