@ai-group/chat-sdk 0.4.2 → 0.5.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/XAiChatbot/styles.js +1 -0
- package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
- package/dist/cjs/components/XAiConversations/XAiConversations.stories.js +1 -1
- package/dist/cjs/components/XAiConversations/XAiConversations.stories.js.map +2 -2
- package/dist/cjs/components/XAiConversations/index.js +41 -15
- package/dist/cjs/components/XAiConversations/index.js.map +3 -3
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.d.ts +2 -1
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +88 -34
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +3 -3
- package/dist/cjs/components/XAiProvider/index.js +27 -4
- package/dist/cjs/components/XAiProvider/index.js.map +2 -2
- package/dist/cjs/context/AiProviderContext.d.ts +4 -2
- package/dist/cjs/context/AiProviderContext.js.map +2 -2
- package/dist/cjs/hooks/useAgentGenerator.d.ts +14 -5
- package/dist/cjs/hooks/useAgentGenerator.js +143 -64
- package/dist/cjs/hooks/useAgentGenerator.js.map +3 -3
- package/dist/cjs/types/XAiChatbot.d.ts +2 -0
- package/dist/cjs/types/XAiChatbot.js.map +1 -1
- package/dist/cjs/types/XAiConversations.d.ts +14 -2
- package/dist/cjs/types/XAiConversations.js.map +1 -1
- package/dist/cjs/types/XAiProvider.d.ts +257 -13
- package/dist/cjs/types/XAiProvider.js.map +2 -2
- package/dist/cjs/utils/umdEntry.d.ts +3 -1
- package/dist/cjs/utils/umdEntry.js +5 -2
- package/dist/cjs/utils/umdEntry.js.map +3 -3
- package/dist/esm/components/XAiChatbot/styles.js +1 -1
- package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
- package/dist/esm/components/XAiConversations/XAiConversations.stories.js +1 -1
- package/dist/esm/components/XAiConversations/XAiConversations.stories.js.map +1 -1
- package/dist/esm/components/XAiConversations/index.js +56 -14
- package/dist/esm/components/XAiConversations/index.js.map +1 -1
- package/dist/esm/components/XAiProvider/XAiProvider.stories.d.ts +2 -1
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js +105 -28
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -1
- package/dist/esm/components/XAiProvider/index.js +24 -7
- package/dist/esm/components/XAiProvider/index.js.map +1 -1
- package/dist/esm/context/AiProviderContext.d.ts +4 -2
- package/dist/esm/context/AiProviderContext.js +1 -0
- package/dist/esm/context/AiProviderContext.js.map +1 -1
- package/dist/esm/hooks/useAgentGenerator.d.ts +14 -5
- package/dist/esm/hooks/useAgentGenerator.js +271 -113
- package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
- package/dist/esm/types/XAiChatbot.d.ts +2 -0
- package/dist/esm/types/XAiChatbot.js.map +1 -1
- package/dist/esm/types/XAiConversations.d.ts +14 -2
- package/dist/esm/types/XAiConversations.js.map +1 -1
- package/dist/esm/types/XAiProvider.d.ts +257 -13
- package/dist/esm/types/XAiProvider.js +81 -1
- package/dist/esm/types/XAiProvider.js.map +1 -1
- package/dist/esm/utils/umdEntry.d.ts +3 -1
- package/dist/esm/utils/umdEntry.js +29 -22
- package/dist/esm/utils/umdEntry.js.map +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","useEffect","useRef","v4","uuidV4","useEventStreamRequest","MessageRole","MessageStatus","ErrorCode","SuccessCode","request","safeJsonParse","fetchAppConfig","fetchSessionList","fetchSessionDetail","documentIcon","completedIcon","completedExpandIcon","documentExpandIcon","qaIcon","qaExpandIcon","skillNoIcon","skillNoExpandIcon","toolIcon","toolExpandIcon","ActionType","ProcessStatus","ActionAvailability","useAgentGenerator","_ref","url","token","config","onError","onSuccess","textSpeed","_useState","_useState2","_slicedToArray","messages","setMessages","_useState3","_useState4","sessionsList","setSessionList","_useState5","_useState6","currentSession","setCurrentSession","_useState7","_useState8","appInfo","setAppInfo","requestInfo","_ref2","appNo","pt","tc","initConfig","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","result","wrap","_callee$","_context","prev","next","_objectSpread","sent","success","data","code","APP_CONFIG_INIT_SUCCESS","message","APP_NOT_FOUND","t0","API_ERROR","stop","apply","arguments","_useEventStreamReques","streaming","onClose","setTimeout","_requestInfo$current","_requestInfo$current2","current","sensitiveWords","requestId","post","onOpen","res","console","log","start","loading","responseData","content","response","action","contentType","errorMsg","prevMessages","newMessages","_toConsumableArray","_response","uniqueId","toolType","args","knowledgeType","_data$success","suggest","suggestMessageIndex","findIndex","item","type","newMessage","id","createdAt","Date","status","done","role","suggestion","key","description","push","suggestMsg","lastAIMsgIndex","reverse","m","assistant","realIndex","length","lastAIMsg","aiMsg","text","thinks","init","undefined","recallKnowledgeStart","name","extra","icon","expandIcon","recallKnowledgeEnd","_aiMsg$thinks","recallKnowledgeMsg","find","cost","toFixed","invokeToolStart","invokeToolEnd","_aiMsg$thinks2","invokeToolMsg","pending","failed","concat","finish","setMessage","_ref4","_callee2","messageType","_callee2$","_context2","prologueMessageIndex","_item$extra","prologue","noFooter","map","_item$extra2","abrupt","_item$extra3","splice","_x","_x2","chat","_ref5","_callee3","_callee3$","_context3","user","appParams","inputs_msg","sessionId","Authorization","_x3","reChat","lastUserMsg","stopChat","forEach","formatMessages","initMessagesList","_ref6","messageTime","initPrologue","_ref7","_callee4","_appInfo$onboardingIn","onboardingInfo","_ref8","_ref8$suggested_quest","suggested_questions","_ref8$prologue","formatSuggests","suggestMessages","hasMessages","_callee4$","_context4","filter","_item$extra4","index","some","_item$extra5","initAppConversations","_ref9","_callee5","_result$data","resultData","sessionResult","_sessionResult$data","sessionsData","_callee5$","_context5","list","reduce","acc","cur","sessionMessages","APP_MESSAGES_INIT_SUCCESS"],"sources":["../../../src/hooks/useAgentGenerator.ts"],"sourcesContent":["import { useState, useEffect, useRef } from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport { useEventStreamRequest } from '@/hooks/useEventStreamRequest';\nimport { MessageRole, MessageStatus, TextMessage, SuggestionMessage, Messages } from '@/types/XAiMessage';\nimport { Error, ErrorCode, ErrorCodeMap, Success, SuccessCode } from '@/types/XAiProvider';\nimport { request } from '@/utils/request';\nimport { safeJsonParse } from '@/utils/index';\nimport { fetchAppConfig, fetchSessionList, fetchSessionDetail } from '@/services/api';\n// 图标\nimport documentIcon from '@/assets/document.png';\nimport completedIcon from '@/assets/completed.png';\nimport completedExpandIcon from '@/assets/completed-black.png';\nimport documentExpandIcon from '@/assets/document-black.png';\nimport qaIcon from '@/assets/qa.png';\nimport qaExpandIcon from '@/assets/qa-black.png';\nimport skillNoIcon from '@/assets/skillNo.png';\nimport skillNoExpandIcon from '@/assets/skillNo-black.png';\nimport toolIcon from '@/assets/tools.png';\nimport toolExpandIcon from '@/assets/tools-black.png';\n\nexport type ContentType = 'TEXT' | 'IMAGE' | 'FILE';\n\nexport interface ImageUrl {\n url: string;\n name: string;\n}\n\nexport interface FileUrl {\n url: string;\n fileName: string;\n suffix: string;\n}\n\nexport interface Content {\n text?: string;\n imageUrl?: ImageUrl;\n fileUrl?: FileUrl;\n}\n\nexport interface ContentDef {\n description: string;\n contentType: ContentType;\n content: Content;\n}\n// contents 类型\nexport type Contents = ContentDef[];\n\n// —————————————— 接口字段定义 ————————————\nexport enum ActionType {\n recallKnowledgeStart = 'RECALL_KNOWLEDGE_START', // 知识库召回开始\n recallKnowledgeEnd = 'RECALL_KNOWLEDGE_END', // 知识库召回结束\n invokeToolStart = 'INVOKE_AGENT_TOOL_START', // 开始调用工具\n invokeToolEnd = 'INVOKE_AGENT_TOOL_END', // 调用工具完成\n suggest = 'FOLLOW_UP', // 用户提示\n response = 'RESPONSE', // 响应\n finish = 'FINISHED', // 结束\n}\n\nexport enum ProcessStatus {\n start = 'START',\n end = 'END',\n}\n\nexport enum ActionAvailability {\n disabled = 'disabled', // 不可用\n enabled = 'enabled', // 可用\n remote = 'remote', // 远程可用\n}\n\nexport type ThinkStep = any; // 临时定义,后续可完善\n\n/**\n* 工具/动作定义\n*/\nexport interface Action {\n name: string; // 名称\n description: string; // 描述\n jsonSchema: string; // 参数JSON Schema\n available?: ActionAvailability; // 可用性\n error?: Error; // 错误信息\n}\n\nexport interface UseAgentGeneratorProps {\n url: string;\n token: string;\n config: any;\n onError?: (error: Error) => void;\n onSuccess?: (data: Success) => void;\n}\nconst useAgentGenerator = ({\n url,\n token,\n config,\n onError,\n onSuccess,\n}: UseAgentGeneratorProps) => {\n const textSpeed = 60;\n // 聊天记录\n const [messages, setMessages] = useState<Messages[]>([]);\n // 会话记录\n const [sessionsList, setSessionList] = useState<any[]>([]);\n // 当前会话\n const [currentSession, setCurrentSession] = useState<string>('');\n // 应用 配置\n const [appInfo, setAppInfo] = useState<any>(null);\n // 请求 配置\n const requestInfo = useRef<{ requestId?: string; sensitiveWords?: string[] }>({});\n\n const { appNo, pt, tc } = config || {};\n\n // 初始化时获取配置\n useEffect(() => {\n if (url && config) {\n const initConfig = async () => {\n try {\n const result = await fetchAppConfig({ url, ...config });\n if (result.success) {\n setAppInfo(result.data);\n\n // 成功回调\n onSuccess?.({\n code: SuccessCode.APP_CONFIG_INIT_SUCCESS,\n message: '初始化配置成功',\n });\n } else {\n onError?.({\n code: (result.code as ErrorCode) || ErrorCode.APP_NOT_FOUND,\n message: result.message || '获取应用配置失败',\n });\n }\n } catch (error) {\n onError?.({\n code: ErrorCode.API_ERROR,\n message: '获取应用配置失败',\n });\n }\n };\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url, config]);\n\n const { start, loading, responseData, stop } = useEventStreamRequest({\n streaming: true,\n textSpeed,\n onClose: () => {\n // close的时机有可能在setMessages之前,所以需要延迟一下\n setTimeout(() => {\n if (requestInfo.current?.sensitiveWords && requestInfo.current?.requestId) {\n request.post(url);\n }\n }, 500);\n },\n onOpen(res) {\n console.log('res-----open:', res);\n },\n });\n\n // 数据更新\n useEffect(() => {\n if (!responseData || !responseData.content || !responseData.data) return;\n\n let response = responseData.data || responseData.content;\n if (typeof response === 'string') {\n response = safeJsonParse(response, {\n action: ActionType.response,\n data: {\n contentType: 'TEXT',\n content: '解析响应数据时出错,请重试',\n success: false,\n errorMsg: '响应数据格式错误',\n },\n });\n }\n\n setMessages((prevMessages) => {\n let newMessages = [...prevMessages];\n // 消息类型判断\n const { action, data } = response;\n const { uniqueId, contentType, content, toolType, args, knowledgeType, success = true, errorMsg } = data;\n\n // 建议类信息 特殊处理\n if (action === ActionType.suggest) {\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const newMessage: SuggestionMessage = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content: [{\n key: uuidV4(),\n description: content,\n }],\n };\n // 插到末尾\n newMessages.push(newMessage);\n } else {\n const suggestMsg = newMessages[suggestMessageIndex] as SuggestionMessage;\n if (suggestMsg?.content) {\n suggestMsg.content.push({\n key: uuidV4(),\n description: content,\n });\n }\n }\n return newMessages;\n }\n\n // 找到最后一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage' && (m.status === 'init' || m.status === 'pending'),\n );\n const realIndex = lastAIMsgIndex === -1 ? -1 : prevMessages.length - 1 - lastAIMsgIndex;\n const lastAIMsg = realIndex !== -1 ? prevMessages[realIndex] : null;\n\n let aiMsg: TextMessage | undefined;\n\n if (!lastAIMsg) {\n aiMsg = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: new Date(),\n role: MessageRole.assistant,\n content: { text: '' },\n thinks: [],\n status: MessageStatus.init,\n };\n newMessages.push(aiMsg);\n } else if (lastAIMsg.type === 'TextMessage') {\n aiMsg = { ...lastAIMsg };\n } else if (lastAIMsg.type === 'ImageMessage') {\n aiMsg = undefined;\n }\n\n // 如果 aiMsg 为 undefined,则跳过处理\n if (!aiMsg) {\n return newMessages;\n }\n\n switch (action) {\n case ActionType.recallKnowledgeStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: knowledgeType === 'DOCUMENT' ? '已搜索文档知识库' : '已搜索问答知识库',\n arguments: args,\n extra: {\n ...data,\n icon: knowledgeType === 'DOCUMENT' ? documentIcon : qaIcon,\n expandIcon: knowledgeType === 'DOCUMENT' ? documentExpandIcon : qaExpandIcon,\n },\n });\n break;\n case ActionType.recallKnowledgeEnd: {\n // 需要给之前的recallKnowledgeStart添加cost - 通过uniqueId关联\n const recallKnowledgeMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (recallKnowledgeMsg) {\n recallKnowledgeMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.invokeToolStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: toolType === 'SKILL' ? '已调用工作流' : '已调用工具',\n arguments: args,\n extra: {\n ...data,\n icon: toolType === 'SKILL' ? skillNoIcon : toolIcon,\n expandIcon: toolType === 'SKILL' ? skillNoExpandIcon : toolExpandIcon,\n },\n });\n break;\n case ActionType.invokeToolEnd: {\n // 需要给之前的invokeToolStart添加cost - 通过uniqueId关联\n const invokeToolMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (invokeToolMsg) {\n invokeToolMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.response:\n if (success) {\n // 正常渲染\n if (aiMsg.status === MessageStatus.init) {\n aiMsg.status = MessageStatus.pending;\n }\n if (contentType === 'TEXT' && 'text' in aiMsg.content) {\n aiMsg.content.text += content;\n }\n } else {\n // 调用失败\n aiMsg.status = MessageStatus.failed;\n aiMsg.content.text = `<span style=\"color: red;\">❌ ${errorMsg}</span>`;\n }\n break;\n case ActionType.finish:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: '运行完毕',\n extra: {\n ...data,\n cost: data?.cost ? (data?.cost / 1000).toFixed(2) : 0,\n icon: completedIcon,\n expandIcon: completedExpandIcon,\n },\n });\n aiMsg.status = MessageStatus.done;\n break;\n // 其他类型略\n }\n\n // 更新消息数组\n if (lastAIMsg && lastAIMsg.type === 'TextMessage') {\n newMessages[realIndex] = aiMsg;\n } else if (!lastAIMsg) {\n // 只有 newMessages 最后一条是 TextMessage 时才替换,否则 push\n if (newMessages.length > 0 && newMessages[newMessages.length - 1].type === 'TextMessage') {\n newMessages[newMessages.length - 1] = aiMsg;\n } else {\n // 只 push TextMessage,不替换非 TextMessage\n newMessages = [...newMessages, aiMsg];\n }\n }\n return newMessages;\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [responseData]);\n\n // 添加对话(非普通对话)\n const setMessage = async (messageType: string, content: any) => {\n switch (messageType) {\n case 'prologue': {\n setMessages((prev) => {\n const prologueMessageIndex = prev.findIndex((item) => item.extra?.prologue);\n if (prologueMessageIndex === -1) {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.assistant,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n extra: {\n prologue: true,\n noFooter: true,\n },\n };\n return [newMessage, ...prev];\n }\n return prev.map((item) => {\n if (item.extra?.prologue && item.content && 'text' in item.content) {\n item.content.text = content;\n }\n return item;\n });\n });\n break;\n }\n case 'suggest': {\n setMessages((prev) => {\n const suggestMessageIndex = prev.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const prologueMessageIndex = prev.findIndex((item) => item.extra?.prologue);\n const newMessage: Messages = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content,\n };\n if (prologueMessageIndex === -1) {\n // 如果没有开场白,则插入到最前面\n return [newMessage, ...prev];\n }\n // 如果有开场白,则插到开场白后面\n const newMessages = [...prev];\n newMessages.splice(prologueMessageIndex + 1, 0, newMessage);\n return newMessages;\n }\n return prev.map((item) => {\n if (item.type === 'SuggestionMessage') {\n item.content = content;\n }\n return item;\n });\n });\n break;\n }\n default:\n break;\n }\n };\n\n // 简单对话\n const chat = async (content: any) => {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n setMessages((prev) => {\n // 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n prev.splice(suggestMessageIndex, 1);\n }\n // 插入用户消息\n prev.push(newMessage);\n return prev;\n });\n\n start(\n `${url}/appouter/${appNo}/sendMsg?pt=${pt}&tc=${tc}`,\n {\n appParams: {\n inputs_msg: content,\n },\n sessionId: currentSession,\n },\n {\n Authorization: `Bearer ${token}`,\n },\n );\n };\n\n // 重新生成方法\n const reChat = () => {\n setMessages((prevMessages) => {\n // 1. 删除最新一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage',\n );\n const newMessages = [...prevMessages];\n if (lastAIMsgIndex !== -1) {\n const realIndex = newMessages.length - 1 - lastAIMsgIndex;\n newMessages.splice(realIndex, 1);\n }\n\n // 2. 若存在对话建议,先删除对话建议\n const suggestMessageIndex = newMessages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n newMessages.splice(suggestMessageIndex, 1);\n }\n\n // 3. 找到最新一条用户消息,且类型为 TextMessage\n const lastUserMsg = [...newMessages].reverse().find(\n (m) => m.role === MessageRole.user && m.type === 'TextMessage',\n ) as TextMessage | undefined;\n if (lastUserMsg && lastUserMsg.content && typeof lastUserMsg.content.text === 'string') {\n // 重新发起 chat\n chat(lastUserMsg.content.text);\n }\n\n return newMessages;\n });\n };\n\n const stopChat = () => {\n stop();\n setMessages((prevMessages) => {\n // 找到我所有进行中的消息,并设置为结束\n const newMessages = [...prevMessages];\n newMessages.forEach((m) => {\n if (m.status === MessageStatus.pending) {\n m.status = MessageStatus.done;\n } else if (m.status === MessageStatus.init) {\n if (m.type === 'TextMessage') {\n m.content.text = '<span style=\"color: #cbcbcb;\">用户已取消</span>';\n }\n m.status = MessageStatus.done;\n }\n });\n return newMessages;\n });\n };\n\n // 初始化历史记录\n const formatMessages = (data: any) => {\n setMessages((prev) => {\n const initMessagesList: Messages[] = [];\n data.forEach((item: any) => {\n const { content, messageTime, role } = item || {};\n\n if (role === 'USER') {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: messageTime,\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n initMessagesList.push(newMessage);\n } else if (role === 'AI') {\n const newMessage: TextMessage = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: messageTime,\n role: MessageRole.assistant,\n content: { text: content },\n thinks: [],\n status: MessageStatus.done,\n };\n\n initMessagesList.push(newMessage);\n }\n });\n\n return [...prev, ...initMessagesList];\n });\n };\n\n // 初始化开场白\n const initPrologue = async () => {\n const { onboardingInfo = {} } = appInfo;\n // eslint-disable-next-line camelcase\n const { suggested_questions = [], prologue = '' } = onboardingInfo || {};\n\n // 初始化开场白\n if (prologue) {\n setMessage('prologue', prologue);\n } else {\n setMessages((prev) => prev.filter((item) => !item.extra?.prologue));\n }\n\n // 过滤空内容\n const formatSuggests = suggested_questions.filter((item: string) => item);\n\n if (formatSuggests.length > 0) {\n const suggestMessages = formatSuggests.map((item: string, index: number) => ({\n key: index + 1,\n description: item,\n }));\n // 页面为空时展示开场白预设问题\n const hasMessages = messages.some((item) => (!item.extra?.prologue && item.type !== 'SuggestionMessage'));\n if (!hasMessages) {\n setMessage('suggest', suggestMessages);\n }\n } else {\n setMessages((prev) => prev.filter((item) => !(item.type === 'SuggestionMessage')));\n }\n };\n\n // 获取聊天记录\n const initAppConversations = async () => {\n try {\n const result = await fetchSessionList({\n url,\n appNo,\n pt,\n tc,\n token,\n });\n\n if (result?.success) {\n const resultData = result?.data?.data || [];\n if (resultData.length > 0) {\n setSessionList(resultData);\n const { sessionId } = resultData[0];\n if (sessionId) {\n setCurrentSession(sessionId); // 设置当前会话 id;\n const sessionResult = await fetchSessionDetail({\n url,\n appNo,\n pt,\n tc,\n sessionId,\n token,\n });\n\n if (sessionResult?.success) {\n const sessionsData = (sessionResult?.data as any)?.list?.reduce((acc: any[], cur: any) => {\n return [...acc, ...(cur.sessionMessages || [])];\n }, []);\n\n if (sessionsData.length > 0) {\n formatMessages(sessionsData);\n }\n }\n } else {\n // 兼容 无 session异常\n setCurrentSession(uuidV4());\n }\n } else {\n setSessionList([]);\n setCurrentSession(uuidV4());\n initPrologue();\n }\n // 成功回调\n onSuccess?.({\n code: SuccessCode.APP_MESSAGES_INIT_SUCCESS,\n message: '初始化聊天记录成功',\n });\n } else {\n initPrologue();\n }\n } catch {\n //\n }\n };\n\n // 初始化应用\n useEffect(() => {\n if (appInfo) {\n // 初始化历史数据\n initAppConversations();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appInfo]);\n\n return {\n appInfo,\n messages,\n loading,\n content: responseData.content,\n sessionsList,\n currentSession,\n reChat,\n chat,\n setCurrentSession,\n setMessage,\n setMessages,\n stopChat,\n };\n};\n\nexport default useAgentGenerator;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useState","useEffect","useRef","v4","uuidV4","useEventStreamRequest","MessageRole","MessageStatus","ErrorCode","SuccessCode","request","safeJsonParse","fetchAppConfig","fetchSessionList","fetchSessionDetail","documentIcon","documentExpandIcon","qaIcon","qaExpandIcon","skillNoIcon","skillNoExpandIcon","toolIcon","toolExpandIcon","ActionType","ProcessStatus","ActionAvailability","useAgentGenerator","_ref","url","token","config","onError","onMessage","onSuccess","textSpeed","_useState","_useState2","_slicedToArray","messages","setMessages","_useState3","total","pageNum","pageSize","_useState4","messagePagination","setMessagePagination","_useState5","_useState6","sessionList","setSessionList","_useState7","_useState8","sessionLoading","setSessionLoading","_useState9","_useState10","sessionPagination","setSessionPagination","_useState11","_useState12","currentSessionId","setCurrentSessionId","_useState13","_useState14","appInfo","setAppInfo","requestInfo","_ref2","appNo","pt","tc","initConfig","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","result","wrap","_callee$","_context","prev","next","_objectSpread","sent","success","data","code","APP_CONFIG_INIT_SUCCESS","message","APP_NOT_FOUND","t0","API_ERROR","stop","apply","arguments","_useEventStreamReques","streaming","onClose","setTimeout","_requestInfo$current","_requestInfo$current2","current","sensitiveWords","requestId","post","onOpen","res","console","log","start","loading","responseData","content","response","action","contentType","errorMsg","prevMessages","newMessages","_toConsumableArray","_response","_ref4","uniqueId","toolType","args","knowledgeType","_ref4$success","suggest","suggestMessageIndex","findIndex","item","type","newMessage","id","createdAt","Date","status","done","role","suggestion","key","description","push","suggestMsg","lastAIMsgIndex","reverse","m","assistant","realIndex","length","lastAIMsg","aiMsg","text","thinks","init","undefined","recallKnowledgeStart","name","extra","icon","expandIcon","recallKnowledgeEnd","_aiMsg$thinks","recallKnowledgeMsg","find","cost","toFixed","invokeToolStart","invokeToolEnd","_aiMsg$thinks2","invokeToolMsg","pending","failed","concat","finish","setMessage","_ref5","_callee2","messageType","_callee2$","_context2","prologueMessageIndex","_item$extra","prologue","noFooter","map","_item$extra2","abrupt","_item$extra3","splice","_x","_x2","chat","_ref6","_callee3","inputs_msg","_callee3$","_context3","user","_typeof","appParams","sessionId","Authorization","_x3","reChat","lastUserMsg","stopChat","forEach","formatMessages","initMessagesList","_ref7","messageTime","initPrologue","_ref8","_callee4","_appInfo$onboardingIn","onboardingInfo","_ref9","_ref9$suggested_quest","suggested_questions","_ref9$prologue","formatSuggests","suggestMessages","hasMessages","_callee4$","_context4","filter","_item$extra4","index","some","_item$extra5","initAppConversations","_ref10","_callee5","_result$data","resultData","_result$data2","_result$data3","_result$data4","formatSessions","_callee5$","_context5","label","title","timestamp","gmtCreated","getTime","meta","totalCount","setCurrentSessionDetail","APP_MESSAGES_INIT_SUCCESS","_ref11","_callee6","sessionResult","_sessionResult$data","sessionsData","_callee6$","_context6","list","reduce","acc","cur","sessionMessages","_x4","loadMoreSessions","_ref12","_callee7","_result$data5","_result$data6","_result$data7","_result$data8","_callee7$","_context7","prevList"],"sources":["../../../src/hooks/useAgentGenerator.ts"],"sourcesContent":["import { useState, useEffect, useRef } from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport { useEventStreamRequest } from '@/hooks/useEventStreamRequest';\nimport { MessageRole, MessageStatus, TextMessage, SuggestionMessage, Messages } from '@/types/XAiMessage';\nimport { Error, ErrorCode, Success, SuccessCode, sessionData } from '@/types';\nimport { request } from '@/utils/request';\nimport { safeJsonParse } from '@/utils/index';\nimport { fetchAppConfig, fetchSessionList, fetchSessionDetail } from '@/services/api';\n// 图标\nimport documentIcon from '@/assets/document.png';\n// import completedIcon from '@/assets/completed.png';\n// import completedExpandIcon from '@/assets/completed-black.png';\nimport documentExpandIcon from '@/assets/document-black.png';\nimport qaIcon from '@/assets/qa.png';\nimport qaExpandIcon from '@/assets/qa-black.png';\nimport skillNoIcon from '@/assets/skillNo.png';\nimport skillNoExpandIcon from '@/assets/skillNo-black.png';\nimport toolIcon from '@/assets/tools.png';\nimport toolExpandIcon from '@/assets/tools-black.png';\n\nexport type ContentType = 'TEXT' | 'IMAGE' | 'FILE';\n\nexport interface ImageUrl {\n url: string;\n name: string;\n}\n\nexport interface FileUrl {\n url: string;\n fileName: string;\n suffix: string;\n}\n\nexport interface Content {\n text?: string;\n imageUrl?: ImageUrl;\n fileUrl?: FileUrl;\n}\n\nexport interface ContentDef {\n description: string;\n contentType: ContentType;\n content: Content;\n}\n// contents 类型\nexport type Contents = ContentDef[];\n\n// —————————————— 接口字段定义 ————————————\nexport enum ActionType {\n recallKnowledgeStart = 'RECALL_KNOWLEDGE_START', // 知识库召回开始\n recallKnowledgeEnd = 'RECALL_KNOWLEDGE_END', // 知识库召回结束\n invokeToolStart = 'INVOKE_AGENT_TOOL_START', // 开始调用工具\n invokeToolEnd = 'INVOKE_AGENT_TOOL_END', // 调用工具完成\n suggest = 'FOLLOW_UP', // 用户提示\n response = 'RESPONSE', // 响应\n finish = 'FINISHED', // 结束\n}\n\nexport enum ProcessStatus {\n start = 'START',\n end = 'END',\n}\n\nexport enum ActionAvailability {\n disabled = 'disabled', // 不可用\n enabled = 'enabled', // 可用\n remote = 'remote', // 远程可用\n}\n\nexport type ThinkStep = any; // 临时定义,后续可完善\n\n/**\n* 工具/动作定义\n*/\nexport interface Action {\n name: string; // 名称\n description: string; // 描述\n jsonSchema: string; // 参数JSON Schema\n available?: ActionAvailability; // 可用性\n error?: Error; // 错误信息\n}\n\nexport interface UseAgentGeneratorProps {\n url: string;\n token: string;\n config: any;\n onError?: (error: Error) => void;\n onSuccess?: (data: Success) => void;\n onMessage?: (data: Messages) => void;\n}\nconst useAgentGenerator = ({\n url,\n token,\n config,\n onError,\n onMessage,\n onSuccess,\n}: UseAgentGeneratorProps) => {\n const textSpeed = 60;\n // 聊天记录\n const [messages, setMessages] = useState<Messages[]>([]);\n // 聊天记录分页设置\n const [messagePagination, setMessagePagination] = useState({ total: 0, pageNum: 1, pageSize: 999 });\n // 会话记录\n const [sessionList, setSessionList] = useState<sessionData[]>([]);\n // 会话请求是否加载中\n const [sessionLoading, setSessionLoading] = useState<boolean>(false);\n // 会话分页设置\n const [sessionPagination, setSessionPagination] = useState({ total: 0, pageNum: 1, pageSize: 20 });\n // 当前会话\n const [currentSessionId, setCurrentSessionId] = useState<string>('');\n // 应用 配置\n const [appInfo, setAppInfo] = useState<any>(null);\n // 请求 配置\n const requestInfo = useRef<{ requestId?: string; sensitiveWords?: string[] }>({});\n\n const { appNo, pt, tc } = config || {};\n\n // 初始化时获取配置\n useEffect(() => {\n if (url && config) {\n const initConfig = async () => {\n try {\n const result = await fetchAppConfig({ url, ...config });\n if (result.success) {\n setAppInfo(result.data);\n\n // 成功回调\n onSuccess?.({\n code: SuccessCode.APP_CONFIG_INIT_SUCCESS,\n message: '初始化配置成功',\n });\n } else {\n onError?.({\n code: (result.code as ErrorCode) || ErrorCode.APP_NOT_FOUND,\n message: result.message || '获取应用配置失败',\n });\n }\n } catch (error) {\n onError?.({\n code: ErrorCode.API_ERROR,\n message: '获取应用配置失败',\n });\n }\n };\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url, config]);\n\n const { start, loading, responseData, stop } = useEventStreamRequest({\n streaming: true,\n textSpeed,\n onClose: () => {\n // close的时机有可能在setMessages之前,所以需要延迟一下\n setTimeout(() => {\n if (requestInfo.current?.sensitiveWords && requestInfo.current?.requestId) {\n request.post(url);\n }\n }, 500);\n },\n onOpen(res) {\n console.log('res-----open:', res);\n },\n });\n\n // 数据更新\n useEffect(() => {\n if (!responseData || !responseData.content || !responseData.data) return;\n\n let response = responseData.data || responseData.content;\n if (typeof response === 'string') {\n response = safeJsonParse(response, {\n action: ActionType.response,\n data: {\n contentType: 'TEXT',\n content: '解析响应数据时出错,请重试',\n success: false,\n errorMsg: '响应数据格式错误',\n },\n });\n }\n\n setMessages((prevMessages) => {\n let newMessages = [...prevMessages];\n // 消息类型判断\n const { action, data } = response;\n const { uniqueId, contentType, content, toolType, args, knowledgeType, success = true, errorMsg } = data || {};\n\n // 建议类信息 特殊处理\n if (action === ActionType.suggest) {\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const newMessage: SuggestionMessage = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content: [{\n key: uuidV4(),\n description: content,\n }],\n };\n // 插到末尾\n newMessages.push(newMessage);\n } else {\n const suggestMsg = newMessages[suggestMessageIndex] as SuggestionMessage;\n if (suggestMsg?.content) {\n suggestMsg.content.push({\n key: uuidV4(),\n description: content,\n });\n }\n }\n return newMessages;\n }\n\n // 找到最后一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage' && (m.status === 'init' || m.status === 'pending'),\n );\n const realIndex = lastAIMsgIndex === -1 ? -1 : prevMessages.length - 1 - lastAIMsgIndex;\n const lastAIMsg = realIndex !== -1 ? prevMessages[realIndex] : null;\n\n let aiMsg: TextMessage | undefined;\n\n if (!lastAIMsg) {\n aiMsg = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: new Date(),\n role: MessageRole.assistant,\n content: { text: '' },\n thinks: [],\n status: MessageStatus.init,\n };\n newMessages.push(aiMsg);\n } else if (lastAIMsg.type === 'TextMessage') {\n aiMsg = { ...lastAIMsg };\n } else if (lastAIMsg.type === 'ImageMessage') {\n aiMsg = undefined;\n }\n\n // 如果 aiMsg 为 undefined,则跳过处理\n if (!aiMsg) {\n return newMessages;\n }\n\n switch (action) {\n case ActionType.recallKnowledgeStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: knowledgeType === 'DOCUMENT' ? '已搜索文档知识库' : '已搜索问答知识库',\n arguments: args,\n extra: {\n ...data,\n icon: knowledgeType === 'DOCUMENT' ? documentIcon : qaIcon,\n expandIcon: knowledgeType === 'DOCUMENT' ? documentExpandIcon : qaExpandIcon,\n },\n });\n break;\n case ActionType.recallKnowledgeEnd: {\n // 需要给之前的recallKnowledgeStart添加cost - 通过uniqueId关联\n const recallKnowledgeMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (recallKnowledgeMsg) {\n recallKnowledgeMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.invokeToolStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: toolType === 'SKILL' ? '已调用工作流' : '已调用工具',\n arguments: args,\n extra: {\n ...data,\n icon: toolType === 'SKILL' ? skillNoIcon : toolIcon,\n expandIcon: toolType === 'SKILL' ? skillNoExpandIcon : toolExpandIcon,\n },\n });\n break;\n case ActionType.invokeToolEnd: {\n // 需要给之前的invokeToolStart添加cost - 通过uniqueId关联\n const invokeToolMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (invokeToolMsg) {\n invokeToolMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.response:\n if (success) {\n // 正常渲染\n if (aiMsg.status === MessageStatus.init) {\n aiMsg.status = MessageStatus.pending;\n }\n if (contentType === 'TEXT' && 'text' in aiMsg.content) {\n aiMsg.content.text += content;\n }\n } else {\n // 调用失败\n aiMsg.status = MessageStatus.failed;\n aiMsg.content.text = `<span style=\"color: red;\">❌ ${errorMsg}</span>`;\n }\n break;\n case ActionType.finish:\n // aiMsg.thinks = aiMsg.thinks || [];\n // aiMsg.thinks.push({\n // id: uniqueId,\n // createdAt: new Date(),\n // type: 'ActionExecutionMessage',\n // name: '运行完毕',\n // extra: {\n // ...data,\n // cost: data?.cost ? (data?.cost / 1000).toFixed(2) : 0,\n // icon: completedIcon,\n // expandIcon: completedExpandIcon,\n // },\n // });\n aiMsg.status = MessageStatus.done;\n // 收到一条完整,触发收到消息回调\n onMessage?.(aiMsg);\n break;\n // 其他类型略\n }\n\n // 更新消息数组\n if (lastAIMsg && lastAIMsg.type === 'TextMessage') {\n newMessages[realIndex] = aiMsg;\n } else if (!lastAIMsg) {\n // 只有 newMessages 最后一条是 TextMessage 时才替换,否则 push\n if (newMessages.length > 0 && newMessages[newMessages.length - 1].type === 'TextMessage') {\n newMessages[newMessages.length - 1] = aiMsg;\n } else {\n // 只 push TextMessage,不替换非 TextMessage\n newMessages = [...newMessages, aiMsg];\n }\n }\n return newMessages;\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [responseData]);\n\n // 添加对话(非普通对话)\n const setMessage = async (messageType: string, content: any) => {\n switch (messageType) {\n case 'prologue': {\n setMessages((prev) => {\n const prologueMessageIndex = prev.findIndex((item) => item.extra?.prologue);\n if (prologueMessageIndex === -1) {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.assistant,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n extra: {\n prologue: true,\n noFooter: true,\n },\n };\n return [newMessage, ...prev];\n }\n return prev.map((item) => {\n if (item.extra?.prologue && item.content && 'text' in item.content) {\n item.content.text = content;\n }\n return item;\n });\n });\n break;\n }\n case 'suggest': {\n setMessages((prev) => {\n const suggestMessageIndex = prev.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const prologueMessageIndex = prev.findIndex((item) => item.extra?.prologue);\n const newMessage: Messages = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content,\n };\n if (prologueMessageIndex === -1) {\n // 如果没有开场白,则插入到最前面\n return [newMessage, ...prev];\n }\n // 如果有开场白,则插到开场白后面\n const newMessages = [...prev];\n newMessages.splice(prologueMessageIndex + 1, 0, newMessage);\n return newMessages;\n }\n return prev.map((item) => {\n if (item.type === 'SuggestionMessage') {\n item.content = content;\n }\n return item;\n });\n });\n break;\n }\n default:\n break;\n }\n };\n\n // 简单对话\n const chat = async (content: any) => {\n let newMessage: Messages;\n let inputs_msg;\n if (typeof content === 'string') {\n newMessage = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n } else {\n newMessage = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n ...content,\n }\n }\n\n if (typeof newMessage.content === 'object' && 'text' in newMessage.content && typeof newMessage.content.text === 'string') {\n inputs_msg = newMessage.content.text;\n } else {\n inputs_msg = '';\n }\n\n setMessages((prev) => {\n // 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n prev.splice(suggestMessageIndex, 1);\n }\n // 插入用户消息\n prev.push(newMessage);\n return prev;\n });\n\n start(\n `${url}/appouter/${appNo}/sendMsg?pt=${pt}&tc=${tc}`,\n {\n appParams: {\n inputs_msg,\n },\n sessionId: currentSessionId,\n },\n {\n Authorization: `Bearer ${token}`,\n },\n );\n };\n\n // 重新生成方法\n const reChat = () => {\n setMessages((prevMessages) => {\n // 1. 删除最新一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage',\n );\n const newMessages = [...prevMessages];\n if (lastAIMsgIndex !== -1) {\n const realIndex = newMessages.length - 1 - lastAIMsgIndex;\n newMessages.splice(realIndex, 1);\n }\n\n // 2. 若存在对话建议,先删除对话建议\n const suggestMessageIndex = newMessages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n newMessages.splice(suggestMessageIndex, 1);\n }\n\n // 3. 找到最新一条用户消息,且类型为 TextMessage\n const lastUserMsg = [...newMessages].reverse().find(\n (m) => m.role === MessageRole.user && m.type === 'TextMessage',\n ) as TextMessage | undefined;\n if (lastUserMsg && lastUserMsg.content && typeof lastUserMsg.content.text === 'string') {\n // 重新发起 chat\n chat(lastUserMsg.content.text);\n }\n\n return newMessages;\n });\n };\n\n const stopChat = () => {\n stop();\n setMessages((prevMessages) => {\n // 找到我所有进行中的消息,并设置为结束\n const newMessages = [...prevMessages];\n newMessages.forEach((m) => {\n if (m.status === MessageStatus.pending) {\n m.status = MessageStatus.done;\n } else if (m.status === MessageStatus.init) {\n if (m.type === 'TextMessage') {\n m.content.text = '<span style=\"color: #cbcbcb;\">用户已取消</span>';\n }\n m.status = MessageStatus.done;\n }\n });\n return newMessages;\n });\n };\n\n // 初始化历史记录\n const formatMessages = (data: any, init = false) => {\n setMessages((prev) => {\n const initMessagesList: Messages[] = [];\n data.forEach((item: any) => {\n const { content, messageTime, role } = item || {};\n\n if (role === 'USER') {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: messageTime,\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n initMessagesList.push(newMessage);\n } else if (role === 'AI') {\n const newMessage: TextMessage = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: messageTime,\n role: MessageRole.assistant,\n content: { text: content },\n thinks: [],\n status: MessageStatus.done,\n };\n\n initMessagesList.push(newMessage);\n }\n });\n\n if (init) {\n return [...initMessagesList];\n }\n return [...prev, ...initMessagesList];\n });\n };\n\n // 初始化开场白\n const initPrologue = async () => {\n const { onboardingInfo = {} } = appInfo;\n // eslint-disable-next-line camelcase\n const { suggested_questions = [], prologue = '' } = onboardingInfo || {};\n\n // 初始化开场白\n if (prologue) {\n setMessage('prologue', prologue);\n } else {\n setMessages((prev) => prev.filter((item) => !item.extra?.prologue));\n }\n\n // 过滤空内容\n const formatSuggests = suggested_questions.filter((item: string) => item);\n\n if (formatSuggests.length > 0) {\n const suggestMessages = formatSuggests.map((item: string, index: number) => ({\n key: index + 1,\n description: item,\n }));\n // 页面为空时展示开场白预设问题\n const hasMessages = messages.some((item) => (!item.extra?.prologue && item.type !== 'SuggestionMessage'));\n if (!hasMessages) {\n setMessage('suggest', suggestMessages);\n }\n } else {\n setMessages((prev) => prev.filter((item) => !(item.type === 'SuggestionMessage')));\n }\n };\n\n // 获取聊天记录\n const initAppConversations = async () => {\n try {\n const result = await fetchSessionList({\n url,\n appNo,\n pt,\n tc,\n token,\n });\n\n if (result?.success) {\n const resultData = result?.data?.data || [];\n if (resultData.length > 0) {\n const formatSessions = resultData.map((item) => {\n return {\n key: item.sessionId,\n label: item.title,\n timestamp: new Date(item.gmtCreated).getTime(),\n messages: [],\n meta: {\n ...item,\n }\n };\n });\n\n setSessionList(formatSessions);\n // 设置分页信息\n setSessionPagination({ pageNum: result?.data?.pageNum, pageSize: result?.data?.pageSize, total: result?.data?.totalCount })\n const { sessionId } = resultData[0];\n setCurrentSessionDetail(sessionId);\n } else {\n // 页面报错 初始化\n setSessionList([]);\n setCurrentSessionId(uuidV4());\n initPrologue();\n }\n // 成功回调\n onSuccess?.({\n code: SuccessCode.APP_MESSAGES_INIT_SUCCESS,\n message: '初始化聊天记录成功',\n });\n } else {\n initPrologue();\n }\n } catch {\n //\n }\n };\n\n // 设置当前会话详情\n const setCurrentSessionDetail = async (sessionId: string) => {\n if (sessionId) {\n if (sessionId === currentSessionId) {\n return;\n }\n setCurrentSessionId(sessionId); // 设置当前会话 id;\n const sessionResult = await fetchSessionDetail({\n url,\n appNo,\n pt,\n tc,\n sessionId,\n token,\n pageNum: sessionPagination.pageNum,\n pageSize: sessionPagination.pageSize,\n });\n\n if (sessionResult?.success) {\n const sessionsData = (sessionResult?.data as any)?.list?.reduce((acc: any[], cur: any) => {\n return [...acc, ...(cur.sessionMessages || [])];\n }, []);\n\n if (sessionsData.length > 0) {\n formatMessages(sessionsData, true);\n }\n }\n } else {\n // 兼容 无 session异常\n setCurrentSessionId(uuidV4());\n }\n }\n\n // 获取更多会话记录\n const loadMoreSessions = async () => {\n if (sessionLoading) {\n return;\n }\n try {\n setSessionLoading(true);\n const { pageNum, pageSize } = sessionPagination; \n const result = await fetchSessionList({\n url,\n appNo,\n pt,\n tc,\n token,\n pageNum: pageNum + 1,\n pageSize,\n });\n\n if (result?.success) {\n const resultData = result?.data?.data || [];\n if (resultData.length > 0) {\n const formatSessions = resultData.map((item) => {\n return {\n key: item.sessionId,\n label: item.title,\n timestamp: new Date(item.gmtCreated).getTime(),\n messages: [],\n meta: {\n ...item,\n }\n };\n });\n\n setSessionList((prevList) => [...prevList, ...formatSessions]);\n }\n // 设置分页信息\n setSessionPagination({ pageNum: result?.data?.pageNum, pageSize: result?.data?.pageSize, total: result?.data?.totalCount })\n }\n } catch (err) {\n //\n } finally {\n setSessionLoading(false);\n }\n };\n\n // 初始化应用\n useEffect(() => {\n if (appInfo) {\n // 初始化历史数据\n initAppConversations();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appInfo]);\n\n return {\n appInfo,\n messages,\n loading,\n content: responseData.content,\n sessionList,\n currentSessionId,\n sessionPagination,\n loadMoreSessions,\n reChat,\n chat,\n setCurrentSessionId,\n setCurrentSessionDetail,\n setMessage,\n setMessages,\n stopChat,\n initPrologue,\n };\n};\n\nexport default useAgentGenerator;\n"],"mappings":"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"}
|
|
@@ -138,6 +138,8 @@ export interface XAiChatbotProps extends ChatbotMessageFields {
|
|
|
138
138
|
avatar?: ReactNode;
|
|
139
139
|
/** 用户头像 */
|
|
140
140
|
userAvatar?: ReactNode;
|
|
141
|
+
/** 发送按钮 */
|
|
142
|
+
sendBtn?: ReactNode;
|
|
141
143
|
/** 工具栏点击回调 */
|
|
142
144
|
onToolbarClick?: (item: ToolbarItemProps, event: MouseEvent) => void;
|
|
143
145
|
/** 工具栏打开/关闭回调 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../../src/types/XAiChatbot.ts"],"sourcesContent":["import React, { ReactNode, RefObject, ChangeEvent, FocusEvent, MouseEvent } from 'react';\nimport type { PromptProps } from '@ant-design/x';\nimport type { MessageType } from 'src/client/base';\nimport type { Messages } from './XAiMessage';\n\n// 类型定义\nexport interface User {\n id: string;\n name: string;\n avatar?: string;\n }\n\nexport interface MessageProps {\n _id: string;\n type: string;\n content: Record<string, any>;\n createdAt: number;\n user: User;\n position?: 'left' | 'right' | 'center' | 'pop';\n hasTime?: boolean;\n status?: 'pending' | 'sent' | 'fail';\n }\n\nexport interface QuickReplyItemProps {\n name: string;\n code: string;\n icon?: string;\n img?: string;\n isNew?: boolean;\n isHighlight?: boolean;\n }\n\nexport interface ComposerHandle {\n setText: (text: string) => void;\n }\n\nexport interface ScrollToEndOptions {\n animated?: boolean;\n force?: boolean;\n }\n\nexport interface MessageContainerHandle {\n scrollToEnd: (options?: ScrollToEndOptions) => void;\n }\n\nexport interface NavbarProps {\n title?: string;\n subtitle?: string;\n avatar?: string;\n}\n\nexport interface ToolbarItemProps {\n id: string;\n icon: string;\n label: string;\n disabled?: boolean;\n }\n\nexport interface IconButtonProps {\n icon: string;\n onClick: () => void;\n disabled?: boolean;\n }\n\nexport interface RecorderProps {\n onStart?: () => void;\n onStop?: (audioBlob: Blob) => void;\n onError?: (error: Error) => void;\n }\n\nexport type InputType = 'text' | 'voice';\n\n// chatbot 会话字段\nexport interface ChatbotMessageFields {\n messages?: MessageType[];\n setMessages?: React.Dispatch<React.SetStateAction<MessageType[]>>;\n /** 发送消息回调 */\n onSend?: (type: string, content: string) => void;\n /** 清空消息回调 */\n onClear?: () => void;\n /** 停止生成回调 */\n onStop?: () => void;\n}\n\nexport interface ActionItem {\n key?: string;\n icon: React.ReactNode;\n tooltip?: string;\n}\n\n/**\n * AI 聊天机器人组件\n */\nexport interface XAiChatbotProps extends ChatbotMessageFields {\n /** 宽屏断点 */\n wideBreakpoint?: string;\n /** 导航栏展示 */\n navbarShow?: boolean;\n /** 导航栏配置 */\n navbar?: NavbarProps;\n /** 导航栏渲染函数,会覆盖 navbar */\n renderNavbar?: () => ReactNode;\n /** 是否加载中 */\n loading?: boolean;\n /** 加载更多文案 */\n loadMoreText?: string;\n /** 在消息列表上面的渲染函数 */\n renderBeforeMessageList?: () => ReactNode;\n /** 消息列表 ref */\n messagesRef?: RefObject<MessageContainerHandle>;\n /** 下拉加载回调 */\n onRefresh?: () => Promise<any>;\n /** 滚动消息列表回调 */\n onScroll?: (event: React.UIEvent<HTMLDivElement, UIEvent>) => void;\n /** 消息内容渲染函数 */\n renderMessageContent?: (message: MessageProps) => ReactNode;\n /** 快捷短语列表 */\n quickReplies?: QuickReplyItemProps[];\n /** 快捷短语是否可见 */\n quickRepliesVisible?: boolean;\n /** 点击快速回复回调 */\n onQuickReplyClick?: (item: QuickReplyItemProps, index: number) => void;\n /** 快捷短语的滚动回调 */\n onQuickReplyScroll?: () => void;\n /** 快捷短语渲染函数,会覆盖 quickReplies */\n renderQuickReplies?: () => ReactNode;\n /** 输入区 ref */\n composerRef?: RefObject<ComposerHandle>;\n /** 输入框初始内容 */\n text?: string;\n /** 空状态图片 */\n emptyStateImage?: string;\n /** 空状态文案 */\n emptyStateText?: string;\n /** 输入框占位符 */\n placeholder?: string;\n /** 输入框聚焦回调 */\n onInputFocus?: (event: FocusEvent) => void;\n /** 输入框更新回调 */\n onInputChange?: (value: string, event: ChangeEvent) => void;\n /** 输入框失去焦点回调 */\n onInputBlur?: (event: FocusEvent) => void;\n /** 输入框粘贴图片后的回调 */\n onImageSend?: (file: File) => Promise<any>;\n /** 输入方式 */\n inputType?: InputType;\n /** 输入方式切换回调 */\n onInputTypeChange?: (inputType: InputType) => void;\n /** 语音输入配置 */\n recorder?: RecorderProps;\n /** 工具栏配置 */\n toolbar?: ToolbarItemProps[];\n /** AI头像 */\n avatar?: ReactNode;\n /** 用户头像 */\n userAvatar?: ReactNode;\n /** 工具栏点击回调 */\n onToolbarClick?: (item: ToolbarItemProps, event: MouseEvent) => void;\n /** 工具栏打开/关闭回调 */\n onAccessoryToggle?: (isAccessoryOpen: boolean) => void;\n /** 输入框右边图标按钮配置 */\n rightAction?: IconButtonProps;\n /** 上传按钮是否显示 */\n uploadBtnShow?: boolean;\n /** 底部文案 */\n footerTips?: string;\n /** 帮助消息点击回调 */\n onSuggestMessageClick?: (item: PromptProps, id: string) => void;\n /** 消息左下角展示字段 */\n messageTooltip?: (msg: Messages) => React.ReactNode;\n /** 消息右下角功能区 */\n messageActions?: ActionItem[];\n /** 消息右下角功能区点击回调 */\n onMessagesActionsCallback?: (index: number, data: Messages) => void; // 点击回调\n /** 输入组件 */\n Composer?: React.ElementType;\n }\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/types/XAiChatbot.ts"],"sourcesContent":["import React, { ReactNode, RefObject, ChangeEvent, FocusEvent, MouseEvent } from 'react';\nimport type { PromptProps } from '@ant-design/x';\nimport type { MessageType } from 'src/client/base';\nimport type { Messages } from './XAiMessage';\n\n// 类型定义\nexport interface User {\n id: string;\n name: string;\n avatar?: string;\n }\n\nexport interface MessageProps {\n _id: string;\n type: string;\n content: Record<string, any>;\n createdAt: number;\n user: User;\n position?: 'left' | 'right' | 'center' | 'pop';\n hasTime?: boolean;\n status?: 'pending' | 'sent' | 'fail';\n }\n\nexport interface QuickReplyItemProps {\n name: string;\n code: string;\n icon?: string;\n img?: string;\n isNew?: boolean;\n isHighlight?: boolean;\n }\n\nexport interface ComposerHandle {\n setText: (text: string) => void;\n }\n\nexport interface ScrollToEndOptions {\n animated?: boolean;\n force?: boolean;\n }\n\nexport interface MessageContainerHandle {\n scrollToEnd: (options?: ScrollToEndOptions) => void;\n }\n\nexport interface NavbarProps {\n title?: string;\n subtitle?: string;\n avatar?: string;\n}\n\nexport interface ToolbarItemProps {\n id: string;\n icon: string;\n label: string;\n disabled?: boolean;\n }\n\nexport interface IconButtonProps {\n icon: string;\n onClick: () => void;\n disabled?: boolean;\n }\n\nexport interface RecorderProps {\n onStart?: () => void;\n onStop?: (audioBlob: Blob) => void;\n onError?: (error: Error) => void;\n }\n\nexport type InputType = 'text' | 'voice';\n\n// chatbot 会话字段\nexport interface ChatbotMessageFields {\n messages?: MessageType[];\n setMessages?: React.Dispatch<React.SetStateAction<MessageType[]>>;\n /** 发送消息回调 */\n onSend?: (type: string, content: string) => void;\n /** 清空消息回调 */\n onClear?: () => void;\n /** 停止生成回调 */\n onStop?: () => void;\n}\n\nexport interface ActionItem {\n key?: string;\n icon: React.ReactNode;\n tooltip?: string;\n}\n\n/**\n * AI 聊天机器人组件\n */\nexport interface XAiChatbotProps extends ChatbotMessageFields {\n /** 宽屏断点 */\n wideBreakpoint?: string;\n /** 导航栏展示 */\n navbarShow?: boolean;\n /** 导航栏配置 */\n navbar?: NavbarProps;\n /** 导航栏渲染函数,会覆盖 navbar */\n renderNavbar?: () => ReactNode;\n /** 是否加载中 */\n loading?: boolean;\n /** 加载更多文案 */\n loadMoreText?: string;\n /** 在消息列表上面的渲染函数 */\n renderBeforeMessageList?: () => ReactNode;\n /** 消息列表 ref */\n messagesRef?: RefObject<MessageContainerHandle>;\n /** 下拉加载回调 */\n onRefresh?: () => Promise<any>;\n /** 滚动消息列表回调 */\n onScroll?: (event: React.UIEvent<HTMLDivElement, UIEvent>) => void;\n /** 消息内容渲染函数 */\n renderMessageContent?: (message: MessageProps) => ReactNode;\n /** 快捷短语列表 */\n quickReplies?: QuickReplyItemProps[];\n /** 快捷短语是否可见 */\n quickRepliesVisible?: boolean;\n /** 点击快速回复回调 */\n onQuickReplyClick?: (item: QuickReplyItemProps, index: number) => void;\n /** 快捷短语的滚动回调 */\n onQuickReplyScroll?: () => void;\n /** 快捷短语渲染函数,会覆盖 quickReplies */\n renderQuickReplies?: () => ReactNode;\n /** 输入区 ref */\n composerRef?: RefObject<ComposerHandle>;\n /** 输入框初始内容 */\n text?: string;\n /** 空状态图片 */\n emptyStateImage?: string;\n /** 空状态文案 */\n emptyStateText?: string;\n /** 输入框占位符 */\n placeholder?: string;\n /** 输入框聚焦回调 */\n onInputFocus?: (event: FocusEvent) => void;\n /** 输入框更新回调 */\n onInputChange?: (value: string, event: ChangeEvent) => void;\n /** 输入框失去焦点回调 */\n onInputBlur?: (event: FocusEvent) => void;\n /** 输入框粘贴图片后的回调 */\n onImageSend?: (file: File) => Promise<any>;\n /** 输入方式 */\n inputType?: InputType;\n /** 输入方式切换回调 */\n onInputTypeChange?: (inputType: InputType) => void;\n /** 语音输入配置 */\n recorder?: RecorderProps;\n /** 工具栏配置 */\n toolbar?: ToolbarItemProps[];\n /** AI头像 */\n avatar?: ReactNode;\n /** 用户头像 */\n userAvatar?: ReactNode;\n /** 发送按钮 */\n sendBtn?: ReactNode;\n /** 工具栏点击回调 */\n onToolbarClick?: (item: ToolbarItemProps, event: MouseEvent) => void;\n /** 工具栏打开/关闭回调 */\n onAccessoryToggle?: (isAccessoryOpen: boolean) => void;\n /** 输入框右边图标按钮配置 */\n rightAction?: IconButtonProps;\n /** 上传按钮是否显示 */\n uploadBtnShow?: boolean;\n /** 底部文案 */\n footerTips?: string;\n /** 帮助消息点击回调 */\n onSuggestMessageClick?: (item: PromptProps, id: string) => void;\n /** 消息左下角展示字段 */\n messageTooltip?: (msg: Messages) => React.ReactNode;\n /** 消息右下角功能区 */\n messageActions?: ActionItem[];\n /** 消息右下角功能区点击回调 */\n onMessagesActionsCallback?: (index: number, data: Messages) => void; // 点击回调\n /** 输入组件 */\n Composer?: React.ElementType;\n }\n"],"mappings":""}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
import { type ConversationsProps } from '@ant-design/x';
|
|
2
|
-
|
|
1
|
+
import { type ConversationsProps, type Conversation } from '@ant-design/x';
|
|
2
|
+
type OmitItems = Omit<ConversationsProps, 'items'>;
|
|
3
|
+
export interface sessionData extends Conversation {
|
|
4
|
+
meta?: any;
|
|
5
|
+
}
|
|
6
|
+
export interface XAiConversationsProps extends OmitItems {
|
|
7
|
+
/** 配色 */
|
|
3
8
|
color?: string;
|
|
9
|
+
/** 会话列表,替换原来的 items 字段 */
|
|
10
|
+
sessionList?: sessionData[];
|
|
11
|
+
/** session总数,当设置该值时,会增加自动加载逻辑 */
|
|
12
|
+
sessionTotal?: number;
|
|
13
|
+
/** 加载更多函数 */
|
|
14
|
+
loadMoreSession?: () => void;
|
|
4
15
|
}
|
|
16
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../../src/types/XAiConversations.ts"],"sourcesContent":["import { type ConversationsProps } from '@ant-design/x';\n\nexport interface XAiConversationsProps extends
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/types/XAiConversations.ts"],"sourcesContent":["import { type ConversationsProps, type Conversation } from '@ant-design/x';\n\ntype OmitItems = Omit<ConversationsProps, 'items'>;\n\nexport interface sessionData extends Conversation {\n meta?: any;\n}\n\nexport interface XAiConversationsProps extends OmitItems {\n /** 配色 */\n color?: string;\n /** 会话列表,替换原来的 items 字段 */\n sessionList?: sessionData[];\n /** session总数,当设置该值时,会增加自动加载逻辑 */\n sessionTotal?: number;\n /** 加载更多函数 */\n loadMoreSession?: () => void;\n}\n"],"mappings":""}
|
|
@@ -2,19 +2,47 @@ import React, { ReactNode } from 'react';
|
|
|
2
2
|
import { AiClient } from 'src/client/base';
|
|
3
3
|
import type { ChatbotMessageFields } from './XAiChatbot';
|
|
4
4
|
import { Messages } from "./XAiMessage";
|
|
5
|
+
/**
|
|
6
|
+
* 主题类型
|
|
7
|
+
* @type {'default'}
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
5
10
|
export type ThemeType = 'default';
|
|
11
|
+
/**
|
|
12
|
+
* 错误码枚举(数字格式)
|
|
13
|
+
* @enum {string}
|
|
14
|
+
* @version 1.0.0
|
|
15
|
+
*/
|
|
6
16
|
export declare enum ErrorCodeNum {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
17
|
+
/** 应用下架 */
|
|
18
|
+
APP_NOT_ENABLE = "client_50017",
|
|
19
|
+
/** 应用删除 */
|
|
20
|
+
APP_DELETED = "client_50017",
|
|
21
|
+
/** 无该应用 */
|
|
22
|
+
APP_NOT_FOUND = "client_59999",
|
|
23
|
+
/** 接口报错 */
|
|
10
24
|
API_ERROR = "client_50054"
|
|
11
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* 错误码枚举
|
|
28
|
+
* @enum {string}
|
|
29
|
+
* @version 1.0.0
|
|
30
|
+
*/
|
|
12
31
|
export declare enum ErrorCode {
|
|
32
|
+
/** 应用未启用 */
|
|
13
33
|
APP_NOT_ENABLE = "APP_NOT_ENABLE",
|
|
34
|
+
/** 应用已删除 */
|
|
14
35
|
APP_DELETED = "APP_DELETED",
|
|
36
|
+
/** 应用未找到 */
|
|
15
37
|
APP_NOT_FOUND = "APP_NOT_FOUND",
|
|
38
|
+
/** API 错误 */
|
|
16
39
|
API_ERROR = "API_ERROR"
|
|
17
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* 错误码映射表
|
|
43
|
+
* @type {Record<string, {code: ErrorCode, message: string}>}
|
|
44
|
+
* @version 1.0.0
|
|
45
|
+
*/
|
|
18
46
|
export declare const ErrorCodeMap: {
|
|
19
47
|
client_50017: {
|
|
20
48
|
code: ErrorCode;
|
|
@@ -25,55 +53,271 @@ export declare const ErrorCodeMap: {
|
|
|
25
53
|
message: string;
|
|
26
54
|
};
|
|
27
55
|
};
|
|
56
|
+
/**
|
|
57
|
+
* 成功状态码枚举
|
|
58
|
+
* @enum {string}
|
|
59
|
+
* @version 1.0.0
|
|
60
|
+
*/
|
|
28
61
|
export declare enum SuccessCode {
|
|
62
|
+
/** 应用配置初始化成功 */
|
|
29
63
|
APP_CONFIG_INIT_SUCCESS = "APP_CONFIG_INIT_SUCCESS",
|
|
64
|
+
/** 应用消息初始化成功 */
|
|
30
65
|
APP_MESSAGES_INIT_SUCCESS = "APP_MESSAGES_INIT_SUCCESS"
|
|
31
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* 错误信息接口
|
|
69
|
+
* @interface Error
|
|
70
|
+
* @version 1.0.0
|
|
71
|
+
*/
|
|
32
72
|
export interface Error {
|
|
73
|
+
/** 错误码 */
|
|
33
74
|
code: ErrorCode;
|
|
75
|
+
/** 错误信息 */
|
|
34
76
|
message: string;
|
|
35
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* 成功信息接口
|
|
80
|
+
* @interface Success
|
|
81
|
+
* @version 1.0.0
|
|
82
|
+
*/
|
|
36
83
|
export interface Success {
|
|
84
|
+
/** 成功状态码 */
|
|
37
85
|
code: SuccessCode;
|
|
86
|
+
/** 成功信息 */
|
|
38
87
|
message: string;
|
|
39
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* XAiProvider 操作句柄接口
|
|
91
|
+
* @interface XAiProviderHandle
|
|
92
|
+
* @version 1.0.0
|
|
93
|
+
*/
|
|
40
94
|
export interface XAiProviderHandle {
|
|
95
|
+
/**
|
|
96
|
+
* 发送聊天消息
|
|
97
|
+
* @param content - 消息内容
|
|
98
|
+
* @type {(content: string) => void}
|
|
99
|
+
* @version 1.0.0
|
|
100
|
+
*/
|
|
41
101
|
chat: (content: string) => void;
|
|
102
|
+
/**
|
|
103
|
+
* 停止聊天
|
|
104
|
+
* @type {() => void}
|
|
105
|
+
* @version 1.0.0
|
|
106
|
+
*/
|
|
42
107
|
stopChat: () => void;
|
|
108
|
+
/**
|
|
109
|
+
* 重新发送聊天
|
|
110
|
+
* @type {() => void}
|
|
111
|
+
* @version 1.0.0
|
|
112
|
+
*/
|
|
43
113
|
reChat: () => void;
|
|
114
|
+
/**
|
|
115
|
+
* 获取应用信息
|
|
116
|
+
* @returns {any} 应用信息对象
|
|
117
|
+
* @type {() => any}
|
|
118
|
+
* @version 1.0.0
|
|
119
|
+
*/
|
|
44
120
|
getAppInfo: () => any;
|
|
121
|
+
/**
|
|
122
|
+
* 获取消息列表
|
|
123
|
+
* @returns {Messages[]} 消息数组
|
|
124
|
+
* @type {() => Messages[]}
|
|
125
|
+
* @version 1.0.0
|
|
126
|
+
*/
|
|
45
127
|
getMessages: () => Messages[];
|
|
46
|
-
|
|
128
|
+
/**
|
|
129
|
+
* 重新设置当前会话
|
|
130
|
+
* @param id - 会话ID
|
|
131
|
+
* @type {(id: string) => void}
|
|
132
|
+
* @version 1.0.0
|
|
133
|
+
*/
|
|
134
|
+
setCurrentSessionDetail: (id: string) => void;
|
|
47
135
|
}
|
|
136
|
+
export interface sessionConfig {
|
|
137
|
+
/**
|
|
138
|
+
* 是否展示会话列表
|
|
139
|
+
* @type {boolean}
|
|
140
|
+
* @default false
|
|
141
|
+
*/
|
|
142
|
+
showSessionList?: boolean;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* XAiProvider 配置接口
|
|
146
|
+
* @interface XAiProviderConfig
|
|
147
|
+
* @version 1.0.0
|
|
148
|
+
*/
|
|
149
|
+
export interface XAiProviderConfig {
|
|
150
|
+
/**
|
|
151
|
+
* 应用唯一编号
|
|
152
|
+
* @type {string}
|
|
153
|
+
* @default undefined
|
|
154
|
+
* @version 1.0.0
|
|
155
|
+
*/
|
|
156
|
+
appNo?: string;
|
|
157
|
+
/**
|
|
158
|
+
* 授权方式
|
|
159
|
+
* @type {string}
|
|
160
|
+
* @default undefined
|
|
161
|
+
* @version 1.0.0
|
|
162
|
+
*/
|
|
163
|
+
pt?: string;
|
|
164
|
+
/**
|
|
165
|
+
* 租户key
|
|
166
|
+
* @type {string}
|
|
167
|
+
* @default undefined
|
|
168
|
+
* @version 1.0.0
|
|
169
|
+
*/
|
|
170
|
+
tc?: string;
|
|
171
|
+
/**
|
|
172
|
+
* 会话配置
|
|
173
|
+
* @type {sessionConfig}
|
|
174
|
+
*/
|
|
175
|
+
session?: sessionConfig;
|
|
176
|
+
/**
|
|
177
|
+
* 是否启用调试模式
|
|
178
|
+
* @type {boolean}
|
|
179
|
+
* @default false
|
|
180
|
+
* @version 1.0.0
|
|
181
|
+
*/
|
|
182
|
+
debug?: boolean;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* XAiProvider 组件属性接口
|
|
186
|
+
* @interface XAiProviderProps
|
|
187
|
+
* @version 1.0.0
|
|
188
|
+
*/
|
|
48
189
|
export interface XAiProviderProps {
|
|
49
|
-
/**
|
|
190
|
+
/**
|
|
191
|
+
* AI 服务地址
|
|
192
|
+
* @type {string}
|
|
193
|
+
* @version 1.0.0
|
|
194
|
+
*/
|
|
50
195
|
url: string;
|
|
51
|
-
/**
|
|
196
|
+
/**
|
|
197
|
+
* 认证 token
|
|
198
|
+
* @type {string}
|
|
199
|
+
* @version 1.0.0
|
|
200
|
+
*/
|
|
52
201
|
token: string;
|
|
53
|
-
/**
|
|
54
|
-
|
|
55
|
-
|
|
202
|
+
/**
|
|
203
|
+
* 配置信息
|
|
204
|
+
* @type {XAiProviderConfig}
|
|
205
|
+
* @default undefined
|
|
206
|
+
* @version 1.0.0
|
|
207
|
+
*/
|
|
208
|
+
config?: XAiProviderConfig;
|
|
209
|
+
/**
|
|
210
|
+
* Provider 唯一标识,用于区分多个 Provider 实例
|
|
211
|
+
* @type {string}
|
|
212
|
+
* @default undefined
|
|
213
|
+
* @version 1.0.0
|
|
214
|
+
*/
|
|
56
215
|
providerId?: string;
|
|
57
|
-
/**
|
|
216
|
+
/**
|
|
217
|
+
* Token 刷新回调
|
|
218
|
+
* @type {() => Promise<string>}
|
|
219
|
+
* @default undefined
|
|
220
|
+
* @version 1.0.0
|
|
221
|
+
*/
|
|
58
222
|
onRefreshToken?: () => Promise<string>;
|
|
59
|
-
/**
|
|
223
|
+
/**
|
|
224
|
+
* 应用无法正常渲染回调
|
|
225
|
+
* @type {(error: Error) => void}
|
|
226
|
+
* @default undefined
|
|
227
|
+
* @version 1.0.0
|
|
228
|
+
*/
|
|
60
229
|
onError?: (error: Error) => void;
|
|
61
|
-
/**
|
|
230
|
+
/**
|
|
231
|
+
* 应用正常渲染回调
|
|
232
|
+
* @type {(success: Success) => void}
|
|
233
|
+
* @default undefined
|
|
234
|
+
* @version 1.0.0
|
|
235
|
+
*/
|
|
62
236
|
onSuccess?: (success: Success) => void;
|
|
63
|
-
/**
|
|
237
|
+
/**
|
|
238
|
+
* 消息返回回调
|
|
239
|
+
* @type {(data: Messages) => void}
|
|
240
|
+
* @default undefined
|
|
241
|
+
* @version 1.0.0
|
|
242
|
+
*/
|
|
243
|
+
onMessage?: (data: Messages) => void;
|
|
244
|
+
/**
|
|
245
|
+
* 子组件
|
|
246
|
+
* @type {ReactNode}
|
|
247
|
+
* @version 1.0.0
|
|
248
|
+
*/
|
|
64
249
|
children: ReactNode;
|
|
65
250
|
}
|
|
251
|
+
/**
|
|
252
|
+
* XAiSDK 组件属性接口
|
|
253
|
+
* @interface XAiSDKProps
|
|
254
|
+
* @extends XAiProviderProps
|
|
255
|
+
* @version 1.0.0
|
|
256
|
+
*/
|
|
66
257
|
export interface XAiSDKProps extends XAiProviderProps {
|
|
258
|
+
/**
|
|
259
|
+
* 主题类型
|
|
260
|
+
* @type {ThemeType}
|
|
261
|
+
* @default 'default'
|
|
262
|
+
* @version 1.0.0
|
|
263
|
+
*/
|
|
67
264
|
theme?: ThemeType;
|
|
265
|
+
/**
|
|
266
|
+
* 组件属性配置
|
|
267
|
+
* @type {object}
|
|
268
|
+
* @default undefined
|
|
269
|
+
* @version 1.0.0
|
|
270
|
+
*/
|
|
68
271
|
componentProps?: {
|
|
272
|
+
/**
|
|
273
|
+
* 组件ID
|
|
274
|
+
* @type {string}
|
|
275
|
+
* @default undefined
|
|
276
|
+
* @version 1.0.0
|
|
277
|
+
*/
|
|
69
278
|
id?: string;
|
|
279
|
+
/** 支持任意 CSS 属性 */
|
|
70
280
|
[key: string]: any;
|
|
71
281
|
};
|
|
72
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* XAi 上下文类型接口
|
|
285
|
+
* @interface XAiContextType
|
|
286
|
+
* @extends Required<ChatbotMessageFields>
|
|
287
|
+
* @version 1.0.0
|
|
288
|
+
*/
|
|
73
289
|
export interface XAiContextType extends Required<ChatbotMessageFields> {
|
|
290
|
+
/**
|
|
291
|
+
* AI 客户端实例
|
|
292
|
+
* @type {AiClient | null}
|
|
293
|
+
* @default null
|
|
294
|
+
* @version 1.0.0
|
|
295
|
+
*/
|
|
74
296
|
client: AiClient | null;
|
|
297
|
+
/**
|
|
298
|
+
* 认证令牌
|
|
299
|
+
* @type {string}
|
|
300
|
+
* @version 1.0.0
|
|
301
|
+
*/
|
|
75
302
|
token: string;
|
|
303
|
+
/**
|
|
304
|
+
* 加载状态
|
|
305
|
+
* @type {boolean}
|
|
306
|
+
* @default false
|
|
307
|
+
* @version 1.0.0
|
|
308
|
+
*/
|
|
76
309
|
loading: boolean;
|
|
310
|
+
/**
|
|
311
|
+
* 错误信息
|
|
312
|
+
* @type {string | null}
|
|
313
|
+
* @default null
|
|
314
|
+
* @version 1.0.0
|
|
315
|
+
*/
|
|
77
316
|
error: string | null;
|
|
78
317
|
}
|
|
318
|
+
/**
|
|
319
|
+
* XAi 上下文对象
|
|
320
|
+
* @type {React.Context<XAiContextType | null>}
|
|
321
|
+
* @version 1.0.0
|
|
322
|
+
*/
|
|
79
323
|
export declare const XAiContext: React.Context<XAiContextType | null>;
|