@tdesign-react/chat 1.0.2-alpha.9 → 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 (303) 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.js +1 -1
  4. package/es/_util/useDynamicStyle.js +1 -1
  5. package/es/attachments/index.js +1 -1
  6. package/es/chat-actionbar/index.js +1 -1
  7. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.d.ts +196 -0
  8. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +301 -0
  9. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +1 -0
  10. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.d.ts +37 -0
  11. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +116 -0
  12. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js.map +1 -0
  13. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.d.ts +42 -0
  14. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +113 -0
  15. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js.map +1 -0
  16. package/es/chat-engine/components/a2ui/A2UISkeleton.d.ts +60 -0
  17. package/es/chat-engine/components/a2ui/A2UISkeleton.js +197 -0
  18. package/es/chat-engine/components/a2ui/A2UISkeleton.js.map +1 -0
  19. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.d.ts +44 -0
  20. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +139 -0
  21. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js.map +1 -0
  22. package/es/chat-engine/components/a2ui/containers/A2UICard.d.ts +22 -0
  23. package/es/chat-engine/components/a2ui/containers/A2UICard.js +82 -0
  24. package/es/chat-engine/components/a2ui/containers/A2UICard.js.map +1 -0
  25. package/es/chat-engine/components/a2ui/containers/A2UIColumn.d.ts +18 -0
  26. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +81 -0
  27. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js.map +1 -0
  28. package/es/chat-engine/components/a2ui/containers/A2UIList.d.ts +14 -0
  29. package/es/chat-engine/components/a2ui/containers/A2UIList.js +62 -0
  30. package/es/chat-engine/components/a2ui/containers/A2UIList.js.map +1 -0
  31. package/es/chat-engine/components/a2ui/containers/A2UIRow.d.ts +20 -0
  32. package/es/chat-engine/components/a2ui/containers/A2UIRow.js +84 -0
  33. package/es/chat-engine/components/a2ui/containers/A2UIRow.js.map +1 -0
  34. package/es/chat-engine/components/a2ui/containers/A2UITabs.d.ts +14 -0
  35. package/es/chat-engine/components/a2ui/containers/A2UITabs.js +69 -0
  36. package/es/chat-engine/components/a2ui/containers/A2UITabs.js.map +1 -0
  37. package/es/chat-engine/components/a2ui/containers/index.d.ts +8 -0
  38. package/es/chat-engine/components/a2ui/containers/index.js +30 -0
  39. package/es/chat-engine/components/a2ui/containers/index.js.map +1 -0
  40. package/es/chat-engine/components/a2ui/index.d.ts +11 -0
  41. package/es/chat-engine/components/a2ui/index.js +62 -0
  42. package/es/chat-engine/components/a2ui/index.js.map +1 -0
  43. package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +33 -0
  44. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +80 -0
  45. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +1 -0
  46. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.d.ts +12 -0
  47. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +43 -0
  48. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js.map +1 -0
  49. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.d.ts +50 -0
  50. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +54 -0
  51. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js.map +1 -0
  52. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.d.ts +13 -0
  53. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +89 -0
  54. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js.map +1 -0
  55. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.d.ts +12 -0
  56. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +25 -0
  57. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js.map +1 -0
  58. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.d.ts +13 -0
  59. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +138942 -0
  60. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js.map +1 -0
  61. package/es/chat-engine/components/a2ui/primitives/A2UIImage.d.ts +12 -0
  62. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +75 -0
  63. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js.map +1 -0
  64. package/es/chat-engine/components/a2ui/primitives/A2UIInput.d.ts +20 -0
  65. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +63 -0
  66. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js.map +1 -0
  67. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.d.ts +56 -0
  68. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +64 -0
  69. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js.map +1 -0
  70. package/es/chat-engine/components/a2ui/primitives/A2UISlider.d.ts +12 -0
  71. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +55 -0
  72. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js.map +1 -0
  73. package/es/chat-engine/components/a2ui/primitives/A2UIText.d.ts +12 -0
  74. package/es/chat-engine/components/a2ui/primitives/A2UIText.js +104 -0
  75. package/es/chat-engine/components/a2ui/primitives/A2UIText.js.map +1 -0
  76. package/es/chat-engine/components/a2ui/primitives/A2UITextField.d.ts +12 -0
  77. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +80 -0
  78. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js.map +1 -0
  79. package/es/chat-engine/components/a2ui/primitives/index.d.ts +15 -0
  80. package/es/chat-engine/components/a2ui/primitives/index.js +39 -0
  81. package/es/chat-engine/components/a2ui/primitives/index.js.map +1 -0
  82. package/es/chat-engine/components/a2ui/registry.d.ts +35 -0
  83. package/es/chat-engine/components/a2ui/registry.js +74 -0
  84. package/es/chat-engine/components/a2ui/registry.js.map +1 -0
  85. package/es/chat-engine/components/activity/index.js +1 -1
  86. package/es/chat-engine/components/activity/registry.d.ts +1 -1
  87. package/es/chat-engine/components/activity/registry.js +1 -1
  88. package/es/chat-engine/components/activity/registry.js.map +1 -1
  89. package/es/chat-engine/components/activity/render.d.ts +2 -2
  90. package/es/chat-engine/components/activity/render.js +1 -1
  91. package/es/chat-engine/components/activity/render.js.map +1 -1
  92. package/es/chat-engine/components/activity/types.js +1 -1
  93. package/es/chat-engine/components/index.d.ts +1 -0
  94. package/es/chat-engine/components/index.js +57 -9
  95. package/es/chat-engine/components/index.js.map +1 -1
  96. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.d.ts +36 -0
  97. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js +36 -0
  98. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js.map +1 -0
  99. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.d.ts +46 -0
  100. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js +36 -0
  101. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js.map +1 -0
  102. package/es/chat-engine/components/json-render/SurfaceStateManager.d.ts +113 -0
  103. package/es/chat-engine/components/json-render/SurfaceStateManager.js +195 -0
  104. package/es/chat-engine/components/json-render/SurfaceStateManager.js.map +1 -0
  105. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.d.ts +49 -0
  106. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js +307 -0
  107. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js.map +1 -0
  108. package/es/chat-engine/components/json-render/adapters/a2ui-types.d.ts +96 -0
  109. package/es/chat-engine/components/json-render/adapters/a2ui-types.js +7 -0
  110. package/es/chat-engine/components/json-render/adapters/a2ui-types.js.map +1 -0
  111. package/es/chat-engine/components/json-render/adapters/index.d.ts +7 -0
  112. package/es/chat-engine/components/json-render/adapters/index.js +11 -0
  113. package/es/chat-engine/components/json-render/adapters/index.js.map +1 -0
  114. package/es/chat-engine/components/json-render/catalog/a2ui-binding.d.ts +64 -0
  115. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js +36 -0
  116. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js.map +1 -0
  117. package/es/chat-engine/components/json-render/catalog/a2ui-registry.d.ts +78 -0
  118. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js +36 -0
  119. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js.map +1 -0
  120. package/es/chat-engine/components/json-render/catalog/button.d.ts +14 -0
  121. package/es/chat-engine/components/json-render/catalog/button.js +71 -0
  122. package/es/chat-engine/components/json-render/catalog/button.js.map +1 -0
  123. package/es/chat-engine/components/json-render/catalog/card.d.ts +11 -0
  124. package/es/chat-engine/components/json-render/catalog/card.js +57 -0
  125. package/es/chat-engine/components/json-render/catalog/card.js.map +1 -0
  126. package/es/chat-engine/components/json-render/catalog/index.d.ts +127 -0
  127. package/es/chat-engine/components/json-render/catalog/index.js +36 -0
  128. package/es/chat-engine/components/json-render/catalog/index.js.map +1 -0
  129. package/es/chat-engine/components/json-render/catalog/input.d.ts +20 -0
  130. package/es/chat-engine/components/json-render/catalog/input.js +36 -0
  131. package/es/chat-engine/components/json-render/catalog/input.js.map +1 -0
  132. package/es/chat-engine/components/json-render/catalog/layout.d.ts +44 -0
  133. package/es/chat-engine/components/json-render/catalog/layout.js +129 -0
  134. package/es/chat-engine/components/json-render/catalog/layout.js.map +1 -0
  135. package/es/chat-engine/components/json-render/catalog/text.d.ts +11 -0
  136. package/es/chat-engine/components/json-render/catalog/text.js +31 -0
  137. package/es/chat-engine/components/json-render/catalog/text.js.map +1 -0
  138. package/es/chat-engine/components/json-render/catalog.d.ts +549 -0
  139. package/es/chat-engine/components/json-render/catalog.js +147 -0
  140. package/es/chat-engine/components/json-render/catalog.js.map +1 -0
  141. package/es/chat-engine/components/json-render/config.d.ts +154 -0
  142. package/es/chat-engine/components/json-render/config.js +36 -0
  143. package/es/chat-engine/components/json-render/config.js.map +1 -0
  144. package/es/chat-engine/components/json-render/contexts/actions.d.ts +74 -0
  145. package/es/chat-engine/components/json-render/contexts/actions.js +290 -0
  146. package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -0
  147. package/es/chat-engine/components/json-render/contexts/data.d.ts +45 -0
  148. package/es/chat-engine/components/json-render/contexts/data.js +104 -0
  149. package/es/chat-engine/components/json-render/contexts/data.js.map +1 -0
  150. package/es/chat-engine/components/json-render/contexts/validation.d.ts +59 -0
  151. package/es/chat-engine/components/json-render/contexts/validation.js +151 -0
  152. package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -0
  153. package/es/chat-engine/components/json-render/contexts/visibility.d.ts +29 -0
  154. package/es/chat-engine/components/json-render/contexts/visibility.js +56 -0
  155. package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -0
  156. package/es/chat-engine/components/json-render/engine.d.ts +58 -0
  157. package/es/chat-engine/components/json-render/engine.js +88 -0
  158. package/es/chat-engine/components/json-render/engine.js.map +1 -0
  159. package/es/chat-engine/components/json-render/index.d.ts +34 -0
  160. package/es/chat-engine/components/json-render/index.js +36 -0
  161. package/es/chat-engine/components/json-render/index.js.map +1 -0
  162. package/es/chat-engine/components/json-render/performance.d.ts +91 -0
  163. package/es/chat-engine/components/json-render/performance.js +135 -0
  164. package/es/chat-engine/components/json-render/performance.js.map +1 -0
  165. package/es/chat-engine/components/json-render/renderer.d.ts +71 -0
  166. package/es/chat-engine/components/json-render/renderer.js +124 -0
  167. package/es/chat-engine/components/json-render/renderer.js.map +1 -0
  168. package/es/chat-engine/components/json-render/types.d.ts +69 -0
  169. package/es/chat-engine/components/json-render/types.js +7 -0
  170. package/es/chat-engine/components/json-render/types.js.map +1 -0
  171. package/es/chat-engine/components/provider/agent-state.js +39 -2
  172. package/es/chat-engine/components/provider/agent-state.js.map +1 -1
  173. package/es/chat-engine/components/toolcall/index.js +32 -2
  174. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  175. package/es/chat-engine/components/toolcall/registry.js +1 -1
  176. package/es/chat-engine/components/toolcall/render.d.ts +1 -1
  177. package/es/chat-engine/components/toolcall/render.js +33 -4
  178. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  179. package/es/chat-engine/components/toolcall/types.js +1 -1
  180. package/es/chat-engine/core/a2ui/index.d.ts +10 -0
  181. package/es/chat-engine/core/a2ui/index.js +24 -0
  182. package/es/chat-engine/core/a2ui/index.js.map +1 -0
  183. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
  184. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +438 -0
  185. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
  186. package/es/chat-engine/core/a2ui/processor/ComponentTree.d.ts +53 -0
  187. package/es/chat-engine/core/a2ui/processor/ComponentTree.js +158 -0
  188. package/es/chat-engine/core/a2ui/processor/ComponentTree.js.map +1 -0
  189. package/es/chat-engine/core/a2ui/processor/DataStore.d.ts +63 -0
  190. package/es/chat-engine/core/a2ui/processor/DataStore.js +172 -0
  191. package/es/chat-engine/core/a2ui/processor/DataStore.js.map +1 -0
  192. package/es/chat-engine/core/a2ui/processor/PathResolver.d.ts +47 -0
  193. package/es/chat-engine/core/a2ui/processor/PathResolver.js +99 -0
  194. package/es/chat-engine/core/a2ui/processor/PathResolver.js.map +1 -0
  195. package/es/chat-engine/core/a2ui/types/index.d.ts +4 -0
  196. package/es/chat-engine/core/a2ui/types/index.js +9 -0
  197. package/es/chat-engine/core/a2ui/types/index.js.map +1 -0
  198. package/es/chat-engine/core/a2ui/types/types.d.ts +770 -0
  199. package/es/chat-engine/core/a2ui/types/types.js +104 -0
  200. package/es/chat-engine/core/a2ui/types/types.js.map +1 -0
  201. package/es/chat-engine/core/a2ui/utils/binding.d.ts +34 -0
  202. package/es/chat-engine/core/a2ui/utils/binding.js +1784 -0
  203. package/es/chat-engine/core/a2ui/utils/binding.js.map +1 -0
  204. package/es/chat-engine/core/a2ui/utils/index.d.ts +5 -0
  205. package/es/chat-engine/core/a2ui/utils/index.js +13 -0
  206. package/es/chat-engine/core/a2ui/utils/index.js.map +1 -0
  207. package/es/chat-engine/core/a2ui/utils/validation.d.ts +70 -0
  208. package/es/chat-engine/core/a2ui/utils/validation.js +333 -0
  209. package/es/chat-engine/core/a2ui/utils/validation.js.map +1 -0
  210. package/es/chat-engine/core/adapters/agui/activity-manager.d.ts +102 -0
  211. package/es/chat-engine/core/adapters/agui/activity-manager.js +144 -0
  212. package/es/chat-engine/core/adapters/agui/activity-manager.js.map +1 -0
  213. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +42 -2
  214. package/es/chat-engine/core/adapters/agui/event-mapper.js +90 -50
  215. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
  216. package/es/chat-engine/core/adapters/agui/events.d.ts +222 -222
  217. package/es/chat-engine/core/adapters/agui/events.js +34 -34
  218. package/es/chat-engine/core/adapters/agui/events.js.map +1 -1
  219. package/es/chat-engine/core/adapters/agui/index.d.ts +22 -2
  220. package/es/chat-engine/core/adapters/agui/index.js +34 -14
  221. package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
  222. package/es/chat-engine/core/adapters/agui/state-manager.js +1 -1
  223. package/es/chat-engine/core/adapters/agui/types.d.ts +57 -56
  224. package/es/chat-engine/core/adapters/agui/types.js +5 -5
  225. package/es/chat-engine/core/adapters/agui/types.js.map +1 -1
  226. package/es/chat-engine/core/adapters/agui/utils.d.ts +9 -3
  227. package/es/chat-engine/core/adapters/agui/utils.js +23 -4
  228. package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
  229. package/es/chat-engine/core/event-bus/ChatEventBus.d.ts +88 -0
  230. package/es/chat-engine/core/event-bus/ChatEventBus.js +295 -0
  231. package/es/chat-engine/core/event-bus/ChatEventBus.js.map +1 -0
  232. package/es/chat-engine/core/event-bus/index.d.ts +5 -0
  233. package/es/chat-engine/core/event-bus/index.js +13 -0
  234. package/es/chat-engine/core/event-bus/index.js.map +1 -0
  235. package/es/chat-engine/core/event-bus/types.d.ts +230 -0
  236. package/es/chat-engine/core/event-bus/types.js +32 -0
  237. package/es/chat-engine/core/event-bus/types.js.map +1 -0
  238. package/es/chat-engine/core/index.d.ts +16 -1
  239. package/es/chat-engine/core/index.js +174 -17
  240. package/es/chat-engine/core/index.js.map +1 -1
  241. package/es/chat-engine/core/processor/index.js +1 -1
  242. package/es/chat-engine/core/server/batch-client.js +1 -1
  243. package/es/chat-engine/core/server/connection-manager.js +1 -1
  244. package/es/chat-engine/core/server/errors.js +1 -1
  245. package/es/chat-engine/core/server/index.js +1 -1
  246. package/es/chat-engine/core/server/llm-service.js +17 -15
  247. package/es/chat-engine/core/server/llm-service.js.map +1 -1
  248. package/es/chat-engine/core/server/sse-client.js +1 -1
  249. package/es/chat-engine/core/server/sse-parser.js +1 -1
  250. package/es/chat-engine/core/server/types.js +1 -1
  251. package/es/chat-engine/core/store/message.js +2 -2
  252. package/es/chat-engine/core/store/message.js.map +1 -1
  253. package/es/chat-engine/core/store/model.js +1 -1
  254. package/es/chat-engine/core/store/reactiveState.js +1 -1
  255. package/es/chat-engine/core/type.d.ts +18 -2
  256. package/es/chat-engine/core/type.js +1 -1
  257. package/es/chat-engine/core/utils/eventEmitter.js +1 -1
  258. package/es/chat-engine/core/utils/index.js +1 -1
  259. package/es/chat-engine/core/utils/logger.js +1 -1
  260. package/es/chat-engine/hooks/a2ui/A2UIContext.d.ts +90 -0
  261. package/es/chat-engine/hooks/a2ui/A2UIContext.js +97 -0
  262. package/es/chat-engine/hooks/a2ui/A2UIContext.js.map +1 -0
  263. package/es/chat-engine/hooks/a2ui/index.d.ts +12 -0
  264. package/es/chat-engine/hooks/a2ui/index.js +19 -0
  265. package/es/chat-engine/hooks/a2ui/index.js.map +1 -0
  266. package/es/chat-engine/hooks/a2ui/useA2UIAction.d.ts +40 -0
  267. package/es/chat-engine/hooks/a2ui/useA2UIAction.js +74 -0
  268. package/es/chat-engine/hooks/a2ui/useA2UIAction.js.map +1 -0
  269. package/es/chat-engine/hooks/a2ui/useA2UISurface.d.ts +36 -0
  270. package/es/chat-engine/hooks/a2ui/useA2UISurface.js +39 -0
  271. package/es/chat-engine/hooks/a2ui/useA2UISurface.js.map +1 -0
  272. package/es/chat-engine/hooks/a2ui/useDataBinding.d.ts +53 -0
  273. package/es/chat-engine/hooks/a2ui/useDataBinding.js +111 -0
  274. package/es/chat-engine/hooks/a2ui/useDataBinding.js.map +1 -0
  275. package/es/chat-engine/hooks/index.js +38 -4
  276. package/es/chat-engine/hooks/index.js.map +1 -1
  277. package/es/chat-engine/hooks/useAgentActivity.d.ts +1 -2
  278. package/es/chat-engine/hooks/useAgentActivity.js +1 -1
  279. package/es/chat-engine/hooks/useAgentActivity.js.map +1 -1
  280. package/es/chat-engine/hooks/useAgentState.js +39 -2
  281. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  282. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  283. package/es/chat-engine/hooks/useChat.d.ts +3 -3
  284. package/es/chat-engine/hooks/useChat.js +40 -2
  285. package/es/chat-engine/hooks/useChat.js.map +1 -1
  286. package/es/chat-engine/hooks/useJsonRenderActivity.d.ts +56 -0
  287. package/es/chat-engine/hooks/useJsonRenderActivity.js +63 -0
  288. package/es/chat-engine/hooks/useJsonRenderActivity.js.map +1 -0
  289. package/es/chat-engine/index.d.ts +1 -3
  290. package/es/chat-engine/index.js +30 -8
  291. package/es/chat-engine/index.js.map +1 -1
  292. package/es/chat-filecard/index.js +1 -1
  293. package/es/chat-loading/index.js +1 -1
  294. package/es/chat-markdown/index.js +1 -1
  295. package/es/chat-message/index.js +1 -1
  296. package/es/chat-sender/index.js +1 -1
  297. package/es/chat-thinking/index.js +1 -1
  298. package/es/chatbot/docs/react-best-practice.d.ts +13 -0
  299. package/es/chatbot/index.js +1 -1
  300. package/es/index.js +27 -5
  301. package/es/index.js.map +1 -1
  302. package/es/style/index.js +1 -1
  303. package/package.json +6 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dep-f2051ebd.js","sources":["../../../../node_modules/.pnpm/react-fast-compare@3.2.2/node_modules/react-fast-compare/index.js","../../../pro-components/chat/chat-engine/components/json-render/JsonRenderActivityRenderer.tsx","../../../pro-components/chat/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.tsx","../../../pro-components/chat/chat-engine/components/json-render/catalog/input.tsx","../../../pro-components/chat/chat-engine/components/json-render/catalog/a2ui-binding.tsx","../../../pro-components/chat/chat-engine/components/json-render/catalog/a2ui-registry.tsx","../../../pro-components/chat/chat-engine/components/json-render/catalog/index.ts","../../../pro-components/chat/chat-engine/components/json-render/config.tsx"],"sourcesContent":["/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/**\n * json-render Activity 渲染器\n * 基于 TDesign ChatEngine 的 Activity 机制集成 json-render\n * \n * 核心特性:\n * 1. 支持 ACTIVITY_SNAPSHOT 全量渲染\n * 2. 支持 ACTIVITY_DELTA 增量更新(Delta Merge 由数据层完成,此处接收完整 Schema)\n * 3. 使用 React.memo + react-fast-compare 优化渲染性能\n * 4. 与现有 A2UI 渲染器并行工作\n * \n */\n\nimport React, { useMemo } from 'react';\nimport isEqual from 'react-fast-compare';\nimport { Renderer, ActionProvider, VisibilityProvider } from './';\nimport { DataProvider } from './contexts/data';\nimport type { ComponentRegistry } from './renderer';\nimport type { JsonRenderActivityProps } from './types';\n\nexport interface JsonRenderActivityRendererProps extends JsonRenderActivityProps {\n /** 组件注册表(必须) */\n registry: ComponentRegistry;\n /** \n * Action 处理器映射表\n * \n * 示例:\n * ```tsx\n * const actionHandlers = {\n * submit: async (params) => { ... },\n * reset: async (params) => { ... },\n * cancel: async (params) => { ... },\n * };\n * ```\n */\n actionHandlers?: Record<string, (params: Record<string, unknown>) => void | Promise<void>>;\n /** 显示调试信息 */\n debug?: boolean;\n}\n\n/**\n * json-render Activity 渲染器组件\n * \n * 性能优化策略:\n * 1. 使用 React.memo + react-fast-compare 进行高效的 props 对比\n * 2. 直接使用 props.content 渲染,避免 Double Render\n * 3. Delta Merge 在数据层(ChatEngine)完成,此组件只负责渲染完整 Schema\n * \n * 数据同步策略:\n * - DataProvider 使用 initialData 初始化\n */\nconst JsonRenderActivityRendererInner: React.FC<JsonRenderActivityRendererProps> = ({\n activityType,\n content,\n messageId,\n registry,\n actionHandlers = {},\n}) => {\n // 直接在渲染阶段做校验\n const isValidSchema = content && content.root && content.elements && content.elements[content.root];\n\n // 数据处理:使用 useMemo 缓存,只在 content.data 变化时重新计算\n const renderData = useMemo(() => content?.data || {}, [content?.data]);\n\n // todo: Schema 无效时显示加载状态\n // if (!isValidSchema) {\n // return (\n // <div style={{ padding: '16px', color: 'var(--td-text-color-secondary)' }}>\n // 数据初始化中...\n // </div>\n // );\n // }\n\n return (\n <div data-activity-type={activityType} data-message-id={messageId}>\n <DataProvider initialData={renderData}>\n <VisibilityProvider>\n <ActionProvider handlers={actionHandlers}>\n <Renderer tree={content} registry={registry} />\n </ActionProvider>\n </VisibilityProvider>\n </DataProvider>\n </div>\n );\n};\n\n/**\n * 使用 React.memo 包装,配合 react-fast-compare 进行高效的深比较\n * \n * 对比策略:\n * 1. registry 引用比较(通常是稳定的)\n * 2. actionHandlers 引用比较(建议使用 useMemo 稳定化)\n * 3. content 使用 react-fast-compare 深比较(比 JSON.stringify 快 3-5 倍)\n */\nexport const JsonRenderActivityRenderer = React.memo(\n JsonRenderActivityRendererInner,\n (prevProps, nextProps) => {\n // registry 变化必须重渲染\n if (prevProps.registry !== nextProps.registry) return false;\n \n // actionHandlers 变化必须重渲染\n if (prevProps.actionHandlers !== nextProps.actionHandlers) return false;\n\n // content 引用相同,跳过渲染\n if (prevProps.content === nextProps.content) return true;\n\n // 使用 react-fast-compare 进行高效深比较\n // 比 JSON.stringify 快 3-5 倍,且能正确处理循环引用\n return isEqual(prevProps.content, nextProps.content);\n },\n);\n\n/**\n * 默认导出\n */\nexport default JsonRenderActivityRenderer;\n","/**\n * A2UI v0.9 + json-render Activity 渲染器\n * 将 A2UI v0.9 协议转换为 json-render Schema 进行渲染\n * \n * 工作流程:\n * 1. 接收 ACTIVITY_SNAPSHOT/DELTA 中的 A2UI content\n * 2. 区分消息类型:UI型 vs 纯数据型\n * 3. UI型:转换为 Schema 并注册到 SurfaceStateManager,渲染 UI\n * 4. 纯数据型:通过 SurfaceStateManager 更新数据,触发订阅者重渲染,本组件不渲染\n * \n * 消息分类:\n * - UI型消息:包含 createSurface / updateComponents / deleteSurface → 需要渲染/更新 UI\n * - 纯数据型消息:仅包含 updateDataModel → 只更新状态,不渲染新 UI\n */\n\nimport React, { useMemo, useEffect, useState, useCallback } from 'react';\nimport type { ComponentRegistry } from './renderer';\nimport type { JsonRenderActivityProps, JsonRenderSchema } from './types';\nimport { JsonRenderActivityRenderer } from './JsonRenderActivityRenderer';\nimport { convertA2UIMessagesToJsonRender } from './adapters';\nimport { surfaceStateManager } from './SurfaceStateManager';\nimport type { A2UIMessage } from './adapters';\n\nexport interface A2UIJsonRenderActivityRendererProps extends Omit<JsonRenderActivityProps, 'content'> {\n /** A2UI content(包含 messages 数组) */\n content: {\n messages?: A2UIMessage[];\n [key: string]: any;\n };\n /** 组件注册表(必须) */\n registry: ComponentRegistry;\n /** Action 处理器(可选) */\n actionHandlers?: Record<string, (params: Record<string, unknown>) => void | Promise<void>>;\n /** 显示调试信息 */\n debug?: boolean;\n}\n\n/**\n * 从消息中提取 surfaceId\n */\nfunction extractSurfaceId(messages: A2UIMessage[]): string | null {\n for (const msg of messages) {\n if (msg.createSurface) return msg.createSurface.surfaceId;\n if (msg.updateComponents) return msg.updateComponents.surfaceId;\n if (msg.updateDataModel) return msg.updateDataModel.surfaceId;\n if (msg.deleteSurface) return msg.deleteSurface.surfaceId;\n }\n return null;\n}\n\n/**\n * 判断消息是否为\"UI型\"(需要渲染/更新 UI)\n * 包括 createSurface / updateComponents / deleteSurface\n * 只有纯 updateDataModel 消息不需要渲染\n */\nfunction isUIMessages(messages: A2UIMessage[]): boolean {\n return messages.some(msg => msg.createSurface || msg.updateComponents || msg.deleteSurface);\n}\n\n/**\n * 判断消息是否包含删除操作\n */\nfunction hasDeletionMessages(messages: A2UIMessage[]): boolean {\n return messages.some(msg => msg.deleteSurface);\n}\n\n/**\n * 判断消息是否包含创建/更新操作(需要渲染 UI 的)\n */\nfunction hasCreationMessages(messages: A2UIMessage[]): boolean {\n return messages.some(msg => msg.createSurface || msg.updateComponents);\n}\n\n/**\n * A2UI v0.9 + json-render Activity 渲染器组件\n */\nexport const A2UIJsonRenderActivityRenderer: React.FC<A2UIJsonRenderActivityRendererProps> = ({\n activityType,\n content,\n messageId,\n ext,\n registry,\n actionHandlers,\n debug = false,\n}) => {\n // 设置调试模式\n useEffect(() => {\n surfaceStateManager.setDebug(debug);\n }, [debug]);\n\n // 用于触发重渲染的版本号\n const [schemaVersion, setSchemaVersion] = useState(0);\n\n // 分析消息类型\n const { surfaceId, isUI, isDeletion, isCreation, messages } = useMemo(() => {\n const msgs = content.messages;\n if (!Array.isArray(msgs) || msgs.length === 0) {\n return { surfaceId: null, isUI: false, isDeletion: false, isCreation: false, messages: [] };\n }\n return {\n surfaceId: extractSurfaceId(msgs),\n isUI: isUIMessages(msgs),\n isDeletion: hasDeletionMessages(msgs),\n isCreation: hasCreationMessages(msgs),\n messages: msgs,\n };\n }, [content.messages]);\n\n // 处理消息并获取 Schema\n const initialSchema = useMemo<JsonRenderSchema | null>(() => {\n if (!surfaceId || messages.length === 0) {\n return null;\n }\n\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 处理消息:', {\n messageId,\n surfaceId,\n messagesCount: messages.length,\n messageTypes: messages.map(m => \n Object.keys(m).filter(k => ['createSurface', 'updateComponents', 'updateDataModel', 'deleteSurface'].includes(k))[0]\n ),\n isUI,\n isCreation,\n isDeletion,\n cachedSurfaces: surfaceStateManager.getAllSurfaceIds(),\n });\n }\n\n // 删除型消息:清理缓存\n if (isDeletion) {\n surfaceStateManager.deleteSurface(surfaceId);\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 删除 Surface:', surfaceId);\n }\n return null;\n }\n\n // 创建型消息:转换并注册\n if (isCreation) {\n const schema = convertA2UIMessagesToJsonRender(messages);\n if (schema) {\n // 提取 catalogId\n const catalogId = messages.find(m => m.createSurface)?.createSurface?.catalogId;\n surfaceStateManager.registerSurface(surfaceId, schema, catalogId);\n \n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 创建型消息,注册 Surface:', {\n surfaceId,\n elementsCount: Object.keys(schema.elements).length,\n data: schema.data,\n });\n }\n }\n return schema;\n }\n\n // 更新型消息:通过 SurfaceStateManager 更新数据\n for (const msg of messages) {\n if (msg.updateDataModel) {\n const { path, op, value } = msg.updateDataModel;\n const success = surfaceStateManager.updateData(surfaceId, path, op || 'replace', value);\n \n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 更新型消息,更新数据:', {\n surfaceId,\n path,\n op: op || 'replace',\n value,\n success,\n });\n }\n }\n }\n\n // 更新型消息不需要渲染,返回 null\n return null;\n }, [messages, surfaceId, isCreation, isDeletion, isUI, debug, messageId]);\n\n // 订阅状态变化的回调\n const handleSchemaUpdate = useCallback(() => {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 收到状态更新通知,触发重渲染');\n }\n setSchemaVersion(v => v + 1);\n }, [debug]);\n\n // 订阅 Surface 状态变化(仅当是创建型消息时)\n useEffect(() => {\n if (!isCreation || !surfaceId) {\n return;\n }\n\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 订阅 Surface 状态:', surfaceId);\n }\n\n const unsubscribe = surfaceStateManager.subscribe(surfaceId, handleSchemaUpdate);\n\n return () => {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 取消订阅 Surface 状态:', surfaceId);\n }\n unsubscribe();\n };\n }, [isCreation, surfaceId, handleSchemaUpdate, debug]);\n\n // 获取当前 Schema(考虑版本变化)\n const currentSchema = useMemo(() => {\n if (!isCreation || !surfaceId) {\n return null;\n }\n // schemaVersion 变化时从缓存获取最新 Schema\n return surfaceStateManager.getSchema(surfaceId) || initialSchema;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isCreation, surfaceId, initialSchema, schemaVersion]);\n\n // 非 UI 型消息不渲染(仅 updateDataModel 的消息)\n if (!isUI) {\n if (debug && messages.length > 0) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 纯数据更新消息,跳过渲染');\n }\n return null;\n }\n\n // 删除型消息:返回 null(UI 已被删除)\n if (isDeletion && !isCreation) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('[A2UI Adapter] 删除型消息,跳过渲染');\n }\n return null;\n }\n\n // 渲染 UI\n return (\n <JsonRenderActivityRenderer\n activityType={activityType}\n content={currentSchema}\n messageId={messageId}\n ext={ext}\n registry={registry}\n actionHandlers={actionHandlers}\n />\n );\n};\n\nexport default A2UIJsonRenderActivityRenderer;\n","/**\n * TDesign Input 组件适配 json-render\n * \n * 这是纯净的 json-render Input 组件,不包含 A2UI 协议绑定逻辑\n * 如需 A2UI 支持,请使用 a2uiRegistry 中的 A2UITextField\n */\n\nimport React from 'react';\nimport { Input, Space } from 'tdesign-react';\nimport type { InputProps } from 'tdesign-react';\nimport type { ComponentRenderProps } from '../types';\nimport { useData } from '../';\nimport { getByPath } from '@json-render/core';\n\n/**\n * json-render Input 组件(基础版本,不带数据绑定)\n */\nexport const JsonRenderInput: React.FC<ComponentRenderProps> = ({ element }) => {\n const {\n value,\n defaultValue,\n placeholder,\n disabled = false,\n readonly = false,\n size = 'medium',\n type = 'text',\n maxlength,\n clearable = false,\n status,\n onChange,\n onBlur,\n onFocus,\n onEnter,\n onClear,\n ...restProps\n } = element.props as InputProps;\n\n return (\n <Input\n value={value}\n defaultValue={defaultValue}\n placeholder={placeholder}\n disabled={disabled}\n readonly={readonly}\n size={size}\n type={type}\n maxlength={maxlength}\n clearable={clearable}\n status={status}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n onEnter={onEnter}\n onClear={onClear}\n {...restProps}\n />\n );\n};\n\nJsonRenderInput.displayName = 'JsonRenderInput';\n\n/**\n * json-render TextField 组件(带 label 和 valuePath 数据绑定)\n * \n * 这是标准 json-render 的 TextField,支持 valuePath 但不支持 A2UI 的 disabledPath\n * 如需完整 A2UI 支持,请使用 a2uiRegistry 中的 A2UITextField\n */\nexport const JsonRenderTextField: React.FC<ComponentRenderProps> = ({ element }) => {\n const {\n label,\n valuePath,\n placeholder,\n type = 'text',\n disabled = false,\n size = 'medium',\n ...restProps\n } = element.props as InputProps & {\n label?: string;\n valuePath?: string;\n };\n\n const { data, set } = useData();\n\n const value = valuePath ? (getByPath(data, valuePath) as string) ?? '' : '';\n\n const handleChange = (newValue: string) => {\n if (valuePath) {\n set(valuePath, newValue);\n }\n };\n\n if (label) {\n return (\n <Space direction=\"vertical\" size={4} style={{ width: '100%' }}>\n <label style={{ fontSize: '14px', fontWeight: 500 }}>{label}</label>\n <Input\n value={value}\n placeholder={placeholder}\n type={type}\n disabled={disabled}\n size={size}\n onChange={handleChange}\n {...restProps}\n />\n </Space>\n );\n }\n\n return (\n <Input\n value={value}\n placeholder={placeholder}\n type={type}\n disabled={disabled}\n size={size}\n onChange={handleChange}\n {...restProps}\n />\n );\n};\n\nJsonRenderTextField.displayName = 'JsonRenderTextField';\n\nexport default JsonRenderInput;\n","/**\n * A2UI 数据绑定 HOC\n * \n * 统一处理 A2UI 协议的标准字段:\n * - valuePath: 值的数据绑定路径(如 /userInfo/name)\n * - disabledPath: disabled 状态的数据绑定路径(如 /formDisabled)\n * - action.context: action 参数中的动态数据绑定\n * \n * 性能优化:\n * - 使用 React.memo + 精确值比较避免不必要渲染\n * - Action 参数延迟解析(触发时才计算)\n * - 使用 useRef 缓存回调函数避免重建\n * \n * 使用方式:\n * ```tsx\n * // 创建支持 A2UI 绑定的 Input\n * const A2UIInput = withA2UIBinding(Input, {\n * valueField: 'value',\n * onChangeField: 'onChange',\n * });\n * \n * // 创建支持 action 的 Button\n * const A2UIButton = withA2UIBinding(Button, {\n * supportsAction: true,\n * actionTrigger: 'onClick', // 默认\n * });\n * \n * // Input 支持 onEnter 触发 action\n * const A2UISearchInput = withA2UIBinding(Input, {\n * valueField: 'value',\n * onChangeField: 'onChange',\n * supportsAction: true,\n * actionTrigger: 'onEnter',\n * });\n * ```\n */\n\nimport React, { useCallback, useRef, memo, useMemo } from 'react';\nimport type { ComponentRenderProps } from '@json-render/react';\nimport { useData } from '../';\nimport { getByPath } from '@json-render/core';\nimport type { Action } from '@json-render/core';\n\n/**\n * A2UI 绑定配置\n */\nexport interface A2UIBindingConfig {\n /** 组件的值字段名,默认 'value' */\n valueField?: string;\n /** 组件的 onChange 字段名,默认 'onChange' */\n onChangeField?: string;\n /** 是否支持 action 绑定,默认 false */\n supportsAction?: boolean;\n /** \n * Action 触发事件名,默认 'onClick'\n * 可设置为 'onEnter'、'onChange' 等\n */\n actionTrigger?: string;\n}\n\n/**\n * 解析 action params 中的动态数据绑定\n * 将 { path: '/xxx' } 格式的引用替换为实际数据\n * \n * 性能优化:使用迭代替代递归,减少调用栈深度\n */\nfunction resolveActionParams(\n params: Record<string, unknown>,\n data: Record<string, unknown>,\n maxDepth = 10,\n): Record<string, unknown> {\n const resolved: Record<string, unknown> = {};\n \n // 使用栈迭代处理,避免深递归\n const stack: Array<{\n source: Record<string, unknown>;\n target: Record<string, unknown>;\n depth: number;\n }> = [{ source: params, target: resolved, depth: 0 }];\n \n while (stack.length > 0) {\n const { source, target, depth } = stack.pop()!;\n \n if (depth >= maxDepth) {\n // 防止无限递归\n Object.assign(target, source);\n continue;\n }\n \n for (const [key, value] of Object.entries(source)) {\n if (value && typeof value === 'object' && 'path' in value) {\n // 动态绑定:{ path: '/userInfo' } → 实际数据\n const pathValue = (value as { path: string }).path;\n target[key] = getByPath(data, pathValue);\n } else if (value && typeof value === 'object' && !Array.isArray(value)) {\n // 嵌套对象,加入栈处理\n const nestedTarget: Record<string, unknown> = {};\n target[key] = nestedTarget;\n stack.push({\n source: value as Record<string, unknown>,\n target: nestedTarget,\n depth: depth + 1,\n });\n } else {\n // 静态值直接保留\n target[key] = value;\n }\n }\n }\n \n return resolved;\n}\n\n/**\n * A2UI 数据绑定 HOC 内部组件\n * 处理实际的数据绑定逻辑\n */\ninterface A2UIBoundInnerProps<P> extends ComponentRenderProps {\n WrappedComponent: React.ComponentType<P>;\n valueField: string;\n onChangeField: string;\n supportsAction: boolean;\n actionTrigger: string;\n}\n\nfunction A2UIBoundInner<P extends Record<string, any>>({\n element,\n children,\n onAction,\n WrappedComponent,\n valueField,\n onChangeField,\n supportsAction,\n actionTrigger,\n}: A2UIBoundInnerProps<P>) {\n const { data, set } = useData();\n \n // 提取 A2UI 特有字段\n const {\n valuePath,\n disabledPath,\n action,\n disabled: staticDisabled,\n ...componentProps\n } = element.props as P & {\n valuePath?: string;\n disabledPath?: string;\n action?: string | Action;\n disabled?: boolean;\n };\n\n // 使用 ref 缓存 data,action 触发时获取最新值\n const dataRef = useRef(data);\n dataRef.current = data;\n\n // 提取绑定的值(只在真正需要的路径变化时才变)\n const boundValue = useMemo(() => {\n if (valuePath) {\n return getByPath(data, valuePath) ?? '';\n }\n return undefined;\n }, [valuePath, valuePath ? getByPath(data, valuePath) : undefined]);\n\n // 提取 disabled 状态\n const boundDisabled = useMemo(() => {\n if (disabledPath) {\n return Boolean(getByPath(data, disabledPath));\n }\n return staticDisabled ?? false;\n }, [disabledPath, disabledPath ? getByPath(data, disabledPath) : undefined, staticDisabled]);\n\n // 使用 ref 缓存 set 函数,避免 handleChange 重建\n const setRef = useRef(set);\n setRef.current = set;\n\n // 创建稳定的 onChange 处理器\n const handleChange = useCallback((newValue: unknown) => {\n if (valuePath) {\n setRef.current(valuePath, newValue);\n }\n }, [valuePath]);\n\n // 创建稳定的 action 处理器(延迟解析,触发时才获取最新 data)\n const handleAction = useCallback(() => {\n if (!action || !onAction) return;\n\n // 标准化 action 格式\n const actionObj: Action = typeof action === 'string'\n ? { name: action, params: {} }\n : action;\n\n // 使用最新的 data 解析参数\n const resolvedParams = actionObj.params\n ? resolveActionParams(actionObj.params as Record<string, unknown>, dataRef.current)\n : {};\n\n const resolvedAction: Action = {\n name: actionObj.name,\n params: resolvedParams,\n };\n\n onAction(resolvedAction);\n }, [action, onAction]);\n\n // 构建最终 props\n const finalProps = useMemo(() => {\n const props: any = {\n ...componentProps,\n disabled: boundDisabled,\n };\n\n // 如果有 valuePath,注入值和 onChange\n if (valuePath !== undefined) {\n props[valueField] = boundValue;\n props[onChangeField] = handleChange;\n }\n\n // 如果支持 action,注入到指定的触发事件\n if (supportsAction && action) {\n const originalHandler = componentProps[actionTrigger];\n props[actionTrigger] = (...args: unknown[]) => {\n // 先调用原始处理器\n if (typeof originalHandler === 'function') {\n originalHandler(...args);\n }\n // 再触发 action\n handleAction(...args);\n };\n }\n\n return props;\n }, [\n componentProps,\n boundDisabled,\n valuePath,\n valueField,\n boundValue,\n onChangeField,\n handleChange,\n supportsAction,\n action,\n actionTrigger,\n handleAction,\n ]);\n\n return (\n <WrappedComponent {...finalProps as P}>\n {children}\n </WrappedComponent>\n );\n}\n\n/**\n * A2UI 数据绑定 HOC\n * \n * 自动处理 A2UI 协议的标准字段,让原子组件保持纯净\n * \n * @param WrappedComponent 原始组件\n * @param config 绑定配置\n */\nexport function withA2UIBinding<P extends Record<string, any>>(\n WrappedComponent: React.ComponentType<P>,\n config: A2UIBindingConfig = {},\n): React.FC<ComponentRenderProps> {\n const {\n valueField = 'value',\n onChangeField = 'onChange',\n supportsAction = false,\n actionTrigger = 'onClick',\n } = config;\n\n const A2UIBoundComponent: React.FC<ComponentRenderProps> = (props) => {\n return (\n <A2UIBoundInner\n {...props}\n WrappedComponent={WrappedComponent}\n valueField={valueField}\n onChangeField={onChangeField}\n supportsAction={supportsAction}\n actionTrigger={actionTrigger}\n />\n );\n };\n\n A2UIBoundComponent.displayName = `withA2UIBinding(${WrappedComponent.displayName || WrappedComponent.name || 'Component'})`;\n\n // 使用 memo 包装,通过精确比较避免不必要渲染\n return memo(A2UIBoundComponent, (prevProps, nextProps) => {\n // element 引用相同,跳过渲染\n if (prevProps.element === nextProps.element) return true;\n \n // 比较关键字段\n const prevEl = prevProps.element;\n const nextEl = nextProps.element;\n \n if (prevEl.type !== nextEl.type) return false;\n if (prevEl.key !== nextEl.key) return false;\n \n // 比较 props(浅比较)\n const prevElProps = prevEl.props || {};\n const nextElProps = nextEl.props || {};\n const prevKeys = Object.keys(prevElProps);\n const nextKeys = Object.keys(nextElProps);\n \n if (prevKeys.length !== nextKeys.length) return false;\n \n for (const key of prevKeys) {\n if (prevElProps[key] !== nextElProps[key]) return false;\n }\n \n return true;\n });\n}\n\nexport default withA2UIBinding;\n","/**\n * A2UI 专用组件注册表\n * \n * 使用 withA2UIBinding HOC 包装原子组件,自动处理 A2UI 协议字段:\n * - valuePath: 值的数据绑定(如 /userInfo/name)\n * - disabledPath: disabled 状态的数据绑定(如 /formDisabled)\n * - action.context: action 参数中的动态数据绑定({ path: '/xxx' } 格式)\n * \n * 与 tdesignRegistry 的区别:\n * - tdesignRegistry: 纯净的 TDesign 组件,用于直接的 json-render schema\n * - a2uiRegistry: 支持 A2UI 协议的组件,用于 A2UI → json-render 转换后的渲染\n * \n * 使用方式:\n * ```tsx\n * // 业务使用 A2UI 协议时\n * const config = createA2UIJsonRenderActivityConfig({\n * registry: a2uiRegistry, // 内置 A2UI 组件\n * // 或扩展自定义组件\n * registry: createA2UIRegistry({\n * MyCustomComponent: withA2UIBinding(MyComponent, { supportsAction: true }),\n * }),\n * });\n * ```\n */\n\nimport React from 'react';\nimport { Input, Button, Space } from 'tdesign-react';\nimport type { InputProps, ButtonProps } from 'tdesign-react';\nimport type { ComponentRegistry } from '../renderer';\nimport { withA2UIBinding } from './a2ui-binding';\n\n// 导入纯净组件和布局组件(这些不需要 A2UI 绑定)\nimport { JsonRenderCard } from './card';\nimport { JsonRenderText } from './text';\nimport {\n JsonRenderRow,\n JsonRenderCol,\n JsonRenderSpace,\n JsonRenderColumn,\n JsonRenderDivider,\n} from './layout';\n\n// ==================== 基础组件包装器 ====================\n\n/**\n * 基础 Input 组件(用于 HOC 包装)\n * 接收标准 InputProps,由 HOC 注入 value/onChange/disabled\n */\nconst BaseInput: React.FC<InputProps & { label?: string }> = ({\n label,\n ...props\n}) => {\n if (label) {\n return (\n <Space direction=\"vertical\" size={4} style={{ width: '100%' }}>\n <label style={{ fontSize: '14px', fontWeight: 500 }}>{label}</label>\n <Input {...props} />\n </Space>\n );\n }\n return <Input {...props} />;\n};\n\nBaseInput.displayName = 'BaseInput';\n\n/**\n * 基础 Button 组件(用于 HOC 包装)\n * 接收标准 ButtonProps,由 HOC 注入 onClick/disabled\n */\nconst BaseButton: React.FC<ButtonProps & { label?: string }> = ({\n label,\n children,\n ...props\n}) => {\n const content = label || children;\n return <Button {...props}>{content}</Button>;\n};\n\nBaseButton.displayName = 'BaseButton';\n\n// ==================== A2UI 组件(通过 HOC 生成)====================\n\n/**\n * A2UI TextField 组件\n * 自动支持 valuePath/disabledPath 数据绑定\n */\nexport const A2UITextField = withA2UIBinding<InputProps & { label?: string }>(\n BaseInput,\n {\n valueField: 'value',\n onChangeField: 'onChange',\n supportsAction: false,\n },\n);\n\n/**\n * A2UI Button 组件\n * 自动支持 disabledPath 和 action.context 动态绑定\n */\nexport const A2UIButton = withA2UIBinding<ButtonProps & { label?: string }>(\n BaseButton,\n {\n supportsAction: true,\n },\n);\n\n// ==================== A2UI Registry ====================\n\n/**\n * A2UI 专用组件注册表\n * \n * 用于 A2UI 协议转换后的渲染,组件自动支持:\n * - valuePath: 值绑定到 dataModel\n * - disabledPath: disabled 状态绑定到 dataModel\n * - action.context: action 参数动态解析\n * \n * @example\n * ```tsx\n * import { a2uiRegistry } from './catalog/a2ui-registry';\n * \n * const config = createA2UIJsonRenderActivityConfig({\n * registry: a2uiRegistry, // 使用 A2UI 专用 registry\n * actionHandlers: { ... },\n * });\n * ```\n */\nexport const a2uiRegistry: ComponentRegistry = {\n // A2UI 绑定组件(通过 HOC 包装)\n TextField: A2UITextField,\n Button: A2UIButton,\n \n // 纯净组件(布局类不需要 A2UI 绑定)\n Card: JsonRenderCard,\n Text: JsonRenderText,\n Row: JsonRenderRow,\n Col: JsonRenderCol,\n Space: JsonRenderSpace,\n Column: JsonRenderColumn,\n Divider: JsonRenderDivider,\n};\n\n/**\n * 创建自定义 A2UI 组件注册表\n * \n * 基于 a2uiRegistry 扩展自定义组件\n * 自定义组件如需支持 A2UI 协议,请使用 withA2UIBinding 包装\n * \n * @example\n * ```tsx\n * import { createA2UIRegistry, withA2UIBinding } from '@tdesign-react/chat';\n * \n * // 创建支持 A2UI 的自定义组件\n * const A2UIDatePicker = withA2UIBinding(DatePicker, {\n * valueField: 'value',\n * onChangeField: 'onChange',\n * });\n * \n * const customRegistry = createA2UIRegistry({\n * DatePicker: A2UIDatePicker,\n * });\n * ```\n */\nexport function createA2UIRegistry(\n customComponents: ComponentRegistry,\n): ComponentRegistry {\n return {\n ...a2uiRegistry,\n ...customComponents,\n };\n}\n\nexport default a2uiRegistry;\n","/**\n * TDesign ComponentRegistry(React 组件注册表)\n * 用于 json-render 渲染层的组件映射\n * \n * 重要概念区分:\n * - ComponentRegistry(本文件):渲染层,映射组件名到 React 组件(传给 Renderer)\n * - Catalog(catalog.ts):约束层,定义组件 props schema 和 actions 白名单(给 AI/服务端)\n * \n * Registry 分类:\n * - tdesignRegistry: 纯净的 TDesign 组件,用于直接的 json-render schema\n * - a2uiRegistry: 支持 A2UI 协议的组件,自动处理 valuePath/disabledPath/action.context\n * \n * 详见:ARCHITECTURE.md\n */\n\nimport React from 'react';\nimport isEqual from 'react-fast-compare';\nimport type { ComponentRegistry, ComponentRenderProps } from '../renderer';\nimport { JsonRenderButton } from './button';\nimport { JsonRenderInput, JsonRenderTextField } from './input';\nimport { JsonRenderCard } from './card';\nimport { JsonRenderText } from './text';\nimport {\n JsonRenderRow,\n JsonRenderCol,\n JsonRenderSpace,\n JsonRenderColumn,\n JsonRenderDivider,\n} from './layout';\n\n/**\n * 高性能组件包装器\n * 使用 React.memo + react-fast-compare 实现深比较\n * \n * 原理:\n * - json-render 每次渲染都会创建新的 element 对象引用\n * - 默认的 React.memo 浅比较会认为 props 变化了\n * - 使用 react-fast-compare 进行高效深比较,只在内容真正变化时才重渲染\n * \n * 性能说明(来自 performance_suggestion.md):\n * - react-fast-compare 比 JSON.stringify 更快(短路比较)\n * - 发现第一个不同属性时立即停止,不会遍历整个对象\n * - 处理了循环引用等边缘情况\n */\nexport function withStableProps<P extends ComponentRenderProps>(\n Component: React.ComponentType<P>,\n): React.MemoExoticComponent<React.ComponentType<P>> {\n return React.memo(Component, (prevProps, nextProps) => {\n const prevElement = prevProps.element as any;\n const nextElement = nextProps.element as any;\n \n // 1. 引用相同,直接返回 true(不渲染)\n if (prevElement === nextElement) return true;\n \n // 2. 快速路径:id 或 type 不同,需要重渲染\n if (prevElement.id !== nextElement.id || prevElement.type !== nextElement.type) {\n return false;\n }\n \n // 3. 使用 react-fast-compare 进行高效深比较\n return isEqual(prevElement.props, nextElement.props);\n });\n}\n\n/**\n * TDesign 内置组件注册表(渲染层)\n * \n * 这是框架内置的原子组件集合,提供基础 UI 渲染能力\n * 业务层可以通过 createCustomRegistry 扩展自定义组件\n * \n * 使用方式:\n * ```tsx\n * import { tdesignRegistry } from '@tdesign-react/chat';\n * \n * const config = createJsonRenderActivityConfig({\n * registry: tdesignRegistry,\n * actionHandlers: { ... },\n * });\n * ```\n * \n * Schema 示例:\n * ```json\n * {\n * \"root\": \"btn1\",\n * \"elements\": {\n * \"btn1\": {\n * \"key\": \"btn1\",\n * \"type\": \"Button\",\n * \"props\": {\n * \"variant\": \"base\",\n * \"theme\": \"primary\",\n * \"children\": \"点击我\",\n * \"action\": \"submit\"\n * }\n * }\n * }\n * }\n * ```\n */\nexport const tdesignRegistry: ComponentRegistry = {\n // 基础组件\n Button: JsonRenderButton,\n Input: JsonRenderInput,\n TextField: JsonRenderTextField,\n Card: JsonRenderCard,\n Text: JsonRenderText,\n\n // 布局组件\n Row: JsonRenderRow,\n Col: JsonRenderCol,\n Space: JsonRenderSpace,\n Column: JsonRenderColumn,\n Divider: JsonRenderDivider,\n\n // 别名(兼容不同命名风格)\n button: JsonRenderButton,\n input: JsonRenderInput,\n textfield: JsonRenderTextField,\n card: JsonRenderCard,\n text: JsonRenderText,\n row: JsonRenderRow,\n col: JsonRenderCol,\n space: JsonRenderSpace,\n column: JsonRenderColumn,\n divider: JsonRenderDivider,\n};\n\n/**\n * createCustomRegistry 配置选项\n */\nexport interface CreateCustomRegistryOptions {\n /**\n * 是否自动包装组件以优化性能\n * 使用 React.memo + react-fast-compare 深比较 element.props\n * \n * @default true\n */\n enableStableProps?: boolean;\n}\n\n/**\n * 创建自定义组件注册表(扩展内置组件)\n * \n * 用于渲染层:扩展自定义业务组件的 React 实现\n * \n * 性能优化(默认开启):\n * - 自动使用 withStableProps 包装组件\n * - 使用 react-fast-compare 进行高效深比较\n * - 业务组件无需手动写 React.memo 比较函数\n * \n * @example\n * ```tsx\n * import { createCustomRegistry } from '@tdesign-react/chat';\n * import type { ComponentRenderProps } from '@json-render/react';\n * \n * // 定义自定义组件(无需手动 React.memo)\n * const StatusCard: React.FC<ComponentRenderProps> = ({ element }) => (\n * <div className=\"status-card\">{element.props.status}</div>\n * );\n * \n * const ProgressBar: React.FC<ComponentRenderProps> = ({ element }) => (\n * <div className=\"progress-bar\" style={{ width: `${element.props.percentage}%` }} />\n * );\n * \n * // 扩展 registry(自动优化性能)\n * const customRegistry = createCustomRegistry({\n * StatusCard,\n * ProgressBar,\n * });\n * \n * // 禁用自动优化(如果需要自己控制)\n * const customRegistry = createCustomRegistry(\n * { StatusCard, ProgressBar },\n * { enableStableProps: false }\n * );\n * ```\n * \n * 注意:\n * - 这里只定义渲染层的组件映射\n * - 约束层(Catalog)需要使用 createCustomCatalog 定义(见 catalog.ts)\n * - 两者需要保持组件名称一致\n */\nexport function createCustomRegistry(\n customComponents: ComponentRegistry,\n options: CreateCustomRegistryOptions = {},\n): ComponentRegistry {\n const { enableStableProps = true } = options;\n\n // 如果启用性能优化,自动包装组件\n const processedComponents: ComponentRegistry = {};\n \n if (enableStableProps) {\n for (const [name, Component] of Object.entries(customComponents)) {\n processedComponents[name] = withStableProps(Component as React.ComponentType<ComponentRenderProps>);\n }\n } else {\n Object.assign(processedComponents, customComponents);\n }\n\n return {\n ...tdesignRegistry,\n ...processedComponents,\n };\n}\n\n// ==================== 重新导出 Catalog(约束层)====================\n// 从 ../catalog.ts 重新导出,避免路径混淆\nexport {\n tdesignCatalog,\n createCustomCatalog,\n tdesignComponentList,\n tdesignActionList,\n} from '../catalog';\n\n// ==================== 重新导出 A2UI Registry ====================\n// A2UI 专用组件,支持 valuePath/disabledPath/action.context 自动绑定\nexport { a2uiRegistry, createA2UIRegistry, A2UITextField, A2UIButton } from './a2ui-registry';\n\n// ==================== 重新导出 A2UI Binding HOC ====================\nexport { withA2UIBinding } from './a2ui-binding';\nexport type { A2UIBindingConfig } from './a2ui-binding';\n\nexport default tdesignRegistry;\n","/**\n * json-render Activity 配置工厂函数\n * 便捷创建 ActivityConfig 用于注册\n */\n\nimport React from 'react';\nimport type { ComponentRegistry } from './renderer';\nimport type { ActivityConfig } from '../activity/types';\nimport type { JsonRenderActivityProps } from './types';\nimport { JsonRenderActivityRenderer } from './JsonRenderActivityRenderer';\nimport { A2UIJsonRenderActivityRenderer } from './A2UIJsonRenderActivityRenderer';\nimport { tdesignRegistry } from './catalog/index';\nimport { a2uiRegistry } from './catalog/a2ui-registry';\n\n/**\n * json-render Activity 配置选项\n */\nexport interface JsonRenderActivityConfigOptions {\n /** Activity 类型标识,默认 'json-render' */\n activityType?: string;\n /** 组件注册表,默认使用 tdesignRegistry */\n registry?: ComponentRegistry;\n /** \n * Action 处理器映射表\n * \n * 重要:json-render 采用预定义 action 模式\n * - AI/服务端只能生成在此预定义的 action 名称\n * - 每个 action 对应一个具体的处理函数\n * - 这确保了生成式 UI 的安全性和可控性\n * \n * @example\n * ```tsx\n * actionHandlers: {\n * // 表单提交\n * submit: async (params) => {\n * await api.submitForm(params);\n * MessagePlugin.success('提交成功');\n * },\n * \n * // 表单重置\n * reset: async (params) => {\n * // 注意:如需清空表单,应在组件内部使用 useData().update()\n * MessagePlugin.info('表单已重置');\n * },\n * \n * // 删除操作\n * delete: async (params) => {\n * await api.deleteItem(params.id);\n * },\n * \n * // 刷新数据\n * refresh: async () => {\n * await refetchData();\n * }\n * }\n * ```\n */\n actionHandlers?: Record<string, (params: Record<string, unknown>) => void | Promise<void>>;\n /** 显示调试信息 */\n debug?: boolean;\n /** 描述信息 */\n description?: string;\n}\n\n/**\n * 创建 json-render Activity 配置\n * \n * @example\n * 基础用法 - 预定义 action handlers\n * ```tsx\n * const jsonRenderConfig = createJsonRenderActivityConfig({\n * activityType: 'json-render',\n * actionHandlers: {\n * submit: async (params) => {\n * console.log('提交表单:', params);\n * await api.submit(params);\n * MessagePlugin.success('提交成功');\n * },\n * reset: async (params) => {\n * MessagePlugin.info('表单已重置');\n * },\n * delete: async (params) => {\n * await api.delete(params.id);\n * }\n * },\n * });\n * \n * useAgentActivity(jsonRenderConfig);\n * ```\n * \n * @example\n * 结合 ChatEngine 发送消息到服务端\n * ```tsx\n * const jsonRenderConfig = createJsonRenderActivityConfig({\n * actionHandlers: {\n * submit: async (params) => {\n * // 发送到服务端处理\n * await chatEngine.sendAIMessage({\n * params: { userActionMessage: { name: 'submit', params } },\n * sendRequest: true,\n * });\n * },\n * reset: async (params) => {\n * // 本地处理,不发送到服务端\n * MessagePlugin.info('已重置');\n * },\n * },\n * });\n * ```\n * \n * @example\n * 配合自定义组件注册表\n * ```tsx\n * import { createCustomRegistry } from './catalog';\n * \n * const jsonRenderConfig = createJsonRenderActivityConfig({\n * registry: createCustomRegistry({\n * MyCustomComponent: MyComponentRenderer,\n * }),\n * actionHandlers: {\n * custom_action: async (params) => {\n * // 处理自定义操作\n * },\n * },\n * });\n * ```\n */\nexport function createJsonRenderActivityConfig(\n options: JsonRenderActivityConfigOptions = {},\n): ActivityConfig<JsonRenderActivityProps['content']> {\n const {\n activityType = 'json-render',\n registry = tdesignRegistry,\n actionHandlers = {},\n debug = false,\n description = 'json-render 动态 UI 渲染器',\n } = options;\n\n return {\n activityType,\n component: React.memo((props: JsonRenderActivityProps) => (\n <JsonRenderActivityRenderer\n {...props}\n registry={registry}\n actionHandlers={actionHandlers}\n debug={debug}\n />\n )),\n description,\n };\n}\n\n/**\n * 默认 json-render Activity 配置\n * 使用默认 TDesign Catalog,适用于大多数场景\n */\nexport const defaultJsonRenderActivityConfig = createJsonRenderActivityConfig();\n\n/**\n * 创建 A2UI + json-render Activity 配置\n * 支持将 A2UI 协议转换为 json-render Schema 渲染\n * \n * 注意:默认使用 a2uiRegistry,自动支持 valuePath/disabledPath/action.context 绑定\n * \n * @example\n * ```tsx\n * const a2uiJsonRenderConfig = createA2UIJsonRenderActivityConfig({\n * activityType: 'a2ui-json-render',\n * actionHandlers: {\n * submit: async (params) => {\n * console.log('提交:', params);\n * },\n * cancel: async (params) => {\n * console.log('取消');\n * },\n * },\n * });\n * \n * useAgentActivity(a2uiJsonRenderConfig);\n * ```\n */\nexport function createA2UIJsonRenderActivityConfig(\n options: JsonRenderActivityConfigOptions = {},\n): ActivityConfig<any> {\n const {\n activityType = 'a2ui-json-render',\n registry = a2uiRegistry, // A2UI 默认使用 a2uiRegistry\n actionHandlers = {},\n debug = false,\n description = 'A2UI + json-render 适配渲染器',\n } = options;\n\n return {\n activityType,\n component: React.memo((props: any) => (\n <A2UIJsonRenderActivityRenderer\n {...props}\n registry={registry}\n actionHandlers={actionHandlers}\n debug={debug}\n />\n )),\n description,\n };\n}\n\n/**\n * 默认 A2UI + json-render Activity 配置\n */\nexport const defaultA2UIJsonRenderActivityConfig = createA2UIJsonRenderActivityConfig();\n\nexport default createJsonRenderActivityConfig;\n"],"names":["hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isView","equal","a","b","_typeof","constructor","length","i","keys","Array","isArray","it","size","entries","next","done","has","value","get","RegExp","source","flags","valueOf","Object","prototype","toString","hasOwnProperty","call","$$typeof","reactFastCompare","isEqual","error","message","match","console","warn","JsonRenderActivityRendererInner","activityType","_ref","content","messageId","registry","_ref$actionHandlers","actionHandlers","isValidSchema","root","elements","renderData","useMemo","data","React","createElement","DataProvider","initialData","VisibilityProvider","ActionProvider","handlers","Renderer","tree","JsonRenderActivityRenderer","memo","prevProps","nextProps","extractSurfaceId","messages","_iterator","_createForOfIteratorHelper","_step","s","n","msg","createSurface","surfaceId","updateComponents","updateDataModel","deleteSurface","err","e","f","isUIMessages","some","hasDeletionMessages","hasCreationMessages","A2UIJsonRenderActivityRenderer","ext","_ref$debug","debug","useEffect","surfaceStateManager","setDebug","_useState","useState","_useState2","_slicedToArray","schemaVersion","setSchemaVersion","_useMemo","msgs","isUI","isDeletion","isCreation","initialSchema","log","messagesCount","messageTypes","map","m","filter","k","includes","cachedSurfaces","getAllSurfaceIds","schema","convertA2UIMessagesToJsonRender","_messages$find","catalogId","find","registerSurface","elementsCount","_iterator2","_step2","_msg$updateDataModel","path","op","success","updateData","handleSchemaUpdate","useCallback","v","unsubscribe","subscribe","currentSchema","getSchema","JsonRenderInput","element","_element$props","props","defaultValue","placeholder","_element$props$disabl","disabled","_element$props$readon","readonly","_element$props$size","_element$props$type","type","maxlength","_element$props$cleara","clearable","status","onChange","onBlur","onFocus","onEnter","onClear","restProps","_objectWithoutProperties","_excluded","Input","_objectSpread","displayName","JsonRenderTextField","_ref2","_getByPath","_element$props2","label","valuePath","_element$props2$type","_element$props2$disab","_element$props2$size","_excluded2","_useData","useData","set","getByPath","handleChange","newValue","Space","direction","style","width","fontSize","fontWeight","resolveActionParams","params","maxDepth","arguments","undefined","resolved","stack","target","depth","_stack$pop","pop","assign","_i","_Object$entries","_Object$entries$_i","key","pathValue","nestedTarget","push","A2UIBoundInner","children","onAction","WrappedComponent","valueField","onChangeField","supportsAction","actionTrigger","disabledPath","action","staticDisabled","componentProps","dataRef","useRef","current","boundValue","boundDisabled","Boolean","setRef","handleAction","actionObj","name","resolvedParams","resolvedAction","finalProps","originalHandler","apply","withA2UIBinding","config","_config$valueField","_config$onChangeField","_config$supportsActio","_config$actionTrigger","A2UIBoundComponent","concat","prevEl","nextEl","prevElProps","nextElProps","prevKeys","nextKeys","_i2","_prevKeys","BaseInput","BaseButton","Button","A2UITextField","A2UIButton","a2uiRegistry","TextField","Card","JsonRenderCard","Text","JsonRenderText","Row","JsonRenderRow","Col","JsonRenderCol","JsonRenderSpace","Column","JsonRenderColumn","Divider","JsonRenderDivider","createA2UIRegistry","customComponents","withStableProps","Component","prevElement","nextElement","id","tdesignRegistry","JsonRenderButton","button","input","textfield","card","text","row","col","space","column","divider","createCustomRegistry","options","_options$enableStable","enableStableProps","processedComponents","createJsonRenderActivityConfig","_options$activityType","_options$registry","_options$actionHandle","_options$debug","_options$description","description","component","defaultJsonRenderActivityConfig","createA2UIJsonRenderActivityConfig","_options$activityType2","_options$registry2","_options$actionHandle2","_options$debug2","_options$description2","defaultA2UIJsonRenderActivityConfig"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.6
2
+ * tdesign v1.0.2-alpha.15
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.6
2
+ * tdesign v1.0.2-alpha.15
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.6
2
+ * tdesign v1.0.2-alpha.15
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.6
2
+ * tdesign v1.0.2-alpha.15
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -0,0 +1,196 @@
1
+ /**
2
+ * A2UI Activity 渲染器
3
+ * 将 A2UI v0.9 协议数据作为 Activity 进行渲染
4
+ *
5
+ * 支持的消息格式:
6
+ * 1. A2UI v0.9 原生格式(createSurface、updateComponents、updateDataModel、deleteSurface)
7
+ * 2. 简化的 surface 格式(向后兼容)
8
+ *
9
+ * 使用方式:
10
+ * 1. 通过 useAgentActivity 注册此组件
11
+ * 2. 后端发送 ACTIVITY_SNAPSHOT/ACTIVITY_DELTA 事件,activityType 为 'a2ui-surface'
12
+ * 3. content 中包含 A2UI 协议消息
13
+ */
14
+ import React from 'react';
15
+ import type { A2UIServerMessage, A2UIComponentBase, A2UIAction, ActionHandler, ActionContext, SkeletonHint } from '../../core/a2ui';
16
+ import type { ComponentRegistry } from '../../hooks/a2ui/A2UIContext';
17
+ /**
18
+ * UserAction 消息格式(A2UI 0.9 规范)
19
+ * 用于发送给服务端的用户操作消息
20
+ */
21
+ export interface UserActionMessage {
22
+ /** Action 名称 */
23
+ name: string;
24
+ /** 触发 Action 的 Surface ID */
25
+ surfaceId: string;
26
+ /** 触发 Action 的组件 ID */
27
+ sourceComponentId: string;
28
+ /** 时间戳 */
29
+ timestamp: string;
30
+ /** 解析后的上下文数据(数据绑定路径已解析为实际值) */
31
+ context: Record<string, unknown>;
32
+ }
33
+ /**
34
+ * Action 处理结果
35
+ * 返回给业务层,由业务层决定如何处理
36
+ */
37
+ export interface ActionResult {
38
+ /** 构造好的 userAction 消息 */
39
+ userActionMessage: UserActionMessage;
40
+ /** 原始 Action 定义 */
41
+ action: A2UIAction;
42
+ /** Action 上下文 */
43
+ actionContext?: ActionContext;
44
+ }
45
+ /**
46
+ * Action 处理回调
47
+ * 业务层通过此回调接收解析后的 Action 数据,自行决定是否发送请求
48
+ */
49
+ export type OnActionCallback = (result: ActionResult) => void | Promise<void>;
50
+ /**
51
+ * 创建 A2UI 0.9 协议标准的 Action 处理器
52
+ *
53
+ * 职责:
54
+ * 1. 解析 Action 中的数据绑定路径
55
+ * 2. 构造标准的 UserActionMessage
56
+ * 3. 将处理结果传递给业务层回调
57
+ *
58
+ * @param onAction 业务层回调,接收解析后的 ActionResult
59
+ * @returns ActionHandler
60
+ */
61
+ export declare function createA2UIActionHandler(onAction: OnActionCallback): ActionHandler;
62
+ /**
63
+ * A2UI Activity Content 类型
64
+ * 支持 A2UI v0.9 原生格式和简化格式
65
+ */
66
+ export interface A2UIActivityContent {
67
+ /** A2UI v0.9 消息列表(标准名称) */
68
+ messages?: A2UIServerMessage[];
69
+ /** A2UI v0.9 消息列表(别名,向后兼容) */
70
+ operations?: A2UIServerMessage[];
71
+ /** 简化模式:单个 Surface 定义 */
72
+ surface?: {
73
+ id?: string;
74
+ root?: A2UIComponentBase;
75
+ data?: Record<string, unknown>;
76
+ skeletonHint?: SkeletonHint;
77
+ };
78
+ /** Surface ID(用于简化模式) */
79
+ surfaceId?: string;
80
+ }
81
+ /**
82
+ * 增量信息类型
83
+ */
84
+ export interface DeltaInfo {
85
+ fromIndex: number;
86
+ toIndex: number;
87
+ }
88
+ export interface A2UIActivityRendererProps {
89
+ /** Activity 类型 */
90
+ activityType?: string;
91
+ /** Activity 内容数据 */
92
+ content: A2UIActivityContent;
93
+ /** 关联的消息 ID */
94
+ messageId: string;
95
+ /** 自定义组件注册表 */
96
+ registry?: ComponentRegistry;
97
+ /** Action 处理回调 */
98
+ onAction?: ActionHandler;
99
+ /**
100
+ * 加载中占位
101
+ * - ReactNode: 自定义骨架屏组件
102
+ * - true: 使用服务端 skeletonHint 自动渲染骨架屏
103
+ */
104
+ loading?: React.ReactNode | boolean;
105
+ /** 自定义类名 */
106
+ className?: string;
107
+ /** 自定义样式 */
108
+ style?: React.CSSProperties;
109
+ /** 增量信息(由 AG-UI adapter 提供) */
110
+ deltaInfo?: DeltaInfo;
111
+ }
112
+ /**
113
+ * A2UI Activity 渲染器组件
114
+ */
115
+ export declare const A2UIActivityRenderer: React.FC<A2UIActivityRendererProps>;
116
+ /**
117
+ * A2UI Activity 配置选项
118
+ */
119
+ export interface A2UIActivityConfigOptions {
120
+ /** Activity 类型标识 */
121
+ activityType?: string;
122
+ /** 自定义组件注册表 */
123
+ registry?: ComponentRegistry;
124
+ /**
125
+ * Action 处理回调(推荐使用)
126
+ *
127
+ * 接收解析后的 ActionResult,包含:
128
+ * - userActionMessage: 构造好的标准消息,可直接发送给服务端
129
+ * - action: 原始 Action 定义
130
+ * - actionContext: Action 上下文(包含 getData、updateData 等方法)
131
+ *
132
+ * 业务层自行决定:
133
+ * 1. 是否需要发送请求到服务端
134
+ * 2. 是否需要本地处理(如 reset 操作)
135
+ * 3. 是否需要更新本地状态
136
+ *
137
+ * @example
138
+ * ```tsx
139
+ * createA2UIActivityConfig({
140
+ * onAction: async ({ userActionMessage, action, actionContext }) => {
141
+ * // 根据 action.name 决定处理方式
142
+ * if (action.name === 'reset') {
143
+ * // 本地处理,不发送请求
144
+ * actionContext?.updateData('/', initialData);
145
+ * return;
146
+ * }
147
+ *
148
+ * // 发送请求到服务端
149
+ * await chatEngine.sendAIMessage({
150
+ * params: { userActionMessage },
151
+ * sendRequest: true,
152
+ * });
153
+ * }
154
+ * })
155
+ * ```
156
+ */
157
+ onAction?: OnActionCallback;
158
+ /** 加载中占位 */
159
+ loading?: React.ReactNode | boolean;
160
+ }
161
+ /**
162
+ * 创建 A2UI Activity 配置
163
+ *
164
+ * @example
165
+ * ```tsx
166
+ * const { chatEngine } = useChat({ ... });
167
+ *
168
+ * const a2uiConfig = useMemo(() => createA2UIActivityConfig({
169
+ * onAction: async ({ userActionMessage, action }) => {
170
+ * // 本地操作不发请求
171
+ * if (action.name === 'reset') return;
172
+ *
173
+ * // 其他操作发送到服务端
174
+ * await chatEngine.sendAIMessage({
175
+ * params: { userActionMessage },
176
+ * sendRequest: true,
177
+ * });
178
+ * }
179
+ * }), [chatEngine]);
180
+ *
181
+ * useAgentActivity(a2uiConfig);
182
+ * ```
183
+ */
184
+ export declare function createA2UIActivityConfig(options?: A2UIActivityConfigOptions): {
185
+ activityType: string;
186
+ component: (props: {
187
+ activityType: string;
188
+ content: A2UIActivityContent;
189
+ messageId: string;
190
+ ext?: {
191
+ deltaInfo?: DeltaInfo;
192
+ };
193
+ }) => import("react/jsx-runtime").JSX.Element;
194
+ description: string;
195
+ };
196
+ export default A2UIActivityRenderer;