@ai-group/chat-sdk 0.5.1 → 0.5.2

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.
Files changed (78) hide show
  1. package/dist/cjs/assets/add-chat.svg +13 -0
  2. package/dist/cjs/assets/flash-open.svg +14 -0
  3. package/dist/cjs/assets/logo.png +0 -0
  4. package/dist/cjs/assets/svg/AddChatIcon.d.ts +3 -0
  5. package/dist/cjs/assets/svg/AddChatIcon.js +38 -0
  6. package/dist/cjs/assets/svg/AddChatIcon.js.map +7 -0
  7. package/dist/cjs/components/XAiChatbot/index.js +2 -1
  8. package/dist/cjs/components/XAiChatbot/index.js.map +2 -2
  9. package/dist/cjs/components/XAiChatbot/styles.js +1 -1
  10. package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
  11. package/dist/cjs/components/XAiConversations/index.js +61 -27
  12. package/dist/cjs/components/XAiConversations/index.js.map +3 -3
  13. package/dist/cjs/components/XAiConversations/styles.d.ts +45 -0
  14. package/dist/cjs/components/XAiConversations/styles.js +177 -0
  15. package/dist/cjs/components/XAiConversations/styles.js.map +7 -0
  16. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +9 -6
  17. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +2 -2
  18. package/dist/cjs/components/XAiProvider/index.js +92 -11
  19. package/dist/cjs/components/XAiProvider/index.js.map +3 -3
  20. package/dist/cjs/constants/index.d.ts +1 -0
  21. package/dist/cjs/constants/index.js +30 -0
  22. package/dist/cjs/constants/index.js.map +7 -0
  23. package/dist/cjs/hooks/useAgentGenerator.d.ts +4 -1
  24. package/dist/cjs/hooks/useAgentGenerator.js +51 -48
  25. package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
  26. package/dist/cjs/services/api.d.ts +23 -0
  27. package/dist/cjs/services/api.js +35 -2
  28. package/dist/cjs/services/api.js.map +2 -2
  29. package/dist/cjs/types/XAiChatbot.d.ts +2 -0
  30. package/dist/cjs/types/XAiChatbot.js.map +1 -1
  31. package/dist/cjs/types/XAiConversations.d.ts +2 -0
  32. package/dist/cjs/types/XAiConversations.js.map +1 -1
  33. package/dist/cjs/types/XAiMessage.js.map +2 -2
  34. package/dist/cjs/types/XAiProvider.d.ts +19 -1
  35. package/dist/cjs/types/XAiProvider.js.map +2 -2
  36. package/dist/cjs/utils/umdEntry.d.ts +1 -0
  37. package/dist/cjs/utils/umdEntry.js +3 -2
  38. package/dist/cjs/utils/umdEntry.js.map +2 -2
  39. package/dist/esm/assets/add-chat.svg +13 -0
  40. package/dist/esm/assets/flash-open.svg +14 -0
  41. package/dist/esm/assets/logo.png +0 -0
  42. package/dist/esm/assets/svg/AddChatIcon.d.ts +3 -0
  43. package/dist/esm/assets/svg/AddChatIcon.js +40 -0
  44. package/dist/esm/assets/svg/AddChatIcon.js.map +1 -0
  45. package/dist/esm/components/XAiChatbot/index.js +3 -1
  46. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  47. package/dist/esm/components/XAiChatbot/styles.js +1 -1
  48. package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
  49. package/dist/esm/components/XAiConversations/index.js +129 -47
  50. package/dist/esm/components/XAiConversations/index.js.map +1 -1
  51. package/dist/esm/components/XAiConversations/styles.d.ts +45 -0
  52. package/dist/esm/components/XAiConversations/styles.js +36 -0
  53. package/dist/esm/components/XAiConversations/styles.js.map +1 -0
  54. package/dist/esm/components/XAiProvider/XAiProvider.stories.js +26 -27
  55. package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -1
  56. package/dist/esm/components/XAiProvider/index.js +112 -13
  57. package/dist/esm/components/XAiProvider/index.js.map +1 -1
  58. package/dist/esm/constants/index.d.ts +1 -0
  59. package/dist/esm/constants/index.js +3 -0
  60. package/dist/esm/constants/index.js.map +1 -0
  61. package/dist/esm/hooks/useAgentGenerator.d.ts +4 -1
  62. package/dist/esm/hooks/useAgentGenerator.js +122 -96
  63. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  64. package/dist/esm/services/api.d.ts +23 -0
  65. package/dist/esm/services/api.js +73 -0
  66. package/dist/esm/services/api.js.map +1 -1
  67. package/dist/esm/types/XAiChatbot.d.ts +2 -0
  68. package/dist/esm/types/XAiChatbot.js.map +1 -1
  69. package/dist/esm/types/XAiConversations.d.ts +2 -0
  70. package/dist/esm/types/XAiConversations.js.map +1 -1
  71. package/dist/esm/types/XAiMessage.js.map +1 -1
  72. package/dist/esm/types/XAiProvider.d.ts +19 -1
  73. package/dist/esm/types/XAiProvider.js.map +1 -1
  74. package/dist/esm/utils/umdEntry.d.ts +1 -0
  75. package/dist/esm/utils/umdEntry.js +9 -8
  76. package/dist/esm/utils/umdEntry.js.map +1 -1
  77. package/dist/umd/chat-sdk.min.js +1 -1
  78. package/package.json +1 -1
@@ -1 +1 @@
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","_aiMsg","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?: (content: string, 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?.content?.text ,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":";;;;;;AAAA,SAASA,QAAQ,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACnD,SAASC,EAAE,IAAIC,MAAM,QAAQ,MAAM;AACnC,SAASC,qBAAqB;AAC9B,SAASC,WAAW,EAAEC,aAAa;AACnC,SAAgBC,SAAS,EAAWC,WAAW;AAC/C,SAASC,OAAO;AAChB,SAASC,aAAa;AACtB,SAASC,cAAc,EAAEC,gBAAgB,EAAEC,kBAAkB;AAC7D;AACA,OAAOC,YAAY;AACnB;AACA;AACA,OAAOC,kBAAkB;AACzB,OAAOC,MAAM;AACb,OAAOC,YAAY;AACnB,OAAOC,WAAW;AAClB,OAAOC,iBAAiB;AACxB,OAAOC,QAAQ;AACf,OAAOC,cAAc;;AA0BrB;;AAGA;AACA,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA,OAOC;AAGvB,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAKzB,WAAYC,kBAAkB,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA,OAGL;;AAGI;;AAE7B;AACA;AACA;;AAiBA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAC,IAAA,EAOO;EAAA,IAN5BC,GAAG,GAAAD,IAAA,CAAHC,GAAG;IACHC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACLC,MAAM,GAAAH,IAAA,CAANG,MAAM;IACNC,OAAO,GAAAJ,IAAA,CAAPI,OAAO;IACPC,SAAS,GAAAL,IAAA,CAATK,SAAS;IACTC,SAAS,GAAAN,IAAA,CAATM,SAAS;EAET,IAAMC,SAAS,GAAG,EAAE;EACpB;EACA,IAAAC,SAAA,GAAgCnC,QAAQ,CAAa,EAAE,CAAC;IAAAoC,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAjDG,QAAQ,GAAAF,UAAA;IAAEG,WAAW,GAAAH,UAAA;EAC5B;EACA,IAAAI,UAAA,GAAkDxC,QAAQ,CAAC;MAAEyC,KAAK,EAAE,CAAC;MAAEC,OAAO,EAAE,CAAC;MAAEC,QAAQ,EAAE;IAAI,CAAC,CAAC;IAAAC,UAAA,GAAAP,cAAA,CAAAG,UAAA;IAA5FK,iBAAiB,GAAAD,UAAA;IAAEE,oBAAoB,GAAAF,UAAA;EAC9C;EACA,IAAAG,UAAA,GAAsC/C,QAAQ,CAAgB,EAAE,CAAC;IAAAgD,UAAA,GAAAX,cAAA,CAAAU,UAAA;IAA1DE,WAAW,GAAAD,UAAA;IAAEE,cAAc,GAAAF,UAAA;EAClC;EACA,IAAAG,UAAA,GAA4CnD,QAAQ,CAAU,KAAK,CAAC;IAAAoD,UAAA,GAAAf,cAAA,CAAAc,UAAA;IAA7DE,cAAc,GAAAD,UAAA;IAAEE,iBAAiB,GAAAF,UAAA;EACxC;EACA,IAAAG,UAAA,GAAkDvD,QAAQ,CAAC;MAAEyC,KAAK,EAAE,CAAC;MAAEC,OAAO,EAAE,CAAC;MAAEC,QAAQ,EAAE;IAAG,CAAC,CAAC;IAAAa,WAAA,GAAAnB,cAAA,CAAAkB,UAAA;IAA3FE,iBAAiB,GAAAD,WAAA;IAAEE,oBAAoB,GAAAF,WAAA;EAC9C;EACA,IAAAG,WAAA,GAAgD3D,QAAQ,CAAS,EAAE,CAAC;IAAA4D,WAAA,GAAAvB,cAAA,CAAAsB,WAAA;IAA7DE,gBAAgB,GAAAD,WAAA;IAAEE,mBAAmB,GAAAF,WAAA;EAC5C;EACA,IAAAG,WAAA,GAA8B/D,QAAQ,CAAM,IAAI,CAAC;IAAAgE,WAAA,GAAA3B,cAAA,CAAA0B,WAAA;IAA1CE,OAAO,GAAAD,WAAA;IAAEE,UAAU,GAAAF,WAAA;EAC1B;EACA,IAAMG,WAAW,GAAGjE,MAAM,CAAoD,CAAC,CAAC,CAAC;EAEjF,IAAAkE,KAAA,GAA0BtC,MAAM,IAAI,CAAC,CAAC;IAA9BuC,KAAK,GAAAD,KAAA,CAALC,KAAK;IAAEC,EAAE,GAAAF,KAAA,CAAFE,EAAE;IAAEC,EAAE,GAAAH,KAAA,CAAFG,EAAE;;EAErB;EACAtE,SAAS,CAAC,YAAM;IACd,IAAI2B,GAAG,IAAIE,MAAM,EAAE;MACjB,IAAM0C,UAAU;QAAA,IAAAC,KAAA,GAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QAAA;UAAA,IAAAC,MAAA;UAAA,OAAAH,mBAAA,GAAAI,IAAA,UAAAC,SAAAC,QAAA;YAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;cAAA;gBAAAF,QAAA,CAAAC,IAAA;gBAAAD,QAAA,CAAAE,IAAA;gBAAA,OAEMvE,cAAc,CAAAwE,aAAA;kBAAGxD,GAAG,EAAHA;gBAAG,GAAKE,MAAM,CAAE,CAAC;cAAA;gBAAjDgD,MAAM,GAAAG,QAAA,CAAAI,IAAA;gBACZ,IAAIP,MAAM,CAACQ,OAAO,EAAE;kBAClBpB,UAAU,CAACY,MAAM,CAACS,IAAI,CAAC;;kBAEvB;kBACAtD,SAAS,aAATA,SAAS,eAATA,SAAS,CAAG;oBACVuD,IAAI,EAAE/E,WAAW,CAACgF,uBAAuB;oBACzCC,OAAO,EAAE;kBACX,CAAC,CAAC;gBACJ,CAAC,MAAM;kBACL3D,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAG;oBACRyD,IAAI,EAAGV,MAAM,CAACU,IAAI,IAAkBhF,SAAS,CAACmF,aAAa;oBAC3DD,OAAO,EAAEZ,MAAM,CAACY,OAAO,IAAI;kBAC7B,CAAC,CAAC;gBACJ;gBAACT,QAAA,CAAAE,IAAA;gBAAA;cAAA;gBAAAF,QAAA,CAAAC,IAAA;gBAAAD,QAAA,CAAAW,EAAA,GAAAX,QAAA;gBAEDlD,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAG;kBACRyD,IAAI,EAAEhF,SAAS,CAACqF,SAAS;kBACzBH,OAAO,EAAE;gBACX,CAAC,CAAC;cAAC;cAAA;gBAAA,OAAAT,QAAA,CAAAa,IAAA;YAAA;UAAA,GAAAjB,OAAA;QAAA,CAEN;QAAA,gBAvBKL,UAAUA,CAAA;UAAA,OAAAC,KAAA,CAAAsB,KAAA,OAAAC,SAAA;QAAA;MAAA,GAuBf;MACDxB,UAAU,CAAC,CAAC;IACd;IACF;EACA,CAAC,EAAE,CAAC5C,GAAG,EAAEE,MAAM,CAAC,CAAC;EAEjB,IAAAmE,qBAAA,GAA+C5F,qBAAqB,CAAC;MACnE6F,SAAS,EAAE,IAAI;MACfhE,SAAS,EAATA,SAAS;MACTiE,OAAO,EAAE,SAAAA,QAAA,EAAM;QACb;QACAC,UAAU,CAAC,YAAM;UAAA,IAAAC,oBAAA,EAAAC,qBAAA;UACf,IAAI,CAAAD,oBAAA,GAAAlC,WAAW,CAACoC,OAAO,cAAAF,oBAAA,eAAnBA,oBAAA,CAAqBG,cAAc,KAAAF,qBAAA,GAAInC,WAAW,CAACoC,OAAO,cAAAD,qBAAA,eAAnBA,qBAAA,CAAqBG,SAAS,EAAE;YACzE/F,OAAO,CAACgG,IAAI,CAAC9E,GAAG,CAAC;UACnB;QACF,CAAC,EAAE,GAAG,CAAC;MACT,CAAC;MACD+E,MAAM,WAAAA,OAACC,GAAG,EAAE;QACVC,OAAO,CAACC,GAAG,CAAC,eAAe,EAAEF,GAAG,CAAC;MACnC;IACF,CAAC,CAAC;IAdMG,KAAK,GAAAd,qBAAA,CAALc,KAAK;IAAEC,OAAO,GAAAf,qBAAA,CAAPe,OAAO;IAAEC,YAAY,GAAAhB,qBAAA,CAAZgB,YAAY;IAAEnB,IAAI,GAAAG,qBAAA,CAAJH,IAAI;;EAgB1C;EACA7F,SAAS,CAAC,YAAM;IACd,IAAI,CAACgH,YAAY,IAAI,CAACA,YAAY,CAACC,OAAO,IAAI,CAACD,YAAY,CAAC1B,IAAI,EAAE;IAElE,IAAI4B,QAAQ,GAAGF,YAAY,CAAC1B,IAAI,IAAI0B,YAAY,CAACC,OAAO;IACxD,IAAI,OAAOC,QAAQ,KAAK,QAAQ,EAAE;MAChCA,QAAQ,GAAGxG,aAAa,CAACwG,QAAQ,EAAE;QACjCC,MAAM,EAAE7F,UAAU,CAAC4F,QAAQ;QAC3B5B,IAAI,EAAE;UACJ8B,WAAW,EAAE,MAAM;UACnBH,OAAO,EAAE,eAAe;UACxB5B,OAAO,EAAE,KAAK;UACdgC,QAAQ,EAAE;QACZ;MACF,CAAC,CAAC;IACJ;IAEA/E,WAAW,CAAC,UAACgF,YAAY,EAAK;MAAA,IAAAC,MAAA;MAC5B,IAAIC,WAAW,GAAAC,kBAAA,CAAOH,YAAY,CAAC;MACnC;MACA,IAAAI,SAAA,GAAyBR,QAAQ;QAAzBC,MAAM,GAAAO,SAAA,CAANP,MAAM;QAAE7B,IAAI,GAAAoC,SAAA,CAAJpC,IAAI;MACpB,IAAAqC,KAAA,GAAoGrC,IAAI,IAAI,CAAC,CAAC;QAAtGsC,QAAQ,GAAAD,KAAA,CAARC,QAAQ;QAAER,WAAW,GAAAO,KAAA,CAAXP,WAAW;QAAEH,OAAO,GAAAU,KAAA,CAAPV,OAAO;QAAEY,QAAQ,GAAAF,KAAA,CAARE,QAAQ;QAAEC,IAAI,GAAAH,KAAA,CAAJG,IAAI;QAAEC,aAAa,GAAAJ,KAAA,CAAbI,aAAa;QAAAC,aAAA,GAAAL,KAAA,CAAEtC,OAAO;QAAPA,OAAO,GAAA2C,aAAA,cAAG,IAAI,GAAAA,aAAA;QAAEX,QAAQ,GAAAM,KAAA,CAARN,QAAQ;;MAE/F;MACA,IAAIF,MAAM,KAAK7F,UAAU,CAAC2G,OAAO,EAAE;QACjC,IAAMC,mBAAmB,GAAG7F,QAAQ,CAAC8F,SAAS,CAAC,UAACC,IAAI;UAAA,OAAKA,IAAI,CAACC,IAAI,KAAK,mBAAmB;QAAA,EAAC;QAC3F,IAAIH,mBAAmB,KAAK,CAAC,CAAC,EAAE;UAC9B,IAAMI,UAA6B,GAAG;YACpCC,EAAE,EAAEpI,MAAM,CAAC,CAAC;YACZkI,IAAI,EAAE,mBAAmB;YACzBG,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC;YACrBC,MAAM,EAAEpI,aAAa,CAACqI,IAAI;YAC1BC,IAAI,EAAEvI,WAAW,CAACwI,UAAU;YAC5B5B,OAAO,EAAE,CAAC;cACR6B,GAAG,EAAE3I,MAAM,CAAC,CAAC;cACb4I,WAAW,EAAE9B;YACf,CAAC;UACH,CAAC;UACD;UACAO,WAAW,CAACwB,IAAI,CAACV,UAAU,CAAC;QAC9B,CAAC,MAAM;UACL,IAAMW,UAAU,GAAGzB,WAAW,CAACU,mBAAmB,CAAsB;UACxE,IAAIe,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEhC,OAAO,EAAE;YACvBgC,UAAU,CAAChC,OAAO,CAAC+B,IAAI,CAAC;cACtBF,GAAG,EAAE3I,MAAM,CAAC,CAAC;cACb4I,WAAW,EAAE9B;YACf,CAAC,CAAC;UACJ;QACF;QACA,OAAOO,WAAW;MACpB;;MAEA;MACA,IAAM0B,cAAc,GAAGzB,kBAAA,CAAIH,YAAY,EAAE6B,OAAO,CAAC,CAAC,CAAChB,SAAS,CAC1D,UAACiB,CAAC;QAAA,OAAKA,CAAC,CAACR,IAAI,KAAKvI,WAAW,CAACgJ,SAAS,IAAID,CAAC,CAACf,IAAI,KAAK,aAAa,KAAKe,CAAC,CAACV,MAAM,KAAK,MAAM,IAAIU,CAAC,CAACV,MAAM,KAAK,SAAS,CAAC;MAAA,CACxH,CAAC;MACD,IAAMY,SAAS,GAAGJ,cAAc,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG5B,YAAY,CAACiC,MAAM,GAAG,CAAC,GAAGL,cAAc;MACvF,IAAMM,SAAS,GAAGF,SAAS,KAAK,CAAC,CAAC,GAAGhC,YAAY,CAACgC,SAAS,CAAC,GAAG,IAAI;MAEnE,IAAIG,KAA8B;MAElC,IAAI,CAACD,SAAS,EAAE;QACdC,KAAK,GAAG;UACNlB,EAAE,EAAEpI,MAAM,CAAC,CAAC;UACZkI,IAAI,EAAE,aAAa;UACnBG,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC;UACrBG,IAAI,EAAEvI,WAAW,CAACgJ,SAAS;UAC3BpC,OAAO,EAAE;YAAEyC,IAAI,EAAE;UAAG,CAAC;UACrBC,MAAM,EAAE,EAAE;UACVjB,MAAM,EAAEpI,aAAa,CAACsJ;QACxB,CAAC;QACDpC,WAAW,CAACwB,IAAI,CAACS,KAAK,CAAC;MACzB,CAAC,MAAM,IAAID,SAAS,CAACnB,IAAI,KAAK,aAAa,EAAE;QAC3CoB,KAAK,GAAAtE,aAAA,KAAQqE,SAAS,CAAE;MAC1B,CAAC,MAAM,IAAIA,SAAS,CAACnB,IAAI,KAAK,cAAc,EAAE;QAC5CoB,KAAK,GAAGI,SAAS;MACnB;;MAEA;MACA,IAAI,CAACJ,KAAK,EAAE;QACV,OAAOjC,WAAW;MACpB;MAEA,QAAQL,MAAM;QACZ,KAAK7F,UAAU,CAACwI,oBAAoB;UAClCL,KAAK,CAACE,MAAM,GAAGF,KAAK,CAACE,MAAM,IAAI,EAAE;UACjCF,KAAK,CAACE,MAAM,CAACX,IAAI,CAAC;YAChBT,EAAE,EAAEX,QAAQ;YACZY,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC;YACrBJ,IAAI,EAAE,wBAAwB;YAC9B0B,IAAI,EAAEhC,aAAa,KAAK,UAAU,GAAG,UAAU,GAAG,UAAU;YAC5DhC,SAAS,EAAE+B,IAAI;YACfkC,KAAK,EAAA7E,aAAA,CAAAA,aAAA,KACAG,IAAI;cACP2E,IAAI,EAAElC,aAAa,KAAK,UAAU,GAAGjH,YAAY,GAAGE,MAAM;cAC1DkJ,UAAU,EAAEnC,aAAa,KAAK,UAAU,GAAGhH,kBAAkB,GAAGE;YAAY;UAEhF,CAAC,CAAC;UACF;QACF,KAAKK,UAAU,CAAC6I,kBAAkB;UAAE;YAAA,IAAAC,aAAA;YAClC;YACA,IAAMC,kBAAkB,IAAAD,aAAA,GAAGX,KAAK,CAACE,MAAM,cAAAS,aAAA,uBAAZA,aAAA,CAAcE,IAAI,CAAC,UAAClC,IAAI;cAAA,OAAKA,IAAI,CAACG,EAAE,KAAKX,QAAQ;YAAA,EAAC;YAC7E,IAAIyC,kBAAkB,EAAE;cACtBA,kBAAkB,CAACL,KAAK,CAACO,IAAI,GAAGjF,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEiF,IAAI,GAAG,CAAC,CAAAjF,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEiF,IAAI,IAAG,IAAI,EAAEC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;YACjF;YACA;UACF;QACA,KAAKlJ,UAAU,CAACmJ,eAAe;UAC7BhB,KAAK,CAACE,MAAM,GAAGF,KAAK,CAACE,MAAM,IAAI,EAAE;UACjCF,KAAK,CAACE,MAAM,CAACX,IAAI,CAAC;YAChBT,EAAE,EAAEX,QAAQ;YACZY,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC;YACrBJ,IAAI,EAAE,wBAAwB;YAC9B0B,IAAI,EAAElC,QAAQ,KAAK,OAAO,GAAG,QAAQ,GAAG,OAAO;YAC/C9B,SAAS,EAAE+B,IAAI;YACfkC,KAAK,EAAA7E,aAAA,CAAAA,aAAA,KACAG,IAAI;cACP2E,IAAI,EAAEpC,QAAQ,KAAK,OAAO,GAAG3G,WAAW,GAAGE,QAAQ;cACnD8I,UAAU,EAAErC,QAAQ,KAAK,OAAO,GAAG1G,iBAAiB,GAAGE;YAAc;UAEzE,CAAC,CAAC;UACF;QACF,KAAKC,UAAU,CAACoJ,aAAa;UAAE;YAAA,IAAAC,cAAA;YAC7B;YACA,IAAMC,aAAa,IAAAD,cAAA,GAAGlB,KAAK,CAACE,MAAM,cAAAgB,cAAA,uBAAZA,cAAA,CAAcL,IAAI,CAAC,UAAClC,IAAI;cAAA,OAAKA,IAAI,CAACG,EAAE,KAAKX,QAAQ;YAAA,EAAC;YACxE,IAAIgD,aAAa,EAAE;cACjBA,aAAa,CAACZ,KAAK,CAACO,IAAI,GAAGjF,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEiF,IAAI,GAAG,CAAC,CAAAjF,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEiF,IAAI,IAAG,IAAI,EAAEC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5E;YACA;UACF;QACA,KAAKlJ,UAAU,CAAC4F,QAAQ;UACtB,IAAI7B,OAAO,EAAE;YACX;YACA,IAAIoE,KAAK,CAACf,MAAM,KAAKpI,aAAa,CAACsJ,IAAI,EAAE;cACvCH,KAAK,CAACf,MAAM,GAAGpI,aAAa,CAACuK,OAAO;YACtC;YACA,IAAIzD,WAAW,KAAK,MAAM,IAAI,MAAM,IAAIqC,KAAK,CAACxC,OAAO,EAAE;cACrDwC,KAAK,CAACxC,OAAO,CAACyC,IAAI,IAAIzC,OAAO;YAC/B;UACF,CAAC,MAAM;YACL;YACAwC,KAAK,CAACf,MAAM,GAAGpI,aAAa,CAACwK,MAAM;YACnCrB,KAAK,CAACxC,OAAO,CAACyC,IAAI,yCAAAqB,MAAA,CAAkC1D,QAAQ,YAAS;UACvE;UACA;QACF,KAAK/F,UAAU,CAAC0J,MAAM;UACpB;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACAvB,KAAK,CAACf,MAAM,GAAGpI,aAAa,CAACqI,IAAI;UACjC;UACA5G,SAAS,aAATA,SAAS,eAATA,SAAS,EAAAwF,MAAA,GAAGkC,KAAK,cAAAlC,MAAA,gBAAAA,MAAA,GAALA,MAAA,CAAON,OAAO,cAAAM,MAAA,uBAAdA,MAAA,CAAgBmC,IAAI,EAAED,KAAK,CAAC;UACxC;QACF;MACF;;MAEA;MACA,IAAID,SAAS,IAAIA,SAAS,CAACnB,IAAI,KAAK,aAAa,EAAE;QACjDb,WAAW,CAAC8B,SAAS,CAAC,GAAGG,KAAK;MAChC,CAAC,MAAM,IAAI,CAACD,SAAS,EAAE;QACrB;QACA,IAAIhC,WAAW,CAAC+B,MAAM,GAAG,CAAC,IAAI/B,WAAW,CAACA,WAAW,CAAC+B,MAAM,GAAG,CAAC,CAAC,CAAClB,IAAI,KAAK,aAAa,EAAE;UACxFb,WAAW,CAACA,WAAW,CAAC+B,MAAM,GAAG,CAAC,CAAC,GAAGE,KAAK;QAC7C,CAAC,MAAM;UACL;UACAjC,WAAW,MAAAuD,MAAA,CAAAtD,kBAAA,CAAOD,WAAW,IAAEiC,KAAK,EAAC;QACvC;MACF;MACA,OAAOjC,WAAW;IACpB,CAAC,CAAC;;IAEF;EACF,CAAC,EAAE,CAACR,YAAY,CAAC,CAAC;;EAElB;EACA,IAAMiE,UAAU;IAAA,IAAAC,KAAA,GAAAzG,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAwG,SAAOC,WAAmB,EAAEnE,OAAY;MAAA,OAAAvC,mBAAA,GAAAI,IAAA,UAAAuG,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAArG,IAAA,GAAAqG,SAAA,CAAApG,IAAA;UAAA;YAAAoG,SAAA,CAAA3F,EAAA,GACjDyF,WAAW;YAAAE,SAAA,CAAApG,IAAA,GAAAoG,SAAA,CAAA3F,EAAA,KACZ,UAAU,OAAA2F,SAAA,CAAA3F,EAAA,KA6BV,SAAS;YAAA;UAAA;YA5BZrD,WAAW,CAAC,UAAC2C,IAAI,EAAK;cACpB,IAAMsG,oBAAoB,GAAGtG,IAAI,CAACkD,SAAS,CAAC,UAACC,IAAI;gBAAA,IAAAoD,WAAA;gBAAA,QAAAA,WAAA,GAAKpD,IAAI,CAAC4B,KAAK,cAAAwB,WAAA,uBAAVA,WAAA,CAAYC,QAAQ;cAAA,EAAC;cAC3E,IAAIF,oBAAoB,KAAK,CAAC,CAAC,EAAE;gBAC/B,IAAMjD,UAAoB,GAAG;kBAC3BD,IAAI,EAAE,aAAa;kBACnBE,EAAE,EAAEpI,MAAM,CAAC,CAAC;kBACZqI,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC;kBACrBG,IAAI,EAAEvI,WAAW,CAACgJ,SAAS;kBAC3BX,MAAM,EAAEpI,aAAa,CAACqI,IAAI;kBAC1B1B,OAAO,EAAE;oBACPyC,IAAI,EAAEzC;kBACR,CAAC;kBACD+C,KAAK,EAAE;oBACLyB,QAAQ,EAAE,IAAI;oBACdC,QAAQ,EAAE;kBACZ;gBACF,CAAC;gBACD,QAAQpD,UAAU,EAAAyC,MAAA,CAAAtD,kBAAA,CAAKxC,IAAI;cAC7B;cACA,OAAOA,IAAI,CAAC0G,GAAG,CAAC,UAACvD,IAAI,EAAK;gBAAA,IAAAwD,YAAA;gBACxB,IAAI,CAAAA,YAAA,GAAAxD,IAAI,CAAC4B,KAAK,cAAA4B,YAAA,eAAVA,YAAA,CAAYH,QAAQ,IAAIrD,IAAI,CAACnB,OAAO,IAAI,MAAM,IAAImB,IAAI,CAACnB,OAAO,EAAE;kBAClEmB,IAAI,CAACnB,OAAO,CAACyC,IAAI,GAAGzC,OAAO;gBAC7B;gBACA,OAAOmB,IAAI;cACb,CAAC,CAAC;YACJ,CAAC,CAAC;YAAC,OAAAkD,SAAA,CAAAO,MAAA;UAAA;YAIHvJ,WAAW,CAAC,UAAC2C,IAAI,EAAK;cACpB,IAAMiD,mBAAmB,GAAGjD,IAAI,CAACkD,SAAS,CAAC,UAACC,IAAI;gBAAA,OAAKA,IAAI,CAACC,IAAI,KAAK,mBAAmB;cAAA,EAAC;cACvF,IAAIH,mBAAmB,KAAK,CAAC,CAAC,EAAE;gBAC9B,IAAMqD,oBAAoB,GAAGtG,IAAI,CAACkD,SAAS,CAAC,UAACC,IAAI;kBAAA,IAAA0D,YAAA;kBAAA,QAAAA,YAAA,GAAK1D,IAAI,CAAC4B,KAAK,cAAA8B,YAAA,uBAAVA,YAAA,CAAYL,QAAQ;gBAAA,EAAC;gBAC3E,IAAMnD,UAAoB,GAAG;kBAC3BC,EAAE,EAAEpI,MAAM,CAAC,CAAC;kBACZkI,IAAI,EAAE,mBAAmB;kBACzBG,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC;kBACrBC,MAAM,EAAEpI,aAAa,CAACqI,IAAI;kBAC1BC,IAAI,EAAEvI,WAAW,CAACwI,UAAU;kBAC5B5B,OAAO,EAAPA;gBACF,CAAC;gBACD,IAAIsE,oBAAoB,KAAK,CAAC,CAAC,EAAE;kBAC/B;kBACA,QAAQjD,UAAU,EAAAyC,MAAA,CAAAtD,kBAAA,CAAKxC,IAAI;gBAC7B;gBACA;gBACA,IAAMuC,WAAW,GAAAC,kBAAA,CAAOxC,IAAI,CAAC;gBAC7BuC,WAAW,CAACuE,MAAM,CAACR,oBAAoB,GAAG,CAAC,EAAE,CAAC,EAAEjD,UAAU,CAAC;gBAC3D,OAAOd,WAAW;cACpB;cACA,OAAOvC,IAAI,CAAC0G,GAAG,CAAC,UAACvD,IAAI,EAAK;gBACxB,IAAIA,IAAI,CAACC,IAAI,KAAK,mBAAmB,EAAE;kBACrCD,IAAI,CAACnB,OAAO,GAAGA,OAAO;gBACxB;gBACA,OAAOmB,IAAI;cACb,CAAC,CAAC;YACJ,CAAC,CAAC;YAAC,OAAAkD,SAAA,CAAAO,MAAA;UAAA;YAAA,OAAAP,SAAA,CAAAO,MAAA;UAAA;UAAA;YAAA,OAAAP,SAAA,CAAAzF,IAAA;QAAA;MAAA,GAAAsF,QAAA;IAAA,CAMR;IAAA,gBAjEKF,UAAUA,CAAAe,EAAA,EAAAC,GAAA;MAAA,OAAAf,KAAA,CAAApF,KAAA,OAAAC,SAAA;IAAA;EAAA,GAiEf;;EAED;EACA,IAAMmG,IAAI;IAAA,IAAAC,KAAA,GAAA1H,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAyH,SAAOnF,OAAY;MAAA,IAAAqB,UAAA,EAAA+D,UAAA;MAAA,OAAA3H,mBAAA,GAAAI,IAAA,UAAAwH,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAtH,IAAA,GAAAsH,SAAA,CAAArH,IAAA;UAAA;YAG9B,IAAI,OAAO+B,OAAO,KAAK,QAAQ,EAAE;cAC/BqB,UAAU,GAAG;gBACXD,IAAI,EAAE,aAAa;gBACnBE,EAAE,EAAEpI,MAAM,CAAC,CAAC;gBACZqI,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC;gBACrBG,IAAI,EAAEvI,WAAW,CAACmM,IAAI;gBACtB9D,MAAM,EAAEpI,aAAa,CAACqI,IAAI;gBAC1B1B,OAAO,EAAE;kBACPyC,IAAI,EAAEzC;gBACR;cACF,CAAC;YACH,CAAC,MAAM;cACLqB,UAAU,GAAAnD,aAAA;gBACRkD,IAAI,EAAE,aAAa;gBACnBE,EAAE,EAAEpI,MAAM,CAAC,CAAC;gBACZqI,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC;gBACrBG,IAAI,EAAEvI,WAAW,CAACmM,IAAI;gBACtB9D,MAAM,EAAEpI,aAAa,CAACqI,IAAI;gBAC1B1B,OAAO,EAAE;kBACPyC,IAAI,EAAEzC;gBACR;cAAC,GACEA,OAAO,CACX;YACH;YAEA,IAAIwF,OAAA,CAAOnE,UAAU,CAACrB,OAAO,MAAK,QAAQ,IAAI,MAAM,IAAIqB,UAAU,CAACrB,OAAO,IAAI,OAAOqB,UAAU,CAACrB,OAAO,CAACyC,IAAI,KAAK,QAAQ,EAAE;cACzH2C,UAAU,GAAG/D,UAAU,CAACrB,OAAO,CAACyC,IAAI;YACtC,CAAC,MAAM;cACL2C,UAAU,GAAG,EAAE;YACjB;YAEA/J,WAAW,CAAC,UAAC2C,IAAI,EAAK;cACpB;cACA,IAAMiD,mBAAmB,GAAG7F,QAAQ,CAAC8F,SAAS,CAAC,UAACC,IAAI;gBAAA,OAAKA,IAAI,CAACC,IAAI,KAAK,mBAAmB;cAAA,EAAC;cAC3F,IAAIH,mBAAmB,KAAK,CAAC,CAAC,EAAE;gBAC9BjD,IAAI,CAAC8G,MAAM,CAAC7D,mBAAmB,EAAE,CAAC,CAAC;cACrC;cACA;cACAjD,IAAI,CAAC+D,IAAI,CAACV,UAAU,CAAC;cACrB,OAAOrD,IAAI;YACb,CAAC,CAAC;YAEF6B,KAAK,IAAAiE,MAAA,CACApJ,GAAG,gBAAAoJ,MAAA,CAAa3G,KAAK,kBAAA2G,MAAA,CAAe1G,EAAE,UAAA0G,MAAA,CAAOzG,EAAE,GAClD;cACEoI,SAAS,EAAE;gBACTL,UAAU,EAAVA;cACF,CAAC;cACDM,SAAS,EAAE/I;YACb,CAAC,EACD;cACEgJ,aAAa,YAAA7B,MAAA,CAAYnJ,KAAK;YAChC,CACF,CAAC;UAAC;UAAA;YAAA,OAAA2K,SAAA,CAAA1G,IAAA;QAAA;MAAA,GAAAuG,QAAA;IAAA,CACH;IAAA,gBAzDKF,IAAIA,CAAAW,GAAA;MAAA,OAAAV,KAAA,CAAArG,KAAA,OAAAC,SAAA;IAAA;EAAA,GAyDT;;EAED;EACA,IAAM+G,MAAM,GAAG,SAATA,MAAMA,CAAA,EAAS;IACnBxK,WAAW,CAAC,UAACgF,YAAY,EAAK;MAC5B;MACA,IAAM4B,cAAc,GAAGzB,kBAAA,CAAIH,YAAY,EAAE6B,OAAO,CAAC,CAAC,CAAChB,SAAS,CAC1D,UAACiB,CAAC;QAAA,OAAKA,CAAC,CAACR,IAAI,KAAKvI,WAAW,CAACgJ,SAAS,IAAID,CAAC,CAACf,IAAI,KAAK,aAAa;MAAA,CACrE,CAAC;MACD,IAAMb,WAAW,GAAAC,kBAAA,CAAOH,YAAY,CAAC;MACrC,IAAI4B,cAAc,KAAK,CAAC,CAAC,EAAE;QACzB,IAAMI,SAAS,GAAG9B,WAAW,CAAC+B,MAAM,GAAG,CAAC,GAAGL,cAAc;QACzD1B,WAAW,CAACuE,MAAM,CAACzC,SAAS,EAAE,CAAC,CAAC;MAClC;;MAEA;MACA,IAAMpB,mBAAmB,GAAGV,WAAW,CAACW,SAAS,CAAC,UAACC,IAAI;QAAA,OAAKA,IAAI,CAACC,IAAI,KAAK,mBAAmB;MAAA,EAAC;MAC9F,IAAIH,mBAAmB,KAAK,CAAC,CAAC,EAAE;QAC9BV,WAAW,CAACuE,MAAM,CAAC7D,mBAAmB,EAAE,CAAC,CAAC;MAC5C;;MAEA;MACA,IAAM6E,WAAW,GAAGtF,kBAAA,CAAID,WAAW,EAAE2B,OAAO,CAAC,CAAC,CAACmB,IAAI,CACjD,UAAClB,CAAC;QAAA,OAAKA,CAAC,CAACR,IAAI,KAAKvI,WAAW,CAACmM,IAAI,IAAIpD,CAAC,CAACf,IAAI,KAAK,aAAa;MAAA,CAChE,CAA4B;MAC5B,IAAI0E,WAAW,IAAIA,WAAW,CAAC9F,OAAO,IAAI,OAAO8F,WAAW,CAAC9F,OAAO,CAACyC,IAAI,KAAK,QAAQ,EAAE;QACtF;QACAwC,IAAI,CAACa,WAAW,CAAC9F,OAAO,CAACyC,IAAI,CAAC;MAChC;MAEA,OAAOlC,WAAW;IACpB,CAAC,CAAC;EACJ,CAAC;EAED,IAAMwF,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAS;IACrBnH,IAAI,CAAC,CAAC;IACNvD,WAAW,CAAC,UAACgF,YAAY,EAAK;MAC5B;MACA,IAAME,WAAW,GAAAC,kBAAA,CAAOH,YAAY,CAAC;MACrCE,WAAW,CAACyF,OAAO,CAAC,UAAC7D,CAAC,EAAK;QACzB,IAAIA,CAAC,CAACV,MAAM,KAAKpI,aAAa,CAACuK,OAAO,EAAE;UACtCzB,CAAC,CAACV,MAAM,GAAGpI,aAAa,CAACqI,IAAI;QAC/B,CAAC,MAAM,IAAIS,CAAC,CAACV,MAAM,KAAKpI,aAAa,CAACsJ,IAAI,EAAE;UAC1C,IAAIR,CAAC,CAACf,IAAI,KAAK,aAAa,EAAE;YAC5Be,CAAC,CAACnC,OAAO,CAACyC,IAAI,GAAG,4CAA4C;UAC/D;UACAN,CAAC,CAACV,MAAM,GAAGpI,aAAa,CAACqI,IAAI;QAC/B;MACF,CAAC,CAAC;MACF,OAAOnB,WAAW;IACpB,CAAC,CAAC;EACJ,CAAC;;EAED;EACA,IAAM0F,cAAc,GAAG,SAAjBA,cAAcA,CAAI5H,IAAS,EAAmB;IAAA,IAAjBsE,IAAI,GAAA7D,SAAA,CAAAwD,MAAA,QAAAxD,SAAA,QAAA8D,SAAA,GAAA9D,SAAA,MAAG,KAAK;IAC7CzD,WAAW,CAAC,UAAC2C,IAAI,EAAK;MACpB,IAAMkI,gBAA4B,GAAG,EAAE;MACvC7H,IAAI,CAAC2H,OAAO,CAAC,UAAC7E,IAAS,EAAK;QAC1B,IAAAgF,KAAA,GAAuChF,IAAI,IAAI,CAAC,CAAC;UAAzCnB,OAAO,GAAAmG,KAAA,CAAPnG,OAAO;UAAEoG,WAAW,GAAAD,KAAA,CAAXC,WAAW;UAAEzE,IAAI,GAAAwE,KAAA,CAAJxE,IAAI;QAElC,IAAIA,IAAI,KAAK,MAAM,EAAE;UACnB,IAAMN,UAAoB,GAAG;YAC3BD,IAAI,EAAE,aAAa;YACnBE,EAAE,EAAEpI,MAAM,CAAC,CAAC;YACZqI,SAAS,EAAE6E,WAAW;YACtBzE,IAAI,EAAEvI,WAAW,CAACmM,IAAI;YACtB9D,MAAM,EAAEpI,aAAa,CAACqI,IAAI;YAC1B1B,OAAO,EAAE;cACPyC,IAAI,EAAEzC;YACR;UACF,CAAC;UAEDkG,gBAAgB,CAACnE,IAAI,CAACV,UAAU,CAAC;QACnC,CAAC,MAAM,IAAIM,IAAI,KAAK,IAAI,EAAE;UACxB,IAAMN,WAAuB,GAAG;YAC9BC,EAAE,EAAEpI,MAAM,CAAC,CAAC;YACZkI,IAAI,EAAE,aAAa;YACnBG,SAAS,EAAE6E,WAAW;YACtBzE,IAAI,EAAEvI,WAAW,CAACgJ,SAAS;YAC3BpC,OAAO,EAAE;cAAEyC,IAAI,EAAEzC;YAAQ,CAAC;YAC1B0C,MAAM,EAAE,EAAE;YACVjB,MAAM,EAAEpI,aAAa,CAACqI;UACxB,CAAC;UAEDwE,gBAAgB,CAACnE,IAAI,CAACV,WAAU,CAAC;QACnC;MACF,CAAC,CAAC;MAEF,IAAIsB,IAAI,EAAE;QACR,UAAAmB,MAAA,CAAWoC,gBAAgB;MAC7B;MACA,UAAApC,MAAA,CAAAtD,kBAAA,CAAWxC,IAAI,GAAKkI,gBAAgB;IACtC,CAAC,CAAC;EACJ,CAAC;;EAED;EACA,IAAMG,YAAY;IAAA,IAAAC,KAAA,GAAA9I,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA6I,SAAA;MAAA,IAAAC,qBAAA,EAAAC,cAAA,EAAAC,KAAA,EAAAC,qBAAA,EAAAC,mBAAA,EAAAC,cAAA,EAAArC,QAAA,EAAAsC,cAAA,EAAAC,eAAA,EAAAC,WAAA;MAAA,OAAAvJ,mBAAA,GAAAI,IAAA,UAAAoJ,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAlJ,IAAA,GAAAkJ,SAAA,CAAAjJ,IAAA;UAAA;YAAAuI,qBAAA,GACazJ,OAAO,CAA/B0J,cAAc,EAAdA,cAAc,GAAAD,qBAAA,cAAG,CAAC,CAAC,GAAAA,qBAAA,EAC3B;YAAAE,KAAA,GACoDD,cAAc,IAAI,CAAC,CAAC,EAAAE,qBAAA,GAAAD,KAAA,CAAhEE,mBAAmB,EAAnBA,mBAAmB,GAAAD,qBAAA,cAAG,EAAE,GAAAA,qBAAA,EAAAE,cAAA,GAAAH,KAAA,CAAElC,QAAQ,EAARA,QAAQ,GAAAqC,cAAA,cAAG,EAAE,GAAAA,cAAA,EAE/C;YACA,IAAIrC,QAAQ,EAAE;cACZR,UAAU,CAAC,UAAU,EAAEQ,QAAQ,CAAC;YAClC,CAAC,MAAM;cACLnJ,WAAW,CAAC,UAAC2C,IAAI;gBAAA,OAAKA,IAAI,CAACmJ,MAAM,CAAC,UAAChG,IAAI;kBAAA,IAAAiG,YAAA;kBAAA,OAAK,GAAAA,YAAA,GAACjG,IAAI,CAAC4B,KAAK,cAAAqE,YAAA,eAAVA,YAAA,CAAY5C,QAAQ;gBAAA,EAAC;cAAA,EAAC;YACrE;;YAEA;YACMsC,cAAc,GAAGF,mBAAmB,CAACO,MAAM,CAAC,UAAChG,IAAY;cAAA,OAAKA,IAAI;YAAA,EAAC;YAEzE,IAAI2F,cAAc,CAACxE,MAAM,GAAG,CAAC,EAAE;cACvByE,eAAe,GAAGD,cAAc,CAACpC,GAAG,CAAC,UAACvD,IAAY,EAAEkG,KAAa;gBAAA,OAAM;kBAC3ExF,GAAG,EAAEwF,KAAK,GAAG,CAAC;kBACdvF,WAAW,EAAEX;gBACf,CAAC;cAAA,CAAC,CAAC,EACH;cACM6F,WAAW,GAAG5L,QAAQ,CAACkM,IAAI,CAAC,UAACnG,IAAI;gBAAA,IAAAoG,YAAA;gBAAA,OAAM,GAAAA,YAAA,GAACpG,IAAI,CAAC4B,KAAK,cAAAwE,YAAA,eAAVA,YAAA,CAAY/C,QAAQ,KAAIrD,IAAI,CAACC,IAAI,KAAK,mBAAmB;cAAA,CAAC,CAAC;cACzG,IAAI,CAAC4F,WAAW,EAAE;gBAChBhD,UAAU,CAAC,SAAS,EAAE+C,eAAe,CAAC;cACxC;YACF,CAAC,MAAM;cACL1L,WAAW,CAAC,UAAC2C,IAAI;gBAAA,OAAKA,IAAI,CAACmJ,MAAM,CAAC,UAAChG,IAAI;kBAAA,OAAK,EAAEA,IAAI,CAACC,IAAI,KAAK,mBAAmB,CAAC;gBAAA,EAAC;cAAA,EAAC;YACpF;UAAC;UAAA;YAAA,OAAA8F,SAAA,CAAAtI,IAAA;QAAA;MAAA,GAAA2H,QAAA;IAAA,CACF;IAAA,gBA5BKF,YAAYA,CAAA;MAAA,OAAAC,KAAA,CAAAzH,KAAA,OAAAC,SAAA;IAAA;EAAA,GA4BjB;;EAED;EACA,IAAM0I,oBAAoB;IAAA,IAAAC,MAAA,GAAAjK,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAgK,SAAA;MAAA,IAAA9J,MAAA,EAAA+J,YAAA,EAAAC,UAAA,EAAAC,aAAA,EAAAC,aAAA,EAAAC,aAAA,EAAAC,cAAA,EAAAtC,SAAA;MAAA,OAAAjI,mBAAA,GAAAI,IAAA,UAAAoK,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAlK,IAAA,GAAAkK,SAAA,CAAAjK,IAAA;UAAA;YAAAiK,SAAA,CAAAlK,IAAA;YAAAkK,SAAA,CAAAjK,IAAA;YAAA,OAEJtE,gBAAgB,CAAC;cACpCe,GAAG,EAAHA,GAAG;cACHyC,KAAK,EAALA,KAAK;cACLC,EAAE,EAAFA,EAAE;cACFC,EAAE,EAAFA,EAAE;cACF1C,KAAK,EAALA;YACF,CAAC,CAAC;UAAA;YANIiD,MAAM,GAAAsK,SAAA,CAAA/J,IAAA;YAQZ,IAAIP,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEQ,OAAO,EAAE;cACbwJ,UAAU,GAAG,CAAAhK,MAAM,aAANA,MAAM,gBAAA+J,YAAA,GAAN/J,MAAM,CAAES,IAAI,cAAAsJ,YAAA,uBAAZA,YAAA,CAActJ,IAAI,KAAI,EAAE;cAC3C,IAAIuJ,UAAU,CAACtF,MAAM,GAAG,CAAC,EAAE;gBACnB0F,cAAc,GAAGJ,UAAU,CAAClD,GAAG,CAAC,UAACvD,IAAI,EAAK;kBAC9C,OAAO;oBACLU,GAAG,EAAEV,IAAI,CAACuE,SAAS;oBACnByC,KAAK,EAAEhH,IAAI,CAACiH,KAAK;oBACjBC,SAAS,EAAE,IAAI7G,IAAI,CAACL,IAAI,CAACmH,UAAU,CAAC,CAACC,OAAO,CAAC,CAAC;oBAC9CnN,QAAQ,EAAE,EAAE;oBACZoN,IAAI,EAAAtK,aAAA,KACCiD,IAAI;kBAEX,CAAC;gBACH,CAAC,CAAC;gBAEFnF,cAAc,CAACgM,cAAc,CAAC;gBAC9B;gBACAxL,oBAAoB,CAAC;kBAAEhB,OAAO,EAAEoC,MAAM,aAANA,MAAM,gBAAAiK,aAAA,GAANjK,MAAM,CAAES,IAAI,cAAAwJ,aAAA,uBAAZA,aAAA,CAAcrM,OAAO;kBAAEC,QAAQ,EAAEmC,MAAM,aAANA,MAAM,gBAAAkK,aAAA,GAANlK,MAAM,CAAES,IAAI,cAAAyJ,aAAA,uBAAZA,aAAA,CAAcrM,QAAQ;kBAAEF,KAAK,EAAEqC,MAAM,aAANA,MAAM,gBAAAmK,aAAA,GAANnK,MAAM,CAAES,IAAI,cAAA0J,aAAA,uBAAZA,aAAA,CAAcU;gBAAW,CAAC,CAAC;gBACnH/C,SAAS,GAAKkC,UAAU,CAAC,CAAC,CAAC,CAA3BlC,SAAS;gBACjBgD,uBAAuB,CAAChD,SAAS,CAAC;cACpC,CAAC,MAAM;gBACL;gBACA1J,cAAc,CAAC,EAAE,CAAC;gBAClBY,mBAAmB,CAAC1D,MAAM,CAAC,CAAC,CAAC;gBAC7BmN,YAAY,CAAC,CAAC;cAChB;cACA;cACAtL,SAAS,aAATA,SAAS,eAATA,SAAS,CAAG;gBACVuD,IAAI,EAAE/E,WAAW,CAACoP,yBAAyB;gBAC3CnK,OAAO,EAAE;cACX,CAAC,CAAC;YACJ,CAAC,MAAM;cACL6H,YAAY,CAAC,CAAC;YAChB;YAAC6B,SAAA,CAAAjK,IAAA;YAAA;UAAA;YAAAiK,SAAA,CAAAlK,IAAA;YAAAkK,SAAA,CAAAxJ,EAAA,GAAAwJ,SAAA;UAAA;UAAA;YAAA,OAAAA,SAAA,CAAAtJ,IAAA;QAAA;MAAA,GAAA8I,QAAA;IAAA,CAIJ;IAAA,gBA/CKF,oBAAoBA,CAAA;MAAA,OAAAC,MAAA,CAAA5I,KAAA,OAAAC,SAAA;IAAA;EAAA,GA+CzB;;EAED;EACA,IAAM4J,uBAAuB;IAAA,IAAAE,MAAA,GAAApL,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAmL,SAAOnD,SAAiB;MAAA,IAAAoD,aAAA,EAAAC,mBAAA,EAAAC,YAAA;MAAA,OAAAvL,mBAAA,GAAAI,IAAA,UAAAoL,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAlL,IAAA,GAAAkL,SAAA,CAAAjL,IAAA;UAAA;YAAA,KAClDyH,SAAS;cAAAwD,SAAA,CAAAjL,IAAA;cAAA;YAAA;YAAA,MACPyH,SAAS,KAAK/I,gBAAgB;cAAAuM,SAAA,CAAAjL,IAAA;cAAA;YAAA;YAAA,OAAAiL,SAAA,CAAAtE,MAAA;UAAA;YAGlChI,mBAAmB,CAAC8I,SAAS,CAAC,CAAC,CAAC;YAAAwD,SAAA,CAAAjL,IAAA;YAAA,OACJrE,kBAAkB,CAAC;cAC7Cc,GAAG,EAAHA,GAAG;cACHyC,KAAK,EAALA,KAAK;cACLC,EAAE,EAAFA,EAAE;cACFC,EAAE,EAAFA,EAAE;cACFqI,SAAS,EAATA,SAAS;cACT/K,KAAK,EAALA,KAAK;cACLa,OAAO,EAAEe,iBAAiB,CAACf,OAAO;cAClCC,QAAQ,EAAEc,iBAAiB,CAACd;YAC9B,CAAC,CAAC;UAAA;YATIqN,aAAa,GAAAI,SAAA,CAAA/K,IAAA;YAWnB,IAAI2K,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAE1K,OAAO,EAAE;cACpB4K,YAAY,GAAIF,aAAa,aAAbA,aAAa,gBAAAC,mBAAA,GAAbD,aAAa,CAAEzK,IAAI,cAAA0K,mBAAA,gBAAAA,mBAAA,GAApBA,mBAAA,CAA8BI,IAAI,cAAAJ,mBAAA,uBAAlCA,mBAAA,CAAoCK,MAAM,CAAC,UAACC,GAAU,EAAEC,GAAQ,EAAK;gBACxF,UAAAxF,MAAA,CAAAtD,kBAAA,CAAW6I,GAAG,GAAA7I,kBAAA,CAAM8I,GAAG,CAACC,eAAe,IAAI,EAAE;cAC/C,CAAC,EAAE,EAAE,CAAC;cAEN,IAAIP,YAAY,CAAC1G,MAAM,GAAG,CAAC,EAAE;gBAC3B2D,cAAc,CAAC+C,YAAY,EAAE,IAAI,CAAC;cACpC;YACF;YAACE,SAAA,CAAAjL,IAAA;YAAA;UAAA;YAED;YACArB,mBAAmB,CAAC1D,MAAM,CAAC,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAgQ,SAAA,CAAAtK,IAAA;QAAA;MAAA,GAAAiK,QAAA;IAAA,CAEjC;IAAA,gBA9BKH,uBAAuBA,CAAAc,GAAA;MAAA,OAAAZ,MAAA,CAAA/J,KAAA,OAAAC,SAAA;IAAA;EAAA,GA8B5B;;EAED;EACA,IAAM2K,gBAAgB;IAAA,IAAAC,MAAA,GAAAlM,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAiM,SAAA;MAAA,IAAAnO,OAAA,EAAAC,QAAA,EAAAmC,MAAA,EAAAgM,aAAA,EAAAC,aAAA,EAAAC,aAAA,EAAAC,aAAA,EAAAnC,UAAA,EAAAI,cAAA;MAAA,OAAAvK,mBAAA,GAAAI,IAAA,UAAAmM,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAjM,IAAA,GAAAiM,SAAA,CAAAhM,IAAA;UAAA;YAAA,KACnB9B,cAAc;cAAA8N,SAAA,CAAAhM,IAAA;cAAA;YAAA;YAAA,OAAAgM,SAAA,CAAArF,MAAA;UAAA;YAAAqF,SAAA,CAAAjM,IAAA;YAIhB5B,iBAAiB,CAAC,IAAI,CAAC;YACfZ,OAAO,GAAee,iBAAiB,CAAvCf,OAAO,EAAEC,QAAQ,GAAKc,iBAAiB,CAA9Bd,QAAQ;YAAAwO,SAAA,CAAAhM,IAAA;YAAA,OACJtE,gBAAgB,CAAC;cAClCe,GAAG,EAAHA,GAAG;cACHyC,KAAK,EAALA,KAAK;cACLC,EAAE,EAAFA,EAAE;cACFC,EAAE,EAAFA,EAAE;cACF1C,KAAK,EAALA,KAAK;cACLa,OAAO,EAAEA,OAAO,GAAG,CAAC;cACpBC,QAAQ,EAARA;YACF,CAAC,CAAC;UAAA;YAREmC,MAAM,GAAAqM,SAAA,CAAA9L,IAAA;YAUZ,IAAIP,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEQ,OAAO,EAAE;cACbwJ,UAAU,GAAG,CAAAhK,MAAM,aAANA,MAAM,gBAAAgM,aAAA,GAANhM,MAAM,CAAES,IAAI,cAAAuL,aAAA,uBAAZA,aAAA,CAAcvL,IAAI,KAAI,EAAE;cAC3C,IAAIuJ,UAAU,CAACtF,MAAM,GAAG,CAAC,EAAE;gBACnB0F,cAAc,GAAGJ,UAAU,CAAClD,GAAG,CAAC,UAACvD,IAAI,EAAK;kBAC9C,OAAO;oBACLU,GAAG,EAAEV,IAAI,CAACuE,SAAS;oBACnByC,KAAK,EAAEhH,IAAI,CAACiH,KAAK;oBACjBC,SAAS,EAAE,IAAI7G,IAAI,CAACL,IAAI,CAACmH,UAAU,CAAC,CAACC,OAAO,CAAC,CAAC;oBAC9CnN,QAAQ,EAAE,EAAE;oBACZoN,IAAI,EAAAtK,aAAA,KACCiD,IAAI;kBAEX,CAAC;gBACH,CAAC,CAAC;gBAEFnF,cAAc,CAAC,UAACkO,QAAQ;kBAAA,UAAApG,MAAA,CAAAtD,kBAAA,CAAS0J,QAAQ,GAAA1J,kBAAA,CAAKwH,cAAc;gBAAA,CAAC,CAAC;cAChE;cACA;cACAxL,oBAAoB,CAAC;gBAAEhB,OAAO,EAAEoC,MAAM,aAANA,MAAM,gBAAAiM,aAAA,GAANjM,MAAM,CAAES,IAAI,cAAAwL,aAAA,uBAAZA,aAAA,CAAcrO,OAAO;gBAAEC,QAAQ,EAAEmC,MAAM,aAANA,MAAM,gBAAAkM,aAAA,GAANlM,MAAM,CAAES,IAAI,cAAAyL,aAAA,uBAAZA,aAAA,CAAcrO,QAAQ;gBAAEF,KAAK,EAAEqC,MAAM,aAANA,MAAM,gBAAAmM,aAAA,GAANnM,MAAM,CAAES,IAAI,cAAA0L,aAAA,uBAAZA,aAAA,CAActB;cAAW,CAAC,CAAC;YAC7H;YAACwB,SAAA,CAAAhM,IAAA;YAAA;UAAA;YAAAgM,SAAA,CAAAjM,IAAA;YAAAiM,SAAA,CAAAvL,EAAA,GAAAuL,SAAA;UAAA;YAAAA,SAAA,CAAAjM,IAAA;YAID5B,iBAAiB,CAAC,KAAK,CAAC;YAAC,OAAA6N,SAAA,CAAAlG,MAAA;UAAA;UAAA;YAAA,OAAAkG,SAAA,CAAArL,IAAA;QAAA;MAAA,GAAA+K,QAAA;IAAA,CAE5B;IAAA,gBA1CKF,gBAAgBA,CAAA;MAAA,OAAAC,MAAA,CAAA7K,KAAA,OAAAC,SAAA;IAAA;EAAA,GA0CrB;;EAED;EACA/F,SAAS,CAAC,YAAM;IACd,IAAIgE,OAAO,EAAE;MACX;MACAyK,oBAAoB,CAAC,CAAC;IACxB;IACF;EACA,CAAC,EAAE,CAACzK,OAAO,CAAC,CAAC;EAEb,OAAO;IACLA,OAAO,EAAPA,OAAO;IACP3B,QAAQ,EAARA,QAAQ;IACR0E,OAAO,EAAPA,OAAO;IACPE,OAAO,EAAED,YAAY,CAACC,OAAO;IAC7BjE,WAAW,EAAXA,WAAW;IACXY,gBAAgB,EAAhBA,gBAAgB;IAChBJ,iBAAiB,EAAjBA,iBAAiB;IACjBkN,gBAAgB,EAAhBA,gBAAgB;IAChB5D,MAAM,EAANA,MAAM;IACNZ,IAAI,EAAJA,IAAI;IACJrI,mBAAmB,EAAnBA,mBAAmB;IACnB8L,uBAAuB,EAAvBA,uBAAuB;IACvB1E,UAAU,EAAVA,UAAU;IACV3I,WAAW,EAAXA,WAAW;IACX0K,QAAQ,EAARA,QAAQ;IACRM,YAAY,EAAZA;EACF,CAAC;AACH,CAAC;AAED,eAAe7L,iBAAiB"}
1
+ {"version":3,"names":["useState","useEffect","useRef","v4","uuidV4","useEventStreamRequest","MessageRole","MessageStatus","ErrorCode","SuccessCode","request","safeJsonParse","SESSION_PAGE_SIZE","fetchAppConfig","fetchSessionList","fetchSessionDetail","delSessionId","updateSessionTitle","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","_useState4","sessionList","setSessionList","_useState5","total","pageNum","pageSize","_useState6","sessionPagination","setSessionPagination","_useState7","_useState8","currentSessionId","setCurrentSessionId","_useState9","_useState10","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","_aiMsg","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","initAppConversations","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","_ref10","_callee5","fetchDetail","_result$data","resultData","_result$data2","_result$data3","_result$data4","formatSessions","_args5","_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","deleteSession","_ref12","_callee7","_callee7$","_context7","createNewChat","_x5","updateSession","_ref13","_callee8","_callee8$","_context8","_x6","_x7"],"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 { SESSION_PAGE_SIZE } from '@/constants';\nimport { fetchAppConfig, fetchSessionList, fetchSessionDetail, delSessionId, updateSessionTitle } from '@/services/api';\n// 图标\nimport documentIcon from '@/assets/document.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?: (content: string, 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: SESSION_PAGE_SIZE });\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?.content?.text ,aiMsg);\n // 重新获取历史对话列表\n initAppConversations(false);\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 // 停止对话\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 (fetchDetail: boolean = false) => {\n try {\n const result = await fetchSessionList({\n url,\n appNo,\n pt,\n tc,\n token,\n pageNum: sessionPagination.pageNum,\n pageSize: sessionPagination.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(formatSessions);\n // 设置分页信息\n setSessionPagination({ pageNum: result?.data?.pageNum, pageSize: result?.data?.pageSize, total: result?.data?.totalCount })\n const { sessionId } = resultData[0];\n fetchDetail && 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 });\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 deleteSession = async (sessionId: string) => {\n if (!sessionId) return;\n const result = await delSessionId({\n url,\n appNo,\n pt,\n tc,\n sessionId,\n token,\n });\n if (result?.success) {\n // 删除成功后,重新获取会话列表\n initAppConversations(false);\n // 如果删除的是当前会话,则创建新的会话\n if (sessionId === currentSessionId) {\n createNewChat();\n }\n }\n }\n\n // 更新会话名称\n const updateSession = async (sessionId: string, title: string) => {\n if (!sessionId && !title) return;\n const result = await updateSessionTitle({\n url,\n appNo,\n pt,\n tc,\n title,\n sessionId,\n token,\n });\n if (result?.success) {\n // 编辑成功后,重新获取会话列表\n initAppConversations(false);\n }\n }\n\n\n // 生成新对话\n const createNewChat = () => {\n stopChat(); // 停止聊天\n setMessages([]); // 清空所有消息\n initPrologue(); // 初始化开场白和预置问题\n setCurrentSessionId(uuidV4()); // 设置会话 id\n }\n\n // 初始化应用\n useEffect(() => {\n if (appInfo) {\n // 初始化历史数据\n initAppConversations(true);\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 initAppConversations,\n reChat,\n chat,\n createNewChat,\n setCurrentSessionId,\n setCurrentSessionDetail,\n updateSession,\n deleteSession,\n setMessage,\n setMessages,\n stopChat,\n initPrologue,\n };\n};\n\nexport default useAgentGenerator;\n"],"mappings":"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"}
@@ -105,3 +105,26 @@ export declare const fetchSessionDetail: ({ url, appNo, pt, tc, sessionId, pageS
105
105
  pageNum?: number | undefined;
106
106
  token: string;
107
107
  }) => Promise<ApiResponse<sessionData[]>>;
108
+ /**
109
+ * 删除会话
110
+ */
111
+ export declare const delSessionId: ({ url, appNo, pt, tc, sessionId, token }: {
112
+ url: string;
113
+ appNo: string;
114
+ pt: string;
115
+ tc: string;
116
+ sessionId: string;
117
+ token: string;
118
+ }) => Promise<ApiResponse<boolean>>;
119
+ /**
120
+ * 修改会话标题
121
+ */
122
+ export declare const updateSessionTitle: ({ url, appNo, pt, tc, sessionId, title, token }: {
123
+ url: string;
124
+ appNo: string;
125
+ pt: string;
126
+ tc: string;
127
+ sessionId: string;
128
+ title: string;
129
+ token: string;
130
+ }) => Promise<ApiResponse<boolean>>;
@@ -145,4 +145,77 @@ export var fetchSessionDetail = /*#__PURE__*/function () {
145
145
  return _ref8.apply(this, arguments);
146
146
  };
147
147
  }();
148
+
149
+ /**
150
+ * 删除会话
151
+ */
152
+ export var delSessionId = /*#__PURE__*/function () {
153
+ var _ref10 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(_ref9) {
154
+ var url, appNo, pt, tc, sessionId, token, response;
155
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
156
+ while (1) switch (_context5.prev = _context5.next) {
157
+ case 0:
158
+ url = _ref9.url, appNo = _ref9.appNo, pt = _ref9.pt, tc = _ref9.tc, sessionId = _ref9.sessionId, token = _ref9.token;
159
+ _context5.next = 3;
160
+ return request.post("".concat(url, "/appouter/").concat(appNo, "/delSessionId"), {
161
+ sessionId: sessionId
162
+ }, {
163
+ params: {
164
+ pt: pt,
165
+ tc: tc
166
+ },
167
+ headers: {
168
+ Authorization: "Bearer ".concat(token)
169
+ }
170
+ });
171
+ case 3:
172
+ response = _context5.sent;
173
+ return _context5.abrupt("return", response.data);
174
+ case 5:
175
+ case "end":
176
+ return _context5.stop();
177
+ }
178
+ }, _callee5);
179
+ }));
180
+ return function delSessionId(_x5) {
181
+ return _ref10.apply(this, arguments);
182
+ };
183
+ }();
184
+
185
+ /**
186
+ * 修改会话标题
187
+ */
188
+ export var updateSessionTitle = /*#__PURE__*/function () {
189
+ var _ref12 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(_ref11) {
190
+ var url, appNo, pt, tc, sessionId, title, token, response;
191
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
192
+ while (1) switch (_context6.prev = _context6.next) {
193
+ case 0:
194
+ url = _ref11.url, appNo = _ref11.appNo, pt = _ref11.pt, tc = _ref11.tc, sessionId = _ref11.sessionId, title = _ref11.title, token = _ref11.token;
195
+ _context6.next = 3;
196
+ return request.post("".concat(url, "/appouter/").concat(appNo, "/updateSessionTitle"), {
197
+ sessionId: sessionId,
198
+ title: title
199
+ }, {
200
+ params: {
201
+ pt: pt,
202
+ tc: tc
203
+ },
204
+ headers: {
205
+ Authorization: "Bearer ".concat(token)
206
+ }
207
+ });
208
+ case 3:
209
+ response = _context6.sent;
210
+ return _context6.abrupt("return", response.data);
211
+ case 5:
212
+ case "end":
213
+ return _context6.stop();
214
+ }
215
+ }, _callee6);
216
+ }));
217
+ return function updateSessionTitle(_x6) {
218
+ return _ref12.apply(this, arguments);
219
+ };
220
+ }();
148
221
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["request","fetchAppConfig","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref","url","appNo","pt","tc","response","wrap","_callee$","_context","prev","next","post","concat","params","sent","abrupt","data","stop","_x","apply","arguments","sendMessage","_ref4","_callee2","_ref3","msg","_callee2$","_context2","_x2","fetchSessionList","_ref6","_callee3","_ref5","_ref5$pageSize","pageSize","_ref5$pageNum","pageNum","token","_callee3$","_context3","headers","Authorization","_x3","fetchSessionDetail","_ref8","_callee4","_ref7","sessionId","_ref7$pageSize","_ref7$pageNum","_callee4$","_context4","_x4"],"sources":["../../../src/services/api.ts"],"sourcesContent":["import { request } from '@/utils/request';\n\n// 服务端API响应接口\nexport interface ServerApiResponse<T = unknown> {\n data: T;\n code: string;\n success: boolean;\n message: string;\n serverTime: number;\n traceId: string;\n}\n\n// 标准API响应类型\nexport interface ApiResponse<T> {\n success: boolean;\n data: T;\n message?: string;\n code: string;\n}\n\n// 聊天配置类型\nexport interface ChatConfig {\n botNo: string;\n appNo: string;\n appName: string;\n appTheme: string;\n description: string;\n icon: string;\n onboardingInfo: {\n prologue: string;\n // eslint-disable-next-line camelcase\n suggested_questions: string[];\n };\n appVersionNo: string;\n publishDTO: {\n id: number;\n tenantId: string;\n botNo: string;\n publishNo: string;\n publishTime: string;\n publishVersionNo: string;\n publishVersionDesc: string;\n publishAppType: string;\n platformConfigInfo: string;\n appNo: string;\n appVersionNo: string;\n gmtCreated: string;\n enableFlag: number;\n gmtModified: string;\n creator: string;\n modifier: string;\n isDeleted: string;\n authLoginInfoDTO: Record<string, unknown>;\n shareLink: string;\n };\n}\n\n// 会话记录\nexport interface sessionData {\n data: {\n sessionId: string;\n gmtCreated: string;\n userId: string;\n title: string;\n botNo: string;\n appNo: string;\n }[];\n pageNum: number;\n pageSize: number;\n totalCount: number;\n}\n\n/**\n * 获取聊天配置\n * 使用request,会自动添加token\n */\nexport const fetchAppConfig = async ({ url, appNo, pt, tc }: { url: string; appNo: string; pt: string; tc: string }): Promise<ApiResponse<ChatConfig>> => {\n const response = await request.post<ApiResponse<ChatConfig>>(`${url}/appouter/config/${appNo}/initApp`, {}, {\n params: {\n pt, tc,\n },\n });\n return response.data;\n};\n\n/**\n * 发送消息\n * 使用request,会自动添加token\n */\nexport const sendMessage = async ({ url, appNo, pt, tc, msg }: { url: string; appNo: string; pt: string; tc: string; msg: string }): Promise<ApiResponse<ChatConfig>> => {\n const response = await request.post<ApiResponse<ChatConfig>>(`${url}/appouter/${appNo}/sendMsg`, {\n pt, tc, msg,\n });\n return response.data;\n};\n\n/**\n * 获取会话列表\n */\nexport const fetchSessionList = async ({ url, appNo, pt, tc, pageSize = 10, pageNum = 1, token }:\n { url: string; appNo: string; pt: string; tc: string; pageSize?: number; pageNum?: number; token: string }) => {\n const response = await request.post<ApiResponse<sessionData>>(`${url}/appouter/${appNo}/sessionIds`, {}, {\n params: {\n pt,\n tc,\n pageSize,\n pageNum,\n },\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return response.data;\n};\n\n/**\n * 获取会话明细\n */\nexport const fetchSessionDetail = async ({ url, appNo, pt, tc, sessionId, pageSize = 999, pageNum = 1, token }:\n { url: string; appNo: string; pt: string; tc: string; sessionId: string; pageSize?: number; pageNum?: number; token: string }) => {\n const response = await request.post<ApiResponse<sessionData[]>>(`${url}/appouter/${appNo}/sessionDetails`, {}, {\n params: {\n pt,\n tc,\n sessionId,\n pageSize,\n pageNum,\n },\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return response.data;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["request","fetchAppConfig","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref","url","appNo","pt","tc","response","wrap","_callee$","_context","prev","next","post","concat","params","sent","abrupt","data","stop","_x","apply","arguments","sendMessage","_ref4","_callee2","_ref3","msg","_callee2$","_context2","_x2","fetchSessionList","_ref6","_callee3","_ref5","_ref5$pageSize","pageSize","_ref5$pageNum","pageNum","token","_callee3$","_context3","headers","Authorization","_x3","fetchSessionDetail","_ref8","_callee4","_ref7","sessionId","_ref7$pageSize","_ref7$pageNum","_callee4$","_context4","_x4","delSessionId","_ref10","_callee5","_ref9","_callee5$","_context5","_x5","updateSessionTitle","_ref12","_callee6","_ref11","title","_callee6$","_context6","_x6"],"sources":["../../../src/services/api.ts"],"sourcesContent":["import { request } from '@/utils/request';\n\n// 服务端API响应接口\nexport interface ServerApiResponse<T = unknown> {\n data: T;\n code: string;\n success: boolean;\n message: string;\n serverTime: number;\n traceId: string;\n}\n\n// 标准API响应类型\nexport interface ApiResponse<T> {\n success: boolean;\n data: T;\n message?: string;\n code: string;\n}\n\n// 聊天配置类型\nexport interface ChatConfig {\n botNo: string;\n appNo: string;\n appName: string;\n appTheme: string;\n description: string;\n icon: string;\n onboardingInfo: {\n prologue: string;\n // eslint-disable-next-line camelcase\n suggested_questions: string[];\n };\n appVersionNo: string;\n publishDTO: {\n id: number;\n tenantId: string;\n botNo: string;\n publishNo: string;\n publishTime: string;\n publishVersionNo: string;\n publishVersionDesc: string;\n publishAppType: string;\n platformConfigInfo: string;\n appNo: string;\n appVersionNo: string;\n gmtCreated: string;\n enableFlag: number;\n gmtModified: string;\n creator: string;\n modifier: string;\n isDeleted: string;\n authLoginInfoDTO: Record<string, unknown>;\n shareLink: string;\n };\n}\n\n// 会话记录\nexport interface sessionData {\n data: {\n sessionId: string;\n gmtCreated: string;\n userId: string;\n title: string;\n botNo: string;\n appNo: string;\n }[];\n pageNum: number;\n pageSize: number;\n totalCount: number;\n}\n\n/**\n * 获取聊天配置\n * 使用request,会自动添加token\n */\nexport const fetchAppConfig = async ({ url, appNo, pt, tc }: { url: string; appNo: string; pt: string; tc: string }): Promise<ApiResponse<ChatConfig>> => {\n const response = await request.post<ApiResponse<ChatConfig>>(`${url}/appouter/config/${appNo}/initApp`, {}, {\n params: {\n pt, tc,\n },\n });\n return response.data;\n};\n\n/**\n * 发送消息\n * 使用request,会自动添加token\n */\nexport const sendMessage = async ({ url, appNo, pt, tc, msg }: { url: string; appNo: string; pt: string; tc: string; msg: string }): Promise<ApiResponse<ChatConfig>> => {\n const response = await request.post<ApiResponse<ChatConfig>>(`${url}/appouter/${appNo}/sendMsg`, {\n pt, tc, msg,\n });\n return response.data;\n};\n\n/**\n * 获取会话列表\n */\nexport const fetchSessionList = async ({ url, appNo, pt, tc, pageSize = 10, pageNum = 1, token }:\n { url: string; appNo: string; pt: string; tc: string; pageSize?: number; pageNum?: number; token: string }) => {\n const response = await request.post<ApiResponse<sessionData>>(`${url}/appouter/${appNo}/sessionIds`, {}, {\n params: {\n pt,\n tc,\n pageSize,\n pageNum,\n },\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return response.data;\n};\n\n/**\n * 获取会话明细\n */\nexport const fetchSessionDetail = async ({ url, appNo, pt, tc, sessionId, pageSize = 999, pageNum = 1, token }:\n { url: string; appNo: string; pt: string; tc: string; sessionId: string; pageSize?: number; pageNum?: number; token: string }) => {\n const response = await request.post<ApiResponse<sessionData[]>>(`${url}/appouter/${appNo}/sessionDetails`, {}, {\n params: {\n pt,\n tc,\n sessionId,\n pageSize,\n pageNum,\n },\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return response.data;\n};\n\n\n/**\n * 删除会话\n */\nexport const delSessionId = async ({ url, appNo, pt, tc, sessionId, token }:\n { url: string; appNo: string; pt: string; tc: string; sessionId: string; token: string }) => {\n const response = await request.post<ApiResponse<boolean>>(`${url}/appouter/${appNo}/delSessionId`, {\n sessionId,\n }, {\n params: {\n pt,\n tc,\n },\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return response.data;\n}\n\n/**\n * 修改会话标题\n */\nexport const updateSessionTitle = async ({ url, appNo, pt, tc, sessionId, title, token }:\n { url: string; appNo: string; pt: string; tc: string; sessionId: string; title: string; token: string }) => {\n const response = await request.post<ApiResponse<boolean>>(`${url}/appouter/${appNo}/updateSessionTitle`, {\n sessionId,\n title,\n }, {\n params: {\n pt,\n tc,\n },\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n return response.data;\n}"],"mappings":"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"}
@@ -140,6 +140,8 @@ export interface XAiChatbotProps extends ChatbotMessageFields {
140
140
  userAvatar?: ReactNode;
141
141
  /** 发送按钮 */
142
142
  sendBtn?: ReactNode;
143
+ /** 是否展示清空按钮 */
144
+ clearBtnShow?: boolean;
143
145
  /** 工具栏点击回调 */
144
146
  onToolbarClick?: (item: ToolbarItemProps, event: MouseEvent) => void;
145
147
  /** 工具栏打开/关闭回调 */
@@ -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 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
+ {"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 clearBtnShow? : boolean;\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":""}
@@ -12,5 +12,7 @@ export interface XAiConversationsProps extends OmitItems {
12
12
  sessionTotal?: number;
13
13
  /** 加载更多函数 */
14
14
  loadMoreSession?: () => void;
15
+ /** 点击生成新对话回调 */
16
+ onNewChat?: () => void;
15
17
  }
16
18
  export {};
@@ -1 +1 @@
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":""}
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 onNewChat?: () => void;\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"names":["MessageRole","MessageStatus","ActionAvailability"],"sources":["../../../src/types/XAiMessage.ts"],"sourcesContent":["import type { PromptsProps } from '@ant-design/x';\n\nexport type MessageType =\n| 'TextMessage'\n| 'ActionExecutionMessage'\n| 'ResultMessage'\n| 'AgentStateMessage'\n| 'ImageMessage'\n| 'SuggestionMessage';\n\nexport enum MessageRole {\n user = 'user', // 用户\n assistant = 'assistant', // AI助手\n suggestion = 'suggestion', // 建议\n system = 'system', // 工具\n}\n\nexport enum MessageStatus {\n init = 'init',\n pending = 'pending', // 生成中/接收中\n done = 'done', // 已完成\n failed = 'failed', // 失败\n recalled = 'recalled', // 已撤回\n deleted = 'deleted', // 已删除\n}\n\n/**\n* 所有消息的基础结构\n*/\nexport interface BaseMessage {\n id: string; // 消息唯一ID\n type: MessageType; // 消息类型\n createdAt: Date; // 创建时间\n status?: MessageStatus; // 内容是否生成中\n thinks?: ActionExecutionMessage[]; // 思考过程\n extra?: any; // 额外消息\n}\n\n/**\n* 文本消息\n*/\nexport interface TextMessage extends BaseMessage {\n type: 'TextMessage';\n role: MessageRole; // 发送者角色\n content: {\n text: string; // 文本内容\n };\n parentMessageId?: string; // 父消息ID(可选)\n}\n\n/**\n* 工具/动作执行消息\n*/\nexport interface ActionExecutionMessage extends BaseMessage {\n type: 'ActionExecutionMessage';\n name: string; // 动作/工具名称\n arguments?: Record<string, any>; // 执行参数\n parentMessageId?: string;\n extra?: any; // 额外信息\n}\n\n/**\n* 工具/动作执行结果消息\n*/\nexport interface ResultMessage extends BaseMessage {\n type: 'ResultMessage';\n actionExecutionId: string; // 执行ID\n actionName: string; // 动作/工具名称\n result: string; // 执行结果\n}\n\n/**\n* 智能体状态消息\n*/\nexport interface AgentStateMessage extends BaseMessage {\n type: 'AgentStateMessage';\n threadId: string; // 线程ID\n agentName: string; // agent名称\n nodeName: string; // 节点名称\n runId: string; // 运行ID\n active: boolean; // 是否激活\n role: MessageRole; // 角色\n state: any; // 状态内容\n running: boolean; // 是否运行中\n}\n\n/**\n* 图片消息\n*/\nexport interface ImageMessage extends BaseMessage {\n type: 'ImageMessage';\n content: {\n format: string; // 图片格式\n bytes: string; // base64内容\n thinks?: ActionExecutionMessage[]; // 思考过程\n };\n role: MessageRole;\n parentMessageId?: string;\n}\n\n/**\n * 提示消息\n */\nexport interface SuggestionMessage extends BaseMessage {\n type: 'SuggestionMessage';\n content: PromptsProps['items'];\n role: MessageRole;\n}\n\n/**\n* 消息输入类型(用于前端输入/组装)\n* 可选地包含不同类型的消息体\n*/\nexport interface MessageInput extends BaseMessage {\n textMessage?: Omit<TextMessage, 'id' | 'createdAt' | 'type'>;\n actionExecutionMessage?: Omit<ActionExecutionMessage, 'id' | 'createdAt' | 'type'>;\n resultMessage?: Omit<ResultMessage, 'id' | 'createdAt' | 'type'>;\n agentStateMessage?: Omit<AgentStateMessage, 'id' | 'createdAt' | 'type'>;\n imageMessage?: Omit<ImageMessage, 'id' | 'createdAt' | 'type'>;\n}\n\n/**\n* 消息列表中消息格式\n*/\nexport type Messages = TextMessage | ImageMessage | SuggestionMessage;\n\nexport enum ActionAvailability {\n disabled = 'disabled', // 不可用\n enabled = 'enabled', // 可用\n remote = 'remote', // 远程可用\n}\n\n/**\n* 工具/动作定义\n*/\nexport interface Action {\n name: string; // 名称\n description: string; // 描述\n jsonSchema: string; // 参数JSON Schema\n available?: ActionAvailability; // 可用性\n}\n"],"mappings":"AAUA,WAAYA,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA,OAIG;AAG1B,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA,OAMF;;AAGvB;AACA;AACA;;AAUA;AACA;AACA;;AAUA;AACA;AACA;;AASA;AACA;AACA;;AAQA;AACA;AACA;;AAaA;AACA;AACA;;AAYA;AACA;AACA;;AAOA;AACA;AACA;AACA;;AASA;AACA;AACA;;AAGA,WAAYC,kBAAkB,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA,OAGL;;AAGzB;AACA;AACA"}
1
+ {"version":3,"names":["MessageRole","MessageStatus","ActionAvailability"],"sources":["../../../src/types/XAiMessage.ts"],"sourcesContent":["import type { PromptsProps } from '@ant-design/x';\n\nexport type MessageType =\n| 'TextMessage'\n| 'ActionExecutionMessage'\n| 'ResultMessage'\n| 'AgentStateMessage'\n| 'ImageMessage'\n| 'SuggestionMessage';\n\nexport enum MessageRole {\n user = 'user', // 用户\n assistant = 'assistant', // AI助手\n suggestion = 'suggestion', // 建议\n system = 'system', // 工具\n}\n\nexport enum MessageStatus {\n init = 'init',\n pending = 'pending', // 生成中/接收中\n done = 'done', // 已完成\n failed = 'failed', // 失败\n recalled = 'recalled', // 已撤回\n deleted = 'deleted', // 已删除\n}\n\n/**\n* 所有消息的基础结构\n*/\nexport interface BaseMessage {\n id: string; // 消息唯一ID\n type: MessageType; // 消息类型\n createdAt: Date; // 创建时间\n status?: MessageStatus; // 内容是否生成中\n thinks?: ActionExecutionMessage[]; // 思考过程\n extra?: any; // 额外消息\n}\n\n/**\n* 文本消息\n*/\nexport interface TextMessage extends BaseMessage {\n type: 'TextMessage';\n role: MessageRole; // 发送者角色\n content: {\n text: string; // 文本内容\n };\n parentMessageId?: string; // 父消息ID(可选)\n}\n\n\n/**\n* 工具/动作执行消息\n*/\nexport interface ActionExecutionMessage extends BaseMessage {\n type: 'ActionExecutionMessage';\n name: string; // 动作/工具名称\n arguments?: Record<string, any>; // 执行参数\n parentMessageId?: string;\n extra?: any; // 额外信息\n}\n\n/**\n* 工具/动作执行结果消息\n*/\nexport interface ResultMessage extends BaseMessage {\n type: 'ResultMessage';\n actionExecutionId: string; // 执行ID\n actionName: string; // 动作/工具名称\n result: string; // 执行结果\n}\n\n/**\n* 智能体状态消息\n*/\nexport interface AgentStateMessage extends BaseMessage {\n type: 'AgentStateMessage';\n threadId: string; // 线程ID\n agentName: string; // agent名称\n nodeName: string; // 节点名称\n runId: string; // 运行ID\n active: boolean; // 是否激活\n role: MessageRole; // 角色\n state: any; // 状态内容\n running: boolean; // 是否运行中\n}\n\n/**\n* 图片消息\n*/\nexport interface ImageMessage extends BaseMessage {\n type: 'ImageMessage';\n content: {\n format: string; // 图片格式\n bytes: string; // base64内容\n thinks?: ActionExecutionMessage[]; // 思考过程\n };\n role: MessageRole;\n parentMessageId?: string;\n}\n\n/**\n * 提示消息\n */\nexport interface SuggestionMessage extends BaseMessage {\n type: 'SuggestionMessage';\n content: PromptsProps['items'];\n role: MessageRole;\n}\n\n/**\n* 消息输入类型(用于前端输入/组装)\n* 可选地包含不同类型的消息体\n*/\nexport interface MessageInput extends BaseMessage {\n textMessage?: Omit<TextMessage, 'id' | 'createdAt' | 'type'>;\n actionExecutionMessage?: Omit<ActionExecutionMessage, 'id' | 'createdAt' | 'type'>;\n resultMessage?: Omit<ResultMessage, 'id' | 'createdAt' | 'type'>;\n agentStateMessage?: Omit<AgentStateMessage, 'id' | 'createdAt' | 'type'>;\n imageMessage?: Omit<ImageMessage, 'id' | 'createdAt' | 'type'>;\n}\n\n/**\n* 消息列表中消息格式\n*/\nexport type Messages = TextMessage | ImageMessage | SuggestionMessage;\n\nexport enum ActionAvailability {\n disabled = 'disabled', // 不可用\n enabled = 'enabled', // 可用\n remote = 'remote', // 远程可用\n}\n\n/**\n* 工具/动作定义\n*/\nexport interface Action {\n name: string; // 名称\n description: string; // 描述\n jsonSchema: string; // 参数JSON Schema\n available?: ActionAvailability; // 可用性\n}\n"],"mappings":"AAUA,WAAYA,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA,OAIG;AAG1B,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA,OAMF;;AAGvB;AACA;AACA;;AAUA;AACA;AACA;;AAWA;AACA;AACA;;AASA;AACA;AACA;;AAQA;AACA;AACA;;AAaA;AACA;AACA;;AAYA;AACA;AACA;;AAOA;AACA;AACA;AACA;;AASA;AACA;AACA;;AAGA,WAAYC,kBAAkB,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA,OAGL;;AAGzB;AACA;AACA"}
@@ -1,7 +1,7 @@
1
1
  import React, { ReactNode } from 'react';
2
2
  import { AiClient } from 'src/client/base';
3
3
  import type { ChatbotMessageFields } from './XAiChatbot';
4
- import { Messages } from "./XAiMessage";
4
+ import { Messages, sessionData } from "./";
5
5
  /**
6
6
  * 主题类型
7
7
  * @type {'default'}
@@ -125,6 +125,11 @@ export interface XAiProviderHandle {
125
125
  * @version 1.0.0
126
126
  */
127
127
  getMessages: () => Messages[];
128
+ /**
129
+ * 获取会话列表
130
+ * @returns {}
131
+ */
132
+ getSessions: () => sessionData[];
128
133
  /**
129
134
  * 重新设置当前会话
130
135
  * @param id - 会话ID
@@ -141,6 +146,14 @@ export interface sessionConfig {
141
146
  */
142
147
  showSessionList?: boolean;
143
148
  }
149
+ export interface ChatConfig {
150
+ /**
151
+ * 是否展示清空按钮
152
+ * @type {boolean}
153
+ * @default false
154
+ */
155
+ clearBtnShow?: boolean;
156
+ }
144
157
  /**
145
158
  * XAiProvider 配置接口
146
159
  * @interface XAiProviderConfig
@@ -173,6 +186,11 @@ export interface XAiProviderConfig {
173
186
  * @type {sessionConfig}
174
187
  */
175
188
  session?: sessionConfig;
189
+ /**
190
+ * 对话框配置
191
+ * @type {ChatConfig}
192
+ */
193
+ chatProps?: ChatConfig;
176
194
  /**
177
195
  * 是否启用调试模式
178
196
  * @type {boolean}
@@ -1 +1 @@
1
- {"version":3,"names":["React","ErrorCodeNum","ErrorCode","ErrorCodeMap","client_50017","code","APP_NOT_ENABLE","message","client_50054","API_ERROR","SuccessCode","XAiContext","createContext"],"sources":["../../../src/types/XAiProvider.ts"],"sourcesContent":["// context/ProviderContext.ts\nimport React, { ReactNode } from 'react';\nimport { AiClient } from 'src/client/base';\nimport type { ChatbotMessageFields } from './XAiChatbot';\nimport { Messages } from '@/types/XAiMessage';\nimport XAiProvider from '@/components/XAiProvider';\n\n/**\n * 主题类型\n * @type {'default'}\n * @version 1.0.0\n */\nexport type ThemeType = 'default';\n\n/**\n * 错误码枚举(数字格式)\n * @enum {string}\n * @version 1.0.0\n */\nexport enum ErrorCodeNum {\n /** 应用下架 */\n APP_NOT_ENABLE = 'client_50017',\n /** 应用删除 */\n APP_DELETED = 'client_50017',\n /** 无该应用 */\n APP_NOT_FOUND = 'client_59999',\n /** 接口报错 */\n API_ERROR = 'client_50054',\n}\n\n/**\n * 错误码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum ErrorCode {\n /** 应用未启用 */\n APP_NOT_ENABLE = 'APP_NOT_ENABLE',\n /** 应用已删除 */\n APP_DELETED = 'APP_DELETED',\n /** 应用未找到 */\n APP_NOT_FOUND = 'APP_NOT_FOUND',\n /** API 错误 */\n API_ERROR = 'API_ERROR',\n}\n\n/**\n * 错误码映射表\n * @type {Record<string, {code: ErrorCode, message: string}>}\n * @version 1.0.0\n */\nexport const ErrorCodeMap = {\n client_50017: {\n code: ErrorCode.APP_NOT_ENABLE,\n message: '该应用已删除或已下架',\n },\n client_50054: {\n code: ErrorCode.API_ERROR,\n message: '应用服务端出错',\n },\n};\n\n/**\n * 成功状态码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum SuccessCode {\n /** 应用配置初始化成功 */\n APP_CONFIG_INIT_SUCCESS = 'APP_CONFIG_INIT_SUCCESS',\n /** 应用消息初始化成功 */\n APP_MESSAGES_INIT_SUCCESS = 'APP_MESSAGES_INIT_SUCCESS',\n}\n\n/**\n * 错误信息接口\n * @interface Error\n * @version 1.0.0\n */\nexport interface Error {\n /** 错误码 */\n code: ErrorCode;\n /** 错误信息 */\n message: string;\n}\n\n/**\n * 成功信息接口\n * @interface Success\n * @version 1.0.0\n */\nexport interface Success {\n /** 成功状态码 */\n code: SuccessCode;\n /** 成功信息 */\n message: string;\n}\n\n/**\n * XAiProvider 操作句柄接口\n * @interface XAiProviderHandle\n * @version 1.0.0\n */\nexport interface XAiProviderHandle {\n /**\n * 发送聊天消息\n * @param content - 消息内容\n * @type {(content: string) => void}\n * @version 1.0.0\n */\n chat: (content: string) => void;\n \n /**\n * 停止聊天\n * @type {() => void}\n * @version 1.0.0\n */\n stopChat: () => void;\n \n /**\n * 重新发送聊天\n * @type {() => void}\n * @version 1.0.0\n */\n reChat: () => void;\n \n /**\n * 获取应用信息\n * @returns {any} 应用信息对象\n * @type {() => any}\n * @version 1.0.0\n */\n getAppInfo: () => any;\n \n /**\n * 获取消息列表\n * @returns {Messages[]} 消息数组\n * @type {() => Messages[]}\n * @version 1.0.0\n */\n getMessages: () => Messages[];\n \n /**\n * 重新设置当前会话\n * @param id - 会话ID\n * @type {(id: string) => void}\n * @version 1.0.0\n */\n setCurrentSessionDetail: (id: string) => void;\n}\n\nexport interface sessionConfig {\n /**\n * 是否展示会话列表\n * @type {boolean}\n * @default false\n */\n showSessionList?: boolean;\n}\n\n/**\n * XAiProvider 配置接口\n * @interface XAiProviderConfig\n * @version 1.0.0\n */\nexport interface XAiProviderConfig {\n /**\n * 应用唯一编号\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n appNo?: string;\n \n /**\n * 授权方式\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n pt?: string;\n \n /**\n * 租户key\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n tc?: string;\n\n /**\n * 会话配置\n * @type {sessionConfig}\n */\n session?: sessionConfig;\n \n /**\n * 是否启用调试模式\n * @type {boolean}\n * @default false\n * @version 1.0.0\n */\n debug?: boolean;\n}\n\n/**\n * XAiProvider 组件属性接口\n * @interface XAiProviderProps\n * @version 1.0.0\n */\nexport interface XAiProviderProps {\n /**\n * AI 服务地址\n * @type {string}\n * @version 1.0.0\n */\n url: string;\n \n /**\n * 认证 token\n * @type {string}\n * @version 1.0.0\n */\n token: string;\n \n /**\n * 配置信息\n * @type {XAiProviderConfig}\n * @default undefined\n * @version 1.0.0\n */\n config?: XAiProviderConfig;\n \n /**\n * Provider 唯一标识,用于区分多个 Provider 实例\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n providerId?: string;\n \n /**\n * Token 刷新回调\n * @type {() => Promise<string>}\n * @default undefined\n * @version 1.0.0\n */\n onRefreshToken?: () => Promise<string>;\n \n /**\n * 应用无法正常渲染回调\n * @type {(error: Error) => void}\n * @default undefined\n * @version 1.0.0\n */\n onError?: (error: Error) => void;\n \n /**\n * 应用正常渲染回调\n * @type {(success: Success) => void}\n * @default undefined\n * @version 1.0.0\n */\n onSuccess?: (success: Success) => void;\n \n /**\n * 消息返回回调\n * @type {(data: Messages) => void}\n * @default undefined\n * @version 1.0.0\n */\n onMessage?: (content: string, data: Messages) => void;\n \n /**\n * 子组件\n * @type {ReactNode}\n * @version 1.0.0\n */\n children: ReactNode;\n}\n\n/**\n * XAiSDK 组件属性接口\n * @interface XAiSDKProps\n * @extends XAiProviderProps\n * @version 1.0.0\n */\nexport interface XAiSDKProps extends XAiProviderProps {\n /**\n * 主题类型\n * @type {ThemeType}\n * @default 'default'\n * @version 1.0.0\n */\n theme?: ThemeType;\n \n /**\n * 组件属性配置\n * @type {object}\n * @default undefined\n * @version 1.0.0\n */\n componentProps?: {\n /**\n * 组件ID\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n id?: string;\n /** 支持任意 CSS 属性 */\n [key: string]: any;\n };\n}\n\n/**\n * XAi 上下文类型接口\n * @interface XAiContextType\n * @extends Required<ChatbotMessageFields>\n * @version 1.0.0\n */\nexport interface XAiContextType extends Required<ChatbotMessageFields> {\n /**\n * AI 客户端实例\n * @type {AiClient | null}\n * @default null\n * @version 1.0.0\n */\n client: AiClient | null;\n \n /**\n * 认证令牌\n * @type {string}\n * @version 1.0.0\n */\n token: string;\n \n /**\n * 加载状态\n * @type {boolean}\n * @default false\n * @version 1.0.0\n */\n loading: boolean;\n \n /**\n * 错误信息\n * @type {string | null}\n * @default null\n * @version 1.0.0\n */\n error: string | null;\n}\n\n/**\n * XAi 上下文对象\n * @type {React.Context<XAiContextType | null>}\n * @version 1.0.0\n */\nexport const XAiContext = React.createContext<XAiContextType | null>(null);\n"],"mappings":"AAAA;AACA,OAAOA,KAAK,MAAqB,OAAO;;AAMxC;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA,WAAYC,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;;AAWxB;AACA;AACA;AACA;AACA;AACA,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;;AAWrB;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,YAAY,GAAG;EAC1BC,YAAY,EAAE;IACZC,IAAI,EAAEH,SAAS,CAACI,cAAc;IAC9BC,OAAO,EAAE;EACX,CAAC;EACDC,YAAY,EAAE;IACZH,IAAI,EAAEH,SAAS,CAACO,SAAS;IACzBF,OAAO,EAAE;EACX;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,WAAYG,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;;AAOvB;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;;AA0DA;AACA;AACA;AACA;AACA;;AAyCA;AACA;AACA;AACA;AACA;;AAwEA;AACA;AACA;AACA;AACA;AACA;;AA6BA;AACA;AACA;AACA;AACA;AACA;;AAkCA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,UAAU,gBAAGX,KAAK,CAACY,aAAa,CAAwB,IAAI,CAAC"}
1
+ {"version":3,"names":["React","ErrorCodeNum","ErrorCode","ErrorCodeMap","client_50017","code","APP_NOT_ENABLE","message","client_50054","API_ERROR","SuccessCode","XAiContext","createContext"],"sources":["../../../src/types/XAiProvider.ts"],"sourcesContent":["// context/ProviderContext.ts\nimport React, { ReactNode } from 'react';\nimport { AiClient } from 'src/client/base';\nimport type { ChatbotMessageFields } from './XAiChatbot';\nimport { Messages, sessionData } from '@/types';\n\n/**\n * 主题类型\n * @type {'default'}\n * @version 1.0.0\n */\nexport type ThemeType = 'default';\n\n/**\n * 错误码枚举(数字格式)\n * @enum {string}\n * @version 1.0.0\n */\nexport enum ErrorCodeNum {\n /** 应用下架 */\n APP_NOT_ENABLE = 'client_50017',\n /** 应用删除 */\n APP_DELETED = 'client_50017',\n /** 无该应用 */\n APP_NOT_FOUND = 'client_59999',\n /** 接口报错 */\n API_ERROR = 'client_50054',\n}\n\n/**\n * 错误码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum ErrorCode {\n /** 应用未启用 */\n APP_NOT_ENABLE = 'APP_NOT_ENABLE',\n /** 应用已删除 */\n APP_DELETED = 'APP_DELETED',\n /** 应用未找到 */\n APP_NOT_FOUND = 'APP_NOT_FOUND',\n /** API 错误 */\n API_ERROR = 'API_ERROR',\n}\n\n/**\n * 错误码映射表\n * @type {Record<string, {code: ErrorCode, message: string}>}\n * @version 1.0.0\n */\nexport const ErrorCodeMap = {\n client_50017: {\n code: ErrorCode.APP_NOT_ENABLE,\n message: '该应用已删除或已下架',\n },\n client_50054: {\n code: ErrorCode.API_ERROR,\n message: '应用服务端出错',\n },\n};\n\n/**\n * 成功状态码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum SuccessCode {\n /** 应用配置初始化成功 */\n APP_CONFIG_INIT_SUCCESS = 'APP_CONFIG_INIT_SUCCESS',\n /** 应用消息初始化成功 */\n APP_MESSAGES_INIT_SUCCESS = 'APP_MESSAGES_INIT_SUCCESS',\n}\n\n/**\n * 错误信息接口\n * @interface Error\n * @version 1.0.0\n */\nexport interface Error {\n /** 错误码 */\n code: ErrorCode;\n /** 错误信息 */\n message: string;\n}\n\n/**\n * 成功信息接口\n * @interface Success\n * @version 1.0.0\n */\nexport interface Success {\n /** 成功状态码 */\n code: SuccessCode;\n /** 成功信息 */\n message: string;\n}\n\n/**\n * XAiProvider 操作句柄接口\n * @interface XAiProviderHandle\n * @version 1.0.0\n */\nexport interface XAiProviderHandle {\n /**\n * 发送聊天消息\n * @param content - 消息内容\n * @type {(content: string) => void}\n * @version 1.0.0\n */\n chat: (content: string) => void;\n \n /**\n * 停止聊天\n * @type {() => void}\n * @version 1.0.0\n */\n stopChat: () => void;\n \n /**\n * 重新发送聊天\n * @type {() => void}\n * @version 1.0.0\n */\n reChat: () => void;\n \n /**\n * 获取应用信息\n * @returns {any} 应用信息对象\n * @type {() => any}\n * @version 1.0.0\n */\n getAppInfo: () => any;\n \n /**\n * 获取消息列表\n * @returns {Messages[]} 消息数组\n * @type {() => Messages[]}\n * @version 1.0.0\n */\n getMessages: () => Messages[];\n\n /**\n * 获取会话列表\n * @returns {}\n */\n getSessions: () => sessionData[];\n \n /**\n * 重新设置当前会话\n * @param id - 会话ID\n * @type {(id: string) => void}\n * @version 1.0.0\n */\n setCurrentSessionDetail: (id: string) => void;\n}\n\nexport interface sessionConfig {\n /**\n * 是否展示会话列表\n * @type {boolean}\n * @default false\n */\n showSessionList?: boolean;\n}\n\nexport interface ChatConfig {\n /**\n * 是否展示清空按钮\n * @type {boolean}\n * @default false\n */\n clearBtnShow?: boolean;\n}\n\n/**\n * XAiProvider 配置接口\n * @interface XAiProviderConfig\n * @version 1.0.0\n */\nexport interface XAiProviderConfig {\n /**\n * 应用唯一编号\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n appNo?: string;\n \n /**\n * 授权方式\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n pt?: string;\n \n /**\n * 租户key\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n tc?: string;\n\n /**\n * 会话配置\n * @type {sessionConfig}\n */\n session?: sessionConfig;\n\n /**\n * 对话框配置\n * @type {ChatConfig}\n */\n chatProps?: ChatConfig;\n\n \n /**\n * 是否启用调试模式\n * @type {boolean}\n * @default false\n * @version 1.0.0\n */\n debug?: boolean;\n}\n\n/**\n * XAiProvider 组件属性接口\n * @interface XAiProviderProps\n * @version 1.0.0\n */\nexport interface XAiProviderProps {\n /**\n * AI 服务地址\n * @type {string}\n * @version 1.0.0\n */\n url: string;\n \n /**\n * 认证 token\n * @type {string}\n * @version 1.0.0\n */\n token: string;\n \n /**\n * 配置信息\n * @type {XAiProviderConfig}\n * @default undefined\n * @version 1.0.0\n */\n config?: XAiProviderConfig;\n \n /**\n * Provider 唯一标识,用于区分多个 Provider 实例\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n providerId?: string;\n \n /**\n * Token 刷新回调\n * @type {() => Promise<string>}\n * @default undefined\n * @version 1.0.0\n */\n onRefreshToken?: () => Promise<string>;\n \n /**\n * 应用无法正常渲染回调\n * @type {(error: Error) => void}\n * @default undefined\n * @version 1.0.0\n */\n onError?: (error: Error) => void;\n \n /**\n * 应用正常渲染回调\n * @type {(success: Success) => void}\n * @default undefined\n * @version 1.0.0\n */\n onSuccess?: (success: Success) => void;\n \n /**\n * 消息返回回调\n * @type {(data: Messages) => void}\n * @default undefined\n * @version 1.0.0\n */\n onMessage?: (content: string, data: Messages) => void;\n \n /**\n * 子组件\n * @type {ReactNode}\n * @version 1.0.0\n */\n children: ReactNode;\n}\n\n/**\n * XAiSDK 组件属性接口\n * @interface XAiSDKProps\n * @extends XAiProviderProps\n * @version 1.0.0\n */\nexport interface XAiSDKProps extends XAiProviderProps {\n /**\n * 主题类型\n * @type {ThemeType}\n * @default 'default'\n * @version 1.0.0\n */\n theme?: ThemeType;\n \n /**\n * 组件属性配置\n * @type {object}\n * @default undefined\n * @version 1.0.0\n */\n componentProps?: {\n /**\n * 组件ID\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n id?: string;\n /** 支持任意 CSS 属性 */\n [key: string]: any;\n };\n}\n\n/**\n * XAi 上下文类型接口\n * @interface XAiContextType\n * @extends Required<ChatbotMessageFields>\n * @version 1.0.0\n */\nexport interface XAiContextType extends Required<ChatbotMessageFields> {\n /**\n * AI 客户端实例\n * @type {AiClient | null}\n * @default null\n * @version 1.0.0\n */\n client: AiClient | null;\n \n /**\n * 认证令牌\n * @type {string}\n * @version 1.0.0\n */\n token: string;\n \n /**\n * 加载状态\n * @type {boolean}\n * @default false\n * @version 1.0.0\n */\n loading: boolean;\n \n /**\n * 错误信息\n * @type {string | null}\n * @default null\n * @version 1.0.0\n */\n error: string | null;\n}\n\n/**\n * XAi 上下文对象\n * @type {React.Context<XAiContextType | null>}\n * @version 1.0.0\n */\nexport const XAiContext = React.createContext<XAiContextType | null>(null);\n"],"mappings":"AAAA;AACA,OAAOA,KAAK,MAAqB,OAAO;;AAKxC;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA,WAAYC,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;;AAWxB;AACA;AACA;AACA;AACA;AACA,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;;AAWrB;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,YAAY,GAAG;EAC1BC,YAAY,EAAE;IACZC,IAAI,EAAEH,SAAS,CAACI,cAAc;IAC9BC,OAAO,EAAE;EACX,CAAC;EACDC,YAAY,EAAE;IACZH,IAAI,EAAEH,SAAS,CAACO,SAAS;IACzBF,OAAO,EAAE;EACX;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,WAAYG,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;;AAOvB;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;;AAyEA;AACA;AACA;AACA;AACA;;AAgDA;AACA;AACA;AACA;AACA;;AAwEA;AACA;AACA;AACA;AACA;AACA;;AA6BA;AACA;AACA;AACA;AACA;AACA;;AAkCA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,UAAU,gBAAGX,KAAK,CAACY,aAAa,CAAwB,IAAI,CAAC"}