@tdesign-react/chat 1.0.2-alpha.8 → 1.1.0-alpha.1

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 (446) hide show
  1. package/es/_chunks/dep-f2051ebd.js +839 -0
  2. package/es/_chunks/dep-f2051ebd.js.map +1 -0
  3. package/es/_util/reactify.d.ts +1 -2
  4. package/es/_util/reactify.js +81 -231
  5. package/es/_util/reactify.js.map +1 -1
  6. package/es/_util/useDynamicStyle.js +1 -1
  7. package/es/attachments/index.js +4 -6
  8. package/es/attachments/index.js.map +1 -1
  9. package/es/chat-actionbar/_example-js/base.d.ts +2 -0
  10. package/es/chat-actionbar/_example-js/custom.d.ts +2 -0
  11. package/es/chat-actionbar/_example-js/style.d.ts +2 -0
  12. package/es/chat-actionbar/index.js +4 -6
  13. package/es/chat-actionbar/index.js.map +1 -1
  14. package/es/chat-attachments/_example-js/base.d.ts +2 -0
  15. package/es/chat-attachments/_example-js/scroll-x.d.ts +2 -0
  16. package/es/chat-attachments/_example-js/scroll-y.d.ts +2 -0
  17. package/es/chat-attachments/index.js +3 -1
  18. package/es/chat-attachments/index.js.map +1 -1
  19. package/es/chat-engine/_example-js/agui-basic.d.ts +10 -0
  20. package/es/chat-engine/_example-js/agui-comprehensive.d.ts +2 -0
  21. package/es/chat-engine/_example-js/agui-test.d.ts +11 -0
  22. package/es/chat-engine/_example-js/agui-toolcall.d.ts +5 -0
  23. package/es/chat-engine/_example-js/agui-videoclip.d.ts +8 -0
  24. package/es/chat-engine/_example-js/agui.d.ts +1 -0
  25. package/es/chat-engine/_example-js/basic.d.ts +9 -0
  26. package/es/chat-engine/_example-js/components/HotelCard.d.ts +3 -0
  27. package/es/chat-engine/_example-js/components/HumanInputForm.d.ts +6 -0
  28. package/es/chat-engine/_example-js/components/HumanInputResult.d.ts +3 -0
  29. package/es/chat-engine/_example-js/components/ItineraryCard.d.ts +3 -0
  30. package/es/chat-engine/_example-js/components/PlanningStatePanel.d.ts +4 -0
  31. package/es/chat-engine/_example-js/components/Toolcall.d.ts +4 -0
  32. package/es/chat-engine/_example-js/components/WeatherCard.d.ts +3 -0
  33. package/es/chat-engine/_example-js/components/login.d.ts +1 -0
  34. package/es/chat-engine/_example-js/comprehensive.d.ts +12 -0
  35. package/es/chat-engine/_example-js/custom-content.d.ts +1 -0
  36. package/es/chat-engine/_example-js/hookComponent.d.ts +1 -0
  37. package/es/chat-engine/_example-js/initial-messages.d.ts +9 -0
  38. package/es/chat-engine/_example-js/instance-methods.d.ts +13 -0
  39. package/es/chat-engine/_example-js/travel-actions.d.ts +91 -0
  40. package/es/chat-engine/_example-js/travelToolcall.d.ts +1 -0
  41. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.d.ts +196 -0
  42. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +301 -0
  43. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +1 -0
  44. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.d.ts +37 -0
  45. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +116 -0
  46. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js.map +1 -0
  47. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.d.ts +42 -0
  48. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +113 -0
  49. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js.map +1 -0
  50. package/es/chat-engine/components/a2ui/A2UISkeleton.d.ts +60 -0
  51. package/es/chat-engine/components/a2ui/A2UISkeleton.js +197 -0
  52. package/es/chat-engine/components/a2ui/A2UISkeleton.js.map +1 -0
  53. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.d.ts +44 -0
  54. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +139 -0
  55. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js.map +1 -0
  56. package/es/chat-engine/components/a2ui/containers/A2UICard.d.ts +22 -0
  57. package/es/chat-engine/components/a2ui/containers/A2UICard.js +82 -0
  58. package/es/chat-engine/components/a2ui/containers/A2UICard.js.map +1 -0
  59. package/es/chat-engine/components/a2ui/containers/A2UIColumn.d.ts +18 -0
  60. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +81 -0
  61. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js.map +1 -0
  62. package/es/chat-engine/components/a2ui/containers/A2UIList.d.ts +14 -0
  63. package/es/chat-engine/components/a2ui/containers/A2UIList.js +62 -0
  64. package/es/chat-engine/components/a2ui/containers/A2UIList.js.map +1 -0
  65. package/es/chat-engine/components/a2ui/containers/A2UIRow.d.ts +20 -0
  66. package/es/chat-engine/components/a2ui/containers/A2UIRow.js +84 -0
  67. package/es/chat-engine/components/a2ui/containers/A2UIRow.js.map +1 -0
  68. package/es/chat-engine/components/a2ui/containers/A2UITabs.d.ts +14 -0
  69. package/es/chat-engine/components/a2ui/containers/A2UITabs.js +69 -0
  70. package/es/chat-engine/components/a2ui/containers/A2UITabs.js.map +1 -0
  71. package/es/chat-engine/components/a2ui/containers/index.d.ts +8 -0
  72. package/es/chat-engine/components/a2ui/containers/index.js +30 -0
  73. package/es/chat-engine/components/a2ui/containers/index.js.map +1 -0
  74. package/es/chat-engine/components/a2ui/index.d.ts +11 -0
  75. package/es/chat-engine/components/a2ui/index.js +62 -0
  76. package/es/chat-engine/components/a2ui/index.js.map +1 -0
  77. package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +33 -0
  78. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +80 -0
  79. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +1 -0
  80. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.d.ts +12 -0
  81. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +43 -0
  82. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js.map +1 -0
  83. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.d.ts +50 -0
  84. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +54 -0
  85. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js.map +1 -0
  86. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.d.ts +13 -0
  87. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +89 -0
  88. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js.map +1 -0
  89. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.d.ts +12 -0
  90. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +25 -0
  91. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js.map +1 -0
  92. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.d.ts +13 -0
  93. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +138942 -0
  94. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js.map +1 -0
  95. package/es/chat-engine/components/a2ui/primitives/A2UIImage.d.ts +12 -0
  96. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +75 -0
  97. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js.map +1 -0
  98. package/es/chat-engine/components/a2ui/primitives/A2UIInput.d.ts +20 -0
  99. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +63 -0
  100. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js.map +1 -0
  101. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.d.ts +56 -0
  102. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +64 -0
  103. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js.map +1 -0
  104. package/es/chat-engine/components/a2ui/primitives/A2UISlider.d.ts +12 -0
  105. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +55 -0
  106. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js.map +1 -0
  107. package/es/chat-engine/components/a2ui/primitives/A2UIText.d.ts +12 -0
  108. package/es/chat-engine/components/a2ui/primitives/A2UIText.js +104 -0
  109. package/es/chat-engine/components/a2ui/primitives/A2UIText.js.map +1 -0
  110. package/es/chat-engine/components/a2ui/primitives/A2UITextField.d.ts +12 -0
  111. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +80 -0
  112. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js.map +1 -0
  113. package/es/chat-engine/components/a2ui/primitives/index.d.ts +15 -0
  114. package/es/chat-engine/components/a2ui/primitives/index.js +39 -0
  115. package/es/chat-engine/components/a2ui/primitives/index.js.map +1 -0
  116. package/es/chat-engine/components/a2ui/registry.d.ts +35 -0
  117. package/es/chat-engine/components/a2ui/registry.js +74 -0
  118. package/es/chat-engine/components/a2ui/registry.js.map +1 -0
  119. package/es/{chatbot/components/toolcall → chat-engine/components/activity}/index.d.ts +1 -0
  120. package/es/chat-engine/components/activity/index.js +18 -0
  121. package/es/chat-engine/components/activity/index.js.map +1 -0
  122. package/es/chat-engine/components/activity/registry.d.ts +44 -0
  123. package/es/{chatbot/components/toolcall → chat-engine/components/activity}/registry.js +32 -22
  124. package/es/chat-engine/components/activity/registry.js.map +1 -0
  125. package/es/chat-engine/components/activity/render.d.ts +11 -0
  126. package/es/chat-engine/components/activity/render.js +107 -0
  127. package/es/chat-engine/components/activity/render.js.map +1 -0
  128. package/es/chat-engine/components/activity/types.d.ts +32 -0
  129. package/es/chat-engine/components/activity/types.js +7 -0
  130. package/es/chat-engine/components/activity/types.js.map +1 -0
  131. package/es/chat-engine/components/index.d.ts +4 -0
  132. package/es/chat-engine/components/index.js +76 -0
  133. package/es/chat-engine/components/index.js.map +1 -0
  134. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.d.ts +36 -0
  135. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js +36 -0
  136. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js.map +1 -0
  137. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.d.ts +46 -0
  138. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js +36 -0
  139. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js.map +1 -0
  140. package/es/chat-engine/components/json-render/SurfaceStateManager.d.ts +113 -0
  141. package/es/chat-engine/components/json-render/SurfaceStateManager.js +195 -0
  142. package/es/chat-engine/components/json-render/SurfaceStateManager.js.map +1 -0
  143. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.d.ts +49 -0
  144. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js +307 -0
  145. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js.map +1 -0
  146. package/es/chat-engine/components/json-render/adapters/a2ui-types.d.ts +96 -0
  147. package/es/chat-engine/components/json-render/adapters/a2ui-types.js +7 -0
  148. package/es/chat-engine/components/json-render/adapters/a2ui-types.js.map +1 -0
  149. package/es/chat-engine/components/json-render/adapters/index.d.ts +7 -0
  150. package/es/chat-engine/components/json-render/adapters/index.js +11 -0
  151. package/es/chat-engine/components/json-render/adapters/index.js.map +1 -0
  152. package/es/chat-engine/components/json-render/catalog/a2ui-binding.d.ts +64 -0
  153. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js +36 -0
  154. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js.map +1 -0
  155. package/es/chat-engine/components/json-render/catalog/a2ui-registry.d.ts +78 -0
  156. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js +36 -0
  157. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js.map +1 -0
  158. package/es/chat-engine/components/json-render/catalog/button.d.ts +14 -0
  159. package/es/chat-engine/components/json-render/catalog/button.js +71 -0
  160. package/es/chat-engine/components/json-render/catalog/button.js.map +1 -0
  161. package/es/chat-engine/components/json-render/catalog/card.d.ts +11 -0
  162. package/es/chat-engine/components/json-render/catalog/card.js +57 -0
  163. package/es/chat-engine/components/json-render/catalog/card.js.map +1 -0
  164. package/es/chat-engine/components/json-render/catalog/index.d.ts +127 -0
  165. package/es/chat-engine/components/json-render/catalog/index.js +36 -0
  166. package/es/chat-engine/components/json-render/catalog/index.js.map +1 -0
  167. package/es/chat-engine/components/json-render/catalog/input.d.ts +20 -0
  168. package/es/chat-engine/components/json-render/catalog/input.js +36 -0
  169. package/es/chat-engine/components/json-render/catalog/input.js.map +1 -0
  170. package/es/chat-engine/components/json-render/catalog/layout.d.ts +44 -0
  171. package/es/chat-engine/components/json-render/catalog/layout.js +129 -0
  172. package/es/chat-engine/components/json-render/catalog/layout.js.map +1 -0
  173. package/es/chat-engine/components/json-render/catalog/text.d.ts +11 -0
  174. package/es/chat-engine/components/json-render/catalog/text.js +31 -0
  175. package/es/chat-engine/components/json-render/catalog/text.js.map +1 -0
  176. package/es/chat-engine/components/json-render/catalog.d.ts +549 -0
  177. package/es/chat-engine/components/json-render/catalog.js +147 -0
  178. package/es/chat-engine/components/json-render/catalog.js.map +1 -0
  179. package/es/chat-engine/components/json-render/config.d.ts +154 -0
  180. package/es/chat-engine/components/json-render/config.js +36 -0
  181. package/es/chat-engine/components/json-render/config.js.map +1 -0
  182. package/es/chat-engine/components/json-render/contexts/actions.d.ts +74 -0
  183. package/es/chat-engine/components/json-render/contexts/actions.js +290 -0
  184. package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -0
  185. package/es/chat-engine/components/json-render/contexts/data.d.ts +45 -0
  186. package/es/chat-engine/components/json-render/contexts/data.js +104 -0
  187. package/es/chat-engine/components/json-render/contexts/data.js.map +1 -0
  188. package/es/chat-engine/components/json-render/contexts/validation.d.ts +59 -0
  189. package/es/chat-engine/components/json-render/contexts/validation.js +151 -0
  190. package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -0
  191. package/es/chat-engine/components/json-render/contexts/visibility.d.ts +29 -0
  192. package/es/chat-engine/components/json-render/contexts/visibility.js +56 -0
  193. package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -0
  194. package/es/chat-engine/components/json-render/engine.d.ts +58 -0
  195. package/es/chat-engine/components/json-render/engine.js +88 -0
  196. package/es/chat-engine/components/json-render/engine.js.map +1 -0
  197. package/es/chat-engine/components/json-render/index.d.ts +34 -0
  198. package/es/chat-engine/components/json-render/index.js +36 -0
  199. package/es/chat-engine/components/json-render/index.js.map +1 -0
  200. package/es/chat-engine/components/json-render/performance.d.ts +91 -0
  201. package/es/chat-engine/components/json-render/performance.js +135 -0
  202. package/es/chat-engine/components/json-render/performance.js.map +1 -0
  203. package/es/chat-engine/components/json-render/renderer.d.ts +71 -0
  204. package/es/chat-engine/components/json-render/renderer.js +124 -0
  205. package/es/chat-engine/components/json-render/renderer.js.map +1 -0
  206. package/es/chat-engine/components/json-render/types.d.ts +69 -0
  207. package/es/chat-engine/components/json-render/types.js +7 -0
  208. package/es/chat-engine/components/json-render/types.js.map +1 -0
  209. package/es/chat-engine/components/provider/agent-state.js +39 -2
  210. package/es/chat-engine/components/provider/agent-state.js.map +1 -1
  211. package/es/chat-engine/components/toolcall/index.js +35 -2
  212. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  213. package/es/chat-engine/components/toolcall/registry.js +1 -1
  214. package/es/chat-engine/components/toolcall/render.d.ts +1 -1
  215. package/es/chat-engine/components/toolcall/render.js +102 -26
  216. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  217. package/es/chat-engine/components/toolcall/types.js +1 -1
  218. package/es/chat-engine/core/a2ui/index.d.ts +10 -0
  219. package/es/chat-engine/core/a2ui/index.js +24 -0
  220. package/es/chat-engine/core/a2ui/index.js.map +1 -0
  221. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
  222. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +438 -0
  223. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
  224. package/es/chat-engine/core/a2ui/processor/ComponentTree.d.ts +53 -0
  225. package/es/chat-engine/core/a2ui/processor/ComponentTree.js +158 -0
  226. package/es/chat-engine/core/a2ui/processor/ComponentTree.js.map +1 -0
  227. package/es/chat-engine/core/a2ui/processor/DataStore.d.ts +63 -0
  228. package/es/chat-engine/core/a2ui/processor/DataStore.js +172 -0
  229. package/es/chat-engine/core/a2ui/processor/DataStore.js.map +1 -0
  230. package/es/chat-engine/core/a2ui/processor/PathResolver.d.ts +47 -0
  231. package/es/chat-engine/core/a2ui/processor/PathResolver.js +99 -0
  232. package/es/chat-engine/core/a2ui/processor/PathResolver.js.map +1 -0
  233. package/es/chat-engine/core/a2ui/types/index.d.ts +4 -0
  234. package/es/chat-engine/core/a2ui/types/index.js +9 -0
  235. package/es/chat-engine/core/a2ui/types/index.js.map +1 -0
  236. package/es/chat-engine/core/a2ui/types/types.d.ts +770 -0
  237. package/es/chat-engine/core/a2ui/types/types.js +104 -0
  238. package/es/chat-engine/core/a2ui/types/types.js.map +1 -0
  239. package/es/chat-engine/core/a2ui/utils/binding.d.ts +34 -0
  240. package/es/chat-engine/core/a2ui/utils/binding.js +1784 -0
  241. package/es/chat-engine/core/a2ui/utils/binding.js.map +1 -0
  242. package/es/chat-engine/core/a2ui/utils/index.d.ts +5 -0
  243. package/es/chat-engine/core/a2ui/utils/index.js +13 -0
  244. package/es/chat-engine/core/a2ui/utils/index.js.map +1 -0
  245. package/es/chat-engine/core/a2ui/utils/validation.d.ts +70 -0
  246. package/es/chat-engine/core/a2ui/utils/validation.js +333 -0
  247. package/es/chat-engine/core/a2ui/utils/validation.js.map +1 -0
  248. package/es/chat-engine/core/adapters/agui/activity-manager.d.ts +102 -0
  249. package/es/chat-engine/core/adapters/agui/activity-manager.js +144 -0
  250. package/es/chat-engine/core/adapters/agui/activity-manager.js.map +1 -0
  251. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +149 -0
  252. package/es/chat-engine/core/adapters/agui/event-mapper.js +415 -0
  253. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -0
  254. package/es/chat-engine/core/adapters/agui/events.d.ts +1550 -0
  255. package/es/chat-engine/core/adapters/agui/events.js +199 -0
  256. package/es/chat-engine/core/adapters/agui/events.js.map +1 -0
  257. package/es/chat-engine/core/adapters/agui/index.d.ts +95 -0
  258. package/es/chat-engine/core/adapters/agui/index.js +195 -0
  259. package/es/chat-engine/core/adapters/agui/index.js.map +1 -0
  260. package/es/chat-engine/core/adapters/agui/state-manager.d.ts +99 -0
  261. package/es/chat-engine/core/adapters/agui/state-manager.js +168 -0
  262. package/es/chat-engine/core/adapters/agui/state-manager.js.map +1 -0
  263. package/es/chat-engine/core/adapters/agui/types.d.ts +818 -0
  264. package/es/chat-engine/core/adapters/agui/types.js +95 -0
  265. package/es/chat-engine/core/adapters/agui/types.js.map +1 -0
  266. package/es/chat-engine/core/adapters/agui/utils.d.ts +203 -0
  267. package/es/chat-engine/core/adapters/agui/utils.js +330 -0
  268. package/es/chat-engine/core/adapters/agui/utils.js.map +1 -0
  269. package/es/chat-engine/core/event-bus/ChatEventBus.d.ts +88 -0
  270. package/es/chat-engine/core/event-bus/ChatEventBus.js +295 -0
  271. package/es/chat-engine/core/event-bus/ChatEventBus.js.map +1 -0
  272. package/es/chat-engine/core/event-bus/index.d.ts +5 -0
  273. package/es/chat-engine/core/event-bus/index.js +13 -0
  274. package/es/chat-engine/core/event-bus/index.js.map +1 -0
  275. package/es/chat-engine/core/event-bus/types.d.ts +230 -0
  276. package/es/chat-engine/core/event-bus/types.js +32 -0
  277. package/es/chat-engine/core/event-bus/types.js.map +1 -0
  278. package/es/chat-engine/core/index.d.ts +147 -0
  279. package/es/chat-engine/core/index.js +754 -0
  280. package/es/chat-engine/core/index.js.map +1 -0
  281. package/es/chat-engine/core/processor/index.d.ts +20 -0
  282. package/es/chat-engine/core/processor/index.js +146 -0
  283. package/es/chat-engine/core/processor/index.js.map +1 -0
  284. package/es/chat-engine/core/server/batch-client.d.ts +20 -0
  285. package/es/chat-engine/core/server/batch-client.js +114 -0
  286. package/es/chat-engine/core/server/batch-client.js.map +1 -0
  287. package/es/chat-engine/core/server/connection-manager.d.ts +39 -0
  288. package/es/chat-engine/core/server/connection-manager.js +84 -0
  289. package/es/chat-engine/core/server/connection-manager.js.map +1 -0
  290. package/es/chat-engine/core/server/errors.d.ts +22 -0
  291. package/es/chat-engine/core/server/errors.js +80 -0
  292. package/es/chat-engine/core/server/errors.js.map +1 -0
  293. package/es/chat-engine/core/server/index.d.ts +11 -0
  294. package/es/chat-engine/core/server/index.js +26 -0
  295. package/es/chat-engine/core/server/index.js.map +1 -0
  296. package/es/chat-engine/core/server/llm-service.d.ts +44 -0
  297. package/es/chat-engine/core/server/llm-service.js +200 -0
  298. package/es/chat-engine/core/server/llm-service.js.map +1 -0
  299. package/es/chat-engine/core/server/sse-client.d.ts +77 -0
  300. package/es/chat-engine/core/server/sse-client.js +362 -0
  301. package/es/chat-engine/core/server/sse-client.js.map +1 -0
  302. package/es/chat-engine/core/server/sse-parser.d.ts +49 -0
  303. package/es/chat-engine/core/server/sse-parser.js +116 -0
  304. package/es/chat-engine/core/server/sse-parser.js.map +1 -0
  305. package/es/chat-engine/core/server/types.d.ts +54 -0
  306. package/es/chat-engine/core/server/types.js +28 -0
  307. package/es/chat-engine/core/server/types.js.map +1 -0
  308. package/es/chat-engine/core/store/message.d.ts +27 -0
  309. package/es/chat-engine/core/store/message.js +263 -0
  310. package/es/chat-engine/core/store/message.js.map +1 -0
  311. package/es/chat-engine/core/store/model.d.ts +8 -0
  312. package/es/chat-engine/core/store/model.js +65 -0
  313. package/es/chat-engine/core/store/model.js.map +1 -0
  314. package/es/chat-engine/core/store/reactiveState.d.ts +52 -0
  315. package/es/chat-engine/core/store/reactiveState.js +1359 -0
  316. package/es/chat-engine/core/store/reactiveState.js.map +1 -0
  317. package/es/chat-engine/core/type.d.ts +271 -0
  318. package/es/chat-engine/core/type.js +7 -0
  319. package/es/chat-engine/core/type.js.map +1 -0
  320. package/es/chat-engine/core/utils/eventEmitter.d.ts +10 -0
  321. package/es/chat-engine/core/utils/eventEmitter.js +67 -0
  322. package/es/chat-engine/core/utils/eventEmitter.js.map +1 -0
  323. package/es/chat-engine/core/utils/index.d.ts +33 -0
  324. package/es/chat-engine/core/utils/index.js +999 -0
  325. package/es/chat-engine/core/utils/index.js.map +1 -0
  326. package/es/chat-engine/core/utils/logger.d.ts +30 -0
  327. package/es/chat-engine/core/utils/logger.js +87 -0
  328. package/es/chat-engine/core/utils/logger.js.map +1 -0
  329. package/es/chat-engine/hooks/a2ui/A2UIContext.d.ts +90 -0
  330. package/es/chat-engine/hooks/a2ui/A2UIContext.js +97 -0
  331. package/es/chat-engine/hooks/a2ui/A2UIContext.js.map +1 -0
  332. package/es/chat-engine/hooks/a2ui/index.d.ts +12 -0
  333. package/es/chat-engine/hooks/a2ui/index.js +19 -0
  334. package/es/chat-engine/hooks/a2ui/useA2UIAction.d.ts +40 -0
  335. package/es/chat-engine/hooks/a2ui/useA2UIAction.js +74 -0
  336. package/es/chat-engine/hooks/a2ui/useA2UIAction.js.map +1 -0
  337. package/es/chat-engine/hooks/a2ui/useA2UISurface.d.ts +36 -0
  338. package/es/chat-engine/hooks/a2ui/useA2UISurface.js +39 -0
  339. package/es/chat-engine/hooks/a2ui/useA2UISurface.js.map +1 -0
  340. package/es/chat-engine/hooks/a2ui/useDataBinding.d.ts +53 -0
  341. package/es/chat-engine/hooks/a2ui/useDataBinding.js +111 -0
  342. package/es/chat-engine/hooks/a2ui/useDataBinding.js.map +1 -0
  343. package/es/chat-engine/hooks/index.d.ts +4 -0
  344. package/es/chat-engine/hooks/index.js +54 -0
  345. package/es/chat-engine/hooks/index.js.map +1 -0
  346. package/es/chat-engine/hooks/useAgentActivity.d.ts +15 -0
  347. package/es/chat-engine/hooks/useAgentActivity.js +73 -0
  348. package/es/chat-engine/hooks/useAgentActivity.js.map +1 -0
  349. package/es/chat-engine/hooks/useAgentState.js +39 -2
  350. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  351. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  352. package/es/chat-engine/hooks/useChat.d.ts +3 -3
  353. package/es/chat-engine/hooks/useChat.js +41 -3
  354. package/es/chat-engine/hooks/useChat.js.map +1 -1
  355. package/es/chat-engine/hooks/useJsonRenderActivity.d.ts +56 -0
  356. package/es/chat-engine/hooks/useJsonRenderActivity.js +63 -0
  357. package/es/chat-engine/hooks/useJsonRenderActivity.js.map +1 -0
  358. package/es/chat-engine/index.d.ts +3 -3
  359. package/es/chat-engine/index.js +61 -5
  360. package/es/chat-engine/index.js.map +1 -1
  361. package/es/chat-filecard/_example-js/base.d.ts +1 -0
  362. package/es/chat-filecard/index.js +4 -6
  363. package/es/chat-filecard/index.js.map +1 -1
  364. package/es/chat-loading/_example-js/base.d.ts +2 -0
  365. package/es/chat-loading/_example-js/text.d.ts +2 -0
  366. package/es/chat-loading/index.js +4 -6
  367. package/es/chat-loading/index.js.map +1 -1
  368. package/es/chat-markdown/_example-js/base.d.ts +1 -0
  369. package/es/chat-markdown/_example-js/custom.d.ts +2 -0
  370. package/es/chat-markdown/_example-js/event.d.ts +1 -0
  371. package/es/chat-markdown/_example-js/footnote.d.ts +2 -0
  372. package/es/chat-markdown/_example-js/plugin.d.ts +2 -0
  373. package/es/chat-markdown/_example-js/theme.d.ts +2 -0
  374. package/es/chat-markdown/index.js +4 -6
  375. package/es/chat-markdown/index.js.map +1 -1
  376. package/es/chat-message/_example-js/action.d.ts +1 -0
  377. package/es/chat-message/_example-js/base.d.ts +1 -0
  378. package/es/chat-message/_example-js/configure.d.ts +1 -0
  379. package/es/chat-message/_example-js/content.d.ts +1 -0
  380. package/es/chat-message/_example-js/custom.d.ts +1 -0
  381. package/es/chat-message/_example-js/handle-actions.d.ts +7 -0
  382. package/es/chat-message/_example-js/status.d.ts +1 -0
  383. package/es/chat-message/_example-js/think.d.ts +1 -0
  384. package/es/chat-message/index.js +4 -6
  385. package/es/chat-message/index.js.map +1 -1
  386. package/es/chat-sender/_example-js/attachment.d.ts +2 -0
  387. package/es/chat-sender/_example-js/base.d.ts +2 -0
  388. package/es/chat-sender/_example-js/custom.d.ts +2 -0
  389. package/es/chat-sender/index.js +4 -6
  390. package/es/chat-sender/index.js.map +1 -1
  391. package/es/chat-thinking/_example-js/base.d.ts +1 -0
  392. package/es/chat-thinking/_example-js/style.d.ts +1 -0
  393. package/es/chat-thinking/index.js +4 -6
  394. package/es/chat-thinking/index.js.map +1 -1
  395. package/es/chatbot/_example-js/agent.d.ts +1 -0
  396. package/es/chatbot/_example-js/agui.d.ts +13 -0
  397. package/es/chatbot/_example-js/backup/travel.d.ts +1 -0
  398. package/es/chatbot/_example-js/basic.d.ts +1 -0
  399. package/es/chatbot/_example-js/code.d.ts +1 -0
  400. package/es/chatbot/_example-js/components/ItineraryCard.d.ts +3 -0
  401. package/es/chatbot/_example-js/components/login.d.ts +1 -0
  402. package/es/chatbot/_example-js/comprehensive.d.ts +1 -0
  403. package/es/chatbot/_example-js/custom-content.d.ts +1 -0
  404. package/es/chatbot/_example-js/custom-merge.d.ts +1 -0
  405. package/es/chatbot/_example-js/custom.d.ts +1 -0
  406. package/es/chatbot/_example-js/docs.d.ts +1 -0
  407. package/es/chatbot/_example-js/image.d.ts +1 -0
  408. package/es/chatbot/_example-js/initial-messages.d.ts +9 -0
  409. package/es/chatbot/_example-js/instance-methods.d.ts +14 -0
  410. package/es/chatbot/_example-js/nostream.d.ts +1 -0
  411. package/es/chatbot/_example-js/quick-start.d.ts +9 -0
  412. package/es/chatbot/_example-js/research.d.ts +1 -0
  413. package/es/chatbot/_example-js/role-message-config.d.ts +22 -0
  414. package/es/chatbot/_example-js/sender-config.d.ts +20 -0
  415. package/es/chatbot/_example-js/service-config.d.ts +17 -0
  416. package/es/chatbot/_example-js/simple.d.ts +1 -0
  417. package/es/chatbot/_example-js/utils/messageRenderer.d.ts +5 -0
  418. package/es/chatbot/docs/react-best-practice.d.ts +13 -0
  419. package/es/chatbot/index.js +4 -6
  420. package/es/chatbot/index.js.map +1 -1
  421. package/es/index.js +59 -9
  422. package/es/index.js.map +1 -1
  423. package/es/style/index.js +1 -1
  424. package/package.json +6 -3
  425. package/es/chatbot/components/provider/agent-state.d.ts +0 -5
  426. package/es/chatbot/components/provider/agent-state.js +0 -28
  427. package/es/chatbot/components/provider/agent-state.js.map +0 -1
  428. package/es/chatbot/components/toolcall/index.js +0 -19
  429. package/es/chatbot/components/toolcall/registry.d.ts +0 -35
  430. package/es/chatbot/components/toolcall/registry.js.map +0 -1
  431. package/es/chatbot/components/toolcall/render.d.ts +0 -13
  432. package/es/chatbot/components/toolcall/render.js +0 -207
  433. package/es/chatbot/components/toolcall/render.js.map +0 -1
  434. package/es/chatbot/components/toolcall/types.d.ts +0 -57
  435. package/es/chatbot/components/toolcall/types.js +0 -15
  436. package/es/chatbot/components/toolcall/types.js.map +0 -1
  437. package/es/chatbot/hooks/useAgentState.d.ts +0 -40
  438. package/es/chatbot/hooks/useAgentState.js +0 -76
  439. package/es/chatbot/hooks/useAgentState.js.map +0 -1
  440. package/es/chatbot/hooks/useAgentToolcall.d.ts +0 -28
  441. package/es/chatbot/hooks/useAgentToolcall.js +0 -78
  442. package/es/chatbot/hooks/useAgentToolcall.js.map +0 -1
  443. package/es/chatbot/hooks/useChat.d.ts +0 -11
  444. package/es/chatbot/hooks/useChat.js +0 -66
  445. package/es/chatbot/hooks/useChat.js.map +0 -1
  446. /package/es/{chatbot/components/toolcall → chat-engine/hooks/a2ui}/index.js.map +0 -0
@@ -1,207 +0,0 @@
1
- /**
2
- * tdesign v1.0.0-beta.4
3
- * (c) 2025 tdesign
4
- * @license MIT
5
- */
6
-
7
- import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
8
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
9
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
10
- import _regeneratorRuntime from '@babel/runtime/regenerator';
11
- import React, { useState, useMemo, useCallback, useEffect } from 'react';
12
- import { isNonInteractiveConfig } from './types.js';
13
- import { agentToolcallRegistry } from './registry.js';
14
- import { useAgentStateDataByKey, AgentStateContext } from '../../hooks/useAgentState.js';
15
- import '@babel/runtime/helpers/classCallCheck';
16
- import '@babel/runtime/helpers/createClass';
17
- import 'tdesign-web-components/lib/chat-engine';
18
-
19
- 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; }
20
- 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; }
21
- var ToolCallRenderer = /*#__PURE__*/React.memo(function (_ref) {
22
- var toolCall = _ref.toolCall,
23
- onRespond = _ref.onRespond;
24
- var _useState = useState({
25
- status: "idle"
26
- }),
27
- _useState2 = _slicedToArray(_useState, 2),
28
- actionState = _useState2[0],
29
- setActionState = _useState2[1];
30
- var config = useMemo(function () {
31
- var cfg = agentToolcallRegistry.get(toolCall.toolCallName);
32
- return cfg;
33
- }, [toolCall.toolCallName]);
34
- var _useState3 = useState(function () {
35
- return !!agentToolcallRegistry.getRenderFunction(toolCall.toolCallName);
36
- }),
37
- _useState4 = _slicedToArray(_useState3, 2),
38
- isRegistered = _useState4[0],
39
- setIsRegistered = _useState4[1];
40
- var args = useMemo(function () {
41
- try {
42
- return toolCall.args ? JSON.parse(toolCall.args) : {};
43
- } catch (error) {
44
- console.error("\u89E3\u6790\u5DE5\u5177\u8C03\u7528\u53C2\u6570\u5931\u8D25:", error);
45
- return {};
46
- }
47
- }, [toolCall.args]);
48
- var handleRespond = useCallback(function (response) {
49
- if (onRespond) {
50
- onRespond(toolCall, response);
51
- setActionState(function (prev) {
52
- return _objectSpread(_objectSpread({}, prev), {}, {
53
- status: "complete",
54
- result: response
55
- });
56
- });
57
- }
58
- }, [toolCall.toolCallId, onRespond]);
59
- useEffect(function () {
60
- if (!config) return;
61
- if (isNonInteractiveConfig(config)) {
62
- var executeHandler = /*#__PURE__*/function () {
63
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
64
- var backendResult, result;
65
- return _regeneratorRuntime.wrap(function _callee$(_context) {
66
- while (1) switch (_context.prev = _context.next) {
67
- case 0:
68
- _context.prev = 0;
69
- setActionState({
70
- status: "executing"
71
- });
72
- if (toolCall.result) {
73
- try {
74
- backendResult = JSON.parse(toolCall.result);
75
- } catch (error) {
76
- console.warn("\u89E3\u6790\u540E\u7AEF\u7ED3\u679C\u5931\u8D25\uFF0C\u4F7F\u7528\u539F\u59CB\u5B57\u7B26\u4E32:", error);
77
- backendResult = toolCall.result;
78
- }
79
- }
80
- _context.next = 5;
81
- return config.handler(args, backendResult);
82
- case 5:
83
- result = _context.sent;
84
- setActionState({
85
- status: "complete",
86
- result: result
87
- });
88
- _context.next = 12;
89
- break;
90
- case 9:
91
- _context.prev = 9;
92
- _context.t0 = _context["catch"](0);
93
- setActionState({
94
- status: "error",
95
- error: _context.t0
96
- });
97
- case 12:
98
- case "end":
99
- return _context.stop();
100
- }
101
- }, _callee, null, [[0, 9]]);
102
- }));
103
- return function executeHandler() {
104
- return _ref2.apply(this, arguments);
105
- };
106
- }();
107
- executeHandler();
108
- } else if (toolCall.result) {
109
- try {
110
- var result = JSON.parse(toolCall.result);
111
- setActionState({
112
- status: "complete",
113
- result: result
114
- });
115
- } catch (error) {
116
- setActionState({
117
- status: "error",
118
- error: error
119
- });
120
- }
121
- } else {
122
- setActionState({
123
- status: "executing"
124
- });
125
- }
126
- }, [config, args, toolCall.result]);
127
- var subscribeKeyExtractor = useMemo(function () {
128
- return config === null || config === void 0 ? void 0 : config.subscribeKey;
129
- }, [config]);
130
- var targetStateKey = useMemo(function () {
131
- if (!subscribeKeyExtractor) return void 0;
132
- var fullProps = {
133
- status: actionState.status,
134
- args: args,
135
- result: actionState.result,
136
- error: actionState.error,
137
- respond: handleRespond
138
- };
139
- return subscribeKeyExtractor(fullProps);
140
- }, [subscribeKeyExtractor, args, actionState]);
141
- useEffect(function () {
142
- if (!isRegistered) {
143
- var handleRegistered = function handleRegistered(event) {
144
- var _event$detail;
145
- if (((_event$detail = event.detail) === null || _event$detail === void 0 ? void 0 : _event$detail.name) === toolCall.toolCallName) {
146
- setIsRegistered(true);
147
- }
148
- };
149
- window.addEventListener("toolcall-registered", handleRegistered);
150
- return function () {
151
- window.removeEventListener("toolcall-registered", handleRegistered);
152
- };
153
- }
154
- }, [toolCall.toolCallName, isRegistered]);
155
- var agentState = useAgentStateDataByKey(targetStateKey);
156
- var componentProps = useMemo(function () {
157
- return {
158
- status: actionState.status,
159
- args: args,
160
- result: actionState.result,
161
- error: actionState.error,
162
- respond: handleRespond,
163
- agentState: agentState
164
- };
165
- }, [actionState.status, args, actionState.result, actionState.error, handleRespond, agentState]);
166
- var MemoizedComponent = useMemo(function () {
167
- return agentToolcallRegistry.getRenderFunction(toolCall.toolCallName);
168
- }, [toolCall.toolCallName, isRegistered]);
169
- if (!MemoizedComponent) {
170
- return null;
171
- }
172
- return /* @__PURE__ */React.createElement(MemoizedComponent, _objectSpread({}, componentProps));
173
- }, function (prevProps, nextProps) {
174
- 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.onRespond === nextProps.onRespond;
175
- });
176
- var withAgentStateToolcall1 = function withAgentStateToolcall1(Component) {
177
- var WrappedComponent = function WrappedComponent(props) {
178
- return /* @__PURE__ */React.createElement(AgentStateContext.Consumer, null, function (context) {
179
- if (!context) {
180
- console.warn("AgentStateContext not found, component will render without state");
181
- return /* @__PURE__ */React.createElement(Component, _objectSpread({}, props));
182
- }
183
- return /* @__PURE__ */React.createElement(Component, _objectSpread(_objectSpread({}, props), {}, {
184
- agentState: context.stateMap
185
- }));
186
- });
187
- };
188
- WrappedComponent.displayName = "withAgentState(".concat(Component.displayName || Component.name || "Component", ")");
189
- return /*#__PURE__*/React.memo(WrappedComponent);
190
- };
191
- var withAgentStateToolcall = function withAgentStateToolcall(Component, subscribeKeyExtractor) {
192
- var WrappedComponent = function WrappedComponent(props) {
193
- var targetStateKey = useMemo(function () {
194
- return subscribeKeyExtractor ? subscribeKeyExtractor(props) : void 0;
195
- }, [props]);
196
- var agentState = useAgentStateDataByKey(targetStateKey);
197
- console.log("====WrappedComponent", agentState, targetStateKey);
198
- return /* @__PURE__ */React.createElement(Component, _objectSpread(_objectSpread({}, props), {}, {
199
- agentState: agentState
200
- }));
201
- };
202
- WrappedComponent.displayName = "withAgentState(".concat(Component.displayName || Component.name || "Component", ")");
203
- return /*#__PURE__*/React.memo(WrappedComponent);
204
- };
205
-
206
- export { ToolCallRenderer, withAgentStateToolcall, withAgentStateToolcall1 };
207
- //# sourceMappingURL=render.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render.js","sources":["../../../../../pro-components/chat/chatbot/components/toolcall/render.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback, useMemo } from 'react';\nimport type { 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\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 [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 {\n // 等待用户交互\n setActionState({ status: 'executing' });\n }\n }, [config, args, toolCall.result]);\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 }, [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 [toolCall.toolCallName, isRegistered],\n );\n\n if (!MemoizedComponent) {\n return null;\n }\n\n return <MemoizedComponent {...componentProps} />;\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.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\n// 创建一个高阶组件来包装需要状态的工具组件\n// export const withAgentStateToolcall = <P extends object>(\n// Component: React.ComponentType<WithAgentStateProps<P>>,\n// ): React.ComponentType<P> => {\n// const WrappedComponent: React.FC<P> = (props: P) => {\n// // 尝试获取 Context 状态\n// let contextState: UseStateActionReturn['state'] | null = null;\n// try {\n// const context = useAgentStateContext();\n// console.log('====context', context);\n// contextState = context.state;\n// } catch {\n// // 如果没有 Context,则忽略\n// }\n\n// // 构造增强后的 props\n// const enhancedProps: WithAgentStateProps<P> = {\n// ...props,\n// ...(contextState && { agentState: contextState }),\n// };\n\n// return <Component {...enhancedProps} />;\n// };\n\n// // 设置 displayName 便于调试\n// WrappedComponent.displayName = `withAgentState(${Component.displayName || Component.name || 'Component'})`;\n\n// return React.memo(WrappedComponent);\n// };\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 console.log('====WrappedComponent', agentState, 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\n// interface SubscribeStrategy<TArgs = any> {\n// // 自定义状态选择器\n// stateSelector?: (stateMap: Record<string, any>, args: TArgs) => any;\n// // 依赖项,用于优化重新计算\n// deps?: (args: TArgs) => any[];\n// }\n\n// export const withAgentStateToolcall = <P extends object>(\n// Component: React.ComponentType<WithAgentStateProps<P>>,\n// subscribeStrategy?: SubscribeStrategy\n// ): React.ComponentType<P> => {\n// const WrappedComponent: React.FC<P> = (props: P) => {\n// const { stateMap } = useAgentStateContext();\n\n// // 使用自定义选择器\n// const selectedState = useMemo(() => {\n// if (!subscribeStrategy?.stateSelector) {\n// return stateMap;\n// }\n// return subscribeStrategy.stateSelector(stateMap, (props as any).args);\n// }, [\n// stateMap,\n// (props as any).args,\n// ...(subscribeStrategy?.deps?.((props as any).args) || [])\n// ]);\n\n// return <Component {...props} agentState={selectedState} />;\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","_useState3","getRenderFunction","_useState4","isRegistered","setIsRegistered","args","JSON","parse","error","console","handleRespond","useCallback","response","prev","_objectSpread","result","toolCallId","useEffect","isNonInteractiveConfig","executeHandler","_callee","backendResult","_regeneratorRuntime","wrap","_callee$","_context","next","warn","handler","sent","t0","stop","subscribeKeyExtractor","subscribeKey","targetStateKey","fullProps","respond","handleRegistered","event","_event$detail","detail","name","window","addEventListener","removeEventListener","agentState","useAgentStateDataByKey","componentProps","MemoizedComponent","createElement","prevProps","nextProps","withAgentStateToolcall1","Component","WrappedComponent","props","AgentStateContext","Consumer","context","stateMap","displayName","concat","withAgentStateToolcall","log"],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- import React from 'react';
2
- /**
3
- * 智能体可交互组件的标准 Props 接口
4
- */
5
- export interface ToolcallComponentProps<TArgs extends object = any, TResult = any, TResponse = any> {
6
- /** 组件的当前渲染状态 */
7
- status: 'idle' | 'inProgress' | 'executing' | 'complete' | 'error';
8
- /** Agent 调用时传入的初始参数 */
9
- args: TArgs;
10
- /** 当 status 为 'complete' 时,包含 Toolcall 的最终执行结果 */
11
- result?: TResult;
12
- /** 当 status 为 'error' 时,包含错误信息 */
13
- error?: Error;
14
- /**
15
- * 【交互核心】一个回调函数,用于将用户的交互结果返回给宿主环境。
16
- * 仅在"交互式"场景下由宿主提供。
17
- */
18
- respond?: (response: TResponse) => void;
19
- agentState?: Record<string, any>;
20
- }
21
- interface NonInteractiveToolcallConfig<TArgs extends object, TResult> {
22
- name: string;
23
- description: string;
24
- parameters: any[];
25
- /** 业务逻辑执行器,支持可选的后端结果作为第二个参数 */
26
- handler: (args: TArgs, backendResult?: any) => Promise<TResult>;
27
- /** 状态显示组件 */
28
- component: React.FC<ToolcallComponentProps<TArgs, TResult>>;
29
- /** 订阅statekey提取函数 */
30
- subscribeKey?: (props: ToolcallComponentProps<TArgs, TResult>) => string | undefined;
31
- }
32
- interface InteractiveToolcallConfig<TArgs extends object, TResult, TResponse> {
33
- name: string;
34
- description: string;
35
- parameters?: any[];
36
- /** 交互式UI组件 */
37
- component: React.FC<ToolcallComponentProps<TArgs, TResult, TResponse>>;
38
- /** handler 属性不存在,以此作为区分标志 */
39
- handler?: never;
40
- /** 订阅statekey提取函数 */
41
- subscribeKey?: (props: ToolcallComponentProps<TArgs, TResult>) => string | undefined;
42
- }
43
- export type AgentToolcallConfig<TArgs extends object = any, TResult = any, TResponse = any> = NonInteractiveToolcallConfig<TArgs, TResult> | InteractiveToolcallConfig<TArgs, TResult, TResponse>;
44
- export declare function isNonInteractive<TArgs extends object, TResult>(config: AgentToolcallConfig<TArgs, TResult, any>): config is NonInteractiveToolcallConfig<TArgs, TResult>;
45
- export interface AgentToolcallRegistry {
46
- [ToolcallName: string]: AgentToolcallConfig;
47
- }
48
- export interface AgentToolcallState<TArgs extends object = any, TResult = any> {
49
- status: ToolcallComponentProps['status'];
50
- args?: TArgs;
51
- result?: TResult;
52
- error?: Error;
53
- }
54
- export declare const isNonInteractiveConfig: (cfg: AgentToolcallConfig) => cfg is AgentToolcallConfig & {
55
- handler: Function;
56
- };
57
- export {};
@@ -1,15 +0,0 @@
1
- /**
2
- * tdesign v1.0.0-beta.4
3
- * (c) 2025 tdesign
4
- * @license MIT
5
- */
6
-
7
- function isNonInteractive(config) {
8
- return typeof config.handler === "function";
9
- }
10
- var isNonInteractiveConfig = function isNonInteractiveConfig(cfg) {
11
- return typeof cfg.handler === "function";
12
- };
13
-
14
- export { isNonInteractive, isNonInteractiveConfig };
15
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sources":["../../../../../pro-components/chat/chatbot/components/toolcall/types.ts"],"sourcesContent":["import React from 'react';\n\n/**\n * 智能体可交互组件的标准 Props 接口\n */\nexport interface ToolcallComponentProps<TArgs extends object = any, TResult = any, TResponse = any> {\n /** 组件的当前渲染状态 */\n status: 'idle' | 'inProgress' | 'executing' | 'complete' | 'error';\n /** Agent 调用时传入的初始参数 */\n args: TArgs;\n /** 当 status 为 'complete' 时,包含 Toolcall 的最终执行结果 */\n result?: TResult;\n /** 当 status 为 'error' 时,包含错误信息 */\n error?: Error;\n /**\n * 【交互核心】一个回调函数,用于将用户的交互结果返回给宿主环境。\n * 仅在\"交互式\"场景下由宿主提供。\n */\n respond?: (response: TResponse) => void;\n agentState?: Record<string, any>;\n}\n\n// 场景一:非交互式 Toolcall 的配置 (有 handler)\ninterface NonInteractiveToolcallConfig<TArgs extends object, TResult> {\n name: string;\n description: string;\n parameters: any[];\n /** 业务逻辑执行器,支持可选的后端结果作为第二个参数 */\n handler: (args: TArgs, backendResult?: any) => Promise<TResult>;\n /** 状态显示组件 */\n component: React.FC<ToolcallComponentProps<TArgs, TResult>>;\n /** 订阅statekey提取函数 */\n subscribeKey?: (props: ToolcallComponentProps<TArgs, TResult>) => string | undefined;\n}\n\n// 场景二:交互式 Toolcall 的配置 (无 handler)\ninterface InteractiveToolcallConfig<TArgs extends object, TResult, TResponse> {\n name: string;\n description: string;\n parameters?: any[];\n /** 交互式UI组件 */\n component: React.FC<ToolcallComponentProps<TArgs, TResult, TResponse>>;\n /** handler 属性不存在,以此作为区分标志 */\n handler?: never;\n /** 订阅statekey提取函数 */\n subscribeKey?: (props: ToolcallComponentProps<TArgs, TResult>) => string | undefined;\n}\n\n// 最终的配置类型\nexport type AgentToolcallConfig<TArgs extends object = any, TResult = any, TResponse = any> =\n | NonInteractiveToolcallConfig<TArgs, TResult>\n | InteractiveToolcallConfig<TArgs, TResult, TResponse>;\n\n// 类型守卫:判断是否为非交互式配置\nexport function isNonInteractive<TArgs extends object, TResult>(\n config: AgentToolcallConfig<TArgs, TResult, any>,\n): config is NonInteractiveToolcallConfig<TArgs, TResult> {\n return typeof (config as any).handler === 'function';\n}\n\n// Agent Toolcall 注册表\nexport interface AgentToolcallRegistry {\n [ToolcallName: string]: AgentToolcallConfig;\n}\n\n// 内部状态管理\nexport interface AgentToolcallState<TArgs extends object = any, TResult = any> {\n status: ToolcallComponentProps['status'];\n args?: TArgs;\n result?: TResult;\n error?: Error;\n}\n\n// 类型守卫函数\nexport const isNonInteractiveConfig = (cfg: AgentToolcallConfig): cfg is AgentToolcallConfig & { handler: Function } =>\n typeof (cfg as any).handler === 'function';\n"],"names":["isNonInteractive","config","handler","isNonInteractiveConfig","cfg"],"mappings":";;;;;;AAsDO,SAASA,iBACdC,MACwD,EAAA;AACjD,EAAA,OAAA,OAAQA,OAAeC,OAAY,KAAA,UAAA,CAAA;AAC5C,CAAA;IAgBaC,sBAAyB,GAAA,SAAzBA,sBAAyBA,CAACC,GACrC,EAAA;AAAA,EAAA,OAAA,OAAQA,IAAYF,OAAY,KAAA,UAAA,CAAA;AAAA;;;;"}
@@ -1,40 +0,0 @@
1
- /**
2
- * 状态订阅相关类型定义
3
- */
4
- export interface StateActionOptions {
5
- /**
6
- * 初始状态
7
- */
8
- initialState?: Record<string, any>;
9
- /**
10
- * 只订阅特定key的变化
11
- */
12
- subscribeKey?: string;
13
- }
14
- export interface UseStateActionReturn {
15
- /**
16
- * 全量状态Map - 包含所有stateKey的状态
17
- * 格式: { [stateKey]: stateData }
18
- */
19
- stateMap: Record<string, any>;
20
- /**
21
- * 当前最新的状态key
22
- */
23
- currentStateKey: string | null;
24
- /**
25
- * 设置状态Map,用于加载历史对话消息中的state数据
26
- */
27
- setStateMap: (stateMap: Record<string, any> | ((prev: Record<string, any>) => Record<string, any>)) => void;
28
- /**
29
- * 获取当前完整状态的方法
30
- */
31
- getCurrentState: () => Record<string, any>;
32
- /**
33
- * 获取特定 key 状态的方法
34
- */
35
- getStateByKey: (key: string) => any;
36
- }
37
- export declare const useAgentState: <T = any>(options?: StateActionOptions) => UseStateActionReturn;
38
- export declare const AgentStateContext: import("react").Context<UseStateActionReturn>;
39
- export declare const useAgentStateDataByKey: (stateKey?: string) => any;
40
- export declare const useAgentStateContext: () => UseStateActionReturn;
@@ -1,76 +0,0 @@
1
- /**
2
- * tdesign v1.0.0-beta.4
3
- * (c) 2025 tdesign
4
- * @license MIT
5
- */
6
-
7
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
8
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
9
- import { useState, useRef, useEffect, createContext, useContext, useMemo } from 'react';
10
- import { stateManager } from 'tdesign-web-components/lib/chat-engine';
11
-
12
- 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; }
13
- 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; }
14
- var useAgentState = function useAgentState() {
15
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
16
- var initialState = options.initialState,
17
- subscribeKey = options.subscribeKey;
18
- var _useState = useState(initialState || {}),
19
- _useState2 = _slicedToArray(_useState, 2),
20
- stateMap = _useState2[0],
21
- setStateMap = _useState2[1];
22
- var _useState3 = useState(null),
23
- _useState4 = _slicedToArray(_useState3, 2),
24
- currentStateKey = _useState4[0],
25
- setCurrentStateKey = _useState4[1];
26
- var stateMapRef = useRef(stateMap);
27
- stateMapRef.current = stateMap;
28
- useEffect(function () {
29
- return stateManager.subscribeToLatest(function (newState, newStateKey) {
30
- if (subscribeKey && newStateKey !== subscribeKey) {
31
- stateMapRef.current = _objectSpread(_objectSpread({}, stateMapRef.current), {}, _defineProperty({}, newStateKey, newState));
32
- return;
33
- }
34
- setStateMap(function (prev) {
35
- return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, newStateKey, newState));
36
- });
37
- setCurrentStateKey(newStateKey);
38
- });
39
- }, [subscribeKey]);
40
- return {
41
- stateMap: stateMapRef.current,
42
- currentStateKey: currentStateKey,
43
- setStateMap: setStateMap,
44
- getCurrentState: function getCurrentState() {
45
- return stateMapRef.current;
46
- },
47
- getStateByKey: function getStateByKey(key) {
48
- return stateMapRef.current[key];
49
- }
50
- };
51
- };
52
- var AgentStateContext = /*#__PURE__*/createContext(null);
53
- var useAgentStateDataByKey = function useAgentStateDataByKey(stateKey) {
54
- var contextState = useContext(AgentStateContext);
55
- var independentState = useAgentState({
56
- subscribeKey: stateKey
57
- });
58
- return useMemo(function () {
59
- if (contextState) {
60
- var stateMap2 = contextState.stateMap;
61
- return stateKey ? stateMap2[stateKey] : stateMap2;
62
- }
63
- var stateMap = independentState.stateMap;
64
- return stateKey ? stateMap[stateKey] : stateMap;
65
- }, [stateKey, contextState && (stateKey ? contextState.stateMap[stateKey] : JSON.stringify(contextState.stateMap)), independentState && (stateKey ? independentState.stateMap[stateKey] : JSON.stringify(independentState.stateMap))]);
66
- };
67
- var useAgentStateContext = function useAgentStateContext() {
68
- var context = useContext(AgentStateContext);
69
- if (!context) {
70
- throw new Error("useAgentState must be used within AgentStateProvider");
71
- }
72
- return context;
73
- };
74
-
75
- export { AgentStateContext, useAgentState, useAgentStateContext, useAgentStateDataByKey };
76
- //# sourceMappingURL=useAgentState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAgentState.js","sources":["../../../../pro-components/chat/chatbot/hooks/useAgentState.ts"],"sourcesContent":["import { useState, useEffect, useRef, createContext, useContext, useMemo } from 'react';\nimport { stateManager } from 'tdesign-web-components/lib/chat-engine';\n\n/**\n * 状态订阅相关类型定义\n */\n\nexport interface StateActionOptions {\n /**\n * 初始状态\n */\n initialState?: Record<string, any>;\n /**\n * 只订阅特定key的变化\n */\n subscribeKey?: string;\n}\n\nexport interface UseStateActionReturn {\n /**\n * 全量状态Map - 包含所有stateKey的状态\n * 格式: { [stateKey]: stateData }\n */\n stateMap: Record<string, any>;\n /**\n * 当前最新的状态key\n */\n currentStateKey: string | null;\n /**\n * 设置状态Map,用于加载历史对话消息中的state数据\n */\n setStateMap: (stateMap: Record<string, any> | ((prev: Record<string, any>) => Record<string, any>)) => void;\n /**\n * 获取当前完整状态的方法\n */\n getCurrentState: () => Record<string, any>;\n /**\n * 获取特定 key 状态的方法\n */\n getStateByKey: (key: string) => any;\n}\n\nexport const useAgentState = <T = any>(options: StateActionOptions = {}): UseStateActionReturn => {\n const { initialState, subscribeKey } = options;\n const [stateMap, setStateMap] = useState<Record<string, any>>(initialState || {});\n const [currentStateKey, setCurrentStateKey] = useState<string | null>(null);\n\n // 使用 ref 来避免不必要的重新渲染\n const stateMapRef = useRef(stateMap);\n stateMapRef.current = stateMap;\n\n useEffect(\n () =>\n stateManager.subscribeToLatest((newState: T, newStateKey: string) => {\n // 如果指定了 subscribeKey,只有匹配时才更新状态\n if (subscribeKey && newStateKey !== subscribeKey) {\n // 仍然更新内部状态,但不触发重新渲染\n stateMapRef.current = {\n ...stateMapRef.current,\n [newStateKey]: newState,\n };\n return;\n }\n\n setStateMap((prev) => ({\n ...prev,\n [newStateKey]: newState,\n }));\n setCurrentStateKey(newStateKey);\n }),\n [subscribeKey],\n );\n\n return {\n stateMap: stateMapRef.current,\n currentStateKey,\n setStateMap,\n getCurrentState: () => stateMapRef.current,\n getStateByKey: (key: string) => stateMapRef.current[key],\n };\n};\n\n// 创建 AgentState Context\nexport const AgentStateContext = createContext<UseStateActionReturn | null>(null);\n\n// 简化的状态选择器\nexport const useAgentStateDataByKey = (stateKey?: string) => {\n const contextState = useContext(AgentStateContext);\n const independentState = useAgentState({ subscribeKey: stateKey });\n\n return useMemo(() => {\n if (contextState) {\n // 有 Provider,使用 Context 状态\n const { stateMap } = contextState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }\n\n // 没有 Provider,使用独立状态\n const { stateMap } = independentState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }, [\n stateKey,\n // 关键:添加和 useAgentStateByKey 相同的深度依赖逻辑\n contextState && (stateKey ? contextState.stateMap[stateKey] : JSON.stringify(contextState.stateMap)),\n independentState && (stateKey ? independentState.stateMap[stateKey] : JSON.stringify(independentState.stateMap)),\n ]);\n};\n\n// 导出 Context Hook\nexport const useAgentStateContext = (): UseStateActionReturn => {\n const context = useContext(AgentStateContext);\n\n if (!context) {\n throw new Error('useAgentState must be used within AgentStateProvider');\n }\n\n return context;\n};\n"],"names":["useAgentState","options","arguments","length","undefined","initialState","subscribeKey","_useState","useState","_useState2","_slicedToArray","stateMap","setStateMap","_useState3","_useState4","currentStateKey","setCurrentStateKey","stateMapRef","useRef","current","useEffect","stateManager","subscribeToLatest","newState","newStateKey","_objectSpread","_defineProperty","prev","getCurrentState","getStateByKey","key","AgentStateContext","createContext","useAgentStateDataByKey","stateKey","contextState","useContext","independentState","useMemo","JSON","stringify","useAgentStateContext","context","Error"],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import type { AgentToolcallConfig, ToolcallComponentProps } from '../components/toolcall/types';
2
- export interface UseAgentToolcallReturn {
3
- register: (config: AgentToolcallConfig | AgentToolcallConfig[]) => void;
4
- unregister: (names: string | string[]) => void;
5
- isRegistered: (name: string) => boolean;
6
- getRegistered: () => string[];
7
- config: any;
8
- }
9
- /**
10
- * 统一的、智能的 Agent Toolcall 适配器 Hook,
11
- * 注册管理:负责工具配置的注册、取消注册、状态跟踪;生命周期管理:自动清理、防止内存泄漏
12
- * 支持两种使用模式:
13
- * 1. 自动注册模式:传入配置,自动注册和清理
14
- * 2. 手动注册模式:不传配置或传入null,返回注册方法由业务控制
15
- */
16
- export declare function useAgentToolcall<TArgs extends object = any, TResult = any, TResponse = any>(config?: AgentToolcallConfig<TArgs, TResult, TResponse> | AgentToolcallConfig<TArgs, TResult, TResponse>[] | null | undefined): UseAgentToolcallReturn;
17
- export interface ToolConfigWithStateOptions<TArgs extends object = any, TResult = any> {
18
- name: string;
19
- description: string;
20
- parameters: Array<{
21
- name: string;
22
- type: string;
23
- }>;
24
- subscribeKey?: (props: ToolcallComponentProps<TArgs, TResult>) => string | undefined;
25
- component: React.ComponentType<ToolcallComponentProps<TArgs, TResult> & {
26
- agentState?: Record<string, any>;
27
- }>;
28
- }
@@ -1,78 +0,0 @@
1
- /**
2
- * tdesign v1.0.0-beta.4
3
- * (c) 2025 tdesign
4
- * @license MIT
5
- */
6
-
7
- import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
8
- import { useRef, useCallback, useEffect } from 'react';
9
- import { agentToolcallRegistry } from '../components/toolcall/registry.js';
10
- import '@babel/runtime/helpers/classCallCheck';
11
- import '@babel/runtime/helpers/createClass';
12
- import '@babel/runtime/helpers/defineProperty';
13
-
14
- function useAgentToolcall(config) {
15
- var registeredNamesRef = useRef(/* @__PURE__ */new Set());
16
- var autoRegisteredNamesRef = useRef(/* @__PURE__ */new Set());
17
- var configRef = useRef(config);
18
- var register = useCallback(function (newConfig) {
19
- if (!newConfig) {
20
- console.warn("[useAgentToolcall] \u914D\u7F6E\u4E3A\u7A7A\uFF0C\u8DF3\u8FC7\u6CE8\u518C");
21
- return;
22
- }
23
- var configs = Array.isArray(newConfig) ? newConfig : [newConfig];
24
- configs.forEach(function (cfg) {
25
- if (agentToolcallRegistry.get(cfg.name)) {
26
- console.warn("[useAgentToolcall] \u914D\u7F6E\u540D\u79F0 \"".concat(cfg.name, "\" \u5DF2\u5B58\u5728\u4E8E\u6CE8\u518C\u8868\u4E2D\uFF0C\u5C06\u88AB\u8986\u76D6"));
27
- }
28
- agentToolcallRegistry.register(cfg);
29
- registeredNamesRef.current.add(cfg.name);
30
- });
31
- }, []);
32
- var unregister = useCallback(function (names) {
33
- var nameArray = Array.isArray(names) ? names : [names];
34
- nameArray.forEach(function (name) {
35
- agentToolcallRegistry.unregister(name);
36
- registeredNamesRef.current["delete"](name);
37
- autoRegisteredNamesRef.current["delete"](name);
38
- });
39
- }, []);
40
- var isRegistered = useCallback(function (name) {
41
- return registeredNamesRef.current.has(name) || autoRegisteredNamesRef.current.has(name);
42
- }, []);
43
- var getRegistered = useCallback(function () {
44
- return Array.from(/* @__PURE__ */new Set([].concat(_toConsumableArray(registeredNamesRef.current), _toConsumableArray(autoRegisteredNamesRef.current))));
45
- }, []);
46
- useEffect(function () {
47
- if (!config) {
48
- return;
49
- }
50
- var configs = Array.isArray(config) ? config : [config];
51
- configs.forEach(function (cfg) {
52
- if (agentToolcallRegistry.get(cfg.name)) {
53
- console.warn("[useAgentToolcall] \u914D\u7F6E\u540D\u79F0 \"".concat(cfg.name, "\" \u5DF2\u5B58\u5728\u4E8E\u6CE8\u518C\u8868\u4E2D\uFF0C\u5C06\u88AB\u8986\u76D6"));
54
- }
55
- agentToolcallRegistry.register(cfg);
56
- autoRegisteredNamesRef.current.add(cfg.name);
57
- });
58
- return function () {
59
- configs.forEach(function (cfg) {
60
- agentToolcallRegistry.unregister(cfg.name);
61
- autoRegisteredNamesRef.current["delete"](cfg.name);
62
- });
63
- };
64
- }, [config]);
65
- useEffect(function () {
66
- configRef.current = config;
67
- }, [config]);
68
- return {
69
- register: register,
70
- unregister: unregister,
71
- isRegistered: isRegistered,
72
- getRegistered: getRegistered,
73
- config: configRef.current
74
- };
75
- }
76
-
77
- export { useAgentToolcall };
78
- //# sourceMappingURL=useAgentToolcall.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAgentToolcall.js","sources":["../../../../pro-components/chat/chatbot/hooks/useAgentToolcall.ts"],"sourcesContent":["import { useCallback, useRef, useEffect } from 'react';\nimport type { AgentToolcallConfig, ToolcallComponentProps } from '../components/toolcall/types';\nimport { agentToolcallRegistry } from '../components/toolcall/registry';\n\nexport interface UseAgentToolcallReturn {\n register: (config: AgentToolcallConfig | AgentToolcallConfig[]) => void;\n unregister: (names: string | string[]) => void;\n isRegistered: (name: string) => boolean;\n getRegistered: () => string[];\n config: any;\n}\n\n/**\n * 统一的、智能的 Agent Toolcall 适配器 Hook,\n * 注册管理:负责工具配置的注册、取消注册、状态跟踪;生命周期管理:自动清理、防止内存泄漏\n * 支持两种使用模式:\n * 1. 自动注册模式:传入配置,自动注册和清理\n * 2. 手动注册模式:不传配置或传入null,返回注册方法由业务控制\n */\nexport function useAgentToolcall<TArgs extends object = any, TResult = any, TResponse = any>(\n config?:\n | AgentToolcallConfig<TArgs, TResult, TResponse>\n | AgentToolcallConfig<TArgs, TResult, TResponse>[]\n | null\n | undefined,\n): UseAgentToolcallReturn {\n const registeredNamesRef = useRef<Set<string>>(new Set());\n const autoRegisteredNamesRef = useRef<Set<string>>(new Set());\n const configRef = useRef(config);\n\n // 手动注册方法\n const register = useCallback((newConfig: AgentToolcallConfig | AgentToolcallConfig[]) => {\n if (!newConfig) {\n console.warn('[useAgentToolcall] 配置为空,跳过注册');\n return;\n }\n\n const configs = Array.isArray(newConfig) ? newConfig : [newConfig];\n\n configs.forEach((cfg) => {\n if (agentToolcallRegistry.get(cfg.name)) {\n console.warn(`[useAgentToolcall] 配置名称 \"${cfg.name}\" 已存在于注册表中,将被覆盖`);\n }\n\n agentToolcallRegistry.register(cfg);\n registeredNamesRef.current.add(cfg.name);\n });\n }, []);\n\n // 手动取消注册方法\n const unregister = useCallback((names: string | string[]) => {\n const nameArray = Array.isArray(names) ? names : [names];\n\n nameArray.forEach((name) => {\n agentToolcallRegistry.unregister(name);\n registeredNamesRef.current.delete(name);\n autoRegisteredNamesRef.current.delete(name);\n });\n }, []);\n\n // 检查是否已注册\n const isRegistered = useCallback(\n (name: string) => registeredNamesRef.current.has(name) || autoRegisteredNamesRef.current.has(name),\n [],\n );\n\n // 获取所有已注册的配置名称\n const getRegistered = useCallback(\n () => Array.from(new Set([...registeredNamesRef.current, ...autoRegisteredNamesRef.current])),\n [],\n );\n\n // 自动注册逻辑(当传入配置时)\n useEffect(() => {\n if (!config) {\n return;\n }\n\n const configs = Array.isArray(config) ? config : [config];\n configs.forEach((cfg) => {\n if (agentToolcallRegistry.get(cfg.name)) {\n console.warn(`[useAgentToolcall] 配置名称 \"${cfg.name}\" 已存在于注册表中,将被覆盖`);\n }\n\n agentToolcallRegistry.register(cfg);\n autoRegisteredNamesRef.current.add(cfg.name);\n });\n\n // 清理函数:取消注册自动注册的配置\n return () => {\n configs.forEach((cfg) => {\n agentToolcallRegistry.unregister(cfg.name);\n autoRegisteredNamesRef.current.delete(cfg.name);\n });\n };\n }, [config]);\n\n // 更新配置引用\n useEffect(() => {\n configRef.current = config;\n }, [config]);\n\n return {\n register,\n unregister,\n isRegistered,\n getRegistered,\n config: configRef.current,\n };\n}\n\n// 创建带状态感知的工具配置(带状态变化事件),状态注入,自动为组件注入 agentState\nexport interface ToolConfigWithStateOptions<TArgs extends object = any, TResult = any> {\n name: string;\n description: string;\n parameters: Array<{ name: string; type: string }>;\n subscribeKey?: (props: ToolcallComponentProps<TArgs, TResult>) => string | undefined;\n component: React.ComponentType<ToolcallComponentProps<TArgs, TResult> & { agentState?: Record<string, any> }>;\n}\n"],"names":["useAgentToolcall","config","registeredNamesRef","useRef","Set","autoRegisteredNamesRef","configRef","register","useCallback","newConfig","console","warn","configs","Array","isArray","forEach","cfg","agentToolcallRegistry","get","name","concat","current","add","unregister","names","nameArray","isRegistered","has","getRegistered","from","_toConsumableArray","useEffect"],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import ChatEngine from 'tdesign-web-components/lib/chat-engine';
2
- import type { ChatMessagesData, ChatServiceConfig, ChatStatus } from 'tdesign-web-components/lib/chat-engine';
3
- export type IUseChat = {
4
- defaultMessages: ChatMessagesData[];
5
- chatServiceConfig: ChatServiceConfig;
6
- };
7
- export declare const useChat: ({ defaultMessages: initialMessages, chatServiceConfig }: IUseChat) => {
8
- chatEngine: ChatEngine;
9
- messages: ChatMessagesData[];
10
- status: ChatStatus;
11
- };