@ai-group/chat-sdk 3.6.11 → 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 (149) hide show
  1. package/dist/cjs/components/XAdkChatbot/index.js +27 -15
  2. package/dist/cjs/components/XAdkChatbot/index.js.map +2 -2
  3. package/dist/cjs/components/XAdkProvider/compound/Sender.d.ts +2 -2
  4. package/dist/cjs/components/XAdkProvider/compound/Sender.js +20 -17
  5. package/dist/cjs/components/XAdkProvider/compound/Sender.js.map +2 -2
  6. package/dist/cjs/components/XAdkProvider/compound/Sidebar.js +6 -2
  7. package/dist/cjs/components/XAdkProvider/compound/Sidebar.js.map +2 -2
  8. package/dist/cjs/components/XAdkProvider/context/ChatSenderStateContext.d.ts +6 -2
  9. package/dist/cjs/components/XAdkProvider/context/ChatSenderStateContext.js.map +2 -2
  10. package/dist/cjs/components/XAdkProvider/index.js +8 -5
  11. package/dist/cjs/components/XAdkProvider/index.js.map +2 -2
  12. package/dist/cjs/components/XAdkSender/index.js +502 -496
  13. package/dist/cjs/components/XAdkSender/index.js.map +2 -2
  14. package/dist/cjs/components/XAdkSender/styles.js +0 -13
  15. package/dist/cjs/components/XAdkSender/styles.js.map +2 -2
  16. package/dist/cjs/core/index.d.ts +2 -0
  17. package/dist/cjs/core/index.js +26 -0
  18. package/dist/cjs/core/index.js.map +7 -0
  19. package/dist/cjs/core/protocol/index.d.ts +3 -0
  20. package/dist/cjs/core/protocol/index.js +28 -0
  21. package/dist/cjs/core/protocol/index.js.map +7 -0
  22. package/dist/cjs/core/protocol/messages.d.ts +55 -0
  23. package/dist/cjs/core/protocol/messages.js +307 -0
  24. package/dist/cjs/core/protocol/messages.js.map +7 -0
  25. package/dist/cjs/core/protocol/parts.d.ts +24 -0
  26. package/dist/cjs/core/protocol/parts.js +106 -0
  27. package/dist/cjs/core/protocol/parts.js.map +7 -0
  28. package/dist/cjs/core/protocol/types.d.ts +57 -0
  29. package/dist/cjs/core/protocol/types.js +18 -0
  30. package/dist/cjs/core/protocol/types.js.map +7 -0
  31. package/dist/cjs/core/runtime/createAdkConversationController.d.ts +8 -0
  32. package/dist/cjs/core/runtime/createAdkConversationController.js +424 -0
  33. package/dist/cjs/core/runtime/createAdkConversationController.js.map +7 -0
  34. package/dist/cjs/core/runtime/index.d.ts +2 -0
  35. package/dist/cjs/core/runtime/index.js +26 -0
  36. package/dist/cjs/core/runtime/index.js.map +7 -0
  37. package/dist/cjs/core/runtime/types.d.ts +130 -0
  38. package/dist/cjs/core/runtime/types.js +18 -0
  39. package/dist/cjs/core/runtime/types.js.map +7 -0
  40. package/dist/{esm/utils/umdEntry.d.ts → cjs/entries/umd.d.ts} +7 -0
  41. package/dist/cjs/{utils/umdEntry.js → entries/umd.js} +19 -9
  42. package/dist/cjs/entries/umd.js.map +7 -0
  43. package/dist/cjs/hooks/useADKChat.js +1 -0
  44. package/dist/cjs/hooks/useADKChat.js.map +2 -2
  45. package/dist/cjs/index.d.ts +6 -1
  46. package/dist/cjs/index.js +19 -11
  47. package/dist/cjs/index.js.map +3 -3
  48. package/dist/cjs/presets/xgroup/index.d.ts +4 -0
  49. package/dist/cjs/presets/xgroup/index.js +30 -0
  50. package/dist/cjs/presets/xgroup/index.js.map +7 -0
  51. package/dist/cjs/presets/xgroup/preset.d.ts +15 -0
  52. package/dist/cjs/presets/xgroup/preset.js +69 -0
  53. package/dist/cjs/presets/xgroup/preset.js.map +7 -0
  54. package/dist/cjs/presets/xgroup/strategies.d.ts +8 -0
  55. package/dist/cjs/presets/xgroup/strategies.js +53 -0
  56. package/dist/cjs/presets/xgroup/strategies.js.map +7 -0
  57. package/dist/cjs/presets/xgroup/transport.d.ts +15 -0
  58. package/dist/cjs/presets/xgroup/transport.js +183 -0
  59. package/dist/cjs/presets/xgroup/transport.js.map +7 -0
  60. package/dist/cjs/presets/xgroup/upload.d.ts +8 -0
  61. package/dist/cjs/presets/xgroup/upload.js +65 -0
  62. package/dist/cjs/presets/xgroup/upload.js.map +7 -0
  63. package/dist/cjs/react/index.d.ts +6 -0
  64. package/dist/cjs/react/index.js +53 -0
  65. package/dist/cjs/react/index.js.map +7 -0
  66. package/dist/cjs/react/useAdkConversation.d.ts +27 -0
  67. package/dist/cjs/react/useAdkConversation.js +69 -0
  68. package/dist/cjs/react/useAdkConversation.js.map +7 -0
  69. package/dist/cjs/types/XAdkSender.d.ts +0 -2
  70. package/dist/cjs/types/XAdkSender.js.map +1 -1
  71. package/dist/esm/components/XAdkChatbot/index.js +1 -1
  72. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  73. package/dist/esm/components/XAdkProvider/compound/Sender.d.ts +2 -2
  74. package/dist/esm/components/XAdkProvider/compound/Sender.js +7 -4
  75. package/dist/esm/components/XAdkProvider/compound/Sender.js.map +1 -1
  76. package/dist/esm/components/XAdkProvider/compound/Sidebar.js +7 -2
  77. package/dist/esm/components/XAdkProvider/compound/Sidebar.js.map +1 -1
  78. package/dist/esm/components/XAdkProvider/context/ChatSenderStateContext.d.ts +6 -2
  79. package/dist/esm/components/XAdkProvider/context/ChatSenderStateContext.js.map +1 -1
  80. package/dist/esm/components/XAdkProvider/index.js +13 -4
  81. package/dist/esm/components/XAdkProvider/index.js.map +1 -1
  82. package/dist/esm/components/XAdkSender/index.js +2 -5
  83. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  84. package/dist/esm/components/XAdkSender/styles.js +1 -1
  85. package/dist/esm/components/XAdkSender/styles.js.map +1 -1
  86. package/dist/esm/core/index.d.ts +2 -0
  87. package/dist/esm/core/index.js +3 -0
  88. package/dist/esm/core/index.js.map +1 -0
  89. package/dist/esm/core/protocol/index.d.ts +3 -0
  90. package/dist/esm/core/protocol/index.js +4 -0
  91. package/dist/esm/core/protocol/index.js.map +1 -0
  92. package/dist/esm/core/protocol/messages.d.ts +55 -0
  93. package/dist/esm/core/protocol/messages.js +315 -0
  94. package/dist/esm/core/protocol/messages.js.map +1 -0
  95. package/dist/esm/core/protocol/parts.d.ts +24 -0
  96. package/dist/esm/core/protocol/parts.js +100 -0
  97. package/dist/esm/core/protocol/parts.js.map +1 -0
  98. package/dist/esm/core/protocol/types.d.ts +57 -0
  99. package/dist/esm/core/protocol/types.js +2 -0
  100. package/dist/esm/core/protocol/types.js.map +1 -0
  101. package/dist/esm/core/runtime/createAdkConversationController.d.ts +8 -0
  102. package/dist/esm/core/runtime/createAdkConversationController.js +742 -0
  103. package/dist/esm/core/runtime/createAdkConversationController.js.map +1 -0
  104. package/dist/esm/core/runtime/index.d.ts +2 -0
  105. package/dist/esm/core/runtime/index.js +3 -0
  106. package/dist/esm/core/runtime/index.js.map +1 -0
  107. package/dist/esm/core/runtime/types.d.ts +130 -0
  108. package/dist/esm/core/runtime/types.js +2 -0
  109. package/dist/esm/core/runtime/types.js.map +1 -0
  110. package/dist/{cjs/utils/umdEntry.d.ts → esm/entries/umd.d.ts} +7 -0
  111. package/dist/esm/{utils/umdEntry.js → entries/umd.js} +10 -1
  112. package/dist/esm/entries/umd.js.map +1 -0
  113. package/dist/esm/hooks/useADKChat.js +2 -1
  114. package/dist/esm/hooks/useADKChat.js.map +1 -1
  115. package/dist/esm/index.d.ts +6 -1
  116. package/dist/esm/index.js +6 -1
  117. package/dist/esm/index.js.map +1 -1
  118. package/dist/esm/presets/xgroup/index.d.ts +4 -0
  119. package/dist/esm/presets/xgroup/index.js +5 -0
  120. package/dist/esm/presets/xgroup/index.js.map +1 -0
  121. package/dist/esm/presets/xgroup/preset.d.ts +15 -0
  122. package/dist/esm/presets/xgroup/preset.js +44 -0
  123. package/dist/esm/presets/xgroup/preset.js.map +1 -0
  124. package/dist/esm/presets/xgroup/strategies.d.ts +8 -0
  125. package/dist/esm/presets/xgroup/strategies.js +30 -0
  126. package/dist/esm/presets/xgroup/strategies.js.map +1 -0
  127. package/dist/esm/presets/xgroup/transport.d.ts +15 -0
  128. package/dist/esm/presets/xgroup/transport.js +322 -0
  129. package/dist/esm/presets/xgroup/transport.js.map +1 -0
  130. package/dist/esm/presets/xgroup/upload.d.ts +8 -0
  131. package/dist/esm/presets/{xGroupAdk.js → xgroup/upload.js} +9 -63
  132. package/dist/esm/presets/xgroup/upload.js.map +1 -0
  133. package/dist/esm/react/index.d.ts +6 -0
  134. package/dist/esm/react/index.js +5 -0
  135. package/dist/esm/react/index.js.map +1 -0
  136. package/dist/esm/react/useAdkConversation.d.ts +27 -0
  137. package/dist/esm/react/useAdkConversation.js +53 -0
  138. package/dist/esm/react/useAdkConversation.js.map +1 -0
  139. package/dist/esm/types/XAdkSender.d.ts +0 -2
  140. package/dist/esm/types/XAdkSender.js.map +1 -1
  141. package/dist/umd/chat-sdk.min.js +1 -1
  142. package/package.json +36 -2
  143. package/dist/cjs/presets/xGroupAdk.d.ts +0 -20
  144. package/dist/cjs/presets/xGroupAdk.js +0 -130
  145. package/dist/cjs/presets/xGroupAdk.js.map +0 -7
  146. package/dist/cjs/utils/umdEntry.js.map +0 -7
  147. package/dist/esm/presets/xGroupAdk.d.ts +0 -20
  148. package/dist/esm/presets/xGroupAdk.js.map +0 -1
  149. package/dist/esm/utils/umdEntry.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createXGroupUploadRequest","_ref","url","token","appNo","undefined","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref2","file","onProgress","onSuccess","onError","_result$data","formData","response","result","uploadedFile","wrap","_callee$","_context","prev","next","percent","FormData","append","fetch","concat","method","body","headers","Accept","Authorization","sent","json","catch","ok","Error","message","status","Array","isArray","data","t0","stop","_x","apply","arguments"],"sources":["../../../../src/presets/xgroup/upload.ts"],"sourcesContent":["import type { UploadRequestFn } from \"@/types\";\n\nexport interface XGroupUploadRequestOptions {\n url: string;\n token?: string;\n appNo?: string;\n}\n\n/** 众安信科预设上传:upload=true 且具备 appNo/token 时可自动接入默认附件接口。 */\nexport const createXGroupUploadRequest = ({\n url,\n token,\n appNo,\n}: XGroupUploadRequestOptions): UploadRequestFn | undefined => {\n if (!appNo || !token) return undefined;\n\n return async ({ file, onProgress, onSuccess, onError }) => {\n try {\n onProgress?.({ percent: 0 });\n\n const formData = new FormData();\n formData.append(\"file\", file);\n\n const response = await fetch(\n `${url}/api/gateway-web/openApi/v1/aizt/app/${appNo}/uploadMultiFile`,\n {\n method: \"POST\",\n body: formData,\n headers: {\n Accept: \"application/json, text/plain, */*\",\n Authorization: `Bearer ${token}`,\n \"Cache-Control\": \"no-cache\",\n },\n },\n );\n\n const result = await response.json().catch(() => ({}));\n\n if (!response.ok) {\n throw new Error(result?.message || `文件上传失败 (${response.status})`);\n }\n\n const uploadedFile = Array.isArray(result?.data)\n ? result.data[0]\n : (result?.data ?? result);\n\n onProgress?.({ percent: 100 });\n onSuccess?.(uploadedFile);\n } catch (error) {\n onError?.(error instanceof Error ? error : new Error(\"文件上传失败\"));\n }\n };\n};\n"],"mappings":";;AAQA;AACA,OAAO,IAAMA,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAAC,IAAA,EAIyB;EAAA,IAH7DC,GAAG,GAAAD,IAAA,CAAHC,GAAG;IACHC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACLC,KAAK,GAAAH,IAAA,CAALG,KAAK;EAEL,IAAI,CAACA,KAAK,IAAI,CAACD,KAAK,EAAE,OAAOE,SAAS;EAEtC;IAAA,IAAAC,KAAA,GAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAO,SAAAC,QAAAC,KAAA;MAAA,IAAAC,IAAA,EAAAC,UAAA,EAAAC,SAAA,EAAAC,OAAA,EAAAC,YAAA,EAAAC,QAAA,EAAAC,QAAA,EAAAC,MAAA,EAAAC,YAAA;MAAA,OAAAZ,mBAAA,GAAAa,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAASb,IAAI,GAAAD,KAAA,CAAJC,IAAI,EAAEC,UAAU,GAAAF,KAAA,CAAVE,UAAU,EAAEC,SAAS,GAAAH,KAAA,CAATG,SAAS,EAAEC,OAAO,GAAAJ,KAAA,CAAPI,OAAO;YAAAQ,QAAA,CAAAC,IAAA;YAEhDX,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAG;cAAEa,OAAO,EAAE;YAAE,CAAC,CAAC;YAEtBT,QAAQ,GAAG,IAAIU,QAAQ,CAAC,CAAC;YAC/BV,QAAQ,CAACW,MAAM,CAAC,MAAM,EAAEhB,IAAI,CAAC;YAACW,QAAA,CAAAE,IAAA;YAAA,OAEPI,KAAK,IAAAC,MAAA,CACvB5B,GAAG,2CAAA4B,MAAA,CAAwC1B,KAAK,uBACnD;cACE2B,MAAM,EAAE,MAAM;cACdC,IAAI,EAAEf,QAAQ;cACdgB,OAAO,EAAE;gBACPC,MAAM,EAAE,mCAAmC;gBAC3CC,aAAa,YAAAL,MAAA,CAAY3B,KAAK,CAAE;gBAChC,eAAe,EAAE;cACnB;YACF,CACF,CAAC;UAAA;YAXKe,QAAQ,GAAAK,QAAA,CAAAa,IAAA;YAAAb,QAAA,CAAAE,IAAA;YAAA,OAaOP,QAAQ,CAACmB,IAAI,CAAC,CAAC,CAACC,KAAK,CAAC;cAAA,OAAO,CAAC,CAAC;YAAA,CAAC,CAAC;UAAA;YAAhDnB,MAAM,GAAAI,QAAA,CAAAa,IAAA;YAAA,IAEPlB,QAAQ,CAACqB,EAAE;cAAAhB,QAAA,CAAAE,IAAA;cAAA;YAAA;YAAA,MACR,IAAIe,KAAK,CAAC,CAAArB,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEsB,OAAO,8CAAAX,MAAA,CAAeZ,QAAQ,CAACwB,MAAM,MAAG,CAAC;UAAA;YAG7DtB,YAAY,GAAGuB,KAAK,CAACC,OAAO,CAACzB,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE0B,IAAI,CAAC,GAC5C1B,MAAM,CAAC0B,IAAI,CAAC,CAAC,CAAC,IAAA7B,YAAA,GACbG,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE0B,IAAI,cAAA7B,YAAA,cAAAA,YAAA,GAAIG,MAAO;YAE5BN,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAG;cAAEa,OAAO,EAAE;YAAI,CAAC,CAAC;YAC9BZ,SAAS,aAATA,SAAS,eAATA,SAAS,CAAGM,YAAY,CAAC;YAACG,QAAA,CAAAE,IAAA;YAAA;UAAA;YAAAF,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAuB,EAAA,GAAAvB,QAAA;YAE1BR,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAGQ,QAAA,CAAAuB,EAAA,YAAiBN,KAAK,GAAAjB,QAAA,CAAAuB,EAAA,GAAW,IAAIN,KAAK,CAAC,QAAQ,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAjB,QAAA,CAAAwB,IAAA;QAAA;MAAA,GAAArC,OAAA;IAAA,CAEnE;IAAA,iBAAAsC,EAAA;MAAA,OAAA1C,KAAA,CAAA2C,KAAA,OAAAC,SAAA;IAAA;EAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { default as useAdkConversation } from "./useAdkConversation";
2
+ export type { UseAdkConversationResult } from "./useAdkConversation";
3
+ export { default as useADKChat } from "../hooks/useADKChat";
4
+ export { default as useEventStreamRequest } from "../hooks/useEventStreamRequest";
5
+ export { useChatActions, useChatState, useSession, } from "../components/XAdkProvider/context";
6
+ export type { ChatHookFactory, ChatHookResult } from "../types/ChatHook";
@@ -0,0 +1,5 @@
1
+ export { default as useAdkConversation } from "./useAdkConversation";
2
+ export { default as useADKChat } from "../hooks/useADKChat";
3
+ export { default as useEventStreamRequest } from "../hooks/useEventStreamRequest";
4
+ export { useChatActions, useChatState, useSession } from "../components/XAdkProvider/context";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","useAdkConversation","useADKChat","useEventStreamRequest","useChatActions","useChatState","useSession"],"sources":["../../../src/react/index.ts"],"sourcesContent":["export { default as useAdkConversation } from \"./useAdkConversation\";\nexport type { UseAdkConversationResult } from \"./useAdkConversation\";\nexport { default as useADKChat } from \"@/hooks/useADKChat\";\nexport { default as useEventStreamRequest } from \"@/hooks/useEventStreamRequest\";\nexport {\n useChatActions,\n useChatState,\n useSession,\n} from \"@/components/XAdkProvider/context\";\nexport type { ChatHookFactory, ChatHookResult } from \"@/types/ChatHook\";\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,kBAAkB;AAEtC,SAASD,OAAO,IAAIE,UAAU;AAC9B,SAASF,OAAO,IAAIG,qBAAqB;AACzC,SACEC,cAAc,EACdC,YAAY,EACZC,UAAU"}
@@ -0,0 +1,27 @@
1
+ import { type AdkConversationController, type AdkConversationOptions, type AdkConversationState } from "../core/runtime";
2
+ export interface UseAdkConversationResult extends AdkConversationState {
3
+ controller: AdkConversationController;
4
+ startChat: AdkConversationController["startChat"];
5
+ stopChat: AdkConversationController["stopChat"];
6
+ reChat: AdkConversationController["reChat"];
7
+ clearChat: AdkConversationController["clearChat"];
8
+ suggestChat: AdkConversationController["suggestChat"];
9
+ confirmFnCall: AdkConversationController["confirmFnCall"];
10
+ switchSession: AdkConversationController["switchSession"];
11
+ setCurrentSession: AdkConversationController["setCurrentSession"];
12
+ replaceSessionEvents: AdkConversationController["replaceSessionEvents"];
13
+ syncSessionEvents: AdkConversationController["syncSessionEvents"];
14
+ deleteSession: AdkConversationController["deleteSession"];
15
+ updateSession: AdkConversationController["updateSession"];
16
+ likeMessage: AdkConversationController["likeMessage"];
17
+ setMessages: AdkConversationController["setMessages"];
18
+ setStateDelta: AdkConversationController["setStateDelta"];
19
+ }
20
+ /**
21
+ * React 绑定层:把无框架的 AdkConversationController 包装成 Hook。
22
+ *
23
+ * 注意:controller 只在首次渲染创建一次;如果业务需要切换 transport / requestBuilder,
24
+ * 建议在外层通过 key 重新挂载组件,避免对话进行中替换数据流内核。
25
+ */
26
+ export declare const useAdkConversation: (options: AdkConversationOptions) => UseAdkConversationResult;
27
+ export default useAdkConversation;
@@ -0,0 +1,53 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ import { useEffect, useRef, useState } from "react";
4
+ import { createAdkConversationController } from "../core/runtime";
5
+ /**
6
+ * React 绑定层:把无框架的 AdkConversationController 包装成 Hook。
7
+ *
8
+ * 注意:controller 只在首次渲染创建一次;如果业务需要切换 transport / requestBuilder,
9
+ * 建议在外层通过 key 重新挂载组件,避免对话进行中替换数据流内核。
10
+ */
11
+ export var useAdkConversation = function useAdkConversation(options) {
12
+ var controllerRef = useRef(null);
13
+ if (!controllerRef.current) {
14
+ controllerRef.current = createAdkConversationController(options);
15
+ }
16
+ var controller = controllerRef.current;
17
+ var _useState = useState(function () {
18
+ return controller.getSnapshot();
19
+ }),
20
+ _useState2 = _slicedToArray(_useState, 2),
21
+ snapshot = _useState2[0],
22
+ setSnapshot = _useState2[1];
23
+ useEffect(function () {
24
+ // 订阅 controller 状态变化,并在组件卸载时销毁流式连接和轮询。
25
+ setSnapshot(controller.getSnapshot());
26
+ var unsubscribe = controller.subscribe(setSnapshot);
27
+ void controller.init();
28
+ return function () {
29
+ unsubscribe();
30
+ controller.destroy();
31
+ };
32
+ }, [controller]);
33
+ return _objectSpread(_objectSpread({}, snapshot), {}, {
34
+ controller: controller,
35
+ startChat: controller.startChat,
36
+ stopChat: controller.stopChat,
37
+ reChat: controller.reChat,
38
+ clearChat: controller.clearChat,
39
+ suggestChat: controller.suggestChat,
40
+ confirmFnCall: controller.confirmFnCall,
41
+ switchSession: controller.switchSession,
42
+ setCurrentSession: controller.setCurrentSession,
43
+ replaceSessionEvents: controller.replaceSessionEvents,
44
+ syncSessionEvents: controller.syncSessionEvents,
45
+ deleteSession: controller.deleteSession,
46
+ updateSession: controller.updateSession,
47
+ likeMessage: controller.likeMessage,
48
+ setMessages: controller.setMessages,
49
+ setStateDelta: controller.setStateDelta
50
+ });
51
+ };
52
+ export default useAdkConversation;
53
+ //# sourceMappingURL=useAdkConversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","useState","createAdkConversationController","useAdkConversation","options","controllerRef","current","controller","_useState","getSnapshot","_useState2","_slicedToArray","snapshot","setSnapshot","unsubscribe","subscribe","init","destroy","_objectSpread","startChat","stopChat","reChat","clearChat","suggestChat","confirmFnCall","switchSession","setCurrentSession","replaceSessionEvents","syncSessionEvents","deleteSession","updateSession","likeMessage","setMessages","setStateDelta"],"sources":["../../../src/react/useAdkConversation.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport {\n createAdkConversationController,\n type AdkConversationController,\n type AdkConversationOptions,\n type AdkConversationState,\n} from \"@/core/runtime\";\n\nexport interface UseAdkConversationResult extends AdkConversationState {\n controller: AdkConversationController;\n startChat: AdkConversationController[\"startChat\"];\n stopChat: AdkConversationController[\"stopChat\"];\n reChat: AdkConversationController[\"reChat\"];\n clearChat: AdkConversationController[\"clearChat\"];\n suggestChat: AdkConversationController[\"suggestChat\"];\n confirmFnCall: AdkConversationController[\"confirmFnCall\"];\n switchSession: AdkConversationController[\"switchSession\"];\n setCurrentSession: AdkConversationController[\"setCurrentSession\"];\n replaceSessionEvents: AdkConversationController[\"replaceSessionEvents\"];\n syncSessionEvents: AdkConversationController[\"syncSessionEvents\"];\n deleteSession: AdkConversationController[\"deleteSession\"];\n updateSession: AdkConversationController[\"updateSession\"];\n likeMessage: AdkConversationController[\"likeMessage\"];\n setMessages: AdkConversationController[\"setMessages\"];\n setStateDelta: AdkConversationController[\"setStateDelta\"];\n}\n\n/**\n * React 绑定层:把无框架的 AdkConversationController 包装成 Hook。\n *\n * 注意:controller 只在首次渲染创建一次;如果业务需要切换 transport / requestBuilder,\n * 建议在外层通过 key 重新挂载组件,避免对话进行中替换数据流内核。\n */\nexport const useAdkConversation = (\n options: AdkConversationOptions,\n): UseAdkConversationResult => {\n const controllerRef = useRef<AdkConversationController | null>(null);\n if (!controllerRef.current) {\n controllerRef.current = createAdkConversationController(options);\n }\n const controller = controllerRef.current;\n const [snapshot, setSnapshot] = useState(() => controller.getSnapshot());\n\n useEffect(() => {\n // 订阅 controller 状态变化,并在组件卸载时销毁流式连接和轮询。\n setSnapshot(controller.getSnapshot());\n const unsubscribe = controller.subscribe(setSnapshot);\n void controller.init();\n return () => {\n unsubscribe();\n controller.destroy();\n };\n }, [controller]);\n\n return {\n ...snapshot,\n controller,\n startChat: controller.startChat,\n stopChat: controller.stopChat,\n reChat: controller.reChat,\n clearChat: controller.clearChat,\n suggestChat: controller.suggestChat,\n confirmFnCall: controller.confirmFnCall,\n switchSession: controller.switchSession,\n setCurrentSession: controller.setCurrentSession,\n replaceSessionEvents: controller.replaceSessionEvents,\n syncSessionEvents: controller.syncSessionEvents,\n deleteSession: controller.deleteSession,\n updateSession: controller.updateSession,\n likeMessage: controller.likeMessage,\n setMessages: controller.setMessages,\n setStateDelta: controller.setStateDelta,\n };\n};\n\nexport default useAdkConversation;\n"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACnD,SACEC,+BAA+B;AAyBjC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAC7BC,OAA+B,EACF;EAC7B,IAAMC,aAAa,GAAGL,MAAM,CAAmC,IAAI,CAAC;EACpE,IAAI,CAACK,aAAa,CAACC,OAAO,EAAE;IAC1BD,aAAa,CAACC,OAAO,GAAGJ,+BAA+B,CAACE,OAAO,CAAC;EAClE;EACA,IAAMG,UAAU,GAAGF,aAAa,CAACC,OAAO;EACxC,IAAAE,SAAA,GAAgCP,QAAQ,CAAC;MAAA,OAAMM,UAAU,CAACE,WAAW,CAAC,CAAC;IAAA,EAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA;IAAjEI,QAAQ,GAAAF,UAAA;IAAEG,WAAW,GAAAH,UAAA;EAE5BX,SAAS,CAAC,YAAM;IACd;IACAc,WAAW,CAACN,UAAU,CAACE,WAAW,CAAC,CAAC,CAAC;IACrC,IAAMK,WAAW,GAAGP,UAAU,CAACQ,SAAS,CAACF,WAAW,CAAC;IACrD,KAAKN,UAAU,CAACS,IAAI,CAAC,CAAC;IACtB,OAAO,YAAM;MACXF,WAAW,CAAC,CAAC;MACbP,UAAU,CAACU,OAAO,CAAC,CAAC;IACtB,CAAC;EACH,CAAC,EAAE,CAACV,UAAU,CAAC,CAAC;EAEhB,OAAAW,aAAA,CAAAA,aAAA,KACKN,QAAQ;IACXL,UAAU,EAAVA,UAAU;IACVY,SAAS,EAAEZ,UAAU,CAACY,SAAS;IAC/BC,QAAQ,EAAEb,UAAU,CAACa,QAAQ;IAC7BC,MAAM,EAAEd,UAAU,CAACc,MAAM;IACzBC,SAAS,EAAEf,UAAU,CAACe,SAAS;IAC/BC,WAAW,EAAEhB,UAAU,CAACgB,WAAW;IACnCC,aAAa,EAAEjB,UAAU,CAACiB,aAAa;IACvCC,aAAa,EAAElB,UAAU,CAACkB,aAAa;IACvCC,iBAAiB,EAAEnB,UAAU,CAACmB,iBAAiB;IAC/CC,oBAAoB,EAAEpB,UAAU,CAACoB,oBAAoB;IACrDC,iBAAiB,EAAErB,UAAU,CAACqB,iBAAiB;IAC/CC,aAAa,EAAEtB,UAAU,CAACsB,aAAa;IACvCC,aAAa,EAAEvB,UAAU,CAACuB,aAAa;IACvCC,WAAW,EAAExB,UAAU,CAACwB,WAAW;IACnCC,WAAW,EAAEzB,UAAU,CAACyB,WAAW;IACnCC,aAAa,EAAE1B,UAAU,CAAC0B;EAAa;AAE3C,CAAC;AAED,eAAe9B,kBAAkB"}
@@ -74,8 +74,6 @@ export interface SenderUIProps {
74
74
  allowUpload?: boolean;
75
75
  /** 是否启用 Sender 自身的拖拽上传,设为 false 时由外层(如 DefaultLayout)管理拖拽 */
76
76
  draggable?: boolean;
77
- /** 是否显示输入框顶部渐变遮罩(通过 ::before 伪元素实现),默认开启 */
78
- showMask?: boolean;
79
77
  loading?: boolean;
80
78
  disabled?: boolean;
81
79
  /** 受控:输入框的值 */
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/types/XAdkSender.ts"],"sourcesContent":["// types/XAdkSender.ts\nimport React from \"react\";\n\nexport interface UploadFileResult {\n fileName?: string;\n fileId?: string | number;\n tempUrl?: string;\n url?: string;\n fileUrl?: string;\n fileType?: string;\n fileSize?: number;\n mimeType?: string;\n [key: string]: any;\n}\n\nexport interface UploadSuccessResponse {\n data?: UploadFileResult | UploadFileResult[];\n [key: string]: any;\n}\n\ninterface uploadRequestProps {\n (options: {\n file: File;\n onProgress?: (e: { percent: number }) => void;\n onSuccess?: (\n response: UploadFileResult | UploadFileResult[] | UploadSuccessResponse,\n ) => void;\n onError?: (error: Error) => void;\n }): Promise<void> | void;\n}\n\nexport type UploadRequestFn = uploadRequestProps;\n\nexport interface ServerFile {\n fileName: string;\n fileId: string | number;\n tempUrl: string;\n type: string;\n size?: number;\n mimeType: string;\n raw?: UploadFileResult;\n}\n\nexport interface LocalFile {\n id: string;\n uid: string;\n name: string;\n file: File;\n size: number;\n type: string;\n progress: number;\n status: \"pending\" | \"uploading\" | \"success\" | \"error\";\n // 服务器返回字段\n fileId?: string | number;\n tempUrl?: string;\n response?: any;\n errorMessage?: string; // 上传错误信息\n}\n\nexport type FileValidator = (\n file: File,\n context: { files: LocalFile[] },\n) => string | null;\n\nexport interface ActionsComponents {\n SendButton: React.ComponentType<any>;\n UploadButton: React.ComponentType<any>;\n ClearButton: React.ComponentType<any>;\n}\n\nexport type SlotRenderFunction = (\n oriNode: React.ReactNode,\n info: { components: ActionsComponents },\n) => React.ReactNode | false;\n\n// 上传相关\nexport interface UploaderCoreProps {\n uploadRequest?: uploadRequestProps;\n\n maxFileSize?: number;\n allowedFileTypes?: string[];\n maxFiles?: number;\n\n validators?: FileValidator[];\n\n // 数据层回调\n onFilesChange?: (files: LocalFile[]) => void;\n onUploadSuccess?: (file: LocalFile) => void;\n onUploadError?: (file: LocalFile, error: Error) => void;\n}\n\n// UI 相关\nexport interface SenderUIProps {\n clearBtnShow?: boolean;\n allowUpload?: boolean;\n /** 是否启用 Sender 自身的拖拽上传,设为 false 时由外层(如 DefaultLayout)管理拖拽 */\n draggable?: boolean;\n /** 是否显示输入框顶部渐变遮罩(通过 ::before 伪元素实现),默认开启 */\n showMask?: boolean;\n loading?: boolean;\n disabled?: boolean; // 只读状态\n /** 受控:输入框的值 */\n value?: string;\n /** 非受控:输入框默认值 */\n defaultValue?: string;\n onClear?: () => void;\n onChange?: (value: string) => void;\n onSubmit?: (data: { text: string; files: ServerFile[] }) => void;\n onStop?: () => void;\n\n /** 自定义发送按钮渲染 */\n sendButtonRender?: (info: {\n loading: boolean;\n disabled: boolean;\n /** 当前是否可以发送(文本非空或有已上传的文件) */\n canSend: boolean;\n onSend: () => void;\n onStop?: () => void;\n }) => React.ReactNode;\n\n // UI插槽功能\n /** 后缀内容,默认展示操作按钮,设为 false 时不显示 */\n suffix?: React.ReactNode | false | SlotRenderFunction;\n /** 头部面板 */\n header?: React.ReactNode | false | SlotRenderFunction;\n /** 前缀内容 */\n prefix?: React.ReactNode | false | SlotRenderFunction;\n /** 底部内容 */\n footer?: React.ReactNode | false | SlotRenderFunction;\n}\n\nexport type XAdkSenderProps = SenderUIProps & UploaderCoreProps;\n\nexport interface XAdkSenderHandle {\n addFiles: (files: File[]) => void;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["../../../src/types/XAdkSender.ts"],"sourcesContent":["// types/XAdkSender.ts\nimport React from \"react\";\n\nexport interface UploadFileResult {\n fileName?: string;\n fileId?: string | number;\n tempUrl?: string;\n url?: string;\n fileUrl?: string;\n fileType?: string;\n fileSize?: number;\n mimeType?: string;\n [key: string]: any;\n}\n\nexport interface UploadSuccessResponse {\n data?: UploadFileResult | UploadFileResult[];\n [key: string]: any;\n}\n\ninterface uploadRequestProps {\n (options: {\n file: File;\n onProgress?: (e: { percent: number }) => void;\n onSuccess?: (\n response: UploadFileResult | UploadFileResult[] | UploadSuccessResponse,\n ) => void;\n onError?: (error: Error) => void;\n }): Promise<void> | void;\n}\n\nexport type UploadRequestFn = uploadRequestProps;\n\nexport interface ServerFile {\n fileName: string;\n fileId: string | number;\n tempUrl: string;\n type: string;\n size?: number;\n mimeType: string;\n raw?: UploadFileResult;\n}\n\nexport interface LocalFile {\n id: string;\n uid: string;\n name: string;\n file: File;\n size: number;\n type: string;\n progress: number;\n status: \"pending\" | \"uploading\" | \"success\" | \"error\";\n // 服务器返回字段\n fileId?: string | number;\n tempUrl?: string;\n response?: any;\n errorMessage?: string; // 上传错误信息\n}\n\nexport type FileValidator = (\n file: File,\n context: { files: LocalFile[] },\n) => string | null;\n\nexport interface ActionsComponents {\n SendButton: React.ComponentType<any>;\n UploadButton: React.ComponentType<any>;\n ClearButton: React.ComponentType<any>;\n}\n\nexport type SlotRenderFunction = (\n oriNode: React.ReactNode,\n info: { components: ActionsComponents },\n) => React.ReactNode | false;\n\n// 上传相关\nexport interface UploaderCoreProps {\n uploadRequest?: uploadRequestProps;\n\n maxFileSize?: number;\n allowedFileTypes?: string[];\n maxFiles?: number;\n\n validators?: FileValidator[];\n\n // 数据层回调\n onFilesChange?: (files: LocalFile[]) => void;\n onUploadSuccess?: (file: LocalFile) => void;\n onUploadError?: (file: LocalFile, error: Error) => void;\n}\n\n// UI 相关\nexport interface SenderUIProps {\n clearBtnShow?: boolean;\n allowUpload?: boolean;\n /** 是否启用 Sender 自身的拖拽上传,设为 false 时由外层(如 DefaultLayout)管理拖拽 */\n draggable?: boolean;\n loading?: boolean;\n disabled?: boolean; // 只读状态\n /** 受控:输入框的值 */\n value?: string;\n /** 非受控:输入框默认值 */\n defaultValue?: string;\n onClear?: () => void;\n onChange?: (value: string) => void;\n onSubmit?: (data: { text: string; files: ServerFile[] }) => void;\n onStop?: () => void;\n\n /** 自定义发送按钮渲染 */\n sendButtonRender?: (info: {\n loading: boolean;\n disabled: boolean;\n /** 当前是否可以发送(文本非空或有已上传的文件) */\n canSend: boolean;\n onSend: () => void;\n onStop?: () => void;\n }) => React.ReactNode;\n\n // UI插槽功能\n /** 后缀内容,默认展示操作按钮,设为 false 时不显示 */\n suffix?: React.ReactNode | false | SlotRenderFunction;\n /** 头部面板 */\n header?: React.ReactNode | false | SlotRenderFunction;\n /** 前缀内容 */\n prefix?: React.ReactNode | false | SlotRenderFunction;\n /** 底部内容 */\n footer?: React.ReactNode | false | SlotRenderFunction;\n}\n\nexport type XAdkSenderProps = SenderUIProps & UploaderCoreProps;\n\nexport interface XAdkSenderHandle {\n addFiles: (files: File[]) => void;\n}\n"],"mappings":""}