@tdesign-react/chat 1.0.2 → 1.0.3-alpha.2

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 (524) hide show
  1. package/CHANGELOG.md +0 -4
  2. package/README.md +76 -22
  3. package/es/_chunks/dep-076af7c3.js +438 -0
  4. package/es/_chunks/dep-076af7c3.js.map +1 -0
  5. package/es/_chunks/dep-1007ac80.js +205 -0
  6. package/es/_chunks/dep-1007ac80.js.map +1 -0
  7. package/es/_chunks/dep-16520c2b.js +1247 -0
  8. package/es/_chunks/dep-16520c2b.js.map +1 -0
  9. package/es/_chunks/dep-1743bd61.js +438 -0
  10. package/es/_chunks/dep-1743bd61.js.map +1 -0
  11. package/es/_chunks/dep-1ca64fef.js +1247 -0
  12. package/es/_chunks/dep-1ca64fef.js.map +1 -0
  13. package/es/_chunks/dep-24472232.js +839 -0
  14. package/es/_chunks/dep-24472232.js.map +1 -0
  15. package/es/_chunks/dep-3864b369.js +839 -0
  16. package/es/_chunks/dep-3864b369.js.map +1 -0
  17. package/es/_chunks/dep-3e40d789.js +169 -0
  18. package/es/_chunks/dep-3e40d789.js.map +1 -0
  19. package/es/_chunks/dep-4dedfbef.js +438 -0
  20. package/es/_chunks/dep-4dedfbef.js.map +1 -0
  21. package/es/_chunks/dep-56f5e08e.js +448 -0
  22. package/es/_chunks/dep-56f5e08e.js.map +1 -0
  23. package/es/_chunks/dep-5b6b17d0.js +169 -0
  24. package/es/_chunks/dep-5b6b17d0.js.map +1 -0
  25. package/es/_chunks/dep-688e4aaa.js +438 -0
  26. package/es/_chunks/dep-688e4aaa.js.map +1 -0
  27. package/es/_chunks/dep-870f0d35.js +839 -0
  28. package/es/_chunks/dep-870f0d35.js.map +1 -0
  29. package/es/_chunks/dep-96eca06f.js +169 -0
  30. package/es/_chunks/dep-96eca06f.js.map +1 -0
  31. package/es/_chunks/dep-ba3bd553.js +169 -0
  32. package/es/_chunks/dep-ba3bd553.js.map +1 -0
  33. package/es/_chunks/dep-bcb234a1.js +839 -0
  34. package/es/_chunks/dep-bcb234a1.js.map +1 -0
  35. package/es/_chunks/dep-de8ac730.js +1247 -0
  36. package/es/_chunks/dep-de8ac730.js.map +1 -0
  37. package/es/_chunks/dep-e9dbff09.js +1247 -0
  38. package/es/_chunks/dep-e9dbff09.js.map +1 -0
  39. package/es/_chunks/dep-ebc4cf30.js +1247 -0
  40. package/es/_chunks/dep-ebc4cf30.js.map +1 -0
  41. package/es/_chunks/dep-f2051ebd.js +839 -0
  42. package/es/_chunks/dep-f2051ebd.js.map +1 -0
  43. package/es/_chunks/dep-f691a67e.js +438 -0
  44. package/es/_chunks/dep-f691a67e.js.map +1 -0
  45. package/es/_chunks/dep-f8016301.js +169 -0
  46. package/es/_chunks/dep-f8016301.js.map +1 -0
  47. package/es/_util/reactify.d.ts +1 -2
  48. package/es/_util/reactify.js +102 -232
  49. package/es/_util/reactify.js.map +1 -1
  50. package/es/attachments/index.js +3 -5
  51. package/es/attachments/index.js.map +1 -1
  52. package/es/chat-actionbar/index.js +3 -5
  53. package/es/chat-actionbar/index.js.map +1 -1
  54. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.d.ts +196 -0
  55. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +301 -0
  56. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +1 -0
  57. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.d.ts +37 -0
  58. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +116 -0
  59. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js.map +1 -0
  60. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.d.ts +42 -0
  61. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +113 -0
  62. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js.map +1 -0
  63. package/es/chat-engine/components/a2ui/A2UISkeleton.d.ts +60 -0
  64. package/es/chat-engine/components/a2ui/A2UISkeleton.js +197 -0
  65. package/es/chat-engine/components/a2ui/A2UISkeleton.js.map +1 -0
  66. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.d.ts +44 -0
  67. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +139 -0
  68. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js.map +1 -0
  69. package/es/chat-engine/components/a2ui/containers/A2UICard.d.ts +22 -0
  70. package/es/chat-engine/components/a2ui/containers/A2UICard.js +82 -0
  71. package/es/chat-engine/components/a2ui/containers/A2UICard.js.map +1 -0
  72. package/es/chat-engine/components/a2ui/containers/A2UIColumn.d.ts +18 -0
  73. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +81 -0
  74. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js.map +1 -0
  75. package/es/chat-engine/components/a2ui/containers/A2UIList.d.ts +14 -0
  76. package/es/chat-engine/components/a2ui/containers/A2UIList.js +62 -0
  77. package/es/chat-engine/components/a2ui/containers/A2UIList.js.map +1 -0
  78. package/es/chat-engine/components/a2ui/containers/A2UIRow.d.ts +20 -0
  79. package/es/chat-engine/components/a2ui/containers/A2UIRow.js +84 -0
  80. package/es/chat-engine/components/a2ui/containers/A2UIRow.js.map +1 -0
  81. package/es/chat-engine/components/a2ui/containers/A2UITabs.d.ts +14 -0
  82. package/es/chat-engine/components/a2ui/containers/A2UITabs.js +69 -0
  83. package/es/chat-engine/components/a2ui/containers/A2UITabs.js.map +1 -0
  84. package/es/chat-engine/components/a2ui/containers/index.d.ts +8 -0
  85. package/es/chat-engine/components/a2ui/containers/index.js +30 -0
  86. package/es/chat-engine/components/a2ui/containers/index.js.map +1 -0
  87. package/es/chat-engine/components/a2ui/index.d.ts +11 -0
  88. package/es/chat-engine/components/a2ui/index.js +62 -0
  89. package/es/chat-engine/components/a2ui/index.js.map +1 -0
  90. package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +33 -0
  91. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +80 -0
  92. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +1 -0
  93. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.d.ts +12 -0
  94. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +43 -0
  95. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js.map +1 -0
  96. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.d.ts +50 -0
  97. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +54 -0
  98. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js.map +1 -0
  99. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.d.ts +13 -0
  100. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +89 -0
  101. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js.map +1 -0
  102. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.d.ts +12 -0
  103. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +25 -0
  104. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js.map +1 -0
  105. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.d.ts +13 -0
  106. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +138942 -0
  107. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js.map +1 -0
  108. package/es/chat-engine/components/a2ui/primitives/A2UIImage.d.ts +12 -0
  109. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +75 -0
  110. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js.map +1 -0
  111. package/es/chat-engine/components/a2ui/primitives/A2UIInput.d.ts +20 -0
  112. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +63 -0
  113. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js.map +1 -0
  114. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.d.ts +56 -0
  115. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +64 -0
  116. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js.map +1 -0
  117. package/es/chat-engine/components/a2ui/primitives/A2UISlider.d.ts +12 -0
  118. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +55 -0
  119. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js.map +1 -0
  120. package/es/chat-engine/components/a2ui/primitives/A2UIText.d.ts +12 -0
  121. package/es/chat-engine/components/a2ui/primitives/A2UIText.js +104 -0
  122. package/es/chat-engine/components/a2ui/primitives/A2UIText.js.map +1 -0
  123. package/es/chat-engine/components/a2ui/primitives/A2UITextField.d.ts +12 -0
  124. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +80 -0
  125. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js.map +1 -0
  126. package/es/chat-engine/components/a2ui/primitives/index.d.ts +15 -0
  127. package/es/chat-engine/components/a2ui/primitives/index.js +39 -0
  128. package/es/chat-engine/components/a2ui/primitives/index.js.map +1 -0
  129. package/es/chat-engine/components/a2ui/registry.d.ts +35 -0
  130. package/es/chat-engine/components/a2ui/registry.js +74 -0
  131. package/es/chat-engine/components/a2ui/registry.js.map +1 -0
  132. package/es/chat-engine/components/activity/index.js +8 -4
  133. package/es/chat-engine/components/activity/index.js.map +1 -1
  134. package/es/chat-engine/components/activity/registry.d.ts +6 -40
  135. package/es/chat-engine/components/activity/registry.js +22 -76
  136. package/es/chat-engine/components/activity/registry.js.map +1 -1
  137. package/es/chat-engine/components/activity/render.d.ts +1 -1
  138. package/es/chat-engine/components/activity/render.js +21 -69
  139. package/es/chat-engine/components/activity/render.js.map +1 -1
  140. package/es/chat-engine/components/index.js +8 -4
  141. package/es/chat-engine/components/index.js.map +1 -1
  142. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.d.ts +36 -0
  143. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js +36 -0
  144. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js.map +1 -0
  145. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.d.ts +46 -0
  146. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js +36 -0
  147. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js.map +1 -0
  148. package/es/chat-engine/components/json-render/SurfaceStateManager.d.ts +113 -0
  149. package/es/chat-engine/components/json-render/SurfaceStateManager.js +195 -0
  150. package/es/chat-engine/components/json-render/SurfaceStateManager.js.map +1 -0
  151. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.d.ts +49 -0
  152. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js +307 -0
  153. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js.map +1 -0
  154. package/es/chat-engine/components/json-render/adapters/a2ui-types.d.ts +96 -0
  155. package/es/chat-engine/components/json-render/adapters/a2ui-types.js +7 -0
  156. package/es/chat-engine/components/json-render/adapters/a2ui-types.js.map +1 -0
  157. package/es/chat-engine/components/json-render/adapters/index.d.ts +7 -0
  158. package/es/chat-engine/components/json-render/adapters/index.js +11 -0
  159. package/es/chat-engine/components/json-render/adapters/index.js.map +1 -0
  160. package/es/chat-engine/components/json-render/catalog/a2ui-binding.d.ts +64 -0
  161. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js +36 -0
  162. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js.map +1 -0
  163. package/es/chat-engine/components/json-render/catalog/a2ui-registry.d.ts +78 -0
  164. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js +36 -0
  165. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js.map +1 -0
  166. package/es/chat-engine/components/json-render/catalog/atomic/button.d.ts +14 -0
  167. package/es/chat-engine/components/json-render/catalog/atomic/button.js +71 -0
  168. package/es/chat-engine/components/json-render/catalog/atomic/button.js.map +1 -0
  169. package/es/chat-engine/components/json-render/catalog/atomic/card.d.ts +11 -0
  170. package/es/chat-engine/components/json-render/catalog/atomic/card.js +57 -0
  171. package/es/chat-engine/components/json-render/catalog/atomic/card.js.map +1 -0
  172. package/es/chat-engine/components/json-render/catalog/atomic/input.d.ts +20 -0
  173. package/es/chat-engine/components/json-render/catalog/atomic/input.js +76 -0
  174. package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -0
  175. package/es/chat-engine/components/json-render/catalog/atomic/layout.d.ts +44 -0
  176. package/es/chat-engine/components/json-render/catalog/atomic/layout.js +129 -0
  177. package/es/chat-engine/components/json-render/catalog/atomic/layout.js.map +1 -0
  178. package/es/chat-engine/components/json-render/catalog/atomic/text.d.ts +11 -0
  179. package/es/chat-engine/components/json-render/catalog/atomic/text.js +31 -0
  180. package/es/chat-engine/components/json-render/catalog/atomic/text.js.map +1 -0
  181. package/es/chat-engine/components/json-render/catalog/button.d.ts +14 -0
  182. package/es/chat-engine/components/json-render/catalog/button.js +71 -0
  183. package/es/chat-engine/components/json-render/catalog/button.js.map +1 -0
  184. package/es/chat-engine/components/json-render/catalog/card.d.ts +11 -0
  185. package/es/chat-engine/components/json-render/catalog/card.js +57 -0
  186. package/es/chat-engine/components/json-render/catalog/card.js.map +1 -0
  187. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.d.ts +614 -0
  188. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +779 -0
  189. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js.map +1 -0
  190. package/es/chat-engine/components/json-render/catalog/index.d.ts +128 -0
  191. package/es/chat-engine/components/json-render/catalog/index.js +36 -0
  192. package/es/chat-engine/components/json-render/catalog/index.js.map +1 -0
  193. package/es/chat-engine/components/json-render/catalog/input.d.ts +20 -0
  194. package/es/chat-engine/components/json-render/catalog/input.js +36 -0
  195. package/es/chat-engine/components/json-render/catalog/input.js.map +1 -0
  196. package/es/chat-engine/components/json-render/catalog/layout.d.ts +44 -0
  197. package/es/chat-engine/components/json-render/catalog/layout.js +129 -0
  198. package/es/chat-engine/components/json-render/catalog/layout.js.map +1 -0
  199. package/es/chat-engine/components/json-render/catalog/text.d.ts +11 -0
  200. package/es/chat-engine/components/json-render/catalog/text.js +31 -0
  201. package/es/chat-engine/components/json-render/catalog/text.js.map +1 -0
  202. package/es/chat-engine/components/json-render/catalog.d.ts +614 -0
  203. package/es/chat-engine/components/json-render/catalog.js +779 -0
  204. package/es/chat-engine/components/json-render/catalog.js.map +1 -0
  205. package/es/chat-engine/components/json-render/config.d.ts +154 -0
  206. package/es/chat-engine/components/json-render/config.js +36 -0
  207. package/es/chat-engine/components/json-render/config.js.map +1 -0
  208. package/es/chat-engine/components/json-render/contexts/actions.d.ts +79 -0
  209. package/es/chat-engine/components/json-render/contexts/actions.js +313 -0
  210. package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -0
  211. package/es/chat-engine/components/json-render/contexts/data.d.ts +137 -0
  212. package/es/chat-engine/components/json-render/contexts/data.js +183 -0
  213. package/es/chat-engine/components/json-render/contexts/data.js.map +1 -0
  214. package/es/chat-engine/components/json-render/contexts/index.d.ts +4 -0
  215. package/es/chat-engine/components/json-render/contexts/index.js +27 -0
  216. package/es/chat-engine/components/json-render/contexts/index.js.map +1 -0
  217. package/es/chat-engine/components/json-render/contexts/store.d.ts +67 -0
  218. package/es/chat-engine/components/json-render/contexts/store.js +104 -0
  219. package/es/chat-engine/components/json-render/contexts/store.js.map +1 -0
  220. package/es/chat-engine/components/json-render/contexts/tree.d.ts +44 -0
  221. package/es/chat-engine/components/json-render/contexts/tree.js +78 -0
  222. package/es/chat-engine/components/json-render/contexts/tree.js.map +1 -0
  223. package/es/chat-engine/components/json-render/contexts/validation.d.ts +59 -0
  224. package/es/chat-engine/components/json-render/contexts/validation.js +159 -0
  225. package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -0
  226. package/es/chat-engine/components/json-render/contexts/visibility.d.ts +39 -0
  227. package/es/chat-engine/components/json-render/contexts/visibility.js +66 -0
  228. package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -0
  229. package/es/chat-engine/components/json-render/engine.d.ts +58 -0
  230. package/es/chat-engine/components/json-render/engine.js +88 -0
  231. package/es/chat-engine/components/json-render/engine.js.map +1 -0
  232. package/es/chat-engine/components/json-render/index.d.ts +13 -0
  233. package/es/chat-engine/components/json-render/index.js +76 -0
  234. package/es/chat-engine/components/json-render/index.js.map +1 -0
  235. package/es/chat-engine/components/json-render/performance.d.ts +91 -0
  236. package/es/chat-engine/components/json-render/performance.js +135 -0
  237. package/es/chat-engine/components/json-render/performance.js.map +1 -0
  238. package/es/chat-engine/components/json-render/registry/a2ui-binding.d.ts +64 -0
  239. package/es/chat-engine/components/json-render/registry/a2ui-binding.js +76 -0
  240. package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -0
  241. package/es/chat-engine/components/json-render/registry/a2ui-registry.d.ts +78 -0
  242. package/es/chat-engine/components/json-render/registry/a2ui-registry.js +76 -0
  243. package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -0
  244. package/es/chat-engine/components/json-render/registry/config.d.ts +142 -0
  245. package/es/chat-engine/components/json-render/registry/config.js +76 -0
  246. package/es/chat-engine/components/json-render/registry/config.js.map +1 -0
  247. package/es/chat-engine/components/json-render/registry/index.d.ts +137 -0
  248. package/es/chat-engine/components/json-render/registry/index.js +76 -0
  249. package/es/chat-engine/components/json-render/registry/index.js.map +1 -0
  250. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.d.ts +35 -0
  251. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +271 -0
  252. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -0
  253. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.d.ts +44 -0
  254. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +63 -0
  255. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js.map +1 -0
  256. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.d.ts +44 -0
  257. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +131 -0
  258. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js.map +1 -0
  259. package/es/chat-engine/components/json-render/renderer/_index.d.ts +71 -0
  260. package/es/chat-engine/components/json-render/renderer/_index.js +133 -0
  261. package/es/chat-engine/components/json-render/renderer/_index.js.map +1 -0
  262. package/es/chat-engine/components/json-render/renderer/index.d.ts +71 -0
  263. package/es/chat-engine/components/json-render/renderer/index.js +125 -0
  264. package/es/chat-engine/components/json-render/renderer/index.js.map +1 -0
  265. package/es/chat-engine/components/json-render/renderer.d.ts +71 -0
  266. package/es/chat-engine/components/json-render/renderer.js +124 -0
  267. package/es/chat-engine/components/json-render/renderer.js.map +1 -0
  268. package/es/chat-engine/components/json-render/types.d.ts +87 -0
  269. package/es/chat-engine/components/json-render/types.js +7 -0
  270. package/es/chat-engine/components/json-render/types.js.map +1 -0
  271. package/es/chat-engine/components/shared/ComponentErrorBoundary.d.ts +25 -0
  272. package/es/chat-engine/components/shared/ComponentErrorBoundary.js +58 -0
  273. package/es/chat-engine/components/shared/ComponentErrorBoundary.js.map +1 -0
  274. package/es/chat-engine/components/shared/createRegistry.d.ts +36 -0
  275. package/es/chat-engine/components/shared/createRegistry.js +72 -0
  276. package/es/chat-engine/components/shared/createRegistry.js.map +1 -0
  277. package/es/chat-engine/components/shared/index.d.ts +4 -0
  278. package/es/chat-engine/components/shared/index.js +18 -0
  279. package/es/chat-engine/components/shared/index.js.map +1 -0
  280. package/es/chat-engine/components/shared/useRegistrationListener.d.ts +22 -0
  281. package/es/chat-engine/components/shared/useRegistrationListener.js +45 -0
  282. package/es/chat-engine/components/shared/useRegistrationListener.js.map +1 -0
  283. package/es/chat-engine/components/toolcall/index.d.ts +1 -1
  284. package/es/chat-engine/components/toolcall/index.js +11 -7
  285. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  286. package/es/chat-engine/components/toolcall/registry.d.ts +6 -32
  287. package/es/chat-engine/components/toolcall/registry.js +22 -66
  288. package/es/chat-engine/components/toolcall/registry.js.map +1 -1
  289. package/es/chat-engine/components/toolcall/render.js +27 -75
  290. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  291. package/es/chat-engine/core/a2ui/index.d.ts +10 -0
  292. package/es/chat-engine/core/a2ui/index.js +24 -0
  293. package/es/chat-engine/core/a2ui/index.js.map +1 -0
  294. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
  295. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +438 -0
  296. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
  297. package/es/chat-engine/core/a2ui/processor/ComponentTree.d.ts +53 -0
  298. package/es/chat-engine/core/a2ui/processor/ComponentTree.js +158 -0
  299. package/es/chat-engine/core/a2ui/processor/ComponentTree.js.map +1 -0
  300. package/es/chat-engine/core/a2ui/processor/DataStore.d.ts +63 -0
  301. package/es/chat-engine/core/a2ui/processor/DataStore.js +172 -0
  302. package/es/chat-engine/core/a2ui/processor/DataStore.js.map +1 -0
  303. package/es/chat-engine/core/a2ui/processor/PathResolver.d.ts +47 -0
  304. package/es/chat-engine/core/a2ui/processor/PathResolver.js +99 -0
  305. package/es/chat-engine/core/a2ui/processor/PathResolver.js.map +1 -0
  306. package/es/chat-engine/core/a2ui/types/index.d.ts +4 -0
  307. package/es/chat-engine/core/a2ui/types/index.js +9 -0
  308. package/es/chat-engine/core/a2ui/types/index.js.map +1 -0
  309. package/es/chat-engine/core/a2ui/types/types.d.ts +770 -0
  310. package/es/chat-engine/core/a2ui/types/types.js +104 -0
  311. package/es/chat-engine/core/a2ui/types/types.js.map +1 -0
  312. package/es/chat-engine/core/a2ui/utils/binding.d.ts +34 -0
  313. package/es/chat-engine/core/a2ui/utils/binding.js +1784 -0
  314. package/es/chat-engine/core/a2ui/utils/binding.js.map +1 -0
  315. package/es/chat-engine/core/a2ui/utils/index.d.ts +5 -0
  316. package/es/chat-engine/core/a2ui/utils/index.js +13 -0
  317. package/es/chat-engine/core/a2ui/utils/index.js.map +1 -0
  318. package/es/chat-engine/core/a2ui/utils/validation.d.ts +70 -0
  319. package/es/chat-engine/core/a2ui/utils/validation.js +333 -0
  320. package/es/chat-engine/core/a2ui/utils/validation.js.map +1 -0
  321. package/es/chat-engine/core/adapters/a2ui/index.d.ts +10 -0
  322. package/es/chat-engine/core/adapters/a2ui/index.js +24 -0
  323. package/es/chat-engine/core/adapters/a2ui/index.js.map +1 -0
  324. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
  325. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +438 -0
  326. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
  327. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.d.ts +53 -0
  328. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +158 -0
  329. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js.map +1 -0
  330. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.d.ts +63 -0
  331. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +172 -0
  332. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js.map +1 -0
  333. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.d.ts +47 -0
  334. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +99 -0
  335. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js.map +1 -0
  336. package/es/chat-engine/core/adapters/a2ui/types/index.d.ts +4 -0
  337. package/es/chat-engine/core/adapters/a2ui/types/index.js +9 -0
  338. package/es/chat-engine/core/adapters/a2ui/types/index.js.map +1 -0
  339. package/es/chat-engine/core/adapters/a2ui/types/types.d.ts +770 -0
  340. package/es/chat-engine/core/adapters/a2ui/types/types.js +104 -0
  341. package/es/chat-engine/core/adapters/a2ui/types/types.js.map +1 -0
  342. package/es/chat-engine/core/adapters/a2ui/utils/binding.d.ts +34 -0
  343. package/es/chat-engine/core/adapters/a2ui/utils/binding.js +1784 -0
  344. package/es/chat-engine/core/adapters/a2ui/utils/binding.js.map +1 -0
  345. package/es/chat-engine/core/adapters/a2ui/utils/index.d.ts +5 -0
  346. package/es/chat-engine/core/adapters/a2ui/utils/index.js +13 -0
  347. package/es/chat-engine/core/adapters/a2ui/utils/index.js.map +1 -0
  348. package/es/chat-engine/core/adapters/a2ui/utils/validation.d.ts +70 -0
  349. package/es/chat-engine/core/adapters/a2ui/utils/validation.js +333 -0
  350. package/es/chat-engine/core/adapters/a2ui/utils/validation.js.map +1 -0
  351. package/es/chat-engine/core/adapters/agui/ActivityManager.d.ts +93 -0
  352. package/es/chat-engine/core/adapters/agui/ActivityManager.js +148 -0
  353. package/es/chat-engine/core/adapters/agui/ActivityManager.js.map +1 -0
  354. package/es/chat-engine/core/adapters/agui/StateManager.d.ts +99 -0
  355. package/es/chat-engine/core/adapters/agui/StateManager.js +172 -0
  356. package/es/chat-engine/core/adapters/agui/StateManager.js.map +1 -0
  357. package/es/chat-engine/core/adapters/agui/activity-manager.d.ts +102 -0
  358. package/es/chat-engine/core/adapters/agui/activity-manager.js +150 -0
  359. package/es/chat-engine/core/adapters/agui/activity-manager.js.map +1 -0
  360. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +149 -0
  361. package/es/chat-engine/core/adapters/agui/event-mapper.js +417 -0
  362. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -0
  363. package/es/chat-engine/core/adapters/agui/events.d.ts +1550 -0
  364. package/es/chat-engine/core/adapters/agui/events.js +199 -0
  365. package/es/chat-engine/core/adapters/agui/events.js.map +1 -0
  366. package/es/chat-engine/core/adapters/agui/index.d.ts +92 -0
  367. package/es/chat-engine/core/adapters/agui/index.js +200 -0
  368. package/es/chat-engine/core/adapters/agui/index.js.map +1 -0
  369. package/es/chat-engine/core/adapters/agui/state-manager.d.ts +99 -0
  370. package/es/chat-engine/core/adapters/agui/state-manager.js +174 -0
  371. package/es/chat-engine/core/adapters/agui/state-manager.js.map +1 -0
  372. package/es/chat-engine/core/adapters/agui/types/events.d.ts +1570 -0
  373. package/es/chat-engine/core/adapters/agui/types/events.js +15 -0
  374. package/es/chat-engine/core/adapters/agui/types/events.js.map +1 -0
  375. package/es/chat-engine/core/adapters/agui/types/index.d.ts +854 -0
  376. package/es/chat-engine/core/adapters/agui/types/index.js +279 -0
  377. package/es/chat-engine/core/adapters/agui/types/index.js.map +1 -0
  378. package/es/chat-engine/core/adapters/agui/types.d.ts +818 -0
  379. package/es/chat-engine/core/adapters/agui/types.js +95 -0
  380. package/es/chat-engine/core/adapters/agui/types.js.map +1 -0
  381. package/es/chat-engine/core/adapters/agui/utils.d.ts +203 -0
  382. package/es/chat-engine/core/adapters/agui/utils.js +330 -0
  383. package/es/chat-engine/core/adapters/agui/utils.js.map +1 -0
  384. package/es/chat-engine/core/adapters/index.d.ts +5 -0
  385. package/es/chat-engine/core/adapters/index.js +34 -0
  386. package/es/chat-engine/core/adapters/index.js.map +1 -0
  387. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.d.ts +114 -0
  388. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +194 -0
  389. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js.map +1 -0
  390. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.d.ts +49 -0
  391. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +307 -0
  392. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js.map +1 -0
  393. package/es/chat-engine/core/adapters/json-render/engine.d.ts +58 -0
  394. package/es/chat-engine/core/adapters/json-render/engine.js +88 -0
  395. package/es/chat-engine/core/adapters/json-render/engine.js.map +1 -0
  396. package/es/chat-engine/core/adapters/json-render/index.d.ts +8 -0
  397. package/es/chat-engine/core/adapters/json-render/index.js +18 -0
  398. package/es/chat-engine/core/adapters/json-render/index.js.map +1 -0
  399. package/es/chat-engine/core/adapters/json-render/types/a2ui.d.ts +96 -0
  400. package/es/chat-engine/core/adapters/json-render/types/a2ui.js +7 -0
  401. package/es/chat-engine/core/adapters/json-render/types/a2ui.js.map +1 -0
  402. package/es/chat-engine/core/adapters/json-render/types/core.d.ts +49 -0
  403. package/es/chat-engine/core/adapters/json-render/types/core.js +7 -0
  404. package/es/chat-engine/core/adapters/json-render/types/core.js.map +1 -0
  405. package/es/chat-engine/core/adapters/json-render/types/index.d.ts +5 -0
  406. package/es/chat-engine/core/adapters/json-render/types/index.js +9 -0
  407. package/es/chat-engine/core/adapters/json-render/types/index.js.map +1 -0
  408. package/es/chat-engine/core/event-bus/ChatEventBus.d.ts +88 -0
  409. package/es/chat-engine/core/event-bus/ChatEventBus.js +295 -0
  410. package/es/chat-engine/core/event-bus/ChatEventBus.js.map +1 -0
  411. package/es/chat-engine/core/event-bus/index.d.ts +5 -0
  412. package/es/chat-engine/core/event-bus/index.js +13 -0
  413. package/es/chat-engine/core/event-bus/index.js.map +1 -0
  414. package/es/chat-engine/core/event-bus/types.d.ts +230 -0
  415. package/es/chat-engine/core/event-bus/types.js +32 -0
  416. package/es/chat-engine/core/event-bus/types.js.map +1 -0
  417. package/es/chat-engine/core/index.d.ts +147 -0
  418. package/es/chat-engine/core/index.js +760 -0
  419. package/es/chat-engine/core/index.js.map +1 -0
  420. package/es/chat-engine/core/processor/index.d.ts +20 -0
  421. package/es/chat-engine/core/processor/index.js +146 -0
  422. package/es/chat-engine/core/processor/index.js.map +1 -0
  423. package/es/chat-engine/core/server/batch-client.d.ts +20 -0
  424. package/es/chat-engine/core/server/batch-client.js +114 -0
  425. package/es/chat-engine/core/server/batch-client.js.map +1 -0
  426. package/es/chat-engine/core/server/connection-manager.d.ts +39 -0
  427. package/es/chat-engine/core/server/connection-manager.js +84 -0
  428. package/es/chat-engine/core/server/connection-manager.js.map +1 -0
  429. package/es/chat-engine/core/server/errors.d.ts +22 -0
  430. package/es/chat-engine/core/server/errors.js +80 -0
  431. package/es/chat-engine/core/server/errors.js.map +1 -0
  432. package/es/chat-engine/core/server/index.d.ts +11 -0
  433. package/es/chat-engine/core/server/index.js +26 -0
  434. package/es/chat-engine/core/server/index.js.map +1 -0
  435. package/es/chat-engine/core/server/llm-service.d.ts +44 -0
  436. package/es/chat-engine/core/server/llm-service.js +200 -0
  437. package/es/chat-engine/core/server/llm-service.js.map +1 -0
  438. package/es/chat-engine/core/server/sse-client.d.ts +77 -0
  439. package/es/chat-engine/core/server/sse-client.js +362 -0
  440. package/es/chat-engine/core/server/sse-client.js.map +1 -0
  441. package/es/chat-engine/core/server/sse-parser.d.ts +49 -0
  442. package/es/chat-engine/core/server/sse-parser.js +116 -0
  443. package/es/chat-engine/core/server/sse-parser.js.map +1 -0
  444. package/es/chat-engine/core/server/types.d.ts +54 -0
  445. package/es/chat-engine/core/server/types.js +28 -0
  446. package/es/chat-engine/core/server/types.js.map +1 -0
  447. package/es/chat-engine/core/store/message.d.ts +27 -0
  448. package/es/chat-engine/core/store/message.js +267 -0
  449. package/es/chat-engine/core/store/message.js.map +1 -0
  450. package/es/chat-engine/core/store/model.d.ts +8 -0
  451. package/es/chat-engine/core/store/model.js +66 -0
  452. package/es/chat-engine/core/store/model.js.map +1 -0
  453. package/es/chat-engine/core/store/reactiveState.d.ts +56 -0
  454. package/es/chat-engine/core/store/reactiveState.js +139 -0
  455. package/es/chat-engine/core/store/reactiveState.js.map +1 -0
  456. package/es/chat-engine/core/type.d.ts +279 -0
  457. package/es/chat-engine/core/type.js +7 -0
  458. package/es/chat-engine/core/type.js.map +1 -0
  459. package/es/chat-engine/core/utils/eventEmitter.d.ts +10 -0
  460. package/es/chat-engine/core/utils/eventEmitter.js +67 -0
  461. package/es/chat-engine/core/utils/eventEmitter.js.map +1 -0
  462. package/es/chat-engine/core/utils/immutable-patch.d.ts +61 -0
  463. package/es/chat-engine/core/utils/immutable-patch.js +147 -0
  464. package/es/chat-engine/core/utils/immutable-patch.js.map +1 -0
  465. package/es/chat-engine/core/utils/index.d.ts +38 -0
  466. package/es/chat-engine/core/utils/index.js +125 -0
  467. package/es/chat-engine/core/utils/index.js.map +1 -0
  468. package/es/chat-engine/core/utils/json-patch/helpers.d.ts +41 -0
  469. package/es/chat-engine/core/utils/json-patch/helpers.js +164 -0
  470. package/es/chat-engine/core/utils/json-patch/helpers.js.map +1 -0
  471. package/es/chat-engine/core/utils/json-patch/index.d.ts +115 -0
  472. package/es/chat-engine/core/utils/json-patch/index.js +387 -0
  473. package/es/chat-engine/core/utils/json-patch/index.js.map +1 -0
  474. package/es/chat-engine/core/utils/logger.d.ts +30 -0
  475. package/es/chat-engine/core/utils/logger.js +87 -0
  476. package/es/chat-engine/core/utils/logger.js.map +1 -0
  477. package/es/chat-engine/core/utils/performance.d.ts +94 -0
  478. package/es/chat-engine/core/utils/performance.js +205 -0
  479. package/es/chat-engine/core/utils/performance.js.map +1 -0
  480. package/es/chat-engine/hooks/a2ui/A2UIContext.d.ts +90 -0
  481. package/es/chat-engine/hooks/a2ui/A2UIContext.js +97 -0
  482. package/es/chat-engine/hooks/a2ui/A2UIContext.js.map +1 -0
  483. package/es/chat-engine/hooks/a2ui/index.d.ts +12 -0
  484. package/es/chat-engine/hooks/a2ui/index.js +19 -0
  485. package/es/chat-engine/hooks/a2ui/index.js.map +1 -0
  486. package/es/chat-engine/hooks/a2ui/useA2UIAction.d.ts +40 -0
  487. package/es/chat-engine/hooks/a2ui/useA2UIAction.js +74 -0
  488. package/es/chat-engine/hooks/a2ui/useA2UIAction.js.map +1 -0
  489. package/es/chat-engine/hooks/a2ui/useA2UISurface.d.ts +36 -0
  490. package/es/chat-engine/hooks/a2ui/useA2UISurface.js +39 -0
  491. package/es/chat-engine/hooks/a2ui/useA2UISurface.js.map +1 -0
  492. package/es/chat-engine/hooks/a2ui/useDataBinding.d.ts +53 -0
  493. package/es/chat-engine/hooks/a2ui/useDataBinding.js +111 -0
  494. package/es/chat-engine/hooks/a2ui/useDataBinding.js.map +1 -0
  495. package/es/chat-engine/hooks/index.js +7 -0
  496. package/es/chat-engine/hooks/index.js.map +1 -1
  497. package/es/chat-engine/hooks/useAgentActivity.js +9 -1
  498. package/es/chat-engine/hooks/useAgentActivity.js.map +1 -1
  499. package/es/chat-engine/hooks/useAgentToolcall.js +9 -1
  500. package/es/chat-engine/hooks/useAgentToolcall.js.map +1 -1
  501. package/es/chat-engine/hooks/useJsonRenderActivity.d.ts +56 -0
  502. package/es/chat-engine/hooks/useJsonRenderActivity.js +63 -0
  503. package/es/chat-engine/hooks/useJsonRenderActivity.js.map +1 -0
  504. package/es/chat-engine/index.js +8 -4
  505. package/es/chat-engine/index.js.map +1 -1
  506. package/es/chat-filecard/index.js +3 -5
  507. package/es/chat-filecard/index.js.map +1 -1
  508. package/es/chat-loading/index.js +3 -5
  509. package/es/chat-loading/index.js.map +1 -1
  510. package/es/chat-markdown/index.js +3 -5
  511. package/es/chat-markdown/index.js.map +1 -1
  512. package/es/chat-message/index.js +3 -5
  513. package/es/chat-message/index.js.map +1 -1
  514. package/es/chat-sender/index.js +3 -5
  515. package/es/chat-sender/index.js.map +1 -1
  516. package/es/chat-thinking/index.js +3 -5
  517. package/es/chat-thinking/index.js.map +1 -1
  518. package/es/chatbot/docs/react-best-practice.d.ts +13 -0
  519. package/es/chatbot/index.js +3 -5
  520. package/es/chatbot/index.js.map +1 -1
  521. package/es/index.js +10 -7
  522. package/es/index.js.map +1 -1
  523. package/package.json +16 -11
  524. package/es/chatbot/_example-js/agui-toolcall.d.ts +0 -11
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sources":["../../../../../pro-components/chat/chat-engine/components/toolcall/registry.ts"],"sourcesContent":["import React from 'react';\nimport type { AgentToolcallConfig, AgentToolcallRegistry, ToolcallComponentProps } from './types';\n\n/**\n * 全局 Agent Toolcall 注册表\n */\nclass AgentToolcallRegistryManager {\n private registry: AgentToolcallRegistry = {};\n\n // 添加组件渲染函数缓存(类似CopilotKit的chatComponentsCache.current.actions)\n private renderFunctionCache = new Map<\n string,\n React.MemoExoticComponent<React.ComponentType<ToolcallComponentProps>>\n >();\n\n /**\n * 注册一个 Agent Toolcall\n */\n register<TArgs extends object = any, TResult = any, TResponse = any>(\n config: AgentToolcallConfig<TArgs, TResult, TResponse>,\n ): void {\n const existingConfig = this.registry[config.name];\n\n // 如果组件发生变化,清除旧的缓存\n if (existingConfig && existingConfig.component !== config.component) {\n this.renderFunctionCache.delete(config.name);\n }\n this.registry[config.name] = config;\n window.dispatchEvent(\n new CustomEvent('toolcall-registered', {\n detail: { name: config.name },\n }),\n );\n }\n\n /**\n * 获取指定名称的 Agent Toolcall 配置\n */\n get(name: string): AgentToolcallConfig | undefined {\n return this.registry[name];\n }\n\n /**\n * 获取或创建缓存的组件渲染函数\n */\n getRenderFunction(name: string): React.MemoExoticComponent<React.ComponentType<ToolcallComponentProps>> | null {\n const config = this.registry[name];\n if (!config) return null;\n\n // 检查缓存\n let memoizedComponent = this.renderFunctionCache.get(name);\n\n if (!memoizedComponent) {\n // 创建memo化的组件\n memoizedComponent = React.memo((props: ToolcallComponentProps) => React.createElement(config.component, props));\n\n // 缓存组件\n this.renderFunctionCache.set(name, memoizedComponent);\n }\n\n return memoizedComponent;\n }\n\n /**\n * 获取所有已注册的 Agent Toolcall\n */\n getAll(): AgentToolcallRegistry {\n return { ...this.registry };\n }\n\n /**\n * 取消注册指定的 Agent Toolcall\n */\n unregister(name: string): void {\n delete this.registry[name];\n this.renderFunctionCache.delete(name);\n }\n\n /**\n * 清空所有注册的 Agent Toolcall\n */\n clear(): void {\n this.registry = {};\n this.renderFunctionCache.clear();\n }\n}\n\n// 导出单例实例\nexport const agentToolcallRegistry = new AgentToolcallRegistryManager();\n"],"names":["AgentToolcallRegistryManager","_classCallCheck","_defineProperty","Map","_createClass","key","value","register","config","existingConfig","registry","name","component","renderFunctionCache","window","dispatchEvent","CustomEvent","detail","get","getRenderFunction","memoizedComponent","React","memo","props","createElement","set","getAll","_objectSpread","unregister","clear","agentToolcallRegistry"],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sources":["../../../../../pro-components/chat/chat-engine/components/toolcall/registry.ts"],"sourcesContent":["import { createRegistryManager } from '../shared';\nimport type { AgentToolcallConfig, ToolcallComponentProps } from './types';\n\n/** Toolcall 注册事件名称 */\nexport const TOOLCALL_REGISTERED_EVENT = 'toolcall-registered';\n\n/** Toolcall 注册事件 detail 键名 */\nexport const TOOLCALL_EVENT_DETAIL_KEY = 'name';\n\n/**\n * 全局 Agent Toolcall 注册表\n */\nexport const agentToolcallRegistry = createRegistryManager<AgentToolcallConfig, ToolcallComponentProps>({\n getKey: (config) => config.name,\n eventName: TOOLCALL_REGISTERED_EVENT,\n eventDetailKey: TOOLCALL_EVENT_DETAIL_KEY,\n});\n"],"names":["TOOLCALL_REGISTERED_EVENT","TOOLCALL_EVENT_DETAIL_KEY","agentToolcallRegistry","createRegistryManager","getKey","config","name","eventName","eventDetailKey"],"mappings":";;;;;;;;;;;;;;;;;;;AAIO,IAAMA,yBAA4B,GAAA,sBAAA;AAGlC,IAAMC,yBAA4B,GAAA,OAAA;AAK5BC,IAAAA,wBAAwBC,qBAAmE,CAAA;AACtGC,EAAAA,MAAA,EAAQ,SAARA,MAAAA,CAASC,MAAA,EAAA;IAAA,OAAWA,MAAO,CAAAC,IAAA,CAAA;AAAA,GAAA;AAC3BC,EAAAA,SAAW,EAAAP,yBAAA;AACXQ,EAAAA,cAAgB,EAAAP,yBAAAA;AAClB,CAAC;;;;"}
@@ -7,57 +7,24 @@
7
7
  import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
8
8
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
9
9
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
10
- import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
11
- import _createClass from '@babel/runtime/helpers/createClass';
12
- import _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';
13
- import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
14
- import _inherits from '@babel/runtime/helpers/inherits';
15
10
  import _regeneratorRuntime from '@babel/runtime/regenerator';
16
- import React, { Component, useState, useMemo, useCallback, useEffect } from 'react';
11
+ import React, { useState, useMemo, useCallback, useEffect } from 'react';
17
12
  import { AGUIEventType } from 'tdesign-web-components/lib/chat-engine';
18
13
  import { isNonInteractiveConfig } from './types.js';
19
- import { agentToolcallRegistry } from './registry.js';
14
+ import { agentToolcallRegistry, TOOLCALL_REGISTERED_EVENT, TOOLCALL_EVENT_DETAIL_KEY } from './registry.js';
15
+ import '../shared/index.js';
20
16
  import { useAgentStateDataByKey, AgentStateContext } from '../../hooks/useAgentState.js';
17
+ import { useRegistrationListener } from '../shared/useRegistrationListener.js';
18
+ import { ComponentErrorBoundary } from '../shared/ComponentErrorBoundary.js';
19
+ import '../shared/createRegistry.js';
20
+ import '@babel/runtime/helpers/classCallCheck';
21
+ import '@babel/runtime/helpers/createClass';
22
+ import '@babel/runtime/helpers/possibleConstructorReturn';
23
+ import '@babel/runtime/helpers/getPrototypeOf';
24
+ import '@babel/runtime/helpers/inherits';
21
25
 
22
26
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
23
27
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
25
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
26
- var ToolCallErrorBoundary = /*#__PURE__*/function (_Component) {
27
- function ToolCallErrorBoundary(props) {
28
- var _this;
29
- _classCallCheck(this, ToolCallErrorBoundary);
30
- _this = _callSuper(this, ToolCallErrorBoundary, [props]);
31
- _this.state = {
32
- hasError: false,
33
- error: null
34
- };
35
- return _this;
36
- }
37
- _inherits(ToolCallErrorBoundary, _Component);
38
- return _createClass(ToolCallErrorBoundary, [{
39
- key: "componentDidCatch",
40
- value: function componentDidCatch(error, errorInfo) {
41
- console.error("[ToolCallRenderer] Error in tool \"".concat(this.props.toolCallName, "\":"), error, errorInfo);
42
- }
43
- }, {
44
- key: "render",
45
- value: function render() {
46
- if (this.state.hasError) {
47
- return null;
48
- }
49
- return this.props.children;
50
- }
51
- }], [{
52
- key: "getDerivedStateFromError",
53
- value: function getDerivedStateFromError(error) {
54
- return {
55
- hasError: true,
56
- error: error
57
- };
58
- }
59
- }]);
60
- }(Component);
61
28
  var ToolCallRenderer = /*#__PURE__*/React.memo(function (_ref) {
62
29
  var toolCall = _ref.toolCall,
63
30
  onRespond = _ref.onRespond;
@@ -71,12 +38,13 @@ var ToolCallRenderer = /*#__PURE__*/React.memo(function (_ref) {
71
38
  var cfg = agentToolcallRegistry.get(toolCall.toolCallName);
72
39
  return cfg;
73
40
  }, [toolCall.toolCallName]);
74
- var _useState3 = useState(function () {
75
- return !!agentToolcallRegistry.getRenderFunction(toolCall.toolCallName);
41
+ var _useRegistrationListe = useRegistrationListener({
42
+ componentKey: toolCall.toolCallName,
43
+ eventName: TOOLCALL_REGISTERED_EVENT,
44
+ eventDetailKey: TOOLCALL_EVENT_DETAIL_KEY,
45
+ getRenderFunction: agentToolcallRegistry.getRenderFunction
76
46
  }),
77
- _useState4 = _slicedToArray(_useState3, 2),
78
- isRegistered = _useState4[0],
79
- setIsRegistered = _useState4[1];
47
+ MemoizedComponent = _useRegistrationListe.MemoizedComponent;
80
48
  var args = useMemo(function () {
81
49
  try {
82
50
  return toolCall.args ? JSON.parse(toolCall.args) : {};
@@ -182,20 +150,6 @@ var ToolCallRenderer = /*#__PURE__*/React.memo(function (_ref) {
182
150
  };
183
151
  return subscribeKeyExtractor(fullProps);
184
152
  }, [subscribeKeyExtractor, args, actionState]);
185
- useEffect(function () {
186
- if (!isRegistered) {
187
- var handleRegistered = function handleRegistered(event) {
188
- var _event$detail;
189
- if (((_event$detail = event.detail) === null || _event$detail === void 0 ? void 0 : _event$detail.name) === toolCall.toolCallName) {
190
- setIsRegistered(true);
191
- }
192
- };
193
- window.addEventListener("toolcall-registered", handleRegistered);
194
- return function () {
195
- window.removeEventListener("toolcall-registered", handleRegistered);
196
- };
197
- }
198
- }, [toolCall.toolCallName, isRegistered]);
199
153
  var agentState = useAgentStateDataByKey(targetStateKey);
200
154
  var componentProps = useMemo(function () {
201
155
  return {
@@ -207,44 +161,42 @@ var ToolCallRenderer = /*#__PURE__*/React.memo(function (_ref) {
207
161
  agentState: agentState
208
162
  };
209
163
  }, [actionState.status, args, actionState.result, actionState.error, handleRespond, agentState]);
210
- var MemoizedComponent = useMemo(function () {
211
- return agentToolcallRegistry.getRenderFunction(toolCall.toolCallName);
212
- }, [toolCall.toolCallName, isRegistered]);
213
164
  if (!MemoizedComponent) {
214
165
  return null;
215
166
  }
216
- return /* @__PURE__ */React.createElement(ToolCallErrorBoundary, {
217
- toolCallName: toolCall.toolCallName
167
+ return /* @__PURE__ */React.createElement(ComponentErrorBoundary, {
168
+ componentName: toolCall.toolCallName,
169
+ logPrefix: "ToolCallRenderer"
218
170
  }, /* @__PURE__ */React.createElement(MemoizedComponent, _objectSpread({}, componentProps)));
219
171
  }, function (prevProps, nextProps) {
220
172
  return prevProps.toolCall.toolCallId === nextProps.toolCall.toolCallId && prevProps.toolCall.toolCallName === nextProps.toolCall.toolCallName && prevProps.toolCall.args === nextProps.toolCall.args && prevProps.toolCall.result === nextProps.toolCall.result && prevProps.toolCall.eventType === nextProps.toolCall.eventType && prevProps.onRespond === nextProps.onRespond;
221
173
  });
222
- var withAgentStateToolcall1 = function withAgentStateToolcall1(Component2) {
174
+ var withAgentStateToolcall1 = function withAgentStateToolcall1(Component) {
223
175
  var WrappedComponent = function WrappedComponent(props) {
224
176
  return /* @__PURE__ */React.createElement(AgentStateContext.Consumer, null, function (context) {
225
177
  if (!context) {
226
178
  console.warn("AgentStateContext not found, component will render without state");
227
- return /* @__PURE__ */React.createElement(Component2, _objectSpread({}, props));
179
+ return /* @__PURE__ */React.createElement(Component, _objectSpread({}, props));
228
180
  }
229
- return /* @__PURE__ */React.createElement(Component2, _objectSpread(_objectSpread({}, props), {}, {
181
+ return /* @__PURE__ */React.createElement(Component, _objectSpread(_objectSpread({}, props), {}, {
230
182
  agentState: context.stateMap
231
183
  }));
232
184
  });
233
185
  };
234
- WrappedComponent.displayName = "withAgentState(".concat(Component2.displayName || Component2.name || "Component", ")");
186
+ WrappedComponent.displayName = "withAgentState(".concat(Component.displayName || Component.name || "Component", ")");
235
187
  return /*#__PURE__*/React.memo(WrappedComponent);
236
188
  };
237
- var withAgentStateToolcall = function withAgentStateToolcall(Component2, subscribeKeyExtractor) {
189
+ var withAgentStateToolcall = function withAgentStateToolcall(Component, subscribeKeyExtractor) {
238
190
  var WrappedComponent = function WrappedComponent(props) {
239
191
  var targetStateKey = useMemo(function () {
240
192
  return subscribeKeyExtractor ? subscribeKeyExtractor(props) : void 0;
241
193
  }, [props]);
242
194
  var agentState = useAgentStateDataByKey(targetStateKey);
243
- return /* @__PURE__ */React.createElement(Component2, _objectSpread(_objectSpread({}, props), {}, {
195
+ return /* @__PURE__ */React.createElement(Component, _objectSpread(_objectSpread({}, props), {}, {
244
196
  agentState: agentState
245
197
  }));
246
198
  };
247
- WrappedComponent.displayName = "withAgentState(".concat(Component2.displayName || Component2.name || "Component", ")");
199
+ WrappedComponent.displayName = "withAgentState(".concat(Component.displayName || Component.name || "Component", ")");
248
200
  return /*#__PURE__*/React.memo(WrappedComponent);
249
201
  };
250
202
 
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sources":["../../../../../pro-components/chat/chat-engine/components/toolcall/render.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback, useMemo, Component, ErrorInfo } from 'react';\nimport { AGUIEventType, ToolCall } from 'tdesign-web-components/lib/chat-engine';\nimport { isNonInteractiveConfig, type ToolcallComponentProps } from './types';\nimport { agentToolcallRegistry } from './registry';\nimport { AgentStateContext, useAgentStateDataByKey } from '../../hooks/useAgentState';\n\ninterface ToolCallRendererProps {\n toolCall: ToolCall;\n onRespond?: (toolCall: ToolCall, response: any) => void;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\n/**\n * ToolCall 错误边界组件\n * 捕获子组件渲染错误,防止整个对话列表崩溃\n */\nclass ToolCallErrorBoundary extends Component<{ children: React.ReactNode; toolCallName: string }, ErrorBoundaryState> {\n constructor(props: { children: React.ReactNode; toolCallName: string }) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n console.error(`[ToolCallRenderer] Error in tool \"${this.props.toolCallName}\":`, error, errorInfo);\n }\n\n render() {\n if (this.state.hasError) {\n // 空白兜底,仅在控制台输出错误\n return null;\n }\n\n return this.props.children;\n }\n}\n\nexport const ToolCallRenderer = React.memo<ToolCallRendererProps>(\n ({ toolCall, onRespond }) => {\n const [actionState, setActionState] = useState<{\n status: ToolcallComponentProps['status'];\n result?: any;\n error?: Error;\n }>({\n status: 'idle',\n });\n\n // 缓存配置获取\n const config = useMemo(() => {\n const cfg = agentToolcallRegistry.get(toolCall.toolCallName);\n return cfg;\n }, [toolCall.toolCallName]);\n\n // 添加注册状态监听\n const [isRegistered, setIsRegistered] = useState(\n () => !!agentToolcallRegistry.getRenderFunction(toolCall.toolCallName),\n );\n\n // 缓存参数解析\n const args = useMemo(() => {\n try {\n return toolCall.args ? JSON.parse(toolCall.args) : {};\n } catch (error) {\n console.error('解析工具调用参数失败:', error);\n return {};\n }\n }, [toolCall.args]);\n\n const handleRespond = useCallback(\n (response: any) => {\n if (onRespond) {\n onRespond(toolCall, response);\n setActionState((prev) => ({\n ...prev,\n status: 'complete',\n result: response,\n }));\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [toolCall.toolCallId, onRespond],\n );\n\n // 执行 handler(如果存在)- 必须在条件判断之前调用\n useEffect(() => {\n if (!config) return;\n\n if (isNonInteractiveConfig(config)) {\n // 非交互式:执行 handler\n const executeHandler = async () => {\n try {\n setActionState({ status: 'executing' });\n\n // 解析后端返回的结果作为 handler 的第二个参数\n let backendResult;\n if (toolCall.result) {\n try {\n backendResult = JSON.parse(toolCall.result);\n } catch (error) {\n console.warn('解析后端结果失败,使用原始字符串:', error);\n backendResult = toolCall.result;\n }\n }\n\n // 调用 handler,传入 args 和 backendResult\n const result = await config.handler(args, backendResult);\n setActionState({\n status: 'complete',\n result,\n });\n } catch (error) {\n setActionState({\n status: 'error',\n error: error as Error,\n });\n }\n };\n\n executeHandler();\n } else if (toolCall.result) {\n // 交互式:已有结果,显示完成状态\n try {\n const result = JSON.parse(toolCall.result);\n setActionState({\n status: 'complete',\n result,\n });\n } catch (error) {\n setActionState({\n status: 'error',\n error: error as Error,\n });\n }\n } else if (\n toolCall.eventType === AGUIEventType.TOOL_CALL_END ||\n toolCall.eventType === AGUIEventType.TOOL_CALL_RESULT\n ) {\n // 工具调用已结束(无 result 的情况,如 show_progress)\n setActionState({ status: 'complete' });\n } else {\n // 等待用户交互或工具执行中\n setActionState({ status: 'executing' });\n }\n }, [config, args, toolCall.result, toolCall.eventType]);\n\n // 从配置中获取 subscribeKey 提取函数\n const subscribeKeyExtractor = useMemo(() => config?.subscribeKey, [config]);\n\n // 使用配置的提取函数来获取 targetStateKey\n const targetStateKey = useMemo(() => {\n if (!subscribeKeyExtractor) return undefined;\n\n // 构造完整的 props 对象传给提取函数\n const fullProps = {\n status: actionState.status,\n args,\n result: actionState.result,\n error: actionState.error,\n respond: handleRespond,\n };\n\n return subscribeKeyExtractor(fullProps);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribeKeyExtractor, args, actionState]);\n\n // 监听组件注册事件, 无论何时注册,都能正确触发重新渲染\n useEffect(() => {\n if (!isRegistered) {\n const handleRegistered = (event: CustomEvent) => {\n if (event.detail?.name === toolCall.toolCallName) {\n setIsRegistered(true);\n }\n };\n\n // 添加事件监听\n window.addEventListener('toolcall-registered', handleRegistered as EventListener);\n\n return () => {\n window.removeEventListener('toolcall-registered', handleRegistered as EventListener);\n };\n }\n }, [toolCall.toolCallName, isRegistered]);\n\n // 使用精确订阅\n const agentState = useAgentStateDataByKey(targetStateKey);\n\n // 缓存组件 props\n const componentProps = useMemo<ToolcallComponentProps>(\n () => ({\n status: actionState.status,\n args,\n result: actionState.result,\n error: actionState.error,\n respond: handleRespond,\n agentState,\n }),\n [actionState.status, args, actionState.result, actionState.error, handleRespond, agentState],\n );\n\n // 使用registry的缓存渲染函数\n const MemoizedComponent = useMemo(\n () => agentToolcallRegistry.getRenderFunction(toolCall.toolCallName),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [toolCall.toolCallName, isRegistered],\n );\n\n if (!MemoizedComponent) {\n return null;\n }\n\n return (\n <ToolCallErrorBoundary toolCallName={toolCall.toolCallName}>\n <MemoizedComponent {...componentProps} />\n </ToolCallErrorBoundary>\n );\n },\n (prevProps, nextProps) =>\n prevProps.toolCall.toolCallId === nextProps.toolCall.toolCallId &&\n prevProps.toolCall.toolCallName === nextProps.toolCall.toolCallName &&\n prevProps.toolCall.args === nextProps.toolCall.args &&\n prevProps.toolCall.result === nextProps.toolCall.result &&\n prevProps.toolCall.eventType === nextProps.toolCall.eventType &&\n prevProps.onRespond === nextProps.onRespond,\n);\n// 用于调试,可以在控制台查看每次渲染的参数\n// (prevProps, nextProps) => {\n// const toolCallIdSame = prevProps.toolCall.toolCallId === nextProps.toolCall.toolCallId;\n// const toolCallNameSame = prevProps.toolCall.toolCallName === nextProps.toolCall.toolCallName;\n// const argsSame = prevProps.toolCall.args === nextProps.toolCall.args;\n// const resultSame = prevProps.toolCall.result === nextProps.toolCall.result;\n// const onRespondSame = prevProps.onRespond === nextProps.onRespond;\n\n// console.log(`ToolCallRenderer memo 详细检查 [${prevProps.toolCall.toolCallName}]:`, {\n// toolCallIdSame,\n// toolCallNameSame,\n// argsSame,\n// resultSame,\n// onRespondSame,\n// prevToolCallId: prevProps.toolCall.toolCallId,\n// nextToolCallId: nextProps.toolCall.toolCallId,\n// prevOnRespond: prevProps.onRespond,\n// nextOnRespond: nextProps.onRespond,\n// });\n\n// const shouldSkip = toolCallIdSame && toolCallNameSame && argsSame && resultSame && onRespondSame;\n\n// console.log(`ToolCallRenderer memo 检查 [${prevProps.toolCall.toolCallName}]:`, shouldSkip ? '跳过渲染' : '需要重新渲染');\n// return shouldSkip\n// },\n// );\n\n// 定义增强后的 Props 类型\ntype WithAgentStateProps<P> = P & { agentState?: Record<string, any> };\n\nexport const withAgentStateToolcall1 = <P extends object>(\n Component: React.ComponentType<WithAgentStateProps<P>>,\n): React.ComponentType<P> => {\n const WrappedComponent: React.FC<P> = (props: P) => (\n <AgentStateContext.Consumer>\n {(context) => {\n if (!context) {\n console.warn('AgentStateContext not found, component will render without state');\n return <Component {...props} />;\n }\n\n return <Component {...props} agentState={context.stateMap} />;\n }}\n </AgentStateContext.Consumer>\n );\n\n WrappedComponent.displayName = `withAgentState(${Component.displayName || Component.name || 'Component'})`;\n return React.memo(WrappedComponent);\n};\n\nexport const withAgentStateToolcall = <P extends object>(\n Component: React.ComponentType<WithAgentStateProps<P>>,\n subscribeKeyExtractor?: (props: P) => string | undefined,\n): React.ComponentType<P> => {\n const WrappedComponent: React.FC<P> = (props: P) => {\n // 计算需要订阅的 stateKey\n const targetStateKey = useMemo(() => (subscribeKeyExtractor ? subscribeKeyExtractor(props) : undefined), [props]);\n\n const agentState = useAgentStateDataByKey(targetStateKey);\n\n return <Component {...props} agentState={agentState} />;\n };\n\n WrappedComponent.displayName = `withAgentState(${Component.displayName || Component.name || 'Component'})`;\n return React.memo(WrappedComponent);\n};\n"],"names":["ToolCallErrorBoundary","props","_this","_classCallCheck","_callSuper","state","hasError","error","_inherits","_Component","_createClass","key","value","componentDidCatch","errorInfo","console","toolCallName","render","children","getDerivedStateFromError","Component","ToolCallRenderer","React","memo","_ref","toolCall","onRespond","_useState","useState","status","_useState2","_slicedToArray","actionState","setActionState","config","useMemo","cfg","agentToolcallRegistry","get","_useState3","getRenderFunction","_useState4","isRegistered","setIsRegistered","args","JSON","parse","handleRespond","useCallback","response","prev","_objectSpread","result","toolCallId","useEffect","isNonInteractiveConfig","executeHandler","_callee","backendResult","_t","_regeneratorRuntime","wrap","_context","next","warn","handler","sent","stop","eventType","AGUIEventType","TOOL_CALL_END","TOOL_CALL_RESULT","subscribeKeyExtractor","subscribeKey","targetStateKey","fullProps","respond","handleRegistered","event","_event$detail","detail","name","window","addEventListener","removeEventListener","agentState","useAgentStateDataByKey","componentProps","MemoizedComponent","createElement","prevProps","nextProps","withAgentStateToolcall1","WrappedComponent","AgentStateContext","Consumer","context","stateMap","displayName","concat","withAgentStateToolcall"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAI0D,IAgBpDA;EACJ,SAAAA,qBAAAA,CAAYC,KAA4D,EAAA;AAAA,IAAA,IAAAC,KAAA,CAAA;AAAAC,IAAAA,eAAA,OAAAH,qBAAA,CAAA,CAAA;AACtEE,IAAAA,KAAA,GAAAE,UAAA,CAAAJ,IAAAA,EAAAA,qBAAA,GAAMC,KAAK,CAAA,CAAA,CAAA;IACXC,KAAA,CAAKG,KAAQ,GAAA;AAAEC,MAAAA,QAAU,EAAA,KAAA;AAAOC,MAAAA,OAAO,IAAA;KAAK,CAAA;AAAA,IAAA,OAAAL,KAAA,CAAA;AAC9C,GAAA;EAAAM,SAAA,CAAAR,qBAAA,EAAAS,UAAA,CAAA,CAAA;EAAA,OAAAC,YAAA,CAAAV,qBAAA,EAAA,CAAA;IAAAW,GAAA,EAAA,mBAAA;AAAAC,IAAAA,KAAA,EAMA,SAAAC,iBAAAA,CAAkBN,OAAcO,SAA4B,EAAA;AAC1DC,MAAAA,OAAA,CAAQR,mDAA2C,IAAA,CAAKN,KAAM,CAAAe,YAAA,EAAA,KAAA,CAAA,EAAkBT,OAAOO,SAAS,CAAA,CAAA;AAClG,KAAA;AAAA,GAAA,EAAA;IAAAH,GAAA,EAAA,QAAA;AAAAC,IAAAA,KAAA,EAEA,SAAAK,MAASA,GAAA;AACH,MAAA,IAAA,IAAA,CAAKZ,MAAMC,QAAU,EAAA;AAEhB,QAAA,OAAA,IAAA,CAAA;AACT,OAAA;AAEA,MAAA,OAAO,KAAKL,KAAM,CAAAiB,QAAA,CAAA;AACpB,KAAA;AAAA,GAAA,CAAA,EAAA,CAAA;IAAAP,GAAA,EAAA,0BAAA;AAAAC,IAAAA,KAAA,EAfA,SAAOO,yBAAyBZ,KAAkC,EAAA;MACzD,OAAA;AAAED,QAAAA,QAAU,EAAA,IAAA;AAAMC,QAAAA,KAAM,EAANA,KAAAA;OAAM,CAAA;AACjC,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CARkCa,SAAmF,CAAA,CAAA;AAwBhH,IAAMC,gCAAmBC,KAAM,CAAAC,IAAA,CACpC,UAAAC,IAAA,EAA6B;AAAA,EAAA,IAA1BC,QAAU,GAAAD,IAAA,CAAVC,QAAU;IAAAC,SAAA,GAAAF,IAAA,CAAAE,SAAA,CAAA;EACX,IAAAC,SAAA,GAAsCC,QAInC,CAAA;AACDC,MAAAA,MAAQ,EAAA,MAAA;AACV,KAAC,CAAA;IAAAC,UAAA,GAAAC,cAAA,CAAAJ,SAAA,EAAA,CAAA,CAAA;AANMK,IAAAA,WAAA,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAaG,IAAAA,cAAc,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAS5B,EAAA,IAAAI,MAAA,GAASC,QAAQ,YAAM;IAC3B,IAAMC,GAAM,GAAAC,qBAAA,CAAsBC,GAAI,CAAAb,QAAA,CAAST,YAAY,CAAA,CAAA;AACpD,IAAA,OAAAoB,GAAA,CAAA;AACT,GAAG,EAAA,CAACX,QAAS,CAAAT,YAAY,CAAC,CAAA,CAAA;EAGpB,IAAAuB,UAAA,GAAkCX,QAAA,CACtC,YAAA;MAAA,OAAM,CAAC,CAACS,qBAAsB,CAAAG,iBAAA,CAAkBf,SAAST,YAAY,CAAA,CAAA;AAAA,KACvE,CAAA;IAAAyB,UAAA,GAAAV,cAAA,CAAAQ,UAAA,EAAA,CAAA,CAAA;AAFOG,IAAAA,YAAc,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAAE,IAAAA,eAAe,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AAK9B,EAAA,IAAAG,IAAA,GAAOT,QAAQ,YAAM;IACrB,IAAA;AACF,MAAA,OAAOV,SAASmB,IAAO,GAAAC,IAAA,CAAKC,MAAMrB,QAAS,CAAAmB,IAAI,IAAI,EAAC,CAAA;aAC7CrC,KAAP,EAAA;AACQQ,MAAAA,OAAA,CAAAR,KAAA,CAAM,iEAAeA,KAAK,CAAA,CAAA;AAClC,MAAA,OAAO,EAAC,CAAA;AACV,KAAA;AACF,GAAG,EAAA,CAACkB,QAAS,CAAAmB,IAAI,CAAC,CAAA,CAAA;AAElB,EAAA,IAAMG,aAAgB,GAAAC,WAAA,CACpB,UAACC,QAAkB,EAAA;AACjB,IAAA,IAAIvB,SAAW,EAAA;AACbA,MAAAA,SAAA,CAAUD,UAAUwB,QAAQ,CAAA,CAAA;MAC5BhB,cAAA,CAAe,UAACiB,IAAU,EAAA;AAAA,QAAA,OAAAC,aAAA,CAAAA,aAAA,CAAA,EAAA,EACrBD,IAAA,CAAA,EAAA,EAAA,EAAA;AACHrB,UAAAA,MAAQ,EAAA,UAAA;AACRuB,UAAAA,MAAQ,EAAAH,QAAAA;AAAA,SAAA,CAAA,CAAA;AAAA,OACR,CAAA,CAAA;AACJ,KAAA;GACF,EAEA,CAACxB,QAAS,CAAA4B,UAAA,EAAY3B,SAAS,CACjC,CAAA,CAAA;AAGA4B,EAAAA,SAAA,CAAU,YAAM;IACd,IAAI,CAACpB,MAAA,EAAQ,OAAA;AAET,IAAA,IAAAqB,sBAAA,CAAuBrB,MAAM,CAAG,EAAA;AAElC,MAAA,IAAMsB;4EAAiB,SAAAC,OAAA,GAAA;AAAA,UAAA,IAAAC,aAAA,EAAAN,MAAA,EAAAO,EAAA,CAAA;AAAA,UAAA,OAAAC,mBAAA,CAAAC,IAAA,CAAA,UAAAC,QAAA,EAAA;AAAA,YAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAZ,IAAA,GAAAY,QAAA,CAAAC,IAAA;AAAA,cAAA,KAAA,CAAA;AAAAD,gBAAAA,QAAA,CAAAZ,IAAA,GAAA,CAAA,CAAA;AAEJjB,gBAAAA,cAAA,CAAA;AAAEJ,kBAAAA,MAAQ,EAAA,WAAA;AAAY,iBAAC,CAAA,CAAA;gBAItC,IAAIJ,SAAS2B,MAAQ,EAAA;kBACf,IAAA;oBACcM,aAAA,GAAAb,IAAA,CAAKC,KAAM,CAAArB,QAAA,CAAS2B,MAAM,CAAA,CAAA;2BACnC7C,KAAP,EAAA;AACQQ,oBAAAA,OAAA,CAAAiD,IAAA,CAAK,qGAAqBzD,KAAK,CAAA,CAAA;oBACvCmD,aAAA,GAAgBjC,QAAS,CAAA2B,MAAA,CAAA;AAC3B,mBAAA;AACF,iBAAA;AAAAU,gBAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;AAAA,gBAAA,OAGqB7B,MAAO,CAAA+B,OAAA,CAAQrB,MAAMc,aAAa,CAAA,CAAA;AAAA,cAAA,KAAA,CAAA;gBAAjDN,MAAS,GAAAU,QAAA,CAAAI,IAAA,CAAA;AACAjC,gBAAAA,cAAA,CAAA;AACbJ,kBAAAA,MAAQ,EAAA,UAAA;AACRuB,kBAAAA,MAAA,EAAAA,MAAAA;AACF,iBAAC,CAAA,CAAA;AAAAU,gBAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,cAAA,KAAA,CAAA;AAAAD,gBAAAA,QAAA,CAAAZ,IAAA,GAAA,CAAA,CAAA;AAAAS,gBAAAA,EAAA,GAAAG,QAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEc7B,gBAAAA,cAAA,CAAA;AACbJ,kBAAAA,MAAQ,EAAA,OAAA;AACRtB,kBAAAA,KAAA,EAAAoD,EAAAA;AACF,iBAAC,CAAA,CAAA;AAAA,cAAA,KAAA,CAAA,CAAA;AAAA,cAAA,KAAA,KAAA;gBAAA,OAAAG,QAAA,CAAAK,IAAA,EAAA,CAAA;AAAA,aAAA;AAAA,WAAA,EAAAV,OAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;SAEL,CAAA,CAAA,CAAA;AAAA,QAAA,OAAA,SA3BMD;;;OA2BN,EAAA,CAAA;AAEeA,MAAAA,cAAA,EAAA,CAAA;AACjB,KAAA,MAAA,IAAW/B,SAAS2B,MAAQ,EAAA;MAEtB,IAAA;QACF,IAAMA,MAAS,GAAAP,IAAA,CAAKC,KAAM,CAAArB,QAAA,CAAS2B,MAAM,CAAA,CAAA;AAC1BnB,QAAAA,cAAA,CAAA;AACbJ,UAAAA,MAAQ,EAAA,UAAA;AACRuB,UAAAA,MAAA,EAAAA,MAAAA;AACF,SAAC,CAAA,CAAA;eACM7C,KAAP,EAAA;AACe0B,QAAAA,cAAA,CAAA;AACbJ,UAAAA,MAAQ,EAAA,OAAA;AACRtB,UAAAA,KAAA,EAAAA,KAAAA;AACF,SAAC,CAAA,CAAA;AACH,OAAA;AACF,KAAA,MAAA,IACEkB,SAAS2C,SAAc,KAAAC,aAAA,CAAcC,iBACrC7C,QAAS,CAAA2C,SAAA,KAAcC,cAAcE,gBACrC,EAAA;AAEetC,MAAAA,cAAA,CAAA;AAAEJ,QAAAA,MAAQ,EAAA,UAAA;AAAW,OAAC,CAAA,CAAA;AACvC,KAAO,MAAA;AAEUI,MAAAA,cAAA,CAAA;AAAEJ,QAAAA,MAAQ,EAAA,WAAA;AAAY,OAAC,CAAA,CAAA;AACxC,KAAA;AACF,GAAA,EAAG,CAACK,MAAQ,EAAAU,IAAA,EAAMnB,SAAS2B,MAAQ,EAAA3B,QAAA,CAAS2C,SAAS,CAAC,CAAA,CAAA;EAGtD,IAAMI,wBAAwBrC,OAAQ,CAAA,YAAA;AAAA,IAAA,OAAMD,WAAAA,IAAAA,IAAAA,WAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAQuC,YAAc,CAAA;GAAA,EAAA,CAACvC,MAAM,CAAC,CAAA,CAAA;AAGpE,EAAA,IAAAwC,cAAA,GAAiBvC,QAAQ,YAAM;AACnC,IAAA,IAAI,CAACqC,qBAAA,EAA8B,OAAA,KAAA,CAAA,CAAA;AAGnC,IAAA,IAAMG,SAAY,GAAA;MAChB9C,QAAQG,WAAY,CAAAH,MAAA;AACpBe,MAAAA,IAAA,EAAAA,IAAA;MACAQ,QAAQpB,WAAY,CAAAoB,MAAA;MACpB7C,OAAOyB,WAAY,CAAAzB,KAAA;AACnBqE,MAAAA,OAAS,EAAA7B,aAAAA;KACX,CAAA;IAEA,OAAOyB,sBAAsBG,SAAS,CAAA,CAAA;GAErC,EAAA,CAACH,qBAAuB,EAAA5B,IAAA,EAAMZ,WAAW,CAAC,CAAA,CAAA;AAG7CsB,EAAAA,SAAA,CAAU,YAAM;IACd,IAAI,CAACZ,YAAc,EAAA;AACX,MAAA,IAAAmC,gBAAA,GAAmB,SAAnBA,gBAAAA,CAAoBC,KAAuB,EAAA;AAAA,QAAA,IAAAC,aAAA,CAAA;AAC/C,QAAA,IAAI,EAAAA,aAAA,GAAAD,KAAM,CAAAE,MAAA,MAAAD,IAAAA,IAAAA,aAAA,KAANA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAA,CAAcE,IAAS,MAAAxD,QAAA,CAAST,YAAc,EAAA;UAChD2B,eAAA,CAAgB,IAAI,CAAA,CAAA;AACtB,SAAA;OACF,CAAA;AAGOuC,MAAAA,MAAA,CAAAC,gBAAA,CAAiB,uBAAuBN,gBAAiC,CAAA,CAAA;AAEhF,MAAA,OAAO,YAAM;AACJK,QAAAA,MAAA,CAAAE,mBAAA,CAAoB,uBAAuBP,gBAAiC,CAAA,CAAA;OACrF,CAAA;AACF,KAAA;GACC,EAAA,CAACpD,QAAS,CAAAT,YAAA,EAAc0B,YAAY,CAAC,CAAA,CAAA;AAGlC,EAAA,IAAA2C,UAAA,GAAaC,uBAAuBZ,cAAc,CAAA,CAAA;EAGxD,IAAMa,cAAiB,GAAApD,OAAA,CACrB,YAAA;IAAA,OAAO;MACLN,QAAQG,WAAY,CAAAH,MAAA;AACpBe,MAAAA,IAAA,EAAAA,IAAA;MACAQ,QAAQpB,WAAY,CAAAoB,MAAA;MACpB7C,OAAOyB,WAAY,CAAAzB,KAAA;AACnBqE,MAAAA,OAAS,EAAA7B,aAAA;AACTsC,MAAAA,UAAA,EAAAA,UAAAA;KACF,CAAA;GAAA,EACA,CAACrD,YAAYH,MAAQ,EAAAe,IAAA,EAAMZ,YAAYoB,MAAQ,EAAApB,WAAA,CAAYzB,KAAO,EAAAwC,aAAA,EAAesC,UAAU,CAC7F,CAAA,CAAA;EAGA,IAAMG,iBAAoB,GAAArD,OAAA,CACxB,YAAA;AAAA,IAAA,OAAME,qBAAA,CAAsBG,iBAAkB,CAAAf,QAAA,CAAST,YAAY,CAAA,CAAA;AAAA,GAAA,EAEnE,CAACS,QAAS,CAAAT,YAAA,EAAc0B,YAAY,CACtC,CAAA,CAAA;EAEA,IAAI,CAAC8C,iBAAmB,EAAA;AACf,IAAA,OAAA,IAAA,CAAA;AACT,GAAA;AAEA,EAAA,sBACGlE,KAAA,CAAAmE,aAAA,CAAAzF,qBAAA,EAAA;IAAsBgB,cAAcS,QAAS,CAAAT,YAAAA;AAAA,GAAA,iBAC3CM,KAAA,CAAAmE,aAAA,CAAAD,iBAAA,EAAArC,aAAA,CAAA,EAAA,EAAsBoC,cAAA,CAAgB,CACzC,CAAA,CAAA;AAEJ,CAAA,EACA,UAACG,SAAA,EAAWC,SACV,EAAA;AAAA,EAAA,OAAAD,SAAA,CAAUjE,SAAS4B,UAAe,KAAAsC,SAAA,CAAUlE,QAAS,CAAA4B,UAAA,IACrDqC,UAAUjE,QAAS,CAAAT,YAAA,KAAiB2E,SAAU,CAAAlE,QAAA,CAAST,gBACvD0E,SAAU,CAAAjE,QAAA,CAASmB,IAAS,KAAA+C,SAAA,CAAUlE,SAASmB,IAC/C,IAAA8C,SAAA,CAAUjE,QAAS,CAAA2B,MAAA,KAAWuC,UAAUlE,QAAS,CAAA2B,MAAA,IACjDsC,SAAU,CAAAjE,QAAA,CAAS2C,cAAcuB,SAAU,CAAAlE,QAAA,CAAS2C,SACpD,IAAAsB,SAAA,CAAUhE,cAAciE,SAAU,CAAAjE,SAAA,CAAA;AAAA,CACtC,EAAA;IA+BakE,uBAAA,GAA0B,SAA1BA,uBAAAA,CACXxE,UAC2B,EAAA;AACrB,EAAA,IAAAyE,gBAAA,GAAgC,SAAhCA,gBAAAA,CAAiC5F,KACrC,EAAA;AAAA,IAAA,sBAAAqB,KAAA,CAAAmE,aAAA,CAACK,kBAAkBC,QAAlB,EAAA,IAAA,EACE,UAACC,OAAY,EAAA;MACZ,IAAI,CAACA,OAAS,EAAA;AACZjF,QAAAA,OAAA,CAAQiD,KAAK,kEAAkE,CAAA,CAAA;QAC/E,0CAAQ5C,UAAA,EAAA+B,aAAA,CAAA,EAAA,EAAclD,KAAA,CAAO,CAAA,CAAA;AAC/B,OAAA;MAEA,0CAAQmB,UAAA,EAAA+B,aAAA,CAAAA,aAAA,CAAA,EAAA,EAAclD,KAAA,CAAA,EAAA,EAAA,EAAA;QAAOoF,YAAYW,OAAQ,CAAAC,QAAAA;AAAA,OAAA,CAAU,CAAA,CAAA;AAC7D,KACF,CAAA,CAAA;AAAA,GAAA,CAAA;AAGFJ,EAAAA,gBAAA,CAAiBK,WAAc,GAAAC,iBAAAA,CAAAA,MAAA,CAAkB/E,UAAU,CAAA8E,WAAA,IAAe9E,WAAU6D,IAAQ,IAAA,WAAA,EAAA,GAAA,CAAA,CAAA;AACrF,EAAA,oBAAA3D,KAAA,CAAMC,KAAKsE,gBAAgB,CAAA,CAAA;AACpC,EAAA;AAEa,IAAAO,sBAAA,GAAyB,SAAzBA,sBAAAA,CACXhF,UAAAA,EACAoD,qBAC2B,EAAA;AACrB,EAAA,IAAAqB,gBAAA,GAAgC,SAAhCA,gBAAAA,CAAiC5F,KAAa,EAAA;IAE5C,IAAAyE,cAAA,GAAiBvC,OAAQ,CAAA,YAAA;MAAA,OAAOqC,qBAAwB,GAAAA,qBAAA,CAAsBvE,KAAK,CAAI,GAAA,KAAA,CAAA,CAAA;KAAY,EAAA,CAACA,KAAK,CAAC,CAAA,CAAA;AAE1G,IAAA,IAAAoF,UAAA,GAAaC,uBAAuBZ,cAAc,CAAA,CAAA;IAExD,0CAAQtD,UAAA,EAAA+B,aAAA,CAAAA,aAAA,CAAA,EAAA,EAAclD,KAAA,CAAA,EAAA,EAAA,EAAA;AAAOoF,MAAAA,UAAA,EAAAA,UAAAA;AAAA,KAAA,CAAwB,CAAA,CAAA;GACvD,CAAA;AAEAQ,EAAAA,gBAAA,CAAiBK,WAAc,GAAAC,iBAAAA,CAAAA,MAAA,CAAkB/E,UAAU,CAAA8E,WAAA,IAAe9E,WAAU6D,IAAQ,IAAA,WAAA,EAAA,GAAA,CAAA,CAAA;AACrF,EAAA,oBAAA3D,KAAA,CAAMC,KAAKsE,gBAAgB,CAAA,CAAA;AACpC;;;;"}
1
+ {"version":3,"file":"render.js","sources":["../../../../../pro-components/chat/chat-engine/components/toolcall/render.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback, useMemo } from 'react';\nimport { AGUIEventType, ToolCall } from 'tdesign-web-components/lib/chat-engine';\nimport { isNonInteractiveConfig, type ToolcallComponentProps } from './types';\nimport { agentToolcallRegistry, TOOLCALL_REGISTERED_EVENT, TOOLCALL_EVENT_DETAIL_KEY } from './registry';\nimport { ComponentErrorBoundary, useRegistrationListener } from '../shared';\nimport { AgentStateContext, useAgentStateDataByKey } from '../../hooks/useAgentState';\n\ninterface ToolCallRendererProps {\n toolCall: ToolCall;\n onRespond?: (toolCall: ToolCall, response: any) => void;\n}\n\nexport const ToolCallRenderer = React.memo<ToolCallRendererProps>(\n ({ toolCall, onRespond }) => {\n const [actionState, setActionState] = useState<{\n status: ToolcallComponentProps['status'];\n result?: any;\n error?: Error;\n }>({\n status: 'idle',\n });\n\n // 缓存配置获取\n const config = useMemo(() => {\n const cfg = agentToolcallRegistry.get(toolCall.toolCallName);\n return cfg;\n }, [toolCall.toolCallName]);\n\n // 使用公共 Hook 监听动态注册\n const { MemoizedComponent } = useRegistrationListener<ToolcallComponentProps>({\n componentKey: toolCall.toolCallName,\n eventName: TOOLCALL_REGISTERED_EVENT,\n eventDetailKey: TOOLCALL_EVENT_DETAIL_KEY,\n getRenderFunction: agentToolcallRegistry.getRenderFunction,\n });\n\n // 缓存参数解析\n const args = useMemo(() => {\n try {\n return toolCall.args ? JSON.parse(toolCall.args) : {};\n } catch (error) {\n console.error('解析工具调用参数失败:', error);\n return {};\n }\n }, [toolCall.args]);\n\n const handleRespond = useCallback(\n (response: any) => {\n if (onRespond) {\n onRespond(toolCall, response);\n setActionState((prev) => ({\n ...prev,\n status: 'complete',\n result: response,\n }));\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [toolCall.toolCallId, onRespond],\n );\n\n // 执行 handler(如果存在)- 必须在条件判断之前调用\n useEffect(() => {\n if (!config) return;\n\n if (isNonInteractiveConfig(config)) {\n // 非交互式:执行 handler\n const executeHandler = async () => {\n try {\n setActionState({ status: 'executing' });\n\n // 解析后端返回的结果作为 handler 的第二个参数\n let backendResult;\n if (toolCall.result) {\n try {\n backendResult = JSON.parse(toolCall.result);\n } catch (error) {\n console.warn('解析后端结果失败,使用原始字符串:', error);\n backendResult = toolCall.result;\n }\n }\n\n // 调用 handler,传入 args 和 backendResult\n const result = await config.handler(args, backendResult);\n setActionState({\n status: 'complete',\n result,\n });\n } catch (error) {\n setActionState({\n status: 'error',\n error: error as Error,\n });\n }\n };\n\n executeHandler();\n } else if (toolCall.result) {\n // 交互式:已有结果,显示完成状态\n try {\n const result = JSON.parse(toolCall.result);\n setActionState({\n status: 'complete',\n result,\n });\n } catch (error) {\n setActionState({\n status: 'error',\n error: error as Error,\n });\n }\n } else if (\n toolCall.eventType === AGUIEventType.TOOL_CALL_END ||\n toolCall.eventType === AGUIEventType.TOOL_CALL_RESULT\n ) {\n // 工具调用已结束(无 result 的情况,如 show_progress)\n setActionState({ status: 'complete' });\n } else {\n // 等待用户交互或工具执行中\n setActionState({ status: 'executing' });\n }\n }, [config, args, toolCall.result, toolCall.eventType]);\n\n // 从配置中获取 subscribeKey 提取函数\n const subscribeKeyExtractor = useMemo(() => config?.subscribeKey, [config]);\n\n // 使用配置的提取函数来获取 targetStateKey\n const targetStateKey = useMemo(() => {\n if (!subscribeKeyExtractor) return undefined;\n\n // 构造完整的 props 对象传给提取函数\n const fullProps = {\n status: actionState.status,\n args,\n result: actionState.result,\n error: actionState.error,\n respond: handleRespond,\n };\n\n return subscribeKeyExtractor(fullProps);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribeKeyExtractor, args, actionState]);\n\n // 使用精确订阅\n const agentState = useAgentStateDataByKey(targetStateKey);\n\n // 缓存组件 props\n const componentProps = useMemo<ToolcallComponentProps>(\n () => ({\n status: actionState.status,\n args,\n result: actionState.result,\n error: actionState.error,\n respond: handleRespond,\n agentState,\n }),\n [actionState.status, args, actionState.result, actionState.error, handleRespond, agentState],\n );\n\n if (!MemoizedComponent) {\n return null;\n }\n\n return (\n <ComponentErrorBoundary componentName={toolCall.toolCallName} logPrefix=\"ToolCallRenderer\">\n <MemoizedComponent {...componentProps} />\n </ComponentErrorBoundary>\n );\n },\n (prevProps, nextProps) =>\n prevProps.toolCall.toolCallId === nextProps.toolCall.toolCallId &&\n prevProps.toolCall.toolCallName === nextProps.toolCall.toolCallName &&\n prevProps.toolCall.args === nextProps.toolCall.args &&\n prevProps.toolCall.result === nextProps.toolCall.result &&\n prevProps.toolCall.eventType === nextProps.toolCall.eventType &&\n prevProps.onRespond === nextProps.onRespond,\n);\n\n// 定义增强后的 Props 类型\ntype WithAgentStateProps<P> = P & { agentState?: Record<string, any> };\n\nexport const withAgentStateToolcall1 = <P extends object>(\n Component: React.ComponentType<WithAgentStateProps<P>>,\n): React.ComponentType<P> => {\n const WrappedComponent: React.FC<P> = (props: P) => (\n <AgentStateContext.Consumer>\n {(context) => {\n if (!context) {\n console.warn('AgentStateContext not found, component will render without state');\n return <Component {...props} />;\n }\n\n return <Component {...props} agentState={context.stateMap} />;\n }}\n </AgentStateContext.Consumer>\n );\n\n WrappedComponent.displayName = `withAgentState(${Component.displayName || Component.name || 'Component'})`;\n return React.memo(WrappedComponent);\n};\n\nexport const withAgentStateToolcall = <P extends object>(\n Component: React.ComponentType<WithAgentStateProps<P>>,\n subscribeKeyExtractor?: (props: P) => string | undefined,\n): React.ComponentType<P> => {\n const WrappedComponent: React.FC<P> = (props: P) => {\n // 计算需要订阅的 stateKey\n const targetStateKey = useMemo(() => (subscribeKeyExtractor ? subscribeKeyExtractor(props) : undefined), [props]);\n\n const agentState = useAgentStateDataByKey(targetStateKey);\n\n return <Component {...props} agentState={agentState} />;\n };\n\n WrappedComponent.displayName = `withAgentState(${Component.displayName || Component.name || 'Component'})`;\n return React.memo(WrappedComponent);\n};\n"],"names":["ToolCallRenderer","React","memo","_ref","toolCall","onRespond","_useState","useState","status","_useState2","_slicedToArray","actionState","setActionState","config","useMemo","cfg","agentToolcallRegistry","get","toolCallName","_useRegistrationListe","useRegistrationListener","componentKey","eventName","TOOLCALL_REGISTERED_EVENT","eventDetailKey","TOOLCALL_EVENT_DETAIL_KEY","getRenderFunction","MemoizedComponent","args","JSON","parse","error","console","handleRespond","useCallback","response","prev","_objectSpread","result","toolCallId","useEffect","isNonInteractiveConfig","executeHandler","_callee","backendResult","_t","_regeneratorRuntime","wrap","_context","next","warn","handler","sent","stop","eventType","AGUIEventType","TOOL_CALL_END","TOOL_CALL_RESULT","subscribeKeyExtractor","subscribeKey","targetStateKey","fullProps","respond","agentState","useAgentStateDataByKey","componentProps","createElement","ComponentErrorBoundary","componentName","logPrefix","prevProps","nextProps","withAgentStateToolcall1","Component","WrappedComponent","props","AgentStateContext","Consumer","context","stateMap","displayName","concat","name","withAgentStateToolcall"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * A2UI 核心层导出
3
+ * 框架无关,可跨 React/Vue 复用
4
+ */
5
+ export * from './types';
6
+ export * from './utils';
7
+ export { A2uiMessageProcessor, createA2uiProcessor, type A2uiMessageProcessorOptions, type SurfaceSnapshot, type SurfaceListener, } from './processor/A2uiMessageProcessor';
8
+ export { DataStore, createDataStore } from './processor/DataStore';
9
+ export { ComponentTree } from './processor/ComponentTree';
10
+ export { PathResolver, pathResolver } from './processor/PathResolver';
@@ -0,0 +1,24 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.14
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import './types/index.js';
8
+ import './utils/index.js';
9
+ export { A2uiMessageProcessor, createA2uiProcessor } from './processor/A2uiMessageProcessor.js';
10
+ export { DataStore, createDataStore } from './processor/DataStore.js';
11
+ export { ComponentTree } from './processor/ComponentTree.js';
12
+ export { PathResolver, pathResolver } from './processor/PathResolver.js';
13
+ export { A2UIActionSchema, A2UIComponentBaseSchema, A2UIComponentType, A2UISurfaceSchema, ExprBindingSchema, PathBindingSchema, booleanOrPathSchema, childrenPropertySchema, componentCommonSchema, createSurfaceMessageSchema, deleteSurfaceMessageSchema, numberOrPathSchema, serverMessageSchema, stringArrayOrPathSchema, stringOrPathSchema, updateComponentsMessageSchema, updateDataModelMessageSchema } from './types/types.js';
14
+ export { evaluateExpression, formatValue, isExprBinding, isPathBinding, resolveBinding, resolveExprBinding, resolvePathBinding } from './utils/binding.js';
15
+ export { formatValidationErrors, safeParseJSON, validateAction, validateBindingPath, validateComponent, validateOperation, validateOperations } from './utils/validation.js';
16
+ import '@babel/runtime/helpers/typeof';
17
+ import '@babel/runtime/helpers/classCallCheck';
18
+ import '@babel/runtime/helpers/createClass';
19
+ import '@babel/runtime/helpers/defineProperty';
20
+ import '@babel/runtime/helpers/slicedToArray';
21
+ import '@babel/runtime/helpers/toArray';
22
+ import 'zod';
23
+ import '@babel/runtime/helpers/toConsumableArray';
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,197 @@
1
+ /**
2
+ * A2UI 消息处理器 v2
3
+ * 完全按照 A2UI v0.9 协议实现
4
+ *
5
+ * 支持四种消息类型:
6
+ * - createSurface: 创建 Surface
7
+ * - updateComponents: 更新组件
8
+ * - updateDataModel: 更新数据模型
9
+ * - deleteSurface: 删除 Surface
10
+ *
11
+ * 实现 External Store 模式,支持 useSyncExternalStore
12
+ */
13
+ import type { A2UISurface, A2UIComponentBase, A2UIServerMessage, A2UIAction, ActionHandler, SkeletonHint, ResolvedComponent, UserActionMessage } from '../types';
14
+ export type SurfaceSnapshot = Map<string, A2UISurface>;
15
+ export type SurfaceListener = () => void;
16
+ /**
17
+ * A2UI 消息处理器配置
18
+ */
19
+ export interface A2uiMessageProcessorOptions {
20
+ /** Action 处理回调 */
21
+ onAction?: ActionHandler;
22
+ /** 用户行为消息发送回调 */
23
+ onSendMessage?: (message: UserActionMessage) => void;
24
+ /** 数据变更回调 */
25
+ onDataChange?: (surfaceId: string, path: string, value: unknown) => void;
26
+ /** 验证错误回调 */
27
+ onValidationError?: (errors: Array<{
28
+ type: string;
29
+ message: string;
30
+ path?: string;
31
+ }>) => void;
32
+ }
33
+ /**
34
+ * A2UI 消息处理器
35
+ *
36
+ * 核心功能:
37
+ * 1. 处理 A2UI v0.9 协议消息
38
+ * 2. 管理 Surface 生命周期
39
+ * 3. 维护组件注册表和数据模型
40
+ * 4. 构建组件树
41
+ * 5. 支持 useSyncExternalStore 订阅
42
+ */
43
+ export declare class A2uiMessageProcessor {
44
+ private surfaces;
45
+ private listeners;
46
+ private pathResolver;
47
+ private options;
48
+ private cachedSnapshot;
49
+ private snapshotVersion;
50
+ constructor(options?: A2uiMessageProcessorOptions);
51
+ /**
52
+ * 订阅状态变化(供 useSyncExternalStore 使用)
53
+ */
54
+ subscribe(listener: SurfaceListener): () => void;
55
+ /**
56
+ * 获取当前快照(供 useSyncExternalStore 使用)
57
+ * 返回缓存的快照,确保引用稳定
58
+ */
59
+ getSnapshot(): SurfaceSnapshot;
60
+ /**
61
+ * 获取服务端快照(SSR 场景)
62
+ */
63
+ getServerSnapshot(): SurfaceSnapshot;
64
+ /**
65
+ * 更新缓存的快照
66
+ * 只在数据变更时调用
67
+ */
68
+ private updateCachedSnapshot;
69
+ /**
70
+ * 处理单条 A2UI v0.9 消息
71
+ */
72
+ processMessage(message: A2UIServerMessage): void;
73
+ /**
74
+ * 批量处理消息
75
+ */
76
+ processMessages(messages: A2UIServerMessage[]): void;
77
+ /**
78
+ * 增量处理消息(性能优化)
79
+ * 当已知消息是新增的时候使用,避免重复处理
80
+ */
81
+ processMessagesIncremental(messages: A2UIServerMessage[]): void;
82
+ /**
83
+ * 内部消息处理(不触发 emitChange)
84
+ */
85
+ private processMessageInternal;
86
+ /**
87
+ * 处理 createSurface 消息
88
+ */
89
+ private handleCreateSurface;
90
+ /**
91
+ * 处理 updateComponents 消息
92
+ */
93
+ private handleUpdateComponents;
94
+ /**
95
+ * 处理 updateDataModel 消息
96
+ */
97
+ private handleUpdateDataModel;
98
+ /**
99
+ * 检查是否需要重建组件树
100
+ * 优化:只有当路径可能影响 template 渲染时才需要重建
101
+ */
102
+ private needsTreeRebuild;
103
+ /**
104
+ * 只更新数据模型,不重建组件树(性能优化)
105
+ * 适用于不影响组件结构的数据更新(如表单输入)
106
+ */
107
+ updateDataOnly(surfaceId: string, path: string, value: unknown): void;
108
+ /**
109
+ * 处理 deleteSurface 消息
110
+ */
111
+ private handleDeleteSurface;
112
+ /**
113
+ * 重建组件树
114
+ */
115
+ private rebuildComponentTree;
116
+ /**
117
+ * 获取数据
118
+ * @param surfaceId Surface ID
119
+ * @param path 数据路径
120
+ * @param dataContextPath 当前组件的数据上下文
121
+ */
122
+ getData(surfaceId: string, path: string, dataContextPath?: string): unknown;
123
+ /**
124
+ * 设置数据(双向绑定)
125
+ */
126
+ setData(surfaceId: string, path: string, dataContextPath: string, value: unknown): void;
127
+ /**
128
+ * 更新数据值(简化接口,不需要 dataContextPath)
129
+ */
130
+ updateDataValue(surfaceId: string, path: string, value: unknown): void;
131
+ /**
132
+ * 分发 Action
133
+ */
134
+ dispatchAction(action: A2UIAction, surfaceId?: string, componentId?: string): void;
135
+ /**
136
+ * 创建 Pending 状态的 Surface(用于显示骨架屏)
137
+ */
138
+ createPendingSurface(surfaceId: string, skeletonHint?: SkeletonHint): void;
139
+ /**
140
+ * 激活 Surface
141
+ */
142
+ activateSurface(surfaceId: string): void;
143
+ /**
144
+ * 关闭 Surface
145
+ */
146
+ closeSurface(surfaceId: string): void;
147
+ /**
148
+ * 直接设置整个数据模型
149
+ */
150
+ setSurfaceData(surfaceId: string, data: Record<string, unknown>): void;
151
+ /**
152
+ * 合并数据(保留用户输入)
153
+ */
154
+ mergeSurfaceData(surfaceId: string, data: Record<string, unknown>): void;
155
+ /**
156
+ * 获取单个 Surface
157
+ */
158
+ getSurface(surfaceId: string): A2UISurface | undefined;
159
+ /**
160
+ * 获取所有 Surface ID
161
+ */
162
+ getSurfaceIds(): string[];
163
+ /**
164
+ * 获取所有 Surface
165
+ */
166
+ getAllSurfaces(): A2UISurface[];
167
+ /**
168
+ * 获取组件树
169
+ */
170
+ getComponentTree(surfaceId: string): ResolvedComponent | null;
171
+ /**
172
+ * 查找组件
173
+ */
174
+ findComponent(surfaceId: string, componentId: string): A2UIComponentBase | undefined;
175
+ /**
176
+ * 清空所有 Surface
177
+ */
178
+ clear(): void;
179
+ /**
180
+ * 清空所有 Surface(别名)
181
+ */
182
+ clearAllSurfaces(): void;
183
+ /**
184
+ * 销毁处理器
185
+ */
186
+ destroy(): void;
187
+ /**
188
+ * 通知所有订阅者
189
+ * 先更新缓存快照,再通知订阅者
190
+ */
191
+ private emitChange;
192
+ }
193
+ /**
194
+ * 创建 A2UI 消息处理器实例
195
+ */
196
+ export declare function createA2uiProcessor(options?: A2uiMessageProcessorOptions): A2uiMessageProcessor;
197
+ export default A2uiMessageProcessor;