@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,120 @@
1
+ /**
2
+ * OpenClaw 历史消息转换器
3
+ *
4
+ * 将 OpenClaw `sessions.history` RPC 返回的消息格式转换为 ChatEngine 的 ChatMessagesData 格式。
5
+ *
6
+ * OpenClaw 历史消息格式(来自实际 Gateway 返回):
7
+ *
8
+ * 1. user 消息:
9
+ * {
10
+ * role: 'user',
11
+ * content: [{ type: 'text', text: '...' }],
12
+ * timestamp: number,
13
+ * senderLabel: string,
14
+ * }
15
+ *
16
+ * 2. assistant 消息:
17
+ * {
18
+ * role: 'assistant',
19
+ * content: [
20
+ * { type: 'text', text: '...' }, // 文本内容
21
+ * { type: 'toolCall', id: '...', name: '...', arguments: {...} }, // 工具调用
22
+ * ],
23
+ * api: string, provider: string, model: string,
24
+ * stopReason: 'stop' | 'toolUse' | 'aborted',
25
+ * timestamp: number,
26
+ * errorMessage?: string,
27
+ * openclawAbort?: { aborted: boolean, origin: string, runId: string },
28
+ * }
29
+ *
30
+ * 3. toolResult 消息:
31
+ * {
32
+ * role: 'toolResult',
33
+ * toolCallId: string,
34
+ * toolName: string,
35
+ * content: [{ type: 'text', text: '...' }],
36
+ * isError: boolean,
37
+ * timestamp: number,
38
+ * }
39
+ */
40
+ import type { ChatMessagesData } from '../../type';
41
+ /**
42
+ * OpenClaw 历史消息内容项
43
+ */
44
+ export interface OpenClawHistoryContentItem {
45
+ type: string;
46
+ text?: string;
47
+ id?: string;
48
+ name?: string;
49
+ arguments?: Record<string, unknown>;
50
+ [key: string]: unknown;
51
+ }
52
+ /**
53
+ * OpenClaw 历史消息
54
+ */
55
+ export interface OpenClawHistoryMessage {
56
+ role: 'user' | 'assistant' | 'toolResult' | 'system';
57
+ content?: OpenClawHistoryContentItem[] | string;
58
+ timestamp?: number;
59
+ senderLabel?: string;
60
+ api?: string;
61
+ provider?: string;
62
+ model?: string;
63
+ stopReason?: string;
64
+ errorMessage?: string;
65
+ openclawAbort?: {
66
+ aborted: boolean;
67
+ origin: string;
68
+ runId: string;
69
+ };
70
+ toolCallId?: string;
71
+ toolName?: string;
72
+ isError?: boolean;
73
+ }
74
+ /**
75
+ * OpenClaw sessions.history 响应
76
+ */
77
+ export interface OpenClawHistoryResponse {
78
+ sessionKey: string;
79
+ sessionId: string;
80
+ messages: OpenClawHistoryMessage[];
81
+ thinkingLevel?: string;
82
+ }
83
+ /**
84
+ * 将 OpenClaw 历史消息数组转换为 ChatEngine 的 ChatMessagesData 数组
85
+ *
86
+ * 转换策略:
87
+ * 1. user → UserMessage(直接映射文本内容)
88
+ * 2. assistant → AIMessage(文本内容 + toolCall 转为 toolcall content)
89
+ * 3. toolResult → 合并到前一个 assistant 消息的对应 toolcall 中作为 result
90
+ * 4. 跳过空内容和被中止的消息
91
+ * 5. 连续的 assistant 消息(stopReason: 'toolUse' 后跟 toolResult 再跟 assistant)
92
+ * 会被合并为一条完整的 AIMessage
93
+ *
94
+ * @param messages OpenClaw 格式的历史消息数组
95
+ * @param options 转换选项
96
+ * @returns ChatEngine 格式的消息数组
97
+ */
98
+ export declare function convertOpenClawHistory(messages: OpenClawHistoryMessage[], options?: ConvertHistoryOptions): ChatMessagesData[];
99
+ /**
100
+ * 从 OpenClaw sessions.history 响应体中提取并转换消息
101
+ * 这是一个便捷方法,直接接受 RPC 响应的 payload
102
+ */
103
+ export declare function convertOpenClawHistoryResponse(response: OpenClawHistoryResponse, options?: ConvertHistoryOptions): ChatMessagesData[];
104
+ export interface ConvertHistoryOptions {
105
+ /**
106
+ * 是否将 toolCall 的详细参数和结果展示在 toolcall 组件中
107
+ * 默认 true
108
+ */
109
+ showToolCallDetails?: boolean;
110
+ /**
111
+ * 是否跳过被中止的消息
112
+ * 默认 true
113
+ */
114
+ skipAborted?: boolean;
115
+ /**
116
+ * 自定义 toolCall 渲染名映射
117
+ * 例如 { 'read': 'file_reader', 'exec': 'command_runner' }
118
+ */
119
+ toolCallNameMap?: Record<string, string>;
120
+ }
@@ -0,0 +1,251 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.16
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
8
+ import '../shared/index.js';
9
+ import { generateUUID } from './utils.js';
10
+ import { createToolCallContent } from '../agui/utils.js';
11
+ import '../shared/content-factory.js';
12
+ import '../shared/merge-utils.js';
13
+ import '../shared/activity-manager.js';
14
+ import '../agui/ActivityManager.js';
15
+ import '@babel/runtime/helpers/classCallCheck';
16
+ import '@babel/runtime/helpers/createClass';
17
+ import '@babel/runtime/helpers/defineProperty';
18
+ import '../../utils/index.js';
19
+ import '../../utils/immutable-patch.js';
20
+ import '@babel/runtime/helpers/typeof';
21
+ import '@babel/runtime/helpers/objectWithoutProperties';
22
+ import '@babel/runtime/helpers/toArray';
23
+
24
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
25
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
26
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
27
+ function convertOpenClawHistory(messages, options) {
28
+ var result = [];
29
+ var toolResultMap = /* @__PURE__ */new Map();
30
+ var _iterator = _createForOfIteratorHelper(messages),
31
+ _step;
32
+ try {
33
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
34
+ var _msg = _step.value;
35
+ if (_msg.role === "toolResult" && _msg.toolCallId) {
36
+ var _msg$isError;
37
+ var _text = extractTextFromContent(_msg.content);
38
+ toolResultMap.set(_msg.toolCallId, {
39
+ content: _text,
40
+ isError: (_msg$isError = _msg.isError) !== null && _msg$isError !== void 0 ? _msg$isError : false
41
+ });
42
+ }
43
+ }
44
+ } catch (err) {
45
+ _iterator.e(err);
46
+ } finally {
47
+ _iterator.f();
48
+ }
49
+ var pendingAIMessage = null;
50
+ for (var i = 0; i < messages.length; i++) {
51
+ var msg = messages[i];
52
+ switch (msg.role) {
53
+ case "user":
54
+ {
55
+ if (pendingAIMessage) {
56
+ result.push(pendingAIMessage);
57
+ pendingAIMessage = null;
58
+ }
59
+ var userMsg = convertUserMessage(msg);
60
+ if (userMsg) {
61
+ result.push(userMsg);
62
+ }
63
+ break;
64
+ }
65
+ case "assistant":
66
+ {
67
+ if (isAbortedEmpty(msg)) {
68
+ break;
69
+ }
70
+ var aiContents = convertAssistantContent(msg, toolResultMap, options);
71
+ if (aiContents.length === 0) {
72
+ break;
73
+ }
74
+ if (pendingAIMessage) {
75
+ pendingAIMessage.content = [].concat(_toConsumableArray(pendingAIMessage.content || []), _toConsumableArray(aiContents));
76
+ if (msg.stopReason === "stop") {
77
+ pendingAIMessage.status = "complete";
78
+ }
79
+ } else {
80
+ pendingAIMessage = {
81
+ id: generateUUID(),
82
+ role: "assistant",
83
+ content: aiContents,
84
+ status: msg.stopReason === "stop" ? "complete" : "complete",
85
+ datetime: msg.timestamp ? new Date(msg.timestamp).toISOString() : void 0,
86
+ ext: {
87
+ model: msg.model,
88
+ provider: msg.provider
89
+ }
90
+ };
91
+ }
92
+ if (msg.stopReason === "stop" || msg.stopReason === "aborted") {
93
+ if (pendingAIMessage) {
94
+ result.push(pendingAIMessage);
95
+ pendingAIMessage = null;
96
+ }
97
+ }
98
+ break;
99
+ }
100
+ case "toolResult":
101
+ {
102
+ break;
103
+ }
104
+ case "system":
105
+ {
106
+ if (pendingAIMessage) {
107
+ result.push(pendingAIMessage);
108
+ pendingAIMessage = null;
109
+ }
110
+ var text = extractTextFromContent(msg.content);
111
+ if (text) {
112
+ result.push({
113
+ id: generateUUID(),
114
+ role: "system",
115
+ content: [{
116
+ type: "text",
117
+ data: text,
118
+ status: "complete"
119
+ }],
120
+ datetime: msg.timestamp ? new Date(msg.timestamp).toISOString() : void 0
121
+ });
122
+ }
123
+ break;
124
+ }
125
+ default:
126
+ break;
127
+ }
128
+ }
129
+ if (pendingAIMessage) {
130
+ result.push(pendingAIMessage);
131
+ }
132
+ return result;
133
+ }
134
+ function convertOpenClawHistoryResponse(response, options) {
135
+ return convertOpenClawHistory(response.messages || [], options);
136
+ }
137
+ function convertUserMessage(msg) {
138
+ var text = extractTextFromContent(msg.content);
139
+ if (!text) return null;
140
+ return {
141
+ id: generateUUID(),
142
+ role: "user",
143
+ content: [{
144
+ type: "text",
145
+ data: text
146
+ }],
147
+ datetime: msg.timestamp ? new Date(msg.timestamp).toISOString() : void 0
148
+ };
149
+ }
150
+ function convertAssistantContent(msg, toolResultMap, options) {
151
+ var contents = [];
152
+ var contentArr = normalizeContent(msg.content);
153
+ var _iterator2 = _createForOfIteratorHelper(contentArr),
154
+ _step2;
155
+ try {
156
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
157
+ var item = _step2.value;
158
+ switch (item.type) {
159
+ case "text":
160
+ {
161
+ if (item.text) {
162
+ contents.push({
163
+ type: "text",
164
+ data: item.text,
165
+ status: "complete"
166
+ });
167
+ }
168
+ break;
169
+ }
170
+ case "toolCall":
171
+ {
172
+ var toolCallId = item.id || "";
173
+ var toolCallName = getToolCallName(item.name, options);
174
+ var rawArgs = item.arguments;
175
+ var argsStr = rawArgs ? typeof rawArgs === "string" ? rawArgs : JSON.stringify(rawArgs) : "";
176
+ var toolResult = toolResultMap.get(toolCallId);
177
+ var resultStr = (toolResult === null || toolResult === void 0 ? void 0 : toolResult.content) || "";
178
+ var toolCall = {
179
+ toolCallId: toolCallId,
180
+ toolCallName: toolCallName,
181
+ eventType: toolResult ? "TOOL_CALL_RESULT" : "TOOL_CALL_START",
182
+ parentMessageId: "",
183
+ args: argsStr,
184
+ result: resultStr
185
+ };
186
+ var status = toolResult ? "complete" : "complete";
187
+ contents.push(createToolCallContent(toolCall, status, "append"));
188
+ break;
189
+ }
190
+ default:
191
+ if (item.text) {
192
+ contents.push({
193
+ type: "text",
194
+ data: item.text,
195
+ status: "complete"
196
+ });
197
+ }
198
+ break;
199
+ }
200
+ }
201
+ } catch (err) {
202
+ _iterator2.e(err);
203
+ } finally {
204
+ _iterator2.f();
205
+ }
206
+ return contents;
207
+ }
208
+ function extractTextFromContent(content) {
209
+ if (!content) return "";
210
+ if (typeof content === "string") return content;
211
+ if (!Array.isArray(content)) return "";
212
+ return content.filter(function (c) {
213
+ return (c === null || c === void 0 ? void 0 : c.type) === "text" && (c === null || c === void 0 ? void 0 : c.text);
214
+ }).map(function (c) {
215
+ return c.text;
216
+ }).join("");
217
+ }
218
+ function normalizeContent(content) {
219
+ if (!content) return [];
220
+ if (typeof content === "string") {
221
+ return [{
222
+ type: "text",
223
+ text: content
224
+ }];
225
+ }
226
+ if (Array.isArray(content)) return content;
227
+ return [];
228
+ }
229
+ function getToolCallName(name, options) {
230
+ if (options !== null && options !== void 0 && options.toolCallNameMap && name in options.toolCallNameMap) {
231
+ return options.toolCallNameMap[name];
232
+ }
233
+ return name || "unknown";
234
+ }
235
+ function isAbortedEmpty(msg) {
236
+ var _msg$openclawAbort;
237
+ if (msg.stopReason === "aborted" || (_msg$openclawAbort = msg.openclawAbort) !== null && _msg$openclawAbort !== void 0 && _msg$openclawAbort.aborted) {
238
+ var contentArr = normalizeContent(msg.content);
239
+ if (contentArr.length === 0) return true;
240
+ var hasContent = contentArr.some(function (c) {
241
+ if (c.type === "text" && c.text) return true;
242
+ if (c.type === "toolCall") return true;
243
+ return false;
244
+ });
245
+ return !hasContent;
246
+ }
247
+ return false;
248
+ }
249
+
250
+ export { convertOpenClawHistory, convertOpenClawHistoryResponse };
251
+ //# sourceMappingURL=history-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-converter.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/openclaw/history-converter.ts"],"sourcesContent":["/**\n * OpenClaw 历史消息转换器\n *\n * 将 OpenClaw `sessions.history` RPC 返回的消息格式转换为 ChatEngine 的 ChatMessagesData 格式。\n *\n * OpenClaw 历史消息格式(来自实际 Gateway 返回):\n *\n * 1. user 消息:\n * {\n * role: 'user',\n * content: [{ type: 'text', text: '...' }],\n * timestamp: number,\n * senderLabel: string,\n * }\n *\n * 2. assistant 消息:\n * {\n * role: 'assistant',\n * content: [\n * { type: 'text', text: '...' }, // 文本内容\n * { type: 'toolCall', id: '...', name: '...', arguments: {...} }, // 工具调用\n * ],\n * api: string, provider: string, model: string,\n * stopReason: 'stop' | 'toolUse' | 'aborted',\n * timestamp: number,\n * errorMessage?: string,\n * openclawAbort?: { aborted: boolean, origin: string, runId: string },\n * }\n *\n * 3. toolResult 消息:\n * {\n * role: 'toolResult',\n * toolCallId: string,\n * toolName: string,\n * content: [{ type: 'text', text: '...' }],\n * isError: boolean,\n * timestamp: number,\n * }\n */\nimport type {\n ChatMessagesData,\n AIMessageContent,\n TextContent,\n UserMessage,\n AIMessage,\n} from '../../type';\nimport { createToolCallContent } from '../shared';\nimport { generateUUID } from './utils';\n\n// ==================== OpenClaw 历史消息类型 ====================\n\n/**\n * OpenClaw 历史消息内容项\n */\nexport interface OpenClawHistoryContentItem {\n type: string;\n text?: string;\n // toolCall 类型\n id?: string;\n name?: string;\n arguments?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n/**\n * OpenClaw 历史消息\n */\nexport interface OpenClawHistoryMessage {\n role: 'user' | 'assistant' | 'toolResult' | 'system';\n content?: OpenClawHistoryContentItem[] | string;\n timestamp?: number;\n senderLabel?: string;\n // assistant 专有\n api?: string;\n provider?: string;\n model?: string;\n stopReason?: string;\n errorMessage?: string;\n openclawAbort?: {\n aborted: boolean;\n origin: string;\n runId: string;\n };\n // toolResult 专有\n toolCallId?: string;\n toolName?: string;\n isError?: boolean;\n}\n\n/**\n * OpenClaw sessions.history 响应\n */\nexport interface OpenClawHistoryResponse {\n sessionKey: string;\n sessionId: string;\n messages: OpenClawHistoryMessage[];\n thinkingLevel?: string;\n}\n\n// ==================== 转换器 ====================\n\n/**\n * 将 OpenClaw 历史消息数组转换为 ChatEngine 的 ChatMessagesData 数组\n *\n * 转换策略:\n * 1. user → UserMessage(直接映射文本内容)\n * 2. assistant → AIMessage(文本内容 + toolCall 转为 toolcall content)\n * 3. toolResult → 合并到前一个 assistant 消息的对应 toolcall 中作为 result\n * 4. 跳过空内容和被中止的消息\n * 5. 连续的 assistant 消息(stopReason: 'toolUse' 后跟 toolResult 再跟 assistant)\n * 会被合并为一条完整的 AIMessage\n *\n * @param messages OpenClaw 格式的历史消息数组\n * @param options 转换选项\n * @returns ChatEngine 格式的消息数组\n */\nexport function convertOpenClawHistory(\n messages: OpenClawHistoryMessage[],\n options?: ConvertHistoryOptions,\n): ChatMessagesData[] {\n const result: ChatMessagesData[] = [];\n const toolResultMap = new Map<string, { content: string; isError: boolean }>();\n\n // 第一遍:收集所有 toolResult,建立 toolCallId → result 映射\n for (const msg of messages) {\n if (msg.role === 'toolResult' && msg.toolCallId) {\n const text = extractTextFromContent(msg.content);\n toolResultMap.set(msg.toolCallId, {\n content: text,\n isError: msg.isError ?? false,\n });\n }\n }\n\n // 第二遍:转换消息\n // 用于追踪当前可合并的 assistant 消息\n let pendingAIMessage: AIMessage | null = null;\n\n for (let i = 0; i < messages.length; i++) {\n const msg = messages[i];\n\n switch (msg.role) {\n case 'user': {\n // 先 flush 之前的 pending AI 消息\n if (pendingAIMessage) {\n result.push(pendingAIMessage);\n pendingAIMessage = null;\n }\n const userMsg = convertUserMessage(msg);\n if (userMsg) {\n result.push(userMsg);\n }\n break;\n }\n\n case 'assistant': {\n // 跳过被中止且无内容的消息\n if (isAbortedEmpty(msg)) {\n break;\n }\n\n const aiContents = convertAssistantContent(msg, toolResultMap, options);\n\n if (aiContents.length === 0) {\n break;\n }\n\n if (pendingAIMessage) {\n // 合并到前一个 pending AI 消息中(多轮 tool loop 场景)\n pendingAIMessage.content = [...(pendingAIMessage.content || []), ...aiContents];\n // 更新 status\n if (msg.stopReason === 'stop') {\n pendingAIMessage.status = 'complete';\n }\n } else {\n pendingAIMessage = {\n id: generateUUID(),\n role: 'assistant',\n content: aiContents,\n status: msg.stopReason === 'stop' ? 'complete' : 'complete',\n datetime: msg.timestamp ? new Date(msg.timestamp).toISOString() : undefined,\n ext: {\n model: msg.model,\n provider: msg.provider,\n },\n };\n }\n\n // 如果 stopReason 是 'stop',flush 这个 AI 消息\n // 如果是 'toolUse',保持 pending 等待后续 toolResult + assistant 合并\n if (msg.stopReason === 'stop' || msg.stopReason === 'aborted') {\n if (pendingAIMessage) {\n result.push(pendingAIMessage);\n pendingAIMessage = null;\n }\n }\n break;\n }\n\n case 'toolResult': {\n // toolResult 已经在第一遍收集到 toolResultMap 中\n // 它们会在 convertAssistantContent 时自动关联到对应的 toolCall\n // 这里不需要额外处理\n break;\n }\n\n case 'system': {\n // flush pending\n if (pendingAIMessage) {\n result.push(pendingAIMessage);\n pendingAIMessage = null;\n }\n const text = extractTextFromContent(msg.content);\n if (text) {\n result.push({\n id: generateUUID(),\n role: 'system',\n content: [{ type: 'text', data: text, status: 'complete' }],\n datetime: msg.timestamp ? new Date(msg.timestamp).toISOString() : undefined,\n });\n }\n break;\n }\n\n default:\n break;\n }\n }\n\n // flush 最后一个 pending AI 消息\n if (pendingAIMessage) {\n result.push(pendingAIMessage);\n }\n\n return result;\n}\n\n/**\n * 从 OpenClaw sessions.history 响应体中提取并转换消息\n * 这是一个便捷方法,直接接受 RPC 响应的 payload\n */\nexport function convertOpenClawHistoryResponse(\n response: OpenClawHistoryResponse,\n options?: ConvertHistoryOptions,\n): ChatMessagesData[] {\n return convertOpenClawHistory(response.messages || [], options);\n}\n\n// ==================== 转换选项 ====================\n\nexport interface ConvertHistoryOptions {\n /**\n * 是否将 toolCall 的详细参数和结果展示在 toolcall 组件中\n * 默认 true\n */\n showToolCallDetails?: boolean;\n\n /**\n * 是否跳过被中止的消息\n * 默认 true\n */\n skipAborted?: boolean;\n\n /**\n * 自定义 toolCall 渲染名映射\n * 例如 { 'read': 'file_reader', 'exec': 'command_runner' }\n */\n toolCallNameMap?: Record<string, string>;\n}\n\n// ==================== 内部转换方法 ====================\n\n/**\n * 转换 user 消息\n */\nfunction convertUserMessage(msg: OpenClawHistoryMessage): UserMessage | null {\n const text = extractTextFromContent(msg.content);\n if (!text) return null;\n\n return {\n id: generateUUID(),\n role: 'user',\n content: [{ type: 'text', data: text }],\n datetime: msg.timestamp ? new Date(msg.timestamp).toISOString() : undefined,\n };\n}\n\n/**\n * 转换 assistant 消息的 content 数组为 AIMessageContent 数组\n */\nfunction convertAssistantContent(\n msg: OpenClawHistoryMessage,\n toolResultMap: Map<string, { content: string; isError: boolean }>,\n options?: ConvertHistoryOptions,\n): AIMessageContent[] {\n const contents: AIMessageContent[] = [];\n const contentArr = normalizeContent(msg.content);\n\n for (const item of contentArr) {\n switch (item.type) {\n case 'text': {\n if (item.text) {\n contents.push({\n type: 'text',\n data: item.text,\n status: 'complete',\n } as TextContent);\n }\n break;\n }\n\n case 'toolCall': {\n // 将 OpenClaw 历史中的 toolCall 转换为 ChatEngine 的 toolcall content\n const toolCallId = (item.id || '') as string;\n const toolCallName = getToolCallName(item.name as string, options);\n const rawArgs = item.arguments;\n const argsStr = rawArgs ? (typeof rawArgs === 'string' ? rawArgs : JSON.stringify(rawArgs)) : '';\n\n // 查找对应的 toolResult\n const toolResult = toolResultMap.get(toolCallId);\n const resultStr = toolResult?.content || '';\n\n const toolCall = {\n toolCallId,\n toolCallName,\n eventType: toolResult ? 'TOOL_CALL_RESULT' : 'TOOL_CALL_START',\n parentMessageId: '',\n args: argsStr,\n result: resultStr,\n };\n\n const status = toolResult ? 'complete' : 'complete';\n contents.push(createToolCallContent(toolCall, status, 'append'));\n break;\n }\n\n default:\n // 其他未知类型,尝试作为文本处理\n if (item.text) {\n contents.push({\n type: 'text',\n data: item.text,\n status: 'complete',\n } as TextContent);\n }\n break;\n }\n }\n\n return contents;\n}\n\n/**\n * 从 content 中提取文本\n */\nfunction extractTextFromContent(content: OpenClawHistoryMessage['content']): string {\n if (!content) return '';\n if (typeof content === 'string') return content;\n if (!Array.isArray(content)) return '';\n\n return content\n .filter((c) => c?.type === 'text' && c?.text)\n .map((c) => c.text!)\n .join('');\n}\n\n/**\n * 标准化 content 为数组\n */\nfunction normalizeContent(content: OpenClawHistoryMessage['content']): OpenClawHistoryContentItem[] {\n if (!content) return [];\n if (typeof content === 'string') {\n return [{ type: 'text', text: content }];\n }\n if (Array.isArray(content)) return content;\n return [];\n}\n\n/**\n * 获取映射后的工具名\n */\nfunction getToolCallName(name: string, options?: ConvertHistoryOptions): string {\n if (options?.toolCallNameMap && name in options.toolCallNameMap) {\n return options.toolCallNameMap[name];\n }\n return name || 'unknown';\n}\n\n/**\n * 判断消息是否为被中止的空消息\n */\nfunction isAbortedEmpty(msg: OpenClawHistoryMessage): boolean {\n if (msg.stopReason === 'aborted' || msg.openclawAbort?.aborted) {\n const contentArr = normalizeContent(msg.content);\n // 如果内容为空或只有空文本\n if (contentArr.length === 0) return true;\n const hasContent = contentArr.some((c) => {\n if (c.type === 'text' && c.text) return true;\n if (c.type === 'toolCall') return true;\n return false;\n });\n return !hasContent;\n }\n return false;\n}\n"],"names":["convertOpenClawHistory","messages","options","result","toolResultMap","Map","_iterator","_createForOfIteratorHelper","_step","s","n","done","msg","role","toolCallId","_msg$isError","text","extractTextFromContent","content","set","isError","err","e","f","pendingAIMessage","i","length","push","userMsg","convertUserMessage","isAbortedEmpty","aiContents","convertAssistantContent","concat","_toConsumableArray","stopReason","status","id","generateUUID","datetime","timestamp","Date","toISOString","ext","model","provider","type","data","convertOpenClawHistoryResponse","response","contents","contentArr","normalizeContent","_iterator2","_step2","item","toolCallName","getToolCallName","name","rawArgs","arguments","argsStr","JSON","stringify","toolResult","get","resultStr","toolCall","eventType","parentMessageId","args","createToolCallContent","Array","isArray","filter","c","map","join","toolCallNameMap","_msg$openclawAbort","openclawAbort","aborted","hasContent","some"],"mappings":"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"}
@@ -11,9 +11,11 @@ import EventEmitter from '../../utils/eventEmitter';
11
11
  import type { AIMessageContent, ChatRequestParams, SSEChunkData } from '../../type';
12
12
  import type { OpenClawConfig } from './types';
13
13
  import { OpenClawConnectionState } from './types/events';
14
+ import { type ConvertHistoryOptions } from './history-converter';
14
15
  export * from './types';
15
16
  export { OpenClawEventMapper, type EventMapResult } from './event-mapper';
16
17
  export { OpenClawRPCHandler, RPCError } from './rpc-handler';
18
+ export { convertOpenClawHistory, convertOpenClawHistoryResponse, type OpenClawHistoryMessage, type OpenClawHistoryResponse, type ConvertHistoryOptions, } from './history-converter';
17
19
  /**
18
20
  * OpenClaw 适配器回调接口
19
21
  */
@@ -30,6 +32,14 @@ export interface OpenClawAdapterCallbacks {
30
32
  onError?: (error: Error) => void;
31
33
  /** 消息内容更新 */
32
34
  onMessage?: (content: AIMessageContent | AIMessageContent[]) => void;
35
+ /**
36
+ * 历史消息加载完成
37
+ *
38
+ * OpenClaw Gateway 在 connect 响应中可能附带历史消息(messages 字段),
39
+ * 当检测到历史消息时,适配器会自动将其转换为 ChatEngine 格式并触发此回调。
40
+ * 上层可以通过 chatEngine.setMessages(messages, 'replace') 回填到对话界面。
41
+ */
42
+ onHistoryLoaded?: (messages: import('../../type').ChatMessagesData[]) => void;
33
43
  }
34
44
  /**
35
45
  * OpenClaw 适配器配置
@@ -115,6 +125,23 @@ export declare class OpenClawAdapter extends EventEmitter {
115
125
  action: string;
116
126
  payload: unknown;
117
127
  }): Promise<unknown>;
128
+ /**
129
+ * 获取会话历史消息
130
+ *
131
+ * 通过 OpenClaw 的 sessions.history RPC 方法获取指定会话的历史消息,
132
+ * 并自动转换为 ChatEngine 的 ChatMessagesData 格式。
133
+ *
134
+ * @param sessionKey - 会话标识
135
+ * @param options - 转换选项
136
+ * @returns ChatEngine 格式的消息数组,可直接传给 chatEngine.setMessages() 或 useChat 的 defaultMessages
137
+ *
138
+ * @example
139
+ * ```tsx
140
+ * const messages = await adapter.fetchHistory('agent:main:main');
141
+ * chatEngine.setMessages(messages, 'replace');
142
+ * ```
143
+ */
144
+ fetchHistory(sessionKey: string, options?: ConvertHistoryOptions): Promise<import('../../type').ChatMessagesData[]>;
118
145
  /**
119
146
  * 断开连接
120
147
  */
@@ -153,6 +180,9 @@ export declare class OpenClawAdapter extends EventEmitter {
153
180
  private handleEventFrame;
154
181
  /**
155
182
  * 处理连接挑战(握手)
183
+ *
184
+ * 认证成功后,如果 connect 响应中包含 messages 字段(历史消息),
185
+ * 会自动转换为 ChatEngine 格式并触发 onHistoryLoaded 回调。
156
186
  */
157
187
  private handleConnectChallenge;
158
188
  }