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

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 (526) hide show
  1. package/es/_chunks/{dep-3e40d789.js → dep-5d7a98b7.js} +2 -2
  2. package/es/_chunks/{dep-3e40d789.js.map → dep-5d7a98b7.js.map} +1 -1
  3. package/es/_chunks/{dep-1ca64fef.js → dep-907337f3.js} +2 -2
  4. package/es/_chunks/{dep-93283bbd.js.map → dep-907337f3.js.map} +1 -1
  5. package/es/_chunks/{dep-dfe91b1f.js → dep-e1e84ed7.js} +1 -1
  6. package/es/_chunks/{dep-13fe70ea.js.map → dep-e1e84ed7.js.map} +1 -1
  7. package/es/_chunks/{dep-076af7c3.js → dep-ee7a509c.js} +3 -3
  8. package/es/_chunks/{dep-076af7c3.js.map → dep-ee7a509c.js.map} +1 -1
  9. package/es/_util/reactify.js +1 -1
  10. package/es/_util/useDynamicStyle.js +1 -1
  11. package/es/attachments/index.js +1 -1
  12. package/es/chat-actionbar/index.js +1 -1
  13. package/es/chat-engine/components/activity/index.js +2 -2
  14. package/es/chat-engine/components/activity/registry.js +1 -1
  15. package/es/chat-engine/components/activity/render.js +2 -2
  16. package/es/chat-engine/components/activity/types.js +1 -1
  17. package/es/chat-engine/components/index.js +12 -6
  18. package/es/chat-engine/components/index.js.map +1 -1
  19. package/es/chat-engine/components/json-render/catalog/atomic/button.js +1 -1
  20. package/es/chat-engine/components/json-render/catalog/atomic/card.js +1 -1
  21. package/es/chat-engine/components/json-render/catalog/atomic/input.js +12 -6
  22. package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -1
  23. package/es/chat-engine/components/json-render/catalog/atomic/layout.js +1 -1
  24. package/es/chat-engine/components/json-render/catalog/atomic/text.js +1 -1
  25. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +1 -1
  26. package/es/chat-engine/components/json-render/contexts/actions.js +2 -2
  27. package/es/chat-engine/components/json-render/contexts/data.js +2 -2
  28. package/es/chat-engine/components/json-render/contexts/index.js +2 -2
  29. package/es/chat-engine/components/json-render/contexts/store.js +1 -1
  30. package/es/chat-engine/components/json-render/contexts/tree.js +1 -1
  31. package/es/chat-engine/components/json-render/contexts/validation.js +2 -2
  32. package/es/chat-engine/components/json-render/contexts/visibility.js +2 -2
  33. package/es/chat-engine/components/json-render/index.js +12 -6
  34. package/es/chat-engine/components/json-render/index.js.map +1 -1
  35. package/es/chat-engine/components/json-render/registry/a2ui-binding.js +12 -6
  36. package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -1
  37. package/es/chat-engine/components/json-render/registry/a2ui-registry.js +12 -6
  38. package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -1
  39. package/es/chat-engine/components/json-render/registry/config.js +12 -6
  40. package/es/chat-engine/components/json-render/registry/config.js.map +1 -1
  41. package/es/chat-engine/components/json-render/registry/index.js +12 -6
  42. package/es/chat-engine/components/json-render/registry/index.js.map +1 -1
  43. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +11 -5
  44. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -1
  45. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +3 -3
  46. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +2 -2
  47. package/es/chat-engine/components/json-render/renderer/_index.js +2 -2
  48. package/es/chat-engine/components/json-render/types.js +1 -1
  49. package/es/chat-engine/components/provider/agent-state.js +10 -4
  50. package/es/chat-engine/components/provider/agent-state.js.map +1 -1
  51. package/es/chat-engine/components/shared/ComponentErrorBoundary.js +1 -1
  52. package/es/chat-engine/components/shared/createRegistry.js +1 -1
  53. package/es/chat-engine/components/shared/index.js +1 -1
  54. package/es/chat-engine/components/shared/useRegistrationListener.js +1 -1
  55. package/es/chat-engine/components/toolcall/index.js +10 -4
  56. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  57. package/es/chat-engine/components/toolcall/registry.js +1 -1
  58. package/es/chat-engine/components/toolcall/render.js +9 -3
  59. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  60. package/es/chat-engine/components/toolcall/types.js +1 -1
  61. package/es/chat-engine/core/adapters/a2ui/index.js +1 -1
  62. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +1 -1
  63. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +1 -1
  64. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +1 -1
  65. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +1 -1
  66. package/es/chat-engine/core/adapters/a2ui/types/index.js +1 -1
  67. package/es/chat-engine/core/adapters/a2ui/types/types.js +1 -1
  68. package/es/chat-engine/core/adapters/a2ui/utils/binding.js +1 -1
  69. package/es/chat-engine/core/adapters/a2ui/utils/index.js +1 -1
  70. package/es/chat-engine/core/adapters/a2ui/utils/validation.js +1 -1
  71. package/es/chat-engine/core/adapters/agui/ActivityManager.js +1 -1
  72. package/es/chat-engine/core/adapters/agui/StateManager.js +1 -1
  73. package/es/chat-engine/core/adapters/agui/event-mapper.js +1 -1
  74. package/es/chat-engine/core/adapters/agui/index.js +21 -52
  75. package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
  76. package/es/chat-engine/core/adapters/agui/types/events.js +1 -1
  77. package/es/chat-engine/core/adapters/agui/types/index.js +1 -1
  78. package/es/chat-engine/core/adapters/agui/utils.d.ts +25 -2
  79. package/es/chat-engine/core/adapters/agui/utils.js +52 -12
  80. package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
  81. package/es/chat-engine/core/adapters/index.js +3 -1
  82. package/es/chat-engine/core/adapters/index.js.map +1 -1
  83. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +1 -1
  84. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +1 -1
  85. package/es/chat-engine/core/adapters/json-render/engine.js +1 -1
  86. package/es/chat-engine/core/adapters/json-render/index.js +1 -1
  87. package/es/chat-engine/core/adapters/json-render/types/a2ui.js +1 -1
  88. package/es/chat-engine/core/adapters/json-render/types/core.js +1 -1
  89. package/es/chat-engine/core/adapters/json-render/types/index.js +1 -1
  90. package/es/chat-engine/core/adapters/openclaw/device-key-manager.d.ts +65 -0
  91. package/es/chat-engine/core/adapters/openclaw/device-key-manager.js +375 -0
  92. package/es/chat-engine/core/adapters/openclaw/device-key-manager.js.map +1 -0
  93. package/es/chat-engine/core/adapters/openclaw/event-mapper.d.ts +36 -14
  94. package/es/chat-engine/core/adapters/openclaw/event-mapper.js +37 -21
  95. package/es/chat-engine/core/adapters/openclaw/event-mapper.js.map +1 -1
  96. package/es/chat-engine/core/adapters/openclaw/history-converter.d.ts +120 -0
  97. package/es/chat-engine/core/adapters/openclaw/history-converter.js +251 -0
  98. package/es/chat-engine/core/adapters/openclaw/history-converter.js.map +1 -0
  99. package/es/chat-engine/core/adapters/openclaw/index.d.ts +41 -0
  100. package/es/chat-engine/core/adapters/openclaw/index.js +146 -46
  101. package/es/chat-engine/core/adapters/openclaw/index.js.map +1 -1
  102. package/es/chat-engine/core/adapters/openclaw/rpc-handler.d.ts +13 -0
  103. package/es/chat-engine/core/adapters/openclaw/rpc-handler.js +20 -1
  104. package/es/chat-engine/core/adapters/openclaw/rpc-handler.js.map +1 -1
  105. package/es/chat-engine/core/adapters/openclaw/types/config.d.ts +17 -18
  106. package/es/chat-engine/core/adapters/openclaw/types/config.js +4 -2
  107. package/es/chat-engine/core/adapters/openclaw/types/config.js.map +1 -1
  108. package/es/chat-engine/core/adapters/openclaw/types/events.d.ts +5 -1
  109. package/es/chat-engine/core/adapters/openclaw/types/events.js +3 -1
  110. package/es/chat-engine/core/adapters/openclaw/types/events.js.map +1 -1
  111. package/es/chat-engine/core/adapters/openclaw/types/index.js +1 -1
  112. package/es/chat-engine/core/adapters/openclaw/types/messages.d.ts +22 -0
  113. package/es/chat-engine/core/adapters/openclaw/types/messages.js +1 -1
  114. package/es/chat-engine/core/adapters/openclaw/types/messages.js.map +1 -1
  115. package/es/chat-engine/core/adapters/openclaw/utils.js +1 -1
  116. package/es/chat-engine/core/adapters/openclaw/utils.js.map +1 -1
  117. package/es/chat-engine/core/adapters/shared/activity-manager.js +1 -1
  118. package/es/chat-engine/core/adapters/shared/content-factory.js +1 -1
  119. package/es/chat-engine/core/adapters/shared/index.js +1 -1
  120. package/es/chat-engine/core/adapters/shared/merge-utils.js +1 -1
  121. package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
  122. package/es/chat-engine/core/event-bus/index.js +1 -1
  123. package/es/chat-engine/core/event-bus/types.js +1 -1
  124. package/es/chat-engine/core/index.d.ts +27 -25
  125. package/es/chat-engine/core/index.js +231 -359
  126. package/es/chat-engine/core/index.js.map +1 -1
  127. package/es/chat-engine/core/processor/index.d.ts +32 -0
  128. package/es/chat-engine/core/processor/index.js +76 -1
  129. package/es/chat-engine/core/processor/index.js.map +1 -1
  130. package/es/chat-engine/core/server/batch-client.js +1 -1
  131. package/es/chat-engine/core/server/connection-manager.js +1 -1
  132. package/es/chat-engine/core/server/errors.js +1 -1
  133. package/es/chat-engine/core/server/index.js +1 -21
  134. package/es/chat-engine/core/server/index.js.map +1 -1
  135. package/es/chat-engine/core/server/llm-service.d.ts +7 -7
  136. package/es/chat-engine/core/server/llm-service.js +13 -140
  137. package/es/chat-engine/core/server/llm-service.js.map +1 -1
  138. package/es/chat-engine/core/server/sse-client.js +1 -1
  139. package/es/chat-engine/core/server/sse-parser.js +1 -1
  140. package/es/chat-engine/core/server/types.js +1 -1
  141. package/es/chat-engine/core/server/websocket-client.d.ts +2 -0
  142. package/es/chat-engine/core/server/websocket-client.js +19 -3
  143. package/es/chat-engine/core/server/websocket-client.js.map +1 -1
  144. package/es/chat-engine/core/store/message.js +2 -2
  145. package/es/chat-engine/core/store/model.js +2 -2
  146. package/es/chat-engine/core/store/reactiveState.js +2 -2
  147. package/es/chat-engine/core/stream-handlers/agui-stream-handler.d.ts +24 -0
  148. package/es/chat-engine/core/stream-handlers/agui-stream-handler.js +140 -0
  149. package/es/chat-engine/core/stream-handlers/agui-stream-handler.js.map +1 -0
  150. package/es/chat-engine/core/stream-handlers/default-stream-handler.d.ts +7 -0
  151. package/es/chat-engine/core/stream-handlers/default-stream-handler.js +77 -0
  152. package/es/chat-engine/core/stream-handlers/default-stream-handler.js.map +1 -0
  153. package/es/chat-engine/core/stream-handlers/index.d.ts +21 -0
  154. package/es/chat-engine/core/stream-handlers/index.js +72 -0
  155. package/es/chat-engine/core/stream-handlers/index.js.map +1 -0
  156. package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.d.ts +64 -0
  157. package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.js +320 -0
  158. package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.js.map +1 -0
  159. package/es/chat-engine/core/stream-handlers/types.d.ts +47 -0
  160. package/es/chat-engine/core/stream-handlers/types.js +7 -0
  161. package/es/chat-engine/core/stream-handlers/types.js.map +1 -0
  162. package/es/chat-engine/core/type.d.ts +18 -0
  163. package/es/chat-engine/core/type.js +1 -1
  164. package/es/chat-engine/core/utils/eventEmitter.js +1 -1
  165. package/es/chat-engine/core/utils/immutable-patch.js +1 -1
  166. package/es/chat-engine/core/utils/index.js +1 -1
  167. package/es/chat-engine/core/utils/json-patch/helpers.js +1 -1
  168. package/es/chat-engine/core/utils/json-patch/index.js +1 -1
  169. package/es/chat-engine/core/utils/logger.js +1 -1
  170. package/es/chat-engine/core/utils/performance.js +1 -1
  171. package/es/chat-engine/hooks/index.js +10 -4
  172. package/es/chat-engine/hooks/index.js.map +1 -1
  173. package/es/chat-engine/hooks/useAgentActivity.js +1 -1
  174. package/es/chat-engine/hooks/useAgentState.js +10 -4
  175. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  176. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  177. package/es/chat-engine/hooks/useChat.js +45 -15
  178. package/es/chat-engine/hooks/useChat.js.map +1 -1
  179. package/es/chat-engine/index.js +12 -6
  180. package/es/chat-engine/index.js.map +1 -1
  181. package/es/chat-filecard/index.js +1 -1
  182. package/es/chat-loading/index.js +1 -1
  183. package/es/chat-markdown/index.js +1 -1
  184. package/es/chat-message/index.js +1 -1
  185. package/es/chat-sender/index.js +1 -1
  186. package/es/chat-thinking/index.js +1 -1
  187. package/es/chatbot/index.js +1 -1
  188. package/es/index.js +10 -4
  189. package/es/index.js.map +1 -1
  190. package/es/style/index.js +1 -1
  191. package/package.json +1 -1
  192. package/es/_chunks/dep-1007ac80.js +0 -205
  193. package/es/_chunks/dep-1007ac80.js.map +0 -1
  194. package/es/_chunks/dep-13fe70ea.js +0 -438
  195. package/es/_chunks/dep-16520c2b.js +0 -1247
  196. package/es/_chunks/dep-16520c2b.js.map +0 -1
  197. package/es/_chunks/dep-1743bd61.js +0 -438
  198. package/es/_chunks/dep-1743bd61.js.map +0 -1
  199. package/es/_chunks/dep-1ca64fef.js.map +0 -1
  200. package/es/_chunks/dep-24472232.js +0 -839
  201. package/es/_chunks/dep-24472232.js.map +0 -1
  202. package/es/_chunks/dep-2bfe72cb.js +0 -438
  203. package/es/_chunks/dep-2bfe72cb.js.map +0 -1
  204. package/es/_chunks/dep-3864b369.js +0 -839
  205. package/es/_chunks/dep-3864b369.js.map +0 -1
  206. package/es/_chunks/dep-4dedfbef.js +0 -438
  207. package/es/_chunks/dep-4dedfbef.js.map +0 -1
  208. package/es/_chunks/dep-56f5e08e.js +0 -448
  209. package/es/_chunks/dep-56f5e08e.js.map +0 -1
  210. package/es/_chunks/dep-58d90dfe.js +0 -438
  211. package/es/_chunks/dep-58d90dfe.js.map +0 -1
  212. package/es/_chunks/dep-5b6b17d0.js +0 -169
  213. package/es/_chunks/dep-5b6b17d0.js.map +0 -1
  214. package/es/_chunks/dep-5e2400d2.js +0 -438
  215. package/es/_chunks/dep-5e2400d2.js.map +0 -1
  216. package/es/_chunks/dep-60f2a734.js +0 -169
  217. package/es/_chunks/dep-60f2a734.js.map +0 -1
  218. package/es/_chunks/dep-688e4aaa.js +0 -438
  219. package/es/_chunks/dep-688e4aaa.js.map +0 -1
  220. package/es/_chunks/dep-771678df.js +0 -438
  221. package/es/_chunks/dep-771678df.js.map +0 -1
  222. package/es/_chunks/dep-870f0d35.js +0 -839
  223. package/es/_chunks/dep-870f0d35.js.map +0 -1
  224. package/es/_chunks/dep-93283bbd.js +0 -1247
  225. package/es/_chunks/dep-96eca06f.js +0 -169
  226. package/es/_chunks/dep-96eca06f.js.map +0 -1
  227. package/es/_chunks/dep-98d23dfa.js +0 -169
  228. package/es/_chunks/dep-98d23dfa.js.map +0 -1
  229. package/es/_chunks/dep-991f7c12.js +0 -1247
  230. package/es/_chunks/dep-991f7c12.js.map +0 -1
  231. package/es/_chunks/dep-b4eec30f.js +0 -1247
  232. package/es/_chunks/dep-b4eec30f.js.map +0 -1
  233. package/es/_chunks/dep-ba3bd553.js +0 -169
  234. package/es/_chunks/dep-ba3bd553.js.map +0 -1
  235. package/es/_chunks/dep-bcb234a1.js +0 -839
  236. package/es/_chunks/dep-bcb234a1.js.map +0 -1
  237. package/es/_chunks/dep-dbdfe7d6.js +0 -169
  238. package/es/_chunks/dep-dbdfe7d6.js.map +0 -1
  239. package/es/_chunks/dep-de8ac730.js +0 -1247
  240. package/es/_chunks/dep-de8ac730.js.map +0 -1
  241. package/es/_chunks/dep-dfe91b1f.js.map +0 -1
  242. package/es/_chunks/dep-e9dbff09.js +0 -1247
  243. package/es/_chunks/dep-e9dbff09.js.map +0 -1
  244. package/es/_chunks/dep-ebc4cf30.js +0 -1247
  245. package/es/_chunks/dep-ebc4cf30.js.map +0 -1
  246. package/es/_chunks/dep-f2051ebd.js +0 -839
  247. package/es/_chunks/dep-f2051ebd.js.map +0 -1
  248. package/es/_chunks/dep-f691a67e.js +0 -438
  249. package/es/_chunks/dep-f691a67e.js.map +0 -1
  250. package/es/_chunks/dep-f8016301.js +0 -169
  251. package/es/_chunks/dep-f8016301.js.map +0 -1
  252. package/es/chat-actionbar/_example-js/base.d.ts +0 -2
  253. package/es/chat-actionbar/_example-js/custom.d.ts +0 -2
  254. package/es/chat-actionbar/_example-js/style.d.ts +0 -2
  255. package/es/chat-attachments/_example-js/base.d.ts +0 -2
  256. package/es/chat-attachments/_example-js/scroll-x.d.ts +0 -2
  257. package/es/chat-attachments/_example-js/scroll-y.d.ts +0 -2
  258. package/es/chat-attachments/index.d.ts +0 -5
  259. package/es/chat-attachments/index.js +0 -26
  260. package/es/chat-attachments/index.js.map +0 -1
  261. package/es/chat-engine/_example-js/agui-basic.d.ts +0 -10
  262. package/es/chat-engine/_example-js/agui-comprehensive.d.ts +0 -2
  263. package/es/chat-engine/_example-js/agui-test.d.ts +0 -11
  264. package/es/chat-engine/_example-js/agui-toolcall.d.ts +0 -5
  265. package/es/chat-engine/_example-js/agui-videoclip.d.ts +0 -8
  266. package/es/chat-engine/_example-js/agui.d.ts +0 -1
  267. package/es/chat-engine/_example-js/basic.d.ts +0 -9
  268. package/es/chat-engine/_example-js/components/HotelCard.d.ts +0 -3
  269. package/es/chat-engine/_example-js/components/HumanInputForm.d.ts +0 -6
  270. package/es/chat-engine/_example-js/components/HumanInputResult.d.ts +0 -3
  271. package/es/chat-engine/_example-js/components/ItineraryCard.d.ts +0 -3
  272. package/es/chat-engine/_example-js/components/PlanningStatePanel.d.ts +0 -4
  273. package/es/chat-engine/_example-js/components/Toolcall.d.ts +0 -4
  274. package/es/chat-engine/_example-js/components/WeatherCard.d.ts +0 -3
  275. package/es/chat-engine/_example-js/components/login.d.ts +0 -1
  276. package/es/chat-engine/_example-js/comprehensive.d.ts +0 -12
  277. package/es/chat-engine/_example-js/custom-content.d.ts +0 -1
  278. package/es/chat-engine/_example-js/hookComponent.d.ts +0 -1
  279. package/es/chat-engine/_example-js/initial-messages.d.ts +0 -9
  280. package/es/chat-engine/_example-js/instance-methods.d.ts +0 -13
  281. package/es/chat-engine/_example-js/travel-actions.d.ts +0 -91
  282. package/es/chat-engine/_example-js/travelToolcall.d.ts +0 -1
  283. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.d.ts +0 -196
  284. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +0 -301
  285. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +0 -1
  286. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.d.ts +0 -37
  287. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +0 -116
  288. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js.map +0 -1
  289. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.d.ts +0 -42
  290. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +0 -113
  291. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js.map +0 -1
  292. package/es/chat-engine/components/a2ui/A2UISkeleton.d.ts +0 -60
  293. package/es/chat-engine/components/a2ui/A2UISkeleton.js +0 -197
  294. package/es/chat-engine/components/a2ui/A2UISkeleton.js.map +0 -1
  295. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.d.ts +0 -44
  296. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +0 -139
  297. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js.map +0 -1
  298. package/es/chat-engine/components/a2ui/containers/A2UICard.d.ts +0 -22
  299. package/es/chat-engine/components/a2ui/containers/A2UICard.js +0 -82
  300. package/es/chat-engine/components/a2ui/containers/A2UICard.js.map +0 -1
  301. package/es/chat-engine/components/a2ui/containers/A2UIColumn.d.ts +0 -18
  302. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +0 -81
  303. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js.map +0 -1
  304. package/es/chat-engine/components/a2ui/containers/A2UIList.d.ts +0 -14
  305. package/es/chat-engine/components/a2ui/containers/A2UIList.js +0 -62
  306. package/es/chat-engine/components/a2ui/containers/A2UIList.js.map +0 -1
  307. package/es/chat-engine/components/a2ui/containers/A2UIRow.d.ts +0 -20
  308. package/es/chat-engine/components/a2ui/containers/A2UIRow.js +0 -84
  309. package/es/chat-engine/components/a2ui/containers/A2UIRow.js.map +0 -1
  310. package/es/chat-engine/components/a2ui/containers/A2UITabs.d.ts +0 -14
  311. package/es/chat-engine/components/a2ui/containers/A2UITabs.js +0 -69
  312. package/es/chat-engine/components/a2ui/containers/A2UITabs.js.map +0 -1
  313. package/es/chat-engine/components/a2ui/containers/index.d.ts +0 -8
  314. package/es/chat-engine/components/a2ui/containers/index.js +0 -30
  315. package/es/chat-engine/components/a2ui/containers/index.js.map +0 -1
  316. package/es/chat-engine/components/a2ui/index.d.ts +0 -11
  317. package/es/chat-engine/components/a2ui/index.js +0 -62
  318. package/es/chat-engine/components/a2ui/index.js.map +0 -1
  319. package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +0 -33
  320. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +0 -80
  321. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +0 -1
  322. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.d.ts +0 -12
  323. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +0 -43
  324. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js.map +0 -1
  325. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.d.ts +0 -50
  326. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +0 -54
  327. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js.map +0 -1
  328. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.d.ts +0 -13
  329. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +0 -89
  330. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js.map +0 -1
  331. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.d.ts +0 -12
  332. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +0 -25
  333. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js.map +0 -1
  334. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.d.ts +0 -13
  335. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +0 -138942
  336. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js.map +0 -1
  337. package/es/chat-engine/components/a2ui/primitives/A2UIImage.d.ts +0 -12
  338. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +0 -75
  339. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js.map +0 -1
  340. package/es/chat-engine/components/a2ui/primitives/A2UIInput.d.ts +0 -20
  341. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +0 -63
  342. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js.map +0 -1
  343. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.d.ts +0 -56
  344. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +0 -64
  345. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js.map +0 -1
  346. package/es/chat-engine/components/a2ui/primitives/A2UISlider.d.ts +0 -12
  347. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +0 -55
  348. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js.map +0 -1
  349. package/es/chat-engine/components/a2ui/primitives/A2UIText.d.ts +0 -12
  350. package/es/chat-engine/components/a2ui/primitives/A2UIText.js +0 -104
  351. package/es/chat-engine/components/a2ui/primitives/A2UIText.js.map +0 -1
  352. package/es/chat-engine/components/a2ui/primitives/A2UITextField.d.ts +0 -12
  353. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +0 -80
  354. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js.map +0 -1
  355. package/es/chat-engine/components/a2ui/primitives/index.d.ts +0 -15
  356. package/es/chat-engine/components/a2ui/primitives/index.js +0 -39
  357. package/es/chat-engine/components/a2ui/primitives/index.js.map +0 -1
  358. package/es/chat-engine/components/a2ui/registry.d.ts +0 -35
  359. package/es/chat-engine/components/a2ui/registry.js +0 -74
  360. package/es/chat-engine/components/a2ui/registry.js.map +0 -1
  361. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.d.ts +0 -36
  362. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js +0 -36
  363. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js.map +0 -1
  364. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.d.ts +0 -46
  365. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js +0 -36
  366. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js.map +0 -1
  367. package/es/chat-engine/components/json-render/SurfaceStateManager.d.ts +0 -113
  368. package/es/chat-engine/components/json-render/SurfaceStateManager.js +0 -195
  369. package/es/chat-engine/components/json-render/SurfaceStateManager.js.map +0 -1
  370. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.d.ts +0 -49
  371. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js +0 -307
  372. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js.map +0 -1
  373. package/es/chat-engine/components/json-render/adapters/a2ui-types.d.ts +0 -96
  374. package/es/chat-engine/components/json-render/adapters/a2ui-types.js +0 -7
  375. package/es/chat-engine/components/json-render/adapters/a2ui-types.js.map +0 -1
  376. package/es/chat-engine/components/json-render/adapters/index.d.ts +0 -7
  377. package/es/chat-engine/components/json-render/adapters/index.js +0 -11
  378. package/es/chat-engine/components/json-render/adapters/index.js.map +0 -1
  379. package/es/chat-engine/components/json-render/catalog/a2ui-binding.d.ts +0 -64
  380. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js +0 -36
  381. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js.map +0 -1
  382. package/es/chat-engine/components/json-render/catalog/a2ui-registry.d.ts +0 -78
  383. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js +0 -36
  384. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js.map +0 -1
  385. package/es/chat-engine/components/json-render/catalog/button.d.ts +0 -14
  386. package/es/chat-engine/components/json-render/catalog/button.js +0 -71
  387. package/es/chat-engine/components/json-render/catalog/button.js.map +0 -1
  388. package/es/chat-engine/components/json-render/catalog/card.d.ts +0 -11
  389. package/es/chat-engine/components/json-render/catalog/card.js +0 -57
  390. package/es/chat-engine/components/json-render/catalog/card.js.map +0 -1
  391. package/es/chat-engine/components/json-render/catalog/index.d.ts +0 -128
  392. package/es/chat-engine/components/json-render/catalog/index.js +0 -36
  393. package/es/chat-engine/components/json-render/catalog/index.js.map +0 -1
  394. package/es/chat-engine/components/json-render/catalog/input.d.ts +0 -20
  395. package/es/chat-engine/components/json-render/catalog/input.js +0 -36
  396. package/es/chat-engine/components/json-render/catalog/input.js.map +0 -1
  397. package/es/chat-engine/components/json-render/catalog/layout.d.ts +0 -44
  398. package/es/chat-engine/components/json-render/catalog/layout.js +0 -129
  399. package/es/chat-engine/components/json-render/catalog/layout.js.map +0 -1
  400. package/es/chat-engine/components/json-render/catalog/text.d.ts +0 -11
  401. package/es/chat-engine/components/json-render/catalog/text.js +0 -31
  402. package/es/chat-engine/components/json-render/catalog/text.js.map +0 -1
  403. package/es/chat-engine/components/json-render/catalog.d.ts +0 -614
  404. package/es/chat-engine/components/json-render/catalog.js +0 -779
  405. package/es/chat-engine/components/json-render/catalog.js.map +0 -1
  406. package/es/chat-engine/components/json-render/config.d.ts +0 -154
  407. package/es/chat-engine/components/json-render/config.js +0 -36
  408. package/es/chat-engine/components/json-render/config.js.map +0 -1
  409. package/es/chat-engine/components/json-render/engine.d.ts +0 -58
  410. package/es/chat-engine/components/json-render/engine.js +0 -88
  411. package/es/chat-engine/components/json-render/engine.js.map +0 -1
  412. package/es/chat-engine/components/json-render/performance.d.ts +0 -91
  413. package/es/chat-engine/components/json-render/performance.js +0 -135
  414. package/es/chat-engine/components/json-render/performance.js.map +0 -1
  415. package/es/chat-engine/components/json-render/renderer/index.d.ts +0 -71
  416. package/es/chat-engine/components/json-render/renderer/index.js +0 -125
  417. package/es/chat-engine/components/json-render/renderer/index.js.map +0 -1
  418. package/es/chat-engine/components/json-render/renderer.d.ts +0 -71
  419. package/es/chat-engine/components/json-render/renderer.js +0 -124
  420. package/es/chat-engine/components/json-render/renderer.js.map +0 -1
  421. package/es/chat-engine/core/a2ui/index.d.ts +0 -10
  422. package/es/chat-engine/core/a2ui/index.js +0 -24
  423. package/es/chat-engine/core/a2ui/index.js.map +0 -1
  424. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.d.ts +0 -197
  425. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +0 -438
  426. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js.map +0 -1
  427. package/es/chat-engine/core/a2ui/processor/ComponentTree.d.ts +0 -53
  428. package/es/chat-engine/core/a2ui/processor/ComponentTree.js +0 -158
  429. package/es/chat-engine/core/a2ui/processor/ComponentTree.js.map +0 -1
  430. package/es/chat-engine/core/a2ui/processor/DataStore.d.ts +0 -63
  431. package/es/chat-engine/core/a2ui/processor/DataStore.js +0 -172
  432. package/es/chat-engine/core/a2ui/processor/DataStore.js.map +0 -1
  433. package/es/chat-engine/core/a2ui/processor/PathResolver.d.ts +0 -47
  434. package/es/chat-engine/core/a2ui/processor/PathResolver.js +0 -99
  435. package/es/chat-engine/core/a2ui/processor/PathResolver.js.map +0 -1
  436. package/es/chat-engine/core/a2ui/types/index.d.ts +0 -4
  437. package/es/chat-engine/core/a2ui/types/index.js +0 -9
  438. package/es/chat-engine/core/a2ui/types/index.js.map +0 -1
  439. package/es/chat-engine/core/a2ui/types/types.d.ts +0 -770
  440. package/es/chat-engine/core/a2ui/types/types.js +0 -104
  441. package/es/chat-engine/core/a2ui/types/types.js.map +0 -1
  442. package/es/chat-engine/core/a2ui/utils/binding.d.ts +0 -34
  443. package/es/chat-engine/core/a2ui/utils/binding.js +0 -1784
  444. package/es/chat-engine/core/a2ui/utils/binding.js.map +0 -1
  445. package/es/chat-engine/core/a2ui/utils/index.d.ts +0 -5
  446. package/es/chat-engine/core/a2ui/utils/index.js +0 -13
  447. package/es/chat-engine/core/a2ui/utils/index.js.map +0 -1
  448. package/es/chat-engine/core/a2ui/utils/validation.d.ts +0 -70
  449. package/es/chat-engine/core/a2ui/utils/validation.js +0 -333
  450. package/es/chat-engine/core/a2ui/utils/validation.js.map +0 -1
  451. package/es/chat-engine/core/adapters/agui/activity-manager.d.ts +0 -102
  452. package/es/chat-engine/core/adapters/agui/activity-manager.js +0 -150
  453. package/es/chat-engine/core/adapters/agui/activity-manager.js.map +0 -1
  454. package/es/chat-engine/core/adapters/agui/events.d.ts +0 -1550
  455. package/es/chat-engine/core/adapters/agui/events.js +0 -199
  456. package/es/chat-engine/core/adapters/agui/events.js.map +0 -1
  457. package/es/chat-engine/core/adapters/agui/state-manager.d.ts +0 -99
  458. package/es/chat-engine/core/adapters/agui/state-manager.js +0 -174
  459. package/es/chat-engine/core/adapters/agui/state-manager.js.map +0 -1
  460. package/es/chat-engine/core/adapters/agui/types.d.ts +0 -818
  461. package/es/chat-engine/core/adapters/agui/types.js +0 -95
  462. package/es/chat-engine/core/adapters/agui/types.js.map +0 -1
  463. package/es/chat-engine/hooks/a2ui/A2UIContext.d.ts +0 -90
  464. package/es/chat-engine/hooks/a2ui/A2UIContext.js +0 -97
  465. package/es/chat-engine/hooks/a2ui/A2UIContext.js.map +0 -1
  466. package/es/chat-engine/hooks/a2ui/index.d.ts +0 -12
  467. package/es/chat-engine/hooks/a2ui/index.js +0 -19
  468. package/es/chat-engine/hooks/a2ui/index.js.map +0 -1
  469. package/es/chat-engine/hooks/a2ui/useA2UIAction.d.ts +0 -40
  470. package/es/chat-engine/hooks/a2ui/useA2UIAction.js +0 -74
  471. package/es/chat-engine/hooks/a2ui/useA2UIAction.js.map +0 -1
  472. package/es/chat-engine/hooks/a2ui/useA2UISurface.d.ts +0 -36
  473. package/es/chat-engine/hooks/a2ui/useA2UISurface.js +0 -39
  474. package/es/chat-engine/hooks/a2ui/useA2UISurface.js.map +0 -1
  475. package/es/chat-engine/hooks/a2ui/useDataBinding.d.ts +0 -53
  476. package/es/chat-engine/hooks/a2ui/useDataBinding.js +0 -111
  477. package/es/chat-engine/hooks/a2ui/useDataBinding.js.map +0 -1
  478. package/es/chat-engine/hooks/useJsonRenderActivity.d.ts +0 -56
  479. package/es/chat-engine/hooks/useJsonRenderActivity.js +0 -63
  480. package/es/chat-engine/hooks/useJsonRenderActivity.js.map +0 -1
  481. package/es/chat-filecard/_example-js/base.d.ts +0 -1
  482. package/es/chat-loading/_example-js/base.d.ts +0 -2
  483. package/es/chat-loading/_example-js/text.d.ts +0 -2
  484. package/es/chat-markdown/_example-js/base.d.ts +0 -1
  485. package/es/chat-markdown/_example-js/custom.d.ts +0 -2
  486. package/es/chat-markdown/_example-js/event.d.ts +0 -1
  487. package/es/chat-markdown/_example-js/footnote.d.ts +0 -2
  488. package/es/chat-markdown/_example-js/plugin.d.ts +0 -2
  489. package/es/chat-markdown/_example-js/theme.d.ts +0 -2
  490. package/es/chat-message/_example-js/action.d.ts +0 -1
  491. package/es/chat-message/_example-js/base.d.ts +0 -1
  492. package/es/chat-message/_example-js/configure.d.ts +0 -1
  493. package/es/chat-message/_example-js/content.d.ts +0 -1
  494. package/es/chat-message/_example-js/custom.d.ts +0 -1
  495. package/es/chat-message/_example-js/handle-actions.d.ts +0 -7
  496. package/es/chat-message/_example-js/status.d.ts +0 -1
  497. package/es/chat-message/_example-js/think.d.ts +0 -1
  498. package/es/chat-sender/_example-js/attachment.d.ts +0 -2
  499. package/es/chat-sender/_example-js/base.d.ts +0 -2
  500. package/es/chat-sender/_example-js/custom.d.ts +0 -2
  501. package/es/chat-thinking/_example-js/base.d.ts +0 -1
  502. package/es/chat-thinking/_example-js/style.d.ts +0 -1
  503. package/es/chatbot/_example-js/agent.d.ts +0 -1
  504. package/es/chatbot/_example-js/agui.d.ts +0 -13
  505. package/es/chatbot/_example-js/backup/travel.d.ts +0 -1
  506. package/es/chatbot/_example-js/basic.d.ts +0 -1
  507. package/es/chatbot/_example-js/code.d.ts +0 -1
  508. package/es/chatbot/_example-js/components/ItineraryCard.d.ts +0 -3
  509. package/es/chatbot/_example-js/components/login.d.ts +0 -1
  510. package/es/chatbot/_example-js/comprehensive.d.ts +0 -1
  511. package/es/chatbot/_example-js/custom-content.d.ts +0 -1
  512. package/es/chatbot/_example-js/custom-merge.d.ts +0 -1
  513. package/es/chatbot/_example-js/custom.d.ts +0 -1
  514. package/es/chatbot/_example-js/docs.d.ts +0 -1
  515. package/es/chatbot/_example-js/image.d.ts +0 -1
  516. package/es/chatbot/_example-js/initial-messages.d.ts +0 -9
  517. package/es/chatbot/_example-js/instance-methods.d.ts +0 -14
  518. package/es/chatbot/_example-js/nostream.d.ts +0 -1
  519. package/es/chatbot/_example-js/quick-start.d.ts +0 -9
  520. package/es/chatbot/_example-js/research.d.ts +0 -1
  521. package/es/chatbot/_example-js/role-message-config.d.ts +0 -22
  522. package/es/chatbot/_example-js/sender-config.d.ts +0 -20
  523. package/es/chatbot/_example-js/service-config.d.ts +0 -17
  524. package/es/chatbot/_example-js/simple.d.ts +0 -1
  525. package/es/chatbot/_example-js/utils/messageRenderer.d.ts +0 -5
  526. package/es/chatbot/docs/react-best-practice.d.ts +0 -13
@@ -0,0 +1,375 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.17
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
8
+ import _createClass from '@babel/runtime/helpers/createClass';
9
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
10
+ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
11
+ import _regeneratorRuntime from '@babel/runtime/regenerator';
12
+ import { LoggerManager } from '../../utils/logger.js';
13
+
14
+ var logger = LoggerManager.getLogger();
15
+ function bytesToHex(bytes) {
16
+ return Array.from(bytes).map(function (b) {
17
+ return b.toString(16).padStart(2, "0");
18
+ }).join("");
19
+ }
20
+ function hexToBytes(hex) {
21
+ var bytes = new Uint8Array(hex.length / 2);
22
+ for (var i = 0; i < hex.length; i += 2) {
23
+ bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);
24
+ }
25
+ return bytes;
26
+ }
27
+ function deriveDeviceId(publicKeyHex) {
28
+ return "device_".concat(publicKeyHex.substring(0, 16));
29
+ }
30
+ function getStorageKey(clientId) {
31
+ return "openclaw_device_key_".concat(clientId);
32
+ }
33
+ function isEd25519Supported() {
34
+ return _isEd25519Supported.apply(this, arguments);
35
+ }
36
+ function _isEd25519Supported() {
37
+ _isEd25519Supported = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
38
+ var keyPair, _t3;
39
+ return _regeneratorRuntime.wrap(function (_context4) {
40
+ while (1) switch (_context4.prev = _context4.next) {
41
+ case 0:
42
+ _context4.prev = 0;
43
+ _context4.next = 1;
44
+ return crypto.subtle.generateKey("Ed25519", true, ["sign", "verify"]);
45
+ case 1:
46
+ keyPair = _context4.sent;
47
+ return _context4.abrupt("return", !!keyPair);
48
+ case 2:
49
+ _context4.prev = 2;
50
+ _t3 = _context4["catch"](0);
51
+ return _context4.abrupt("return", false);
52
+ case 3:
53
+ case "end":
54
+ return _context4.stop();
55
+ }
56
+ }, _callee4, null, [[0, 2]]);
57
+ }));
58
+ return _isEd25519Supported.apply(this, arguments);
59
+ }
60
+ function generateEd25519KeyPair() {
61
+ return _generateEd25519KeyPair.apply(this, arguments);
62
+ }
63
+ function _generateEd25519KeyPair() {
64
+ _generateEd25519KeyPair = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
65
+ var keyPair, publicKeyRaw, privateKeyPkcs8, publicKeyHex, privateKeyHex;
66
+ return _regeneratorRuntime.wrap(function (_context5) {
67
+ while (1) switch (_context5.prev = _context5.next) {
68
+ case 0:
69
+ _context5.next = 1;
70
+ return crypto.subtle.generateKey("Ed25519", true, ["sign", "verify"]);
71
+ case 1:
72
+ keyPair = _context5.sent;
73
+ _context5.next = 2;
74
+ return crypto.subtle.exportKey("raw", keyPair.publicKey);
75
+ case 2:
76
+ publicKeyRaw = _context5.sent;
77
+ _context5.next = 3;
78
+ return crypto.subtle.exportKey("pkcs8", keyPair.privateKey);
79
+ case 3:
80
+ privateKeyPkcs8 = _context5.sent;
81
+ publicKeyHex = bytesToHex(new Uint8Array(publicKeyRaw));
82
+ privateKeyHex = bytesToHex(new Uint8Array(privateKeyPkcs8));
83
+ return _context5.abrupt("return", {
84
+ publicKey: publicKeyHex,
85
+ privateKey: privateKeyHex,
86
+ deviceId: deriveDeviceId(publicKeyHex)
87
+ });
88
+ case 4:
89
+ case "end":
90
+ return _context5.stop();
91
+ }
92
+ }, _callee5);
93
+ }));
94
+ return _generateEd25519KeyPair.apply(this, arguments);
95
+ }
96
+ function signWithEd25519(_x, _x2) {
97
+ return _signWithEd.apply(this, arguments);
98
+ }
99
+ function _signWithEd() {
100
+ _signWithEd = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6(privateKeyHex, nonce) {
101
+ var privateKeyBytes, privateKey, encoder, data, signature;
102
+ return _regeneratorRuntime.wrap(function (_context6) {
103
+ while (1) switch (_context6.prev = _context6.next) {
104
+ case 0:
105
+ privateKeyBytes = hexToBytes(privateKeyHex);
106
+ _context6.next = 1;
107
+ return crypto.subtle.importKey("pkcs8", privateKeyBytes.buffer, "Ed25519", false, ["sign"]);
108
+ case 1:
109
+ privateKey = _context6.sent;
110
+ encoder = new TextEncoder();
111
+ data = encoder.encode(nonce);
112
+ _context6.next = 2;
113
+ return crypto.subtle.sign("Ed25519", privateKey, data);
114
+ case 2:
115
+ signature = _context6.sent;
116
+ return _context6.abrupt("return", bytesToHex(new Uint8Array(signature)));
117
+ case 3:
118
+ case "end":
119
+ return _context6.stop();
120
+ }
121
+ }, _callee6);
122
+ }));
123
+ return _signWithEd.apply(this, arguments);
124
+ }
125
+ function generateHmacKeyPair() {
126
+ return _generateHmacKeyPair.apply(this, arguments);
127
+ }
128
+ function _generateHmacKeyPair() {
129
+ _generateHmacKeyPair = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee7() {
130
+ var privateKeyBytes, privateKeyHex, encoder, hashBuffer, publicKeyHex;
131
+ return _regeneratorRuntime.wrap(function (_context7) {
132
+ while (1) switch (_context7.prev = _context7.next) {
133
+ case 0:
134
+ privateKeyBytes = crypto.getRandomValues(new Uint8Array(32));
135
+ privateKeyHex = bytesToHex(privateKeyBytes);
136
+ encoder = new TextEncoder();
137
+ _context7.next = 1;
138
+ return crypto.subtle.digest("SHA-256", encoder.encode(privateKeyHex));
139
+ case 1:
140
+ hashBuffer = _context7.sent;
141
+ publicKeyHex = bytesToHex(new Uint8Array(hashBuffer));
142
+ return _context7.abrupt("return", {
143
+ publicKey: publicKeyHex,
144
+ privateKey: privateKeyHex,
145
+ deviceId: deriveDeviceId(publicKeyHex)
146
+ });
147
+ case 2:
148
+ case "end":
149
+ return _context7.stop();
150
+ }
151
+ }, _callee7);
152
+ }));
153
+ return _generateHmacKeyPair.apply(this, arguments);
154
+ }
155
+ function signWithHmac(_x3, _x4) {
156
+ return _signWithHmac.apply(this, arguments);
157
+ }
158
+ function _signWithHmac() {
159
+ _signWithHmac = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee8(privateKeyHex, nonce) {
160
+ var encoder, keyData, key, signature;
161
+ return _regeneratorRuntime.wrap(function (_context8) {
162
+ while (1) switch (_context8.prev = _context8.next) {
163
+ case 0:
164
+ encoder = new TextEncoder();
165
+ keyData = encoder.encode(privateKeyHex);
166
+ _context8.next = 1;
167
+ return crypto.subtle.importKey("raw", keyData, {
168
+ name: "HMAC",
169
+ hash: "SHA-256"
170
+ }, false, ["sign"]);
171
+ case 1:
172
+ key = _context8.sent;
173
+ _context8.next = 2;
174
+ return crypto.subtle.sign("HMAC", key, encoder.encode(nonce));
175
+ case 2:
176
+ signature = _context8.sent;
177
+ return _context8.abrupt("return", bytesToHex(new Uint8Array(signature)));
178
+ case 3:
179
+ case "end":
180
+ return _context8.stop();
181
+ }
182
+ }, _callee8);
183
+ }));
184
+ return _signWithHmac.apply(this, arguments);
185
+ }
186
+ var DeviceKeyManager = /*#__PURE__*/function () {
187
+ function DeviceKeyManager() {
188
+ var clientId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "webchat";
189
+ _classCallCheck(this, DeviceKeyManager);
190
+ _defineProperty(this, "keyPair", null);
191
+ _defineProperty(this, "useEd25519", false);
192
+ _defineProperty(this, "initialized", false);
193
+ this.clientId = clientId;
194
+ }
195
+ return _createClass(DeviceKeyManager, [{
196
+ key: "initialize",
197
+ value: function () {
198
+ var _initialize = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
199
+ var stored, _t;
200
+ return _regeneratorRuntime.wrap(function (_context) {
201
+ while (1) switch (_context.prev = _context.next) {
202
+ case 0:
203
+ if (!this.initialized) {
204
+ _context.next = 1;
205
+ break;
206
+ }
207
+ return _context.abrupt("return");
208
+ case 1:
209
+ _context.next = 2;
210
+ return isEd25519Supported();
211
+ case 2:
212
+ this.useEd25519 = _context.sent;
213
+ logger.debug("Device auth: Ed25519 ".concat(this.useEd25519 ? "supported" : "not supported, using HMAC-SHA256 fallback"));
214
+ stored = this.loadFromStorage();
215
+ if (!stored) {
216
+ _context.next = 3;
217
+ break;
218
+ }
219
+ this.keyPair = stored;
220
+ logger.debug("Device auth: restored key pair for device ".concat(stored.deviceId));
221
+ _context.next = 8;
222
+ break;
223
+ case 3:
224
+ if (!this.useEd25519) {
225
+ _context.next = 5;
226
+ break;
227
+ }
228
+ _context.next = 4;
229
+ return generateEd25519KeyPair();
230
+ case 4:
231
+ _t = _context.sent;
232
+ _context.next = 7;
233
+ break;
234
+ case 5:
235
+ _context.next = 6;
236
+ return generateHmacKeyPair();
237
+ case 6:
238
+ _t = _context.sent;
239
+ case 7:
240
+ this.keyPair = _t;
241
+ this.saveToStorage(this.keyPair);
242
+ logger.info("Device auth: generated new key pair, deviceId=".concat(this.keyPair.deviceId));
243
+ case 8:
244
+ this.initialized = true;
245
+ case 9:
246
+ case "end":
247
+ return _context.stop();
248
+ }
249
+ }, _callee, this);
250
+ }));
251
+ function initialize() {
252
+ return _initialize.apply(this, arguments);
253
+ }
254
+ return initialize;
255
+ }()
256
+ }, {
257
+ key: "signChallenge",
258
+ value: function () {
259
+ var _signChallenge = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(nonce) {
260
+ var signedAt, signPayload, signature, _t2;
261
+ return _regeneratorRuntime.wrap(function (_context2) {
262
+ while (1) switch (_context2.prev = _context2.next) {
263
+ case 0:
264
+ if (this.keyPair) {
265
+ _context2.next = 1;
266
+ break;
267
+ }
268
+ _context2.next = 1;
269
+ return this.initialize();
270
+ case 1:
271
+ signedAt = Math.floor(Date.now() / 1e3);
272
+ signPayload = "".concat(nonce, ":").concat(signedAt);
273
+ if (!this.useEd25519) {
274
+ _context2.next = 3;
275
+ break;
276
+ }
277
+ _context2.next = 2;
278
+ return signWithEd25519(this.keyPair.privateKey, signPayload);
279
+ case 2:
280
+ _t2 = _context2.sent;
281
+ _context2.next = 5;
282
+ break;
283
+ case 3:
284
+ _context2.next = 4;
285
+ return signWithHmac(this.keyPair.privateKey, signPayload);
286
+ case 4:
287
+ _t2 = _context2.sent;
288
+ case 5:
289
+ signature = _t2;
290
+ return _context2.abrupt("return", {
291
+ id: this.keyPair.deviceId,
292
+ publicKey: this.keyPair.publicKey,
293
+ signature: signature,
294
+ signedAt: signedAt,
295
+ nonce: nonce
296
+ });
297
+ case 6:
298
+ case "end":
299
+ return _context2.stop();
300
+ }
301
+ }, _callee2, this);
302
+ }));
303
+ function signChallenge(_x5) {
304
+ return _signChallenge.apply(this, arguments);
305
+ }
306
+ return signChallenge;
307
+ }()
308
+ }, {
309
+ key: "getDeviceId",
310
+ value: function getDeviceId() {
311
+ var _this$keyPair$deviceI, _this$keyPair;
312
+ return (_this$keyPair$deviceI = (_this$keyPair = this.keyPair) === null || _this$keyPair === void 0 ? void 0 : _this$keyPair.deviceId) !== null && _this$keyPair$deviceI !== void 0 ? _this$keyPair$deviceI : null;
313
+ }
314
+ }, {
315
+ key: "reset",
316
+ value: function () {
317
+ var _reset = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
318
+ return _regeneratorRuntime.wrap(function (_context3) {
319
+ while (1) switch (_context3.prev = _context3.next) {
320
+ case 0:
321
+ this.clearStorage();
322
+ this.keyPair = null;
323
+ this.initialized = false;
324
+ _context3.next = 1;
325
+ return this.initialize();
326
+ case 1:
327
+ case "end":
328
+ return _context3.stop();
329
+ }
330
+ }, _callee3, this);
331
+ }));
332
+ function reset() {
333
+ return _reset.apply(this, arguments);
334
+ }
335
+ return reset;
336
+ }()
337
+ }, {
338
+ key: "loadFromStorage",
339
+ value: function loadFromStorage() {
340
+ if (typeof window === "undefined" || !window.localStorage) return null;
341
+ try {
342
+ var stored = window.localStorage.getItem(getStorageKey(this.clientId));
343
+ if (!stored) return null;
344
+ var parsed = JSON.parse(stored);
345
+ if (parsed.publicKey && parsed.privateKey && parsed.deviceId) {
346
+ return parsed;
347
+ }
348
+ } catch (e) {
349
+ logger.warn("Failed to load device key from storage:", e);
350
+ }
351
+ return null;
352
+ }
353
+ }, {
354
+ key: "saveToStorage",
355
+ value: function saveToStorage(keyPair) {
356
+ if (typeof window === "undefined" || !window.localStorage) return;
357
+ try {
358
+ window.localStorage.setItem(getStorageKey(this.clientId), JSON.stringify(keyPair));
359
+ } catch (e) {
360
+ logger.warn("Failed to save device key to storage:", e);
361
+ }
362
+ }
363
+ }, {
364
+ key: "clearStorage",
365
+ value: function clearStorage() {
366
+ if (typeof window === "undefined" || !window.localStorage) return;
367
+ try {
368
+ window.localStorage.removeItem(getStorageKey(this.clientId));
369
+ } catch (_unused) {}
370
+ }
371
+ }]);
372
+ }();
373
+
374
+ export { DeviceKeyManager };
375
+ //# sourceMappingURL=device-key-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-key-manager.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/openclaw/device-key-manager.ts"],"sourcesContent":["/**\n * OpenClaw 设备密钥管理器\n *\n * 负责生成/持久化 Ed25519 密钥对并签名 nonce,\n * 用于 OpenClaw Gateway 的设备身份认证(Device Pairing)。\n *\n * 认证流程:\n * 1. Gateway 发送 connect.challenge,包含 nonce\n * 2. 客户端用私钥签名 nonce\n * 3. 在 connect 请求的 params.device 中携带 { publicKey, signature, deviceId }\n * 4. Gateway 验签通过后完成认证(首次连接自动配对)\n *\n * 存储策略:\n * - 密钥对以 hex 格式持久化到 localStorage\n * - key: `openclaw_device_key_{clientId}`\n * - 密钥对在浏览器端生命周期内保持一致(设备标识不变)\n */\nimport { LoggerManager } from '../../utils/logger';\n\nconst logger = LoggerManager.getLogger();\n\n/** 设备密钥对(hex 编码) */\nexport interface DeviceKeyPair {\n publicKey: string;\n privateKey: string;\n deviceId: string;\n}\n\n/** connect 请求中的 device 字段 */\nexport interface DeviceIdentity {\n /** 设备 ID(由公钥派生或随机生成) */\n id: string;\n /** 公钥(hex 编码) */\n publicKey: string;\n /** nonce 签名(hex 编码) */\n signature: string;\n /** 签名时间戳(Unix 秒级时间戳) */\n signedAt: number;\n /** 回传的 challenge nonce */\n nonce: string;\n}\n\n// ==================== 工具函数 ====================\n\n/** 字节数组转 hex 字符串 */\nfunction bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n}\n\n/** hex 字符串转字节数组 */\nfunction hexToBytes(hex: string): Uint8Array {\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);\n }\n return bytes;\n}\n\n/** 从公钥派生设备 ID(取公钥前 16 字符作为设备 ID) */\nfunction deriveDeviceId(publicKeyHex: string): string {\n return `device_${publicKeyHex.substring(0, 16)}`;\n}\n\n/** 生成 localStorage key */\nfunction getStorageKey(clientId: string): string {\n return `openclaw_device_key_${clientId}`;\n}\n\n// ==================== Web Crypto API 实现 ====================\n\n/**\n * 检测浏览器是否支持 Ed25519\n *\n * Ed25519 在 Web Crypto API 中的支持情况:\n * - Chrome 113+ / Edge 113+\n * - Firefox(尚未支持)\n * - Safari 17+\n *\n * 对于不支持的浏览器,退回到 HMAC-SHA256 方案\n */\nasync function isEd25519Supported(): Promise<boolean> {\n try {\n const keyPair = await crypto.subtle.generateKey('Ed25519', true, ['sign', 'verify']);\n return !!keyPair;\n } catch {\n return false;\n }\n}\n\n/**\n * 使用 Web Crypto API 生成 Ed25519 密钥对\n */\nasync function generateEd25519KeyPair(): Promise<DeviceKeyPair> {\n const keyPair = await crypto.subtle.generateKey('Ed25519', true, ['sign', 'verify']);\n\n // 导出原始格式的公钥和私钥\n const publicKeyRaw = await crypto.subtle.exportKey('raw', keyPair.publicKey);\n const privateKeyPkcs8 = await crypto.subtle.exportKey('pkcs8', keyPair.privateKey);\n\n const publicKeyHex = bytesToHex(new Uint8Array(publicKeyRaw));\n const privateKeyHex = bytesToHex(new Uint8Array(privateKeyPkcs8));\n\n return {\n publicKey: publicKeyHex,\n privateKey: privateKeyHex,\n deviceId: deriveDeviceId(publicKeyHex),\n };\n}\n\n/**\n * 使用 Ed25519 私钥签名 nonce\n */\nasync function signWithEd25519(privateKeyHex: string, nonce: string): Promise<string> {\n const privateKeyBytes = hexToBytes(privateKeyHex);\n\n // 导入 PKCS8 格式的私钥\n const privateKey = await crypto.subtle.importKey(\n 'pkcs8',\n privateKeyBytes.buffer,\n 'Ed25519',\n false,\n ['sign'],\n );\n\n // 签名 nonce(UTF-8 编码)\n const encoder = new TextEncoder();\n const data = encoder.encode(nonce);\n const signature = await crypto.subtle.sign('Ed25519', privateKey, data);\n\n return bytesToHex(new Uint8Array(signature));\n}\n\n// ==================== HMAC-SHA256 降级方案 ====================\n\n/**\n * 使用 HMAC-SHA256 作为降级签名方案\n *\n * 当浏览器不支持 Ed25519 时,使用随机密钥 + HMAC-SHA256 代替。\n * 密钥不用于非对称验签,但保证设备标识的一致性和签名的不可伪造性。\n */\nasync function generateHmacKeyPair(): Promise<DeviceKeyPair> {\n // 生成 32 字节随机密钥作为 \"私钥\"\n const privateKeyBytes = crypto.getRandomValues(new Uint8Array(32));\n const privateKeyHex = bytesToHex(privateKeyBytes);\n\n // 用私钥的 SHA-256 哈希作为 \"公钥\"(设备标识)\n const encoder = new TextEncoder();\n const hashBuffer = await crypto.subtle.digest('SHA-256', encoder.encode(privateKeyHex));\n const publicKeyHex = bytesToHex(new Uint8Array(hashBuffer));\n\n return {\n publicKey: publicKeyHex,\n privateKey: privateKeyHex,\n deviceId: deriveDeviceId(publicKeyHex),\n };\n}\n\n/**\n * 使用 HMAC-SHA256 签名 nonce\n */\nasync function signWithHmac(privateKeyHex: string, nonce: string): Promise<string> {\n const encoder = new TextEncoder();\n const keyData = encoder.encode(privateKeyHex);\n\n const key = await crypto.subtle.importKey(\n 'raw',\n keyData,\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign'],\n );\n\n const signature = await crypto.subtle.sign('HMAC', key, encoder.encode(nonce));\n return bytesToHex(new Uint8Array(signature));\n}\n\n// ==================== DeviceKeyManager ====================\n\n/**\n * 设备密钥管理器\n *\n * 使用方式:\n * ```ts\n * const manager = new DeviceKeyManager('webchat');\n * await manager.initialize();\n *\n * // 收到 connect.challenge 时\n * const device = await manager.signChallenge(nonce);\n * // 将 device 放入 connect params\n * ```\n */\nexport class DeviceKeyManager {\n private keyPair: DeviceKeyPair | null = null;\n private clientId: string;\n private useEd25519 = false;\n private initialized = false;\n\n constructor(clientId: string = 'webchat') {\n this.clientId = clientId;\n }\n\n /**\n * 初始化密钥管理器\n *\n * - 尝试从 localStorage 恢复已有密钥对\n * - 如果没有,则生成新的密钥对并持久化\n * - 自动检测并选择 Ed25519 或 HMAC-SHA256\n */\n async initialize(): Promise<void> {\n if (this.initialized) return;\n\n // 检测 Ed25519 支持\n this.useEd25519 = await isEd25519Supported();\n logger.debug(`Device auth: Ed25519 ${this.useEd25519 ? 'supported' : 'not supported, using HMAC-SHA256 fallback'}`);\n\n // 尝试从 localStorage 恢复\n const stored = this.loadFromStorage();\n if (stored) {\n this.keyPair = stored;\n logger.debug(`Device auth: restored key pair for device ${stored.deviceId}`);\n } else {\n // 生成新密钥对\n this.keyPair = this.useEd25519\n ? await generateEd25519KeyPair()\n : await generateHmacKeyPair();\n\n this.saveToStorage(this.keyPair);\n logger.info(`Device auth: generated new key pair, deviceId=${this.keyPair.deviceId}`);\n }\n\n this.initialized = true;\n }\n\n /**\n * 签名 challenge nonce,返回 device 字段\n *\n * 在收到 connect.challenge 事件后调用,\n * 返回值直接放入 connect 请求的 params.device 中。\n */\n async signChallenge(nonce: string): Promise<DeviceIdentity> {\n if (!this.keyPair) {\n await this.initialize();\n }\n\n const signedAt = Math.floor(Date.now() / 1000);\n // 签名内容包含 nonce + signedAt,确保签名的时效性\n const signPayload = `${nonce}:${signedAt}`;\n\n const signature = this.useEd25519\n ? await signWithEd25519(this.keyPair!.privateKey, signPayload)\n : await signWithHmac(this.keyPair!.privateKey, signPayload);\n\n return {\n id: this.keyPair!.deviceId,\n publicKey: this.keyPair!.publicKey,\n signature,\n signedAt,\n nonce,\n };\n }\n\n /**\n * 获取设备 ID\n */\n getDeviceId(): string | null {\n return this.keyPair?.deviceId ?? null;\n }\n\n /**\n * 重置密钥(强制重新生成密钥对)\n */\n async reset(): Promise<void> {\n this.clearStorage();\n this.keyPair = null;\n this.initialized = false;\n await this.initialize();\n }\n\n // ==================== 存储相关 ====================\n\n private loadFromStorage(): DeviceKeyPair | null {\n if (typeof window === 'undefined' || !window.localStorage) return null;\n\n try {\n const stored = window.localStorage.getItem(getStorageKey(this.clientId));\n if (!stored) return null;\n\n const parsed = JSON.parse(stored) as DeviceKeyPair;\n if (parsed.publicKey && parsed.privateKey && parsed.deviceId) {\n return parsed;\n }\n } catch (e) {\n logger.warn('Failed to load device key from storage:', e);\n }\n return null;\n }\n\n private saveToStorage(keyPair: DeviceKeyPair): void {\n if (typeof window === 'undefined' || !window.localStorage) return;\n\n try {\n window.localStorage.setItem(getStorageKey(this.clientId), JSON.stringify(keyPair));\n } catch (e) {\n logger.warn('Failed to save device key to storage:', e);\n }\n }\n\n private clearStorage(): void {\n if (typeof window === 'undefined' || !window.localStorage) return;\n\n try {\n window.localStorage.removeItem(getStorageKey(this.clientId));\n } catch {\n // ignore\n }\n }\n}\n"],"names":["logger","LoggerManager","getLogger","bytesToHex","bytes","Array","from","map","b","toString","padStart","join","hexToBytes","hex","Uint8Array","length","i","parseInt","substring","deriveDeviceId","publicKeyHex","concat","getStorageKey","clientId","isEd25519Supported","_isEd25519Supported","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee4","keyPair","_t3","wrap","_context4","prev","next","crypto","subtle","generateKey","sent","abrupt","stop","generateEd25519KeyPair","_generateEd25519KeyPair","_callee5","publicKeyRaw","privateKeyPkcs8","privateKeyHex","_context5","exportKey","publicKey","privateKey","deviceId","signWithEd25519","_x","_x2","_signWithEd","_callee6","nonce","privateKeyBytes","encoder","data","signature","_context6","importKey","buffer","TextEncoder","encode","sign","generateHmacKeyPair","_generateHmacKeyPair","_callee7","hashBuffer","_context7","getRandomValues","digest","signWithHmac","_x3","_x4","_signWithHmac","_callee8","keyData","key","_context8","name","hash","DeviceKeyManager","_classCallCheck","_defineProperty","_createClass","value","_initialize","_callee","stored","_t","_context","initialized","useEd25519","debug","loadFromStorage","saveToStorage","info","initialize","_signChallenge","_callee2","signedAt","signPayload","_t2","_context2","Math","floor","Date","now","id","signChallenge","getDeviceId","_this$keyPair$deviceI","_this$keyPair","_reset","_callee3","_context3","clearStorage","reset","window","localStorage","getItem","parsed","JSON","parse","e","warn","setItem","stringify","removeItem","_unused"],"mappings":"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"}
@@ -117,37 +117,59 @@ export declare class OpenClawEventMapper {
117
117
  /**
118
118
  * 处理 tool stream
119
119
  *
120
- * OpenClaw tool stream data 约定:
120
+ * OpenClaw 实际返回的 tool stream data 结构(经过对真实 Gateway 数据抓取确认):
121
+ *
122
+ * phase: 'start' (开始,包含完整 args):
123
+ * {
124
+ * phase: 'start',
125
+ * name: 'read', // 工具名称(字段名是 name,不是 toolCallName)
126
+ * toolCallId: 'read:0', // 工具调用 ID
127
+ * args: { file_path: '...' }, // 完整参数对象(非 JSON 字符串,start 阶段就包含全部 args)
128
+ * }
129
+ *
130
+ * phase: 'result' (结果):
121
131
  * {
122
- * toolCallId: string, // 工具调用 ID
123
- * toolCallName: string, // 工具名称
124
- * state: 'start' | 'args' | 'result' | 'end',
125
- * delta?: string, // args 增量
126
- * content?: string, // result 内容
127
- * args?: string, // 全量 args(snapshot 模式)
128
- * result?: string, // 全量 result(snapshot 模式)
129
- * parentMessageId?: string, // 父消息 ID
132
+ * phase: 'result',
133
+ * name: 'read',
134
+ * toolCallId: 'read:0',
135
+ * meta: 'from ~/.openclaw/workspace/memory/2026-03-11.md', // 结果元信息
136
+ * isError: true, // 是否出错
130
137
  * }
138
+ *
139
+ * 注意:
140
+ * 1. 只有 start 和 result 两个 phase(没有 args 和 end 阶段)
141
+ * 2. 字段名是 name 不是 toolCallName
142
+ * 3. args 在 start 阶段就是完整对象,不需要增量拼接
143
+ * 4. result 的具体内容通过 toolResult 角色的消息传递(在 chat final 中),
144
+ * tool stream 的 result phase 只包含 meta 和 isError
131
145
  */
132
146
  private handleToolStream;
133
147
  /**
134
- * 处理工具调用开始
148
+ * 处理工具调用开始(phase: 'start')
149
+ *
150
+ * OpenClaw 实际行为:start 阶段就包含完整的 args 对象(不是 JSON 字符串)
151
+ * 因此直接序列化 args 并创建 toolcall 内容
135
152
  */
136
153
  private handleToolCallStart;
137
154
  /**
138
- * 处理工具调用参数增量
155
+ * 处理工具调用参数增量(兼容 args 增量阶段)
139
156
  */
140
157
  private handleToolCallArgs;
141
158
  /**
142
- * 处理工具调用结果
159
+ * 处理工具调用结果(phase: 'result')
160
+ *
161
+ * OpenClaw 实际行为:
162
+ * - result phase 的 data 包含 meta(描述性信息)和 isError(是否出错)
163
+ * - 工具调用的具体结果文本通过 chat final 中的 toolResult 角色消息传递
164
+ * - 因此此处不一定有 content/result 文本,但应标记 toolcall 为 complete
143
165
  */
144
166
  private handleToolCallResult;
145
167
  /**
146
- * 处理工具调用结束
168
+ * 处理工具调用结束(兼容 end 阶段)
147
169
  */
148
170
  private handleToolCallEnd;
149
171
  /**
150
- * 兜底处理工具调用数据(无 state 字段时)
172
+ * 兜底处理工具调用数据(无 phase/state 字段时)
151
173
  */
152
174
  private handleToolCallGeneric;
153
175
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.16
2
+ * tdesign v1.1.0-alpha.17
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -150,6 +150,7 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
150
150
  data = payload.data,
151
151
  runId = payload.runId;
152
152
  this.currentRunId = runId || this.currentRunId;
153
+ console.log("[OpenClaw EventMapper] agent stream=\"".concat(stream, "\", data="), JSON.stringify(data).slice(0, 300));
153
154
  switch (stream) {
154
155
  case AgentStreamType.TOOL:
155
156
  return this.handleToolStream(data);
@@ -328,16 +329,16 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
328
329
  hasError: false
329
330
  };
330
331
  }
331
- var toolCallId = data.toolCallId,
332
- toolCallName = data.toolCallName,
333
- state = data.state;
334
- switch (state) {
332
+ var phase = data.phase || data.state;
333
+ var toolCallId = data.toolCallId;
334
+ var toolCallName = data.name || data.toolCallName || "unknown";
335
+ switch (phase) {
335
336
  case "start":
336
337
  return this.handleToolCallStart(toolCallId, toolCallName, data);
337
- case "args":
338
- return this.handleToolCallArgs(toolCallId, data);
339
338
  case "result":
340
339
  return this.handleToolCallResult(toolCallId, data);
340
+ case "args":
341
+ return this.handleToolCallArgs(toolCallId, data);
341
342
  case "end":
342
343
  return this.handleToolCallEnd(toolCallId);
343
344
  default:
@@ -347,15 +348,20 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
347
348
  }, {
348
349
  key: "handleToolCallStart",
349
350
  value: function handleToolCallStart(toolCallId, toolCallName, data) {
351
+ var rawArgs = data === null || data === void 0 ? void 0 : data.args;
352
+ var argsStr = "";
353
+ if (rawArgs !== void 0 && rawArgs !== null) {
354
+ argsStr = typeof rawArgs === "string" ? rawArgs : JSON.stringify(rawArgs);
355
+ }
350
356
  this.toolCallMap[toolCallId] = {
351
357
  eventType: "TOOL_CALL_START",
352
358
  toolCallId: toolCallId,
353
359
  toolCallName: toolCallName || "unknown",
354
360
  parentMessageId: (data === null || data === void 0 ? void 0 : data.parentMessageId) || "",
355
- args: (data === null || data === void 0 ? void 0 : data.args) || (data === null || data === void 0 ? void 0 : data.delta) || ""
361
+ args: argsStr
356
362
  };
357
363
  return {
358
- content: createToolCallContent(this.toolCallMap[toolCallId], "pending", "append"),
364
+ content: createToolCallContent(this.toolCallMap[toolCallId], "streaming", "append"),
359
365
  isFinal: false,
360
366
  hasError: false,
361
367
  runId: this.currentRunId || void 0
@@ -388,18 +394,28 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
388
394
  key: "handleToolCallResult",
389
395
  value: function handleToolCallResult(toolCallId, data) {
390
396
  if (!this.toolCallMap[toolCallId]) {
391
- return {
392
- content: null,
393
- isFinal: false,
394
- hasError: false
397
+ var toolCallName = (data === null || data === void 0 ? void 0 : data.name) || (data === null || data === void 0 ? void 0 : data.toolCallName) || "unknown";
398
+ this.toolCallMap[toolCallId] = {
399
+ eventType: "TOOL_CALL_START",
400
+ toolCallId: toolCallId,
401
+ toolCallName: toolCallName,
402
+ parentMessageId: "",
403
+ args: ""
395
404
  };
396
405
  }
397
- var currentResult = this.toolCallMap[toolCallId].result || "";
398
- var newResult = mergeStringContent(currentResult, (data === null || data === void 0 ? void 0 : data.content) || (data === null || data === void 0 ? void 0 : data.result) || "");
399
- this.toolCallMap[toolCallId] = updateToolCall(this.toolCallMap[toolCallId], {
406
+ var resultContent = (data === null || data === void 0 ? void 0 : data.content) || (data === null || data === void 0 ? void 0 : data.result) || "";
407
+ var meta = (data === null || data === void 0 ? void 0 : data.meta) || "";
408
+ var isError = data === null || data === void 0 ? void 0 : data.isError;
409
+ var resultStr = resultContent || meta || "";
410
+ this.toolCallMap[toolCallId] = updateToolCall(this.toolCallMap[toolCallId], _objectSpread({
400
411
  eventType: "TOOL_CALL_RESULT",
401
- result: newResult
402
- });
412
+ result: resultStr
413
+ }, isError !== void 0 ? {
414
+ ext: {
415
+ isError: isError
416
+ }
417
+ } : {}));
418
+ this.toolCallEnded.add(toolCallId);
403
419
  var suggestionContent = handleSuggestionToolCall(this.toolCallMap[toolCallId]);
404
420
  if (suggestionContent) {
405
421
  return {
@@ -443,14 +459,14 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
443
459
  };
444
460
  }
445
461
  var toolCallId = data.toolCallId;
446
- var toolCallName = data.toolCallName;
462
+ var toolCallName = data.name || data.toolCallName || "unknown";
447
463
  if (!this.toolCallMap[toolCallId]) {
448
464
  return this.handleToolCallStart(toolCallId, toolCallName, data);
449
465
  }
450
466
  if (data.delta || data.args) {
451
467
  return this.handleToolCallArgs(toolCallId, data);
452
468
  }
453
- if (data.content || data.result) {
469
+ if (data.content || data.result || data.meta || data.isError !== void 0) {
454
470
  return this.handleToolCallResult(toolCallId, data);
455
471
  }
456
472
  return {
@@ -469,7 +485,7 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
469
485
  hasError: false
470
486
  };
471
487
  }
472
- return this.handleToolCallStart(data.toolCallId, data.toolCallName || "unknown", data);
488
+ return this.handleToolCallStart(data.toolCallId, data.name || data.toolCallName || "unknown", data);
473
489
  }
474
490
  }, {
475
491
  key: "handleToolResult",