@ai-group/chat-sdk 2.1.14 → 3.0.1-alpha.3

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 (257) hide show
  1. package/dist/cjs/components/XAdkChatbot/XAdkChatbot.stories.d.ts +9 -2
  2. package/dist/cjs/components/XAdkChatbot/XAdkChatbot.stories.js +564 -10
  3. package/dist/cjs/components/XAdkChatbot/XAdkChatbot.stories.js.map +2 -2
  4. package/dist/cjs/components/XAdkChatbot/components/FileGallery/index.d.ts +12 -0
  5. package/dist/cjs/components/XAdkChatbot/components/FileGallery/index.js +92 -0
  6. package/dist/cjs/components/XAdkChatbot/components/FileGallery/index.js.map +7 -0
  7. package/dist/cjs/components/XAdkChatbot/components/FileGallery/styles.d.ts +44 -0
  8. package/dist/cjs/components/XAdkChatbot/components/FileGallery/styles.js +137 -0
  9. package/dist/cjs/components/XAdkChatbot/components/FileGallery/styles.js.map +7 -0
  10. package/dist/cjs/components/XAdkChatbot/index.d.ts +10 -0
  11. package/dist/cjs/components/XAdkChatbot/index.js +292 -123
  12. package/dist/cjs/components/XAdkChatbot/index.js.map +3 -3
  13. package/dist/cjs/components/XAdkChatbot/styles.d.ts +10 -0
  14. package/dist/cjs/components/XAdkChatbot/styles.js +67 -3
  15. package/dist/cjs/components/XAdkChatbot/styles.js.map +2 -2
  16. package/dist/cjs/components/XAdkProvider/XAdkProvider.stories.d.ts +10 -0
  17. package/dist/cjs/components/XAdkProvider/XAdkProvider.stories.js +394 -0
  18. package/dist/cjs/components/XAdkProvider/XAdkProvider.stories.js.map +7 -0
  19. package/dist/cjs/components/XAdkProvider/compound/Chatbot.d.ts +30 -0
  20. package/dist/cjs/components/XAdkProvider/compound/Chatbot.js +64 -0
  21. package/dist/cjs/components/XAdkProvider/compound/Chatbot.js.map +7 -0
  22. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.d.ts +26 -0
  23. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js +199 -0
  24. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js.map +7 -0
  25. package/dist/cjs/components/XAdkProvider/compound/DislikeFeedBack.d.ts +8 -0
  26. package/dist/cjs/components/XAdkProvider/compound/DislikeFeedBack.js +117 -0
  27. package/dist/cjs/components/XAdkProvider/compound/DislikeFeedBack.js.map +7 -0
  28. package/dist/cjs/components/XAdkProvider/compound/FeedbackTags.d.ts +7 -0
  29. package/dist/cjs/components/XAdkProvider/compound/FeedbackTags.js +64 -0
  30. package/dist/cjs/components/XAdkProvider/compound/FeedbackTags.js.map +7 -0
  31. package/dist/cjs/components/XAdkProvider/compound/Header.d.ts +25 -0
  32. package/dist/cjs/components/XAdkProvider/compound/Header.js +70 -0
  33. package/dist/cjs/components/XAdkProvider/compound/Header.js.map +7 -0
  34. package/dist/cjs/components/XAdkProvider/compound/Messages.d.ts +17 -0
  35. package/dist/cjs/components/XAdkProvider/compound/Messages.js +70 -0
  36. package/dist/cjs/components/XAdkProvider/compound/Messages.js.map +7 -0
  37. package/dist/cjs/components/XAdkProvider/compound/Sender.d.ts +27 -0
  38. package/dist/cjs/components/XAdkProvider/compound/Sender.js +55 -0
  39. package/dist/cjs/components/XAdkProvider/compound/Sender.js.map +7 -0
  40. package/dist/cjs/components/XAdkProvider/compound/Sidebar.d.ts +24 -0
  41. package/dist/cjs/components/XAdkProvider/compound/Sidebar.js +151 -0
  42. package/dist/cjs/components/XAdkProvider/compound/Sidebar.js.map +7 -0
  43. package/dist/cjs/components/XAdkProvider/compound/Welcome.d.ts +6 -0
  44. package/dist/cjs/components/XAdkProvider/compound/Welcome.js +60 -0
  45. package/dist/cjs/components/XAdkProvider/compound/Welcome.js.map +7 -0
  46. package/dist/cjs/components/XAdkProvider/compound/index.d.ts +17 -0
  47. package/dist/cjs/components/XAdkProvider/compound/index.js +55 -0
  48. package/dist/cjs/components/XAdkProvider/compound/index.js.map +7 -0
  49. package/dist/cjs/components/XAdkProvider/compound/styles.d.ts +36 -0
  50. package/dist/cjs/components/XAdkProvider/compound/styles.js +49 -0
  51. package/dist/cjs/components/XAdkProvider/compound/styles.js.map +7 -0
  52. package/dist/cjs/components/XAdkProvider/context/ChatActionContext.d.ts +30 -0
  53. package/dist/cjs/components/XAdkProvider/context/ChatActionContext.js +40 -0
  54. package/dist/cjs/components/XAdkProvider/context/ChatActionContext.js.map +7 -0
  55. package/dist/cjs/components/XAdkProvider/context/ChatStateContext.d.ts +35 -0
  56. package/dist/cjs/components/XAdkProvider/context/ChatStateContext.js +42 -0
  57. package/dist/cjs/components/XAdkProvider/context/ChatStateContext.js.map +7 -0
  58. package/dist/cjs/components/XAdkProvider/context/SessionContext.d.ts +29 -0
  59. package/dist/cjs/components/XAdkProvider/context/SessionContext.js +40 -0
  60. package/dist/cjs/components/XAdkProvider/context/SessionContext.js.map +7 -0
  61. package/dist/cjs/components/XAdkProvider/context/index.d.ts +7 -0
  62. package/dist/cjs/components/XAdkProvider/context/index.js +28 -0
  63. package/dist/cjs/components/XAdkProvider/context/index.js.map +7 -0
  64. package/dist/cjs/components/XAdkProvider/index.d.ts +55 -0
  65. package/dist/cjs/components/XAdkProvider/index.js +221 -0
  66. package/dist/cjs/components/XAdkProvider/index.js.map +7 -0
  67. package/dist/cjs/components/{XAdkWebProvider → XAdkProvider}/styles.js +2 -1
  68. package/dist/cjs/components/XAdkProvider/styles.js.map +7 -0
  69. package/dist/cjs/components/XAdkSender/FileGallery.d.ts +8 -0
  70. package/dist/cjs/components/XAdkSender/FileGallery.js +381 -0
  71. package/dist/cjs/components/XAdkSender/FileGallery.js.map +7 -0
  72. package/dist/cjs/components/XAdkSender/index.js +95 -81
  73. package/dist/cjs/components/XAdkSender/index.js.map +3 -3
  74. package/dist/cjs/components/XAdkSender/styles.d.ts +0 -9
  75. package/dist/cjs/components/XAdkSender/styles.js +21 -150
  76. package/dist/cjs/components/XAdkSender/styles.js.map +2 -2
  77. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.d.ts +2 -2
  78. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js +277 -131
  79. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js.map +2 -2
  80. package/dist/cjs/components/XAiConversations/index.js +1 -1
  81. package/dist/cjs/components/XAiConversations/index.js.map +2 -2
  82. package/dist/cjs/components/XAiConversations/styles.js +5 -0
  83. package/dist/cjs/components/XAiConversations/styles.js.map +2 -2
  84. package/dist/cjs/components/XAiProvider/XAiProvider.stories.d.ts +2 -2
  85. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +14 -2
  86. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +2 -2
  87. package/dist/cjs/components/XAiSender/XAiSender.stories.d.ts +2 -2
  88. package/dist/cjs/components/XAiSender/XAiSender.stories.js +1 -1
  89. package/dist/cjs/components/XAiSender/XAiSender.stories.js.map +1 -1
  90. package/dist/cjs/hooks/useADKChat.d.ts +7 -1
  91. package/dist/cjs/hooks/useADKChat.js +24 -8
  92. package/dist/cjs/hooks/useADKChat.js.map +2 -2
  93. package/dist/cjs/index.d.ts +25 -9
  94. package/dist/cjs/index.js +37 -0
  95. package/dist/cjs/index.js.map +3 -3
  96. package/dist/cjs/styles/common.js +1 -1
  97. package/dist/cjs/styles/common.js.map +2 -2
  98. package/dist/cjs/types/ChatHook.d.ts +81 -0
  99. package/dist/cjs/types/ChatHook.js +18 -0
  100. package/dist/cjs/types/ChatHook.js.map +7 -0
  101. package/dist/cjs/types/XAdkChatbot.d.ts +80 -15
  102. package/dist/cjs/types/XAdkChatbot.js.map +1 -1
  103. package/dist/cjs/types/XAdkProvider.d.ts +10 -27
  104. package/dist/cjs/types/XAdkProvider.js.map +2 -2
  105. package/dist/cjs/types/XAdkSender.d.ts +18 -0
  106. package/dist/cjs/types/XAdkSender.js.map +1 -1
  107. package/dist/cjs/types/XAiConversations.d.ts +4 -2
  108. package/dist/cjs/types/XAiConversations.js.map +1 -1
  109. package/dist/cjs/types/XAiThoughtChain.d.ts +1 -1
  110. package/dist/cjs/types/XAiThoughtChain.js.map +1 -1
  111. package/dist/cjs/utils/index.d.ts +1 -0
  112. package/dist/cjs/utils/index.js +4 -1
  113. package/dist/cjs/utils/index.js.map +2 -2
  114. package/dist/cjs/utils/parseAgentMessage.d.ts +81 -0
  115. package/dist/cjs/utils/parseAgentMessage.js +180 -0
  116. package/dist/cjs/utils/parseAgentMessage.js.map +7 -0
  117. package/dist/cjs/utils/umdEntry.d.ts +91 -0
  118. package/dist/cjs/utils/umdEntry.js +108 -6
  119. package/dist/cjs/utils/umdEntry.js.map +3 -3
  120. package/dist/esm/components/XAdkChatbot/XAdkChatbot.stories.d.ts +9 -2
  121. package/dist/esm/components/XAdkChatbot/XAdkChatbot.stories.js +485 -8
  122. package/dist/esm/components/XAdkChatbot/XAdkChatbot.stories.js.map +1 -1
  123. package/dist/esm/components/XAdkChatbot/components/FileGallery/index.d.ts +12 -0
  124. package/dist/esm/components/XAdkChatbot/components/FileGallery/index.js +104 -0
  125. package/dist/esm/components/XAdkChatbot/components/FileGallery/index.js.map +1 -0
  126. package/dist/esm/components/XAdkChatbot/components/FileGallery/styles.d.ts +44 -0
  127. package/dist/esm/components/XAdkChatbot/components/FileGallery/styles.js +20 -0
  128. package/dist/esm/components/XAdkChatbot/components/FileGallery/styles.js.map +1 -0
  129. package/dist/esm/components/XAdkChatbot/index.d.ts +10 -0
  130. package/dist/esm/components/XAdkChatbot/index.js +388 -172
  131. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  132. package/dist/esm/components/XAdkChatbot/styles.d.ts +10 -0
  133. package/dist/esm/components/XAdkChatbot/styles.js +23 -12
  134. package/dist/esm/components/XAdkChatbot/styles.js.map +1 -1
  135. package/dist/esm/components/XAdkProvider/XAdkProvider.stories.d.ts +10 -0
  136. package/dist/esm/components/XAdkProvider/XAdkProvider.stories.js +338 -0
  137. package/dist/esm/components/XAdkProvider/XAdkProvider.stories.js.map +1 -0
  138. package/dist/esm/components/XAdkProvider/compound/Chatbot.d.ts +30 -0
  139. package/dist/esm/components/XAdkProvider/compound/Chatbot.js +47 -0
  140. package/dist/esm/components/XAdkProvider/compound/Chatbot.js.map +1 -0
  141. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.d.ts +26 -0
  142. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js +140 -0
  143. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js.map +1 -0
  144. package/dist/esm/components/XAdkProvider/compound/DislikeFeedBack.d.ts +8 -0
  145. package/dist/esm/components/XAdkProvider/compound/DislikeFeedBack.js +122 -0
  146. package/dist/esm/components/XAdkProvider/compound/DislikeFeedBack.js.map +1 -0
  147. package/dist/esm/components/XAdkProvider/compound/FeedbackTags.d.ts +7 -0
  148. package/dist/esm/components/XAdkProvider/compound/FeedbackTags.js +34 -0
  149. package/dist/esm/components/XAdkProvider/compound/FeedbackTags.js.map +1 -0
  150. package/dist/esm/components/XAdkProvider/compound/Header.d.ts +25 -0
  151. package/dist/esm/components/XAdkProvider/compound/Header.js +79 -0
  152. package/dist/esm/components/XAdkProvider/compound/Header.js.map +1 -0
  153. package/dist/esm/components/XAdkProvider/compound/Messages.d.ts +17 -0
  154. package/dist/esm/components/XAdkProvider/compound/Messages.js +53 -0
  155. package/dist/esm/components/XAdkProvider/compound/Messages.js.map +1 -0
  156. package/dist/esm/components/XAdkProvider/compound/Sender.d.ts +27 -0
  157. package/dist/esm/components/XAdkProvider/compound/Sender.js +41 -0
  158. package/dist/esm/components/XAdkProvider/compound/Sender.js.map +1 -0
  159. package/dist/esm/components/XAdkProvider/compound/Sidebar.d.ts +24 -0
  160. package/dist/esm/components/XAdkProvider/compound/Sidebar.js +142 -0
  161. package/dist/esm/components/XAdkProvider/compound/Sidebar.js.map +1 -0
  162. package/dist/esm/components/XAdkProvider/compound/Welcome.d.ts +6 -0
  163. package/dist/esm/components/XAdkProvider/compound/Welcome.js +36 -0
  164. package/dist/esm/components/XAdkProvider/compound/Welcome.js.map +1 -0
  165. package/dist/esm/components/XAdkProvider/compound/index.d.ts +17 -0
  166. package/dist/esm/components/XAdkProvider/compound/index.js +13 -0
  167. package/dist/esm/components/XAdkProvider/compound/index.js.map +1 -0
  168. package/dist/esm/components/XAdkProvider/compound/styles.d.ts +36 -0
  169. package/dist/esm/components/XAdkProvider/compound/styles.js +10 -0
  170. package/dist/esm/components/XAdkProvider/compound/styles.js.map +1 -0
  171. package/dist/esm/components/XAdkProvider/context/ChatActionContext.d.ts +30 -0
  172. package/dist/esm/components/XAdkProvider/context/ChatActionContext.js +23 -0
  173. package/dist/esm/components/XAdkProvider/context/ChatActionContext.js.map +1 -0
  174. package/dist/esm/components/XAdkProvider/context/ChatStateContext.d.ts +35 -0
  175. package/dist/esm/components/XAdkProvider/context/ChatStateContext.js +23 -0
  176. package/dist/esm/components/XAdkProvider/context/ChatStateContext.js.map +1 -0
  177. package/dist/esm/components/XAdkProvider/context/SessionContext.d.ts +29 -0
  178. package/dist/esm/components/XAdkProvider/context/SessionContext.js +22 -0
  179. package/dist/esm/components/XAdkProvider/context/SessionContext.js.map +1 -0
  180. package/dist/esm/components/XAdkProvider/context/index.d.ts +7 -0
  181. package/dist/esm/components/XAdkProvider/context/index.js +9 -0
  182. package/dist/esm/components/XAdkProvider/context/index.js.map +1 -0
  183. package/dist/esm/components/XAdkProvider/index.d.ts +55 -0
  184. package/dist/esm/components/XAdkProvider/index.js +220 -0
  185. package/dist/esm/components/XAdkProvider/index.js.map +1 -0
  186. package/dist/esm/components/{XAdkWebProvider → XAdkProvider}/styles.js +2 -2
  187. package/dist/esm/components/XAdkProvider/styles.js.map +1 -0
  188. package/dist/esm/components/XAdkSender/FileGallery.d.ts +8 -0
  189. package/dist/esm/components/XAdkSender/FileGallery.js +236 -0
  190. package/dist/esm/components/XAdkSender/FileGallery.js.map +1 -0
  191. package/dist/esm/components/XAdkSender/index.js +92 -109
  192. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  193. package/dist/esm/components/XAdkSender/styles.d.ts +0 -9
  194. package/dist/esm/components/XAdkSender/styles.js +14 -31
  195. package/dist/esm/components/XAdkSender/styles.js.map +1 -1
  196. package/dist/esm/components/XAiChatbot/XAiChatbot.stories.d.ts +2 -2
  197. package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js +123 -123
  198. package/dist/esm/components/XAiChatbot/XAiChatbot.stories.js.map +1 -1
  199. package/dist/esm/components/XAiConversations/index.js +1 -1
  200. package/dist/esm/components/XAiConversations/index.js.map +1 -1
  201. package/dist/esm/components/XAiConversations/styles.js +2 -2
  202. package/dist/esm/components/XAiConversations/styles.js.map +1 -1
  203. package/dist/esm/components/XAiProvider/XAiProvider.stories.d.ts +2 -2
  204. package/dist/esm/components/XAiProvider/XAiProvider.stories.js +53 -53
  205. package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -1
  206. package/dist/esm/components/XAiSender/XAiSender.stories.d.ts +2 -2
  207. package/dist/esm/components/XAiSender/XAiSender.stories.js +9 -9
  208. package/dist/esm/components/XAiSender/XAiSender.stories.js.map +1 -1
  209. package/dist/esm/hooks/useADKChat.d.ts +7 -1
  210. package/dist/esm/hooks/useADKChat.js +35 -16
  211. package/dist/esm/hooks/useADKChat.js.map +1 -1
  212. package/dist/esm/index.d.ts +25 -9
  213. package/dist/esm/index.js +28 -2
  214. package/dist/esm/index.js.map +1 -1
  215. package/dist/esm/styles/common.js +11 -11
  216. package/dist/esm/styles/common.js.map +1 -1
  217. package/dist/esm/types/ChatHook.d.ts +81 -0
  218. package/dist/esm/types/ChatHook.js +2 -0
  219. package/dist/esm/types/ChatHook.js.map +1 -0
  220. package/dist/esm/types/XAdkChatbot.d.ts +80 -15
  221. package/dist/esm/types/XAdkChatbot.js.map +1 -1
  222. package/dist/esm/types/XAdkProvider.d.ts +10 -27
  223. package/dist/esm/types/XAdkProvider.js.map +1 -1
  224. package/dist/esm/types/XAdkSender.d.ts +18 -0
  225. package/dist/esm/types/XAdkSender.js.map +1 -1
  226. package/dist/esm/types/XAiConversations.d.ts +4 -2
  227. package/dist/esm/types/XAiConversations.js.map +1 -1
  228. package/dist/esm/types/XAiThoughtChain.d.ts +1 -1
  229. package/dist/esm/types/XAiThoughtChain.js.map +1 -1
  230. package/dist/esm/utils/index.d.ts +1 -0
  231. package/dist/esm/utils/index.js +3 -0
  232. package/dist/esm/utils/index.js.map +1 -1
  233. package/dist/esm/utils/parseAgentMessage.d.ts +81 -0
  234. package/dist/esm/utils/parseAgentMessage.js +286 -0
  235. package/dist/esm/utils/parseAgentMessage.js.map +1 -0
  236. package/dist/esm/utils/umdEntry.d.ts +91 -0
  237. package/dist/esm/utils/umdEntry.js +154 -16
  238. package/dist/esm/utils/umdEntry.js.map +1 -1
  239. package/dist/umd/chat-sdk.min.css +1 -1
  240. package/dist/umd/chat-sdk.min.js +1 -1
  241. package/package.json +20 -11
  242. package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.d.ts +0 -7
  243. package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.js +0 -177
  244. package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.js.map +0 -7
  245. package/dist/cjs/components/XAdkWebProvider/index.d.ts +0 -4
  246. package/dist/cjs/components/XAdkWebProvider/index.js +0 -372
  247. package/dist/cjs/components/XAdkWebProvider/index.js.map +0 -7
  248. package/dist/cjs/components/XAdkWebProvider/styles.js.map +0 -7
  249. package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.d.ts +0 -7
  250. package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.js +0 -163
  251. package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.js.map +0 -1
  252. package/dist/esm/components/XAdkWebProvider/index.d.ts +0 -4
  253. package/dist/esm/components/XAdkWebProvider/index.js +0 -480
  254. package/dist/esm/components/XAdkWebProvider/index.js.map +0 -1
  255. package/dist/esm/components/XAdkWebProvider/styles.js.map +0 -1
  256. /package/dist/cjs/components/{XAdkWebProvider → XAdkProvider}/styles.d.ts +0 -0
  257. /package/dist/esm/components/{XAdkWebProvider → XAdkProvider}/styles.d.ts +0 -0
@@ -0,0 +1,286 @@
1
+ /**
2
+ * 解析后的消息片段类型
3
+ */
4
+
5
+ /**
6
+ * 解析规则配置
7
+ */
8
+
9
+ /**
10
+ * 清理 process 文本
11
+ * - 移除多余的换行
12
+ * - 移除 JSON 代码块标记
13
+ */
14
+ export function cleanProcessText(text) {
15
+ return text.replace(/```json\s*/g, '').replace(/```\s*/g, '').replace(/^\n+/, '').replace(/\n+$/, '').trim();
16
+ }
17
+
18
+ /**
19
+ * XML 模式解析 (默认)
20
+ * 识别标签: <reasoning>、<planning>、<replanning>、<action_log>
21
+ */
22
+ function parseXmlMode(text) {
23
+ var parts = [];
24
+
25
+ // 定义标签模式
26
+ var tagPatterns = [{
27
+ regex: /<reasoning>([\s\S]*?)<\/reasoning>/g,
28
+ type: 'reasoning'
29
+ }, {
30
+ regex: /<planning>([\s\S]*?)<\/planning>/g,
31
+ type: 'planning'
32
+ }, {
33
+ regex: /<replanning>([\s\S]*?)<\/replanning>/g,
34
+ type: 'replanning'
35
+ }, {
36
+ regex: /<action_log>([\s\S]*?)<\/action_log>/g,
37
+ type: 'action_log'
38
+ }];
39
+
40
+ // 收集所有标签位置
41
+
42
+ var matches = [];
43
+ tagPatterns.forEach(function (_ref) {
44
+ var regex = _ref.regex,
45
+ type = _ref.type;
46
+ var match;
47
+ var tempRegex = new RegExp(regex);
48
+ while ((match = tempRegex.exec(text)) !== null) {
49
+ matches.push({
50
+ type: type,
51
+ start: match.index,
52
+ end: match.index + match[0].length,
53
+ content: match[1].trim()
54
+ });
55
+ }
56
+ });
57
+
58
+ // 按位置排序
59
+ matches.sort(function (a, b) {
60
+ return a.start - b.start;
61
+ });
62
+
63
+ // 提取文本和标签
64
+ var currentPos = 0;
65
+ matches.forEach(function (match) {
66
+ // 添加标签前的文本
67
+ if (match.start > currentPos) {
68
+ var textBefore = text.substring(currentPos, match.start).trim();
69
+ if (textBefore) {
70
+ parts.push({
71
+ type: 'text',
72
+ content: textBefore
73
+ });
74
+ }
75
+ }
76
+
77
+ // 添加标签内容
78
+ parts.push({
79
+ type: match.type,
80
+ content: match.content
81
+ });
82
+ currentPos = match.end;
83
+ });
84
+
85
+ // 添加最后的文本
86
+ if (currentPos < text.length) {
87
+ var textAfter = text.substring(currentPos).trim();
88
+ if (textAfter) {
89
+ parts.push({
90
+ type: 'text',
91
+ content: textAfter
92
+ });
93
+ }
94
+ }
95
+ return parts;
96
+ }
97
+
98
+ /**
99
+ * 注释模式解析 (/*PLANNING*\/ 格式)
100
+ * 适用于业务项目的格式
101
+ */
102
+ function parseCommentMode(text) {
103
+ var finalMarker = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '/*FINAL_ANSWER*/';
104
+ // 如果完全没有 Agent 推理标记,则整段文本视为最终结果
105
+ if (!text.includes('/*')) {
106
+ return [{
107
+ type: 'final_result',
108
+ content: text
109
+ }];
110
+ }
111
+ var results = [];
112
+ var finalIndex = text.indexOf(finalMarker);
113
+ var processText = text;
114
+ var finalText = '';
115
+ if (finalIndex !== -1) {
116
+ processText = text.substring(0, finalIndex);
117
+ finalText = text.substring(finalIndex + finalMarker.length);
118
+ }
119
+ var regex = /(\/\*PLANNING\*\/|\/\*REPLANNING\*\/|\/\*REASONING\*\/|\/\*ACTION\*\/)/g;
120
+ var parts = processText.split(regex);
121
+ var currentType = 'process_text';
122
+ parts.forEach(function (part) {
123
+ if (part === '/*PLANNING*/') {
124
+ currentType = 'planning';
125
+ return;
126
+ }
127
+ if (part === '/*REPLANNING*/') {
128
+ currentType = 'replanning';
129
+ return;
130
+ }
131
+ if (part === '/*REASONING*/') {
132
+ currentType = 'reasoning';
133
+ return;
134
+ }
135
+ if (part === '/*ACTION*/') {
136
+ currentType = 'action_log';
137
+ return;
138
+ }
139
+ if (part && part.trim().length > 0) {
140
+ results.push({
141
+ type: currentType,
142
+ content: part
143
+ });
144
+ }
145
+ });
146
+ if (finalText.trim()) {
147
+ results.push({
148
+ type: 'final_result',
149
+ content: finalText
150
+ });
151
+ }
152
+ return results;
153
+ }
154
+
155
+ /**
156
+ * 自定义模式解析
157
+ */
158
+ function parseCustomMode(text, patterns) {
159
+ var parts = [];
160
+ var matches = [];
161
+ patterns.forEach(function (_ref2) {
162
+ var regex = _ref2.regex,
163
+ type = _ref2.type;
164
+ var match;
165
+ var tempRegex = new RegExp(regex);
166
+ while ((match = tempRegex.exec(text)) !== null) {
167
+ var _match$;
168
+ matches.push({
169
+ type: type,
170
+ start: match.index,
171
+ end: match.index + match[0].length,
172
+ content: ((_match$ = match[1]) === null || _match$ === void 0 ? void 0 : _match$.trim()) || match[0]
173
+ });
174
+ }
175
+ });
176
+ matches.sort(function (a, b) {
177
+ return a.start - b.start;
178
+ });
179
+ var currentPos = 0;
180
+ matches.forEach(function (match) {
181
+ if (match.start > currentPos) {
182
+ var textBefore = text.substring(currentPos, match.start).trim();
183
+ if (textBefore) {
184
+ parts.push({
185
+ type: 'text',
186
+ content: textBefore
187
+ });
188
+ }
189
+ }
190
+ parts.push({
191
+ type: match.type,
192
+ content: match.content
193
+ });
194
+ currentPos = match.end;
195
+ });
196
+ if (currentPos < text.length) {
197
+ var textAfter = text.substring(currentPos).trim();
198
+ if (textAfter) {
199
+ parts.push({
200
+ type: 'text',
201
+ content: textAfter
202
+ });
203
+ }
204
+ }
205
+ return parts;
206
+ }
207
+
208
+ /**
209
+ * 解析 Agent 消息 (支持多种格式)
210
+ *
211
+ * @param text 原始消息文本
212
+ * @param options 解析选项
213
+ * @returns 解析后的消息片段数组
214
+ *
215
+ * @example
216
+ * // XML 模式 (默认)
217
+ * const parts1 = parseAgentMessage(`
218
+ * <reasoning>分析用户需求...</reasoning>
219
+ * 最终回复内容
220
+ * `);
221
+ *
222
+ * @example
223
+ * // 注释模式 (业务项目格式)
224
+ * const parts2 = parseAgentMessage(`
225
+ * /*REASONING*\/分析用户需求...
226
+ * /*FINAL_ANSWER*\/最终回复内容
227
+ * `, { mode: 'comment' });
228
+ *
229
+ * @example
230
+ * // 自定义模式
231
+ * const parts3 = parseAgentMessage(text, {
232
+ * mode: 'custom',
233
+ * customPatterns: [
234
+ * { regex: /\[REASONING\]([\s\S]*?)\[\/REASONING\]/g, type: 'reasoning' }
235
+ * ]
236
+ * });
237
+ */
238
+ export function parseAgentMessage(text) {
239
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
240
+ if (!text) return [];
241
+ var _options$mode = options.mode,
242
+ mode = _options$mode === void 0 ? 'xml' : _options$mode,
243
+ customPatterns = options.customPatterns,
244
+ finalMarker = options.finalMarker;
245
+
246
+ // 根据模式选择解析器
247
+ if (mode === 'comment') {
248
+ return parseCommentMode(text, finalMarker);
249
+ }
250
+ if (mode === 'custom' && customPatterns) {
251
+ return parseCustomMode(text, customPatterns);
252
+ }
253
+
254
+ // 默认 XML 模式
255
+ var parts = parseXmlMode(text);
256
+
257
+ // 如果没有任何标签,返回整个文本
258
+ if (parts.length === 0) {
259
+ return [{
260
+ type: 'text',
261
+ content: text
262
+ }];
263
+ }
264
+ return parts;
265
+ }
266
+
267
+ /**
268
+ * 检查是否包含 process 内容
269
+ */
270
+ export function hasProcessContent(parts) {
271
+ return parts.some(function (part) {
272
+ return ['planning', 'replanning', 'reasoning', 'action_log', 'process_text'].includes(part.type);
273
+ });
274
+ }
275
+
276
+ /**
277
+ * 获取纯文本内容(不包含 process 标签)
278
+ */
279
+ export function getPlainText(parts) {
280
+ return parts.filter(function (part) {
281
+ return part.type === 'text' || part.type === 'final_result';
282
+ }).map(function (part) {
283
+ return part.content;
284
+ }).join('\n\n').trim();
285
+ }
286
+ //# sourceMappingURL=parseAgentMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["cleanProcessText","text","replace","trim","parseXmlMode","parts","tagPatterns","regex","type","matches","forEach","_ref","match","tempRegex","RegExp","exec","push","start","index","end","length","content","sort","a","b","currentPos","textBefore","substring","textAfter","parseCommentMode","finalMarker","arguments","undefined","includes","results","finalIndex","indexOf","processText","finalText","split","currentType","part","parseCustomMode","patterns","_ref2","_match$","parseAgentMessage","options","_options$mode","mode","customPatterns","hasProcessContent","some","getPlainText","filter","map","join"],"sources":["../../../src/utils/parseAgentMessage.ts"],"sourcesContent":["/**\n * 解析后的消息片段类型\n */\nexport interface ParsedPart {\n type: 'text' | 'planning' | 'replanning' | 'reasoning' | 'action_log' | 'final_result' | 'process_text';\n content: string;\n}\n\n/**\n * 解析规则配置\n */\nexport interface ParseAgentMessageOptions {\n /**\n * 解析模式\n * - 'xml': XML 标签模式 <reasoning>...</reasoning>\n * - 'comment': 注释标签模式 /*REASONING*\\/\n * - 'custom': 自定义正则模式\n */\n mode?: 'xml' | 'comment' | 'custom';\n\n /**\n * 自定义正则规则 (mode='custom' 时使用)\n * @example\n * [\n * { regex: /\\[REASONING\\]([\\s\\S]*?)\\[\\/REASONING\\]/g, type: 'reasoning' },\n * { regex: /\\[PLANNING\\]([\\s\\S]*?)\\[\\/PLANNING\\]/g, type: 'planning' }\n * ]\n */\n customPatterns?: Array<{\n regex: RegExp;\n type: ParsedPart['type'];\n }>;\n\n /**\n * 最终答案标记 (comment 模式使用)\n * @default '/*FINAL_ANSWER*\\/'\n */\n finalMarker?: string;\n}\n\n/**\n * 清理 process 文本\n * - 移除多余的换行\n * - 移除 JSON 代码块标记\n */\nexport function cleanProcessText(text: string): string {\n return text\n .replace(/```json\\s*/g, '')\n .replace(/```\\s*/g, '')\n .replace(/^\\n+/, '')\n .replace(/\\n+$/, '')\n .trim();\n}\n\n/**\n * XML 模式解析 (默认)\n * 识别标签: <reasoning>、<planning>、<replanning>、<action_log>\n */\nfunction parseXmlMode(text: string): ParsedPart[] {\n const parts: ParsedPart[] = [];\n\n // 定义标签模式\n const tagPatterns: Array<{\n regex: RegExp;\n type: ParsedPart['type'];\n }> = [\n { regex: /<reasoning>([\\s\\S]*?)<\\/reasoning>/g, type: 'reasoning' },\n { regex: /<planning>([\\s\\S]*?)<\\/planning>/g, type: 'planning' },\n { regex: /<replanning>([\\s\\S]*?)<\\/replanning>/g, type: 'replanning' },\n { regex: /<action_log>([\\s\\S]*?)<\\/action_log>/g, type: 'action_log' },\n ];\n\n // 收集所有标签位置\n interface TagMatch {\n type: ParsedPart['type'];\n start: number;\n end: number;\n content: string;\n }\n\n const matches: TagMatch[] = [];\n\n tagPatterns.forEach(({ regex, type }) => {\n let match;\n const tempRegex = new RegExp(regex);\n while ((match = tempRegex.exec(text)) !== null) {\n matches.push({\n type,\n start: match.index,\n end: match.index + match[0].length,\n content: match[1].trim(),\n });\n }\n });\n\n // 按位置排序\n matches.sort((a, b) => a.start - b.start);\n\n // 提取文本和标签\n let currentPos = 0;\n\n matches.forEach((match) => {\n // 添加标签前的文本\n if (match.start > currentPos) {\n const textBefore = text.substring(currentPos, match.start).trim();\n if (textBefore) {\n parts.push({ type: 'text', content: textBefore });\n }\n }\n\n // 添加标签内容\n parts.push({ type: match.type, content: match.content });\n\n currentPos = match.end;\n });\n\n // 添加最后的文本\n if (currentPos < text.length) {\n const textAfter = text.substring(currentPos).trim();\n if (textAfter) {\n parts.push({ type: 'text', content: textAfter });\n }\n }\n\n return parts;\n}\n\n/**\n * 注释模式解析 (/*PLANNING*\\/ 格式)\n * 适用于业务项目的格式\n */\nfunction parseCommentMode(text: string, finalMarker: string = '/*FINAL_ANSWER*/'): ParsedPart[] {\n // 如果完全没有 Agent 推理标记,则整段文本视为最终结果\n if (!text.includes('/*')) {\n return [{ type: 'final_result', content: text }];\n }\n\n const results: ParsedPart[] = [];\n const finalIndex = text.indexOf(finalMarker);\n\n let processText = text;\n let finalText = '';\n\n if (finalIndex !== -1) {\n processText = text.substring(0, finalIndex);\n finalText = text.substring(finalIndex + finalMarker.length);\n }\n\n const regex = /(\\/\\*PLANNING\\*\\/|\\/\\*REPLANNING\\*\\/|\\/\\*REASONING\\*\\/|\\/\\*ACTION\\*\\/)/g;\n const parts = processText.split(regex);\n\n let currentType: ParsedPart['type'] = 'process_text';\n\n parts.forEach((part) => {\n if (part === '/*PLANNING*/') {\n currentType = 'planning';\n return;\n }\n if (part === '/*REPLANNING*/') {\n currentType = 'replanning';\n return;\n }\n if (part === '/*REASONING*/') {\n currentType = 'reasoning';\n return;\n }\n if (part === '/*ACTION*/') {\n currentType = 'action_log';\n return;\n }\n\n if (part && part.trim().length > 0) {\n results.push({ type: currentType, content: part });\n }\n });\n\n if (finalText.trim()) {\n results.push({ type: 'final_result', content: finalText });\n }\n\n return results;\n}\n\n/**\n * 自定义模式解析\n */\nfunction parseCustomMode(text: string, patterns: Array<{ regex: RegExp; type: ParsedPart['type'] }>): ParsedPart[] {\n const parts: ParsedPart[] = [];\n const matches: Array<{ type: ParsedPart['type']; start: number; end: number; content: string }> = [];\n\n patterns.forEach(({ regex, type }) => {\n let match;\n const tempRegex = new RegExp(regex);\n while ((match = tempRegex.exec(text)) !== null) {\n matches.push({\n type,\n start: match.index,\n end: match.index + match[0].length,\n content: match[1]?.trim() || match[0],\n });\n }\n });\n\n matches.sort((a, b) => a.start - b.start);\n\n let currentPos = 0;\n matches.forEach((match) => {\n if (match.start > currentPos) {\n const textBefore = text.substring(currentPos, match.start).trim();\n if (textBefore) {\n parts.push({ type: 'text', content: textBefore });\n }\n }\n parts.push({ type: match.type, content: match.content });\n currentPos = match.end;\n });\n\n if (currentPos < text.length) {\n const textAfter = text.substring(currentPos).trim();\n if (textAfter) {\n parts.push({ type: 'text', content: textAfter });\n }\n }\n\n return parts;\n}\n\n/**\n * 解析 Agent 消息 (支持多种格式)\n *\n * @param text 原始消息文本\n * @param options 解析选项\n * @returns 解析后的消息片段数组\n *\n * @example\n * // XML 模式 (默认)\n * const parts1 = parseAgentMessage(`\n * <reasoning>分析用户需求...</reasoning>\n * 最终回复内容\n * `);\n *\n * @example\n * // 注释模式 (业务项目格式)\n * const parts2 = parseAgentMessage(`\n * /*REASONING*\\/分析用户需求...\n * /*FINAL_ANSWER*\\/最终回复内容\n * `, { mode: 'comment' });\n *\n * @example\n * // 自定义模式\n * const parts3 = parseAgentMessage(text, {\n * mode: 'custom',\n * customPatterns: [\n * { regex: /\\[REASONING\\]([\\s\\S]*?)\\[\\/REASONING\\]/g, type: 'reasoning' }\n * ]\n * });\n */\nexport function parseAgentMessage(text: string, options: ParseAgentMessageOptions = {}): ParsedPart[] {\n if (!text) return [];\n\n const { mode = 'xml', customPatterns, finalMarker } = options;\n\n // 根据模式选择解析器\n if (mode === 'comment') {\n return parseCommentMode(text, finalMarker);\n }\n\n if (mode === 'custom' && customPatterns) {\n return parseCustomMode(text, customPatterns);\n }\n\n // 默认 XML 模式\n const parts = parseXmlMode(text);\n\n // 如果没有任何标签,返回整个文本\n if (parts.length === 0) {\n return [{ type: 'text', content: text }];\n }\n\n return parts;\n}\n\n/**\n * 检查是否包含 process 内容\n */\nexport function hasProcessContent(parts: ParsedPart[]): boolean {\n return parts.some((part) =>\n ['planning', 'replanning', 'reasoning', 'action_log', 'process_text'].includes(part.type)\n );\n}\n\n/**\n * 获取纯文本内容(不包含 process 标签)\n */\nexport function getPlainText(parts: ParsedPart[]): string {\n return parts\n .filter((part) => part.type === 'text' || part.type === 'final_result')\n .map((part) => part.content)\n .join('\\n\\n')\n .trim();\n}\n"],"mappings":"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"}
@@ -1,6 +1,28 @@
1
1
  /// <reference types="react" />
2
2
  import { XAdkSDKProps, XAdkProviderHandle, IMessage } from "../types";
3
3
  import { SendContent } from "../types";
4
+ /**
5
+ * XAiWebSDK - UMD 入口类
6
+ *
7
+ * 用于通过 <script> 标签引入 SDK 的场景
8
+ *
9
+ * @example
10
+ * ```html
11
+ * <script src="chat-sdk.min.js"></script>
12
+ * <script>
13
+ * const sdk = XAiWebSDK.initChatbot({
14
+ * url: 'https://api.example.com',
15
+ * token: 'your-token',
16
+ * config: {
17
+ * appNo: 'your-app-no',
18
+ * session: {
19
+ * showSessionList: true
20
+ * }
21
+ * }
22
+ * });
23
+ * </script>
24
+ * ```
25
+ */
4
26
  declare class XAiWebSDK {
5
27
  container: HTMLElement;
6
28
  props: XAdkSDKProps;
@@ -12,14 +34,83 @@ declare class XAiWebSDK {
12
34
  constructor(container: HTMLElement, props: XAdkSDKProps);
13
35
  mount(): void;
14
36
  unmount(): void;
37
+ /**
38
+ * 初始化聊天机器人(推荐方式)
39
+ *
40
+ * @param props - SDK 配置参数
41
+ * @returns XAiWebSDK 实例
42
+ *
43
+ * @example
44
+ * ```javascript
45
+ * const sdk = XAiWebSDK.initChatbot({
46
+ * url: 'https://api.example.com',
47
+ * token: 'your-token',
48
+ * config: {
49
+ * appNo: 'your-app-no',
50
+ * session: {
51
+ * showSessionList: true // 显示会话列表
52
+ * },
53
+ * allowUpload: true, // 允许文件上传
54
+ * chatProps: {
55
+ * clearBtnShow: false // 隐藏清空按钮
56
+ * }
57
+ * },
58
+ * componentProps: {
59
+ * id: 'my-chatbot', // 容器 ID
60
+ * width: '100%',
61
+ * height: '600px'
62
+ * }
63
+ * });
64
+ * ```
65
+ */
15
66
  static initChatbot(props: XAdkSDKProps): XAiWebSDK;
67
+ /**
68
+ * 兼容旧版本的静态方法
69
+ * @deprecated 使用 initChatbot 替代
70
+ */
16
71
  static create(props: XAdkSDKProps): XAiWebSDK;
72
+ /**
73
+ * 获取当前数据
74
+ * @returns 应用信息、消息列表、会话列表
75
+ */
17
76
  getData(): {
18
77
  appInfo: any;
19
78
  messages: IMessage[] | undefined;
20
79
  sessions: any[] | undefined;
21
80
  };
81
+ /**
82
+ * 发送消息
83
+ * @param content - 消息内容
84
+ *
85
+ * @example
86
+ * ```javascript
87
+ * sdk.chat({ text: 'Hello!' });
88
+ * ```
89
+ */
22
90
  chat(content: SendContent): void;
91
+ /**
92
+ * 停止当前消息生成
93
+ */
23
94
  stop(): void;
95
+ /**
96
+ * 清空当前会话
97
+ */
98
+ clear(): void;
99
+ /**
100
+ * 删除指定会话
101
+ * @param sessionId - 会话 ID
102
+ */
103
+ deleteSession(sessionId: string): void;
104
+ /**
105
+ * 更新会话标题
106
+ * @param sessionId - 会话 ID
107
+ * @param title - 新标题
108
+ */
109
+ updateSession(sessionId: string, title: string): void;
110
+ /**
111
+ * 切换到指定会话
112
+ * @param sessionId - 会话 ID
113
+ */
114
+ switchSession(sessionId: string): void;
24
115
  }
25
116
  export default XAiWebSDK;
@@ -4,10 +4,32 @@ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
4
4
  import _createClass from "@babel/runtime/helpers/esm/createClass";
5
5
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
6
6
  var _excluded = ["id"];
7
- import { createRef } from 'react';
8
- import ReactDOM from 'react-dom/client';
9
- import XAdkWebProvider from "../components/XAdkWebProvider";
7
+ import { createRef } from "react";
8
+ import ReactDOM from "react-dom/client";
9
+ import XAdkProvider from "../components/XAdkProvider";
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
+ /**
12
+ * XAiWebSDK - UMD 入口类
13
+ *
14
+ * 用于通过 <script> 标签引入 SDK 的场景
15
+ *
16
+ * @example
17
+ * ```html
18
+ * <script src="chat-sdk.min.js"></script>
19
+ * <script>
20
+ * const sdk = XAiWebSDK.initChatbot({
21
+ * url: 'https://api.example.com',
22
+ * token: 'your-token',
23
+ * config: {
24
+ * appNo: 'your-app-no',
25
+ * session: {
26
+ * showSessionList: true
27
+ * }
28
+ * }
29
+ * });
30
+ * </script>
31
+ * ```
32
+ */
11
33
  var XAiWebSDK = /*#__PURE__*/function () {
12
34
  function XAiWebSDK(container, props) {
13
35
  _classCallCheck(this, XAiWebSDK);
@@ -29,27 +51,49 @@ var XAiWebSDK = /*#__PURE__*/function () {
29
51
  _createClass(XAiWebSDK, [{
30
52
  key: "mount",
31
53
  value: function mount() {
54
+ var _config$session$showS, _config$session, _config$allowUpload, _config$chatProps$cle, _config$chatProps;
55
+ // 提取配置
56
+ var _this$props$config = this.props.config,
57
+ config = _this$props$config === void 0 ? {} : _this$props$config;
58
+ var showSessionList = (_config$session$showS = (_config$session = config.session) === null || _config$session === void 0 ? void 0 : _config$session.showSessionList) !== null && _config$session$showS !== void 0 ? _config$session$showS : false;
59
+ var allowUpload = (_config$allowUpload = config.allowUpload) !== null && _config$allowUpload !== void 0 ? _config$allowUpload : false;
60
+ var clearBtnShow = (_config$chatProps$cle = (_config$chatProps = config.chatProps) === null || _config$chatProps === void 0 ? void 0 : _config$chatProps.clearBtnShow) !== null && _config$chatProps$cle !== void 0 ? _config$chatProps$cle : true;
32
61
  if (ReactDOM.createRoot) {
33
62
  this.root = ReactDOM.createRoot(this.container);
34
63
  this.root.render( /*#__PURE__*/_jsx("div", {
35
64
  style: {
36
- width: '100%',
37
- height: '100%'
65
+ width: "100%",
66
+ height: "100%"
38
67
  },
39
- children: /*#__PURE__*/_jsx(XAdkWebProvider, _objectSpread({
68
+ children: /*#__PURE__*/_jsx(XAdkProvider, _objectSpread(_objectSpread({
40
69
  ref: this.providerRef
41
- }, this.props))
70
+ }, this.props), {}, {
71
+ children: /*#__PURE__*/_jsx(XAdkProvider.DefaultLayout, {
72
+ showSessionList: showSessionList,
73
+ allowUpload: allowUpload,
74
+ clearBtnShow: clearBtnShow,
75
+ showFnCallDetail: true
76
+ })
77
+ }))
42
78
  }));
43
79
  } else {
80
+ // 兼容 React 17
44
81
  // @ts-ignore
45
82
  ReactDOM.render( /*#__PURE__*/_jsx("div", {
46
83
  style: {
47
- width: '100%',
48
- height: '100%'
84
+ width: "100%",
85
+ height: "100%"
49
86
  },
50
- children: /*#__PURE__*/_jsx(XAdkWebProvider, _objectSpread({
87
+ children: /*#__PURE__*/_jsx(XAdkProvider, _objectSpread(_objectSpread({
51
88
  ref: this.providerRef
52
- }, this.props))
89
+ }, this.props), {}, {
90
+ children: /*#__PURE__*/_jsx(XAdkProvider.DefaultLayout, {
91
+ showSessionList: showSessionList,
92
+ allowUpload: allowUpload,
93
+ clearBtnShow: clearBtnShow,
94
+ showFnCallDetail: true
95
+ })
96
+ }))
53
97
  }), this.container);
54
98
  }
55
99
  }
@@ -61,11 +105,44 @@ var XAiWebSDK = /*#__PURE__*/function () {
61
105
  }
62
106
  }
63
107
 
64
- // 支持 Coze 风格的语法:new XAiWebSDK.initChatbot()
108
+ /**
109
+ * 初始化聊天机器人(推荐方式)
110
+ *
111
+ * @param props - SDK 配置参数
112
+ * @returns XAiWebSDK 实例
113
+ *
114
+ * @example
115
+ * ```javascript
116
+ * const sdk = XAiWebSDK.initChatbot({
117
+ * url: 'https://api.example.com',
118
+ * token: 'your-token',
119
+ * config: {
120
+ * appNo: 'your-app-no',
121
+ * session: {
122
+ * showSessionList: true // 显示会话列表
123
+ * },
124
+ * allowUpload: true, // 允许文件上传
125
+ * chatProps: {
126
+ * clearBtnShow: false // 隐藏清空按钮
127
+ * }
128
+ * },
129
+ * componentProps: {
130
+ * id: 'my-chatbot', // 容器 ID
131
+ * width: '100%',
132
+ * height: '600px'
133
+ * }
134
+ * });
135
+ * ```
136
+ */
65
137
  }, {
66
138
  key: "getData",
67
139
  value:
68
140
  // ————对外暴露的方法————
141
+
142
+ /**
143
+ * 获取当前数据
144
+ * @returns 应用信息、消息列表、会话列表
145
+ */
69
146
  function getData() {
70
147
  var _this$providerRef$cur, _this$providerRef$cur2, _this$providerRef$cur3;
71
148
  return {
@@ -74,18 +151,76 @@ var XAiWebSDK = /*#__PURE__*/function () {
74
151
  sessions: (_this$providerRef$cur3 = this.providerRef.current) === null || _this$providerRef$cur3 === void 0 ? void 0 : _this$providerRef$cur3.getSessions()
75
152
  };
76
153
  }
154
+
155
+ /**
156
+ * 发送消息
157
+ * @param content - 消息内容
158
+ *
159
+ * @example
160
+ * ```javascript
161
+ * sdk.chat({ text: 'Hello!' });
162
+ * ```
163
+ */
77
164
  }, {
78
165
  key: "chat",
79
166
  value: function chat(content) {
80
167
  var _this$providerRef$cur4;
81
168
  (_this$providerRef$cur4 = this.providerRef.current) === null || _this$providerRef$cur4 === void 0 || _this$providerRef$cur4.startChat(content);
82
169
  }
170
+
171
+ /**
172
+ * 停止当前消息生成
173
+ */
83
174
  }, {
84
175
  key: "stop",
85
176
  value: function stop() {
86
177
  var _this$providerRef$cur5;
87
178
  (_this$providerRef$cur5 = this.providerRef.current) === null || _this$providerRef$cur5 === void 0 || _this$providerRef$cur5.stopChat();
88
179
  }
180
+
181
+ /**
182
+ * 清空当前会话
183
+ */
184
+ }, {
185
+ key: "clear",
186
+ value: function clear() {
187
+ var _this$providerRef$cur6;
188
+ (_this$providerRef$cur6 = this.providerRef.current) === null || _this$providerRef$cur6 === void 0 || _this$providerRef$cur6.clearChat();
189
+ }
190
+
191
+ /**
192
+ * 删除指定会话
193
+ * @param sessionId - 会话 ID
194
+ */
195
+ }, {
196
+ key: "deleteSession",
197
+ value: function deleteSession(sessionId) {
198
+ var _this$providerRef$cur7;
199
+ (_this$providerRef$cur7 = this.providerRef.current) === null || _this$providerRef$cur7 === void 0 || _this$providerRef$cur7.deleteSession(sessionId);
200
+ }
201
+
202
+ /**
203
+ * 更新会话标题
204
+ * @param sessionId - 会话 ID
205
+ * @param title - 新标题
206
+ */
207
+ }, {
208
+ key: "updateSession",
209
+ value: function updateSession(sessionId, title) {
210
+ var _this$providerRef$cur8;
211
+ (_this$providerRef$cur8 = this.providerRef.current) === null || _this$providerRef$cur8 === void 0 || _this$providerRef$cur8.updateSession(sessionId, title);
212
+ }
213
+
214
+ /**
215
+ * 切换到指定会话
216
+ * @param sessionId - 会话 ID
217
+ */
218
+ }, {
219
+ key: "switchSession",
220
+ value: function switchSession(sessionId) {
221
+ var _this$providerRef$cur9;
222
+ (_this$providerRef$cur9 = this.providerRef.current) === null || _this$providerRef$cur9 === void 0 || _this$providerRef$cur9.setCurrentSessionDetail(sessionId);
223
+ }
89
224
  }], [{
90
225
  key: "initChatbot",
91
226
  value: function initChatbot(props) {
@@ -99,13 +234,13 @@ var XAiWebSDK = /*#__PURE__*/function () {
99
234
  container = existingContainer;
100
235
  } else {
101
236
  // 如果指定的 ID 不存在,创建新元素
102
- container = document.createElement('div');
237
+ container = document.createElement("div");
103
238
  container.id = props.componentProps.id;
104
239
  }
105
240
  } else {
106
241
  // 没有指定 ID,创建默认容器
107
- container = document.createElement('div');
108
- container.id = 'xai-chatbot-container';
242
+ container = document.createElement("div");
243
+ container.id = "xai-chatbot-container";
109
244
  }
110
245
 
111
246
  // 设置容器样式 - 将除了 id 以外的所有属性都应用到容器
@@ -123,7 +258,10 @@ var XAiWebSDK = /*#__PURE__*/function () {
123
258
  return new XAiWebSDK(container, props);
124
259
  }
125
260
 
126
- // 兼容旧版本的静态方法
261
+ /**
262
+ * 兼容旧版本的静态方法
263
+ * @deprecated 使用 initChatbot 替代
264
+ */
127
265
  }, {
128
266
  key: "create",
129
267
  value: function create(props) {