@ai-group/chat-sdk 3.6.3 → 3.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/FileGallery/index.d.ts +0 -30
- package/dist/cjs/components/FileGallery/index.js +287 -209
- package/dist/cjs/components/FileGallery/index.js.map +2 -2
- package/dist/cjs/components/FileGallery/styles.d.ts +5 -0
- package/dist/cjs/components/FileGallery/styles.js +106 -0
- package/dist/cjs/components/FileGallery/styles.js.map +2 -2
- package/dist/cjs/components/XAdkProvider/compound/Sender.js +3 -2
- package/dist/cjs/components/XAdkProvider/compound/Sender.js.map +2 -2
- package/dist/cjs/components/XAdkSender/index.js +1 -0
- package/dist/cjs/components/XAdkSender/index.js.map +2 -2
- package/dist/cjs/hooks/useADKChat.js +392 -157
- package/dist/cjs/hooks/useADKChat.js.map +3 -3
- package/dist/cjs/types/FileGallery.d.ts +41 -0
- package/dist/cjs/types/FileGallery.js.map +1 -1
- package/dist/cjs/types/XAdkProvider.d.ts +4 -0
- package/dist/cjs/types/XAdkProvider.js.map +1 -1
- package/dist/esm/components/FileGallery/index.d.ts +0 -30
- package/dist/esm/components/FileGallery/index.js +362 -364
- package/dist/esm/components/FileGallery/index.js.map +1 -1
- package/dist/esm/components/FileGallery/styles.d.ts +5 -0
- package/dist/esm/components/FileGallery/styles.js +10 -2
- package/dist/esm/components/FileGallery/styles.js.map +1 -1
- package/dist/esm/components/XAdkProvider/compound/Sender.js +5 -3
- package/dist/esm/components/XAdkProvider/compound/Sender.js.map +1 -1
- package/dist/esm/components/XAdkSender/index.js +1 -0
- package/dist/esm/components/XAdkSender/index.js.map +1 -1
- package/dist/esm/hooks/useADKChat.js +347 -130
- package/dist/esm/hooks/useADKChat.js.map +1 -1
- package/dist/esm/types/FileGallery.d.ts +41 -0
- package/dist/esm/types/FileGallery.js.map +1 -1
- package/dist/esm/types/XAdkProvider.d.ts +4 -0
- package/dist/esm/types/XAdkProvider.js.map +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useCallback","useMemo","useRef","useState","fetchEventSource","EventStreamContentType","message","v4","SESSION_PAGE_SIZE","API_SUCCESS_CODE","SuccessCode","ErrorCode","fetchAppConfig","fetchSessionList","fetchSessionDetail","closeSession","updateSessionTitle","addFeedback","safeJsonParse","combineTextParts","parts","result","combinedTextPart","_iterator","_createForOfIteratorHelper","_step","s","n","done","part","value","isPureText","text","fileData","thought","_objectSpread","push","undefined","err","e","f","useADKChat","_ref","_ref$url","url","window","location","origin","token","_ref$config","config","_ref$type","type","_ref$enabled","enabled","strategies","onError","onMessage","onSuccess","onStream","_useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","sessionLoading","setSessionLoading","sendingRef","ctrl","tokenRef","current","_ref2","appNo","showFirstSession","_useState5","_useState6","appInfo","setAppInfo","_useState7","_useState8","initialized","setInitialized","_useState9","_useState10","sessionList","setSessionList","_useState11","_useState12","currentSessionId","setCurrentSessionId","_useState13","total","pageNum","pageSize","_useState14","sessionPagination","setSessionPagination","_useState15","_useState16","prologue","setPrologue","_useState17","_useState18","suggestedQuestions","setSuggestedQuestions","_useState19","_useState20","messages","setMessages","stateDeltaRef","backgroundRef","Map","messagesRef","currentSessionIdRef","mergedMessages","fnResMap","forEach","msg","functionResponse","_msg$functionResponse","id","map","functionCall","_msg$functionCall","textMsgRef","eventDataRef","insertMessage","prev","lastMessage","length","isLoading","concat","_toConsumableArray","slice","insertSuggestedQuestions","suggested_questions","arguments","insertPrologue","updateMessage","m","withEventMeta","event","_event$modelCode","_event$usageMetadata","_event$finishReason","modelCode","usageMetadata","finishReason","raw","updateLastBotEventMeta","next","index","findLastIndex","role","storeEvents","_event$actions","title","actions","artifactDelta","name","executableCode","_part$executableCode$","code","codeExecutionResult","outcome","errorMessage","updatedEvent","newEventData","set","storeMessage","author","invocationId","eventId","timestamp","isLike","inlineData","displayName","data","mimeType","_event$groundingMetad","groundingMetadata","searchEntryPoint","renderedContent","Object","keys","processPart","_event$groundingMetad2","ignore","newChunk","newMessage","partial","processFollowupPart","_event$content","content","processErrorMessage","chunkJson","processActionArtifact","sendMessageRequest","values","Promise","resolve","targetSessionId","sessionId","abort","newCtrl","AbortController","signal","addEventListener","once","requestUrl","bgTextMsg","method","body","JSON","stringify","openWhenHidden","headers","stream","Authorization","onopen","response","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","ok","get","status","AUTH_ERROR","stop","onmessage","rawData","error","warning","isBackground","bg","_iterator2","_step2","_chunkJson","_bgTextMsg","_iterator3","_step3","_chunkJson2","onclose","_textMsgRef$current","onerror","console","startChat","_ref4","_callee2","_ref3","_ref3$text","_ref3$files","files","_callee2$","_context2","abrupt","trim","temp","file","_file$response","_file$response2","_file$response3","fileName","fileUri","tempUrl","fileUrl","_file$response4","_file$response5","_file$response6","_file$response7","_file$response8","_file$response9","fileId","fileType","stateDelta","finish","initAppConversations","_x","apply","reChat","_ref5","_callee3","lastUserIndex","newMessages","lastUserMessage","_lastUserMessage$text","_lastUserMessage$file","_callee3$","_context3","confirmFnCall","fnCall","confirmed","_strategies$createFun","_strategies$createFun2","createFunctionResponse","call","suggestChat","stopChat","_ctrl$current","clearChat","_appInfo$onboardingIn","_appInfo$onboardingIn2","newSessionId","onboardingInfo","formatMessages","isReplace","mapped","item","Array","isArray","toLowerCase","filter","p","Boolean","textParts","fileDataParts","otherParts","_iterator4","_step4","functionCallMsg","find","_msg$functionCall2","_part$functionRespons","setCurrentSession","_ref6","_callee4","prevSessionId","_yield$fetchSessionDe","_appInfo$onboardingIn3","_appInfo$onboardingIn4","_callee4$","_context4","delete","sent","_x2","_ref7","_callee5","fetchDetail","_yield$fetchSessionLi","_yield$fetchSessionLi2","pagination","formatSessions","_data$","_appInfo$onboardingIn5","_appInfo$onboardingIn6","_args5","_callee5$","_context5","key","label","Date","startTime","getTime","meta","APP_MESSAGES_INIT_SUCCESS","t0","NETWORK_ERROR","deleteSession","_ref8","_callee6","_yield$closeSession","_callee6$","_context6","_x3","likeMessage","_ref9","_callee7","feedbackData","_yield$addFeedback","_callee7$","_context7","requestId","_x4","_x5","_x6","updateSession","_ref10","_callee8","_yield$updateSessionT","_callee8$","_context8","_x7","_x8","initConfig","_ref11","_callee9","_yield$fetchAppConfig","_callee9$","_context9","APP_CONFIG_INIT_SUCCESS","_ctrl$current2","_bg$ctrl","clear","suggestions","setStateDelta","delta"],"sources":["../../../src/hooks/useADKChat.ts"],"sourcesContent":["import { useEffect, useCallback, useMemo, useRef, useState } from \"react\";\nimport {\n fetchEventSource,\n EventStreamContentType,\n} from \"@microsoft/fetch-event-source\";\nimport { message } from \"antd\";\nimport { v4 } from \"uuid\";\nimport { SESSION_PAGE_SIZE, API_SUCCESS_CODE } from \"@/constants\";\nimport {\n SuccessCode,\n ErrorCode,\n DebugOptions,\n FunctionCall,\n SendContent,\n SessionData,\n AgentRunRequest,\n Event,\n FunctionResponse,\n IMessage,\n Part,\n} from \"@/types\";\nimport {\n fetchAppConfig,\n fetchSessionList,\n fetchSessionDetail,\n closeSession,\n updateSessionTitle,\n addFeedback,\n type ChatConfig,\n} from \"@/services/api\";\nimport { safeJsonParse } from \"@/utils\";\n\nconst combineTextParts = (parts: Part[]) => {\n const result: Part[] = [];\n let combinedTextPart: Part | undefined;\n\n // eslint-disable-next-line no-restricted-syntax\n for (const part of parts) {\n // 纯文本 part(没有 fileData 等其他字段)才合并\n const isPureText = part.text && !part.fileData;\n if (isPureText) {\n // 如果没有 combined 或 combined 思考类型跟当前 part 不同,则创建新的合并引用\n if (!combinedTextPart || combinedTextPart.thought !== part.thought) {\n combinedTextPart = { ...part };\n result.push(combinedTextPart);\n } else {\n combinedTextPart.text =\n (combinedTextPart.text || \"\") + (part.text || \"\");\n }\n } else {\n combinedTextPart = undefined;\n result.push(part);\n }\n }\n return result;\n};\n\n// 后台会话连接状态\ninterface BackgroundSession {\n ctrl: AbortController;\n messages: IMessage[];\n loading: boolean;\n textMsgRef: IMessage | null;\n}\n\nfunction useADKChat({\n url = window.location.origin,\n token,\n config = {},\n type = \"agentDebug\",\n enabled = true, // ← 新增: 是否启用 Hook\n strategies,\n onError,\n onMessage,\n onSuccess,\n onStream,\n}: DebugOptions) {\n const [loading, setLoading] = useState(false);\n const [sessionLoading, setSessionLoading] = useState(false);\n const sendingRef = useRef(false); // 同步锁,防止快速重复点击\n const ctrl = useRef<AbortController | null>(null);\n const tokenRef = useRef(token);\n tokenRef.current = token;\n // 应用配置\n const { appNo, showFirstSession } = config || {};\n const [appInfo, setAppInfo] = useState<ChatConfig | null>(null);\n // 初始化完成\n const [initialized, setInitialized] = useState(false);\n // 会话记录\n const [sessionList, setSessionList] = useState<SessionData[]>([]);\n // 当前会话\n const [currentSessionId, setCurrentSessionId] = useState<string>(() => v4());\n // 会话分页设置\n const [sessionPagination, setSessionPagination] = useState({\n total: 0,\n pageNum: 1,\n pageSize: SESSION_PAGE_SIZE,\n });\n // 开场白\n const [prologue, setPrologue] = useState<string>(\"\");\n // 建议问题\n const [suggestedQuestions, setSuggestedQuestions] = useState<string[]>([]);\n const [messages, setMessages] = useState<IMessage[]>([]);\n // 用户自定义业务参数 (stateDelta),每次发送请求时携带\n const stateDeltaRef = useRef<Record<string, any> | undefined>(undefined);\n\n // ===== 多会话后台连接管理 =====\n const backgroundRef = useRef<Map<string, BackgroundSession>>(new Map());\n const messagesRef = useRef<IMessage[]>(messages);\n messagesRef.current = messages;\n const currentSessionIdRef = useRef<string>(currentSessionId);\n currentSessionIdRef.current = currentSessionId;\n const mergedMessages = useMemo(() => {\n const fnResMap: Record<string, FunctionResponse> = {};\n messages.forEach((msg) => {\n if (msg.functionResponse) {\n fnResMap[msg?.functionResponse?.id || \"\"] = msg.functionResponse;\n }\n });\n return messages.map((msg) => {\n if (msg.functionCall) {\n return {\n ...msg,\n functionResponse: fnResMap[msg?.functionCall?.id || \"\"],\n };\n }\n return msg;\n });\n }, [messages]);\n const textMsgRef = useRef<IMessage>(null);\n const eventDataRef = useRef<Map<string, any>>(new Map());\n\n // 插入消息\n const insertMessage = useCallback((msg: IMessage) => {\n setMessages((prev) => {\n const lastMessage = prev[prev.length - 1];\n if (lastMessage?.isLoading) {\n return [...prev.slice(0, -1), msg, lastMessage];\n }\n return [...prev, msg];\n });\n }, []);\n\n // 初始化开场白预设置问题\n const insertSuggestedQuestions = (suggested_questions: string[] = []) => {\n if (!suggested_questions?.length) return;\n // 无消息内容 且 有建议问题时\n if (messages.length === 0 && suggested_questions.length) {\n setSuggestedQuestions(suggested_questions);\n }\n };\n\n // 初始化开场白\n const insertPrologue = (prologue: string) => {\n if (prologue) {\n setPrologue(prologue);\n }\n };\n\n // 更新消息\n const updateMessage = useCallback((msg: IMessage) => {\n setMessages((prev) => {\n return prev.map((m) => {\n if (m.id === msg.id) {\n return msg;\n }\n return m;\n });\n });\n }, []);\n\n const withEventMeta = useCallback((msg: IMessage, event: Event): IMessage => {\n return {\n ...msg,\n modelCode: event.modelCode ?? msg.modelCode,\n usageMetadata: event.usageMetadata ?? msg.usageMetadata,\n finishReason: event.finishReason ?? msg.finishReason,\n raw: {\n ...(msg.raw || {}),\n ...event,\n },\n };\n }, []);\n\n const updateLastBotEventMeta = useCallback(\n (event: Event) => {\n if (!event.modelCode && !event.usageMetadata && !event.finishReason)\n return;\n\n setMessages((prev) => {\n const next = [...prev];\n const index = next.findLastIndex((msg) => msg.role === \"bot\");\n if (index < 0) return prev;\n\n next[index] = withEventMeta(next[index], event);\n return next;\n });\n },\n [withEventMeta],\n );\n\n // 存储事件\n const storeEvents = useCallback((part: Part | null, event: any) => {\n let title = \"\";\n\n if (part == null && event.actions?.artifactDelta) {\n title += \"eventAction: artifact\";\n } else if (part) {\n if (part.text) {\n title += `text:${part.text}`;\n } else if (part.functionCall) {\n title += `functionCall:${part.functionCall.name}`;\n } else if (part.functionResponse) {\n title += `functionResponse:${part.functionResponse.name}`;\n } else if (part.executableCode) {\n title += `executableCode:${part.executableCode.code?.slice(0, 10)}`;\n } else if (part.codeExecutionResult) {\n title += `codeExecutionResult:${part.codeExecutionResult.outcome}`;\n } else if (part.errorMessage) {\n title += `errorMessage:${part.errorMessage}`;\n }\n }\n\n const updatedEvent = { ...event, title };\n\n const newEventData = new Map(eventDataRef.current);\n newEventData.set(event.id, updatedEvent);\n eventDataRef.current = newEventData;\n }, []);\n\n // 存储消息\n const storeMessage = useCallback(\n (part: Part | null, event: Event, role: \"user\" | \"bot\") => {\n const msg: IMessage = {\n id: v4(),\n author: event.author,\n invocationId: event.invocationId,\n eventId: event.id,\n timestamp: event.timestamp,\n isLike: event.isLike || 0,\n role,\n modelCode: event.modelCode,\n usageMetadata: event.usageMetadata,\n finishReason: event.finishReason,\n raw: event,\n };\n\n if (part) {\n if (part.inlineData) {\n msg.inlineData = {\n displayName: part.inlineData.displayName,\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\n };\n } else if (part.text) {\n msg.text = part.text;\n msg.thought = part.thought;\n\n if (event?.groundingMetadata?.searchEntryPoint?.renderedContent) {\n msg.renderedContent =\n event.groundingMetadata.searchEntryPoint.renderedContent;\n }\n } else if (part.fileData) {\n msg.fileData = [part.fileData];\n } else if (part.functionCall) {\n msg.functionCall = part.functionCall;\n } else if (part.functionResponse) {\n msg.functionResponse = part.functionResponse;\n } else if (part.executableCode) {\n msg.executableCode = part.executableCode;\n } else if (part.codeExecutionResult) {\n msg.codeExecutionResult = part.codeExecutionResult;\n }\n }\n\n if (part && Object.keys(part).length > 0) {\n insertMessage(msg);\n }\n },\n [insertMessage],\n );\n\n // 处理消息部分(关键更新)\n const processPart = useCallback(\n (event: Event, part: Part, ignore: boolean = false) => {\n const renderedContent =\n event.groundingMetadata?.searchEntryPoint?.renderedContent;\n if (part.text) {\n if (ignore) return;\n const newChunk = part.text;\n\n if (\n !textMsgRef.current ||\n textMsgRef.current.thought !== part.thought\n ) {\n const newMessage: IMessage = {\n id: v4(),\n author: event.author,\n invocationId: event.invocationId,\n eventId: event.id,\n timestamp: event.timestamp,\n role: \"bot\",\n text: newChunk,\n isLike: event.isLike || 0,\n thought: part.thought,\n modelCode: event.modelCode,\n usageMetadata: event.usageMetadata,\n finishReason: event.finishReason,\n raw: event,\n };\n\n if (renderedContent) {\n newMessage.renderedContent = renderedContent;\n }\n\n textMsgRef.current = newMessage;\n // 存储原数据\n storeEvents(part, event);\n // 插入消息\n insertMessage(newMessage);\n } else {\n if (renderedContent) {\n textMsgRef.current = {\n ...textMsgRef.current,\n renderedContent,\n };\n }\n textMsgRef.current = {\n ...withEventMeta(textMsgRef.current, event),\n text: (textMsgRef.current.text || \"\") + newChunk,\n };\n updateMessage(textMsgRef.current);\n if (event.partial === false) {\n storeEvents(part, event);\n textMsgRef.current = null;\n }\n }\n } else {\n textMsgRef.current = null;\n storeEvents(part, event);\n storeMessage(part, event, \"bot\");\n }\n },\n [storeEvents, storeMessage, insertMessage, updateMessage, withEventMeta],\n );\n\n // 处理建议类消息\n const processFollowupPart = useCallback(\n (event: Event) => {\n // 获取建议类消息的文本内容\n const part = event?.content?.parts?.[0] || null;\n const text = part?.text || \"\";\n storeEvents(part, event);\n if (text) {\n setSuggestedQuestions((prev) => [...prev, text]);\n }\n },\n [storeEvents, insertMessage],\n );\n\n // 处理错误消息\n const processErrorMessage = useCallback(\n (chunkJson: any) => {\n storeEvents(null, chunkJson);\n insertMessage({\n id: v4(),\n text: chunkJson.errorMessage,\n role: \"bot\",\n });\n },\n [storeEvents, insertMessage],\n );\n\n // 处理动作和制品\n const processActionArtifact = useCallback(\n (event: any) => {\n if (event.actions && event.actions.artifactDelta) {\n storeEvents(null, event);\n storeMessage(null, event, \"bot\");\n }\n },\n [storeEvents, storeMessage],\n );\n\n // 发送消息请求\n const sendMessageRequest = useCallback(\n (values: AgentRunRequest) => {\n return new Promise<void>((resolve) => {\n const targetSessionId = values.sessionId || currentSessionIdRef.current;\n\n // 只 abort 同一 session 的旧连接\n if (targetSessionId === currentSessionIdRef.current && ctrl.current) {\n ctrl.current.abort();\n }\n const newCtrl = new AbortController();\n if (targetSessionId === currentSessionIdRef.current) {\n setLoading(true);\n ctrl.current = newCtrl;\n }\n\n // 当 signal 被外部 abort(stopChat)时,确保外层 Promise 被 resolve\n // 否则 startChat 中的 await 会永远挂起,sendingRef 无法重置为 false\n newCtrl.signal.addEventListener(\n \"abort\",\n () => {\n resolve();\n },\n { once: true },\n );\n\n const requestUrl = `${url}/api/gateway-web/openApi/v1/aizt/app/${appNo}/sendMsgStreaming`;\n\n // 后台流式文本拼接\n let bgTextMsg: IMessage | null = null;\n\n fetchEventSource(requestUrl, {\n method: \"POST\",\n signal: newCtrl.signal,\n body: JSON.stringify(values),\n openWhenHidden: true,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Cache-Control\": \"no-cache\",\n stream: \"true\",\n Authorization: `Bearer ${tokenRef.current}`,\n },\n async onopen(response) {\n if (\n response.ok &&\n response.headers.get(\"content-type\") === EventStreamContentType\n ) {\n // everything's good\n } else if (response.status === 401 || response.status === 403) {\n setLoading(false);\n onError?.({\n code: ErrorCode.AUTH_ERROR,\n message:\n response.status === 401\n ? \"认证失败,token 无效或已过期\"\n : \"无权限访问该资源\",\n });\n resolve();\n } else if (\n response.status >= 400 &&\n response.status < 500 &&\n response.status !== 429\n ) {\n resolve();\n } else {\n resolve();\n }\n },\n onmessage: (event) => {\n const rawData = safeJsonParse(event.data, {});\n\n // 处理新的数据格式: { data: {...}, result: {...} }\n let chunkJson: Event = rawData;\n\n if (rawData.data && rawData.result) {\n // 转换为旧格式\n chunkJson = {\n ...rawData.data,\n content: rawData.data,\n invocationId: rawData.result.invocationId,\n sessionId: rawData.result.sessionId,\n id: rawData.result.invocationId,\n };\n }\n\n if (chunkJson.error) {\n message.warning(chunkJson.error);\n return;\n }\n\n // 判断是否为后台 session\n const isBackground =\n currentSessionIdRef.current !== targetSessionId;\n\n if (isBackground) {\n // 后台 session:更新 backgroundRef 中的消息\n const bg = backgroundRef.current.get(targetSessionId);\n if (!bg) return;\n\n if (chunkJson.content) {\n if (chunkJson.content.role === \"followup\") return;\n for (const part of combineTextParts(chunkJson.content.parts)) {\n const isPureText = part.text && !part.fileData;\n if (isPureText) {\n if (chunkJson?.partial === false) continue;\n const newChunk = part.text || \"\";\n if (!bgTextMsg || bgTextMsg?.thought !== part.thought) {\n const newMessage: IMessage = {\n id: v4(),\n author: chunkJson.author,\n invocationId: chunkJson.invocationId,\n eventId: chunkJson.id,\n timestamp: chunkJson.timestamp,\n role: \"bot\",\n text: newChunk,\n thought: part.thought,\n };\n bgTextMsg = newMessage;\n bg.messages = [...bg.messages, newMessage];\n } else {\n bgTextMsg = {\n ...bgTextMsg,\n text: (bgTextMsg.text || \"\") + newChunk,\n };\n bg.messages = bg.messages.map((m) =>\n m.id === bgTextMsg!.id ? bgTextMsg! : m,\n );\n if (chunkJson.finishReason === \"stop\") {\n bgTextMsg = null;\n }\n }\n } else {\n bgTextMsg = null;\n const msg: IMessage = {\n id: v4(),\n author: chunkJson.author,\n invocationId: chunkJson.invocationId,\n eventId: chunkJson.id,\n timestamp: chunkJson.timestamp,\n role: \"bot\",\n };\n if (part.functionCall) msg.functionCall = part.functionCall;\n else if (part.functionResponse)\n msg.functionResponse = part.functionResponse;\n else if (part.executableCode)\n msg.executableCode = part.executableCode;\n else if (part.codeExecutionResult)\n msg.codeExecutionResult = part.codeExecutionResult;\n else {\n msg.text = part.text;\n msg.thought = part.thought;\n if (part.fileData) msg.fileData = [part.fileData];\n }\n bg.messages = [...bg.messages, msg];\n }\n }\n } else if (chunkJson.errorMessage) {\n bg.messages = [\n ...bg.messages,\n { id: v4(), text: chunkJson.errorMessage, role: \"bot\" },\n ];\n }\n bg.textMsgRef = bgTextMsg;\n return;\n }\n\n // 前台 session:正常处理\n onStream?.(chunkJson);\n updateLastBotEventMeta(chunkJson);\n if (chunkJson.content) {\n // 建议类消息单独处理\n if (chunkJson.content.role === \"followup\") {\n processFollowupPart(chunkJson);\n return;\n }\n // eslint-disable-next-line no-restricted-syntax\n for (const part of combineTextParts(chunkJson.content.parts)) {\n // partial为 true 时忽略该条消息文本\n processPart(chunkJson, part, chunkJson?.partial === false);\n }\n } else if (chunkJson.errorMessage) {\n processErrorMessage(chunkJson);\n } else if (chunkJson.actions) {\n processActionArtifact(chunkJson);\n }\n },\n onclose: () => {\n const isBackground =\n currentSessionIdRef.current !== targetSessionId;\n if (isBackground) {\n const bg = backgroundRef.current.get(targetSessionId);\n if (bg) {\n bg.loading = false;\n bg.textMsgRef = null;\n }\n } else {\n setLoading(false);\n if (textMsgRef.current) {\n onMessage?.(textMsgRef.current?.text || \"\", textMsgRef.current);\n }\n textMsgRef.current = null;\n }\n resolve();\n },\n onerror: (error) => {\n const isBackground =\n currentSessionIdRef.current !== targetSessionId;\n if (isBackground) {\n const bg = backgroundRef.current.get(targetSessionId);\n if (bg) bg.loading = false;\n } else {\n setLoading(false);\n }\n resolve();\n console.error(\"EventSource failed:\", error);\n throw error;\n },\n });\n });\n },\n [\n type,\n currentSessionId,\n processActionArtifact,\n processErrorMessage,\n processPart,\n updateLastBotEventMeta,\n ],\n );\n\n // 发送会话\n const startChat = async ({\n text = \"\",\n files = [],\n functionResponse,\n }: SendContent) => {\n if (loading || sendingRef.current) return;\n if (!text.trim() && !files?.length && !functionResponse) return;\n sendingRef.current = true;\n // 清空建议问题\n setSuggestedQuestions([]);\n // 发送消息\n setMessages((prev) => {\n let temp = [...prev];\n // 如果 text 存在\n if (text.trim()) {\n temp.push({\n id: v4(),\n role: \"user\",\n text,\n });\n }\n // 如果file 存在\n if (files.length > 0) {\n temp.push({\n id: v4(),\n role: \"user\",\n fileData: files.map((file) => ({\n displayName: file.fileName || file.name,\n mimeType: file.mimeType || file.response?.mimeType,\n fileUri:\n file.tempUrl || file.response?.fileUrl || file.response?.tempUrl,\n })),\n });\n }\n // 如果 functionResponse 存在\n if (functionResponse) {\n temp.push({\n id: v4(),\n role: \"user\",\n functionResponse,\n });\n }\n return temp;\n });\n try {\n await sendMessageRequest({\n stream: true,\n sessionId: currentSessionId,\n content: {\n role: \"user\",\n parts: functionResponse ? [{ functionResponse }] : [{ text }],\n },\n files: files.map((file) => ({\n fileName: file.fileName || file.response?.fileName,\n fileId: file.fileId || file.response?.fileId,\n tempUrl:\n file.tempUrl || file.response?.fileUrl || file.response?.tempUrl,\n type: file.type || file.response?.fileType,\n mimeType: file.mimeType || file.response?.mimeType,\n })),\n ...(stateDeltaRef.current !== undefined && {\n stateDelta: stateDeltaRef.current,\n }),\n });\n } finally {\n sendingRef.current = false;\n }\n // 获取聊天记录\n initAppConversations();\n };\n\n // 重新发送会话\n const reChat = async () => {\n if (loading || sendingRef.current) return;\n if (messages.length === 0) return;\n sendingRef.current = true;\n // 清空建议问题\n setSuggestedQuestions([]);\n\n // 找到最后一条用户消息的索引,删除其后所有 bot 消息\n const lastUserIndex = messages.findLastIndex(\n (msg) => msg.role === \"user\" && !msg.functionResponse,\n );\n if (lastUserIndex === -1) {\n sendingRef.current = false;\n return;\n }\n\n const newMessages = messages.slice(0, lastUserIndex + 1);\n setMessages(newMessages);\n\n const lastUserMessage = newMessages[lastUserIndex];\n const { text = \"\", fileData = [] } = lastUserMessage;\n\n try {\n await sendMessageRequest({\n stream: true,\n sessionId: currentSessionId,\n content: {\n role: \"user\",\n parts: [{ text }],\n },\n files: fileData?.map((file) => ({\n fileName: file.displayName,\n tempUrl: file.fileUri,\n mimeType: file.mimeType,\n })),\n ...(stateDeltaRef.current !== undefined && {\n stateDelta: stateDeltaRef.current,\n }),\n });\n } finally {\n sendingRef.current = false;\n }\n };\n\n // 确认函数调用\n const confirmFnCall = (fnCall: FunctionCall, confirmed: boolean) => {\n const functionResponse = strategies?.createFunctionResponse?.(\n fnCall,\n confirmed,\n ) ?? {\n id: fnCall.id,\n name: fnCall.name,\n response: { confirmed },\n };\n startChat({ functionResponse });\n };\n\n // 使用建议问题\n const suggestChat = (text: string) => {\n if (loading) return;\n if (!text.trim()) return;\n setSuggestedQuestions([]);\n startChat({ text });\n };\n\n // 停止会话(只中断前台连接)\n const stopChat = useCallback(() => {\n ctrl.current?.abort();\n ctrl.current = null;\n setLoading(false);\n textMsgRef.current = null;\n }, []);\n\n // 清除/重置会话\n const clearChat = () => {\n const newSessionId = v4();\n setCurrentSessionId(newSessionId);\n // 重置聊天内容\n stopChat();\n setPrologue(appInfo?.onboardingInfo?.prologue || \"\");\n setMessages([]);\n setSuggestedQuestions(appInfo?.onboardingInfo?.suggested_questions || []);\n };\n\n // 格式化会话记录\n const formatMessages = (messages: any[], isReplace = false) => {\n const mapped: IMessage[] = [];\n messages.forEach((item) => {\n if (!item || !item.content || !Array.isArray(item.content.parts)) return;\n\n const role =\n (item.content.role || \"\").toLowerCase() === \"user\" ? \"user\" : \"bot\";\n const parts = Array.isArray(item.content.parts)\n ? item.content.parts.filter((p: any) => {\n if (!p) return false;\n return Boolean(\n p.text ||\n p.inlineData ||\n p.functionCall ||\n p.functionResponse ||\n p.fileData ||\n p.executableCode ||\n p.codeExecutionResult ||\n p.errorMessage,\n );\n })\n : [];\n\n if (parts.length === 0) return;\n\n // 将同一条历史消息的 text/fileData parts 合并到一条 IMessage,避免拆分显示\n const textParts = parts.filter(\n (p: any) => p.text || p.errorMessage || p.inlineData,\n );\n const fileDataParts = parts.filter((p: any) => p.fileData);\n const otherParts = parts.filter(\n (p: any) => !p.text && !p.errorMessage && !p.inlineData && !p.fileData,\n );\n\n // 如果有 text/fileData,合并为一条消息\n if (textParts.length > 0 || fileDataParts.length > 0) {\n const msg: IMessage = {\n id: v4(),\n author: item.author,\n invocationId: item.invocationId,\n eventId: item.id,\n timestamp: item.timestamp,\n isLike: item.isLike,\n role,\n modelCode: item.modelCode,\n usageMetadata: item.usageMetadata,\n finishReason: item.finishReason,\n raw: item,\n } as IMessage;\n\n for (const part of textParts) {\n if (part.inlineData) {\n msg.inlineData = {\n displayName: part.inlineData.displayName,\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\n } as any;\n }\n if (part.text) {\n msg.text = (msg.text ? msg.text + \"\\n\" : \"\") + part.text;\n if (typeof part.thought !== \"undefined\") msg.thought = part.thought;\n }\n if (part.errorMessage) {\n msg.text = (msg.text ? msg.text + \"\\n\" : \"\") + part.errorMessage;\n }\n }\n\n if (fileDataParts.length > 0) {\n msg.fileData = fileDataParts.map((part: any) => ({\n displayName: part.fileData.displayName || \"\",\n fileUri: part.fileData.fileUri,\n mimeType: part.fileData.mimeType,\n }));\n }\n\n mapped.push(msg);\n }\n\n // 处理其他类型的 parts(functionCall、executableCode 等)\n otherParts.forEach((part: any) => {\n const msg: IMessage = {\n id: v4(),\n author: item.author,\n invocationId: item.invocationId,\n eventId: item.id,\n timestamp: item.timestamp,\n isLike: item.isLike,\n role,\n modelCode: item.modelCode,\n usageMetadata: item.usageMetadata,\n finishReason: item.finishReason,\n raw: item,\n } as IMessage;\n\n if (part.functionCall) msg.functionCall = part.functionCall;\n if (part.executableCode) msg.executableCode = part.executableCode;\n if (part.codeExecutionResult)\n msg.codeExecutionResult = part.codeExecutionResult;\n // 补全函数调用结果\n if (part.functionResponse) {\n // 通过 functionCall.id 寻找对应的函数调用消息,在那条消息上添加functionResponse\n const functionCallMsg = mapped.find(\n (msg) => msg.functionCall?.id === part.functionResponse?.id,\n );\n if (functionCallMsg) {\n functionCallMsg.functionResponse = part.functionResponse;\n }\n return;\n }\n mapped.push(msg);\n });\n });\n\n setMessages((prev) => (isReplace ? mapped : [...prev, ...mapped]));\n };\n\n // 设置当前会话详情\n const setCurrentSession = async (sessionId: string) => {\n if (sessionId) {\n if (sessionId === currentSessionId) {\n return;\n }\n\n // 1. 将当前会话挂起到后台(不中断 SSE 连接)\n const prevSessionId = currentSessionId;\n if (ctrl.current) {\n // 有活跃流式连接,保存到后台\n backgroundRef.current.set(prevSessionId, {\n ctrl: ctrl.current,\n messages: [...messagesRef.current],\n loading: true,\n textMsgRef: textMsgRef.current,\n });\n ctrl.current = null;\n textMsgRef.current = null;\n setLoading(false);\n } else if (messagesRef.current.length > 0) {\n // 无活跃连接但有消息,缓存用于切回\n backgroundRef.current.set(prevSessionId, {\n ctrl: new AbortController(),\n messages: [...messagesRef.current],\n loading: false,\n textMsgRef: null,\n });\n }\n\n // 2. 尝试从后台恢复目标会话\n const bg = backgroundRef.current.get(sessionId);\n if (bg) {\n setMessages(bg.messages);\n setLoading(bg.loading);\n textMsgRef.current = bg.textMsgRef;\n ctrl.current = bg.loading ? bg.ctrl : null;\n setCurrentSessionId(sessionId);\n setInitialized(true);\n backgroundRef.current.delete(sessionId);\n return;\n }\n\n // 3. 后台没有目标 session,走 API 加载(原有逻辑)\n setInitialized(false);\n setCurrentSessionId(sessionId);\n const { data, result } = await fetchSessionDetail({\n url,\n appNo,\n sessionId,\n token: tokenRef.current,\n });\n\n if (result?.code === API_SUCCESS_CODE) {\n setPrologue(appInfo?.onboardingInfo?.prologue || \"\");\n if (Array.isArray(data) && data.length > 0) {\n formatMessages(data, true);\n } else {\n setSuggestedQuestions(\n appInfo?.onboardingInfo?.suggested_questions || [],\n );\n }\n }\n setInitialized(true);\n } else {\n setCurrentSessionId(v4());\n }\n };\n\n // 获取聊天记录\n const initAppConversations = async (fetchDetail = false) => {\n try {\n setSessionLoading(true);\n\n const {\n data = [],\n pagination,\n result,\n } = await fetchSessionList({\n url,\n appNo,\n token: tokenRef.current,\n pageSize: sessionPagination.pageSize,\n });\n\n if (result?.code === API_SUCCESS_CODE) {\n if (data.length > 0) {\n const formatSessions = data.map((item) => {\n return {\n key: item.sessionId,\n label: item.title || \"新对话\",\n timestamp: new Date(item.startTime).getTime(),\n messages: [],\n meta: {\n ...item,\n },\n };\n });\n\n setSessionList(formatSessions);\n // 设置分页信息\n setSessionPagination({\n pageNum: sessionPagination.pageNum,\n pageSize: sessionPagination.pageSize,\n total: pagination?.total || 0,\n });\n const { sessionId } = data?.[0];\n if (showFirstSession) {\n setCurrentSession(sessionId);\n } else {\n fetchDetail && setPrologue(appInfo?.onboardingInfo?.prologue || \"\");\n fetchDetail &&\n setSuggestedQuestions(\n appInfo?.onboardingInfo?.suggested_questions || [],\n );\n }\n // 成功回调\n if (!initialized) {\n onSuccess?.({\n code: SuccessCode.APP_MESSAGES_INIT_SUCCESS,\n message: \"初始化聊天记录成功\",\n data: {\n sessionId,\n },\n });\n setInitialized(true);\n }\n } else {\n // 无会话记录时,初始化会话详情\n clearChat();\n }\n } else {\n // 服务端业务错误,透传原始 code + message 给接入方自行处理\n onError?.({\n code: result?.code || 'UNKNOWN_ERROR',\n message: result?.message || \"获取会话列表失败\",\n raw: result,\n });\n setSessionList([]);\n setCurrentSessionId(v4());\n setPrologue(\"\");\n setSuggestedQuestions([]);\n }\n } catch {\n onError?.({\n code: ErrorCode.NETWORK_ERROR,\n message: \"获取会话列表失败\",\n });\n } finally {\n setSessionLoading(false);\n }\n };\n\n // 删除会话\n const deleteSession = async (sessionId: string) => {\n if (!sessionId) return;\n const { result } = await closeSession({\n url,\n appNo,\n sessionId,\n token: tokenRef.current,\n });\n if (result?.code === API_SUCCESS_CODE) {\n // 删除成功后,重新获取会话列表\n initAppConversations(true);\n // 如果删除的是当前会话,则创建新的会话\n if (sessionId === currentSessionId) {\n clearChat();\n }\n } else {\n message.error(\"删除会话失败\");\n }\n };\n\n // 点赞/点踩\n const likeMessage = async (\n invocationId: string,\n isLike: 1 | -1,\n feedbackData?: { feedbackTags?: string; feedbackDescription?: string },\n ) => {\n if (!appNo || !invocationId) return false;\n const { result } = await addFeedback({\n url,\n appNo,\n token: tokenRef.current,\n requestId: invocationId,\n isLike,\n ...feedbackData,\n });\n if (result?.code === API_SUCCESS_CODE) {\n setMessages((prev) =>\n prev.map((m) =>\n m.invocationId === invocationId ? { ...m, isLike } : m,\n ),\n );\n return true;\n }\n return false;\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 title,\n sessionId,\n token: tokenRef.current,\n });\n if (result?.code === API_SUCCESS_CODE) {\n // 编辑成功后,重新获取会话列表\n initAppConversations();\n } else {\n message.error(\"更新会话失败\");\n }\n };\n\n // 初始化应用\n const initConfig = async () => {\n try {\n setSessionLoading(true);\n const { data, result } = await fetchAppConfig({ url, appNo });\n if (result.code === API_SUCCESS_CODE) {\n setAppInfo(data);\n // 成功回调\n onSuccess?.({\n code: SuccessCode.APP_CONFIG_INIT_SUCCESS,\n message: \"初始化配置成功\",\n });\n } else {\n // 服务端业务错误,透传原始 code + message\n onError?.({\n code: result.code || 'UNKNOWN_ERROR',\n message: result.message || \"获取应用配置失败\",\n raw: result,\n });\n }\n } catch (error) {\n onError?.({\n code: ErrorCode.NETWORK_ERROR,\n message: \"获取应用配置失败\",\n });\n } finally {\n setSessionLoading(false);\n }\n };\n\n // 初始化—获取配置 (仅在启用时)\n useEffect(() => {\n if (enabled && url && appNo) {\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [enabled, url, appNo]);\n\n // 初始化-聊天记录\n useEffect(() => {\n if (appInfo) {\n initAppConversations(true);\n }\n }, [appInfo]);\n\n // 组件卸载时清理所有连接(前台 + 后台)\n useEffect(() => {\n return () => {\n ctrl.current?.abort();\n backgroundRef.current.forEach((bg) => bg.ctrl?.abort());\n backgroundRef.current.clear();\n };\n }, []);\n\n return {\n appInfo,\n startChat,\n reChat,\n stopChat,\n clearChat,\n suggestChat,\n confirmFnCall,\n initialized,\n currentSessionId,\n sessionList,\n sessionPagination,\n prologue,\n suggestions: suggestedQuestions,\n loading,\n sessionLoading,\n messages: mergedMessages,\n insertSuggestedQuestions,\n insertPrologue,\n deleteSession,\n updateSession,\n setSuggestedQuestions,\n setCurrentSession,\n setMessages,\n storeEvents,\n storeMessage,\n likeMessage,\n setStateDelta: (delta: Record<string, any> | undefined) => {\n stateDeltaRef.current = delta;\n },\n };\n}\n\nexport default useADKChat;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useEffect","useCallback","useMemo","useRef","useState","fetchEventSource","EventStreamContentType","message","v4","SESSION_PAGE_SIZE","API_SUCCESS_CODE","SuccessCode","ErrorCode","fetchAppConfig","fetchSessionList","fetchSessionDetail","closeSession","updateSessionTitle","addFeedback","safeJsonParse","combineTextParts","parts","result","combinedTextPart","_iterator","_createForOfIteratorHelper","_step","s","n","done","part","value","isPureText","text","fileData","thought","_objectSpread","push","undefined","err","e","f","DEFAULT_SESSION_EVENTS_POLLING_INTERVAL","getMessageEventId","messageItem","_messageItem$raw","eventId","raw","id","mapSessionMessages","sessionEvents","mapped","forEach","item","content","Array","isArray","author","some","task","role","toLowerCase","filter","Boolean","inlineData","functionCall","functionResponse","executableCode","codeExecutionResult","errorMessage","length","textParts","fileDataParts","otherParts","invocationId","timestamp","isLike","modelCode","usageMetadata","finishReason","displayName","data","mimeType","concat","map","fileUri","functionCallMessage","find","currentMessage","_currentMessage$funct","_part$functionRespons","getComparableMessageContent","_messageItem$text","JSON","stringify","replace","trim","isStreamMessageWithoutServerEventId","insertMissingSessionEvents","currentMessages","renderedEventIds","Set","unmatchedStreamMessageIndexes","index","missingEvents","event","_event$content","_event$content2","canRender","has","eventMessages","matchedIndexes","isRenderedByStream","every","eventMessage","comparableContent","matchedIndex","findIndex","includes","delete","missingMessages","eventOrder","Map","getMessageOrder","_messageItem$timestam","_messageItem$raw2","get","nextEventIndex","Number","POSITIVE_INFINITY","nextMessages","_toConsumableArray","targetOrder","insertIndex","currentOrder","isFinite","splice","useADKChat","_ref","_config$session$pollS","_config$session","_config$session$sessi","_config$session2","_ref$url","url","window","location","origin","token","_ref$config","config","_ref$type","type","_ref$enabled","enabled","strategies","onError","onMessage","onSuccess","onStream","_useState","_useState2","_slicedToArray","loading","setLoadingState","loadingRef","setLoading","nextLoading","current","_useState3","_useState4","sessionLoading","setSessionLoading","sendingRef","ctrl","tokenRef","_ref2","appNo","showFirstSession","pollSessionEvents","session","sessionEventsPollingInterval","Math","max","_useState5","_useState6","appInfo","setAppInfo","_useState7","_useState8","initialized","setInitialized","_useState9","_useState10","sessionList","setSessionList","_useState11","_useState12","currentSessionId","setCurrentSessionId","_useState13","total","pageNum","pageSize","_useState14","sessionPagination","setSessionPagination","_useState15","_useState16","prologue","setPrologue","_useState17","_useState18","suggestedQuestions","setSuggestedQuestions","_useState19","_useState20","messages","setMessages","pendingSessionEventsRef","sessionEventsFlushTimerRef","sessionEventsSyncingRef","sessionDetailLoadingRef","stateDeltaRef","backgroundRef","messagesRef","currentSessionIdRef","mergedMessages","fnResMap","msg","_msg$functionResponse","_msg$functionCall","textMsgRef","eventDataRef","cancelSessionEventsFlush","clearTimeout","flushPendingSessionEvents","pending","replyInProgress","sessionId","previewMessages","events","setTimeout","prev","syncSessionEvents","targetSessionId","insertMessage","lastMessage","isLoading","slice","insertSuggestedQuestions","suggested_questions","arguments","insertPrologue","updateMessage","m","withEventMeta","_event$modelCode","_event$usageMetadata","_event$finishReason","updateLastBotEventMeta","next","findLastIndex","storeEvents","_event$actions","title","actions","artifactDelta","name","_part$executableCode$","code","outcome","updatedEvent","newEventData","set","storeMessage","_event$groundingMetad","groundingMetadata","searchEntryPoint","renderedContent","Object","keys","processPart","_event$groundingMetad2","ignore","newChunk","newMessage","partial","processFollowupPart","_event$content3","processErrorMessage","chunkJson","processActionArtifact","sendMessageRequest","values","Promise","resolve","abort","newCtrl","AbortController","signal","addEventListener","once","requestUrl","bgTextMsg","method","body","openWhenHidden","headers","stream","Authorization","onopen","response","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","ok","status","AUTH_ERROR","stop","onmessage","rawData","error","warning","isBackground","bg","_iterator2","_step2","_chunkJson","_bgTextMsg","_iterator3","_step3","_chunkJson2","onclose","_textMsgRef$current","onerror","console","startChat","_ref4","_callee2","_ref3","_ref3$text","_ref3$files","files","_callee2$","_context2","abrupt","temp","file","_file$response","_file$response2","_file$response3","fileName","tempUrl","fileUrl","_file$response4","_file$response5","_file$response6","_file$response7","_file$response8","_file$response9","fileId","fileType","stateDelta","finish","initAppConversations","_x","apply","reChat","_ref5","_callee3","lastUserIndex","newMessages","lastUserMessage","_lastUserMessage$text","_lastUserMessage$file","_callee3$","_context3","confirmFnCall","fnCall","confirmed","_strategies$createFun","_strategies$createFun2","createFunctionResponse","call","suggestChat","stopChat","_ctrl$current","clearChat","_appInfo$onboardingIn","_appInfo$onboardingIn2","newSessionId","onboardingInfo","formatMessages","isReplace","setCurrentSession","_ref6","_callee4","prevSessionId","_yield$fetchSessionDe","_appInfo$onboardingIn3","_appInfo$onboardingIn4","_callee4$","_context4","sent","_x2","_ref7","_callee5","fetchDetail","_yield$fetchSessionLi","_yield$fetchSessionLi2","pagination","formatSessions","_data$","_appInfo$onboardingIn5","_appInfo$onboardingIn6","_args5","_callee5$","_context5","key","label","Date","startTime","getTime","meta","APP_MESSAGES_INIT_SUCCESS","t0","NETWORK_ERROR","deleteSession","_ref8","_callee6","_yield$closeSession","_callee6$","_context6","_x3","likeMessage","_ref9","_callee7","feedbackData","_yield$addFeedback","_callee7$","_context7","requestId","_x4","_x5","_x6","updateSession","_ref10","_callee8","_yield$updateSessionT","_callee8$","_context8","_x7","_x8","initConfig","_ref11","_callee9","_yield$fetchAppConfig","_callee9$","_context9","APP_CONFIG_INIT_SUCCESS","disposed","requesting","pollingSessionId","poll","_ref12","_callee10","_yield$fetchSessionDe2","_callee10$","_context10","timer","setInterval","clearInterval","_ctrl$current2","_bg$ctrl","clear","suggestions","setStateDelta","delta"],"sources":["../../../src/hooks/useADKChat.ts"],"sourcesContent":["import { useEffect, useCallback, useMemo, useRef, useState } from \"react\";\nimport {\n fetchEventSource,\n EventStreamContentType,\n} from \"@microsoft/fetch-event-source\";\nimport { message } from \"antd\";\nimport { v4 } from \"uuid\";\nimport { SESSION_PAGE_SIZE, API_SUCCESS_CODE } from \"@/constants\";\nimport {\n SuccessCode,\n ErrorCode,\n DebugOptions,\n FunctionCall,\n SendContent,\n SessionData,\n AgentRunRequest,\n Event,\n FunctionResponse,\n IMessage,\n Part,\n} from \"@/types\";\nimport {\n fetchAppConfig,\n fetchSessionList,\n fetchSessionDetail,\n closeSession,\n updateSessionTitle,\n addFeedback,\n type ChatConfig,\n} from \"@/services/api\";\nimport { safeJsonParse } from \"@/utils\";\n\nconst combineTextParts = (parts: Part[]) => {\n const result: Part[] = [];\n let combinedTextPart: Part | undefined;\n\n // eslint-disable-next-line no-restricted-syntax\n for (const part of parts) {\n // 纯文本 part(没有 fileData 等其他字段)才合并\n const isPureText = part.text && !part.fileData;\n if (isPureText) {\n // 如果没有 combined 或 combined 思考类型跟当前 part 不同,则创建新的合并引用\n if (!combinedTextPart || combinedTextPart.thought !== part.thought) {\n combinedTextPart = { ...part };\n result.push(combinedTextPart);\n } else {\n combinedTextPart.text =\n (combinedTextPart.text || \"\") + (part.text || \"\");\n }\n } else {\n combinedTextPart = undefined;\n result.push(part);\n }\n }\n return result;\n};\n\nconst DEFAULT_SESSION_EVENTS_POLLING_INTERVAL = 10000;\n\nconst getMessageEventId = (messageItem: IMessage) =>\n messageItem.eventId || messageItem.raw?.id;\n\nconst mapSessionMessages = (sessionEvents: any[]): IMessage[] => {\n const mapped: IMessage[] = [];\n sessionEvents.forEach((item) => {\n if (!item || !item.content || !Array.isArray(item.content.parts)) return;\n // 后端为异步任务插入的用户事件仅用于关联任务,不在页面展示。\n if (\n item.author === \"user\" &&\n item.content.parts.some((part: any) => part.task)\n )\n return;\n\n const role =\n (item.content.role || \"\").toLowerCase() === \"user\" ? \"user\" : \"bot\";\n const parts = item.content.parts.filter((part: any) => {\n if (!part) return false;\n return Boolean(\n part.text ||\n part.inlineData ||\n part.functionCall ||\n part.functionResponse ||\n part.fileData ||\n part.executableCode ||\n part.codeExecutionResult ||\n part.errorMessage,\n );\n });\n if (parts.length === 0) return;\n\n const textParts = parts.filter(\n (part: any) => part.text || part.errorMessage || part.inlineData,\n );\n const fileDataParts = parts.filter((part: any) => part.fileData);\n const otherParts = parts.filter(\n (part: any) =>\n !part.text &&\n !part.errorMessage &&\n !part.inlineData &&\n !part.fileData,\n );\n\n if (textParts.length > 0 || fileDataParts.length > 0) {\n const messageItem: IMessage = {\n id: v4(),\n author: item.author,\n invocationId: item.invocationId,\n eventId: item.id,\n timestamp: item.timestamp,\n isLike: item.isLike,\n role,\n modelCode: item.modelCode,\n usageMetadata: item.usageMetadata,\n finishReason: item.finishReason,\n raw: item,\n };\n\n textParts.forEach((part: any) => {\n if (part.inlineData) {\n messageItem.inlineData = {\n displayName: part.inlineData.displayName,\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\n };\n }\n if (part.text) {\n messageItem.text =\n (messageItem.text ? `${messageItem.text}\\n` : \"\") + part.text;\n if (typeof part.thought !== \"undefined\")\n messageItem.thought = part.thought;\n }\n if (part.errorMessage) {\n messageItem.text =\n (messageItem.text ? `${messageItem.text}\\n` : \"\") +\n part.errorMessage;\n }\n });\n\n if (fileDataParts.length > 0) {\n messageItem.fileData = fileDataParts.map((part: any) => ({\n displayName: part.fileData.displayName || \"\",\n fileUri: part.fileData.fileUri,\n mimeType: part.fileData.mimeType,\n }));\n }\n mapped.push(messageItem);\n }\n\n otherParts.forEach((part: any) => {\n const messageItem: IMessage = {\n id: v4(),\n author: item.author,\n invocationId: item.invocationId,\n eventId: item.id,\n timestamp: item.timestamp,\n isLike: item.isLike,\n role,\n modelCode: item.modelCode,\n usageMetadata: item.usageMetadata,\n finishReason: item.finishReason,\n raw: item,\n };\n\n if (part.functionCall) messageItem.functionCall = part.functionCall;\n if (part.executableCode)\n messageItem.executableCode = part.executableCode;\n if (part.codeExecutionResult)\n messageItem.codeExecutionResult = part.codeExecutionResult;\n if (part.functionResponse) {\n const functionCallMessage = mapped.find(\n (currentMessage) =>\n currentMessage.functionCall?.id === part.functionResponse?.id,\n );\n if (functionCallMessage) {\n functionCallMessage.functionResponse = part.functionResponse;\n }\n return;\n }\n mapped.push(messageItem);\n });\n });\n return mapped;\n};\n\nconst getComparableMessageContent = (messageItem: IMessage) =>\n JSON.stringify({\n role: messageItem.role,\n text: messageItem.text?.replace(/\\r\\n/g, \"\\n\").trim() || \"\",\n thought: Boolean(messageItem.thought),\n inlineData: messageItem.inlineData || null,\n fileData: messageItem.fileData || null,\n functionCall: messageItem.functionCall || null,\n functionResponse: messageItem.functionResponse || null,\n executableCode: messageItem.executableCode || null,\n codeExecutionResult: messageItem.codeExecutionResult || null,\n });\n\nconst isStreamMessageWithoutServerEventId = (messageItem: IMessage) => {\n const eventId = getMessageEventId(messageItem);\n return (\n Boolean(messageItem.invocationId) &&\n (!eventId || eventId === messageItem.invocationId)\n );\n};\n\nconst insertMissingSessionEvents = (\n currentMessages: IMessage[],\n sessionEvents: any[],\n) => {\n const renderedEventIds = new Set(\n currentMessages.map(getMessageEventId).filter(Boolean),\n );\n const unmatchedStreamMessageIndexes = new Set(\n currentMessages\n .map((messageItem, index) =>\n isStreamMessageWithoutServerEventId(messageItem) ? index : -1,\n )\n .filter((index) => index >= 0),\n );\n const missingEvents = sessionEvents.filter((event) => {\n const parts = event.content?.parts;\n const canRender =\n Boolean(event.id) &&\n event.content?.role === \"model\" &&\n Array.isArray(parts) &&\n parts.length > 0;\n if (!canRender || renderedEventIds.has(event.id)) return false;\n\n // 新版 SSE 包装数据没有事件 id,只能临时使用 invocationId。\n // 用 invocationId + 完整渲染内容做一次性身份对齐,避免会话轮询重复插入;\n // 同 invocation 下内容不同或后续出现的事件,仍然按独立 event.id 补入。\n const eventMessages = mapSessionMessages([event]);\n const matchedIndexes: number[] = [];\n const isRenderedByStream =\n eventMessages.length > 0 &&\n eventMessages.every((eventMessage) => {\n const comparableContent = getComparableMessageContent(eventMessage);\n const matchedIndex = currentMessages.findIndex(\n (currentMessage, index) =>\n unmatchedStreamMessageIndexes.has(index) &&\n !matchedIndexes.includes(index) &&\n currentMessage.invocationId === eventMessage.invocationId &&\n getComparableMessageContent(currentMessage) === comparableContent,\n );\n if (matchedIndex < 0) return false;\n matchedIndexes.push(matchedIndex);\n return true;\n });\n if (isRenderedByStream) {\n matchedIndexes.forEach((index) =>\n unmatchedStreamMessageIndexes.delete(index),\n );\n return false;\n }\n return true;\n });\n if (missingEvents.length === 0) return currentMessages;\n\n const missingMessages = mapSessionMessages(missingEvents);\n if (missingMessages.length === 0) return currentMessages;\n\n const eventOrder = new Map(\n sessionEvents.map((event, index) => [event.id, index]),\n );\n const getMessageOrder = (messageItem: IMessage) => {\n const eventId = getMessageEventId(messageItem);\n if (eventId && eventOrder.has(eventId)) return eventOrder.get(eventId)!;\n\n const timestamp = messageItem.timestamp ?? messageItem.raw?.timestamp;\n if (timestamp !== undefined) {\n const nextEventIndex = sessionEvents.findIndex(\n (event) => (event.timestamp || 0) > timestamp,\n );\n return nextEventIndex < 0\n ? sessionEvents.length + 0.5\n : nextEventIndex - 0.5;\n }\n return Number.POSITIVE_INFINITY;\n };\n\n const nextMessages = [...currentMessages];\n missingMessages.forEach((messageItem) => {\n const targetOrder = getMessageOrder(messageItem);\n let insertIndex = nextMessages.findIndex((currentMessage) => {\n const currentOrder = getMessageOrder(currentMessage);\n return Number.isFinite(currentOrder) && currentOrder > targetOrder;\n });\n if (insertIndex < 0) insertIndex = nextMessages.length;\n nextMessages.splice(insertIndex, 0, messageItem);\n });\n return nextMessages;\n};\n\n// 后台会话连接状态\ninterface BackgroundSession {\n ctrl: AbortController;\n messages: IMessage[];\n loading: boolean;\n textMsgRef: IMessage | null;\n}\n\nfunction useADKChat({\n url = window.location.origin,\n token,\n config = {},\n type = \"agentDebug\",\n enabled = true, // ← 新增: 是否启用 Hook\n strategies,\n onError,\n onMessage,\n onSuccess,\n onStream,\n}: DebugOptions) {\n const [loading, setLoadingState] = useState(false);\n const loadingRef = useRef(false);\n const setLoading = useCallback((nextLoading: boolean) => {\n loadingRef.current = nextLoading;\n setLoadingState(nextLoading);\n }, []);\n const [sessionLoading, setSessionLoading] = useState(false);\n const sendingRef = useRef(false); // 同步锁,防止快速重复点击\n const ctrl = useRef<AbortController | null>(null);\n const tokenRef = useRef(token);\n tokenRef.current = token;\n // 应用配置\n const { appNo, showFirstSession } = config || {};\n const pollSessionEvents = config?.session?.pollSessionEvents ?? true;\n const sessionEventsPollingInterval = Math.max(\n config?.session?.sessionEventsPollingInterval ??\n DEFAULT_SESSION_EVENTS_POLLING_INTERVAL,\n 1000,\n );\n const [appInfo, setAppInfo] = useState<ChatConfig | null>(null);\n // 初始化完成\n const [initialized, setInitialized] = useState(false);\n // 会话记录\n const [sessionList, setSessionList] = useState<SessionData[]>([]);\n // 当前会话\n const [currentSessionId, setCurrentSessionId] = useState<string>(() => v4());\n // 会话分页设置\n const [sessionPagination, setSessionPagination] = useState({\n total: 0,\n pageNum: 1,\n pageSize: SESSION_PAGE_SIZE,\n });\n // 开场白\n const [prologue, setPrologue] = useState<string>(\"\");\n // 建议问题\n const [suggestedQuestions, setSuggestedQuestions] = useState<string[]>([]);\n const [messages, setMessages] = useState<IMessage[]>([]);\n const pendingSessionEventsRef = useRef<{\n sessionId: string;\n events: any[];\n } | null>(null);\n const sessionEventsFlushTimerRef = useRef<ReturnType<\n typeof setTimeout\n > | null>(null);\n const sessionEventsSyncingRef = useRef(false);\n const sessionDetailLoadingRef = useRef(false);\n // 用户自定义业务参数 (stateDelta),每次发送请求时携带\n const stateDeltaRef = useRef<Record<string, any> | undefined>(undefined);\n\n // ===== 多会话后台连接管理 =====\n const backgroundRef = useRef<Map<string, BackgroundSession>>(new Map());\n const messagesRef = useRef<IMessage[]>(messages);\n messagesRef.current = messages;\n const currentSessionIdRef = useRef<string>(currentSessionId);\n currentSessionIdRef.current = currentSessionId;\n const mergedMessages = useMemo(() => {\n const fnResMap: Record<string, FunctionResponse> = {};\n messages.forEach((msg) => {\n if (msg.functionResponse) {\n fnResMap[msg?.functionResponse?.id || \"\"] = msg.functionResponse;\n }\n });\n return messages.map((msg) => {\n if (msg.functionCall) {\n return {\n ...msg,\n functionResponse: fnResMap[msg?.functionCall?.id || \"\"],\n };\n }\n return msg;\n });\n }, [messages]);\n const textMsgRef = useRef<IMessage>(null);\n const eventDataRef = useRef<Map<string, any>>(new Map());\n\n const cancelSessionEventsFlush = useCallback(() => {\n if (sessionEventsFlushTimerRef.current === null) return;\n clearTimeout(sessionEventsFlushTimerRef.current);\n sessionEventsFlushTimerRef.current = null;\n }, []);\n\n const flushPendingSessionEvents = useCallback(() => {\n const pending = pendingSessionEventsRef.current;\n const replyInProgress =\n loadingRef.current ||\n sendingRef.current ||\n textMsgRef.current !== null;\n if (\n !pending ||\n replyInProgress ||\n pending.sessionId !== currentSessionIdRef.current\n )\n return;\n\n const previewMessages = insertMissingSessionEvents(\n messagesRef.current,\n pending.events,\n );\n pendingSessionEventsRef.current = null;\n if (previewMessages === messagesRef.current) return;\n\n sessionEventsSyncingRef.current = true;\n setLoading(true);\n sessionEventsFlushTimerRef.current = setTimeout(() => {\n sessionEventsFlushTimerRef.current = null;\n if (pending.sessionId === currentSessionIdRef.current) {\n setMessages((prev) => {\n const nextMessages = insertMissingSessionEvents(\n prev,\n pending.events,\n );\n messagesRef.current = nextMessages;\n return nextMessages;\n });\n }\n sessionEventsSyncingRef.current = false;\n setLoading(false);\n }, 0);\n }, [setLoading]);\n\n const syncSessionEvents = useCallback(\n (events: any[], targetSessionId: string) => {\n if (targetSessionId !== currentSessionIdRef.current) return;\n pendingSessionEventsRef.current = {\n sessionId: targetSessionId,\n events,\n };\n flushPendingSessionEvents();\n },\n [flushPendingSessionEvents],\n );\n\n useEffect(() => {\n pendingSessionEventsRef.current = null;\n cancelSessionEventsFlush();\n if (sessionEventsSyncingRef.current) {\n sessionEventsSyncingRef.current = false;\n setLoading(false);\n }\n }, [cancelSessionEventsFlush, currentSessionId, setLoading]);\n\n useEffect(() => {\n if (!loading) flushPendingSessionEvents();\n }, [flushPendingSessionEvents, loading]);\n\n // 插入消息\n const insertMessage = useCallback((msg: IMessage) => {\n setMessages((prev) => {\n const lastMessage = prev[prev.length - 1];\n if (lastMessage?.isLoading) {\n return [...prev.slice(0, -1), msg, lastMessage];\n }\n return [...prev, msg];\n });\n }, []);\n\n // 初始化开场白预设置问题\n const insertSuggestedQuestions = (suggested_questions: string[] = []) => {\n if (!suggested_questions?.length) return;\n // 无消息内容 且 有建议问题时\n if (messages.length === 0 && suggested_questions.length) {\n setSuggestedQuestions(suggested_questions);\n }\n };\n\n // 初始化开场白\n const insertPrologue = (prologue: string) => {\n if (prologue) {\n setPrologue(prologue);\n }\n };\n\n // 更新消息\n const updateMessage = useCallback((msg: IMessage) => {\n setMessages((prev) => {\n return prev.map((m) => {\n if (m.id === msg.id) {\n return msg;\n }\n return m;\n });\n });\n }, []);\n\n const withEventMeta = useCallback((msg: IMessage, event: Event): IMessage => {\n return {\n ...msg,\n modelCode: event.modelCode ?? msg.modelCode,\n usageMetadata: event.usageMetadata ?? msg.usageMetadata,\n finishReason: event.finishReason ?? msg.finishReason,\n raw: {\n ...(msg.raw || {}),\n ...event,\n },\n };\n }, []);\n\n const updateLastBotEventMeta = useCallback(\n (event: Event) => {\n if (!event.modelCode && !event.usageMetadata && !event.finishReason)\n return;\n\n setMessages((prev) => {\n const next = [...prev];\n const index = next.findLastIndex((msg) => msg.role === \"bot\");\n if (index < 0) return prev;\n\n next[index] = withEventMeta(next[index], event);\n return next;\n });\n },\n [withEventMeta],\n );\n\n // 存储事件\n const storeEvents = useCallback((part: Part | null, event: any) => {\n let title = \"\";\n\n if (part == null && event.actions?.artifactDelta) {\n title += \"eventAction: artifact\";\n } else if (part) {\n if (part.text) {\n title += `text:${part.text}`;\n } else if (part.functionCall) {\n title += `functionCall:${part.functionCall.name}`;\n } else if (part.functionResponse) {\n title += `functionResponse:${part.functionResponse.name}`;\n } else if (part.executableCode) {\n title += `executableCode:${part.executableCode.code?.slice(0, 10)}`;\n } else if (part.codeExecutionResult) {\n title += `codeExecutionResult:${part.codeExecutionResult.outcome}`;\n } else if (part.errorMessage) {\n title += `errorMessage:${part.errorMessage}`;\n }\n }\n\n const updatedEvent = { ...event, title };\n\n const newEventData = new Map(eventDataRef.current);\n newEventData.set(event.id, updatedEvent);\n eventDataRef.current = newEventData;\n }, []);\n\n // 存储消息\n const storeMessage = useCallback(\n (part: Part | null, event: Event, role: \"user\" | \"bot\") => {\n const msg: IMessage = {\n id: v4(),\n author: event.author,\n invocationId: event.invocationId,\n eventId: event.id,\n timestamp: event.timestamp,\n isLike: event.isLike || 0,\n role,\n modelCode: event.modelCode,\n usageMetadata: event.usageMetadata,\n finishReason: event.finishReason,\n raw: event,\n };\n\n if (part) {\n if (part.inlineData) {\n msg.inlineData = {\n displayName: part.inlineData.displayName,\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\n };\n } else if (part.text) {\n msg.text = part.text;\n msg.thought = part.thought;\n\n if (event?.groundingMetadata?.searchEntryPoint?.renderedContent) {\n msg.renderedContent =\n event.groundingMetadata.searchEntryPoint.renderedContent;\n }\n } else if (part.fileData) {\n msg.fileData = [part.fileData];\n } else if (part.functionCall) {\n msg.functionCall = part.functionCall;\n } else if (part.functionResponse) {\n msg.functionResponse = part.functionResponse;\n } else if (part.executableCode) {\n msg.executableCode = part.executableCode;\n } else if (part.codeExecutionResult) {\n msg.codeExecutionResult = part.codeExecutionResult;\n }\n }\n\n if (part && Object.keys(part).length > 0) {\n insertMessage(msg);\n }\n },\n [insertMessage],\n );\n\n // 处理消息部分(关键更新)\n const processPart = useCallback(\n (event: Event, part: Part, ignore: boolean = false) => {\n const renderedContent =\n event.groundingMetadata?.searchEntryPoint?.renderedContent;\n if (part.text) {\n if (ignore) return;\n const newChunk = part.text;\n\n if (\n !textMsgRef.current ||\n textMsgRef.current.thought !== part.thought\n ) {\n const newMessage: IMessage = {\n id: v4(),\n author: event.author,\n invocationId: event.invocationId,\n eventId: event.id,\n timestamp: event.timestamp,\n role: \"bot\",\n text: newChunk,\n isLike: event.isLike || 0,\n thought: part.thought,\n modelCode: event.modelCode,\n usageMetadata: event.usageMetadata,\n finishReason: event.finishReason,\n raw: event,\n };\n\n if (renderedContent) {\n newMessage.renderedContent = renderedContent;\n }\n\n textMsgRef.current = newMessage;\n // 存储原数据\n storeEvents(part, event);\n // 插入消息\n insertMessage(newMessage);\n } else {\n if (renderedContent) {\n textMsgRef.current = {\n ...textMsgRef.current,\n renderedContent,\n };\n }\n textMsgRef.current = {\n ...withEventMeta(textMsgRef.current, event),\n text: (textMsgRef.current.text || \"\") + newChunk,\n };\n updateMessage(textMsgRef.current);\n if (event.partial === false) {\n storeEvents(part, event);\n textMsgRef.current = null;\n }\n }\n } else {\n textMsgRef.current = null;\n storeEvents(part, event);\n storeMessage(part, event, \"bot\");\n }\n },\n [storeEvents, storeMessage, insertMessage, updateMessage, withEventMeta],\n );\n\n // 处理建议类消息\n const processFollowupPart = useCallback(\n (event: Event) => {\n // 获取建议类消息的文本内容\n const part = event?.content?.parts?.[0] || null;\n const text = part?.text || \"\";\n storeEvents(part, event);\n if (text) {\n setSuggestedQuestions((prev) => [...prev, text]);\n }\n },\n [storeEvents, insertMessage],\n );\n\n // 处理错误消息\n const processErrorMessage = useCallback(\n (chunkJson: any) => {\n storeEvents(null, chunkJson);\n insertMessage({\n id: v4(),\n text: chunkJson.errorMessage,\n role: \"bot\",\n });\n },\n [storeEvents, insertMessage],\n );\n\n // 处理动作和制品\n const processActionArtifact = useCallback(\n (event: any) => {\n if (event.actions && event.actions.artifactDelta) {\n storeEvents(null, event);\n storeMessage(null, event, \"bot\");\n }\n },\n [storeEvents, storeMessage],\n );\n\n // 发送消息请求\n const sendMessageRequest = useCallback(\n (values: AgentRunRequest) => {\n return new Promise<void>((resolve) => {\n const targetSessionId = values.sessionId || currentSessionIdRef.current;\n\n // 只 abort 同一 session 的旧连接\n if (targetSessionId === currentSessionIdRef.current && ctrl.current) {\n ctrl.current.abort();\n }\n const newCtrl = new AbortController();\n if (targetSessionId === currentSessionIdRef.current) {\n setLoading(true);\n ctrl.current = newCtrl;\n }\n\n // 当 signal 被外部 abort(stopChat)时,确保外层 Promise 被 resolve\n // 否则 startChat 中的 await 会永远挂起,sendingRef 无法重置为 false\n newCtrl.signal.addEventListener(\n \"abort\",\n () => {\n resolve();\n },\n { once: true },\n );\n\n const requestUrl = `${url}/api/gateway-web/openApi/v1/aizt/app/${appNo}/sendMsgStreaming`;\n\n // 后台流式文本拼接\n let bgTextMsg: IMessage | null = null;\n\n fetchEventSource(requestUrl, {\n method: \"POST\",\n signal: newCtrl.signal,\n body: JSON.stringify(values),\n openWhenHidden: true,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Cache-Control\": \"no-cache\",\n stream: \"true\",\n Authorization: `Bearer ${tokenRef.current}`,\n },\n async onopen(response) {\n if (\n response.ok &&\n response.headers.get(\"content-type\") === EventStreamContentType\n ) {\n // everything's good\n } else if (response.status === 401 || response.status === 403) {\n setLoading(false);\n onError?.({\n code: ErrorCode.AUTH_ERROR,\n message:\n response.status === 401\n ? \"认证失败,token 无效或已过期\"\n : \"无权限访问该资源\",\n });\n resolve();\n } else if (\n response.status >= 400 &&\n response.status < 500 &&\n response.status !== 429\n ) {\n resolve();\n } else {\n resolve();\n }\n },\n onmessage: (event) => {\n const rawData = safeJsonParse(event.data, {});\n\n // 处理新的数据格式: { data: {...}, result: {...} }\n let chunkJson: Event = rawData;\n\n if (rawData.data && rawData.result) {\n // 转换为旧格式\n chunkJson = {\n ...rawData.data,\n content: rawData.data,\n invocationId: rawData.result.invocationId,\n sessionId: rawData.result.sessionId,\n id:\n rawData.data.id ||\n rawData.result.id ||\n rawData.result.eventId ||\n rawData.result.invocationId,\n };\n }\n\n if (chunkJson.error) {\n message.warning(chunkJson.error);\n return;\n }\n\n // 判断是否为后台 session\n const isBackground =\n currentSessionIdRef.current !== targetSessionId;\n\n if (isBackground) {\n // 后台 session:更新 backgroundRef 中的消息\n const bg = backgroundRef.current.get(targetSessionId);\n if (!bg) return;\n\n if (chunkJson.content) {\n if (chunkJson.content.role === \"followup\") return;\n for (const part of combineTextParts(chunkJson.content.parts)) {\n const isPureText = part.text && !part.fileData;\n if (isPureText) {\n if (chunkJson?.partial === false) continue;\n const newChunk = part.text || \"\";\n if (!bgTextMsg || bgTextMsg?.thought !== part.thought) {\n const newMessage: IMessage = {\n id: v4(),\n author: chunkJson.author,\n invocationId: chunkJson.invocationId,\n eventId: chunkJson.id,\n timestamp: chunkJson.timestamp,\n role: \"bot\",\n text: newChunk,\n thought: part.thought,\n };\n bgTextMsg = newMessage;\n bg.messages = [...bg.messages, newMessage];\n } else {\n bgTextMsg = {\n ...bgTextMsg,\n text: (bgTextMsg.text || \"\") + newChunk,\n };\n bg.messages = bg.messages.map((m) =>\n m.id === bgTextMsg!.id ? bgTextMsg! : m,\n );\n if (chunkJson.finishReason === \"stop\") {\n bgTextMsg = null;\n }\n }\n } else {\n bgTextMsg = null;\n const msg: IMessage = {\n id: v4(),\n author: chunkJson.author,\n invocationId: chunkJson.invocationId,\n eventId: chunkJson.id,\n timestamp: chunkJson.timestamp,\n role: \"bot\",\n };\n if (part.functionCall) msg.functionCall = part.functionCall;\n else if (part.functionResponse)\n msg.functionResponse = part.functionResponse;\n else if (part.executableCode)\n msg.executableCode = part.executableCode;\n else if (part.codeExecutionResult)\n msg.codeExecutionResult = part.codeExecutionResult;\n else {\n msg.text = part.text;\n msg.thought = part.thought;\n if (part.fileData) msg.fileData = [part.fileData];\n }\n bg.messages = [...bg.messages, msg];\n }\n }\n } else if (chunkJson.errorMessage) {\n bg.messages = [\n ...bg.messages,\n { id: v4(), text: chunkJson.errorMessage, role: \"bot\" },\n ];\n }\n bg.textMsgRef = bgTextMsg;\n return;\n }\n\n // 前台 session:正常处理\n onStream?.(chunkJson);\n updateLastBotEventMeta(chunkJson);\n if (chunkJson.content) {\n // 建议类消息单独处理\n if (chunkJson.content.role === \"followup\") {\n processFollowupPart(chunkJson);\n return;\n }\n // eslint-disable-next-line no-restricted-syntax\n for (const part of combineTextParts(chunkJson.content.parts)) {\n // partial为 true 时忽略该条消息文本\n processPart(chunkJson, part, chunkJson?.partial === false);\n }\n } else if (chunkJson.errorMessage) {\n processErrorMessage(chunkJson);\n } else if (chunkJson.actions) {\n processActionArtifact(chunkJson);\n }\n },\n onclose: () => {\n const isBackground =\n currentSessionIdRef.current !== targetSessionId;\n if (isBackground) {\n const bg = backgroundRef.current.get(targetSessionId);\n if (bg) {\n bg.loading = false;\n bg.textMsgRef = null;\n }\n } else {\n setLoading(false);\n if (textMsgRef.current) {\n onMessage?.(textMsgRef.current?.text || \"\", textMsgRef.current);\n }\n textMsgRef.current = null;\n }\n resolve();\n },\n onerror: (error) => {\n const isBackground =\n currentSessionIdRef.current !== targetSessionId;\n if (isBackground) {\n const bg = backgroundRef.current.get(targetSessionId);\n if (bg) bg.loading = false;\n } else {\n setLoading(false);\n }\n resolve();\n console.error(\"EventSource failed:\", error);\n throw error;\n },\n });\n });\n },\n [\n type,\n currentSessionId,\n processActionArtifact,\n processErrorMessage,\n processPart,\n updateLastBotEventMeta,\n ],\n );\n\n // 发送会话\n const startChat = async ({\n text = \"\",\n files = [],\n functionResponse,\n }: SendContent) => {\n if (loadingRef.current || sendingRef.current) return;\n if (!text.trim() && !files?.length && !functionResponse) return;\n sendingRef.current = true;\n // 清空建议问题\n setSuggestedQuestions([]);\n // 发送消息\n setMessages((prev) => {\n let temp = [...prev];\n // 如果 text 存在\n if (text.trim()) {\n temp.push({\n id: v4(),\n role: \"user\",\n text,\n });\n }\n // 如果file 存在\n if (files.length > 0) {\n temp.push({\n id: v4(),\n role: \"user\",\n fileData: files.map((file) => ({\n displayName: file.fileName || file.name,\n mimeType: file.mimeType || file.response?.mimeType,\n fileUri:\n file.tempUrl || file.response?.fileUrl || file.response?.tempUrl,\n })),\n });\n }\n // 如果 functionResponse 存在\n if (functionResponse) {\n temp.push({\n id: v4(),\n role: \"user\",\n functionResponse,\n });\n }\n return temp;\n });\n try {\n await sendMessageRequest({\n stream: true,\n sessionId: currentSessionId,\n content: {\n role: \"user\",\n parts: functionResponse ? [{ functionResponse }] : [{ text }],\n },\n files: files.map((file) => ({\n fileName: file.fileName || file.response?.fileName,\n fileId: file.fileId || file.response?.fileId,\n tempUrl:\n file.tempUrl || file.response?.fileUrl || file.response?.tempUrl,\n type: file.type || file.response?.fileType,\n mimeType: file.mimeType || file.response?.mimeType,\n })),\n ...(stateDeltaRef.current !== undefined && {\n stateDelta: stateDeltaRef.current,\n }),\n });\n } finally {\n sendingRef.current = false;\n }\n // 获取聊天记录\n initAppConversations();\n };\n\n // 重新发送会话\n const reChat = async () => {\n if (loadingRef.current || sendingRef.current) return;\n if (messages.length === 0) return;\n sendingRef.current = true;\n // 清空建议问题\n setSuggestedQuestions([]);\n\n // 找到最后一条用户消息的索引,删除其后所有 bot 消息\n const lastUserIndex = messages.findLastIndex(\n (msg) => msg.role === \"user\" && !msg.functionResponse,\n );\n if (lastUserIndex === -1) {\n sendingRef.current = false;\n return;\n }\n\n const newMessages = messages.slice(0, lastUserIndex + 1);\n setMessages(newMessages);\n\n const lastUserMessage = newMessages[lastUserIndex];\n const { text = \"\", fileData = [] } = lastUserMessage;\n\n try {\n await sendMessageRequest({\n stream: true,\n sessionId: currentSessionId,\n content: {\n role: \"user\",\n parts: [{ text }],\n },\n files: fileData?.map((file) => ({\n fileName: file.displayName,\n tempUrl: file.fileUri,\n mimeType: file.mimeType,\n })),\n ...(stateDeltaRef.current !== undefined && {\n stateDelta: stateDeltaRef.current,\n }),\n });\n } finally {\n sendingRef.current = false;\n }\n };\n\n // 确认函数调用\n const confirmFnCall = (fnCall: FunctionCall, confirmed: boolean) => {\n const functionResponse = strategies?.createFunctionResponse?.(\n fnCall,\n confirmed,\n ) ?? {\n id: fnCall.id,\n name: fnCall.name,\n response: { confirmed },\n };\n startChat({ functionResponse });\n };\n\n // 使用建议问题\n const suggestChat = (text: string) => {\n if (loadingRef.current) return;\n if (!text.trim()) return;\n setSuggestedQuestions([]);\n startChat({ text });\n };\n\n // 停止会话(只中断前台连接)\n const stopChat = useCallback(() => {\n pendingSessionEventsRef.current = null;\n cancelSessionEventsFlush();\n sessionEventsSyncingRef.current = false;\n ctrl.current?.abort();\n ctrl.current = null;\n setLoading(false);\n textMsgRef.current = null;\n }, [cancelSessionEventsFlush, setLoading]);\n\n // 清除/重置会话\n const clearChat = () => {\n const newSessionId = v4();\n setCurrentSessionId(newSessionId);\n // 重置聊天内容\n stopChat();\n setPrologue(appInfo?.onboardingInfo?.prologue || \"\");\n setMessages([]);\n setSuggestedQuestions(appInfo?.onboardingInfo?.suggested_questions || []);\n };\n\n // 格式化会话记录\n const formatMessages = useCallback(\n (sessionEvents: any[], isReplace = false) => {\n const mapped = mapSessionMessages(sessionEvents);\n setMessages((prev) => (isReplace ? mapped : [...prev, ...mapped]));\n },\n [],\n );\n\n // 设置当前会话详情\n const setCurrentSession = async (sessionId: string) => {\n if (sessionId) {\n if (sessionId === currentSessionId) {\n return;\n }\n\n pendingSessionEventsRef.current = null;\n cancelSessionEventsFlush();\n if (sessionEventsSyncingRef.current) {\n sessionEventsSyncingRef.current = false;\n setLoading(false);\n }\n\n // 1. 将当前会话挂起到后台(不中断 SSE 连接)\n const prevSessionId = currentSessionId;\n if (ctrl.current) {\n // 有活跃流式连接,保存到后台\n backgroundRef.current.set(prevSessionId, {\n ctrl: ctrl.current,\n messages: [...messagesRef.current],\n loading: true,\n textMsgRef: textMsgRef.current,\n });\n ctrl.current = null;\n textMsgRef.current = null;\n setLoading(false);\n } else if (messagesRef.current.length > 0) {\n // 无活跃连接但有消息,缓存用于切回\n backgroundRef.current.set(prevSessionId, {\n ctrl: new AbortController(),\n messages: [...messagesRef.current],\n loading: false,\n textMsgRef: null,\n });\n }\n\n // 2. 尝试从后台恢复目标会话\n const bg = backgroundRef.current.get(sessionId);\n if (bg) {\n setMessages(bg.messages);\n setLoading(bg.loading);\n textMsgRef.current = bg.textMsgRef;\n ctrl.current = bg.loading ? bg.ctrl : null;\n setCurrentSessionId(sessionId);\n setInitialized(true);\n backgroundRef.current.delete(sessionId);\n return;\n }\n\n // 3. 后台没有目标 session,走 API 加载(原有逻辑)\n setInitialized(false);\n setCurrentSessionId(sessionId);\n sessionDetailLoadingRef.current = true;\n try {\n const { data, result } = await fetchSessionDetail({\n url,\n appNo,\n sessionId,\n token: tokenRef.current,\n });\n\n if (result?.code === API_SUCCESS_CODE) {\n setPrologue(appInfo?.onboardingInfo?.prologue || \"\");\n if (Array.isArray(data) && data.length > 0) {\n formatMessages(data, true);\n } else {\n setSuggestedQuestions(\n appInfo?.onboardingInfo?.suggested_questions || [],\n );\n }\n }\n } finally {\n sessionDetailLoadingRef.current = false;\n setInitialized(true);\n }\n } else {\n setCurrentSessionId(v4());\n }\n };\n\n // 获取聊天记录\n const initAppConversations = async (fetchDetail = false) => {\n try {\n setSessionLoading(true);\n\n const {\n data = [],\n pagination,\n result,\n } = await fetchSessionList({\n url,\n appNo,\n token: tokenRef.current,\n pageSize: sessionPagination.pageSize,\n });\n\n if (result?.code === API_SUCCESS_CODE) {\n if (data.length > 0) {\n const formatSessions = data.map((item) => {\n return {\n key: item.sessionId,\n label: item.title || \"新对话\",\n timestamp: new Date(item.startTime).getTime(),\n messages: [],\n meta: {\n ...item,\n },\n };\n });\n\n setSessionList(formatSessions);\n // 设置分页信息\n setSessionPagination({\n pageNum: sessionPagination.pageNum,\n pageSize: sessionPagination.pageSize,\n total: pagination?.total || 0,\n });\n const { sessionId } = data?.[0];\n if (showFirstSession) {\n setCurrentSession(sessionId);\n } else {\n fetchDetail && setPrologue(appInfo?.onboardingInfo?.prologue || \"\");\n fetchDetail &&\n setSuggestedQuestions(\n appInfo?.onboardingInfo?.suggested_questions || [],\n );\n }\n // 成功回调\n if (!initialized) {\n onSuccess?.({\n code: SuccessCode.APP_MESSAGES_INIT_SUCCESS,\n message: \"初始化聊天记录成功\",\n data: {\n sessionId,\n },\n });\n setInitialized(true);\n }\n } else {\n // 无会话记录时,初始化会话详情\n clearChat();\n }\n } else {\n // 服务端业务错误,透传原始 code + message 给接入方自行处理\n onError?.({\n code: result?.code || \"UNKNOWN_ERROR\",\n message: result?.message || \"获取会话列表失败\",\n raw: result,\n });\n setSessionList([]);\n setCurrentSessionId(v4());\n setPrologue(\"\");\n setSuggestedQuestions([]);\n }\n } catch {\n onError?.({\n code: ErrorCode.NETWORK_ERROR,\n message: \"获取会话列表失败\",\n });\n } finally {\n setSessionLoading(false);\n }\n };\n\n // 删除会话\n const deleteSession = async (sessionId: string) => {\n if (!sessionId) return;\n const { result } = await closeSession({\n url,\n appNo,\n sessionId,\n token: tokenRef.current,\n });\n if (result?.code === API_SUCCESS_CODE) {\n // 删除成功后,重新获取会话列表\n initAppConversations(true);\n // 如果删除的是当前会话,则创建新的会话\n if (sessionId === currentSessionId) {\n clearChat();\n }\n } else {\n message.error(\"删除会话失败\");\n }\n };\n\n // 点赞/点踩\n const likeMessage = async (\n invocationId: string,\n isLike: 1 | -1,\n feedbackData?: { feedbackTags?: string; feedbackDescription?: string },\n ) => {\n if (!appNo || !invocationId) return false;\n const { result } = await addFeedback({\n url,\n appNo,\n token: tokenRef.current,\n requestId: invocationId,\n isLike,\n ...feedbackData,\n });\n if (result?.code === API_SUCCESS_CODE) {\n setMessages((prev) =>\n prev.map((m) =>\n m.invocationId === invocationId ? { ...m, isLike } : m,\n ),\n );\n return true;\n }\n return false;\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 title,\n sessionId,\n token: tokenRef.current,\n });\n if (result?.code === API_SUCCESS_CODE) {\n // 编辑成功后,重新获取会话列表\n initAppConversations();\n } else {\n message.error(\"更新会话失败\");\n }\n };\n\n // 初始化应用\n const initConfig = async () => {\n try {\n setSessionLoading(true);\n const { data, result } = await fetchAppConfig({ url, appNo });\n if (result.code === API_SUCCESS_CODE) {\n setAppInfo(data);\n // 成功回调\n onSuccess?.({\n code: SuccessCode.APP_CONFIG_INIT_SUCCESS,\n message: \"初始化配置成功\",\n });\n } else {\n // 服务端业务错误,透传原始 code + message\n onError?.({\n code: result.code || \"UNKNOWN_ERROR\",\n message: result.message || \"获取应用配置失败\",\n raw: result,\n });\n }\n } catch (error) {\n onError?.({\n code: ErrorCode.NETWORK_ERROR,\n message: \"获取应用配置失败\",\n });\n } finally {\n setSessionLoading(false);\n }\n };\n\n // 初始化—获取配置 (仅在启用时)\n useEffect(() => {\n if (enabled && url && appNo) {\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [enabled, url, appNo]);\n\n // 初始化-聊天记录\n useEffect(() => {\n if (appInfo) {\n initAppConversations(true);\n }\n }, [appInfo]);\n\n // 轮询当前会话详情,空闲时补入后端异步任务产生的模型消息。\n useEffect(() => {\n if (\n !enabled ||\n !initialized ||\n !pollSessionEvents ||\n !appNo ||\n !currentSessionId\n )\n return;\n\n let disposed = false;\n let requesting = false;\n const pollingSessionId = currentSessionId;\n\n const poll = async () => {\n if (requesting || sessionDetailLoadingRef.current) return;\n requesting = true;\n try {\n const { data, result } = await fetchSessionDetail({\n url,\n appNo,\n sessionId: pollingSessionId,\n token: tokenRef.current,\n });\n if (\n !disposed &&\n result?.code === API_SUCCESS_CODE &&\n Array.isArray(data)\n ) {\n syncSessionEvents(data, pollingSessionId);\n }\n } catch {\n // 新会话尚未落库或短暂网络异常时等待下一轮,不打断当前聊天。\n } finally {\n requesting = false;\n }\n };\n\n void poll();\n const timer = window.setInterval(poll, sessionEventsPollingInterval);\n return () => {\n disposed = true;\n window.clearInterval(timer);\n };\n }, [\n appNo,\n currentSessionId,\n enabled,\n initialized,\n pollSessionEvents,\n sessionEventsPollingInterval,\n syncSessionEvents,\n url,\n ]);\n\n // 组件卸载时清理所有连接(前台 + 后台)\n useEffect(() => {\n return () => {\n cancelSessionEventsFlush();\n ctrl.current?.abort();\n backgroundRef.current.forEach((bg) => bg.ctrl?.abort());\n backgroundRef.current.clear();\n };\n }, [cancelSessionEventsFlush]);\n\n return {\n appInfo,\n startChat,\n reChat,\n stopChat,\n clearChat,\n suggestChat,\n confirmFnCall,\n initialized,\n currentSessionId,\n sessionList,\n sessionPagination,\n prologue,\n suggestions: suggestedQuestions,\n loading,\n sessionLoading,\n messages: mergedMessages,\n insertSuggestedQuestions,\n insertPrologue,\n deleteSession,\n updateSession,\n setSuggestedQuestions,\n setCurrentSession,\n setMessages,\n storeEvents,\n storeMessage,\n likeMessage,\n setStateDelta: (delta: Record<string, any> | undefined) => {\n stateDeltaRef.current = delta;\n },\n };\n}\n\nexport default useADKChat;\n"],"mappings":"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"}
|
|
@@ -19,6 +19,14 @@ export interface FileItem {
|
|
|
19
19
|
tempUrl?: string;
|
|
20
20
|
response?: any;
|
|
21
21
|
}
|
|
22
|
+
/** 文件图标类型 */
|
|
23
|
+
export type FileIconType = "pdf" | "word" | "excel" | "ppt" | "audio" | "video" | "zip" | "markdown" | "image" | "default";
|
|
24
|
+
/** 图片展示模式 */
|
|
25
|
+
export type ImageDisplayMode = "thumbnail" | "preview" | "full";
|
|
26
|
+
/** 音视频展示模式 */
|
|
27
|
+
export type MediaDisplayMode = "inline" | "card";
|
|
28
|
+
/** 文件卡片类型:不传则自动推断(图片/音频/视频用原生渲染),传 'file' 强制附件卡片展示 */
|
|
29
|
+
export type FileCardType = "file" | "image" | "audio" | "video";
|
|
22
30
|
export interface FileGalleryProps {
|
|
23
31
|
file: FileItem;
|
|
24
32
|
align?: "left" | "right";
|
|
@@ -28,6 +36,39 @@ export interface FileGalleryProps {
|
|
|
28
36
|
style?: React.CSSProperties;
|
|
29
37
|
/** 点击文件卡片回调(非图片、非音视频文件) */
|
|
30
38
|
onClick?: (file: FileItem) => void;
|
|
39
|
+
/**
|
|
40
|
+
* 文件卡片类型
|
|
41
|
+
* - 不传:自动根据文件扩展名/MIME推断,图片/音频/视频使用原生渲染
|
|
42
|
+
* - 'file':强制以附件卡片展示(音视频不可播放)
|
|
43
|
+
* - 'image' / 'audio' / 'video':强制指定类型
|
|
44
|
+
*/
|
|
45
|
+
type?: FileCardType;
|
|
46
|
+
/** 图片展示模式: thumbnail(缩略图) | preview(中等预览) | full(全宽) */
|
|
47
|
+
imageDisplayMode?: ImageDisplayMode;
|
|
48
|
+
/** 图片自定义宽度 */
|
|
49
|
+
imageWidth?: number | string;
|
|
50
|
+
/** 图片自定义高度 */
|
|
51
|
+
imageHeight?: number | string;
|
|
52
|
+
/** 图片加载策略 */
|
|
53
|
+
imageLoading?: "lazy" | "eager";
|
|
54
|
+
/** 图片 alt 文本 */
|
|
55
|
+
imageAlt?: string;
|
|
56
|
+
/** 自动播放(仅音频) */
|
|
57
|
+
mediaAutoPlay?: boolean;
|
|
58
|
+
/** 循环播放 */
|
|
59
|
+
mediaLoop?: boolean;
|
|
60
|
+
/** 静音 */
|
|
61
|
+
mediaMuted?: boolean;
|
|
62
|
+
/** 视频封面图 URL */
|
|
63
|
+
mediaPoster?: string;
|
|
64
|
+
/** 透传给原生 video 标签的属性 */
|
|
65
|
+
videoProps?: Partial<React.JSX.IntrinsicElements["video"]>;
|
|
66
|
+
/** 透传给原生 audio 标签的属性 */
|
|
67
|
+
audioProps?: Partial<React.JSX.IntrinsicElements["audio"]>;
|
|
68
|
+
/** 按文件类型自定义图标映射 */
|
|
69
|
+
iconMap?: Partial<Record<FileIconType, React.ReactNode>>;
|
|
70
|
+
/** 完全自定义图标(优先级最高,覆盖所有类型) */
|
|
71
|
+
customIcon?: React.ReactNode;
|
|
31
72
|
}
|
|
32
73
|
export interface FileItemComponentProps {
|
|
33
74
|
file: FileItem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../../src/types/FileGallery.ts"],"sourcesContent":["/**\n * 统一的文件数据接口\n * 兼容 LocalFile (XAdkSender) 和 FileData (XadkChatbot)\n */\nexport interface FileItem {\n // 基础字段\n id?: string;\n uid?: string;\n name?: string;\n displayName?: string;\n size?: number;\n type?: string;\n mimeType?: string;\n\n // 本地文件对象 (XAdkSender)\n file?: File;\n\n // 上传状态 (XAdkSender)\n status?: \"pending\" | \"uploading\" | \"success\" | \"error\";\n progress?: number;\n errorMessage?: string;\n\n // URL 字段\n fileUri?: string; // XadkChatbot\n tempUrl?: string; // XAdkSender\n response?: any;\n}\n\nexport interface FileGalleryProps {\n file: FileItem;\n align?: \"left\" | \"right\"; // 卡片内部布局:图标在左(默认)或右\n removable?: boolean;\n onRemove?: (id: string) => void;\n className?: string;\n style?: React.CSSProperties;\n /** 点击文件卡片回调(非图片、非音视频文件) */\n onClick?: (file: FileItem) => void;\n}\n\nexport interface FileItemComponentProps {\n file: FileItem;\n removable: boolean;\n onRemove: (id: string) => void;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/types/FileGallery.ts"],"sourcesContent":["/**\n * 统一的文件数据接口\n * 兼容 LocalFile (XAdkSender) 和 FileData (XadkChatbot)\n */\nexport interface FileItem {\n // 基础字段\n id?: string;\n uid?: string;\n name?: string;\n displayName?: string;\n size?: number;\n type?: string;\n mimeType?: string;\n\n // 本地文件对象 (XAdkSender)\n file?: File;\n\n // 上传状态 (XAdkSender)\n status?: \"pending\" | \"uploading\" | \"success\" | \"error\";\n progress?: number;\n errorMessage?: string;\n\n // URL 字段\n fileUri?: string; // XadkChatbot\n tempUrl?: string; // XAdkSender\n response?: any;\n}\n\n/** 文件图标类型 */\nexport type FileIconType =\n | \"pdf\"\n | \"word\"\n | \"excel\"\n | \"ppt\"\n | \"audio\"\n | \"video\"\n | \"zip\"\n | \"markdown\"\n | \"image\"\n | \"default\";\n\n/** 图片展示模式 */\nexport type ImageDisplayMode = \"thumbnail\" | \"preview\" | \"full\";\n\n/** 音视频展示模式 */\nexport type MediaDisplayMode = \"inline\" | \"card\";\n\n/** 文件卡片类型:不传则自动推断(图片/音频/视频用原生渲染),传 'file' 强制附件卡片展示 */\nexport type FileCardType = \"file\" | \"image\" | \"audio\" | \"video\";\n\nexport interface FileGalleryProps {\n file: FileItem;\n align?: \"left\" | \"right\"; // 卡片内部布局:图标在左(默认)或右\n removable?: boolean;\n onRemove?: (id: string) => void;\n className?: string;\n style?: React.CSSProperties;\n /** 点击文件卡片回调(非图片、非音视频文件) */\n onClick?: (file: FileItem) => void;\n\n /**\n * 文件卡片类型\n * - 不传:自动根据文件扩展名/MIME推断,图片/音频/视频使用原生渲染\n * - 'file':强制以附件卡片展示(音视频不可播放)\n * - 'image' / 'audio' / 'video':强制指定类型\n */\n type?: FileCardType;\n\n // ========== 图片相关 ==========\n /** 图片展示模式: thumbnail(缩略图) | preview(中等预览) | full(全宽) */\n imageDisplayMode?: ImageDisplayMode;\n /** 图片自定义宽度 */\n imageWidth?: number | string;\n /** 图片自定义高度 */\n imageHeight?: number | string;\n /** 图片加载策略 */\n imageLoading?: \"lazy\" | \"eager\";\n /** 图片 alt 文本 */\n imageAlt?: string;\n\n // ========== 音视频相关 ==========\n /** 自动播放(仅音频) */\n mediaAutoPlay?: boolean;\n /** 循环播放 */\n mediaLoop?: boolean;\n /** 静音 */\n mediaMuted?: boolean;\n /** 视频封面图 URL */\n mediaPoster?: string;\n /** 透传给原生 video 标签的属性 */\n videoProps?: Partial<React.JSX.IntrinsicElements[\"video\"]>;\n /** 透传给原生 audio 标签的属性 */\n audioProps?: Partial<React.JSX.IntrinsicElements[\"audio\"]>;\n\n // ========== 自定义图标 ==========\n /** 按文件类型自定义图标映射 */\n iconMap?: Partial<Record<FileIconType, React.ReactNode>>;\n /** 完全自定义图标(优先级最高,覆盖所有类型) */\n customIcon?: React.ReactNode;\n}\n\nexport interface FileItemComponentProps {\n file: FileItem;\n removable: boolean;\n onRemove: (id: string) => void;\n}\n"],"mappings":""}
|
|
@@ -103,6 +103,10 @@ export interface ChatConfig {
|
|
|
103
103
|
export interface XAdkProviderConfig {
|
|
104
104
|
session?: {
|
|
105
105
|
showSessionList?: boolean;
|
|
106
|
+
/** 是否轮询会话详情并主动补入异步任务消息,默认 true */
|
|
107
|
+
pollSessionEvents?: boolean;
|
|
108
|
+
/** 会话详情轮询间隔,单位毫秒,默认 10000,最小 1000 */
|
|
109
|
+
sessionEventsPollingInterval?: number;
|
|
106
110
|
};
|
|
107
111
|
/**
|
|
108
112
|
* 初始化后是否默认展示第一条会话内容
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EventCode"],"sources":["../../../src/types/XAdkProvider.ts"],"sourcesContent":["import { ReactNode } from \"react\";\nimport {\n IMessage,\n Success,\n Event,\n Error,\n SendContent,\n ThemeType,\n FileItem,\n UploadRequestFn,\n} from \"@/types\";\nimport type { ChatPresetInput, ChatStrategies } from \"./ChatStrategies\";\n\nexport interface DebugOptions {\n url: string;\n sessionId?: string;\n config: any;\n token: string;\n type?: \"agentDebug\" | \"appDebug\";\n /**\n * 是否启用 Hook\n * 当使用自定义 chatData 时,应设置为 false 以避免内部 Hook 初始化\n * @default true\n */\n enabled?: boolean;\n strategies?: ChatStrategies;\n onError?: (error: Error) => void;\n onSuccess?: (data: Success) => void;\n onStream?: (data: Event) => void;\n onMessage?: (content: string, data: IMessage) => void;\n}\n\n/**\n * 事件状态码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum EventCode {\n /** 切换会话 */\n SESSION_SWITCH = \"SESSION_SWITCH\",\n /** 开启新会话 */\n SESSION_CREATE = \"SESSION_CREATE\",\n}\n\nexport type handleEvent = {\n code: EventCode;\n message: string;\n data?: any;\n};\n/**\n * renderFooter insert 参数说明\n */\nexport interface FooterRenderArgs {\n message: IMessage;\n isLastBotMsg: boolean;\n isLastMsg: boolean;\n}\n\n/**\n * Provider 可通过 ref 暴露的方法句柄\n */\nexport interface XAdkProviderHandle {\n startChat: (content: SendContent) => void;\n stopChat: () => void;\n reChat: () => void;\n clearChat: () => void;\n deleteSession: (id: string) => void;\n updateSession: (id: string, title: string) => void;\n getAppInfo: () => any;\n getMessages: () => IMessage[];\n getSessions: () => any[];\n setMessages: (msgs: IMessage[]) => void;\n setCurrentSession: (id: string) => void;\n /**\n * 设置自定义业务参数 (stateDelta)\n * 设置后每次发送消息时会自动携带该参数至后端\n * 传入 undefined 可清除已设置的参数\n *\n * @example\n * providerRef.current.setStateDelta({ userId: '123', bizType: 'order' });\n * // 之后发送消息,请求体会携带 stateDelta: { userId: '123', bizType: 'order' }\n *\n * @example\n * // 清除自定义参数\n * providerRef.current.setStateDelta(undefined);\n */\n setStateDelta: (delta: Record<string, any> | undefined) => void;\n}\n\n/**\n * config.chatProps 中的配置\n */\nexport interface ChatConfig {\n /**\n * 是否展示清空按钮\n * @type {boolean}\n * @default false\n */\n clearBtnShow?: boolean;\n /**\n * 是否展示输入框\n * @type {boolean}\n * @default true\n */\n inputShow?: boolean;\n /**\n * 打字机效果速度(单位:毫秒)\n * @type {number}\n * @default 60\n * @version 1.0.0\n */\n textSpeed?: number;\n}\n\n/**\n * Provider config 整体配置结构\n */\nexport interface XAdkProviderConfig {\n session?: {\n showSessionList?: boolean;\n };\n /**\n * 初始化后是否默认展示第一条会话内容\n * @type {boolean}\n * @default false\n */\n showFirstSession?: boolean;\n allowUpload?: boolean;\n /**\n * 是否启用拖拽上传(需 allowUpload 为 true 时生效)\n * 拖拽区域为整个聊天区域(不含侧边栏)\n * @default true\n */\n draggable?: boolean;\n appNo?: string;\n chatProps?: ChatConfig;\n debug?: boolean;\n /**\n * 是否展示点赞/点踩按钮\n * @default true\n */\n showFeedback?: boolean;\n /**\n * 点击对话中附件卡片的回调(非图片、非音视频文件)\n */\n onFileClick?: (file: FileItem) => void;\n /**\n * 自定义文件上传函数\n */\n uploadRequest?: UploadRequestFn;\n /**\n * 预设策略。默认 xgroup-adk,用于兼容众安信科现有 ADK 协议。\n * 传入 base 可获得更中立的组件默认行为。\n */\n preset?: ChatPresetInput;\n /**\n * 覆盖或补充当前 preset 的局部策略。\n */\n strategies?: ChatStrategies;\n}\n\n/**\n * XAdkProvider Props\n */\nexport interface XAdkProviderProps {\n /**\n * AI 服务基础地址\n */\n url?: string;\n /**\n * 认证 token\n */\n token: string;\n /**\n * 组件功能配置\n */\n config?: XAdkProviderConfig;\n /**\n * Provider 级预设策略,优先级高于 config.preset。\n */\n preset?: ChatPresetInput;\n /**\n * Provider 级策略覆盖,优先级高于 config.strategies。\n */\n strategies?: ChatStrategies;\n /**\n * Provider 唯一标识\n */\n providerId?: string;\n /**\n * 消息成功回调\n */\n onSuccess?: (success: any) => void;\n /**\n * 流式消息回调\n */\n onStream?: (data: Event) => void;\n /**\n * 错误回调\n */\n onError?: (err: any) => void;\n /**\n * 每条消息回调\n */\n onMessage?: (content: string, data: IMessage) => void;\n /**\n * 事件回调\n */\n onEvent?: (event: handleEvent) => void;\n /**\n * React 子元素 - 支持 Compound Components\n */\n children?: ReactNode;\n}\n\n// XAiSDKProps 继承 XAdkProviderProps\nexport interface XAdkSDKProps extends XAdkProviderProps {\n /**\n * 主题类型\n * @type {ThemeType}\n * @default 'default'\n * @version 1.0.0\n */\n theme?: ThemeType;\n\n /**\n * 组件属性配置\n * @type {object}\n * @default undefined\n * @version 1.0.0\n */\n componentProps?: {\n /**\n * 组件ID\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n id?: string;\n /** 支持任意 CSS 属性 */\n [key: string]: any;\n };\n}\n"],"mappings":"AAgCA;AACA;AACA;AACA;AACA;AACA,WAAYA,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;;AAYrB;AACA;AACA;;AAOA;AACA;AACA;;AA6BA;AACA;AACA;;AAuBA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["EventCode"],"sources":["../../../src/types/XAdkProvider.ts"],"sourcesContent":["import { ReactNode } from \"react\";\nimport {\n IMessage,\n Success,\n Event,\n Error,\n SendContent,\n ThemeType,\n FileItem,\n UploadRequestFn,\n} from \"@/types\";\nimport type { ChatPresetInput, ChatStrategies } from \"./ChatStrategies\";\n\nexport interface DebugOptions {\n url: string;\n sessionId?: string;\n config: any;\n token: string;\n type?: \"agentDebug\" | \"appDebug\";\n /**\n * 是否启用 Hook\n * 当使用自定义 chatData 时,应设置为 false 以避免内部 Hook 初始化\n * @default true\n */\n enabled?: boolean;\n strategies?: ChatStrategies;\n onError?: (error: Error) => void;\n onSuccess?: (data: Success) => void;\n onStream?: (data: Event) => void;\n onMessage?: (content: string, data: IMessage) => void;\n}\n\n/**\n * 事件状态码枚举\n * @enum {string}\n * @version 1.0.0\n */\nexport enum EventCode {\n /** 切换会话 */\n SESSION_SWITCH = \"SESSION_SWITCH\",\n /** 开启新会话 */\n SESSION_CREATE = \"SESSION_CREATE\",\n}\n\nexport type handleEvent = {\n code: EventCode;\n message: string;\n data?: any;\n};\n/**\n * renderFooter insert 参数说明\n */\nexport interface FooterRenderArgs {\n message: IMessage;\n isLastBotMsg: boolean;\n isLastMsg: boolean;\n}\n\n/**\n * Provider 可通过 ref 暴露的方法句柄\n */\nexport interface XAdkProviderHandle {\n startChat: (content: SendContent) => void;\n stopChat: () => void;\n reChat: () => void;\n clearChat: () => void;\n deleteSession: (id: string) => void;\n updateSession: (id: string, title: string) => void;\n getAppInfo: () => any;\n getMessages: () => IMessage[];\n getSessions: () => any[];\n setMessages: (msgs: IMessage[]) => void;\n setCurrentSession: (id: string) => void;\n /**\n * 设置自定义业务参数 (stateDelta)\n * 设置后每次发送消息时会自动携带该参数至后端\n * 传入 undefined 可清除已设置的参数\n *\n * @example\n * providerRef.current.setStateDelta({ userId: '123', bizType: 'order' });\n * // 之后发送消息,请求体会携带 stateDelta: { userId: '123', bizType: 'order' }\n *\n * @example\n * // 清除自定义参数\n * providerRef.current.setStateDelta(undefined);\n */\n setStateDelta: (delta: Record<string, any> | undefined) => void;\n}\n\n/**\n * config.chatProps 中的配置\n */\nexport interface ChatConfig {\n /**\n * 是否展示清空按钮\n * @type {boolean}\n * @default false\n */\n clearBtnShow?: boolean;\n /**\n * 是否展示输入框\n * @type {boolean}\n * @default true\n */\n inputShow?: boolean;\n /**\n * 打字机效果速度(单位:毫秒)\n * @type {number}\n * @default 60\n * @version 1.0.0\n */\n textSpeed?: number;\n}\n\n/**\n * Provider config 整体配置结构\n */\nexport interface XAdkProviderConfig {\n session?: {\n showSessionList?: boolean;\n /** 是否轮询会话详情并主动补入异步任务消息,默认 true */\n pollSessionEvents?: boolean;\n /** 会话详情轮询间隔,单位毫秒,默认 10000,最小 1000 */\n sessionEventsPollingInterval?: number;\n };\n /**\n * 初始化后是否默认展示第一条会话内容\n * @type {boolean}\n * @default false\n */\n showFirstSession?: boolean;\n allowUpload?: boolean;\n /**\n * 是否启用拖拽上传(需 allowUpload 为 true 时生效)\n * 拖拽区域为整个聊天区域(不含侧边栏)\n * @default true\n */\n draggable?: boolean;\n appNo?: string;\n chatProps?: ChatConfig;\n debug?: boolean;\n /**\n * 是否展示点赞/点踩按钮\n * @default true\n */\n showFeedback?: boolean;\n /**\n * 点击对话中附件卡片的回调(非图片、非音视频文件)\n */\n onFileClick?: (file: FileItem) => void;\n /**\n * 自定义文件上传函数\n */\n uploadRequest?: UploadRequestFn;\n /**\n * 预设策略。默认 xgroup-adk,用于兼容众安信科现有 ADK 协议。\n * 传入 base 可获得更中立的组件默认行为。\n */\n preset?: ChatPresetInput;\n /**\n * 覆盖或补充当前 preset 的局部策略。\n */\n strategies?: ChatStrategies;\n}\n\n/**\n * XAdkProvider Props\n */\nexport interface XAdkProviderProps {\n /**\n * AI 服务基础地址\n */\n url?: string;\n /**\n * 认证 token\n */\n token: string;\n /**\n * 组件功能配置\n */\n config?: XAdkProviderConfig;\n /**\n * Provider 级预设策略,优先级高于 config.preset。\n */\n preset?: ChatPresetInput;\n /**\n * Provider 级策略覆盖,优先级高于 config.strategies。\n */\n strategies?: ChatStrategies;\n /**\n * Provider 唯一标识\n */\n providerId?: string;\n /**\n * 消息成功回调\n */\n onSuccess?: (success: any) => void;\n /**\n * 流式消息回调\n */\n onStream?: (data: Event) => void;\n /**\n * 错误回调\n */\n onError?: (err: any) => void;\n /**\n * 每条消息回调\n */\n onMessage?: (content: string, data: IMessage) => void;\n /**\n * 事件回调\n */\n onEvent?: (event: handleEvent) => void;\n /**\n * React 子元素 - 支持 Compound Components\n */\n children?: ReactNode;\n}\n\n// XAiSDKProps 继承 XAdkProviderProps\nexport interface XAdkSDKProps extends XAdkProviderProps {\n /**\n * 主题类型\n * @type {ThemeType}\n * @default 'default'\n * @version 1.0.0\n */\n theme?: ThemeType;\n\n /**\n * 组件属性配置\n * @type {object}\n * @default undefined\n * @version 1.0.0\n */\n componentProps?: {\n /**\n * 组件ID\n * @type {string}\n * @default undefined\n * @version 1.0.0\n */\n id?: string;\n /** 支持任意 CSS 属性 */\n [key: string]: any;\n };\n}\n"],"mappings":"AAgCA;AACA;AACA;AACA;AACA;AACA,WAAYA,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;;AAYrB;AACA;AACA;;AAOA;AACA;AACA;;AA6BA;AACA;AACA;;AAuBA;AACA;AACA;;AAiDA;AACA;AACA;;AAoDA"}
|