@ai-group/chat-sdk 3.2.1 → 3.3.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/README.md +89 -60
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.d.ts +1 -6
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.js +19 -3
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.js.map +2 -2
- package/dist/cjs/components/XAdkChatbot/index.js +36 -8
- package/dist/cjs/components/XAdkChatbot/index.js.map +3 -3
- package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.d.ts +5 -0
- package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js +9 -4
- package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js.map +2 -2
- package/dist/cjs/components/XAdkProvider/compound/Messages.d.ts +7 -0
- package/dist/cjs/components/XAdkProvider/compound/Messages.js +10 -4
- package/dist/cjs/components/XAdkProvider/compound/Messages.js.map +2 -2
- package/dist/cjs/components/XAdkProvider/context/ChatStateContext.d.ts +3 -1
- package/dist/cjs/components/XAdkProvider/context/ChatStateContext.js.map +2 -2
- package/dist/cjs/components/XAdkProvider/index.js +27 -3
- package/dist/cjs/components/XAdkProvider/index.js.map +2 -2
- package/dist/cjs/components/XAdkSender/index.js +18 -13
- package/dist/cjs/components/XAdkSender/index.js.map +2 -2
- package/dist/cjs/components/XAdkThoughtChain/index.js +29 -8
- package/dist/cjs/components/XAdkThoughtChain/index.js.map +3 -3
- package/dist/cjs/hooks/useADKChat.d.ts +1 -1
- package/dist/cjs/hooks/useADKChat.js +3 -1
- package/dist/cjs/hooks/useADKChat.js.map +2 -2
- package/dist/cjs/index.d.ts +3 -2
- package/dist/cjs/index.js +20 -1
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/presets/xGroupAdk.d.ts +20 -0
- package/dist/cjs/presets/xGroupAdk.js +130 -0
- package/dist/cjs/presets/xGroupAdk.js.map +7 -0
- package/dist/cjs/types/ChatStrategies.d.ts +45 -0
- package/dist/cjs/types/ChatStrategies.js +18 -0
- package/dist/cjs/types/ChatStrategies.js.map +7 -0
- package/dist/cjs/types/FunctionCallRender.d.ts +35 -0
- package/dist/cjs/types/FunctionCallRender.js +32 -0
- package/dist/cjs/types/FunctionCallRender.js.map +7 -0
- package/dist/cjs/types/XAdkChatbot.d.ts +32 -0
- package/dist/cjs/types/XAdkChatbot.js.map +1 -1
- package/dist/cjs/types/XAdkProvider.d.ts +19 -0
- package/dist/cjs/types/XAdkProvider.js.map +2 -2
- package/dist/cjs/types/XAdkSender.d.ts +20 -4
- package/dist/cjs/types/XAdkSender.js.map +1 -1
- package/dist/cjs/types/XAdkThoughtChain.d.ts +10 -2
- package/dist/cjs/types/XAdkThoughtChain.js.map +1 -1
- package/dist/cjs/types/XAiChatbot.d.ts +1 -1
- package/dist/cjs/types/XAiChatbot.js.map +1 -1
- package/dist/cjs/types/XAiProvider.d.ts +1 -1
- package/dist/cjs/types/XAiProvider.js.map +1 -1
- package/dist/cjs/types/index.d.ts +2 -0
- package/dist/cjs/types/index.js +5 -1
- package/dist/cjs/types/index.js.map +2 -2
- package/dist/cjs/utils/providerManager.d.ts +1 -1
- package/dist/cjs/utils/providerManager.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.d.ts +1 -6
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.js +25 -5
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/index.js +35 -8
- package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
- package/dist/esm/components/XAdkProvider/compound/DefaultLayout.d.ts +5 -0
- package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js +9 -4
- package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js.map +1 -1
- package/dist/esm/components/XAdkProvider/compound/Messages.d.ts +7 -0
- package/dist/esm/components/XAdkProvider/compound/Messages.js +14 -9
- package/dist/esm/components/XAdkProvider/compound/Messages.js.map +1 -1
- package/dist/esm/components/XAdkProvider/context/ChatStateContext.d.ts +3 -1
- package/dist/esm/components/XAdkProvider/context/ChatStateContext.js.map +1 -1
- package/dist/esm/components/XAdkProvider/index.js +21 -4
- package/dist/esm/components/XAdkProvider/index.js.map +1 -1
- package/dist/esm/components/XAdkSender/index.js +25 -17
- package/dist/esm/components/XAdkSender/index.js.map +1 -1
- package/dist/esm/components/XAdkThoughtChain/index.js +23 -7
- package/dist/esm/components/XAdkThoughtChain/index.js.map +1 -1
- package/dist/esm/hooks/useADKChat.d.ts +1 -1
- package/dist/esm/hooks/useADKChat.js +3 -1
- package/dist/esm/hooks/useADKChat.js.map +1 -1
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/presets/xGroupAdk.d.ts +20 -0
- package/dist/esm/presets/xGroupAdk.js +122 -0
- package/dist/esm/presets/xGroupAdk.js.map +1 -0
- package/dist/esm/types/ChatStrategies.d.ts +45 -0
- package/dist/esm/types/ChatStrategies.js +2 -0
- package/dist/esm/types/ChatStrategies.js.map +1 -0
- package/dist/esm/types/FunctionCallRender.d.ts +35 -0
- package/dist/esm/types/FunctionCallRender.js +14 -0
- package/dist/esm/types/FunctionCallRender.js.map +1 -0
- package/dist/esm/types/XAdkChatbot.d.ts +32 -0
- package/dist/esm/types/XAdkChatbot.js.map +1 -1
- package/dist/esm/types/XAdkProvider.d.ts +19 -0
- package/dist/esm/types/XAdkProvider.js.map +1 -1
- package/dist/esm/types/XAdkSender.d.ts +20 -4
- package/dist/esm/types/XAdkSender.js.map +1 -1
- package/dist/esm/types/XAdkThoughtChain.d.ts +10 -2
- package/dist/esm/types/XAdkThoughtChain.js.map +1 -1
- package/dist/esm/types/XAiChatbot.d.ts +1 -1
- package/dist/esm/types/XAiChatbot.js.map +1 -1
- package/dist/esm/types/XAiProvider.d.ts +1 -1
- package/dist/esm/types/XAiProvider.js.map +1 -1
- package/dist/esm/types/index.d.ts +2 -0
- package/dist/esm/types/index.js +2 -0
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/utils/providerManager.d.ts +1 -1
- package/dist/esm/utils/providerManager.js.map +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useRef","useCallback","Popconfirm","message","Tooltip","Input","Modal","ClearOutlined","LoadingOutlined","ArrowUpOutlined","PaperClipOutlined","useStyles","FileGallery","getExt","jsx","_jsx","jsxs","_jsxs","XAdkSender","_ref","_ref$clearBtnShow","clearBtnShow","_ref$allowUpload","allowUpload","_ref$loading","loading","_ref$disabled","disabled","_ref$uploadRequest","uploadRequest","onClear","onChange","onSubmit","onStop","onFilesChange","onUploadSuccess","onUploadError","_ref$maxFileSize","maxFileSize","_ref$validators","validators","customValidators","_ref$allowedFileTypes","allowedFileTypes","_ref$maxFiles","maxFiles","Infinity","suffix","header","prefix","footer","styles","_useState","_useState2","_slicedToArray","value","setValue","_useState3","_useState4","files","setFiles","_useState5","_useState6","isDragOver","setIsDragOver","containerRef","fileInputRef","generateId","Date","now","toString","Math","random","substr","checkFileType","file","length","ext","some","type","includes","endsWith","startsWith","split","slice","checkFileSize","maxSize","size","isDuplicateFile","f","name","builtInValidators","_file","_ref2","concat","_ref3","allValidators","_toConsumableArray","validateFile","_iterator","_createForOfIteratorHelper","_step","s","n","done","validator","error","valid","err","e","handleFileSelect","selectedFiles","fileArray","Array","from","validFiles","forEach","validation","push","id","uid","progress","status","response","prev","next","uploadFiles","_ref4","_asyncToGenerator","_regeneratorRuntime","mark","_callee","fileList","_iterator2","_step2","_loop","wrap","_callee$","_context2","localFile","_loop$","_context","map","_objectSpread","onProgress","percent","onSuccess","onError","errorMessage","t0","console","Error","stop","delegateYield","t1","finish","_x","apply","arguments","handleRemoveFile","filter","triggerFileSelect","current","click","handleDragOver","preventDefault","stopPropagation","handleDragLeave","handleDrop","dataTransfer","handleSubmit","trim","warning","successFiles","uploadingFiles","confirm","title","content","okText","cancelText","onOk","formattedFiles","formatFilesForServer","text","onCancel","info","_file$response","data","responseData","fileName","fileId","tempUrl","url","fileType","fileSize","mimeType","raw","handleInputChange","newValue","target","handleKeyDown","key","shiftKey","renderFileList","style","display","flexWrap","gap","padding","children","removable","onRemove","containerClass","container","uploading","isDisabled","SendButton","props","className","iconButton","sendButton","onClick","UploadButton","uploadButton","ClearButton","onConfirm","placement","clearButton","actionsComponents","renderSlot","slot","oriNode","undefined","result","components","defaultSuffix","buttonGroup","ref","onDragOver","onDragLeave","onDrop","multiple","accept","join","mainArea","senderWrap","inputAndButtons","textAreaWrapper","TextArea","textArea","onKeyDown","placeholder","autoSize","minRows","maxRows","border","boxShadow","outline","tip"],"sources":["../../../../src/components/XAdkSender/index.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback } from \"react\";\nimport { Popconfirm, message, Tooltip, Input, Modal } from \"antd\";\nimport {\n ClearOutlined,\n LoadingOutlined,\n ArrowUpOutlined,\n PaperClipOutlined,\n} from \"@ant-design/icons\";\nimport {\n XAdkSenderProps,\n ServerFile,\n LocalFile,\n ActionsComponents,\n FileValidator,\n} from \"@/types\";\nimport { useStyles } from \"./styles\";\nimport FileGallery from \"../FileGallery\";\nimport { getExt } from \"@/utils/file\";\n\nconst XAdkSender: React.FC<XAdkSenderProps> = ({\n clearBtnShow = true,\n allowUpload = false,\n loading = false,\n disabled = false,\n uploadRequest = () => {},\n onClear,\n onChange,\n onSubmit,\n onStop,\n onFilesChange,\n onUploadSuccess,\n onUploadError,\n maxFileSize = 10,\n validators: customValidators = [],\n // allowedFileTypes = [\n // \"image/*\",\n // \"audio/*\",\n // \"video/*\",\n // \"application/pdf\",\n // \"text/plain\",\n // \".doc\",\n // \".docx\",\n // \".xls\",\n // \".xlsx\",\n // \".ppt\",\n // \".pptx\",\n // \"\",\n // ],\n allowedFileTypes = [],\n maxFiles = Infinity,\n suffix,\n header,\n prefix,\n footer,\n}) => {\n const styles = useStyles();\n const [value, setValue] = useState<string>(\"\");\n const [files, setFiles] = useState<LocalFile[]>([]);\n const [isDragOver, setIsDragOver] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // 生成唯一ID\n const generateId = () => {\n return Date.now().toString(36) + Math.random().toString(36).substr(2);\n };\n\n // 检查文件类型\n const checkFileType = (file: File): boolean => {\n if (allowedFileTypes?.length > 0) {\n const ext = getExt(file);\n\n return allowedFileTypes.some((type) => {\n // 1️⃣ MIME 校验\n if (type.includes(\"/\")) {\n if (type.endsWith(\"/*\")) {\n return file.type.startsWith(type.split(\"/\")[0]);\n }\n return file.type === type;\n }\n\n if (type.startsWith(\".\")) {\n return ext === type.slice(1);\n }\n\n return false;\n });\n }\n return true;\n };\n\n // 检查文件大小\n const checkFileSize = (file: File): boolean => {\n const maxSize = maxFileSize * 1024 * 1024;\n return file.size <= maxSize;\n };\n\n // 重复文件检测\n const isDuplicateFile = (file: File, files: LocalFile[]) => {\n return files.some((f) => f.name === file.name && f.size === file.size);\n };\n\n // 内置校验器集合\n const builtInValidators: FileValidator[] = [\n // 数量校验(修复批量 bug)\n (_file, { files }) => {\n if (files.length >= maxFiles) {\n return `最多只能上传 ${maxFiles} 个文件`;\n }\n return null;\n },\n\n // 大小校验\n (file) => {\n const maxSize = maxFileSize * 1024 * 1024;\n if (file.size > maxSize) {\n return `文件大小不能超过 ${maxFileSize}MB`;\n }\n return null;\n },\n\n // 类型校验\n (file) => {\n if (!checkFileType(file)) {\n return \"不支持的文件类型\";\n }\n return null;\n },\n\n // ⭐ 新增:去重校验\n (file, { files }) => {\n if (isDuplicateFile(file, files)) {\n return \"文件已存在\";\n }\n return null;\n },\n ];\n\n const allValidators = [...builtInValidators, ...customValidators];\n\n // 验证文件\n const validateFile = (file: File): { valid: boolean; message?: string } => {\n for (const validator of allValidators) {\n const error = validator(file, { files });\n if (error) {\n return { valid: false, message: error };\n }\n }\n return { valid: true };\n };\n\n // 处理文件选择\n const handleFileSelect = useCallback(\n (selectedFiles: File[]) => {\n const fileArray = Array.from(selectedFiles);\n\n if (files.length + fileArray.length > maxFiles) {\n message.error(`最多只能上传 ${maxFiles} 个文件`);\n return;\n }\n\n const validFiles: LocalFile[] = [];\n\n fileArray.forEach((file) => {\n const validation = validateFile(file);\n\n if (validation.valid) {\n validFiles.push({\n id: generateId(),\n uid: generateId(),\n name: file.name,\n size: file.size,\n type: file.type,\n file,\n progress: 0,\n status: \"pending\",\n response: null,\n });\n } else {\n message.error(validation.message);\n }\n });\n\n if (validFiles.length > 0) {\n setFiles((prev) => {\n const next = [...prev, ...validFiles];\n onFilesChange?.(next);\n return next;\n });\n uploadFiles(validFiles);\n }\n },\n [files, maxFiles, maxFileSize, allowedFileTypes],\n );\n\n // 上传文件\n const uploadFiles = async (fileList: LocalFile[]) => {\n for (const localFile of fileList) {\n // 开始上传\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, status: \"uploading\" } : f,\n ),\n );\n\n try {\n await uploadRequest({\n file: localFile.file,\n onProgress: (e) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, progress: e.percent } : f,\n ),\n );\n },\n onSuccess: (response) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"success\",\n progress: 100,\n response,\n }\n : f,\n ),\n );\n\n onUploadSuccess?.({\n ...localFile,\n status: \"success\",\n response,\n });\n },\n onError: (error) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage: error.message,\n }\n : f,\n ),\n );\n onUploadError?.(localFile, error);\n },\n });\n } catch (error) {\n console.error(\"上传处理错误:\", error);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage:\n error instanceof Error ? error.message : \"上传处理失败\",\n }\n : f,\n ),\n );\n message.error(`${localFile.name} 上传失败`);\n }\n }\n };\n\n // 删除文件\n const handleRemoveFile = (id: string) => {\n setFiles((prev) => {\n const next = prev.filter((file) => file.id !== id);\n\n onFilesChange?.(next);\n\n return next;\n });\n };\n\n // 触发文件选择\n const triggerFileSelect = () => {\n if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n\n // 处理拖拽事件\n const handleDragOver = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(true);\n }\n },\n [allowUpload],\n );\n\n const handleDragLeave = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(false);\n }\n },\n [allowUpload],\n );\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n\n if (\n allowUpload &&\n e.dataTransfer.files &&\n e.dataTransfer.files.length > 0\n ) {\n handleFileSelect(Array.from(e.dataTransfer.files));\n }\n },\n [allowUpload, handleFileSelect],\n );\n\n // 处理提交\n const handleSubmit = () => {\n if (!value.trim() && files.length === 0) {\n message.warning(\"请输入消息或选择文件\");\n return;\n }\n\n const successFiles = files.filter((file) => file.status === \"success\");\n const uploadingFiles = files.filter((file) => file.status === \"uploading\");\n\n if (uploadingFiles.length > 0) {\n Modal.confirm({\n title: \"文件上传中\",\n content: `还有 ${uploadingFiles.length} 个文件正在上传,是否继续发送?`,\n okText: \"发送已完成的\",\n cancelText: \"等待全部完成\",\n onOk: () => {\n const formattedFiles = formatFilesForServer(successFiles);\n if (onSubmit) {\n onSubmit({\n text: value,\n files: formattedFiles,\n });\n }\n\n setValue(\"\");\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n },\n onCancel: () => {\n message.info(\"请等待文件上传完成后再发送\");\n },\n });\n } else {\n const formattedFiles = formatFilesForServer(successFiles);\n\n if (onSubmit) {\n onSubmit({\n text: value,\n files: formattedFiles,\n });\n }\n\n setValue(\"\");\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n }\n };\n\n // 格式化文件列表为服务端格式\n const formatFilesForServer = (fileList: LocalFile[]): ServerFile[] => {\n return fileList\n .filter((file) => file.status === \"success\" && file.response?.data)\n .map((file) => {\n const responseData = file.response.data;\n\n return {\n fileName: file.name,\n fileId: responseData.fileId || responseData.id || 0,\n tempUrl: responseData.tempUrl || responseData.url || \"\",\n type: responseData.fileType || getExt(file),\n size: responseData.fileSize,\n mimeType: file.type,\n raw: {\n ...responseData,\n },\n };\n });\n };\n\n // 处理输入框变化\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setValue(newValue);\n onChange?.(newValue);\n };\n\n // 处理回车键\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n // 渲染文件列表 - 使用新的 FileGallery 组件\n const renderFileList = () => {\n if (files.length === 0) return null;\n\n return (\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n padding: \"12px 0\",\n }}\n >\n {files.map((file) => (\n <FileGallery\n key={file.id}\n file={file}\n removable\n onRemove={handleRemoveFile}\n />\n ))}\n </div>\n );\n };\n\n const containerClass = `${styles.container} ${isDragOver ? \"drag-over\" : \"\"}`;\n const uploading = files.some((f) => f.status === \"uploading\");\n const isDisabled = disabled || uploading || loading;\n\n // 定义按钮组件\n const SendButton = (props: any) => (\n <Tooltip title={loading ? \"停止生成\" : \"发送消息\"}>\n <button\n className={`${styles.iconButton} ${styles.sendButton} ${loading ? \"stop\" : \"\"}`}\n onClick={loading ? onStop : handleSubmit}\n disabled={uploading || disabled}\n aria-label={loading ? \"停止生成\" : \"发送消息\"}\n {...props}\n >\n {loading ? <LoadingOutlined /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n );\n\n const UploadButton = (props: any) => (\n <Tooltip title=\"上传文件\">\n <button\n className={`${styles.iconButton} ${styles.uploadButton}`}\n onClick={triggerFileSelect}\n disabled={isDisabled}\n aria-label=\"上传文件\"\n {...props}\n >\n <PaperClipOutlined />\n </button>\n </Tooltip>\n );\n\n const ClearButton = (props: any) => (\n <Popconfirm\n title=\"确定要清空聊天记录吗?\"\n onConfirm={onClear}\n placement=\"top\"\n okText=\"确定\"\n cancelText=\"取消\"\n disabled={isDisabled}\n >\n <button\n className={`${styles.iconButton} ${styles.clearButton}`}\n disabled={isDisabled}\n aria-label=\"清空聊天记录\"\n {...props}\n >\n <ClearOutlined />\n </button>\n </Popconfirm>\n );\n\n const actionsComponents: ActionsComponents = {\n SendButton,\n UploadButton,\n ClearButton,\n };\n\n // 渲染插槽内容\n const renderSlot = (\n slot:\n | React.ReactNode\n | false\n | ((\n oriNode: React.ReactNode,\n info: { components: ActionsComponents },\n ) => React.ReactNode | false)\n | undefined,\n oriNode: React.ReactNode,\n ): React.ReactNode | null => {\n if (slot === false) return null;\n if (slot === undefined) return oriNode;\n if (typeof slot === \"function\") {\n const result = slot(oriNode, { components: actionsComponents });\n return result === false ? null : result;\n }\n return slot;\n };\n\n // 默认的后缀内容(操作按钮组)\n const defaultSuffix = (\n <div className={styles.buttonGroup}>\n {allowUpload && <UploadButton />}\n <SendButton />\n </div>\n );\n\n return (\n <div\n ref={containerRef}\n className={containerClass}\n onDragOver={allowUpload ? handleDragOver : undefined}\n onDragLeave={allowUpload ? handleDragLeave : undefined}\n onDrop={allowUpload ? handleDrop : undefined}\n >\n {/* 头部插槽 */}\n {renderSlot(header, false)}\n\n {allowUpload && files.length > 0 && renderFileList()}\n\n {/* 隐藏的原生 file input */}\n {allowUpload && (\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n accept={allowedFileTypes.join(\",\")}\n style={{ display: \"none\" }}\n onChange={(e) => {\n if (e.target.files) {\n handleFileSelect(Array.from(e.target.files));\n e.target.value = \"\";\n }\n }}\n />\n )}\n\n <div className={styles.mainArea}>\n <div className={styles.senderWrap}>\n {/* 清除按钮 */}\n {clearBtnShow && <ClearButton />}\n\n <div className={styles.inputAndButtons}>\n {/* 前缀插槽 */}\n {renderSlot(prefix, false)}\n\n <div className={styles.textAreaWrapper}>\n <Input.TextArea\n className={styles.textArea}\n value={value}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder=\"请输入消息...\"\n disabled={isDisabled}\n autoSize={{ minRows: 1, maxRows: 4 }}\n style={{\n border: \"none\",\n boxShadow: \"none\",\n outline: \"none\",\n padding: 0,\n }}\n />\n </div>\n\n {/* 后缀插槽(默认显示操作按钮) */}\n {renderSlot(suffix, defaultSuffix)}\n </div>\n </div>\n\n {/* 底部插槽(默认显示提示文字) */}\n {renderSlot(\n footer,\n <div className={styles.tip}>\n 内容由AI生成,无法确保真实准确,仅供参考\n </div>,\n )}\n </div>\n </div>\n );\n};\n\nexport default XAdkSender;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useState","useRef","useCallback","Popconfirm","message","Tooltip","Input","Modal","ClearOutlined","LoadingOutlined","ArrowUpOutlined","PaperClipOutlined","useStyles","FileGallery","getExt","jsx","_jsx","jsxs","_jsxs","XAdkSender","_ref","_ref$clearBtnShow","clearBtnShow","_ref$allowUpload","allowUpload","_ref$loading","loading","_ref$disabled","disabled","_ref$uploadRequest","uploadRequest","onClear","onChange","onSubmit","onStop","onFilesChange","onUploadSuccess","onUploadError","_ref$maxFileSize","maxFileSize","_ref$validators","validators","customValidators","_ref$allowedFileTypes","allowedFileTypes","_ref$maxFiles","maxFiles","Infinity","suffix","header","prefix","footer","styles","_useState","_useState2","_slicedToArray","value","setValue","_useState3","_useState4","files","setFiles","_useState5","_useState6","isDragOver","setIsDragOver","containerRef","fileInputRef","generateId","Date","now","toString","Math","random","substr","normalizeUploadResponse","response","_ref2","_response$data","data","checkFileType","file","length","ext","some","type","includes","endsWith","startsWith","split","slice","checkFileSize","maxSize","size","isDuplicateFile","f","name","builtInValidators","_file","_ref3","concat","_ref4","allValidators","_toConsumableArray","validateFile","_iterator","_createForOfIteratorHelper","_step","s","n","done","validator","error","valid","err","e","handleFileSelect","selectedFiles","fileArray","Array","from","validFiles","forEach","validation","push","id","uid","progress","status","prev","next","uploadFiles","_ref5","_asyncToGenerator","_regeneratorRuntime","mark","_callee","fileList","_iterator2","_step2","_loop","wrap","_callee$","_context2","localFile","_loop$","_context","map","_objectSpread","onProgress","percent","onSuccess","responseData","fileId","tempUrl","fileUrl","url","onError","errorMessage","t0","console","Error","stop","delegateYield","t1","finish","_x","apply","arguments","handleRemoveFile","filter","triggerFileSelect","current","click","handleDragOver","preventDefault","stopPropagation","handleDragLeave","handleDrop","dataTransfer","handleSubmit","trim","warning","successFiles","uploadingFiles","confirm","title","content","okText","cancelText","onOk","formattedFiles","formatFilesForServer","text","onCancel","info","fileName","fileType","fileSize","mimeType","raw","handleInputChange","newValue","target","handleKeyDown","key","shiftKey","renderFileList","style","display","flexWrap","gap","padding","children","removable","onRemove","containerClass","container","uploading","isDisabled","SendButton","props","className","iconButton","sendButton","onClick","UploadButton","uploadButton","ClearButton","onConfirm","placement","clearButton","actionsComponents","renderSlot","slot","oriNode","undefined","result","components","defaultSuffix","buttonGroup","ref","onDragOver","onDragLeave","onDrop","multiple","accept","join","mainArea","senderWrap","inputAndButtons","textAreaWrapper","TextArea","textArea","onKeyDown","placeholder","autoSize","minRows","maxRows","border","boxShadow","outline","tip"],"sources":["../../../../src/components/XAdkSender/index.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback } from \"react\";\nimport { Popconfirm, message, Tooltip, Input, Modal } from \"antd\";\nimport {\n ClearOutlined,\n LoadingOutlined,\n ArrowUpOutlined,\n PaperClipOutlined,\n} from \"@ant-design/icons\";\nimport {\n XAdkSenderProps,\n ServerFile,\n LocalFile,\n ActionsComponents,\n FileValidator,\n UploadFileResult,\n} from \"@/types\";\nimport { useStyles } from \"./styles\";\nimport FileGallery from \"../FileGallery\";\nimport { getExt } from \"@/utils/file\";\n\nconst XAdkSender: React.FC<XAdkSenderProps> = ({\n clearBtnShow = true,\n allowUpload = false,\n loading = false,\n disabled = false,\n uploadRequest = () => {},\n onClear,\n onChange,\n onSubmit,\n onStop,\n onFilesChange,\n onUploadSuccess,\n onUploadError,\n maxFileSize = 10,\n validators: customValidators = [],\n // allowedFileTypes = [\n // \"image/*\",\n // \"audio/*\",\n // \"video/*\",\n // \"application/pdf\",\n // \"text/plain\",\n // \".doc\",\n // \".docx\",\n // \".xls\",\n // \".xlsx\",\n // \".ppt\",\n // \".pptx\",\n // \"\",\n // ],\n allowedFileTypes = [],\n maxFiles = Infinity,\n suffix,\n header,\n prefix,\n footer,\n}) => {\n const styles = useStyles();\n const [value, setValue] = useState<string>(\"\");\n const [files, setFiles] = useState<LocalFile[]>([]);\n const [isDragOver, setIsDragOver] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // 生成唯一ID\n const generateId = () => {\n return Date.now().toString(36) + Math.random().toString(36).substr(2);\n };\n\n const normalizeUploadResponse = (response: any): UploadFileResult => {\n return response?.data ?? response ?? {};\n };\n\n // 检查文件类型\n const checkFileType = (file: File): boolean => {\n if (allowedFileTypes?.length > 0) {\n const ext = getExt(file);\n\n return allowedFileTypes.some((type) => {\n // 1️⃣ MIME 校验\n if (type.includes(\"/\")) {\n if (type.endsWith(\"/*\")) {\n return file.type.startsWith(type.split(\"/\")[0]);\n }\n return file.type === type;\n }\n\n if (type.startsWith(\".\")) {\n return ext === type.slice(1);\n }\n\n return false;\n });\n }\n return true;\n };\n\n // 检查文件大小\n const checkFileSize = (file: File): boolean => {\n const maxSize = maxFileSize * 1024 * 1024;\n return file.size <= maxSize;\n };\n\n // 重复文件检测\n const isDuplicateFile = (file: File, files: LocalFile[]) => {\n return files.some((f) => f.name === file.name && f.size === file.size);\n };\n\n // 内置校验器集合\n const builtInValidators: FileValidator[] = [\n // 数量校验(修复批量 bug)\n (_file, { files }) => {\n if (files.length >= maxFiles) {\n return `最多只能上传 ${maxFiles} 个文件`;\n }\n return null;\n },\n\n // 大小校验\n (file) => {\n const maxSize = maxFileSize * 1024 * 1024;\n if (file.size > maxSize) {\n return `文件大小不能超过 ${maxFileSize}MB`;\n }\n return null;\n },\n\n // 类型校验\n (file) => {\n if (!checkFileType(file)) {\n return \"不支持的文件类型\";\n }\n return null;\n },\n\n // ⭐ 新增:去重校验\n (file, { files }) => {\n if (isDuplicateFile(file, files)) {\n return \"文件已存在\";\n }\n return null;\n },\n ];\n\n const allValidators = [...builtInValidators, ...customValidators];\n\n // 验证文件\n const validateFile = (file: File): { valid: boolean; message?: string } => {\n for (const validator of allValidators) {\n const error = validator(file, { files });\n if (error) {\n return { valid: false, message: error };\n }\n }\n return { valid: true };\n };\n\n // 处理文件选择\n const handleFileSelect = useCallback(\n (selectedFiles: File[]) => {\n const fileArray = Array.from(selectedFiles);\n\n if (files.length + fileArray.length > maxFiles) {\n message.error(`最多只能上传 ${maxFiles} 个文件`);\n return;\n }\n\n const validFiles: LocalFile[] = [];\n\n fileArray.forEach((file) => {\n const validation = validateFile(file);\n\n if (validation.valid) {\n validFiles.push({\n id: generateId(),\n uid: generateId(),\n name: file.name,\n size: file.size,\n type: file.type,\n file,\n progress: 0,\n status: \"pending\",\n response: null,\n });\n } else {\n message.error(validation.message);\n }\n });\n\n if (validFiles.length > 0) {\n setFiles((prev) => {\n const next = [...prev, ...validFiles];\n onFilesChange?.(next);\n return next;\n });\n uploadFiles(validFiles);\n }\n },\n [files, maxFiles, maxFileSize, allowedFileTypes],\n );\n\n // 上传文件\n const uploadFiles = async (fileList: LocalFile[]) => {\n for (const localFile of fileList) {\n // 开始上传\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, status: \"uploading\" } : f,\n ),\n );\n\n try {\n await uploadRequest({\n file: localFile.file,\n onProgress: (e) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, progress: e.percent } : f,\n ),\n );\n },\n onSuccess: (response) => {\n const responseData = normalizeUploadResponse(response);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"success\",\n progress: 100,\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl ||\n responseData.fileUrl ||\n responseData.url,\n }\n : f,\n ),\n );\n\n onUploadSuccess?.({\n ...localFile,\n status: \"success\",\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl || responseData.fileUrl || responseData.url,\n });\n },\n onError: (error) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage: error.message,\n }\n : f,\n ),\n );\n onUploadError?.(localFile, error);\n },\n });\n } catch (error) {\n console.error(\"上传处理错误:\", error);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage:\n error instanceof Error ? error.message : \"上传处理失败\",\n }\n : f,\n ),\n );\n message.error(`${localFile.name} 上传失败`);\n }\n }\n };\n\n // 删除文件\n const handleRemoveFile = (id: string) => {\n setFiles((prev) => {\n const next = prev.filter((file) => file.id !== id);\n\n onFilesChange?.(next);\n\n return next;\n });\n };\n\n // 触发文件选择\n const triggerFileSelect = () => {\n if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n\n // 处理拖拽事件\n const handleDragOver = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(true);\n }\n },\n [allowUpload],\n );\n\n const handleDragLeave = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(false);\n }\n },\n [allowUpload],\n );\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n\n if (\n allowUpload &&\n e.dataTransfer.files &&\n e.dataTransfer.files.length > 0\n ) {\n handleFileSelect(Array.from(e.dataTransfer.files));\n }\n },\n [allowUpload, handleFileSelect],\n );\n\n // 处理提交\n const handleSubmit = () => {\n if (!value.trim() && files.length === 0) {\n message.warning(\"请输入消息或选择文件\");\n return;\n }\n\n const successFiles = files.filter((file) => file.status === \"success\");\n const uploadingFiles = files.filter((file) => file.status === \"uploading\");\n\n if (uploadingFiles.length > 0) {\n Modal.confirm({\n title: \"文件上传中\",\n content: `还有 ${uploadingFiles.length} 个文件正在上传,是否继续发送?`,\n okText: \"发送已完成的\",\n cancelText: \"等待全部完成\",\n onOk: () => {\n const formattedFiles = formatFilesForServer(successFiles);\n if (onSubmit) {\n onSubmit({\n text: value,\n files: formattedFiles,\n });\n }\n\n setValue(\"\");\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n },\n onCancel: () => {\n message.info(\"请等待文件上传完成后再发送\");\n },\n });\n } else {\n const formattedFiles = formatFilesForServer(successFiles);\n\n if (onSubmit) {\n onSubmit({\n text: value,\n files: formattedFiles,\n });\n }\n\n setValue(\"\");\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n }\n };\n\n // 格式化文件列表为服务端格式\n const formatFilesForServer = (fileList: LocalFile[]): ServerFile[] => {\n return fileList\n .filter((file) => file.status === \"success\" && file.response)\n .map((file) => {\n const responseData = normalizeUploadResponse(file.response);\n\n return {\n fileName: responseData.fileName || file.name,\n fileId: responseData.fileId || responseData.id || \"\",\n tempUrl:\n responseData.tempUrl || responseData.fileUrl || responseData.url || \"\",\n type: responseData.fileType || responseData.type || getExt(file),\n size: responseData.fileSize || responseData.size || file.size,\n mimeType: responseData.mimeType || file.type,\n raw: {\n ...responseData,\n },\n };\n });\n };\n\n // 处理输入框变化\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setValue(newValue);\n onChange?.(newValue);\n };\n\n // 处理回车键\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n // 渲染文件列表 - 使用新的 FileGallery 组件\n const renderFileList = () => {\n if (files.length === 0) return null;\n\n return (\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n padding: \"12px 0\",\n }}\n >\n {files.map((file) => (\n <FileGallery\n key={file.id}\n file={file}\n removable\n onRemove={handleRemoveFile}\n />\n ))}\n </div>\n );\n };\n\n const containerClass = `${styles.container} ${isDragOver ? \"drag-over\" : \"\"}`;\n const uploading = files.some((f) => f.status === \"uploading\");\n const isDisabled = disabled || uploading || loading;\n\n // 定义按钮组件\n const SendButton = (props: any) => (\n <Tooltip title={loading ? \"停止生成\" : \"发送消息\"}>\n <button\n className={`${styles.iconButton} ${styles.sendButton} ${loading ? \"stop\" : \"\"}`}\n onClick={loading ? onStop : handleSubmit}\n disabled={uploading || disabled}\n aria-label={loading ? \"停止生成\" : \"发送消息\"}\n {...props}\n >\n {loading ? <LoadingOutlined /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n );\n\n const UploadButton = (props: any) => (\n <Tooltip title=\"上传文件\">\n <button\n className={`${styles.iconButton} ${styles.uploadButton}`}\n onClick={triggerFileSelect}\n disabled={isDisabled}\n aria-label=\"上传文件\"\n {...props}\n >\n <PaperClipOutlined />\n </button>\n </Tooltip>\n );\n\n const ClearButton = (props: any) => (\n <Popconfirm\n title=\"确定要清空聊天记录吗?\"\n onConfirm={onClear}\n placement=\"top\"\n okText=\"确定\"\n cancelText=\"取消\"\n disabled={isDisabled}\n >\n <button\n className={`${styles.iconButton} ${styles.clearButton}`}\n disabled={isDisabled}\n aria-label=\"清空聊天记录\"\n {...props}\n >\n <ClearOutlined />\n </button>\n </Popconfirm>\n );\n\n const actionsComponents: ActionsComponents = {\n SendButton,\n UploadButton,\n ClearButton,\n };\n\n // 渲染插槽内容\n const renderSlot = (\n slot:\n | React.ReactNode\n | false\n | ((\n oriNode: React.ReactNode,\n info: { components: ActionsComponents },\n ) => React.ReactNode | false)\n | undefined,\n oriNode: React.ReactNode,\n ): React.ReactNode | null => {\n if (slot === false) return null;\n if (slot === undefined) return oriNode;\n if (typeof slot === \"function\") {\n const result = slot(oriNode, { components: actionsComponents });\n return result === false ? null : result;\n }\n return slot;\n };\n\n // 默认的后缀内容(操作按钮组)\n const defaultSuffix = (\n <div className={styles.buttonGroup}>\n {allowUpload && <UploadButton />}\n <SendButton />\n </div>\n );\n\n return (\n <div\n ref={containerRef}\n className={containerClass}\n onDragOver={allowUpload ? handleDragOver : undefined}\n onDragLeave={allowUpload ? handleDragLeave : undefined}\n onDrop={allowUpload ? handleDrop : undefined}\n >\n {/* 头部插槽 */}\n {renderSlot(header, false)}\n\n {allowUpload && files.length > 0 && renderFileList()}\n\n {/* 隐藏的原生 file input */}\n {allowUpload && (\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n accept={allowedFileTypes.join(\",\")}\n style={{ display: \"none\" }}\n onChange={(e) => {\n if (e.target.files) {\n handleFileSelect(Array.from(e.target.files));\n e.target.value = \"\";\n }\n }}\n />\n )}\n\n <div className={styles.mainArea}>\n <div className={styles.senderWrap}>\n {/* 清除按钮 */}\n {clearBtnShow && <ClearButton />}\n\n <div className={styles.inputAndButtons}>\n {/* 前缀插槽 */}\n {renderSlot(prefix, false)}\n\n <div className={styles.textAreaWrapper}>\n <Input.TextArea\n className={styles.textArea}\n value={value}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder=\"请输入消息...\"\n disabled={isDisabled}\n autoSize={{ minRows: 1, maxRows: 4 }}\n style={{\n border: \"none\",\n boxShadow: \"none\",\n outline: \"none\",\n padding: 0,\n }}\n />\n </div>\n\n {/* 后缀插槽(默认显示操作按钮) */}\n {renderSlot(suffix, defaultSuffix)}\n </div>\n </div>\n\n {/* 底部插槽(默认显示提示文字) */}\n {renderSlot(\n footer,\n <div className={styles.tip}>\n 内容由AI生成,无法确保真实准确,仅供参考\n </div>,\n )}\n </div>\n </div>\n );\n};\n\nexport default XAdkSender;\n"],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { CheckCircleFilled, SyncOutlined, ThunderboltOutlined, PartitionOutlined
|
|
|
4
4
|
import MarkdownRender from "../XAdkChatbot/components/MarkdownRender";
|
|
5
5
|
import FunctionCallRender from "../XAdkChatbot/components/FunctionCallRender";
|
|
6
6
|
import { useStyles } from "./styles";
|
|
7
|
+
import { defaultToolKindResolver } from "../../types/FunctionCallRender";
|
|
7
8
|
import { cleanProcessText } from "../../utils";
|
|
8
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
10
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -68,16 +69,21 @@ var TimelineTextItem = function TimelineTextItem(_ref2) {
|
|
|
68
69
|
});
|
|
69
70
|
};
|
|
70
71
|
var TimelineToolItem = function TimelineToolItem(_ref3) {
|
|
71
|
-
var _msg$functionCall, _msg$functionCall2, _msg$functionResponse, _msg$functionResponse2;
|
|
72
|
+
var _msg$functionCall, _msg$functionCall2, _msg$functionCall3, _msg$functionResponse, _msg$functionResponse2, _renderFunctionCall;
|
|
72
73
|
var msg = _ref3.msg,
|
|
73
74
|
collapsible = _ref3.collapsible,
|
|
74
75
|
onConfirm = _ref3.onConfirm,
|
|
75
76
|
showFnCallDetail = _ref3.showFnCallDetail,
|
|
76
|
-
blink = _ref3.blink
|
|
77
|
+
blink = _ref3.blink,
|
|
78
|
+
renderFunctionCall = _ref3.renderFunctionCall,
|
|
79
|
+
toolKindResolver = _ref3.toolKindResolver,
|
|
80
|
+
strategies = _ref3.strategies;
|
|
77
81
|
var styles = useStyles();
|
|
82
|
+
var fnName = (_msg$functionCall = msg.functionCall) === null || _msg$functionCall === void 0 ? void 0 : _msg$functionCall.name;
|
|
83
|
+
var kind = toolKindResolver(fnName);
|
|
78
84
|
var needsConfirm = msg.functionCall && !msg.functionResponse;
|
|
79
85
|
var isDone = !!msg.functionResponse;
|
|
80
|
-
var toolName = ((_msg$
|
|
86
|
+
var toolName = ((_msg$functionCall2 = msg.functionCall) === null || _msg$functionCall2 === void 0 || (_msg$functionCall2 = _msg$functionCall2.args) === null || _msg$functionCall2 === void 0 ? void 0 : _msg$functionCall2.componentName) || ((_msg$functionCall3 = msg.functionCall) === null || _msg$functionCall3 === void 0 ? void 0 : _msg$functionCall3.name) || "组件执行";
|
|
81
87
|
var statusInfo = ((_msg$functionResponse = msg.functionResponse) === null || _msg$functionResponse === void 0 || (_msg$functionResponse = _msg$functionResponse.response) === null || _msg$functionResponse === void 0 ? void 0 : _msg$functionResponse.processData) || ((_msg$functionResponse2 = msg.functionResponse) === null || _msg$functionResponse2 === void 0 || (_msg$functionResponse2 = _msg$functionResponse2.response) === null || _msg$functionResponse2 === void 0 ? void 0 : _msg$functionResponse2.output);
|
|
82
88
|
var titleNode = /*#__PURE__*/_jsxs("div", {
|
|
83
89
|
className: styles.toolTitleGroup,
|
|
@@ -101,10 +107,13 @@ var TimelineToolItem = function TimelineToolItem(_ref3) {
|
|
|
101
107
|
children: [statusInfo && typeof statusInfo === "string" && /*#__PURE__*/_jsx("div", {
|
|
102
108
|
className: styles.statusInfo,
|
|
103
109
|
children: statusInfo
|
|
104
|
-
}), /*#__PURE__*/_jsx(FunctionCallRender, {
|
|
110
|
+
}), (_renderFunctionCall = renderFunctionCall === null || renderFunctionCall === void 0 ? void 0 : renderFunctionCall(msg)) !== null && _renderFunctionCall !== void 0 ? _renderFunctionCall : /*#__PURE__*/_jsx(FunctionCallRender, {
|
|
105
111
|
msg: msg,
|
|
106
112
|
showDetail: showFnCallDetail,
|
|
107
|
-
onConfirm: onConfirm
|
|
113
|
+
onConfirm: onConfirm,
|
|
114
|
+
kind: kind,
|
|
115
|
+
renderApproval: strategies === null || strategies === void 0 ? void 0 : strategies.renderApproval,
|
|
116
|
+
renderHandoff: strategies === null || strategies === void 0 ? void 0 : strategies.renderHandoff
|
|
108
117
|
})]
|
|
109
118
|
});
|
|
110
119
|
};
|
|
@@ -120,7 +129,11 @@ var XAdkThoughtChain = function XAdkThoughtChain(_ref4) {
|
|
|
120
129
|
loading = _ref4.loading,
|
|
121
130
|
_ref4$blink = _ref4.blink,
|
|
122
131
|
blink = _ref4$blink === void 0 ? false : _ref4$blink,
|
|
123
|
-
onConfirm = _ref4.onConfirm
|
|
132
|
+
onConfirm = _ref4.onConfirm,
|
|
133
|
+
renderFunctionCall = _ref4.renderFunctionCall,
|
|
134
|
+
_ref4$toolKindResolve = _ref4.toolKindResolver,
|
|
135
|
+
toolKindResolver = _ref4$toolKindResolve === void 0 ? defaultToolKindResolver : _ref4$toolKindResolve,
|
|
136
|
+
strategies = _ref4.strategies;
|
|
124
137
|
var styles = useStyles();
|
|
125
138
|
var _useState3 = useState(defaultOpen),
|
|
126
139
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
@@ -174,7 +187,10 @@ var XAdkThoughtChain = function XAdkThoughtChain(_ref4) {
|
|
|
174
187
|
collapsible: item.collapsible,
|
|
175
188
|
showFnCallDetail: showFnCallDetail,
|
|
176
189
|
onConfirm: onConfirm,
|
|
177
|
-
blink: shouldBlink
|
|
190
|
+
blink: shouldBlink,
|
|
191
|
+
renderFunctionCall: renderFunctionCall,
|
|
192
|
+
toolKindResolver: toolKindResolver,
|
|
193
|
+
strategies: strategies
|
|
178
194
|
}, "tool-".concat(item.key || i));
|
|
179
195
|
})
|
|
180
196
|
})
|
|
@@ -1 +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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"}
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","CheckCircleFilled","SyncOutlined","ThunderboltOutlined","PartitionOutlined","RightOutlined","DownOutlined","MarkdownRender","FunctionCallRender","useStyles","defaultToolKindResolver","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$functionCall3","_msg$functionResponse","_msg$functionResponse2","_renderFunctionCall","msg","onConfirm","showFnCallDetail","renderFunctionCall","toolKindResolver","strategies","fnName","functionCall","name","kind","needsConfirm","functionResponse","isDone","toolName","args","componentName","statusInfo","response","processData","output","titleNode","toolTitleGroup","toolStatusTag","timelineIconTool","showDetail","renderApproval","renderHandoff","XAdkThoughtChain","_ref4","_ref4$defaultOpen","_ref4$showFnCallDetai","_ref4$title","_ref4$items","items","loading","_ref4$blink","_ref4$toolKindResolve","_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 RenderFunctionCall,\n ToolRenderKind,\n} from \"@/types\";\nimport { defaultToolKindResolver } from \"@/types/FunctionCallRender\";\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 renderFunctionCall?: RenderFunctionCall;\n toolKindResolver: (name: string | undefined) => ToolRenderKind;\n strategies?: XAdkThoughtChainProps[\"strategies\"];\n}> = ({\n msg,\n collapsible,\n onConfirm,\n showFnCallDetail,\n blink,\n renderFunctionCall,\n toolKindResolver,\n strategies,\n}) => {\n const styles = useStyles();\n const fnName = msg.functionCall?.name;\n const kind = toolKindResolver(fnName);\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 {renderFunctionCall?.(msg) ?? (\n <FunctionCallRender\n msg={msg}\n showDetail={showFnCallDetail}\n onConfirm={onConfirm}\n kind={kind}\n renderApproval={strategies?.renderApproval}\n renderHandoff={strategies?.renderHandoff}\n />\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 renderFunctionCall,\n toolKindResolver = defaultToolKindResolver,\n strategies,\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 renderFunctionCall={renderFunctionCall}\n toolKindResolver={toolKindResolver}\n strategies={strategies}\n />\n ),\n )}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default XAdkThoughtChain;\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { DebugOptions, FunctionCall, SendContent, SessionData, Event, IMessage, Part } from "../types";
|
|
3
3
|
import { type ChatConfig } from "../services/api";
|
|
4
4
|
declare function useADKChat({ url, token, config, type, enabled, // ← 新增: 是否启用 Hook
|
|
5
|
-
onError, onMessage, onSuccess, onStream, }: DebugOptions): {
|
|
5
|
+
strategies, onError, onMessage, onSuccess, onStream, }: DebugOptions): {
|
|
6
6
|
appInfo: ChatConfig | null;
|
|
7
7
|
startChat: ({ text, files, functionResponse, }: SendContent) => Promise<void>;
|
|
8
8
|
reChat: () => void;
|
|
@@ -52,6 +52,7 @@ function useADKChat(_ref) {
|
|
|
52
52
|
type = _ref$type === void 0 ? "agentDebug" : _ref$type,
|
|
53
53
|
_ref$enabled = _ref.enabled,
|
|
54
54
|
enabled = _ref$enabled === void 0 ? true : _ref$enabled,
|
|
55
|
+
strategies = _ref.strategies,
|
|
55
56
|
onError = _ref.onError,
|
|
56
57
|
onMessage = _ref.onMessage,
|
|
57
58
|
onSuccess = _ref.onSuccess,
|
|
@@ -582,7 +583,8 @@ function useADKChat(_ref) {
|
|
|
582
583
|
|
|
583
584
|
// 确认函数调用
|
|
584
585
|
var confirmFnCall = function confirmFnCall(fnCall, confirmed) {
|
|
585
|
-
var
|
|
586
|
+
var _strategies$createFun, _strategies$createFun2;
|
|
587
|
+
var functionResponse = (_strategies$createFun = strategies === null || strategies === void 0 || (_strategies$createFun2 = strategies.createFunctionResponse) === null || _strategies$createFun2 === void 0 ? void 0 : _strategies$createFun2.call(strategies, fnCall, confirmed)) !== null && _strategies$createFun !== void 0 ? _strategies$createFun : {
|
|
586
588
|
id: fnCall.id,
|
|
587
589
|
name: fnCall.name,
|
|
588
590
|
response: {
|