@ai-group/chat-sdk 3.3.7 → 3.3.10

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.
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","useCallback","useEffect","useRef","Button","Flex","Tooltip","message","antdMessage","clsx","SwapRightOutlined","ReloadOutlined","CopyOutlined","InfoCircleOutlined","CheckCircleFilled","copy","useStyles","MarkdownRender","FunctionCallRender","FileGallery","XAdkThoughtChain","parseAgentMessage","mergeChatStrategies","defaultToolKindResolver","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","scrollThreshold","XAdkChatbot","_ref","_mergedStrategies$par","_ref$loading","loading","prologue","suggestions","messages","showFnCallDetail","onConfirm","onSuggest","showRetry","showCopy","showLog","onRetry","onCopy","onShowLog","actions","actionsExtra","className","style","_ref$enableGrouping","enableGrouping","_ref$enableProcessPar","enableProcessParsing","parseOptions","_ref$initialized","initialized","onFileClick","renderFunctionCall","toolKindResolver","strategies","preset","styles","listRef","lastScrollTopRef","userHasScrolledRef","messagesEndRef","prevInitializedRef","mergedStrategies","resolveToolKind","name","msg","_ref2","_toolKindResolver","_mergedStrategies$res","call","parseProcessMessage","length","current","timer","setTimeout","_messagesEndRef$curre","scrollIntoView","behavior","clearTimeout","_messagesEndRef$curre2","handleScroll","el","currentTop","scrollTop","isAtBottom","Math","abs","scrollHeight","clientHeight","listElement","addEventListener","removeEventListener","chatGroups","map","_msg$isLike","id","role","msgs","invocationId","allFiles","fileData","isLike","groups","forEach","isRealUserQuery","functionResponse","functionCall","lastGroup","isLastGroupAgent","push","_msg$isLike2","concat","g","reduce","acc","m","_toConsumableArray","renderBotGroup","group","isLastGroup","botMsg","children","i","text","_renderFunctionCall","_msg$functionCall","showDetail","kind","renderApproval","renderHandoff","mergedToolMap","Map","callId","has","set","_objectSpread","_mergedToolMap$get","get","tool","args","nodes","currentProcessItems","processedToolIds","Set","flushProcessItems","type","items","key","mergedMsg","content","add","parts","part","partIdx","includes","titleMap","planning","replanning","reasoning","action_log","process_text","title","trim","lastNode","fullTextToCopy","filter","join","lastBotMsg","hasProcess","some","n","isGroupLoading","actionProps","isLastBotMsg","actionExtraNode","node","idx","defaultOpen","showBadge","findIndex","successBadge","fileSection","fileHeader","display","flexWrap","gap","file","index","onClick","metaFooter","actionIcons","success","timestamp","renderUserGroup","userMsg","userContainer","align","marginBottom","card","renderSuggestions","suggestionWrapper","item","suggestion","suggestContent","icon","iconPosition","whiteSpace","height","wordWrap","textAlign","padding","lineHeight","wrapper","list","ref"],"sources":["../../../../src/components/XAdkChatbot/index.tsx"],"sourcesContent":["import React, { useMemo, useCallback, useEffect, useRef } from \"react\";\nimport { Button, Flex, Tooltip, message as antdMessage } from \"antd\";\nimport clsx from \"clsx\";\nimport {\n SwapRightOutlined,\n ReloadOutlined,\n CopyOutlined,\n InfoCircleOutlined,\n CheckCircleFilled,\n} from \"@ant-design/icons\";\nimport copy from \"copy-to-clipboard\";\nimport { useStyles } from \"./styles\";\nimport MarkdownRender from \"./components/MarkdownRender\";\nimport FunctionCallRender from \"./components/FunctionCallRender\";\nimport FileGallery from \"../FileGallery\";\nimport XAdkThoughtChain from \"@/components/XAdkThoughtChain\";\nimport { parseAgentMessage } from \"@/utils\";\nimport { mergeChatStrategies } from \"@/presets/xGroupAdk\";\nimport type { IMessage, XAdkChatbotProps, ChatGroup } from \"@/types\";\nimport type { ThoughtChainItemType } from \"@/types/XAdkThoughtChain\";\nimport { defaultToolKindResolver } from \"@/types/FunctionCallRender\";\n\nconst scrollThreshold = 10;\n\n/**\n * XAdkChatbot - 增强版聊天组件\n *\n * 新增功能:\n * - ✅ 自动消息分组 (enableGrouping)\n * - ✅ 自动解析思维链 (enableProcessParsing)\n * - ✅ 文件展示 (FileGallery)\n * - ✅ 操作栏 (重试/复制/日志)\n * - ✅ 欢迎页面 (agentName/agentIcon/description)\n */\nconst XAdkChatbot: React.FC<XAdkChatbotProps> = ({\n loading = false,\n prologue,\n suggestions,\n messages,\n showFnCallDetail,\n onConfirm,\n onSuggest,\n showRetry,\n showCopy,\n showLog,\n onRetry,\n onCopy,\n onShowLog,\n actions,\n actionsExtra,\n className,\n style,\n // welcome = null,\n enableGrouping = true,\n enableProcessParsing = true,\n parseOptions,\n initialized = false,\n onFileClick,\n renderFunctionCall,\n toolKindResolver,\n strategies,\n preset,\n}) => {\n const styles = useStyles();\n const listRef = useRef<HTMLDivElement>(null);\n const lastScrollTopRef = useRef(0);\n const userHasScrolledRef = useRef(false);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const prevInitializedRef = useRef(false);\n const mergedStrategies = useMemo(\n () => mergeChatStrategies(preset, strategies),\n [preset, strategies],\n );\n const resolveToolKind = useCallback(\n (name?: string, msg?: IMessage) =>\n toolKindResolver?.(name) ??\n mergedStrategies.resolveToolKind?.({ name, msg }) ??\n defaultToolKindResolver(name),\n [toolKindResolver, mergedStrategies],\n );\n const parseProcessMessage =\n mergedStrategies.parseProcessMessage ?? parseAgentMessage;\n\n // 初始化完成时滚动到底部\n useEffect(() => {\n if (!initialized) return;\n if (!messages.length) return;\n if (prevInitializedRef.current) return; // 只在第一次 initialized+messages 就绪时触发\n prevInitializedRef.current = true;\n // 推迟到浏览器完成 paint 后执行,确保 DOM 高度已撑开\n const timer = setTimeout(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"auto\" });\n }, 0);\n return () => clearTimeout(timer);\n }, [initialized, messages]);\n\n // 流式输出时滚动到底部\n useEffect(() => {\n if (!loading) return;\n if (userHasScrolledRef.current) return;\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [loading, messages]);\n\n // 处理滚动事件\n const handleScroll = useCallback(() => {\n const el = listRef.current;\n if (!el) return;\n const currentTop = el.scrollTop;\n\n if (currentTop < lastScrollTopRef.current) {\n userHasScrolledRef.current = true;\n }\n\n const isAtBottom =\n Math.abs(el.scrollHeight - currentTop - el.clientHeight) <=\n scrollThreshold;\n if (isAtBottom) {\n userHasScrolledRef.current = false;\n }\n\n lastScrollTopRef.current = currentTop;\n }, []);\n\n useEffect(() => {\n const listElement = listRef.current;\n if (!listElement) return;\n\n listElement.addEventListener(\"scroll\", handleScroll);\n return () => {\n listElement.removeEventListener(\"scroll\", handleScroll);\n };\n }, [handleScroll]);\n\n // ========== 消息分组逻辑 ==========\n const chatGroups = useMemo(() => {\n if (!enableGrouping) {\n // 不分组,每条消息独立\n return messages.map((msg) => ({\n id: msg.id,\n role: msg.role,\n msgs: [msg],\n invocationId: msg.invocationId,\n allFiles: msg.fileData || [],\n isLike: msg.isLike ?? 0,\n }));\n }\n\n const groups: ChatGroup[] = [];\n messages.forEach((msg) => {\n // 过滤 followup 消息\n if ((msg as any).role === \"followup\") return;\n\n const isRealUserQuery =\n msg.role === \"user\" && !msg.functionResponse && !msg.functionCall;\n const lastGroup = groups[groups.length - 1];\n const isLastGroupAgent = lastGroup?.role === \"bot\";\n\n if (isLastGroupAgent && !isRealUserQuery) {\n // 合并到上一个 bot 分组\n lastGroup.msgs.push(msg);\n if (msg.invocationId) lastGroup.invocationId = msg.invocationId;\n // 更新 isLike: 取最新的非0值,或保持当前值\n if (msg.isLike && msg.isLike !== 0) {\n lastGroup.isLike = msg.isLike;\n }\n } else {\n // 创建新分组\n groups.push({\n id: msg.id || `group-${groups.length}`,\n role: isRealUserQuery ? \"user\" : \"bot\",\n msgs: [msg],\n invocationId: msg.invocationId,\n allFiles: [],\n isLike: msg.isLike ?? 0,\n });\n }\n });\n\n // 合并文件\n groups.forEach((g) => {\n g.allFiles = g.msgs.reduce(\n (acc, m) => [...acc, ...(m.fileData || [])],\n [] as any[],\n );\n });\n\n return groups;\n }, [messages, enableGrouping]);\n\n // ========== 渲染 Bot 消息组 ==========\n const renderBotGroup = useCallback(\n (group: ChatGroup, isLastGroup: boolean, renderFunctionCall?: XAdkChatbotProps[\"renderFunctionCall\"]) => {\n const { msgs, allFiles } = group;\n\n if (!enableProcessParsing) {\n // 不解析 process,简单渲染\n return (\n <div key={group.id} className={styles.botMsg}>\n {msgs.map((msg, i) => {\n if (msg.text) {\n return (\n <MarkdownRender\n key={`${msg.id}-${i}`}\n text={msg.text}\n onFileClick={onFileClick}\n />\n );\n }\n if (msg.functionCall) {\n return (\n renderFunctionCall?.(msg) ?? (\n <FunctionCallRender\n key={`${msg.id}-${i}`}\n msg={msg}\n showDetail={showFnCallDetail}\n onConfirm={onConfirm}\n kind={resolveToolKind(msg.functionCall?.name, msg)}\n renderApproval={mergedStrategies.renderApproval}\n renderHandoff={mergedStrategies.renderHandoff}\n />\n )\n );\n }\n return null;\n })}\n </div>\n );\n }\n\n // ========== 解析 Process 内容 ==========\n\n // 1. 合并工具调用\n const mergedToolMap = new Map<string, IMessage>();\n msgs.forEach((msg) => {\n if (msg.functionCall) {\n const callId = msg.functionCall.id || \"\";\n if (!mergedToolMap.has(callId)) {\n mergedToolMap.set(callId, { ...msg });\n } else {\n mergedToolMap.set(callId, {\n ...(mergedToolMap.get(callId) ?? {}),\n ...msg,\n });\n }\n } else if (msg.functionResponse) {\n const callId = msg.functionResponse.id || \"\";\n if (mergedToolMap.has(callId)) {\n const tool = mergedToolMap.get(callId);\n if (tool) tool.functionResponse = msg.functionResponse;\n } else {\n mergedToolMap.set(callId, {\n ...msg,\n functionCall: {\n id: callId,\n name: msg.functionResponse.name || \"Unknown\",\n args: {},\n },\n });\n }\n }\n });\n\n // 2. 解析文本消息中的 process 内容\n type RenderNode =\n | { type: \"text\"; content: string; key: string }\n | { type: \"process\"; items: ThoughtChainItemType[]; key: string };\n\n const nodes: RenderNode[] = [];\n let currentProcessItems: ThoughtChainItemType[] = [];\n const processedToolIds = new Set<string>();\n\n const flushProcessItems = () => {\n if (currentProcessItems.length > 0) {\n nodes.push({\n type: \"process\",\n items: [...currentProcessItems],\n key: `process-${nodes.length}`,\n });\n currentProcessItems = [];\n }\n };\n\n msgs.forEach((msg) => {\n // 处理工具调用\n if (msg.functionCall) {\n const callId = msg.functionCall.id || \"\";\n if (!processedToolIds.has(callId)) {\n const mergedMsg = mergedToolMap.get(callId);\n if (mergedMsg) {\n currentProcessItems.push({\n type: \"tool\",\n key: `tool-${callId}`,\n content: \"\",\n msg: mergedMsg,\n });\n processedToolIds.add(callId);\n }\n }\n }\n // 处理文本消息\n else if (msg.text && !msg.functionResponse) {\n const parts = parseProcessMessage(msg.text, parseOptions as any);\n\n parts.forEach((part, partIdx) => {\n // process 内容放入 currentProcessItems\n if (\n [\n \"planning\",\n \"replanning\",\n \"reasoning\",\n \"action_log\",\n \"process_text\",\n ].includes(part.type)\n ) {\n const titleMap: Record<string, string> = {\n planning: \"任务规划\",\n replanning: \"重新规划\",\n reasoning: \"推理分析\",\n action_log: \"行动记录\",\n process_text: \"过程分析\",\n };\n\n currentProcessItems.push({\n type: \"text\",\n key: `${msg.id}-${partIdx}`,\n content: part.content,\n title: titleMap[part.type] || \"分析\",\n });\n }\n // 普通文本内容\n else {\n flushProcessItems();\n if (part.content.trim()) {\n const lastNode = nodes[nodes.length - 1];\n if (lastNode?.type === \"text\") {\n // 合并到上一个文本节点\n lastNode.content += \"\\n\\n\" + part.content;\n } else {\n nodes.push({\n type: \"text\",\n content: part.content,\n key: `text-${msg.id}-${partIdx}`,\n });\n }\n }\n }\n });\n }\n });\n\n // 最后flush一次\n flushProcessItems();\n\n // 3. 准备操作栏数据\n const fullTextToCopy = msgs\n .filter((m) => !m.functionCall && !m.functionResponse)\n .map((m) => m.text || \"\")\n .join(\"\");\n\n const lastBotMsg = msgs[msgs.length - 1];\n const hasProcess = nodes.some((n) => n.type === \"process\");\n const isGroupLoading = loading && isLastGroup;\n const actionProps = { message: group, isLastBotMsg: isLastGroup };\n const actionExtraNode = actionsExtra?.(actionProps);\n\n // 4. 渲染\n return (\n <div key={group.id} className={styles.botMsg}>\n {nodes.map((node, idx) => {\n if (node.type === \"process\") {\n return (\n <XAdkThoughtChain\n key={node.key}\n loading={isGroupLoading}\n title=\"思维链已完成\"\n items={node.items}\n showFnCallDetail={showFnCallDetail}\n onConfirm={onConfirm}\n defaultOpen={isGroupLoading}\n renderFunctionCall={renderFunctionCall}\n toolKindResolver={(name) => resolveToolKind(name)}\n strategies={mergedStrategies}\n />\n );\n }\n\n // 文本节点\n const showBadge =\n hasProcess && nodes.findIndex((n) => n.type === \"text\") === idx;\n return (\n <div key={node.key}>\n {showBadge && (\n <div className={styles.successBadge}>\n <CheckCircleFilled /> 已完成所有规划任务\n </div>\n )}\n <MarkdownRender text={node.content} onFileClick={onFileClick} />\n </div>\n );\n })}\n\n {/* 文件展示 */}\n {allFiles.length > 0 && (\n <div className={styles.fileSection}>\n <div className={styles.fileHeader}>\n <span>生成文件 ({allFiles.length})</span>\n </div>\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"8px\" }}>\n {allFiles.map((file, index) => (\n <FileGallery key={index} file={file} onClick={onFileClick} />\n ))}\n </div>\n </div>\n )}\n\n {/* 操作栏 */}\n {!isGroupLoading &&\n ((actions || showRetry || showCopy || showLog || actionExtraNode) && (\n <div className={styles.metaFooter}>\n {actions ? (\n actions(actionProps)\n ) : (\n <Flex gap={16} className={styles.actionIcons}>\n {showRetry && isLastGroup && (\n <Tooltip title=\"重新生成\">\n <ReloadOutlined onClick={onRetry} />\n </Tooltip>\n )}\n {showCopy && (\n <Tooltip title=\"复制内容\">\n <CopyOutlined\n onClick={() => {\n copy(fullTextToCopy);\n antdMessage.success(\"复制成功\");\n onCopy?.(fullTextToCopy);\n }}\n />\n </Tooltip>\n )}\n {showLog && lastBotMsg?.invocationId && (\n <Tooltip title=\"查看日志\">\n <InfoCircleOutlined\n onClick={() =>\n onShowLog?.(\n lastBotMsg.invocationId!,\n lastBotMsg.timestamp,\n )\n }\n />\n </Tooltip>\n )}\n </Flex>\n )}\n {actionExtraNode}\n </div>\n ))}\n </div>\n );\n },\n [\n enableProcessParsing,\n parseOptions,\n parseProcessMessage,\n showFnCallDetail,\n onConfirm,\n loading,\n showRetry,\n showCopy,\n showLog,\n onRetry,\n onCopy,\n onShowLog,\n actions,\n actionsExtra,\n onFileClick,\n styles,\n resolveToolKind,\n mergedStrategies,\n ],\n );\n\n // ========== 渲染用户消息组 ==========\n const renderUserGroup = useCallback(\n (group: ChatGroup) => {\n return (\n <div key={group.id} className={styles.userMsg}>\n {group.msgs.map((m, i) => (\n <div key={m.id || i} className={styles.userContainer}>\n {/* 文件展示 */}\n {m.fileData && m.fileData.length > 0 && (\n <>\n {m.fileData.map((file, index) => (\n <FileGallery\n key={index}\n file={file}\n align=\"left\"\n style={{ marginBottom: \"16px\" }}\n onClick={onFileClick}\n />\n ))}\n </>\n )}\n {/* 文本展示 */}\n {m.text && <div className={styles.card}>{m.text}</div>}\n </div>\n ))}\n </div>\n );\n },\n [styles, onFileClick],\n );\n\n // ========== 欢迎页面 ==========\n // const isEmpty =\n // messages.length === 0 &&\n // !prologue &&\n // (!suggestions || suggestions.length === 0);\n\n // const renderWelcome = () => {\n // if (!isEmpty) return null;\n\n // return (\n // <>\n // {welcome ?? (\n // <div className={styles.welcomeWrapper}>\n // {agentIcon && (\n // <img src={agentIcon} alt=\"icon\" className={styles.welcomeIcon} />\n // )}\n // {agentName && (\n // <div className={styles.welcomeTitle}>{agentName}</div>\n // )}\n // {description && (\n // <div className={styles.welcomeDesc}>{description}</div>\n // )}\n // </div>\n // )}\n // </>\n // );\n // };\n\n // ========== 渲染建议问题 ==========\n const renderSuggestions = () => {\n if (!suggestions || suggestions.length === 0) return null;\n\n return (\n <div className={styles.suggestionWrapper}>\n {suggestions.map((item) => (\n <div key={item} className={styles.suggestion}>\n <div className={styles.suggestContent}>\n <Button\n type=\"text\"\n icon={<SwapRightOutlined />}\n iconPosition=\"end\"\n onClick={() => {\n if (!item) return;\n onSuggest?.(item);\n }}\n style={{\n whiteSpace: \"normal\",\n height: \"auto\",\n wordWrap: \"break-word\",\n textAlign: \"left\",\n padding: \"4px 15px\",\n lineHeight: \"1.5\",\n }}\n >\n {item}\n </Button>\n </div>\n </div>\n ))}\n </div>\n );\n };\n\n return (\n <div className={clsx(styles.wrapper, className)} style={style}>\n <div className={styles.list} ref={listRef}>\n {/* 开场白 */}\n {prologue && (\n <div className={styles.prologue}>\n <MarkdownRender text={prologue} onFileClick={onFileClick} />\n </div>\n )}\n\n {/* 欢迎页面 */}\n {/* {renderWelcome()} */}\n\n {/* 消息列表 */}\n {chatGroups.map((group, idx) =>\n group.role === \"user\"\n ? renderUserGroup(group)\n : renderBotGroup(group, idx === chatGroups.length - 1, renderFunctionCall),\n )}\n\n {/* 建议问题 */}\n {renderSuggestions()}\n\n <div ref={messagesEndRef} />\n </div>\n </div>\n );\n};\n\nexport default XAdkChatbot;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,OAAO,EAAEC,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACtE,SAASC,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAEC,OAAO,IAAIC,WAAW,QAAQ,MAAM;AACpE,OAAOC,IAAI,MAAM,MAAM;AACvB,SACEC,iBAAiB,EACjBC,cAAc,EACdC,YAAY,EACZC,kBAAkB,EAClBC,iBAAiB,QACZ,mBAAmB;AAC1B,OAAOC,IAAI,MAAM,mBAAmB;AACpC,SAASC,SAAS;AAClB,OAAOC,cAAc;AACrB,OAAOC,kBAAkB;AACzB,OAAOC,WAAW;AAClB,OAAOC,gBAAgB;AACvB,SAASC,iBAAiB;AAC1B,SAASC,mBAAmB;AAG5B,SAASC,uBAAuB;AAAqC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAErE,IAAMC,eAAe,GAAG,EAAE;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,WAAuC,GAAG,SAA1CA,WAAuCA,CAAAC,IAAA,EA4BvC;EAAA,IAAAC,qBAAA;EAAA,IAAAC,YAAA,GAAAF,IAAA,CA3BJG,OAAO;IAAPA,OAAO,GAAAD,YAAA,cAAG,KAAK,GAAAA,YAAA;IACfE,QAAQ,GAAAJ,IAAA,CAARI,QAAQ;IACRC,WAAW,GAAAL,IAAA,CAAXK,WAAW;IACXC,QAAQ,GAAAN,IAAA,CAARM,QAAQ;IACRC,gBAAgB,GAAAP,IAAA,CAAhBO,gBAAgB;IAChBC,SAAS,GAAAR,IAAA,CAATQ,SAAS;IACTC,SAAS,GAAAT,IAAA,CAATS,SAAS;IACTC,SAAS,GAAAV,IAAA,CAATU,SAAS;IACTC,QAAQ,GAAAX,IAAA,CAARW,QAAQ;IACRC,OAAO,GAAAZ,IAAA,CAAPY,OAAO;IACPC,OAAO,GAAAb,IAAA,CAAPa,OAAO;IACPC,MAAM,GAAAd,IAAA,CAANc,MAAM;IACNC,SAAS,GAAAf,IAAA,CAATe,SAAS;IACTC,OAAO,GAAAhB,IAAA,CAAPgB,OAAO;IACPC,YAAY,GAAAjB,IAAA,CAAZiB,YAAY;IACZC,SAAS,GAAAlB,IAAA,CAATkB,SAAS;IACTC,KAAK,GAAAnB,IAAA,CAALmB,KAAK;IAAAC,mBAAA,GAAApB,IAAA,CAELqB,cAAc;IAAdA,cAAc,GAAAD,mBAAA,cAAG,IAAI,GAAAA,mBAAA;IAAAE,qBAAA,GAAAtB,IAAA,CACrBuB,oBAAoB;IAApBA,oBAAoB,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IAC3BE,YAAY,GAAAxB,IAAA,CAAZwB,YAAY;IAAAC,gBAAA,GAAAzB,IAAA,CACZ0B,WAAW;IAAXA,WAAW,GAAAD,gBAAA,cAAG,KAAK,GAAAA,gBAAA;IACnBE,WAAW,GAAA3B,IAAA,CAAX2B,WAAW;IACXC,kBAAkB,GAAA5B,IAAA,CAAlB4B,kBAAkB;IAClBC,gBAAgB,GAAA7B,IAAA,CAAhB6B,gBAAgB;IAChBC,UAAU,GAAA9B,IAAA,CAAV8B,UAAU;IACVC,MAAM,GAAA/B,IAAA,CAAN+B,MAAM;EAEN,IAAMC,MAAM,GAAGhD,SAAS,CAAC,CAAC;EAC1B,IAAMiD,OAAO,GAAG9D,MAAM,CAAiB,IAAI,CAAC;EAC5C,IAAM+D,gBAAgB,GAAG/D,MAAM,CAAC,CAAC,CAAC;EAClC,IAAMgE,kBAAkB,GAAGhE,MAAM,CAAC,KAAK,CAAC;EACxC,IAAMiE,cAAc,GAAGjE,MAAM,CAAiB,IAAI,CAAC;EACnD,IAAMkE,kBAAkB,GAAGlE,MAAM,CAAC,KAAK,CAAC;EACxC,IAAMmE,gBAAgB,GAAGtE,OAAO,CAC9B;IAAA,OAAMsB,mBAAmB,CAACyC,MAAM,EAAED,UAAU,CAAC;EAAA,GAC7C,CAACC,MAAM,EAAED,UAAU,CACrB,CAAC;EACD,IAAMS,eAAe,GAAGtE,WAAW,CACjC,UAACuE,IAAa,EAAEC,GAAc;IAAA,IAAAC,KAAA,EAAAC,iBAAA,EAAAC,qBAAA;IAAA,QAAAF,KAAA,IAAAC,iBAAA,GAC5Bd,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAGW,IAAI,CAAC,cAAAG,iBAAA,cAAAA,iBAAA,IAAAC,qBAAA,GACxBN,gBAAgB,CAACC,eAAe,cAAAK,qBAAA,uBAAhCA,qBAAA,CAAAC,IAAA,CAAAP,gBAAgB,EAAmB;MAAEE,IAAI,EAAJA,IAAI;MAAEC,GAAG,EAAHA;IAAI,CAAC,CAAC,cAAAC,KAAA,cAAAA,KAAA,GACjDnD,uBAAuB,CAACiD,IAAI,CAAC;EAAA,GAC/B,CAACX,gBAAgB,EAAES,gBAAgB,CACrC,CAAC;EACD,IAAMQ,mBAAmB,IAAA7C,qBAAA,GACvBqC,gBAAgB,CAACQ,mBAAmB,cAAA7C,qBAAA,cAAAA,qBAAA,GAAIZ,iBAAiB;;EAE3D;EACAnB,SAAS,CAAC,YAAM;IACd,IAAI,CAACwD,WAAW,EAAE;IAClB,IAAI,CAACpB,QAAQ,CAACyC,MAAM,EAAE;IACtB,IAAIV,kBAAkB,CAACW,OAAO,EAAE,OAAO,CAAC;IACxCX,kBAAkB,CAACW,OAAO,GAAG,IAAI;IACjC;IACA,IAAMC,KAAK,GAAGC,UAAU,CAAC,YAAM;MAAA,IAAAC,qBAAA;MAC7B,CAAAA,qBAAA,GAAAf,cAAc,CAACY,OAAO,cAAAG,qBAAA,eAAtBA,qBAAA,CAAwBC,cAAc,CAAC;QAAEC,QAAQ,EAAE;MAAO,CAAC,CAAC;IAC9D,CAAC,EAAE,CAAC,CAAC;IACL,OAAO;MAAA,OAAMC,YAAY,CAACL,KAAK,CAAC;IAAA;EAClC,CAAC,EAAE,CAACvB,WAAW,EAAEpB,QAAQ,CAAC,CAAC;;EAE3B;EACApC,SAAS,CAAC,YAAM;IAAA,IAAAqF,sBAAA;IACd,IAAI,CAACpD,OAAO,EAAE;IACd,IAAIgC,kBAAkB,CAACa,OAAO,EAAE;IAChC,CAAAO,sBAAA,GAAAnB,cAAc,CAACY,OAAO,cAAAO,sBAAA,eAAtBA,sBAAA,CAAwBH,cAAc,CAAC;MAAEC,QAAQ,EAAE;IAAS,CAAC,CAAC;EAChE,CAAC,EAAE,CAAClD,OAAO,EAAEG,QAAQ,CAAC,CAAC;;EAEvB;EACA,IAAMkD,YAAY,GAAGvF,WAAW,CAAC,YAAM;IACrC,IAAMwF,EAAE,GAAGxB,OAAO,CAACe,OAAO;IAC1B,IAAI,CAACS,EAAE,EAAE;IACT,IAAMC,UAAU,GAAGD,EAAE,CAACE,SAAS;IAE/B,IAAID,UAAU,GAAGxB,gBAAgB,CAACc,OAAO,EAAE;MACzCb,kBAAkB,CAACa,OAAO,GAAG,IAAI;IACnC;IAEA,IAAMY,UAAU,GACdC,IAAI,CAACC,GAAG,CAACL,EAAE,CAACM,YAAY,GAAGL,UAAU,GAAGD,EAAE,CAACO,YAAY,CAAC,IACxDlE,eAAe;IACjB,IAAI8D,UAAU,EAAE;MACdzB,kBAAkB,CAACa,OAAO,GAAG,KAAK;IACpC;IAEAd,gBAAgB,CAACc,OAAO,GAAGU,UAAU;EACvC,CAAC,EAAE,EAAE,CAAC;EAENxF,SAAS,CAAC,YAAM;IACd,IAAM+F,WAAW,GAAGhC,OAAO,CAACe,OAAO;IACnC,IAAI,CAACiB,WAAW,EAAE;IAElBA,WAAW,CAACC,gBAAgB,CAAC,QAAQ,EAAEV,YAAY,CAAC;IACpD,OAAO,YAAM;MACXS,WAAW,CAACE,mBAAmB,CAAC,QAAQ,EAAEX,YAAY,CAAC;IACzD,CAAC;EACH,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;;EAElB;EACA,IAAMY,UAAU,GAAGpG,OAAO,CAAC,YAAM;IAC/B,IAAI,CAACqD,cAAc,EAAE;MACnB;MACA,OAAOf,QAAQ,CAAC+D,GAAG,CAAC,UAAC5B,GAAG;QAAA,IAAA6B,WAAA;QAAA,OAAM;UAC5BC,EAAE,EAAE9B,GAAG,CAAC8B,EAAE;UACVC,IAAI,EAAE/B,GAAG,CAAC+B,IAAI;UACdC,IAAI,EAAE,CAAChC,GAAG,CAAC;UACXiC,YAAY,EAAEjC,GAAG,CAACiC,YAAY;UAC9BC,QAAQ,EAAElC,GAAG,CAACmC,QAAQ,IAAI,EAAE;UAC5BC,MAAM,GAAAP,WAAA,GAAE7B,GAAG,CAACoC,MAAM,cAAAP,WAAA,cAAAA,WAAA,GAAI;QACxB,CAAC;MAAA,CAAC,CAAC;IACL;IAEA,IAAMQ,MAAmB,GAAG,EAAE;IAC9BxE,QAAQ,CAACyE,OAAO,CAAC,UAACtC,GAAG,EAAK;MACxB;MACA,IAAKA,GAAG,CAAS+B,IAAI,KAAK,UAAU,EAAE;MAEtC,IAAMQ,eAAe,GACnBvC,GAAG,CAAC+B,IAAI,KAAK,MAAM,IAAI,CAAC/B,GAAG,CAACwC,gBAAgB,IAAI,CAACxC,GAAG,CAACyC,YAAY;MACnE,IAAMC,SAAS,GAAGL,MAAM,CAACA,MAAM,CAAC/B,MAAM,GAAG,CAAC,CAAC;MAC3C,IAAMqC,gBAAgB,GAAG,CAAAD,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEX,IAAI,MAAK,KAAK;MAElD,IAAIY,gBAAgB,IAAI,CAACJ,eAAe,EAAE;QACxC;QACAG,SAAS,CAACV,IAAI,CAACY,IAAI,CAAC5C,GAAG,CAAC;QACxB,IAAIA,GAAG,CAACiC,YAAY,EAAES,SAAS,CAACT,YAAY,GAAGjC,GAAG,CAACiC,YAAY;QAC/D;QACA,IAAIjC,GAAG,CAACoC,MAAM,IAAIpC,GAAG,CAACoC,MAAM,KAAK,CAAC,EAAE;UAClCM,SAAS,CAACN,MAAM,GAAGpC,GAAG,CAACoC,MAAM;QAC/B;MACF,CAAC,MAAM;QAAA,IAAAS,YAAA;QACL;QACAR,MAAM,CAACO,IAAI,CAAC;UACVd,EAAE,EAAE9B,GAAG,CAAC8B,EAAE,aAAAgB,MAAA,CAAaT,MAAM,CAAC/B,MAAM,CAAE;UACtCyB,IAAI,EAAEQ,eAAe,GAAG,MAAM,GAAG,KAAK;UACtCP,IAAI,EAAE,CAAChC,GAAG,CAAC;UACXiC,YAAY,EAAEjC,GAAG,CAACiC,YAAY;UAC9BC,QAAQ,EAAE,EAAE;UACZE,MAAM,GAAAS,YAAA,GAAE7C,GAAG,CAACoC,MAAM,cAAAS,YAAA,cAAAA,YAAA,GAAI;QACxB,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;;IAEF;IACAR,MAAM,CAACC,OAAO,CAAC,UAACS,CAAC,EAAK;MACpBA,CAAC,CAACb,QAAQ,GAAGa,CAAC,CAACf,IAAI,CAACgB,MAAM,CACxB,UAACC,GAAG,EAAEC,CAAC;QAAA,UAAAJ,MAAA,CAAAK,kBAAA,CAASF,GAAG,GAAAE,kBAAA,CAAMD,CAAC,CAACf,QAAQ,IAAI,EAAE;MAAA,CAAE,EAC3C,EACF,CAAC;IACH,CAAC,CAAC;IAEF,OAAOE,MAAM;EACf,CAAC,EAAE,CAACxE,QAAQ,EAAEe,cAAc,CAAC,CAAC;;EAE9B;EACA,IAAMwE,cAAc,GAAG5H,WAAW,CAChC,UAAC6H,KAAgB,EAAEC,WAAoB,EAAEnE,kBAA2D,EAAK;IACvG,IAAQ6C,IAAI,GAAeqB,KAAK,CAAxBrB,IAAI;MAAEE,QAAQ,GAAKmB,KAAK,CAAlBnB,QAAQ;IAEtB,IAAI,CAACpD,oBAAoB,EAAE;MACzB;MACA,oBACE9B,IAAA;QAAoByB,SAAS,EAAEc,MAAM,CAACgE,MAAO;QAAAC,QAAA,EAC1CxB,IAAI,CAACJ,GAAG,CAAC,UAAC5B,GAAG,EAAEyD,CAAC,EAAK;UACpB,IAAIzD,GAAG,CAAC0D,IAAI,EAAE;YACZ,oBACE1G,IAAA,CAACR,cAAc;cAEbkH,IAAI,EAAE1D,GAAG,CAAC0D,IAAK;cACfxE,WAAW,EAAEA;YAAY,MAAA4D,MAAA,CAFjB9C,GAAG,CAAC8B,EAAE,OAAAgB,MAAA,CAAIW,CAAC,CAGpB,CAAC;UAEN;UACA,IAAIzD,GAAG,CAACyC,YAAY,EAAE;YAAA,IAAAkB,mBAAA,EAAAC,iBAAA;YACpB,QAAAD,mBAAA,GACExE,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAGa,GAAG,CAAC,cAAA2D,mBAAA,cAAAA,mBAAA,gBACvB3G,IAAA,CAACP,kBAAkB;cAEjBuD,GAAG,EAAEA,GAAI;cACT6D,UAAU,EAAE/F,gBAAiB;cAC7BC,SAAS,EAAEA,SAAU;cACrB+F,IAAI,EAAEhE,eAAe,EAAA8D,iBAAA,GAAC5D,GAAG,CAACyC,YAAY,cAAAmB,iBAAA,uBAAhBA,iBAAA,CAAkB7D,IAAI,EAAEC,GAAG,CAAE;cACnD+D,cAAc,EAAElE,gBAAgB,CAACkE,cAAe;cAChDC,aAAa,EAAEnE,gBAAgB,CAACmE;YAAc,MAAAlB,MAAA,CANtC9C,GAAG,CAAC8B,EAAE,OAAAgB,MAAA,CAAIW,CAAC,CAOpB,CAAC;UAGR;UACA,OAAO,IAAI;QACb,CAAC;MAAC,GA3BMJ,KAAK,CAACvB,EA4BX,CAAC;IAEV;;IAEA;;IAEA;IACA,IAAMmC,aAAa,GAAG,IAAIC,GAAG,CAAmB,CAAC;IACjDlC,IAAI,CAACM,OAAO,CAAC,UAACtC,GAAG,EAAK;MACpB,IAAIA,GAAG,CAACyC,YAAY,EAAE;QACpB,IAAM0B,MAAM,GAAGnE,GAAG,CAACyC,YAAY,CAACX,EAAE,IAAI,EAAE;QACxC,IAAI,CAACmC,aAAa,CAACG,GAAG,CAACD,MAAM,CAAC,EAAE;UAC9BF,aAAa,CAACI,GAAG,CAACF,MAAM,EAAAG,aAAA,KAAOtE,GAAG,CAAE,CAAC;QACvC,CAAC,MAAM;UAAA,IAAAuE,kBAAA;UACLN,aAAa,CAACI,GAAG,CAACF,MAAM,EAAAG,aAAA,CAAAA,aAAA,MAAAC,kBAAA,GAClBN,aAAa,CAACO,GAAG,CAACL,MAAM,CAAC,cAAAI,kBAAA,cAAAA,kBAAA,GAAI,CAAC,CAAC,GAChCvE,GAAG,CACP,CAAC;QACJ;MACF,CAAC,MAAM,IAAIA,GAAG,CAACwC,gBAAgB,EAAE;QAC/B,IAAM2B,OAAM,GAAGnE,GAAG,CAACwC,gBAAgB,CAACV,EAAE,IAAI,EAAE;QAC5C,IAAImC,aAAa,CAACG,GAAG,CAACD,OAAM,CAAC,EAAE;UAC7B,IAAMM,IAAI,GAAGR,aAAa,CAACO,GAAG,CAACL,OAAM,CAAC;UACtC,IAAIM,IAAI,EAAEA,IAAI,CAACjC,gBAAgB,GAAGxC,GAAG,CAACwC,gBAAgB;QACxD,CAAC,MAAM;UACLyB,aAAa,CAACI,GAAG,CAACF,OAAM,EAAAG,aAAA,CAAAA,aAAA,KACnBtE,GAAG;YACNyC,YAAY,EAAE;cACZX,EAAE,EAAEqC,OAAM;cACVpE,IAAI,EAAEC,GAAG,CAACwC,gBAAgB,CAACzC,IAAI,IAAI,SAAS;cAC5C2E,IAAI,EAAE,CAAC;YACT;UAAC,EACF,CAAC;QACJ;MACF;IACF,CAAC,CAAC;;IAEF;;IAKA,IAAMC,KAAmB,GAAG,EAAE;IAC9B,IAAIC,mBAA2C,GAAG,EAAE;IACpD,IAAMC,gBAAgB,GAAG,IAAIC,GAAG,CAAS,CAAC;IAE1C,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAA,EAAS;MAC9B,IAAIH,mBAAmB,CAACtE,MAAM,GAAG,CAAC,EAAE;QAClCqE,KAAK,CAAC/B,IAAI,CAAC;UACToC,IAAI,EAAE,SAAS;UACfC,KAAK,EAAA9B,kBAAA,CAAMyB,mBAAmB,CAAC;UAC/BM,GAAG,aAAApC,MAAA,CAAa6B,KAAK,CAACrE,MAAM;QAC9B,CAAC,CAAC;QACFsE,mBAAmB,GAAG,EAAE;MAC1B;IACF,CAAC;IAED5C,IAAI,CAACM,OAAO,CAAC,UAACtC,GAAG,EAAK;MACpB;MACA,IAAIA,GAAG,CAACyC,YAAY,EAAE;QACpB,IAAM0B,MAAM,GAAGnE,GAAG,CAACyC,YAAY,CAACX,EAAE,IAAI,EAAE;QACxC,IAAI,CAAC+C,gBAAgB,CAACT,GAAG,CAACD,MAAM,CAAC,EAAE;UACjC,IAAMgB,SAAS,GAAGlB,aAAa,CAACO,GAAG,CAACL,MAAM,CAAC;UAC3C,IAAIgB,SAAS,EAAE;YACbP,mBAAmB,CAAChC,IAAI,CAAC;cACvBoC,IAAI,EAAE,MAAM;cACZE,GAAG,UAAApC,MAAA,CAAUqB,MAAM,CAAE;cACrBiB,OAAO,EAAE,EAAE;cACXpF,GAAG,EAAEmF;YACP,CAAC,CAAC;YACFN,gBAAgB,CAACQ,GAAG,CAAClB,MAAM,CAAC;UAC9B;QACF;MACF;MACA;MAAA,KACK,IAAInE,GAAG,CAAC0D,IAAI,IAAI,CAAC1D,GAAG,CAACwC,gBAAgB,EAAE;QAC1C,IAAM8C,KAAK,GAAGjF,mBAAmB,CAACL,GAAG,CAAC0D,IAAI,EAAE3E,YAAmB,CAAC;QAEhEuG,KAAK,CAAChD,OAAO,CAAC,UAACiD,IAAI,EAAEC,OAAO,EAAK;UAC/B;UACA,IACE,CACE,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,cAAc,CACf,CAACC,QAAQ,CAACF,IAAI,CAACP,IAAI,CAAC,EACrB;YACA,IAAMU,QAAgC,GAAG;cACvCC,QAAQ,EAAE,MAAM;cAChBC,UAAU,EAAE,MAAM;cAClBC,SAAS,EAAE,MAAM;cACjBC,UAAU,EAAE,MAAM;cAClBC,YAAY,EAAE;YAChB,CAAC;YAEDnB,mBAAmB,CAAChC,IAAI,CAAC;cACvBoC,IAAI,EAAE,MAAM;cACZE,GAAG,KAAApC,MAAA,CAAK9C,GAAG,CAAC8B,EAAE,OAAAgB,MAAA,CAAI0C,OAAO,CAAE;cAC3BJ,OAAO,EAAEG,IAAI,CAACH,OAAO;cACrBY,KAAK,EAAEN,QAAQ,CAACH,IAAI,CAACP,IAAI,CAAC,IAAI;YAChC,CAAC,CAAC;UACJ;UACA;UAAA,KACK;YACHD,iBAAiB,CAAC,CAAC;YACnB,IAAIQ,IAAI,CAACH,OAAO,CAACa,IAAI,CAAC,CAAC,EAAE;cACvB,IAAMC,QAAQ,GAAGvB,KAAK,CAACA,KAAK,CAACrE,MAAM,GAAG,CAAC,CAAC;cACxC,IAAI,CAAA4F,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAElB,IAAI,MAAK,MAAM,EAAE;gBAC7B;gBACAkB,QAAQ,CAACd,OAAO,IAAI,MAAM,GAAGG,IAAI,CAACH,OAAO;cAC3C,CAAC,MAAM;gBACLT,KAAK,CAAC/B,IAAI,CAAC;kBACToC,IAAI,EAAE,MAAM;kBACZI,OAAO,EAAEG,IAAI,CAACH,OAAO;kBACrBF,GAAG,UAAApC,MAAA,CAAU9C,GAAG,CAAC8B,EAAE,OAAAgB,MAAA,CAAI0C,OAAO;gBAChC,CAAC,CAAC;cACJ;YACF;UACF;QACF,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;;IAEF;IACAT,iBAAiB,CAAC,CAAC;;IAEnB;IACA,IAAMoB,cAAc,GAAGnE,IAAI,CACxBoE,MAAM,CAAC,UAAClD,CAAC;MAAA,OAAK,CAACA,CAAC,CAACT,YAAY,IAAI,CAACS,CAAC,CAACV,gBAAgB;IAAA,EAAC,CACrDZ,GAAG,CAAC,UAACsB,CAAC;MAAA,OAAKA,CAAC,CAACQ,IAAI,IAAI,EAAE;IAAA,EAAC,CACxB2C,IAAI,CAAC,EAAE,CAAC;IAEX,IAAMC,UAAU,GAAGtE,IAAI,CAACA,IAAI,CAAC1B,MAAM,GAAG,CAAC,CAAC;IACxC,IAAMiG,UAAU,GAAG5B,KAAK,CAAC6B,IAAI,CAAC,UAACC,CAAC;MAAA,OAAKA,CAAC,CAACzB,IAAI,KAAK,SAAS;IAAA,EAAC;IAC1D,IAAM0B,cAAc,GAAGhJ,OAAO,IAAI4F,WAAW;IAC7C,IAAMqD,WAAW,GAAG;MAAE7K,OAAO,EAAEuH,KAAK;MAAEuD,YAAY,EAAEtD;IAAY,CAAC;IACjE,IAAMuD,eAAe,GAAGrI,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAGmI,WAAW,CAAC;;IAEnD;IACA,oBACEzJ,KAAA;MAAoBuB,SAAS,EAAEc,MAAM,CAACgE,MAAO;MAAAC,QAAA,GAC1CmB,KAAK,CAAC/C,GAAG,CAAC,UAACkF,IAAI,EAAEC,GAAG,EAAK;QACxB,IAAID,IAAI,CAAC9B,IAAI,KAAK,SAAS,EAAE;UAC3B,oBACEhI,IAAA,CAACL,gBAAgB;YAEfe,OAAO,EAAEgJ,cAAe;YACxBV,KAAK,EAAC,sCAAQ;YACdf,KAAK,EAAE6B,IAAI,CAAC7B,KAAM;YAClBnH,gBAAgB,EAAEA,gBAAiB;YACnCC,SAAS,EAAEA,SAAU;YACrBiJ,WAAW,EAAEN,cAAe;YAC5BvH,kBAAkB,EAAEA,kBAAmB;YACvCC,gBAAgB,EAAE,SAAAA,iBAACW,IAAI;cAAA,OAAKD,eAAe,CAACC,IAAI,CAAC;YAAA,CAAC;YAClDV,UAAU,EAAEQ;UAAiB,GATxBiH,IAAI,CAAC5B,GAUX,CAAC;QAEN;;QAEA;QACA,IAAM+B,SAAS,GACbV,UAAU,IAAI5B,KAAK,CAACuC,SAAS,CAAC,UAACT,CAAC;UAAA,OAAKA,CAAC,CAACzB,IAAI,KAAK,MAAM;QAAA,EAAC,KAAK+B,GAAG;QACjE,oBACE7J,KAAA;UAAAsG,QAAA,GACGyD,SAAS,iBACR/J,KAAA;YAAKuB,SAAS,EAAEc,MAAM,CAAC4H,YAAa;YAAA3D,QAAA,gBAClCxG,IAAA,CAACX,iBAAiB,IAAE,CAAC,2DACvB;UAAA,CAAK,CACN,eACDW,IAAA,CAACR,cAAc;YAACkH,IAAI,EAAEoD,IAAI,CAAC1B,OAAQ;YAAClG,WAAW,EAAEA;UAAY,CAAE,CAAC;QAAA,GANxD4H,IAAI,CAAC5B,GAOV,CAAC;MAEV,CAAC,CAAC,EAGDhD,QAAQ,CAAC5B,MAAM,GAAG,CAAC,iBAClBpD,KAAA;QAAKuB,SAAS,EAAEc,MAAM,CAAC6H,WAAY;QAAA5D,QAAA,gBACjCxG,IAAA;UAAKyB,SAAS,EAAEc,MAAM,CAAC8H,UAAW;UAAA7D,QAAA,eAChCtG,KAAA;YAAAsG,QAAA,GAAM,4BAAM,EAACtB,QAAQ,CAAC5B,MAAM,EAAC,GAAC;UAAA,CAAM;QAAC,CAClC,CAAC,eACNtD,IAAA;UAAK0B,KAAK,EAAE;YAAE4I,OAAO,EAAE,MAAM;YAAEC,QAAQ,EAAE,MAAM;YAAEC,GAAG,EAAE;UAAM,CAAE;UAAAhE,QAAA,EAC3DtB,QAAQ,CAACN,GAAG,CAAC,UAAC6F,IAAI,EAAEC,KAAK;YAAA,oBACxB1K,IAAA,CAACN,WAAW;cAAa+K,IAAI,EAAEA,IAAK;cAACE,OAAO,EAAEzI;YAAY,GAAxCwI,KAA0C,CAAC;UAAA,CAC9D;QAAC,CACC,CAAC;MAAA,CACH,CACN,EAGA,CAAChB,cAAc,IACb,CAACnI,OAAO,IAAIN,SAAS,IAAIC,QAAQ,IAAIC,OAAO,IAAI0I,eAAe,kBAC9D3J,KAAA;QAAKuB,SAAS,EAAEc,MAAM,CAACqI,UAAW;QAAApE,QAAA,GAC/BjF,OAAO,GACNA,OAAO,CAACoI,WAAW,CAAC,gBAEpBzJ,KAAA,CAACtB,IAAI;UAAC4L,GAAG,EAAE,EAAG;UAAC/I,SAAS,EAAEc,MAAM,CAACsI,WAAY;UAAArE,QAAA,GAC1CvF,SAAS,IAAIqF,WAAW,iBACvBtG,IAAA,CAACnB,OAAO;YAACmK,KAAK,EAAC,0BAAM;YAAAxC,QAAA,eACnBxG,IAAA,CAACd,cAAc;cAACyL,OAAO,EAAEvJ;YAAQ,CAAE;UAAC,CAC7B,CACV,EACAF,QAAQ,iBACPlB,IAAA,CAACnB,OAAO;YAACmK,KAAK,EAAC,0BAAM;YAAAxC,QAAA,eACnBxG,IAAA,CAACb,YAAY;cACXwL,OAAO,EAAE,SAAAA,QAAA,EAAM;gBACbrL,IAAI,CAAC6J,cAAc,CAAC;gBACpBpK,WAAW,CAAC+L,OAAO,CAAC,MAAM,CAAC;gBAC3BzJ,MAAM,aAANA,MAAM,eAANA,MAAM,CAAG8H,cAAc,CAAC;cAC1B;YAAE,CACH;UAAC,CACK,CACV,EACAhI,OAAO,KAAImI,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAErE,YAAY,kBAClCjF,IAAA,CAACnB,OAAO;YAACmK,KAAK,EAAC,0BAAM;YAAAxC,QAAA,eACnBxG,IAAA,CAACZ,kBAAkB;cACjBuL,OAAO,EAAE,SAAAA,QAAA;gBAAA,OACPrJ,SAAS,aAATA,SAAS,uBAATA,SAAS,CACPgI,UAAU,CAACrE,YAAY,EACvBqE,UAAU,CAACyB,SACb,CAAC;cAAA;YACF,CACF;UAAC,CACK,CACV;QAAA,CACG,CACP,EACAlB,eAAe;MAAA,CACb,CACL;IAAA,GAxFIxD,KAAK,CAACvB,EAyFX,CAAC;EAEV,CAAC,EACD,CACEhD,oBAAoB,EACpBC,YAAY,EACZsB,mBAAmB,EACnBvC,gBAAgB,EAChBC,SAAS,EACTL,OAAO,EACPO,SAAS,EACTC,QAAQ,EACRC,OAAO,EACPC,OAAO,EACPC,MAAM,EACNC,SAAS,EACTC,OAAO,EACPC,YAAY,EACZU,WAAW,EACXK,MAAM,EACNO,eAAe,EACfD,gBAAgB,CAEpB,CAAC;;EAED;EACA,IAAMmI,eAAe,GAAGxM,WAAW,CACjC,UAAC6H,KAAgB,EAAK;IACpB,oBACErG,IAAA;MAAoByB,SAAS,EAAEc,MAAM,CAAC0I,OAAQ;MAAAzE,QAAA,EAC3CH,KAAK,CAACrB,IAAI,CAACJ,GAAG,CAAC,UAACsB,CAAC,EAAEO,CAAC;QAAA,oBACnBvG,KAAA;UAAqBuB,SAAS,EAAEc,MAAM,CAAC2I,aAAc;UAAA1E,QAAA,GAElDN,CAAC,CAACf,QAAQ,IAAIe,CAAC,CAACf,QAAQ,CAAC7B,MAAM,GAAG,CAAC,iBAClCtD,IAAA,CAAAI,SAAA;YAAAoG,QAAA,EACGN,CAAC,CAACf,QAAQ,CAACP,GAAG,CAAC,UAAC6F,IAAI,EAAEC,KAAK;cAAA,oBAC1B1K,IAAA,CAACN,WAAW;gBAEV+K,IAAI,EAAEA,IAAK;gBACXU,KAAK,EAAC,MAAM;gBACZzJ,KAAK,EAAE;kBAAE0J,YAAY,EAAE;gBAAO,CAAE;gBAChCT,OAAO,EAAEzI;cAAY,GAJhBwI,KAKN,CAAC;YAAA,CACH;UAAC,CACF,CACH,EAEAxE,CAAC,CAACQ,IAAI,iBAAI1G,IAAA;YAAKyB,SAAS,EAAEc,MAAM,CAAC8I,IAAK;YAAA7E,QAAA,EAAEN,CAAC,CAACQ;UAAI,CAAM,CAAC;QAAA,GAhB9CR,CAAC,CAACpB,EAAE,IAAI2B,CAiBb,CAAC;MAAA,CACP;IAAC,GApBMJ,KAAK,CAACvB,EAqBX,CAAC;EAEV,CAAC,EACD,CAACvC,MAAM,EAAEL,WAAW,CACtB,CAAC;;EAED;EACA;EACA;EACA;EACA;;EAEA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA,IAAMoJ,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAA,EAAS;IAC9B,IAAI,CAAC1K,WAAW,IAAIA,WAAW,CAAC0C,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;IAEzD,oBACEtD,IAAA;MAAKyB,SAAS,EAAEc,MAAM,CAACgJ,iBAAkB;MAAA/E,QAAA,EACtC5F,WAAW,CAACgE,GAAG,CAAC,UAAC4G,IAAI;QAAA,oBACpBxL,IAAA;UAAgByB,SAAS,EAAEc,MAAM,CAACkJ,UAAW;UAAAjF,QAAA,eAC3CxG,IAAA;YAAKyB,SAAS,EAAEc,MAAM,CAACmJ,cAAe;YAAAlF,QAAA,eACpCxG,IAAA,CAACrB,MAAM;cACLqJ,IAAI,EAAC,MAAM;cACX2D,IAAI,eAAE3L,IAAA,CAACf,iBAAiB,IAAE,CAAE;cAC5B2M,YAAY,EAAC,KAAK;cAClBjB,OAAO,EAAE,SAAAA,QAAA,EAAM;gBACb,IAAI,CAACa,IAAI,EAAE;gBACXxK,SAAS,aAATA,SAAS,eAATA,SAAS,CAAGwK,IAAI,CAAC;cACnB,CAAE;cACF9J,KAAK,EAAE;gBACLmK,UAAU,EAAE,QAAQ;gBACpBC,MAAM,EAAE,MAAM;gBACdC,QAAQ,EAAE,YAAY;gBACtBC,SAAS,EAAE,MAAM;gBACjBC,OAAO,EAAE,UAAU;gBACnBC,UAAU,EAAE;cACd,CAAE;cAAA1F,QAAA,EAEDgF;YAAI,CACC;UAAC,CACN;QAAC,GArBEA,IAsBL,CAAC;MAAA,CACP;IAAC,CACC,CAAC;EAEV,CAAC;EAED,oBACExL,IAAA;IAAKyB,SAAS,EAAEzC,IAAI,CAACuD,MAAM,CAAC4J,OAAO,EAAE1K,SAAS,CAAE;IAACC,KAAK,EAAEA,KAAM;IAAA8E,QAAA,eAC5DtG,KAAA;MAAKuB,SAAS,EAAEc,MAAM,CAAC6J,IAAK;MAACC,GAAG,EAAE7J,OAAQ;MAAAgE,QAAA,GAEvC7F,QAAQ,iBACPX,IAAA;QAAKyB,SAAS,EAAEc,MAAM,CAAC5B,QAAS;QAAA6F,QAAA,eAC9BxG,IAAA,CAACR,cAAc;UAACkH,IAAI,EAAE/F,QAAS;UAACuB,WAAW,EAAEA;QAAY,CAAE;MAAC,CACzD,CACN,EAMAyC,UAAU,CAACC,GAAG,CAAC,UAACyB,KAAK,EAAE0D,GAAG;QAAA,OACzB1D,KAAK,CAACtB,IAAI,KAAK,MAAM,GACjBiG,eAAe,CAAC3E,KAAK,CAAC,GACtBD,cAAc,CAACC,KAAK,EAAE0D,GAAG,KAAKpF,UAAU,CAACrB,MAAM,GAAG,CAAC,EAAEnB,kBAAkB,CAAC;MAAA,CAC9E,CAAC,EAGAmJ,iBAAiB,CAAC,CAAC,eAEpBtL,IAAA;QAAKqM,GAAG,EAAE1J;MAAe,CAAE,CAAC;IAAA,CACzB;EAAC,CACH,CAAC;AAEV,CAAC;AAED,eAAerC,WAAW"}
1
+ {"version":3,"names":["React","useMemo","useCallback","useEffect","useRef","Button","Flex","Tooltip","message","antdMessage","clsx","SwapRightOutlined","ReloadOutlined","CopyOutlined","InfoCircleOutlined","copy","useStyles","MarkdownRender","FunctionCallRender","FileGallery","XAdkThoughtChain","parseAgentMessage","mergeChatStrategies","defaultToolKindResolver","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","scrollThreshold","XAdkChatbot","_ref","_mergedStrategies$par","_ref$loading","loading","prologue","suggestions","messages","showFnCallDetail","onConfirm","onSuggest","showRetry","showCopy","showLog","onRetry","onCopy","onShowLog","actions","actionsExtra","className","style","_ref$enableGrouping","enableGrouping","_ref$enableProcessPar","enableProcessParsing","parseOptions","_ref$initialized","initialized","onFileClick","renderFunctionCall","toolKindResolver","strategies","preset","styles","listRef","lastScrollTopRef","userHasScrolledRef","messagesEndRef","prevInitializedRef","mergedStrategies","resolveToolKind","name","msg","_ref2","_toolKindResolver","_mergedStrategies$res","call","parseProcessMessage","length","current","timer","setTimeout","_messagesEndRef$curre","scrollIntoView","behavior","clearTimeout","_messagesEndRef$curre2","handleScroll","el","currentTop","scrollTop","isAtBottom","Math","abs","scrollHeight","clientHeight","listElement","addEventListener","removeEventListener","chatGroups","map","_msg$isLike","id","role","msgs","invocationId","allFiles","fileData","isLike","groups","forEach","isRealUserQuery","functionResponse","functionCall","lastGroup","isLastGroupAgent","push","_msg$isLike2","concat","g","reduce","acc","m","_toConsumableArray","renderBotGroup","group","isLastGroup","botMsg","children","i","text","_renderFunctionCall","_msg$functionCall","showDetail","kind","renderApproval","renderHandoff","mergedToolMap","Map","callId","has","set","_objectSpread","_mergedToolMap$get","get","tool","args","nodes","currentProcessItems","processedToolIds","Set","flushProcessItems","type","items","key","mergedMsg","content","add","parts","part","partIdx","includes","titleMap","planning","replanning","reasoning","action_log","process_text","title","trim","lastNode","fullTextToCopy","filter","join","lastBotMsg","hasProcess","some","n","isGroupLoading","actionProps","isLastBotMsg","actionExtraNode","node","idx","defaultOpen","fileSection","fileHeader","display","flexWrap","gap","file","index","onClick","metaFooter","actionIcons","success","timestamp","renderUserGroup","userMsg","userContainer","align","marginBottom","card","renderSuggestions","suggestionWrapper","item","suggestion","suggestContent","icon","iconPosition","whiteSpace","height","wordWrap","textAlign","padding","lineHeight","wrapper","list","ref"],"sources":["../../../../src/components/XAdkChatbot/index.tsx"],"sourcesContent":["import React, { useMemo, useCallback, useEffect, useRef } from \"react\";\nimport { Button, Flex, Tooltip, message as antdMessage } from \"antd\";\nimport clsx from \"clsx\";\nimport {\n SwapRightOutlined,\n ReloadOutlined,\n CopyOutlined,\n InfoCircleOutlined,\n CheckCircleFilled,\n} from \"@ant-design/icons\";\nimport copy from \"copy-to-clipboard\";\nimport { useStyles } from \"./styles\";\nimport MarkdownRender from \"./components/MarkdownRender\";\nimport FunctionCallRender from \"./components/FunctionCallRender\";\nimport FileGallery from \"../FileGallery\";\nimport XAdkThoughtChain from \"@/components/XAdkThoughtChain\";\nimport { parseAgentMessage } from \"@/utils\";\nimport { mergeChatStrategies } from \"@/presets/xGroupAdk\";\nimport type { IMessage, XAdkChatbotProps, ChatGroup } from \"@/types\";\nimport type { ThoughtChainItemType } from \"@/types/XAdkThoughtChain\";\nimport { defaultToolKindResolver } from \"@/types/FunctionCallRender\";\n\nconst scrollThreshold = 10;\n\n/**\n * XAdkChatbot - 增强版聊天组件\n *\n * 新增功能:\n * - ✅ 自动消息分组 (enableGrouping)\n * - ✅ 自动解析思维链 (enableProcessParsing)\n * - ✅ 文件展示 (FileGallery)\n * - ✅ 操作栏 (重试/复制/日志)\n * - ✅ 欢迎页面 (agentName/agentIcon/description)\n */\nconst XAdkChatbot: React.FC<XAdkChatbotProps> = ({\n loading = false,\n prologue,\n suggestions,\n messages,\n showFnCallDetail,\n onConfirm,\n onSuggest,\n showRetry,\n showCopy,\n showLog,\n onRetry,\n onCopy,\n onShowLog,\n actions,\n actionsExtra,\n className,\n style,\n // welcome = null,\n enableGrouping = true,\n enableProcessParsing = true,\n parseOptions,\n initialized = false,\n onFileClick,\n renderFunctionCall,\n toolKindResolver,\n strategies,\n preset,\n}) => {\n const styles = useStyles();\n const listRef = useRef<HTMLDivElement>(null);\n const lastScrollTopRef = useRef(0);\n const userHasScrolledRef = useRef(false);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const prevInitializedRef = useRef(false);\n const mergedStrategies = useMemo(\n () => mergeChatStrategies(preset, strategies),\n [preset, strategies],\n );\n const resolveToolKind = useCallback(\n (name?: string, msg?: IMessage) =>\n toolKindResolver?.(name) ??\n mergedStrategies.resolveToolKind?.({ name, msg }) ??\n defaultToolKindResolver(name),\n [toolKindResolver, mergedStrategies],\n );\n const parseProcessMessage =\n mergedStrategies.parseProcessMessage ?? parseAgentMessage;\n\n // 初始化完成时滚动到底部\n useEffect(() => {\n if (!initialized) return;\n if (!messages.length) return;\n if (prevInitializedRef.current) return; // 只在第一次 initialized+messages 就绪时触发\n prevInitializedRef.current = true;\n // 推迟到浏览器完成 paint 后执行,确保 DOM 高度已撑开\n const timer = setTimeout(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"auto\" });\n }, 0);\n return () => clearTimeout(timer);\n }, [initialized, messages]);\n\n // 流式输出时滚动到底部\n useEffect(() => {\n if (!loading) return;\n if (userHasScrolledRef.current) return;\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [loading, messages]);\n\n // 处理滚动事件\n const handleScroll = useCallback(() => {\n const el = listRef.current;\n if (!el) return;\n const currentTop = el.scrollTop;\n\n if (currentTop < lastScrollTopRef.current) {\n userHasScrolledRef.current = true;\n }\n\n const isAtBottom =\n Math.abs(el.scrollHeight - currentTop - el.clientHeight) <=\n scrollThreshold;\n if (isAtBottom) {\n userHasScrolledRef.current = false;\n }\n\n lastScrollTopRef.current = currentTop;\n }, []);\n\n useEffect(() => {\n const listElement = listRef.current;\n if (!listElement) return;\n\n listElement.addEventListener(\"scroll\", handleScroll);\n return () => {\n listElement.removeEventListener(\"scroll\", handleScroll);\n };\n }, [handleScroll]);\n\n // ========== 消息分组逻辑 ==========\n const chatGroups = useMemo(() => {\n if (!enableGrouping) {\n // 不分组,每条消息独立\n return messages.map((msg) => ({\n id: msg.id,\n role: msg.role,\n msgs: [msg],\n invocationId: msg.invocationId,\n allFiles: msg.fileData || [],\n isLike: msg.isLike ?? 0,\n }));\n }\n\n const groups: ChatGroup[] = [];\n messages.forEach((msg) => {\n // 过滤 followup 消息\n if ((msg as any).role === \"followup\") return;\n\n const isRealUserQuery =\n msg.role === \"user\" && !msg.functionResponse && !msg.functionCall;\n const lastGroup = groups[groups.length - 1];\n const isLastGroupAgent = lastGroup?.role === \"bot\";\n\n if (isLastGroupAgent && !isRealUserQuery) {\n // 合并到上一个 bot 分组\n lastGroup.msgs.push(msg);\n if (msg.invocationId) lastGroup.invocationId = msg.invocationId;\n // 更新 isLike: 取最新的非0值,或保持当前值\n if (msg.isLike && msg.isLike !== 0) {\n lastGroup.isLike = msg.isLike;\n }\n } else {\n // 创建新分组\n groups.push({\n id: msg.id || `group-${groups.length}`,\n role: isRealUserQuery ? \"user\" : \"bot\",\n msgs: [msg],\n invocationId: msg.invocationId,\n allFiles: [],\n isLike: msg.isLike ?? 0,\n });\n }\n });\n\n // 合并文件\n groups.forEach((g) => {\n g.allFiles = g.msgs.reduce(\n (acc, m) => [...acc, ...(m.fileData || [])],\n [] as any[],\n );\n });\n\n return groups;\n }, [messages, enableGrouping]);\n\n // ========== 渲染 Bot 消息组 ==========\n const renderBotGroup = useCallback(\n (\n group: ChatGroup,\n isLastGroup: boolean,\n renderFunctionCall?: XAdkChatbotProps[\"renderFunctionCall\"],\n ) => {\n const { msgs, allFiles } = group;\n\n if (!enableProcessParsing) {\n // 不解析 process,简单渲染\n return (\n <div key={group.id} className={styles.botMsg}>\n {msgs.map((msg, i) => {\n if (msg.text) {\n return (\n <MarkdownRender\n key={`${msg.id}-${i}`}\n text={msg.text}\n onFileClick={onFileClick}\n />\n );\n }\n if (msg.functionCall) {\n return (\n renderFunctionCall?.(msg) ?? (\n <FunctionCallRender\n key={`${msg.id}-${i}`}\n msg={msg}\n showDetail={showFnCallDetail}\n onConfirm={onConfirm}\n kind={resolveToolKind(msg.functionCall?.name, msg)}\n renderApproval={mergedStrategies.renderApproval}\n renderHandoff={mergedStrategies.renderHandoff}\n />\n )\n );\n }\n return null;\n })}\n </div>\n );\n }\n\n // ========== 解析 Process 内容 ==========\n\n // 1. 合并工具调用\n const mergedToolMap = new Map<string, IMessage>();\n msgs.forEach((msg) => {\n if (msg.functionCall) {\n const callId = msg.functionCall.id || \"\";\n if (!mergedToolMap.has(callId)) {\n mergedToolMap.set(callId, { ...msg });\n } else {\n mergedToolMap.set(callId, {\n ...(mergedToolMap.get(callId) ?? {}),\n ...msg,\n });\n }\n } else if (msg.functionResponse) {\n const callId = msg.functionResponse.id || \"\";\n if (mergedToolMap.has(callId)) {\n const tool = mergedToolMap.get(callId);\n if (tool) tool.functionResponse = msg.functionResponse;\n } else {\n mergedToolMap.set(callId, {\n ...msg,\n functionCall: {\n id: callId,\n name: msg.functionResponse.name || \"Unknown\",\n args: {},\n },\n });\n }\n }\n });\n\n // 2. 解析文本消息中的 process 内容\n type RenderNode =\n | { type: \"text\"; content: string; key: string }\n | { type: \"process\"; items: ThoughtChainItemType[]; key: string };\n\n const nodes: RenderNode[] = [];\n let currentProcessItems: ThoughtChainItemType[] = [];\n const processedToolIds = new Set<string>();\n\n const flushProcessItems = () => {\n if (currentProcessItems.length > 0) {\n nodes.push({\n type: \"process\",\n items: [...currentProcessItems],\n key: `process-${nodes.length}`,\n });\n currentProcessItems = [];\n }\n };\n\n msgs.forEach((msg) => {\n // 处理工具调用\n if (msg.functionCall) {\n const callId = msg.functionCall.id || \"\";\n if (!processedToolIds.has(callId)) {\n const mergedMsg = mergedToolMap.get(callId);\n if (mergedMsg) {\n currentProcessItems.push({\n type: \"tool\",\n key: `tool-${callId}`,\n content: \"\",\n msg: mergedMsg,\n });\n processedToolIds.add(callId);\n }\n }\n }\n // 处理文本消息\n else if (msg.text && !msg.functionResponse) {\n const parts = parseProcessMessage(msg.text, parseOptions as any);\n\n parts.forEach((part, partIdx) => {\n // process 内容放入 currentProcessItems\n if (\n [\n \"planning\",\n \"replanning\",\n \"reasoning\",\n \"action_log\",\n \"process_text\",\n ].includes(part.type)\n ) {\n const titleMap: Record<string, string> = {\n planning: \"任务规划\",\n replanning: \"重新规划\",\n reasoning: \"推理分析\",\n action_log: \"行动记录\",\n process_text: \"过程分析\",\n };\n\n currentProcessItems.push({\n type: \"text\",\n key: `${msg.id}-${partIdx}`,\n content: part.content,\n title: titleMap[part.type] || \"分析\",\n });\n }\n // 普通文本内容\n else {\n flushProcessItems();\n if (part.content.trim()) {\n const lastNode = nodes[nodes.length - 1];\n if (lastNode?.type === \"text\") {\n // 合并到上一个文本节点\n lastNode.content += \"\\n\\n\" + part.content;\n } else {\n nodes.push({\n type: \"text\",\n content: part.content,\n key: `text-${msg.id}-${partIdx}`,\n });\n }\n }\n }\n });\n }\n });\n\n // 最后flush一次\n flushProcessItems();\n\n // 3. 准备操作栏数据\n const fullTextToCopy = msgs\n .filter((m) => !m.functionCall && !m.functionResponse)\n .map((m) => m.text || \"\")\n .join(\"\");\n\n const lastBotMsg = msgs[msgs.length - 1];\n const hasProcess = nodes.some((n) => n.type === \"process\");\n const isGroupLoading = loading && isLastGroup;\n const actionProps = { message: group, isLastBotMsg: isLastGroup };\n const actionExtraNode = actionsExtra?.(actionProps);\n\n // 4. 渲染\n return (\n <div key={group.id} className={styles.botMsg}>\n {nodes.map((node, idx) => {\n if (node.type === \"process\") {\n return (\n <XAdkThoughtChain\n key={node.key}\n loading={isGroupLoading}\n title=\"思维链已完成\"\n items={node.items}\n showFnCallDetail={showFnCallDetail}\n onConfirm={onConfirm}\n defaultOpen={isGroupLoading}\n renderFunctionCall={renderFunctionCall}\n toolKindResolver={(name) => resolveToolKind(name)}\n strategies={mergedStrategies}\n />\n );\n }\n\n // 文本节点\n // const showBadge =\n // hasProcess && nodes.findIndex((n) => n.type === \"text\") === idx;\n return (\n <div key={node.key}>\n {/* {showBadge && (\n <div className={styles.successBadge}>\n <CheckCircleFilled /> 已完成所有规划任务\n </div>\n )} */}\n <MarkdownRender text={node.content} onFileClick={onFileClick} />\n </div>\n );\n })}\n\n {/* 文件展示 */}\n {allFiles.length > 0 && (\n <div className={styles.fileSection}>\n <div className={styles.fileHeader}>\n <span>生成文件 ({allFiles.length})</span>\n </div>\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"8px\" }}>\n {allFiles.map((file, index) => (\n <FileGallery key={index} file={file} onClick={onFileClick} />\n ))}\n </div>\n </div>\n )}\n\n {/* 操作栏 */}\n {!isGroupLoading &&\n (actions ||\n showRetry ||\n showCopy ||\n showLog ||\n actionExtraNode) && (\n <div className={styles.metaFooter}>\n {actions ? (\n actions(actionProps)\n ) : (\n <Flex gap={16} className={styles.actionIcons}>\n {showRetry && isLastGroup && (\n <Tooltip title=\"重新生成\">\n <ReloadOutlined onClick={onRetry} />\n </Tooltip>\n )}\n {showCopy && (\n <Tooltip title=\"复制内容\">\n <CopyOutlined\n onClick={() => {\n copy(fullTextToCopy);\n antdMessage.success(\"复制成功\");\n onCopy?.(fullTextToCopy);\n }}\n />\n </Tooltip>\n )}\n {showLog && lastBotMsg?.invocationId && (\n <Tooltip title=\"查看日志\">\n <InfoCircleOutlined\n onClick={() =>\n onShowLog?.(\n lastBotMsg.invocationId!,\n lastBotMsg.timestamp,\n )\n }\n />\n </Tooltip>\n )}\n </Flex>\n )}\n {actionExtraNode}\n </div>\n )}\n </div>\n );\n },\n [\n enableProcessParsing,\n parseOptions,\n parseProcessMessage,\n showFnCallDetail,\n onConfirm,\n loading,\n showRetry,\n showCopy,\n showLog,\n onRetry,\n onCopy,\n onShowLog,\n actions,\n actionsExtra,\n onFileClick,\n styles,\n resolveToolKind,\n mergedStrategies,\n ],\n );\n\n // ========== 渲染用户消息组 ==========\n const renderUserGroup = useCallback(\n (group: ChatGroup) => {\n return (\n <div key={group.id} className={styles.userMsg}>\n {group.msgs.map((m, i) => (\n <div key={m.id || i} className={styles.userContainer}>\n {/* 文件展示 */}\n {m.fileData && m.fileData.length > 0 && (\n <>\n {m.fileData.map((file, index) => (\n <FileGallery\n key={index}\n file={file}\n align=\"left\"\n style={{ marginBottom: \"16px\" }}\n onClick={onFileClick}\n />\n ))}\n </>\n )}\n {/* 文本展示 */}\n {m.text && <div className={styles.card}>{m.text}</div>}\n </div>\n ))}\n </div>\n );\n },\n [styles, onFileClick],\n );\n\n // ========== 欢迎页面 ==========\n // const isEmpty =\n // messages.length === 0 &&\n // !prologue &&\n // (!suggestions || suggestions.length === 0);\n\n // const renderWelcome = () => {\n // if (!isEmpty) return null;\n\n // return (\n // <>\n // {welcome ?? (\n // <div className={styles.welcomeWrapper}>\n // {agentIcon && (\n // <img src={agentIcon} alt=\"icon\" className={styles.welcomeIcon} />\n // )}\n // {agentName && (\n // <div className={styles.welcomeTitle}>{agentName}</div>\n // )}\n // {description && (\n // <div className={styles.welcomeDesc}>{description}</div>\n // )}\n // </div>\n // )}\n // </>\n // );\n // };\n\n // ========== 渲染建议问题 ==========\n const renderSuggestions = () => {\n if (!suggestions || suggestions.length === 0) return null;\n\n return (\n <div className={styles.suggestionWrapper}>\n {suggestions.map((item) => (\n <div key={item} className={styles.suggestion}>\n <div className={styles.suggestContent}>\n <Button\n type=\"text\"\n icon={<SwapRightOutlined />}\n iconPosition=\"end\"\n onClick={() => {\n if (!item) return;\n onSuggest?.(item);\n }}\n style={{\n whiteSpace: \"normal\",\n height: \"auto\",\n wordWrap: \"break-word\",\n textAlign: \"left\",\n padding: \"4px 15px\",\n lineHeight: \"1.5\",\n }}\n >\n {item}\n </Button>\n </div>\n </div>\n ))}\n </div>\n );\n };\n\n return (\n <div className={clsx(styles.wrapper, className)} style={style}>\n <div className={styles.list} ref={listRef}>\n {/* 开场白 */}\n {prologue && (\n <div className={styles.prologue}>\n <MarkdownRender text={prologue} onFileClick={onFileClick} />\n </div>\n )}\n\n {/* 欢迎页面 */}\n {/* {renderWelcome()} */}\n\n {/* 消息列表 */}\n {chatGroups.map((group, idx) =>\n group.role === \"user\"\n ? renderUserGroup(group)\n : renderBotGroup(\n group,\n idx === chatGroups.length - 1,\n renderFunctionCall,\n ),\n )}\n\n {/* 建议问题 */}\n {renderSuggestions()}\n\n <div ref={messagesEndRef} />\n </div>\n </div>\n );\n};\n\nexport default XAdkChatbot;\n"],"mappings":"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"}
@@ -280,8 +280,10 @@ function useADKChat(_ref) {
280
280
  // 处理消息部分(关键更新)
281
281
  var processPart = useCallback(function (event, part) {
282
282
  var _event$groundingMetad2;
283
+ var ignore = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
283
284
  var renderedContent = (_event$groundingMetad2 = event.groundingMetadata) === null || _event$groundingMetad2 === void 0 || (_event$groundingMetad2 = _event$groundingMetad2.searchEntryPoint) === null || _event$groundingMetad2 === void 0 ? void 0 : _event$groundingMetad2.renderedContent;
284
285
  if (part.text) {
286
+ if (ignore) return;
285
287
  var newChunk = part.text;
286
288
  if (!textMsgRef.current || textMsgRef.current.thought !== part.thought) {
287
289
  var newMessage = {
@@ -439,8 +441,10 @@ function useADKChat(_ref) {
439
441
  _step2;
440
442
  try {
441
443
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
444
+ var _chunkJson;
442
445
  var part = _step2.value;
443
- processPart(chunkJson, part);
446
+ // partial为 true 时忽略该条消息文本
447
+ processPart(chunkJson, part, ((_chunkJson = chunkJson) === null || _chunkJson === void 0 ? void 0 : _chunkJson.partial) === false);
444
448
  }
445
449
  } catch (err) {
446
450
  _iterator2.e(err);
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useCallback","useMemo","useRef","useState","fetchEventSource","EventStreamContentType","message","v4","SESSION_PAGE_SIZE","API_SUCCESS_CODE","SuccessCode","ErrorCode","fetchAppConfig","fetchSessionList","fetchSessionDetail","closeSession","updateSessionTitle","addFeedback","safeJsonParse","combineTextParts","parts","result","combinedTextPart","_iterator","_createForOfIteratorHelper","_step","s","n","done","part","value","isPureText","text","fileData","thought","_objectSpread","push","undefined","err","e","f","useADKChat","_ref","_ref$url","url","window","location","origin","token","_ref$config","config","_ref$type","type","_ref$enabled","enabled","strategies","onError","onMessage","onSuccess","onStream","_useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","sessionLoading","setSessionLoading","sendingRef","ctrl","_ref2","appNo","showFirstSession","_useState5","_useState6","appInfo","setAppInfo","_useState7","_useState8","initialized","setInitialized","_useState9","_useState10","sessionList","setSessionList","_useState11","_useState12","currentSessionId","setCurrentSessionId","_useState13","total","pageNum","pageSize","_useState14","sessionPagination","setSessionPagination","_useState15","_useState16","prologue","setPrologue","_useState17","_useState18","suggestedQuestions","setSuggestedQuestions","_useState19","_useState20","messages","setMessages","stateDeltaRef","mergedMessages","fnResMap","forEach","msg","functionResponse","_msg$functionResponse","id","map","functionCall","_msg$functionCall","textMsgRef","eventDataRef","Map","insertMessage","prev","lastMessage","length","isLoading","concat","_toConsumableArray","slice","insertSuggestedQuestions","suggested_questions","arguments","insertPrologue","updateMessage","m","withEventMeta","event","_event$modelCode","_event$usageMetadata","_event$finishReason","modelCode","usageMetadata","finishReason","raw","updateLastBotEventMeta","next","index","findLastIndex","role","storeEvents","_event$actions","title","actions","artifactDelta","name","executableCode","_part$executableCode$","code","codeExecutionResult","outcome","errorMessage","updatedEvent","newEventData","current","set","storeMessage","author","invocationId","eventId","timestamp","isLike","inlineData","displayName","data","mimeType","_event$groundingMetad","groundingMetadata","searchEntryPoint","renderedContent","Object","keys","processPart","_event$groundingMetad2","newChunk","newMessage","partial","processFollowupPart","_event$content","content","processErrorMessage","chunkJson","processActionArtifact","sendMessageRequest","values","Promise","resolve","abort","AbortController","requestUrl","method","signal","body","JSON","stringify","openWhenHidden","headers","stream","Authorization","onopen","response","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","ok","get","status","API_ERROR","stop","onmessage","rawData","sessionId","error","warning","_iterator2","_step2","onclose","_textMsgRef$current","onerror","console","startChat","_ref4","_callee2","_ref3","_ref3$text","_ref3$files","files","_callee2$","_context2","abrupt","trim","temp","file","_file$response","_file$response2","_file$response3","fileName","fileUri","tempUrl","fileUrl","_file$response4","_file$response5","_file$response6","_file$response7","_file$response8","_file$response9","fileId","fileType","stateDelta","finish","initAppConversations","_x","apply","reChat","_ref5","_callee3","lastUserIndex","newMessages","lastUserMessage","_lastUserMessage$text","_lastUserMessage$file","_callee3$","_context3","confirmFnCall","fnCall","confirmed","_strategies$createFun","_strategies$createFun2","createFunctionResponse","call","suggestChat","stopChat","_ctrl$current","clearChat","_appInfo$onboardingIn","_appInfo$onboardingIn2","newSessionId","onboardingInfo","formatMessages","isReplace","mapped","item","Array","isArray","toLowerCase","filter","p","Boolean","textParts","fileDataParts","otherParts","_iterator3","_step3","functionCallMsg","find","_msg$functionCall2","_part$functionRespons","setCurrentSession","_ref6","_callee4","_yield$fetchSessionDe","_appInfo$onboardingIn3","_appInfo$onboardingIn4","_callee4$","_context4","sent","_x2","_ref7","_callee5","fetchDetail","_yield$fetchSessionLi","_yield$fetchSessionLi2","pagination","formatSessions","_data$","_appInfo$onboardingIn5","_appInfo$onboardingIn6","_args5","_callee5$","_context5","key","label","Date","startTime","getTime","meta","APP_MESSAGES_INIT_SUCCESS","t0","deleteSession","_ref8","_callee6","_yield$closeSession","_callee6$","_context6","_x3","likeMessage","_ref9","_callee7","feedbackData","_yield$addFeedback","_callee7$","_context7","requestId","_x4","_x5","_x6","updateSession","_ref10","_callee8","_yield$updateSessionT","_callee8$","_context8","_x7","_x8","initConfig","_ref11","_callee9","_yield$fetchAppConfig","_callee9$","_context9","APP_CONFIG_INIT_SUCCESS","APP_NOT_FOUND","suggestions","setStateDelta","delta"],"sources":["../../../src/hooks/useADKChat.ts"],"sourcesContent":["import { useEffect, useCallback, useMemo, useRef, useState } from \"react\";\nimport {\n fetchEventSource,\n EventStreamContentType,\n} from \"@microsoft/fetch-event-source\";\nimport { message } from \"antd\";\nimport { v4 } from \"uuid\";\nimport { SESSION_PAGE_SIZE, API_SUCCESS_CODE } from \"@/constants\";\nimport {\n SuccessCode,\n ErrorCode,\n DebugOptions,\n FunctionCall,\n SendContent,\n SessionData,\n AgentRunRequest,\n Event,\n FunctionResponse,\n IMessage,\n Part,\n} from \"@/types\";\nimport {\n fetchAppConfig,\n fetchSessionList,\n fetchSessionDetail,\n closeSession,\n updateSessionTitle,\n addFeedback,\n type ChatConfig,\n} from \"@/services/api\";\nimport { safeJsonParse } from \"@/utils\";\n\nconst combineTextParts = (parts: Part[]) => {\n const result: Part[] = [];\n let combinedTextPart: Part | undefined;\n\n // eslint-disable-next-line no-restricted-syntax\n for (const part of parts) {\n // 纯文本 part(没有 fileData 等其他字段)才合并\n const isPureText = part.text && !part.fileData;\n if (isPureText) {\n // 如果没有 combined 或 combined 思考类型跟当前 part 不同,则创建新的合并引用\n if (!combinedTextPart || combinedTextPart.thought !== part.thought) {\n combinedTextPart = { ...part };\n result.push(combinedTextPart);\n } else {\n combinedTextPart.text = (combinedTextPart.text || \"\") + (part.text || \"\");\n }\n } else {\n combinedTextPart = undefined;\n result.push(part);\n }\n }\n return result;\n};\n\nfunction useADKChat({\n url = window.location.origin,\n token,\n config = {},\n type = \"agentDebug\",\n enabled = true, // ← 新增: 是否启用 Hook\n strategies,\n onError,\n onMessage,\n onSuccess,\n onStream,\n}: DebugOptions) {\n const [loading, setLoading] = useState(false);\n const [sessionLoading, setSessionLoading] = useState(false);\n const sendingRef = useRef(false); // 同步锁,防止快速重复点击\n const ctrl = useRef<AbortController | null>(null);\n // 应用配置\n const { appNo, showFirstSession } = config || {};\n const [appInfo, setAppInfo] = useState<ChatConfig | null>(null);\n // 初始化完成\n const [initialized, setInitialized] = useState(false);\n // 会话记录\n const [sessionList, setSessionList] = useState<SessionData[]>([]);\n // 当前会话\n const [currentSessionId, setCurrentSessionId] = useState<string>(() => v4());\n // 会话分页设置\n const [sessionPagination, setSessionPagination] = useState({\n total: 0,\n pageNum: 1,\n pageSize: SESSION_PAGE_SIZE,\n });\n // 开场白\n const [prologue, setPrologue] = useState<string>(\"\");\n // 建议问题\n const [suggestedQuestions, setSuggestedQuestions] = useState<string[]>([]);\n const [messages, setMessages] = useState<IMessage[]>([]);\n // 用户自定义业务参数 (stateDelta),每次发送请求时携带\n const stateDeltaRef = useRef<Record<string, any> | undefined>(undefined);\n const mergedMessages = useMemo(() => {\n const fnResMap: Record<string, FunctionResponse> = {};\n messages.forEach((msg) => {\n if (msg.functionResponse) {\n fnResMap[msg?.functionResponse?.id || \"\"] = msg.functionResponse;\n }\n });\n return messages.map((msg) => {\n if (msg.functionCall) {\n return {\n ...msg,\n functionResponse: fnResMap[msg?.functionCall?.id || \"\"],\n };\n }\n return msg;\n });\n }, [messages]);\n const textMsgRef = useRef<IMessage>(null);\n const eventDataRef = useRef<Map<string, any>>(new Map());\n\n // 插入消息\n const insertMessage = useCallback((msg: IMessage) => {\n setMessages((prev) => {\n const lastMessage = prev[prev.length - 1];\n if (lastMessage?.isLoading) {\n return [...prev.slice(0, -1), msg, lastMessage];\n }\n return [...prev, msg];\n });\n }, []);\n\n // 初始化开场白预设置问题\n const insertSuggestedQuestions = (suggested_questions: string[] = []) => {\n if (!suggested_questions?.length) return;\n // 无消息内容 且 有建议问题时\n if (messages.length === 0 && suggested_questions.length) {\n setSuggestedQuestions(suggested_questions);\n }\n };\n\n // 初始化开场白\n const insertPrologue = (prologue: string) => {\n if (prologue) {\n setPrologue(prologue);\n }\n };\n\n // 更新消息\n const updateMessage = useCallback((msg: IMessage) => {\n setMessages((prev) => {\n return prev.map((m) => {\n if (m.id === msg.id) {\n return msg;\n }\n return m;\n });\n });\n }, []);\n\n const withEventMeta = useCallback((msg: IMessage, event: Event): IMessage => {\n return {\n ...msg,\n modelCode: event.modelCode ?? msg.modelCode,\n usageMetadata: event.usageMetadata ?? msg.usageMetadata,\n finishReason: event.finishReason ?? msg.finishReason,\n raw: {\n ...(msg.raw || {}),\n ...event,\n },\n };\n }, []);\n\n const updateLastBotEventMeta = useCallback(\n (event: Event) => {\n if (!event.modelCode && !event.usageMetadata && !event.finishReason) return;\n\n setMessages((prev) => {\n const next = [...prev];\n const index = next.findLastIndex((msg) => msg.role === \"bot\");\n if (index < 0) return prev;\n\n next[index] = withEventMeta(next[index], event);\n return next;\n });\n },\n [withEventMeta],\n );\n\n // 存储事件\n const storeEvents = useCallback((part: Part | null, event: any) => {\n let title = \"\";\n\n if (part == null && event.actions?.artifactDelta) {\n title += \"eventAction: artifact\";\n } else if (part) {\n if (part.text) {\n title += `text:${part.text}`;\n } else if (part.functionCall) {\n title += `functionCall:${part.functionCall.name}`;\n } else if (part.functionResponse) {\n title += `functionResponse:${part.functionResponse.name}`;\n } else if (part.executableCode) {\n title += `executableCode:${part.executableCode.code?.slice(0, 10)}`;\n } else if (part.codeExecutionResult) {\n title += `codeExecutionResult:${part.codeExecutionResult.outcome}`;\n } else if (part.errorMessage) {\n title += `errorMessage:${part.errorMessage}`;\n }\n }\n\n const updatedEvent = { ...event, title };\n\n const newEventData = new Map(eventDataRef.current);\n newEventData.set(event.id, updatedEvent);\n eventDataRef.current = newEventData;\n }, []);\n\n // 存储消息\n const storeMessage = useCallback(\n (part: Part | null, event: Event, role: \"user\" | \"bot\") => {\n const msg: IMessage = {\n id: v4(),\n author: event.author,\n invocationId: event.invocationId,\n eventId: event.id,\n timestamp: event.timestamp,\n isLike: event.isLike || 0,\n role,\n modelCode: event.modelCode,\n usageMetadata: event.usageMetadata,\n finishReason: event.finishReason,\n raw: event,\n };\n\n if (part) {\n if (part.inlineData) {\n msg.inlineData = {\n displayName: part.inlineData.displayName,\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\n };\n } else if (part.text) {\n msg.text = part.text;\n msg.thought = part.thought;\n\n if (event?.groundingMetadata?.searchEntryPoint?.renderedContent) {\n msg.renderedContent =\n event.groundingMetadata.searchEntryPoint.renderedContent;\n }\n } else if (part.fileData) {\n msg.fileData = [part.fileData];\n } else if (part.functionCall) {\n msg.functionCall = part.functionCall;\n } else if (part.functionResponse) {\n msg.functionResponse = part.functionResponse;\n } else if (part.executableCode) {\n msg.executableCode = part.executableCode;\n } else if (part.codeExecutionResult) {\n msg.codeExecutionResult = part.codeExecutionResult;\n }\n }\n\n if (part && Object.keys(part).length > 0) {\n insertMessage(msg);\n }\n },\n [insertMessage],\n );\n\n // 处理消息部分(关键更新)\n const processPart = useCallback(\n (event: Event, part: Part) => {\n const renderedContent =\n event.groundingMetadata?.searchEntryPoint?.renderedContent;\n if (part.text) {\n const newChunk = part.text;\n\n if (\n !textMsgRef.current ||\n textMsgRef.current.thought !== part.thought\n ) {\n const newMessage: IMessage = {\n id: v4(),\n author: event.author,\n invocationId: event.invocationId,\n eventId: event.id,\n timestamp: event.timestamp,\n role: \"bot\",\n text: newChunk,\n isLike: event.isLike || 0,\n thought: part.thought,\n modelCode: event.modelCode,\n usageMetadata: event.usageMetadata,\n finishReason: event.finishReason,\n raw: event,\n };\n\n if (renderedContent) {\n newMessage.renderedContent = renderedContent;\n }\n\n textMsgRef.current = newMessage;\n // 存储原数据\n storeEvents(part, event);\n // 插入消息\n insertMessage(newMessage);\n } else {\n if (renderedContent) {\n textMsgRef.current = {\n ...textMsgRef.current,\n renderedContent,\n };\n }\n textMsgRef.current = {\n ...withEventMeta(textMsgRef.current, event),\n text: (textMsgRef.current.text || \"\") + newChunk,\n };\n updateMessage(textMsgRef.current);\n if (event.partial === false) {\n storeEvents(part, event);\n textMsgRef.current = null;\n }\n }\n } else {\n textMsgRef.current = null;\n storeEvents(part, event);\n storeMessage(part, event, \"bot\");\n }\n },\n [storeEvents, storeMessage, insertMessage, updateMessage, withEventMeta],\n );\n\n // 处理建议类消息\n const processFollowupPart = useCallback(\n (event: Event) => {\n // 获取建议类消息的文本内容\n const part = event?.content?.parts?.[0] || null;\n const text = part?.text || \"\";\n storeEvents(part, event);\n if (text) {\n setSuggestedQuestions((prev) => [...prev, text]);\n }\n },\n [storeEvents, insertMessage],\n );\n\n // 处理错误消息\n const processErrorMessage = useCallback(\n (chunkJson: any) => {\n storeEvents(null, chunkJson);\n insertMessage({\n id: v4(),\n text: chunkJson.errorMessage,\n role: \"bot\",\n });\n },\n [storeEvents, insertMessage],\n );\n\n // 处理动作和制品\n const processActionArtifact = useCallback(\n (event: any) => {\n if (event.actions && event.actions.artifactDelta) {\n storeEvents(null, event);\n storeMessage(null, event, \"bot\");\n }\n },\n [storeEvents, storeMessage],\n );\n\n // 发送消息请求\n const sendMessageRequest = useCallback(\n (values: AgentRunRequest) => {\n return new Promise<void>((resolve) => {\n if (ctrl.current) {\n ctrl.current.abort();\n }\n setLoading(true);\n ctrl.current = new AbortController();\n const requestUrl = `${url}/api/gateway-web/openApi/v1/aizt/app/${appNo}/sendMsgStreaming`;\n\n fetchEventSource(requestUrl, {\n method: \"POST\",\n signal: ctrl.current.signal,\n body: JSON.stringify(values),\n openWhenHidden: true,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Cache-Control\": \"no-cache\",\n stream: \"true\",\n Authorization: `Bearer ${token}`,\n },\n async onopen(response) {\n if (\n response.ok &&\n response.headers.get(\"content-type\") === EventStreamContentType\n ) {\n // everything's good\n } else if (response.status === 401 || response.status === 403) {\n setLoading(false);\n onError?.({\n code: ErrorCode.API_ERROR,\n message: response.status === 401 ? \"认证失败,token 无效或已过期\" : \"无权限访问该资源\",\n });\n resolve();\n } else if (\n response.status >= 400 &&\n response.status < 500 &&\n response.status !== 429\n ) {\n resolve();\n } else {\n resolve();\n }\n },\n onmessage: (event) => {\n const rawData = safeJsonParse(event.data, {});\n\n // 处理新的数据格式: { data: {...}, result: {...} }\n let chunkJson: Event = rawData;\n if (rawData.data && rawData.result) {\n // 转换为旧格式\n chunkJson = {\n ...rawData.data,\n content: rawData.data, // data 本身就是 content\n invocationId: rawData.result.invocationId,\n sessionId: rawData.result.sessionId,\n id: rawData.result.invocationId,\n };\n }\n\n if (chunkJson.error) {\n message.warning(chunkJson.error);\n return;\n }\n onStream?.(chunkJson);\n updateLastBotEventMeta(chunkJson);\n if (chunkJson.content) {\n // 建议类消息单独处理\n if (chunkJson.content.role === \"followup\") {\n processFollowupPart(chunkJson);\n return;\n }\n // eslint-disable-next-line no-restricted-syntax\n for (const part of combineTextParts(chunkJson.content.parts)) {\n processPart(chunkJson, part);\n }\n } else if (chunkJson.errorMessage) {\n processErrorMessage(chunkJson);\n } else if (chunkJson.actions) {\n processActionArtifact(chunkJson);\n }\n },\n onclose: () => {\n setLoading(false);\n if (textMsgRef.current) {\n onMessage?.(textMsgRef.current?.text || \"\", textMsgRef.current);\n }\n textMsgRef.current = null;\n resolve();\n },\n onerror: (error) => {\n setLoading(false);\n resolve();\n console.error(\"EventSource failed:\", error);\n throw error;\n },\n });\n });\n },\n [\n type,\n currentSessionId,\n processActionArtifact,\n processErrorMessage,\n processPart,\n updateLastBotEventMeta,\n ],\n );\n\n // 发送会话\n const startChat = async ({\n text = \"\",\n files = [],\n functionResponse,\n }: SendContent) => {\n if (loading || sendingRef.current) return;\n if (!text.trim() && !files?.length && !functionResponse) return;\n sendingRef.current = true;\n // 清空建议问题\n setSuggestedQuestions([]);\n // 发送消息\n setMessages((prev) => {\n let temp = [...prev];\n // 如果 text 存在\n if (text.trim()) {\n temp.push({\n id: v4(),\n role: \"user\",\n text,\n });\n }\n // 如果file 存在\n if (files.length > 0) {\n temp.push({\n id: v4(),\n role: \"user\",\n fileData: files.map((file) => ({\n displayName: file.fileName || file.name,\n mimeType: file.mimeType || file.response?.mimeType,\n fileUri: file.tempUrl || file.response?.fileUrl || file.response?.tempUrl,\n })),\n });\n }\n // 如果 functionResponse 存在\n if (functionResponse) {\n temp.push({\n id: v4(),\n role: \"user\",\n functionResponse,\n });\n }\n return temp;\n });\n try {\n await sendMessageRequest({\n stream: true,\n sessionId: currentSessionId,\n content: {\n role: \"user\",\n parts: functionResponse ? [{ functionResponse }] : [{ text }],\n },\n files: files.map((file) => ({\n fileName: file.fileName || file.response?.fileName,\n fileId: file.fileId || file.response?.fileId,\n tempUrl: file.tempUrl || file.response?.fileUrl || file.response?.tempUrl,\n type: file.type || file.response?.fileType,\n mimeType: file.mimeType || file.response?.mimeType,\n })),\n ...(stateDeltaRef.current !== undefined && { stateDelta: stateDeltaRef.current }),\n });\n } finally {\n sendingRef.current = false;\n }\n // 获取聊天记录\n initAppConversations();\n };\n\n // 重新发送会话\n const reChat = async () => {\n if (loading || sendingRef.current) return;\n if (messages.length === 0) return;\n sendingRef.current = true;\n // 清空建议问题\n setSuggestedQuestions([]);\n\n // 找到最后一条用户消息的索引,删除其后所有 bot 消息\n const lastUserIndex = messages.findLastIndex(\n (msg) => msg.role === \"user\" && !msg.functionResponse,\n );\n if (lastUserIndex === -1) {\n sendingRef.current = false;\n return;\n }\n\n const newMessages = messages.slice(0, lastUserIndex + 1);\n setMessages(newMessages);\n\n const lastUserMessage = newMessages[lastUserIndex];\n const { text = \"\", fileData = [] } = lastUserMessage;\n\n try {\n await sendMessageRequest({\n stream: true,\n sessionId: currentSessionId,\n content: {\n role: \"user\",\n parts: [{ text }],\n },\n files: fileData?.map((file) => ({\n fileName: file.displayName,\n tempUrl: file.fileUri,\n mimeType: file.mimeType,\n })),\n ...(stateDeltaRef.current !== undefined && { stateDelta: stateDeltaRef.current }),\n });\n } finally {\n sendingRef.current = false;\n }\n };\n\n // 确认函数调用\n const confirmFnCall = (fnCall: FunctionCall, confirmed: boolean) => {\n const functionResponse =\n strategies?.createFunctionResponse?.(fnCall, confirmed) ?? {\n id: fnCall.id,\n name: fnCall.name,\n response: { confirmed },\n };\n startChat({ functionResponse });\n };\n\n // 使用建议问题\n const suggestChat = (text: string) => {\n if (loading) return;\n if (!text.trim()) return;\n setSuggestedQuestions([]);\n startChat({ text });\n };\n\n // 停止会话\n const stopChat = useCallback(() => {\n ctrl.current?.abort();\n setLoading(false);\n textMsgRef.current = null;\n }, [ctrl]);\n\n // 清除/重置会话\n const clearChat = () => {\n const newSessionId = v4();\n setCurrentSessionId(newSessionId);\n // 重置聊天内容\n stopChat();\n setPrologue(appInfo?.onboardingInfo?.prologue || \"\");\n setMessages([]);\n setSuggestedQuestions(appInfo?.onboardingInfo?.suggested_questions || []);\n };\n\n // 格式化会话记录\n const formatMessages = (messages: any[], isReplace = false) => {\n const mapped: IMessage[] = [];\n messages.forEach((item) => {\n if (!item || !item.content || !Array.isArray(item.content.parts)) return;\n\n const role =\n (item.content.role || \"\").toLowerCase() === \"user\" ? \"user\" : \"bot\";\n const parts = Array.isArray(item.content.parts)\n ? item.content.parts.filter((p: any) => {\n if (!p) return false;\n return Boolean(\n p.text ||\n p.inlineData ||\n p.functionCall ||\n p.functionResponse ||\n p.fileData ||\n p.executableCode ||\n p.codeExecutionResult ||\n p.errorMessage,\n );\n })\n : [];\n\n if (parts.length === 0) return;\n\n // 将同一条历史消息的 text/fileData parts 合并到一条 IMessage,避免拆分显示\n const textParts = parts.filter((p: any) => p.text || p.errorMessage || p.inlineData);\n const fileDataParts = parts.filter((p: any) => p.fileData);\n const otherParts = parts.filter((p: any) => !p.text && !p.errorMessage && !p.inlineData && !p.fileData);\n\n // 如果有 text/fileData,合并为一条消息\n if (textParts.length > 0 || fileDataParts.length > 0) {\n const msg: IMessage = {\n id: v4(),\n author: item.author,\n invocationId: item.invocationId,\n eventId: item.id,\n timestamp: item.timestamp,\n isLike: item.isLike,\n role,\n modelCode: item.modelCode,\n usageMetadata: item.usageMetadata,\n finishReason: item.finishReason,\n raw: item,\n } as IMessage;\n\n for (const part of textParts) {\n if (part.inlineData) {\n msg.inlineData = {\n displayName: part.inlineData.displayName,\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\n } as any;\n }\n if (part.text) {\n msg.text = (msg.text ? msg.text + \"\\n\" : \"\") + part.text;\n if (typeof part.thought !== \"undefined\") msg.thought = part.thought;\n }\n if (part.errorMessage) {\n msg.text = (msg.text ? msg.text + \"\\n\" : \"\") + part.errorMessage;\n }\n }\n\n if (fileDataParts.length > 0) {\n msg.fileData = fileDataParts.map((part: any) => ({\n displayName: part.fileData.displayName || \"\",\n fileUri: part.fileData.fileUri,\n mimeType: part.fileData.mimeType,\n }));\n }\n\n mapped.push(msg);\n }\n\n // 处理其他类型的 parts(functionCall、executableCode 等)\n otherParts.forEach((part: any) => {\n const msg: IMessage = {\n id: v4(),\n author: item.author,\n invocationId: item.invocationId,\n eventId: item.id,\n timestamp: item.timestamp,\n isLike: item.isLike,\n role,\n modelCode: item.modelCode,\n usageMetadata: item.usageMetadata,\n finishReason: item.finishReason,\n raw: item,\n } as IMessage;\n\n if (part.functionCall) msg.functionCall = part.functionCall;\n if (part.executableCode) msg.executableCode = part.executableCode;\n if (part.codeExecutionResult)\n msg.codeExecutionResult = part.codeExecutionResult;\n // 补全函数调用结果\n if (part.functionResponse) {\n // 通过 functionCall.id 寻找对应的函数调用消息,在那条消息上添加functionResponse\n const functionCallMsg = mapped.find(\n (msg) => msg.functionCall?.id === part.functionResponse?.id,\n );\n if (functionCallMsg) {\n functionCallMsg.functionResponse = part.functionResponse;\n }\n return;\n }\n mapped.push(msg);\n });\n });\n\n setMessages((prev) => (isReplace ? mapped : [...prev, ...mapped]));\n };\n\n // 设置当前会话详情\n const setCurrentSession = async (sessionId: string) => {\n if (sessionId) {\n if (sessionId === currentSessionId) {\n return;\n }\n // 切换会话时,abort 当前流式请求,防止数据污染和 loading 状态泄漏\n stopChat();\n setCurrentSessionId(sessionId); // 设置当前会话 id;\n const { data, result } = await fetchSessionDetail({\n url,\n appNo,\n sessionId,\n token,\n });\n\n if (result?.code === API_SUCCESS_CODE) {\n setPrologue(appInfo?.onboardingInfo?.prologue || \"\");\n // 新接口直接返回按 event/item 结构的数组,传入 formatMessages 处理\n if (Array.isArray(data) && data.length > 0) {\n formatMessages(data, true);\n } else {\n setSuggestedQuestions(\n appInfo?.onboardingInfo?.suggested_questions || [],\n );\n }\n }\n } else {\n // 兼容 无 session异常\n setCurrentSessionId(v4());\n }\n };\n\n // 获取聊天记录\n const initAppConversations = async (fetchDetail = false) => {\n try {\n setSessionLoading(true);\n\n const {\n data = [],\n pagination,\n result,\n } = await fetchSessionList({\n url,\n appNo,\n token,\n pageSize: sessionPagination.pageSize,\n });\n\n if (result?.code === API_SUCCESS_CODE) {\n if (data.length > 0) {\n const formatSessions = data.map((item) => {\n return {\n key: item.sessionId,\n label: item.title || \"新对话\",\n timestamp: new Date(item.startTime).getTime(),\n messages: [],\n meta: {\n ...item,\n },\n };\n });\n\n setSessionList(formatSessions);\n // 设置分页信息\n setSessionPagination({\n pageNum: sessionPagination.pageNum,\n pageSize: sessionPagination.pageSize,\n total: pagination?.total || 0,\n });\n const { sessionId } = data?.[0];\n if (showFirstSession) {\n setCurrentSession(sessionId);\n } else {\n fetchDetail && setPrologue(appInfo?.onboardingInfo?.prologue || \"\");\n fetchDetail &&\n setSuggestedQuestions(\n appInfo?.onboardingInfo?.suggested_questions || [],\n );\n }\n // 成功回调\n if (!initialized) {\n onSuccess?.({\n code: SuccessCode.APP_MESSAGES_INIT_SUCCESS,\n message: \"初始化聊天记录成功\",\n data: {\n sessionId,\n },\n });\n setInitialized(true);\n }\n } else {\n // 无会话记录时,初始化会话详情\n clearChat();\n }\n } else {\n setSessionList([]);\n setCurrentSessionId(v4());\n setPrologue(\"\");\n setSuggestedQuestions([]);\n }\n } catch {\n onError?.({\n code: ErrorCode.API_ERROR,\n message: \"获取会话列表失败\",\n });\n } finally {\n setSessionLoading(false);\n }\n };\n\n // 删除会话\n const deleteSession = async (sessionId: string) => {\n if (!sessionId) return;\n const { result } = await closeSession({\n url,\n appNo,\n sessionId,\n token,\n });\n if (result?.code === API_SUCCESS_CODE) {\n // 删除成功后,重新获取会话列表\n initAppConversations(true);\n // 如果删除的是当前会话,则创建新的会话\n if (sessionId === currentSessionId) {\n clearChat();\n }\n } else {\n message.error(\"删除会话失败\");\n }\n };\n\n // 点赞/点踩\n const likeMessage = async (\n invocationId: string,\n isLike: 1 | -1,\n feedbackData?: { feedbackTags?: string; feedbackDescription?: string },\n ) => {\n if (!appNo || !invocationId) return false;\n const { result } = await addFeedback({\n url,\n appNo,\n token,\n requestId: invocationId,\n isLike,\n ...feedbackData,\n });\n if (result?.code === API_SUCCESS_CODE) {\n setMessages((prev) =>\n prev.map((m) =>\n m.invocationId === invocationId ? { ...m, isLike } : m,\n ),\n );\n return true;\n }\n return false;\n };\n\n // 更新会话名称\n const updateSession = async (sessionId: string, title: string) => {\n if (!sessionId || !title) return;\n const { result } = await updateSessionTitle({\n url,\n appNo,\n title,\n sessionId,\n token,\n });\n if (result?.code === API_SUCCESS_CODE) {\n // 编辑成功后,重新获取会话列表\n initAppConversations();\n } else {\n message.error(\"更新会话失败\");\n }\n };\n\n // 初始化应用\n const initConfig = async () => {\n try {\n setSessionLoading(true);\n const { data, result } = await fetchAppConfig({ url, appNo });\n if (result.code === API_SUCCESS_CODE) {\n setAppInfo(data);\n // 成功回调\n onSuccess?.({\n code: SuccessCode.APP_CONFIG_INIT_SUCCESS,\n message: \"初始化配置成功\",\n });\n } else {\n onError?.({\n code: (result.code as ErrorCode) || ErrorCode.APP_NOT_FOUND,\n message: result.message || \"获取应用配置失败\",\n });\n }\n } catch (error) {\n onError?.({\n code: ErrorCode.API_ERROR,\n message: \"获取应用配置失败\",\n });\n } finally {\n setSessionLoading(false);\n }\n };\n\n // 初始化—获取配置 (仅在启用时)\n useEffect(() => {\n if (enabled && url && appNo) {\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [enabled, url, appNo]);\n\n // 初始化-聊天记录\n useEffect(() => {\n if (appInfo) {\n initAppConversations(true);\n }\n }, [appInfo]);\n\n return {\n appInfo,\n startChat,\n reChat,\n stopChat,\n clearChat,\n suggestChat,\n confirmFnCall,\n initialized,\n currentSessionId,\n sessionList,\n sessionPagination,\n prologue,\n suggestions: suggestedQuestions,\n loading,\n sessionLoading,\n messages: mergedMessages,\n insertSuggestedQuestions,\n insertPrologue,\n deleteSession,\n updateSession,\n setSuggestedQuestions,\n setCurrentSession,\n setMessages,\n storeEvents,\n storeMessage,\n likeMessage,\n setStateDelta: (delta: Record<string, any> | undefined) => {\n stateDeltaRef.current = delta;\n },\n };\n}\n\nexport default useADKChat;\n"],"mappings":"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"}
1
+ {"version":3,"names":["useEffect","useCallback","useMemo","useRef","useState","fetchEventSource","EventStreamContentType","message","v4","SESSION_PAGE_SIZE","API_SUCCESS_CODE","SuccessCode","ErrorCode","fetchAppConfig","fetchSessionList","fetchSessionDetail","closeSession","updateSessionTitle","addFeedback","safeJsonParse","combineTextParts","parts","result","combinedTextPart","_iterator","_createForOfIteratorHelper","_step","s","n","done","part","value","isPureText","text","fileData","thought","_objectSpread","push","undefined","err","e","f","useADKChat","_ref","_ref$url","url","window","location","origin","token","_ref$config","config","_ref$type","type","_ref$enabled","enabled","strategies","onError","onMessage","onSuccess","onStream","_useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","sessionLoading","setSessionLoading","sendingRef","ctrl","_ref2","appNo","showFirstSession","_useState5","_useState6","appInfo","setAppInfo","_useState7","_useState8","initialized","setInitialized","_useState9","_useState10","sessionList","setSessionList","_useState11","_useState12","currentSessionId","setCurrentSessionId","_useState13","total","pageNum","pageSize","_useState14","sessionPagination","setSessionPagination","_useState15","_useState16","prologue","setPrologue","_useState17","_useState18","suggestedQuestions","setSuggestedQuestions","_useState19","_useState20","messages","setMessages","stateDeltaRef","mergedMessages","fnResMap","forEach","msg","functionResponse","_msg$functionResponse","id","map","functionCall","_msg$functionCall","textMsgRef","eventDataRef","Map","insertMessage","prev","lastMessage","length","isLoading","concat","_toConsumableArray","slice","insertSuggestedQuestions","suggested_questions","arguments","insertPrologue","updateMessage","m","withEventMeta","event","_event$modelCode","_event$usageMetadata","_event$finishReason","modelCode","usageMetadata","finishReason","raw","updateLastBotEventMeta","next","index","findLastIndex","role","storeEvents","_event$actions","title","actions","artifactDelta","name","executableCode","_part$executableCode$","code","codeExecutionResult","outcome","errorMessage","updatedEvent","newEventData","current","set","storeMessage","author","invocationId","eventId","timestamp","isLike","inlineData","displayName","data","mimeType","_event$groundingMetad","groundingMetadata","searchEntryPoint","renderedContent","Object","keys","processPart","_event$groundingMetad2","ignore","newChunk","newMessage","partial","processFollowupPart","_event$content","content","processErrorMessage","chunkJson","processActionArtifact","sendMessageRequest","values","Promise","resolve","abort","AbortController","requestUrl","method","signal","body","JSON","stringify","openWhenHidden","headers","stream","Authorization","onopen","response","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","ok","get","status","API_ERROR","stop","onmessage","rawData","sessionId","error","warning","_iterator2","_step2","_chunkJson","onclose","_textMsgRef$current","onerror","console","startChat","_ref4","_callee2","_ref3","_ref3$text","_ref3$files","files","_callee2$","_context2","abrupt","trim","temp","file","_file$response","_file$response2","_file$response3","fileName","fileUri","tempUrl","fileUrl","_file$response4","_file$response5","_file$response6","_file$response7","_file$response8","_file$response9","fileId","fileType","stateDelta","finish","initAppConversations","_x","apply","reChat","_ref5","_callee3","lastUserIndex","newMessages","lastUserMessage","_lastUserMessage$text","_lastUserMessage$file","_callee3$","_context3","confirmFnCall","fnCall","confirmed","_strategies$createFun","_strategies$createFun2","createFunctionResponse","call","suggestChat","stopChat","_ctrl$current","clearChat","_appInfo$onboardingIn","_appInfo$onboardingIn2","newSessionId","onboardingInfo","formatMessages","isReplace","mapped","item","Array","isArray","toLowerCase","filter","p","Boolean","textParts","fileDataParts","otherParts","_iterator3","_step3","functionCallMsg","find","_msg$functionCall2","_part$functionRespons","setCurrentSession","_ref6","_callee4","_yield$fetchSessionDe","_appInfo$onboardingIn3","_appInfo$onboardingIn4","_callee4$","_context4","sent","_x2","_ref7","_callee5","fetchDetail","_yield$fetchSessionLi","_yield$fetchSessionLi2","pagination","formatSessions","_data$","_appInfo$onboardingIn5","_appInfo$onboardingIn6","_args5","_callee5$","_context5","key","label","Date","startTime","getTime","meta","APP_MESSAGES_INIT_SUCCESS","t0","deleteSession","_ref8","_callee6","_yield$closeSession","_callee6$","_context6","_x3","likeMessage","_ref9","_callee7","feedbackData","_yield$addFeedback","_callee7$","_context7","requestId","_x4","_x5","_x6","updateSession","_ref10","_callee8","_yield$updateSessionT","_callee8$","_context8","_x7","_x8","initConfig","_ref11","_callee9","_yield$fetchAppConfig","_callee9$","_context9","APP_CONFIG_INIT_SUCCESS","APP_NOT_FOUND","suggestions","setStateDelta","delta"],"sources":["../../../src/hooks/useADKChat.ts"],"sourcesContent":["import { useEffect, useCallback, useMemo, useRef, useState } from \"react\";\nimport {\n fetchEventSource,\n EventStreamContentType,\n} from \"@microsoft/fetch-event-source\";\nimport { message } from \"antd\";\nimport { v4 } from \"uuid\";\nimport { SESSION_PAGE_SIZE, API_SUCCESS_CODE } from \"@/constants\";\nimport {\n SuccessCode,\n ErrorCode,\n DebugOptions,\n FunctionCall,\n SendContent,\n SessionData,\n AgentRunRequest,\n Event,\n FunctionResponse,\n IMessage,\n Part,\n} from \"@/types\";\nimport {\n fetchAppConfig,\n fetchSessionList,\n fetchSessionDetail,\n closeSession,\n updateSessionTitle,\n addFeedback,\n type ChatConfig,\n} from \"@/services/api\";\nimport { safeJsonParse } from \"@/utils\";\n\nconst combineTextParts = (parts: Part[]) => {\n const result: Part[] = [];\n let combinedTextPart: Part | undefined;\n\n // eslint-disable-next-line no-restricted-syntax\n for (const part of parts) {\n // 纯文本 part(没有 fileData 等其他字段)才合并\n const isPureText = part.text && !part.fileData;\n if (isPureText) {\n // 如果没有 combined 或 combined 思考类型跟当前 part 不同,则创建新的合并引用\n if (!combinedTextPart || combinedTextPart.thought !== part.thought) {\n combinedTextPart = { ...part };\n result.push(combinedTextPart);\n } else {\n combinedTextPart.text =\n (combinedTextPart.text || \"\") + (part.text || \"\");\n }\n } else {\n combinedTextPart = undefined;\n result.push(part);\n }\n }\n return result;\n};\n\nfunction useADKChat({\n url = window.location.origin,\n token,\n config = {},\n type = \"agentDebug\",\n enabled = true, // ← 新增: 是否启用 Hook\n strategies,\n onError,\n onMessage,\n onSuccess,\n onStream,\n}: DebugOptions) {\n const [loading, setLoading] = useState(false);\n const [sessionLoading, setSessionLoading] = useState(false);\n const sendingRef = useRef(false); // 同步锁,防止快速重复点击\n const ctrl = useRef<AbortController | null>(null);\n // 应用配置\n const { appNo, showFirstSession } = config || {};\n const [appInfo, setAppInfo] = useState<ChatConfig | null>(null);\n // 初始化完成\n const [initialized, setInitialized] = useState(false);\n // 会话记录\n const [sessionList, setSessionList] = useState<SessionData[]>([]);\n // 当前会话\n const [currentSessionId, setCurrentSessionId] = useState<string>(() => v4());\n // 会话分页设置\n const [sessionPagination, setSessionPagination] = useState({\n total: 0,\n pageNum: 1,\n pageSize: SESSION_PAGE_SIZE,\n });\n // 开场白\n const [prologue, setPrologue] = useState<string>(\"\");\n // 建议问题\n const [suggestedQuestions, setSuggestedQuestions] = useState<string[]>([]);\n const [messages, setMessages] = useState<IMessage[]>([]);\n // 用户自定义业务参数 (stateDelta),每次发送请求时携带\n const stateDeltaRef = useRef<Record<string, any> | undefined>(undefined);\n const mergedMessages = useMemo(() => {\n const fnResMap: Record<string, FunctionResponse> = {};\n messages.forEach((msg) => {\n if (msg.functionResponse) {\n fnResMap[msg?.functionResponse?.id || \"\"] = msg.functionResponse;\n }\n });\n return messages.map((msg) => {\n if (msg.functionCall) {\n return {\n ...msg,\n functionResponse: fnResMap[msg?.functionCall?.id || \"\"],\n };\n }\n return msg;\n });\n }, [messages]);\n const textMsgRef = useRef<IMessage>(null);\n const eventDataRef = useRef<Map<string, any>>(new Map());\n\n // 插入消息\n const insertMessage = useCallback((msg: IMessage) => {\n setMessages((prev) => {\n const lastMessage = prev[prev.length - 1];\n if (lastMessage?.isLoading) {\n return [...prev.slice(0, -1), msg, lastMessage];\n }\n return [...prev, msg];\n });\n }, []);\n\n // 初始化开场白预设置问题\n const insertSuggestedQuestions = (suggested_questions: string[] = []) => {\n if (!suggested_questions?.length) return;\n // 无消息内容 且 有建议问题时\n if (messages.length === 0 && suggested_questions.length) {\n setSuggestedQuestions(suggested_questions);\n }\n };\n\n // 初始化开场白\n const insertPrologue = (prologue: string) => {\n if (prologue) {\n setPrologue(prologue);\n }\n };\n\n // 更新消息\n const updateMessage = useCallback((msg: IMessage) => {\n setMessages((prev) => {\n return prev.map((m) => {\n if (m.id === msg.id) {\n return msg;\n }\n return m;\n });\n });\n }, []);\n\n const withEventMeta = useCallback((msg: IMessage, event: Event): IMessage => {\n return {\n ...msg,\n modelCode: event.modelCode ?? msg.modelCode,\n usageMetadata: event.usageMetadata ?? msg.usageMetadata,\n finishReason: event.finishReason ?? msg.finishReason,\n raw: {\n ...(msg.raw || {}),\n ...event,\n },\n };\n }, []);\n\n const updateLastBotEventMeta = useCallback(\n (event: Event) => {\n if (!event.modelCode && !event.usageMetadata && !event.finishReason)\n return;\n\n setMessages((prev) => {\n const next = [...prev];\n const index = next.findLastIndex((msg) => msg.role === \"bot\");\n if (index < 0) return prev;\n\n next[index] = withEventMeta(next[index], event);\n return next;\n });\n },\n [withEventMeta],\n );\n\n // 存储事件\n const storeEvents = useCallback((part: Part | null, event: any) => {\n let title = \"\";\n\n if (part == null && event.actions?.artifactDelta) {\n title += \"eventAction: artifact\";\n } else if (part) {\n if (part.text) {\n title += `text:${part.text}`;\n } else if (part.functionCall) {\n title += `functionCall:${part.functionCall.name}`;\n } else if (part.functionResponse) {\n title += `functionResponse:${part.functionResponse.name}`;\n } else if (part.executableCode) {\n title += `executableCode:${part.executableCode.code?.slice(0, 10)}`;\n } else if (part.codeExecutionResult) {\n title += `codeExecutionResult:${part.codeExecutionResult.outcome}`;\n } else if (part.errorMessage) {\n title += `errorMessage:${part.errorMessage}`;\n }\n }\n\n const updatedEvent = { ...event, title };\n\n const newEventData = new Map(eventDataRef.current);\n newEventData.set(event.id, updatedEvent);\n eventDataRef.current = newEventData;\n }, []);\n\n // 存储消息\n const storeMessage = useCallback(\n (part: Part | null, event: Event, role: \"user\" | \"bot\") => {\n const msg: IMessage = {\n id: v4(),\n author: event.author,\n invocationId: event.invocationId,\n eventId: event.id,\n timestamp: event.timestamp,\n isLike: event.isLike || 0,\n role,\n modelCode: event.modelCode,\n usageMetadata: event.usageMetadata,\n finishReason: event.finishReason,\n raw: event,\n };\n\n if (part) {\n if (part.inlineData) {\n msg.inlineData = {\n displayName: part.inlineData.displayName,\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\n };\n } else if (part.text) {\n msg.text = part.text;\n msg.thought = part.thought;\n\n if (event?.groundingMetadata?.searchEntryPoint?.renderedContent) {\n msg.renderedContent =\n event.groundingMetadata.searchEntryPoint.renderedContent;\n }\n } else if (part.fileData) {\n msg.fileData = [part.fileData];\n } else if (part.functionCall) {\n msg.functionCall = part.functionCall;\n } else if (part.functionResponse) {\n msg.functionResponse = part.functionResponse;\n } else if (part.executableCode) {\n msg.executableCode = part.executableCode;\n } else if (part.codeExecutionResult) {\n msg.codeExecutionResult = part.codeExecutionResult;\n }\n }\n\n if (part && Object.keys(part).length > 0) {\n insertMessage(msg);\n }\n },\n [insertMessage],\n );\n\n // 处理消息部分(关键更新)\n const processPart = useCallback(\n (event: Event, part: Part, ignore: boolean = false) => {\n const renderedContent =\n event.groundingMetadata?.searchEntryPoint?.renderedContent;\n if (part.text) {\n if (ignore) return;\n const newChunk = part.text;\n\n if (\n !textMsgRef.current ||\n textMsgRef.current.thought !== part.thought\n ) {\n const newMessage: IMessage = {\n id: v4(),\n author: event.author,\n invocationId: event.invocationId,\n eventId: event.id,\n timestamp: event.timestamp,\n role: \"bot\",\n text: newChunk,\n isLike: event.isLike || 0,\n thought: part.thought,\n modelCode: event.modelCode,\n usageMetadata: event.usageMetadata,\n finishReason: event.finishReason,\n raw: event,\n };\n\n if (renderedContent) {\n newMessage.renderedContent = renderedContent;\n }\n\n textMsgRef.current = newMessage;\n // 存储原数据\n storeEvents(part, event);\n // 插入消息\n insertMessage(newMessage);\n } else {\n if (renderedContent) {\n textMsgRef.current = {\n ...textMsgRef.current,\n renderedContent,\n };\n }\n textMsgRef.current = {\n ...withEventMeta(textMsgRef.current, event),\n text: (textMsgRef.current.text || \"\") + newChunk,\n };\n updateMessage(textMsgRef.current);\n if (event.partial === false) {\n storeEvents(part, event);\n textMsgRef.current = null;\n }\n }\n } else {\n textMsgRef.current = null;\n storeEvents(part, event);\n storeMessage(part, event, \"bot\");\n }\n },\n [storeEvents, storeMessage, insertMessage, updateMessage, withEventMeta],\n );\n\n // 处理建议类消息\n const processFollowupPart = useCallback(\n (event: Event) => {\n // 获取建议类消息的文本内容\n const part = event?.content?.parts?.[0] || null;\n const text = part?.text || \"\";\n storeEvents(part, event);\n if (text) {\n setSuggestedQuestions((prev) => [...prev, text]);\n }\n },\n [storeEvents, insertMessage],\n );\n\n // 处理错误消息\n const processErrorMessage = useCallback(\n (chunkJson: any) => {\n storeEvents(null, chunkJson);\n insertMessage({\n id: v4(),\n text: chunkJson.errorMessage,\n role: \"bot\",\n });\n },\n [storeEvents, insertMessage],\n );\n\n // 处理动作和制品\n const processActionArtifact = useCallback(\n (event: any) => {\n if (event.actions && event.actions.artifactDelta) {\n storeEvents(null, event);\n storeMessage(null, event, \"bot\");\n }\n },\n [storeEvents, storeMessage],\n );\n\n // 发送消息请求\n const sendMessageRequest = useCallback(\n (values: AgentRunRequest) => {\n return new Promise<void>((resolve) => {\n if (ctrl.current) {\n ctrl.current.abort();\n }\n setLoading(true);\n ctrl.current = new AbortController();\n const requestUrl = `${url}/api/gateway-web/openApi/v1/aizt/app/${appNo}/sendMsgStreaming`;\n\n fetchEventSource(requestUrl, {\n method: \"POST\",\n signal: ctrl.current.signal,\n body: JSON.stringify(values),\n openWhenHidden: true,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Cache-Control\": \"no-cache\",\n stream: \"true\",\n Authorization: `Bearer ${token}`,\n },\n async onopen(response) {\n if (\n response.ok &&\n response.headers.get(\"content-type\") === EventStreamContentType\n ) {\n // everything's good\n } else if (response.status === 401 || response.status === 403) {\n setLoading(false);\n onError?.({\n code: ErrorCode.API_ERROR,\n message:\n response.status === 401\n ? \"认证失败,token 无效或已过期\"\n : \"无权限访问该资源\",\n });\n resolve();\n } else if (\n response.status >= 400 &&\n response.status < 500 &&\n response.status !== 429\n ) {\n resolve();\n } else {\n resolve();\n }\n },\n onmessage: (event) => {\n const rawData = safeJsonParse(event.data, {});\n\n // 处理新的数据格式: { data: {...}, result: {...} }\n let chunkJson: Event = rawData;\n\n if (rawData.data && rawData.result) {\n // 转换为旧格式\n chunkJson = {\n ...rawData.data,\n content: rawData.data, // data 本身就是 content\n invocationId: rawData.result.invocationId,\n sessionId: rawData.result.sessionId,\n id: rawData.result.invocationId,\n };\n }\n\n if (chunkJson.error) {\n message.warning(chunkJson.error);\n return;\n }\n onStream?.(chunkJson);\n updateLastBotEventMeta(chunkJson);\n if (chunkJson.content) {\n // 建议类消息单独处理\n if (chunkJson.content.role === \"followup\") {\n processFollowupPart(chunkJson);\n return;\n }\n // eslint-disable-next-line no-restricted-syntax\n for (const part of combineTextParts(chunkJson.content.parts)) {\n // partial为 true 时忽略该条消息文本\n processPart(chunkJson, part, chunkJson?.partial === false);\n }\n } else if (chunkJson.errorMessage) {\n processErrorMessage(chunkJson);\n } else if (chunkJson.actions) {\n processActionArtifact(chunkJson);\n }\n },\n onclose: () => {\n setLoading(false);\n if (textMsgRef.current) {\n onMessage?.(textMsgRef.current?.text || \"\", textMsgRef.current);\n }\n textMsgRef.current = null;\n resolve();\n },\n onerror: (error) => {\n setLoading(false);\n resolve();\n console.error(\"EventSource failed:\", error);\n throw error;\n },\n });\n });\n },\n [\n type,\n currentSessionId,\n processActionArtifact,\n processErrorMessage,\n processPart,\n updateLastBotEventMeta,\n ],\n );\n\n // 发送会话\n const startChat = async ({\n text = \"\",\n files = [],\n functionResponse,\n }: SendContent) => {\n if (loading || sendingRef.current) return;\n if (!text.trim() && !files?.length && !functionResponse) return;\n sendingRef.current = true;\n // 清空建议问题\n setSuggestedQuestions([]);\n // 发送消息\n setMessages((prev) => {\n let temp = [...prev];\n // 如果 text 存在\n if (text.trim()) {\n temp.push({\n id: v4(),\n role: \"user\",\n text,\n });\n }\n // 如果file 存在\n if (files.length > 0) {\n temp.push({\n id: v4(),\n role: \"user\",\n fileData: files.map((file) => ({\n displayName: file.fileName || file.name,\n mimeType: file.mimeType || file.response?.mimeType,\n fileUri:\n file.tempUrl || file.response?.fileUrl || file.response?.tempUrl,\n })),\n });\n }\n // 如果 functionResponse 存在\n if (functionResponse) {\n temp.push({\n id: v4(),\n role: \"user\",\n functionResponse,\n });\n }\n return temp;\n });\n try {\n await sendMessageRequest({\n stream: true,\n sessionId: currentSessionId,\n content: {\n role: \"user\",\n parts: functionResponse ? [{ functionResponse }] : [{ text }],\n },\n files: files.map((file) => ({\n fileName: file.fileName || file.response?.fileName,\n fileId: file.fileId || file.response?.fileId,\n tempUrl:\n file.tempUrl || file.response?.fileUrl || file.response?.tempUrl,\n type: file.type || file.response?.fileType,\n mimeType: file.mimeType || file.response?.mimeType,\n })),\n ...(stateDeltaRef.current !== undefined && {\n stateDelta: stateDeltaRef.current,\n }),\n });\n } finally {\n sendingRef.current = false;\n }\n // 获取聊天记录\n initAppConversations();\n };\n\n // 重新发送会话\n const reChat = async () => {\n if (loading || sendingRef.current) return;\n if (messages.length === 0) return;\n sendingRef.current = true;\n // 清空建议问题\n setSuggestedQuestions([]);\n\n // 找到最后一条用户消息的索引,删除其后所有 bot 消息\n const lastUserIndex = messages.findLastIndex(\n (msg) => msg.role === \"user\" && !msg.functionResponse,\n );\n if (lastUserIndex === -1) {\n sendingRef.current = false;\n return;\n }\n\n const newMessages = messages.slice(0, lastUserIndex + 1);\n setMessages(newMessages);\n\n const lastUserMessage = newMessages[lastUserIndex];\n const { text = \"\", fileData = [] } = lastUserMessage;\n\n try {\n await sendMessageRequest({\n stream: true,\n sessionId: currentSessionId,\n content: {\n role: \"user\",\n parts: [{ text }],\n },\n files: fileData?.map((file) => ({\n fileName: file.displayName,\n tempUrl: file.fileUri,\n mimeType: file.mimeType,\n })),\n ...(stateDeltaRef.current !== undefined && {\n stateDelta: stateDeltaRef.current,\n }),\n });\n } finally {\n sendingRef.current = false;\n }\n };\n\n // 确认函数调用\n const confirmFnCall = (fnCall: FunctionCall, confirmed: boolean) => {\n const functionResponse = strategies?.createFunctionResponse?.(\n fnCall,\n confirmed,\n ) ?? {\n id: fnCall.id,\n name: fnCall.name,\n response: { confirmed },\n };\n startChat({ functionResponse });\n };\n\n // 使用建议问题\n const suggestChat = (text: string) => {\n if (loading) return;\n if (!text.trim()) return;\n setSuggestedQuestions([]);\n startChat({ text });\n };\n\n // 停止会话\n const stopChat = useCallback(() => {\n ctrl.current?.abort();\n setLoading(false);\n textMsgRef.current = null;\n }, [ctrl]);\n\n // 清除/重置会话\n const clearChat = () => {\n const newSessionId = v4();\n setCurrentSessionId(newSessionId);\n // 重置聊天内容\n stopChat();\n setPrologue(appInfo?.onboardingInfo?.prologue || \"\");\n setMessages([]);\n setSuggestedQuestions(appInfo?.onboardingInfo?.suggested_questions || []);\n };\n\n // 格式化会话记录\n const formatMessages = (messages: any[], isReplace = false) => {\n const mapped: IMessage[] = [];\n messages.forEach((item) => {\n if (!item || !item.content || !Array.isArray(item.content.parts)) return;\n\n const role =\n (item.content.role || \"\").toLowerCase() === \"user\" ? \"user\" : \"bot\";\n const parts = Array.isArray(item.content.parts)\n ? item.content.parts.filter((p: any) => {\n if (!p) return false;\n return Boolean(\n p.text ||\n p.inlineData ||\n p.functionCall ||\n p.functionResponse ||\n p.fileData ||\n p.executableCode ||\n p.codeExecutionResult ||\n p.errorMessage,\n );\n })\n : [];\n\n if (parts.length === 0) return;\n\n // 将同一条历史消息的 text/fileData parts 合并到一条 IMessage,避免拆分显示\n const textParts = parts.filter(\n (p: any) => p.text || p.errorMessage || p.inlineData,\n );\n const fileDataParts = parts.filter((p: any) => p.fileData);\n const otherParts = parts.filter(\n (p: any) => !p.text && !p.errorMessage && !p.inlineData && !p.fileData,\n );\n\n // 如果有 text/fileData,合并为一条消息\n if (textParts.length > 0 || fileDataParts.length > 0) {\n const msg: IMessage = {\n id: v4(),\n author: item.author,\n invocationId: item.invocationId,\n eventId: item.id,\n timestamp: item.timestamp,\n isLike: item.isLike,\n role,\n modelCode: item.modelCode,\n usageMetadata: item.usageMetadata,\n finishReason: item.finishReason,\n raw: item,\n } as IMessage;\n\n for (const part of textParts) {\n if (part.inlineData) {\n msg.inlineData = {\n displayName: part.inlineData.displayName,\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\n } as any;\n }\n if (part.text) {\n msg.text = (msg.text ? msg.text + \"\\n\" : \"\") + part.text;\n if (typeof part.thought !== \"undefined\") msg.thought = part.thought;\n }\n if (part.errorMessage) {\n msg.text = (msg.text ? msg.text + \"\\n\" : \"\") + part.errorMessage;\n }\n }\n\n if (fileDataParts.length > 0) {\n msg.fileData = fileDataParts.map((part: any) => ({\n displayName: part.fileData.displayName || \"\",\n fileUri: part.fileData.fileUri,\n mimeType: part.fileData.mimeType,\n }));\n }\n\n mapped.push(msg);\n }\n\n // 处理其他类型的 parts(functionCall、executableCode 等)\n otherParts.forEach((part: any) => {\n const msg: IMessage = {\n id: v4(),\n author: item.author,\n invocationId: item.invocationId,\n eventId: item.id,\n timestamp: item.timestamp,\n isLike: item.isLike,\n role,\n modelCode: item.modelCode,\n usageMetadata: item.usageMetadata,\n finishReason: item.finishReason,\n raw: item,\n } as IMessage;\n\n if (part.functionCall) msg.functionCall = part.functionCall;\n if (part.executableCode) msg.executableCode = part.executableCode;\n if (part.codeExecutionResult)\n msg.codeExecutionResult = part.codeExecutionResult;\n // 补全函数调用结果\n if (part.functionResponse) {\n // 通过 functionCall.id 寻找对应的函数调用消息,在那条消息上添加functionResponse\n const functionCallMsg = mapped.find(\n (msg) => msg.functionCall?.id === part.functionResponse?.id,\n );\n if (functionCallMsg) {\n functionCallMsg.functionResponse = part.functionResponse;\n }\n return;\n }\n mapped.push(msg);\n });\n });\n\n setMessages((prev) => (isReplace ? mapped : [...prev, ...mapped]));\n };\n\n // 设置当前会话详情\n const setCurrentSession = async (sessionId: string) => {\n if (sessionId) {\n if (sessionId === currentSessionId) {\n return;\n }\n // 切换会话时,abort 当前流式请求,防止数据污染和 loading 状态泄漏\n stopChat();\n setCurrentSessionId(sessionId); // 设置当前会话 id;\n const { data, result } = await fetchSessionDetail({\n url,\n appNo,\n sessionId,\n token,\n });\n\n if (result?.code === API_SUCCESS_CODE) {\n setPrologue(appInfo?.onboardingInfo?.prologue || \"\");\n // 新接口直接返回按 event/item 结构的数组,传入 formatMessages 处理\n if (Array.isArray(data) && data.length > 0) {\n formatMessages(data, true);\n } else {\n setSuggestedQuestions(\n appInfo?.onboardingInfo?.suggested_questions || [],\n );\n }\n }\n } else {\n // 兼容 无 session异常\n setCurrentSessionId(v4());\n }\n };\n\n // 获取聊天记录\n const initAppConversations = async (fetchDetail = false) => {\n try {\n setSessionLoading(true);\n\n const {\n data = [],\n pagination,\n result,\n } = await fetchSessionList({\n url,\n appNo,\n token,\n pageSize: sessionPagination.pageSize,\n });\n\n if (result?.code === API_SUCCESS_CODE) {\n if (data.length > 0) {\n const formatSessions = data.map((item) => {\n return {\n key: item.sessionId,\n label: item.title || \"新对话\",\n timestamp: new Date(item.startTime).getTime(),\n messages: [],\n meta: {\n ...item,\n },\n };\n });\n\n setSessionList(formatSessions);\n // 设置分页信息\n setSessionPagination({\n pageNum: sessionPagination.pageNum,\n pageSize: sessionPagination.pageSize,\n total: pagination?.total || 0,\n });\n const { sessionId } = data?.[0];\n if (showFirstSession) {\n setCurrentSession(sessionId);\n } else {\n fetchDetail && setPrologue(appInfo?.onboardingInfo?.prologue || \"\");\n fetchDetail &&\n setSuggestedQuestions(\n appInfo?.onboardingInfo?.suggested_questions || [],\n );\n }\n // 成功回调\n if (!initialized) {\n onSuccess?.({\n code: SuccessCode.APP_MESSAGES_INIT_SUCCESS,\n message: \"初始化聊天记录成功\",\n data: {\n sessionId,\n },\n });\n setInitialized(true);\n }\n } else {\n // 无会话记录时,初始化会话详情\n clearChat();\n }\n } else {\n setSessionList([]);\n setCurrentSessionId(v4());\n setPrologue(\"\");\n setSuggestedQuestions([]);\n }\n } catch {\n onError?.({\n code: ErrorCode.API_ERROR,\n message: \"获取会话列表失败\",\n });\n } finally {\n setSessionLoading(false);\n }\n };\n\n // 删除会话\n const deleteSession = async (sessionId: string) => {\n if (!sessionId) return;\n const { result } = await closeSession({\n url,\n appNo,\n sessionId,\n token,\n });\n if (result?.code === API_SUCCESS_CODE) {\n // 删除成功后,重新获取会话列表\n initAppConversations(true);\n // 如果删除的是当前会话,则创建新的会话\n if (sessionId === currentSessionId) {\n clearChat();\n }\n } else {\n message.error(\"删除会话失败\");\n }\n };\n\n // 点赞/点踩\n const likeMessage = async (\n invocationId: string,\n isLike: 1 | -1,\n feedbackData?: { feedbackTags?: string; feedbackDescription?: string },\n ) => {\n if (!appNo || !invocationId) return false;\n const { result } = await addFeedback({\n url,\n appNo,\n token,\n requestId: invocationId,\n isLike,\n ...feedbackData,\n });\n if (result?.code === API_SUCCESS_CODE) {\n setMessages((prev) =>\n prev.map((m) =>\n m.invocationId === invocationId ? { ...m, isLike } : m,\n ),\n );\n return true;\n }\n return false;\n };\n\n // 更新会话名称\n const updateSession = async (sessionId: string, title: string) => {\n if (!sessionId || !title) return;\n const { result } = await updateSessionTitle({\n url,\n appNo,\n title,\n sessionId,\n token,\n });\n if (result?.code === API_SUCCESS_CODE) {\n // 编辑成功后,重新获取会话列表\n initAppConversations();\n } else {\n message.error(\"更新会话失败\");\n }\n };\n\n // 初始化应用\n const initConfig = async () => {\n try {\n setSessionLoading(true);\n const { data, result } = await fetchAppConfig({ url, appNo });\n if (result.code === API_SUCCESS_CODE) {\n setAppInfo(data);\n // 成功回调\n onSuccess?.({\n code: SuccessCode.APP_CONFIG_INIT_SUCCESS,\n message: \"初始化配置成功\",\n });\n } else {\n onError?.({\n code: (result.code as ErrorCode) || ErrorCode.APP_NOT_FOUND,\n message: result.message || \"获取应用配置失败\",\n });\n }\n } catch (error) {\n onError?.({\n code: ErrorCode.API_ERROR,\n message: \"获取应用配置失败\",\n });\n } finally {\n setSessionLoading(false);\n }\n };\n\n // 初始化—获取配置 (仅在启用时)\n useEffect(() => {\n if (enabled && url && appNo) {\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [enabled, url, appNo]);\n\n // 初始化-聊天记录\n useEffect(() => {\n if (appInfo) {\n initAppConversations(true);\n }\n }, [appInfo]);\n\n return {\n appInfo,\n startChat,\n reChat,\n stopChat,\n clearChat,\n suggestChat,\n confirmFnCall,\n initialized,\n currentSessionId,\n sessionList,\n sessionPagination,\n prologue,\n suggestions: suggestedQuestions,\n loading,\n sessionLoading,\n messages: mergedMessages,\n insertSuggestedQuestions,\n insertPrologue,\n deleteSession,\n updateSession,\n setSuggestedQuestions,\n setCurrentSession,\n setMessages,\n storeEvents,\n storeMessage,\n likeMessage,\n setStateDelta: (delta: Record<string, any> | undefined) => {\n stateDeltaRef.current = delta;\n },\n };\n}\n\nexport default useADKChat;\n"],"mappings":"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"}