@ai-group/chat-sdk 3.6.12 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/dist/cjs/components/XAdkChatbot/index.js +2 -2
  2. package/dist/cjs/components/XAdkChatbot/index.js.map +2 -2
  3. package/dist/cjs/components/XAdkProvider/index.js +3 -3
  4. package/dist/cjs/components/XAdkProvider/index.js.map +2 -2
  5. package/dist/cjs/core/index.d.ts +2 -0
  6. package/dist/cjs/core/index.js +26 -0
  7. package/dist/cjs/core/index.js.map +7 -0
  8. package/dist/cjs/core/protocol/index.d.ts +3 -0
  9. package/dist/cjs/core/protocol/index.js +28 -0
  10. package/dist/cjs/core/protocol/index.js.map +7 -0
  11. package/dist/cjs/core/protocol/messages.d.ts +55 -0
  12. package/dist/cjs/core/protocol/messages.js +307 -0
  13. package/dist/cjs/core/protocol/messages.js.map +7 -0
  14. package/dist/cjs/core/protocol/parts.d.ts +24 -0
  15. package/dist/cjs/core/protocol/parts.js +106 -0
  16. package/dist/cjs/core/protocol/parts.js.map +7 -0
  17. package/dist/cjs/core/protocol/types.d.ts +57 -0
  18. package/dist/cjs/core/protocol/types.js +18 -0
  19. package/dist/cjs/core/protocol/types.js.map +7 -0
  20. package/dist/cjs/core/runtime/createAdkConversationController.d.ts +8 -0
  21. package/dist/cjs/core/runtime/createAdkConversationController.js +424 -0
  22. package/dist/cjs/core/runtime/createAdkConversationController.js.map +7 -0
  23. package/dist/cjs/core/runtime/index.d.ts +2 -0
  24. package/dist/cjs/core/runtime/index.js +26 -0
  25. package/dist/cjs/core/runtime/index.js.map +7 -0
  26. package/dist/cjs/core/runtime/types.d.ts +130 -0
  27. package/dist/cjs/core/runtime/types.js +18 -0
  28. package/dist/cjs/core/runtime/types.js.map +7 -0
  29. package/dist/{esm/utils/umdEntry.d.ts → cjs/entries/umd.d.ts} +7 -0
  30. package/dist/cjs/{utils/umdEntry.js → entries/umd.js} +19 -9
  31. package/dist/cjs/entries/umd.js.map +7 -0
  32. package/dist/cjs/index.d.ts +6 -1
  33. package/dist/cjs/index.js +19 -11
  34. package/dist/cjs/index.js.map +3 -3
  35. package/dist/cjs/presets/xgroup/index.d.ts +4 -0
  36. package/dist/cjs/presets/xgroup/index.js +30 -0
  37. package/dist/cjs/presets/xgroup/index.js.map +7 -0
  38. package/dist/cjs/presets/xgroup/preset.d.ts +15 -0
  39. package/dist/cjs/presets/xgroup/preset.js +69 -0
  40. package/dist/cjs/presets/xgroup/preset.js.map +7 -0
  41. package/dist/cjs/presets/xgroup/strategies.d.ts +8 -0
  42. package/dist/cjs/presets/xgroup/strategies.js +53 -0
  43. package/dist/cjs/presets/xgroup/strategies.js.map +7 -0
  44. package/dist/cjs/presets/xgroup/transport.d.ts +15 -0
  45. package/dist/cjs/presets/xgroup/transport.js +183 -0
  46. package/dist/cjs/presets/xgroup/transport.js.map +7 -0
  47. package/dist/cjs/presets/xgroup/upload.d.ts +8 -0
  48. package/dist/cjs/presets/xgroup/upload.js +65 -0
  49. package/dist/cjs/presets/xgroup/upload.js.map +7 -0
  50. package/dist/cjs/react/index.d.ts +6 -0
  51. package/dist/cjs/react/index.js +53 -0
  52. package/dist/cjs/react/index.js.map +7 -0
  53. package/dist/cjs/react/useAdkConversation.d.ts +27 -0
  54. package/dist/cjs/react/useAdkConversation.js +69 -0
  55. package/dist/cjs/react/useAdkConversation.js.map +7 -0
  56. package/dist/esm/components/XAdkChatbot/index.js +1 -1
  57. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  58. package/dist/esm/components/XAdkProvider/index.js +1 -1
  59. package/dist/esm/components/XAdkProvider/index.js.map +1 -1
  60. package/dist/esm/core/index.d.ts +2 -0
  61. package/dist/esm/core/index.js +3 -0
  62. package/dist/esm/core/index.js.map +1 -0
  63. package/dist/esm/core/protocol/index.d.ts +3 -0
  64. package/dist/esm/core/protocol/index.js +4 -0
  65. package/dist/esm/core/protocol/index.js.map +1 -0
  66. package/dist/esm/core/protocol/messages.d.ts +55 -0
  67. package/dist/esm/core/protocol/messages.js +315 -0
  68. package/dist/esm/core/protocol/messages.js.map +1 -0
  69. package/dist/esm/core/protocol/parts.d.ts +24 -0
  70. package/dist/esm/core/protocol/parts.js +100 -0
  71. package/dist/esm/core/protocol/parts.js.map +1 -0
  72. package/dist/esm/core/protocol/types.d.ts +57 -0
  73. package/dist/esm/core/protocol/types.js +2 -0
  74. package/dist/esm/core/protocol/types.js.map +1 -0
  75. package/dist/esm/core/runtime/createAdkConversationController.d.ts +8 -0
  76. package/dist/esm/core/runtime/createAdkConversationController.js +742 -0
  77. package/dist/esm/core/runtime/createAdkConversationController.js.map +1 -0
  78. package/dist/esm/core/runtime/index.d.ts +2 -0
  79. package/dist/esm/core/runtime/index.js +3 -0
  80. package/dist/esm/core/runtime/index.js.map +1 -0
  81. package/dist/esm/core/runtime/types.d.ts +130 -0
  82. package/dist/esm/core/runtime/types.js +2 -0
  83. package/dist/esm/core/runtime/types.js.map +1 -0
  84. package/dist/{cjs/utils/umdEntry.d.ts → esm/entries/umd.d.ts} +7 -0
  85. package/dist/esm/{utils/umdEntry.js → entries/umd.js} +10 -1
  86. package/dist/esm/entries/umd.js.map +1 -0
  87. package/dist/esm/index.d.ts +6 -1
  88. package/dist/esm/index.js +6 -1
  89. package/dist/esm/index.js.map +1 -1
  90. package/dist/esm/presets/xgroup/index.d.ts +4 -0
  91. package/dist/esm/presets/xgroup/index.js +5 -0
  92. package/dist/esm/presets/xgroup/index.js.map +1 -0
  93. package/dist/esm/presets/xgroup/preset.d.ts +15 -0
  94. package/dist/esm/presets/xgroup/preset.js +44 -0
  95. package/dist/esm/presets/xgroup/preset.js.map +1 -0
  96. package/dist/esm/presets/xgroup/strategies.d.ts +8 -0
  97. package/dist/esm/presets/xgroup/strategies.js +30 -0
  98. package/dist/esm/presets/xgroup/strategies.js.map +1 -0
  99. package/dist/esm/presets/xgroup/transport.d.ts +15 -0
  100. package/dist/esm/presets/xgroup/transport.js +322 -0
  101. package/dist/esm/presets/xgroup/transport.js.map +1 -0
  102. package/dist/esm/presets/xgroup/upload.d.ts +8 -0
  103. package/dist/esm/presets/{xGroupAdk.js → xgroup/upload.js} +9 -63
  104. package/dist/esm/presets/xgroup/upload.js.map +1 -0
  105. package/dist/esm/react/index.d.ts +6 -0
  106. package/dist/esm/react/index.js +5 -0
  107. package/dist/esm/react/index.js.map +1 -0
  108. package/dist/esm/react/useAdkConversation.d.ts +27 -0
  109. package/dist/esm/react/useAdkConversation.js +53 -0
  110. package/dist/esm/react/useAdkConversation.js.map +1 -0
  111. package/dist/umd/chat-sdk.min.js +1 -1
  112. package/package.json +36 -2
  113. package/dist/cjs/presets/xGroupAdk.d.ts +0 -20
  114. package/dist/cjs/presets/xGroupAdk.js +0 -130
  115. package/dist/cjs/presets/xGroupAdk.js.map +0 -7
  116. package/dist/cjs/utils/umdEntry.js.map +0 -7
  117. package/dist/esm/presets/xGroupAdk.d.ts +0 -20
  118. package/dist/esm/presets/xGroupAdk.js.map +0 -1
  119. package/dist/esm/utils/umdEntry.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["v4","buildAdkUserMessage","buildAdkUserParts","dedupeAdkMessages","insertMissingAdkSessionEvents","mapAdkEventToMessages","mapAdkSessionEventsToMessages","pairFunctionResponses","DEFAULT_PAGE_SIZE","createInitialState","sessionId","pageSize","arguments","length","undefined","appInfo","initialized","loading","sessionLoading","currentSessionId","messages","sessionList","sessionPagination","total","pageNum","prologue","suggestions","defaultRequestBuilder","_ref","content","stateDelta","_objectSpread","stream","role","parts","files","map","file","_file$response","_file$response2","_file$response3","_file$response4","_file$response5","_file$response6","fileName","response","fileId","tempUrl","fileUrl","type","fileType","mimeType","createAdkConversationController","options","_options$session","transport","callbacks","protocol","_options$requestBuild","requestBuilder","_options$createFuncti","createFunctionResponse","fnCall","confirmed","id","name","state","session","ctrl","pollingTimer","textMessage","disposed","subscribers","Set","emit","forEach","subscriber","setState","patch","setMessages","current","appendMessages","prev","concat","_toConsumableArray","updateLastBotMeta","event","modelCode","usageMetadata","finishReason","_event$modelCode","_event$usageMetadata","_event$finishReason","next","index","findLastIndex","message","raw","processEvent","_callbacks$onStream","_event$content","_event$content2","requestStream","onStream","call","_event$content$parts","text","_message$fileData","isPureText","fileData","functionCall","functionResponse","executableCode","codeExecutionResult","_textMessage","partial","isNewInvocation","invocationId","thought","item","loadSessions","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_response$pagination","_options$session2","_response$data","_callbacks$onError","wrap","_callee$","_context","fetchSessions","abrupt","sent","data","pagination","showFirstSession","controller","setCurrentSession","t0","onError","finish","stop","apply","startSessionPolling","_options$session3","pollSessionEvents","fetchSessionEvents","interval","Math","max","sessionEventsPollingInterval","setInterval","then","events","syncSessionEvents","catch","error","_callbacks$onError2","getSnapshot","subscribe","add","delete","init","_init","_callee2","_transport$fetchAppCo","_appInfo$onboardingIn","_appInfo$onboardingIn2","_callbacks$onError3","_callee2$","_context2","fetchAppConfig","onboardingInfo","suggested_questions","destroy","_ctrl","abort","clearInterval","clear","startChat","_startChat","_callee3","_content$text","_content$files","_ctrl2","payload","_callbacks$onError4","completedMessage","_callbacks$onMessage","_callee3$","_context3","trim","AbortController","sendMessageStreaming","signal","onEvent","onClose","onRequestComplete","onMessage","_x","stopChat","_stopChat","_callee4","_ctrl4","_transport$interrupt","_ctrl3","_callee4$","_context4","interrupt","reChat","_reChat","_callee5","lastUserIndex","lastUserMessage","nextMessages","_callee5$","_context5","slice","displayName","fileUri","clearChat","_ctrl5","_state$appInfo","_state$appInfo2","suggestChat","_suggestChat","_callee6","suggestion","_callee6$","_context6","_x2","confirmFnCall","_confirmFnCall","_callee7","_callee7$","_context7","_x3","_x4","switchSession","_switchSession","_callee8","_callee8$","_context8","_x5","_setCurrentSession","_callee9","_ctrl6","_callbacks$onError5","_callee9$","_context9","replaceSessionEvents","_x6","deleteSession","_deleteSession","_callee10","_yield$transport$clos","_transport$closeSessi","success","_callee10$","_context10","closeSession","t1","t2","filter","_x7","updateSession","_updateSession","_callee11","title","_yield$transport$upda","_transport$updateSess","_callee11$","_context11","updateSessionTitle","_x8","_x9","likeMessage","feedback","setStateDelta","delta"],"sources":["../../../../src/core/runtime/createAdkConversationController.ts"],"sourcesContent":["import { v4 } from \"uuid\";\nimport type { AgentRunRequest, Event, IMessage, SendContent } from \"@/types\";\nimport {\n buildAdkUserMessage,\n buildAdkUserParts,\n dedupeAdkMessages,\n insertMissingAdkSessionEvents,\n mapAdkEventToMessages,\n mapAdkSessionEventsToMessages,\n pairFunctionResponses,\n} from \"../protocol\";\nimport type {\n AdkConversationController,\n AdkConversationOptions,\n AdkConversationState,\n} from \"./types\";\n\nconst DEFAULT_PAGE_SIZE = 10;\n\n/**\n * 创建 controller 的初始状态。\n * 这里不读取任何外部配置,确保 runtime 可以在 React、UMD、单测环境中复用。\n */\nconst createInitialState = (\n sessionId?: string,\n pageSize = DEFAULT_PAGE_SIZE,\n): AdkConversationState => ({\n appInfo: null,\n initialized: false,\n loading: false,\n sessionLoading: false,\n currentSessionId: sessionId || v4(),\n messages: [],\n sessionList: [],\n sessionPagination: {\n total: 0,\n pageNum: 1,\n pageSize,\n },\n prologue: \"\",\n suggestions: [],\n});\n\n/**\n * 默认请求体构造器,适配当前 xgroup openApi 的 sendMsgStreaming 入参。\n * 业务项目可通过 options.requestBuilder 注入 modelCode、agentNo、taskMode 等字段。\n */\nconst defaultRequestBuilder = ({\n content,\n sessionId,\n stateDelta,\n}: {\n content: SendContent;\n sessionId: string;\n stateDelta?: Record<string, unknown>;\n}): AgentRunRequest => ({\n stream: true,\n sessionId,\n content: {\n role: \"user\",\n parts: buildAdkUserParts(content),\n },\n files: (content.files || []).map((file) => ({\n fileName: file.fileName || file.response?.fileName,\n fileId: file.fileId || file.response?.fileId,\n tempUrl: file.tempUrl || file.response?.fileUrl || file.response?.tempUrl,\n type: file.type || file.response?.fileType,\n mimeType: file.mimeType || file.response?.mimeType,\n })),\n ...(stateDelta !== undefined ? { stateDelta } : {}),\n});\n\n/**\n * 创建无 React 依赖的 ADK 对话数据流控制器。\n *\n * controller 只管理状态和数据流编排;所有请求细节都交给 transport,\n * 所有 UI 提示都通过 callbacks 抛给调用方。\n */\nexport const createAdkConversationController = (\n options: AdkConversationOptions,\n): AdkConversationController => {\n const {\n transport,\n callbacks,\n protocol,\n requestBuilder = defaultRequestBuilder,\n createFunctionResponse = (fnCall, confirmed) => ({\n id: fnCall.id,\n name: fnCall.name,\n response: { confirmed },\n }),\n } = options;\n\n let state = createInitialState(options.sessionId, options.session?.pageSize);\n let ctrl: AbortController | null = null;\n let pollingTimer: ReturnType<typeof setInterval> | null = null;\n let textMessage: IMessage | null = null;\n let stateDelta: Record<string, unknown> | undefined;\n let disposed = false;\n const subscribers = new Set<(nextState: AdkConversationState) => void>();\n\n /** 通知所有订阅者。React Hook、UMD 调用方都通过 subscribe 接收状态变化。 */\n const emit = () => {\n subscribers.forEach((subscriber) => subscriber(state));\n };\n\n const setState = (\n patch:\n | Partial<AdkConversationState>\n | ((current: AdkConversationState) => AdkConversationState),\n ) => {\n state =\n typeof patch === \"function\"\n ? patch(state)\n : {\n ...state,\n ...patch,\n };\n emit();\n };\n\n const setMessages = (\n messages: IMessage[] | ((prev: IMessage[]) => IMessage[]),\n ) => {\n setState((current) => ({\n ...current,\n // 所有入口写入 messages 时都统一做工具响应配对和文本去重。\n messages:\n typeof messages === \"function\"\n ? pairFunctionResponses(dedupeAdkMessages(messages(current.messages)))\n : pairFunctionResponses(dedupeAdkMessages(messages)),\n }));\n };\n\n const appendMessages = (messages: IMessage[]) => {\n if (!messages.length) return;\n setMessages((prev) => [...prev, ...messages]);\n };\n\n const updateLastBotMeta = (event: Event) => {\n if (!event.modelCode && !event.usageMetadata && !event.finishReason) return;\n setMessages((prev) => {\n const next = [...prev];\n const index = next.findLastIndex((message) => message.role === \"bot\");\n if (index < 0) return prev;\n next[index] = {\n ...next[index],\n modelCode: event.modelCode ?? next[index].modelCode,\n usageMetadata: event.usageMetadata ?? next[index].usageMetadata,\n finishReason: event.finishReason ?? next[index].finishReason,\n raw: {\n ...(next[index].raw || {}),\n ...event,\n },\n };\n return next;\n });\n };\n\n /**\n * 处理单个 stream event。\n *\n * 对纯文本分片做流式拼接;遇到 fileData、functionCall、代码执行等非文本内容时,\n * 直接作为独立消息插入,避免破坏工具类消息的渲染结构。\n */\n const processEvent = (event: Event, requestStream = true) => {\n callbacks?.onStream?.(event);\n updateLastBotMeta(event);\n\n if (event.content?.role === \"followup\") {\n const text = event.content.parts?.[0]?.text;\n if (text) {\n setState((current) => ({\n ...current,\n suggestions: [...current.suggestions, text],\n }));\n }\n return;\n }\n\n if (event.content?.parts?.length) {\n const messages = mapAdkEventToMessages(event, protocol);\n messages.forEach((message) => {\n const isPureText =\n typeof message.text === \"string\" &&\n !message.fileData?.length &&\n !message.functionCall &&\n !message.functionResponse &&\n !message.executableCode &&\n !message.codeExecutionResult;\n\n if (isPureText && requestStream) {\n if (event.partial === false) {\n textMessage = null;\n return;\n }\n const isNewInvocation =\n textMessage?.invocationId !== message.invocationId;\n if (\n !textMessage ||\n isNewInvocation ||\n textMessage.thought !== message.thought\n ) {\n textMessage = message;\n appendMessages([message]);\n return;\n }\n\n textMessage = {\n ...textMessage,\n ...message,\n text: `${textMessage.text || \"\"}${message.text || \"\"}`,\n };\n setMessages((prev) =>\n prev.map((item) =>\n item.id === textMessage!.id ? textMessage! : item,\n ),\n );\n if (event.finishReason === \"stop\") textMessage = null;\n return;\n }\n\n textMessage = null;\n appendMessages([message]);\n });\n return;\n }\n\n appendMessages(mapAdkEventToMessages(event, protocol));\n };\n\n const loadSessions = async () => {\n if (!transport.fetchSessions) return;\n setState({ sessionLoading: true });\n try {\n const response = await transport.fetchSessions({\n pageNum: state.sessionPagination.pageNum,\n pageSize: state.sessionPagination.pageSize,\n });\n setState({\n sessionList: response.data || [],\n sessionPagination: {\n ...state.sessionPagination,\n total: response.pagination?.total || 0,\n },\n });\n if (options.session?.showFirstSession && response.data?.[0]?.sessionId) {\n await controller.setCurrentSession(response.data[0].sessionId);\n }\n } catch (error) {\n callbacks?.onError?.(error);\n } finally {\n setState({ sessionLoading: false });\n }\n };\n\n /**\n * session events 轮询用于补齐后端异步产生的消息。\n * 当前回复还在生成时不插入,避免流式拼接过程中消息数组结构被打乱。\n */\n const startSessionPolling = () => {\n if (\n !options.session?.pollSessionEvents ||\n !transport.fetchSessionEvents ||\n pollingTimer\n )\n return;\n\n const interval = Math.max(\n options.session.sessionEventsPollingInterval || 10000,\n 1000,\n );\n pollingTimer = setInterval(() => {\n if (disposed || state.loading || !state.currentSessionId) return;\n transport\n .fetchSessionEvents!(state.currentSessionId)\n .then((events) =>\n controller.syncSessionEvents(events, state.currentSessionId),\n )\n .catch((error) => callbacks?.onError?.(error));\n }, interval);\n };\n\n const controller: AdkConversationController = {\n getSnapshot: () => state,\n subscribe: (subscriber) => {\n subscribers.add(subscriber);\n return () => {\n subscribers.delete(subscriber);\n };\n },\n init: async () => {\n if (disposed) return;\n setState({ sessionLoading: true });\n try {\n const appInfo = await transport.fetchAppConfig?.();\n setState({\n appInfo: appInfo || null,\n prologue: appInfo?.onboardingInfo?.prologue || \"\",\n suggestions: appInfo?.onboardingInfo?.suggested_questions || [],\n initialized: true,\n });\n await loadSessions();\n startSessionPolling();\n } catch (error) {\n callbacks?.onError?.(error);\n setState({ initialized: true });\n } finally {\n setState({ sessionLoading: false });\n }\n },\n destroy: () => {\n disposed = true;\n ctrl?.abort();\n if (pollingTimer) clearInterval(pollingTimer);\n pollingTimer = null;\n subscribers.clear();\n },\n startChat: async (content) => {\n if (state.loading) return;\n if (\n !content.text?.trim() &&\n !content.files?.length &&\n !content.functionResponse\n )\n return;\n\n ctrl?.abort();\n ctrl = new AbortController();\n textMessage = null;\n setState({ loading: true, suggestions: [] });\n appendMessages(buildAdkUserMessage(content));\n\n const payload = requestBuilder({\n content,\n sessionId: state.currentSessionId,\n stateDelta,\n });\n const requestStream = payload.stream !== false;\n\n try {\n await transport.sendMessageStreaming(payload, {\n signal: ctrl.signal,\n onEvent: (event) => processEvent(event, requestStream),\n onError: callbacks?.onError,\n onClose: callbacks?.onRequestComplete,\n });\n } catch (error) {\n if ((error as any)?.name !== \"AbortError\") callbacks?.onError?.(error);\n } finally {\n setState({ loading: false });\n const completedMessage = textMessage as IMessage | null;\n if (completedMessage) {\n callbacks?.onMessage?.(completedMessage.text || \"\", completedMessage);\n }\n textMessage = null;\n }\n },\n stopChat: async () => {\n try {\n await transport.interrupt?.(state.currentSessionId);\n } catch {\n ctrl?.abort();\n }\n ctrl?.abort();\n textMessage = null;\n setState({ loading: false });\n },\n reChat: async () => {\n const lastUserIndex = state.messages.findLastIndex(\n (message) => message.role === \"user\" && !message.functionResponse,\n );\n if (lastUserIndex < 0) return;\n const lastUserMessage = state.messages[lastUserIndex];\n // 先截断最后一条用户消息及其后的回复,再复用 startChat 重新插入用户消息并发起请求。\n const nextMessages = state.messages.slice(0, lastUserIndex);\n setMessages(nextMessages);\n await controller.startChat({\n text: lastUserMessage.text || \"\",\n files: (lastUserMessage.fileData || []).map((file) => ({\n fileName: file.displayName,\n tempUrl: file.fileUri,\n mimeType: file.mimeType,\n })) as any,\n });\n },\n clearChat: () => {\n ctrl?.abort();\n textMessage = null;\n setState({\n currentSessionId: v4(),\n messages: [],\n loading: false,\n prologue: state.appInfo?.onboardingInfo?.prologue || \"\",\n suggestions: state.appInfo?.onboardingInfo?.suggested_questions || [],\n });\n },\n suggestChat: async (suggestion) => {\n await controller.startChat({ text: suggestion });\n },\n confirmFnCall: async (fnCall, confirmed) => {\n await controller.startChat({\n functionResponse: createFunctionResponse(fnCall, confirmed),\n });\n },\n switchSession: async (sessionId) => controller.setCurrentSession(sessionId),\n setCurrentSession: async (sessionId) => {\n if (!sessionId || sessionId === state.currentSessionId) return;\n ctrl?.abort();\n textMessage = null;\n setState({\n currentSessionId: sessionId,\n loading: false,\n messages: [],\n suggestions: [],\n });\n if (!transport.fetchSessionEvents) return;\n setState({ sessionLoading: true });\n try {\n const events = await transport.fetchSessionEvents(sessionId);\n controller.replaceSessionEvents(events);\n } catch (error) {\n callbacks?.onError?.(error);\n } finally {\n setState({ sessionLoading: false });\n }\n },\n deleteSession: async (sessionId) => {\n const success = (await transport.closeSession?.(sessionId)) ?? false;\n if (success) {\n setState((current) => ({\n ...current,\n sessionList: current.sessionList.filter(\n (session) => session.sessionId !== sessionId,\n ),\n }));\n if (sessionId === state.currentSessionId) controller.clearChat();\n }\n return success;\n },\n updateSession: async (sessionId, title) => {\n const success =\n (await transport.updateSessionTitle?.(sessionId, title)) ?? false;\n if (success) {\n setState((current) => ({\n ...current,\n sessionList: current.sessionList.map((session) =>\n session.sessionId === sessionId ? { ...session, title } : session,\n ),\n }));\n }\n return success;\n },\n likeMessage: transport.feedback,\n replaceSessionEvents: (events) => {\n // 切换历史会话时用服务端完整事件重建消息列表。\n setMessages(mapAdkSessionEventsToMessages(events, protocol));\n },\n syncSessionEvents: (events, sessionId) => {\n if (sessionId && sessionId !== state.currentSessionId) return;\n // 轮询增量同步时只补齐页面尚未展示的模型事件。\n setMessages((prev) =>\n insertMissingAdkSessionEvents(prev, events, protocol),\n );\n },\n setMessages,\n setStateDelta: (delta) => {\n stateDelta = delta;\n },\n };\n\n return controller;\n};\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./types";
2
+ export * from "./createAdkConversationController";
@@ -0,0 +1,3 @@
1
+ export * from "./types";
2
+ export * from "./createAdkConversationController";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../../../src/core/runtime/index.ts"],"sourcesContent":["export * from \"./types\";\nexport * from \"./createAdkConversationController\";\n"],"mappings":"AAAA;AACA"}
@@ -0,0 +1,130 @@
1
+ import type { AgentRunRequest, Event, FunctionCall, FunctionResponse, IMessage, SendContent } from "../../types";
2
+ import type { AdkProtocolOptions } from "../protocol";
3
+ export interface AdkAppInfo {
4
+ onboardingInfo?: {
5
+ prologue?: string;
6
+ suggested_questions?: string[];
7
+ };
8
+ [key: string]: unknown;
9
+ }
10
+ export interface AdkSessionInfo {
11
+ sessionId: string;
12
+ title?: string;
13
+ startTime?: string;
14
+ [key: string]: unknown;
15
+ }
16
+ export interface AdkStreamHandlers {
17
+ /** 流式连接打开后的回调,可用于检查响应头或状态码。 */
18
+ onOpen?: (response: Response) => void;
19
+ /** 每收到一个后端 ADK event 时触发。 */
20
+ onEvent: (event: Event) => void;
21
+ /** transport 层错误回调,runtime 不直接依赖 UI 提示。 */
22
+ onError?: (error: unknown) => void;
23
+ /** 流式连接正常结束时触发。 */
24
+ onClose?: () => void;
25
+ signal?: AbortSignal;
26
+ }
27
+ /**
28
+ * 对话数据流的请求适配层。
29
+ *
30
+ * SDK runtime 只依赖这个接口,不关心具体 URL、headers、登录态、网关协议。
31
+ * AI 中台、超级小乾等业务项目只需要实现自己的 transport,就能复用同一套
32
+ * 消息归一化、流式拼接、session events 补偿和会话状态管理逻辑。
33
+ */
34
+ export interface AdkChatTransport {
35
+ fetchAppConfig?: () => Promise<AdkAppInfo | null>;
36
+ fetchSessions?: (params?: {
37
+ pageNum?: number;
38
+ pageSize?: number;
39
+ }) => Promise<{
40
+ data: AdkSessionInfo[];
41
+ pagination?: {
42
+ total?: number;
43
+ hasMore?: boolean;
44
+ nextPage?: number;
45
+ };
46
+ }>;
47
+ fetchSessionEvents?: (sessionId: string) => Promise<Event[]>;
48
+ sendMessageStreaming: (payload: AgentRunRequest, handlers: AdkStreamHandlers) => Promise<void>;
49
+ closeSession?: (sessionId: string) => Promise<boolean>;
50
+ updateSessionTitle?: (sessionId: string, title: string) => Promise<boolean>;
51
+ feedback?: (params: {
52
+ invocationId: string;
53
+ isLike: 1 | -1;
54
+ feedbackTags?: string;
55
+ feedbackDescription?: string;
56
+ }) => Promise<boolean>;
57
+ interrupt?: (sessionId: string, context?: Record<string, unknown>) => Promise<void>;
58
+ }
59
+ export interface AdkConversationState {
60
+ appInfo: AdkAppInfo | null;
61
+ initialized: boolean;
62
+ loading: boolean;
63
+ sessionLoading: boolean;
64
+ currentSessionId: string;
65
+ messages: IMessage[];
66
+ sessionList: AdkSessionInfo[];
67
+ sessionPagination: {
68
+ total: number;
69
+ pageNum: number;
70
+ pageSize: number;
71
+ };
72
+ prologue: string;
73
+ suggestions: string[];
74
+ }
75
+ export interface AdkConversationCallbacks {
76
+ onError?: (error: unknown) => void;
77
+ onNotice?: (notice: {
78
+ type: "warning" | "error" | "info";
79
+ message: string;
80
+ }) => void;
81
+ onAuthExpired?: () => void;
82
+ onStream?: (event: Event) => void;
83
+ onMessage?: (content: string, data: IMessage) => void;
84
+ onRequestComplete?: () => void;
85
+ }
86
+ export interface AdkConversationOptions {
87
+ /** 业务请求适配器,是 headless runtime 和具体后端协议之间的边界。 */
88
+ transport: AdkChatTransport;
89
+ sessionId?: string;
90
+ /** ADK 协议转换策略,例如是否隐藏异步任务事件、是否自动配对工具响应。 */
91
+ protocol?: AdkProtocolOptions;
92
+ session?: {
93
+ pollSessionEvents?: boolean;
94
+ sessionEventsPollingInterval?: number;
95
+ pageSize?: number;
96
+ showFirstSession?: boolean;
97
+ };
98
+ requestBuilder?: (input: {
99
+ content: SendContent;
100
+ sessionId: string;
101
+ stateDelta?: Record<string, unknown>;
102
+ }) => AgentRunRequest;
103
+ /** 覆盖默认工具确认响应结构。 */
104
+ createFunctionResponse?: (fnCall: FunctionCall, confirmed: boolean) => FunctionResponse;
105
+ callbacks?: AdkConversationCallbacks;
106
+ }
107
+ export type AdkConversationSubscriber = (state: AdkConversationState) => void;
108
+ export interface AdkConversationController {
109
+ /** 获取当前状态快照,适合 UMD 或非 React 场景主动读取。 */
110
+ getSnapshot: () => AdkConversationState;
111
+ /** 订阅状态变化,React Hook 也是基于这个方法做绑定。 */
112
+ subscribe: (subscriber: AdkConversationSubscriber) => () => void;
113
+ init: () => Promise<void>;
114
+ destroy: () => void;
115
+ startChat: (content: SendContent) => Promise<void>;
116
+ stopChat: () => Promise<void>;
117
+ reChat: () => Promise<void>;
118
+ clearChat: () => void;
119
+ suggestChat: (suggestion: string) => Promise<void>;
120
+ confirmFnCall: (fnCall: FunctionCall, confirmed: boolean) => Promise<void>;
121
+ switchSession: (sessionId: string) => Promise<void>;
122
+ setCurrentSession: (sessionId: string) => Promise<void>;
123
+ deleteSession: (sessionId: string) => Promise<boolean>;
124
+ updateSession: (sessionId: string, title: string) => Promise<boolean>;
125
+ likeMessage: AdkChatTransport["feedback"];
126
+ replaceSessionEvents: (events: Event[]) => void;
127
+ syncSessionEvents: (events: Event[], sessionId?: string) => void;
128
+ setMessages: (messages: IMessage[] | ((prev: IMessage[]) => IMessage[])) => void;
129
+ setStateDelta: (delta: Record<string, unknown> | undefined) => void;
130
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../../../src/core/runtime/types.ts"],"sourcesContent":["import type {\n AgentRunRequest,\n Event,\n FunctionCall,\n FunctionResponse,\n IMessage,\n SendContent,\n} from \"@/types\";\nimport type { AdkProtocolOptions } from \"../protocol\";\n\nexport interface AdkAppInfo {\n onboardingInfo?: {\n prologue?: string;\n suggested_questions?: string[];\n };\n [key: string]: unknown;\n}\n\nexport interface AdkSessionInfo {\n sessionId: string;\n title?: string;\n startTime?: string;\n [key: string]: unknown;\n}\n\nexport interface AdkStreamHandlers {\n /** 流式连接打开后的回调,可用于检查响应头或状态码。 */\n onOpen?: (response: Response) => void;\n /** 每收到一个后端 ADK event 时触发。 */\n onEvent: (event: Event) => void;\n /** transport 层错误回调,runtime 不直接依赖 UI 提示。 */\n onError?: (error: unknown) => void;\n /** 流式连接正常结束时触发。 */\n onClose?: () => void;\n signal?: AbortSignal;\n}\n\n/**\n * 对话数据流的请求适配层。\n *\n * SDK runtime 只依赖这个接口,不关心具体 URL、headers、登录态、网关协议。\n * AI 中台、超级小乾等业务项目只需要实现自己的 transport,就能复用同一套\n * 消息归一化、流式拼接、session events 补偿和会话状态管理逻辑。\n */\nexport interface AdkChatTransport {\n fetchAppConfig?: () => Promise<AdkAppInfo | null>;\n fetchSessions?: (params?: {\n pageNum?: number;\n pageSize?: number;\n }) => Promise<{\n data: AdkSessionInfo[];\n pagination?: { total?: number; hasMore?: boolean; nextPage?: number };\n }>;\n fetchSessionEvents?: (sessionId: string) => Promise<Event[]>;\n sendMessageStreaming: (\n payload: AgentRunRequest,\n handlers: AdkStreamHandlers,\n ) => Promise<void>;\n closeSession?: (sessionId: string) => Promise<boolean>;\n updateSessionTitle?: (sessionId: string, title: string) => Promise<boolean>;\n feedback?: (params: {\n invocationId: string;\n isLike: 1 | -1;\n feedbackTags?: string;\n feedbackDescription?: string;\n }) => Promise<boolean>;\n interrupt?: (sessionId: string, context?: Record<string, unknown>) => Promise<void>;\n}\n\nexport interface AdkConversationState {\n appInfo: AdkAppInfo | null;\n initialized: boolean;\n loading: boolean;\n sessionLoading: boolean;\n currentSessionId: string;\n messages: IMessage[];\n sessionList: AdkSessionInfo[];\n sessionPagination: {\n total: number;\n pageNum: number;\n pageSize: number;\n };\n prologue: string;\n suggestions: string[];\n}\n\nexport interface AdkConversationCallbacks {\n onError?: (error: unknown) => void;\n onNotice?: (notice: { type: \"warning\" | \"error\" | \"info\"; message: string }) => void;\n onAuthExpired?: () => void;\n onStream?: (event: Event) => void;\n onMessage?: (content: string, data: IMessage) => void;\n onRequestComplete?: () => void;\n}\n\nexport interface AdkConversationOptions {\n /** 业务请求适配器,是 headless runtime 和具体后端协议之间的边界。 */\n transport: AdkChatTransport;\n sessionId?: string;\n /** ADK 协议转换策略,例如是否隐藏异步任务事件、是否自动配对工具响应。 */\n protocol?: AdkProtocolOptions;\n session?: {\n pollSessionEvents?: boolean;\n sessionEventsPollingInterval?: number;\n pageSize?: number;\n showFirstSession?: boolean;\n };\n requestBuilder?: (input: {\n content: SendContent;\n sessionId: string;\n stateDelta?: Record<string, unknown>;\n }) => AgentRunRequest;\n /** 覆盖默认工具确认响应结构。 */\n createFunctionResponse?: (\n fnCall: FunctionCall,\n confirmed: boolean,\n ) => FunctionResponse;\n callbacks?: AdkConversationCallbacks;\n}\n\nexport type AdkConversationSubscriber = (\n state: AdkConversationState,\n) => void;\n\nexport interface AdkConversationController {\n /** 获取当前状态快照,适合 UMD 或非 React 场景主动读取。 */\n getSnapshot: () => AdkConversationState;\n /** 订阅状态变化,React Hook 也是基于这个方法做绑定。 */\n subscribe: (subscriber: AdkConversationSubscriber) => () => void;\n init: () => Promise<void>;\n destroy: () => void;\n startChat: (content: SendContent) => Promise<void>;\n stopChat: () => Promise<void>;\n reChat: () => Promise<void>;\n clearChat: () => void;\n suggestChat: (suggestion: string) => Promise<void>;\n confirmFnCall: (fnCall: FunctionCall, confirmed: boolean) => Promise<void>;\n switchSession: (sessionId: string) => Promise<void>;\n setCurrentSession: (sessionId: string) => Promise<void>;\n deleteSession: (sessionId: string) => Promise<boolean>;\n updateSession: (sessionId: string, title: string) => Promise<boolean>;\n likeMessage: AdkChatTransport[\"feedback\"];\n replaceSessionEvents: (events: Event[]) => void;\n syncSessionEvents: (events: Event[], sessionId?: string) => void;\n setMessages: (\n messages: IMessage[] | ((prev: IMessage[]) => IMessage[]),\n ) => void;\n setStateDelta: (delta: Record<string, unknown> | undefined) => void;\n}\n"],"mappings":""}
@@ -1,6 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { XAdkSDKProps, XAdkProviderHandle, IMessage } from "../types";
3
3
  import { SendContent } from "../types";
4
+ import * as protocol from "../core/protocol";
4
5
  /**
5
6
  * 内部包装组件:管理 token 状态,支持运行时动态更新
6
7
  */
@@ -33,6 +34,12 @@ interface WrapperHandle extends XAdkProviderHandle {
33
34
  * ```
34
35
  */
35
36
  declare class XAiWebSDK {
37
+ /** UMD 场景下暴露协议工具,方便无构建环境复用 ADK event/message 转换能力。 */
38
+ static protocol: typeof protocol;
39
+ /** UMD 场景下创建 headless 对话控制器,不强制渲染默认聊天模板。 */
40
+ static createAdkController: (options: import("../core/runtime").AdkConversationOptions) => import("../core/runtime").AdkConversationController;
41
+ /** UMD 场景下创建众安信科默认 openApi transport。 */
42
+ static createXGroupOpenApiTransport: ({ url, appNo, token, pageSize, onAuthError, }: import("../presets/xgroup").XGroupOpenApiTransportOptions) => import("../core/runtime").AdkChatTransport;
36
43
  container: HTMLElement;
37
44
  props: XAdkSDKProps;
38
45
  root: any;
@@ -9,6 +9,9 @@ var _excluded = ["token", "showSessionList", "allowUpload", "draggable", "clearB
9
9
  import { createRef, useState, useImperativeHandle, forwardRef } from "react";
10
10
  import ReactDOM from "react-dom/client";
11
11
  import XAdkProvider from "../components/XAdkProvider";
12
+ import * as protocol from "../core/protocol";
13
+ import { createAdkConversationController } from "../core/runtime";
14
+ import { createXGroupOpenApiTransport } from "../presets/xgroup";
12
15
 
13
16
  /**
14
17
  * 内部包装组件:管理 token 状态,支持运行时动态更新
@@ -432,8 +435,14 @@ var XAiWebSDK = /*#__PURE__*/function () {
432
435
  return XAiWebSDK;
433
436
  }(); // 兼容 window 方式,也支持 new
434
437
  // @ts-ignore
438
+ /** UMD 场景下暴露协议工具,方便无构建环境复用 ADK event/message 转换能力。 */
439
+ _defineProperty(XAiWebSDK, "protocol", protocol);
440
+ /** UMD 场景下创建 headless 对话控制器,不强制渲染默认聊天模板。 */
441
+ _defineProperty(XAiWebSDK, "createAdkController", createAdkConversationController);
442
+ /** UMD 场景下创建众安信科默认 openApi transport。 */
443
+ _defineProperty(XAiWebSDK, "createXGroupOpenApiTransport", createXGroupOpenApiTransport);
435
444
  window.XAiWebSDK = XAiWebSDK;
436
445
 
437
446
  // 支持 ESModule/UMD 直接 import
438
447
  export default XAiWebSDK;
439
- //# sourceMappingURL=umdEntry.js.map
448
+ //# sourceMappingURL=umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createRef","useState","useImperativeHandle","forwardRef","ReactDOM","XAdkProvider","protocol","createAdkConversationController","createXGroupOpenApiTransport","jsx","_jsx","SDKWrapper","_ref","ref","initialToken","token","showSessionList","allowUpload","draggable","clearBtnShow","rest","_objectWithoutProperties","_excluded","_useState","_useState2","_slicedToArray","setToken","providerRef","startChat","content","_providerRef$current","current","stopChat","_providerRef$current2","reChat","_providerRef$current3","clearChat","_providerRef$current4","deleteSession","id","_providerRef$current5","updateSession","title","_providerRef$current6","getAppInfo","_providerRef$current7","getMessages","_providerRef$current$","_providerRef$current8","getSessions","_providerRef$current$2","_providerRef$current9","setMessages","msgs","_providerRef$current10","setCurrentSession","_providerRef$current11","setStateDelta","delta","_providerRef$current12","_objectSpread","children","DefaultLayout","showFnCallDetail","displayName","XAiWebSDK","container","props","_classCallCheck","_defineProperty","onError","onSuccess","onMessage","mount","_createClass","key","value","_config$session$showS","_config$session","_config$allowUpload","_config$draggable","_config$chatProps$cle","_config$chatProps","_this$props$config","config","session","chatProps","element","style","width","height","wrapperRef","createRoot","root","render","unmount","_this$wrapperRef$curr","getData","_this$wrapperRef$curr2","_this$wrapperRef$curr3","_this$wrapperRef$curr4","appInfo","messages","sessions","_this$wrapperRef$curr5","_this$wrapperRef$curr6","_this$wrapperRef$curr7","_this$wrapperRef$curr8","_this$wrapperRef$curr9","_this$wrapperRef$curr10","_this$wrapperRef$curr11","_this$wrapperRef$curr12","sessionId","_this$wrapperRef$curr13","_this$wrapperRef$curr14","_this$wrapperRef$curr15","_this$wrapperRef$curr16","initChatbot","_props$componentProps","componentProps","existingContainer","document","getElementById","createElement","_props$componentProps2","styleProps","_excluded2","Object","assign","parentNode","body","appendChild","create","window"],"sources":["../../../src/entries/umd.tsx"],"sourcesContent":["import { createRef, useState, useImperativeHandle, forwardRef } from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport { XAdkSDKProps, XAdkProviderHandle, IMessage } from \"@/types\";\nimport XAdkProvider from \"@/components/XAdkProvider\";\nimport { SendContent } from \"@/types\";\nimport * as protocol from \"@/core/protocol\";\nimport { createAdkConversationController } from \"@/core/runtime\";\nimport { createXGroupOpenApiTransport } from \"@/presets/xgroup\";\n\n/**\n * 内部包装组件:管理 token 状态,支持运行时动态更新\n */\ninterface WrapperHandle extends XAdkProviderHandle {\n setToken: (token: string) => void;\n}\n\ninterface WrapperProps extends Omit<XAdkSDKProps, \"children\"> {\n showSessionList: boolean;\n allowUpload: boolean;\n draggable: boolean;\n clearBtnShow: boolean;\n}\n\nconst SDKWrapper = forwardRef<WrapperHandle, WrapperProps>(\n (\n {\n token: initialToken,\n showSessionList,\n allowUpload,\n draggable,\n clearBtnShow,\n ...rest\n },\n ref,\n ) => {\n const [token, setToken] = useState(initialToken);\n const providerRef = createRef<XAdkProviderHandle>();\n\n useImperativeHandle(\n ref,\n () => ({\n setToken,\n startChat: (content: SendContent) =>\n providerRef.current?.startChat(content),\n stopChat: () => providerRef.current?.stopChat(),\n reChat: () => providerRef.current?.reChat(),\n clearChat: () => providerRef.current?.clearChat(),\n deleteSession: (id: string) =>\n providerRef.current?.deleteSession(id),\n updateSession: (id: string, title: string) =>\n providerRef.current?.updateSession(id, title),\n getAppInfo: () => providerRef.current?.getAppInfo(),\n getMessages: () => providerRef.current?.getMessages() ?? [],\n getSessions: () => providerRef.current?.getSessions() ?? [],\n setMessages: (msgs: IMessage[]) =>\n providerRef.current?.setMessages(msgs),\n setCurrentSession: (id: string) =>\n providerRef.current?.setCurrentSession(id),\n setStateDelta: (delta: Record<string, any> | undefined) =>\n providerRef.current?.setStateDelta(delta),\n }),\n [providerRef],\n );\n\n return (\n <XAdkProvider ref={providerRef} {...rest} token={token}>\n <XAdkProvider.DefaultLayout\n showSessionList={showSessionList}\n allowUpload={allowUpload}\n draggable={draggable}\n clearBtnShow={clearBtnShow}\n showFnCallDetail={true}\n />\n </XAdkProvider>\n );\n },\n);\n\nSDKWrapper.displayName = \"SDKWrapper\";\n\n/**\n * XAiWebSDK - UMD 入口类\n *\n * 用于通过 <script> 标签引入 SDK 的场景\n *\n * @example\n * ```html\n * <script src=\"chat-sdk.min.js\"></script>\n * <script>\n * const sdk = XAiWebSDK.initChatbot({\n * url: 'https://api.example.com',\n * token: 'your-token',\n * config: {\n * appNo: 'your-app-no',\n * session: {\n * showSessionList: true\n * }\n * }\n * });\n *\n * // token 过期后动态更新\n * sdk.setToken('new-token');\n * </script>\n * ```\n */\nclass XAiWebSDK {\n /** UMD 场景下暴露协议工具,方便无构建环境复用 ADK event/message 转换能力。 */\n static protocol = protocol;\n\n /** UMD 场景下创建 headless 对话控制器,不强制渲染默认聊天模板。 */\n static createAdkController = createAdkConversationController;\n\n /** UMD 场景下创建众安信科默认 openApi transport。 */\n static createXGroupOpenApiTransport = createXGroupOpenApiTransport;\n\n container: HTMLElement;\n\n props: XAdkSDKProps;\n\n root: any;\n\n wrapperRef = createRef<WrapperHandle>();\n\n // ———— hook ————\n onError?: (error: any) => void;\n\n onSuccess?: (appInfo: any) => void;\n\n onMessage?: (content: string, data: IMessage) => void;\n\n constructor(container: HTMLElement, props: XAdkSDKProps) {\n this.container = container;\n this.props = props;\n this.onError = props.onError;\n this.onSuccess = props.onSuccess;\n this.onMessage = props.onMessage;\n this.mount();\n }\n\n mount() {\n // 提取配置\n const { config = {} } = this.props;\n const showSessionList = config.session?.showSessionList ?? false;\n const allowUpload = config.allowUpload ?? false;\n const draggable = config.draggable ?? true;\n const clearBtnShow = config.chatProps?.clearBtnShow ?? true;\n\n const element = (\n <div style={{ width: \"100%\", height: \"100%\" }}>\n <SDKWrapper\n ref={this.wrapperRef}\n {...this.props}\n showSessionList={showSessionList}\n allowUpload={allowUpload}\n draggable={draggable}\n clearBtnShow={clearBtnShow}\n />\n </div>\n );\n\n if (ReactDOM.createRoot) {\n this.root = ReactDOM.createRoot(this.container);\n this.root.render(element);\n } else {\n // 兼容 React 17\n // @ts-ignore\n ReactDOM.render(element, this.container);\n }\n }\n\n unmount() {\n if (this.root && this.root.unmount) {\n this.root.unmount();\n }\n }\n\n /**\n * 初始化聊天机器人(推荐方式)\n *\n * @param props - SDK 配置参数\n * @returns XAiWebSDK 实例\n *\n * @example\n * ```javascript\n * const sdk = XAiWebSDK.initChatbot({\n * url: 'https://api.example.com',\n * token: 'your-token',\n * config: {\n * appNo: 'your-app-no',\n * session: {\n * showSessionList: true // 显示会话列表\n * },\n * allowUpload: true, // 允许文件上传\n * chatProps: {\n * clearBtnShow: false // 隐藏清空按钮\n * }\n * },\n * componentProps: {\n * id: 'my-chatbot', // 容器 ID\n * width: '100%',\n * height: '600px'\n * }\n * });\n * ```\n */\n static initChatbot(props: XAdkSDKProps): XAiWebSDK {\n let container: HTMLElement;\n\n // 检查是否有指定的 componentProps.id\n if (props.componentProps?.id) {\n const existingContainer = document.getElementById(\n props.componentProps.id,\n );\n if (existingContainer) {\n container = existingContainer;\n } else {\n // 如果指定的 ID 不存在,创建新元素\n container = document.createElement(\"div\");\n container.id = props.componentProps.id;\n }\n } else {\n // 没有指定 ID,创建默认容器\n container = document.createElement(\"div\");\n container.id = \"xai-chatbot-container\";\n }\n\n // 设置容器样式 - 将除了 id 以外的所有属性都应用到容器\n if (props.componentProps) {\n const { id, ...styleProps } = props.componentProps;\n Object.assign(container.style, styleProps);\n }\n\n // 如果容器不在 DOM 中,添加到 body\n if (!container.parentNode) {\n document.body.appendChild(container);\n }\n\n return new XAiWebSDK(container, props);\n }\n\n /**\n * 兼容旧版本的静态方法\n * @deprecated 使用 initChatbot 替代\n */\n static create(props: XAdkSDKProps): XAiWebSDK {\n return this.initChatbot(props);\n }\n\n // ————对外暴露的方法————\n\n /**\n * 动态更新认证 token\n *\n * 用于 token 过期后刷新,更新后后续的 API 请求将使用新 token,无需重新初始化 SDK。\n *\n * @param token - 新的认证 token\n *\n * @example\n * ```javascript\n * // 监听到 token 过期后\n * const newToken = await refreshToken();\n * sdk.setToken(newToken);\n * ```\n */\n setToken(token: string) {\n this.wrapperRef.current?.setToken(token);\n }\n\n /**\n * 获取当前数据(聚合方法)\n * @returns 应用信息、消息列表、会话列表\n */\n getData() {\n return {\n appInfo: this.wrapperRef.current?.getAppInfo(),\n messages: this.wrapperRef.current?.getMessages(),\n sessions: this.wrapperRef.current?.getSessions(),\n };\n }\n\n /**\n * 获取应用信息\n * @returns 应用信息\n */\n getAppInfo() {\n return this.wrapperRef.current?.getAppInfo();\n }\n\n /**\n * 获取当前会话的消息列表\n * @returns 消息列表\n */\n getMessages() {\n return this.wrapperRef.current?.getMessages();\n }\n\n /**\n * 获取会话列表\n * @returns 会话列表\n */\n getSessions() {\n return this.wrapperRef.current?.getSessions();\n }\n\n /**\n * 设置消息列表\n * @param msgs - 要设置的消息数组\n */\n setMessages(msgs: IMessage[]) {\n this.wrapperRef.current?.setMessages(msgs);\n }\n\n /**\n * 发送消息\n * @param content - 消息内容\n *\n * @example\n * ```javascript\n * sdk.startChat({ text: 'Hello!' });\n * ```\n */\n startChat(content: SendContent) {\n this.wrapperRef.current?.startChat(content);\n }\n\n /**\n * 停止当前消息生成\n */\n stopChat() {\n this.wrapperRef.current?.stopChat();\n }\n\n /**\n * 重新生成最后一条回复\n */\n reChat() {\n this.wrapperRef.current?.reChat();\n }\n\n /**\n * 清空当前会话\n */\n clearChat() {\n this.wrapperRef.current?.clearChat();\n }\n\n /**\n * 切换到指定会话\n * @param sessionId - 会话 ID\n */\n setCurrentSession(sessionId: string) {\n this.wrapperRef.current?.setCurrentSession(sessionId);\n }\n\n /**\n * 删除指定会话\n * @param sessionId - 会话 ID\n */\n deleteSession(sessionId: string) {\n this.wrapperRef.current?.deleteSession(sessionId);\n }\n\n /**\n * 更新会话标题\n * @param sessionId - 会话 ID\n * @param title - 新标题\n */\n updateSession(sessionId: string, title: string) {\n this.wrapperRef.current?.updateSession(sessionId, title);\n }\n\n /**\n * 设置自定义业务参数 (stateDelta)\n * 设置后每次发送消息时会自动携带至后端\n * @param delta - 自定义参数,传入 undefined 可清除\n */\n setStateDelta(delta: Record<string, any> | undefined) {\n this.wrapperRef.current?.setStateDelta(delta);\n }\n}\n\n// 兼容 window 方式,也支持 new\n// @ts-ignore\nwindow.XAiWebSDK = XAiWebSDK;\n\n// 支持 ESModule/UMD 直接 import\nexport default XAiWebSDK;\n"],"mappings":"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"}
@@ -13,7 +13,7 @@ import XAdkChatbot from "./components/XAdkChatbot";
13
13
  import XAdkSender from "./components/XAdkSender";
14
14
  import XAdkSenderSwitch from "./components/XAdkSender/Switch";
15
15
  import useADKChat from "./hooks/useADKChat";
16
- import { baseChatStrategies, basePreset, baseToolKindResolver, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, createXGroupUploadRequest, xGroupAdkPreset, xGroupToolKindResolver } from "./presets/xGroupAdk";
16
+ import { baseChatStrategies, basePreset, baseToolKindResolver, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, createXGroupUploadRequest, xGroupAdkPreset, xGroupToolKindResolver } from "./presets/xgroup";
17
17
  export { useChatState, useChatActions, useSession, } from "./components/XAdkProvider/context";
18
18
  export * from "./types";
19
19
  export type { ChatHookResult, ChatHookFactory } from "./types/ChatHook";
@@ -29,3 +29,8 @@ export type { MarkdownRenderProps } from "./components/XAdkChatbot/components/Ma
29
29
  export type { FunctionCallRenderProps } from "./types/FunctionCallRender";
30
30
  export type { XAdkThoughtChainProps, ThoughtChainItemType, ThoughtChainStatus, } from "./types/XAdkThoughtChain";
31
31
  export { tokens, tokenDefaults, token, cssVarStyle } from "./styles/tokens";
32
+ export * from "./core";
33
+ export { default as useAdkConversation } from "./react/useAdkConversation";
34
+ export type { UseAdkConversationResult } from "./react/useAdkConversation";
35
+ export { createXGroupOpenApiTransport } from "./presets/xgroup";
36
+ export type { XGroupOpenApiTransportOptions } from "./presets/xgroup";
package/dist/esm/index.js CHANGED
@@ -16,7 +16,7 @@ import XAdkChatbot from "./components/XAdkChatbot";
16
16
  import XAdkSender from "./components/XAdkSender";
17
17
  import XAdkSenderSwitch from "./components/XAdkSender/Switch";
18
18
  import useADKChat from "./hooks/useADKChat";
19
- import { baseChatStrategies, basePreset, baseToolKindResolver, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, createXGroupUploadRequest, xGroupAdkPreset, xGroupToolKindResolver } from "./presets/xGroupAdk";
19
+ import { baseChatStrategies, basePreset, baseToolKindResolver, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, createXGroupUploadRequest, xGroupAdkPreset, xGroupToolKindResolver } from "./presets/xgroup";
20
20
 
21
21
  // 导出新的 Context Hooks
22
22
  export { useChatState, useChatActions, useSession } from "./components/XAdkProvider/context";
@@ -42,4 +42,9 @@ export { default as ThinkRender } from "./components/XAdkChatbot/components/Thin
42
42
 
43
43
  // 设计令牌导出 - 供引用方覆盖样式
44
44
  export { tokens, tokenDefaults, token, cssVarStyle } from "./styles/tokens";
45
+
46
+ // Headless ADK data-flow APIs
47
+ export * from "./core";
48
+ export { default as useAdkConversation } from "./react/useAdkConversation";
49
+ export { createXGroupOpenApiTransport } from "./presets/xgroup";
45
50
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useXAi","XAiProvider","XAiChatbot","XAiSDK","XAiSender","FileGallery","XAiConversations","XAdkThoughtChain","useXAiSDK","request","XAdkProvider","XAdkChatbot","XAdkSender","XAdkSenderSwitch","useADKChat","baseChatStrategies","basePreset","baseToolKindResolver","mergeChatStrategies","resolvePresetUploadRequest","resolveChatPreset","createXGroupUploadRequest","xGroupAdkPreset","xGroupToolKindResolver","useChatState","useChatActions","useSession","FolderTree","default","MarkdownRender","FunctionCallRender","ThinkRender","tokens","tokenDefaults","token","cssVarStyle"],"sources":["../../src/index.ts"],"sourcesContent":["// index.ts\nimport { useXAi } from \"./context/AiProviderContext\";\nimport XAiProvider from \"./components/XAiProvider\";\nimport XAiChatbot from \"./components/XAiChatbot\";\nimport XAiSDK from \"./components/XAiSDK\";\nimport XAiSender from \"./components/XAiSender\";\nimport FileGallery from \"./components/FileGallery\";\nimport XAiConversations from \"./components/XAiConversations\";\nimport XAdkThoughtChain from \"./components/XAdkThoughtChain\";\nimport useXAiSDK from \"./hooks/useXAiSDK\";\nimport request from \"./utils/request\";\n\n// 新的 Compound Components 架构\nimport XAdkProvider from \"./components/XAdkProvider\";\nimport XAdkChatbot from \"./components/XAdkChatbot\";\nimport XAdkSender from \"./components/XAdkSender\";\nimport XAdkSenderSwitch from \"./components/XAdkSender/Switch\";\nimport useADKChat from \"./hooks/useADKChat\";\nimport {\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n createXGroupUploadRequest,\n xGroupAdkPreset,\n xGroupToolKindResolver,\n} from \"./presets/xGroupAdk\";\n\n// 导出新的 Context Hooks\nexport {\n useChatState,\n useChatActions,\n useSession,\n} from \"./components/XAdkProvider/context\";\n\nexport * from \"./types\";\n\n// 导出自定义 Hook 相关类型\nexport type { ChatHookResult, ChatHookFactory } from \"./types/ChatHook\";\n\n// 旧 API - 保持向后兼容\nexport {\n useXAi,\n XAiProvider,\n XAiChatbot,\n XAiSDK,\n XAiSender,\n XAiConversations,\n useXAiSDK,\n request,\n};\n\n// 新 API - 推荐使用\nexport {\n XAdkProvider,\n XAdkChatbot,\n XAdkSender,\n XAdkSenderSwitch,\n FileGallery,\n XAdkThoughtChain,\n useADKChat,\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n createXGroupUploadRequest,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n xGroupAdkPreset,\n xGroupToolKindResolver,\n};\n\n// FolderTree 文件树组件\nimport FolderTree from \"./components/FolderTree\";\nexport { FolderTree };\nexport type {\n FolderTreeProps,\n FolderTreeData,\n FileContentService,\n FolderTreeRef,\n} from \"./components/FolderTree\";\n\n// 基础组件导出 - 供高级用户和业务侧使用\nexport { default as MarkdownRender } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport { default as FunctionCallRender } from \"./components/XAdkChatbot/components/FunctionCallRender\";\nexport { default as ThinkRender } from \"./components/XAdkChatbot/components/ThinkRender\";\n\n// 基础组件类型导出\nexport type { MarkdownRenderProps } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport type { FunctionCallRenderProps } from \"./types/FunctionCallRender\";\nexport type {\n XAdkThoughtChainProps,\n ThoughtChainItemType,\n ThoughtChainStatus,\n} from \"./types/XAdkThoughtChain\";\n\n// 设计令牌导出 - 供引用方覆盖样式\nexport { tokens, tokenDefaults, token, cssVarStyle } from \"./styles/tokens\";\n"],"mappings":"AAAA;AACA,SAASA,MAAM;AACf,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,MAAM;AACb,OAAOC,SAAS;AAChB,OAAOC,WAAW;AAClB,OAAOC,gBAAgB;AACvB,OAAOC,gBAAgB;AACvB,OAAOC,SAAS;AAChB,OAAOC,OAAO;;AAEd;AACA,OAAOC,YAAY;AACnB,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,gBAAgB;AACvB,OAAOC,UAAU;AACjB,SACEC,kBAAkB,EAClBC,UAAU,EACVC,oBAAoB,EACpBC,mBAAmB,EACnBC,0BAA0B,EAC1BC,iBAAiB,EACjBC,yBAAyB,EACzBC,eAAe,EACfC,sBAAsB;;AAGxB;AACA,SACEC,YAAY,EACZC,cAAc,EACdC,UAAU;AAGZ;;AAEA;;AAGA;AACA,SACE1B,MAAM,EACNC,WAAW,EACXC,UAAU,EACVC,MAAM,EACNC,SAAS,EACTE,gBAAgB,EAChBE,SAAS,EACTC,OAAO;;AAGT;AACA,SACEC,YAAY,EACZC,WAAW,EACXC,UAAU,EACVC,gBAAgB,EAChBR,WAAW,EACXE,gBAAgB,EAChBO,UAAU,EACVC,kBAAkB,EAClBC,UAAU,EACVC,oBAAoB,EACpBI,yBAAyB,EACzBH,mBAAmB,EACnBC,0BAA0B,EAC1BC,iBAAiB,EACjBE,eAAe,EACfC,sBAAsB;;AAGxB;AACA,OAAOI,UAAU;AACjB,SAASA,UAAU;AAQnB;AACA,SAASC,OAAO,IAAIC,cAAc;AAClC,SAASD,OAAO,IAAIE,kBAAkB;AACtC,SAASF,OAAO,IAAIG,WAAW;;AAE/B;;AASA;AACA,SAASC,MAAM,EAAEC,aAAa,EAAEC,KAAK,EAAEC,WAAW"}
1
+ {"version":3,"names":["useXAi","XAiProvider","XAiChatbot","XAiSDK","XAiSender","FileGallery","XAiConversations","XAdkThoughtChain","useXAiSDK","request","XAdkProvider","XAdkChatbot","XAdkSender","XAdkSenderSwitch","useADKChat","baseChatStrategies","basePreset","baseToolKindResolver","mergeChatStrategies","resolvePresetUploadRequest","resolveChatPreset","createXGroupUploadRequest","xGroupAdkPreset","xGroupToolKindResolver","useChatState","useChatActions","useSession","FolderTree","default","MarkdownRender","FunctionCallRender","ThinkRender","tokens","tokenDefaults","token","cssVarStyle","useAdkConversation","createXGroupOpenApiTransport"],"sources":["../../src/index.ts"],"sourcesContent":["// index.ts\nimport { useXAi } from \"./context/AiProviderContext\";\nimport XAiProvider from \"./components/XAiProvider\";\nimport XAiChatbot from \"./components/XAiChatbot\";\nimport XAiSDK from \"./components/XAiSDK\";\nimport XAiSender from \"./components/XAiSender\";\nimport FileGallery from \"./components/FileGallery\";\nimport XAiConversations from \"./components/XAiConversations\";\nimport XAdkThoughtChain from \"./components/XAdkThoughtChain\";\nimport useXAiSDK from \"./hooks/useXAiSDK\";\nimport request from \"./utils/request\";\n\n// 新的 Compound Components 架构\nimport XAdkProvider from \"./components/XAdkProvider\";\nimport XAdkChatbot from \"./components/XAdkChatbot\";\nimport XAdkSender from \"./components/XAdkSender\";\nimport XAdkSenderSwitch from \"./components/XAdkSender/Switch\";\nimport useADKChat from \"./hooks/useADKChat\";\nimport {\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n createXGroupUploadRequest,\n xGroupAdkPreset,\n xGroupToolKindResolver,\n} from \"./presets/xgroup\";\n\n// 导出新的 Context Hooks\nexport {\n useChatState,\n useChatActions,\n useSession,\n} from \"./components/XAdkProvider/context\";\n\nexport * from \"./types\";\n\n// 导出自定义 Hook 相关类型\nexport type { ChatHookResult, ChatHookFactory } from \"./types/ChatHook\";\n\n// 旧 API - 保持向后兼容\nexport {\n useXAi,\n XAiProvider,\n XAiChatbot,\n XAiSDK,\n XAiSender,\n XAiConversations,\n useXAiSDK,\n request,\n};\n\n// 新 API - 推荐使用\nexport {\n XAdkProvider,\n XAdkChatbot,\n XAdkSender,\n XAdkSenderSwitch,\n FileGallery,\n XAdkThoughtChain,\n useADKChat,\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n createXGroupUploadRequest,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n xGroupAdkPreset,\n xGroupToolKindResolver,\n};\n\n// FolderTree 文件树组件\nimport FolderTree from \"./components/FolderTree\";\nexport { FolderTree };\nexport type {\n FolderTreeProps,\n FolderTreeData,\n FileContentService,\n FolderTreeRef,\n} from \"./components/FolderTree\";\n\n// 基础组件导出 - 供高级用户和业务侧使用\nexport { default as MarkdownRender } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport { default as FunctionCallRender } from \"./components/XAdkChatbot/components/FunctionCallRender\";\nexport { default as ThinkRender } from \"./components/XAdkChatbot/components/ThinkRender\";\n\n// 基础组件类型导出\nexport type { MarkdownRenderProps } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport type { FunctionCallRenderProps } from \"./types/FunctionCallRender\";\nexport type {\n XAdkThoughtChainProps,\n ThoughtChainItemType,\n ThoughtChainStatus,\n} from \"./types/XAdkThoughtChain\";\n\n// 设计令牌导出 - 供引用方覆盖样式\nexport { tokens, tokenDefaults, token, cssVarStyle } from \"./styles/tokens\";\n\n// Headless ADK data-flow APIs\nexport * from \"./core\";\nexport { default as useAdkConversation } from \"./react/useAdkConversation\";\nexport type { UseAdkConversationResult } from \"./react/useAdkConversation\";\nexport { createXGroupOpenApiTransport } from \"./presets/xgroup\";\nexport type { XGroupOpenApiTransportOptions } from \"./presets/xgroup\";\n"],"mappings":"AAAA;AACA,SAASA,MAAM;AACf,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,MAAM;AACb,OAAOC,SAAS;AAChB,OAAOC,WAAW;AAClB,OAAOC,gBAAgB;AACvB,OAAOC,gBAAgB;AACvB,OAAOC,SAAS;AAChB,OAAOC,OAAO;;AAEd;AACA,OAAOC,YAAY;AACnB,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,gBAAgB;AACvB,OAAOC,UAAU;AACjB,SACEC,kBAAkB,EAClBC,UAAU,EACVC,oBAAoB,EACpBC,mBAAmB,EACnBC,0BAA0B,EAC1BC,iBAAiB,EACjBC,yBAAyB,EACzBC,eAAe,EACfC,sBAAsB;;AAGxB;AACA,SACEC,YAAY,EACZC,cAAc,EACdC,UAAU;AAGZ;;AAEA;;AAGA;AACA,SACE1B,MAAM,EACNC,WAAW,EACXC,UAAU,EACVC,MAAM,EACNC,SAAS,EACTE,gBAAgB,EAChBE,SAAS,EACTC,OAAO;;AAGT;AACA,SACEC,YAAY,EACZC,WAAW,EACXC,UAAU,EACVC,gBAAgB,EAChBR,WAAW,EACXE,gBAAgB,EAChBO,UAAU,EACVC,kBAAkB,EAClBC,UAAU,EACVC,oBAAoB,EACpBI,yBAAyB,EACzBH,mBAAmB,EACnBC,0BAA0B,EAC1BC,iBAAiB,EACjBE,eAAe,EACfC,sBAAsB;;AAGxB;AACA,OAAOI,UAAU;AACjB,SAASA,UAAU;AAQnB;AACA,SAASC,OAAO,IAAIC,cAAc;AAClC,SAASD,OAAO,IAAIE,kBAAkB;AACtC,SAASF,OAAO,IAAIG,WAAW;;AAE/B;;AASA;AACA,SAASC,MAAM,EAAEC,aAAa,EAAEC,KAAK,EAAEC,WAAW;;AAElD;AACA;AACA,SAASP,OAAO,IAAIQ,kBAAkB;AAEtC,SAASC,4BAA4B"}
@@ -0,0 +1,4 @@
1
+ export * from "./preset";
2
+ export * from "./strategies";
3
+ export * from "./transport";
4
+ export * from "./upload";
@@ -0,0 +1,5 @@
1
+ export * from "./preset";
2
+ export * from "./strategies";
3
+ export * from "./transport";
4
+ export * from "./upload";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../../../src/presets/xgroup/index.ts"],"sourcesContent":["export * from \"./preset\";\nexport * from \"./strategies\";\nexport * from \"./transport\";\nexport * from \"./upload\";\n"],"mappings":"AAAA;AACA;AACA;AACA"}
@@ -0,0 +1,15 @@
1
+ import type { ChatPreset, ChatPresetInput, ChatStrategies, UploadRequestFn } from "../../types";
2
+ /** 众安信科 ADK 官方预设:聚合工具展示、消息解析、确认响应和默认上传等业务策略。 */
3
+ export declare const xGroupAdkPreset: ChatPreset;
4
+ /** 基础预设用于完全通用的 SDK 行为,不绑定众安信科后端协议。 */
5
+ export declare const basePreset: ChatPreset;
6
+ /** 统一解析字符串预设和对象预设,默认保持历史行为使用 xgroup-adk。 */
7
+ export declare const resolveChatPreset: (preset: ChatPresetInput | undefined) => ChatPreset;
8
+ /** 将预设策略与局部覆盖合并,供组件和业务侧按需覆盖单个函数。 */
9
+ export declare const mergeChatStrategies: (preset: ChatPresetInput | undefined, overrides?: ChatStrategies) => ChatStrategies;
10
+ /** 从当前预设中解析上传实现,业务显式传入 uploadRequest 时仍然优先使用业务实现。 */
11
+ export declare const resolvePresetUploadRequest: (preset: ChatPresetInput | undefined, context: {
12
+ url: string;
13
+ token?: string;
14
+ appNo?: string;
15
+ }) => UploadRequestFn | undefined;
@@ -0,0 +1,44 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import { parseAgentMessage } from "../../utils";
3
+ import { baseChatStrategies, xGroupToolKindResolver } from "./strategies";
4
+ import { createXGroupUploadRequest } from "./upload";
5
+
6
+ /** 众安信科 ADK 官方预设:聚合工具展示、消息解析、确认响应和默认上传等业务策略。 */
7
+ export var xGroupAdkPreset = {
8
+ name: "xgroup-adk",
9
+ strategies: {
10
+ resolveToolKind: xGroupToolKindResolver,
11
+ createFunctionResponse: baseChatStrategies.createFunctionResponse,
12
+ parseProcessMessage: function parseProcessMessage(text, options) {
13
+ return parseAgentMessage(text, _objectSpread({
14
+ mode: "comment"
15
+ }, options));
16
+ }
17
+ },
18
+ createUploadRequest: createXGroupUploadRequest
19
+ };
20
+
21
+ /** 基础预设用于完全通用的 SDK 行为,不绑定众安信科后端协议。 */
22
+ export var basePreset = {
23
+ name: "base",
24
+ strategies: baseChatStrategies
25
+ };
26
+
27
+ /** 统一解析字符串预设和对象预设,默认保持历史行为使用 xgroup-adk。 */
28
+ export var resolveChatPreset = function resolveChatPreset(preset) {
29
+ if (!preset || preset === "xgroup-adk") return xGroupAdkPreset;
30
+ if (preset === "base") return basePreset;
31
+ return preset;
32
+ };
33
+
34
+ /** 将预设策略与局部覆盖合并,供组件和业务侧按需覆盖单个函数。 */
35
+ export var mergeChatStrategies = function mergeChatStrategies(preset, overrides) {
36
+ return _objectSpread(_objectSpread(_objectSpread({}, baseChatStrategies), resolveChatPreset(preset).strategies), overrides);
37
+ };
38
+
39
+ /** 从当前预设中解析上传实现,业务显式传入 uploadRequest 时仍然优先使用业务实现。 */
40
+ export var resolvePresetUploadRequest = function resolvePresetUploadRequest(preset, context) {
41
+ var _resolveChatPreset$cr, _resolveChatPreset;
42
+ return (_resolveChatPreset$cr = (_resolveChatPreset = resolveChatPreset(preset)).createUploadRequest) === null || _resolveChatPreset$cr === void 0 ? void 0 : _resolveChatPreset$cr.call(_resolveChatPreset, context);
43
+ };
44
+ //# sourceMappingURL=preset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["parseAgentMessage","baseChatStrategies","xGroupToolKindResolver","createXGroupUploadRequest","xGroupAdkPreset","name","strategies","resolveToolKind","createFunctionResponse","parseProcessMessage","text","options","_objectSpread","mode","createUploadRequest","basePreset","resolveChatPreset","preset","mergeChatStrategies","overrides","resolvePresetUploadRequest","context","_resolveChatPreset$cr","_resolveChatPreset","call"],"sources":["../../../../src/presets/xgroup/preset.ts"],"sourcesContent":["import { parseAgentMessage } from \"@/utils\";\nimport type {\n ChatPreset,\n ChatPresetInput,\n ChatStrategies,\n UploadRequestFn,\n} from \"@/types\";\nimport {\n baseChatStrategies,\n xGroupToolKindResolver,\n} from \"./strategies\";\nimport { createXGroupUploadRequest } from \"./upload\";\n\n/** 众安信科 ADK 官方预设:聚合工具展示、消息解析、确认响应和默认上传等业务策略。 */\nexport const xGroupAdkPreset: ChatPreset = {\n name: \"xgroup-adk\",\n strategies: {\n resolveToolKind: xGroupToolKindResolver,\n createFunctionResponse: baseChatStrategies.createFunctionResponse,\n parseProcessMessage: (text, options) =>\n parseAgentMessage(text, { mode: \"comment\", ...options }),\n },\n createUploadRequest: createXGroupUploadRequest,\n};\n\n/** 基础预设用于完全通用的 SDK 行为,不绑定众安信科后端协议。 */\nexport const basePreset: ChatPreset = {\n name: \"base\",\n strategies: baseChatStrategies,\n};\n\n/** 统一解析字符串预设和对象预设,默认保持历史行为使用 xgroup-adk。 */\nexport const resolveChatPreset = (\n preset: ChatPresetInput | undefined,\n): ChatPreset => {\n if (!preset || preset === \"xgroup-adk\") return xGroupAdkPreset;\n if (preset === \"base\") return basePreset;\n return preset;\n};\n\n/** 将预设策略与局部覆盖合并,供组件和业务侧按需覆盖单个函数。 */\nexport const mergeChatStrategies = (\n preset: ChatPresetInput | undefined,\n overrides?: ChatStrategies,\n): ChatStrategies => ({\n ...baseChatStrategies,\n ...resolveChatPreset(preset).strategies,\n ...overrides,\n});\n\n/** 从当前预设中解析上传实现,业务显式传入 uploadRequest 时仍然优先使用业务实现。 */\nexport const resolvePresetUploadRequest = (\n preset: ChatPresetInput | undefined,\n context: {\n url: string;\n token?: string;\n appNo?: string;\n },\n): UploadRequestFn | undefined => {\n return resolveChatPreset(preset).createUploadRequest?.(context);\n};\n"],"mappings":";AAAA,SAASA,iBAAiB;AAO1B,SACEC,kBAAkB,EAClBC,sBAAsB;AAExB,SAASC,yBAAyB;;AAElC;AACA,OAAO,IAAMC,eAA2B,GAAG;EACzCC,IAAI,EAAE,YAAY;EAClBC,UAAU,EAAE;IACVC,eAAe,EAAEL,sBAAsB;IACvCM,sBAAsB,EAAEP,kBAAkB,CAACO,sBAAsB;IACjEC,mBAAmB,EAAE,SAAAA,oBAACC,IAAI,EAAEC,OAAO;MAAA,OACjCX,iBAAiB,CAACU,IAAI,EAAAE,aAAA;QAAIC,IAAI,EAAE;MAAS,GAAKF,OAAO,CAAE,CAAC;IAAA;EAC5D,CAAC;EACDG,mBAAmB,EAAEX;AACvB,CAAC;;AAED;AACA,OAAO,IAAMY,UAAsB,GAAG;EACpCV,IAAI,EAAE,MAAM;EACZC,UAAU,EAAEL;AACd,CAAC;;AAED;AACA,OAAO,IAAMe,iBAAiB,GAAG,SAApBA,iBAAiBA,CAC5BC,MAAmC,EACpB;EACf,IAAI,CAACA,MAAM,IAAIA,MAAM,KAAK,YAAY,EAAE,OAAOb,eAAe;EAC9D,IAAIa,MAAM,KAAK,MAAM,EAAE,OAAOF,UAAU;EACxC,OAAOE,MAAM;AACf,CAAC;;AAED;AACA,OAAO,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAC9BD,MAAmC,EACnCE,SAA0B;EAAA,OAAAP,aAAA,CAAAA,aAAA,CAAAA,aAAA,KAEvBX,kBAAkB,GAClBe,iBAAiB,CAACC,MAAM,CAAC,CAACX,UAAU,GACpCa,SAAS;AAAA,CACZ;;AAEF;AACA,OAAO,IAAMC,0BAA0B,GAAG,SAA7BA,0BAA0BA,CACrCH,MAAmC,EACnCI,OAIC,EAC+B;EAAA,IAAAC,qBAAA,EAAAC,kBAAA;EAChC,QAAAD,qBAAA,GAAO,CAAAC,kBAAA,GAAAP,iBAAiB,CAACC,MAAM,CAAC,EAACH,mBAAmB,cAAAQ,qBAAA,uBAA7CA,qBAAA,CAAAE,IAAA,CAAAD,kBAAA,EAAgDF,OAAO,CAAC;AACjE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ChatStrategies, ToolRenderKind } from "../../types";
2
+ export declare const baseToolKindResolver: () => ToolRenderKind;
3
+ /** 众安信科预设的工具类型映射,集中处理当前后端约定的 tool name。 */
4
+ export declare const xGroupToolKindResolver: ({ name, }: {
5
+ name?: string | undefined;
6
+ }) => ToolRenderKind;
7
+ /** SDK 基础策略:不带业务协议偏好的最小行为集合。 */
8
+ export declare const baseChatStrategies: Required<Pick<ChatStrategies, "resolveToolKind" | "createFunctionResponse" | "parseProcessMessage">>;
@@ -0,0 +1,30 @@
1
+ import { parseAgentMessage } from "../../utils";
2
+ export var baseToolKindResolver = function baseToolKindResolver() {
3
+ return "default";
4
+ };
5
+
6
+ /** 众安信科预设的工具类型映射,集中处理当前后端约定的 tool name。 */
7
+ export var xGroupToolKindResolver = function xGroupToolKindResolver(_ref) {
8
+ var name = _ref.name;
9
+ if (name === "adk_request_confirmation") return "approval";
10
+ if (name === "transferToAgent") return "handoff";
11
+ return "default";
12
+ };
13
+
14
+ /** SDK 基础策略:不带业务协议偏好的最小行为集合。 */
15
+ export var baseChatStrategies = {
16
+ resolveToolKind: function resolveToolKind() {
17
+ return "default";
18
+ },
19
+ createFunctionResponse: function createFunctionResponse(fnCall, confirmed) {
20
+ return {
21
+ id: fnCall.id,
22
+ name: fnCall.name,
23
+ response: {
24
+ confirmed: confirmed
25
+ }
26
+ };
27
+ },
28
+ parseProcessMessage: parseAgentMessage
29
+ };
30
+ //# sourceMappingURL=strategies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["parseAgentMessage","baseToolKindResolver","xGroupToolKindResolver","_ref","name","baseChatStrategies","resolveToolKind","createFunctionResponse","fnCall","confirmed","id","response","parseProcessMessage"],"sources":["../../../../src/presets/xgroup/strategies.ts"],"sourcesContent":["import { parseAgentMessage } from \"@/utils\";\nimport type {\n ChatStrategies,\n FunctionCall,\n FunctionResponse,\n ToolRenderKind,\n} from \"@/types\";\n\nexport const baseToolKindResolver = (): ToolRenderKind => \"default\";\n\n/** 众安信科预设的工具类型映射,集中处理当前后端约定的 tool name。 */\nexport const xGroupToolKindResolver = ({\n name,\n}: {\n name?: string;\n}): ToolRenderKind => {\n if (name === \"adk_request_confirmation\") return \"approval\";\n if (name === \"transferToAgent\") return \"handoff\";\n return \"default\";\n};\n\n/** SDK 基础策略:不带业务协议偏好的最小行为集合。 */\nexport const baseChatStrategies: Required<\n Pick<\n ChatStrategies,\n \"resolveToolKind\" | \"createFunctionResponse\" | \"parseProcessMessage\"\n >\n> = {\n resolveToolKind: () => \"default\",\n createFunctionResponse: (\n fnCall: FunctionCall,\n confirmed: boolean,\n ): FunctionResponse => ({\n id: fnCall.id,\n name: fnCall.name,\n response: { confirmed },\n }),\n parseProcessMessage: parseAgentMessage,\n};\n"],"mappings":"AAAA,SAASA,iBAAiB;AAQ1B,OAAO,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAA;EAAA,OAAyB,SAAS;AAAA;;AAEnE;AACA,OAAO,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAAC,IAAA,EAIb;EAAA,IAHpBC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAIJ,IAAIA,IAAI,KAAK,0BAA0B,EAAE,OAAO,UAAU;EAC1D,IAAIA,IAAI,KAAK,iBAAiB,EAAE,OAAO,SAAS;EAChD,OAAO,SAAS;AAClB,CAAC;;AAED;AACA,OAAO,IAAMC,kBAKZ,GAAG;EACFC,eAAe,EAAE,SAAAA,gBAAA;IAAA,OAAM,SAAS;EAAA;EAChCC,sBAAsB,EAAE,SAAAA,uBACtBC,MAAoB,EACpBC,SAAkB;IAAA,OACI;MACtBC,EAAE,EAAEF,MAAM,CAACE,EAAE;MACbN,IAAI,EAAEI,MAAM,CAACJ,IAAI;MACjBO,QAAQ,EAAE;QAAEF,SAAS,EAATA;MAAU;IACxB,CAAC;EAAA,CAAC;EACFG,mBAAmB,EAAEZ;AACvB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { AdkChatTransport } from "../../core/runtime";
2
+ export interface XGroupOpenApiTransportOptions {
3
+ url: string;
4
+ appNo: string;
5
+ token?: string | (() => string | undefined);
6
+ pageSize?: number;
7
+ onAuthError?: (response: Response) => void;
8
+ }
9
+ /**
10
+ * 众安信科 openApi 默认 transport。
11
+ *
12
+ * 这层只负责把 SDK 标准 transport 接口映射到当前网关接口;
13
+ * 其它业务项目不要复制 useADKChat,只需要实现自己的 transport 即可。
14
+ */
15
+ export declare const createXGroupOpenApiTransport: ({ url, appNo, token, pageSize, onAuthError, }: XGroupOpenApiTransportOptions) => AdkChatTransport;