@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,88 @@
1
+ /**
2
+ * ChatEngine 事件总线实现
3
+ */
4
+ import type { ChatEngineEventPayloadMap, ChatEventBusOptions, EventCallback, EventFilter, EventHistoryItem, IChatEventBus, UnsubscribeFn } from './types';
5
+ import { ChatEngineEventType } from './types';
6
+ /**
7
+ * ChatEventBus - 聊天引擎事件总线
8
+ *
9
+ * 提供统一的事件发布/订阅机制,支持:
10
+ * - 类型安全的事件订阅和发布
11
+ * - 一次性订阅 (once)
12
+ * - Promise 方式等待事件 (waitFor)
13
+ * - 带过滤条件的等待 (waitForMatch)
14
+ * - 自定义事件支持
15
+ * - 事件历史记录(调试用)
16
+ */
17
+ export declare class ChatEventBus implements IChatEventBus {
18
+ private listeners;
19
+ private onceListeners;
20
+ private customListeners;
21
+ private history;
22
+ private options;
23
+ private destroyed;
24
+ constructor(options?: ChatEventBusOptions);
25
+ /**
26
+ * 订阅事件
27
+ */
28
+ on<E extends ChatEngineEventType>(event: E, callback: EventCallback<ChatEngineEventPayloadMap[E]>): UnsubscribeFn;
29
+ /**
30
+ * 一次性订阅
31
+ */
32
+ once<E extends ChatEngineEventType>(event: E, callback: EventCallback<ChatEngineEventPayloadMap[E]>): UnsubscribeFn;
33
+ /**
34
+ * 取消订阅
35
+ */
36
+ off<E extends ChatEngineEventType>(event: E, callback?: EventCallback<ChatEngineEventPayloadMap[E]>): void;
37
+ /**
38
+ * 发布事件
39
+ */
40
+ emit<E extends ChatEngineEventType>(event: E, payload: ChatEngineEventPayloadMap[E]): void;
41
+ /**
42
+ * 等待事件(Promise 方式)
43
+ */
44
+ waitFor<E extends ChatEngineEventType>(event: E, timeout?: number): Promise<ChatEngineEventPayloadMap[E]>;
45
+ /**
46
+ * 带过滤条件的等待
47
+ */
48
+ waitForMatch<E extends ChatEngineEventType>(event: E, filter: EventFilter<ChatEngineEventPayloadMap[E]>, timeout?: number): Promise<ChatEngineEventPayloadMap[E]>;
49
+ /**
50
+ * 订阅自定义事件
51
+ */
52
+ onCustom<T = unknown>(eventName: string, callback: EventCallback<T>): UnsubscribeFn;
53
+ /**
54
+ * 发布自定义事件
55
+ */
56
+ emitCustom<T = unknown>(eventName: string, data: T): void;
57
+ /**
58
+ * 获取事件历史记录
59
+ */
60
+ getHistory(): EventHistoryItem[];
61
+ /**
62
+ * 清理所有订阅
63
+ */
64
+ clear(): void;
65
+ /**
66
+ * 销毁事件总线
67
+ */
68
+ destroy(): void;
69
+ /**
70
+ * 获取指定事件的监听器数量
71
+ */
72
+ listenerCount(event: ChatEngineEventType): number;
73
+ /**
74
+ * 获取所有事件的监听器数量
75
+ */
76
+ getTotalListenerCount(): number;
77
+ /**
78
+ * 检查是否有指定事件的监听器
79
+ */
80
+ hasListeners(event: ChatEngineEventType): boolean;
81
+ private recordHistory;
82
+ private checkDestroyed;
83
+ }
84
+ /**
85
+ * 创建事件总线实例
86
+ */
87
+ export declare function createEventBus(options?: ChatEventBusOptions): IChatEventBus;
88
+ export { ChatEngineEventType };
@@ -0,0 +1,295 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.15
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
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 { ChatEngineEventType } from './types.js';
12
+ export { ChatEngineEventType } from './types.js';
13
+
14
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
+ var ChatEventBus = /*#__PURE__*/function () {
17
+ function ChatEventBus() {
18
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
19
+ _classCallCheck(this, ChatEventBus);
20
+ _defineProperty(this, "listeners", /* @__PURE__ */new Map());
21
+ _defineProperty(this, "onceListeners", /* @__PURE__ */new Map());
22
+ _defineProperty(this, "customListeners", /* @__PURE__ */new Map());
23
+ _defineProperty(this, "history", []);
24
+ _defineProperty(this, "destroyed", false);
25
+ this.options = _objectSpread({
26
+ debug: false,
27
+ maxListeners: 100,
28
+ historySize: 0
29
+ }, options);
30
+ }
31
+ return _createClass(ChatEventBus, [{
32
+ key: "on",
33
+ value: function on(event, callback) {
34
+ var _this = this;
35
+ this.checkDestroyed();
36
+ if (!this.listeners.has(event)) {
37
+ this.listeners.set(event, /* @__PURE__ */new Set());
38
+ }
39
+ var listeners = this.listeners.get(event);
40
+ if (listeners.size >= this.options.maxListeners) {
41
+ console.warn("[ChatEventBus] Maximum listeners (".concat(this.options.maxListeners, ") exceeded for event: ").concat(event, ". Consider increasing maxListeners or removing unused listeners."));
42
+ }
43
+ listeners.add(callback);
44
+ if (this.options.debug) {
45
+ console.log("[ChatEventBus] Subscribed to event: ".concat(event, ", total listeners: ").concat(listeners.size));
46
+ }
47
+ return function () {
48
+ return _this.off(event, callback);
49
+ };
50
+ }
51
+ }, {
52
+ key: "once",
53
+ value: function once(event, callback) {
54
+ var _this2 = this;
55
+ this.checkDestroyed();
56
+ if (!this.onceListeners.has(event)) {
57
+ this.onceListeners.set(event, /* @__PURE__ */new Set());
58
+ }
59
+ this.onceListeners.get(event).add(callback);
60
+ if (this.options.debug) {
61
+ console.log("[ChatEventBus] Once subscribed to event: ".concat(event));
62
+ }
63
+ return function () {
64
+ var _this2$onceListeners$;
65
+ return (_this2$onceListeners$ = _this2.onceListeners.get(event)) === null || _this2$onceListeners$ === void 0 ? void 0 : _this2$onceListeners$["delete"](callback);
66
+ };
67
+ }
68
+ }, {
69
+ key: "off",
70
+ value: function off(event, callback) {
71
+ if (callback) {
72
+ var _this$listeners$get, _this$onceListeners$g;
73
+ (_this$listeners$get = this.listeners.get(event)) === null || _this$listeners$get === void 0 || _this$listeners$get["delete"](callback);
74
+ (_this$onceListeners$g = this.onceListeners.get(event)) === null || _this$onceListeners$g === void 0 || _this$onceListeners$g["delete"](callback);
75
+ if (this.options.debug) {
76
+ console.log("[ChatEventBus] Unsubscribed specific callback from event: ".concat(event));
77
+ }
78
+ } else {
79
+ this.listeners["delete"](event);
80
+ this.onceListeners["delete"](event);
81
+ if (this.options.debug) {
82
+ console.log("[ChatEventBus] Unsubscribed all callbacks from event: ".concat(event));
83
+ }
84
+ }
85
+ }
86
+ }, {
87
+ key: "emit",
88
+ value: function emit(event, payload) {
89
+ var _this$listeners$get2;
90
+ if (this.destroyed) return;
91
+ if (this.options.historySize > 0) {
92
+ this.recordHistory(event, payload);
93
+ }
94
+ if (this.options.debug) {
95
+ console.log("[ChatEventBus] Emitting event: ".concat(event), payload);
96
+ }
97
+ (_this$listeners$get2 = this.listeners.get(event)) === null || _this$listeners$get2 === void 0 || _this$listeners$get2.forEach(function (cb) {
98
+ try {
99
+ cb(payload);
100
+ } catch (error) {
101
+ console.error("[ChatEventBus] Error in event handler for ".concat(event, ":"), error);
102
+ }
103
+ });
104
+ var onceSubs = this.onceListeners.get(event);
105
+ if (onceSubs && onceSubs.size > 0) {
106
+ onceSubs.forEach(function (cb) {
107
+ try {
108
+ cb(payload);
109
+ } catch (error) {
110
+ console.error("[ChatEventBus] Error in once handler for ".concat(event, ":"), error);
111
+ }
112
+ });
113
+ onceSubs.clear();
114
+ }
115
+ }
116
+ }, {
117
+ key: "waitFor",
118
+ value: function waitFor(event) {
119
+ var _this3 = this;
120
+ var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3e4;
121
+ this.checkDestroyed();
122
+ return new Promise(function (resolve, reject) {
123
+ var timer = null;
124
+ var handler = function handler(payload) {
125
+ if (timer) {
126
+ clearTimeout(timer);
127
+ }
128
+ resolve(payload);
129
+ };
130
+ if (timeout > 0) {
131
+ timer = setTimeout(function () {
132
+ var _this3$onceListeners$;
133
+ (_this3$onceListeners$ = _this3.onceListeners.get(event)) === null || _this3$onceListeners$ === void 0 || _this3$onceListeners$["delete"](handler);
134
+ reject(new Error("[ChatEventBus] Timeout waiting for event: ".concat(event, " (").concat(timeout, "ms)")));
135
+ }, timeout);
136
+ }
137
+ _this3.once(event, handler);
138
+ });
139
+ }
140
+ }, {
141
+ key: "waitForMatch",
142
+ value: function waitForMatch(event, filter) {
143
+ var _this4 = this;
144
+ var timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3e4;
145
+ this.checkDestroyed();
146
+ return new Promise(function (resolve, reject) {
147
+ var timer = null;
148
+ var unsubscribe = null;
149
+ var handler = function handler(payload) {
150
+ try {
151
+ if (filter(payload)) {
152
+ if (timer) {
153
+ clearTimeout(timer);
154
+ }
155
+ if (unsubscribe) {
156
+ unsubscribe();
157
+ }
158
+ resolve(payload);
159
+ }
160
+ } catch (error) {
161
+ console.error("[ChatEventBus] Error in filter for ".concat(event, ":"), error);
162
+ }
163
+ };
164
+ if (timeout > 0) {
165
+ timer = setTimeout(function () {
166
+ if (unsubscribe) {
167
+ unsubscribe();
168
+ }
169
+ reject(new Error("[ChatEventBus] Timeout waiting for matching event: ".concat(event, " (").concat(timeout, "ms)")));
170
+ }, timeout);
171
+ }
172
+ unsubscribe = _this4.on(event, handler);
173
+ });
174
+ }
175
+ }, {
176
+ key: "onCustom",
177
+ value: function onCustom(eventName, callback) {
178
+ var _this5 = this;
179
+ this.checkDestroyed();
180
+ var key = "custom:".concat(eventName);
181
+ if (!this.customListeners.has(key)) {
182
+ this.customListeners.set(key, /* @__PURE__ */new Set());
183
+ }
184
+ this.customListeners.get(key).add(callback);
185
+ if (this.options.debug) {
186
+ console.log("[ChatEventBus] Subscribed to custom event: ".concat(eventName));
187
+ }
188
+ return function () {
189
+ var _this5$customListener;
190
+ return (_this5$customListener = _this5.customListeners.get(key)) === null || _this5$customListener === void 0 ? void 0 : _this5$customListener["delete"](callback);
191
+ };
192
+ }
193
+ }, {
194
+ key: "emitCustom",
195
+ value: function emitCustom(eventName, data) {
196
+ var _this$customListeners;
197
+ if (this.destroyed) return;
198
+ var key = "custom:".concat(eventName);
199
+ if (this.options.historySize > 0) {
200
+ this.recordHistory(ChatEngineEventType.CUSTOM, {
201
+ eventName: eventName,
202
+ data: data
203
+ });
204
+ }
205
+ if (this.options.debug) {
206
+ console.log("[ChatEventBus] Emitting custom event: ".concat(eventName), data);
207
+ }
208
+ (_this$customListeners = this.customListeners.get(key)) === null || _this$customListeners === void 0 || _this$customListeners.forEach(function (cb) {
209
+ try {
210
+ cb(data);
211
+ } catch (error) {
212
+ console.error("[ChatEventBus] Error in custom event handler for ".concat(eventName, ":"), error);
213
+ }
214
+ });
215
+ }
216
+ }, {
217
+ key: "getHistory",
218
+ value: function getHistory() {
219
+ return _toConsumableArray(this.history);
220
+ }
221
+ }, {
222
+ key: "clear",
223
+ value: function clear() {
224
+ this.listeners.clear();
225
+ this.onceListeners.clear();
226
+ this.customListeners.clear();
227
+ this.history = [];
228
+ if (this.options.debug) {
229
+ console.log("[ChatEventBus] All subscriptions cleared");
230
+ }
231
+ }
232
+ }, {
233
+ key: "destroy",
234
+ value: function destroy() {
235
+ this.clear();
236
+ this.destroyed = true;
237
+ if (this.options.debug) {
238
+ console.log("[ChatEventBus] Event bus destroyed");
239
+ }
240
+ }
241
+ }, {
242
+ key: "listenerCount",
243
+ value: function listenerCount(event) {
244
+ var _this$listeners$get3, _this$onceListeners$g2;
245
+ var regular = ((_this$listeners$get3 = this.listeners.get(event)) === null || _this$listeners$get3 === void 0 ? void 0 : _this$listeners$get3.size) || 0;
246
+ var once = ((_this$onceListeners$g2 = this.onceListeners.get(event)) === null || _this$onceListeners$g2 === void 0 ? void 0 : _this$onceListeners$g2.size) || 0;
247
+ return regular + once;
248
+ }
249
+ }, {
250
+ key: "getTotalListenerCount",
251
+ value: function getTotalListenerCount() {
252
+ var total = 0;
253
+ this.listeners.forEach(function (set) {
254
+ total += set.size;
255
+ });
256
+ this.onceListeners.forEach(function (set) {
257
+ total += set.size;
258
+ });
259
+ this.customListeners.forEach(function (set) {
260
+ total += set.size;
261
+ });
262
+ return total;
263
+ }
264
+ }, {
265
+ key: "hasListeners",
266
+ value: function hasListeners(event) {
267
+ return this.listenerCount(event) > 0;
268
+ }
269
+ }, {
270
+ key: "recordHistory",
271
+ value: function recordHistory(event, payload) {
272
+ this.history.push({
273
+ event: event,
274
+ payload: payload,
275
+ timestamp: Date.now()
276
+ });
277
+ while (this.history.length > this.options.historySize) {
278
+ this.history.shift();
279
+ }
280
+ }
281
+ }, {
282
+ key: "checkDestroyed",
283
+ value: function checkDestroyed() {
284
+ if (this.destroyed) {
285
+ throw new Error("[ChatEventBus] Event bus has been destroyed");
286
+ }
287
+ }
288
+ }]);
289
+ }();
290
+ function createEventBus(options) {
291
+ return new ChatEventBus(options);
292
+ }
293
+
294
+ export { ChatEventBus, createEventBus };
295
+ //# sourceMappingURL=ChatEventBus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatEventBus.js","sources":["../../../../../pro-components/chat/chat-engine/core/event-bus/ChatEventBus.ts"],"sourcesContent":["/**\n * ChatEngine 事件总线实现\n */\nimport type {\n ChatEngineEventPayloadMap,\n ChatEventBusOptions,\n EventCallback,\n EventFilter,\n EventHistoryItem,\n IChatEventBus,\n UnsubscribeFn,\n} from './types';\nimport { ChatEngineEventType } from './types';\n\n/**\n * ChatEventBus - 聊天引擎事件总线\n *\n * 提供统一的事件发布/订阅机制,支持:\n * - 类型安全的事件订阅和发布\n * - 一次性订阅 (once)\n * - Promise 方式等待事件 (waitFor)\n * - 带过滤条件的等待 (waitForMatch)\n * - 自定义事件支持\n * - 事件历史记录(调试用)\n */\nexport class ChatEventBus implements IChatEventBus {\n private listeners: Map<string, Set<EventCallback>> = new Map();\n\n private onceListeners: Map<string, Set<EventCallback>> = new Map();\n\n private customListeners: Map<string, Set<EventCallback>> = new Map();\n\n private history: EventHistoryItem[] = [];\n\n private options: Required<ChatEventBusOptions>;\n\n private destroyed = false;\n\n constructor(options: ChatEventBusOptions = {}) {\n this.options = {\n debug: false,\n maxListeners: 100,\n historySize: 0,\n ...options,\n };\n }\n\n /**\n * 订阅事件\n */\n on<E extends ChatEngineEventType>(event: E, callback: EventCallback<ChatEngineEventPayloadMap[E]>): UnsubscribeFn {\n this.checkDestroyed();\n\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set());\n }\n\n const listeners = this.listeners.get(event)!;\n\n // 检查监听器数量限制\n if (listeners.size >= this.options.maxListeners) {\n console.warn(\n `[ChatEventBus] Maximum listeners (${this.options.maxListeners}) exceeded for event: ${event}. ` +\n 'Consider increasing maxListeners or removing unused listeners.',\n );\n }\n\n listeners.add(callback as EventCallback);\n\n if (this.options.debug) {\n console.log(`[ChatEventBus] Subscribed to event: ${event}, total listeners: ${listeners.size}`);\n }\n\n return () => this.off(event, callback);\n }\n\n /**\n * 一次性订阅\n */\n once<E extends ChatEngineEventType>(event: E, callback: EventCallback<ChatEngineEventPayloadMap[E]>): UnsubscribeFn {\n this.checkDestroyed();\n\n if (!this.onceListeners.has(event)) {\n this.onceListeners.set(event, new Set());\n }\n\n this.onceListeners.get(event)!.add(callback as EventCallback);\n\n if (this.options.debug) {\n console.log(`[ChatEventBus] Once subscribed to event: ${event}`);\n }\n\n return () => this.onceListeners.get(event)?.delete(callback as EventCallback);\n }\n\n /**\n * 取消订阅\n */\n off<E extends ChatEngineEventType>(event: E, callback?: EventCallback<ChatEngineEventPayloadMap[E]>): void {\n if (callback) {\n this.listeners.get(event)?.delete(callback as EventCallback);\n this.onceListeners.get(event)?.delete(callback as EventCallback);\n\n if (this.options.debug) {\n console.log(`[ChatEventBus] Unsubscribed specific callback from event: ${event}`);\n }\n } else {\n this.listeners.delete(event);\n this.onceListeners.delete(event);\n\n if (this.options.debug) {\n console.log(`[ChatEventBus] Unsubscribed all callbacks from event: ${event}`);\n }\n }\n }\n\n /**\n * 发布事件\n */\n emit<E extends ChatEngineEventType>(event: E, payload: ChatEngineEventPayloadMap[E]): void {\n if (this.destroyed) return;\n\n // 记录历史\n if (this.options.historySize > 0) {\n this.recordHistory(event, payload);\n }\n\n if (this.options.debug) {\n console.log(`[ChatEventBus] Emitting event: ${event}`, payload);\n }\n\n // 通知常规订阅者\n this.listeners.get(event)?.forEach((cb) => {\n try {\n cb(payload);\n } catch (error) {\n console.error(`[ChatEventBus] Error in event handler for ${event}:`, error);\n }\n });\n\n // 通知一次性订阅者并清理\n const onceSubs = this.onceListeners.get(event);\n if (onceSubs && onceSubs.size > 0) {\n onceSubs.forEach((cb) => {\n try {\n cb(payload);\n } catch (error) {\n console.error(`[ChatEventBus] Error in once handler for ${event}:`, error);\n }\n });\n onceSubs.clear();\n }\n }\n\n /**\n * 等待事件(Promise 方式)\n */\n waitFor<E extends ChatEngineEventType>(event: E, timeout = 30000): Promise<ChatEngineEventPayloadMap[E]> {\n this.checkDestroyed();\n\n return new Promise((resolve, reject) => {\n let timer: ReturnType<typeof setTimeout> | null = null;\n\n const handler = (payload: ChatEngineEventPayloadMap[E]) => {\n if (timer) {\n clearTimeout(timer);\n }\n resolve(payload);\n };\n\n if (timeout > 0) {\n timer = setTimeout(() => {\n this.onceListeners.get(event)?.delete(handler as EventCallback);\n reject(new Error(`[ChatEventBus] Timeout waiting for event: ${event} (${timeout}ms)`));\n }, timeout);\n }\n\n this.once(event, handler);\n });\n }\n\n /**\n * 带过滤条件的等待\n */\n waitForMatch<E extends ChatEngineEventType>(\n event: E,\n filter: EventFilter<ChatEngineEventPayloadMap[E]>,\n timeout = 30000,\n ): Promise<ChatEngineEventPayloadMap[E]> {\n this.checkDestroyed();\n\n return new Promise((resolve, reject) => {\n let timer: ReturnType<typeof setTimeout> | null = null;\n let unsubscribe: UnsubscribeFn | null = null;\n\n const handler = (payload: ChatEngineEventPayloadMap[E]) => {\n try {\n if (filter(payload)) {\n if (timer) {\n clearTimeout(timer);\n }\n if (unsubscribe) {\n unsubscribe();\n }\n resolve(payload);\n }\n } catch (error) {\n console.error(`[ChatEventBus] Error in filter for ${event}:`, error);\n }\n };\n\n if (timeout > 0) {\n timer = setTimeout(() => {\n if (unsubscribe) {\n unsubscribe();\n }\n reject(new Error(`[ChatEventBus] Timeout waiting for matching event: ${event} (${timeout}ms)`));\n }, timeout);\n }\n\n unsubscribe = this.on(event, handler);\n });\n }\n\n /**\n * 订阅自定义事件\n */\n onCustom<T = unknown>(eventName: string, callback: EventCallback<T>): UnsubscribeFn {\n this.checkDestroyed();\n\n const key = `custom:${eventName}`;\n if (!this.customListeners.has(key)) {\n this.customListeners.set(key, new Set());\n }\n\n this.customListeners.get(key)!.add(callback as EventCallback);\n\n if (this.options.debug) {\n console.log(`[ChatEventBus] Subscribed to custom event: ${eventName}`);\n }\n\n return () => this.customListeners.get(key)?.delete(callback as EventCallback);\n }\n\n /**\n * 发布自定义事件\n */\n emitCustom<T = unknown>(eventName: string, data: T): void {\n if (this.destroyed) return;\n\n const key = `custom:${eventName}`;\n\n // 记录历史\n if (this.options.historySize > 0) {\n this.recordHistory(ChatEngineEventType.CUSTOM, { eventName, data });\n }\n\n if (this.options.debug) {\n console.log(`[ChatEventBus] Emitting custom event: ${eventName}`, data);\n }\n\n this.customListeners.get(key)?.forEach((cb) => {\n try {\n cb(data);\n } catch (error) {\n console.error(`[ChatEventBus] Error in custom event handler for ${eventName}:`, error);\n }\n });\n }\n\n /**\n * 获取事件历史记录\n */\n getHistory(): EventHistoryItem[] {\n return [...this.history];\n }\n\n /**\n * 清理所有订阅\n */\n clear(): void {\n this.listeners.clear();\n this.onceListeners.clear();\n this.customListeners.clear();\n this.history = [];\n\n if (this.options.debug) {\n console.log('[ChatEventBus] All subscriptions cleared');\n }\n }\n\n /**\n * 销毁事件总线\n */\n destroy(): void {\n this.clear();\n this.destroyed = true;\n\n if (this.options.debug) {\n console.log('[ChatEventBus] Event bus destroyed');\n }\n }\n\n /**\n * 获取指定事件的监听器数量\n */\n listenerCount(event: ChatEngineEventType): number {\n const regular = this.listeners.get(event)?.size || 0;\n const once = this.onceListeners.get(event)?.size || 0;\n return regular + once;\n }\n\n /**\n * 获取所有事件的监听器数量\n */\n getTotalListenerCount(): number {\n let total = 0;\n this.listeners.forEach((set) => {\n total += set.size;\n });\n this.onceListeners.forEach((set) => {\n total += set.size;\n });\n this.customListeners.forEach((set) => {\n total += set.size;\n });\n return total;\n }\n\n /**\n * 检查是否有指定事件的监听器\n */\n hasListeners(event: ChatEngineEventType): boolean {\n return this.listenerCount(event) > 0;\n }\n\n private recordHistory(event: ChatEngineEventType | string, payload: unknown): void {\n this.history.push({\n event,\n payload,\n timestamp: Date.now(),\n });\n\n // 保持历史记录在限制范围内\n while (this.history.length > this.options.historySize) {\n this.history.shift();\n }\n }\n\n private checkDestroyed(): void {\n if (this.destroyed) {\n throw new Error('[ChatEventBus] Event bus has been destroyed');\n }\n }\n}\n\n/**\n * 创建事件总线实例\n */\nexport function createEventBus(options?: ChatEventBusOptions): IChatEventBus {\n return new ChatEventBus(options);\n}\n\nexport { ChatEngineEventType };\n"],"names":["ChatEventBus","options","arguments","length","undefined","_classCallCheck","_defineProperty","Map","_objectSpread","debug","maxListeners","historySize","_createClass","key","value","on","event","callback","_this","checkDestroyed","listeners","has","set","Set","get","size","console","warn","concat","add","log","off","once","_this2","onceListeners","_this2$onceListeners$","_this$listeners$get","_this$onceListeners$g","emit","payload","_this$listeners$get2","destroyed","recordHistory","forEach","cb","error","onceSubs","clear","waitFor","_this3","timeout","Promise","resolve","reject","timer","handler","clearTimeout","setTimeout","_this3$onceListeners$","Error","waitForMatch","filter","_this4","unsubscribe","onCustom","eventName","_this5","customListeners","_this5$customListener","emitCustom","data","_this$customListeners","ChatEngineEventType","CUSTOM","getHistory","_toConsumableArray","history","destroy","listenerCount","_this$listeners$get3","_this$onceListeners$g2","regular","getTotalListenerCount","total","hasListeners","push","timestamp","Date","now","shift","createEventBus"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 事件总线模块导出
3
+ */
4
+ export { ChatEventBus, createEventBus, ChatEngineEventType } from './ChatEventBus';
5
+ export type { ChatEngineEventPayloadMap, ChatEventBusOptions, EventCallback, EventFilter, EventHistoryItem, IChatEventBus, UnsubscribeFn, } from './types';
@@ -0,0 +1,13 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.15
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ export { ChatEventBus, createEventBus } from './ChatEventBus.js';
8
+ export { ChatEngineEventType } from './types.js';
9
+ import '@babel/runtime/helpers/toConsumableArray';
10
+ import '@babel/runtime/helpers/classCallCheck';
11
+ import '@babel/runtime/helpers/createClass';
12
+ import '@babel/runtime/helpers/defineProperty';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * ChatEngine 事件总线类型定义
3
+ */
4
+ import type { AIMessageContent, ChatMessagesData, ChatRequestParams, ChatStatus, ToolCall } from '../type';
5
+ /**
6
+ * 事件类型枚举
7
+ */
8
+ export declare enum ChatEngineEventType {
9
+ ENGINE_INIT = "engine:init",
10
+ ENGINE_DESTROY = "engine:destroy",
11
+ MESSAGE_CREATE = "message:create",
12
+ MESSAGE_UPDATE = "message:update",
13
+ MESSAGE_DELETE = "message:delete",
14
+ MESSAGE_CLEAR = "message:clear",
15
+ MESSAGE_STATUS_CHANGE = "message:status",
16
+ MESSAGE_CONTENT_APPEND = "message:content:append",
17
+ REQUEST_START = "request:start",
18
+ REQUEST_STREAM = "request:stream",
19
+ REQUEST_COMPLETE = "request:complete",
20
+ REQUEST_ERROR = "request:error",
21
+ REQUEST_ABORT = "request:abort",
22
+ AGUI_RUN_START = "agui:run:start",
23
+ AGUI_RUN_COMPLETE = "agui:run:complete",
24
+ AGUI_RUN_ERROR = "agui:run:error",
25
+ AGUI_STATE_UPDATE = "agui:state:update",
26
+ AGUI_TOOLCALL = "agui:toolcall",
27
+ AGUI_ACTIVITY = "agui:activity",
28
+ CUSTOM = "custom"
29
+ }
30
+ /**
31
+ * 事件载荷类型映射
32
+ */
33
+ export interface ChatEngineEventPayloadMap {
34
+ [ChatEngineEventType.ENGINE_INIT]: {
35
+ timestamp: number;
36
+ };
37
+ [ChatEngineEventType.ENGINE_DESTROY]: {
38
+ timestamp: number;
39
+ };
40
+ [ChatEngineEventType.MESSAGE_CREATE]: {
41
+ message: ChatMessagesData;
42
+ messages: ChatMessagesData[];
43
+ };
44
+ [ChatEngineEventType.MESSAGE_UPDATE]: {
45
+ messageId: string;
46
+ content: AIMessageContent | AIMessageContent[];
47
+ message: ChatMessagesData;
48
+ };
49
+ [ChatEngineEventType.MESSAGE_DELETE]: {
50
+ messageId: string;
51
+ messages: ChatMessagesData[];
52
+ };
53
+ [ChatEngineEventType.MESSAGE_CLEAR]: {
54
+ timestamp: number;
55
+ };
56
+ [ChatEngineEventType.MESSAGE_STATUS_CHANGE]: {
57
+ messageId: string;
58
+ status: ChatStatus;
59
+ previousStatus?: ChatStatus;
60
+ };
61
+ [ChatEngineEventType.MESSAGE_CONTENT_APPEND]: {
62
+ messageId: string;
63
+ content: AIMessageContent;
64
+ contentIndex: number;
65
+ };
66
+ [ChatEngineEventType.REQUEST_START]: {
67
+ params: ChatRequestParams;
68
+ messageId?: string;
69
+ };
70
+ [ChatEngineEventType.REQUEST_STREAM]: {
71
+ messageId: string;
72
+ chunk: unknown;
73
+ content?: AIMessageContent | AIMessageContent[] | null;
74
+ };
75
+ [ChatEngineEventType.REQUEST_COMPLETE]: {
76
+ messageId: string;
77
+ params: ChatRequestParams;
78
+ message: ChatMessagesData;
79
+ };
80
+ [ChatEngineEventType.REQUEST_ERROR]: {
81
+ messageId: string;
82
+ error: Error | unknown;
83
+ params?: ChatRequestParams;
84
+ };
85
+ [ChatEngineEventType.REQUEST_ABORT]: {
86
+ messageId: string;
87
+ params: ChatRequestParams;
88
+ };
89
+ [ChatEngineEventType.AGUI_RUN_START]: {
90
+ runId: string;
91
+ threadId?: string;
92
+ timestamp: number;
93
+ };
94
+ [ChatEngineEventType.AGUI_RUN_COMPLETE]: {
95
+ runId: string;
96
+ threadId?: string;
97
+ timestamp: number;
98
+ };
99
+ [ChatEngineEventType.AGUI_RUN_ERROR]: {
100
+ error: Error | unknown;
101
+ runId?: string;
102
+ };
103
+ [ChatEngineEventType.AGUI_STATE_UPDATE]: {
104
+ stateKey: string;
105
+ state: unknown;
106
+ previousState?: unknown;
107
+ };
108
+ [ChatEngineEventType.AGUI_TOOLCALL]: {
109
+ toolCall: ToolCall;
110
+ eventType: string;
111
+ };
112
+ [ChatEngineEventType.AGUI_ACTIVITY]: {
113
+ activityType: string;
114
+ messageId?: string;
115
+ content: unknown;
116
+ };
117
+ [ChatEngineEventType.CUSTOM]: {
118
+ eventName: string;
119
+ data: unknown;
120
+ };
121
+ }
122
+ /**
123
+ * 事件回调函数类型
124
+ */
125
+ export type EventCallback<T = unknown> = (payload: T) => void;
126
+ /**
127
+ * 取消订阅函数类型
128
+ */
129
+ export type UnsubscribeFn = () => void;
130
+ /**
131
+ * 事件过滤器类型
132
+ */
133
+ export type EventFilter<T = unknown> = (payload: T) => boolean;
134
+ /**
135
+ * 事件总线配置
136
+ */
137
+ export interface ChatEventBusOptions {
138
+ /**
139
+ * 是否启用调试模式
140
+ * @default false
141
+ */
142
+ debug?: boolean;
143
+ /**
144
+ * 最大监听器数量(每个事件)
145
+ * @default 100
146
+ */
147
+ maxListeners?: number;
148
+ /**
149
+ * 事件历史记录长度(用于调试)
150
+ * @default 0
151
+ */
152
+ historySize?: number;
153
+ }
154
+ /**
155
+ * 事件历史记录
156
+ */
157
+ export interface EventHistoryItem {
158
+ event: ChatEngineEventType | string;
159
+ payload: unknown;
160
+ timestamp: number;
161
+ }
162
+ /**
163
+ * 事件总线接口
164
+ */
165
+ export interface IChatEventBus {
166
+ /**
167
+ * 订阅事件
168
+ * @param event 事件类型
169
+ * @param callback 回调函数
170
+ * @returns 取消订阅函数
171
+ */
172
+ on<E extends ChatEngineEventType>(event: E, callback: EventCallback<ChatEngineEventPayloadMap[E]>): UnsubscribeFn;
173
+ /**
174
+ * 一次性订阅
175
+ * @param event 事件类型
176
+ * @param callback 回调函数
177
+ * @returns 取消订阅函数
178
+ */
179
+ once<E extends ChatEngineEventType>(event: E, callback: EventCallback<ChatEngineEventPayloadMap[E]>): UnsubscribeFn;
180
+ /**
181
+ * 取消订阅
182
+ * @param event 事件类型
183
+ * @param callback 可选的回调函数,不传则取消该事件所有订阅
184
+ */
185
+ off<E extends ChatEngineEventType>(event: E, callback?: EventCallback<ChatEngineEventPayloadMap[E]>): void;
186
+ /**
187
+ * 发布事件
188
+ * @param event 事件类型
189
+ * @param payload 事件载荷
190
+ */
191
+ emit<E extends ChatEngineEventType>(event: E, payload: ChatEngineEventPayloadMap[E]): void;
192
+ /**
193
+ * 等待事件(Promise 方式)
194
+ * @param event 事件类型
195
+ * @param timeout 超时时间(毫秒)
196
+ * @returns Promise
197
+ */
198
+ waitFor<E extends ChatEngineEventType>(event: E, timeout?: number): Promise<ChatEngineEventPayloadMap[E]>;
199
+ /**
200
+ * 带过滤条件的等待
201
+ * @param event 事件类型
202
+ * @param filter 过滤函数
203
+ * @param timeout 超时时间
204
+ */
205
+ waitForMatch<E extends ChatEngineEventType>(event: E, filter: EventFilter<ChatEngineEventPayloadMap[E]>, timeout?: number): Promise<ChatEngineEventPayloadMap[E]>;
206
+ /**
207
+ * 订阅自定义事件
208
+ * @param eventName 自定义事件名
209
+ * @param callback 回调函数
210
+ */
211
+ onCustom<T = unknown>(eventName: string, callback: EventCallback<T>): UnsubscribeFn;
212
+ /**
213
+ * 发布自定义事件
214
+ * @param eventName 自定义事件名
215
+ * @param data 数据
216
+ */
217
+ emitCustom<T = unknown>(eventName: string, data: T): void;
218
+ /**
219
+ * 获取事件历史记录
220
+ */
221
+ getHistory(): EventHistoryItem[];
222
+ /**
223
+ * 清理所有订阅
224
+ */
225
+ clear(): void;
226
+ /**
227
+ * 销毁事件总线
228
+ */
229
+ destroy(): void;
230
+ }