@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,438 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.14
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _typeof from '@babel/runtime/helpers/typeof';
8
+ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
9
+ import _createClass from '@babel/runtime/helpers/createClass';
10
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
11
+ import { DataStore } from './DataStore.js';
12
+ import { ComponentTree } from './ComponentTree.js';
13
+ import { PathResolver } from './PathResolver.js';
14
+ import '@babel/runtime/helpers/slicedToArray';
15
+ import '@babel/runtime/helpers/toArray';
16
+
17
+ 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; } } }; }
18
+ 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; } }
19
+ 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; }
20
+ var A2uiMessageProcessor = /*#__PURE__*/function () {
21
+ function A2uiMessageProcessor() {
22
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
23
+ _classCallCheck(this, A2uiMessageProcessor);
24
+ _defineProperty(this, "surfaces", /* @__PURE__ */new Map());
25
+ _defineProperty(this, "listeners", /* @__PURE__ */new Set());
26
+ _defineProperty(this, "pathResolver", new PathResolver());
27
+ _defineProperty(this, "cachedSnapshot", /* @__PURE__ */new Map());
28
+ _defineProperty(this, "snapshotVersion", 0);
29
+ this.options = options;
30
+ this.subscribe = this.subscribe.bind(this);
31
+ this.getSnapshot = this.getSnapshot.bind(this);
32
+ this.getServerSnapshot = this.getServerSnapshot.bind(this);
33
+ }
34
+ return _createClass(A2uiMessageProcessor, [{
35
+ key: "subscribe",
36
+ value: function subscribe(listener) {
37
+ var _this = this;
38
+ this.listeners.add(listener);
39
+ return function () {
40
+ _this.listeners["delete"](listener);
41
+ };
42
+ }
43
+ }, {
44
+ key: "getSnapshot",
45
+ value: function getSnapshot() {
46
+ return this.cachedSnapshot;
47
+ }
48
+ }, {
49
+ key: "getServerSnapshot",
50
+ value: function getServerSnapshot() {
51
+ return this.cachedSnapshot;
52
+ }
53
+ }, {
54
+ key: "updateCachedSnapshot",
55
+ value: function updateCachedSnapshot() {
56
+ var snapshot = /* @__PURE__ */new Map();
57
+ this.surfaces.forEach(function (internal, id) {
58
+ var _internal$componentTr;
59
+ snapshot.set(id, {
60
+ id: internal.id,
61
+ catalogId: internal.catalogId,
62
+ state: internal.state,
63
+ components: internal.components,
64
+ root: ((_internal$componentTr = internal.componentTree) === null || _internal$componentTr === void 0 ? void 0 : _internal$componentTr.root) || null,
65
+ data: internal.dataStore.getSnapshot(),
66
+ skeletonHint: internal.skeletonHint,
67
+ updatedAt: internal.updatedAt
68
+ });
69
+ });
70
+ this.cachedSnapshot = snapshot;
71
+ this.snapshotVersion++;
72
+ }
73
+ }, {
74
+ key: "processMessage",
75
+ value: function processMessage(message) {
76
+ this.processMessageInternal(message);
77
+ this.emitChange();
78
+ }
79
+ }, {
80
+ key: "processMessages",
81
+ value: function processMessages(messages) {
82
+ var _iterator = _createForOfIteratorHelper(messages),
83
+ _step;
84
+ try {
85
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
86
+ var message = _step.value;
87
+ this.processMessageInternal(message);
88
+ }
89
+ } catch (err) {
90
+ _iterator.e(err);
91
+ } finally {
92
+ _iterator.f();
93
+ }
94
+ this.emitChange();
95
+ }
96
+ }, {
97
+ key: "processMessagesIncremental",
98
+ value: function processMessagesIncremental(messages) {
99
+ if (messages.length === 0) return;
100
+ var _iterator2 = _createForOfIteratorHelper(messages),
101
+ _step2;
102
+ try {
103
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
104
+ var message = _step2.value;
105
+ this.processMessageInternal(message);
106
+ }
107
+ } catch (err) {
108
+ _iterator2.e(err);
109
+ } finally {
110
+ _iterator2.f();
111
+ }
112
+ this.emitChange();
113
+ }
114
+ }, {
115
+ key: "processMessageInternal",
116
+ value: function processMessageInternal(message) {
117
+ if ("createSurface" in message) {
118
+ this.handleCreateSurface(message.createSurface);
119
+ } else if ("updateComponents" in message) {
120
+ this.handleUpdateComponents(message.updateComponents);
121
+ } else if ("updateDataModel" in message) {
122
+ this.handleUpdateDataModel(message.updateDataModel);
123
+ } else if ("deleteSurface" in message) {
124
+ this.handleDeleteSurface(message.deleteSurface);
125
+ }
126
+ }
127
+ }, {
128
+ key: "handleCreateSurface",
129
+ value: function handleCreateSurface(payload) {
130
+ var surface = {
131
+ id: payload.surfaceId,
132
+ catalogId: payload.catalogId,
133
+ state: "pending",
134
+ components: /* @__PURE__ */new Map(),
135
+ dataStore: new DataStore(),
136
+ componentTree: null,
137
+ updatedAt: Date.now()
138
+ };
139
+ this.surfaces.set(payload.surfaceId, surface);
140
+ }
141
+ }, {
142
+ key: "handleUpdateComponents",
143
+ value: function handleUpdateComponents(payload) {
144
+ var surface = this.surfaces.get(payload.surfaceId);
145
+ if (!surface) {
146
+ console.warn("[A2UI] Surface ".concat(payload.surfaceId, " not found, auto-creating"));
147
+ surface = {
148
+ id: payload.surfaceId,
149
+ catalogId: "default",
150
+ state: "pending",
151
+ components: /* @__PURE__ */new Map(),
152
+ dataStore: new DataStore(),
153
+ componentTree: null,
154
+ updatedAt: Date.now()
155
+ };
156
+ this.surfaces.set(payload.surfaceId, surface);
157
+ }
158
+ var _iterator3 = _createForOfIteratorHelper(payload.components),
159
+ _step3;
160
+ try {
161
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
162
+ var component = _step3.value;
163
+ surface.components.set(component.id, component);
164
+ }
165
+ } catch (err) {
166
+ _iterator3.e(err);
167
+ } finally {
168
+ _iterator3.f();
169
+ }
170
+ this.rebuildComponentTree(surface);
171
+ if (surface.components.has("root") && surface.state === "pending") {
172
+ surface.state = "active";
173
+ }
174
+ surface.updatedAt = Date.now();
175
+ }
176
+ }, {
177
+ key: "handleUpdateDataModel",
178
+ value: function handleUpdateDataModel(payload) {
179
+ var surface = this.surfaces.get(payload.surfaceId);
180
+ if (!surface) {
181
+ console.warn("[A2UI] Surface ".concat(payload.surfaceId, " not found"));
182
+ return;
183
+ }
184
+ var path = payload.path || "/";
185
+ var op = payload.op || "replace";
186
+ if (op === "remove") {
187
+ surface.dataStore.remove(path);
188
+ } else {
189
+ surface.dataStore.set(path, payload.value);
190
+ }
191
+ if (this.needsTreeRebuild(surface, path)) {
192
+ this.rebuildComponentTree(surface);
193
+ }
194
+ surface.updatedAt = Date.now();
195
+ }
196
+ }, {
197
+ key: "needsTreeRebuild",
198
+ value: function needsTreeRebuild(surface, path) {
199
+ if (path === "/" || path === "") {
200
+ return true;
201
+ }
202
+ var _iterator4 = _createForOfIteratorHelper(surface.components.values()),
203
+ _step4;
204
+ try {
205
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
206
+ var component = _step4.value;
207
+ var children = component.children;
208
+ if (children && _typeof(children) === "object" && !Array.isArray(children)) {
209
+ var templatePath = children.path;
210
+ if (templatePath && (path.startsWith(templatePath) || templatePath.startsWith(path))) {
211
+ return true;
212
+ }
213
+ }
214
+ }
215
+ } catch (err) {
216
+ _iterator4.e(err);
217
+ } finally {
218
+ _iterator4.f();
219
+ }
220
+ return false;
221
+ }
222
+ }, {
223
+ key: "updateDataOnly",
224
+ value: function updateDataOnly(surfaceId, path, value) {
225
+ var _this$options$onDataC, _this$options;
226
+ var surface = this.surfaces.get(surfaceId);
227
+ if (!surface) return;
228
+ surface.dataStore.set(path, value);
229
+ surface.updatedAt = Date.now();
230
+ this.updateCachedSnapshot();
231
+ this.listeners.forEach(function (listener) {
232
+ return listener();
233
+ });
234
+ (_this$options$onDataC = (_this$options = this.options).onDataChange) === null || _this$options$onDataC === void 0 || _this$options$onDataC.call(_this$options, surfaceId, path, value);
235
+ }
236
+ }, {
237
+ key: "handleDeleteSurface",
238
+ value: function handleDeleteSurface(payload) {
239
+ this.surfaces["delete"](payload.surfaceId);
240
+ }
241
+ }, {
242
+ key: "rebuildComponentTree",
243
+ value: function rebuildComponentTree(surface) {
244
+ if (!surface.components.has("root")) {
245
+ surface.componentTree = null;
246
+ return;
247
+ }
248
+ surface.componentTree = new ComponentTree(surface.components, surface.dataStore, this.pathResolver);
249
+ }
250
+ }, {
251
+ key: "getData",
252
+ value: function getData(surfaceId, path) {
253
+ var dataContextPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "";
254
+ var surface = this.surfaces.get(surfaceId);
255
+ if (!surface) return void 0;
256
+ var resolvedPath = this.pathResolver.resolve(path, dataContextPath);
257
+ return surface.dataStore.get(resolvedPath);
258
+ }
259
+ }, {
260
+ key: "setData",
261
+ value: function setData(surfaceId, path, dataContextPath, value) {
262
+ var _this$options$onDataC2, _this$options2;
263
+ var surface = this.surfaces.get(surfaceId);
264
+ if (!surface) return;
265
+ var resolvedPath = this.pathResolver.resolve(path, dataContextPath);
266
+ surface.dataStore.set(resolvedPath, value);
267
+ this.rebuildComponentTree(surface);
268
+ surface.updatedAt = Date.now();
269
+ this.emitChange();
270
+ (_this$options$onDataC2 = (_this$options2 = this.options).onDataChange) === null || _this$options$onDataC2 === void 0 || _this$options$onDataC2.call(_this$options2, surfaceId, resolvedPath, value);
271
+ }
272
+ }, {
273
+ key: "updateDataValue",
274
+ value: function updateDataValue(surfaceId, path, value) {
275
+ this.setData(surfaceId, path, "", value);
276
+ }
277
+ }, {
278
+ key: "dispatchAction",
279
+ value: function dispatchAction(action, surfaceId, componentId) {
280
+ var _this2 = this;
281
+ if (this.options.onAction) {
282
+ var context = surfaceId ? {
283
+ surfaceId: surfaceId,
284
+ componentId: componentId,
285
+ updateData: function updateData(path, value) {
286
+ _this2.updateDataValue(surfaceId, path, value);
287
+ },
288
+ getData: function getData(path) {
289
+ var surface = _this2.surfaces.get(surfaceId);
290
+ if (!surface) return void 0;
291
+ return path ? surface.dataStore.get(path) : surface.dataStore.getSnapshot();
292
+ }
293
+ } : void 0;
294
+ this.options.onAction(action, context);
295
+ }
296
+ if (this.options.onSendMessage && surfaceId && componentId) {
297
+ this.options.onSendMessage({
298
+ userAction: {
299
+ name: action.name,
300
+ surfaceId: surfaceId,
301
+ sourceComponentId: componentId,
302
+ timestamp: new Date().toISOString(),
303
+ context: action.context || {}
304
+ }
305
+ });
306
+ }
307
+ }
308
+ }, {
309
+ key: "createPendingSurface",
310
+ value: function createPendingSurface(surfaceId, skeletonHint) {
311
+ if (this.surfaces.has(surfaceId)) return;
312
+ var surface = {
313
+ id: surfaceId,
314
+ catalogId: "default",
315
+ state: "pending",
316
+ components: /* @__PURE__ */new Map(),
317
+ dataStore: new DataStore(),
318
+ componentTree: null,
319
+ skeletonHint: skeletonHint,
320
+ updatedAt: Date.now()
321
+ };
322
+ this.surfaces.set(surfaceId, surface);
323
+ this.emitChange();
324
+ }
325
+ }, {
326
+ key: "activateSurface",
327
+ value: function activateSurface(surfaceId) {
328
+ var surface = this.surfaces.get(surfaceId);
329
+ if (!surface) return;
330
+ surface.state = "active";
331
+ surface.updatedAt = Date.now();
332
+ this.emitChange();
333
+ }
334
+ }, {
335
+ key: "closeSurface",
336
+ value: function closeSurface(surfaceId) {
337
+ var surface = this.surfaces.get(surfaceId);
338
+ if (!surface) return;
339
+ surface.state = "closed";
340
+ surface.updatedAt = Date.now();
341
+ this.emitChange();
342
+ }
343
+ }, {
344
+ key: "setSurfaceData",
345
+ value: function setSurfaceData(surfaceId, data) {
346
+ var surface = this.surfaces.get(surfaceId);
347
+ if (!surface) return;
348
+ surface.dataStore.set("/", data);
349
+ this.rebuildComponentTree(surface);
350
+ surface.updatedAt = Date.now();
351
+ this.emitChange();
352
+ }
353
+ }, {
354
+ key: "mergeSurfaceData",
355
+ value: function mergeSurfaceData(surfaceId, data) {
356
+ var surface = this.surfaces.get(surfaceId);
357
+ if (!surface) return;
358
+ surface.dataStore.merge("/", data);
359
+ this.rebuildComponentTree(surface);
360
+ surface.updatedAt = Date.now();
361
+ this.emitChange();
362
+ }
363
+ }, {
364
+ key: "getSurface",
365
+ value: function getSurface(surfaceId) {
366
+ var _internal$componentTr2;
367
+ var internal = this.surfaces.get(surfaceId);
368
+ if (!internal) return void 0;
369
+ return {
370
+ id: internal.id,
371
+ catalogId: internal.catalogId,
372
+ state: internal.state,
373
+ components: internal.components,
374
+ root: ((_internal$componentTr2 = internal.componentTree) === null || _internal$componentTr2 === void 0 ? void 0 : _internal$componentTr2.root) || null,
375
+ data: internal.dataStore.getSnapshot(),
376
+ skeletonHint: internal.skeletonHint,
377
+ updatedAt: internal.updatedAt
378
+ };
379
+ }
380
+ }, {
381
+ key: "getSurfaceIds",
382
+ value: function getSurfaceIds() {
383
+ return Array.from(this.surfaces.keys());
384
+ }
385
+ }, {
386
+ key: "getAllSurfaces",
387
+ value: function getAllSurfaces() {
388
+ var _this3 = this;
389
+ return this.getSurfaceIds().map(function (id) {
390
+ return _this3.getSurface(id);
391
+ });
392
+ }
393
+ }, {
394
+ key: "getComponentTree",
395
+ value: function getComponentTree(surfaceId) {
396
+ var _surface$componentTre;
397
+ var surface = this.surfaces.get(surfaceId);
398
+ return (surface === null || surface === void 0 || (_surface$componentTre = surface.componentTree) === null || _surface$componentTre === void 0 ? void 0 : _surface$componentTre.root) || null;
399
+ }
400
+ }, {
401
+ key: "findComponent",
402
+ value: function findComponent(surfaceId, componentId) {
403
+ var surface = this.surfaces.get(surfaceId);
404
+ return surface === null || surface === void 0 ? void 0 : surface.components.get(componentId);
405
+ }
406
+ }, {
407
+ key: "clear",
408
+ value: function clear() {
409
+ this.surfaces.clear();
410
+ this.emitChange();
411
+ }
412
+ }, {
413
+ key: "clearAllSurfaces",
414
+ value: function clearAllSurfaces() {
415
+ this.clear();
416
+ }
417
+ }, {
418
+ key: "destroy",
419
+ value: function destroy() {
420
+ this.clear();
421
+ this.listeners.clear();
422
+ }
423
+ }, {
424
+ key: "emitChange",
425
+ value: function emitChange() {
426
+ this.updateCachedSnapshot();
427
+ this.listeners.forEach(function (listener) {
428
+ listener();
429
+ });
430
+ }
431
+ }]);
432
+ }();
433
+ function createA2uiProcessor(options) {
434
+ return new A2uiMessageProcessor(options);
435
+ }
436
+
437
+ export { A2uiMessageProcessor, createA2uiProcessor, A2uiMessageProcessor as default };
438
+ //# sourceMappingURL=A2uiMessageProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"A2uiMessageProcessor.js","sources":["../../../../../../pro-components/chat/chat-engine/core/a2ui/processor/A2uiMessageProcessor.ts"],"sourcesContent":["/**\n * A2UI 消息处理器 v2\n * 完全按照 A2UI v0.9 协议实现\n * \n * 支持四种消息类型:\n * - createSurface: 创建 Surface\n * - updateComponents: 更新组件\n * - updateDataModel: 更新数据模型\n * - deleteSurface: 删除 Surface\n * \n * 实现 External Store 模式,支持 useSyncExternalStore\n */\n\nimport type {\n A2UISurface,\n A2UIComponentBase,\n A2UIServerMessage,\n A2UIAction,\n ActionHandler,\n SkeletonHint,\n ResolvedComponent,\n UserActionMessage,\n} from '../types';\nimport { DataStore } from './DataStore';\nimport { ComponentTree } from './ComponentTree';\nimport { PathResolver } from './PathResolver';\n\nexport type SurfaceSnapshot = Map<string, A2UISurface>;\nexport type SurfaceListener = () => void;\n\n/**\n * A2UI 消息处理器配置\n */\nexport interface A2uiMessageProcessorOptions {\n /** Action 处理回调 */\n onAction?: ActionHandler;\n /** 用户行为消息发送回调 */\n onSendMessage?: (message: UserActionMessage) => void;\n /** 数据变更回调 */\n onDataChange?: (surfaceId: string, path: string, value: unknown) => void;\n /** 验证错误回调 */\n onValidationError?: (errors: Array<{ type: string; message: string; path?: string }>) => void;\n}\n\n/**\n * 内部 Surface 数据结构\n */\ninterface InternalSurface {\n id: string;\n catalogId: string;\n state: 'active' | 'closed' | 'pending';\n components: Map<string, A2UIComponentBase>;\n dataStore: DataStore;\n componentTree: ComponentTree | null;\n skeletonHint?: SkeletonHint;\n updatedAt: number;\n}\n\n/**\n * A2UI 消息处理器\n * \n * 核心功能:\n * 1. 处理 A2UI v0.9 协议消息\n * 2. 管理 Surface 生命周期\n * 3. 维护组件注册表和数据模型\n * 4. 构建组件树\n * 5. 支持 useSyncExternalStore 订阅\n */\nexport class A2uiMessageProcessor {\n private surfaces = new Map<string, InternalSurface>();\n private listeners = new Set<SurfaceListener>();\n private pathResolver = new PathResolver();\n private options: A2uiMessageProcessorOptions;\n \n // 缓存的快照,避免 useSyncExternalStore 无限循环\n private cachedSnapshot: SurfaceSnapshot = new Map();\n private snapshotVersion = 0;\n\n constructor(options: A2uiMessageProcessorOptions = {}) {\n this.options = options;\n // 绑定方法以确保 this 指向正确\n this.subscribe = this.subscribe.bind(this);\n this.getSnapshot = this.getSnapshot.bind(this);\n this.getServerSnapshot = this.getServerSnapshot.bind(this);\n }\n\n // ============= External Store 接口 =============\n\n /**\n * 订阅状态变化(供 useSyncExternalStore 使用)\n */\n subscribe(listener: SurfaceListener): () => void {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n /**\n * 获取当前快照(供 useSyncExternalStore 使用)\n * 返回缓存的快照,确保引用稳定\n */\n getSnapshot(): SurfaceSnapshot {\n return this.cachedSnapshot;\n }\n\n /**\n * 获取服务端快照(SSR 场景)\n */\n getServerSnapshot(): SurfaceSnapshot {\n return this.cachedSnapshot;\n }\n\n /**\n * 更新缓存的快照\n * 只在数据变更时调用\n */\n private updateCachedSnapshot(): void {\n const snapshot = new Map<string, A2UISurface>();\n \n this.surfaces.forEach((internal, id) => {\n snapshot.set(id, {\n id: internal.id,\n catalogId: internal.catalogId,\n state: internal.state,\n components: internal.components,\n root: internal.componentTree?.root || null,\n data: internal.dataStore.getSnapshot(),\n skeletonHint: internal.skeletonHint,\n updatedAt: internal.updatedAt,\n });\n });\n \n this.cachedSnapshot = snapshot;\n this.snapshotVersion++;\n }\n\n // ============= A2UI v0.9 消息处理 =============\n\n /**\n * 处理单条 A2UI v0.9 消息\n */\n processMessage(message: A2UIServerMessage): void {\n this.processMessageInternal(message);\n this.emitChange();\n }\n\n /**\n * 批量处理消息\n */\n processMessages(messages: A2UIServerMessage[]): void {\n for (const message of messages) {\n this.processMessageInternal(message);\n }\n\n // 所有消息处理完后统一通知\n this.emitChange();\n }\n\n /**\n * 增量处理消息(性能优化)\n * 当已知消息是新增的时候使用,避免重复处理\n */\n processMessagesIncremental(messages: A2UIServerMessage[]): void {\n if (messages.length === 0) return;\n\n for (const message of messages) {\n this.processMessageInternal(message);\n }\n\n this.emitChange();\n }\n\n /**\n * 内部消息处理(不触发 emitChange)\n */\n private processMessageInternal(message: A2UIServerMessage): void {\n if ('createSurface' in message) {\n this.handleCreateSurface(message.createSurface);\n } else if ('updateComponents' in message) {\n this.handleUpdateComponents(message.updateComponents);\n } else if ('updateDataModel' in message) {\n this.handleUpdateDataModel(message.updateDataModel);\n } else if ('deleteSurface' in message) {\n this.handleDeleteSurface(message.deleteSurface);\n }\n }\n\n // ============= 消息处理器 =============\n\n /**\n * 处理 createSurface 消息\n */\n private handleCreateSurface(payload: { surfaceId: string; catalogId: string }): void {\n const surface: InternalSurface = {\n id: payload.surfaceId,\n catalogId: payload.catalogId,\n state: 'pending',\n components: new Map(),\n dataStore: new DataStore(),\n componentTree: null,\n updatedAt: Date.now(),\n };\n\n this.surfaces.set(payload.surfaceId, surface);\n }\n\n /**\n * 处理 updateComponents 消息\n */\n private handleUpdateComponents(payload: { surfaceId: string; components: A2UIComponentBase[] }): void {\n let surface = this.surfaces.get(payload.surfaceId);\n \n // 如果 Surface 不存在,自动创建(容错处理)\n if (!surface) {\n console.warn(`[A2UI] Surface ${payload.surfaceId} not found, auto-creating`);\n surface = {\n id: payload.surfaceId,\n catalogId: 'default',\n state: 'pending',\n components: new Map(),\n dataStore: new DataStore(),\n componentTree: null,\n updatedAt: Date.now(),\n };\n this.surfaces.set(payload.surfaceId, surface);\n }\n\n // 添加/更新组件到平铺注册表\n for (const component of payload.components) {\n surface.components.set(component.id, component);\n }\n\n // 重建组件树\n this.rebuildComponentTree(surface);\n\n // 如果有 root 组件,激活 Surface\n if (surface.components.has('root') && surface.state === 'pending') {\n surface.state = 'active';\n }\n\n surface.updatedAt = Date.now();\n }\n\n /**\n * 处理 updateDataModel 消息\n */\n private handleUpdateDataModel(payload: {\n surfaceId: string;\n path?: string;\n op?: 'add' | 'replace' | 'remove';\n value?: unknown;\n }): void {\n const surface = this.surfaces.get(payload.surfaceId);\n if (!surface) {\n console.warn(`[A2UI] Surface ${payload.surfaceId} not found`);\n return;\n }\n\n const path = payload.path || '/';\n const op = payload.op || 'replace';\n\n if (op === 'remove') {\n surface.dataStore.remove(path);\n } else {\n // add 和 replace 都使用 set\n surface.dataStore.set(path, payload.value);\n }\n\n // 只有当数据变化可能影响 template 渲染时才重建组件树\n // 优化:检查是否有组件使用了 template children\n if (this.needsTreeRebuild(surface, path)) {\n this.rebuildComponentTree(surface);\n }\n surface.updatedAt = Date.now();\n }\n\n /**\n * 检查是否需要重建组件树\n * 优化:只有当路径可能影响 template 渲染时才需要重建\n */\n private needsTreeRebuild(surface: InternalSurface, path: string): boolean {\n // 如果是根路径替换,需要重建\n if (path === '/' || path === '') {\n return true;\n }\n\n // 检查是否有组件的 children 使用了这个路径作为 template\n for (const component of surface.components.values()) {\n const children = (component as any).children;\n if (children && typeof children === 'object' && !Array.isArray(children)) {\n // A2UI v0.9 格式: { componentId, path }\n const templatePath = (children as any).path;\n if (templatePath && (path.startsWith(templatePath) || templatePath.startsWith(path))) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * 只更新数据模型,不重建组件树(性能优化)\n * 适用于不影响组件结构的数据更新(如表单输入)\n */\n updateDataOnly(surfaceId: string, path: string, value: unknown): void {\n const surface = this.surfaces.get(surfaceId);\n if (!surface) return;\n\n surface.dataStore.set(path, value);\n surface.updatedAt = Date.now();\n \n // 只更新快照,不重建组件树\n this.updateCachedSnapshot();\n this.listeners.forEach((listener) => listener());\n \n // 触发回调\n this.options.onDataChange?.(surfaceId, path, value);\n }\n\n /**\n * 处理 deleteSurface 消息\n */\n private handleDeleteSurface(payload: { surfaceId: string }): void {\n this.surfaces.delete(payload.surfaceId);\n }\n\n // ============= 组件树构建 =============\n\n /**\n * 重建组件树\n */\n private rebuildComponentTree(surface: InternalSurface): void {\n // 只有存在 root 组件时才构建树\n if (!surface.components.has('root')) {\n surface.componentTree = null;\n return;\n }\n\n surface.componentTree = new ComponentTree(\n surface.components,\n surface.dataStore,\n this.pathResolver\n );\n }\n\n // ============= 数据访问(供 React 组件使用)=============\n\n /**\n * 获取数据\n * @param surfaceId Surface ID\n * @param path 数据路径\n * @param dataContextPath 当前组件的数据上下文\n */\n getData(surfaceId: string, path: string, dataContextPath: string = ''): unknown {\n const surface = this.surfaces.get(surfaceId);\n if (!surface) return undefined;\n\n const resolvedPath = this.pathResolver.resolve(path, dataContextPath);\n return surface.dataStore.get(resolvedPath);\n }\n\n /**\n * 设置数据(双向绑定)\n */\n setData(surfaceId: string, path: string, dataContextPath: string, value: unknown): void {\n const surface = this.surfaces.get(surfaceId);\n if (!surface) return;\n\n const resolvedPath = this.pathResolver.resolve(path, dataContextPath);\n surface.dataStore.set(resolvedPath, value);\n\n // 重建组件树并通知\n this.rebuildComponentTree(surface);\n surface.updatedAt = Date.now();\n this.emitChange();\n\n // 触发回调\n this.options.onDataChange?.(surfaceId, resolvedPath, value);\n }\n\n /**\n * 更新数据值(简化接口,不需要 dataContextPath)\n */\n updateDataValue(surfaceId: string, path: string, value: unknown): void {\n this.setData(surfaceId, path, '', value);\n }\n\n // ============= Action 处理 =============\n\n /**\n * 分发 Action\n */\n dispatchAction(action: A2UIAction, surfaceId?: string, componentId?: string): void {\n // 调用外部回调\n if (this.options.onAction) {\n const context = surfaceId ? {\n surfaceId,\n componentId,\n updateData: (path: string, value: unknown) => {\n this.updateDataValue(surfaceId, path, value);\n },\n getData: (path?: string) => {\n const surface = this.surfaces.get(surfaceId);\n if (!surface) return undefined;\n return path ? surface.dataStore.get(path) : surface.dataStore.getSnapshot();\n },\n } : undefined;\n\n this.options.onAction(action, context);\n }\n\n // 发送用户行为消息\n if (this.options.onSendMessage && surfaceId && componentId) {\n this.options.onSendMessage({\n userAction: {\n name: action.name,\n surfaceId,\n sourceComponentId: componentId,\n timestamp: new Date().toISOString(),\n context: action.context || {},\n },\n });\n }\n }\n\n // ============= Surface 管理(扩展方法)=============\n\n /**\n * 创建 Pending 状态的 Surface(用于显示骨架屏)\n */\n createPendingSurface(surfaceId: string, skeletonHint?: SkeletonHint): void {\n if (this.surfaces.has(surfaceId)) return;\n\n const surface: InternalSurface = {\n id: surfaceId,\n catalogId: 'default',\n state: 'pending',\n components: new Map(),\n dataStore: new DataStore(),\n componentTree: null,\n skeletonHint,\n updatedAt: Date.now(),\n };\n\n this.surfaces.set(surfaceId, surface);\n this.emitChange();\n }\n\n /**\n * 激活 Surface\n */\n activateSurface(surfaceId: string): void {\n const surface = this.surfaces.get(surfaceId);\n if (!surface) return;\n\n surface.state = 'active';\n surface.updatedAt = Date.now();\n this.emitChange();\n }\n\n /**\n * 关闭 Surface\n */\n closeSurface(surfaceId: string): void {\n const surface = this.surfaces.get(surfaceId);\n if (!surface) return;\n\n surface.state = 'closed';\n surface.updatedAt = Date.now();\n this.emitChange();\n }\n\n /**\n * 直接设置整个数据模型\n */\n setSurfaceData(surfaceId: string, data: Record<string, unknown>): void {\n const surface = this.surfaces.get(surfaceId);\n if (!surface) return;\n\n surface.dataStore.set('/', data);\n this.rebuildComponentTree(surface);\n surface.updatedAt = Date.now();\n this.emitChange();\n }\n\n /**\n * 合并数据(保留用户输入)\n */\n mergeSurfaceData(surfaceId: string, data: Record<string, unknown>): void {\n const surface = this.surfaces.get(surfaceId);\n if (!surface) return;\n\n surface.dataStore.merge('/', data);\n this.rebuildComponentTree(surface);\n surface.updatedAt = Date.now();\n this.emitChange();\n }\n\n // ============= 工具方法 =============\n\n /**\n * 获取单个 Surface\n */\n getSurface(surfaceId: string): A2UISurface | undefined {\n const internal = this.surfaces.get(surfaceId);\n if (!internal) return undefined;\n\n return {\n id: internal.id,\n catalogId: internal.catalogId,\n state: internal.state,\n components: internal.components,\n root: internal.componentTree?.root || null,\n data: internal.dataStore.getSnapshot(),\n skeletonHint: internal.skeletonHint,\n updatedAt: internal.updatedAt,\n };\n }\n\n /**\n * 获取所有 Surface ID\n */\n getSurfaceIds(): string[] {\n return Array.from(this.surfaces.keys());\n }\n\n /**\n * 获取所有 Surface\n */\n getAllSurfaces(): A2UISurface[] {\n return this.getSurfaceIds().map((id) => this.getSurface(id)!);\n }\n\n /**\n * 获取组件树\n */\n getComponentTree(surfaceId: string): ResolvedComponent | null {\n const surface = this.surfaces.get(surfaceId);\n return surface?.componentTree?.root || null;\n }\n\n /**\n * 查找组件\n */\n findComponent(surfaceId: string, componentId: string): A2UIComponentBase | undefined {\n const surface = this.surfaces.get(surfaceId);\n return surface?.components.get(componentId);\n }\n\n /**\n * 清空所有 Surface\n */\n clear(): void {\n this.surfaces.clear();\n this.emitChange();\n }\n\n /**\n * 清空所有 Surface(别名)\n */\n clearAllSurfaces(): void {\n this.clear();\n }\n\n /**\n * 销毁处理器\n */\n destroy(): void {\n this.clear();\n this.listeners.clear();\n }\n\n // ============= 内部方法 =============\n\n /**\n * 通知所有订阅者\n * 先更新缓存快照,再通知订阅者\n */\n private emitChange(): void {\n // 先更新缓存快照\n this.updateCachedSnapshot();\n // 再通知订阅者\n this.listeners.forEach((listener) => {\n listener();\n });\n }\n}\n\n/**\n * 创建 A2UI 消息处理器实例\n */\nexport function createA2uiProcessor(options?: A2uiMessageProcessorOptions): A2uiMessageProcessor {\n return new A2uiMessageProcessor(options);\n}\n\nexport default A2uiMessageProcessor;\n"],"names":["A2uiMessageProcessor","options","arguments","length","undefined","_classCallCheck","_defineProperty","Map","Set","PathResolver","subscribe","bind","getSnapshot","getServerSnapshot","_createClass","key","value","listener","_this","listeners","add","cachedSnapshot","updateCachedSnapshot","snapshot","surfaces","forEach","internal","id","_internal$componentTr","set","catalogId","state","components","root","componentTree","data","dataStore","skeletonHint","updatedAt","snapshotVersion","processMessage","message","processMessageInternal","emitChange","processMessages","messages","_iterator","_createForOfIteratorHelper","_step","s","n","done","err","e","f","processMessagesIncremental","_iterator2","_step2","handleCreateSurface","createSurface","handleUpdateComponents","updateComponents","handleUpdateDataModel","updateDataModel","handleDeleteSurface","deleteSurface","payload","surface","surfaceId","DataStore","Date","now","get","console","warn","concat","_iterator3","_step3","component","rebuildComponentTree","has","path","op","remove","needsTreeRebuild","_iterator4","values","_step4","children","_typeof","Array","isArray","templatePath","startsWith","updateDataOnly","_this$options$onDataC","_this$options","onDataChange","call","ComponentTree","pathResolver","getData","dataContextPath","resolvedPath","resolve","setData","_this$options$onDataC2","_this$options2","updateDataValue","dispatchAction","action","componentId","_this2","onAction","context","updateData","onSendMessage","userAction","name","sourceComponentId","timestamp","toISOString","createPendingSurface","activateSurface","closeSurface","setSurfaceData","mergeSurfaceData","merge","getSurface","_internal$componentTr2","getSurfaceIds","from","keys","getAllSurfaces","_this3","map","getComponentTree","_surface$componentTre","findComponent","clear","clearAllSurfaces","destroy","createA2uiProcessor"],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * A2UI ComponentTree
3
+ * 将平铺的组件列表转换为嵌套的组件树
4
+ * 参考 @a2ui/core ComponentTree 实现
5
+ *
6
+ * 支持两种 children 模式 (A2UI v0.9 规范):
7
+ * 1. 直接引用: children: ["comp1", "comp2"]
8
+ * 2. Template 模式: children: { componentId: "comp1", path: "/items" }
9
+ */
10
+ import type { A2UIComponentBase, ResolvedComponent } from '../types';
11
+ import type { DataStore } from './DataStore';
12
+ import type { PathResolver } from './PathResolver';
13
+ /**
14
+ * 组件树构建器
15
+ */
16
+ export declare class ComponentTree {
17
+ private components;
18
+ private dataStore;
19
+ private pathResolver;
20
+ /** 解析后的根组件 */
21
+ readonly root: ResolvedComponent | null;
22
+ constructor(components: Map<string, A2UIComponentBase>, dataStore: DataStore, pathResolver: PathResolver);
23
+ /**
24
+ * 递归构建组件树
25
+ * @param componentId 组件 ID
26
+ * @param dataContextPath 当前数据上下文路径
27
+ */
28
+ private buildTree;
29
+ /**
30
+ * 解析 children 属性
31
+ */
32
+ private resolveChildren;
33
+ /**
34
+ * 解析 Template 模式的 children
35
+ * Template 会根据 dataPath 指向的数组长度,创建多个子组件实例
36
+ */
37
+ private resolveTemplate;
38
+ /**
39
+ * 查找组件
40
+ */
41
+ findComponent(componentId: string): ResolvedComponent | null;
42
+ private findInTree;
43
+ /**
44
+ * 遍历组件树
45
+ */
46
+ traverse(callback: (component: ResolvedComponent) => void): void;
47
+ private traverseNode;
48
+ /**
49
+ * 获取所有组件 ID
50
+ */
51
+ getAllIds(): string[];
52
+ }
53
+ export default ComponentTree;