@tdesign-react/chat 1.1.0-alpha.16 → 1.1.0-alpha.17

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 (431) hide show
  1. package/es/_chunks/{dep-dfe91b1f.js → dep-e1e84ed7.js} +1 -1
  2. package/es/_chunks/{dep-13fe70ea.js.map → dep-e1e84ed7.js.map} +1 -1
  3. package/es/chat-engine/components/index.js +8 -3
  4. package/es/chat-engine/components/index.js.map +1 -1
  5. package/es/chat-engine/components/json-render/catalog/atomic/input.js +8 -3
  6. package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -1
  7. package/es/chat-engine/components/json-render/index.js +8 -3
  8. package/es/chat-engine/components/json-render/index.js.map +1 -1
  9. package/es/chat-engine/components/json-render/registry/a2ui-binding.js +8 -3
  10. package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -1
  11. package/es/chat-engine/components/json-render/registry/a2ui-registry.js +8 -3
  12. package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -1
  13. package/es/chat-engine/components/json-render/registry/config.js +8 -3
  14. package/es/chat-engine/components/json-render/registry/config.js.map +1 -1
  15. package/es/chat-engine/components/json-render/registry/index.js +8 -3
  16. package/es/chat-engine/components/json-render/registry/index.js.map +1 -1
  17. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +7 -2
  18. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -1
  19. package/es/chat-engine/components/provider/agent-state.js +7 -2
  20. package/es/chat-engine/components/provider/agent-state.js.map +1 -1
  21. package/es/chat-engine/components/toolcall/index.js +7 -2
  22. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  23. package/es/chat-engine/components/toolcall/render.js +6 -1
  24. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  25. package/es/chat-engine/core/adapters/agui/index.js +5 -50
  26. package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
  27. package/es/chat-engine/core/adapters/agui/utils.d.ts +25 -2
  28. package/es/chat-engine/core/adapters/agui/utils.js +51 -11
  29. package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
  30. package/es/chat-engine/core/adapters/index.js +1 -0
  31. package/es/chat-engine/core/adapters/index.js.map +1 -1
  32. package/es/chat-engine/core/adapters/openclaw/event-mapper.d.ts +36 -14
  33. package/es/chat-engine/core/adapters/openclaw/event-mapper.js +35 -20
  34. package/es/chat-engine/core/adapters/openclaw/event-mapper.js.map +1 -1
  35. package/es/chat-engine/core/adapters/openclaw/history-converter.d.ts +120 -0
  36. package/es/chat-engine/core/adapters/openclaw/history-converter.js +251 -0
  37. package/es/chat-engine/core/adapters/openclaw/history-converter.js.map +1 -0
  38. package/es/chat-engine/core/adapters/openclaw/index.d.ts +30 -0
  39. package/es/chat-engine/core/adapters/openclaw/index.js +82 -35
  40. package/es/chat-engine/core/adapters/openclaw/index.js.map +1 -1
  41. package/es/chat-engine/core/adapters/openclaw/rpc-handler.d.ts +13 -0
  42. package/es/chat-engine/core/adapters/openclaw/rpc-handler.js +19 -0
  43. package/es/chat-engine/core/adapters/openclaw/rpc-handler.js.map +1 -1
  44. package/es/chat-engine/core/adapters/openclaw/types/config.d.ts +2 -24
  45. package/es/chat-engine/core/adapters/openclaw/types/config.js +3 -5
  46. package/es/chat-engine/core/adapters/openclaw/types/config.js.map +1 -1
  47. package/es/chat-engine/core/adapters/openclaw/types/events.d.ts +2 -0
  48. package/es/chat-engine/core/adapters/openclaw/types/events.js +1 -0
  49. package/es/chat-engine/core/adapters/openclaw/types/events.js.map +1 -1
  50. package/es/chat-engine/core/adapters/openclaw/types/messages.d.ts +9 -0
  51. package/es/chat-engine/core/adapters/openclaw/types/messages.js.map +1 -1
  52. package/es/chat-engine/core/adapters/openclaw/utils.js.map +1 -1
  53. package/es/chat-engine/core/index.d.ts +24 -24
  54. package/es/chat-engine/core/index.js +150 -317
  55. package/es/chat-engine/core/index.js.map +1 -1
  56. package/es/chat-engine/core/processor/index.d.ts +32 -0
  57. package/es/chat-engine/core/processor/index.js +75 -0
  58. package/es/chat-engine/core/processor/index.js.map +1 -1
  59. package/es/chat-engine/core/server/index.js +0 -20
  60. package/es/chat-engine/core/server/index.js.map +1 -1
  61. package/es/chat-engine/core/server/llm-service.d.ts +7 -7
  62. package/es/chat-engine/core/server/llm-service.js +12 -139
  63. package/es/chat-engine/core/server/llm-service.js.map +1 -1
  64. package/es/chat-engine/core/stream-handlers/agui-stream-handler.d.ts +24 -0
  65. package/es/chat-engine/core/stream-handlers/agui-stream-handler.js +140 -0
  66. package/es/chat-engine/core/stream-handlers/agui-stream-handler.js.map +1 -0
  67. package/es/chat-engine/core/stream-handlers/default-stream-handler.d.ts +7 -0
  68. package/es/chat-engine/core/stream-handlers/default-stream-handler.js +77 -0
  69. package/es/chat-engine/core/stream-handlers/default-stream-handler.js.map +1 -0
  70. package/es/chat-engine/core/stream-handlers/index.d.ts +21 -0
  71. package/es/chat-engine/core/stream-handlers/index.js +71 -0
  72. package/es/chat-engine/core/stream-handlers/index.js.map +1 -0
  73. package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.d.ts +56 -0
  74. package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.js +269 -0
  75. package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.js.map +1 -0
  76. package/es/chat-engine/core/stream-handlers/types.d.ts +47 -0
  77. package/es/chat-engine/core/stream-handlers/types.js +7 -0
  78. package/es/chat-engine/core/stream-handlers/types.js.map +1 -0
  79. package/es/chat-engine/core/type.d.ts +18 -0
  80. package/es/chat-engine/hooks/index.js +7 -2
  81. package/es/chat-engine/hooks/index.js.map +1 -1
  82. package/es/chat-engine/hooks/useAgentState.js +7 -2
  83. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  84. package/es/chat-engine/hooks/useChat.js +11 -5
  85. package/es/chat-engine/hooks/useChat.js.map +1 -1
  86. package/es/chat-engine/index.js +6 -1
  87. package/es/chat-engine/index.js.map +1 -1
  88. package/es/index.js +6 -1
  89. package/es/index.js.map +1 -1
  90. package/package.json +1 -1
  91. package/es/_chunks/dep-076af7c3.js +0 -438
  92. package/es/_chunks/dep-076af7c3.js.map +0 -1
  93. package/es/_chunks/dep-1007ac80.js +0 -205
  94. package/es/_chunks/dep-1007ac80.js.map +0 -1
  95. package/es/_chunks/dep-13fe70ea.js +0 -438
  96. package/es/_chunks/dep-16520c2b.js +0 -1247
  97. package/es/_chunks/dep-16520c2b.js.map +0 -1
  98. package/es/_chunks/dep-1743bd61.js +0 -438
  99. package/es/_chunks/dep-1743bd61.js.map +0 -1
  100. package/es/_chunks/dep-1ca64fef.js +0 -1247
  101. package/es/_chunks/dep-1ca64fef.js.map +0 -1
  102. package/es/_chunks/dep-24472232.js +0 -839
  103. package/es/_chunks/dep-24472232.js.map +0 -1
  104. package/es/_chunks/dep-2bfe72cb.js +0 -438
  105. package/es/_chunks/dep-2bfe72cb.js.map +0 -1
  106. package/es/_chunks/dep-3864b369.js +0 -839
  107. package/es/_chunks/dep-3864b369.js.map +0 -1
  108. package/es/_chunks/dep-3e40d789.js +0 -169
  109. package/es/_chunks/dep-3e40d789.js.map +0 -1
  110. package/es/_chunks/dep-4dedfbef.js +0 -438
  111. package/es/_chunks/dep-4dedfbef.js.map +0 -1
  112. package/es/_chunks/dep-56f5e08e.js +0 -448
  113. package/es/_chunks/dep-56f5e08e.js.map +0 -1
  114. package/es/_chunks/dep-58d90dfe.js +0 -438
  115. package/es/_chunks/dep-58d90dfe.js.map +0 -1
  116. package/es/_chunks/dep-5b6b17d0.js +0 -169
  117. package/es/_chunks/dep-5b6b17d0.js.map +0 -1
  118. package/es/_chunks/dep-5e2400d2.js +0 -438
  119. package/es/_chunks/dep-5e2400d2.js.map +0 -1
  120. package/es/_chunks/dep-60f2a734.js +0 -169
  121. package/es/_chunks/dep-60f2a734.js.map +0 -1
  122. package/es/_chunks/dep-688e4aaa.js +0 -438
  123. package/es/_chunks/dep-688e4aaa.js.map +0 -1
  124. package/es/_chunks/dep-771678df.js +0 -438
  125. package/es/_chunks/dep-771678df.js.map +0 -1
  126. package/es/_chunks/dep-870f0d35.js +0 -839
  127. package/es/_chunks/dep-870f0d35.js.map +0 -1
  128. package/es/_chunks/dep-93283bbd.js +0 -1247
  129. package/es/_chunks/dep-93283bbd.js.map +0 -1
  130. package/es/_chunks/dep-96eca06f.js +0 -169
  131. package/es/_chunks/dep-96eca06f.js.map +0 -1
  132. package/es/_chunks/dep-98d23dfa.js +0 -169
  133. package/es/_chunks/dep-98d23dfa.js.map +0 -1
  134. package/es/_chunks/dep-991f7c12.js +0 -1247
  135. package/es/_chunks/dep-991f7c12.js.map +0 -1
  136. package/es/_chunks/dep-b4eec30f.js +0 -1247
  137. package/es/_chunks/dep-b4eec30f.js.map +0 -1
  138. package/es/_chunks/dep-ba3bd553.js +0 -169
  139. package/es/_chunks/dep-ba3bd553.js.map +0 -1
  140. package/es/_chunks/dep-bcb234a1.js +0 -839
  141. package/es/_chunks/dep-bcb234a1.js.map +0 -1
  142. package/es/_chunks/dep-dbdfe7d6.js +0 -169
  143. package/es/_chunks/dep-dbdfe7d6.js.map +0 -1
  144. package/es/_chunks/dep-de8ac730.js +0 -1247
  145. package/es/_chunks/dep-de8ac730.js.map +0 -1
  146. package/es/_chunks/dep-dfe91b1f.js.map +0 -1
  147. package/es/_chunks/dep-e9dbff09.js +0 -1247
  148. package/es/_chunks/dep-e9dbff09.js.map +0 -1
  149. package/es/_chunks/dep-ebc4cf30.js +0 -1247
  150. package/es/_chunks/dep-ebc4cf30.js.map +0 -1
  151. package/es/_chunks/dep-f2051ebd.js +0 -839
  152. package/es/_chunks/dep-f2051ebd.js.map +0 -1
  153. package/es/_chunks/dep-f691a67e.js +0 -438
  154. package/es/_chunks/dep-f691a67e.js.map +0 -1
  155. package/es/_chunks/dep-f8016301.js +0 -169
  156. package/es/_chunks/dep-f8016301.js.map +0 -1
  157. package/es/chat-actionbar/_example-js/base.d.ts +0 -2
  158. package/es/chat-actionbar/_example-js/custom.d.ts +0 -2
  159. package/es/chat-actionbar/_example-js/style.d.ts +0 -2
  160. package/es/chat-attachments/_example-js/base.d.ts +0 -2
  161. package/es/chat-attachments/_example-js/scroll-x.d.ts +0 -2
  162. package/es/chat-attachments/_example-js/scroll-y.d.ts +0 -2
  163. package/es/chat-attachments/index.d.ts +0 -5
  164. package/es/chat-attachments/index.js +0 -26
  165. package/es/chat-attachments/index.js.map +0 -1
  166. package/es/chat-engine/_example-js/agui-basic.d.ts +0 -10
  167. package/es/chat-engine/_example-js/agui-comprehensive.d.ts +0 -2
  168. package/es/chat-engine/_example-js/agui-test.d.ts +0 -11
  169. package/es/chat-engine/_example-js/agui-toolcall.d.ts +0 -5
  170. package/es/chat-engine/_example-js/agui-videoclip.d.ts +0 -8
  171. package/es/chat-engine/_example-js/agui.d.ts +0 -1
  172. package/es/chat-engine/_example-js/basic.d.ts +0 -9
  173. package/es/chat-engine/_example-js/components/HotelCard.d.ts +0 -3
  174. package/es/chat-engine/_example-js/components/HumanInputForm.d.ts +0 -6
  175. package/es/chat-engine/_example-js/components/HumanInputResult.d.ts +0 -3
  176. package/es/chat-engine/_example-js/components/ItineraryCard.d.ts +0 -3
  177. package/es/chat-engine/_example-js/components/PlanningStatePanel.d.ts +0 -4
  178. package/es/chat-engine/_example-js/components/Toolcall.d.ts +0 -4
  179. package/es/chat-engine/_example-js/components/WeatherCard.d.ts +0 -3
  180. package/es/chat-engine/_example-js/components/login.d.ts +0 -1
  181. package/es/chat-engine/_example-js/comprehensive.d.ts +0 -12
  182. package/es/chat-engine/_example-js/custom-content.d.ts +0 -1
  183. package/es/chat-engine/_example-js/hookComponent.d.ts +0 -1
  184. package/es/chat-engine/_example-js/initial-messages.d.ts +0 -9
  185. package/es/chat-engine/_example-js/instance-methods.d.ts +0 -13
  186. package/es/chat-engine/_example-js/travel-actions.d.ts +0 -91
  187. package/es/chat-engine/_example-js/travelToolcall.d.ts +0 -1
  188. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.d.ts +0 -196
  189. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +0 -301
  190. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +0 -1
  191. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.d.ts +0 -37
  192. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +0 -116
  193. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js.map +0 -1
  194. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.d.ts +0 -42
  195. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +0 -113
  196. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js.map +0 -1
  197. package/es/chat-engine/components/a2ui/A2UISkeleton.d.ts +0 -60
  198. package/es/chat-engine/components/a2ui/A2UISkeleton.js +0 -197
  199. package/es/chat-engine/components/a2ui/A2UISkeleton.js.map +0 -1
  200. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.d.ts +0 -44
  201. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +0 -139
  202. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js.map +0 -1
  203. package/es/chat-engine/components/a2ui/containers/A2UICard.d.ts +0 -22
  204. package/es/chat-engine/components/a2ui/containers/A2UICard.js +0 -82
  205. package/es/chat-engine/components/a2ui/containers/A2UICard.js.map +0 -1
  206. package/es/chat-engine/components/a2ui/containers/A2UIColumn.d.ts +0 -18
  207. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +0 -81
  208. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js.map +0 -1
  209. package/es/chat-engine/components/a2ui/containers/A2UIList.d.ts +0 -14
  210. package/es/chat-engine/components/a2ui/containers/A2UIList.js +0 -62
  211. package/es/chat-engine/components/a2ui/containers/A2UIList.js.map +0 -1
  212. package/es/chat-engine/components/a2ui/containers/A2UIRow.d.ts +0 -20
  213. package/es/chat-engine/components/a2ui/containers/A2UIRow.js +0 -84
  214. package/es/chat-engine/components/a2ui/containers/A2UIRow.js.map +0 -1
  215. package/es/chat-engine/components/a2ui/containers/A2UITabs.d.ts +0 -14
  216. package/es/chat-engine/components/a2ui/containers/A2UITabs.js +0 -69
  217. package/es/chat-engine/components/a2ui/containers/A2UITabs.js.map +0 -1
  218. package/es/chat-engine/components/a2ui/containers/index.d.ts +0 -8
  219. package/es/chat-engine/components/a2ui/containers/index.js +0 -30
  220. package/es/chat-engine/components/a2ui/containers/index.js.map +0 -1
  221. package/es/chat-engine/components/a2ui/index.d.ts +0 -11
  222. package/es/chat-engine/components/a2ui/index.js +0 -62
  223. package/es/chat-engine/components/a2ui/index.js.map +0 -1
  224. package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +0 -33
  225. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +0 -80
  226. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +0 -1
  227. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.d.ts +0 -12
  228. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +0 -43
  229. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js.map +0 -1
  230. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.d.ts +0 -50
  231. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +0 -54
  232. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js.map +0 -1
  233. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.d.ts +0 -13
  234. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +0 -89
  235. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js.map +0 -1
  236. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.d.ts +0 -12
  237. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +0 -25
  238. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js.map +0 -1
  239. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.d.ts +0 -13
  240. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +0 -138942
  241. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js.map +0 -1
  242. package/es/chat-engine/components/a2ui/primitives/A2UIImage.d.ts +0 -12
  243. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +0 -75
  244. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js.map +0 -1
  245. package/es/chat-engine/components/a2ui/primitives/A2UIInput.d.ts +0 -20
  246. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +0 -63
  247. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js.map +0 -1
  248. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.d.ts +0 -56
  249. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +0 -64
  250. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js.map +0 -1
  251. package/es/chat-engine/components/a2ui/primitives/A2UISlider.d.ts +0 -12
  252. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +0 -55
  253. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js.map +0 -1
  254. package/es/chat-engine/components/a2ui/primitives/A2UIText.d.ts +0 -12
  255. package/es/chat-engine/components/a2ui/primitives/A2UIText.js +0 -104
  256. package/es/chat-engine/components/a2ui/primitives/A2UIText.js.map +0 -1
  257. package/es/chat-engine/components/a2ui/primitives/A2UITextField.d.ts +0 -12
  258. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +0 -80
  259. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js.map +0 -1
  260. package/es/chat-engine/components/a2ui/primitives/index.d.ts +0 -15
  261. package/es/chat-engine/components/a2ui/primitives/index.js +0 -39
  262. package/es/chat-engine/components/a2ui/primitives/index.js.map +0 -1
  263. package/es/chat-engine/components/a2ui/registry.d.ts +0 -35
  264. package/es/chat-engine/components/a2ui/registry.js +0 -74
  265. package/es/chat-engine/components/a2ui/registry.js.map +0 -1
  266. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.d.ts +0 -36
  267. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js +0 -36
  268. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js.map +0 -1
  269. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.d.ts +0 -46
  270. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js +0 -36
  271. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js.map +0 -1
  272. package/es/chat-engine/components/json-render/SurfaceStateManager.d.ts +0 -113
  273. package/es/chat-engine/components/json-render/SurfaceStateManager.js +0 -195
  274. package/es/chat-engine/components/json-render/SurfaceStateManager.js.map +0 -1
  275. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.d.ts +0 -49
  276. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js +0 -307
  277. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js.map +0 -1
  278. package/es/chat-engine/components/json-render/adapters/a2ui-types.d.ts +0 -96
  279. package/es/chat-engine/components/json-render/adapters/a2ui-types.js +0 -7
  280. package/es/chat-engine/components/json-render/adapters/a2ui-types.js.map +0 -1
  281. package/es/chat-engine/components/json-render/adapters/index.d.ts +0 -7
  282. package/es/chat-engine/components/json-render/adapters/index.js +0 -11
  283. package/es/chat-engine/components/json-render/adapters/index.js.map +0 -1
  284. package/es/chat-engine/components/json-render/catalog/a2ui-binding.d.ts +0 -64
  285. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js +0 -36
  286. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js.map +0 -1
  287. package/es/chat-engine/components/json-render/catalog/a2ui-registry.d.ts +0 -78
  288. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js +0 -36
  289. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js.map +0 -1
  290. package/es/chat-engine/components/json-render/catalog/button.d.ts +0 -14
  291. package/es/chat-engine/components/json-render/catalog/button.js +0 -71
  292. package/es/chat-engine/components/json-render/catalog/button.js.map +0 -1
  293. package/es/chat-engine/components/json-render/catalog/card.d.ts +0 -11
  294. package/es/chat-engine/components/json-render/catalog/card.js +0 -57
  295. package/es/chat-engine/components/json-render/catalog/card.js.map +0 -1
  296. package/es/chat-engine/components/json-render/catalog/index.d.ts +0 -128
  297. package/es/chat-engine/components/json-render/catalog/index.js +0 -36
  298. package/es/chat-engine/components/json-render/catalog/index.js.map +0 -1
  299. package/es/chat-engine/components/json-render/catalog/input.d.ts +0 -20
  300. package/es/chat-engine/components/json-render/catalog/input.js +0 -36
  301. package/es/chat-engine/components/json-render/catalog/input.js.map +0 -1
  302. package/es/chat-engine/components/json-render/catalog/layout.d.ts +0 -44
  303. package/es/chat-engine/components/json-render/catalog/layout.js +0 -129
  304. package/es/chat-engine/components/json-render/catalog/layout.js.map +0 -1
  305. package/es/chat-engine/components/json-render/catalog/text.d.ts +0 -11
  306. package/es/chat-engine/components/json-render/catalog/text.js +0 -31
  307. package/es/chat-engine/components/json-render/catalog/text.js.map +0 -1
  308. package/es/chat-engine/components/json-render/catalog.d.ts +0 -614
  309. package/es/chat-engine/components/json-render/catalog.js +0 -779
  310. package/es/chat-engine/components/json-render/catalog.js.map +0 -1
  311. package/es/chat-engine/components/json-render/config.d.ts +0 -154
  312. package/es/chat-engine/components/json-render/config.js +0 -36
  313. package/es/chat-engine/components/json-render/config.js.map +0 -1
  314. package/es/chat-engine/components/json-render/engine.d.ts +0 -58
  315. package/es/chat-engine/components/json-render/engine.js +0 -88
  316. package/es/chat-engine/components/json-render/engine.js.map +0 -1
  317. package/es/chat-engine/components/json-render/performance.d.ts +0 -91
  318. package/es/chat-engine/components/json-render/performance.js +0 -135
  319. package/es/chat-engine/components/json-render/performance.js.map +0 -1
  320. package/es/chat-engine/components/json-render/renderer/index.d.ts +0 -71
  321. package/es/chat-engine/components/json-render/renderer/index.js +0 -125
  322. package/es/chat-engine/components/json-render/renderer/index.js.map +0 -1
  323. package/es/chat-engine/components/json-render/renderer.d.ts +0 -71
  324. package/es/chat-engine/components/json-render/renderer.js +0 -124
  325. package/es/chat-engine/components/json-render/renderer.js.map +0 -1
  326. package/es/chat-engine/core/a2ui/index.d.ts +0 -10
  327. package/es/chat-engine/core/a2ui/index.js +0 -24
  328. package/es/chat-engine/core/a2ui/index.js.map +0 -1
  329. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.d.ts +0 -197
  330. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +0 -438
  331. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js.map +0 -1
  332. package/es/chat-engine/core/a2ui/processor/ComponentTree.d.ts +0 -53
  333. package/es/chat-engine/core/a2ui/processor/ComponentTree.js +0 -158
  334. package/es/chat-engine/core/a2ui/processor/ComponentTree.js.map +0 -1
  335. package/es/chat-engine/core/a2ui/processor/DataStore.d.ts +0 -63
  336. package/es/chat-engine/core/a2ui/processor/DataStore.js +0 -172
  337. package/es/chat-engine/core/a2ui/processor/DataStore.js.map +0 -1
  338. package/es/chat-engine/core/a2ui/processor/PathResolver.d.ts +0 -47
  339. package/es/chat-engine/core/a2ui/processor/PathResolver.js +0 -99
  340. package/es/chat-engine/core/a2ui/processor/PathResolver.js.map +0 -1
  341. package/es/chat-engine/core/a2ui/types/index.d.ts +0 -4
  342. package/es/chat-engine/core/a2ui/types/index.js +0 -9
  343. package/es/chat-engine/core/a2ui/types/index.js.map +0 -1
  344. package/es/chat-engine/core/a2ui/types/types.d.ts +0 -770
  345. package/es/chat-engine/core/a2ui/types/types.js +0 -104
  346. package/es/chat-engine/core/a2ui/types/types.js.map +0 -1
  347. package/es/chat-engine/core/a2ui/utils/binding.d.ts +0 -34
  348. package/es/chat-engine/core/a2ui/utils/binding.js +0 -1784
  349. package/es/chat-engine/core/a2ui/utils/binding.js.map +0 -1
  350. package/es/chat-engine/core/a2ui/utils/index.d.ts +0 -5
  351. package/es/chat-engine/core/a2ui/utils/index.js +0 -13
  352. package/es/chat-engine/core/a2ui/utils/index.js.map +0 -1
  353. package/es/chat-engine/core/a2ui/utils/validation.d.ts +0 -70
  354. package/es/chat-engine/core/a2ui/utils/validation.js +0 -333
  355. package/es/chat-engine/core/a2ui/utils/validation.js.map +0 -1
  356. package/es/chat-engine/core/adapters/agui/activity-manager.d.ts +0 -102
  357. package/es/chat-engine/core/adapters/agui/activity-manager.js +0 -150
  358. package/es/chat-engine/core/adapters/agui/activity-manager.js.map +0 -1
  359. package/es/chat-engine/core/adapters/agui/events.d.ts +0 -1550
  360. package/es/chat-engine/core/adapters/agui/events.js +0 -199
  361. package/es/chat-engine/core/adapters/agui/events.js.map +0 -1
  362. package/es/chat-engine/core/adapters/agui/state-manager.d.ts +0 -99
  363. package/es/chat-engine/core/adapters/agui/state-manager.js +0 -174
  364. package/es/chat-engine/core/adapters/agui/state-manager.js.map +0 -1
  365. package/es/chat-engine/core/adapters/agui/types.d.ts +0 -818
  366. package/es/chat-engine/core/adapters/agui/types.js +0 -95
  367. package/es/chat-engine/core/adapters/agui/types.js.map +0 -1
  368. package/es/chat-engine/hooks/a2ui/A2UIContext.d.ts +0 -90
  369. package/es/chat-engine/hooks/a2ui/A2UIContext.js +0 -97
  370. package/es/chat-engine/hooks/a2ui/A2UIContext.js.map +0 -1
  371. package/es/chat-engine/hooks/a2ui/index.d.ts +0 -12
  372. package/es/chat-engine/hooks/a2ui/index.js +0 -19
  373. package/es/chat-engine/hooks/a2ui/index.js.map +0 -1
  374. package/es/chat-engine/hooks/a2ui/useA2UIAction.d.ts +0 -40
  375. package/es/chat-engine/hooks/a2ui/useA2UIAction.js +0 -74
  376. package/es/chat-engine/hooks/a2ui/useA2UIAction.js.map +0 -1
  377. package/es/chat-engine/hooks/a2ui/useA2UISurface.d.ts +0 -36
  378. package/es/chat-engine/hooks/a2ui/useA2UISurface.js +0 -39
  379. package/es/chat-engine/hooks/a2ui/useA2UISurface.js.map +0 -1
  380. package/es/chat-engine/hooks/a2ui/useDataBinding.d.ts +0 -53
  381. package/es/chat-engine/hooks/a2ui/useDataBinding.js +0 -111
  382. package/es/chat-engine/hooks/a2ui/useDataBinding.js.map +0 -1
  383. package/es/chat-engine/hooks/useJsonRenderActivity.d.ts +0 -56
  384. package/es/chat-engine/hooks/useJsonRenderActivity.js +0 -63
  385. package/es/chat-engine/hooks/useJsonRenderActivity.js.map +0 -1
  386. package/es/chat-filecard/_example-js/base.d.ts +0 -1
  387. package/es/chat-loading/_example-js/base.d.ts +0 -2
  388. package/es/chat-loading/_example-js/text.d.ts +0 -2
  389. package/es/chat-markdown/_example-js/base.d.ts +0 -1
  390. package/es/chat-markdown/_example-js/custom.d.ts +0 -2
  391. package/es/chat-markdown/_example-js/event.d.ts +0 -1
  392. package/es/chat-markdown/_example-js/footnote.d.ts +0 -2
  393. package/es/chat-markdown/_example-js/plugin.d.ts +0 -2
  394. package/es/chat-markdown/_example-js/theme.d.ts +0 -2
  395. package/es/chat-message/_example-js/action.d.ts +0 -1
  396. package/es/chat-message/_example-js/base.d.ts +0 -1
  397. package/es/chat-message/_example-js/configure.d.ts +0 -1
  398. package/es/chat-message/_example-js/content.d.ts +0 -1
  399. package/es/chat-message/_example-js/custom.d.ts +0 -1
  400. package/es/chat-message/_example-js/handle-actions.d.ts +0 -7
  401. package/es/chat-message/_example-js/status.d.ts +0 -1
  402. package/es/chat-message/_example-js/think.d.ts +0 -1
  403. package/es/chat-sender/_example-js/attachment.d.ts +0 -2
  404. package/es/chat-sender/_example-js/base.d.ts +0 -2
  405. package/es/chat-sender/_example-js/custom.d.ts +0 -2
  406. package/es/chat-thinking/_example-js/base.d.ts +0 -1
  407. package/es/chat-thinking/_example-js/style.d.ts +0 -1
  408. package/es/chatbot/_example-js/agent.d.ts +0 -1
  409. package/es/chatbot/_example-js/agui.d.ts +0 -13
  410. package/es/chatbot/_example-js/backup/travel.d.ts +0 -1
  411. package/es/chatbot/_example-js/basic.d.ts +0 -1
  412. package/es/chatbot/_example-js/code.d.ts +0 -1
  413. package/es/chatbot/_example-js/components/ItineraryCard.d.ts +0 -3
  414. package/es/chatbot/_example-js/components/login.d.ts +0 -1
  415. package/es/chatbot/_example-js/comprehensive.d.ts +0 -1
  416. package/es/chatbot/_example-js/custom-content.d.ts +0 -1
  417. package/es/chatbot/_example-js/custom-merge.d.ts +0 -1
  418. package/es/chatbot/_example-js/custom.d.ts +0 -1
  419. package/es/chatbot/_example-js/docs.d.ts +0 -1
  420. package/es/chatbot/_example-js/image.d.ts +0 -1
  421. package/es/chatbot/_example-js/initial-messages.d.ts +0 -9
  422. package/es/chatbot/_example-js/instance-methods.d.ts +0 -14
  423. package/es/chatbot/_example-js/nostream.d.ts +0 -1
  424. package/es/chatbot/_example-js/quick-start.d.ts +0 -9
  425. package/es/chatbot/_example-js/research.d.ts +0 -1
  426. package/es/chatbot/_example-js/role-message-config.d.ts +0 -22
  427. package/es/chatbot/_example-js/sender-config.d.ts +0 -20
  428. package/es/chatbot/_example-js/service-config.d.ts +0 -17
  429. package/es/chatbot/_example-js/simple.d.ts +0 -1
  430. package/es/chatbot/_example-js/utils/messageRenderer.d.ts +0 -5
  431. package/es/chatbot/docs/react-best-practice.d.ts +0 -13
@@ -0,0 +1,71 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.16
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import { DefaultStreamHandler } from './default-stream-handler.js';
8
+ export { DefaultStreamHandler } from './default-stream-handler.js';
9
+ import { AGUIStreamHandler } from './agui-stream-handler.js';
10
+ export { AGUIStreamHandler } from './agui-stream-handler.js';
11
+ import { OpenClawStreamHandler } from './openclaw-stream-handler.js';
12
+ export { OpenClawStreamHandler } from './openclaw-stream-handler.js';
13
+ import '@babel/runtime/helpers/defineProperty';
14
+ import '@babel/runtime/helpers/asyncToGenerator';
15
+ import '@babel/runtime/helpers/classCallCheck';
16
+ import '@babel/runtime/helpers/createClass';
17
+ import '@babel/runtime/regenerator';
18
+ import '../event-bus/index.js';
19
+ import '../event-bus/ChatEventBus.js';
20
+ import '@babel/runtime/helpers/toConsumableArray';
21
+ import '../event-bus/types.js';
22
+ import '../utils/logger.js';
23
+ import '../adapters/openclaw/index.js';
24
+ import '@babel/runtime/helpers/possibleConstructorReturn';
25
+ import '@babel/runtime/helpers/getPrototypeOf';
26
+ import '@babel/runtime/helpers/inherits';
27
+ import '../utils/eventEmitter.js';
28
+ import '../server/websocket-client.js';
29
+ import '../server/errors.js';
30
+ import '@babel/runtime/helpers/wrapNativeSuper';
31
+ import '../adapters/openclaw/event-mapper.js';
32
+ import '@babel/runtime/helpers/typeof';
33
+ import '../adapters/openclaw/types/events.js';
34
+ import '../adapters/shared/index.js';
35
+ import '../adapters/shared/content-factory.js';
36
+ import '../adapters/agui/utils.js';
37
+ import '../adapters/shared/merge-utils.js';
38
+ import '../adapters/shared/activity-manager.js';
39
+ import '../adapters/agui/ActivityManager.js';
40
+ import '../utils/index.js';
41
+ import '../utils/immutable-patch.js';
42
+ import '@babel/runtime/helpers/objectWithoutProperties';
43
+ import '@babel/runtime/helpers/toArray';
44
+ import '../adapters/openclaw/rpc-handler.js';
45
+ import '../adapters/openclaw/types/config.js';
46
+ import '../adapters/openclaw/utils.js';
47
+ import '../adapters/openclaw/history-converter.js';
48
+ import '../adapters/openclaw/types/index.js';
49
+ import '../adapters/openclaw/types/messages.js';
50
+
51
+ function createStreamHandler(options) {
52
+ var protocol = options.protocol,
53
+ llmService = options.llmService,
54
+ aguiAdapter = options.aguiAdapter;
55
+ switch (protocol) {
56
+ case "agui":
57
+ if (!aguiAdapter) {
58
+ throw new Error("AGUIAdapter is required for agui protocol");
59
+ }
60
+ return new AGUIStreamHandler(llmService, aguiAdapter);
61
+ case "openclaw":
62
+ return new OpenClawStreamHandler({
63
+ llmService: llmService
64
+ });
65
+ default:
66
+ return new DefaultStreamHandler(llmService);
67
+ }
68
+ }
69
+
70
+ export { createStreamHandler };
71
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../pro-components/chat/chat-engine/core/stream-handlers/index.ts"],"sourcesContent":["/**\n * StreamHandler 模块\n *\n * 统一导出 + 工厂函数\n */\nexport type { IStreamHandler, StreamContext } from './types';\nexport { DefaultStreamHandler } from './default-stream-handler';\nexport { AGUIStreamHandler } from './agui-stream-handler';\nexport { OpenClawStreamHandler } from './openclaw-stream-handler';\n\nimport type { AGUIAdapter } from '../adapters/agui';\nimport { LLMService } from '../server';\nimport type { IStreamHandler } from './types';\nimport { DefaultStreamHandler } from './default-stream-handler';\nimport { AGUIStreamHandler } from './agui-stream-handler';\nimport { OpenClawStreamHandler } from './openclaw-stream-handler';\n\nexport interface CreateStreamHandlerOptions {\n protocol?: 'default' | 'agui' | 'openclaw';\n llmService: LLMService;\n aguiAdapter?: AGUIAdapter | null;\n}\n\n/**\n * 工厂函数:根据协议类型创建对应的 StreamHandler\n */\nexport function createStreamHandler(options: CreateStreamHandlerOptions): IStreamHandler {\n const { protocol, llmService, aguiAdapter } = options;\n\n switch (protocol) {\n case 'agui':\n if (!aguiAdapter) {\n throw new Error('AGUIAdapter is required for agui protocol');\n }\n return new AGUIStreamHandler(llmService, aguiAdapter);\n\n case 'openclaw':\n return new OpenClawStreamHandler({ llmService });\n\n default:\n return new DefaultStreamHandler(llmService);\n }\n}\n"],"names":["createStreamHandler","options","protocol","llmService","aguiAdapter","Error","AGUIStreamHandler","OpenClawStreamHandler","DefaultStreamHandler"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BO,SAASA,oBAAoBC,OAAqD,EAAA;AACvF,EAAA,IAAQC,QAAA,GAAsCD,OAAA,CAAtCC,QAAA;IAAUC,UAAY,GAAgBF,OAAA,CAA5BE,UAAY;IAAAC,WAAA,GAAgBH,OAAA,CAAhBG,WAAA,CAAA;AAEtB,EAAA,QAAAF,QAAA;AACD,IAAA,KAAA,MAAA;MACH,IAAI,CAACE,WAAa,EAAA;AACV,QAAA,MAAA,IAAIC,MAAM,2CAA2C,CAAA,CAAA;AAC7D,OAAA;AACO,MAAA,OAAA,IAAIC,iBAAkB,CAAAH,UAAA,EAAYC,WAAW,CAAA,CAAA;AAEjD,IAAA,KAAA,UAAA;MACH,OAAO,IAAIG,qBAAAA,CAAsB;AAAEJ,QAAAA,UAAA,EAAAA,UAAAA;AAAW,OAAC,CAAA,CAAA;AAAA,IAAA;AAGxC,MAAA,OAAA,IAAIK,qBAAqBL,UAAU,CAAA,CAAA;AAAA,GAAA;AAEhD;;;;"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * OpenClaw 协议流式处理器
3
+ *
4
+ * 负责 OpenClaw WebSocket 连接的完整生命周期管理:
5
+ * - 适配器创建与持有(从 LLMService 移入)
6
+ * - 连接建立与认证
7
+ * - 消息发送与流式响应
8
+ * - 历史消息接收
9
+ *
10
+ * OpenClaw 的 chunk.data 已经是 AIMessageContent 格式(由 OpenClawAdapter 转换)
11
+ */
12
+ import type { ChatRequestParams, ChatServiceConfig } from '../type';
13
+ import { OpenClawAdapter } from '../adapters/openclaw';
14
+ import type { IStreamHandler, StreamContext } from './types';
15
+ import type { LLMService } from '../server';
16
+ export interface OpenClawStreamHandlerOptions {
17
+ /** LLM 服务引用(用于 SSE/Batch 的 abort) */
18
+ llmService: LLMService;
19
+ }
20
+ export declare class OpenClawStreamHandler implements IStreamHandler {
21
+ private openclawAdapter;
22
+ private llmService;
23
+ private logger;
24
+ constructor(options: OpenClawStreamHandlerOptions);
25
+ /**
26
+ * 初始化:在 ChatEngine.init() 阶段预建立 WebSocket 连接
27
+ *
28
+ * Gateway 会在 connect 响应中推送历史消息,通过 onHistoryLoaded 自动回填。
29
+ */
30
+ initConnection(config: ChatServiceConfig, onHistoryLoaded?: (messages: any[]) => void): Promise<void>;
31
+ handleStream(params: ChatRequestParams, context: StreamContext): Promise<void>;
32
+ /**
33
+ * 中止当前请求
34
+ */
35
+ abort(): void;
36
+ /**
37
+ * 销毁处理器,释放 OpenClaw 连接资源
38
+ */
39
+ destroy(): Promise<void>;
40
+ /**
41
+ * 获取适配器实例(供外部调用 invokeAction 等)
42
+ */
43
+ getAdapter(): OpenClawAdapter | null;
44
+ /**
45
+ * 确保 OpenClaw 适配器已创建
46
+ */
47
+ private ensureAdapter;
48
+ /**
49
+ * 更新 init 阶段的回调(连接 + 历史消息)
50
+ */
51
+ private updateCallbacks;
52
+ /**
53
+ * 更新流式请求阶段的回调(消息处理 + 事件发布)
54
+ */
55
+ private updateStreamCallbacks;
56
+ }
@@ -0,0 +1,269 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.16
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
8
+ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
9
+ import _createClass from '@babel/runtime/helpers/createClass';
10
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
11
+ import _regeneratorRuntime from '@babel/runtime/regenerator';
12
+ import '../event-bus/index.js';
13
+ import { LoggerManager } from '../utils/logger.js';
14
+ import { OpenClawAdapter } from '../adapters/openclaw/index.js';
15
+ import { ChatEngineEventType } from '../event-bus/types.js';
16
+ import '../event-bus/ChatEventBus.js';
17
+ import '@babel/runtime/helpers/toConsumableArray';
18
+ import '@babel/runtime/helpers/possibleConstructorReturn';
19
+ import '@babel/runtime/helpers/getPrototypeOf';
20
+ import '@babel/runtime/helpers/inherits';
21
+ import '../utils/eventEmitter.js';
22
+ import '../server/websocket-client.js';
23
+ import '../server/errors.js';
24
+ import '@babel/runtime/helpers/wrapNativeSuper';
25
+ import '../adapters/openclaw/event-mapper.js';
26
+ import '@babel/runtime/helpers/typeof';
27
+ import '../adapters/openclaw/types/events.js';
28
+ import '../adapters/shared/index.js';
29
+ import '../adapters/shared/content-factory.js';
30
+ import '../adapters/agui/utils.js';
31
+ import '../adapters/shared/merge-utils.js';
32
+ import '../adapters/shared/activity-manager.js';
33
+ import '../adapters/agui/ActivityManager.js';
34
+ import '../utils/index.js';
35
+ import '../utils/immutable-patch.js';
36
+ import '@babel/runtime/helpers/objectWithoutProperties';
37
+ import '@babel/runtime/helpers/toArray';
38
+ import '../adapters/openclaw/rpc-handler.js';
39
+ import '../adapters/openclaw/types/config.js';
40
+ import '../adapters/openclaw/utils.js';
41
+ import '../adapters/openclaw/history-converter.js';
42
+ import '../adapters/openclaw/types/index.js';
43
+ import '../adapters/openclaw/types/messages.js';
44
+
45
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
46
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
47
+ var OpenClawStreamHandler = /*#__PURE__*/function () {
48
+ function OpenClawStreamHandler(options) {
49
+ _classCallCheck(this, OpenClawStreamHandler);
50
+ _defineProperty(this, "openclawAdapter", null);
51
+ _defineProperty(this, "logger", LoggerManager.getLogger());
52
+ this.llmService = options.llmService;
53
+ }
54
+ return _createClass(OpenClawStreamHandler, [{
55
+ key: "initConnection",
56
+ value: function () {
57
+ var _initConnection = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(config, onHistoryLoaded) {
58
+ var _config$onError, _t;
59
+ return _regeneratorRuntime.wrap(function (_context) {
60
+ while (1) switch (_context.prev = _context.next) {
61
+ case 0:
62
+ this.ensureAdapter(config);
63
+ this.updateCallbacks(config, onHistoryLoaded);
64
+ _context.prev = 1;
65
+ if (this.openclawAdapter.isAuthenticated()) {
66
+ _context.next = 2;
67
+ break;
68
+ }
69
+ _context.next = 2;
70
+ return this.openclawAdapter.connect();
71
+ case 2:
72
+ _context.next = 4;
73
+ break;
74
+ case 3:
75
+ _context.prev = 3;
76
+ _t = _context["catch"](1);
77
+ (_config$onError = config.onError) === null || _config$onError === void 0 || _config$onError.call(config, _t);
78
+ this.logger.error("OpenClaw pre-connect failed:", _t);
79
+ case 4:
80
+ case "end":
81
+ return _context.stop();
82
+ }
83
+ }, _callee, this, [[1, 3]]);
84
+ }));
85
+ function initConnection(_x, _x2) {
86
+ return _initConnection.apply(this, arguments);
87
+ }
88
+ return initConnection;
89
+ }()
90
+ }, {
91
+ key: "handleStream",
92
+ value: function () {
93
+ var _handleStream = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(params, context) {
94
+ var messageId, config, _config$onRequest, requestParams, _t2, _t3;
95
+ return _regeneratorRuntime.wrap(function (_context2) {
96
+ while (1) switch (_context2.prev = _context2.next) {
97
+ case 0:
98
+ messageId = context.messageId, config = context.config;
99
+ this.ensureAdapter(config);
100
+ this.updateStreamCallbacks(config, context);
101
+ _context2.prev = 1;
102
+ if (this.openclawAdapter.isAuthenticated()) {
103
+ _context2.next = 2;
104
+ break;
105
+ }
106
+ _context2.next = 2;
107
+ return this.openclawAdapter.connect();
108
+ case 2:
109
+ _context2.next = 3;
110
+ return (_config$onRequest = config.onRequest) === null || _config$onRequest === void 0 ? void 0 : _config$onRequest.call(config, params);
111
+ case 3:
112
+ _t2 = _context2.sent;
113
+ if (_t2) {
114
+ _context2.next = 4;
115
+ break;
116
+ }
117
+ _t2 = {};
118
+ case 4:
119
+ requestParams = _t2;
120
+ _context2.next = 5;
121
+ return this.openclawAdapter.sendMessage(params, requestParams);
122
+ case 5:
123
+ _context2.next = 7;
124
+ break;
125
+ case 6:
126
+ _context2.prev = 6;
127
+ _t3 = _context2["catch"](1);
128
+ if (messageId) {
129
+ context.handleError(messageId, _t3);
130
+ }
131
+ throw _t3;
132
+ case 7:
133
+ case "end":
134
+ return _context2.stop();
135
+ }
136
+ }, _callee2, this, [[1, 6]]);
137
+ }));
138
+ function handleStream(_x3, _x4) {
139
+ return _handleStream.apply(this, arguments);
140
+ }
141
+ return handleStream;
142
+ }()
143
+ }, {
144
+ key: "abort",
145
+ value: function abort() {
146
+ var _this$openclawAdapter;
147
+ (_this$openclawAdapter = this.openclawAdapter) === null || _this$openclawAdapter === void 0 || _this$openclawAdapter.abort();
148
+ }
149
+ }, {
150
+ key: "destroy",
151
+ value: function () {
152
+ var _destroy = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
153
+ return _regeneratorRuntime.wrap(function (_context3) {
154
+ while (1) switch (_context3.prev = _context3.next) {
155
+ case 0:
156
+ if (!this.openclawAdapter) {
157
+ _context3.next = 2;
158
+ break;
159
+ }
160
+ _context3.next = 1;
161
+ return this.openclawAdapter.destroy();
162
+ case 1:
163
+ this.openclawAdapter = null;
164
+ case 2:
165
+ case "end":
166
+ return _context3.stop();
167
+ }
168
+ }, _callee3, this);
169
+ }));
170
+ function destroy() {
171
+ return _destroy.apply(this, arguments);
172
+ }
173
+ return destroy;
174
+ }()
175
+ }, {
176
+ key: "getAdapter",
177
+ value: function getAdapter() {
178
+ return this.openclawAdapter;
179
+ }
180
+ }, {
181
+ key: "ensureAdapter",
182
+ value: function ensureAdapter(config) {
183
+ if (this.openclawAdapter) return;
184
+ var openclawConfig = config.openclaw || {};
185
+ var adapterConfig = _objectSpread({
186
+ endpoint: config.endpoint,
187
+ timeout: config.timeout,
188
+ maxRetries: config.maxRetries,
189
+ retryInterval: config.retryInterval
190
+ }, openclawConfig);
191
+ this.openclawAdapter = new OpenClawAdapter(adapterConfig);
192
+ }
193
+ }, {
194
+ key: "updateCallbacks",
195
+ value: function updateCallbacks(config, _onHistoryLoaded) {
196
+ var _this = this;
197
+ if (!this.openclawAdapter) return;
198
+ this.openclawAdapter.setCallbacks({
199
+ onConnected: function onConnected() {
200
+ _this.logger.info("OpenClaw connected");
201
+ },
202
+ onStart: function onStart() {
203
+ var _config$onStart;
204
+ (_config$onStart = config.onStart) === null || _config$onStart === void 0 || _config$onStart.call(config, "openclaw:stream:start");
205
+ },
206
+ onMessage: function onMessage() {},
207
+ onComplete: function onComplete() {},
208
+ onError: function onError(error) {
209
+ var _config$onError2;
210
+ (_config$onError2 = config.onError) === null || _config$onError2 === void 0 || _config$onError2.call(config, error);
211
+ },
212
+ onHistoryLoaded: function onHistoryLoaded(messages) {
213
+ _this.logger.info("OpenClaw history loaded: ".concat(messages.length, " messages"));
214
+ _onHistoryLoaded === null || _onHistoryLoaded === void 0 || _onHistoryLoaded(messages);
215
+ }
216
+ });
217
+ }
218
+ }, {
219
+ key: "updateStreamCallbacks",
220
+ value: function updateStreamCallbacks(config, context) {
221
+ var _this2 = this;
222
+ if (!this.openclawAdapter) return;
223
+ var messageId = context.messageId;
224
+ this.openclawAdapter.setCallbacks({
225
+ onConnected: function onConnected() {
226
+ _this2.logger.info("OpenClaw connected");
227
+ },
228
+ onStart: function onStart() {
229
+ var _config$onStart2;
230
+ (_config$onStart2 = config.onStart) === null || _config$onStart2 === void 0 || _config$onStart2.call(config, "openclaw:stream:start");
231
+ },
232
+ onMessage: function onMessage(content) {
233
+ if (context.getStopReceive() || !messageId) return;
234
+ var chunk = {
235
+ event: "openclaw",
236
+ data: content
237
+ };
238
+ var result = content;
239
+ if (config.onMessage) {
240
+ var userResult = config.onMessage(chunk, context.messageStore.getMessageByID(messageId), result);
241
+ if (userResult) {
242
+ result = userResult;
243
+ }
244
+ }
245
+ context.eventBus.emit(ChatEngineEventType.REQUEST_STREAM, {
246
+ messageId: messageId,
247
+ chunk: chunk,
248
+ content: result
249
+ });
250
+ context.processMessageResult(messageId, result);
251
+ },
252
+ onComplete: function onComplete(isAborted, requestParams) {
253
+ if (messageId) {
254
+ context.handleComplete(messageId, isAborted, requestParams || context.config);
255
+ }
256
+ },
257
+ onError: function onError(error) {
258
+ if (messageId) context.handleError(messageId, error);
259
+ },
260
+ onHistoryLoaded: function onHistoryLoaded(messages) {
261
+ _this2.logger.info("OpenClaw history loaded during stream: ".concat(messages.length, " messages (ignored)"));
262
+ }
263
+ });
264
+ }
265
+ }]);
266
+ }();
267
+
268
+ export { OpenClawStreamHandler };
269
+ //# sourceMappingURL=openclaw-stream-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw-stream-handler.js","sources":["../../../../../pro-components/chat/chat-engine/core/stream-handlers/openclaw-stream-handler.ts"],"sourcesContent":["/**\n * OpenClaw 协议流式处理器\n *\n * 负责 OpenClaw WebSocket 连接的完整生命周期管理:\n * - 适配器创建与持有(从 LLMService 移入)\n * - 连接建立与认证\n * - 消息发送与流式响应\n * - 历史消息接收\n *\n * OpenClaw 的 chunk.data 已经是 AIMessageContent 格式(由 OpenClawAdapter 转换)\n */\nimport type { AIMessageContent, ChatRequestParams, ChatServiceConfig, SSEChunkData } from '../type';\nimport { ChatEngineEventType } from '../event-bus';\nimport { LoggerManager } from '../utils/logger';\nimport {\n OpenClawAdapter,\n type OpenClawAdapterConfig,\n} from '../adapters/openclaw';\nimport type { IStreamHandler, StreamContext } from './types';\nimport type { LLMService } from '../server';\n\nexport interface OpenClawStreamHandlerOptions {\n /** LLM 服务引用(用于 SSE/Batch 的 abort) */\n llmService: LLMService;\n}\n\nexport class OpenClawStreamHandler implements IStreamHandler {\n private openclawAdapter: OpenClawAdapter | null = null;\n private llmService: LLMService;\n private logger = LoggerManager.getLogger();\n\n constructor(options: OpenClawStreamHandlerOptions) {\n this.llmService = options.llmService;\n }\n\n /**\n * 初始化:在 ChatEngine.init() 阶段预建立 WebSocket 连接\n *\n * Gateway 会在 connect 响应中推送历史消息,通过 onHistoryLoaded 自动回填。\n */\n async initConnection(config: ChatServiceConfig, onHistoryLoaded?: (messages: any[]) => void): Promise<void> {\n this.ensureAdapter(config);\n this.updateCallbacks(config, onHistoryLoaded);\n\n try {\n if (!this.openclawAdapter!.isAuthenticated()) {\n await this.openclawAdapter!.connect();\n }\n } catch (error) {\n config.onError?.(error as Error);\n // 连接失败不抛出,允许后续 sendMessage 时重试\n this.logger.error('OpenClaw pre-connect failed:', error);\n }\n }\n\n async handleStream(params: ChatRequestParams, context: StreamContext): Promise<void> {\n const { messageId, config } = context;\n\n this.ensureAdapter(config);\n this.updateStreamCallbacks(config, context);\n\n try {\n // 连接 WebSocket(如果未连接,比如 init 阶段连接失败需要重试)\n if (!this.openclawAdapter!.isAuthenticated()) {\n await this.openclawAdapter!.connect();\n }\n\n // 通过 onRequest 获取用户自定义的业务参数\n const requestParams = (await config.onRequest?.(params)) || {};\n\n // 发送消息(requestParams 包含用户自定义的 sessionKey、token 等)\n await this.openclawAdapter!.sendMessage(params, requestParams as Record<string, unknown>);\n } catch (error) {\n if (messageId) {\n context.handleError(messageId, error);\n }\n throw error;\n }\n }\n\n /**\n * 中止当前请求\n */\n abort(): void {\n this.openclawAdapter?.abort();\n }\n\n /**\n * 销毁处理器,释放 OpenClaw 连接资源\n */\n async destroy(): Promise<void> {\n if (this.openclawAdapter) {\n await this.openclawAdapter.destroy();\n this.openclawAdapter = null;\n }\n }\n\n /**\n * 获取适配器实例(供外部调用 invokeAction 等)\n */\n getAdapter(): OpenClawAdapter | null {\n return this.openclawAdapter;\n }\n\n // ==================== 内部方法 ====================\n\n /**\n * 确保 OpenClaw 适配器已创建\n */\n private ensureAdapter(config: ChatServiceConfig): void {\n if (this.openclawAdapter) return;\n\n const openclawConfig = config.openclaw || {};\n\n const adapterConfig: OpenClawAdapterConfig = {\n endpoint: config.endpoint!,\n timeout: config.timeout,\n maxRetries: config.maxRetries,\n retryInterval: config.retryInterval,\n ...openclawConfig,\n };\n\n this.openclawAdapter = new OpenClawAdapter(adapterConfig);\n }\n\n /**\n * 更新 init 阶段的回调(连接 + 历史消息)\n */\n private updateCallbacks(config: ChatServiceConfig, onHistoryLoaded?: (messages: any[]) => void): void {\n if (!this.openclawAdapter) return;\n\n this.openclawAdapter.setCallbacks({\n onConnected: () => {\n this.logger.info('OpenClaw connected');\n },\n onStart: () => {\n config.onStart?.('openclaw:stream:start');\n },\n onMessage: () => {\n // init 阶段无需处理消息\n },\n onComplete: () => {\n // init 阶段无需处理完成\n },\n onError: (error) => {\n config.onError?.(error);\n },\n onHistoryLoaded: (messages) => {\n this.logger.info(`OpenClaw history loaded: ${messages.length} messages`);\n onHistoryLoaded?.(messages);\n },\n });\n }\n\n /**\n * 更新流式请求阶段的回调(消息处理 + 事件发布)\n */\n private updateStreamCallbacks(config: ChatServiceConfig, context: StreamContext): void {\n if (!this.openclawAdapter) return;\n\n const { messageId } = context;\n\n this.openclawAdapter.setCallbacks({\n onConnected: () => {\n this.logger.info('OpenClaw connected');\n },\n onStart: () => {\n config.onStart?.('openclaw:stream:start');\n },\n onMessage: (content) => {\n if (context.getStopReceive() || !messageId) return;\n\n // OpenClaw 的 content 已经是 AIMessageContent 格式(由 OpenClawAdapter 转换)\n const chunk: SSEChunkData = {\n event: 'openclaw',\n data: content,\n };\n let result: AIMessageContent | AIMessageContent[] | null = content;\n\n // 允许用户通过 onMessage 进行自定义处理\n if (config.onMessage) {\n const userResult = config.onMessage(chunk, context.messageStore.getMessageByID(messageId), result);\n if (userResult) {\n result = userResult;\n }\n }\n\n // 发布流数据事件\n context.eventBus.emit(ChatEngineEventType.REQUEST_STREAM, {\n messageId,\n chunk,\n content: result,\n });\n\n // 处理消息结果\n context.processMessageResult(messageId, result);\n },\n onComplete: (isAborted, requestParams) => {\n if (messageId) {\n context.handleComplete(messageId, isAborted, requestParams || context.config);\n }\n },\n onError: (error) => {\n if (messageId) context.handleError(messageId, error);\n },\n onHistoryLoaded: (messages) => {\n // 流式阶段不应再处理历史消息\n this.logger.info(`OpenClaw history loaded during stream: ${messages.length} messages (ignored)`);\n },\n });\n }\n}\n"],"names":["OpenClawStreamHandler","options","_classCallCheck","_defineProperty","LoggerManager","getLogger","llmService","_createClass","key","value","_initConnection","_asyncToGenerator","_regeneratorRuntime","mark","_callee","config","onHistoryLoaded","_config$onError","_t","wrap","_context","prev","next","ensureAdapter","updateCallbacks","openclawAdapter","isAuthenticated","connect","onError","call","logger","error","stop","initConnection","_x","_x2","apply","arguments","_handleStream","_callee2","params","context","messageId","_config$onRequest","requestParams","_t2","_t3","_context2","updateStreamCallbacks","onRequest","sendMessage","handleError","handleStream","_x3","_x4","abort","_this$openclawAdapter","_destroy","_callee3","_context3","destroy","getAdapter","openclawConfig","openclaw","adapterConfig","_objectSpread","endpoint","timeout","maxRetries","retryInterval","OpenClawAdapter","_this","setCallbacks","onConnected","info","onStart","_config$onStart","onMessage","onComplete","_config$onError2","messages","concat","length","_this2","_config$onStart2","content","getStopReceive","chunk","event","data","result","userResult","messageStore","getMessageByID","eventBus","emit","ChatEngineEventType","REQUEST_STREAM","processMessageResult","isAborted","handleComplete"],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * 流式处理策略接口
3
+ *
4
+ * 将不同协议(Default/AGUI/OpenClaw)的流式处理逻辑从 ChatEngine 中抽出,
5
+ * 遵循策略模式,使 ChatEngine 专注于编排,新协议无需修改 ChatEngine。
6
+ */
7
+ import type { AIMessageContent, ChatRequestParams, ChatServiceConfig } from '../type';
8
+ import type { IChatEventBus } from '../event-bus';
9
+ import type { MessageStore } from '../store/message';
10
+ /**
11
+ * 流式处理上下文
12
+ *
13
+ * 由 ChatEngine 构建,提供 StreamHandler 所需的引擎能力
14
+ */
15
+ export interface StreamContext {
16
+ /** 当前 AI 消息 ID */
17
+ messageId?: string;
18
+ /** 聊天服务配置 */
19
+ config: ChatServiceConfig;
20
+ /** 是否停止接收 */
21
+ getStopReceive: () => boolean;
22
+ /** 处理消息结果(内容更新 + 事件发布) */
23
+ processMessageResult: (messageId: string, result: AIMessageContent | AIMessageContent[] | null) => void;
24
+ /** 错误处理 */
25
+ handleError: (messageId: string, error: unknown) => void;
26
+ /** 完成处理 */
27
+ handleComplete: (messageId: string, isAborted: boolean, params: ChatRequestParams, chunk?: unknown) => void;
28
+ /** 消息存储(用于获取消息) */
29
+ messageStore: MessageStore;
30
+ /** 事件总线 */
31
+ eventBus: IChatEventBus;
32
+ }
33
+ /**
34
+ * 流式处理策略接口
35
+ */
36
+ export interface IStreamHandler {
37
+ /**
38
+ * 处理流式请求
39
+ * @param params 请求参数
40
+ * @param context 流式处理上下文
41
+ */
42
+ handleStream(params: ChatRequestParams, context: StreamContext): Promise<void>;
43
+ /**
44
+ * 销毁处理器,释放资源
45
+ */
46
+ destroy?(): void;
47
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.16
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -158,6 +158,16 @@ export interface DefaultEngineCallbacks {
158
158
  onAbort?: () => Promise<void>;
159
159
  /** 错误处理 */
160
160
  onError?: (err: Error | Response) => void;
161
+ /**
162
+ * 历史消息加载回调(OpenClaw 专属)
163
+ *
164
+ * OpenClaw Gateway 在 connect 响应中可能附带历史消息(messages 字段),
165
+ * 当检测到时会自动转换为 ChatEngine 格式并触发此回调。
166
+ * 上层可据此回填历史对话到界面。
167
+ *
168
+ * @param messages 已转换为 ChatEngine 格式的历史消息数组
169
+ */
170
+ onHistoryLoaded?: (messages: ChatMessagesData[]) => void;
161
171
  /**
162
172
  * Chunk 验证器 - 用于验证 SSE 数据块是否有效
163
173
  *
@@ -205,6 +215,14 @@ export interface IChatEngine {
205
215
  content?: AIMessageContent[];
206
216
  sendRequest?: boolean;
207
217
  }): Promise<void>;
218
+ /**
219
+ * 恢复未完成的 Agent 运行(断点续传)
220
+ * @param params 请求参数,应包含 threadId / runId 等后端识别续传所需的信息
221
+ * @returns 新创建的 AI 消息 ID
222
+ * @description 创建空的 AI 消息后发起请求,后端通过 MESSAGES_SNAPSHOT 恢复已有内容,
223
+ * 然后继续推增量事件直到 RUN_FINISHED
224
+ */
225
+ resumeRun(params?: ChatRequestParams): Promise<string>;
208
226
  /**
209
227
  * 重新生成AI回复
210
228
  * @param keepVersion 是否保留历史版本,默认为false
@@ -18,8 +18,8 @@ import '@babel/runtime/helpers/classCallCheck';
18
18
  import '@babel/runtime/helpers/createClass';
19
19
  import '@babel/runtime/regenerator';
20
20
  import '../core/adapters/agui/index.js';
21
- import '@babel/runtime/helpers/toConsumableArray';
22
21
  import '../core/adapters/agui/event-mapper.js';
22
+ import '@babel/runtime/helpers/toConsumableArray';
23
23
  import '../core/adapters/agui/types/index.js';
24
24
  import 'zod';
25
25
  import '@babel/runtime/helpers/possibleConstructorReturn';
@@ -51,8 +51,12 @@ import '../core/server/sse-client.js';
51
51
  import '../core/server/connection-manager.js';
52
52
  import '../core/server/sse-parser.js';
53
53
  import '../core/server/types.js';
54
- import '../core/adapters/openclaw/index.js';
55
54
  import '../core/server/websocket-client.js';
55
+ import '../core/stream-handlers/index.js';
56
+ import '../core/stream-handlers/default-stream-handler.js';
57
+ import '../core/stream-handlers/agui-stream-handler.js';
58
+ import '../core/stream-handlers/openclaw-stream-handler.js';
59
+ import '../core/adapters/openclaw/index.js';
56
60
  import '../core/adapters/openclaw/event-mapper.js';
57
61
  import '../core/adapters/openclaw/types/events.js';
58
62
  import '../core/adapters/shared/index.js';
@@ -62,6 +66,7 @@ import '../core/adapters/shared/activity-manager.js';
62
66
  import '../core/adapters/openclaw/rpc-handler.js';
63
67
  import '../core/adapters/openclaw/types/config.js';
64
68
  import '../core/adapters/openclaw/utils.js';
69
+ import '../core/adapters/openclaw/history-converter.js';
65
70
  import '../core/adapters/openclaw/types/index.js';
66
71
  import '../core/adapters/openclaw/types/messages.js';
67
72
  import '../core/adapters/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -15,8 +15,8 @@ import '@babel/runtime/helpers/classCallCheck';
15
15
  import '@babel/runtime/helpers/createClass';
16
16
  import '@babel/runtime/regenerator';
17
17
  import '../core/adapters/agui/index.js';
18
- import '@babel/runtime/helpers/toConsumableArray';
19
18
  import '../core/adapters/agui/event-mapper.js';
19
+ import '@babel/runtime/helpers/toConsumableArray';
20
20
  import '../core/adapters/agui/types/index.js';
21
21
  import 'zod';
22
22
  import '@babel/runtime/helpers/possibleConstructorReturn';
@@ -47,8 +47,12 @@ import '../core/server/sse-client.js';
47
47
  import '../core/server/connection-manager.js';
48
48
  import '../core/server/sse-parser.js';
49
49
  import '../core/server/types.js';
50
- import '../core/adapters/openclaw/index.js';
51
50
  import '../core/server/websocket-client.js';
51
+ import '../core/stream-handlers/index.js';
52
+ import '../core/stream-handlers/default-stream-handler.js';
53
+ import '../core/stream-handlers/agui-stream-handler.js';
54
+ import '../core/stream-handlers/openclaw-stream-handler.js';
55
+ import '../core/adapters/openclaw/index.js';
52
56
  import '../core/adapters/openclaw/event-mapper.js';
53
57
  import '../core/adapters/openclaw/types/events.js';
54
58
  import '../core/adapters/shared/index.js';
@@ -58,6 +62,7 @@ import '../core/adapters/shared/activity-manager.js';
58
62
  import '../core/adapters/openclaw/rpc-handler.js';
59
63
  import '../core/adapters/openclaw/types/config.js';
60
64
  import '../core/adapters/openclaw/utils.js';
65
+ import '../core/adapters/openclaw/history-converter.js';
61
66
  import '../core/adapters/openclaw/types/index.js';
62
67
  import '../core/adapters/openclaw/types/messages.js';
63
68
  import '../core/adapters/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"useAgentState.js","sources":["../../../../pro-components/chat/chat-engine/hooks/useAgentState.ts"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport { useState, useEffect, useRef, createContext, useContext, useMemo } from 'react';\n// import { stateManager } from 'tdesign-web-components/lib/chat-engine';\nimport { stateManager } from '../core';\n\n/**\n * 状态订阅相关类型定义\n */\n\nexport interface StateActionOptions {\n /**\n * 初始状态\n */\n initialState?: Record<string, any>;\n /**\n * 只订阅特定key的变化\n */\n subscribeKey?: string;\n}\n\nexport interface UseStateActionReturn {\n /**\n * 全量状态Map - 包含所有stateKey的状态\n * 格式: { [stateKey]: stateData }\n */\n stateMap: Record<string, any>;\n /**\n * 当前最新的状态key\n */\n currentStateKey: string | null;\n /**\n * 设置状态Map,用于加载历史对话消息中的state数据\n */\n setStateMap: (stateMap: Record<string, any> | ((prev: Record<string, any>) => Record<string, any>)) => void;\n /**\n * 获取当前完整状态的方法\n */\n getCurrentState: () => Record<string, any>;\n /**\n * 获取特定 key 状态的方法\n */\n getStateByKey: (key: string) => any;\n}\n\nexport const useAgentState = <T = any>(options: StateActionOptions = {}): UseStateActionReturn => {\n const { initialState, subscribeKey } = options;\n const [stateMap, setStateMap] = useState<Record<string, any>>(initialState || {});\n const [currentStateKey, setCurrentStateKey] = useState<string | null>(null);\n\n // 使用 ref 来避免不必要的重新渲染\n const stateMapRef = useRef(stateMap);\n stateMapRef.current = stateMap;\n\n useEffect(\n () =>\n stateManager.subscribeToLatest((newState: T, newStateKey: string) => {\n // 如果指定了 subscribeKey,只有匹配时才更新状态\n if (subscribeKey && newStateKey !== subscribeKey) {\n // 仍然更新内部状态,但不触发重新渲染\n stateMapRef.current = {\n ...stateMapRef.current,\n [newStateKey]: newState,\n };\n return;\n }\n\n setStateMap((prev) => ({\n ...prev,\n [newStateKey]: newState,\n }));\n setCurrentStateKey(newStateKey);\n }),\n [subscribeKey],\n );\n\n return {\n stateMap: stateMapRef.current,\n currentStateKey,\n setStateMap,\n getCurrentState: () => stateMapRef.current,\n getStateByKey: (key: string) => stateMapRef.current[key],\n };\n};\n\n// 创建 AgentState Context\nexport const AgentStateContext = createContext<UseStateActionReturn | null>(null);\n\n// 简化的状态选择器\nexport const useAgentStateDataByKey = (stateKey?: string) => {\n const contextState = useContext(AgentStateContext);\n const independentState = useAgentState({ subscribeKey: stateKey });\n\n return useMemo(() => {\n if (contextState) {\n // 有 Provider,使用 Context 状态\n const { stateMap } = contextState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }\n\n // 没有 Provider,使用独立状态\n const { stateMap } = independentState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }, [\n stateKey,\n // 关键:添加和 useAgentStateByKey 相同的深度依赖逻辑\n contextState && (stateKey ? contextState.stateMap[stateKey] : JSON.stringify(contextState.stateMap)),\n independentState && (stateKey ? independentState.stateMap[stateKey] : JSON.stringify(independentState.stateMap)),\n ]);\n};\n\n// 导出 Context Hook\nexport const useAgentStateContext = (): UseStateActionReturn => {\n const context = useContext(AgentStateContext);\n\n if (!context) {\n throw new Error('useAgentState must be used within AgentStateProvider');\n }\n\n return context;\n};\n"],"names":["useAgentState","options","arguments","length","undefined","initialState","subscribeKey","_useState","useState","_useState2","_slicedToArray","stateMap","setStateMap","_useState3","_useState4","currentStateKey","setCurrentStateKey","stateMapRef","useRef","current","useEffect","stateManager","subscribeToLatest","newState","newStateKey","_objectSpread","_defineProperty","prev","getCurrentState","getStateByKey","key","AgentStateContext","createContext","useAgentStateDataByKey","stateKey","contextState","useContext","independentState","useMemo","JSON","stringify","useAgentStateContext","context","Error"],"mappings":"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"}
1
+ {"version":3,"file":"useAgentState.js","sources":["../../../../pro-components/chat/chat-engine/hooks/useAgentState.ts"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport { useState, useEffect, useRef, createContext, useContext, useMemo } from 'react';\n// import { stateManager } from 'tdesign-web-components/lib/chat-engine';\nimport { stateManager } from '../core';\n\n/**\n * 状态订阅相关类型定义\n */\n\nexport interface StateActionOptions {\n /**\n * 初始状态\n */\n initialState?: Record<string, any>;\n /**\n * 只订阅特定key的变化\n */\n subscribeKey?: string;\n}\n\nexport interface UseStateActionReturn {\n /**\n * 全量状态Map - 包含所有stateKey的状态\n * 格式: { [stateKey]: stateData }\n */\n stateMap: Record<string, any>;\n /**\n * 当前最新的状态key\n */\n currentStateKey: string | null;\n /**\n * 设置状态Map,用于加载历史对话消息中的state数据\n */\n setStateMap: (stateMap: Record<string, any> | ((prev: Record<string, any>) => Record<string, any>)) => void;\n /**\n * 获取当前完整状态的方法\n */\n getCurrentState: () => Record<string, any>;\n /**\n * 获取特定 key 状态的方法\n */\n getStateByKey: (key: string) => any;\n}\n\nexport const useAgentState = <T = any>(options: StateActionOptions = {}): UseStateActionReturn => {\n const { initialState, subscribeKey } = options;\n const [stateMap, setStateMap] = useState<Record<string, any>>(initialState || {});\n const [currentStateKey, setCurrentStateKey] = useState<string | null>(null);\n\n // 使用 ref 来避免不必要的重新渲染\n const stateMapRef = useRef(stateMap);\n stateMapRef.current = stateMap;\n\n useEffect(\n () =>\n stateManager.subscribeToLatest((newState: T, newStateKey: string) => {\n // 如果指定了 subscribeKey,只有匹配时才更新状态\n if (subscribeKey && newStateKey !== subscribeKey) {\n // 仍然更新内部状态,但不触发重新渲染\n stateMapRef.current = {\n ...stateMapRef.current,\n [newStateKey]: newState,\n };\n return;\n }\n\n setStateMap((prev) => ({\n ...prev,\n [newStateKey]: newState,\n }));\n setCurrentStateKey(newStateKey);\n }),\n [subscribeKey],\n );\n\n return {\n stateMap: stateMapRef.current,\n currentStateKey,\n setStateMap,\n getCurrentState: () => stateMapRef.current,\n getStateByKey: (key: string) => stateMapRef.current[key],\n };\n};\n\n// 创建 AgentState Context\nexport const AgentStateContext = createContext<UseStateActionReturn | null>(null);\n\n// 简化的状态选择器\nexport const useAgentStateDataByKey = (stateKey?: string) => {\n const contextState = useContext(AgentStateContext);\n const independentState = useAgentState({ subscribeKey: stateKey });\n\n return useMemo(() => {\n if (contextState) {\n // 有 Provider,使用 Context 状态\n const { stateMap } = contextState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }\n\n // 没有 Provider,使用独立状态\n const { stateMap } = independentState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }, [\n stateKey,\n // 关键:添加和 useAgentStateByKey 相同的深度依赖逻辑\n contextState && (stateKey ? contextState.stateMap[stateKey] : JSON.stringify(contextState.stateMap)),\n independentState && (stateKey ? independentState.stateMap[stateKey] : JSON.stringify(independentState.stateMap)),\n ]);\n};\n\n// 导出 Context Hook\nexport const useAgentStateContext = (): UseStateActionReturn => {\n const context = useContext(AgentStateContext);\n\n if (!context) {\n throw new Error('useAgentState must be used within AgentStateProvider');\n }\n\n return context;\n};\n"],"names":["useAgentState","options","arguments","length","undefined","initialState","subscribeKey","_useState","useState","_useState2","_slicedToArray","stateMap","setStateMap","_useState3","_useState4","currentStateKey","setCurrentStateKey","stateMapRef","useRef","current","useEffect","stateManager","subscribeToLatest","newState","newStateKey","_objectSpread","_defineProperty","prev","getCurrentState","getStateByKey","key","AgentStateContext","createContext","useAgentStateDataByKey","stateKey","contextState","useContext","independentState","useMemo","JSON","stringify","useAgentStateContext","context","Error"],"mappings":"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"}