@ai-group/chat-sdk 0.2.7 → 0.2.9

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 (85) hide show
  1. package/README.md +93 -214
  2. package/dist/cjs/components/XAiChatbot/index.js +4 -3
  3. package/dist/cjs/components/XAiChatbot/index.js.map +2 -2
  4. package/dist/cjs/components/XAiChatbot/styles.d.ts +2 -0
  5. package/dist/cjs/components/XAiChatbot/styles.js +31 -1
  6. package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
  7. package/dist/cjs/components/XAiConversations/XAiConversations.stories.d.ts +6 -0
  8. package/dist/cjs/components/XAiConversations/XAiConversations.stories.js +82 -0
  9. package/dist/cjs/components/XAiConversations/XAiConversations.stories.js.map +7 -0
  10. package/dist/cjs/components/XAiConversations/index.d.ts +4 -0
  11. package/dist/cjs/components/XAiConversations/index.js +59 -0
  12. package/dist/cjs/components/XAiConversations/index.js.map +7 -0
  13. package/dist/cjs/components/XAiProvider/XAiProvider.stories.d.ts +2 -2
  14. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +12 -12
  15. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +2 -2
  16. package/dist/cjs/components/XAiProvider/demo.styles.d.ts +35 -0
  17. package/dist/cjs/components/XAiProvider/demo.styles.js +37 -0
  18. package/dist/cjs/components/XAiProvider/demo.styles.js.map +7 -0
  19. package/dist/cjs/components/XAiProvider/index.js +8 -3
  20. package/dist/cjs/components/XAiProvider/index.js.map +3 -3
  21. package/dist/cjs/components/XAiWebSDKWrapper.js +7 -1
  22. package/dist/cjs/components/XAiWebSDKWrapper.js.map +2 -2
  23. package/dist/cjs/hooks/useAgentGenerator.d.ts +10 -2
  24. package/dist/cjs/hooks/useAgentGenerator.js +132 -7
  25. package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
  26. package/dist/cjs/services/api.d.ts +65 -3
  27. package/dist/cjs/services/api.js +33 -0
  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 +4 -0
  32. package/dist/cjs/types/XAiConversations.js +18 -0
  33. package/dist/cjs/types/XAiConversations.js.map +7 -0
  34. package/dist/cjs/types/XAiProvider.d.ts +14 -0
  35. package/dist/cjs/types/XAiProvider.js +9 -0
  36. package/dist/cjs/types/XAiProvider.js.map +3 -3
  37. package/dist/cjs/types/index.d.ts +1 -0
  38. package/dist/cjs/types/index.js +3 -1
  39. package/dist/cjs/types/index.js.map +2 -2
  40. package/dist/cjs/utils/umdEntry.d.ts +4 -1
  41. package/dist/cjs/utils/umdEntry.js +14 -12
  42. package/dist/cjs/utils/umdEntry.js.map +2 -2
  43. package/dist/esm/components/XAiChatbot/index.js +11 -8
  44. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  45. package/dist/esm/components/XAiChatbot/styles.d.ts +2 -0
  46. package/dist/esm/components/XAiChatbot/styles.js +38 -38
  47. package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
  48. package/dist/esm/components/XAiConversations/XAiConversations.stories.d.ts +6 -0
  49. package/dist/esm/components/XAiConversations/XAiConversations.stories.js +42 -0
  50. package/dist/esm/components/XAiConversations/XAiConversations.stories.js.map +1 -0
  51. package/dist/esm/components/XAiConversations/index.d.ts +4 -0
  52. package/dist/esm/components/XAiConversations/index.js +27 -0
  53. package/dist/esm/components/XAiConversations/index.js.map +1 -0
  54. package/dist/esm/components/XAiProvider/XAiProvider.stories.d.ts +2 -2
  55. package/dist/esm/components/XAiProvider/XAiProvider.stories.js +38 -180
  56. package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -1
  57. package/dist/esm/components/XAiProvider/demo.styles.d.ts +35 -0
  58. package/dist/esm/components/XAiProvider/demo.styles.js +12 -0
  59. package/dist/esm/components/XAiProvider/demo.styles.js.map +1 -0
  60. package/dist/esm/components/XAiProvider/index.js +17 -3
  61. package/dist/esm/components/XAiProvider/index.js.map +1 -1
  62. package/dist/esm/components/XAiWebSDKWrapper.js +4 -1
  63. package/dist/esm/components/XAiWebSDKWrapper.js.map +1 -1
  64. package/dist/esm/hooks/useAgentGenerator.d.ts +10 -2
  65. package/dist/esm/hooks/useAgentGenerator.js +215 -30
  66. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  67. package/dist/esm/services/api.d.ts +65 -3
  68. package/dist/esm/services/api.js +75 -0
  69. package/dist/esm/services/api.js.map +1 -1
  70. package/dist/esm/types/XAiChatbot.d.ts +2 -0
  71. package/dist/esm/types/XAiChatbot.js.map +1 -1
  72. package/dist/esm/types/XAiConversations.d.ts +4 -0
  73. package/dist/esm/types/XAiConversations.js +2 -0
  74. package/dist/esm/types/XAiConversations.js.map +1 -0
  75. package/dist/esm/types/XAiProvider.d.ts +14 -0
  76. package/dist/esm/types/XAiProvider.js +7 -0
  77. package/dist/esm/types/XAiProvider.js.map +1 -1
  78. package/dist/esm/types/index.d.ts +1 -0
  79. package/dist/esm/types/index.js +1 -0
  80. package/dist/esm/types/index.js.map +1 -1
  81. package/dist/esm/utils/umdEntry.d.ts +4 -1
  82. package/dist/esm/utils/umdEntry.js +22 -18
  83. package/dist/esm/utils/umdEntry.js.map +1 -1
  84. package/dist/umd/chat-sdk.min.js +1 -1
  85. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["useState","useEffect","useRef","v4","uuidV4","useEventStreamRequest","MessageRole","MessageStatus","request","safeJsonParse","fetchAppConfig","documentIcon","completedIcon","completedExpandIcon","documentExpandIcon","qaIcon","qaExpandIcon","skillNoIcon","skillNoExpandIcon","toolIcon","toolExpandIcon","ActionType","ProcessStatus","ActionAvailability","useAgentGenerator","_ref","url","token","config","textSpeed","_useState","_useState2","_slicedToArray","messages","setMessages","_useState3","_useState4","appInfo","setAppInfo","requestInfo","_ref2","appNo","pt","tc","initConfig","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","result","wrap","_callee$","_context","prev","next","_objectSpread","sent","success","data","console","error","message","t0","stop","apply","arguments","_useEventStreamReques","streaming","onClose","setTimeout","_requestInfo$current","_requestInfo$current2","current","sensitiveWords","requestId","post","onOpen","res","log","start","loading","responseData","content","response","action","contentType","errorMsg","prevMessages","newMessages","_toConsumableArray","_response","uniqueId","toolType","args","knowledgeType","_data$success","suggest","suggestMessageIndex","findIndex","item","type","newMessage","id","createdAt","Date","status","done","role","suggestion","key","description","push","suggestMsg","lastAIMsgIndex","reverse","m","assistant","realIndex","length","lastAIMsg","aiMsg","text","thinks","init","undefined","recallKnowledgeStart","name","extra","icon","expandIcon","recallKnowledgeEnd","_aiMsg$thinks","recallKnowledgeMsg","find","cost","toFixed","invokeToolStart","invokeToolEnd","_aiMsg$thinks2","invokeToolMsg","pending","failed","concat","finish","setMessage","_ref4","_callee2","messageType","prologueMessageIndex","_newMessage","_callee2$","_context2","_item$extra","prologue","noFooter","map","_item$extra2","abrupt","_x","_x2","chat","_ref5","_callee3","_callee3$","_context3","user","splice","appParams","inputs_msg","Authorization","_x3","reChat","lastUserMsg","stopChat","forEach","_appInfo$onboardingIn","onboardingInfo","_ref6","_ref6$suggested_quest","suggested_questions","_ref6$prologue","filter","_item$extra3","suggestMessages","index"],"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 { request } from '@/utils/request';\nimport { safeJsonParse } from '@/utils/index';\nimport { fetchAppConfig } from '@/services/api';\n// 图标\nimport documentIcon from '@/assets/document.png';\nimport completedIcon from '@/assets/completed.png';\nimport completedExpandIcon from '@/assets/completed-black.png';\nimport documentExpandIcon from '@/assets/document-black.png';\nimport qaIcon from '@/assets/qa.png';\nimport qaExpandIcon from '@/assets/qa-black.png';\nimport skillNoIcon from '@/assets/skillNo.png';\nimport skillNoExpandIcon from '@/assets/skillNo-black.png';\nimport toolIcon from '@/assets/tools.png';\nimport toolExpandIcon from '@/assets/tools-black.png';\n\nexport type ContentType = 'TEXT' | 'IMAGE' | 'FILE';\n\nexport interface ImageUrl {\n url: string;\n name: string;\n}\n\nexport interface FileUrl {\n url: string;\n fileName: string;\n suffix: string;\n}\n\nexport interface Content {\n text?: string;\n imageUrl?: ImageUrl;\n fileUrl?: FileUrl;\n}\n\nexport interface ContentDef {\n description: string;\n contentType: ContentType;\n content: Content;\n}\n// contents 类型\nexport type Contents = ContentDef[];\n\n// —————————————— 接口字段定义 ————————————\nexport enum ActionType {\n recallKnowledgeStart = 'RECALL_KNOWLEDGE_START', // 知识库召回开始\n recallKnowledgeEnd = 'RECALL_KNOWLEDGE_END', // 知识库召回结束\n invokeToolStart = 'INVOKE_AGENT_TOOL_START', // 开始调用工具\n invokeToolEnd = 'INVOKE_AGENT_TOOL_END', // 调用工具完成\n suggest = 'FOLLOW_UP', // 用户提示\n response = 'RESPONSE', // 响应\n finish = 'FINISHED', // 结束\n}\n\nexport enum ProcessStatus {\n start = 'START',\n end = 'END',\n}\n\nexport enum ActionAvailability {\n disabled = 'disabled', // 不可用\n enabled = 'enabled', // 可用\n remote = 'remote', // 远程可用\n}\n\nexport type ThinkStep = any; // 临时定义,后续可完善\n\n/**\n* 工具/动作定义\n*/\nexport interface Action {\n name: string; // 名称\n description: string; // 描述\n jsonSchema: string; // 参数JSON Schema\n available?: ActionAvailability; // 可用性\n}\n\nconst useAgentGenerator = ({ url, token, config }: { url: string; token: string; config: any }) => {\n const textSpeed = 60;\n\n const [messages, setMessages] = useState<Messages[]>([]);\n const [appInfo, setAppInfo] = useState<any>(null);\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 } else {\n console.error('获取聊天配置失败', result.message);\n }\n } catch (error) {\n console.error('获取聊天配置失败', error);\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 newMessages.push(newMessage);\n } else {\n const suggestMsg = newMessages[suggestMessageIndex] as SuggestionMessage;\n if (suggestMsg?.content) {\n suggestMsg.content.push({\n key: uuidV4(),\n description: content,\n });\n }\n }\n return newMessages;\n }\n\n // 找到最后一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage' && (m.status === 'init' || m.status === 'pending'),\n );\n const realIndex = lastAIMsgIndex === -1 ? -1 : prevMessages.length - 1 - lastAIMsgIndex;\n const lastAIMsg = realIndex !== -1 ? prevMessages[realIndex] : null;\n\n let aiMsg: TextMessage | undefined;\n\n if (!lastAIMsg) {\n aiMsg = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: new Date(),\n role: MessageRole.assistant,\n content: { text: '' },\n thinks: [],\n status: MessageStatus.init,\n };\n newMessages.push(aiMsg);\n } else if (lastAIMsg.type === 'TextMessage') {\n aiMsg = { ...lastAIMsg };\n } else if (lastAIMsg.type === 'ImageMessage') {\n aiMsg = undefined;\n }\n\n // 如果 aiMsg 为 undefined,则跳过处理\n if (!aiMsg) {\n return newMessages;\n }\n\n switch (action) {\n case ActionType.recallKnowledgeStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: knowledgeType === 'DOCUMENT' ? '已搜索文档知识库' : '已搜索问答知识库',\n arguments: args,\n extra: {\n ...data,\n icon: knowledgeType === 'DOCUMENT' ? documentIcon : qaIcon,\n expandIcon: knowledgeType === 'DOCUMENT' ? documentExpandIcon : qaExpandIcon,\n },\n });\n break;\n case ActionType.recallKnowledgeEnd: {\n // 需要给之前的recallKnowledgeStart添加cost - 通过uniqueId关联\n const recallKnowledgeMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (recallKnowledgeMsg) {\n recallKnowledgeMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.invokeToolStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: toolType === 'SKILL' ? '已调用工作流' : '已调用工具',\n arguments: args,\n extra: {\n ...data,\n icon: toolType === 'SKILL' ? skillNoIcon : toolIcon,\n expandIcon: toolType === 'SKILL' ? skillNoExpandIcon : toolExpandIcon,\n },\n });\n break;\n case ActionType.invokeToolEnd: {\n // 需要给之前的invokeToolStart添加cost - 通过uniqueId关联\n const invokeToolMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (invokeToolMsg) {\n invokeToolMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.response:\n if (success) {\n // 正常渲染\n if (aiMsg.status === MessageStatus.init) {\n aiMsg.status = MessageStatus.pending;\n }\n if (contentType === 'TEXT' && 'text' in aiMsg.content) {\n aiMsg.content.text += content;\n }\n } else {\n // 调用失败\n aiMsg.status = MessageStatus.failed;\n aiMsg.content.text = `<span style=\"color: red;\">❌ ${errorMsg}</span>`;\n }\n break;\n case ActionType.finish:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: '运行完毕',\n extra: {\n ...data,\n cost: data?.cost ? (data?.cost / 1000).toFixed(2) : 0,\n icon: completedIcon,\n expandIcon: completedExpandIcon,\n },\n });\n aiMsg.status = MessageStatus.done;\n break;\n // 其他类型略\n }\n\n // 更新消息数组\n if (lastAIMsg && lastAIMsg.type === 'TextMessage') {\n newMessages[realIndex] = aiMsg;\n } else if (!lastAIMsg) {\n // 只有 newMessages 最后一条是 TextMessage 时才替换,否则 push\n if (newMessages.length > 0 && newMessages[newMessages.length - 1].type === 'TextMessage') {\n newMessages[newMessages.length - 1] = aiMsg;\n } else {\n // 只 push TextMessage,不替换非 TextMessage\n newMessages = [...newMessages, aiMsg];\n }\n }\n return newMessages;\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [responseData]);\n\n // 添加对话(非普通对话)\n const setMessage = async (messageType: string, content: any) => {\n switch (messageType) {\n case 'prologue': {\n const prologueMessageIndex = messages.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 setMessages((prev) => [...prev, newMessage]);\n } else {\n setMessages((prev) => 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 const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\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 setMessages((prev) => [...prev, newMessage]);\n } else {\n setMessages((prev) => prev.map((item) => {\n if (item.type === 'SuggestionMessage') {\n item.content = content;\n }\n return item;\n }));\n }\n break;\n }\n default:\n break;\n }\n };\n\n // 简单对话\n const chat = async (content: any) => {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n setMessages((prev) => {\n // 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n prev.splice(suggestMessageIndex, 1);\n }\n // 插入用户消息\n prev.push(newMessage);\n return prev;\n });\n\n start(\n `${url}/appouter/${appNo}/sendMsg?pt=${pt}&tc=${tc}`,\n {\n appParams: {\n inputs_msg: content,\n },\n },\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 = messages.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 useEffect(() => {\n if (appInfo) {\n const { onboardingInfo = {} } = appInfo;\n // eslint-disable-next-line camelcase\n const { suggested_questions = [], prologue = '' } = onboardingInfo || {};\n\n if (prologue) {\n setMessage('prologue', prologue);\n } else {\n setMessages((prev) => prev.filter((item) => !item.extra?.prologue));\n }\n\n if (suggested_questions.length > 0) {\n const suggestMessages = suggested_questions.filter((item: string) => item).map((item: string, index: number) => ({\n key: index + 1,\n description: item,\n }));\n setMessage('suggest', suggestMessages);\n } else {\n setMessages((prev) => prev.filter((item) => !(item.type === 'SuggestionMessage')));\n }\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 reChat,\n chat,\n setMessage,\n setMessages,\n stopChat,\n };\n};\n\nexport default useAgentGenerator;\n"],"mappings":"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"}
1
+ {"version":3,"names":["useState","useEffect","useRef","v4","uuidV4","useEventStreamRequest","MessageRole","MessageStatus","ErrorCode","request","safeJsonParse","fetchAppConfig","fetchSessionList","fetchSessionDetail","documentIcon","completedIcon","completedExpandIcon","documentExpandIcon","qaIcon","qaExpandIcon","skillNoIcon","skillNoExpandIcon","toolIcon","toolExpandIcon","ActionType","ProcessStatus","ActionAvailability","useAgentGenerator","_ref","url","token","config","onError","onSuccess","textSpeed","_useState","_useState2","_slicedToArray","messages","setMessages","_useState3","_useState4","sessionsList","setSessionList","_useState5","_useState6","currentSession","setCurrentSession","_useState7","_useState8","appInfo","setAppInfo","requestInfo","_ref2","appNo","pt","tc","initConfig","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","result","_result$data","_ref4","enableFlag","isDeleted","wrap","_callee$","_context","prev","next","_objectSpread","sent","success","data","publishDTO","code","APP_NOT_ENABLE","message","APP_DELETED","APP_NOT_FOUND","t0","console","error","API_ERROR","stop","apply","arguments","_useEventStreamReques","streaming","onClose","setTimeout","_requestInfo$current","_requestInfo$current2","current","sensitiveWords","requestId","post","onOpen","res","log","start","loading","responseData","content","response","action","contentType","errorMsg","prevMessages","newMessages","_toConsumableArray","_response","uniqueId","toolType","args","knowledgeType","_data$success","suggest","suggestMessageIndex","findIndex","item","type","newMessage","id","createdAt","Date","status","done","role","suggestion","key","description","push","suggestMsg","lastAIMsgIndex","reverse","m","assistant","realIndex","length","lastAIMsg","aiMsg","text","thinks","init","undefined","recallKnowledgeStart","name","extra","icon","expandIcon","recallKnowledgeEnd","_aiMsg$thinks","recallKnowledgeMsg","find","cost","toFixed","invokeToolStart","invokeToolEnd","_aiMsg$thinks2","invokeToolMsg","pending","failed","concat","finish","setMessage","_ref5","_callee2","messageType","prologueMessageIndex","_prologueMessageIndex","_newMessage","_callee2$","_context2","_item$extra","prologue","noFooter","map","_item$extra2","abrupt","_item$extra3","splice","_x","_x2","chat","_ref6","_callee3","_callee3$","_context3","user","appParams","inputs_msg","sessionId","Authorization","_x3","reChat","lastUserMsg","stopChat","forEach","formatMessages","initMessagesList","_ref7","messageTime","_contentObj$result","contentObj","initAppConversations","_ref8","_callee4","_result$data2","sessionResult","_sessionResult$data","sessionsData","_callee4$","_context4","list","sessionMessages","_appInfo$onboardingIn","onboardingInfo","_ref9","_ref9$suggested_quest","suggested_questions","_ref9$prologue","filter","_item$extra4","formatSuggests","suggestMessages","index"],"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 } from '@/types/XAiProvider';\nimport { request } from '@/utils/request';\nimport { safeJsonParse } from '@/utils/index';\nimport { fetchAppConfig, fetchSessionList, fetchSessionDetail } from '@/services/api';\n// 图标\nimport documentIcon from '@/assets/document.png';\nimport completedIcon from '@/assets/completed.png';\nimport completedExpandIcon from '@/assets/completed-black.png';\nimport documentExpandIcon from '@/assets/document-black.png';\nimport qaIcon from '@/assets/qa.png';\nimport qaExpandIcon from '@/assets/qa-black.png';\nimport skillNoIcon from '@/assets/skillNo.png';\nimport skillNoExpandIcon from '@/assets/skillNo-black.png';\nimport toolIcon from '@/assets/tools.png';\nimport toolExpandIcon from '@/assets/tools-black.png';\n\nexport type ContentType = 'TEXT' | 'IMAGE' | 'FILE';\n\nexport interface ImageUrl {\n url: string;\n name: string;\n}\n\nexport interface FileUrl {\n url: string;\n fileName: string;\n suffix: string;\n}\n\nexport interface Content {\n text?: string;\n imageUrl?: ImageUrl;\n fileUrl?: FileUrl;\n}\n\nexport interface ContentDef {\n description: string;\n contentType: ContentType;\n content: Content;\n}\n// contents 类型\nexport type Contents = ContentDef[];\n\n// —————————————— 接口字段定义 ————————————\nexport enum ActionType {\n recallKnowledgeStart = 'RECALL_KNOWLEDGE_START', // 知识库召回开始\n recallKnowledgeEnd = 'RECALL_KNOWLEDGE_END', // 知识库召回结束\n invokeToolStart = 'INVOKE_AGENT_TOOL_START', // 开始调用工具\n invokeToolEnd = 'INVOKE_AGENT_TOOL_END', // 调用工具完成\n suggest = 'FOLLOW_UP', // 用户提示\n response = 'RESPONSE', // 响应\n finish = 'FINISHED', // 结束\n}\n\nexport enum ProcessStatus {\n start = 'START',\n end = 'END',\n}\n\nexport enum ActionAvailability {\n disabled = 'disabled', // 不可用\n enabled = 'enabled', // 可用\n remote = 'remote', // 远程可用\n}\n\nexport type ThinkStep = any; // 临时定义,后续可完善\n\n/**\n* 工具/动作定义\n*/\nexport interface Action {\n name: string; // 名称\n description: string; // 描述\n jsonSchema: string; // 参数JSON Schema\n available?: ActionAvailability; // 可用性\n error?: Error; // 错误信息\n}\n\nexport interface UseAgentGeneratorProps {\n url: string;\n token: string;\n config: any;\n onError?: (error: Error) => void;\n onSuccess?: (appInfo: any) => void;\n}\nconst useAgentGenerator = ({\n url,\n token,\n config,\n onError,\n onSuccess,\n}: UseAgentGeneratorProps) => {\n const textSpeed = 60;\n // 聊天记录\n const [messages, setMessages] = useState<Messages[]>([]);\n // 会话记录\n const [sessionsList, setSessionList] = useState<any[]>([]);\n // 当前会话\n const [currentSession, setCurrentSession] = useState<string>('');\n // 应用 配置\n const [appInfo, setAppInfo] = useState<any>(null);\n // 请求 配置\n const requestInfo = useRef<{ requestId?: string; sensitiveWords?: string[] }>({});\n\n const { appNo, pt, tc } = config || {};\n\n // 初始化时获取配置\n useEffect(() => {\n if (url && config) {\n const initConfig = async () => {\n try {\n const result = await fetchAppConfig({ url, ...config });\n if (result.success) {\n setAppInfo(result.data);\n\n const { enableFlag, isDeleted } = result.data?.publishDTO || {};\n if (!enableFlag) {\n onError?.({\n code: ErrorCode.APP_NOT_ENABLE,\n message: '应用未启用或者已下架',\n });\n } else if (isDeleted === 'Y') {\n onError?.({\n code: ErrorCode.APP_DELETED,\n message: '应用已下架',\n });\n } else {\n onSuccess?.(result.data);\n }\n } else {\n onError?.({\n code: ErrorCode.APP_NOT_FOUND,\n message: result?.message || '获取聊天配置失败',\n });\n }\n } catch (error) {\n console.error('获取聊天配置失败', error);\n onError?.({\n code: ErrorCode.API_ERROR,\n message: '获取聊天配置失败',\n });\n }\n };\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url, config]);\n\n const { start, loading, responseData, stop } = useEventStreamRequest({\n streaming: true,\n textSpeed,\n onClose: () => {\n // close的时机有可能在setMessages之前,所以需要延迟一下\n setTimeout(() => {\n if (requestInfo.current?.sensitiveWords && requestInfo.current?.requestId) {\n request.post(url);\n }\n }, 500);\n },\n onOpen(res) {\n console.log('res-----open:', res);\n },\n });\n\n // 数据更新\n useEffect(() => {\n if (!responseData || !responseData.content || !responseData.data) return;\n\n let response = responseData.data || responseData.content;\n if (typeof response === 'string') {\n response = safeJsonParse(response, {\n action: ActionType.response,\n data: {\n contentType: 'TEXT',\n content: '解析响应数据时出错,请重试',\n success: false,\n errorMsg: '响应数据格式错误',\n },\n });\n }\n\n setMessages((prevMessages) => {\n let newMessages = [...prevMessages];\n // 消息类型判断\n const { action, data } = response;\n const { uniqueId, contentType, content, toolType, args, knowledgeType, success = true, errorMsg } = data;\n\n // 建议类信息 特殊处理\n if (action === ActionType.suggest) {\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const newMessage: SuggestionMessage = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content: [{\n key: uuidV4(),\n description: content,\n }],\n };\n // 插到末尾\n newMessages.push(newMessage);\n } else {\n const suggestMsg = newMessages[suggestMessageIndex] as SuggestionMessage;\n if (suggestMsg?.content) {\n suggestMsg.content.push({\n key: uuidV4(),\n description: content,\n });\n }\n }\n return newMessages;\n }\n\n // 找到最后一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage' && (m.status === 'init' || m.status === 'pending'),\n );\n const realIndex = lastAIMsgIndex === -1 ? -1 : prevMessages.length - 1 - lastAIMsgIndex;\n const lastAIMsg = realIndex !== -1 ? prevMessages[realIndex] : null;\n\n let aiMsg: TextMessage | undefined;\n\n if (!lastAIMsg) {\n aiMsg = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: new Date(),\n role: MessageRole.assistant,\n content: { text: '' },\n thinks: [],\n status: MessageStatus.init,\n };\n newMessages.push(aiMsg);\n } else if (lastAIMsg.type === 'TextMessage') {\n aiMsg = { ...lastAIMsg };\n } else if (lastAIMsg.type === 'ImageMessage') {\n aiMsg = undefined;\n }\n\n // 如果 aiMsg 为 undefined,则跳过处理\n if (!aiMsg) {\n return newMessages;\n }\n\n switch (action) {\n case ActionType.recallKnowledgeStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: knowledgeType === 'DOCUMENT' ? '已搜索文档知识库' : '已搜索问答知识库',\n arguments: args,\n extra: {\n ...data,\n icon: knowledgeType === 'DOCUMENT' ? documentIcon : qaIcon,\n expandIcon: knowledgeType === 'DOCUMENT' ? documentExpandIcon : qaExpandIcon,\n },\n });\n break;\n case ActionType.recallKnowledgeEnd: {\n // 需要给之前的recallKnowledgeStart添加cost - 通过uniqueId关联\n const recallKnowledgeMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (recallKnowledgeMsg) {\n recallKnowledgeMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.invokeToolStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: toolType === 'SKILL' ? '已调用工作流' : '已调用工具',\n arguments: args,\n extra: {\n ...data,\n icon: toolType === 'SKILL' ? skillNoIcon : toolIcon,\n expandIcon: toolType === 'SKILL' ? skillNoExpandIcon : toolExpandIcon,\n },\n });\n break;\n case ActionType.invokeToolEnd: {\n // 需要给之前的invokeToolStart添加cost - 通过uniqueId关联\n const invokeToolMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (invokeToolMsg) {\n invokeToolMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.response:\n if (success) {\n // 正常渲染\n if (aiMsg.status === MessageStatus.init) {\n aiMsg.status = MessageStatus.pending;\n }\n if (contentType === 'TEXT' && 'text' in aiMsg.content) {\n aiMsg.content.text += content;\n }\n } else {\n // 调用失败\n aiMsg.status = MessageStatus.failed;\n aiMsg.content.text = `<span style=\"color: red;\">❌ ${errorMsg}</span>`;\n }\n break;\n case ActionType.finish:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: '运行完毕',\n extra: {\n ...data,\n cost: data?.cost ? (data?.cost / 1000).toFixed(2) : 0,\n icon: completedIcon,\n expandIcon: completedExpandIcon,\n },\n });\n aiMsg.status = MessageStatus.done;\n break;\n // 其他类型略\n }\n\n // 更新消息数组\n if (lastAIMsg && lastAIMsg.type === 'TextMessage') {\n newMessages[realIndex] = aiMsg;\n } else if (!lastAIMsg) {\n // 只有 newMessages 最后一条是 TextMessage 时才替换,否则 push\n if (newMessages.length > 0 && newMessages[newMessages.length - 1].type === 'TextMessage') {\n newMessages[newMessages.length - 1] = aiMsg;\n } else {\n // 只 push TextMessage,不替换非 TextMessage\n newMessages = [...newMessages, aiMsg];\n }\n }\n return newMessages;\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [responseData]);\n\n // 添加对话(非普通对话)\n const setMessage = async (messageType: string, content: any) => {\n switch (messageType) {\n case 'prologue': {\n const prologueMessageIndex = messages.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 setMessages((prev) => [newMessage, ...prev]);\n } else {\n setMessages((prev) => 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 const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const prologueMessageIndex = messages.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 setMessages((prev) => [newMessage, ...prev]);\n } else {\n // 如果有开场白,则插到开场白后面\n setMessages((prev) => {\n const newMessages = [...prev];\n newMessages.splice(prologueMessageIndex + 1, 0, newMessage);\n return newMessages;\n });\n }\n } else {\n setMessages((prev) => prev.map((item) => {\n if (item.type === 'SuggestionMessage') {\n item.content = content;\n }\n return item;\n }));\n }\n break;\n }\n default:\n break;\n }\n };\n\n // 简单对话\n const chat = async (content: any) => {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n setMessages((prev) => {\n // 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n prev.splice(suggestMessageIndex, 1);\n }\n // 插入用户消息\n prev.push(newMessage);\n return prev;\n });\n\n start(\n `${url}/appouter/${appNo}/sendMsg?pt=${pt}&tc=${tc}`,\n {\n appParams: {\n inputs_msg: content,\n },\n sessionId: currentSession,\n },\n {\n Authorization: `Bearer ${token}`,\n },\n );\n };\n\n // 重新生成方法\n const reChat = () => {\n setMessages((prevMessages) => {\n // 1. 删除最新一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage',\n );\n const newMessages = [...prevMessages];\n if (lastAIMsgIndex !== -1) {\n const realIndex = newMessages.length - 1 - lastAIMsgIndex;\n newMessages.splice(realIndex, 1);\n }\n\n // 2. 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n newMessages.splice(suggestMessageIndex, 1);\n }\n\n // 3. 找到最新一条用户消息,且类型为 TextMessage\n const lastUserMsg = [...newMessages].reverse().find(\n (m) => m.role === MessageRole.user && m.type === 'TextMessage',\n ) as TextMessage | undefined;\n if (lastUserMsg && lastUserMsg.content && typeof lastUserMsg.content.text === 'string') {\n // 重新发起 chat\n chat(lastUserMsg.content.text);\n }\n\n return newMessages;\n });\n };\n\n const stopChat = () => {\n stop();\n setMessages((prevMessages) => {\n // 找到我所有进行中的消息,并设置为结束\n const newMessages = [...prevMessages];\n newMessages.forEach((m) => {\n if (m.status === MessageStatus.pending) {\n m.status = MessageStatus.done;\n } else if (m.status === MessageStatus.init) {\n if (m.type === 'TextMessage') {\n m.content.text = '<span style=\"color: #cbcbcb;\">用户已取消</span>';\n }\n m.status = MessageStatus.done;\n }\n });\n return newMessages;\n });\n };\n\n // 初始化历史记录\n const formatMessages = (data: any) => {\n setMessages((prev) => {\n const initMessagesList: Messages[] = [];\n data.forEach((item: any) => {\n const { content, messageTime, role } = item || {};\n\n if (role === 'USER') {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: messageTime,\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n initMessagesList.push(newMessage);\n } else if (role === 'AI') {\n const contentObj = safeJsonParse(content);\n const newMessage: TextMessage = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: messageTime,\n role: MessageRole.assistant,\n content: { text: contentObj?.result?.result },\n thinks: [],\n status: MessageStatus.done,\n };\n\n initMessagesList.push(newMessage);\n }\n });\n\n return [...prev, ...initMessagesList];\n });\n };\n\n // 获取聊天记录\n const 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 if (result?.data?.length > 0) {\n setSessionList(result.data);\n const { sessionId } = result.data[0];\n if (sessionId) {\n setCurrentSession(sessionId); // 设置当前会话 id;\n const sessionResult = await fetchSessionDetail({\n url,\n appNo,\n pt,\n tc,\n sessionId,\n token,\n });\n\n if (sessionResult?.success) {\n const sessionsData = (sessionResult?.data as any)?.list?.[0]?.sessionMessages || [];\n\n if (sessionsData.length > 0) {\n formatMessages(sessionsData);\n }\n }\n } else {\n // 兼容 无 session异常\n setCurrentSession(uuidV4());\n }\n } else {\n setSessionList([]);\n setCurrentSession(uuidV4());\n }\n }\n } catch {\n //\n }\n };\n\n // 初始化应用\n useEffect(() => {\n if (appInfo) {\n // 初始化历史数据\n initAppConversations();\n\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 // 初始化 预设问题\n if (formatSuggests.length > 0) {\n const suggestMessages = formatSuggests.map((item: string, index: number) => ({\n key: index + 1,\n description: item,\n }));\n setMessage('suggest', suggestMessages);\n } else {\n setMessages((prev) => prev.filter((item) => !(item.type === 'SuggestionMessage')));\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appInfo]);\n\n return {\n appInfo,\n messages,\n loading,\n content: responseData.content,\n sessionsList,\n currentSession,\n reChat,\n chat,\n setCurrentSession,\n setMessage,\n setMessages,\n stopChat,\n };\n};\n\nexport default useAgentGenerator;\n"],"mappings":"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"}
@@ -13,9 +13,46 @@ export interface ApiResponse<T> {
13
13
  code?: string;
14
14
  }
15
15
  export interface ChatConfig {
16
- id: string;
17
- name: string;
18
- settings: Record<string, unknown>;
16
+ botNo: string;
17
+ appNo: string;
18
+ appName: string;
19
+ appTheme: string;
20
+ description: string;
21
+ icon: string;
22
+ onboardingInfo: {
23
+ prologue: string;
24
+ suggested_questions: string[];
25
+ };
26
+ appVersionNo: string;
27
+ publishDTO: {
28
+ id: number;
29
+ tenantId: string;
30
+ botNo: string;
31
+ publishNo: string;
32
+ publishTime: string;
33
+ publishVersionNo: string;
34
+ publishVersionDesc: string;
35
+ publishAppType: string;
36
+ platformConfigInfo: string;
37
+ appNo: string;
38
+ appVersionNo: string;
39
+ gmtCreated: string;
40
+ enableFlag: number;
41
+ gmtModified: string;
42
+ creator: string;
43
+ modifier: string;
44
+ isDeleted: string;
45
+ authLoginInfoDTO: Record<string, unknown>;
46
+ shareLink: string;
47
+ };
48
+ }
49
+ export interface sessionData {
50
+ sessionId: string;
51
+ gmtCreated: string;
52
+ userId: string;
53
+ title: string;
54
+ botNo: string;
55
+ appNo: string;
19
56
  }
20
57
  /**
21
58
  * 获取聊天配置
@@ -38,3 +75,28 @@ export declare const sendMessage: ({ url, appNo, pt, tc, msg }: {
38
75
  tc: string;
39
76
  msg: string;
40
77
  }) => Promise<ApiResponse<ChatConfig>>;
78
+ /**
79
+ * 获取会话列表
80
+ */
81
+ export declare const fetchSessionList: ({ url, appNo, pt, tc, pageSize, pageNum, token }: {
82
+ url: string;
83
+ appNo: string;
84
+ pt: string;
85
+ tc: string;
86
+ pageSize?: number | undefined;
87
+ pageNum?: number | undefined;
88
+ token: string;
89
+ }) => Promise<ApiResponse<sessionData[]>>;
90
+ /**
91
+ * 获取会话明细
92
+ */
93
+ export declare const fetchSessionDetail: ({ url, appNo, pt, tc, sessionId, pageSize, pageNum, token }: {
94
+ url: string;
95
+ appNo: string;
96
+ pt: string;
97
+ tc: string;
98
+ sessionId: string;
99
+ pageSize?: number | undefined;
100
+ pageNum?: number | undefined;
101
+ token: string;
102
+ }) => Promise<ApiResponse<sessionData[]>>;
@@ -8,6 +8,8 @@ import { request } from "../utils/request";
8
8
 
9
9
  // 聊天配置类型
10
10
 
11
+ // 会话记录
12
+
11
13
  /**
12
14
  * 获取聊天配置
13
15
  * 使用request,会自动添加token
@@ -70,4 +72,77 @@ export var sendMessage = /*#__PURE__*/function () {
70
72
  return _ref4.apply(this, arguments);
71
73
  };
72
74
  }();
75
+
76
+ /**
77
+ * 获取会话列表
78
+ */
79
+ export var fetchSessionList = /*#__PURE__*/function () {
80
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref5) {
81
+ var url, appNo, pt, tc, _ref5$pageSize, pageSize, _ref5$pageNum, pageNum, token, response;
82
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
83
+ while (1) switch (_context3.prev = _context3.next) {
84
+ case 0:
85
+ url = _ref5.url, appNo = _ref5.appNo, pt = _ref5.pt, tc = _ref5.tc, _ref5$pageSize = _ref5.pageSize, pageSize = _ref5$pageSize === void 0 ? 10 : _ref5$pageSize, _ref5$pageNum = _ref5.pageNum, pageNum = _ref5$pageNum === void 0 ? 1 : _ref5$pageNum, token = _ref5.token;
86
+ _context3.next = 3;
87
+ return request.post("".concat(url, "/appouter/").concat(appNo, "/sessionIds"), {}, {
88
+ params: {
89
+ pt: pt,
90
+ tc: tc,
91
+ pageSize: pageSize,
92
+ pageNum: pageNum
93
+ },
94
+ headers: {
95
+ Authorization: "Bearer ".concat(token)
96
+ }
97
+ });
98
+ case 3:
99
+ response = _context3.sent;
100
+ return _context3.abrupt("return", response.data);
101
+ case 5:
102
+ case "end":
103
+ return _context3.stop();
104
+ }
105
+ }, _callee3);
106
+ }));
107
+ return function fetchSessionList(_x3) {
108
+ return _ref6.apply(this, arguments);
109
+ };
110
+ }();
111
+
112
+ /**
113
+ * 获取会话明细
114
+ */
115
+ export var fetchSessionDetail = /*#__PURE__*/function () {
116
+ var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref7) {
117
+ var url, appNo, pt, tc, sessionId, _ref7$pageSize, pageSize, _ref7$pageNum, pageNum, token, response;
118
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
119
+ while (1) switch (_context4.prev = _context4.next) {
120
+ case 0:
121
+ url = _ref7.url, appNo = _ref7.appNo, pt = _ref7.pt, tc = _ref7.tc, sessionId = _ref7.sessionId, _ref7$pageSize = _ref7.pageSize, pageSize = _ref7$pageSize === void 0 ? 10 : _ref7$pageSize, _ref7$pageNum = _ref7.pageNum, pageNum = _ref7$pageNum === void 0 ? 1 : _ref7$pageNum, token = _ref7.token;
122
+ _context4.next = 3;
123
+ return request.post("".concat(url, "/appouter/").concat(appNo, "/sessionDetails"), {}, {
124
+ params: {
125
+ pt: pt,
126
+ tc: tc,
127
+ sessionId: sessionId,
128
+ pageSize: pageSize,
129
+ pageNum: pageNum
130
+ },
131
+ headers: {
132
+ Authorization: "Bearer ".concat(token)
133
+ }
134
+ });
135
+ case 3:
136
+ response = _context4.sent;
137
+ return _context4.abrupt("return", response.data);
138
+ case 5:
139
+ case "end":
140
+ return _context4.stop();
141
+ }
142
+ }, _callee4);
143
+ }));
144
+ return function fetchSessionDetail(_x4) {
145
+ return _ref8.apply(this, arguments);
146
+ };
147
+ }();
73
148
  //# 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"],"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 id: string;\n name: string;\n settings: Record<string, unknown>;\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"],"mappings":";;AAAA,SAASA,OAAO;;AAEhB;;AAUA;;AAQA;;AAOA;AACA;AACA;AACA;AACA,OAAO,IAAMC,cAAc;EAAA,IAAAC,KAAA,GAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QAAAC,IAAA;IAAA,IAAAC,GAAA,EAAAC,KAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,QAAA;IAAA,OAAAR,mBAAA,GAAAS,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAST,GAAG,GAAAD,IAAA,CAAHC,GAAG,EAAEC,KAAK,GAAAF,IAAA,CAALE,KAAK,EAAEC,EAAE,GAAAH,IAAA,CAAFG,EAAE,EAAEC,EAAE,GAAAJ,IAAA,CAAFI,EAAE;UAAAI,QAAA,CAAAE,IAAA;UAAA,OAChCjB,OAAO,CAACkB,IAAI,IAAAC,MAAA,CAA6BX,GAAG,uBAAAW,MAAA,CAAoBV,KAAK,eAAY,CAAC,CAAC,EAAE;YAC1GW,MAAM,EAAE;cACNV,EAAE,EAAFA,EAAE;cAAEC,EAAE,EAAFA;YACN;UACF,CAAC,CAAC;QAAA;UAJIC,QAAQ,GAAAG,QAAA,CAAAM,IAAA;UAAA,OAAAN,QAAA,CAAAO,MAAA,WAKPV,QAAQ,CAACW,IAAI;QAAA;QAAA;UAAA,OAAAR,QAAA,CAAAS,IAAA;MAAA;IAAA,GAAAlB,OAAA;EAAA,CACrB;EAAA,gBAPYL,cAAcA,CAAAwB,EAAA;IAAA,OAAAvB,KAAA,CAAAwB,KAAA,OAAAC,SAAA;EAAA;AAAA,GAO1B;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAMC,WAAW;EAAA,IAAAC,KAAA,GAAA1B,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAyB,SAAAC,KAAA;IAAA,IAAAvB,GAAA,EAAAC,KAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAqB,GAAA,EAAApB,QAAA;IAAA,OAAAR,mBAAA,GAAAS,IAAA,UAAAoB,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAlB,IAAA,GAAAkB,SAAA,CAAAjB,IAAA;QAAA;UAAST,GAAG,GAAAuB,KAAA,CAAHvB,GAAG,EAAEC,KAAK,GAAAsB,KAAA,CAALtB,KAAK,EAAEC,EAAE,GAAAqB,KAAA,CAAFrB,EAAE,EAAEC,EAAE,GAAAoB,KAAA,CAAFpB,EAAE,EAAEqB,GAAG,GAAAD,KAAA,CAAHC,GAAG;UAAAE,SAAA,CAAAjB,IAAA;UAAA,OAClCjB,OAAO,CAACkB,IAAI,IAAAC,MAAA,CAA6BX,GAAG,gBAAAW,MAAA,CAAaV,KAAK,eAAY;YAC/FC,EAAE,EAAFA,EAAE;YAAEC,EAAE,EAAFA,EAAE;YAAEqB,GAAG,EAAHA;UACV,CAAC,CAAC;QAAA;UAFIpB,QAAQ,GAAAsB,SAAA,CAAAb,IAAA;UAAA,OAAAa,SAAA,CAAAZ,MAAA,WAGPV,QAAQ,CAACW,IAAI;QAAA;QAAA;UAAA,OAAAW,SAAA,CAAAV,IAAA;MAAA;IAAA,GAAAM,QAAA;EAAA,CACrB;EAAA,gBALYF,WAAWA,CAAAO,GAAA;IAAA,OAAAN,KAAA,CAAAH,KAAA,OAAAC,SAAA;EAAA;AAAA,GAKvB"}
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 sessionId: string;\n gmtCreated: string;\n userId: string;\n title: string;\n botNo: string;\n appNo: string;\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 = 10, 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":";;AAAA,SAASA,OAAO;;AAEhB;;AAUA;;AAQA;;AAqCA;;AAUA;AACA;AACA;AACA;AACA,OAAO,IAAMC,cAAc;EAAA,IAAAC,KAAA,GAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QAAAC,IAAA;IAAA,IAAAC,GAAA,EAAAC,KAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,QAAA;IAAA,OAAAR,mBAAA,GAAAS,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAST,GAAG,GAAAD,IAAA,CAAHC,GAAG,EAAEC,KAAK,GAAAF,IAAA,CAALE,KAAK,EAAEC,EAAE,GAAAH,IAAA,CAAFG,EAAE,EAAEC,EAAE,GAAAJ,IAAA,CAAFI,EAAE;UAAAI,QAAA,CAAAE,IAAA;UAAA,OAChCjB,OAAO,CAACkB,IAAI,IAAAC,MAAA,CAA6BX,GAAG,uBAAAW,MAAA,CAAoBV,KAAK,eAAY,CAAC,CAAC,EAAE;YAC1GW,MAAM,EAAE;cACNV,EAAE,EAAFA,EAAE;cAAEC,EAAE,EAAFA;YACN;UACF,CAAC,CAAC;QAAA;UAJIC,QAAQ,GAAAG,QAAA,CAAAM,IAAA;UAAA,OAAAN,QAAA,CAAAO,MAAA,WAKPV,QAAQ,CAACW,IAAI;QAAA;QAAA;UAAA,OAAAR,QAAA,CAAAS,IAAA;MAAA;IAAA,GAAAlB,OAAA;EAAA,CACrB;EAAA,gBAPYL,cAAcA,CAAAwB,EAAA;IAAA,OAAAvB,KAAA,CAAAwB,KAAA,OAAAC,SAAA;EAAA;AAAA,GAO1B;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAMC,WAAW;EAAA,IAAAC,KAAA,GAAA1B,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAyB,SAAAC,KAAA;IAAA,IAAAvB,GAAA,EAAAC,KAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAqB,GAAA,EAAApB,QAAA;IAAA,OAAAR,mBAAA,GAAAS,IAAA,UAAAoB,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAlB,IAAA,GAAAkB,SAAA,CAAAjB,IAAA;QAAA;UAAST,GAAG,GAAAuB,KAAA,CAAHvB,GAAG,EAAEC,KAAK,GAAAsB,KAAA,CAALtB,KAAK,EAAEC,EAAE,GAAAqB,KAAA,CAAFrB,EAAE,EAAEC,EAAE,GAAAoB,KAAA,CAAFpB,EAAE,EAAEqB,GAAG,GAAAD,KAAA,CAAHC,GAAG;UAAAE,SAAA,CAAAjB,IAAA;UAAA,OAClCjB,OAAO,CAACkB,IAAI,IAAAC,MAAA,CAA6BX,GAAG,gBAAAW,MAAA,CAAaV,KAAK,eAAY;YAC/FC,EAAE,EAAFA,EAAE;YAAEC,EAAE,EAAFA,EAAE;YAAEqB,GAAG,EAAHA;UACV,CAAC,CAAC;QAAA;UAFIpB,QAAQ,GAAAsB,SAAA,CAAAb,IAAA;UAAA,OAAAa,SAAA,CAAAZ,MAAA,WAGPV,QAAQ,CAACW,IAAI;QAAA;QAAA;UAAA,OAAAW,SAAA,CAAAV,IAAA;MAAA;IAAA,GAAAM,QAAA;EAAA,CACrB;EAAA,gBALYF,WAAWA,CAAAO,GAAA;IAAA,OAAAN,KAAA,CAAAH,KAAA,OAAAC,SAAA;EAAA;AAAA,GAKvB;;AAED;AACA;AACA;AACA,OAAO,IAAMS,gBAAgB;EAAA,IAAAC,KAAA,GAAAlC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAiC,SAAAC,KAAA;IAAA,IAAA/B,GAAA,EAAAC,KAAA,EAAAC,EAAA,EAAAC,EAAA,EAAA6B,cAAA,EAAAC,QAAA,EAAAC,aAAA,EAAAC,OAAA,EAAAC,KAAA,EAAAhC,QAAA;IAAA,OAAAR,mBAAA,GAAAS,IAAA,UAAAgC,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAA9B,IAAA,GAAA8B,SAAA,CAAA7B,IAAA;QAAA;UAAST,GAAG,GAAA+B,KAAA,CAAH/B,GAAG,EAAEC,KAAK,GAAA8B,KAAA,CAAL9B,KAAK,EAAEC,EAAE,GAAA6B,KAAA,CAAF7B,EAAE,EAAEC,EAAE,GAAA4B,KAAA,CAAF5B,EAAE,EAAA6B,cAAA,GAAAD,KAAA,CAAEE,QAAQ,EAARA,QAAQ,GAAAD,cAAA,cAAG,EAAE,GAAAA,cAAA,EAAAE,aAAA,GAAAH,KAAA,CAAEI,OAAO,EAAPA,OAAO,GAAAD,aAAA,cAAG,CAAC,GAAAA,aAAA,EAAEE,KAAK,GAAAL,KAAA,CAALK,KAAK;UAAAE,SAAA,CAAA7B,IAAA;UAAA,OAErEjB,OAAO,CAACkB,IAAI,IAAAC,MAAA,CAAgCX,GAAG,gBAAAW,MAAA,CAAaV,KAAK,kBAAe,CAAC,CAAC,EAAE;YACzGW,MAAM,EAAE;cACNV,EAAE,EAAFA,EAAE;cACFC,EAAE,EAAFA,EAAE;cACF8B,QAAQ,EAARA,QAAQ;cACRE,OAAO,EAAPA;YACF,CAAC;YACDI,OAAO,EAAE;cACPC,aAAa,YAAA7B,MAAA,CAAYyB,KAAK;YAChC;UACF,CAAC,CAAC;QAAA;UAVIhC,QAAQ,GAAAkC,SAAA,CAAAzB,IAAA;UAAA,OAAAyB,SAAA,CAAAxB,MAAA,WAYPV,QAAQ,CAACW,IAAI;QAAA;QAAA;UAAA,OAAAuB,SAAA,CAAAtB,IAAA;MAAA;IAAA,GAAAc,QAAA;EAAA,CACrB;EAAA,gBAfYF,gBAAgBA,CAAAa,GAAA;IAAA,OAAAZ,KAAA,CAAAX,KAAA,OAAAC,SAAA;EAAA;AAAA,GAe5B;;AAED;AACA;AACA;AACA,OAAO,IAAMuB,kBAAkB;EAAA,IAAAC,KAAA,GAAAhD,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA+C,SAAAC,KAAA;IAAA,IAAA7C,GAAA,EAAAC,KAAA,EAAAC,EAAA,EAAAC,EAAA,EAAA2C,SAAA,EAAAC,cAAA,EAAAd,QAAA,EAAAe,aAAA,EAAAb,OAAA,EAAAC,KAAA,EAAAhC,QAAA;IAAA,OAAAR,mBAAA,GAAAS,IAAA,UAAA4C,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAA1C,IAAA,GAAA0C,SAAA,CAAAzC,IAAA;QAAA;UAAST,GAAG,GAAA6C,KAAA,CAAH7C,GAAG,EAAEC,KAAK,GAAA4C,KAAA,CAAL5C,KAAK,EAAEC,EAAE,GAAA2C,KAAA,CAAF3C,EAAE,EAAEC,EAAE,GAAA0C,KAAA,CAAF1C,EAAE,EAAE2C,SAAS,GAAAD,KAAA,CAATC,SAAS,EAAAC,cAAA,GAAAF,KAAA,CAAEZ,QAAQ,EAARA,QAAQ,GAAAc,cAAA,cAAG,EAAE,GAAAA,cAAA,EAAAC,aAAA,GAAAH,KAAA,CAAEV,OAAO,EAAPA,OAAO,GAAAa,aAAA,cAAG,CAAC,GAAAA,aAAA,EAAEZ,KAAK,GAAAS,KAAA,CAALT,KAAK;UAAAc,SAAA,CAAAzC,IAAA;UAAA,OAElFjB,OAAO,CAACkB,IAAI,IAAAC,MAAA,CAAgCX,GAAG,gBAAAW,MAAA,CAAaV,KAAK,sBAAmB,CAAC,CAAC,EAAE;YAC7GW,MAAM,EAAE;cACNV,EAAE,EAAFA,EAAE;cACFC,EAAE,EAAFA,EAAE;cACF2C,SAAS,EAATA,SAAS;cACTb,QAAQ,EAARA,QAAQ;cACRE,OAAO,EAAPA;YACF,CAAC;YACDI,OAAO,EAAE;cACPC,aAAa,YAAA7B,MAAA,CAAYyB,KAAK;YAChC;UACF,CAAC,CAAC;QAAA;UAXIhC,QAAQ,GAAA8C,SAAA,CAAArC,IAAA;UAAA,OAAAqC,SAAA,CAAApC,MAAA,WAaPV,QAAQ,CAACW,IAAI;QAAA;QAAA;UAAA,OAAAmC,SAAA,CAAAlC,IAAA;MAAA;IAAA,GAAA4B,QAAA;EAAA,CACrB;EAAA,gBAhBYF,kBAAkBA,CAAAS,GAAA;IAAA,OAAAR,KAAA,CAAAzB,KAAA,OAAAC,SAAA;EAAA;AAAA,GAgB9B"}
@@ -146,6 +146,8 @@ export interface XAiChatbotProps extends ChatbotMessageFields {
146
146
  rightAction?: IconButtonProps;
147
147
  /** 上传按钮是否显示 */
148
148
  uploadBtnShow?: boolean;
149
+ /** 底部文案 */
150
+ footerTips?: string;
149
151
  /** 帮助消息点击回调 */
150
152
  onSuggestMessageClick?: (item: PromptProps, id: string) => void;
151
153
  /** 消息左下角展示字段 */
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/types/XAiChatbot.ts"],"sourcesContent":["import React, { ReactNode, RefObject, ChangeEvent, FocusEvent, MouseEvent } from 'react';\nimport type { PromptProps } from '@ant-design/x';\nimport type { MessageType } from 'src/client/base';\nimport type { Messages } from './XAiMessage';\n\n// 类型定义\nexport interface User {\n id: string;\n name: string;\n avatar?: string;\n }\n\nexport interface MessageProps {\n _id: string;\n type: string;\n content: Record<string, any>;\n createdAt: number;\n user: User;\n position?: 'left' | 'right' | 'center' | 'pop';\n hasTime?: boolean;\n status?: 'pending' | 'sent' | 'fail';\n }\n\nexport interface QuickReplyItemProps {\n name: string;\n code: string;\n icon?: string;\n img?: string;\n isNew?: boolean;\n isHighlight?: boolean;\n }\n\nexport interface ComposerHandle {\n setText: (text: string) => void;\n }\n\nexport interface ScrollToEndOptions {\n animated?: boolean;\n force?: boolean;\n }\n\nexport interface MessageContainerHandle {\n scrollToEnd: (options?: ScrollToEndOptions) => void;\n }\n\nexport interface NavbarProps {\n title?: string;\n subtitle?: string;\n avatar?: string;\n}\n\nexport interface ToolbarItemProps {\n id: string;\n icon: string;\n label: string;\n disabled?: boolean;\n }\n\nexport interface IconButtonProps {\n icon: string;\n onClick: () => void;\n disabled?: boolean;\n }\n\nexport interface RecorderProps {\n onStart?: () => void;\n onStop?: (audioBlob: Blob) => void;\n onError?: (error: Error) => void;\n }\n\nexport type InputType = 'text' | 'voice';\n\n// chatbot 会话字段\nexport interface ChatbotMessageFields {\n messages?: MessageType[];\n setMessages?: React.Dispatch<React.SetStateAction<MessageType[]>>;\n /** 发送消息回调 */\n onSend?: (type: string, content: string) => void;\n /** 清空消息回调 */\n onClear?: () => void;\n /** 停止生成回调 */\n onStop?: () => void;\n}\n\nexport interface ActionItem {\n key?: string;\n icon: React.ReactNode;\n tooltip?: string;\n}\n\n/**\n * AI 聊天机器人组件\n */\nexport interface XAiChatbotProps extends ChatbotMessageFields {\n /** 宽屏断点 */\n wideBreakpoint?: string;\n /** 导航栏展示 */\n navbarShow?: boolean;\n /** 导航栏配置 */\n navbar?: NavbarProps;\n /** 导航栏渲染函数,会覆盖 navbar */\n renderNavbar?: () => ReactNode;\n /** 是否加载中 */\n loading?: boolean;\n /** 加载更多文案 */\n loadMoreText?: string;\n /** 在消息列表上面的渲染函数 */\n renderBeforeMessageList?: () => ReactNode;\n /** 消息列表 ref */\n messagesRef?: RefObject<MessageContainerHandle>;\n /** 下拉加载回调 */\n onRefresh?: () => Promise<any>;\n /** 滚动消息列表回调 */\n onScroll?: (event: React.UIEvent<HTMLDivElement, UIEvent>) => void;\n /** 消息内容渲染函数 */\n renderMessageContent?: (message: MessageProps) => ReactNode;\n /** 快捷短语列表 */\n quickReplies?: QuickReplyItemProps[];\n /** 快捷短语是否可见 */\n quickRepliesVisible?: boolean;\n /** 点击快速回复回调 */\n onQuickReplyClick?: (item: QuickReplyItemProps, index: number) => void;\n /** 快捷短语的滚动回调 */\n onQuickReplyScroll?: () => void;\n /** 快捷短语渲染函数,会覆盖 quickReplies */\n renderQuickReplies?: () => ReactNode;\n /** 输入区 ref */\n composerRef?: RefObject<ComposerHandle>;\n /** 输入框初始内容 */\n text?: string;\n /** 空状态图片 */\n emptyStateImage?: string;\n /** 空状态文案 */\n emptyStateText?: string;\n /** 输入框占位符 */\n placeholder?: string;\n /** 输入框聚焦回调 */\n onInputFocus?: (event: FocusEvent) => void;\n /** 输入框更新回调 */\n onInputChange?: (value: string, event: ChangeEvent) => void;\n /** 输入框失去焦点回调 */\n onInputBlur?: (event: FocusEvent) => void;\n /** 输入框粘贴图片后的回调 */\n onImageSend?: (file: File) => Promise<any>;\n /** 输入方式 */\n inputType?: InputType;\n /** 输入方式切换回调 */\n onInputTypeChange?: (inputType: InputType) => void;\n /** 语音输入配置 */\n recorder?: RecorderProps;\n /** 工具栏配置 */\n toolbar?: ToolbarItemProps[];\n /** AI头像 */\n avatar?: ReactNode;\n /** 用户头像 */\n userAvatar?: ReactNode;\n /** 工具栏点击回调 */\n onToolbarClick?: (item: ToolbarItemProps, event: MouseEvent) => void;\n /** 工具栏打开/关闭回调 */\n onAccessoryToggle?: (isAccessoryOpen: boolean) => void;\n /** 输入框右边图标按钮配置 */\n rightAction?: IconButtonProps;\n /** 上传按钮是否显示 */\n uploadBtnShow?: boolean;\n /** 帮助消息点击回调 */\n 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 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":""}
@@ -0,0 +1,4 @@
1
+ import { type ConversationsProps } from '@ant-design/x';
2
+ export interface XAiConversationsProps extends ConversationsProps {
3
+ color?: string;
4
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=XAiConversations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../../src/types/XAiConversations.ts"],"sourcesContent":["import { type ConversationsProps } from '@ant-design/x';\n\nexport interface XAiConversationsProps extends ConversationsProps {\n color?: string;\n}\n"],"mappings":""}
@@ -2,6 +2,16 @@ import React, { ReactNode } from 'react';
2
2
  import { AiClient } from 'src/client/base';
3
3
  import type { ChatbotMessageFields } from './XAiChatbot';
4
4
  export type ThemeType = 'default';
5
+ export declare enum ErrorCode {
6
+ APP_NOT_ENABLE = "APP_NOT_ENABLE",
7
+ APP_DELETED = "APP_DELETED",
8
+ APP_NOT_FOUND = "APP_NOT_FOUND",
9
+ API_ERROR = "API_ERROR"
10
+ }
11
+ export interface Error {
12
+ code: ErrorCode;
13
+ message: string;
14
+ }
5
15
  export interface XAiProviderProps {
6
16
  /** AI 服务地址 */
7
17
  url: string;
@@ -13,6 +23,10 @@ export interface XAiProviderProps {
13
23
  providerId?: string;
14
24
  /** Token 刷新回调 */
15
25
  onRefreshToken?: () => Promise<string>;
26
+ /** 应用无法正常渲染回调 */
27
+ onError?: (error: Error) => void;
28
+ /** 应用正常渲染回调 */
29
+ onSuccess?: (appInfo: any) => void;
16
30
  /** 子组件 */
17
31
  children: ReactNode;
18
32
  }
@@ -1,4 +1,11 @@
1
1
  // context/ProviderContext.ts
2
2
  import React from 'react';
3
+ export var ErrorCode = /*#__PURE__*/function (ErrorCode) {
4
+ ErrorCode["APP_NOT_ENABLE"] = "APP_NOT_ENABLE";
5
+ ErrorCode["APP_DELETED"] = "APP_DELETED";
6
+ ErrorCode["APP_NOT_FOUND"] = "APP_NOT_FOUND";
7
+ ErrorCode["API_ERROR"] = "API_ERROR";
8
+ return ErrorCode;
9
+ }({});
3
10
  export var XAiContext = /*#__PURE__*/React.createContext(null);
4
11
  //# sourceMappingURL=XAiProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","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';\n\nexport type ThemeType = 'default';\n\nexport interface XAiProviderProps {\n /** AI 服务地址 */\n url: string;\n /** 认证 token */\n token: string;\n /** 配置信息 */\n config?: any;\n /** Provider 唯一标识,用于区分多个 Provider 实例 */\n providerId?: string;\n /** Token 刷新回调 */\n onRefreshToken?: () => Promise<string>;\n /** 子组件 */\n children: ReactNode;\n}\n\nexport interface XAiSDKProps extends XAiProviderProps {\n theme?: ThemeType;\n componentProps?: {\n id?: string;\n [key: string]: any; // 支持任意 CSS 属性\n };\n}\n\nexport interface XAiContextType extends Required<ChatbotMessageFields> {\n client: AiClient | null;\n token: string;\n loading: boolean;\n error: string | null;\n // ...其它全局配置\n}\n\nexport const XAiContext = React.createContext<XAiContextType | null>(null);\n"],"mappings":"AAAA;AACA,OAAOA,KAAK,MAAqB,OAAO;AAqCxC,OAAO,IAAMC,UAAU,gBAAGD,KAAK,CAACE,aAAa,CAAwB,IAAI,CAAC"}
1
+ {"version":3,"names":["React","ErrorCode","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';\n\nexport type ThemeType = 'default';\n\nexport enum ErrorCode {\n APP_NOT_ENABLE = 'APP_NOT_ENABLE',\n APP_DELETED = 'APP_DELETED',\n APP_NOT_FOUND = 'APP_NOT_FOUND',\n API_ERROR = 'API_ERROR',\n}\n\nexport interface Error {\n code: ErrorCode;\n message: string;\n}\n\nexport interface XAiProviderProps {\n /** AI 服务地址 */\n url: string;\n /** 认证 token */\n token: string;\n /** 配置信息 */\n config?: any;\n /** Provider 唯一标识,用于区分多个 Provider 实例 */\n providerId?: string;\n /** Token 刷新回调 */\n onRefreshToken?: () => Promise<string>;\n /** 应用无法正常渲染回调 */\n onError?: (error: Error) => void;\n /** 应用正常渲染回调 */\n onSuccess?: (appInfo: any) => void;\n /** 子组件 */\n children: ReactNode;\n}\n\nexport interface XAiSDKProps extends XAiProviderProps {\n theme?: ThemeType;\n componentProps?: {\n id?: string;\n [key: string]: any; // 支持任意 CSS 属性\n };\n}\n\nexport interface XAiContextType extends Required<ChatbotMessageFields> {\n client: AiClient | null;\n token: string;\n loading: boolean;\n error: string | null;\n // ...其它全局配置\n}\n\nexport const XAiContext = React.createContext<XAiContextType | null>(null);\n"],"mappings":"AAAA;AACA,OAAOA,KAAK,MAAqB,OAAO;AAMxC,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AA+CrB,OAAO,IAAMC,UAAU,gBAAGF,KAAK,CAACG,aAAa,CAAwB,IAAI,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from './XAiChatbot';
2
2
  export * from './XAiMessage';
3
3
  export * from './XAiProvider';
4
+ export * from './XAiConversations';
@@ -1,4 +1,5 @@
1
1
  export * from "./XAiChatbot";
2
2
  export * from "./XAiMessage";
3
3
  export * from "./XAiProvider";
4
+ export * from "./XAiConversations";
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/types/index.ts"],"sourcesContent":["export * from './XAiChatbot';\nexport * from './XAiMessage';\nexport * from './XAiProvider';"],"mappings":"AAAA;AACA;AACA"}
1
+ {"version":3,"names":[],"sources":["../../../src/types/index.ts"],"sourcesContent":["export * from './XAiChatbot';\nexport * from './XAiMessage';\nexport * from './XAiProvider';\nexport * from './XAiConversations';\n"],"mappings":"AAAA;AACA;AACA;AACA"}
@@ -3,9 +3,12 @@ declare class XAiWebSDK {
3
3
  container: HTMLElement;
4
4
  props: XAiSDKProps;
5
5
  root: any;
6
+ onError?: (error: any) => void;
7
+ onSuccess?: (appInfo: any) => void;
6
8
  constructor(container: HTMLElement, props: XAiSDKProps);
7
9
  mount(): void;
8
10
  unmount(): void;
9
- static initChatbot(containerOrProps: HTMLElement | XAiSDKProps, props?: XAiSDKProps): XAiWebSDK;
11
+ static initChatbot(props: XAiSDKProps): XAiWebSDK;
12
+ static create(props: XAiSDKProps): XAiWebSDK;
10
13
  }
11
14
  export default XAiWebSDK;
@@ -15,8 +15,12 @@ var XAiWebSDK = /*#__PURE__*/function () {
15
15
  _defineProperty(this, "container", void 0);
16
16
  _defineProperty(this, "props", void 0);
17
17
  _defineProperty(this, "root", void 0);
18
+ _defineProperty(this, "onError", void 0);
19
+ _defineProperty(this, "onSuccess", void 0);
18
20
  this.container = container;
19
21
  this.props = props;
22
+ this.onError = props.onError;
23
+ this.onSuccess = props.onSuccess;
20
24
  this.mount();
21
25
  }
22
26
  _createClass(XAiWebSDK, [{
@@ -54,29 +58,22 @@ var XAiWebSDK = /*#__PURE__*/function () {
54
58
  }
55
59
  }
56
60
 
57
- // 支持两种调用方式
61
+ // 支持 Coze 风格的语法:new XAiWebSDK.initChatbot()
58
62
  }], [{
59
63
  key: "initChatbot",
60
- value: function initChatbot(containerOrProps, props) {
61
- var _sdkProps$componentPr;
62
- // 如果第一个参数是 HTMLElement
63
- if (containerOrProps instanceof HTMLElement) {
64
- return new XAiWebSDK(containerOrProps, props);
65
- }
66
-
67
- // 如果第一个参数是 props
68
- var sdkProps = containerOrProps;
64
+ value: function initChatbot(props) {
65
+ var _props$componentProps;
69
66
  var container;
70
67
 
71
68
  // 检查是否有指定的 componentProps.id
72
- if ((_sdkProps$componentPr = sdkProps.componentProps) !== null && _sdkProps$componentPr !== void 0 && _sdkProps$componentPr.id) {
73
- var existingContainer = document.getElementById(sdkProps.componentProps.id);
69
+ if ((_props$componentProps = props.componentProps) !== null && _props$componentProps !== void 0 && _props$componentProps.id) {
70
+ var existingContainer = document.getElementById(props.componentProps.id);
74
71
  if (existingContainer) {
75
72
  container = existingContainer;
76
73
  } else {
77
74
  // 如果指定的 ID 不存在,创建新元素
78
75
  container = document.createElement('div');
79
- container.id = sdkProps.componentProps.id;
76
+ container.id = props.componentProps.id;
80
77
  }
81
78
  } else {
82
79
  // 没有指定 ID,创建默认容器
@@ -85,10 +82,10 @@ var XAiWebSDK = /*#__PURE__*/function () {
85
82
  }
86
83
 
87
84
  // 设置容器样式 - 将除了 id 以外的所有属性都应用到容器
88
- if (sdkProps.componentProps) {
89
- var _sdkProps$componentPr2 = sdkProps.componentProps,
90
- id = _sdkProps$componentPr2.id,
91
- styleProps = _objectWithoutProperties(_sdkProps$componentPr2, _excluded);
85
+ if (props.componentProps) {
86
+ var _props$componentProps2 = props.componentProps,
87
+ id = _props$componentProps2.id,
88
+ styleProps = _objectWithoutProperties(_props$componentProps2, _excluded);
92
89
  Object.assign(container.style, styleProps);
93
90
  }
94
91
 
@@ -96,7 +93,14 @@ var XAiWebSDK = /*#__PURE__*/function () {
96
93
  if (!container.parentNode) {
97
94
  document.body.appendChild(container);
98
95
  }
99
- return new XAiWebSDK(container, sdkProps);
96
+ return new XAiWebSDK(container, props);
97
+ }
98
+
99
+ // 兼容旧版本的静态方法
100
+ }, {
101
+ key: "create",
102
+ value: function create(props) {
103
+ return this.initChatbot(props);
100
104
  }
101
105
  }]);
102
106
  return XAiWebSDK;