@ai-group/chat-sdk 3.6.4 → 3.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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","insertMissingSessionEvents","currentMessages","renderedEventIds","Set","missingEvents","event","_event$content","_event$content2","has","missingMessages","eventOrder","Map","index","getMessageOrder","_messageItem$timestam","_messageItem$raw2","get","nextEventIndex","findIndex","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","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","_ref4","_callee2","_ref3","_ref3$text","_ref3$files","files","_callee2$","_context2","abrupt","trim","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","delete","sent","_x2","_ref7","_callee5","fetchDetail","_yield$fetchSessionLi","_yield$fetchSessionLi2","pagination","formatSessions","_data$","_appInfo$onboardingIn5","_appInfo$onboardingIn6","_args5","_callee5$","_context5","key","label","Date","startTime","getTime","meta","APP_MESSAGES_INIT_SUCCESS","t0","NETWORK_ERROR","deleteSession","_ref8","_callee6","_yield$closeSession","_callee6$","_context6","_x3","likeMessage","_ref9","_callee7","feedbackData","_yield$addFeedback","_callee7$","_context7","requestId","_x4","_x5","_x6","updateSession","_ref10","_callee8","_yield$updateSessionT","_callee8$","_context8","_x7","_x8","initConfig","_ref11","_callee9","_yield$fetchAppConfig","_callee9$","_context9","APP_CONFIG_INIT_SUCCESS","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 insertMissingSessionEvents = (\n currentMessages: IMessage[],\n sessionEvents: any[],\n) => {\n const renderedEventIds = new Set(\n currentMessages.map(getMessageEventId).filter(Boolean),\n );\n const missingEvents = sessionEvents.filter((event) => {\n const parts = event.content?.parts;\n return (\n Boolean(event.id) &&\n event.content?.role === \"model\" &&\n Array.isArray(parts) &&\n parts.length > 0 &&\n !renderedEventIds.has(event.id)\n );\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: 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","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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"}