@ai-group/chat-sdk 1.0.8 → 1.0.11

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 (45) hide show
  1. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js +0 -16
  2. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js.map +2 -2
  3. package/dist/cjs/components/XAiChatbot/index.js +4 -7
  4. package/dist/cjs/components/XAiChatbot/index.js.map +2 -2
  5. package/dist/cjs/components/XAiChatbot/styles.js +3 -0
  6. package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
  7. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +2 -2
  8. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +1 -1
  9. package/dist/cjs/hooks/useAgentGenerator.d.ts +20 -15
  10. package/dist/cjs/hooks/useAgentGenerator.js +385 -263
  11. package/dist/cjs/hooks/useAgentGenerator.js.map +3 -3
  12. package/dist/cjs/types/XAiChatbot.d.ts +2 -1
  13. package/dist/cjs/types/XAiChatbot.js.map +1 -1
  14. package/dist/cjs/types/XAiMessage.d.ts +2 -16
  15. package/dist/cjs/types/XAiMessage.js.map +2 -2
  16. package/dist/cjs/types/node.d.ts +10 -0
  17. package/dist/cjs/types/node.js +18 -0
  18. package/dist/cjs/types/node.js.map +7 -0
  19. package/dist/cjs/utils/workflowNode.d.ts +2 -0
  20. package/dist/cjs/utils/workflowNode.js +169 -0
  21. package/dist/cjs/utils/workflowNode.js.map +7 -0
  22. package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js +0 -15
  23. package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js.map +1 -1
  24. package/dist/esm/components/XAiChatbot/index.js +8 -27
  25. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  26. package/dist/esm/components/XAiChatbot/styles.js +2 -2
  27. package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
  28. package/dist/esm/components/XAiProvider/XAiProvider.stories.js +2 -2
  29. package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -1
  30. package/dist/esm/hooks/useAgentGenerator.d.ts +20 -15
  31. package/dist/esm/hooks/useAgentGenerator.js +542 -336
  32. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  33. package/dist/esm/types/XAiChatbot.d.ts +2 -1
  34. package/dist/esm/types/XAiChatbot.js.map +1 -1
  35. package/dist/esm/types/XAiMessage.d.ts +2 -16
  36. package/dist/esm/types/XAiMessage.js +0 -4
  37. package/dist/esm/types/XAiMessage.js.map +1 -1
  38. package/dist/esm/types/node.d.ts +10 -0
  39. package/dist/esm/types/node.js +2 -0
  40. package/dist/esm/types/node.js.map +1 -0
  41. package/dist/esm/utils/workflowNode.d.ts +2 -0
  42. package/dist/esm/utils/workflowNode.js +141 -0
  43. package/dist/esm/utils/workflowNode.js.map +1 -0
  44. package/dist/umd/chat-sdk.min.js +1 -1
  45. package/package.json +1 -1
@@ -1 +1 @@
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","findLastIndex","m","assistant","realIndex","length","lastAIMsg","aiMsg","text","execute","init","undefined","reasoning","thinks","recallKnowledgeStart","name","extra","icon","expandIcon","recallKnowledgeEnd","_aiMsg$execute","recallKnowledgeMsg","find","cost","toFixed","invokeToolStart","invokeToolEnd","_aiMsg$execute2","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","findLast","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 reasoning = 'REASONING', // 思考过程\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].findLastIndex(\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 execute: [],\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 // 思考过程\n case ActionType.reasoning:\n aiMsg.thinks += content;\n break;\n // 开始搜索知识库\n case ActionType.recallKnowledgeStart:\n aiMsg.execute = aiMsg.execute || [];\n aiMsg.execute.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 // 知识库搜索结束\n case ActionType.recallKnowledgeEnd: {\n // 需要给之前的recallKnowledgeStart添加cost - 通过uniqueId关联\n const recallKnowledgeMsg = aiMsg.execute?.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 // 调用工具\n case ActionType.invokeToolStart:\n aiMsg.execute = aiMsg.execute || [];\n aiMsg.execute.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 // 工具调用结束\n case ActionType.invokeToolEnd: {\n // 需要给之前的invokeToolStart添加cost - 通过uniqueId关联\n const invokeToolMsg = aiMsg.execute?.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 // 回答正文\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.execute = aiMsg.execute || [];\n // aiMsg.execute.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].findLastIndex(\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].findLast(\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 execute: [],\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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"}
1
+ {"version":3,"names":["useState","useEffect","useMemo","useCallback","useRef","v4","uuidV4","useEventStreamRequest","MessageRole","MessageStatus","ErrorCode","SuccessCode","request","safeJsonParse","SESSION_PAGE_SIZE","fetchAppConfig","fetchSessionList","fetchSessionDetail","delSessionId","updateSessionTitle","getNodeTemplate","documentIcon","completedIcon","completedExpandIcon","documentExpandIcon","qaIcon","qaExpandIcon","skillNoIcon","skillNoExpandIcon","toolIcon","toolExpandIcon","ActionType","ProcessStatus","ActionAvailability","MessageProcessor","textSpeed","arguments","length","undefined","_classCallCheck","_defineProperty","_createClass","key","value","getKnowledgeIcons","knowledgeType","icon","expandIcon","getToolIcons","toolType","getWorkflowIcon","updateExecutionCost","messages","messageIndex","uniqueId","cost","msg","execute","execution","find","item","id","extra","toFixed","findLastPendingAIMessage","i","role","assistant","type","status","createNewAIMessage","createdAt","Date","content","text","thinks","init","ensureAIMessageExists","_this$findLastPending","_this$findLastPending2","_slicedToArray","index","existingMsg","_toConsumableArray","_objectSpread","newMessage","newMessages","concat","handleSuggestion","data","suggestIndex","findIndex","newSuggestion","done","suggestion","description","push","_suggestion$content","handleReasoning","_this$ensureAIMessage","_this$ensureAIMessage2","aiMsg","updatedMsg","pending","updatedMessages","handleReasoningEnd","_this$ensureAIMessage3","_this$ensureAIMessage4","handleRecallKnowledgeStart","_this$ensureAIMessage5","_this$ensureAIMessage6","_ref","_ref$uniqueId","args","icons","name","handleRecallKnowledgeEnd","_data$data","_this$findLastPending3","_this$findLastPending4","_aiMsg","handleInvokeToolStart","_this$ensureAIMessage7","_this$ensureAIMessage8","_ref2","_ref2$uniqueId","handleInvokeToolEnd","_data$data2","_this$findLastPending5","_this$findLastPending6","handleComponentStart","_aiMsg$execute","_this$ensureAIMessage9","_this$ensureAIMessage10","nodeId","componentType","_getNodeTemplate","handleComponentEnd","_data$content","_this$findLastPending7","_this$findLastPending8","handleResponse","_this$ensureAIMessage11","_this$ensureAIMessage12","contentType","success","errorMsg","failed","handleFinish","_data$data3","_this$findLastPending9","_this$findLastPending10","processResponse","responseData","response","action","_response","_response$data","suggest","reasoning","reasoningEnd","componentStart","componentEnd","recallKnowledgeStart","recallKnowledgeEnd","invokeToolStart","invokeToolEnd","finish","useAgentGenerator","params","url","token","config","onError","onMessage","onSuccess","rest","_objectWithoutProperties","_excluded","_useState","_useState2","setMessages","_useState3","_useState4","sessionList","setSessionList","_useState5","total","pageNum","pageSize","_useState6","sessionPagination","setSessionPagination","_useState7","_useState8","currentSessionId","setCurrentSessionId","_useState9","_useState10","appInfo","setAppInfo","requestInfo","_ref3","appNo","pt","tc","messageProcessor","initConfig","_ref4","_asyncToGenerator","_regeneratorRuntime","mark","_callee","result","wrap","_callee$","_context","prev","next","sent","code","APP_CONFIG_INIT_SUCCESS","message","APP_NOT_FOUND","t0","API_ERROR","stop","apply","_useEventStreamReques","streaming","onClose","setTimeout","_requestInfo$current","_requestInfo$current2","current","sensitiveWords","requestId","post","onOpen","res","console","log","start","loading","setMessage","_ref5","_callee2","messageType","_callee2$","_context2","prologueIndex","_item$extra","prologue","noFooter","map","_item$extra2","abrupt","_item$extra3","insertIndex","splice","warn","_x","_x2","chat","_ref6","_callee3","insert","requestBody","_args3","_callee3$","_context3","user","filter","appParams","inputs_msg","sessionId","Authorization","_x3","_x4","reChat","_lastUserMsg$content","lastAIIndex","findLastIndex","m","lastUserMsg","findLast","stopChat","newMsg","formatMessages","initMessagesList","forEach","_ref7","messageTime","initPrologue","_ref8","_callee4","_appInfo$onboardingIn","onboardingInfo","_ref9","_ref9$suggested_quest","suggested_questions","_ref9$prologue","formatSuggests","suggestMessages","hasMessages","_callee4$","_context4","_item$extra4","some","_item$extra5","initAppConversations","_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","_x5","deleteSession","_ref12","_callee7","_callee7$","_context7","createNewChat","_x6","updateSession","_ref13","_callee8","_callee8$","_context8","_x7","_x8"],"sources":["../../../src/hooks/useAgentGenerator.ts"],"sourcesContent":["import { useState, useEffect, useMemo, useCallback, 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';\nimport { getNodeTemplate } from '@/utils/workflowNode';\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\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\nexport type Contents = ContentDef[];\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 reasoning = 'REASONING',\n reasoningStart = 'REASONING_START',\n reasoningEnd = 'REASONING_END',\n componentStart = 'COMPONENT_START',\n componentStream = 'COMPONENT_STREAM',\n componentEnd = 'COMPONENT_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\nexport interface Action {\n name: string;\n description: string;\n jsonSchema: string;\n available?: ActionAvailability;\n}\n\nexport interface BaseFields {\n textSpeed?: number;\n onChatDone?: () => void;\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}\n\ninterface AgentFields extends BaseFields {\n type: 'agent';\n botNo: string;\n agentNo: string;\n versionNo: string;\n sessionId?: string;\n}\n\ninterface AppFields extends BaseFields {\n type: 'app';\n botNo?: string;\n appNo?: string;\n appVersionNo?: string;\n sessionId?: string;\n}\n\ninterface TrialAppFields extends BaseFields {\n type: 'trialApp';\n tc: string;\n appNo: string;\n sessionId?: string;\n}\n\ninterface PromptDebugFields extends BaseFields {\n type: 'promptDebug';\n sessionId?: string;\n requestId?: string;\n promptNo: string;\n versionNo?: string;\n compareNo?: string;\n}\n\ntype Params = AgentFields | AppFields | TrialAppFields | PromptDebugFields;\n\n// ==================== 消息处理器 ====================\nclass MessageProcessor {\n private textSpeed: number;\n\n constructor(textSpeed: number = 60) {\n this.textSpeed = textSpeed;\n }\n\n // 获取知识图标\n private getKnowledgeIcons(knowledgeType: string) {\n return knowledgeType === 'DOCUMENT' \n ? { icon: documentIcon, expandIcon: documentExpandIcon }\n : { icon: qaIcon, expandIcon: qaExpandIcon };\n }\n\n // 获取工具图标\n private getToolIcons(toolType: string) {\n return toolType === 'SKILL'\n ? { icon: skillNoIcon, expandIcon: skillNoExpandIcon }\n : { icon: toolIcon, expandIcon: toolExpandIcon };\n }\n\n // 获取工作流图标(暂时不做区分)\n private getWorkflowIcon() {\n return { icon: skillNoIcon, expandIcon: skillNoExpandIcon };\n }\n\n // 更新执行时间\n private updateExecutionCost(\n messages: Messages[],\n messageIndex: number,\n uniqueId: string,\n cost: number\n ) {\n const msg = messages[messageIndex] as TextMessage;\n if (msg?.execute) {\n const execution = msg.execute.find(item => item.id === uniqueId);\n if (execution) {\n execution.extra.cost = cost ? (cost / 1000).toFixed(2) : 0;\n }\n }\n }\n\n // 查找最后一个待处理的AI消息\n private findLastPendingAIMessage(messages: Messages[]): [number, TextMessage | null] {\n for (let i = messages.length - 1; i >= 0; i--) {\n const msg = messages[i];\n if (msg.role === MessageRole.assistant && \n msg.type === 'TextMessage' && \n (msg.status === 'init' || msg.status === 'pending')) {\n return [i, msg as TextMessage];\n }\n }\n return [-1, null];\n }\n\n // 创建新的AI消息\n private createNewAIMessage(): TextMessage {\n return {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: new Date(),\n role: MessageRole.assistant,\n content: { text: '' },\n execute: [],\n thinks: '',\n status: MessageStatus.init,\n };\n }\n\n // 确保存在待处理的AI消息\n private ensureAIMessageExists(messages: Messages[]): [Messages[], number, TextMessage] {\n const [index, existingMsg] = this.findLastPendingAIMessage(messages);\n \n if (index !== -1 && existingMsg) {\n return [[...messages], index, { ...existingMsg }];\n }\n\n const newMessage = this.createNewAIMessage();\n const newMessages = [...messages, newMessage];\n return [newMessages, newMessages.length - 1, newMessage];\n }\n\n // 处理建议\n handleSuggestion(messages: Messages[], data: any): Messages[] {\n const { content } = data;\n const newMessages = [...messages];\n const suggestIndex = newMessages.findIndex(item => item.type === 'SuggestionMessage');\n \n if (suggestIndex === -1) {\n const newSuggestion: SuggestionMessage = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content: [{ key: uuidV4(), description: content }],\n };\n newMessages.push(newSuggestion);\n } else {\n const suggestion = newMessages[suggestIndex] as SuggestionMessage;\n suggestion?.content?.push({\n key: uuidV4(),\n description: content,\n });\n }\n \n return newMessages;\n }\n\n // 处理思考过程\n handleReasoning(messages: Messages[], data: any): Messages[] {\n const { content } = data;\n const [newMessages, index, aiMsg] = this.ensureAIMessageExists(messages);\n\n // 确保消息状态正确\n const updatedMsg: Messages = {\n ...aiMsg,\n thinks: (aiMsg.thinks || '') + content,\n status: aiMsg.status === MessageStatus.init ? MessageStatus.pending : aiMsg.status,\n };\n\n const updatedMessages = [...newMessages];\n updatedMessages[index] = updatedMsg;\n\n return updatedMessages;\n }\n\n // 处理思考过程结束\n handleReasoningEnd(messages: Messages[]): Messages[] {\n const [newMessages, index, aiMsg] = this.ensureAIMessageExists(messages);\n\n // 确保消息状态正确\n const updatedMsg: Messages = {\n ...aiMsg,\n thinks: (aiMsg.thinks || '') + '\\n',\n status: aiMsg.status === MessageStatus.init ? MessageStatus.pending : aiMsg.status,\n };\n\n const updatedMessages = [...newMessages];\n updatedMessages[index] = updatedMsg;\n\n return updatedMessages;\n }\n\n // 处理知识库调用开始\n handleRecallKnowledgeStart(messages: Messages[], data: any): Messages[] {\n const [newMessages, index, aiMsg] = this.ensureAIMessageExists(messages);\n const { uniqueId = uuidV4(), args, knowledgeType } = data?.data || {};\n \n aiMsg.execute = aiMsg.execute || [];\n const icons = this.getKnowledgeIcons(knowledgeType);\n \n aiMsg.execute.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: knowledgeType === 'DOCUMENT' ? '已搜索文档知识库' : '已搜索问答知识库',\n arguments: args,\n extra: {\n ...data,\n ...icons,\n },\n });\n \n newMessages[index] = aiMsg;\n return newMessages;\n }\n\n // 处理知识库调用结束\n handleRecallKnowledgeEnd(messages: Messages[], data: any): Messages[] {\n const [index, _aiMsg] = this.findLastPendingAIMessage(messages);\n if (index === -1) return messages;\n \n const newMessages = [...messages];\n this.updateExecutionCost(newMessages, index, data?.data?.uniqueId, data.cost);\n return newMessages;\n }\n\n // 处理工具调用开始\n handleInvokeToolStart(messages: Messages[], data: any): Messages[] {\n const [newMessages, index, aiMsg] = this.ensureAIMessageExists(messages);\n const { uniqueId = uuidV4(), args, toolType } = data?.data || {};\n \n aiMsg.execute = aiMsg.execute || [];\n const icons = this.getToolIcons(toolType);\n \n aiMsg.execute.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: toolType === 'SKILL' ? '已调用工作流' : '已调用工具',\n arguments: args,\n extra: {\n ...data,\n ...icons,\n },\n });\n \n newMessages[index] = aiMsg;\n return newMessages;\n }\n\n // 处理工具调用结束\n handleInvokeToolEnd(messages: Messages[], data: any): Messages[] {\n const [index, _aiMsg] = this.findLastPendingAIMessage(messages);\n if (index === -1) return messages;\n \n const newMessages = [...messages];\n this.updateExecutionCost(newMessages, index, data?.data?.uniqueId, data.cost);\n return newMessages;\n }\n\n // 处理工作流组件开始\n handleComponentStart(messages: Messages[], data: any): Messages[] {\n const [newMessages, index, aiMsg] = this.ensureAIMessageExists(messages);\n const { content } = data;\n const { nodeId, args, componentType } = content;\n const { name } = getNodeTemplate(componentType);\n aiMsg?.execute?.push({\n id: nodeId || uuidV4(),\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: name ? `已调用${name}组件` : '已调用工作流组件',\n arguments: args,\n extra: {\n ...data,\n ...this.getWorkflowIcon(),\n },\n });\n \n newMessages[index] = aiMsg;\n return newMessages;\n }\n\n // 处理工作流组件结束\n handleComponentEnd(messages: Messages[], data: any): Messages[] {\n const [index, _aiMsg] = this.findLastPendingAIMessage(messages);\n if (index === -1) return messages;\n const newMessages = [...messages];\n this.updateExecutionCost(newMessages, index, data?.content?.nodeId, data.cost);\n return newMessages;\n }\n\n // 处理响应正文\n handleResponse(messages: Messages[], data: any): Messages[] {\n const [newMessages, index, aiMsg] = this.ensureAIMessageExists(messages);\n const { contentType, content, success, errorMsg } = data;\n if (success) {\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 aiMsg.status = MessageStatus.failed;\n aiMsg.content.text = `<span style=\"color: red;\">❌ ${errorMsg}</span>`;\n }\n \n newMessages[index] = aiMsg;\n return newMessages;\n }\n\n // 处理完成\n handleFinish(messages: Messages[], data: any): Messages[] {\n const [index,_aiMsg] = this.findLastPendingAIMessage(messages);\n if (index === -1) return messages;\n \n const newMessages = [...messages];\n const msg = newMessages[index] as TextMessage;\n msg.execute = msg.execute || [];\n msg.execute.push({\n id: data?.data?.uniqueId || uuidV4(),\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 \n msg.status = MessageStatus.done;\n return newMessages;\n }\n\n // 处理响应数据\n processResponse(messages: Messages[], responseData: any): Messages[] {\n if (!responseData?.content && !responseData?.data) return messages;\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 const { action, data = {} } = response;\n\n switch (action) {\n case ActionType.suggest:\n return this.handleSuggestion(messages, data);\n \n case ActionType.reasoning:\n return this.handleReasoning(messages, data);\n\n case ActionType.reasoningEnd:\n return this.handleReasoningEnd(messages);\n\n case ActionType.componentStart:\n return this.handleComponentStart(messages, data);\n \n case ActionType.componentEnd:\n return this.handleComponentEnd(messages, data);\n \n case ActionType.recallKnowledgeStart:\n return this.handleRecallKnowledgeStart(messages, data);\n \n case ActionType.recallKnowledgeEnd:\n return this.handleRecallKnowledgeEnd(messages, data);\n \n case ActionType.invokeToolStart:\n return this.handleInvokeToolStart(messages, data);\n \n case ActionType.invokeToolEnd:\n return this.handleInvokeToolEnd(messages, data);\n \n case ActionType.response:\n return this.handleResponse(messages, data);\n \n case ActionType.finish:\n return this.handleFinish(messages, data);\n \n default:\n return messages;\n }\n }\n}\n\nconst useAgentGenerator = (params: UseAgentGeneratorProps) => {\n const {\n url,\n token,\n config,\n onError,\n onMessage,\n onSuccess,\n ...rest\n } = params;\n\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 const messageProcessor = useMemo(() => new MessageProcessor(textSpeed), [textSpeed]);\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) return;\n \n setMessages(prev => \n messageProcessor.processResponse(prev, responseData)\n );\n }, [responseData, messageProcessor]);\n\n // 添加对话(非交互触发)\n const setMessage = useCallback(async (messageType: string, content: any) => {\n switch (messageType) {\n case 'prologue': {\n setMessages(prev => {\n const prologueIndex = prev.findIndex(item => item.extra?.prologue);\n \n if (prologueIndex === -1) {\n const newMessage: TextMessage = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.assistant,\n status: MessageStatus.done,\n content: { text: content },\n extra: { prologue: true, noFooter: true },\n };\n return [newMessage, ...prev];\n }\n \n return prev.map(item => \n item.extra?.prologue && item.content && 'text' in item.content\n ? { ...item, content: { text: content } } as TextMessage\n : item\n );\n });\n break;\n }\n \n case 'suggest': {\n setMessages(prev => {\n const suggestIndex = prev.findIndex(item => item.type === 'SuggestionMessage');\n const prologueIndex = prev.findIndex(item => item.extra?.prologue);\n \n const newSuggestion: SuggestionMessage = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content,\n };\n \n if (suggestIndex === -1) {\n const newMessages = [...prev];\n const insertIndex = prologueIndex === -1 ? 0 : prologueIndex + 1;\n newMessages.splice(insertIndex, 0, newSuggestion);\n return newMessages;\n }\n \n return prev.map(item =>\n item.type === 'SuggestionMessage' \n ? { ...item, content } \n : item\n );\n });\n break;\n }\n \n default:\n console.warn(`Unknown message type: ${messageType}`);\n }\n }, []);\n\n // 简单对话\n const chat = async <T = any>(content: T, extra?: any, insert = true) => {\n if (insert) {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.user,\n status: MessageStatus.done,\n extra,\n content: { text: content as string },\n };\n\n setMessages(prev => {\n const newMessages = prev.filter(item => item.type !== 'SuggestionMessage');\n newMessages.push(newMessage);\n return newMessages;\n });\n }\n\n let requestBody: any = {\n appParams: {\n inputs_msg: content,\n },\n sessionId: currentSessionId,\n };\n\n start(\n `${url}/appouter/${appNo}/sendMsg?pt=${pt}&tc=${tc}`,\n requestBody,\n {\n Authorization: `Bearer ${token}`,\n },\n );\n };\n\n // 重新生成方法\n const reChat = useCallback(() => {\n setMessages(prev => {\n const newMessages = [...prev];\n \n // 删除最新 AI 消息\n const lastAIIndex = newMessages?.findLastIndex(\n m => m.role === MessageRole.assistant && m.type === 'TextMessage'\n );\n if (lastAIIndex !== -1) {\n newMessages.splice(lastAIIndex, 1);\n }\n \n // 删除建议消息\n const suggestIndex = newMessages.findIndex(item => item.type === 'SuggestionMessage');\n if (suggestIndex !== -1) {\n newMessages.splice(suggestIndex, 1);\n }\n \n // 找到最后一条用户消息重新发送\n const lastUserMsg = newMessages.findLast(\n m => m.role === MessageRole.user && m.type === 'TextMessage'\n ) as TextMessage | undefined;\n \n if (lastUserMsg?.content?.text) {\n setTimeout(() => {\n chat(lastUserMsg.content.text as string, lastUserMsg.extra, false);\n }, 0);\n }\n \n return newMessages;\n });\n }, [chat]);\n\n // 停止对话\n const stopChat = () => {\n stop();\n setMessages(prev => \n prev.map(m => {\n // 所有进行中的消息变更为结束\n if (m.status === MessageStatus.pending || m.status === MessageStatus.init) {\n const newMsg = { ...m, status: MessageStatus.done };\n if (m.type === 'TextMessage' && m.status === MessageStatus.init) {\n (newMsg as TextMessage).content.text = '<span style=\"color: #cbcbcb;\">用户已取消</span>';\n }\n return newMsg;\n }\n return m;\n })\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 execute: [],\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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"}
@@ -69,7 +69,8 @@ export interface ChatbotMessageFields {
69
69
  }
70
70
  export interface ActionItem {
71
71
  key?: string;
72
- icon: React.ReactNode;
72
+ icon?: React.ReactNode;
73
+ render?: (index: number, msg: any) => React.ReactNode;
73
74
  tooltip?: string;
74
75
  }
75
76
  /**
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/types/XAiChatbot.ts"],"sourcesContent":["import React, { ReactNode, RefObject, MouseEvent, ReactElement } 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 /** 输入框初始内容 */\n text?: string;\n /** 空状态渲染插槽 */\n empty?: ReactElement;\n /** 空状态图片 */\n emptyStateImage?: string;\n /** 空状态文案 */\n emptyStateText?: string;\n /** 输入框占位符 */\n placeholder?: string;\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 inputShow?: boolean;\n /** 消息顶部 */\n messageHeader?: ReactNode;\n }\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["../../../src/types/XAiChatbot.ts"],"sourcesContent":["import React, { ReactNode, RefObject, MouseEvent, ReactElement } 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 render?: (index: number, msg: any) => 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 /** 输入框初始内容 */\n text?: string;\n /** 空状态渲染插槽 */\n empty?: ReactElement;\n /** 空状态图片 */\n emptyStateImage?: string;\n /** 空状态文案 */\n emptyStateText?: string;\n /** 输入框占位符 */\n placeholder?: string;\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 inputShow?: boolean;\n /** 消息顶部 */\n messageHeader?: ReactNode;\n }\n"],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  import type { PromptsProps } from '@ant-design/x';
2
- export type MessageType = 'TextMessage' | 'ActionExecutionMessage' | 'ResultMessage' | 'AgentStateMessage' | 'ImageMessage' | 'SuggestionMessage';
2
+ export type MessageType = 'TextMessage' | 'ActionExecutionMessage' | 'ResultMessage' | 'AgentStateMessage' | 'SuggestionMessage';
3
3
  export declare enum MessageRole {
4
4
  user = "user",// 用户
5
5
  assistant = "assistant",// AI助手
@@ -70,19 +70,6 @@ export interface AgentStateMessage extends BaseMessage {
70
70
  state: any;
71
71
  running: boolean;
72
72
  }
73
- /**
74
- * 图片消息
75
- */
76
- export interface ImageMessage extends BaseMessage {
77
- type: 'ImageMessage';
78
- content: {
79
- format: string;
80
- bytes: string;
81
- execute?: ActionExecutionMessage[];
82
- };
83
- role: MessageRole;
84
- parentMessageId?: string;
85
- }
86
73
  /**
87
74
  * 提示消息
88
75
  */
@@ -100,12 +87,11 @@ export interface MessageInput extends BaseMessage {
100
87
  actionExecutionMessage?: Omit<ActionExecutionMessage, 'id' | 'createdAt' | 'type'>;
101
88
  resultMessage?: Omit<ResultMessage, 'id' | 'createdAt' | 'type'>;
102
89
  agentStateMessage?: Omit<AgentStateMessage, 'id' | 'createdAt' | 'type'>;
103
- imageMessage?: Omit<ImageMessage, 'id' | 'createdAt' | 'type'>;
104
90
  }
105
91
  /**
106
92
  * 消息列表中消息格式
107
93
  */
108
- export type Messages = TextMessage | ImageMessage | SuggestionMessage;
94
+ export type Messages = TextMessage | SuggestionMessage;
109
95
  export declare enum ActionAvailability {
110
96
  disabled = "disabled",// 不可用
111
97
  enabled = "enabled",// 可用
@@ -35,10 +35,6 @@ export var MessageStatus = /*#__PURE__*/function (MessageStatus) {
35
35
  * 智能体状态消息
36
36
  */
37
37
 
38
- /**
39
- * 图片消息
40
- */
41
-
42
38
  /**
43
39
  * 提示消息
44
40
  */
@@ -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 execute?: ActionExecutionMessage[]; // 智能体执行过程\n thinks?: string; // 思考过程\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 execute?: 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;;AAWA;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
+ {"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| '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 execute?: ActionExecutionMessage[]; // 智能体执行过程\n thinks?: string; // 思考过程\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 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}\n\n/**\n* 消息列表中消息格式\n*/\nexport type Messages = TextMessage | 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":"AASA,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;;AAWA;AACA;AACA;;AAWA;AACA;AACA;;AASA;AACA;AACA;;AAQA;AACA;AACA;;AAaA;AACA;AACA;;AAOA;AACA;AACA;AACA;;AAQA;AACA;AACA;;AAGA,WAAYC,kBAAkB,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA,OAGL;;AAGzB;AACA;AACA"}
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ export type INodeCategoryEnum = 'CONTROL' | 'LOGIC' | 'EXTERNAL' | 'MEMORY' | 'PLUGIN' | 'DEV_TOOL' | 'TEXT_TOOL' | 'IMAGE_TOOL' | 'VOICE_TOOL';
3
+ export interface INodeTemplate {
4
+ category: INodeCategoryEnum;
5
+ name: string;
6
+ code: string;
7
+ toolCode?: string;
8
+ hidden?: boolean;
9
+ icon?: React.ReactNode;
10
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../../src/types/node.ts"],"sourcesContent":["export type INodeCategoryEnum = 'CONTROL' | 'LOGIC' | 'EXTERNAL' | 'MEMORY' | 'PLUGIN' | 'DEV_TOOL' | 'TEXT_TOOL' | 'IMAGE_TOOL' | 'VOICE_TOOL';\n\nexport interface INodeTemplate {\n category: INodeCategoryEnum;\n name: string;\n code: string;\n toolCode?: string;\n hidden?: boolean;\n icon?: React.ReactNode;\n}"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import { INodeTemplate } from "../types/node";
2
+ export declare function getNodeTemplate(type: string, code?: string): INodeTemplate;
@@ -0,0 +1,141 @@
1
+ var nodeTemplates = [{
2
+ category: 'CONTROL',
3
+ name: '输入',
4
+ code: 'START'
5
+ }, {
6
+ category: 'CONTROL',
7
+ name: '输出',
8
+ code: 'END'
9
+ }, {
10
+ category: 'CONTROL',
11
+ name: '消息',
12
+ code: 'MESSAGE'
13
+ }, {
14
+ category: 'LOGIC',
15
+ name: '条件判断',
16
+ code: 'SWITCH'
17
+ }, {
18
+ category: 'LOGIC',
19
+ name: '意图识别',
20
+ code: 'CLASSIFICATION'
21
+ }, {
22
+ category: 'LOGIC',
23
+ name: '批处理',
24
+ code: 'ITERATOR'
25
+ }, {
26
+ category: 'EXTERNAL',
27
+ name: '大模型',
28
+ code: 'PROMPT_TEMPLATE'
29
+ }, {
30
+ category: 'EXTERNAL',
31
+ name: '智能体',
32
+ code: 'SKILL'
33
+ }, {
34
+ category: 'EXTERNAL',
35
+ name: '智能体',
36
+ code: 'AGENT',
37
+ hidden: true
38
+ }, {
39
+ category: 'MEMORY',
40
+ name: '混合检索',
41
+ hidden: true,
42
+ code: 'SEARCH_MIX'
43
+ }, {
44
+ category: 'MEMORY',
45
+ name: 'FAQ检索',
46
+ hidden: true,
47
+ code: 'SEARCH_KNOWLEDGE'
48
+ }, {
49
+ category: 'MEMORY',
50
+ name: '文档检索',
51
+ hidden: true,
52
+ code: 'SEARCH_DOCUMENT'
53
+ }, {
54
+ category: 'MEMORY',
55
+ name: '知识检索',
56
+ code: 'SEARCH_UNSTRUCTURED'
57
+ }, {
58
+ category: 'MEMORY',
59
+ name: '结构化检索',
60
+ code: 'SEARCH_STRUCTURE'
61
+ }, {
62
+ category: 'PLUGIN',
63
+ name: '插件',
64
+ code: 'PLUGIN_TOOL'
65
+ }, {
66
+ category: 'PLUGIN',
67
+ name: 'MCP',
68
+ code: 'PLUGIN_MCP'
69
+ }, {
70
+ category: 'DEV_TOOL',
71
+ name: 'HTTP调用',
72
+ code: 'API_AGENT'
73
+ }, {
74
+ category: 'DEV_TOOL',
75
+ name: '代码',
76
+ code: 'SCRIPT'
77
+ }, {
78
+ category: 'TEXT_TOOL',
79
+ name: '联网搜索',
80
+ code: 'NET_SEARCH'
81
+ }, {
82
+ category: 'TEXT_TOOL',
83
+ name: '简体转繁体',
84
+ code: 'TOOL',
85
+ toolCode: 'simple2Traditional'
86
+ }, {
87
+ category: 'TEXT_TOOL',
88
+ name: '繁体转简体',
89
+ code: 'TOOL',
90
+ toolCode: 'traditional2Simple'
91
+ }, {
92
+ category: 'TEXT_TOOL',
93
+ name: '表格生成',
94
+ code: 'TOOL',
95
+ toolCode: 'table_doc_save'
96
+ }, {
97
+ category: 'TEXT_TOOL',
98
+ name: '语言识别',
99
+ code: 'LANGUAGE_DETECTOR'
100
+ }, {
101
+ category: 'TEXT_TOOL',
102
+ name: '文字识别',
103
+ code: 'OCR'
104
+ }, {
105
+ category: 'IMAGE_TOOL',
106
+ name: '图片生成',
107
+ code: 'TOOL',
108
+ toolCode: 'pic_generator'
109
+ }, {
110
+ category: 'VOICE_TOOL',
111
+ name: '语音识别',
112
+ code: 'ASR'
113
+ }, {
114
+ category: 'VOICE_TOOL',
115
+ name: '语音合成',
116
+ code: 'TTS'
117
+ }];
118
+ var formatType = function formatType(type) {
119
+ if (type === 'RESPONSE') {
120
+ return 'END';
121
+ }
122
+ if (type === 'START_NODE' || type === 'INPUT') {
123
+ return 'START';
124
+ }
125
+ return type;
126
+ };
127
+ var nodeTemplateMap = nodeTemplates.reduce(function (acc, tpl) {
128
+ if (tpl.toolCode) {
129
+ acc[tpl.toolCode] = tpl;
130
+ }
131
+ acc[tpl.code] = tpl;
132
+ return acc;
133
+ }, {});
134
+ export function getNodeTemplate(type, code) {
135
+ type = formatType(type);
136
+ if (code) {
137
+ return nodeTemplateMap[code] || nodeTemplateMap[type];
138
+ }
139
+ return nodeTemplateMap[type];
140
+ }
141
+ //# sourceMappingURL=workflowNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["nodeTemplates","category","name","code","hidden","toolCode","formatType","type","nodeTemplateMap","reduce","acc","tpl","getNodeTemplate"],"sources":["../../../src/utils/workflowNode.ts"],"sourcesContent":["\nimport { INodeTemplate } from \"@/types/node\";\n\nconst nodeTemplates: INodeTemplate[] = [{\n category: 'CONTROL',\n name: '输入',\n code: 'START',\n}, {\n category: 'CONTROL',\n name: '输出',\n code: 'END',\n}, {\n category: 'CONTROL',\n name: '消息',\n code: 'MESSAGE',\n}, {\n category: 'LOGIC',\n name: '条件判断',\n code: 'SWITCH',\n}, {\n category: 'LOGIC',\n name: '意图识别',\n code: 'CLASSIFICATION',\n}, {\n category: 'LOGIC',\n name: '批处理',\n code: 'ITERATOR',\n}, {\n category: 'EXTERNAL',\n name: '大模型',\n code: 'PROMPT_TEMPLATE',\n}, {\n category: 'EXTERNAL',\n name: '智能体',\n code: 'SKILL',\n}, {\n category: 'EXTERNAL',\n name: '智能体',\n code: 'AGENT',\n hidden: true,\n}, {\n category: 'MEMORY',\n name: '混合检索',\n hidden: true,\n code: 'SEARCH_MIX',\n}, {\n category: 'MEMORY',\n name: 'FAQ检索',\n hidden: true,\n code: 'SEARCH_KNOWLEDGE',\n}, {\n category: 'MEMORY',\n name: '文档检索',\n hidden: true,\n code: 'SEARCH_DOCUMENT',\n}, {\n category: 'MEMORY',\n name: '知识检索',\n code: 'SEARCH_UNSTRUCTURED',\n}, {\n category: 'MEMORY',\n name: '结构化检索',\n code: 'SEARCH_STRUCTURE',\n}, {\n category: 'PLUGIN',\n name: '插件',\n code: 'PLUGIN_TOOL',\n}, {\n category: 'PLUGIN',\n name: 'MCP',\n code: 'PLUGIN_MCP',\n}, {\n category: 'DEV_TOOL',\n name: 'HTTP调用',\n code: 'API_AGENT',\n}, {\n category: 'DEV_TOOL',\n name: '代码',\n code: 'SCRIPT',\n}, {\n category: 'TEXT_TOOL',\n name: '联网搜索',\n code: 'NET_SEARCH',\n}, {\n category: 'TEXT_TOOL',\n name: '简体转繁体',\n code: 'TOOL',\n toolCode: 'simple2Traditional',\n}, {\n category: 'TEXT_TOOL',\n name: '繁体转简体',\n code: 'TOOL',\n toolCode: 'traditional2Simple',\n}, {\n category: 'TEXT_TOOL',\n name: '表格生成',\n code: 'TOOL',\n toolCode: 'table_doc_save',\n}, {\n category: 'TEXT_TOOL',\n name: '语言识别',\n code: 'LANGUAGE_DETECTOR',\n}, {\n category: 'TEXT_TOOL',\n name: '文字识别',\n code: 'OCR',\n}, {\n category: 'IMAGE_TOOL',\n name: '图片生成',\n code: 'TOOL',\n toolCode: 'pic_generator',\n}, {\n category: 'VOICE_TOOL',\n name: '语音识别',\n code: 'ASR',\n}, {\n category: 'VOICE_TOOL',\n name: '语音合成',\n code: 'TTS',\n}];\n\nconst formatType = (type: string) => {\n if (type === 'RESPONSE') {\n return 'END';\n }\n if (type === 'START_NODE' || type === 'INPUT') {\n return 'START';\n }\n return type;\n};\n\nconst nodeTemplateMap = nodeTemplates.reduce<Record<string, INodeTemplate>>((acc, tpl) => {\n if (tpl.toolCode) {\n acc[tpl.toolCode] = tpl;\n }\n acc[tpl.code] = tpl;\n return acc;\n}, {});\n\n\nexport function getNodeTemplate(type: string, code?: string) {\n type = formatType(type);\n if (code) {\n return nodeTemplateMap[code] || nodeTemplateMap[type];\n }\n return nodeTemplateMap[type];\n}\n"],"mappings":"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"}