@ai-group/chat-sdk 3.6.7 → 3.6.8

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.
@@ -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","DEFAULT_SESSION_EVENTS_POLLING_INTERVAL","getMessageEventId","messageItem","_messageItem$raw","eventId","raw","id","deduplicateMessages","messageItems","seenMessageIds","Set","hasDuplicate","uniqueIdMessages","filter","has","add","botTextGroups","Map","forEach","role","normalizedText","replace","trim","fileKey","map","file","fileUri","join","groupKey","concat","Boolean","group","get","set","redundantMessageIds","completeTexts","_toConsumableArray","sort","a","b","length","_ref","some","completeText","includes","mapSessionMessages","sessionEvents","mapped","item","content","Array","isArray","author","task","toLowerCase","inlineData","functionCall","functionResponse","executableCode","codeExecutionResult","errorMessage","textParts","fileDataParts","otherParts","invocationId","timestamp","isLike","modelCode","usageMetadata","finishReason","displayName","data","mimeType","functionCallMessage","find","currentMessage","_currentMessage$funct","_part$functionRespons","getComparableMessageContent","_messageItem$text","JSON","stringify","isStreamMessageWithoutServerEventId","insertMissingSessionEvents","currentMessages","renderedEventIds","unmatchedStreamMessageIndexes","index","missingEvents","event","_event$content","_event$content2","canRender","eventMessages","matchedIndexes","isRenderedByStream","every","eventMessage","comparableContent","matchedIndex","findIndex","delete","missingMessages","eventOrder","getMessageOrder","_messageItem$timestam","_messageItem$raw2","nextEventIndex","Number","POSITIVE_INFINITY","nextMessages","targetOrder","insertIndex","currentOrder","isFinite","splice","useADKChat","_ref2","_config$session$pollS","_config$session","_config$session$sessi","_config$session2","_ref2$url","url","window","location","origin","token","_ref2$config","config","_ref2$type","type","_ref2$enabled","enabled","strategies","onError","onMessage","onSuccess","onStream","_useState","_useState2","_slicedToArray","loading","setLoadingState","loadingRef","setLoading","nextLoading","current","_useState3","_useState4","sessionLoading","setSessionLoading","sendingRef","ctrl","tokenRef","_ref3","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","uniqueMessages","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","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","_ref5","_callee2","_ref4","_ref4$text","_ref4$files","files","_callee2$","_context2","abrupt","temp","_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","_ref6","_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","_ref7","_callee4","prevSessionId","_yield$fetchSessionDe","_appInfo$onboardingIn3","_appInfo$onboardingIn4","_callee4$","_context4","sent","_x2","_ref8","_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","_ref9","_callee6","_yield$closeSession","_callee6$","_context6","_x3","likeMessage","_ref10","_callee7","feedbackData","_yield$addFeedback","_callee7$","_context7","requestId","_x4","_x5","_x6","updateSession","_ref11","_callee8","_yield$updateSessionT","_callee8$","_context8","_x7","_x8","initConfig","_ref12","_callee9","_yield$fetchAppConfig","_callee9$","_context9","APP_CONFIG_INIT_SUCCESS","disposed","requesting","pollingSessionId","poll","_ref13","_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 deduplicateMessages = (messageItems: IMessage[]) => {\n const seenMessageIds = new Set<string>();\n let hasDuplicate = false;\n\n const uniqueIdMessages = messageItems.filter((messageItem) => {\n if (seenMessageIds.has(messageItem.id)) {\n hasDuplicate = true;\n return false;\n }\n seenMessageIds.add(messageItem.id);\n return true;\n });\n\n const botTextGroups = new Map<\n string,\n Array<{ messageItem: IMessage; normalizedText: string }>\n >();\n uniqueIdMessages.forEach((messageItem) => {\n const eventId = getMessageEventId(messageItem);\n if (\n messageItem.role !== \"bot\" ||\n !eventId ||\n typeof messageItem.text !== \"string\"\n )\n return;\n\n const normalizedText = messageItem.text.replace(/\\s+/g, \" \").trim();\n if (!normalizedText) return;\n\n const fileKey = (messageItem.fileData || [])\n .map((file) => file.fileUri)\n .join(\"|\");\n const groupKey = `${eventId}\\u0000${Boolean(\n messageItem.thought,\n )}\\u0000${fileKey}`;\n const group = botTextGroups.get(groupKey) || [];\n group.push({ messageItem, normalizedText });\n botTextGroups.set(groupKey, group);\n });\n\n const redundantMessageIds = new Set<string>();\n botTextGroups.forEach((group) => {\n const completeTexts: string[] = [];\n [...group]\n .sort((a, b) => b.normalizedText.length - a.normalizedText.length)\n .forEach(({ messageItem, normalizedText }) => {\n if (\n completeTexts.some((completeText) =>\n completeText.includes(normalizedText),\n )\n ) {\n redundantMessageIds.add(messageItem.id);\n hasDuplicate = true;\n return;\n }\n completeTexts.push(normalizedText);\n });\n });\n\n return hasDuplicate\n ? uniqueIdMessages.filter(\n (messageItem) => !redundantMessageIds.has(messageItem.id),\n )\n : messageItems;\n};\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 const uniqueMessages = deduplicateMessages(messages);\n uniqueMessages.forEach((msg) => {\n if (msg.functionResponse) {\n fnResMap[msg?.functionResponse?.id || \"\"] = msg.functionResponse;\n }\n });\n return uniqueMessages.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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"}
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","buildNonTextMessage","event","role","arguments","length","msg","id","author","invocationId","eventId","timestamp","isLike","modelCode","usageMetadata","finishReason","raw","inlineData","displayName","data","mimeType","functionCall","functionResponse","executableCode","codeExecutionResult","getMessageEventId","messageItem","_messageItem$raw","deduplicateMessages","messageItems","seenMessageIds","Set","hasDuplicate","uniqueIdMessages","filter","has","add","botTextGroups","Map","forEach","normalizedText","replace","trim","fileKey","map","file","fileUri","join","groupKey","concat","Boolean","group","get","set","redundantMessageIds","completeTexts","_toConsumableArray","sort","a","b","_ref","some","completeText","includes","mapSessionMessages","sessionEvents","mapped","item","content","Array","isArray","task","every","toLowerCase","errorMessage","textParts","fileDataParts","otherParts","partCounter","functionCallMessage","find","currentMessage","_currentMessage$funct","_part$functionRespons","insertMissingSessionEvents","currentMessages","removedInvocationIds","renderedEventIds","nextMessages","fnResMap","_event$content","_event$content2","p","_p$functionResponse","size","paired","callId","missingEvents","_event$content3","_event$content4","canRender","missingMessages","eventOrder","index","getMessageOrder","_messageItem$timestam","_messageItem$raw2","nextEventIndex","findIndex","Number","POSITIVE_INFINITY","targetOrder","insertIndex","currentOrder","isFinite","splice","useADKChat","_ref2","_config$session$pollS","_config$session","_config$session$sessi","_config$session2","_ref2$url","url","window","location","origin","token","_ref2$config","config","_ref2$type","type","_type","_ref2$enabled","enabled","strategies","onError","onMessage","onSuccess","onStream","_useState","_useState2","_slicedToArray","loading","setLoadingState","loadingRef","setLoading","nextLoading","current","_useState3","_useState4","sessionLoading","setSessionLoading","sendingRef","ctrl","tokenRef","_ref3","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","sessionDetailLoadingRef","stateDeltaRef","reChatRemovedInvocationIdsRef","backgroundRef","messagesRef","currentSessionIdRef","mergedMessages","uniqueMessages","_msg$functionResponse","_msg$functionCall","textMsgRef","eventDataRef","flushPendingSessionEvents","pending","replyInProgress","sessionId","prev","events","syncSessionEvents","targetSessionId","insertMessage","lastMessage","isLoading","slice","insertSuggestedQuestions","suggested_questions","insertPrologue","prologueText","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","storeMessage","_event$groundingMetad","Object","keys","groundingMetadata","searchEntryPoint","renderedContent","processPart","_event$groundingMetad2","ignore","newChunk","newMessage","partial","processFollowupPart","_event$content5","processErrorMessage","chunkJson","processActionArtifact","sendMessageRequest","values","Promise","resolve","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","status","AUTH_ERROR","stop","onmessage","rawData","error","warning","isBackground","bg","_iterator2","_step2","_chunkJson","_bgTextMsg","_iterator3","_step3","_chunkJson2","onclose","_textMsgRef$current","onerror","console","startChat","_ref5","_callee2","_ref4","_ref4$text","_ref4$files","files","_callee2$","_context2","abrupt","temp","_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","_ref6","_callee3","lastUserIndex","newMessages","i","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","_ref7","_callee4","prevSessionId","isSseStillActive","_yield$fetchSessionDe","_appInfo$onboardingIn3","_appInfo$onboardingIn4","_callee4$","_context4","aborted","delete","sent","_x2","_ref8","_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","_ref9","_callee6","_yield$closeSession","_callee6$","_context6","_x3","likeMessage","_ref10","_callee7","feedbackData","_yield$addFeedback","_callee7$","_context7","requestId","_x4","_x5","_x6","updateSession","_ref11","_callee8","_yield$updateSessionT","_callee8$","_context8","_x7","_x8","initConfig","_ref12","_callee9","_yield$fetchAppConfig","_callee9$","_context9","APP_CONFIG_INIT_SUCCESS","disposed","requesting","pollingSessionId","poll","_ref13","_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\n/**\n * 从 event + part 构建非文本 IMessage(functionCall / functionResponse / executableCode 等)。\n */\nconst buildNonTextMessage = (\n event: Event,\n part: Part,\n role: \"user\" | \"bot\" = \"bot\",\n): IMessage => {\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.inlineData) {\n msg.inlineData = {\n displayName: part.inlineData.displayName,\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\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 } else if (part.text) {\n msg.text = part.text;\n msg.thought = part.thought;\n }\n\n return msg;\n};\n\nconst getMessageEventId = (messageItem: IMessage) =>\n messageItem.eventId || messageItem.raw?.id;\n\nconst deduplicateMessages = (messageItems: IMessage[]) => {\n const seenMessageIds = new Set<string>();\n let hasDuplicate = false;\n\n const uniqueIdMessages = messageItems.filter((messageItem) => {\n if (seenMessageIds.has(messageItem.id)) {\n hasDuplicate = true;\n return false;\n }\n seenMessageIds.add(messageItem.id);\n return true;\n });\n\n // 机器人文本消息去重:同一事件、同一思考类型、同一文件列表的文本消息,如果文本内容包含关系,则保留最长的文本消息,去掉被包含的短文本消息。\n const botTextGroups = new Map<\n string,\n Array<{ messageItem: IMessage; normalizedText: string }>\n >();\n uniqueIdMessages.forEach((messageItem) => {\n const eventId = getMessageEventId(messageItem);\n if (\n messageItem.role !== \"bot\" ||\n !eventId ||\n typeof messageItem.text !== \"string\"\n )\n return;\n\n const normalizedText = messageItem.text.replace(/\\s+/g, \" \").trim();\n if (!normalizedText) return;\n\n const fileKey = (messageItem.fileData || [])\n .map((file) => file.fileUri)\n .join(\"|\");\n const groupKey = `${eventId}\\u0000${Boolean(\n messageItem.thought,\n )}\\u0000${fileKey}`;\n const group = botTextGroups.get(groupKey) || [];\n group.push({ messageItem, normalizedText });\n botTextGroups.set(groupKey, group);\n });\n\n const redundantMessageIds = new Set<string>();\n botTextGroups.forEach((group) => {\n const completeTexts: string[] = [];\n [...group]\n .sort((a, b) => b.normalizedText.length - a.normalizedText.length)\n .forEach(({ messageItem, normalizedText }) => {\n if (\n completeTexts.some((completeText) =>\n completeText.includes(normalizedText),\n )\n ) {\n redundantMessageIds.add(messageItem.id);\n hasDuplicate = true;\n return;\n }\n completeTexts.push(normalizedText);\n });\n });\n\n return hasDuplicate\n ? uniqueIdMessages.filter(\n (messageItem) => !redundantMessageIds.has(messageItem.id),\n )\n : messageItems;\n};\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 // functionResponse 的 user 事件仅用于配对 functionCall,不作为独立消息展示\n if (\n item.content.role === \"user\" &&\n item.content.parts.every((part: any) => !part || part.functionResponse)\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 && !part.errorMessage && !part.inlineData && !part.fileData,\n );\n\n // 使用确定性 ID:同一服务端事件 + 同一 part 类型始终生成相同 ID,\n // 确保多次 mapSessionMessages 调用产生的消息可以被 id 去重正确识别。\n let partCounter = 0;\n\n if (textParts.length > 0 || fileDataParts.length > 0) {\n const messageItem: IMessage = {\n id: `session-event:${item.id}:${partCounter++}`,\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: `session-event:${item.id}:${partCounter++}`,\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) 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 insertMissingSessionEvents = (\n currentMessages: IMessage[],\n sessionEvents: any[],\n removedInvocationIds?: Set<string>,\n) => {\n const renderedEventIds = new Set(\n currentMessages.map(getMessageEventId).filter(Boolean),\n );\n\n // 从所有 sessionEvents 中提取 functionResponse,配对到 currentMessages 中缺少响应的 functionCall\n // (functionResponse 事件的 role 为 user,不应作为独立消息展示,仅用于补齐工具调用状态)\n let nextMessages = [...currentMessages];\n const fnResMap = new Map<string, any>();\n sessionEvents.forEach((event) => {\n if (event.content?.role !== \"user\" || !Array.isArray(event.content?.parts))\n return;\n event.content.parts.forEach((p: any) => {\n if (p.functionResponse?.id) {\n fnResMap.set(p.functionResponse.id, p.functionResponse);\n }\n });\n });\n if (fnResMap.size > 0) {\n let paired = false;\n nextMessages = nextMessages.map((msg) => {\n if (msg.functionCall && !msg.functionResponse) {\n const callId = msg.functionCall.id;\n if (callId && fnResMap.has(callId)) {\n paired = true;\n return { ...msg, functionResponse: fnResMap.get(callId) };\n }\n }\n return msg;\n });\n if (!paired) nextMessages = currentMessages;\n }\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 // reChat 截断后,忽略被删除的 invocationId 对应的旧 bot 消息\n if (\n removedInvocationIds &&\n removedInvocationIds.size > 0 &&\n event.invocationId &&\n removedInvocationIds.has(event.invocationId)\n ) {\n return false;\n }\n\n return true;\n });\n if (missingEvents.length === 0) return nextMessages;\n\n const missingMessages = mapSessionMessages(missingEvents);\n if (missingMessages.length === 0) return nextMessages;\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 // nextMessages 已在上方 functionResponse 配对阶段创建,此处直接复用\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: _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 sessionDetailLoadingRef = useRef(false);\n // 用户自定义业务参数 (stateDelta),每次发送请求时携带\n const stateDeltaRef = useRef<Record<string, any> | undefined>(undefined);\n // reChat 截断消息时记录被删除的 invocationId,防止轮询把旧 bot 回复补回\n const reChatRemovedInvocationIdsRef = useRef<Set<string>>(new Set());\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 // 合并消息\n const mergedMessages = useMemo(() => {\n const fnResMap: Record<string, FunctionResponse> = {};\n const uniqueMessages = deduplicateMessages(messages);\n uniqueMessages.forEach((msg) => {\n if (msg.functionResponse) {\n fnResMap[msg?.functionResponse?.id || \"\"] = msg.functionResponse;\n }\n });\n return uniqueMessages.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 const flushPendingSessionEvents = useCallback(() => {\n const pending = pendingSessionEventsRef.current;\n // 仅在用户正在发送或流式文本拼接时跳过 flush,\n // loading 状态不应阻塞轮询补入(异步任务完成的消息需要在 loading 期间也能补入)\n const replyInProgress = sendingRef.current || textMsgRef.current !== null;\n if (\n !pending ||\n replyInProgress ||\n pending.sessionId !== currentSessionIdRef.current\n )\n return;\n\n pendingSessionEventsRef.current = null;\n\n // 使用 functional update 在同一个 setMessages 回调中完成 diff + 写入,\n // 避免双重调用和 loading 闪烁。仅在有实际新消息时才触发 loading 状态。\n setMessages((prev) => {\n const nextMessages = insertMissingSessionEvents(\n prev,\n pending.events,\n reChatRemovedInvocationIdsRef.current,\n );\n if (nextMessages === prev) return prev; // 无变化,不触发 re-render\n messagesRef.current = nextMessages;\n return nextMessages;\n });\n }, []);\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 }, [currentSessionId]);\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 = useCallback(\n (suggested_questions: string[] = []) => {\n if (!suggested_questions?.length) return;\n // 无消息内容 且 有建议问题时\n setSuggestedQuestions((prev) =>\n messages.length === 0 ? suggested_questions : prev,\n );\n },\n [messages.length],\n );\n\n // 初始化开场白\n const insertPrologue = useCallback((prologueText: string) => {\n if (prologueText) {\n setPrologue(prologueText);\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 if (!part || Object.keys(part).length === 0) return;\n\n const msg = buildNonTextMessage(event, part, role);\n\n // groundingMetadata 仅在前台 SSE 场景需要\n if (\n part.text &&\n event?.groundingMetadata?.searchEntryPoint?.renderedContent\n ) {\n msg.renderedContent =\n event.groundingMetadata.searchEntryPoint.renderedContent;\n }\n\n insertMessage(msg);\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],\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 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 bg.messages = [\n ...bg.messages,\n buildNonTextMessage(chunkJson, part),\n ];\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为 false 时忽略该条消息文本\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 // 如果该后台会话已被恢复到前台(backgroundRef 中已删除),\n // 需要更新前台 loading 状态\n if (\n !backgroundRef.current.has(targetSessionId) &&\n currentSessionIdRef.current === targetSessionId\n ) {\n setLoading(false);\n textMsgRef.current = null;\n }\n } else {\n setLoading(false);\n if (textMsgRef.current) {\n onMessage?.(textMsgRef.current?.text || \"\", textMsgRef.current);\n }\n textMsgRef.current = null;\n ctrl.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 // 同上:后台会话已恢复到前台时同步 loading 状态\n if (\n !backgroundRef.current.has(targetSessionId) &&\n currentSessionIdRef.current === targetSessionId\n ) {\n setLoading(false);\n ctrl.current = null;\n }\n } else {\n setLoading(false);\n ctrl.current = null;\n }\n resolve();\n console.error(\"EventSource failed:\", error);\n throw error;\n },\n });\n });\n },\n [\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 // 正常发送时重置 reChat 删除标记\n reChatRemovedInvocationIdsRef.current = new Set();\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 // 收集被截断的 bot 消息的 invocationId,轮询时忽略这些旧回复\n const removedInvocationIds = new Set<string>();\n for (let i = lastUserIndex + 1; i < messages.length; i++) {\n const msg = messages[i];\n if (msg.invocationId) removedInvocationIds.add(msg.invocationId);\n }\n reChatRemovedInvocationIdsRef.current = removedInvocationIds;\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 ctrl.current?.abort();\n ctrl.current = null;\n setLoading(false);\n textMsgRef.current = null;\n }, [setLoading]);\n\n // 清除/重置会话\n const clearChat = () => {\n const newSessionId = v4();\n setCurrentSessionId(newSessionId);\n // 清除 reChat 删除标记\n reChatRemovedInvocationIdsRef.current = new Set();\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 // 切换会话时重置 reChat 删除标记\n reChatRemovedInvocationIdsRef.current = new Set();\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 messagesRef.current = bg.messages;\n textMsgRef.current = bg.textMsgRef;\n // 仅当 SSE 连接还在运行时才恢复 loading 状态,\n // 避免 SSE 已关闭但 bg 快照中 loading 仍为 true 导致 sender 永久卡住\n const isSseStillActive = bg.loading && !bg.ctrl.signal.aborted;\n setLoading(isSseStillActive);\n ctrl.current = isSseStillActive ? 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 (disposed || 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 // 不立即执行首次 poll,避免与 initAppConversations / setCurrentSession / fetchSessionDetail 竞争。首次数据由初始化流程加载,轮询仅负责后续增量同步。\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 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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"}