@ai-group/chat-sdk 3.6.5 → 3.6.6

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","mapSessionMessages","sessionEvents","mapped","forEach","item","content","Array","isArray","author","some","task","role","toLowerCase","filter","Boolean","inlineData","functionCall","functionResponse","executableCode","codeExecutionResult","errorMessage","length","textParts","fileDataParts","otherParts","invocationId","timestamp","isLike","modelCode","usageMetadata","finishReason","displayName","data","mimeType","concat","map","fileUri","functionCallMessage","find","currentMessage","_currentMessage$funct","_part$functionRespons","getComparableMessageContent","_messageItem$text","JSON","stringify","replace","trim","isStreamMessageWithoutServerEventId","insertMissingSessionEvents","currentMessages","renderedEventIds","Set","unmatchedStreamMessageIndexes","index","missingEvents","event","_event$content","_event$content2","canRender","has","eventMessages","matchedIndexes","isRenderedByStream","every","eventMessage","comparableContent","matchedIndex","findIndex","includes","delete","missingMessages","eventOrder","Map","getMessageOrder","_messageItem$timestam","_messageItem$raw2","get","nextEventIndex","Number","POSITIVE_INFINITY","nextMessages","_toConsumableArray","targetOrder","insertIndex","currentOrder","isFinite","splice","useADKChat","_ref","_config$session$pollS","_config$session","_config$session$sessi","_config$session2","_ref$url","url","window","location","origin","token","_ref$config","config","_ref$type","type","_ref$enabled","enabled","strategies","onError","onMessage","onSuccess","onStream","_useState","_useState2","_slicedToArray","loading","setLoadingState","loadingRef","setLoading","nextLoading","current","_useState3","_useState4","sessionLoading","setSessionLoading","sendingRef","ctrl","tokenRef","_ref2","appNo","showFirstSession","pollSessionEvents","session","sessionEventsPollingInterval","Math","max","_useState5","_useState6","appInfo","setAppInfo","_useState7","_useState8","initialized","setInitialized","_useState9","_useState10","sessionList","setSessionList","_useState11","_useState12","currentSessionId","setCurrentSessionId","_useState13","total","pageNum","pageSize","_useState14","sessionPagination","setSessionPagination","_useState15","_useState16","prologue","setPrologue","_useState17","_useState18","suggestedQuestions","setSuggestedQuestions","_useState19","_useState20","messages","setMessages","pendingSessionEventsRef","sessionEventsFlushTimerRef","sessionEventsSyncingRef","sessionDetailLoadingRef","stateDeltaRef","backgroundRef","messagesRef","currentSessionIdRef","mergedMessages","fnResMap","msg","_msg$functionResponse","_msg$functionCall","textMsgRef","eventDataRef","cancelSessionEventsFlush","clearTimeout","flushPendingSessionEvents","pending","replyInProgress","sessionId","previewMessages","events","setTimeout","prev","syncSessionEvents","targetSessionId","insertMessage","lastMessage","isLoading","slice","insertSuggestedQuestions","suggested_questions","arguments","insertPrologue","updateMessage","m","withEventMeta","_event$modelCode","_event$usageMetadata","_event$finishReason","updateLastBotEventMeta","next","findLastIndex","storeEvents","_event$actions","title","actions","artifactDelta","name","_part$executableCode$","code","outcome","updatedEvent","newEventData","set","storeMessage","_event$groundingMetad","groundingMetadata","searchEntryPoint","renderedContent","Object","keys","processPart","_event$groundingMetad2","ignore","newChunk","newMessage","partial","processFollowupPart","_event$content3","processErrorMessage","chunkJson","processActionArtifact","sendMessageRequest","values","Promise","resolve","abort","newCtrl","AbortController","signal","addEventListener","once","requestUrl","bgTextMsg","method","body","openWhenHidden","headers","stream","Authorization","onopen","response","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","ok","status","AUTH_ERROR","stop","onmessage","rawData","error","warning","isBackground","bg","_iterator2","_step2","_chunkJson","_bgTextMsg","_iterator3","_step3","_chunkJson2","onclose","_textMsgRef$current","onerror","console","startChat","_ref4","_callee2","_ref3","_ref3$text","_ref3$files","files","_callee2$","_context2","abrupt","temp","file","_file$response","_file$response2","_file$response3","fileName","tempUrl","fileUrl","_file$response4","_file$response5","_file$response6","_file$response7","_file$response8","_file$response9","fileId","fileType","stateDelta","finish","initAppConversations","_x","apply","reChat","_ref5","_callee3","lastUserIndex","newMessages","lastUserMessage","_lastUserMessage$text","_lastUserMessage$file","_callee3$","_context3","confirmFnCall","fnCall","confirmed","_strategies$createFun","_strategies$createFun2","createFunctionResponse","call","suggestChat","stopChat","_ctrl$current","clearChat","_appInfo$onboardingIn","_appInfo$onboardingIn2","newSessionId","onboardingInfo","formatMessages","isReplace","setCurrentSession","_ref6","_callee4","prevSessionId","_yield$fetchSessionDe","_appInfo$onboardingIn3","_appInfo$onboardingIn4","_callee4$","_context4","sent","_x2","_ref7","_callee5","fetchDetail","_yield$fetchSessionLi","_yield$fetchSessionLi2","pagination","formatSessions","_data$","_appInfo$onboardingIn5","_appInfo$onboardingIn6","_args5","_callee5$","_context5","key","label","Date","startTime","getTime","meta","APP_MESSAGES_INIT_SUCCESS","t0","NETWORK_ERROR","deleteSession","_ref8","_callee6","_yield$closeSession","_callee6$","_context6","_x3","likeMessage","_ref9","_callee7","feedbackData","_yield$addFeedback","_callee7$","_context7","requestId","_x4","_x5","_x6","updateSession","_ref10","_callee8","_yield$updateSessionT","_callee8$","_context8","_x7","_x8","initConfig","_ref11","_callee9","_yield$fetchAppConfig","_callee9$","_context9","APP_CONFIG_INIT_SUCCESS","disposed","requesting","pollingSessionId","poll","_ref12","_callee10","_yield$fetchSessionDe2","_callee10$","_context10","timer","setInterval","clearInterval","_ctrl$current2","_bg$ctrl","clear","suggestions","setStateDelta","delta"],"sources":["../../../src/hooks/useADKChat.ts"],"sourcesContent":["import { useEffect, useCallback, useMemo, useRef, useState } from \"react\";\nimport {\n fetchEventSource,\n EventStreamContentType,\n} from \"@microsoft/fetch-event-source\";\nimport { message } from \"antd\";\nimport { v4 } from \"uuid\";\nimport { SESSION_PAGE_SIZE, API_SUCCESS_CODE } from \"@/constants\";\nimport {\n SuccessCode,\n ErrorCode,\n DebugOptions,\n FunctionCall,\n SendContent,\n SessionData,\n AgentRunRequest,\n Event,\n FunctionResponse,\n IMessage,\n Part,\n} from \"@/types\";\nimport {\n fetchAppConfig,\n fetchSessionList,\n fetchSessionDetail,\n closeSession,\n updateSessionTitle,\n addFeedback,\n type ChatConfig,\n} from \"@/services/api\";\nimport { safeJsonParse } from \"@/utils\";\n\nconst combineTextParts = (parts: Part[]) => {\n const result: Part[] = [];\n let combinedTextPart: Part | undefined;\n\n // eslint-disable-next-line no-restricted-syntax\n for (const part of parts) {\n // 纯文本 part(没有 fileData 等其他字段)才合并\n const isPureText = part.text && !part.fileData;\n if (isPureText) {\n // 如果没有 combined 或 combined 思考类型跟当前 part 不同,则创建新的合并引用\n if (!combinedTextPart || combinedTextPart.thought !== part.thought) {\n combinedTextPart = { ...part };\n result.push(combinedTextPart);\n } else {\n combinedTextPart.text =\n (combinedTextPart.text || \"\") + (part.text || \"\");\n }\n } else {\n combinedTextPart = undefined;\n result.push(part);\n }\n }\n return result;\n};\n\nconst DEFAULT_SESSION_EVENTS_POLLING_INTERVAL = 10000;\n\nconst getMessageEventId = (messageItem: IMessage) =>\n messageItem.eventId || messageItem.raw?.id;\n\nconst mapSessionMessages = (sessionEvents: any[]): IMessage[] => {\n const mapped: IMessage[] = [];\n sessionEvents.forEach((item) => {\n if (!item || !item.content || !Array.isArray(item.content.parts)) return;\n // 后端为异步任务插入的用户事件仅用于关联任务,不在页面展示。\n if (\n item.author === \"user\" &&\n item.content.parts.some((part: any) => part.task)\n )\n return;\n\n const role =\n (item.content.role || \"\").toLowerCase() === \"user\" ? \"user\" : \"bot\";\n const parts = item.content.parts.filter((part: any) => {\n if (!part) return false;\n return Boolean(\n part.text ||\n part.inlineData ||\n part.functionCall ||\n part.functionResponse ||\n part.fileData ||\n part.executableCode ||\n part.codeExecutionResult ||\n part.errorMessage,\n );\n });\n if (parts.length === 0) return;\n\n const textParts = parts.filter(\n (part: any) => part.text || part.errorMessage || part.inlineData,\n );\n const fileDataParts = parts.filter((part: any) => part.fileData);\n const otherParts = parts.filter(\n (part: any) =>\n !part.text &&\n !part.errorMessage &&\n !part.inlineData &&\n !part.fileData,\n );\n\n if (textParts.length > 0 || fileDataParts.length > 0) {\n const messageItem: IMessage = {\n id: v4(),\n author: item.author,\n invocationId: item.invocationId,\n eventId: item.id,\n timestamp: item.timestamp,\n isLike: item.isLike,\n role,\n modelCode: item.modelCode,\n usageMetadata: item.usageMetadata,\n finishReason: item.finishReason,\n raw: item,\n };\n\n textParts.forEach((part: any) => {\n if (part.inlineData) {\n messageItem.inlineData = {\n displayName: part.inlineData.displayName,\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\n };\n }\n if (part.text) {\n messageItem.text =\n (messageItem.text ? `${messageItem.text}\\n` : \"\") + part.text;\n if (typeof part.thought !== \"undefined\")\n messageItem.thought = part.thought;\n }\n if (part.errorMessage) {\n messageItem.text =\n (messageItem.text ? `${messageItem.text}\\n` : \"\") +\n part.errorMessage;\n }\n });\n\n if (fileDataParts.length > 0) {\n messageItem.fileData = fileDataParts.map((part: any) => ({\n displayName: part.fileData.displayName || \"\",\n fileUri: part.fileData.fileUri,\n mimeType: part.fileData.mimeType,\n }));\n }\n mapped.push(messageItem);\n }\n\n otherParts.forEach((part: any) => {\n const messageItem: IMessage = {\n id: v4(),\n author: item.author,\n invocationId: item.invocationId,\n eventId: item.id,\n timestamp: item.timestamp,\n isLike: item.isLike,\n role,\n modelCode: item.modelCode,\n usageMetadata: item.usageMetadata,\n finishReason: item.finishReason,\n raw: item,\n };\n\n if (part.functionCall) messageItem.functionCall = part.functionCall;\n if (part.executableCode)\n messageItem.executableCode = part.executableCode;\n if (part.codeExecutionResult)\n messageItem.codeExecutionResult = part.codeExecutionResult;\n if (part.functionResponse) {\n const functionCallMessage = mapped.find(\n (currentMessage) =>\n currentMessage.functionCall?.id === part.functionResponse?.id,\n );\n if (functionCallMessage) {\n functionCallMessage.functionResponse = part.functionResponse;\n }\n return;\n }\n mapped.push(messageItem);\n });\n });\n return mapped;\n};\n\nconst getComparableMessageContent = (messageItem: IMessage) =>\n JSON.stringify({\n role: messageItem.role,\n text: messageItem.text?.replace(/\\r\\n/g, \"\\n\").trim() || \"\",\n thought: Boolean(messageItem.thought),\n inlineData: messageItem.inlineData || null,\n fileData: messageItem.fileData || null,\n functionCall: messageItem.functionCall || null,\n functionResponse: messageItem.functionResponse || null,\n executableCode: messageItem.executableCode || null,\n codeExecutionResult: messageItem.codeExecutionResult || null,\n });\n\nconst isStreamMessageWithoutServerEventId = (messageItem: IMessage) => {\n const eventId = getMessageEventId(messageItem);\n return (\n Boolean(messageItem.invocationId) &&\n (!eventId || eventId === messageItem.invocationId)\n );\n};\n\nconst insertMissingSessionEvents = (\n currentMessages: IMessage[],\n sessionEvents: any[],\n) => {\n const renderedEventIds = new Set(\n currentMessages.map(getMessageEventId).filter(Boolean),\n );\n const unmatchedStreamMessageIndexes = new Set(\n currentMessages\n .map((messageItem, index) =>\n isStreamMessageWithoutServerEventId(messageItem) ? index : -1,\n )\n .filter((index) => index >= 0),\n );\n const missingEvents = sessionEvents.filter((event) => {\n const parts = event.content?.parts;\n const canRender =\n Boolean(event.id) &&\n event.content?.role === \"model\" &&\n Array.isArray(parts) &&\n parts.length > 0;\n if (!canRender || renderedEventIds.has(event.id)) return false;\n\n // 新版 SSE 包装数据没有事件 id,只能临时使用 invocationId。\n // 用 invocationId + 完整渲染内容做一次性身份对齐,避免会话轮询重复插入;\n // 同 invocation 下内容不同或后续出现的事件,仍然按独立 event.id 补入。\n const eventMessages = mapSessionMessages([event]);\n const matchedIndexes: number[] = [];\n const isRenderedByStream =\n eventMessages.length > 0 &&\n eventMessages.every((eventMessage) => {\n const comparableContent = getComparableMessageContent(eventMessage);\n const matchedIndex = currentMessages.findIndex(\n (currentMessage, index) =>\n unmatchedStreamMessageIndexes.has(index) &&\n !matchedIndexes.includes(index) &&\n currentMessage.invocationId === eventMessage.invocationId &&\n getComparableMessageContent(currentMessage) === comparableContent,\n );\n if (matchedIndex < 0) return false;\n matchedIndexes.push(matchedIndex);\n return true;\n });\n if (isRenderedByStream) {\n matchedIndexes.forEach((index) =>\n unmatchedStreamMessageIndexes.delete(index),\n );\n return false;\n }\n return true;\n });\n if (missingEvents.length === 0) return currentMessages;\n\n const missingMessages = mapSessionMessages(missingEvents);\n if (missingMessages.length === 0) return currentMessages;\n\n const eventOrder = new Map(\n sessionEvents.map((event, index) => [event.id, index]),\n );\n const getMessageOrder = (messageItem: IMessage) => {\n const eventId = getMessageEventId(messageItem);\n if (eventId && eventOrder.has(eventId)) return eventOrder.get(eventId)!;\n\n const timestamp = messageItem.timestamp ?? messageItem.raw?.timestamp;\n if (timestamp !== undefined) {\n const nextEventIndex = sessionEvents.findIndex(\n (event) => (event.timestamp || 0) > timestamp,\n );\n return nextEventIndex < 0\n ? sessionEvents.length + 0.5\n : nextEventIndex - 0.5;\n }\n return Number.POSITIVE_INFINITY;\n };\n\n const nextMessages = [...currentMessages];\n missingMessages.forEach((messageItem) => {\n const targetOrder = getMessageOrder(messageItem);\n let insertIndex = nextMessages.findIndex((currentMessage) => {\n const currentOrder = getMessageOrder(currentMessage);\n return Number.isFinite(currentOrder) && currentOrder > targetOrder;\n });\n if (insertIndex < 0) insertIndex = nextMessages.length;\n nextMessages.splice(insertIndex, 0, messageItem);\n });\n return nextMessages;\n};\n\n// 后台会话连接状态\ninterface BackgroundSession {\n ctrl: AbortController;\n messages: IMessage[];\n loading: boolean;\n textMsgRef: IMessage | null;\n}\n\nfunction useADKChat({\n url = window.location.origin,\n token,\n config = {},\n type = \"agentDebug\",\n enabled = true, // ← 新增: 是否启用 Hook\n strategies,\n onError,\n onMessage,\n onSuccess,\n onStream,\n}: DebugOptions) {\n const [loading, setLoadingState] = useState(false);\n const loadingRef = useRef(false);\n const setLoading = useCallback((nextLoading: boolean) => {\n loadingRef.current = nextLoading;\n setLoadingState(nextLoading);\n }, []);\n const [sessionLoading, setSessionLoading] = useState(false);\n const sendingRef = useRef(false); // 同步锁,防止快速重复点击\n const ctrl = useRef<AbortController | null>(null);\n const tokenRef = useRef(token);\n tokenRef.current = token;\n // 应用配置\n const { appNo, showFirstSession } = config || {};\n const pollSessionEvents = config?.session?.pollSessionEvents ?? true;\n const sessionEventsPollingInterval = Math.max(\n config?.session?.sessionEventsPollingInterval ??\n DEFAULT_SESSION_EVENTS_POLLING_INTERVAL,\n 1000,\n );\n const [appInfo, setAppInfo] = useState<ChatConfig | null>(null);\n // 初始化完成\n const [initialized, setInitialized] = useState(false);\n // 会话记录\n const [sessionList, setSessionList] = useState<SessionData[]>([]);\n // 当前会话\n const [currentSessionId, setCurrentSessionId] = useState<string>(() => v4());\n // 会话分页设置\n const [sessionPagination, setSessionPagination] = useState({\n total: 0,\n pageNum: 1,\n pageSize: SESSION_PAGE_SIZE,\n });\n // 开场白\n const [prologue, setPrologue] = useState<string>(\"\");\n // 建议问题\n const [suggestedQuestions, setSuggestedQuestions] = useState<string[]>([]);\n const [messages, setMessages] = useState<IMessage[]>([]);\n const pendingSessionEventsRef = useRef<{\n sessionId: string;\n events: any[];\n } | null>(null);\n const sessionEventsFlushTimerRef = useRef<ReturnType<\n typeof setTimeout\n > | null>(null);\n const sessionEventsSyncingRef = useRef(false);\n const sessionDetailLoadingRef = useRef(false);\n // 用户自定义业务参数 (stateDelta),每次发送请求时携带\n const stateDeltaRef = useRef<Record<string, any> | undefined>(undefined);\n\n // ===== 多会话后台连接管理 =====\n const backgroundRef = useRef<Map<string, BackgroundSession>>(new Map());\n const messagesRef = useRef<IMessage[]>(messages);\n messagesRef.current = messages;\n const currentSessionIdRef = useRef<string>(currentSessionId);\n currentSessionIdRef.current = currentSessionId;\n const mergedMessages = useMemo(() => {\n const fnResMap: Record<string, FunctionResponse> = {};\n messages.forEach((msg) => {\n if (msg.functionResponse) {\n fnResMap[msg?.functionResponse?.id || \"\"] = msg.functionResponse;\n }\n });\n return messages.map((msg) => {\n if (msg.functionCall) {\n return {\n ...msg,\n functionResponse: fnResMap[msg?.functionCall?.id || \"\"],\n };\n }\n return msg;\n });\n }, [messages]);\n const textMsgRef = useRef<IMessage>(null);\n const eventDataRef = useRef<Map<string, any>>(new Map());\n\n const cancelSessionEventsFlush = useCallback(() => {\n if (sessionEventsFlushTimerRef.current === null) return;\n clearTimeout(sessionEventsFlushTimerRef.current);\n sessionEventsFlushTimerRef.current = null;\n }, []);\n\n const flushPendingSessionEvents = useCallback(() => {\n const pending = pendingSessionEventsRef.current;\n const replyInProgress =\n loadingRef.current ||\n sendingRef.current ||\n textMsgRef.current !== null;\n if (\n !pending ||\n replyInProgress ||\n pending.sessionId !== currentSessionIdRef.current\n )\n return;\n\n const previewMessages = insertMissingSessionEvents(\n messagesRef.current,\n pending.events,\n );\n pendingSessionEventsRef.current = null;\n if (previewMessages === messagesRef.current) return;\n\n sessionEventsSyncingRef.current = true;\n setLoading(true);\n sessionEventsFlushTimerRef.current = setTimeout(() => {\n sessionEventsFlushTimerRef.current = null;\n if (pending.sessionId === currentSessionIdRef.current) {\n setMessages((prev) => {\n const nextMessages = insertMissingSessionEvents(\n prev,\n pending.events,\n );\n messagesRef.current = nextMessages;\n return nextMessages;\n });\n }\n sessionEventsSyncingRef.current = false;\n setLoading(false);\n }, 0);\n }, [setLoading]);\n\n const syncSessionEvents = useCallback(\n (events: any[], targetSessionId: string) => {\n if (targetSessionId !== currentSessionIdRef.current) return;\n pendingSessionEventsRef.current = {\n sessionId: targetSessionId,\n events,\n };\n flushPendingSessionEvents();\n },\n [flushPendingSessionEvents],\n );\n\n useEffect(() => {\n pendingSessionEventsRef.current = null;\n cancelSessionEventsFlush();\n if (sessionEventsSyncingRef.current) {\n sessionEventsSyncingRef.current = false;\n setLoading(false);\n }\n }, [cancelSessionEventsFlush, currentSessionId, setLoading]);\n\n useEffect(() => {\n if (!loading) flushPendingSessionEvents();\n }, [flushPendingSessionEvents, loading]);\n\n // 插入消息\n const insertMessage = useCallback((msg: IMessage) => {\n setMessages((prev) => {\n const lastMessage = prev[prev.length - 1];\n if (lastMessage?.isLoading) {\n return [...prev.slice(0, -1), msg, lastMessage];\n }\n return [...prev, msg];\n });\n }, []);\n\n // 初始化开场白预设置问题\n const insertSuggestedQuestions = (suggested_questions: string[] = []) => {\n if (!suggested_questions?.length) return;\n // 无消息内容 且 有建议问题时\n if (messages.length === 0 && suggested_questions.length) {\n setSuggestedQuestions(suggested_questions);\n }\n };\n\n // 初始化开场白\n const insertPrologue = (prologue: string) => {\n if (prologue) {\n setPrologue(prologue);\n }\n };\n\n // 更新消息\n const updateMessage = useCallback((msg: IMessage) => {\n setMessages((prev) => {\n return prev.map((m) => {\n if (m.id === msg.id) {\n return msg;\n }\n return m;\n });\n });\n }, []);\n\n const withEventMeta = useCallback((msg: IMessage, event: Event): IMessage => {\n return {\n ...msg,\n modelCode: event.modelCode ?? msg.modelCode,\n usageMetadata: event.usageMetadata ?? msg.usageMetadata,\n finishReason: event.finishReason ?? msg.finishReason,\n raw: {\n ...(msg.raw || {}),\n ...event,\n },\n };\n }, []);\n\n const updateLastBotEventMeta = useCallback(\n (event: Event) => {\n if (!event.modelCode && !event.usageMetadata && !event.finishReason)\n return;\n\n setMessages((prev) => {\n const next = [...prev];\n const index = next.findLastIndex((msg) => msg.role === \"bot\");\n if (index < 0) return prev;\n\n next[index] = withEventMeta(next[index], event);\n return next;\n });\n },\n [withEventMeta],\n );\n\n // 存储事件\n const storeEvents = useCallback((part: Part | null, event: any) => {\n let title = \"\";\n\n if (part == null && event.actions?.artifactDelta) {\n title += \"eventAction: artifact\";\n } else if (part) {\n if (part.text) {\n title += `text:${part.text}`;\n } else if (part.functionCall) {\n title += `functionCall:${part.functionCall.name}`;\n } else if (part.functionResponse) {\n title += `functionResponse:${part.functionResponse.name}`;\n } else if (part.executableCode) {\n title += `executableCode:${part.executableCode.code?.slice(0, 10)}`;\n } else if (part.codeExecutionResult) {\n title += `codeExecutionResult:${part.codeExecutionResult.outcome}`;\n } else if (part.errorMessage) {\n title += `errorMessage:${part.errorMessage}`;\n }\n }\n\n const updatedEvent = { ...event, title };\n\n const newEventData = new Map(eventDataRef.current);\n newEventData.set(event.id, updatedEvent);\n eventDataRef.current = newEventData;\n }, []);\n\n // 存储消息\n const storeMessage = useCallback(\n (part: Part | null, event: Event, role: \"user\" | \"bot\") => {\n const msg: IMessage = {\n id: v4(),\n author: event.author,\n invocationId: event.invocationId,\n eventId: event.id,\n timestamp: event.timestamp,\n isLike: event.isLike || 0,\n role,\n modelCode: event.modelCode,\n usageMetadata: event.usageMetadata,\n finishReason: event.finishReason,\n raw: event,\n };\n\n if (part) {\n if (part.inlineData) {\n msg.inlineData = {\n displayName: part.inlineData.displayName,\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\n };\n } else if (part.text) {\n msg.text = part.text;\n msg.thought = part.thought;\n\n if (event?.groundingMetadata?.searchEntryPoint?.renderedContent) {\n msg.renderedContent =\n event.groundingMetadata.searchEntryPoint.renderedContent;\n }\n } else if (part.fileData) {\n msg.fileData = [part.fileData];\n } else if (part.functionCall) {\n msg.functionCall = part.functionCall;\n } else if (part.functionResponse) {\n msg.functionResponse = part.functionResponse;\n } else if (part.executableCode) {\n msg.executableCode = part.executableCode;\n } else if (part.codeExecutionResult) {\n msg.codeExecutionResult = part.codeExecutionResult;\n }\n }\n\n if (part && Object.keys(part).length > 0) {\n insertMessage(msg);\n }\n },\n [insertMessage],\n );\n\n // 处理消息部分(关键更新)\n const processPart = useCallback(\n (event: Event, part: Part, ignore: boolean = false) => {\n const renderedContent =\n event.groundingMetadata?.searchEntryPoint?.renderedContent;\n if (part.text) {\n if (ignore) return;\n const newChunk = part.text;\n\n if (\n !textMsgRef.current ||\n textMsgRef.current.thought !== part.thought\n ) {\n const newMessage: IMessage = {\n id: v4(),\n author: event.author,\n invocationId: event.invocationId,\n eventId: event.id,\n timestamp: event.timestamp,\n role: \"bot\",\n text: newChunk,\n isLike: event.isLike || 0,\n thought: part.thought,\n modelCode: event.modelCode,\n usageMetadata: event.usageMetadata,\n finishReason: event.finishReason,\n raw: event,\n };\n\n if (renderedContent) {\n newMessage.renderedContent = renderedContent;\n }\n\n textMsgRef.current = newMessage;\n // 存储原数据\n storeEvents(part, event);\n // 插入消息\n insertMessage(newMessage);\n } else {\n if (renderedContent) {\n textMsgRef.current = {\n ...textMsgRef.current,\n renderedContent,\n };\n }\n textMsgRef.current = {\n ...withEventMeta(textMsgRef.current, event),\n text: (textMsgRef.current.text || \"\") + newChunk,\n };\n updateMessage(textMsgRef.current);\n if (event.partial === false) {\n storeEvents(part, event);\n textMsgRef.current = null;\n }\n }\n } else {\n textMsgRef.current = null;\n storeEvents(part, event);\n storeMessage(part, event, \"bot\");\n }\n },\n [storeEvents, storeMessage, insertMessage, updateMessage, withEventMeta],\n );\n\n // 处理建议类消息\n const processFollowupPart = useCallback(\n (event: Event) => {\n // 获取建议类消息的文本内容\n const part = event?.content?.parts?.[0] || null;\n const text = part?.text || \"\";\n storeEvents(part, event);\n if (text) {\n setSuggestedQuestions((prev) => [...prev, text]);\n }\n },\n [storeEvents, insertMessage],\n );\n\n // 处理错误消息\n const processErrorMessage = useCallback(\n (chunkJson: any) => {\n storeEvents(null, chunkJson);\n insertMessage({\n id: v4(),\n text: chunkJson.errorMessage,\n role: \"bot\",\n });\n },\n [storeEvents, insertMessage],\n );\n\n // 处理动作和制品\n const processActionArtifact = useCallback(\n (event: any) => {\n if (event.actions && event.actions.artifactDelta) {\n storeEvents(null, event);\n storeMessage(null, event, \"bot\");\n }\n },\n [storeEvents, storeMessage],\n );\n\n // 发送消息请求\n const sendMessageRequest = useCallback(\n (values: AgentRunRequest) => {\n return new Promise<void>((resolve) => {\n const targetSessionId = values.sessionId || currentSessionIdRef.current;\n\n // 只 abort 同一 session 的旧连接\n if (targetSessionId === currentSessionIdRef.current && ctrl.current) {\n ctrl.current.abort();\n }\n const newCtrl = new AbortController();\n if (targetSessionId === currentSessionIdRef.current) {\n setLoading(true);\n ctrl.current = newCtrl;\n }\n\n // 当 signal 被外部 abort(stopChat)时,确保外层 Promise 被 resolve\n // 否则 startChat 中的 await 会永远挂起,sendingRef 无法重置为 false\n newCtrl.signal.addEventListener(\n \"abort\",\n () => {\n resolve();\n },\n { once: true },\n );\n\n const requestUrl = `${url}/api/gateway-web/openApi/v1/aizt/app/${appNo}/sendMsgStreaming`;\n\n // 后台流式文本拼接\n let bgTextMsg: IMessage | null = null;\n\n fetchEventSource(requestUrl, {\n method: \"POST\",\n signal: newCtrl.signal,\n body: JSON.stringify(values),\n openWhenHidden: true,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Cache-Control\": \"no-cache\",\n stream: \"true\",\n Authorization: `Bearer ${tokenRef.current}`,\n },\n async onopen(response) {\n if (\n response.ok &&\n response.headers.get(\"content-type\") === EventStreamContentType\n ) {\n // everything's good\n } else if (response.status === 401 || response.status === 403) {\n setLoading(false);\n onError?.({\n code: ErrorCode.AUTH_ERROR,\n message:\n response.status === 401\n ? \"认证失败,token 无效或已过期\"\n : \"无权限访问该资源\",\n });\n resolve();\n } else if (\n response.status >= 400 &&\n response.status < 500 &&\n response.status !== 429\n ) {\n resolve();\n } else {\n resolve();\n }\n },\n onmessage: (event) => {\n const rawData = safeJsonParse(event.data, {});\n\n // 处理新的数据格式: { data: {...}, result: {...} }\n let chunkJson: Event = rawData;\n\n if (rawData.data && rawData.result) {\n // 转换为旧格式\n chunkJson = {\n ...rawData.data,\n content: rawData.data,\n invocationId: rawData.result.invocationId,\n sessionId: rawData.result.sessionId,\n id:\n rawData.data.id ||\n rawData.result.id ||\n rawData.result.eventId ||\n rawData.result.invocationId,\n };\n }\n\n if (chunkJson.error) {\n message.warning(chunkJson.error);\n return;\n }\n\n // 判断是否为后台 session\n const isBackground =\n currentSessionIdRef.current !== targetSessionId;\n\n if (isBackground) {\n // 后台 session:更新 backgroundRef 中的消息\n const bg = backgroundRef.current.get(targetSessionId);\n if (!bg) return;\n\n if (chunkJson.content) {\n if (chunkJson.content.role === \"followup\") return;\n for (const part of combineTextParts(chunkJson.content.parts)) {\n const isPureText = part.text && !part.fileData;\n if (isPureText) {\n if (chunkJson?.partial === false) continue;\n const newChunk = part.text || \"\";\n if (!bgTextMsg || bgTextMsg?.thought !== part.thought) {\n const newMessage: IMessage = {\n id: v4(),\n author: chunkJson.author,\n invocationId: chunkJson.invocationId,\n eventId: chunkJson.id,\n timestamp: chunkJson.timestamp,\n role: \"bot\",\n text: newChunk,\n thought: part.thought,\n };\n bgTextMsg = newMessage;\n bg.messages = [...bg.messages, newMessage];\n } else {\n bgTextMsg = {\n ...bgTextMsg,\n text: (bgTextMsg.text || \"\") + newChunk,\n };\n bg.messages = bg.messages.map((m) =>\n m.id === bgTextMsg!.id ? bgTextMsg! : m,\n );\n if (chunkJson.finishReason === \"stop\") {\n bgTextMsg = null;\n }\n }\n } else {\n bgTextMsg = null;\n const msg: IMessage = {\n id: v4(),\n author: chunkJson.author,\n invocationId: chunkJson.invocationId,\n eventId: chunkJson.id,\n timestamp: chunkJson.timestamp,\n role: \"bot\",\n };\n if (part.functionCall) msg.functionCall = part.functionCall;\n else if (part.functionResponse)\n msg.functionResponse = part.functionResponse;\n else if (part.executableCode)\n msg.executableCode = part.executableCode;\n else if (part.codeExecutionResult)\n msg.codeExecutionResult = part.codeExecutionResult;\n else {\n msg.text = part.text;\n msg.thought = part.thought;\n if (part.fileData) msg.fileData = [part.fileData];\n }\n bg.messages = [...bg.messages, msg];\n }\n }\n } else if (chunkJson.errorMessage) {\n bg.messages = [\n ...bg.messages,\n { id: v4(), text: chunkJson.errorMessage, role: \"bot\" },\n ];\n }\n bg.textMsgRef = bgTextMsg;\n return;\n }\n\n // 前台 session:正常处理\n onStream?.(chunkJson);\n updateLastBotEventMeta(chunkJson);\n if (chunkJson.content) {\n // 建议类消息单独处理\n if (chunkJson.content.role === \"followup\") {\n processFollowupPart(chunkJson);\n return;\n }\n // eslint-disable-next-line no-restricted-syntax\n for (const part of combineTextParts(chunkJson.content.parts)) {\n // partial为 true 时忽略该条消息文本\n processPart(chunkJson, part, chunkJson?.partial === false);\n }\n } else if (chunkJson.errorMessage) {\n processErrorMessage(chunkJson);\n } else if (chunkJson.actions) {\n processActionArtifact(chunkJson);\n }\n },\n onclose: () => {\n const isBackground =\n currentSessionIdRef.current !== targetSessionId;\n if (isBackground) {\n const bg = backgroundRef.current.get(targetSessionId);\n if (bg) {\n bg.loading = false;\n bg.textMsgRef = null;\n }\n } else {\n setLoading(false);\n if (textMsgRef.current) {\n onMessage?.(textMsgRef.current?.text || \"\", textMsgRef.current);\n }\n textMsgRef.current = null;\n }\n resolve();\n },\n onerror: (error) => {\n const isBackground =\n currentSessionIdRef.current !== targetSessionId;\n if (isBackground) {\n const bg = backgroundRef.current.get(targetSessionId);\n if (bg) bg.loading = false;\n } else {\n setLoading(false);\n }\n resolve();\n console.error(\"EventSource failed:\", error);\n throw error;\n },\n });\n });\n },\n [\n type,\n currentSessionId,\n processActionArtifact,\n processErrorMessage,\n processPart,\n updateLastBotEventMeta,\n ],\n );\n\n // 发送会话\n const startChat = async ({\n text = \"\",\n files = [],\n functionResponse,\n }: SendContent) => {\n if (loadingRef.current || sendingRef.current) return;\n if (!text.trim() && !files?.length && !functionResponse) return;\n sendingRef.current = true;\n // 清空建议问题\n setSuggestedQuestions([]);\n // 发送消息\n setMessages((prev) => {\n let temp = [...prev];\n // 如果 text 存在\n if (text.trim()) {\n temp.push({\n id: v4(),\n role: \"user\",\n text,\n });\n }\n // 如果file 存在\n if (files.length > 0) {\n temp.push({\n id: v4(),\n role: \"user\",\n fileData: files.map((file) => ({\n displayName: file.fileName || file.name,\n mimeType: file.mimeType || file.response?.mimeType,\n fileUri:\n file.tempUrl || file.response?.fileUrl || file.response?.tempUrl,\n })),\n });\n }\n // 如果 functionResponse 存在\n if (functionResponse) {\n temp.push({\n id: v4(),\n role: \"user\",\n functionResponse,\n });\n }\n return temp;\n });\n try {\n await sendMessageRequest({\n stream: true,\n sessionId: currentSessionId,\n content: {\n role: \"user\",\n parts: functionResponse ? [{ functionResponse }] : [{ text }],\n },\n files: files.map((file) => ({\n fileName: file.fileName || file.response?.fileName,\n fileId: file.fileId || file.response?.fileId,\n tempUrl:\n file.tempUrl || file.response?.fileUrl || file.response?.tempUrl,\n type: file.type || file.response?.fileType,\n mimeType: file.mimeType || file.response?.mimeType,\n })),\n ...(stateDeltaRef.current !== undefined && {\n stateDelta: stateDeltaRef.current,\n }),\n });\n } finally {\n sendingRef.current = false;\n }\n // 获取聊天记录\n initAppConversations();\n };\n\n // 重新发送会话\n const reChat = async () => {\n if (loadingRef.current || sendingRef.current) return;\n if (messages.length === 0) return;\n sendingRef.current = true;\n // 清空建议问题\n setSuggestedQuestions([]);\n\n // 找到最后一条用户消息的索引,删除其后所有 bot 消息\n const lastUserIndex = messages.findLastIndex(\n (msg) => msg.role === \"user\" && !msg.functionResponse,\n );\n if (lastUserIndex === -1) {\n sendingRef.current = false;\n return;\n }\n\n const newMessages = messages.slice(0, lastUserIndex + 1);\n setMessages(newMessages);\n\n const lastUserMessage = newMessages[lastUserIndex];\n const { text = \"\", fileData = [] } = lastUserMessage;\n\n try {\n await sendMessageRequest({\n stream: true,\n sessionId: currentSessionId,\n content: {\n role: \"user\",\n parts: [{ text }],\n },\n files: fileData?.map((file) => ({\n fileName: file.displayName,\n tempUrl: file.fileUri,\n mimeType: file.mimeType,\n })),\n ...(stateDeltaRef.current !== undefined && {\n stateDelta: stateDeltaRef.current,\n }),\n });\n } finally {\n sendingRef.current = false;\n }\n };\n\n // 确认函数调用\n const confirmFnCall = (fnCall: FunctionCall, confirmed: boolean) => {\n const functionResponse = strategies?.createFunctionResponse?.(\n fnCall,\n confirmed,\n ) ?? {\n id: fnCall.id,\n name: fnCall.name,\n response: { confirmed },\n };\n startChat({ functionResponse });\n };\n\n // 使用建议问题\n const suggestChat = (text: string) => {\n if (loadingRef.current) return;\n if (!text.trim()) return;\n setSuggestedQuestions([]);\n startChat({ text });\n };\n\n // 停止会话(只中断前台连接)\n const stopChat = useCallback(() => {\n pendingSessionEventsRef.current = null;\n cancelSessionEventsFlush();\n sessionEventsSyncingRef.current = false;\n ctrl.current?.abort();\n ctrl.current = null;\n setLoading(false);\n textMsgRef.current = null;\n }, [cancelSessionEventsFlush, setLoading]);\n\n // 清除/重置会话\n const clearChat = () => {\n const newSessionId = v4();\n setCurrentSessionId(newSessionId);\n // 重置聊天内容\n stopChat();\n setPrologue(appInfo?.onboardingInfo?.prologue || \"\");\n setMessages([]);\n setSuggestedQuestions(appInfo?.onboardingInfo?.suggested_questions || []);\n };\n\n // 格式化会话记录\n const formatMessages = useCallback(\n (sessionEvents: any[], isReplace = false) => {\n const mapped = mapSessionMessages(sessionEvents);\n setMessages((prev) => (isReplace ? mapped : [...prev, ...mapped]));\n },\n [],\n );\n\n // 设置当前会话详情\n const setCurrentSession = async (sessionId: string) => {\n if (sessionId) {\n if (sessionId === currentSessionId) {\n return;\n }\n\n pendingSessionEventsRef.current = null;\n cancelSessionEventsFlush();\n if (sessionEventsSyncingRef.current) {\n sessionEventsSyncingRef.current = false;\n setLoading(false);\n }\n\n // 1. 将当前会话挂起到后台(不中断 SSE 连接)\n const prevSessionId = currentSessionId;\n if (ctrl.current) {\n // 有活跃流式连接,保存到后台\n backgroundRef.current.set(prevSessionId, {\n ctrl: ctrl.current,\n messages: [...messagesRef.current],\n loading: true,\n textMsgRef: textMsgRef.current,\n });\n ctrl.current = null;\n textMsgRef.current = null;\n setLoading(false);\n } else if (messagesRef.current.length > 0) {\n // 无活跃连接但有消息,缓存用于切回\n backgroundRef.current.set(prevSessionId, {\n ctrl: new AbortController(),\n messages: [...messagesRef.current],\n loading: false,\n textMsgRef: null,\n });\n }\n\n // 2. 尝试从后台恢复目标会话\n const bg = backgroundRef.current.get(sessionId);\n if (bg) {\n setMessages(bg.messages);\n setLoading(bg.loading);\n textMsgRef.current = bg.textMsgRef;\n ctrl.current = bg.loading ? bg.ctrl : null;\n setCurrentSessionId(sessionId);\n setInitialized(true);\n backgroundRef.current.delete(sessionId);\n return;\n }\n\n // 3. 后台没有目标 session,走 API 加载(原有逻辑)\n setInitialized(false);\n setCurrentSessionId(sessionId);\n sessionDetailLoadingRef.current = true;\n try {\n const { data, result } = await fetchSessionDetail({\n url,\n appNo,\n sessionId,\n token: tokenRef.current,\n });\n\n if (result?.code === API_SUCCESS_CODE) {\n setPrologue(appInfo?.onboardingInfo?.prologue || \"\");\n if (Array.isArray(data) && data.length > 0) {\n formatMessages(data, true);\n } else {\n setSuggestedQuestions(\n appInfo?.onboardingInfo?.suggested_questions || [],\n );\n }\n }\n } finally {\n sessionDetailLoadingRef.current = false;\n setInitialized(true);\n }\n } else {\n setCurrentSessionId(v4());\n }\n };\n\n // 获取聊天记录\n const initAppConversations = async (fetchDetail = false) => {\n try {\n setSessionLoading(true);\n\n const {\n data = [],\n pagination,\n result,\n } = await fetchSessionList({\n url,\n appNo,\n token: tokenRef.current,\n pageSize: sessionPagination.pageSize,\n });\n\n if (result?.code === API_SUCCESS_CODE) {\n if (data.length > 0) {\n const formatSessions = data.map((item) => {\n return {\n key: item.sessionId,\n label: item.title || \"新对话\",\n timestamp: new Date(item.startTime).getTime(),\n messages: [],\n meta: {\n ...item,\n },\n };\n });\n\n setSessionList(formatSessions);\n // 设置分页信息\n setSessionPagination({\n pageNum: sessionPagination.pageNum,\n pageSize: sessionPagination.pageSize,\n total: pagination?.total || 0,\n });\n const { sessionId } = data?.[0];\n if (showFirstSession) {\n setCurrentSession(sessionId);\n } else {\n fetchDetail && setPrologue(appInfo?.onboardingInfo?.prologue || \"\");\n fetchDetail &&\n setSuggestedQuestions(\n appInfo?.onboardingInfo?.suggested_questions || [],\n );\n }\n // 成功回调\n if (!initialized) {\n onSuccess?.({\n code: SuccessCode.APP_MESSAGES_INIT_SUCCESS,\n message: \"初始化聊天记录成功\",\n data: {\n sessionId,\n },\n });\n setInitialized(true);\n }\n } else {\n // 无会话记录时,初始化会话详情\n clearChat();\n }\n } else {\n // 服务端业务错误,透传原始 code + message 给接入方自行处理\n onError?.({\n code: result?.code || \"UNKNOWN_ERROR\",\n message: result?.message || \"获取会话列表失败\",\n raw: result,\n });\n setSessionList([]);\n setCurrentSessionId(v4());\n setPrologue(\"\");\n setSuggestedQuestions([]);\n }\n } catch {\n onError?.({\n code: ErrorCode.NETWORK_ERROR,\n message: \"获取会话列表失败\",\n });\n } finally {\n setSessionLoading(false);\n }\n };\n\n // 删除会话\n const deleteSession = async (sessionId: string) => {\n if (!sessionId) return;\n const { result } = await closeSession({\n url,\n appNo,\n sessionId,\n token: tokenRef.current,\n });\n if (result?.code === API_SUCCESS_CODE) {\n // 删除成功后,重新获取会话列表\n initAppConversations(true);\n // 如果删除的是当前会话,则创建新的会话\n if (sessionId === currentSessionId) {\n clearChat();\n }\n } else {\n message.error(\"删除会话失败\");\n }\n };\n\n // 点赞/点踩\n const likeMessage = async (\n invocationId: string,\n isLike: 1 | -1,\n feedbackData?: { feedbackTags?: string; feedbackDescription?: string },\n ) => {\n if (!appNo || !invocationId) return false;\n const { result } = await addFeedback({\n url,\n appNo,\n token: tokenRef.current,\n requestId: invocationId,\n isLike,\n ...feedbackData,\n });\n if (result?.code === API_SUCCESS_CODE) {\n setMessages((prev) =>\n prev.map((m) =>\n m.invocationId === invocationId ? { ...m, isLike } : m,\n ),\n );\n return true;\n }\n return false;\n };\n\n // 更新会话名称\n const updateSession = async (sessionId: string, title: string) => {\n if (!sessionId || !title) return;\n const { result } = await updateSessionTitle({\n url,\n appNo,\n title,\n sessionId,\n token: tokenRef.current,\n });\n if (result?.code === API_SUCCESS_CODE) {\n // 编辑成功后,重新获取会话列表\n initAppConversations();\n } else {\n message.error(\"更新会话失败\");\n }\n };\n\n // 初始化应用\n const initConfig = async () => {\n try {\n setSessionLoading(true);\n const { data, result } = await fetchAppConfig({ url, appNo });\n if (result.code === API_SUCCESS_CODE) {\n setAppInfo(data);\n // 成功回调\n onSuccess?.({\n code: SuccessCode.APP_CONFIG_INIT_SUCCESS,\n message: \"初始化配置成功\",\n });\n } else {\n // 服务端业务错误,透传原始 code + message\n onError?.({\n code: result.code || \"UNKNOWN_ERROR\",\n message: result.message || \"获取应用配置失败\",\n raw: result,\n });\n }\n } catch (error) {\n onError?.({\n code: ErrorCode.NETWORK_ERROR,\n message: \"获取应用配置失败\",\n });\n } finally {\n setSessionLoading(false);\n }\n };\n\n // 初始化—获取配置 (仅在启用时)\n useEffect(() => {\n if (enabled && url && appNo) {\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [enabled, url, appNo]);\n\n // 初始化-聊天记录\n useEffect(() => {\n if (appInfo) {\n initAppConversations(true);\n }\n }, [appInfo]);\n\n // 轮询当前会话详情,空闲时补入后端异步任务产生的模型消息。\n useEffect(() => {\n if (\n !enabled ||\n !initialized ||\n !pollSessionEvents ||\n !appNo ||\n !currentSessionId\n )\n return;\n\n let disposed = false;\n let requesting = false;\n const pollingSessionId = currentSessionId;\n\n const poll = async () => {\n if (requesting || sessionDetailLoadingRef.current) return;\n requesting = true;\n try {\n const { data, result } = await fetchSessionDetail({\n url,\n appNo,\n sessionId: pollingSessionId,\n token: tokenRef.current,\n });\n if (\n !disposed &&\n result?.code === API_SUCCESS_CODE &&\n Array.isArray(data)\n ) {\n syncSessionEvents(data, pollingSessionId);\n }\n } catch {\n // 新会话尚未落库或短暂网络异常时等待下一轮,不打断当前聊天。\n } finally {\n requesting = false;\n }\n };\n\n void poll();\n const timer = window.setInterval(poll, sessionEventsPollingInterval);\n return () => {\n disposed = true;\n window.clearInterval(timer);\n };\n }, [\n appNo,\n currentSessionId,\n enabled,\n initialized,\n pollSessionEvents,\n sessionEventsPollingInterval,\n syncSessionEvents,\n url,\n ]);\n\n // 组件卸载时清理所有连接(前台 + 后台)\n useEffect(() => {\n return () => {\n cancelSessionEventsFlush();\n ctrl.current?.abort();\n backgroundRef.current.forEach((bg) => bg.ctrl?.abort());\n backgroundRef.current.clear();\n };\n }, [cancelSessionEventsFlush]);\n\n return {\n appInfo,\n startChat,\n reChat,\n stopChat,\n clearChat,\n suggestChat,\n confirmFnCall,\n initialized,\n currentSessionId,\n sessionList,\n sessionPagination,\n prologue,\n suggestions: suggestedQuestions,\n loading,\n sessionLoading,\n messages: mergedMessages,\n insertSuggestedQuestions,\n insertPrologue,\n deleteSession,\n updateSession,\n setSuggestedQuestions,\n setCurrentSession,\n setMessages,\n storeEvents,\n storeMessage,\n likeMessage,\n setStateDelta: (delta: Record<string, any> | undefined) => {\n stateDeltaRef.current = delta;\n },\n };\n}\n\nexport default useADKChat;\n"],"mappings":"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"}
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","getMessageInvocationId","_messageItem$raw2","invocationId","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","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$raw3","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 getMessageInvocationId = (messageItem: IMessage) =>\n messageItem.invocationId || messageItem.raw?.invocationId;\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 invocationId = getMessageInvocationId(messageItem);\n if (\n messageItem.role !== \"bot\" ||\n !invocationId ||\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 = `${invocationId}\\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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"}