@ai-group/chat-sdk 3.0.14 → 3.1.0
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.
- package/dist/cjs/components/FileGallery/index.js +16 -0
- package/dist/cjs/components/FileGallery/index.js.map +2 -2
- package/dist/cjs/components/XAdkChatbot/components/ThinkRender/index.d.ts +2 -2
- package/dist/cjs/components/XAdkChatbot/components/ThinkRender/index.js +25 -10
- package/dist/cjs/components/XAdkChatbot/components/ThinkRender/index.js.map +2 -2
- package/dist/cjs/components/XAdkChatbot/index.js +10 -3
- package/dist/cjs/components/XAdkChatbot/index.js.map +3 -3
- package/dist/cjs/components/XAdkThoughtChain/index.d.ts +4 -0
- package/dist/cjs/components/{XAiThoughtChain → XAdkThoughtChain}/index.js +37 -24
- package/dist/cjs/components/XAdkThoughtChain/index.js.map +7 -0
- package/dist/{esm/components/XAiThoughtChain → cjs/components/XAdkThoughtChain}/styles.d.ts +1 -0
- package/dist/cjs/components/{XAiThoughtChain → XAdkThoughtChain}/styles.js +29 -14
- package/dist/cjs/components/XAdkThoughtChain/styles.js.map +7 -0
- package/dist/cjs/index.d.ts +3 -3
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/index.js.map +3 -3
- package/dist/cjs/types/{XAiThoughtChain.d.ts → XAdkThoughtChain.d.ts} +5 -3
- package/dist/cjs/types/{XAiThoughtChain.js → XAdkThoughtChain.js} +4 -4
- package/dist/cjs/types/XAdkThoughtChain.js.map +7 -0
- package/dist/cjs/types/index.d.ts +1 -1
- package/dist/cjs/types/index.js +2 -2
- package/dist/cjs/types/index.js.map +2 -2
- package/dist/esm/components/FileGallery/index.js +35 -1
- package/dist/esm/components/FileGallery/index.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/components/ThinkRender/index.d.ts +2 -2
- package/dist/esm/components/XAdkChatbot/components/ThinkRender/index.js +28 -18
- package/dist/esm/components/XAdkChatbot/components/ThinkRender/index.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/index.js +2 -2
- package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
- package/dist/esm/components/XAdkThoughtChain/index.d.ts +4 -0
- package/dist/esm/components/{XAiThoughtChain → XAdkThoughtChain}/index.js +26 -21
- package/dist/esm/components/XAdkThoughtChain/index.js.map +1 -0
- package/dist/{cjs/components/XAiThoughtChain → esm/components/XAdkThoughtChain}/styles.d.ts +1 -0
- package/dist/esm/components/XAdkThoughtChain/styles.js +42 -0
- package/dist/esm/components/XAdkThoughtChain/styles.js.map +1 -0
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/{XAiThoughtChain.d.ts → XAdkThoughtChain.d.ts} +5 -3
- package/dist/esm/types/XAdkThoughtChain.js +2 -0
- package/dist/esm/types/XAdkThoughtChain.js.map +1 -0
- package/dist/esm/types/index.d.ts +1 -1
- package/dist/esm/types/index.js +1 -1
- package/dist/esm/types/index.js.map +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +2 -2
- package/dist/cjs/components/XAiThoughtChain/index.d.ts +0 -4
- package/dist/cjs/components/XAiThoughtChain/index.js.map +0 -7
- package/dist/cjs/components/XAiThoughtChain/styles.js.map +0 -7
- package/dist/cjs/types/XAiThoughtChain.js.map +0 -7
- package/dist/esm/components/XAiThoughtChain/index.d.ts +0 -4
- package/dist/esm/components/XAiThoughtChain/index.js.map +0 -1
- package/dist/esm/components/XAiThoughtChain/styles.js +0 -40
- package/dist/esm/components/XAiThoughtChain/styles.js.map +0 -1
- package/dist/esm/types/XAiThoughtChain.js +0 -2
- package/dist/esm/types/XAiThoughtChain.js.map +0 -1
|
@@ -9,7 +9,7 @@ import { useStyles } from "./styles";
|
|
|
9
9
|
import MarkdownRender from "./components/MarkdownRender";
|
|
10
10
|
import FunctionCallRender from "./components/FunctionCallRender";
|
|
11
11
|
import FileGallery from "../FileGallery";
|
|
12
|
-
import
|
|
12
|
+
import XAdkThoughtChain from "../XAdkThoughtChain";
|
|
13
13
|
import { parseAgentMessage } from "../../utils";
|
|
14
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
15
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -314,7 +314,7 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
|
|
|
314
314
|
className: styles.botMsg,
|
|
315
315
|
children: [nodes.map(function (node, idx) {
|
|
316
316
|
if (node.type === "process") {
|
|
317
|
-
return /*#__PURE__*/_jsx(
|
|
317
|
+
return /*#__PURE__*/_jsx(XAdkThoughtChain, {
|
|
318
318
|
loading: isGroupLoading,
|
|
319
319
|
title: "\u601D\u7EF4\u94FE\u5DF2\u5B8C\u6210",
|
|
320
320
|
items: node.items,
|
|
@@ -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","XAiThoughtChain","parseAgentMessage","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","scrollThreshold","XAdkChatbot","_ref","_ref$loading","loading","prologue","suggestions","messages","showFnCallDetail","onConfirm","onSuggest","showRetry","showCopy","showLog","onRetry","onCopy","onShowLog","actions","className","style","_ref$enableGrouping","enableGrouping","_ref$enableProcessPar","enableProcessParsing","parseOptions","_ref$initialized","initialized","onFileClick","styles","listRef","lastScrollTopRef","userHasScrolledRef","messagesEndRef","prevInitializedRef","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","_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","showDetail","mergedToolMap","Map","callId","has","set","_objectSpread","_mergedToolMap$get","get","tool","name","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","node","idx","defaultOpen","showBadge","findIndex","successBadge","fileSection","fileHeader","display","flexWrap","gap","file","index","onClick","isLastBotMsg","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 XAiThoughtChain from \"@/components/XAiThoughtChain\";\nimport { parseAgentMessage } from \"@/utils\";\nimport type { IMessage, XAdkChatbotProps, ChatGroup } from \"@/types\";\nimport type { ThoughtChainItemType } from \"@/types/XAiThoughtChain\";\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 className,\n style,\n // welcome = null,\n enableGrouping = true,\n enableProcessParsing = true,\n parseOptions,\n initialized = false,\n onFileClick,\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\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) => {\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 key={`${msg.id}-${i}`} text={msg.text} onFileClick={onFileClick} />\n );\n }\n if (msg.functionCall) {\n return (\n <FunctionCallRender\n key={`${msg.id}-${i}`}\n msg={msg}\n showDetail={showFnCallDetail}\n onConfirm={onConfirm}\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 = parseAgentMessage(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\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 <XAiThoughtChain\n key={node.key}\n loading={isGroupLoading}\n title=\"思维链已完成\"\n items={node.items}\n showFnCallDetail={showFnCallDetail}\n onConfirm={onConfirm}\n defaultOpen={isGroupLoading}\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 ? actions({ message: group, isLastBotMsg: isLastGroup })\n : (showRetry || showCopy || showLog) && (\n <div className={styles.metaFooter}>\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 </div>\n ))}\n </div>\n );\n },\n [\n enableProcessParsing,\n parseOptions,\n showFnCallDetail,\n onConfirm,\n loading,\n showRetry,\n showCopy,\n showLog,\n onRetry,\n onCopy,\n onShowLog,\n actions,\n onFileClick,\n styles,\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),\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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"}
|
|
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","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","scrollThreshold","XAdkChatbot","_ref","_ref$loading","loading","prologue","suggestions","messages","showFnCallDetail","onConfirm","onSuggest","showRetry","showCopy","showLog","onRetry","onCopy","onShowLog","actions","className","style","_ref$enableGrouping","enableGrouping","_ref$enableProcessPar","enableProcessParsing","parseOptions","_ref$initialized","initialized","onFileClick","styles","listRef","lastScrollTopRef","userHasScrolledRef","messagesEndRef","prevInitializedRef","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","_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","showDetail","mergedToolMap","Map","callId","has","set","_objectSpread","_mergedToolMap$get","get","tool","name","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","node","idx","defaultOpen","showBadge","findIndex","successBadge","fileSection","fileHeader","display","flexWrap","gap","file","index","onClick","isLastBotMsg","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 type { IMessage, XAdkChatbotProps, ChatGroup } from \"@/types\";\nimport type { ThoughtChainItemType } from \"@/types/XAdkThoughtChain\";\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 className,\n style,\n // welcome = null,\n enableGrouping = true,\n enableProcessParsing = true,\n parseOptions,\n initialized = false,\n onFileClick,\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\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) => {\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 <FunctionCallRender\n key={`${msg.id}-${i}`}\n msg={msg}\n showDetail={showFnCallDetail}\n onConfirm={onConfirm}\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 = parseAgentMessage(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\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 />\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 ? actions({ message: group, isLastBotMsg: isLastGroup })\n : (showRetry || showCopy || showLog) && (\n <div className={styles.metaFooter}>\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 </div>\n ))}\n </div>\n );\n },\n [\n enableProcessParsing,\n parseOptions,\n showFnCallDetail,\n onConfirm,\n loading,\n showRetry,\n showCopy,\n showLog,\n onRetry,\n onCopy,\n onShowLog,\n actions,\n onFileClick,\n styles,\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),\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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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
2
|
import React, { useState, useEffect } from "react";
|
|
3
|
-
import { CheckCircleFilled, SyncOutlined, ThunderboltOutlined, PartitionOutlined,
|
|
3
|
+
import { CheckCircleFilled, SyncOutlined, ThunderboltOutlined, PartitionOutlined, RightOutlined, DownOutlined } from "@ant-design/icons";
|
|
4
4
|
import MarkdownRender from "../XAdkChatbot/components/MarkdownRender";
|
|
5
5
|
import FunctionCallRender from "../XAdkChatbot/components/FunctionCallRender";
|
|
6
6
|
import { useStyles } from "./styles";
|
|
@@ -14,7 +14,8 @@ var TimelineItem = function TimelineItem(_ref) {
|
|
|
14
14
|
_ref$collapsible = _ref.collapsible,
|
|
15
15
|
collapsible = _ref$collapsible === void 0 ? true : _ref$collapsible,
|
|
16
16
|
_ref$defaultOpen = _ref.defaultOpen,
|
|
17
|
-
defaultOpen = _ref$defaultOpen === void 0 ? true : _ref$defaultOpen
|
|
17
|
+
defaultOpen = _ref$defaultOpen === void 0 ? true : _ref$defaultOpen,
|
|
18
|
+
blink = _ref.blink;
|
|
18
19
|
var _useState = useState(defaultOpen),
|
|
19
20
|
_useState2 = _slicedToArray(_useState, 2),
|
|
20
21
|
isOpen = _useState2[0],
|
|
@@ -35,6 +36,7 @@ var TimelineItem = function TimelineItem(_ref) {
|
|
|
35
36
|
return collapsible ? setIsOpen(!isOpen) : undefined;
|
|
36
37
|
},
|
|
37
38
|
children: [/*#__PURE__*/_jsx("div", {
|
|
39
|
+
className: blink ? styles.blink : undefined,
|
|
38
40
|
children: title
|
|
39
41
|
}), collapsible && /*#__PURE__*/_jsx("span", {
|
|
40
42
|
className: styles.arrowIcon,
|
|
@@ -48,7 +50,8 @@ var TimelineItem = function TimelineItem(_ref) {
|
|
|
48
50
|
});
|
|
49
51
|
};
|
|
50
52
|
var TimelineTextItem = function TimelineTextItem(_ref2) {
|
|
51
|
-
var item = _ref2.item
|
|
53
|
+
var item = _ref2.item,
|
|
54
|
+
blink = _ref2.blink;
|
|
52
55
|
return /*#__PURE__*/_jsx(TimelineItem, {
|
|
53
56
|
icon: /*#__PURE__*/_jsx("span", {
|
|
54
57
|
className: useStyles().timelineIcon,
|
|
@@ -58,6 +61,7 @@ var TimelineTextItem = function TimelineTextItem(_ref2) {
|
|
|
58
61
|
className: useStyles().titleText,
|
|
59
62
|
children: item.title
|
|
60
63
|
}),
|
|
64
|
+
blink: blink,
|
|
61
65
|
children: /*#__PURE__*/_jsx(MarkdownRender, {
|
|
62
66
|
text: cleanProcessText(item.content)
|
|
63
67
|
})
|
|
@@ -68,7 +72,8 @@ var TimelineToolItem = function TimelineToolItem(_ref3) {
|
|
|
68
72
|
var msg = _ref3.msg,
|
|
69
73
|
collapsible = _ref3.collapsible,
|
|
70
74
|
onConfirm = _ref3.onConfirm,
|
|
71
|
-
showFnCallDetail = _ref3.showFnCallDetail
|
|
75
|
+
showFnCallDetail = _ref3.showFnCallDetail,
|
|
76
|
+
blink = _ref3.blink;
|
|
72
77
|
var styles = useStyles();
|
|
73
78
|
var needsConfirm = msg.functionCall && !msg.functionResponse;
|
|
74
79
|
var isDone = !!msg.functionResponse;
|
|
@@ -92,6 +97,7 @@ var TimelineToolItem = function TimelineToolItem(_ref3) {
|
|
|
92
97
|
title: titleNode,
|
|
93
98
|
collapsible: collapsible,
|
|
94
99
|
defaultOpen: needsConfirm,
|
|
100
|
+
blink: blink,
|
|
95
101
|
children: [statusInfo && typeof statusInfo === "string" && /*#__PURE__*/_jsx("div", {
|
|
96
102
|
className: styles.statusInfo,
|
|
97
103
|
children: statusInfo
|
|
@@ -102,7 +108,7 @@ var TimelineToolItem = function TimelineToolItem(_ref3) {
|
|
|
102
108
|
})]
|
|
103
109
|
});
|
|
104
110
|
};
|
|
105
|
-
var
|
|
111
|
+
var XAdkThoughtChain = function XAdkThoughtChain(_ref4) {
|
|
106
112
|
var _ref4$defaultOpen = _ref4.defaultOpen,
|
|
107
113
|
defaultOpen = _ref4$defaultOpen === void 0 ? false : _ref4$defaultOpen,
|
|
108
114
|
_ref4$showFnCallDetai = _ref4.showFnCallDetail,
|
|
@@ -112,6 +118,8 @@ var XAiThoughtChain = function XAiThoughtChain(_ref4) {
|
|
|
112
118
|
_ref4$items = _ref4.items,
|
|
113
119
|
items = _ref4$items === void 0 ? [] : _ref4$items,
|
|
114
120
|
loading = _ref4.loading,
|
|
121
|
+
_ref4$blink = _ref4.blink,
|
|
122
|
+
blink = _ref4$blink === void 0 ? false : _ref4$blink,
|
|
115
123
|
onConfirm = _ref4.onConfirm;
|
|
116
124
|
var styles = useStyles();
|
|
117
125
|
var _useState3 = useState(defaultOpen),
|
|
@@ -123,19 +131,17 @@ var XAiThoughtChain = function XAiThoughtChain(_ref4) {
|
|
|
123
131
|
return setIsOpen(true);
|
|
124
132
|
});
|
|
125
133
|
}, [loading]);
|
|
134
|
+
var shouldBlink = blink && loading;
|
|
126
135
|
return /*#__PURE__*/_jsxs("div", {
|
|
127
136
|
className: styles.thoughtChainBlock,
|
|
128
|
-
children: [/*#__PURE__*/
|
|
137
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
129
138
|
className: styles.thoughtHeader,
|
|
130
139
|
onClick: function onClick() {
|
|
131
140
|
return setIsOpen(!isOpen);
|
|
132
141
|
},
|
|
133
|
-
children:
|
|
142
|
+
children: /*#__PURE__*/_jsxs("div", {
|
|
134
143
|
className: styles.headerLeft,
|
|
135
144
|
children: [/*#__PURE__*/_jsx("div", {
|
|
136
|
-
className: "".concat(styles.caret, " ").concat(isOpen ? "open" : ""),
|
|
137
|
-
children: /*#__PURE__*/_jsx(CaretRightOutlined, {})
|
|
138
|
-
}), /*#__PURE__*/_jsx("div", {
|
|
139
145
|
className: styles.statusIcon,
|
|
140
146
|
children: loading ? /*#__PURE__*/_jsx(SyncOutlined, {
|
|
141
147
|
spin: true,
|
|
@@ -148,33 +154,32 @@ var XAiThoughtChain = function XAiThoughtChain(_ref4) {
|
|
|
148
154
|
}
|
|
149
155
|
})
|
|
150
156
|
}), /*#__PURE__*/_jsx("span", {
|
|
151
|
-
className: styles.headerTitle,
|
|
157
|
+
className: "".concat(styles.headerTitle).concat(shouldBlink ? " ".concat(styles.blink) : ""),
|
|
152
158
|
children: loading ? "深度思考与执行中..." : title
|
|
159
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
160
|
+
className: "".concat(styles.caret, " ").concat(isOpen ? "open" : ""),
|
|
161
|
+
children: /*#__PURE__*/_jsx(RightOutlined, {})
|
|
153
162
|
})]
|
|
154
|
-
})
|
|
155
|
-
className: styles.headerRight,
|
|
156
|
-
children: items.length > 0 && /*#__PURE__*/_jsxs("span", {
|
|
157
|
-
className: styles.stepCount,
|
|
158
|
-
children: [items.length, " \u4E2A\u6B65\u9AA4"]
|
|
159
|
-
})
|
|
160
|
-
})]
|
|
163
|
+
})
|
|
161
164
|
}), isOpen && /*#__PURE__*/_jsx("div", {
|
|
162
165
|
className: styles.thinkingBody,
|
|
163
166
|
children: /*#__PURE__*/_jsx("div", {
|
|
164
167
|
className: styles.timeline,
|
|
165
168
|
children: items.map(function (item, i) {
|
|
166
169
|
return item.type === "text" ? /*#__PURE__*/_jsx(TimelineTextItem, {
|
|
167
|
-
item: item
|
|
170
|
+
item: item,
|
|
171
|
+
blink: shouldBlink
|
|
168
172
|
}, item.key || i) : /*#__PURE__*/_jsx(TimelineToolItem, {
|
|
169
173
|
msg: item.msg,
|
|
170
174
|
collapsible: item.collapsible,
|
|
171
175
|
showFnCallDetail: showFnCallDetail,
|
|
172
|
-
onConfirm: onConfirm
|
|
176
|
+
onConfirm: onConfirm,
|
|
177
|
+
blink: shouldBlink
|
|
173
178
|
}, "tool-".concat(item.key || i));
|
|
174
179
|
})
|
|
175
180
|
})
|
|
176
181
|
})]
|
|
177
182
|
});
|
|
178
183
|
};
|
|
179
|
-
export default
|
|
184
|
+
export default XAdkThoughtChain;
|
|
180
185
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","CheckCircleFilled","SyncOutlined","ThunderboltOutlined","PartitionOutlined","RightOutlined","DownOutlined","MarkdownRender","FunctionCallRender","useStyles","cleanProcessText","jsx","_jsx","jsxs","_jsxs","TimelineItem","_ref","icon","title","children","_ref$collapsible","collapsible","_ref$defaultOpen","defaultOpen","blink","_useState","_useState2","_slicedToArray","isOpen","setIsOpen","styles","className","timelineItem","timelineLeft","timelineConnector","timelineRight","collapsibleHeader","onClick","undefined","arrowIcon","stepContent","TimelineTextItem","_ref2","item","timelineIcon","titleText","text","content","TimelineToolItem","_ref3","_msg$functionCall","_msg$functionCall2","_msg$functionResponse","_msg$functionResponse2","msg","onConfirm","showFnCallDetail","needsConfirm","functionCall","functionResponse","isDone","toolName","args","componentName","name","statusInfo","response","processData","output","titleNode","toolTitleGroup","toolStatusTag","timelineIconTool","showDetail","XAdkThoughtChain","_ref4","_ref4$defaultOpen","_ref4$showFnCallDetai","_ref4$title","_ref4$items","items","loading","_ref4$blink","_useState3","_useState4","Promise","resolve","then","shouldBlink","thoughtChainBlock","thoughtHeader","headerLeft","statusIcon","spin","style","color","concat","headerTitle","caret","thinkingBody","timeline","map","i","type","key"],"sources":["../../../../src/components/XAdkThoughtChain/index.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport {\n CheckCircleFilled,\n SyncOutlined,\n ThunderboltOutlined,\n PartitionOutlined,\n RightOutlined,\n DownOutlined,\n} from \"@ant-design/icons\";\nimport MarkdownRender from \"@/components/XAdkChatbot/components/MarkdownRender\";\nimport FunctionCallRender from \"@/components/XAdkChatbot/components/FunctionCallRender\";\nimport { useStyles } from \"./styles\";\nimport {\n XAdkThoughtChainProps,\n ThoughtChainItemType,\n TimelineItemProps,\n FunctionCall,\n IMessage,\n} from \"@/types\";\nimport { cleanProcessText } from \"@/utils\";\n\nconst TimelineItem = ({\n icon,\n title,\n children,\n collapsible = true,\n defaultOpen = true,\n blink,\n}: TimelineItemProps) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const styles = useStyles();\n\n return (\n <div className={styles.timelineItem}>\n <div className={styles.timelineLeft}>\n {icon}\n <div className={styles.timelineConnector} />\n </div>\n <div className={styles.timelineRight}>\n <div\n className={styles.collapsibleHeader}\n onClick={() => (collapsible ? setIsOpen(!isOpen) : undefined)}\n >\n <div className={blink ? styles.blink : undefined}>{title}</div>\n {collapsible && (\n <span className={styles.arrowIcon}>\n {isOpen ? <DownOutlined /> : <RightOutlined />}\n </span>\n )}\n </div>\n\n {isOpen && <div className={styles.stepContent}>{children}</div>}\n </div>\n </div>\n );\n};\n\nconst TimelineTextItem: React.FC<{\n item: ThoughtChainItemType;\n blink?: boolean;\n}> = ({ item, blink }) => {\n return (\n <TimelineItem\n icon={\n <span className={useStyles().timelineIcon}>\n <PartitionOutlined />\n </span>\n }\n title={<span className={useStyles().titleText}>{item.title}</span>}\n blink={blink}\n >\n <MarkdownRender text={cleanProcessText(item.content)} />\n </TimelineItem>\n );\n};\n\nconst TimelineToolItem: React.FC<{\n msg: IMessage;\n collapsible?: boolean;\n showFnCallDetail: boolean;\n onConfirm?: (fnCall: FunctionCall, confirmed: boolean) => void;\n blink?: boolean;\n}> = ({ msg, collapsible, onConfirm, showFnCallDetail, blink }) => {\n const styles = useStyles();\n const needsConfirm = msg.functionCall && !msg.functionResponse;\n const isDone = !!msg.functionResponse;\n\n const toolName =\n msg.functionCall?.args?.componentName ||\n msg.functionCall?.name ||\n \"组件执行\";\n\n const statusInfo =\n msg.functionResponse?.response?.processData ||\n msg.functionResponse?.response?.output;\n\n const titleNode = (\n <div className={styles.toolTitleGroup}>\n <span className={styles.toolName}>{toolName}</span>\n {isDone && <span className={styles.toolStatusTag}>执行成功</span>}\n </div>\n );\n\n return (\n <TimelineItem\n icon={\n <span className={styles.timelineIconTool}>\n <ThunderboltOutlined />\n </span>\n }\n title={titleNode}\n collapsible={collapsible}\n defaultOpen={needsConfirm}\n blink={blink}\n >\n {statusInfo && typeof statusInfo === \"string\" && (\n <div className={styles.statusInfo}>{statusInfo}</div>\n )}\n <FunctionCallRender\n msg={msg}\n showDetail={showFnCallDetail}\n onConfirm={onConfirm}\n />\n </TimelineItem>\n );\n};\n\nconst XAdkThoughtChain: React.FC<XAdkThoughtChainProps> = ({\n defaultOpen = false,\n showFnCallDetail = false,\n title = \"思维链已完成\",\n items = [],\n loading,\n blink = false,\n onConfirm,\n}) => {\n const styles = useStyles();\n const [isOpen, setIsOpen] = useState(defaultOpen);\n useEffect(() => {\n if (loading) Promise.resolve().then(() => setIsOpen(true));\n }, [loading]);\n\n const shouldBlink = blink && loading;\n\n return (\n <div className={styles.thoughtChainBlock}>\n <div className={styles.thoughtHeader} onClick={() => setIsOpen(!isOpen)}>\n <div className={styles.headerLeft}>\n <div className={styles.statusIcon}>\n {loading ? (\n <SyncOutlined spin style={{ color: \"#1677ff\" }} />\n ) : (\n <CheckCircleFilled style={{ color: \"#52c41a\" }} />\n )}\n </div>\n <span\n className={`${styles.headerTitle}${shouldBlink ? ` ${styles.blink}` : \"\"}`}\n >\n {loading ? \"深度思考与执行中...\" : title}\n </span>\n <div className={`${styles.caret} ${isOpen ? \"open\" : \"\"}`}>\n <RightOutlined />\n </div>\n </div>\n </div>\n {isOpen && (\n <div className={styles.thinkingBody}>\n <div className={styles.timeline}>\n {items.map((item, i) =>\n item.type === \"text\" ? (\n <TimelineTextItem\n key={item.key || i}\n item={item}\n blink={shouldBlink}\n />\n ) : (\n <TimelineToolItem\n key={`tool-${item.key || i}`}\n msg={item.msg!}\n collapsible={item.collapsible}\n showFnCallDetail={showFnCallDetail}\n onConfirm={onConfirm}\n blink={shouldBlink}\n />\n ),\n )}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default XAdkThoughtChain;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
|
|
2
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27;
|
|
3
|
+
/* eslint-disable import/prefer-default-export */
|
|
4
|
+
import { css, keyframes } from "@emotion/css";
|
|
5
|
+
import { withBasicStyles } from "../../styles/common";
|
|
6
|
+
var blinkAnimation = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n 0% { background-position-x: -200%; background-position-y: 100%; }\n 25% { background-position-x: -100%; background-position-y: 100%; }\n 50% { background-position-x: 0%; background-position-y: 100%; }\n 75% { background-position-x: 100%; background-position-y: 100%; }\n 100% { background-position-x: 200%; background-position-y: 100%; }\n"])));
|
|
7
|
+
export var useStyles = withBasicStyles(function () {
|
|
8
|
+
return {
|
|
9
|
+
/* --- ThoughtChain --- */
|
|
10
|
+
|
|
11
|
+
thoughtChainBlock: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n margin-bottom: 16px;\n border-radius: 8px;\n overflow: hidden;\n "]))),
|
|
12
|
+
thoughtHeader: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n padding: 10px 14px;\n cursor: pointer;\n user-select: none;\n transition: background 0.2s;\n &:hover {\n background: #f0f0f0;\n border-color: #ccc;\n }\n "]))),
|
|
13
|
+
headerLeft: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 8px;\n "]))),
|
|
14
|
+
caret: css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n font-size: 12px;\n color: #8194ad;\n transition: transform 0.2s;\n &.open {\n transform: rotate(90deg);\n }\n "]))),
|
|
15
|
+
statusIcon: css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n font-size: 14px;\n display: flex;\n align-items: center;\n "]))),
|
|
16
|
+
headerTitle: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n font-size: 13px;\n color: #8194ad;\n font-weight: 500;\n "]))),
|
|
17
|
+
headerRight: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([""]))),
|
|
18
|
+
stepCount: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n font-size: 12px;\n color: #8194ad;\n background: #fff;\n padding: 2px 6px;\n border-radius: 4px;\n border: 1px solid #e0e0e0;\n "]))),
|
|
19
|
+
thinkingBody: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n background: #fff;\n padding: 12px 16px;\n animation: fadeIn 0.2s ease-in-out;\n "]))),
|
|
20
|
+
/* --- Timeline --- */
|
|
21
|
+
|
|
22
|
+
timeline: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n width: 100%;\n "]))),
|
|
23
|
+
timelineItem: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n display: flex;\n gap: 12px;\n position: relative;\n "]))),
|
|
24
|
+
timelineLeft: css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 20px;\n flex-shrink: 0;\n "]))),
|
|
25
|
+
timelineIcon: css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n color: #8194ad;\n font-size: 16px;\n margin-top: 6px;\n "]))),
|
|
26
|
+
timelineIconTool: css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n color: #faad14;\n font-size: 16px;\n margin-top: 6px;\n "]))),
|
|
27
|
+
timelineConnector: css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n flex: 1;\n width: 1px;\n background-color: #e5e5e5;\n margin: 4px 0;\n min-height: 12px;\n "]))),
|
|
28
|
+
/* Hide connector on last item */
|
|
29
|
+
timelineItemLastConnector: css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n display: none;\n "]))),
|
|
30
|
+
timelineRight: css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n flex: 1;\n padding-bottom: 16px;\n min-width: 0;\n "]))),
|
|
31
|
+
collapsibleHeader: css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 5px 8px;\n margin: 0 -8px 4px -8px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n user-select: none;\n\n &:hover {\n background: #f5f5f5;\n }\n "]))),
|
|
32
|
+
titleText: css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral(["\n font-size: 13px;\n font-weight: 600;\n color: #8194ad;\n "]))),
|
|
33
|
+
toolTitleGroup: css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 8px;\n overflow: hidden;\n "]))),
|
|
34
|
+
toolName: css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral(["\n font-size: 13px;\n font-weight: 600;\n color: #8194ad;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n "]))),
|
|
35
|
+
toolStatusTag: css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral(["\n font-size: 11px;\n color: #52c41a;\n background: #f6ffed;\n border: 1px solid #b7eb8f;\n padding: 0 6px;\n border-radius: 4px;\n flex-shrink: 0;\n "]))),
|
|
36
|
+
arrowIcon: css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral(["\n font-size: 10px;\n color: #bbb;\n margin-left: 8px;\n "]))),
|
|
37
|
+
stepContent: css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral(["\n font-size: 13px;\n color: #8194ad;\n line-height: 1.6;\n padding-left: 4px;\n "]))),
|
|
38
|
+
statusInfo: css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral(["\n font-size: 12px;\n color: #8194ad;\n margin-bottom: 4px;\n font-style: italic;\n "]))),
|
|
39
|
+
blink: css(_templateObject27 || (_templateObject27 = _taggedTemplateLiteral(["\n color: #8194ad;\n background-image: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.88), transparent);\n background-clip: text;\n -webkit-background-clip: text;\n background-size: 50%;\n background-repeat: no-repeat;\n animation-name: ", ";\n animation-duration: 1s;\n animation-iteration-count: infinite;\n animation-timing-function: linear;\n animation-fill-mode: forwards;\n "])), blinkAnimation)
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["css","keyframes","withBasicStyles","blinkAnimation","_templateObject","_taggedTemplateLiteral","useStyles","thoughtChainBlock","_templateObject2","thoughtHeader","_templateObject3","headerLeft","_templateObject4","caret","_templateObject5","statusIcon","_templateObject6","headerTitle","_templateObject7","headerRight","_templateObject8","stepCount","_templateObject9","thinkingBody","_templateObject10","timeline","_templateObject11","timelineItem","_templateObject12","timelineLeft","_templateObject13","timelineIcon","_templateObject14","timelineIconTool","_templateObject15","timelineConnector","_templateObject16","timelineItemLastConnector","_templateObject17","timelineRight","_templateObject18","collapsibleHeader","_templateObject19","titleText","_templateObject20","toolTitleGroup","_templateObject21","toolName","_templateObject22","toolStatusTag","_templateObject23","arrowIcon","_templateObject24","stepContent","_templateObject25","statusInfo","_templateObject26","blink","_templateObject27"],"sources":["../../../../src/components/XAdkThoughtChain/styles.tsx"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport { css, keyframes } from \"@emotion/css\";\nimport { withBasicStyles, lightBlue, primaryBlue } from \"@/styles/common\";\n\nconst blinkAnimation = keyframes`\n 0% { background-position-x: -200%; background-position-y: 100%; }\n 25% { background-position-x: -100%; background-position-y: 100%; }\n 50% { background-position-x: 0%; background-position-y: 100%; }\n 75% { background-position-x: 100%; background-position-y: 100%; }\n 100% { background-position-x: 200%; background-position-y: 100%; }\n`;\n\nexport const useStyles = withBasicStyles(() => ({\n /* --- ThoughtChain --- */\n\n thoughtChainBlock: css`\n margin-bottom: 16px;\n border-radius: 8px;\n overflow: hidden;\n `,\n\n thoughtHeader: css`\n display: flex;\n align-items: center;\n padding: 10px 14px;\n cursor: pointer;\n user-select: none;\n transition: background 0.2s;\n &:hover {\n background: #f0f0f0;\n border-color: #ccc;\n }\n `,\n\n headerLeft: css`\n display: flex;\n align-items: center;\n gap: 8px;\n `,\n\n caret: css`\n font-size: 12px;\n color: #8194ad;\n transition: transform 0.2s;\n &.open {\n transform: rotate(90deg);\n }\n `,\n\n statusIcon: css`\n font-size: 14px;\n display: flex;\n align-items: center;\n `,\n\n headerTitle: css`\n font-size: 13px;\n color: #8194ad;\n font-weight: 500;\n `,\n\n headerRight: css``,\n\n stepCount: css`\n font-size: 12px;\n color: #8194ad;\n background: #fff;\n padding: 2px 6px;\n border-radius: 4px;\n border: 1px solid #e0e0e0;\n `,\n\n thinkingBody: css`\n background: #fff;\n padding: 12px 16px;\n animation: fadeIn 0.2s ease-in-out;\n `,\n\n /* --- Timeline --- */\n\n timeline: css`\n width: 100%;\n `,\n\n timelineItem: css`\n display: flex;\n gap: 12px;\n position: relative;\n `,\n\n timelineLeft: css`\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 20px;\n flex-shrink: 0;\n `,\n\n timelineIcon: css`\n color: #8194ad;\n font-size: 16px;\n margin-top: 6px;\n `,\n\n timelineIconTool: css`\n color: #faad14;\n font-size: 16px;\n margin-top: 6px;\n `,\n\n timelineConnector: css`\n flex: 1;\n width: 1px;\n background-color: #e5e5e5;\n margin: 4px 0;\n min-height: 12px;\n `,\n\n /* Hide connector on last item */\n timelineItemLastConnector: css`\n display: none;\n `,\n\n timelineRight: css`\n flex: 1;\n padding-bottom: 16px;\n min-width: 0;\n `,\n\n collapsibleHeader: css`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 5px 8px;\n margin: 0 -8px 4px -8px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n user-select: none;\n\n &:hover {\n background: #f5f5f5;\n }\n `,\n\n titleText: css`\n font-size: 13px;\n font-weight: 600;\n color: #8194ad;\n `,\n\n toolTitleGroup: css`\n display: flex;\n align-items: center;\n gap: 8px;\n overflow: hidden;\n `,\n\n toolName: css`\n font-size: 13px;\n font-weight: 600;\n color: #8194ad;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n `,\n\n toolStatusTag: css`\n font-size: 11px;\n color: #52c41a;\n background: #f6ffed;\n border: 1px solid #b7eb8f;\n padding: 0 6px;\n border-radius: 4px;\n flex-shrink: 0;\n `,\n\n arrowIcon: css`\n font-size: 10px;\n color: #bbb;\n margin-left: 8px;\n `,\n\n stepContent: css`\n font-size: 13px;\n color: #8194ad;\n line-height: 1.6;\n padding-left: 4px;\n `,\n\n statusInfo: css`\n font-size: 12px;\n color: #8194ad;\n margin-bottom: 4px;\n font-style: italic;\n `,\n\n blink: css`\n color: #8194ad;\n background-image: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.88), transparent);\n background-clip: text;\n -webkit-background-clip: text;\n background-size: 50%;\n background-repeat: no-repeat;\n animation-name: ${blinkAnimation};\n animation-duration: 1s;\n animation-iteration-count: infinite;\n animation-timing-function: linear;\n animation-fill-mode: forwards;\n `,\n}));\n"],"mappings":";;AAAA;AACA,SAASA,GAAG,EAAEC,SAAS,QAAQ,cAAc;AAC7C,SAASC,eAAe;AAExB,IAAMC,cAAc,GAAGF,SAAS,CAAAG,eAAA,KAAAA,eAAA,GAAAC,sBAAA,6WAM/B;AAED,OAAO,IAAMC,SAAS,GAAGJ,eAAe,CAAC;EAAA,OAAO;IAC9C;;IAEAK,iBAAiB,EAAEP,GAAG,CAAAQ,gBAAA,KAAAA,gBAAA,GAAAH,sBAAA,sFAIrB;IAEDI,aAAa,EAAET,GAAG,CAAAU,gBAAA,KAAAA,gBAAA,GAAAL,sBAAA,gPAWjB;IAEDM,UAAU,EAAEX,GAAG,CAAAY,gBAAA,KAAAA,gBAAA,GAAAP,sBAAA,yEAId;IAEDQ,KAAK,EAAEb,GAAG,CAAAc,gBAAA,KAAAA,gBAAA,GAAAT,sBAAA,8IAOT;IAEDU,UAAU,EAAEf,GAAG,CAAAgB,gBAAA,KAAAA,gBAAA,GAAAX,sBAAA,gFAId;IAEDY,WAAW,EAAEjB,GAAG,CAAAkB,gBAAA,KAAAA,gBAAA,GAAAb,sBAAA,8EAIf;IAEDc,WAAW,EAAEnB,GAAG,CAAAoB,gBAAA,KAAAA,gBAAA,GAAAf,sBAAA,QAAE;IAElBgB,SAAS,EAAErB,GAAG,CAAAsB,gBAAA,KAAAA,gBAAA,GAAAjB,sBAAA,8JAOb;IAEDkB,YAAY,EAAEvB,GAAG,CAAAwB,iBAAA,KAAAA,iBAAA,GAAAnB,sBAAA,qGAIhB;IAED;;IAEAoB,QAAQ,EAAEzB,GAAG,CAAA0B,iBAAA,KAAAA,iBAAA,GAAArB,sBAAA,8BAEZ;IAEDsB,YAAY,EAAE3B,GAAG,CAAA4B,iBAAA,KAAAA,iBAAA,GAAAvB,sBAAA,yEAIhB;IAEDwB,YAAY,EAAE7B,GAAG,CAAA8B,iBAAA,KAAAA,iBAAA,GAAAzB,sBAAA,8HAMhB;IAED0B,YAAY,EAAE/B,GAAG,CAAAgC,iBAAA,KAAAA,iBAAA,GAAA3B,sBAAA,6EAIhB;IAED4B,gBAAgB,EAAEjC,GAAG,CAAAkC,iBAAA,KAAAA,iBAAA,GAAA7B,sBAAA,6EAIpB;IAED8B,iBAAiB,EAAEnC,GAAG,CAAAoC,iBAAA,KAAAA,iBAAA,GAAA/B,sBAAA,sHAMrB;IAED;IACAgC,yBAAyB,EAAErC,GAAG,CAAAsC,iBAAA,KAAAA,iBAAA,GAAAjC,sBAAA,gCAE7B;IAEDkC,aAAa,EAAEvC,GAAG,CAAAwC,iBAAA,KAAAA,iBAAA,GAAAnC,sBAAA,wEAIjB;IAEDoC,iBAAiB,EAAEzC,GAAG,CAAA0C,iBAAA,KAAAA,iBAAA,GAAArC,sBAAA,0SAcrB;IAEDsC,SAAS,EAAE3C,GAAG,CAAA4C,iBAAA,KAAAA,iBAAA,GAAAvC,sBAAA,8EAIb;IAEDwC,cAAc,EAAE7C,GAAG,CAAA8C,iBAAA,KAAAA,iBAAA,GAAAzC,sBAAA,gGAKlB;IAED0C,QAAQ,EAAE/C,GAAG,CAAAgD,iBAAA,KAAAA,iBAAA,GAAA3C,sBAAA,6JAOZ;IAED4C,aAAa,EAAEjD,GAAG,CAAAkD,iBAAA,KAAAA,iBAAA,GAAA7C,sBAAA,oLAQjB;IAED8C,SAAS,EAAEnD,GAAG,CAAAoD,iBAAA,KAAAA,iBAAA,GAAA/C,sBAAA,2EAIb;IAEDgD,WAAW,EAAErD,GAAG,CAAAsD,iBAAA,KAAAA,iBAAA,GAAAjD,sBAAA,sGAKf;IAEDkD,UAAU,EAAEvD,GAAG,CAAAwD,iBAAA,KAAAA,iBAAA,GAAAnD,sBAAA,yGAKd;IAEDoD,KAAK,EAAEzD,GAAG,CAAA0D,iBAAA,KAAAA,iBAAA,GAAArD,sBAAA,4aAOUF,cAAc;EAMpC,CAAC;AAAA,CAAC,CAAC"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import XAiSDK from "./components/XAiSDK";
|
|
|
5
5
|
import XAiSender from "./components/XAiSender";
|
|
6
6
|
import FileGallery from "./components/FileGallery";
|
|
7
7
|
import XAiConversations from "./components/XAiConversations";
|
|
8
|
-
import
|
|
8
|
+
import XAdkThoughtChain from "./components/XAdkThoughtChain";
|
|
9
9
|
import useXAiSDK from "./hooks/useXAiSDK";
|
|
10
10
|
import request from "./utils/request";
|
|
11
11
|
import XAdkProvider from "./components/XAdkProvider";
|
|
@@ -16,10 +16,10 @@ export { useChatState, useChatActions, useSession, } from "./components/XAdkProv
|
|
|
16
16
|
export * from "./types";
|
|
17
17
|
export type { ChatHookResult, ChatHookFactory } from "./types/ChatHook";
|
|
18
18
|
export { useXAi, XAiProvider, XAiChatbot, XAiSDK, XAiSender, XAiConversations, useXAiSDK, request, };
|
|
19
|
-
export { XAdkProvider, XAdkChatbot, XAdkSender, FileGallery,
|
|
19
|
+
export { XAdkProvider, XAdkChatbot, XAdkSender, FileGallery, XAdkThoughtChain, useADKChat, };
|
|
20
20
|
export { default as MarkdownRender } from "./components/XAdkChatbot/components/MarkdownRender";
|
|
21
21
|
export { default as FunctionCallRender } from "./components/XAdkChatbot/components/FunctionCallRender";
|
|
22
22
|
export { default as ThinkRender } from "./components/XAdkChatbot/components/ThinkRender";
|
|
23
23
|
export type { MarkdownRenderProps } from "./components/XAdkChatbot/components/MarkdownRender";
|
|
24
24
|
export type { FunctionCallRenderProps } from "./components/XAdkChatbot/components/FunctionCallRender";
|
|
25
|
-
export type {
|
|
25
|
+
export type { XAdkThoughtChainProps, ThoughtChainItemType, } from "./types/XAdkThoughtChain";
|
package/dist/esm/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import XAiSDK from "./components/XAiSDK";
|
|
|
6
6
|
import XAiSender from "./components/XAiSender";
|
|
7
7
|
import FileGallery from "./components/FileGallery";
|
|
8
8
|
import XAiConversations from "./components/XAiConversations";
|
|
9
|
-
import
|
|
9
|
+
import XAdkThoughtChain from "./components/XAdkThoughtChain";
|
|
10
10
|
import useXAiSDK from "./hooks/useXAiSDK";
|
|
11
11
|
import request from "./utils/request";
|
|
12
12
|
|
|
@@ -26,7 +26,7 @@ export * from "./types";
|
|
|
26
26
|
export { useXAi, XAiProvider, XAiChatbot, XAiSDK, XAiSender, XAiConversations, useXAiSDK, request };
|
|
27
27
|
|
|
28
28
|
// 新 API - 推荐使用
|
|
29
|
-
export { XAdkProvider, XAdkChatbot, XAdkSender, FileGallery,
|
|
29
|
+
export { XAdkProvider, XAdkChatbot, XAdkSender, FileGallery, XAdkThoughtChain, useADKChat };
|
|
30
30
|
|
|
31
31
|
// 基础组件导出 - 供高级用户和业务侧使用
|
|
32
32
|
export { default as MarkdownRender } from "./components/XAdkChatbot/components/MarkdownRender";
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useXAi","XAiProvider","XAiChatbot","XAiSDK","XAiSender","FileGallery","XAiConversations","
|
|
1
|
+
{"version":3,"names":["useXAi","XAiProvider","XAiChatbot","XAiSDK","XAiSender","FileGallery","XAiConversations","XAdkThoughtChain","useXAiSDK","request","XAdkProvider","XAdkChatbot","XAdkSender","useADKChat","useChatState","useChatActions","useSession","default","MarkdownRender","FunctionCallRender","ThinkRender"],"sources":["../../src/index.ts"],"sourcesContent":["// index.ts\nimport { useXAi } from \"./context/AiProviderContext\";\nimport XAiProvider from \"./components/XAiProvider\";\nimport XAiChatbot from \"./components/XAiChatbot\";\nimport XAiSDK from \"./components/XAiSDK\";\nimport XAiSender from \"./components/XAiSender\";\nimport FileGallery from \"./components/FileGallery\";\nimport XAiConversations from \"./components/XAiConversations\";\nimport XAdkThoughtChain from \"./components/XAdkThoughtChain\";\nimport useXAiSDK from \"./hooks/useXAiSDK\";\nimport request from \"./utils/request\";\n\n// 新的 Compound Components 架构\nimport XAdkProvider from \"./components/XAdkProvider\";\nimport XAdkChatbot from \"./components/XAdkChatbot\";\nimport XAdkSender from \"./components/XAdkSender\";\nimport useADKChat from \"./hooks/useADKChat\";\n\n// 导出新的 Context Hooks\nexport {\n useChatState,\n useChatActions,\n useSession,\n} from \"./components/XAdkProvider/context\";\n\nexport * from \"./types\";\n\n// 导出自定义 Hook 相关类型\nexport type { ChatHookResult, ChatHookFactory } from \"./types/ChatHook\";\n\n// 旧 API - 保持向后兼容\nexport {\n useXAi,\n XAiProvider,\n XAiChatbot,\n XAiSDK,\n XAiSender,\n XAiConversations,\n useXAiSDK,\n request,\n};\n\n// 新 API - 推荐使用\nexport {\n XAdkProvider,\n XAdkChatbot,\n XAdkSender,\n FileGallery,\n XAdkThoughtChain,\n useADKChat,\n};\n\n// 基础组件导出 - 供高级用户和业务侧使用\nexport { default as MarkdownRender } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport { default as FunctionCallRender } from \"./components/XAdkChatbot/components/FunctionCallRender\";\nexport { default as ThinkRender } from \"./components/XAdkChatbot/components/ThinkRender\";\n\n// 基础组件类型导出\nexport type { MarkdownRenderProps } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport type { FunctionCallRenderProps } from \"./components/XAdkChatbot/components/FunctionCallRender\";\nexport type {\n XAdkThoughtChainProps,\n ThoughtChainItemType,\n} from \"./types/XAdkThoughtChain\";\n"],"mappings":"AAAA;AACA,SAASA,MAAM;AACf,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,MAAM;AACb,OAAOC,SAAS;AAChB,OAAOC,WAAW;AAClB,OAAOC,gBAAgB;AACvB,OAAOC,gBAAgB;AACvB,OAAOC,SAAS;AAChB,OAAOC,OAAO;;AAEd;AACA,OAAOC,YAAY;AACnB,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,UAAU;;AAEjB;AACA,SACEC,YAAY,EACZC,cAAc,EACdC,UAAU;AAGZ;;AAEA;;AAGA;AACA,SACEhB,MAAM,EACNC,WAAW,EACXC,UAAU,EACVC,MAAM,EACNC,SAAS,EACTE,gBAAgB,EAChBE,SAAS,EACTC,OAAO;;AAGT;AACA,SACEC,YAAY,EACZC,WAAW,EACXC,UAAU,EACVP,WAAW,EACXE,gBAAgB,EAChBM,UAAU;;AAGZ;AACA,SAASI,OAAO,IAAIC,cAAc;AAClC,SAASD,OAAO,IAAIE,kBAAkB;AACtC,SAASF,OAAO,IAAIG,WAAW;;AAE/B"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { type ReactNode } from "react";
|
|
2
2
|
import { IMessage } from "./XAdkChatbot";
|
|
3
|
-
export interface
|
|
3
|
+
export interface XAdkThoughtChainProps {
|
|
4
4
|
defaultOpen?: boolean;
|
|
5
5
|
loading?: boolean;
|
|
6
|
-
title?:
|
|
6
|
+
title?: ReactNode;
|
|
7
7
|
items: ThoughtChainItemType[];
|
|
8
8
|
showFnCallDetail?: boolean;
|
|
9
9
|
onConfirm?: (fnCall: any, confirmed: boolean) => void;
|
|
10
|
+
blink?: boolean;
|
|
10
11
|
}
|
|
11
12
|
export interface TimelineItemProps {
|
|
12
13
|
icon: React.ReactNode;
|
|
@@ -14,6 +15,7 @@ export interface TimelineItemProps {
|
|
|
14
15
|
children: React.ReactNode;
|
|
15
16
|
collapsible?: boolean;
|
|
16
17
|
defaultOpen?: boolean;
|
|
18
|
+
blink?: boolean;
|
|
17
19
|
}
|
|
18
20
|
export interface ThoughtChainItemType {
|
|
19
21
|
type: "tool" | "text";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/types/XAdkThoughtChain.ts"],"sourcesContent":["import React, { type ReactNode } from \"react\";\nimport { IMessage } from \"./XAdkChatbot\";\n\nexport interface XAdkThoughtChainProps {\n defaultOpen?: boolean;\n loading?: boolean;\n title?: ReactNode;\n items: ThoughtChainItemType[];\n showFnCallDetail?: boolean; // 是否可查看调用方法入参\n onConfirm?: (fnCall: any, confirmed: boolean) => void;\n blink?: boolean; // 加载中是否开启闪动效果,默认 false\n}\n\nexport interface TimelineItemProps {\n icon: React.ReactNode;\n title: React.ReactNode;\n children: React.ReactNode;\n collapsible?: boolean; // 是否可展示\n defaultOpen?: boolean; // 是否默认展开\n blink?: boolean; // 是否开启闪动效果\n}\n\nexport interface ThoughtChainItemType {\n type: \"tool\" | \"text\"; // 思维节点类型,目前仅支持 tool | text\n key: string; // 思维节点唯一标识符\n content: string; // 思维节点内容\n title?: React.ReactNode; // 思维节点标题\n collapsible?: boolean; // 思维节点是否可折叠\n msg?: IMessage; // 思维节点信息,tool 类型必传\n}\n"],"mappings":""}
|
|
@@ -6,6 +6,6 @@ export * from "./XAiConversations";
|
|
|
6
6
|
export * from "./XAdkProvider";
|
|
7
7
|
export * from "./XAdkChatbot";
|
|
8
8
|
export * from "./XAdkSender";
|
|
9
|
-
export * from "./
|
|
9
|
+
export * from "./XAdkThoughtChain";
|
|
10
10
|
export * from "./FileGallery";
|
|
11
11
|
export * from "./common";
|
package/dist/esm/types/index.js
CHANGED
|
@@ -6,7 +6,7 @@ export * from "./XAiConversations";
|
|
|
6
6
|
export * from "./XAdkProvider";
|
|
7
7
|
export * from "./XAdkChatbot";
|
|
8
8
|
export * from "./XAdkSender";
|
|
9
|
-
export * from "./
|
|
9
|
+
export * from "./XAdkThoughtChain";
|
|
10
10
|
export * from "./FileGallery";
|
|
11
11
|
export * from "./common";
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../../src/types/index.ts"],"sourcesContent":["export * from \"./XAiChatbot\";\nexport * from \"./XAiMessage\";\nexport * from \"./XAiProvider\";\nexport * from \"./XAiSender\";\nexport * from \"./XAiConversations\";\nexport * from \"./XAdkProvider\";\nexport * from \"./XAdkChatbot\";\nexport * from \"./XAdkSender\";\nexport * from \"./
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/types/index.ts"],"sourcesContent":["export * from \"./XAiChatbot\";\nexport * from \"./XAiMessage\";\nexport * from \"./XAiProvider\";\nexport * from \"./XAiSender\";\nexport * from \"./XAiConversations\";\nexport * from \"./XAdkProvider\";\nexport * from \"./XAdkChatbot\";\nexport * from \"./XAdkSender\";\nexport * from \"./XAdkThoughtChain\";\nexport * from \"./FileGallery\";\nexport * from \"./common\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
|