@tdesign-react/chat 1.1.0-alpha.1 → 1.1.0-alpha.11

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 (324) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/README.md +76 -22
  3. package/es/_chunks/dep-076af7c3.js +438 -0
  4. package/es/_chunks/dep-076af7c3.js.map +1 -0
  5. package/es/_chunks/dep-1007ac80.js +205 -0
  6. package/es/_chunks/dep-1007ac80.js.map +1 -0
  7. package/es/_chunks/dep-16520c2b.js +1247 -0
  8. package/es/_chunks/dep-16520c2b.js.map +1 -0
  9. package/es/_chunks/dep-1743bd61.js +438 -0
  10. package/es/_chunks/dep-1743bd61.js.map +1 -0
  11. package/es/_chunks/dep-1ca64fef.js +1247 -0
  12. package/es/_chunks/dep-1ca64fef.js.map +1 -0
  13. package/es/_chunks/dep-24472232.js +839 -0
  14. package/es/_chunks/dep-24472232.js.map +1 -0
  15. package/es/_chunks/dep-3864b369.js +839 -0
  16. package/es/_chunks/dep-3864b369.js.map +1 -0
  17. package/es/_chunks/dep-3e40d789.js +169 -0
  18. package/es/_chunks/dep-3e40d789.js.map +1 -0
  19. package/es/_chunks/dep-4dedfbef.js +438 -0
  20. package/es/_chunks/dep-4dedfbef.js.map +1 -0
  21. package/es/_chunks/dep-56f5e08e.js +448 -0
  22. package/es/_chunks/dep-56f5e08e.js.map +1 -0
  23. package/es/_chunks/dep-5b6b17d0.js +169 -0
  24. package/es/_chunks/dep-5b6b17d0.js.map +1 -0
  25. package/es/_chunks/dep-688e4aaa.js +438 -0
  26. package/es/_chunks/dep-688e4aaa.js.map +1 -0
  27. package/es/_chunks/dep-870f0d35.js +839 -0
  28. package/es/_chunks/dep-870f0d35.js.map +1 -0
  29. package/es/_chunks/dep-96eca06f.js +169 -0
  30. package/es/_chunks/dep-96eca06f.js.map +1 -0
  31. package/es/_chunks/dep-ba3bd553.js +169 -0
  32. package/es/_chunks/dep-ba3bd553.js.map +1 -0
  33. package/es/_chunks/dep-bcb234a1.js +839 -0
  34. package/es/_chunks/dep-bcb234a1.js.map +1 -0
  35. package/es/_chunks/dep-de8ac730.js +1247 -0
  36. package/es/_chunks/dep-de8ac730.js.map +1 -0
  37. package/es/_chunks/dep-e9dbff09.js +1247 -0
  38. package/es/_chunks/dep-e9dbff09.js.map +1 -0
  39. package/es/_chunks/dep-ebc4cf30.js +1247 -0
  40. package/es/_chunks/dep-ebc4cf30.js.map +1 -0
  41. package/es/_chunks/dep-f691a67e.js +438 -0
  42. package/es/_chunks/dep-f691a67e.js.map +1 -0
  43. package/es/_chunks/dep-f8016301.js +169 -0
  44. package/es/_chunks/dep-f8016301.js.map +1 -0
  45. package/es/_util/reactify.js +33 -13
  46. package/es/_util/reactify.js.map +1 -1
  47. package/es/_util/useDynamicStyle.js +1 -1
  48. package/es/attachments/index.js +1 -1
  49. package/es/chat-actionbar/index.d.ts +13 -4
  50. package/es/chat-actionbar/index.js +35 -5
  51. package/es/chat-actionbar/index.js.map +1 -1
  52. package/es/chat-engine/components/activity/index.d.ts +1 -2
  53. package/es/chat-engine/components/activity/index.js +11 -5
  54. package/es/chat-engine/components/activity/index.js.map +1 -1
  55. package/es/chat-engine/components/activity/registry.d.ts +6 -40
  56. package/es/chat-engine/components/activity/registry.js +23 -77
  57. package/es/chat-engine/components/activity/registry.js.map +1 -1
  58. package/es/chat-engine/components/activity/render.d.ts +4 -0
  59. package/es/chat-engine/components/activity/render.js +34 -71
  60. package/es/chat-engine/components/activity/render.js.map +1 -1
  61. package/es/chat-engine/components/activity/types.d.ts +0 -3
  62. package/es/chat-engine/components/activity/types.js +1 -1
  63. package/es/chat-engine/components/index.js +37 -23
  64. package/es/chat-engine/components/index.js.map +1 -1
  65. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js +2 -2
  66. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js +2 -2
  67. package/es/chat-engine/components/json-render/SurfaceStateManager.js +1 -1
  68. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js +1 -1
  69. package/es/chat-engine/components/json-render/adapters/a2ui-types.js +1 -1
  70. package/es/chat-engine/components/json-render/adapters/index.js +1 -1
  71. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js +2 -2
  72. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js +2 -2
  73. package/es/chat-engine/components/json-render/catalog/atomic/button.d.ts +14 -0
  74. package/es/chat-engine/components/json-render/catalog/atomic/button.js +71 -0
  75. package/es/chat-engine/components/json-render/catalog/atomic/button.js.map +1 -0
  76. package/es/chat-engine/components/json-render/catalog/atomic/card.d.ts +11 -0
  77. package/es/chat-engine/components/json-render/catalog/atomic/card.js +57 -0
  78. package/es/chat-engine/components/json-render/catalog/atomic/card.js.map +1 -0
  79. package/es/chat-engine/components/json-render/catalog/atomic/input.d.ts +20 -0
  80. package/es/chat-engine/components/json-render/catalog/atomic/input.js +76 -0
  81. package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -0
  82. package/es/chat-engine/components/json-render/catalog/atomic/layout.d.ts +44 -0
  83. package/es/chat-engine/components/json-render/catalog/atomic/layout.js +129 -0
  84. package/es/chat-engine/components/json-render/catalog/atomic/layout.js.map +1 -0
  85. package/es/chat-engine/components/json-render/catalog/atomic/text.d.ts +11 -0
  86. package/es/chat-engine/components/json-render/catalog/atomic/text.js +31 -0
  87. package/es/chat-engine/components/json-render/catalog/atomic/text.js.map +1 -0
  88. package/es/chat-engine/components/json-render/catalog/button.js +1 -1
  89. package/es/chat-engine/components/json-render/catalog/card.js +1 -1
  90. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.d.ts +614 -0
  91. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +779 -0
  92. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js.map +1 -0
  93. package/es/chat-engine/components/json-render/catalog/index.d.ts +2 -1
  94. package/es/chat-engine/components/json-render/catalog/index.js +3 -3
  95. package/es/chat-engine/components/json-render/catalog/input.js +2 -2
  96. package/es/chat-engine/components/json-render/catalog/layout.js +1 -1
  97. package/es/chat-engine/components/json-render/catalog/text.js +1 -1
  98. package/es/chat-engine/components/json-render/catalog.d.ts +65 -0
  99. package/es/chat-engine/components/json-render/catalog.js +634 -2
  100. package/es/chat-engine/components/json-render/catalog.js.map +1 -1
  101. package/es/chat-engine/components/json-render/config.js +2 -2
  102. package/es/chat-engine/components/json-render/contexts/actions.d.ts +5 -0
  103. package/es/chat-engine/components/json-render/contexts/actions.js +39 -16
  104. package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -1
  105. package/es/chat-engine/components/json-render/contexts/data.d.ts +99 -7
  106. package/es/chat-engine/components/json-render/contexts/data.js +155 -76
  107. package/es/chat-engine/components/json-render/contexts/data.js.map +1 -1
  108. package/es/chat-engine/components/json-render/contexts/index.d.ts +4 -0
  109. package/es/chat-engine/components/json-render/contexts/index.js +27 -0
  110. package/es/chat-engine/components/json-render/contexts/index.js.map +1 -0
  111. package/es/chat-engine/components/json-render/contexts/store.d.ts +67 -0
  112. package/es/chat-engine/components/json-render/contexts/store.js +104 -0
  113. package/es/chat-engine/components/json-render/contexts/store.js.map +1 -0
  114. package/es/chat-engine/components/json-render/contexts/tree.d.ts +44 -0
  115. package/es/chat-engine/components/json-render/contexts/tree.js +78 -0
  116. package/es/chat-engine/components/json-render/contexts/tree.js.map +1 -0
  117. package/es/chat-engine/components/json-render/contexts/validation.js +13 -5
  118. package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -1
  119. package/es/chat-engine/components/json-render/contexts/visibility.d.ts +12 -2
  120. package/es/chat-engine/components/json-render/contexts/visibility.js +32 -22
  121. package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -1
  122. package/es/chat-engine/components/json-render/engine.js +1 -1
  123. package/es/chat-engine/components/json-render/index.d.ts +9 -30
  124. package/es/chat-engine/components/json-render/index.js +59 -19
  125. package/es/chat-engine/components/json-render/index.js.map +1 -1
  126. package/es/chat-engine/components/json-render/performance.js +1 -1
  127. package/es/chat-engine/components/json-render/registry/a2ui-binding.d.ts +64 -0
  128. package/es/chat-engine/components/json-render/registry/a2ui-binding.js +76 -0
  129. package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -0
  130. package/es/chat-engine/components/json-render/registry/a2ui-registry.d.ts +78 -0
  131. package/es/chat-engine/components/json-render/registry/a2ui-registry.js +76 -0
  132. package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -0
  133. package/es/chat-engine/components/json-render/registry/config.d.ts +142 -0
  134. package/es/chat-engine/components/json-render/registry/config.js +76 -0
  135. package/es/chat-engine/components/json-render/registry/config.js.map +1 -0
  136. package/es/chat-engine/components/json-render/registry/index.d.ts +137 -0
  137. package/es/chat-engine/components/json-render/registry/index.js +76 -0
  138. package/es/chat-engine/components/json-render/registry/index.js.map +1 -0
  139. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.d.ts +35 -0
  140. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +271 -0
  141. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -0
  142. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.d.ts +44 -0
  143. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +63 -0
  144. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js.map +1 -0
  145. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.d.ts +44 -0
  146. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +131 -0
  147. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js.map +1 -0
  148. package/es/chat-engine/components/json-render/renderer/_index.d.ts +71 -0
  149. package/es/chat-engine/components/json-render/renderer/_index.js +133 -0
  150. package/es/chat-engine/components/json-render/renderer/_index.js.map +1 -0
  151. package/es/chat-engine/components/json-render/renderer/index.d.ts +71 -0
  152. package/es/chat-engine/components/json-render/renderer/index.js +125 -0
  153. package/es/chat-engine/components/json-render/renderer/index.js.map +1 -0
  154. package/es/chat-engine/components/json-render/renderer.js +1 -1
  155. package/es/chat-engine/components/json-render/types.d.ts +37 -19
  156. package/es/chat-engine/components/json-render/types.js +1 -1
  157. package/es/chat-engine/components/provider/agent-state.js +17 -8
  158. package/es/chat-engine/components/provider/agent-state.js.map +1 -1
  159. package/es/chat-engine/components/shared/ComponentErrorBoundary.d.ts +25 -0
  160. package/es/chat-engine/components/shared/ComponentErrorBoundary.js +58 -0
  161. package/es/chat-engine/components/shared/ComponentErrorBoundary.js.map +1 -0
  162. package/es/chat-engine/components/shared/createRegistry.d.ts +36 -0
  163. package/es/chat-engine/components/shared/createRegistry.js +72 -0
  164. package/es/chat-engine/components/shared/createRegistry.js.map +1 -0
  165. package/es/chat-engine/components/shared/index.d.ts +4 -0
  166. package/es/chat-engine/components/shared/index.js +18 -0
  167. package/es/chat-engine/components/shared/index.js.map +1 -0
  168. package/es/chat-engine/components/shared/useRegistrationListener.d.ts +22 -0
  169. package/es/chat-engine/components/shared/useRegistrationListener.js +45 -0
  170. package/es/chat-engine/components/shared/useRegistrationListener.js.map +1 -0
  171. package/es/chat-engine/components/toolcall/index.d.ts +1 -1
  172. package/es/chat-engine/components/toolcall/index.js +27 -14
  173. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  174. package/es/chat-engine/components/toolcall/registry.d.ts +6 -32
  175. package/es/chat-engine/components/toolcall/registry.js +23 -67
  176. package/es/chat-engine/components/toolcall/registry.js.map +1 -1
  177. package/es/chat-engine/components/toolcall/render.js +45 -84
  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/adapters/a2ui/index.d.ts +10 -0
  181. package/es/chat-engine/core/adapters/a2ui/index.js +24 -0
  182. package/es/chat-engine/core/adapters/a2ui/index.js.map +1 -0
  183. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
  184. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +438 -0
  185. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
  186. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.d.ts +53 -0
  187. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +158 -0
  188. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js.map +1 -0
  189. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.d.ts +63 -0
  190. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +172 -0
  191. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js.map +1 -0
  192. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.d.ts +47 -0
  193. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +99 -0
  194. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js.map +1 -0
  195. package/es/chat-engine/core/adapters/a2ui/types/index.d.ts +4 -0
  196. package/es/chat-engine/core/adapters/a2ui/types/index.js +9 -0
  197. package/es/chat-engine/core/adapters/a2ui/types/index.js.map +1 -0
  198. package/es/chat-engine/core/adapters/a2ui/types/types.d.ts +770 -0
  199. package/es/chat-engine/core/adapters/a2ui/types/types.js +104 -0
  200. package/es/chat-engine/core/adapters/a2ui/types/types.js.map +1 -0
  201. package/es/chat-engine/core/adapters/a2ui/utils/binding.d.ts +34 -0
  202. package/es/chat-engine/core/adapters/a2ui/utils/binding.js +1784 -0
  203. package/es/chat-engine/core/adapters/a2ui/utils/binding.js.map +1 -0
  204. package/es/chat-engine/core/adapters/a2ui/utils/index.d.ts +5 -0
  205. package/es/chat-engine/core/adapters/a2ui/utils/index.js +13 -0
  206. package/es/chat-engine/core/adapters/a2ui/utils/index.js.map +1 -0
  207. package/es/chat-engine/core/adapters/a2ui/utils/validation.d.ts +70 -0
  208. package/es/chat-engine/core/adapters/a2ui/utils/validation.js +333 -0
  209. package/es/chat-engine/core/adapters/a2ui/utils/validation.js.map +1 -0
  210. package/es/chat-engine/core/adapters/agui/ActivityManager.d.ts +93 -0
  211. package/es/chat-engine/core/adapters/agui/ActivityManager.js +148 -0
  212. package/es/chat-engine/core/adapters/agui/ActivityManager.js.map +1 -0
  213. package/es/chat-engine/core/adapters/agui/StateManager.d.ts +99 -0
  214. package/es/chat-engine/core/adapters/agui/StateManager.js +172 -0
  215. package/es/chat-engine/core/adapters/agui/StateManager.js.map +1 -0
  216. package/es/chat-engine/core/adapters/agui/activity-manager.js +7 -1
  217. package/es/chat-engine/core/adapters/agui/activity-manager.js.map +1 -1
  218. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +1 -1
  219. package/es/chat-engine/core/adapters/agui/event-mapper.js +7 -5
  220. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
  221. package/es/chat-engine/core/adapters/agui/events.js +1 -1
  222. package/es/chat-engine/core/adapters/agui/index.d.ts +4 -7
  223. package/es/chat-engine/core/adapters/agui/index.js +23 -18
  224. package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
  225. package/es/chat-engine/core/adapters/agui/state-manager.js +7 -1
  226. package/es/chat-engine/core/adapters/agui/state-manager.js.map +1 -1
  227. package/es/chat-engine/core/adapters/agui/types/events.d.ts +1570 -0
  228. package/es/chat-engine/core/adapters/agui/types/events.js +15 -0
  229. package/es/chat-engine/core/adapters/agui/types/events.js.map +1 -0
  230. package/es/chat-engine/core/adapters/agui/types/index.d.ts +854 -0
  231. package/es/chat-engine/core/adapters/agui/types/index.js +279 -0
  232. package/es/chat-engine/core/adapters/agui/types/index.js.map +1 -0
  233. package/es/chat-engine/core/adapters/agui/types.js +1 -1
  234. package/es/chat-engine/core/adapters/agui/utils.js +1 -1
  235. package/es/chat-engine/core/adapters/index.d.ts +5 -0
  236. package/es/chat-engine/core/adapters/index.js +34 -0
  237. package/es/chat-engine/core/adapters/index.js.map +1 -0
  238. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.d.ts +114 -0
  239. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +194 -0
  240. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js.map +1 -0
  241. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.d.ts +49 -0
  242. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +307 -0
  243. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js.map +1 -0
  244. package/es/chat-engine/core/adapters/json-render/engine.d.ts +58 -0
  245. package/es/chat-engine/core/adapters/json-render/engine.js +88 -0
  246. package/es/chat-engine/core/adapters/json-render/engine.js.map +1 -0
  247. package/es/chat-engine/core/adapters/json-render/index.d.ts +8 -0
  248. package/es/chat-engine/core/adapters/json-render/index.js +18 -0
  249. package/es/chat-engine/core/adapters/json-render/index.js.map +1 -0
  250. package/es/chat-engine/core/adapters/json-render/types/a2ui.d.ts +96 -0
  251. package/es/chat-engine/core/adapters/json-render/types/a2ui.js +7 -0
  252. package/es/chat-engine/core/adapters/json-render/types/a2ui.js.map +1 -0
  253. package/es/chat-engine/core/adapters/json-render/types/core.d.ts +49 -0
  254. package/es/chat-engine/core/adapters/json-render/types/core.js +7 -0
  255. package/es/chat-engine/core/adapters/json-render/types/core.js.map +1 -0
  256. package/es/chat-engine/core/adapters/json-render/types/index.d.ts +5 -0
  257. package/es/chat-engine/core/adapters/json-render/types/index.js +9 -0
  258. package/es/chat-engine/core/adapters/json-render/types/index.js.map +1 -0
  259. package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
  260. package/es/chat-engine/core/event-bus/index.js +1 -1
  261. package/es/chat-engine/core/event-bus/types.js +1 -1
  262. package/es/chat-engine/core/index.d.ts +4 -4
  263. package/es/chat-engine/core/index.js +17 -11
  264. package/es/chat-engine/core/index.js.map +1 -1
  265. package/es/chat-engine/core/processor/index.js +1 -1
  266. package/es/chat-engine/core/server/batch-client.js +1 -1
  267. package/es/chat-engine/core/server/connection-manager.js +1 -1
  268. package/es/chat-engine/core/server/errors.js +1 -1
  269. package/es/chat-engine/core/server/index.js +1 -1
  270. package/es/chat-engine/core/server/llm-service.js +18 -18
  271. package/es/chat-engine/core/server/llm-service.js.map +1 -1
  272. package/es/chat-engine/core/server/sse-client.js +1 -1
  273. package/es/chat-engine/core/server/sse-parser.js +1 -1
  274. package/es/chat-engine/core/server/types.js +1 -1
  275. package/es/chat-engine/core/store/message.js +5 -1
  276. package/es/chat-engine/core/store/message.js.map +1 -1
  277. package/es/chat-engine/core/store/model.js +2 -1
  278. package/es/chat-engine/core/store/model.js.map +1 -1
  279. package/es/chat-engine/core/store/reactiveState.d.ts +4 -0
  280. package/es/chat-engine/core/store/reactiveState.js +15 -1235
  281. package/es/chat-engine/core/store/reactiveState.js.map +1 -1
  282. package/es/chat-engine/core/type.d.ts +27 -19
  283. package/es/chat-engine/core/type.js +1 -1
  284. package/es/chat-engine/core/utils/eventEmitter.js +1 -1
  285. package/es/chat-engine/core/utils/immutable-patch.d.ts +61 -0
  286. package/es/chat-engine/core/utils/immutable-patch.js +147 -0
  287. package/es/chat-engine/core/utils/immutable-patch.js.map +1 -0
  288. package/es/chat-engine/core/utils/index.d.ts +7 -2
  289. package/es/chat-engine/core/utils/index.js +9 -883
  290. package/es/chat-engine/core/utils/index.js.map +1 -1
  291. package/es/chat-engine/core/utils/json-patch/helpers.d.ts +41 -0
  292. package/es/chat-engine/core/utils/json-patch/helpers.js +164 -0
  293. package/es/chat-engine/core/utils/json-patch/helpers.js.map +1 -0
  294. package/es/chat-engine/core/utils/json-patch/index.d.ts +115 -0
  295. package/es/chat-engine/core/utils/json-patch/index.js +387 -0
  296. package/es/chat-engine/core/utils/json-patch/index.js.map +1 -0
  297. package/es/chat-engine/core/utils/logger.js +1 -1
  298. package/es/chat-engine/core/utils/performance.d.ts +94 -0
  299. package/es/chat-engine/core/utils/performance.js +205 -0
  300. package/es/chat-engine/core/utils/performance.js.map +1 -0
  301. package/es/chat-engine/hooks/index.js +21 -8
  302. package/es/chat-engine/hooks/index.js.map +1 -1
  303. package/es/chat-engine/hooks/useAgentActivity.js +10 -2
  304. package/es/chat-engine/hooks/useAgentActivity.js.map +1 -1
  305. package/es/chat-engine/hooks/useAgentState.js +17 -8
  306. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  307. package/es/chat-engine/hooks/useAgentToolcall.js +10 -2
  308. package/es/chat-engine/hooks/useAgentToolcall.js.map +1 -1
  309. package/es/chat-engine/hooks/useChat.js +17 -8
  310. package/es/chat-engine/hooks/useChat.js.map +1 -1
  311. package/es/chat-engine/hooks/useJsonRenderActivity.js +2 -2
  312. package/es/chat-engine/index.js +35 -21
  313. package/es/chat-engine/index.js.map +1 -1
  314. package/es/chat-filecard/index.js +1 -1
  315. package/es/chat-loading/index.js +1 -1
  316. package/es/chat-markdown/index.js +1 -1
  317. package/es/chat-message/index.js +1 -1
  318. package/es/chat-sender/index.js +1 -1
  319. package/es/chat-thinking/index.js +1 -1
  320. package/es/chatbot/index.js +1 -1
  321. package/es/index.js +35 -21
  322. package/es/index.js.map +1 -1
  323. package/es/style/index.js +1 -1
  324. package/package.json +7 -6
@@ -0,0 +1,76 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.11
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import '@babel/runtime/helpers/defineProperty';
8
+ import '@babel/runtime/helpers/slicedToArray';
9
+ import 'react';
10
+ import '../../../../_chunks/dep-5b6b17d0.js';
11
+ import '../catalog/atomic/button.js';
12
+ export { d as A2UIButton, A as A2UITextField, a as a2uiRegistry, g as createA2UIJsonRenderActivityConfig, b as createA2UIRegistry, c as createCustomRegistry, f as createJsonRenderActivityConfig, t as tdesignRegistry, e as withA2UIBinding, w as withStableProps } from '../../../../_chunks/dep-076af7c3.js';
13
+ import '../catalog/atomic/card.js';
14
+ import '../catalog/atomic/text.js';
15
+ import '../catalog/atomic/layout.js';
16
+ import '@babel/runtime/helpers/typeof';
17
+ import '@babel/runtime/helpers/objectWithoutProperties';
18
+ import 'tdesign-react';
19
+ import '../renderer/JsonRenderActivityRenderer.js';
20
+ import '../renderer/JsonUIRenderer.js';
21
+ import '../contexts/index.js';
22
+ import '../contexts/data.js';
23
+ import '@babel/runtime/helpers/classCallCheck';
24
+ import '@babel/runtime/helpers/createClass';
25
+ import '@babel/runtime/helpers/possibleConstructorReturn';
26
+ import '@babel/runtime/helpers/getPrototypeOf';
27
+ import '@babel/runtime/helpers/inherits';
28
+ import '../../../../_chunks/dep-1ca64fef.js';
29
+ import '@babel/runtime/helpers/wrapNativeSuper';
30
+ import '@json-render/core';
31
+ import '../contexts/store.js';
32
+ import '../contexts/visibility.js';
33
+ import '../contexts/actions.js';
34
+ import '@babel/runtime/helpers/asyncToGenerator';
35
+ import '@babel/runtime/regenerator';
36
+ import '../contexts/validation.js';
37
+ import '../contexts/tree.js';
38
+ import '../renderer/A2UIJsonRenderActivityRenderer.js';
39
+ import '../../../core/index.js';
40
+ import '../../../core/adapters/agui/index.js';
41
+ import '@babel/runtime/helpers/toConsumableArray';
42
+ import '../../../core/adapters/agui/event-mapper.js';
43
+ import '../../../core/adapters/agui/types/index.js';
44
+ import 'zod';
45
+ import '../../../core/adapters/agui/StateManager.js';
46
+ import '../../../core/utils/index.js';
47
+ import '../../../core/utils/immutable-patch.js';
48
+ import '@babel/runtime/helpers/toArray';
49
+ import '../../../core/adapters/agui/ActivityManager.js';
50
+ import '../../../core/adapters/agui/utils.js';
51
+ import '../../../core/store/message.js';
52
+ import '@babel/runtime/helpers/get';
53
+ import '../../../core/store/reactiveState.js';
54
+ import '../../../core/event-bus/index.js';
55
+ import '../../../core/event-bus/ChatEventBus.js';
56
+ import '../../../core/event-bus/types.js';
57
+ import '../../../core/processor/index.js';
58
+ import '../../../core/server/index.js';
59
+ import '../../../core/server/llm-service.js';
60
+ import '../../../core/utils/logger.js';
61
+ import '../../../core/server/batch-client.js';
62
+ import '../../../core/utils/eventEmitter.js';
63
+ import '../../../core/server/errors.js';
64
+ import '../../../core/server/sse-client.js';
65
+ import '../../../core/server/connection-manager.js';
66
+ import '../../../core/server/sse-parser.js';
67
+ import '../../../core/server/types.js';
68
+ import '../../../core/adapters/index.js';
69
+ import '../../../core/adapters/json-render/index.js';
70
+ import '../../../core/adapters/json-render/a2ui-to-jsonrender.js';
71
+ import '../../../core/adapters/json-render/types/a2ui.js';
72
+ import '../../../core/adapters/json-render/SurfaceStateManager.js';
73
+ import '../../../core/adapters/json-render/types/index.js';
74
+ import '../../../core/adapters/json-render/types/core.js';
75
+ import '../catalog/catalog-to-prompt.js';
76
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * A2UI v0.9 + json-render Activity 渲染器
3
+ * 将 A2UI v0.9 协议转换为 json-render Schema 进行渲染
4
+ *
5
+ * 工作流程:
6
+ * 1. 接收 ACTIVITY_SNAPSHOT/DELTA 中的 A2UI content
7
+ * 2. 区分消息类型:UI型 vs 纯数据型
8
+ * 3. UI型:转换为 Schema 并注册到 SurfaceStateManager,渲染 UI
9
+ * 4. 纯数据型:通过 SurfaceStateManager 更新数据,触发订阅者重渲染,本组件不渲染
10
+ *
11
+ * 消息分类:
12
+ * - UI型消息:包含 createSurface / updateComponents / deleteSurface → 需要渲染/更新 UI
13
+ * - 纯数据型消息:仅包含 updateDataModel → 只更新状态,不渲染新 UI
14
+ */
15
+ import React from 'react';
16
+ import type { A2UIMessage } from '../../../core';
17
+ import type { JsonRenderActivityProps, ComponentRegistry } from '../types';
18
+ export interface A2UIJsonRenderActivityRendererProps extends Omit<JsonRenderActivityProps, 'content'> {
19
+ /** A2UI content(包含 messages 数组) */
20
+ content: {
21
+ messages?: A2UIMessage[];
22
+ [key: string]: any;
23
+ };
24
+ /** 组件注册表(必须) */
25
+ registry: ComponentRegistry;
26
+ /** Action 处理器(可选) */
27
+ actionHandlers?: Record<string, (params: Record<string, unknown>) => void | Promise<void>>;
28
+ /** 显示调试信息 */
29
+ debug?: boolean;
30
+ }
31
+ /**
32
+ * A2UI v0.9 + json-render Activity 渲染器组件
33
+ */
34
+ export declare const A2UIJsonRenderActivityRenderer: React.FC<A2UIJsonRenderActivityRendererProps>;
35
+ export default A2UIJsonRenderActivityRenderer;
@@ -0,0 +1,271 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.11
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
8
+ import React, { useEffect, useState, useMemo, useCallback } from 'react';
9
+ import '../../../core/index.js';
10
+ import { JsonRenderActivityRenderer } from './JsonRenderActivityRenderer.js';
11
+ import { surfaceStateManager } from '../../../core/adapters/json-render/SurfaceStateManager.js';
12
+ import { convertA2UIMessagesToJsonRender } from '../../../core/adapters/json-render/a2ui-to-jsonrender.js';
13
+ import '@babel/runtime/helpers/objectWithoutProperties';
14
+ import '@babel/runtime/helpers/asyncToGenerator';
15
+ import '@babel/runtime/helpers/classCallCheck';
16
+ import '@babel/runtime/helpers/createClass';
17
+ import '@babel/runtime/helpers/defineProperty';
18
+ import '@babel/runtime/regenerator';
19
+ import '../../../core/adapters/agui/index.js';
20
+ import '@babel/runtime/helpers/toConsumableArray';
21
+ import '../../../core/adapters/agui/event-mapper.js';
22
+ import '../../../core/adapters/agui/types/index.js';
23
+ import 'zod';
24
+ import '@babel/runtime/helpers/possibleConstructorReturn';
25
+ import '@babel/runtime/helpers/getPrototypeOf';
26
+ import '@babel/runtime/helpers/inherits';
27
+ import '@babel/runtime/helpers/wrapNativeSuper';
28
+ import '../../../core/adapters/agui/StateManager.js';
29
+ import '@babel/runtime/helpers/typeof';
30
+ import '../../../core/utils/index.js';
31
+ import '../../../core/utils/immutable-patch.js';
32
+ import '@babel/runtime/helpers/toArray';
33
+ import '../../../core/adapters/agui/ActivityManager.js';
34
+ import '../../../core/adapters/agui/utils.js';
35
+ import '../../../core/store/message.js';
36
+ import '@babel/runtime/helpers/get';
37
+ import '../../../core/store/reactiveState.js';
38
+ import '../../../../_chunks/dep-1ca64fef.js';
39
+ import '../../../core/event-bus/index.js';
40
+ import '../../../core/event-bus/ChatEventBus.js';
41
+ import '../../../core/event-bus/types.js';
42
+ import '../../../core/processor/index.js';
43
+ import '../../../core/server/index.js';
44
+ import '../../../core/server/llm-service.js';
45
+ import '../../../core/utils/logger.js';
46
+ import '../../../core/server/batch-client.js';
47
+ import '../../../core/utils/eventEmitter.js';
48
+ import '../../../core/server/errors.js';
49
+ import '../../../core/server/sse-client.js';
50
+ import '../../../core/server/connection-manager.js';
51
+ import '../../../core/server/sse-parser.js';
52
+ import '../../../core/server/types.js';
53
+ import '../../../core/adapters/index.js';
54
+ import '../../../core/adapters/json-render/index.js';
55
+ import '../../../core/adapters/json-render/types/a2ui.js';
56
+ import '../../../core/adapters/json-render/types/index.js';
57
+ import '../../../core/adapters/json-render/types/core.js';
58
+ import '../../../../_chunks/dep-5b6b17d0.js';
59
+ import './JsonUIRenderer.js';
60
+ import '../contexts/index.js';
61
+ import '../contexts/data.js';
62
+ import '@json-render/core';
63
+ import '../contexts/store.js';
64
+ import '../contexts/visibility.js';
65
+ import '../contexts/actions.js';
66
+ import '../contexts/validation.js';
67
+ import '../contexts/tree.js';
68
+
69
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
70
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
71
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
72
+ function extractSurfaceId(messages) {
73
+ var _iterator = _createForOfIteratorHelper(messages),
74
+ _step;
75
+ try {
76
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
77
+ var msg = _step.value;
78
+ if (msg.createSurface) return msg.createSurface.surfaceId;
79
+ if (msg.updateComponents) return msg.updateComponents.surfaceId;
80
+ if (msg.updateDataModel) return msg.updateDataModel.surfaceId;
81
+ if (msg.deleteSurface) return msg.deleteSurface.surfaceId;
82
+ }
83
+ } catch (err) {
84
+ _iterator.e(err);
85
+ } finally {
86
+ _iterator.f();
87
+ }
88
+ return null;
89
+ }
90
+ function isUIMessages(messages) {
91
+ return messages.some(function (msg) {
92
+ return msg.createSurface || msg.updateComponents || msg.deleteSurface;
93
+ });
94
+ }
95
+ function hasDeletionMessages(messages) {
96
+ return messages.some(function (msg) {
97
+ return msg.deleteSurface;
98
+ });
99
+ }
100
+ function hasCreationMessages(messages) {
101
+ return messages.some(function (msg) {
102
+ return msg.createSurface || msg.updateComponents;
103
+ });
104
+ }
105
+ var A2UIJsonRenderActivityRenderer = function A2UIJsonRenderActivityRenderer(_ref) {
106
+ var activityType = _ref.activityType,
107
+ content = _ref.content,
108
+ messageId = _ref.messageId,
109
+ ext = _ref.ext,
110
+ registry = _ref.registry,
111
+ actionHandlers = _ref.actionHandlers,
112
+ _ref$debug = _ref.debug,
113
+ debug = _ref$debug === void 0 ? false : _ref$debug;
114
+ useEffect(function () {
115
+ surfaceStateManager.setDebug(debug);
116
+ }, [debug]);
117
+ var _useState = useState(0),
118
+ _useState2 = _slicedToArray(_useState, 2),
119
+ schemaVersion = _useState2[0],
120
+ setSchemaVersion = _useState2[1];
121
+ var _useMemo = useMemo(function () {
122
+ var msgs = content.messages;
123
+ if (!Array.isArray(msgs) || msgs.length === 0) {
124
+ return {
125
+ surfaceId: null,
126
+ isUI: false,
127
+ isDeletion: false,
128
+ isCreation: false,
129
+ messages: []
130
+ };
131
+ }
132
+ return {
133
+ surfaceId: extractSurfaceId(msgs),
134
+ isUI: isUIMessages(msgs),
135
+ isDeletion: hasDeletionMessages(msgs),
136
+ isCreation: hasCreationMessages(msgs),
137
+ messages: msgs
138
+ };
139
+ }, [content.messages]),
140
+ surfaceId = _useMemo.surfaceId,
141
+ isUI = _useMemo.isUI,
142
+ isDeletion = _useMemo.isDeletion,
143
+ isCreation = _useMemo.isCreation,
144
+ messages = _useMemo.messages;
145
+ var initialSchema = useMemo(function () {
146
+ if (!surfaceId || messages.length === 0) {
147
+ return null;
148
+ }
149
+ if (debug) {
150
+ console.log("[A2UI Adapter] \u5904\u7406\u6D88\u606F:", {
151
+ messageId: messageId,
152
+ surfaceId: surfaceId,
153
+ messagesCount: messages.length,
154
+ messageTypes: messages.map(function (m) {
155
+ return Object.keys(m).filter(function (k) {
156
+ return ["createSurface", "updateComponents", "updateDataModel", "deleteSurface"].includes(k);
157
+ })[0];
158
+ }),
159
+ isUI: isUI,
160
+ isCreation: isCreation,
161
+ isDeletion: isDeletion,
162
+ cachedSurfaces: surfaceStateManager.getAllSurfaceIds()
163
+ });
164
+ }
165
+ if (isDeletion) {
166
+ surfaceStateManager.deleteSurface(surfaceId);
167
+ if (debug) {
168
+ console.log("[A2UI Adapter] \u5220\u9664 Surface:", surfaceId);
169
+ }
170
+ return null;
171
+ }
172
+ if (isCreation) {
173
+ var schema = convertA2UIMessagesToJsonRender(messages);
174
+ if (schema) {
175
+ var _messages$find;
176
+ var catalogId = (_messages$find = messages.find(function (m) {
177
+ return m.createSurface;
178
+ })) === null || _messages$find === void 0 || (_messages$find = _messages$find.createSurface) === null || _messages$find === void 0 ? void 0 : _messages$find.catalogId;
179
+ surfaceStateManager.registerSurface(surfaceId, schema, catalogId);
180
+ if (debug) {
181
+ console.log("[A2UI Adapter] \u521B\u5EFA\u578B\u6D88\u606F\uFF0C\u6CE8\u518C Surface:", {
182
+ surfaceId: surfaceId,
183
+ elementsCount: Object.keys(schema.elements).length,
184
+ data: schema.data
185
+ });
186
+ }
187
+ }
188
+ return schema;
189
+ }
190
+ var _iterator2 = _createForOfIteratorHelper(messages),
191
+ _step2;
192
+ try {
193
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
194
+ var msg = _step2.value;
195
+ if (msg.updateDataModel) {
196
+ var _msg$updateDataModel = msg.updateDataModel,
197
+ path = _msg$updateDataModel.path,
198
+ op = _msg$updateDataModel.op,
199
+ value = _msg$updateDataModel.value;
200
+ var success = surfaceStateManager.updateData(surfaceId, path, op || "replace", value);
201
+ if (debug) {
202
+ console.log("[A2UI Adapter] \u66F4\u65B0\u578B\u6D88\u606F\uFF0C\u66F4\u65B0\u6570\u636E:", {
203
+ surfaceId: surfaceId,
204
+ path: path,
205
+ op: op || "replace",
206
+ value: value,
207
+ success: success
208
+ });
209
+ }
210
+ }
211
+ }
212
+ } catch (err) {
213
+ _iterator2.e(err);
214
+ } finally {
215
+ _iterator2.f();
216
+ }
217
+ return null;
218
+ }, [messages, surfaceId, isCreation, isDeletion, isUI, debug, messageId]);
219
+ var handleSchemaUpdate = useCallback(function () {
220
+ if (debug) {
221
+ console.log("[A2UI Adapter] \u6536\u5230\u72B6\u6001\u66F4\u65B0\u901A\u77E5\uFF0C\u89E6\u53D1\u91CD\u6E32\u67D3");
222
+ }
223
+ setSchemaVersion(function (v) {
224
+ return v + 1;
225
+ });
226
+ }, [debug]);
227
+ useEffect(function () {
228
+ if (!isCreation || !surfaceId) {
229
+ return;
230
+ }
231
+ if (debug) {
232
+ console.log("[A2UI Adapter] \u8BA2\u9605 Surface \u72B6\u6001:", surfaceId);
233
+ }
234
+ var unsubscribe = surfaceStateManager.subscribe(surfaceId, handleSchemaUpdate);
235
+ return function () {
236
+ if (debug) {
237
+ console.log("[A2UI Adapter] \u53D6\u6D88\u8BA2\u9605 Surface \u72B6\u6001:", surfaceId);
238
+ }
239
+ unsubscribe();
240
+ };
241
+ }, [isCreation, surfaceId, handleSchemaUpdate, debug]);
242
+ var currentSchema = useMemo(function () {
243
+ if (!isCreation || !surfaceId) {
244
+ return null;
245
+ }
246
+ return surfaceStateManager.getSchema(surfaceId) || initialSchema;
247
+ }, [isCreation, surfaceId, initialSchema, schemaVersion]);
248
+ if (!isUI) {
249
+ if (debug && messages.length > 0) {
250
+ console.log("[A2UI Adapter] \u7EAF\u6570\u636E\u66F4\u65B0\u6D88\u606F\uFF0C\u8DF3\u8FC7\u6E32\u67D3");
251
+ }
252
+ return null;
253
+ }
254
+ if (isDeletion && !isCreation) {
255
+ if (debug) {
256
+ console.log("[A2UI Adapter] \u5220\u9664\u578B\u6D88\u606F\uFF0C\u8DF3\u8FC7\u6E32\u67D3");
257
+ }
258
+ return null;
259
+ }
260
+ return /* @__PURE__ */React.createElement(JsonRenderActivityRenderer, {
261
+ activityType: activityType,
262
+ content: currentSchema,
263
+ messageId: messageId,
264
+ ext: ext,
265
+ registry: registry,
266
+ actionHandlers: actionHandlers
267
+ });
268
+ };
269
+
270
+ export { A2UIJsonRenderActivityRenderer, A2UIJsonRenderActivityRenderer as default };
271
+ //# sourceMappingURL=A2UIJsonRenderActivityRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"A2UIJsonRenderActivityRenderer.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.tsx"],"sourcesContent":["/**\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 { convertA2UIMessagesToJsonRender, surfaceStateManager } from '../../../core';\nimport type { A2UIMessage, JsonRenderSchema } from '../../../core';\nimport type { JsonRenderActivityProps, ComponentRegistry } from '../types';\nimport { JsonRenderActivityRenderer } from './JsonRenderActivityRenderer';\n\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"],"names":["extractSurfaceId","messages","_iterator","_createForOfIteratorHelper","_step","s","n","done","msg","createSurface","surfaceId","updateComponents","updateDataModel","deleteSurface","err","e","f","isUIMessages","some","hasDeletionMessages","hasCreationMessages","A2UIJsonRenderActivityRenderer","activityType","_ref","content","messageId","ext","registry","actionHandlers","_ref$debug","debug","useEffect","surfaceStateManager","setDebug","_useState","useState","_useState2","_slicedToArray","schemaVersion","setSchemaVersion","_useMemo","useMemo","msgs","Array","isArray","length","isUI","isDeletion","isCreation","initialSchema","console","log","messagesCount","messageTypes","map","Object","keys","m","filter","k","includes","cachedSurfaces","getAllSurfaceIds","schema","convertA2UIMessagesToJsonRender","_messages$find","catalogId","find","registerSurface","elementsCount","elements","data","_iterator2","_step2","_msg$updateDataModel","path","op","value","success","updateData","handleSchemaUpdate","useCallback","v","unsubscribe","subscribe","currentSchema","getSchema","React","createElement","JsonRenderActivityRenderer"],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * json-render Activity 渲染器
3
+ * 基于 TDesign ChatEngine 的 Activity 机制集成 json-render
4
+ *
5
+ * 核心特性:
6
+ * 1. 支持 ACTIVITY_SNAPSHOT 全量渲染
7
+ * 2. 支持 ACTIVITY_DELTA 增量更新(Delta Merge 由数据层完成,此处接收完整 Schema)
8
+ * 3. 使用 React.memo + react-fast-compare 优化渲染性能
9
+ *
10
+ */
11
+ import React from 'react';
12
+ import type { JsonRenderActivityProps, ComponentRegistry } from '../types';
13
+ export interface JsonRenderActivityRendererProps extends JsonRenderActivityProps {
14
+ /** 组件注册表(必须) */
15
+ registry: ComponentRegistry;
16
+ /**
17
+ * Action 处理器映射表
18
+ *
19
+ * 示例:
20
+ * ```tsx
21
+ * const actionHandlers = {
22
+ * submit: async (params) => { ... },
23
+ * reset: async (params) => { ... },
24
+ * cancel: async (params) => { ... },
25
+ * };
26
+ * ```
27
+ */
28
+ actionHandlers?: Record<string, (params: Record<string, unknown>) => void | Promise<void>>;
29
+ /** 显示调试信息 */
30
+ debug?: boolean;
31
+ }
32
+ /**
33
+ * 使用 React.memo 包装,配合 react-fast-compare 进行高效的深比较
34
+ *
35
+ * 对比策略:
36
+ * 1. registry 引用比较(通常是稳定的)
37
+ * 2. actionHandlers 引用比较(建议使用 useMemo 稳定化)
38
+ * 3. content 使用 react-fast-compare 深比较(比 JSON.stringify 快 3-5 倍)
39
+ */
40
+ export declare const JsonRenderActivityRenderer: React.NamedExoticComponent<JsonRenderActivityRendererProps>;
41
+ /**
42
+ * 默认导出
43
+ */
44
+ export default JsonRenderActivityRenderer;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.11
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import React, { useMemo } from 'react';
8
+ import { r as reactFastCompare } from '../../../../_chunks/dep-5b6b17d0.js';
9
+ import { JsonRenderElement } from './JsonUIRenderer.js';
10
+ import '../contexts/index.js';
11
+ import { DataProvider } from '../contexts/data.js';
12
+ import { VisibilityProvider } from '../contexts/visibility.js';
13
+ import { ActionProvider } from '../contexts/actions.js';
14
+ import '@babel/runtime/helpers/typeof';
15
+ import '@babel/runtime/helpers/defineProperty';
16
+ import '../contexts/tree.js';
17
+ import '@babel/runtime/helpers/classCallCheck';
18
+ import '@babel/runtime/helpers/createClass';
19
+ import '@babel/runtime/helpers/possibleConstructorReturn';
20
+ import '@babel/runtime/helpers/getPrototypeOf';
21
+ import '@babel/runtime/helpers/inherits';
22
+ import '../contexts/store.js';
23
+ import '../contexts/validation.js';
24
+ import '@babel/runtime/helpers/objectWithoutProperties';
25
+ import '@babel/runtime/helpers/slicedToArray';
26
+ import '@json-render/core';
27
+ import '../../../../_chunks/dep-1ca64fef.js';
28
+ import '@babel/runtime/helpers/wrapNativeSuper';
29
+ import '@babel/runtime/helpers/asyncToGenerator';
30
+ import '@babel/runtime/regenerator';
31
+
32
+ var JsonRenderActivityRendererInner = function JsonRenderActivityRendererInner(_ref) {
33
+ var activityType = _ref.activityType,
34
+ content = _ref.content,
35
+ messageId = _ref.messageId,
36
+ registry = _ref.registry,
37
+ _ref$actionHandlers = _ref.actionHandlers,
38
+ actionHandlers = _ref$actionHandlers === void 0 ? {} : _ref$actionHandlers;
39
+ var isValidSchema = content && content.root && content.elements && content.elements[content.root];
40
+ var renderData = useMemo(function () {
41
+ return (content === null || content === void 0 ? void 0 : content.data) || {};
42
+ }, [content === null || content === void 0 ? void 0 : content.data]);
43
+ return /* @__PURE__ */React.createElement("div", {
44
+ "data-activity-type": activityType,
45
+ "data-message-id": messageId
46
+ }, /* @__PURE__ */React.createElement(DataProvider, {
47
+ initialData: renderData
48
+ }, /* @__PURE__ */React.createElement(VisibilityProvider, null, /* @__PURE__ */React.createElement(ActionProvider, {
49
+ handlers: actionHandlers
50
+ }, /* @__PURE__ */React.createElement(JsonRenderElement, {
51
+ tree: content,
52
+ registry: registry
53
+ })))));
54
+ };
55
+ var JsonRenderActivityRenderer = /*#__PURE__*/React.memo(JsonRenderActivityRendererInner, function (prevProps, nextProps) {
56
+ if (prevProps.registry !== nextProps.registry) return false;
57
+ if (prevProps.actionHandlers !== nextProps.actionHandlers) return false;
58
+ if (prevProps.content === nextProps.content) return true;
59
+ return reactFastCompare(prevProps.content, nextProps.content);
60
+ });
61
+
62
+ export { JsonRenderActivityRenderer, JsonRenderActivityRenderer as default };
63
+ //# sourceMappingURL=JsonRenderActivityRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonRenderActivityRenderer.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.tsx"],"sourcesContent":["/**\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 * \n */\n\nimport React, { useMemo } from 'react';\nimport isEqual from 'react-fast-compare';\nimport { JsonRenderElement } from './JsonUIRenderer';\nimport { DataProvider, ActionProvider, VisibilityProvider } from '../contexts';\nimport type { JsonRenderActivityProps, ComponentRegistry } 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 */\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 return (\n <div data-activity-type={activityType} data-message-id={messageId}>\n <DataProvider initialData={renderData}>\n <VisibilityProvider>\n <ActionProvider handlers={actionHandlers}>\n <JsonRenderElement 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"],"names":["JsonRenderActivityRendererInner","activityType","_ref","content","messageId","registry","_ref$actionHandlers","actionHandlers","isValidSchema","root","elements","renderData","useMemo","data","React","createElement","DataProvider","initialData","VisibilityProvider","ActionProvider","handlers","JsonRenderElement","tree","JsonRenderActivityRenderer","memo","prevProps","nextProps","isEqual"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,IAAMA,kCAA6E,SAA7EA,sCAMA;AAAA,EAAA,IALJC,YAAA,GAAAC,IAAA,CAAAD,YAAA;IACAE,OAAA,GAAAD,IAAA,CAAAC,OAAA;IACAC,SAAA,GAAAF,IAAA,CAAAE,SAAA;IACAC,QAAA,GAAAH,IAAA,CAAAG,QAAA;IAAAC,mBAAA,GAAAJ,IAAA,CACAK;AAAAA,IAAAA,kDAAiB,EAAC,GAAAD,mBAAA,CAAA;AAGZ,EAAA,IAAAE,aAAA,GAAgBL,WAAWA,OAAQ,CAAAM,IAAA,IAAQN,QAAQO,QAAY,IAAAP,OAAA,CAAQO,SAASP,OAAQ,CAAAM,IAAA,CAAA,CAAA;EAGxF,IAAAE,UAAA,GAAaC,OAAQ,CAAA,YAAA;IAAA,OAAM,CAAAT,OAAS,KAAA,IAAA,IAATA,OAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAATA,OAAS,CAAAU,IAAA,KAAQ,EAAI,CAAA;GAAA,EAAA,CAACV,OAAS,KAATA,IAAAA,IAAAA,OAAS,uBAATA,OAAS,CAAAU,IAAI,CAAC,CAAA,CAAA;AAUrE,EAAA,sBACGC,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAI,IAAA,oBAAoB,EAAAd,YAAA;AAAc,IAAA,iBAAiB,EAAAG,SAAAA;AAAA,GAAA,iBACrDU,KAAA,CAAAC,aAAA,CAAAC,YAAA,EAAA;AAAaC,IAAAA,WAAa,EAAAN,UAAAA;AACzB,GAAA,iBAAAG,KAAA,CAAAC,aAAA,CAACG,yCACEJ,KAAA,CAAAC,aAAA,CAAAI,cAAA,EAAA;AAAeC,IAAAA,QAAU,EAAAb,cAAAA;AAAA,GAAA,iBACvBO,KAAA,CAAAC,aAAA,CAAAM,iBAAA,EAAA;AAAkBC,IAAAA,IAAM,EAAAnB,OAAA;AAASE,IAAAA,QAAA,EAAAA,QAAAA;AAAoB,GAAA,CACxD,CACF,CACF,CACF,CAAA,CAAA;AAEJ,CAAA,CAAA;AAUakB,IAAAA,0CAA6BT,KAAM,CAAAU,IAAA,CAC9CxB,+BAAA,EACA,UAACyB,WAAWC,SAAc,EAAA;EAEpB,IAAAD,SAAA,CAAUpB,aAAaqB,SAAU,CAAArB,QAAA,EAAiB,OAAA,KAAA,CAAA;EAGlD,IAAAoB,SAAA,CAAUlB,mBAAmBmB,SAAU,CAAAnB,cAAA,EAAuB,OAAA,KAAA,CAAA;EAG9D,IAAAkB,SAAA,CAAUtB,YAAYuB,SAAU,CAAAvB,OAAA,EAAgB,OAAA,IAAA,CAAA;EAIpD,OAAOwB,gBAAQ,CAAAF,SAAA,CAAUtB,OAAS,EAAAuB,SAAA,CAAUvB,OAAO,CAAA,CAAA;AACrD,CACF;;;;"}
@@ -0,0 +1,44 @@
1
+ import { type ComponentType, type ReactNode } from "react";
2
+ import type { Catalog, ComponentDefinition } from "@json-render/core";
3
+ import type { ComponentRegistry, RendererProps } from "../types";
4
+ /**
5
+ * Main renderer component
6
+ *
7
+ * 架构说明:
8
+ * - JsonRenderElement 作为入口,不因 tree 变化而重渲染
9
+ * - tree 更新通过 store.setTree() 通知订阅者
10
+ * - 每个 ElementRenderer 独立订阅自己的 element
11
+ * - 配合上游 Structural Sharing,只有真正变化的节点才重渲染
12
+ */
13
+ export declare function JsonRenderElement({ tree, registry, loading, fallback }: RendererProps): import("react/jsx-runtime").JSX.Element;
14
+ /**
15
+ * Props for JSONUIProvider
16
+ */
17
+ export interface JSONUIProviderProps {
18
+ /** Component registry */
19
+ registry: ComponentRegistry;
20
+ /** Initial data model */
21
+ initialData?: Record<string, unknown>;
22
+ /** Auth state */
23
+ authState?: {
24
+ isSignedIn: boolean;
25
+ user?: Record<string, unknown>;
26
+ };
27
+ /** Action handlers */
28
+ actionHandlers?: Record<string, (params: Record<string, unknown>) => Promise<unknown> | unknown>;
29
+ /** Navigation function */
30
+ navigate?: (path: string) => void;
31
+ /** Custom validation functions */
32
+ validationFunctions?: Record<string, (value: unknown, args?: Record<string, unknown>) => boolean>;
33
+ /** Callback when data changes */
34
+ onDataChange?: (path: string, value: unknown) => void;
35
+ children: ReactNode;
36
+ }
37
+ /**
38
+ * Combined provider for all JSONUI contexts
39
+ */
40
+ export declare function JSONUIProvider({ registry, initialData, authState, actionHandlers, navigate, validationFunctions, onDataChange, children, }: JSONUIProviderProps): import("react/jsx-runtime").JSX.Element;
41
+ /**
42
+ * Helper to create a renderer component from a catalog
43
+ */
44
+ export declare function createRendererFromCatalog<C extends Catalog<Record<string, ComponentDefinition>>>(_catalog: C, registry: ComponentRegistry): ComponentType<Omit<RendererProps, "registry">>;